@chendpoc/pi-memory 0.1.12 → 0.1.13

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 (170) hide show
  1. package/README.md +88 -16
  2. package/dist/cache/memoryCaches.d.ts +32 -0
  3. package/dist/cache/memoryCaches.d.ts.map +1 -0
  4. package/dist/cache/memoryCaches.js +59 -0
  5. package/dist/cache/memoryCaches.js.map +1 -0
  6. package/dist/cli.js +123 -0
  7. package/dist/cli.js.map +1 -1
  8. package/dist/config.d.ts +28 -0
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +37 -1
  11. package/dist/config.js.map +1 -1
  12. package/dist/consolidation/enqueue.d.ts +33 -0
  13. package/dist/consolidation/enqueue.d.ts.map +1 -0
  14. package/dist/consolidation/enqueue.js +145 -0
  15. package/dist/consolidation/enqueue.js.map +1 -0
  16. package/dist/consolidation/index.d.ts +19 -0
  17. package/dist/consolidation/index.d.ts.map +1 -0
  18. package/dist/consolidation/index.js +15 -0
  19. package/dist/consolidation/index.js.map +1 -0
  20. package/dist/consolidation/lock.d.ts +5 -0
  21. package/dist/consolidation/lock.d.ts.map +1 -0
  22. package/dist/consolidation/lock.js +33 -0
  23. package/dist/consolidation/lock.js.map +1 -0
  24. package/dist/consolidation/log.d.ts +8 -0
  25. package/dist/consolidation/log.d.ts.map +1 -0
  26. package/dist/consolidation/log.js +32 -0
  27. package/dist/consolidation/log.js.map +1 -0
  28. package/dist/consolidation/memoryIndex.d.ts +18 -0
  29. package/dist/consolidation/memoryIndex.d.ts.map +1 -0
  30. package/dist/consolidation/memoryIndex.js +100 -0
  31. package/dist/consolidation/memoryIndex.js.map +1 -0
  32. package/dist/consolidation/phase2/runPhase2.d.ts +23 -0
  33. package/dist/consolidation/phase2/runPhase2.d.ts.map +1 -0
  34. package/dist/consolidation/phase2/runPhase2.js +196 -0
  35. package/dist/consolidation/phase2/runPhase2.js.map +1 -0
  36. package/dist/consolidation/scheduler/launchd.d.ts +5 -0
  37. package/dist/consolidation/scheduler/launchd.d.ts.map +1 -0
  38. package/dist/consolidation/scheduler/launchd.js +54 -0
  39. package/dist/consolidation/scheduler/launchd.js.map +1 -0
  40. package/dist/consolidation/scheduler/runConsolidate.d.ts +26 -0
  41. package/dist/consolidation/scheduler/runConsolidate.d.ts.map +1 -0
  42. package/dist/consolidation/scheduler/runConsolidate.js +83 -0
  43. package/dist/consolidation/scheduler/runConsolidate.js.map +1 -0
  44. package/dist/consolidation/scheduler/setupSchedule.d.ts +3 -0
  45. package/dist/consolidation/scheduler/setupSchedule.d.ts.map +1 -0
  46. package/dist/consolidation/scheduler/setupSchedule.js +79 -0
  47. package/dist/consolidation/scheduler/setupSchedule.js.map +1 -0
  48. package/dist/consolidation/scheduler/systemd.d.ts +9 -0
  49. package/dist/consolidation/scheduler/systemd.d.ts.map +1 -0
  50. package/dist/consolidation/scheduler/systemd.js +57 -0
  51. package/dist/consolidation/scheduler/systemd.js.map +1 -0
  52. package/dist/consolidation/scheduler/types.d.ts +24 -0
  53. package/dist/consolidation/scheduler/types.d.ts.map +1 -0
  54. package/dist/consolidation/scheduler/types.js +2 -0
  55. package/dist/consolidation/scheduler/types.js.map +1 -0
  56. package/dist/consolidation/scope.d.ts +12 -0
  57. package/dist/consolidation/scope.d.ts.map +1 -0
  58. package/dist/consolidation/scope.js +51 -0
  59. package/dist/consolidation/scope.js.map +1 -0
  60. package/dist/consolidation/stage1/deltaExtract.d.ts +3 -0
  61. package/dist/consolidation/stage1/deltaExtract.d.ts.map +1 -0
  62. package/dist/consolidation/stage1/deltaExtract.js +19 -0
  63. package/dist/consolidation/stage1/deltaExtract.js.map +1 -0
  64. package/dist/consolidation/stage1/drainQueue.d.ts +21 -0
  65. package/dist/consolidation/stage1/drainQueue.d.ts.map +1 -0
  66. package/dist/consolidation/stage1/drainQueue.js +113 -0
  67. package/dist/consolidation/stage1/drainQueue.js.map +1 -0
  68. package/dist/consolidation/stage1/extractSession.d.ts +6 -0
  69. package/dist/consolidation/stage1/extractSession.d.ts.map +1 -0
  70. package/dist/consolidation/stage1/extractSession.js +47 -0
  71. package/dist/consolidation/stage1/extractSession.js.map +1 -0
  72. package/dist/consolidation/stage1/store.d.ts +45 -0
  73. package/dist/consolidation/stage1/store.d.ts.map +1 -0
  74. package/dist/consolidation/stage1/store.js +297 -0
  75. package/dist/consolidation/stage1/store.js.map +1 -0
  76. package/dist/consolidation/types.d.ts +49 -0
  77. package/dist/consolidation/types.d.ts.map +1 -0
  78. package/dist/consolidation/types.js +2 -0
  79. package/dist/consolidation/types.js.map +1 -0
  80. package/dist/fallback/llmRerank.d.ts.map +1 -1
  81. package/dist/fallback/llmRerank.js +9 -1
  82. package/dist/fallback/llmRerank.js.map +1 -1
  83. package/dist/fallback/sessionIndex.d.ts.map +1 -1
  84. package/dist/fallback/sessionIndex.js +15 -63
  85. package/dist/fallback/sessionIndex.js.map +1 -1
  86. package/dist/index.d.ts +4 -3
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +4 -3
  89. package/dist/index.js.map +1 -1
  90. package/dist/local/graphQuery.d.ts +10 -0
  91. package/dist/local/graphQuery.d.ts.map +1 -1
  92. package/dist/local/graphQuery.js +25 -0
  93. package/dist/local/graphQuery.js.map +1 -1
  94. package/dist/pi-extension.d.ts.map +1 -1
  95. package/dist/pi-extension.js +356 -22
  96. package/dist/pi-extension.js.map +1 -1
  97. package/dist/preflight/detectIntents.d.ts.map +1 -1
  98. package/dist/preflight/detectIntents.js +7 -0
  99. package/dist/preflight/detectIntents.js.map +1 -1
  100. package/dist/preflight/hook.d.ts +18 -0
  101. package/dist/preflight/hook.d.ts.map +1 -1
  102. package/dist/preflight/hook.js +52 -7
  103. package/dist/preflight/hook.js.map +1 -1
  104. package/dist/preflight/render.d.ts +16 -2
  105. package/dist/preflight/render.d.ts.map +1 -1
  106. package/dist/preflight/render.js +24 -4
  107. package/dist/preflight/render.js.map +1 -1
  108. package/dist/service.d.ts +16 -0
  109. package/dist/service.d.ts.map +1 -1
  110. package/dist/service.js +57 -0
  111. package/dist/service.js.map +1 -1
  112. package/dist/session/activeBranch.d.ts +17 -0
  113. package/dist/session/activeBranch.d.ts.map +1 -0
  114. package/dist/session/activeBranch.js +251 -0
  115. package/dist/session/activeBranch.js.map +1 -0
  116. package/dist/settings.d.ts +5 -2
  117. package/dist/settings.d.ts.map +1 -1
  118. package/dist/settings.js +18 -1
  119. package/dist/settings.js.map +1 -1
  120. package/dist/tools/memoryAppend.d.ts +14 -4
  121. package/dist/tools/memoryAppend.d.ts.map +1 -1
  122. package/dist/tools/memoryAppend.js +46 -7
  123. package/dist/tools/memoryAppend.js.map +1 -1
  124. package/dist/tools/memoryRecall.d.ts +2 -2
  125. package/dist/tools/memoryRecall.d.ts.map +1 -1
  126. package/dist/tools/memoryRecall.js +35 -9
  127. package/dist/tools/memoryRecall.js.map +1 -1
  128. package/dist/trainer/extractFacts.d.ts +1 -1
  129. package/dist/trainer/index.d.ts +1 -1
  130. package/dist/trainer/index.d.ts.map +1 -1
  131. package/dist/trainer/index.js +1 -1
  132. package/dist/trainer/index.js.map +1 -1
  133. package/dist/trainer/scheduler.d.ts +2 -0
  134. package/dist/trainer/scheduler.d.ts.map +1 -1
  135. package/dist/trainer/scheduler.js +1 -0
  136. package/dist/trainer/scheduler.js.map +1 -1
  137. package/dist/trainer/sessionLoader.d.ts +3 -0
  138. package/dist/trainer/sessionLoader.d.ts.map +1 -1
  139. package/dist/trainer/sessionLoader.js +37 -74
  140. package/dist/trainer/sessionLoader.js.map +1 -1
  141. package/package.json +14 -4
  142. package/src/cli.ts +144 -0
  143. package/src/config.ts +89 -1
  144. package/src/consolidation/enqueue.ts +205 -0
  145. package/src/consolidation/index.ts +90 -0
  146. package/src/consolidation/lock.ts +41 -0
  147. package/src/consolidation/log.ts +43 -0
  148. package/src/consolidation/memoryIndex.ts +127 -0
  149. package/src/consolidation/phase2/runPhase2.ts +255 -0
  150. package/src/consolidation/scheduler/launchd.ts +62 -0
  151. package/src/consolidation/scheduler/runConsolidate.ts +115 -0
  152. package/src/consolidation/scheduler/setupSchedule.ts +106 -0
  153. package/src/consolidation/scheduler/systemd.ts +78 -0
  154. package/src/consolidation/scheduler/types.ts +27 -0
  155. package/src/consolidation/scope.ts +58 -0
  156. package/src/consolidation/stage1/deltaExtract.ts +29 -0
  157. package/src/consolidation/stage1/drainQueue.ts +143 -0
  158. package/src/consolidation/stage1/extractSession.ts +58 -0
  159. package/src/consolidation/stage1/store.ts +411 -0
  160. package/src/consolidation/types.ts +52 -0
  161. package/src/fallback/sessionIndex.ts +14 -51
  162. package/src/index.ts +6 -0
  163. package/src/pi-extension.ts +309 -10
  164. package/src/preflight/hook.ts +16 -2
  165. package/src/preflight/render.ts +7 -0
  166. package/src/session/activeBranch.ts +294 -0
  167. package/src/settings.ts +37 -2
  168. package/src/tools/memoryAppend.ts +60 -7
  169. package/src/trainer/index.ts +1 -1
  170. package/src/trainer/sessionLoader.ts +38 -87
