docs: per-module README + root navigation hub + CI/release workflows
ci / JVM build + tests (push) Failing after 1m57s
ci / JVM build + tests (push) Failing after 1m57s
- README.md в каждом подмодуле: для библиотек — описание проблемы, подключение через maven-central/caffeine, версии в gradle/libs.versions.toml. Для запускаемых модулей — команды запуска + переменные среды с дефолтами. - Корневой README.md переписан как навигационный хаб: что это, где клиенты, где серверы, как собрать, как опубликовать. - build.gradle.kts: per-module POM-description через единую карту в rootProject.extra (порядок важен — нужно ДО apply плагина KMP, поэтому beforeEvaluate в subprojects). - .gitea/workflows/ci.yml (новый): build + jvmTest + shadowJar на PR/push main. - .gitea/workflows/release.yml (обновлён): публикует библиотеки в caffeine Nexus + собирает 3 fatjar'а и крепит их к release как бинарные ассеты.
This commit is contained in:
+35
-4
@@ -30,6 +30,30 @@ val binomRepoUrl = (findProperty("binom.repo.url") as String? ?: "http://nexus.x
|
||||
val binomRepoUser = (findProperty("binom.repo.user") as String? ?: "").toString()
|
||||
val binomRepoPassword = (findProperty("binom.repo.password") as String? ?: "").toString()
|
||||
|
||||
// Per-module POM description. Один источник истины — карта ниже,
|
||||
// лишнее в settings.gradle.kts держим в комментарии-зеркале.
|
||||
// При добавлении нового модуля — добавь строку сюда + README.md в его корень.
|
||||
// Кладём в rootProject.extra ДО apply KMP-плагина в subprojects (beforeEvaluate
|
||||
// срабатывает позже, чем apply плагина, поэтому просто положить extra в
|
||||
// beforeEvaluate — поздно).
|
||||
val moduleDescriptions: Map<String, String> = mapOf(
|
||||
"proto" to "agentik :proto — stateful KMP protocol (Agent/Conversation/Message/Event) replacing AG-UI; типы и контракт без сетевой логики.",
|
||||
"skills" to "agentik :skills — парсер opencode-style SKILL.md / *.yaml (YAML-frontmatter + markdown body); загружается в system prompt.",
|
||||
"server" to "agentik :server — Ktor-фасад, экспонирующий Agent по HTTP+JSON+SSE под путём /agentik.",
|
||||
"client" to "agentik :client — Ktor-клиент (HTTP+JSON+SSE), превращающий /agentik в Agent/Conversation из :proto.",
|
||||
"memory-api" to "agentik :memory-api — интерфейсы долговременной памяти (MemoryStore, MemoryCategory, MemoryNote).",
|
||||
"memory-md" to "agentik :memory-md — Hermes-style реализация памяти поверх §-файлов (user/world/preference.md).",
|
||||
"memory-vector" to "agentik :memory-vector — ANN+JVector+SQLite реализация памяти с эмбеддингами (HTTP/SIGLIP).",
|
||||
"storage-core" to "agentik :storage-core — интерфейсы хранилища (MessageStore/WorkingMemoryStore/ConversationStore/ReflectionStore).",
|
||||
"storage-inmemory" to "agentik :storage-inmemory — in-memory реализация всех сторов из :storage-core (для тестов и Android).",
|
||||
"storage-sqlite" to "agentik :storage-sqlite — SQLDelight реализация всех сторов на SQLite (прод-бэкенд).",
|
||||
"agent-toolsets" to "agentik :agent-toolsets — реестр инструментов + диспетчер тулов (enable_toolset/disable_toolset); переиспользуемое ядро.",
|
||||
"agentik-cli" to "agentik :agentik-cli — JVM CLI-клиент (JLine) к /agentik: REPL + slash-команды + стрим SSE.",
|
||||
"agentik-tui" to "agentik :agentik-tui — Compose-for-Mosaic TUI-клиент (desktop, без iOS) с клавиатурной навигацией без ':'-префиксов.",
|
||||
"standalone" to "agentik :standalone — single-jar HTTP-сервер со всеми транспортами (AG-UI/A2A/:proto), SQLite, памятью, скилами и SOUL.",
|
||||
)
|
||||
rootProject.extra.set("moduleDescriptions", moduleDescriptions)
|
||||
|
||||
subprojects {
|
||||
group = rootProject.group
|
||||
|
||||
@@ -41,7 +65,16 @@ subprojects {
|
||||
// 1) eagerly переопределяем version в rootProject.extra (см. выше)
|
||||
// 2) на КАЖДЫЙ subproject вешаем beforeEvaluate, который выставляет
|
||||
// version до того, как KMP-плагин начнёт создавать publications.
|
||||
|
||||
// per-module POM description берётся из rootProject.extra["moduleDescriptions"]
|
||||
// (см. корень build.gradle.kts); добавлять новый модуль — туда + README.md.
|
||||
|
||||
// beforeEvaluate срабатывает ДО apply плагинов в build.gradle.kts модуля, так
|
||||
// что version/description уже валидны, когда KMP-плагин начинает создавать
|
||||
// publications.
|
||||
beforeEvaluate {
|
||||
description = (rootProject.extra["moduleDescriptions"] as Map<String, String>)[project.name]
|
||||
?: "agentik module: ${project.name}"
|
||||
version = rootProject.extra["projectVersion"] as String
|
||||
}
|
||||
|
||||
@@ -76,10 +109,8 @@ subprojects {
|
||||
|
||||
pom {
|
||||
name = project.name
|
||||
description = providers.provider {
|
||||
project.findProperty("description")?.toString()
|
||||
?: "agentik: ${project.name} (pw.binom.agentik)"
|
||||
}
|
||||
description = (rootProject.extra["moduleDescriptions"] as? Map<String, String>)?.get(project.name)
|
||||
?: "agentik module: ${project.name}"
|
||||
url = "https://git.binom.pw/subochev/agentik"
|
||||
|
||||
licenses {
|
||||
|
||||
Reference in New Issue
Block a user