memory-vector: LlmMemoryReviewer + SkillStore/SkillSaveTool/SkillDeleteTool
Phase 3 (Hermes-style self-improvement) and Phase 5.2 (LLM-driven review):
* :skills — SkillStore interface + DiskSkillStore (upsert/remove, file<->catalog sync)
* :skills — SkillParser.serialize for write-back path
* :standalone — SkillSaveTool/SkillDeleteTool + SkillToolsFactory
* :standalone — LlmMemoryReviewer: one-shot LiteLlm review via structured-output
JSON prompt ({toSave:[...], toDelete:[...]}); reuses MemorySystem store
* :standalone — ReviewDecisionParser (lenient, handles json fences, missing
arrays, malformed numbers)
* :standalone — ReviewPrompts (Russian system+user prompts, fact categories)
* :standalone/Main — wires LlmMemoryReviewer instead of KeywordMdReviewer when
LLM is available, falls back to keyword for off/md-only mode
* :client — send(content, context) overload + SendPayload wrapper
* :proto — ExperimentalNativeApi opt-in for MessageContextTest (native targets)
Bug fixes:
* SkillTools.kt: error() shadowed kotlin.error(); renamed to Nothing
* ChatConversation: .map { when(...); error() } → .mapNotNull { when ... else -> null }
(Kotlin type inference of LUB LiteMessage | Nothing failed across when-expr)
Tests: 284 total green (memory-vector: 17, standalone: 149).
Dropped: IRC-QUESTIONS.md (irc-server design rejected — user decision 2026-09-14).
This commit is contained in:
@@ -78,6 +78,7 @@ class MessageContextTest {
|
||||
assertEquals(ctx.metadata, decoded.metadata)
|
||||
}
|
||||
|
||||
@kotlin.experimental.ExperimentalNativeApi
|
||||
@Test
|
||||
fun `origin field name is origin in JSON`() {
|
||||
val ctx = MessageContext(origin = MessageOrigin.SYSTEM, description = "boot")
|
||||
|
||||
Reference in New Issue
Block a user