sensorium-mcp 3.0.24 → 3.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/README.md +1 -0
  2. package/dist/config.d.ts +2 -2
  3. package/dist/config.js +4 -4
  4. package/dist/config.js.map +1 -1
  5. package/dist/daily-session.d.ts.map +1 -1
  6. package/dist/daily-session.js +15 -2
  7. package/dist/daily-session.js.map +1 -1
  8. package/dist/dashboard/routes/data.d.ts +0 -1
  9. package/dist/dashboard/routes/data.d.ts.map +1 -1
  10. package/dist/dashboard/routes/data.js +1 -13
  11. package/dist/dashboard/routes/data.js.map +1 -1
  12. package/dist/dashboard/routes/snapshots.d.ts +18 -0
  13. package/dist/dashboard/routes/snapshots.d.ts.map +1 -0
  14. package/dist/dashboard/routes/snapshots.js +162 -0
  15. package/dist/dashboard/routes/snapshots.js.map +1 -0
  16. package/dist/dashboard/routes/threads.d.ts +2 -2
  17. package/dist/dashboard/routes/threads.d.ts.map +1 -1
  18. package/dist/dashboard/routes/threads.js +24 -8
  19. package/dist/dashboard/routes/threads.js.map +1 -1
  20. package/dist/dashboard/routes.d.ts.map +1 -1
  21. package/dist/dashboard/routes.js +14 -4
  22. package/dist/dashboard/routes.js.map +1 -1
  23. package/dist/dashboard/spa.html +10 -10
  24. package/dist/data/interfaces.d.ts +1 -0
  25. package/dist/data/interfaces.d.ts.map +1 -1
  26. package/dist/data/memory/bootstrap.d.ts +0 -4
  27. package/dist/data/memory/bootstrap.d.ts.map +1 -1
  28. package/dist/data/memory/bootstrap.js +2 -30
  29. package/dist/data/memory/bootstrap.js.map +1 -1
  30. package/dist/data/memory/consolidation.d.ts +7 -0
  31. package/dist/data/memory/consolidation.d.ts.map +1 -1
  32. package/dist/data/memory/consolidation.js +19 -1
  33. package/dist/data/memory/consolidation.js.map +1 -1
  34. package/dist/data/memory/index.d.ts +1 -2
  35. package/dist/data/memory/index.d.ts.map +1 -1
  36. package/dist/data/memory/index.js +1 -2
  37. package/dist/data/memory/index.js.map +1 -1
  38. package/dist/data/memory/migration-runner.d.ts +1 -1
  39. package/dist/data/memory/migration-runner.d.ts.map +1 -1
  40. package/dist/data/memory/migration-runner.js +11 -1
  41. package/dist/data/memory/migration-runner.js.map +1 -1
  42. package/dist/data/memory/narrative.d.ts.map +1 -1
  43. package/dist/data/memory/narrative.js +49 -22
  44. package/dist/data/memory/narrative.js.map +1 -1
  45. package/dist/data/memory/reflection.d.ts +1 -1
  46. package/dist/data/memory/reflection.d.ts.map +1 -1
  47. package/dist/data/memory/reflection.js +88 -17
  48. package/dist/data/memory/reflection.js.map +1 -1
  49. package/dist/data/memory/schema-ddl.d.ts +1 -1
  50. package/dist/data/memory/schema-ddl.d.ts.map +1 -1
  51. package/dist/data/memory/schema-ddl.js +1 -22
  52. package/dist/data/memory/schema-ddl.js.map +1 -1
  53. package/dist/data/memory/schema.d.ts.map +1 -1
  54. package/dist/data/memory/schema.js +4 -0
  55. package/dist/data/memory/schema.js.map +1 -1
  56. package/dist/data/memory/semantic.d.ts +7 -2
  57. package/dist/data/memory/semantic.d.ts.map +1 -1
  58. package/dist/data/memory/semantic.js +26 -12
  59. package/dist/data/memory/semantic.js.map +1 -1
  60. package/dist/data/memory/synthesis.d.ts +4 -24
  61. package/dist/data/memory/synthesis.d.ts.map +1 -1
  62. package/dist/data/memory/synthesis.js +76 -190
  63. package/dist/data/memory/synthesis.js.map +1 -1
  64. package/dist/data/memory/thread-registry.d.ts +7 -0
  65. package/dist/data/memory/thread-registry.d.ts.map +1 -1
  66. package/dist/data/memory/thread-registry.js +38 -3
  67. package/dist/data/memory/thread-registry.js.map +1 -1
  68. package/dist/data/memory/topic-shift.d.ts +1 -1
  69. package/dist/data/memory/topic-shift.js +1 -1
  70. package/dist/data/memory/utils.d.ts +1 -1
  71. package/dist/data/memory/utils.js +1 -1
  72. package/dist/http-server.d.ts.map +1 -1
  73. package/dist/http-server.js +27 -5
  74. package/dist/http-server.js.map +1 -1
  75. package/dist/index.js +4 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/logger.d.ts +2 -0
  78. package/dist/logger.d.ts.map +1 -1
  79. package/dist/logger.js +59 -4
  80. package/dist/logger.js.map +1 -1
  81. package/dist/server/factory.js +6 -3
  82. package/dist/server/factory.js.map +1 -1
  83. package/dist/services/agent-spawn.service.d.ts.map +1 -1
  84. package/dist/services/agent-spawn.service.js +38 -19
  85. package/dist/services/agent-spawn.service.js.map +1 -1
  86. package/dist/services/background-runner.d.ts +1 -0
  87. package/dist/services/background-runner.d.ts.map +1 -1
  88. package/dist/services/background-runner.js +37 -0
  89. package/dist/services/background-runner.js.map +1 -1
  90. package/dist/services/consolidation.service.d.ts.map +1 -1
  91. package/dist/services/consolidation.service.js +149 -67
  92. package/dist/services/consolidation.service.js.map +1 -1
  93. package/dist/services/dispatcher/lock.d.ts +3 -3
  94. package/dist/services/dispatcher/lock.d.ts.map +1 -1
  95. package/dist/services/dispatcher/lock.js +9 -9
  96. package/dist/services/dispatcher/lock.js.map +1 -1
  97. package/dist/services/dispatcher/poller.d.ts.map +1 -1
  98. package/dist/services/dispatcher/poller.js +3 -49
  99. package/dist/services/dispatcher/poller.js.map +1 -1
  100. package/dist/services/keeper.service.d.ts.map +1 -1
  101. package/dist/services/keeper.service.js +20 -3
  102. package/dist/services/keeper.service.js.map +1 -1
  103. package/dist/services/memory-briefing.service.d.ts.map +1 -1
  104. package/dist/services/memory-briefing.service.js +7 -16
  105. package/dist/services/memory-briefing.service.js.map +1 -1
  106. package/dist/services/process.service.d.ts.map +1 -1
  107. package/dist/services/process.service.js +10 -3
  108. package/dist/services/process.service.js.map +1 -1
  109. package/dist/services/thread-health.service.d.ts +2 -1
  110. package/dist/services/thread-health.service.d.ts.map +1 -1
  111. package/dist/services/thread-health.service.js +4 -5
  112. package/dist/services/thread-health.service.js.map +1 -1
  113. package/dist/services/thread-lifecycle.service.d.ts.map +1 -1
  114. package/dist/services/thread-lifecycle.service.js +7 -0
  115. package/dist/services/thread-lifecycle.service.js.map +1 -1
  116. package/dist/services/worker-cleanup.service.d.ts.map +1 -1
  117. package/dist/services/worker-cleanup.service.js +5 -15
  118. package/dist/services/worker-cleanup.service.js.map +1 -1
  119. package/dist/sessions.d.ts +2 -0
  120. package/dist/sessions.d.ts.map +1 -1
  121. package/dist/sessions.js +12 -0
  122. package/dist/sessions.js.map +1 -1
  123. package/dist/tools/defs/memory-defs.js +7 -7
  124. package/dist/tools/defs/memory-defs.js.map +1 -1
  125. package/dist/tools/defs/session-defs.d.ts.map +1 -1
  126. package/dist/tools/defs/session-defs.js +6 -4
  127. package/dist/tools/defs/session-defs.js.map +1 -1
  128. package/dist/tools/delegate-tool.d.ts.map +1 -1
  129. package/dist/tools/delegate-tool.js +13 -7
  130. package/dist/tools/delegate-tool.js.map +1 -1
  131. package/dist/tools/memory-tools.d.ts.map +1 -1
  132. package/dist/tools/memory-tools.js +25 -27
  133. package/dist/tools/memory-tools.js.map +1 -1
  134. package/dist/tools/session-tools.d.ts +1 -0
  135. package/dist/tools/session-tools.d.ts.map +1 -1
  136. package/dist/tools/session-tools.js +2 -1
  137. package/dist/tools/session-tools.js.map +1 -1
  138. package/dist/tools/start-session-tool.d.ts.map +1 -1
  139. package/dist/tools/start-session-tool.js +37 -21
  140. package/dist/tools/start-session-tool.js.map +1 -1
  141. package/dist/tools/wait/media-processor.d.ts.map +1 -1
  142. package/dist/tools/wait/media-processor.js +6 -2
  143. package/dist/tools/wait/media-processor.js.map +1 -1
  144. package/dist/tools/wait/message-delivery.d.ts.map +1 -1
  145. package/dist/tools/wait/message-delivery.js +27 -6
  146. package/dist/tools/wait/message-delivery.js.map +1 -1
  147. package/dist/tools/wait/message-processing.d.ts.map +1 -1
  148. package/dist/tools/wait/message-processing.js +17 -2
  149. package/dist/tools/wait/message-processing.js.map +1 -1
  150. package/dist/tools/wait/poll-loop.d.ts +1 -0
  151. package/dist/tools/wait/poll-loop.d.ts.map +1 -1
  152. package/dist/tools/wait/poll-loop.js +27 -10
  153. package/dist/tools/wait/poll-loop.js.map +1 -1
  154. package/package.json +1 -1
  155. package/templates/azure-devops-securevault.default.md +36 -0
  156. package/dist/data/memory/procedures.d.ts +0 -51
  157. package/dist/data/memory/procedures.d.ts.map +0 -1
  158. package/dist/data/memory/procedures.js +0 -140
  159. package/dist/data/memory/procedures.js.map +0 -1
