2e1387273a
Новый KMP-модуль :agent-toolsets с основными абстракциями для тулсетов: - ToolsetContribution(name, description, tools: List<ToolEntry>) — декларация тулсета: имя + описание + список входящих LiteTool'ов с именами. - ToolsetContext + Logger + NoOpLogger — что тулсеты получают при активации. - ToolsetRegistry — реестр тулсетов с Mutex-защитой; методы activate/deactivate/isActive/activeNames/inactiveNames/activeTools/ findByName/findOwnerByToolName. - ToolsetDispatchPolicy — диспетчер с прощающей auto-activation: если тул из неактивного тулсета вызван — молча активирует тулсет и выполняет. Если тул вообще неизвестен — fallback в BaseToolDispatcher (плоские тулы вне toolsets). - EnableToolsetTool / DisableToolsetTool — встроенные LiteTool'ы (4-case контракт зафиксирован в docs/TOOLSETS-PLAN.md): activate/deactivate с равномерным сообщением 'X deactivated' независимо от того, был ли он активен. - SyncLiteTool — обёртка suspend-handler'а в синхронный LiteTool (через runBlocking). LiteTool.invoke синхронен по контракту litert-kmp. Дизайн: - :agent-toolsets НЕ зависит от :standalone — может быть переиспользован в Android-сборке и любом LiteTool-агенте. - Модуль KMP (jvm + native), общие интерфейсы в commonMain, JVM-специфика только в SyncLiteTool (runBlocking). - ToolsetContext минимален (logger); storage/skill добавятся в commit 5+. Тесты: 29 новых покрывают activate/deactivate/idempotency, activeTools, findOwnerByToolName, auto-activation в диспетчере, fallback в base, оба контракта enable/disable со всеми 4 кейсами. Tests: 328/328 green (299 ранее + 29 в :agent-toolsets)
65 lines
3.4 KiB
Kotlin
65 lines
3.4 KiB
Kotlin
val caffeineRepo = providers.gradleProperty("caffeineRepo").getOrElse("http://192.168.76.117/repository/caffeine")
|
|
|
|
pluginManagement {
|
|
repositories {
|
|
gradlePluginPortal()
|
|
mavenCentral()
|
|
google()
|
|
}
|
|
}
|
|
|
|
dependencyResolutionManagement {
|
|
repositories {
|
|
// Сначала mavenLocal — чтобы локально опубликованные версии
|
|
// (через publishToMavenLocal) перекрывали caffeine.
|
|
mavenLocal()
|
|
mavenCentral()
|
|
google()
|
|
// Локально опубликованные snapshot-ы text-embedding-kmp (см. `~/.m2`).
|
|
// Home Nexus, репо "caffeine": pw.binom.* (A2A, ...)
|
|
maven {
|
|
name = "caffeine"
|
|
url = uri(caffeineRepo)
|
|
setAllowInsecureProtocol(true)
|
|
}
|
|
}
|
|
}
|
|
|
|
rootProject.name = "agentik"
|
|
|
|
include(":standalone")
|
|
// Собственный протокол agentik. Пока в нём пилим, потом вынесем.
|
|
include(":proto")
|
|
// Парсер скилов (YAML-frontmatter + markdown body, opencode-style).
|
|
include(":skills")
|
|
// Ktor-сервер, экспонирующий Agent по HTTP (SSE + JSON).
|
|
include(":server")
|
|
// Ktor-клиент, превращающий HTTP-фасад в `Agent`/`Conversation`.
|
|
include(":client")
|
|
// Встраиваемая долговременная память агента. `:memory-api` — интерфейсы,
|
|
// `:memory-md` — реализация на базе §-файлов (Hermes-style).
|
|
include(":memory-api")
|
|
include(":memory-md")
|
|
// Vector-бэкенд долговременной памяти поверх JVector (ANN-индекс) + SQLite
|
|
// для метаданных. JVM-only (JVector не имеет KMP-таргетов). На Android ART
|
|
// работает через Java 11 base classes (scalar fallback).
|
|
include(":memory-vector")
|
|
// Интерфейсы хранилища и разговорной истории: MessageStore / WorkingMemoryStore /
|
|
// ConversationStore / ReflectionStore + StorageBundle агрегатор. Реализации —
|
|
// в :storage-inmemory / :storage-sqlite / :storage-android (последний deferred).
|
|
include(":storage-core")
|
|
// In-memory реализация всех 4 store'ов из :storage-core. KMP, без платформенных
|
|
// IO-зависимостей. Используется в тестах (быстрый setup, без JDBC) и будет
|
|
// использоваться в Android-сборке (JVector/SQLite не подходят для ART out-of-box).
|
|
include(":storage-inmemory")
|
|
// SQLDelight-реализация всех 4 store'ов из :storage-core. JVM-only (SQLDelight
|
|
// native драйверов для KMP вне JVM пока не публикует). Содержит 4 .sq-файла +
|
|
// 5 классов: SqliteStores, SqliteConversationStore, SqliteMessageStore,
|
|
// SqliteWorkingMemoryStore, SqliteReflectionStore. Бэкенд для прод-запуска
|
|
// :standalone (путь к .db файлу в AGENTIK_DB).
|
|
include(":storage-sqlite")
|
|
// Ядро механики toolsets: ToolsetRegistry + ToolsetDispatchPolicy + встроенные
|
|
// тулы enable_toolset/disable_toolset. KMP, не зависит от :standalone, может быть
|
|
// переиспользован в Android-сборке. Интеграция с ChatAgent — commit 5+.
|
|
include(":agent-toolsets")
|