chore(deps): refactor ksqlite dependency to use version catalog

This commit is contained in:
2026-09-24 16:12:28 +03:00
parent f191387e99
commit 4156e5f95f
9 changed files with 40 additions and 18 deletions
+1 -1
View File
@@ -44,7 +44,7 @@ kotlin {
implementation(libs.ktor.server.sse) implementation(libs.ktor.server.sse)
} }
jvmTest.dependencies { jvmTest.dependencies {
implementation("junit:junit:4.13.2") implementation(libs.junit)
} }
} }
+2 -2
View File
@@ -21,9 +21,9 @@ kotlin {
sourceSets { sourceSets {
commonMain.dependencies { commonMain.dependencies {
// ksqlite 0.1.3 опубликован в Maven Central — обычный // ksqlite живёт в libs.versions.toml (см. catalog) — обычный
// `mavenCentral()` в settings.gradle.kts его подтянет. // `mavenCentral()` в settings.gradle.kts его подтянет.
implementation("pw.binom.db:ksqlite:0.1.3") implementation(libs.ksqlite)
implementation(libs.kotlinx.serialization.json) implementation(libs.kotlinx.serialization.json)
api(project(":context-api")) api(project(":context-api"))
+10
View File
@@ -16,6 +16,8 @@ logback = "1.5.18"
mosaic = "0.18.0" mosaic = "0.18.0"
clikt = "5.0.3" clikt = "5.0.3"
kotlinx-cli = "0.3.6" kotlinx-cli = "0.3.6"
ksqlite = "0.1.3"
junit = "4.13.2"
[plugins] [plugins]
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
@@ -96,6 +98,14 @@ kotlinx-io-core = { module = "org.jetbrains.kotlinx:kotlinx-io-core", version.re
# --- kMMIO (dev.karmakrafts.kmmio) — резерв под будущую vector-DB, пока не используется --- # --- kMMIO (dev.karmakrafts.kmmio) — резерв под будущую vector-DB, пока не используется ---
# kmmio-core = { module = "dev.karmakrafts.kmmio:kmmio-core", version = "2.3.1" } # 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 (io.github.jbellis) — embedded ANN-индекс для vector-бэкенда памяти. JVM-only. ---
jvector = { module = "io.github.jbellis:jvector", version.ref = "jvector" } jvector = { module = "io.github.jbellis:jvector", version.ref = "jvector" }
+2 -2
View File
@@ -20,9 +20,9 @@ kotlin {
sourceSets { sourceSets {
commonMain.dependencies { commonMain.dependencies {
// ksqlite 0.1.3 опубликован в Maven Central — обычный // ksqlite живёт в libs.versions.toml (см. catalog) — обычный
// `mavenCentral()` в settings.gradle.kts его подтянет. // `mavenCentral()` в settings.gradle.kts его подтянет.
implementation("pw.binom.db:ksqlite:0.1.3") implementation(libs.ksqlite)
implementation(libs.kotlinx.serialization.json) implementation(libs.kotlinx.serialization.json)
api(project(":journal-api")) api(project(":journal-api"))
+2 -2
View File
@@ -30,9 +30,9 @@ kotlin {
sourceSets { sourceSets {
commonMain.dependencies { commonMain.dependencies {
// ksqlite 0.1.3 опубликован в Maven Central — обычный // ksqlite живёт в libs.versions.toml (см. catalog) — обычный
// `mavenCentral()` в settings.gradle.kts его подтянет. // `mavenCentral()` в settings.gradle.kts его подтянет.
implementation("pw.binom.db:ksqlite:0.1.3") implementation(libs.ksqlite)
implementation(libs.kotlinx.coroutines.core) implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.io.core) implementation(libs.kotlinx.io.core)
+3 -3
View File
@@ -9,7 +9,7 @@ plugins {
// других ksqlite-модулях; этот модуль не претендует на полную схему агента. // других ksqlite-модулях; этот модуль не претендует на полную схему агента.
// //
// Цели сборки — jvm() + linuxX64() + mingwX64(); Apple targets auto-disabled // Цели сборки — jvm() + linuxX64() + mingwX64(); Apple targets auto-disabled
// на Linux (ksqlite 0.1.3 не публикует native артефакты для Apple). // на Linux (ksqlite не публикует native артефакты для Apple).
kotlin { kotlin {
jvmToolchain(21) jvmToolchain(21)
@@ -20,9 +20,9 @@ kotlin {
sourceSets { sourceSets {
commonMain.dependencies { commonMain.dependencies {
// ksqlite 0.1.3 опубликован в Maven Central — обычный // ksqlite живёт в libs.versions.toml (см. catalog) — обычный
// `mavenCentral()` в settings.gradle.kts его подтянет. // `mavenCentral()` в settings.gradle.kts его подтянет.
implementation("pw.binom.db:ksqlite:0.1.3") implementation(libs.ksqlite)
api(project(":reflection-api")) api(project(":reflection-api"))
// :reflection-api ссылается на :journal-api типы в сигнатурах // :reflection-api ссылается на :journal-api типы в сигнатурах
+1 -1
View File
@@ -70,7 +70,7 @@ kotlin {
// ksqlite объявлен как `implementation` (не `api`) в каждом // ksqlite объявлен как `implementation` (не `api`) в каждом
// ksqlite-модуле, поэтому SqliteStores здесь использует // ksqlite-модуле, поэтому SqliteStores здесь использует
// SQLiteConnection напрямую — фиксируем зависимость явно. // SQLiteConnection напрямую — фиксируем зависимость явно.
implementation("pw.binom.db:ksqlite:0.1.3") implementation(libs.ksqlite)
// Bounded-tail live event stream + per-event TTL. // Bounded-tail live event stream + per-event TTL.
implementation(project(":outbox-inmemory")) implementation(project(":outbox-inmemory"))
@@ -33,6 +33,7 @@ import pw.binom.agentik.mcp.bridge.McpRegistry
import pw.binom.agentik.standalone.persistence.SqliteStores import pw.binom.agentik.standalone.persistence.SqliteStores
import java.io.File import java.io.File
import pw.binom.agentik.skill.mining.SkillMiner import pw.binom.agentik.skill.mining.SkillMiner
/** /**
* standalone-контейнер agentik: * standalone-контейнер agentik:
* - :server (proto): встраиваемый Ktor (CIO), порт AGENTIK_PORT (default 8080) * - :server (proto): встраиваемый Ktor (CIO), порт AGENTIK_PORT (default 8080)
@@ -67,10 +68,12 @@ fun main(args: Array<String>) {
runPullModel(args.drop(1)) runPullModel(args.drop(1))
return return
} }
"--help", "-h", "help" -> { "--help", "-h", "help" -> {
printHelp() printHelp()
return return
} }
else -> { else -> {
System.err.println("Unknown subcommand: ${args[0]}") System.err.println("Unknown subcommand: ${args[0]}")
printHelp() printHelp()
@@ -82,11 +85,13 @@ fun main(args: Array<String>) {
} }
private fun printHelp() { private fun printHelp() {
println(""" println(
"""
agentik standalone — usage: agentik standalone — usage:
java -jar agentik.jar Start HTTP server (A2A + :proto) java -jar agentik.jar Start HTTP server (A2A + :proto)
java -jar agentik.jar pull-model Download the LiteRT-LM model from static.binom.pw java -jar agentik.jar pull-model Download the LiteRT-LM model from static.binom.pw
""".trimIndent()) """.trimIndent()
)
} }
/** /**
@@ -245,6 +250,7 @@ private fun runServer() {
println(" memory: disabled") println(" memory: disabled")
null null
} }
MemoryBackend.MD -> { MemoryBackend.MD -> {
if (rawMemory.equals("off", ignoreCase = true)) { if (rawMemory.equals("off", ignoreCase = true)) {
println(" memory: disabled (memoryDir=off)") println(" memory: disabled (memoryDir=off)")
@@ -256,6 +262,7 @@ private fun runServer() {
} }
} }
} }
MemoryBackend.VECTOR -> { MemoryBackend.VECTOR -> {
val embedding: pw.binom.agentik.memory.TextEmbeddingExecutor = when (config.embedding.backend) { val embedding: pw.binom.agentik.memory.TextEmbeddingExecutor = when (config.embedding.backend) {
AppConfig.EmbeddingBackend.HTTP -> { AppConfig.EmbeddingBackend.HTTP -> {
@@ -274,6 +281,7 @@ private fun runServer() {
dimension = config.embedding.dimension, dimension = config.embedding.dimension,
).asExecutor() ).asExecutor()
} }
AppConfig.EmbeddingBackend.SIGLIP -> { AppConfig.EmbeddingBackend.SIGLIP -> {
val modelPath = checkNotNull(config.embedding.modelPath) { val modelPath = checkNotNull(config.embedding.modelPath) {
"AGENTIK_EMBEDDING_BACKEND=siglip требует AGENTIK_EMBEDDING_MODEL_PATH" "AGENTIK_EMBEDDING_BACKEND=siglip требует AGENTIK_EMBEDDING_MODEL_PATH"
@@ -291,12 +299,14 @@ private fun runServer() {
val backendLabel = when (config.embedding.backend) { val backendLabel = when (config.embedding.backend) {
AppConfig.EmbeddingBackend.HTTP -> AppConfig.EmbeddingBackend.HTTP ->
"model=${config.embedding.model}, dim=${config.embedding.dimension}" "model=${config.embedding.model}, dim=${config.embedding.dimension}"
AppConfig.EmbeddingBackend.SIGLIP -> AppConfig.EmbeddingBackend.SIGLIP ->
"model=siglip2-base (on-device), dim=${embedding.dimension}" "model=siglip2-base (on-device), dim=${embedding.dimension}"
} }
println(" memory: db=${config.agent.dbPath} (vector-backend, $backendLabel)") println(" memory: db=${config.agent.dbPath} (vector-backend, $backendLabel)")
} }
} }
MemoryBackend.HYBRID -> { MemoryBackend.HYBRID -> {
// Гибрид: .md файлы (single source of truth) + ksqlite vector-кэш. // Гибрид: .md файлы (single source of truth) + ksqlite vector-кэш.
// Нужны embeddings (HTTP/SIGLIP) + путь к vector-БД (по умолчанию рядом с agentik.db). // Нужны embeddings (HTTP/SIGLIP) + путь к vector-БД (по умолчанию рядом с agentik.db).
@@ -314,6 +324,7 @@ private fun runServer() {
dimension = config.embedding.dimension, dimension = config.embedding.dimension,
).asExecutor() ).asExecutor()
} }
AppConfig.EmbeddingBackend.SIGLIP -> { AppConfig.EmbeddingBackend.SIGLIP -> {
val modelPath = checkNotNull(config.embedding.modelPath) { val modelPath = checkNotNull(config.embedding.modelPath) {
"AGENTIK_EMBEDDING_BACKEND=siglip требует AGENTIK_EMBEDDING_MODEL_PATH" "AGENTIK_EMBEDDING_BACKEND=siglip требует AGENTIK_EMBEDDING_MODEL_PATH"
+6 -5
View File
@@ -7,9 +7,10 @@ plugins {
// обычная SQLite БД. Подходит для small-to-medium масштабов (≤10K записей на // обычная SQLite БД. Подходит для small-to-medium масштабов (≤10K записей на
// embedding ~512d); для больших датасетов — sqlite-vec или JVector. // embedding ~512d); для больших датасетов — sqlite-vec или JVector.
// //
// Цели сборки — только те, для которых ksqlite 0.1.3 опубликован в Maven Central: // Цели сборки — только те, для которых ksqlite опубликован в Maven Central
// jvm + linuxX64/Arm64 + mingwX64. Apple/iOS/tvOS/watchOS — НЕ публикуются; // (см. libs.versions.toml): jvm + linuxX64/Arm64 + mingwX64.
// для них использовать JVM-only `:vector-index-jvector`. // Apple/iOS/tvOS/watchOS — НЕ публикуются; для них использовать
// JVM-only `:vector-index-jvector`.
kotlin { kotlin {
jvmToolchain(21) jvmToolchain(21)
@@ -20,8 +21,8 @@ kotlin {
sourceSets { sourceSets {
commonMain.dependencies { commonMain.dependencies {
// ksqlite 0.1.3 опубликован в Maven Central. // ksqlite живёт в libs.versions.toml (см. catalog).
implementation("pw.binom.db:ksqlite:0.1.3") implementation(libs.ksqlite)
api(project(":vector-index-api")) api(project(":vector-index-api"))
} }
commonTest.dependencies { commonTest.dependencies {