skills: парсер YAML-скилов (opencode-формат)
Новый KMP-модуль :skills (9 целей, зеркалит :proto). Парсит скилы
в формате opencode: YAML-фронтматтер с name+description, затем markdown
body.
- SkillFile(name, description, body) — @Serializable результат.
- SkillParseError — sealed-иерархия ошибок: Empty, MissingOpeningFence,
MissingClosingFence, InvalidYaml, SchemaMismatch, BlankName.
- SkillParser.parse(raw): SkillParseResult + parseOrThrow(raw): SkillFile.
Обрабатывает BOM, CRLF, имена с двоеточиями (backend:spring:db-base),
multiline-YAML, пустое тело; неизвестные ключи фронтматтера игнорирует.
- SkillParserTest — 16 тестов, 0 failures.
YAML-библиотека — com.charleskorn.kaml 0.104.0 (не JetBrains,
интеграция с kotlinx @Serializable). Грабли kaml 0.104: параметр
ignoreUnknownKeys переименован в strictMode (инвертирован);
missing-required-field прилетает как YamlException, не
SerializationException — различаем по сообщению.
Проверка: :skills:jvmTest 16/16, :skills:assemble (9 целей) — зелёные.
This commit is contained in:
@@ -26,6 +26,8 @@ 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`.
|
||||
|
||||
Reference in New Issue
Block a user