# Kotlin en Maguyva: grafos de código para Android y la JVM

Canonical source: https://maguyva.ai/es/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).

Maguyva admite Kotlin con AST, símbolos y grafo, para que los agentes de IA sigan clases, funciones de extensión y corrutinas en código Android y JVM.

## Resumen de soporte

- Nivel: Soporte de AST y símbolos
- Programación
- Extensiones: .kt, .kts
- Análisis AST real para búsqueda con reconocimiento de sintaxis y contexto estructural.
- Los símbolos con nombre alimentan la búsqueda semántica y las referencias cruzadas. La navegación por grafo está disponible cuando la extracción de relaciones está habilitada.
- Este lenguaje aporta símbolos y relaciones a la búsqueda basada en grafos; los tipos de arista disponibles varían según sus construcciones nativas.
- Están disponibles tanto el análisis AST como la extracción de símbolos.

## Mejor uso

- Equipos Android con grandes apps multimódulo donde ViewModels, repositorios y casos de uso se llaman entre módulos.
- Kotlin del lado del servidor y servicios Kotlin/JVM que combinan Kotlin con código Java más antiguo.
- Builds de Gradle escritos en script de Kotlin (`.kts`) que los agentes deben leer junto al código de la aplicación.

## Flujos de trabajo del agente

- Encontrar todos los llamadores de una clase de repositorio o de caso de uso antes de cambiar su API.
- Rastrear un flujo de corrutinas desde el `launch` de un ViewModel, pasando por `withContext`, hasta la capa de datos.
- Mapear qué clases implementan una interfaz o sobrescriben un método base antes de una refactorización.

## Dónde Kotlin hace tropezar a las herramientas de IA superficiales

Kotlin es conciso porque oculta el cableado. `apply`, `let`, `also`, `run` y `with` cambian lo que significan `this` e `it`. Las funciones de extensión añaden comportamiento a tipos definidos en otro lugar. Las corrutinas mueven el trabajo entre `launch`, `async` y `withContext`. Un agente que lee un archivo a la vez ve las llamadas, pero no los receptores detrás de ellas.

Maguyva resuelve más de esa estructura al indexar, para que un agente pueda preguntar quién llama a una función y obtener la respuesta real.

## Qué extrae Maguyva en Kotlin

Maguyva cubre `.kt` y `.kts`. Se extraen funciones, clases, objetos y objetos companion, y las firmas de funciones registran receptores de extensión, nombres de parámetros, valores por defecto y parámetros `vararg`.

Las relaciones de llamada conservan los nombres calificados por clase, así que `OrderRepository.save` se distingue de cualquier otro `save`. La tipificación de receptores sigue `this` dentro de `apply` y `run`, `it` dentro de `let` y `also`, y el argumento de `with`, para que las llamadas dentro de funciones de alcance se resuelvan al tipo correcto. Los constructores de corrutinas y los operadores de Flow (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`) se mantienen a propósito en el grafo.

El grafo también registra herencia, implementación de interfaces, sobrescrituras, instanciación, anotaciones, referencias de tipo, lecturas y escrituras, y aristas de lanzamiento y captura de excepciones.

## Ejemplos de prompts para agentes

- "¿Quién llama a `CheckoutUseCase.invoke` y desde qué ViewModels?" (`find_symbol` y luego `dependency_search` incoming)
- "Rastrea el flujo de sincronización desde `SyncWorker` hasta el cliente de red." (`get_task_context`)
- "¿Qué clases implementan `PaymentGateway`?" (`dependency_search`)

## Limitaciones conocidas

- Unas 250 llamadas de la biblioteca estándar de Kotlin y de la plataforma se filtran de las relaciones, así que helpers como `listOf`, `map`, `filter` y `println` no son aristas del grafo. Usa `text_pattern_search` para encontrarlos.

## Próximos pasos

Conecta un repositorio con el [inicio rápido](/es/docs/quickstart) y luego revisa la matriz de compatibilidad en la [página de compatibilidad](/es/docs/compatibility). Para bases de código mixtas, lee también la [guía de Java](/es/languages/java).

## Detalles del motor

- La compatibilidad con Kotlin cubre `.kt` y `.kts`. Las firmas registran receptores de extensión, nombres de parámetros, valores por defecto y parámetros `vararg`.
- La tipificación de receptores sigue `this` en `apply` y `run`, `it` en `let` y `also`, y el argumento de `with`, y las llamadas conservan los nombres calificados por clase.
- Los constructores de corrutinas y operadores de Flow como `launch`, `withContext` y `flow` permanecen en el grafo, mientras que unas 250 llamadas de la biblioteca estándar se filtran.

## Puntos de entrada MCP útiles

- `find_symbol`: Úsalo con una clase, un caso de uso o una función de extensión cuando necesites la definición y las referencias.
- `dependency_search`: Usa el recorrido incoming sobre un repositorio o una interfaz para ver llamadores e implementaciones antes de cambiar una API.
- `get_task_context`: Úsalo para prompts como "rastrea el flujo de sincronización desde `SyncWorker` hasta el cliente de red".