@@ -45,18 +45,18 @@ function rowToSemanticNote(row) {
45
45
  lastAccessed: row.last_accessed ?? null,
46
46
  isGuardrail: row.is_guardrail === 1,
47
47
  pinned: row.pinned === 1,
48
+ qualityScore: row.quality_score ?? null,
48
49
  createdAt: row.created_at,
49
50
  updatedAt: row.updated_at,
50
51
  };
51
52
  }
52
53
  // ─── Topic Index ─────────────────────────────────────────────────────────────
53
- export function updateTopicIndexForKeywords(db, keywords, layer) {
54
+ export function updateTopicIndexForKeywords(db, keywords) {
54
55
  const now = nowISO();
55
- const col = layer === "semantic" ? "semantic_count" : "procedural_count";
56
- const upsertStmt = db.prepare(`INSERT INTO meta_topic_index (topic, ${col}, last_updated)
56
+ const upsertStmt = db.prepare(`INSERT INTO meta_topic_index (topic, semantic_count, last_updated)
57
57
  VALUES (?, 1, ?)
58
58
  ON CONFLICT(topic) DO UPDATE SET
59
- ${col} = ${col} + 1,
59
+ semantic_count = semantic_count + 1,
60
60
  last_updated = ?,
61
61
  total_accesses = total_accesses + 1`);
62
62
  const txn = db.transaction(() => {
@@ -69,10 +69,9 @@ export function updateTopicIndexForKeywords(db, keywords, layer) {
69
69
  });
70
70
  txn();
71
71
  }
72
- export function decrementTopicIndexForKeywords(db, keywords, layer) {
73
- const col = layer === "semantic" ? "semantic_count" : "procedural_count";
74
- const decrementStmt = db.prepare(`UPDATE meta_topic_index SET ${col} = MAX(${col} - 1, 0) WHERE topic = ?`);
75
- const deleteStmt = db.prepare(`DELETE FROM meta_topic_index WHERE topic = ? AND semantic_count <= 0 AND procedural_count <= 0`);
72
+ export function decrementTopicIndexForKeywords(db, keywords) {
73
+ const decrementStmt = db.prepare(`UPDATE meta_topic_index SET semantic_count = MAX(semantic_count - 1, 0) WHERE topic = ?`);
74
+ const deleteStmt = db.prepare(`DELETE FROM meta_topic_index WHERE topic = ? AND semantic_count <= 0`);
76
75
  const txn = db.transaction(() => {
77
76
  for (const kw of keywords) {
78
77
  const normalised = kw.toLowerCase().trim();
@@ -92,14 +91,29 @@ export function getSemanticNoteById(db, noteId) {
92
91
  return undefined;
93
92
  return { type: row.type, keywords: parseJsonArray(row.keywords) };
94
93
  }
94
+ export function getSemanticNotesByIds(db, noteIds) {
95
+ if (noteIds.length === 0)
96
+ return [];
97
+ const placeholders = noteIds.map(() => "?").join(",");
98
+ const rows = db.prepare(`SELECT * FROM semantic_notes WHERE note_id IN (${placeholders}) AND valid_to IS NULL AND superseded_by IS NULL`).all(...noteIds);
99
+ return rows.map(rowToSemanticNote);
100
+ }
95
101
  export function saveSemanticNote(db, note) {
102
+ const validTypes = new Set(["fact", "preference", "pattern", "entity", "relationship"]);
103
+ if (!validTypes.has(note.type)) {
104
+ log.warn(`[semantic] Saving note with non-standard type "${note.type}" — consider using fact/preference/pattern/entity/relationship`);
105
+ }
96
106
  const id = generateId("sn");
97
107
  const now = nowISO();
108
+ const qualityScore = note.qualityScore != null ? Math.max(1, Math.min(5, Math.round(note.qualityScore))) : null;
109
+ if (qualityScore !== null && qualityScore < 3) {
110
+ log.warn(`[semantic] Low-quality note (score ${qualityScore}/5): ${note.content.slice(0, 120)}`);
111
+ }
98
112
  db.prepare(`INSERT INTO semantic_notes
99
- (note_id, type, content, keywords, confidence, priority, thread_id, is_guardrail, pinned, source_episodes, linked_notes, link_reasons, valid_from, access_count, created_at, updated_at)
100
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?, ?)`).run(id, note.type, note.content, JSON.stringify(note.keywords), Math.max(0, Math.min(1, note.confidence ?? 0.5)), Math.max(0, Math.min(2, note.priority ?? 0)), note.threadId ?? null, note.isGuardrail ? 1 : 0, note.pinned ? 1 : 0, jsonOrNull(note.sourceEpisodes), null, null, now, now, now);
113
+ (note_id, type, content, keywords, confidence, priority, thread_id, is_guardrail, pinned, source_episodes, linked_notes, link_reasons, valid_from, access_count, quality_score, created_at, updated_at)
114
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?, ?, ?)`).run(id, note.type, note.content, JSON.stringify(note.keywords), Math.max(0, Math.min(1, note.confidence ?? 0.5)), Math.max(0, Math.min(2, note.priority ?? 0)), note.threadId ?? null, note.isGuardrail ? 1 : 0, note.pinned ? 1 : 0, jsonOrNull(note.sourceEpisodes), jsonOrNull(note.linkedNotes), note.linkReasons ? JSON.stringify(note.linkReasons) : null, now, qualityScore, now, now);
101
115
  // Update topic index for each keyword
102
- updateTopicIndexForKeywords(db, note.keywords, "semantic");
116
+ updateTopicIndexForKeywords(db, note.keywords);
103
117
  return id;
104
118
  }
