Add exact KV memory with persona overlays and param priority.

Canonical defaults live in exact.json (UI fills empties without an LLM call); chat session overrides beat file defaults until clear/persona change.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-21 23:04:34 +03:00
co-authored by Cursor
parent fe4d8d3a3a
commit 1b9cc1ad78
15 changed files with 418 additions and 121 deletions
+5
View File
@@ -319,6 +319,9 @@ public sealed class AssistentConfig
public JObject LoadUi(string personaId) => MergeJsonLayers("ui.json", LayerRoots(personaId));
/// <summary>Exact (KV) memory: bundled base → persona overlays → disk overlays. Persona keys overwrite base.</summary>
public JObject LoadExact(string personaId) => MergeJsonLayers("exact.json", LayerRoots(personaId));
public JObject LoadModelProfile(string personaId)
{
JObject assistant = LoadAssistant(personaId);
@@ -712,6 +715,7 @@ public sealed class AssistentConfig
JObject assistant = LoadAssistant(id);
JObject ui = LoadUi(id);
JObject model = LoadModelProfile(id);
JObject exact = LoadExact(id);
var packs = ListPacks(id);
var skills = ListSkills(id);
var personas = ListPersonaCatalog();
@@ -724,6 +728,7 @@ public sealed class AssistentConfig
["assistant"] = assistant,
["ui"] = ui,
["model"] = model,
["exact"] = exact,
["packs"] = new JArray(packs.Select(p => new JObject
{
["id"] = p.id,