# Kotlin sa Maguyva: mga code graph para sa Android at JVM

Canonical source: https://maguyva.ai/fil/languages/kotlin

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Sinusuportahan ng Maguyva ang Kotlin gamit ang AST, mga symbol at graph, para ma-trace ng mga AI agent ang mga class, extension function at coroutine sa Android at JVM code.

## Snapshot ng support

- Antas: Support para sa AST at mga simbolo
- Programming
- Mga extension: .kt, .kts
- Tunay na AST parsing para sa syntax-aware search at structural context.
- Pinapagana ng mga named symbol ang semantic lookup at cross-reference. Available ang graph navigation kapag naka-enable ang pagkuha ng mga ugnayan.
- Nag-aambag ang wikang ito ng mga simbolo at ugnayan sa graph-aware search; nag-iiba ang mga sinusuportahang uri ng edge ayon sa mga native construct nito.
- Available ang AST parsing at symbol extraction.

## Pinakabagay

- Mga Android team na may malalaking multi-module na app, kung saan nagtatawagan ang mga ViewModel, repository at use case lampas sa hangganan ng mga module.
- Server-side Kotlin at mga Kotlin/JVM service na pinaghahalo ang Kotlin at mas lumang Java code.
- Mga Gradle build na isinulat sa Kotlin script (`.kts`) na kailangang basahin ng mga agent kasama ng application code.

## Mga workflow ng agent

- Hanapin ang bawat tumatawag sa isang repository o use-case class bago magbago ang API nito.
- I-trace ang isang coroutine flow mula sa `launch` ng ViewModel, dumaan sa `withContext`, hanggang sa data layer.
- I-map ang mga class na nag-i-implement ng isang interface o nag-o-override ng base method bago mag-refactor.

## Saan nalilito ang mababaw na AI tool sa Kotlin

Maikli ang Kotlin dahil itinatago nito ang wiring. Binabago ng `apply`, `let`, `also`, `run` at `with` ang ibig sabihin ng `this` at `it`. Nagdadagdag ang mga extension function ng behavior sa mga type na naka-define sa ibang lugar. Inililipat ng mga coroutine ang trabaho sa pagitan ng `launch`, `async` at `withContext`. Nakikita ng agent na isang file lang ang binabasa sa bawat pagkakataon ang mga call, pero hindi ang mga receiver sa likod nila.

Mas malaking bahagi ng structure na ito ang nire-resolve ng Maguyva sa oras ng pag-index, para maitanong ng agent kung sino ang tumatawag sa isang function at makuha ang totoong sagot.

## Ano ang kinukuha ng Maguyva mula sa Kotlin

Sakop ng Maguyva ang `.kt` at `.kts`. Kinukuha ang mga function, class, object at companion object, at itinatala ng mga function signature ang mga extension receiver, pangalan ng parameter, default value at `vararg` parameter.

Pinapanatili ng mga call relationship ang mga class-qualified na pangalan, kaya hindi naghahalo ang `OrderRepository.save` at ibang `save`. Sinusundan ng receiver typing ang `this` sa loob ng `apply` at `run`, ang `it` sa loob ng `let` at `also`, at ang argument ng `with`, kaya nare-resolve sa tamang type ang mga call sa loob ng mga scope function. Sadyang pinapanatili sa graph ang mga coroutine builder at Flow operator (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`).

Itinatala rin ng graph ang inheritance, interface implementation, override, instantiation, mga annotation, type reference, read at write, at mga edge ng pag-throw at pag-catch ng exception.

## Mga halimbawang agent prompt

- "Sino ang tumatawag sa `CheckoutUseCase.invoke`, at mula sa aling mga ViewModel?" (`find_symbol`, tapos `dependency_search` na incoming)
- "I-trace ang sync flow mula sa `SyncWorker` hanggang sa network client." (`get_task_context`)
- "Aling mga class ang nag-i-implement ng `PaymentGateway`?" (`dependency_search`)

## Mga kilalang limitasyon

- Mga 250 Kotlin standard-library at platform call ang nifi-filter mula sa mga relationship, kaya hindi graph edge ang mga helper tulad ng `listOf`, `map`, `filter` at `println`. Gamitin ang `text_pattern_search` para sa mga iyon.

## Mga susunod na hakbang

Mag-connect ng repository gamit ang [quickstart](/fil/docs/quickstart), tapos tingnan ang support matrix sa [compatibility page](/fil/docs/compatibility). Para sa mga halo-halong codebase, basahin din ang [gabay sa Java](/fil/languages/java).

## Mga detalye ng engine

- Sakop ng Kotlin support ang `.kt` at `.kts`. Itinatala ng mga signature ang mga extension receiver, pangalan ng parameter, default value at `vararg` parameter.
- Sinusundan ng receiver typing ang `this` sa `apply` at `run`, ang `it` sa `let` at `also`, at ang argument ng `with`, at pinapanatili ng mga call ang mga class-qualified na pangalan.
- Nananatili sa graph ang mga coroutine builder at Flow operator tulad ng `launch`, `withContext` at `flow`, habang mga 250 standard-library call ang nifi-filter.

## Mga kapaki-pakinabang na MCP entry point

- `find_symbol`: Gamitin para sa isang class, use case o extension function kapag kailangan mo ang definition at mga reference.
- `dependency_search`: Bago magbago ang API, gumamit ng incoming traversal sa isang repository o interface para makita ang mga tumatawag at implementation.
- `get_task_context`: Gamitin para sa mga prompt tulad ng “i-trace ang sync flow mula sa `SyncWorker` hanggang sa network client”.
