agent-recall-mcp 3.3.2 → 3.3.4

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 (152) hide show
  1. package/dist/index.js +6 -13
  2. package/dist/index.js.map +1 -1
  3. package/dist/resources/journal-resources.d.ts.map +1 -1
  4. package/dist/resources/journal-resources.js +5 -29
  5. package/dist/resources/journal-resources.js.map +1 -1
  6. package/dist/server.js +1 -1
  7. package/dist/server.js.map +1 -1
  8. package/dist/tools/alignment-check.d.ts.map +1 -1
  9. package/dist/tools/alignment-check.js +3 -54
  10. package/dist/tools/alignment-check.js.map +1 -1
  11. package/dist/tools/awareness-update.d.ts +2 -8
  12. package/dist/tools/awareness-update.d.ts.map +1 -1
  13. package/dist/tools/awareness-update.js +3 -66
  14. package/dist/tools/awareness-update.js.map +1 -1
  15. package/dist/tools/context-synthesize.d.ts.map +1 -1
  16. package/dist/tools/context-synthesize.js +6 -187
  17. package/dist/tools/context-synthesize.js.map +1 -1
  18. package/dist/tools/journal-archive.d.ts.map +1 -1
  19. package/dist/tools/journal-archive.js +3 -48
  20. package/dist/tools/journal-archive.js.map +1 -1
  21. package/dist/tools/journal-capture.d.ts.map +1 -1
  22. package/dist/tools/journal-capture.js +3 -60
  23. package/dist/tools/journal-capture.js.map +1 -1
  24. package/dist/tools/journal-cold-start.d.ts.map +1 -1
  25. package/dist/tools/journal-cold-start.js +10 -52
  26. package/dist/tools/journal-cold-start.js.map +1 -1
  27. package/dist/tools/journal-list.d.ts.map +1 -1
  28. package/dist/tools/journal-list.js +3 -23
  29. package/dist/tools/journal-list.js.map +1 -1
  30. package/dist/tools/journal-projects.d.ts.map +1 -1
  31. package/dist/tools/journal-projects.js +3 -16
  32. package/dist/tools/journal-projects.js.map +1 -1
  33. package/dist/tools/journal-read.d.ts.map +1 -1
  34. package/dist/tools/journal-read.js +5 -45
  35. package/dist/tools/journal-read.js.map +1 -1
  36. package/dist/tools/journal-rollup.d.ts +3 -0
  37. package/dist/tools/journal-rollup.d.ts.map +1 -0
  38. package/dist/tools/journal-rollup.js +21 -0
  39. package/dist/tools/journal-rollup.js.map +1 -0
  40. package/dist/tools/journal-search.d.ts.map +1 -1
  41. package/dist/tools/journal-search.js +3 -91
  42. package/dist/tools/journal-search.js.map +1 -1
  43. package/dist/tools/journal-state.d.ts +0 -3
  44. package/dist/tools/journal-state.d.ts.map +1 -1
  45. package/dist/tools/journal-state.js +5 -93
  46. package/dist/tools/journal-state.js.map +1 -1
  47. package/dist/tools/journal-write.d.ts.map +1 -1
  48. package/dist/tools/journal-write.js +3 -62
  49. package/dist/tools/journal-write.js.map +1 -1
  50. package/dist/tools/knowledge-read.d.ts.map +1 -1
  51. package/dist/tools/knowledge-read.js +3 -100
  52. package/dist/tools/knowledge-read.js.map +1 -1
  53. package/dist/tools/knowledge-write.d.ts.map +1 -1
  54. package/dist/tools/knowledge-write.js +3 -66
  55. package/dist/tools/knowledge-write.js.map +1 -1
  56. package/dist/tools/nudge.d.ts.map +1 -1
  57. package/dist/tools/nudge.js +3 -25
  58. package/dist/tools/nudge.js.map +1 -1
  59. package/dist/tools/palace-lint.d.ts +2 -6
  60. package/dist/tools/palace-lint.d.ts.map +1 -1
  61. package/dist/tools/palace-lint.js +3 -135
  62. package/dist/tools/palace-lint.js.map +1 -1
  63. package/dist/tools/palace-read.d.ts +2 -5
  64. package/dist/tools/palace-read.d.ts.map +1 -1
  65. package/dist/tools/palace-read.js +5 -62
  66. package/dist/tools/palace-read.js.map +1 -1
  67. package/dist/tools/palace-search.d.ts +2 -5
  68. package/dist/tools/palace-search.d.ts.map +1 -1
  69. package/dist/tools/palace-search.js +3 -66
  70. package/dist/tools/palace-search.js.map +1 -1
  71. package/dist/tools/palace-walk.d.ts +2 -11
  72. package/dist/tools/palace-walk.d.ts.map +1 -1
  73. package/dist/tools/palace-walk.js +3 -149
  74. package/dist/tools/palace-walk.js.map +1 -1
  75. package/dist/tools/palace-write.d.ts +2 -5
  76. package/dist/tools/palace-write.d.ts.map +1 -1
  77. package/dist/tools/palace-write.js +3 -90
  78. package/dist/tools/palace-write.js.map +1 -1
  79. package/dist/tools/recall-insight.d.ts +2 -8
  80. package/dist/tools/recall-insight.d.ts.map +1 -1
  81. package/dist/tools/recall-insight.js +3 -35
  82. package/dist/tools/recall-insight.js.map +1 -1
  83. package/package.json +9 -46
  84. package/README.md +0 -435
  85. package/dist/helpers/journal-files.d.ts +0 -30
  86. package/dist/helpers/journal-files.d.ts.map +0 -1
  87. package/dist/helpers/journal-files.js +0 -96
  88. package/dist/helpers/journal-files.js.map +0 -1
  89. package/dist/helpers/sections.d.ts +0 -12
  90. package/dist/helpers/sections.d.ts.map +0 -1
  91. package/dist/helpers/sections.js +0 -84
  92. package/dist/helpers/sections.js.map +0 -1
  93. package/dist/palace/awareness.d.ts +0 -67
  94. package/dist/palace/awareness.d.ts.map +0 -1
  95. package/dist/palace/awareness.js +0 -231
  96. package/dist/palace/awareness.js.map +0 -1
  97. package/dist/palace/consolidate.d.ts +0 -28
  98. package/dist/palace/consolidate.d.ts.map +0 -1
  99. package/dist/palace/consolidate.js +0 -129
  100. package/dist/palace/consolidate.js.map +0 -1
  101. package/dist/palace/fan-out.d.ts +0 -15
  102. package/dist/palace/fan-out.d.ts.map +0 -1
  103. package/dist/palace/fan-out.js +0 -78
  104. package/dist/palace/fan-out.js.map +0 -1
  105. package/dist/palace/graph.d.ts +0 -11
  106. package/dist/palace/graph.d.ts.map +0 -1
  107. package/dist/palace/graph.js +0 -59
  108. package/dist/palace/graph.js.map +0 -1
  109. package/dist/palace/identity.d.ts +0 -6
  110. package/dist/palace/identity.d.ts.map +0 -1
  111. package/dist/palace/identity.js +0 -18
  112. package/dist/palace/identity.js.map +0 -1
  113. package/dist/palace/index-manager.d.ts +0 -7
  114. package/dist/palace/index-manager.d.ts.map +0 -1
  115. package/dist/palace/index-manager.js +0 -46
  116. package/dist/palace/index-manager.js.map +0 -1
  117. package/dist/palace/insights-index.d.ts +0 -39
  118. package/dist/palace/insights-index.d.ts.map +0 -1
  119. package/dist/palace/insights-index.js +0 -101
  120. package/dist/palace/insights-index.js.map +0 -1
  121. package/dist/palace/log.d.ts +0 -9
  122. package/dist/palace/log.d.ts.map +0 -1
  123. package/dist/palace/log.js +0 -28
  124. package/dist/palace/log.js.map +0 -1
  125. package/dist/palace/obsidian.d.ts +0 -12
  126. package/dist/palace/obsidian.d.ts.map +0 -1
  127. package/dist/palace/obsidian.js +0 -76
  128. package/dist/palace/obsidian.js.map +0 -1
  129. package/dist/palace/rooms.d.ts +0 -14
  130. package/dist/palace/rooms.d.ts.map +0 -1
  131. package/dist/palace/rooms.js +0 -117
  132. package/dist/palace/rooms.js.map +0 -1
  133. package/dist/palace/salience.d.ts +0 -15
  134. package/dist/palace/salience.d.ts.map +0 -1
  135. package/dist/palace/salience.js +0 -33
  136. package/dist/palace/salience.js.map +0 -1
  137. package/dist/storage/fs-utils.d.ts +0 -8
  138. package/dist/storage/fs-utils.d.ts.map +0 -1
  139. package/dist/storage/fs-utils.js +0 -28
  140. package/dist/storage/fs-utils.js.map +0 -1
  141. package/dist/storage/paths.d.ts +0 -21
  142. package/dist/storage/paths.d.ts.map +0 -1
  143. package/dist/storage/paths.js +0 -59
  144. package/dist/storage/paths.js.map +0 -1
  145. package/dist/storage/project.d.ts +0 -17
  146. package/dist/storage/project.d.ts.map +0 -1
  147. package/dist/storage/project.js +0 -130
  148. package/dist/storage/project.js.map +0 -1
  149. package/dist/types.d.ts +0 -112
  150. package/dist/types.d.ts.map +0 -1
  151. package/dist/types.js +0 -31
  152. package/dist/types.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"sections.js","sourceRoot":"","sources":["../../src/helpers/sections.ts"],"names":[],"mappings":"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"}