@@ -0,0 +1,251 @@
1
+ import path from "node:path";
2
+ function asString(value) {
3
+ if (typeof value === "string") {
4
+ const text = value.trim();
5
+ return text.length > 0 ? text : undefined;
6
+ }
7
+ return undefined;
8
+ }
9
+ function getStringField(obj, names) {
10
+ for (const name of names) {
11
+ const found = asString(obj[name]);
12
+ if (found)
13
+ return found;
14
+ }
15
+ return undefined;
16
+ }
17
+ function getBooleanField(obj, names) {
18
+ for (const name of names) {
19
+ if (typeof obj[name] === "boolean")
20
+ return obj[name];
21
+ }
22
+ return undefined;
23
+ }
24
+ function messageText(content) {
25
+ if (typeof content === "string")
26
+ return content;
27
+ if (!Array.isArray(content))
28
+ return "";
29
+ const parts = [];
30
+ for (const block of content) {
31
+ if (typeof block === "string") {
32
+ parts.push(block);
33
+ continue;
34
+ }
35
+ if (block && typeof block === "object") {
36
+ const b = block;
37
+ if (typeof b.text === "string")
38
+ parts.push(b.text);
39
+ else if (typeof b.content === "string")
40
+ parts.push(b.content);
41
+ }
42
+ }
43
+ return parts.join("\n");
44
+ }
45
+ function extractMessage(line) {
46
+ if (line.message?.role && line.message.content !== undefined) {
47
+ return { role: line.message.role, content: line.message.content };
48
+ }
49
+ if (line.role && line.content !== undefined) {
50
+ return { role: line.role, content: line.content };
51
+ }
52
+ return null;
53
+ }
54
+ function pickActiveLeafHint(obj) {
55
+ const explicitByName = getStringField(obj, [
56
+ "activeSessionId",
57
+ "active_session_id",
58
+ "activeSession",
59
+ "active_session",
60
+ "activeLeafId",
61
+ "active_leaf_id",
62
+ "activeLeafSessionId",
63
+ "active_leaf_session_id",
64
+ "currentSessionId",
65
+ "current_session_id",
66
+ "leafSessionId",
67
+ "leaf_session_id",
68
+ ]);
69
+ if (explicitByName)
70
+ return explicitByName;
71
+ if (getBooleanField(obj, ["active", "is_active", "isActive", "activeLeaf"])
72
+ && typeof obj.id === "string") {
73
+ return obj.id;
74
+ }
75
+ return undefined;
76
+ }
77
+ function parseSessionIdFromPath(filePath) {
78
+ const normalized = asString(filePath);
79
+ if (!normalized)
80
+ return undefined;
81
+ const base = path.basename(normalized, path.extname(normalized));
82
+ const underscore = base.lastIndexOf("_");
83
+ if (underscore >= 0 && underscore < base.length - 1) {
84
+ return base.slice(underscore + 1);
85
+ }
86
+ return base || undefined;
87
+ }
88
+ export function parseJsonlSession(raw, filePath) {
89
+ const lines = raw.split("\n").filter((line) => line.trim());
90
+ if (lines.length === 0)
91
+ return null;
92
+ const parsedLines = [];
93
+ const nodes = new Map();
94
+ let headerSessionId;
95
+ let headerTitle = "";
96
+ let headerCreatedAt = "";
97
+ let lastNodeId;
98
+ let explicitLeafHint;
99
+ let fallbackParentSessionId;
100
+ let fallbackParentSessionFile;
101
+ for (const rawLine of lines) {
102
+ let obj;
103
+ try {
104
+ obj = JSON.parse(rawLine);
105
+ }
106
+ catch {
107
+ continue;
108
+ }
109
+ const id = getStringField(obj, ["id", "entryId", "entry_id"]);
110
+ const parentId = getStringField(obj, ["parentId", "parent_id"]);
111
+ const parentSessionId = getStringField(obj, [
112
+ "parentSessionId",
113
+ "parent_session_id",
114
+ ]);
115
+ const parentSessionFile = getStringField(obj, [
116
+ "parentSessionFile",
117
+ "parent_session_file",
118
+ "parentSessionPath",
119
+ "parent_session_path",
120
+ "parentSession",
121
+ "parent_session",
122
+ ]);
123
+ const type = asString(obj.type);
124
+ const message = obj.message;
125
+ const line = {
126
+ id,
127
+ parentId,
128
+ parentSessionId,
129
+ parentSessionFile,
130
+ message,
131
+ role: asString(obj.role),
132
+ content: obj.content,
133
+ timestamp: asString(obj.timestamp),
134
+ createdAt: asString(obj.createdAt),
135
+ };
136
+ const explicitLeafId = pickActiveLeafHint(obj);
137
+ if (explicitLeafId)
138
+ explicitLeafHint = explicitLeafId;
139
+ if (type === "session") {
140
+ headerSessionId = asString(obj.id) ?? headerSessionId;
141
+ headerTitle = asString(obj.title) ?? headerTitle;
142
+ headerCreatedAt = asString(obj.timestamp) ?? asString(obj.created_at) ?? asString(obj.createdAt) ?? headerCreatedAt;
143
+ if (!fallbackParentSessionId) {
144
+ fallbackParentSessionId = getStringField(obj, ["parentSessionId", "parent_session_id"]);
145
+ }
146
+ if (!fallbackParentSessionFile) {
147
+ fallbackParentSessionFile = getStringField(obj, [
148
+ "parentSessionFile",
149
+ "parent_session_file",
150
+ "parentSessionPath",
151
+ "parent_session_path",
152
+ "parentSession",
153
+ "parent_session",
154
+ ]);
155
+ }
156
+ if (!fallbackParentSessionId && fallbackParentSessionFile) {
157
+ fallbackParentSessionId = parseSessionIdFromPath(fallbackParentSessionFile);
158
+ }
159
+ }
160
+ if (id && type !== "session") {
161
+ nodes.set(id, {
162
+ parentId,
163
+ parentSessionId,
164
+ parentSessionFile,
165
+ });
166
+ lastNodeId = id;
167
+ }
168
+ parsedLines.push(line);
169
+ }
170
+ if (parsedLines.length === 0)
171
+ return null;
172
+ const hasBranchNodes = nodes.size > 0;
173
+ let activeLeafId = explicitLeafHint ?? lastNodeId;
174
+ if (activeLeafId && explicitLeafHint && explicitLeafHint !== lastNodeId && !nodes.has(activeLeafId)) {
175
+ activeLeafId = lastNodeId;
176
+ }
177
+ const activeSessionId = activeLeafId ?? headerSessionId ?? path.basename(filePath, path.extname(filePath));
178
+ let parentSessionId = fallbackParentSessionId;
179
+ let parentSessionFile = fallbackParentSessionFile;
180
+ const activeNodeIds = new Set();
181
+ if (hasBranchNodes && activeLeafId) {
182
+ let cursor = activeLeafId;
183
+ const leafNode = nodes.get(activeLeafId);
184
+ if (leafNode) {
185
+ if (leafNode.parentSessionId) {
186
+ parentSessionId = leafNode.parentSessionId;
187
+ }
188
+ if (leafNode.parentSessionFile) {
189
+ parentSessionFile = leafNode.parentSessionFile;
190
+ }
191
+ if (!parentSessionId && parentSessionFile) {
192
+ parentSessionId = parseSessionIdFromPath(parentSessionFile);
193
+ }
194
+ }
195
+ for (let i = 0; i < nodes.size + 5; i++) {
196
+ if (!cursor || activeNodeIds.has(cursor))
197
+ break;
198
+ activeNodeIds.add(cursor);
199
+ const node = nodes.get(cursor);
200
+ if (!node)
201
+ break;
202
+ if (!node.parentId)
203
+ break;
204
+ cursor = node.parentId;
205
+ if (!nodes.has(cursor))
206
+ break;
207
+ }
208
+ }
209
+ const includeLine = (line) => {
210
+ if (!hasBranchNodes || !activeLeafId)
211
+ return true;
212
+ if (!line.id && !line.parentId)
213
+ return false;
214
+ if (line.id)
215
+ return activeNodeIds.has(line.id);
216
+ if (line.parentId)
217
+ return activeNodeIds.has(line.parentId);
218
+ return false;
219
+ };
220
+ const turns = [];
221
+ let turnIndex = 0;
222
+ for (const line of parsedLines) {
223
+ if (!includeLine(line))
224
+ continue;
225
+ const messageObj = extractMessage(line);
226
+ if (!messageObj?.role || !messageObj.content)
227
+ continue;
228
+ if (messageObj.role !== "user" && messageObj.role !== "assistant")
229
+ continue;
230
+ const text = messageText(messageObj.content);
231
+ if (!text.trim())
232
+ continue;
233
+ turns.push({
234
+ role: messageObj.role,
235
+ content: text,
236
+ turnIndex: turnIndex++,
237
+ });
238
+ }
239
+ if (turns.length === 0)
240
+ return null;
241
+ return {
242
+ id: activeSessionId,
243
+ title: headerTitle,
244
+ createdAt: headerCreatedAt,
245
+ turns,
246
+ parentSessionId,
247
+ parentSessionFile,
248
+ };
249
+ }
250
+ export { messageText };
251
+ //# sourceMappingURL=activeBranch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activeBranch.js","sourceRoot":"","sources":["../../src/session/activeBranch.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { defaultMemoryConfig, type ExtractorType, type MemoryConfig, type MemoryProvider, type TrainerConfig } from "./config.js";
1
+ import { defaultMemoryConfig, type ExtractorType, type ConsolidationConfig, type MemoryConfig, type MemoryProvider, type TrainerConfig } from "./config.js";
2
2
  import type { OllamaConfig } from "./adapters/ollamaClient.js";
