# Maguyva में Kotlin: Android और JVM के लिए कोड ग्राफ़

Canonical source: https://maguyva.ai/hi/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, Kotlin को AST, सिंबल और ग्राफ़ के साथ सपोर्ट करता है, ताकि AI एजेंट Android और JVM कोड में क्लास, एक्सटेंशन फ़ंक्शन और कोरूटीन ट्रेस कर सकें।

## सपोर्ट स्नैपशॉट

- टियर: AST और सिंबल सपोर्ट
- प्रोग्रामिंग
- एक्सटेंशन: .kt, .kts
- सिंटैक्स-अवेयर सर्च और स्ट्रक्चरल कॉन्टेक्स्ट के लिए असली AST पार्सिंग।
- नामित सिंबल सिमेंटिक लुकअप और क्रॉस-रेफ़रेंस को फ़ीड करते हैं। रिलेशनशिप एक्सट्रैक्शन सक्षम होने पर ग्राफ़ नेविगेशन उपलब्ध होता है।
- यह भाषा ग्राफ़-अवेयर सर्च में सिंबल्स और रिलेशनशिप्स जोड़ती है; सपोर्टेड एज प्रकार इसके नेटिव कंस्ट्रक्ट्स के अनुसार बदलते हैं।
- AST पार्सिंग और सिंबल एक्सट्रैक्शन, दोनों उपलब्ध हैं।

## सबसे उपयुक्त

- बड़े, मल्टी-मॉड्यूल ऐप वाली Android टीमें, जहाँ ViewModels, रिपॉज़िटरी और यूज़ केस मॉड्यूल सीमाओं के पार एक-दूसरे को कॉल करते हैं।
- सर्वर-साइड Kotlin और Kotlin/JVM सेवाएँ, जो Kotlin को पुराने Java कोड के साथ मिलाती हैं।
- Kotlin स्क्रिप्ट (`.kts`) में लिखे Gradle बिल्ड, जिन्हें एजेंट को ऐप्लिकेशन कोड के साथ पढ़ना होता है।

## एजेंट वर्कफ़्लो

- किसी repository या यूज़-केस क्लास का API बदलने से पहले उसके हर कॉलर को ढूँढना।
- ViewModel के `launch` से `withContext` होते हुए डेटा लेयर तक कोरूटीन फ़्लो ट्रेस करना।
- रीफ़ैक्टरिंग से पहले किसी इंटरफ़ेस को इम्प्लीमेंट करने वाली या बेस मेथड ओवरराइड करने वाली क्लास का नक्शा बनाना।

## Kotlin सतही AI टूल को कहाँ उलझाती है

Kotlin संक्षिप्त है क्योंकि यह वायरिंग छिपा देती है। `apply`, `let`, `also`, `run` और `with` यह बदल देते हैं कि `this` और `it` का क्या अर्थ है। एक्सटेंशन फ़ंक्शन कहीं और परिभाषित टाइप में व्यवहार जोड़ते हैं। कोरूटीन काम को `launch`, `async` और `withContext` के बीच ले जाते हैं। एक बार में एक फ़ाइल पढ़ने वाला एजेंट कॉल देखता है, पर उनके पीछे के रिसीवर नहीं।

Maguyva इस संरचना का बड़ा हिस्सा इंडेक्सिंग के समय ही सुलझा देता है, ताकि एजेंट पूछ सके कि किसी फ़ंक्शन को कौन कॉल करता है और असली जवाब पाए।

## Maguyva, Kotlin से क्या निकालता है

Maguyva `.kt` और `.kts` को कवर करता है। फ़ंक्शन, क्लास, ऑब्जेक्ट और कंपैनियन ऑब्जेक्ट निकाले जाते हैं, और फ़ंक्शन सिग्नेचर एक्सटेंशन रिसीवर, पैरामीटर नाम, डिफ़ॉल्ट मान और `vararg` पैरामीटर दर्ज करते हैं।

कॉल संबंध क्लास-क्वालिफ़ाइड नाम बनाए रखते हैं, ताकि `OrderRepository.save` किसी दूसरे `save` से अलग रहे। रिसीवर टाइपिंग `apply` और `run` के अंदर `this`, `let` और `also` के अंदर `it`, और `with` के आर्ग्युमेंट को फ़ॉलो करती है, ताकि scope फ़ंक्शन के अंदर के कॉल सही type पर रिज़ॉल्व हों। कोरूटीन बिल्डर और Flow ऑपरेटर (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`) ग्राफ़ में जान-बूझकर रखे जाते हैं।

ग्राफ़ इनहेरिटेंस, इंटरफ़ेस इम्प्लीमेंटेशन, ओवरराइड, इंस्टैंशिएशन, annotations, टाइप रेफ़रेंस, रीड और राइट, और एक्सेप्शन throw और catch करने वाली एज भी दर्ज करता है।

## एजेंट प्रॉम्प्ट के उदाहरण

- "`CheckoutUseCase.invoke` को कौन कॉल करता है, और किन ViewModels से?" (`find_symbol`, फिर incoming दिशा में `dependency_search`)
- "`SyncWorker` से नेटवर्क क्लाइंट तक सिंक फ़्लो ट्रेस करो।" (`get_task_context`)
- "कौन-सी क्लास `PaymentGateway` इम्प्लीमेंट करती हैं?" (`dependency_search`)

## ज्ञात सीमाएँ

- लगभग 250 Kotlin स्टैंडर्ड-लाइब्रेरी और प्लेटफ़ॉर्म कॉल संबंधों से फ़िल्टर किए जाते हैं, इसलिए `listOf`, `map`, `filter` और `println` जैसे हेल्पर ग्राफ़ एज नहीं हैं। इनके लिए `text_pattern_search` इस्तेमाल करें।

## अगले कदम

[क्विकस्टार्ट](/hi/docs/quickstart) से रिपॉज़िटरी जोड़ें, फिर सपोर्ट मैट्रिक्स [कम्पैटिबिलिटी पेज](/hi/docs/compatibility) पर देखें। मिश्रित कोडबेस के लिए [Java गाइड](/hi/languages/java) भी पढ़ें।

## इंजन विवरण

- Kotlin सपोर्ट `.kt` और `.kts` को कवर करता है। सिग्नेचर एक्सटेंशन रिसीवर, पैरामीटर नाम, डिफ़ॉल्ट मान और `vararg` पैरामीटर दर्ज करते हैं।
- रिसीवर टाइपिंग `apply` और `run` में `this`, `let` और `also` में `it`, और `with` के आर्ग्युमेंट को फ़ॉलो करती है, और कॉल क्लास-क्वालिफ़ाइड नाम बनाए रखते हैं।
- `launch`, `withContext` और `flow` जैसे कोरूटीन बिल्डर और Flow ऑपरेटर ग्राफ़ में रहते हैं, जबकि लगभग 250 स्टैंडर्ड-लाइब्रेरी कॉल फ़िल्टर किए जाते हैं।

## उपयोगी MCP एंट्री पॉइंट

- `find_symbol`: जब आपको परिभाषा और रेफ़रेंस चाहिए, तो किसी क्लास, यूज़ केस या एक्सटेंशन फ़ंक्शन के लिए इस्तेमाल करें।
- `dependency_search`: API बदलने से पहले कॉलर और इम्प्लीमेंटेशन देखने के लिए किसी repository या इंटरफ़ेस पर incoming ट्रैवर्सल इस्तेमाल करें।
- `get_task_context`: "`SyncWorker` से नेटवर्क क्लाइंट तक सिंक फ़्लो ट्रेस करो" जैसे प्रॉम्प्ट के लिए इस्तेमाल करें।