105
119
  export function searchSemanticNotes(db, query, options) {
@@ -447,7 +461,7 @@ export function archiveNotesForThread(db, threadId) {
447
461
  for (const note of notes) {
448
462
  expireStmt.run(now, now, note.noteId);
449
463
  if (note.keywords.length > 0) {
450
- decrementTopicIndexForKeywords(db, note.keywords, "semantic");
464
+ decrementTopicIndexForKeywords(db, note.keywords);
451
465
  }
452
466
  }
453
467
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../src/data/memory/semantic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../src/data/memory/semantic.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,16 @@
1
1
  /**
2
- * Thread Synthesis
3
- *
4
- * When a ghost thread exits, harvests its key outcomes (episodes + notes)
5
- * and synthesizes them back into the parent thread's memory.
6
- *
7
- * This ensures the parent thread stays aware of what ghost threads
8
- * accomplished without having to carry the full conversation context.
2
+ * Thread Memory — fork memory from source to branch threads.
9
3
  */
10
4
  import type { Database } from "./schema.js";
11
- interface SynthesisResult {
12
- synthesizedNotes: number;
13
- synthesizedEpisode: boolean;
14
- ghostEpisodesRead: number;
15
- ghostNotesRead: number;
16
- error?: string;
17
- }
18
- /**
19
- * Synthesize a ghost thread's outcomes into the parent thread's memory.
20
- *
21
- * Called when a ghost thread exits (from the child.on("exit") handler).
22
- * Reads the ghost's episodes and notes, generates a synthesis via LLM,
23
- * and inserts the results as notes/episodes in the parent thread.
24
- */
25
- export declare function synthesizeGhostMemory(db: Database, ghostThreadId: number, parentThreadId: number, ghostName?: string): Promise<SynthesisResult>;
26
5
  /**
27
6
  * Fork memory from a source thread to a new branch thread.
28
- * Copies semantic_notes and temporal_narratives (not episodes those are session-specific).
7
+ * Copies active (non-superseded, non-expired) semantic_notes with new IDs,
8
+ * remaps linked_notes references, copies note_embeddings, and copies
9
+ * temporal_narratives. Wrapped in a single transaction for atomicity.
29
10
  * Returns the number of items copied.
30
11
  */
31
12
  export declare function forkMemory(db: Database, sourceThreadId: number, targetThreadId: number): {
32
13
  notesCopied: number;
33
14
  narrativesCopied: number;
34
15
  };
35
- export {};
36
16
  //# sourceMappingURL=synthesis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"synthesis.d.ts","sourceRoot":"","sources":["../../../src/data/memory/synthesis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQ5C,UAAU,eAAe;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0GD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,QAAQ,EACZ,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CA2E1B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,EACZ,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,GACrB;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAgCnD"}
1
+ {"version":3,"file":"synthesis.d.ts","sourceRoot":"","sources":["../../../src/data/memory/synthesis.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,EACZ,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,GACrB;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAsHnD"}
@@ -1,199 +1,85 @@
1
1
  /**
2
- * Thread Synthesis
3
- *
4
- * When a ghost thread exits, harvests its key outcomes (episodes + notes)
5
- * and synthesizes them back into the parent thread's memory.
6
- *
7
- * This ensures the parent thread stays aware of what ghost threads
8
- * accomplished without having to carry the full conversation context.
2
+ * Thread Memory — fork memory from source to branch threads.
9
3
  */
10
- import { getRecentEpisodes, saveEpisode } from "./episodes.js";
11
- import { getTopSemanticNotes, saveSemanticNote } from "./semantic.js";
12
- import { chatCompletion } from "../../integrations/openai/chat.js";
13
- import { errorMessage } from "../../utils.js";
14
- // ─── Constants ───────────────────────────────────────────────────────────────
15
- const SYNTHESIS_MODEL = process.env.SYNTHESIS_MODEL || process.env.CONSOLIDATION_MODEL || "gpt-4o-mini";
16
- /** Max episodes to read from ghost thread */
17
- const MAX_GHOST_EPISODES = 50;
18
- /** Max notes to read from ghost thread */
19
- const MAX_GHOST_NOTES = 20;
20
- // ─── Helpers ─────────────────────────────────────────────────────────────────
21
- function extractText(content) {
22
- return (content.text || content.caption || content.message || "").trim();
23
- }
24
- function formatGhostEpisodes(episodes) {
25
- return episodes
26
- .map((ep) => {
27
- const text = extractText(ep.content);
28
- if (!text)
29
- return null;
30
- const ts = ep.timestamp.slice(0, 16).replace("T", " ");
31
- return `[${ts}] (${ep.type}) ${text.slice(0, 300)}`;
32
- })
33
- .filter(Boolean)
34
- .join("\n");
35
- }
36
- function formatGhostNotes(notes) {
37
- return notes
38
- .map((n) => `- [${n.type}] ${n.content.slice(0, 200)}`)
39
- .join("\n");
40
- }
41
- // ─── LLM Synthesis ───────────────────────────────────────────────────────────
42
- async function generateSynthesis(ghostEpisodesText, ghostNotesText, ghostName, apiKey) {
43
- const prompt = `You are a memory synthesis agent. A ghost thread named "${ghostName}" has finished its work. Synthesize its outcomes into the parent thread's memory.
44
-
45
- SOURCE DATA:
46
-
47
- === Ghost Thread Episodes ===
48
- ${ghostEpisodesText || "(no episodes)"}
49
-
50
- === Ghost Thread Notes ===
51
- ${ghostNotesText || "(no notes)"}
52
-
53
- OUTPUT (JSON):
54
- {
55
- "summary": "A 1-2 sentence summary of what the ghost thread accomplished. Past tense. Concrete outcomes.",
56
- "keyFacts": [
57
- {
58
- "type": "fact",
59
- "content": "One clear sentence about a key outcome or decision",
60
- "keywords": ["keyword1", "keyword2"],
61
- "confidence": 0.8
62
- }
63
- ]
64
- }
65
-
66
- RULES:
67
- - summary: what was done, what was the outcome
68
- - keyFacts: max 5, only genuinely important outcomes that the parent thread needs to know
69
- - Skip trivial details — focus on decisions, created artifacts, resolved issues
70
- - If the ghost thread accomplished nothing notable, return empty keyFacts
71
- - Return valid JSON only`;
72
- const response = await chatCompletion([{ role: "user", content: prompt }], apiKey, { model: SYNTHESIS_MODEL, temperature: 0.2, maxTokens: 500 });
73
- const fallback = {
74
- summary: `Ghost thread "${ghostName}" completed its work.`,
75
- keyFacts: [],
76
- };
77
- try {
78
- // Handle potential markdown fences
79
- const cleaned = response
80
- .replace(/```json\s*/g, "")
81
- .replace(/```\s*/g, "")
82
- .trim();
83
- const parsed = JSON.parse(cleaned);
84
- // Validate LLM response shape
85
- if (typeof parsed.summary !== "string" || !Array.isArray(parsed.keyFacts)) {
86
- return fallback;
87
- }
88
- return parsed;
89
- }
90
- catch {
91
- return fallback;
92
- }
93
- }
94
- // ─── Public API ──────────────────────────────────────────────────────────────
95
- /**
96
- * Synthesize a ghost thread's outcomes into the parent thread's memory.
97
- *
98
- * Called when a ghost thread exits (from the child.on("exit") handler).
99
- * Reads the ghost's episodes and notes, generates a synthesis via LLM,
100
- * and inserts the results as notes/episodes in the parent thread.
101
- */
102
- export async function synthesizeGhostMemory(db, ghostThreadId, parentThreadId, ghostName) {
103
- const result = {
104
- synthesizedNotes: 0,
105
- synthesizedEpisode: false,
106
- ghostEpisodesRead: 0,
107
- ghostNotesRead: 0,
108
- };
109
- const apiKey = process.env.OPENAI_API_KEY;
110
- if (!apiKey) {
111
- result.error = "No OPENAI_API_KEY";
112
- return result;
113
- }
114
- try {
115
- // Harvest ghost thread data
116
- const episodes = getRecentEpisodes(db, ghostThreadId, MAX_GHOST_EPISODES);
117
- const notes = getTopSemanticNotes(db, {
118
- limit: MAX_GHOST_NOTES,
119
- sortBy: "created_at",
120
- threadId: ghostThreadId,
121
- });
122
- result.ghostEpisodesRead = episodes.length;
123
- result.ghostNotesRead = notes.length;
124
- // Skip if ghost did very little
125
- if (episodes.length < 2 && notes.length === 0) {
126
- return result;
127
- }
128
- const episodesText = formatGhostEpisodes(episodes);
129
- const notesText = formatGhostNotes(notes);
130
- const name = ghostName || `thread-${ghostThreadId}`;
131
- // Generate synthesis
132
- const synthesis = await generateSynthesis(episodesText, notesText, name, apiKey);
133
- // Save synthesis summary as an episode in parent thread
134
- if (synthesis.summary) {
135
- saveEpisode(db, {
136
- sessionId: `synthesis-${ghostThreadId}`,
137
- threadId: parentThreadId,
138
- type: "system_event",
139
- modality: "text",
140
- content: {
141
- text: `[THREAD SYNTHESIS] Ghost thread "${name}" (thread ${ghostThreadId}) completed: ${synthesis.summary}`,
142
- },
143
- topicTags: ["thread-synthesis", name],
144
- importance: 0.7,
145
- });
146
- result.synthesizedEpisode = true;
147
- }
148
- // Save key facts as semantic notes in parent thread
149
- const VALID_NOTE_TYPES = new Set(["fact", "preference", "pattern", "entity", "relationship"]);
150
- for (const fact of synthesis.keyFacts) {
151
- const noteType = VALID_NOTE_TYPES.has(fact.type) ? fact.type : "fact";
152
- saveSemanticNote(db, {
153
- type: noteType,
154
- content: `[From ghost thread "${name}"] ${fact.content}`,
155
- keywords: [...(fact.keywords || []), "thread-synthesis", name],
156
- confidence: fact.confidence || 0.7,
157
- sourceEpisodes: [],
158
- threadId: parentThreadId,
159
- });
160
- result.synthesizedNotes++;
161
- }
162
- }
163
- catch (err) {
164
- result.error = errorMessage(err);
165
- }
166
- return result;
167
- }
4
+ import { randomBytes } from "node:crypto";
168
5
  /**
169
6
  * Fork memory from a source thread to a new branch thread.
170
- * Copies semantic_notes and temporal_narratives (not episodes those are session-specific).
7
+ * Copies active (non-superseded, non-expired) semantic_notes with new IDs,
8
+ * remaps linked_notes references, copies note_embeddings, and copies
9
+ * temporal_narratives. Wrapped in a single transaction for atomicity.
171
10
  * Returns the number of items copied.
172
11
  */
173
12
  export function forkMemory(db, sourceThreadId, targetThreadId) {
174
- const now = new Date().toISOString();
175
- // Copy semantic notes (generate new IDs)
176
- const notes = db.prepare(`INSERT INTO semantic_notes (
177
- note_id, type, content, keywords, confidence, source_episodes, linked_notes, link_reasons,
178
- valid_from, valid_to, superseded_by, access_count, last_accessed, priority, thread_id,
179
- is_guardrail, pinned, created_at, updated_at
180
- )
181
- SELECT
182
- 'sn_' || lower(hex(randomblob(6))), type, content, keywords, confidence, source_episodes, linked_notes, link_reasons,
183
- valid_from, valid_to, superseded_by, 0, NULL, priority, ?,
184
- is_guardrail, pinned, ?, ?
185
- FROM semantic_notes WHERE thread_id = ?`).run(targetThreadId, now, now, sourceThreadId);
186
- // Copy temporal narratives
187
- const narratives = db.prepare(`INSERT OR IGNORE INTO temporal_narratives (
188
- thread_id, resolution, period_start, period_end, narrative,
189
- source_episode_count, source_note_count, model, created_at
190
- )
191
- SELECT ?, resolution, period_start, period_end, narrative,
192
- source_episode_count, source_note_count, model, ?
193
- FROM temporal_narratives WHERE thread_id = ?`).run(targetThreadId, now, sourceThreadId);
194
- return {
195
- notesCopied: notes.changes,
196
- narrativesCopied: narratives.changes,
197
- };
13
+ return db.transaction(() => {
14
+ const now = new Date().toISOString();
15
+ // 1. Select only active notes (no superseded, no expired)
16
+ const sourceNotes = db.prepare(`SELECT note_id, type, content, keywords, confidence, source_episodes, linked_notes, link_reasons,
17
+ valid_from, priority, is_guardrail, pinned, quality_score
18
+ FROM semantic_notes
19
+ WHERE thread_id = ? AND superseded_by IS NULL AND valid_to IS NULL`).all(sourceThreadId);
20
+ // 2. Build old -> new ID mapping
21
+ const idMap = new Map();
22
+ for (const note of sourceNotes) {
23
+ idMap.set(note.note_id, "sn_" + randomBytes(6).toString("hex"));
24
+ }
25
+ // 3. Remap linked_notes array and link_reasons keys to use new IDs
26
+ function remapLinkedNotes(linkedNotes) {
27
+ if (!linkedNotes)
28
+ return linkedNotes;
29
+ try {
30
+ const ids = JSON.parse(linkedNotes);
31
+ return JSON.stringify(ids.map((id) => idMap.get(id) ?? id));
32
+ }
33
+ catch {
34
+ return linkedNotes;
35
+ }
36
+ }
37
+ function remapLinkReasons(linkReasons) {
38
+ if (!linkReasons)
39
+ return linkReasons;
40
+ try {
41
+ const reasons = JSON.parse(linkReasons);
42
+ const remapped = {};
43
+ for (const [oldId, reason] of Object.entries(reasons)) {
44
+ remapped[idMap.get(oldId) ?? oldId] = reason;
45
+ }
46
+ return JSON.stringify(remapped);
47
+ }
48
+ catch {
49
+ return linkReasons;
50
+ }
51
+ }
52
+ // 4. Insert notes with new IDs
53
+ const insertNote = db.prepare(`INSERT INTO semantic_notes (
54
+ note_id, type, content, keywords, confidence, source_episodes, linked_notes, link_reasons,
55
+ valid_from, valid_to, superseded_by, access_count, last_accessed, priority, thread_id,
56
+ is_guardrail, pinned, quality_score, created_at, updated_at
57
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, NULL, 0, NULL, ?, ?, ?, ?, ?, ?, ?)`);
58
+ for (const note of sourceNotes) {
59
+ insertNote.run(idMap.get(note.note_id), note.type, note.content, note.keywords, note.confidence, note.source_episodes, remapLinkedNotes(note.linked_notes), remapLinkReasons(note.link_reasons), note.valid_from, note.priority, targetThreadId, note.is_guardrail, note.pinned, note.quality_score, now, now);
60
+ }
61
+ // 5. Copy embeddings using ID mapping
62
+ if (sourceNotes.length > 0) {
63
+ const oldIds = sourceNotes.map((n) => n.note_id);
64
+ const placeholders = oldIds.map(() => "?").join(",");
65
+ const embedRows = db.prepare(`SELECT note_id, embedding, model, created_at FROM note_embeddings WHERE note_id IN (${placeholders})`).all(...oldIds);
66
+ const insertEmb = db.prepare(`INSERT OR REPLACE INTO note_embeddings (note_id, embedding, model, created_at) VALUES (?, ?, ?, ?)`);
67
+ for (const row of embedRows) {
68
+ insertEmb.run(idMap.get(row.note_id), row.embedding, row.model, row.created_at);
69
+ }
70
+ }
71
+ // 6. Copy temporal narratives
72
+ const narratives = db.prepare(`INSERT OR IGNORE INTO temporal_narratives (
73
+ thread_id, resolution, period_start, period_end, narrative,
74
+ source_episode_count, source_note_count, model, created_at
75
+ )
76
+ SELECT ?, resolution, period_start, period_end, narrative,
77
+ source_episode_count, source_note_count, model, ?
78
+ FROM temporal_narratives WHERE thread_id = ?`).run(targetThreadId, now, sourceThreadId);
79
+ return {
80
+ notesCopied: sourceNotes.length,
81
+ narrativesCopied: narratives.changes,
82
+ };
83
+ })();
198
84
  }
199
85
  //# sourceMappingURL=synthesis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"synthesis.js","sourceRoot":"","sources":["../../../src/data/memory/synthesis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"synthesis.js","sourceRoot":"","sources":["../../../src/data/memory/synthesis.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,7 @@ type RegisterThreadEntry = {
37
37
  maxRetries?: number;
38
38
  cooldownMs?: number;
39
39
  keepAlive?: boolean;
40
+ dailyRotation?: boolean;
40
41
  workingDirectory?: string;
41
42
  };
42
43
  type UpdateThreadPatch = Partial<Pick<ThreadRegistryEntry, "name" | "status" | "lastActiveAt" | "keepAlive" | "dailyRotation" | "autonomousMode" | "client" | "maxRetries" | "cooldownMs" | "badge" | "telegramTopicId" | "identityPrompt" | "workingDirectory">>;
@@ -62,6 +63,12 @@ export declare function getDashboardThreads(db: Database): ThreadRegistryEntry[]
62
63
  export declare function updateThread(db: Database, threadId: number, updates: UpdateThreadPatch): boolean;
63
64
  export declare function archiveThread(db: Database, threadId: number): boolean;
64
65
  export declare function deleteThread(db: Database, threadId: number): boolean;
66
+ /**
67
+ * Purge archived threads older than `maxAgeMs` (default 180 days).
68
+ * Deletes the thread's associated data and registry entry.
69
+ * Returns the number of threads purged.
70
+ */
71
+ export declare function purgeOldArchivedThreads(db: Database, maxAgeMs?: number): number;
65
72
  /**
66
73
  * Reset the daily session timestamp for a thread.
67
74
  * Sets session_reset_at = now, used by bootstrap to filter the message buffer.
@@ -1 +1 @@
1
- {"version":3,"file":"thread-registry.d.ts","sourceRoot":"","sources":["../../../src/data/memory/thread-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thread-registry.d.ts","sourceRoot":"","sources":["../../../src/data/memory/thread-registry.ts"],"names":[],"mappings":"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"}
@@ -53,9 +53,10 @@ function rowToEntry(row) {
53
53
  // ─── CRUD ────────────────────────────────────────────────────────────────────
54
54
  export function registerThread(db, entry) {
55
55
  const now = nowISO();
56
+ const dailyRotation = entry.dailyRotation ?? (entry.type === "root");
56
57
  db.prepare(`INSERT INTO thread_registry
57
- (thread_id, name, type, root_thread_id, badge, client, max_retries, cooldown_ms, keep_alive, working_directory, created_at, last_active_at, status)
58
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'active')
58
+ (thread_id, name, type, root_thread_id, badge, client, max_retries, cooldown_ms, keep_alive, daily_rotation, working_directory, created_at, last_active_at, status)
59
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'active')
59
60
  ON CONFLICT(thread_id) DO UPDATE SET
60
61
  name = excluded.name,
61
62
  type = CASE WHEN thread_registry.keep_alive = 1 THEN thread_registry.type ELSE excluded.type END,
@@ -65,9 +66,10 @@ export function registerThread(db, entry) {
65
66
  max_retries = excluded.max_retries,
66
67
  cooldown_ms = excluded.cooldown_ms,
67
68
  keep_alive = CASE WHEN thread_registry.keep_alive = 1 THEN 1 ELSE excluded.keep_alive END,
69
+ daily_rotation = CASE WHEN thread_registry.keep_alive = 1 THEN thread_registry.daily_rotation ELSE excluded.daily_rotation END,
68
70
  working_directory = COALESCE(excluded.working_directory, thread_registry.working_directory),
69
71
  last_active_at = excluded.last_active_at,
70
- status = 'active'`).run(entry.threadId, entry.name, entry.type, entry.rootThreadId ?? null, entry.badge ?? 'root', entry.client ?? 'claude', entry.maxRetries ?? 5, entry.cooldownMs ?? 300000, entry.keepAlive ? 1 : 0, entry.workingDirectory ?? null, now, now);
72
+ status = 'active'`).run(entry.threadId, entry.name, entry.type, entry.rootThreadId ?? null, entry.badge ?? 'root', entry.client ?? 'claude', entry.maxRetries ?? 5, entry.cooldownMs ?? 300000, entry.keepAlive ? 1 : 0, dailyRotation ? 1 : 0, entry.workingDirectory ?? null, now, now);
71
73
  const result = getThread(db, entry.threadId);
72
74
  if (!result) {
73
75
  throw new Error(`registerThread: failed to retrieve thread after insert (threadId=${entry.threadId})`);
@@ -176,6 +178,39 @@ export function deleteThread(db, threadId) {
176
178
  const result = db.prepare(`DELETE FROM thread_registry WHERE thread_id = ?`).run(threadId);
177
179
  return result.changes > 0;
178
180
  }
181
+ /**
182
+ * Purge archived threads older than `maxAgeMs` (default 180 days).
183
+ * Deletes the thread's associated data and registry entry.
184
+ * Returns the number of threads purged.
185
+ */
186
+ export function purgeOldArchivedThreads(db, maxAgeMs = 180 * 24 * 60 * 60 * 1000) {
187
+ const cutoff = new Date(Date.now() - maxAgeMs).toISOString();
188
+ const rows = db.prepare(`SELECT thread_id FROM thread_registry
189
+ WHERE status = 'archived' AND last_active_at < ?`).all(cutoff);
190
+ if (rows.length === 0)
191
+ return 0;
192
+ const deleteEmbeddings = db.prepare(`DELETE FROM note_embeddings WHERE note_id IN (SELECT note_id FROM semantic_notes WHERE thread_id = ?)`);
193
+ const deleteNarratives = db.prepare(`DELETE FROM temporal_narratives WHERE thread_id = ?`);
194
+ const deleteVoiceSignatures = db.prepare(`DELETE FROM voice_signatures WHERE episode_id IN (SELECT episode_id FROM episodes WHERE thread_id = ?)`);
195
+ const deleteNotes = db.prepare(`DELETE FROM semantic_notes WHERE thread_id = ?`);
196
+ const deleteEpisodes = db.prepare(`DELETE FROM episodes WHERE thread_id = ?`);
197
+ const deleteSentMessages = db.prepare(`DELETE FROM sent_messages WHERE thread_id = ?`);
198
+ const deleteTopicRegistry = db.prepare(`DELETE FROM topic_registry WHERE thread_id = ?`);
199
+ const deleteRegistry = db.prepare(`DELETE FROM thread_registry WHERE thread_id = ?`);
200
+ db.transaction(() => {
201
+ for (const { thread_id } of rows) {
202
+ deleteEmbeddings.run(thread_id);
203
+ deleteNarratives.run(thread_id);
204
+ deleteVoiceSignatures.run(thread_id);
205
+ deleteNotes.run(thread_id);
206
+ deleteEpisodes.run(thread_id);
207
+ deleteSentMessages.run(thread_id);
208
+ deleteTopicRegistry.run(thread_id);
209
+ deleteRegistry.run(thread_id);
210
+ }
211
+ })();
212
+ return rows.length;
213
+ }
179
214
  /**
180
215
  * Reset the daily session timestamp for a thread.
181
216
  * Sets session_reset_at = now, used by bootstrap to filter the message buffer.