[versions] kotlin = "2.4.20" kotlinx-serialization = "1.11.0" kotlinx-coroutines = "1.11.0" kotlinx-io = "0.8.0" ktor = "3.1.3" a2a = "1.0.0-SNAPSHOT" kaml = "0.104.0" litert = "13" sqldelight = "2.3.2" shadow = "8.3.5" jvector = "3.0.6" text-embedding-kmp = "5" kotlin-logging = "3.0.5" logback = "1.5.18" mosaic = "0.18.0" clikt = "5.0.3" kotlinx-cli = "0.3.6" ksqlite = "0.1.3" junit = "4.13.2" [plugins] kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } # JetBrains Compose Compiler plugin — обязательно для @Composable в KMP-проектах # с Compose Multiplatform 1.8+; без него @Composable-лямбды ломаются (Function0 вместо Function2). kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } sqldelight = { id = "app.cash.sqldelight", version.ref = "sqldelight" } shadow = { id = "com.gradleup.shadow", version.ref = "shadow" } [libraries] # --- A2A (pw.binom.a2a) — shared: KMP (jvm + linuxX64); client/server: JVM-only --- a2a-shared = { module = "pw.binom.a2a:shared", version.ref = "a2a" } a2a-client = { module = "pw.binom.a2a:client", version.ref = "a2a" } a2a-server = { module = "pw.binom.a2a:server", version.ref = "a2a" } # --- YAML для парсинга скилов (opencode-style frontmatter). KMP. --- kaml = { module = "com.charleskorn.kaml:kaml", version.ref = "kaml" } # --- litert-kmp (pw.binom.litert) — universal LLM wrapper --- litert-api = { module = "pw.binom.litert:litert-api", version.ref = "litert" } litert-openai = { module = "pw.binom.litert:litert-openai", version.ref = "litert" } litert-google = { module = "pw.binom.litert:litert-google", version.ref = "litert" } # liteTool(liteToolRaw) DSL: типизированные LiteTool через @Serializable args. # https://git.binom.pw/subochev/litert-kmp/src/branch/main/litert-tools-kotlinx-serialization litert-tools-kotlinx-serialization = { module = "pw.binom.litert:litert-tools-kotlinx-serialization", version.ref = "litert" } # --- SQLDelight (app.cash.sqldelight) — KMP SQLite, JDBC driver --- sqldelight-runtime = { module = "app.cash.sqldelight:runtime", version.ref = "sqldelight" } sqldelight-sqlite-driver = { module = "app.cash.sqldelight:sqlite-driver", version.ref = "sqldelight" } sqldelight-coroutines = { module = "app.cash.sqldelight:coroutines-extensions", version.ref = "sqldelight" } # --- Ktor (сервер) --- ktor-server-core = { module = "io.ktor:ktor-server-core", version.ref = "ktor" } ktor-server-sse = { module = "io.ktor:ktor-server-sse", version.ref = "ktor" } ktor-server-cio = { module = "io.ktor:ktor-server-cio", version.ref = "ktor" } ktor-server-netty = { module = "io.ktor:ktor-server-netty", version.ref = "ktor" } ktor-server-content-negotiation = { module = "io.ktor:ktor-server-content-negotiation", version.ref = "ktor" } ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" } ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" } ktor-client-curl = { module = "io.ktor:ktor-client-curl", version.ref = "ktor" } ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" } ktor-server-test-host = { module = "io.ktor:ktor-server-test-host", version.ref = "ktor" } ktor-client-sse = { module = "io.ktor:ktor-client-sse", version.ref = "ktor" } # --- Model Context Protocol (MCP) --- mcp-sdk-client = { module = "io.modelcontextprotocol:kotlin-sdk-client", version = "0.15.0" } # --- CLI: clikt (ajalt). KMP, native Linux/macOS/Windows включая linuxArm64. --- # https://ajalt.github.io/clikt/ # Артефакт один и тот же — `com.github.ajalt.clikt:clikt` — Gradle module # metadata резолвит per-target variant (clikt-jvm / clikt-linuxarm64 / ...). clikt = { module = "com.github.ajalt.clikt:clikt-core", version.ref = "clikt" } kotlinx-cli = { module = "org.jetbrains.kotlinx:kotlinx-cli", version.ref = "kotlinx-cli" } # --- TUI: Mosaic (Jetpack Compose → ANSI-терминал), jvm + desktop-native. --- # https://github.com/JakeWharton/mosaic mosaic-runtime = { module = "com.jakewharton.mosaic:mosaic-runtime", version.ref = "mosaic" } mosaic-runtime-jvm = { module = "com.jakewharton.mosaic:mosaic-runtime-jvm", version.ref = "mosaic" } mosaic-runtime-macosx64 = { module = "com.jakewharton.mosaic:mosaic-runtime-macosx64", version.ref = "mosaic" } mosaic-runtime-macosarm64 = { module = "com.jakewharton.mosaic:mosaic-runtime-macosarm64", version.ref = "mosaic" } mosaic-runtime-linuxx64 = { module = "com.jakewharton.mosaic:mosaic-runtime-linuxx64", version.ref = "mosaic" } mosaic-runtime-linuxarm64 = { module = "com.jakewharton.mosaic:mosaic-runtime-linuxarm64", version.ref = "mosaic" } mosaic-runtime-mingwx64 = { module = "com.jakewharton.mosaic:mosaic-runtime-mingwx64", version.ref = "mosaic" } mosaic-tty-terminal = { module = "com.jakewharton.mosaic:mosaic-tty-terminal", version.ref = "mosaic" } kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } # --- commons --- kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" } kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinx-serialization" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" } kotlinx-io-core = { module = "org.jetbrains.kotlinx:kotlinx-io-core", version.ref = "kotlinx-io" } # --- kMMIO (dev.karmakrafts.kmmio) — резерв под будущую vector-DB, пока не используется --- # kmmio-core = { module = "dev.karmakrafts.kmmio:kmmio-core", version = "2.3.1" } # --- ksqlite (pw.binom.db) — KMP SQLite со встроенным sqlite-vec (https://github.com/caffeine-mgn/ksqlite). # Тянется как обычная `implementation(libs.ksqlite)` — Gradle Module Metadata резолвит per-target # variant (ksqlite-jvm / ksqlite-linuxx64 / ksqlite-mingwx64 / ...). ksqlite = { module = "pw.binom.db:ksqlite", version.ref = "ksqlite" } # --- JUnit 4 — legacy test framework (используется в :client для совместимости с ktor-server-test-host). --- junit = { module = "junit:junit", version.ref = "junit" } # --- JVector (io.github.jbellis) — embedded ANN-индекс для vector-бэкенда памяти. JVM-only. --- jvector = { module = "io.github.jbellis:jvector", version.ref = "jvector" } # --- text-embedding-kmp (pw.binom.ai.embeddingtext) — on-device SigLIP2 эмбеддинг через ONNX. --- # `api` — KMP с jvm + android + linuxX64/Arm64 + macos + ios + mingwX64 # (с 2026-09-21, когда мы добавили нативные цели в text-embedding-kmp:api). # Версия 5 — первый релиз с реальными нативными klib-вариантами в caffeine # (v4 имел только jvm+android, что ломало native-resolve в :memory-md-vector). # Используется из :memory-md-vector и :memory-vector напрямую через # `libs.text.embedding.api` (без суффикса `-jvm` — Gradle сам выберет # нужный variant под target). # `siglip` — JVM+Android only (onnx-runtime), подключается в jvmMain. text-embedding-api = { module = "pw.binom.ai.embeddingtext:api", version.ref = "text-embedding-kmp" } text-embedding-siglip = { module = "pw.binom.ai.embeddingtext:siglip-jvm", version.ref = "text-embedding-kmp" } # --- Логирование: kotlin-logging (тонкая обёртка над slf4j-api) + logback-classic (binding). --- # KMP-артефакт (он же `kotlin-logging-jvm` существует отдельно как JVM-only build). kotlin-logging = { module = "io.github.microutils:kotlin-logging", version.ref = "kotlin-logging" } logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logback" }