@@ -1,67 +0,0 @@
1
- /**
2
- * Awareness system — a living 200-line document that compounds insights.
3
- *
4
- * Unlike the palace (room-based storage) or journal (temporal log),
5
- * awareness.md is a SELF-REWRITING document. Every update forces the
6
- * system to merge, compress, or demote — creating compounding knowledge.
7
- *
8
- * Structure:
9
- * ## Identity (5 lines) — who is the user, what matters
10
- * ## Top Insights (10 items) — ranked by relevance + confirmation count
11
- * ## Compound Insights (5 max) — patterns spanning 3+ individual insights
12
- * ## Trajectory (3 lines) — where is the work heading
13
- * ## Blind Spots (3 lines) — what the system suspects matters but hasn't confirmed
14
- *
15
- * Max 200 lines enforced. Overflow triggers merge/demote.
16
- */
17
- export declare function readAwareness(): string;
18
- export declare function writeAwareness(content: string): void;
19
- export interface Insight {
20
- id: string;
21
- title: string;
22
- evidence: string;
23
- confirmations: number;
24
- lastConfirmed: string;
25
- appliesWhen: string[];
26
- source: string;
27
- }
28
- export interface CompoundInsight {
29
- id: string;
30
- title: string;
31
- sourceInsights: string[];
32
- pattern: string;
33
- confidence: number;
34
- }
35
- export interface AwarenessState {
36
- identity: string;
37
- topInsights: Insight[];
38
- compoundInsights: CompoundInsight[];
39
- trajectory: string;
40
- blindSpots: string[];
41
- lastUpdated: string;
42
- }
43
- export declare function readAwarenessState(): AwarenessState | null;
44
- export declare function writeAwarenessState(state: AwarenessState): void;
45
- /**
46
- * Initialize awareness from scratch.
47
- */
48
- export declare function initAwareness(identity: string): AwarenessState;
49
- /**
50
- * Add or merge an insight into the awareness state.
51
- * If similar insight exists (by title keyword overlap), merge and strengthen.
52
- * If new, add and demote lowest if over 10.
53
- */
54
- export declare function addInsight(newInsight: Omit<Insight, "id" | "confirmations" | "lastConfirmed">): {
55
- action: "merged" | "added" | "replaced";
56
- insight: Insight;
57
- };
58
- /**
59
- * Detect compound insights — patterns spanning 3+ individual insights.
60
- * Looks for shared appliesWhen keywords across insights.
61
- */
62
- export declare function detectCompoundInsights(): CompoundInsight[];
63
- /**
64
- * Render awareness state into the 200-line markdown document.
65
- */
66
- export declare function renderAwareness(state: AwarenessState): void;
67
- //# sourceMappingURL=awareness.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"awareness.d.ts","sourceRoot":"","sources":["../../src/palace/awareness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAaH,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAYpD;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,EAAE,CAAC;IACvB,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,wBAAgB,kBAAkB,IAAI,cAAc,GAAG,IAAI,CAQ1D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAI/D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAY9D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,eAAe,GAAG,eAAe,CAAC,GAClE;IAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAgE/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,EAAE,CAsC1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAoD3D"}
@@ -1,231 +0,0 @@
1
- /**
2
- * Awareness system — a living 200-line document that compounds insights.
3
- *
4
- * Unlike the palace (room-based storage) or journal (temporal log),
5
- * awareness.md is a SELF-REWRITING document. Every update forces the
6
- * system to merge, compress, or demote — creating compounding knowledge.
7
- *
8
- * Structure:
9
- * ## Identity (5 lines) — who is the user, what matters
10
- * ## Top Insights (10 items) — ranked by relevance + confirmation count
11
- * ## Compound Insights (5 max) — patterns spanning 3+ individual insights
12
- * ## Trajectory (3 lines) — where is the work heading
13
- * ## Blind Spots (3 lines) — what the system suspects matters but hasn't confirmed
14
- *
15
- * Max 200 lines enforced. Overflow triggers merge/demote.
16
- */
17
- import * as fs from "node:fs";
18
- import * as path from "node:path";
19
- import { JOURNAL_ROOT } from "../types.js";
20
- import { ensureDir } from "../storage/fs-utils.js";
21
- const MAX_LINES = 200;
22
- function awarenessPath() {
23
- return path.join(JOURNAL_ROOT, "awareness.md");
24
- }
25
- export function readAwareness() {
26
- const p = awarenessPath();
27
- if (!fs.existsSync(p))
28
- return "";
29
- return fs.readFileSync(p, "utf-8");
30
- }
31
- export function writeAwareness(content) {
32
- const p = awarenessPath();
33
- ensureDir(path.dirname(p));
34
- // Enforce 200-line max
35
- const lines = content.split("\n");
36
- if (lines.length > MAX_LINES) {
37
- const truncated = lines.slice(0, MAX_LINES).join("\n");
38
- fs.writeFileSync(p, truncated + "\n", "utf-8");
39
- }
40
- else {
41
- fs.writeFileSync(p, content, "utf-8");
42
- }
43
- }
44
- const AWARENESS_JSON_PATH = () => path.join(JOURNAL_ROOT, "awareness-state.json");
45
- export function readAwarenessState() {
46
- const p = AWARENESS_JSON_PATH();
47
- if (!fs.existsSync(p))
48
- return null;
49
- try {
50
- return JSON.parse(fs.readFileSync(p, "utf-8"));
51
- }
52
- catch {
53
- return null;
54
- }
55
- }
56
- export function writeAwarenessState(state) {
57
- const p = AWARENESS_JSON_PATH();
58
- ensureDir(path.dirname(p));
59
- fs.writeFileSync(p, JSON.stringify(state, null, 2), "utf-8");
60
- }
61
- /**
62
- * Initialize awareness from scratch.
63
- */
64
- export function initAwareness(identity) {
65
- const state = {
66
- identity,
67
- topInsights: [],
68
- compoundInsights: [],
69
- trajectory: "",
70
- blindSpots: [],
71
- lastUpdated: new Date().toISOString(),
72
- };
73
- writeAwarenessState(state);
74
- renderAwareness(state);
75
- return state;
76
- }
77
- /**
78
- * Add or merge an insight into the awareness state.
79
- * If similar insight exists (by title keyword overlap), merge and strengthen.
80
- * If new, add and demote lowest if over 10.
81
- */
82
- export function addInsight(newInsight) {
83
- let state = readAwarenessState();
84
- if (!state) {
85
- state = initAwareness("(unknown user)");
86
- }
87
- const now = new Date().toISOString();
88
- const titleWords = newInsight.title.toLowerCase().split(/\s+/);
89
- // Check for similar existing insight (>50% word overlap)
90
- let bestMatch = null;
91
- for (let i = 0; i < state.topInsights.length; i++) {
92
- const existing = state.topInsights[i];
93
- const existingWords = existing.title.toLowerCase().split(/\s+/);
94
- const overlap = titleWords.filter((w) => existingWords.includes(w) && w.length > 3).length;
95
- const ratio = overlap / Math.max(titleWords.length, existingWords.length);
96
- if (ratio > 0.5 && (!bestMatch || ratio > bestMatch.overlap)) {
97
- bestMatch = { idx: i, overlap: ratio };
98
- }
99
- }
100
- if (bestMatch) {
101
- // Merge: strengthen existing insight
102
- const existing = state.topInsights[bestMatch.idx];
103
- existing.confirmations++;
104
- existing.lastConfirmed = now;
105
- existing.evidence += ` | ${newInsight.evidence}`;
106
- // Merge appliesWhen
107
- for (const aw of newInsight.appliesWhen) {
108
- if (!existing.appliesWhen.includes(aw)) {
109
- existing.appliesWhen.push(aw);
110
- }
111
- }
112
- writeAwarenessState(state);
113
- renderAwareness(state);
114
- return { action: "merged", insight: existing };
115
- }
116
- // New insight
117
- const insight = {
118
- id: `insight-${Date.now()}`,
119
- title: newInsight.title,
120
- evidence: newInsight.evidence,
121
- confirmations: 1,
122
- lastConfirmed: now,
123
- appliesWhen: newInsight.appliesWhen,
124
- source: newInsight.source,
125
- };
126
- if (state.topInsights.length < 10) {
127
- state.topInsights.push(insight);
128
- writeAwarenessState(state);
129
- renderAwareness(state);
130
- return { action: "added", insight };
131
- }
132
- // Over 10: replace lowest-confirmation insight
133
- state.topInsights.sort((a, b) => b.confirmations - a.confirmations);
134
- const demoted = state.topInsights.pop();
135
- state.topInsights.push(insight);
136
- writeAwarenessState(state);
137
- renderAwareness(state);
138
- return { action: "replaced", insight };
139
- }
140
- /**
141
- * Detect compound insights — patterns spanning 3+ individual insights.
142
- * Looks for shared appliesWhen keywords across insights.
143
- */
144
- export function detectCompoundInsights() {
145
- const state = readAwarenessState();
146
- if (!state || state.topInsights.length < 3)
147
- return [];
148
- // Group insights by shared appliesWhen keywords
149
- const keywordMap = new Map();
150
- for (const insight of state.topInsights) {
151
- for (const aw of insight.appliesWhen) {
152
- const key = aw.toLowerCase();
153
- if (!keywordMap.has(key))
154
- keywordMap.set(key, []);
155
- keywordMap.get(key).push(insight);
156
- }
157
- }
158
- const compounds = [];
159
- for (const [keyword, insights] of keywordMap) {
160
- if (insights.length >= 3) {
161
- const id = `compound-${keyword}`;
162
- // Don't duplicate
163
- if (state.compoundInsights.some((c) => c.id === id))
164
- continue;
165
- compounds.push({
166
- id,
167
- title: `Pattern: "${keyword}" appears across ${insights.length} insights`,
168
- sourceInsights: insights.map((i) => i.id),
169
- pattern: insights.map((i) => i.title).join(" + "),
170
- confidence: Math.min(1.0, insights.length * 0.25),
171
- });
172
- }
173
- }
174
- if (compounds.length > 0) {
175
- state.compoundInsights = [...state.compoundInsights, ...compounds].slice(0, 5);
176
- writeAwarenessState(state);
177
- renderAwareness(state);
178
- }
179
- return compounds;
180
- }
181
- /**
182
- * Render awareness state into the 200-line markdown document.
183
- */
184
- export function renderAwareness(state) {
185
- const lines = [];
186
- lines.push("# Awareness");
187
- lines.push(`> Last updated: ${state.lastUpdated}`);
188
- lines.push("");
189
- // Identity
190
- lines.push("## Identity");
191
- lines.push(state.identity || "_(not set)_");
192
- lines.push("");
193
- // Top insights (sorted by confirmations)
194
- lines.push("## Top Insights");
195
- lines.push("");
196
- const sorted = [...state.topInsights].sort((a, b) => b.confirmations - a.confirmations);
197
- for (const insight of sorted) {
198
- lines.push(`### ${insight.title} (${insight.confirmations}x confirmed)`);
199
- lines.push(`- Evidence: ${insight.evidence.slice(0, 150)}`);
200
- lines.push(`- Applies when: ${insight.appliesWhen.join(", ")}`);
201
- lines.push(`- Source: ${insight.source} | Last: ${insight.lastConfirmed.slice(0, 10)}`);
202
- lines.push("");
203
- }
204
- // Compound insights
205
- if (state.compoundInsights.length > 0) {
206
- lines.push("## Compound Insights");
207
- lines.push("");
208
- for (const ci of state.compoundInsights) {
209
- lines.push(`### ${ci.title} (confidence: ${ci.confidence.toFixed(2)})`);
210
- lines.push(`- Pattern: ${ci.pattern.slice(0, 200)}`);
211
- lines.push(`- Sources: ${ci.sourceInsights.length} insights`);
212
- lines.push("");
213
- }
214
- }
215
- // Trajectory
216
- lines.push("## Trajectory");
217
- lines.push(state.trajectory || "_(not set — will emerge after 3+ sessions)_");
218
- lines.push("");
219
- // Blind spots
220
- lines.push("## Blind Spots");
221
- if (state.blindSpots.length > 0) {
222
- for (const bs of state.blindSpots) {
223
- lines.push(`- ${bs}`);
224
- }
225
- }
226
- else {
227
- lines.push("_(none detected yet)_");
228
- }
229
- writeAwareness(lines.join("\n"));
230
- }
231
- //# sourceMappingURL=awareness.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"awareness.js","sourceRoot":"","sources":["../../src/palace/awareness.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Memory transformation pipeline: episodic (journal) → semantic (palace).
3
- *
4
- * Inspired by:
5
- * - Karpathy's LLM Wiki: fan-out on ingest, query-as-deposit
6
- * - llm_wiki: two-step ingest (analyze then generate), source traceability
7
- * - Human memory: episodic → semantic consolidation during sleep
8
- *
9
- * This module extracts decisions, goals, blockers, and observations from
10
- * journal entries and consolidates them into palace rooms.
11
- */
12
- export interface ConsolidationResult {
13
- entriesProcessed: number;
14
- roomsUpdated: string[];
15
- memoriesCreated: number;
16
- }
17
- /**
18
- * Consolidate recent journal entries into palace rooms.
19
- *
20
- * Process:
21
- * 1. Read N recent journal entries
22
- * 2. Extract structured content per section type
23
- * 3. Route each to the appropriate palace room
24
- * 4. Add source traceability (which journal entry it came from)
25
- * 5. Trigger fan-out for cross-references
26
- */
27
- export declare function consolidateJournalToPalace(project: string, entryCount?: number): ConsolidationResult;
28
- //# sourceMappingURL=consolidate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consolidate.d.ts","sourceRoot":"","sources":["../../src/palace/consolidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAU,GACrB,mBAAmB,CAqHrB"}
@@ -1,129 +0,0 @@
1
- /**
2
- * Memory transformation pipeline: episodic (journal) → semantic (palace).
3
- *
4
- * Inspired by:
5
- * - Karpathy's LLM Wiki: fan-out on ingest, query-as-deposit
6
- * - llm_wiki: two-step ingest (analyze then generate), source traceability
7
- * - Human memory: episodic → semantic consolidation during sleep
8
- *
9
- * This module extracts decisions, goals, blockers, and observations from
10
- * journal entries and consolidates them into palace rooms.
11
- */
12
- import * as fs from "node:fs";
13
- import * as path from "node:path";
14
- import { palaceDir } from "../storage/paths.js";
15
- import { ensureDir, todayISO } from "../storage/fs-utils.js";
16
- import { listJournalFiles } from "../helpers/journal-files.js";
17
- import { extractSection } from "../helpers/sections.js";
18
- import { ensurePalaceInitialized, roomExists, createRoom, updateRoomMeta } from "./rooms.js";
19
- import { fanOut } from "./fan-out.js";
20
- import { generateFrontmatter } from "./obsidian.js";
21
- import { updatePalaceIndex } from "./index-manager.js";
22
- import { appendToLog } from "./log.js";
23
- /**
24
- * Consolidate recent journal entries into palace rooms.
25
- *
26
- * Process:
27
- * 1. Read N recent journal entries
28
- * 2. Extract structured content per section type
29
- * 3. Route each to the appropriate palace room
30
- * 4. Add source traceability (which journal entry it came from)
31
- * 5. Trigger fan-out for cross-references
32
- */
33
- export function consolidateJournalToPalace(project, entryCount = 5) {
34
- ensurePalaceInitialized(project);
35
- const entries = listJournalFiles(project);
36
- const toProcess = entries.slice(0, entryCount);
37
- const pd = palaceDir(project);
38
- const date = todayISO();
39
- const result = {
40
- entriesProcessed: 0,
41
- roomsUpdated: [],
42
- memoriesCreated: 0,
43
- };
44
- const updatedRooms = new Set();
45
- for (const entry of toProcess) {
46
- const content = fs.readFileSync(path.join(entry.dir, entry.file), "utf-8");
47
- const sourceRef = `[[journal/${entry.date}]]`;
48
- // Extract and route each section type
49
- const routes = [
50
- { section: "decisions", room: "architecture", topic: "decisions" },
51
- { section: "blockers", room: "blockers", topic: "current" },
52
- { section: "next", room: "goals", topic: "active" },
53
- { section: "observations", room: "knowledge", topic: "observations" },
54
- ];
55
- for (const route of routes) {
56
- const sectionContent = extractSection(content, route.section);
57
- if (!sectionContent || sectionContent.trim().length < 10)
58
- continue;
59
- // Ensure room exists
60
- if (!roomExists(project, route.room)) {
61
- const name = route.room.charAt(0).toUpperCase() + route.room.slice(1);
62
- createRoom(project, route.room, name, `Consolidated from journal ${route.section}`, []);
63
- }
64
- const topicPath = path.join(pd, "rooms", route.room, `${route.topic}.md`);
65
- ensureDir(path.dirname(topicPath));
66
- // Build entry with source traceability
67
- const fm = !fs.existsSync(topicPath)
68
- ? generateFrontmatter({
69
- room: route.room,
70
- topic: route.topic,
71
- created: new Date().toISOString(),
72
- source: "consolidation",
73
- sources: [entry.date],
74
- })
75
- : "";
76
- const memoryEntry = `\n### ${entry.date} ${sourceRef}\n\n${sectionContent.replace(/^## .+\n/, "").trim()}\n`;
77
- if (fs.existsSync(topicPath)) {
78
- // Check if this date's content is already consolidated (idempotent)
79
- const existing = fs.readFileSync(topicPath, "utf-8");
80
- if (existing.includes(`### ${entry.date}`))
81
- continue;
82
- fs.appendFileSync(topicPath, memoryEntry, "utf-8");
83
- }
84
- else {
85
- fs.writeFileSync(topicPath, `${fm}# ${route.room} / ${route.topic}\n${memoryEntry}`, "utf-8");
86
- }
87
- // Update room metadata
88
- updateRoomMeta(project, route.room, {
89
- updated: new Date().toISOString(),
90
- });
91
- updatedRooms.add(route.room);
92
- result.memoriesCreated++;
93
- // Fan-out with source reference
94
- fanOut(project, route.room, route.topic, sectionContent, [], "medium");
95
- }
96
- // Extract brief → goals/evolution
97
- const brief = extractSection(content, "brief");
98
- if (brief && brief.trim().length > 5) {
99
- const evoPath = path.join(pd, "rooms", "goals", "evolution.md");
100
- ensureDir(path.dirname(evoPath));
101
- const evoEntry = `\n### ${entry.date} ${sourceRef}\n\n${brief.split("\n")[0]}\n`;
102
- if (fs.existsSync(evoPath)) {
103
- const existing = fs.readFileSync(evoPath, "utf-8");
104
- if (!existing.includes(`### ${entry.date}`)) {
105
- fs.appendFileSync(evoPath, evoEntry, "utf-8");
106
- result.memoriesCreated++;
107
- }
108
- }
109
- else {
110
- const fm = generateFrontmatter({ room: "goals", topic: "evolution", created: new Date().toISOString(), source: "consolidation" });
111
- fs.writeFileSync(evoPath, `${fm}# goals / evolution\n${evoEntry}`, "utf-8");
112
- result.memoriesCreated++;
113
- }
114
- updatedRooms.add("goals");
115
- }
116
- result.entriesProcessed++;
117
- }
118
- result.roomsUpdated = Array.from(updatedRooms);
119
- // Update palace index
120
- updatePalaceIndex(project);
121
- // Log the operation
122
- appendToLog(project, "consolidate", {
123
- entries_processed: result.entriesProcessed,
124
- rooms_updated: result.roomsUpdated,
125
- memories_created: result.memoriesCreated,
126
- });
127
- return result;
128
- }
129
- //# sourceMappingURL=consolidate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consolidate.js","sourceRoot":"","sources":["../../src/palace/consolidate.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Fan-out write logic.
3
- * When content is written to a room, this module:
4
- * 1. Parses [[wikilinks]] from the content
5
- * 2. Adds back-references in referenced rooms
6
- * 3. Updates graph.json with new edges
7
- * 4. Recalculates salience for affected rooms
8
- */
9
- import type { Importance } from "../types.js";
10
- export interface FanOutResult {
11
- updatedRooms: string[];
12
- newEdges: number;
13
- }
14
- export declare function fanOut(project: string, sourceRoom: string, sourceTopic: string, content: string, explicitConnections?: string[], importance?: Importance): FanOutResult;
15
- //# sourceMappingURL=fan-out.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fan-out.d.ts","sourceRoot":"","sources":["../../src/palace/fan-out.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,MAAM,CACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,mBAAmB,GAAE,MAAM,EAAO,EAClC,UAAU,GAAE,UAAqB,GAChC,YAAY,CAoEd"}
@@ -1,78 +0,0 @@
1
- /**
2
- * Fan-out write logic.
3
- * When content is written to a room, this module:
4
- * 1. Parses [[wikilinks]] from the content
5
- * 2. Adds back-references in referenced rooms
6
- * 3. Updates graph.json with new edges
7
- * 4. Recalculates salience for affected rooms
8
- */
9
- import * as fs from "node:fs";
10
- import * as path from "node:path";
11
- import { palaceDir } from "../storage/paths.js";
12
- import { extractWikilinks, addBackReference } from "./obsidian.js";
13
- import { addEdge, getConnectionCount } from "./graph.js";
14
- import { getRoomMeta, updateRoomMeta } from "./rooms.js";
15
- import { computeSalience } from "./salience.js";
16
- export function fanOut(project, sourceRoom, sourceTopic, content, explicitConnections = [], importance = "medium") {
17
- const pd = palaceDir(project);
18
- const result = { updatedRooms: [], newEdges: 0 };
19
- // Collect all targets: from wikilinks + explicit connections
20
- const wikiTargets = extractWikilinks(content);
21
- const allTargets = new Set([...wikiTargets, ...explicitConnections]);
22
- for (const target of allTargets) {
23
- // Target could be "roomSlug" or "roomSlug/topic"
24
- const targetRoom = target.split("/")[0];
25
- if (targetRoom === sourceRoom)
26
- continue; // skip self-references
27
- // Add back-reference in target room's README.md
28
- const targetReadme = path.join(pd, "rooms", targetRoom, "README.md");
29
- if (fs.existsSync(targetReadme)) {
30
- const readmeContent = fs.readFileSync(targetReadme, "utf-8");
31
- const updated = addBackReference(readmeContent, sourceRoom, sourceTopic);
32
- if (updated !== readmeContent) {
33
- fs.writeFileSync(targetReadme, updated, "utf-8");
34
- result.updatedRooms.push(targetRoom);
35
- }
36
- }
37
- // Add edge to graph
38
- addEdge(pd, `${sourceRoom}/${sourceTopic}`, target, "references");
39
- result.newEdges++;
40
- // Update target room's connections list
41
- const targetMeta = getRoomMeta(project, targetRoom);
42
- if (targetMeta && !targetMeta.connections.includes(sourceRoom)) {
43
- updateRoomMeta(project, targetRoom, {
44
- connections: [...targetMeta.connections, sourceRoom],
45
- });
46
- }
47
- }
48
- // Update source room's connections list
49
- const sourceMeta = getRoomMeta(project, sourceRoom);
50
- if (sourceMeta) {
51
- const newConns = new Set(sourceMeta.connections);
52
- for (const target of allTargets) {
53
- const targetRoom = target.split("/")[0];
54
- if (targetRoom !== sourceRoom)
55
- newConns.add(targetRoom);
56
- }
57
- updateRoomMeta(project, sourceRoom, {
58
- connections: Array.from(newConns),
59
- });
60
- }
61
- // Recalculate salience for all affected rooms
62
- const affectedRooms = new Set([sourceRoom, ...result.updatedRooms]);
63
- for (const room of affectedRooms) {
64
- const meta = getRoomMeta(project, room);
65
- if (!meta)
66
- continue;
67
- const connCount = getConnectionCount(pd, room);
68
- const newSalience = computeSalience({
69
- importance,
70
- lastUpdated: meta.updated,
71
- accessCount: meta.access_count,
72
- connectionCount: connCount,
73
- });
74
- updateRoomMeta(project, room, { salience: newSalience });
75
- }
76
- return result;
77
- }
78
- //# sourceMappingURL=fan-out.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fan-out.js","sourceRoot":"","sources":["../../src/palace/fan-out.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Palace graph management — cross-reference edges between rooms and memories.
3
- */
4
- import type { PalaceGraph } from "../types.js";
5
- export declare function readGraph(palaceDir: string): PalaceGraph;
6
- export declare function writeGraph(palaceDir: string, graph: PalaceGraph): void;
7
- export declare function addEdge(palaceDir: string, from: string, to: string, type?: string, weight?: number): void;
8
- export declare function removeEdgesFor(palaceDir: string, target: string): void;
9
- export declare function getConnectionCount(palaceDir: string, roomSlug: string): number;
10
- export declare function getConnectedRooms(palaceDir: string, roomSlug: string): string[];
11
- //# sourceMappingURL=graph.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/palace/graph.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,aAAa,CAAC;AAO1D,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAExD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAEtE;AAED,wBAAgB,OAAO,CACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,MAAqB,EAC3B,MAAM,GAAE,MAAY,GACnB,IAAI,CAkBN;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAMtE;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAS9E;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB/E"}