plugins { alias(libs.plugins.kotlin.multiplatform) } // CI-флаг: при -PskipVectorMemory=true зависимости text-embedding-kmp // не подключаются. Нужно для CI runner'а — text-embedding-kmp ещё не // опубликован в caffeine, артефакты есть только в локальном ~/.m2. // Использование: // ./gradlew :memory-vector:compileKotlinJvm -PskipVectorMemory=true // Локальная разработка без флага — зависимости подключаются как обычно. val skipVectorMemory: Boolean = (project.findProperty("skipVectorMemory") == "true") || System.getenv("SKIP_VECTOR_MEMORY") == "1" kotlin { jvmToolchain(21) // Vector-бэкенд JVM-only: JVector не публикует KMP-таргеты, но его Java 11 // base jar работает на Android ART через scalar fallback. Для desktop JVM // HotSpot 21+ автоматически подхватывается Panama Vector API (multirelease). jvm() sourceSets { commonMain.dependencies { api(project(":memory-api")) implementation(libs.kotlinx.coroutines.core) implementation(libs.kotlinx.serialization.json) // `pw.binom.ai.embeddingtext:api` (TextEmbeddingExtractor + TextEmbedding) // теперь KMP с нативом (linuxX64/mingwX64/macOS/ios); тянем в commonMain. // Реализации (`siglip`, `http`) — JVM+Android only, см. jvmMain ниже. api(libs.text.embedding.api) } commonTest.dependencies { implementation(kotlin("test")) implementation(libs.kotlinx.coroutines.core) implementation(libs.kotlinx.coroutines.test) } jvmMain.dependencies { implementation(libs.jvector) implementation(libs.sqldelight.sqlite.driver) // Конкретная реализация TextEmbeddingExtractor поверх ONNX. implementation(libs.text.embedding.siglip) } jvmTest.dependencies { implementation(kotlin("test")) } } }