3
3
  import type { OpenAICompatConfig } from "./adapters/openaiCompatClient.js";
4
4
  export interface MemorySettingsFile {
@@ -18,6 +18,7 @@ export interface MemorySettingsFile {
18
18
  /** OpenAI-compatible endpoint config (vLLM, SGLang, LM Studio, etc.) */
19
19
  vllm?: Partial<OpenAICompatConfig>;
20
20
  trainer?: Partial<TrainerConfig>;
21
+ consolidation?: Partial<ConsolidationConfig>;
21
22
  }
22
23
  export interface LoadedMemorySettings {
23
24
  config: MemoryConfig;
@@ -33,6 +34,8 @@ export declare function loadMemorySettings(overrides?: Partial<MemoryConfig>, co
33
34
  /** Convenience alias when only MemoryConfig is needed. */
34
35
  export declare function loadMemoryConfig(overrides?: Partial<MemoryConfig>, configPath?: string): MemoryConfig;
35
36
  export declare function resolveHelperModelSpec(flagValue: string | boolean | undefined, settingsHelperModel: string | undefined): string | undefined;
37
+ /** Write memory settings back to disk (preserves unknown fields). */
38
+ export declare function saveMemorySettings(updates: Partial<MemorySettingsFile>, configPath?: string): void;
36
39
  export { defaultMemoryConfig };
37
- export type { ExtractorType, MemoryProvider, TrainerConfig };
40
+ export type { ConsolidationConfig, ExtractorType, MemoryProvider, TrainerConfig, };
38
41
  //# sourceMappingURL=settings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,mBAAmB,EAEnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE3E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,wEAAwE;IACxE,IAAI,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,4CAA4C;AAC5C,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAoBD,0DAA0D;AAC1D,wBAAgB,kBAAkB,CAChC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,EACrC,UAAU,SAA4B,GACrC,oBAAoB,CAkCtB;AAED,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAC9B,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,EACrC,UAAU,SAA4B,GACrC,YAAY,CAEd;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,EACvC,mBAAmB,EAAE,MAAM,GAAG,SAAS,GACtC,MAAM,GAAG,SAAS,CAKpB;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC/B,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,mBAAmB,EAEnB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE3E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,wEAAwE;IACxE,IAAI,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,4CAA4C;AAC5C,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAoBD,0DAA0D;AAC1D,wBAAgB,kBAAkB,CAChC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,EACrC,UAAU,SAA4B,GACrC,oBAAoB,CA0CtB;AAED,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAC9B,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,EACrC,UAAU,SAA4B,GACrC,YAAY,CAEd;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,EACvC,mBAAmB,EAAE,MAAM,GAAG,SAAS,GACtC,MAAM,GAAG,SAAS,CAKpB;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACpC,UAAU,SAA4B,GACrC,IAAI,CAcN;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC/B,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,aAAa,GACd,CAAC"}
package/dist/settings.js CHANGED
@@ -25,10 +25,11 @@ function readMemorySettingsFile(configPath = defaultMemoryConfigPath()) {
25
25
  /** Load pi-memory config from ~/.pi/agent/memory.json. */
26
26
  export function loadMemorySettings(overrides = {}, configPath = defaultMemoryConfigPath()) {
27
27
  const fileSettings = readMemorySettingsFile(configPath);
28
- const { helperModel, ollama, vllm, trainer, ...configFields } = fileSettings;
28
+ const { helperModel, ollama, vllm, trainer, consolidation, ...configFields } = fileSettings;
29
29
  const config = normalizeMemoryConfig({
30
30
  ...configFields,
31
31
  ...(trainer ? { trainer } : {}),
32
+ ...(consolidation ? { consolidation } : {}),
32
33
  ...overrides,
33
34
  });
34
35
  let resolvedOllama = null;
@@ -64,5 +65,21 @@ export function resolveHelperModelSpec(flagValue, settingsHelperModel) {
64
65
  }
65
66
  return settingsHelperModel;
66
67
  }
68
+ /** Write memory settings back to disk (preserves unknown fields). */
69
+ export function saveMemorySettings(updates, configPath = defaultMemoryConfigPath()) {
70
+ let existing = {};
71
+ try {
72
+ const raw = fs.readFileSync(configPath, "utf8");
73
+ const parsed = JSON.parse(raw);
74
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
75
+ existing = parsed;
76
+ }
77
+ }
78
+ catch { /* start fresh */ }
79
+ const merged = { ...existing, ...updates };
80
+ const dir = path.dirname(configPath);
81
+ fs.mkdirSync(dir, { recursive: true });
82
+ fs.writeFileSync(configPath, JSON.stringify(merged, null, 2) + "\n", "utf8");
83
+ }
67
84
  export { defaultMemoryConfig };
68
85
  //# sourceMappingURL=settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GAKtB,MAAM,aAAa,CAAC;AA+BrB,4CAA4C;AAC5C,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAU,GAAG,uBAAuB,EAAE;IACpE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,MAA4B,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,KAAK,CACb,wCAAwC,UAAU,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC1G,CAAC;IACJ,CAAC;AACH,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,kBAAkB,CAChC,YAAmC,EAAE,EACrC,UAAU,GAAG,uBAAuB,EAAE;IAEtC,MAAM,YAAY,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,YAAY,CAAC;IAE7E,MAAM,MAAM,GAAG,qBAAqB,CAAC;QACnC,GAAG,YAAY;QACf,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,GAAG,SAAS;KACsC,CAAC,CAAC;IAEtD,IAAI,cAAc,GAAwB,IAAI,CAAC;IAC/C,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAC3B,cAAc,GAAG;YACf,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,wBAAwB;YAC3D,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;SAC3B,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,GAA8B,IAAI,CAAC;IACnD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,YAAY,GAAG;YACb,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,uBAAuB;YACxD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS;SACzC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM;QACN,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,SAAS;QAC7C,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,YAAY;QAClB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,gBAAgB,CAC9B,YAAmC,EAAE,EACrC,UAAU,GAAG,uBAAuB,EAAE;IAEtC,OAAO,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,SAAuC,EACvC,mBAAuC;IAEvC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtD,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
+ import type { MemoryScope } from "../consolidation/scope.js";
1
2
  import type { ToolResult } from "../types.js";
2
3
  export declare const MEMORY_APPEND_NAME = "memory_append";
3
4
  export declare const MEMORY_APPEND_DESCRIPTION: string;
4
- export declare const MEMORY_APPEND_PROMPT_SNIPPET = "Append durable notes to MEMORY.md";
5
- export declare const MEMORY_APPEND_PROMPT_GUIDELINES: readonly ["Use memory_append to persist user preferences or facts the user explicitly asked to remember — not for transient task state."];
5
+ export declare const MEMORY_APPEND_PROMPT_SNIPPET = "Persist explicit user memory";
6
+ export declare const MEMORY_APPEND_PROMPT_GUIDELINES: readonly ["Use memory_append only when the user explicitly asks to remember a preference or durable fact — not for transient task state."];
6
7
  export declare const MEMORY_APPEND_PARAMETERS: {
7
8
  readonly type: "object";
8
9
  readonly properties: {
@@ -14,9 +15,18 @@ export declare const MEMORY_APPEND_PARAMETERS: {
14
15
  readonly required: readonly ["content"];
15
16
  };
16
17
  export declare function appendToMemoryMd(memoryMdPath: string, content: string): Promise<void>;
18
+ export interface Stage1AppendOptions {
19
+ dbPath: string;
20
+ sessionId?: string;
21
+ sessionFile?: string;
22
+ scope?: MemoryScope;
23
+ now?: string;
24
+ }
25
+ export declare function appendToStage1(content: string, opts: Stage1AppendOptions): Promise<string>;
17
26
  export declare class MemoryAppendTool {
18
27
  private readonly memoryMdPath;
19
- constructor(memoryMdPath: string);
28
+ private readonly stage1?;
29
+ constructor(memoryMdPath: string, stage1?: Stage1AppendOptions | undefined);
20
30
  info(): {
21
31
  name: string;
22
32
  description: string;
@@ -33,5 +43,5 @@ export declare class MemoryAppendTool {
33
43
  };
34
44
  run(argsJson: string): Promise<ToolResult>;
35
45
  }
36
- export declare function createMemoryAppendTool(memoryMdPath: string): MemoryAppendTool;
46
+ export declare function createMemoryAppendTool(memoryMdPath: string, stage1?: Stage1AppendOptions): MemoryAppendTool;
37
47
  //# sourceMappingURL=memoryAppend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memoryAppend.d.ts","sourceRoot":"","sources":["../../src/tools/memoryAppend.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,eAAO,MAAM,yBAAyB,QAEoC,CAAC;AAE3E,eAAO,MAAM,4BAA4B,sCAAsC,CAAC;AAEhF,eAAO,MAAM,+BAA+B,2IAElC,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;;;;CAU3B,CAAC;AA6BX,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,MAAM;IAEjD,IAAI;;;;;;;;;;;;;;IAQE,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAwBjD;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,CAE7E"}
1
+ {"version":3,"file":"memoryAppend.d.ts","sourceRoot":"","sources":["../../src/tools/memoryAppend.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,eAAO,MAAM,yBAAyB,QAE+D,CAAC;AAEtG,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAE3E,eAAO,MAAM,+BAA+B,4IAElC,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;;;;CAU3B,CAAC;AA6BX,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAED,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBADP,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,mBAAmB,YAAA;IAG/C,IAAI;;;;;;;;;;;;;;IAQE,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CA4BjD;AAED,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,mBAAmB,GAC3B,gBAAgB,CAElB"}
@@ -1,12 +1,13 @@
1
1
  import fs from "node:fs/promises";
2
2
  import { open } from "node:fs/promises";
3
3
  import path from "node:path";
4
+ import { openConsolidationStore } from "../consolidation/stage1/store.js";
4
5
  export const MEMORY_APPEND_NAME = "memory_append";
5
- export const MEMORY_APPEND_DESCRIPTION = "Append new entries to MEMORY.md. Use this instead of file_write or file_edit for memory updates. " +
6
- "Writes are append-only with a simple lock to avoid concurrent clobber.";
7
- export const MEMORY_APPEND_PROMPT_SNIPPET = "Append durable notes to MEMORY.md";
6
+ export const MEMORY_APPEND_DESCRIPTION = "Persist durable memory only when the user explicitly asks to remember something. " +
7
+ "Writes go through the pi-memory consolidation stage instead of direct file edits when configured.";
8
+ export const MEMORY_APPEND_PROMPT_SNIPPET = "Persist explicit user memory";
8
9
  export const MEMORY_APPEND_PROMPT_GUIDELINES = [
9
- "Use memory_append to persist user preferences or facts the user explicitly asked to remember — not for transient task state.",
10
+ "Use memory_append only when the user explicitly asks to remember a preference or durable fact — not for transient task state.",
10
11
  ];
11
12
  export const MEMORY_APPEND_PARAMETERS = {
12
13
  type: "object",
@@ -54,10 +55,44 @@ export async function appendToMemoryMd(memoryMdPath, content) {
54
55
  await fs.appendFile(memoryMdPath, block, { encoding: "utf8", mode: 0o600 });
55
56
  });
56
57
  }
58
+ export async function appendToStage1(content, opts) {
59
+ const trimmed = content.trim();
60
+ if (!trimmed)
61
+ throw new Error("content must not be empty");
62
+ const store = openConsolidationStore(opts.dbPath);
63
+ if (!store)
64
+ throw new Error("could not open consolidation store");
65
+ const now = opts.now ?? new Date().toISOString();
66
+ const sessionId = opts.sessionId
67
+ ? `manual_${opts.sessionId}_${Date.now()}`
68
+ : `manual_${Date.now()}`;
69
+ try {
70
+ store.upsertStage1Output({
71
+ session_id: sessionId,
72
+ session_file: opts.sessionFile ?? "manual-memory-append",
73
+ source_mtime_ms: Date.now(),
74
+ generated_at: now,
75
+ raw_memory: trimmed,
76
+ rollout_summary: trimmed,
77
+ scope: opts.scope ?? "global",
78
+ status: "done",
79
+ selected_for_phase2: false,
80
+ usage_count: 0,
81
+ last_usage: now,
82
+ error_message: null,
83
+ });
84
+ return sessionId;
85
+ }
86
+ finally {
87
+ store.close();
88
+ }
89
+ }
57
90
  export class MemoryAppendTool {
58
91
  memoryMdPath;
59
- constructor(memoryMdPath) {
92
+ stage1;
93
+ constructor(memoryMdPath, stage1) {
60
94
  this.memoryMdPath = memoryMdPath;
95
+ this.stage1 = stage1;
61
96
  }
62
97
  info() {
63
98
  return {
@@ -82,6 +117,10 @@ export class MemoryAppendTool {
82
117
  return { content: "content must not be empty", isError: true };
83
118
  }
84
119
  try {
120
+ if (this.stage1) {
121
+ const id = await appendToStage1(content, this.stage1);
122
+ return { content: `queued memory for consolidation: ${id}` };
123
+ }
85
124
  await appendToMemoryMd(this.memoryMdPath, content);
86
125
  return { content: `appended to ${this.memoryMdPath}` };
87
126
  }
@@ -93,7 +132,7 @@ export class MemoryAppendTool {
93
132
  }
94
133
  }
95
134
  }
96
- export function createMemoryAppendTool(memoryMdPath) {
97
- return new MemoryAppendTool(memoryMdPath);
135
+ export function createMemoryAppendTool(memoryMdPath, stage1) {
136
+ return new MemoryAppendTool(memoryMdPath, stage1);
98
137
  }
99
138
  //# sourceMappingURL=memoryAppend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memoryAppend.js","sourceRoot":"","sources":["../../src/tools/memoryAppend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryAppend.js","sourceRoot":"","sources":["../../src/tools/memoryAppend.ts"],"names":[],"mappings":"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"}
@@ -102,8 +102,8 @@ export declare class MemoryRecallTool {
102
102
  readonly required: readonly ["anchor_mentions"];
103
103
  };
104
104
  };
105
- run(argsJson: string, signal?: AbortSignal): Promise<ToolResult>;
106
- runIntent(intent: QueryIntent, signal?: AbortSignal): Promise<ToolResult>;
105
+ run(argsJson: string, signal?: AbortSignal, onProgress?: (msg: string) => void): Promise<ToolResult>;
106
+ runIntent(intent: QueryIntent, signal?: AbortSignal, onProgress?: (msg: string) => void): Promise<ToolResult>;
107
107
  private fallbackResult;
108
108
  }
109
109
  /** @deprecated Use createFallbackQuery — kept for backward-compatible imports. */
@@ -1 +1 @@
1
- {"version":3,"file":"memoryRecall.d.ts","sourceRoot":"","sources":["../../src/tools/memoryRecall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAiB,KAAK,aAAa,EAAqB,MAAM,0BAA0B,CAAC;AAEhG,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAoB,WAAW,EAA+B,UAAU,EAAE,MAAM,aAAa,CAAC;AAExI,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,eAAO,MAAM,yBAAyB,QAM8E,CAAC;AAErH,eAAO,MAAM,4BAA4B,0DACgB,CAAC;AAE1D,eAAO,MAAM,+BAA+B,yPAGlC,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiB3B,CAAC;AAEX,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,OAAO,EAAE,aAAa,EACtB,QAAQ,GAAE,aAAa,GAAG,IAAW,EACrC,UAAU,GAAE,aAAa,GAAG,IAAW;IAG1D,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAehE,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;YA6BjE,cAAc;CAmF7B;AAmKD,kFAAkF;AAClF,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EAAE,EACvB,WAAW,SAAK,GACf,aAAa,CAEf;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,aAAa,GAAG,IAAI,EAC9B,UAAU,CAAC,EAAE,aAAa,GAAG,IAAI,GAChC,gBAAgB,CAElB"}
1
+ {"version":3,"file":"memoryRecall.d.ts","sourceRoot":"","sources":["../../src/tools/memoryRecall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAiB,KAAK,aAAa,EAAqB,MAAM,0BAA0B,CAAC;AAEhG,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAoB,WAAW,EAA+B,UAAU,EAAE,MAAM,aAAa,CAAC;AAExI,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,eAAO,MAAM,yBAAyB,QAM8E,CAAC;AAErH,eAAO,MAAM,4BAA4B,0DACgB,CAAC;AAE1D,eAAO,MAAM,+BAA+B,yPAGlC,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiB3B,CAAC;AAEX,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,OAAO,EAAE,aAAa,EACtB,QAAQ,GAAE,aAAa,GAAG,IAAW,EACrC,UAAU,GAAE,aAAa,GAAG,IAAW;IAG1D,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;IAepG,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;YAqDrG,cAAc;CAmF7B;AAmKD,kFAAkF;AAClF,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EAAE,EACvB,WAAW,SAAK,GACf,aAAa,CAEf;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,aAAa,GAAG,IAAI,EAC9B,UAAU,CAAC,EAAE,aAAa,GAAG,IAAI,GAChC,gBAAgB,CAElB"}
@@ -46,7 +46,7 @@ export class MemoryRecallTool {
46
46
  parameters: MEMORY_RECALL_PARAMETERS,
47
47
  };
48
48
  }
49
- async run(argsJson, signal) {
49
+ async run(argsJson, signal, onProgress) {
50
50
  const args = parseArgs(argsJson);
51
51
  if ("error" in args) {
52
52
  return { content: args.error, isError: true };
@@ -56,24 +56,50 @@ export class MemoryRecallTool {
56
56
  if (validation) {
57
57
  return { content: validation, isError: true };
58
58
  }
59
- return this.runIntent(intent, signal);
59
+ return this.runIntent(intent, signal, onProgress);
60
60
  }
61
- async runIntent(intent, signal) {
61
+ async runIntent(intent, signal, onProgress) {
62
62
  if (this.service.status() !== "ready") {
63
63
  return this.fallbackResult(intent, "service_unavailable", "fallback");
64
64
  }
65
- let result = await this.service.query(intent, signal);
65
+ // Emit a progress message if the sidecar takes longer than 500 ms.
66
+ let progressTimer = null;
67
+ if (onProgress) {
68
+ progressTimer = setTimeout(() => {
69
+ onProgress("Querying episodic memory…");
70
+ }, 500);
71
+ }
72
+ let result;
73
+ try {
74
+ result = await this.service.query(intent, signal);
75
+ }
76
+ finally {
77
+ if (progressTimer != null)
78
+ clearTimeout(progressTimer);
79
+ }
66
80
  if (result.transportError || result.errorClass === "unavailable") {
67
81
  return this.fallbackResult(intent, "service_unavailable", "fallback");
68
82
  }
69
83
  if (result.errorClass === "retryable") {
70
- await sleep(500, signal);
71
- result = await this.service.query(intent, signal);
72
- if (result.transportError ||
73
- result.errorClass === "unavailable" ||
74
- result.errorClass === "retryable") {
84
+ let retryTimer = null;
85
+ if (onProgress) {
86
+ retryTimer = setTimeout(() => onProgress("Retrying memory query…"), 500);
87
+ }
88
+ let retryResult;
89
+ try {
90
+ await sleep(500, signal);
91
+ retryResult = await this.service.query(intent, signal);
92
+ }
93
+ finally {
94
+ if (retryTimer != null)
95
+ clearTimeout(retryTimer);
96
+ }
97
+ if (retryResult.transportError ||
98
+ retryResult.errorClass === "unavailable" ||
99
+ retryResult.errorClass === "retryable") {
75
100
  return this.fallbackResult(intent, "retryable_failed", "fallback_after_retry");
76
101
  }
102
+ result = retryResult;
77
103
  }
78
104
  if (result.errorClass === "permanent") {
79
105
  return permanentResult(result.env);