agent-recall-core 3.4.30 → 3.4.35

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 (251) hide show
  1. package/README.md +121 -441
  2. package/dist/digest/store.d.ts.map +1 -1
  3. package/dist/digest/store.js +4 -3
  4. package/dist/digest/store.js.map +1 -1
  5. package/dist/display/board-render.d.ts +61 -0
  6. package/dist/display/board-render.d.ts.map +1 -0
  7. package/dist/display/board-render.js +223 -0
  8. package/dist/display/board-render.js.map +1 -0
  9. package/dist/helpers/alignment-patterns.d.ts +10 -0
  10. package/dist/helpers/alignment-patterns.d.ts.map +1 -1
  11. package/dist/helpers/alignment-patterns.js +5 -1
  12. package/dist/helpers/alignment-patterns.js.map +1 -1
  13. package/dist/helpers/blind-spots.d.ts +86 -0
  14. package/dist/helpers/blind-spots.d.ts.map +1 -0
  15. package/dist/helpers/blind-spots.js +205 -0
  16. package/dist/helpers/blind-spots.js.map +1 -0
  17. package/dist/helpers/conflict-scan.d.ts +10 -0
  18. package/dist/helpers/conflict-scan.d.ts.map +1 -1
  19. package/dist/helpers/conflict-scan.js +3 -3
  20. package/dist/helpers/conflict-scan.js.map +1 -1
  21. package/dist/helpers/semantic-match.d.ts +82 -0
  22. package/dist/helpers/semantic-match.d.ts.map +1 -0
  23. package/dist/helpers/semantic-match.js +229 -0
  24. package/dist/helpers/semantic-match.js.map +1 -0
  25. package/dist/index.d.ts +52 -11
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +48 -9
  28. package/dist/index.js.map +1 -1
  29. package/dist/palace/awareness.d.ts +30 -0
  30. package/dist/palace/awareness.d.ts.map +1 -1
  31. package/dist/palace/awareness.js +65 -2
  32. package/dist/palace/awareness.js.map +1 -1
  33. package/dist/palace/consolidate.d.ts.map +1 -1
  34. package/dist/palace/consolidate.js +17 -0
  35. package/dist/palace/consolidate.js.map +1 -1
  36. package/dist/palace/decay-pass.d.ts +46 -0
  37. package/dist/palace/decay-pass.d.ts.map +1 -0
  38. package/dist/palace/decay-pass.js +87 -0
  39. package/dist/palace/decay-pass.js.map +1 -0
  40. package/dist/palace/insights-index.d.ts.map +1 -1
  41. package/dist/palace/insights-index.js +4 -2
  42. package/dist/palace/insights-index.js.map +1 -1
  43. package/dist/palace/skills.d.ts +41 -2
  44. package/dist/palace/skills.d.ts.map +1 -1
  45. package/dist/palace/skills.js +106 -4
  46. package/dist/palace/skills.js.map +1 -1
  47. package/dist/prompts/consolidation-prompt.d.ts +25 -0
  48. package/dist/prompts/consolidation-prompt.d.ts.map +1 -0
  49. package/dist/prompts/consolidation-prompt.js +91 -0
  50. package/dist/prompts/consolidation-prompt.js.map +1 -0
  51. package/dist/storage/archive-prune.d.ts +56 -0
  52. package/dist/storage/archive-prune.d.ts.map +1 -0
  53. package/dist/storage/archive-prune.js +118 -0
  54. package/dist/storage/archive-prune.js.map +1 -0
  55. package/dist/storage/archive-write.d.ts +38 -0
  56. package/dist/storage/archive-write.d.ts.map +1 -0
  57. package/dist/storage/archive-write.js +98 -0
  58. package/dist/storage/archive-write.js.map +1 -0
  59. package/dist/storage/blind-spots-store.d.ts +30 -0
  60. package/dist/storage/blind-spots-store.d.ts.map +1 -0
  61. package/dist/storage/blind-spots-store.js +91 -0
  62. package/dist/storage/blind-spots-store.js.map +1 -0
  63. package/dist/storage/capture-router.d.ts +60 -0
  64. package/dist/storage/capture-router.d.ts.map +1 -0
  65. package/dist/storage/capture-router.js +133 -0
  66. package/dist/storage/capture-router.js.map +1 -0
  67. package/dist/storage/classification.d.ts +32 -0
  68. package/dist/storage/classification.d.ts.map +1 -0
  69. package/dist/storage/classification.js +74 -0
  70. package/dist/storage/classification.js.map +1 -0
  71. package/dist/storage/consolidation-queue.d.ts +39 -0
  72. package/dist/storage/consolidation-queue.d.ts.map +1 -0
  73. package/dist/storage/consolidation-queue.js +120 -0
  74. package/dist/storage/consolidation-queue.js.map +1 -0
  75. package/dist/storage/content-guard.d.ts +74 -0
  76. package/dist/storage/content-guard.d.ts.map +1 -0
  77. package/dist/storage/content-guard.js +179 -0
  78. package/dist/storage/content-guard.js.map +1 -0
  79. package/dist/storage/corrections.d.ts +246 -21
  80. package/dist/storage/corrections.d.ts.map +1 -1
  81. package/dist/storage/corrections.js +605 -56
  82. package/dist/storage/corrections.js.map +1 -1
  83. package/dist/storage/durable-intent.d.ts +49 -0
  84. package/dist/storage/durable-intent.d.ts.map +1 -0
  85. package/dist/storage/durable-intent.js +124 -0
  86. package/dist/storage/durable-intent.js.map +1 -0
  87. package/dist/storage/filelock.d.ts +6 -0
  88. package/dist/storage/filelock.d.ts.map +1 -1
  89. package/dist/storage/filelock.js +6 -1
  90. package/dist/storage/filelock.js.map +1 -1
  91. package/dist/storage/memory-protocol.d.ts +19 -0
  92. package/dist/storage/memory-protocol.d.ts.map +1 -0
  93. package/dist/storage/memory-protocol.js +101 -0
  94. package/dist/storage/memory-protocol.js.map +1 -0
  95. package/dist/storage/paths.d.ts +23 -0
  96. package/dist/storage/paths.d.ts.map +1 -1
  97. package/dist/storage/paths.js +39 -0
  98. package/dist/storage/paths.js.map +1 -1
  99. package/dist/storage/retention.d.ts +23 -0
  100. package/dist/storage/retention.d.ts.map +1 -0
  101. package/dist/storage/retention.js +48 -0
  102. package/dist/storage/retention.js.map +1 -0
  103. package/dist/storage/session.d.ts +2 -2
  104. package/dist/storage/session.d.ts.map +1 -1
  105. package/dist/storage/session.js +11 -1
  106. package/dist/storage/session.js.map +1 -1
  107. package/dist/supabase/config.d.ts +8 -0
  108. package/dist/supabase/config.d.ts.map +1 -1
  109. package/dist/supabase/config.js +5 -0
  110. package/dist/supabase/config.js.map +1 -1
  111. package/dist/supabase/recall-backend.d.ts +1 -0
  112. package/dist/supabase/recall-backend.d.ts.map +1 -1
  113. package/dist/supabase/recall-backend.js +13 -13
  114. package/dist/supabase/recall-backend.js.map +1 -1
  115. package/dist/supabase/sync.d.ts.map +1 -1
  116. package/dist/supabase/sync.js +30 -3
  117. package/dist/supabase/sync.js.map +1 -1
  118. package/dist/tools-logic/bootstrap.d.ts +15 -0
  119. package/dist/tools-logic/bootstrap.d.ts.map +1 -1
  120. package/dist/tools-logic/bootstrap.js +238 -47
  121. package/dist/tools-logic/bootstrap.js.map +1 -1
  122. package/dist/tools-logic/brief.d.ts +84 -0
  123. package/dist/tools-logic/brief.d.ts.map +1 -0
  124. package/dist/tools-logic/brief.js +193 -0
  125. package/dist/tools-logic/brief.js.map +1 -0
  126. package/dist/tools-logic/check-action.d.ts +9 -0
  127. package/dist/tools-logic/check-action.d.ts.map +1 -1
  128. package/dist/tools-logic/check-action.js +31 -2
  129. package/dist/tools-logic/check-action.js.map +1 -1
  130. package/dist/tools-logic/check.d.ts +7 -0
  131. package/dist/tools-logic/check.d.ts.map +1 -1
  132. package/dist/tools-logic/check.js +24 -2
  133. package/dist/tools-logic/check.js.map +1 -1
  134. package/dist/tools-logic/confidence.d.ts +50 -0
  135. package/dist/tools-logic/confidence.d.ts.map +1 -0
  136. package/dist/tools-logic/confidence.js +70 -0
  137. package/dist/tools-logic/confidence.js.map +1 -0
  138. package/dist/tools-logic/drill-down.d.ts +37 -0
  139. package/dist/tools-logic/drill-down.d.ts.map +1 -0
  140. package/dist/tools-logic/drill-down.js +63 -0
  141. package/dist/tools-logic/drill-down.js.map +1 -0
  142. package/dist/tools-logic/export-corrections.d.ts +63 -0
  143. package/dist/tools-logic/export-corrections.d.ts.map +1 -0
  144. package/dist/tools-logic/export-corrections.js +124 -0
  145. package/dist/tools-logic/export-corrections.js.map +1 -0
  146. package/dist/tools-logic/journal-capture.d.ts.map +1 -1
  147. package/dist/tools-logic/journal-capture.js +4 -1
  148. package/dist/tools-logic/journal-capture.js.map +1 -1
  149. package/dist/tools-logic/journal-write.d.ts.map +1 -1
  150. package/dist/tools-logic/journal-write.js +3 -2
  151. package/dist/tools-logic/journal-write.js.map +1 -1
  152. package/dist/tools-logic/memory-query.d.ts +10 -3
  153. package/dist/tools-logic/memory-query.d.ts.map +1 -1
  154. package/dist/tools-logic/memory-query.js +31 -7
  155. package/dist/tools-logic/memory-query.js.map +1 -1
  156. package/dist/tools-logic/mirror-builder.d.ts +115 -0
  157. package/dist/tools-logic/mirror-builder.d.ts.map +1 -0
  158. package/dist/tools-logic/mirror-builder.js +348 -0
  159. package/dist/tools-logic/mirror-builder.js.map +1 -0
  160. package/dist/tools-logic/palace-write.d.ts.map +1 -1
  161. package/dist/tools-logic/palace-write.js +3 -2
  162. package/dist/tools-logic/palace-write.js.map +1 -1
  163. package/dist/tools-logic/pipeline-close.d.ts.map +1 -1
  164. package/dist/tools-logic/pipeline-close.js +2 -1
  165. package/dist/tools-logic/pipeline-close.js.map +1 -1
  166. package/dist/tools-logic/pipeline-open.d.ts.map +1 -1
  167. package/dist/tools-logic/pipeline-open.js +2 -1
  168. package/dist/tools-logic/pipeline-open.js.map +1 -1
  169. package/dist/tools-logic/predict-correction.d.ts +47 -0
  170. package/dist/tools-logic/predict-correction.d.ts.map +1 -0
  171. package/dist/tools-logic/predict-correction.js +137 -0
  172. package/dist/tools-logic/predict-correction.js.map +1 -0
  173. package/dist/tools-logic/prior-builder.d.ts +27 -0
  174. package/dist/tools-logic/prior-builder.d.ts.map +1 -0
  175. package/dist/tools-logic/prior-builder.js +57 -0
  176. package/dist/tools-logic/prior-builder.js.map +1 -0
  177. package/dist/tools-logic/recognition-builder.d.ts +116 -0
  178. package/dist/tools-logic/recognition-builder.d.ts.map +1 -0
  179. package/dist/tools-logic/recognition-builder.js +289 -0
  180. package/dist/tools-logic/recognition-builder.js.map +1 -0
  181. package/dist/tools-logic/safety-consolidation.d.ts +104 -0
  182. package/dist/tools-logic/safety-consolidation.d.ts.map +1 -0
  183. package/dist/tools-logic/safety-consolidation.js +256 -0
  184. package/dist/tools-logic/safety-consolidation.js.map +1 -0
  185. package/dist/tools-logic/session-end-reflect.d.ts +18 -0
  186. package/dist/tools-logic/session-end-reflect.d.ts.map +1 -1
  187. package/dist/tools-logic/session-end-reflect.js +68 -29
  188. package/dist/tools-logic/session-end-reflect.js.map +1 -1
  189. package/dist/tools-logic/session-end.d.ts +9 -0
  190. package/dist/tools-logic/session-end.d.ts.map +1 -1
  191. package/dist/tools-logic/session-end.js +111 -13
  192. package/dist/tools-logic/session-end.js.map +1 -1
  193. package/dist/tools-logic/session-start-lite.d.ts +2 -0
  194. package/dist/tools-logic/session-start-lite.d.ts.map +1 -1
  195. package/dist/tools-logic/session-start-lite.js +10 -0
  196. package/dist/tools-logic/session-start-lite.js.map +1 -1
  197. package/dist/tools-logic/session-start.d.ts +46 -0
  198. package/dist/tools-logic/session-start.d.ts.map +1 -1
  199. package/dist/tools-logic/session-start.js +96 -3
  200. package/dist/tools-logic/session-start.js.map +1 -1
  201. package/dist/tools-logic/skill-propose.d.ts +27 -0
  202. package/dist/tools-logic/skill-propose.d.ts.map +1 -0
  203. package/dist/tools-logic/skill-propose.js +66 -0
  204. package/dist/tools-logic/skill-propose.js.map +1 -0
  205. package/dist/tools-logic/skill-recall.d.ts +5 -0
  206. package/dist/tools-logic/skill-recall.d.ts.map +1 -1
  207. package/dist/tools-logic/skill-recall.js +14 -1
  208. package/dist/tools-logic/skill-recall.js.map +1 -1
  209. package/dist/tools-logic/smart-recall.d.ts +17 -0
  210. package/dist/tools-logic/smart-recall.d.ts.map +1 -1
  211. package/dist/tools-logic/smart-recall.js +51 -16
  212. package/dist/tools-logic/smart-recall.js.map +1 -1
  213. package/dist/tools-logic/store-doctor.d.ts +71 -0
  214. package/dist/tools-logic/store-doctor.d.ts.map +1 -0
  215. package/dist/tools-logic/store-doctor.js +387 -0
  216. package/dist/tools-logic/store-doctor.js.map +1 -0
  217. package/dist/tools-logic/store-repair.d.ts +64 -0
  218. package/dist/tools-logic/store-repair.d.ts.map +1 -0
  219. package/dist/tools-logic/store-repair.js +243 -0
  220. package/dist/tools-logic/store-repair.js.map +1 -0
  221. package/dist/tools-logic/supersession.d.ts +34 -0
  222. package/dist/tools-logic/supersession.d.ts.map +1 -0
  223. package/dist/tools-logic/supersession.js +103 -0
  224. package/dist/tools-logic/supersession.js.map +1 -0
  225. package/dist/types.d.ts +7 -1
  226. package/dist/types.d.ts.map +1 -1
  227. package/dist/types.js +1 -1
  228. package/dist/vector/local-vector-backend.d.ts.map +1 -1
  229. package/dist/vector/local-vector-backend.js +14 -17
  230. package/dist/vector/local-vector-backend.js.map +1 -1
  231. package/package.json +9 -1
  232. package/dist/relevance/injector.d.ts +0 -51
  233. package/dist/relevance/injector.d.ts.map +0 -1
  234. package/dist/relevance/injector.js +0 -121
  235. package/dist/relevance/injector.js.map +0 -1
  236. package/dist/relevance/precision.d.ts +0 -109
  237. package/dist/relevance/precision.d.ts.map +0 -1
  238. package/dist/relevance/precision.js +0 -279
  239. package/dist/relevance/precision.js.map +0 -1
  240. package/dist/relevance/promoter.d.ts +0 -60
  241. package/dist/relevance/promoter.d.ts.map +0 -1
  242. package/dist/relevance/promoter.js +0 -336
  243. package/dist/relevance/promoter.js.map +0 -1
  244. package/dist/relevance/stager.d.ts +0 -61
  245. package/dist/relevance/stager.d.ts.map +0 -1
  246. package/dist/relevance/stager.js +0 -251
  247. package/dist/relevance/stager.js.map +0 -1
  248. package/dist/relevance/surfacer.d.ts +0 -34
  249. package/dist/relevance/surfacer.d.ts.map +0 -1
  250. package/dist/relevance/surfacer.js +0 -333
  251. package/dist/relevance/surfacer.js.map +0 -1
@@ -0,0 +1,37 @@
1
+ /**
2
+ * drill-down.ts — the lossless fallback half of the Bridge (Wave 4).
3
+ *
4
+ * When the model tier (compressed recall) is not confident, the bridge drills
5
+ * DOWN into the lossless archive and attaches a verbatim source instead of
6
+ * answering thinly. `fetchVerbatim(project, key)` resolves a result item's
7
+ * `verbatimKey` to its raw text.
8
+ *
9
+ * Local-only this wave: the Supabase backend maps no `date` field and folds the
10
+ * slug into `title`, so remote drill-down is unsound until the remote query is
11
+ * extended (see plan §Wave 4 verified facts). Journal + palace local reads only.
12
+ *
13
+ * NEVER throws into recall — returns null on any error or path-escape attempt.
14
+ */
15
+ /** Locator stamped onto a recall result so the bridge can fetch its raw source. */
16
+ export interface VerbatimKey {
17
+ kind: "journal" | "palace";
18
+ /** journal: YYYY-MM-DD (validated before any path use). */
19
+ date?: string;
20
+ /** palace: room slug + file slug (sanitized before path.join). */
21
+ room?: string;
22
+ file?: string;
23
+ }
24
+ export interface VerbatimSource {
25
+ found: true;
26
+ /** Human-readable provenance, e.g. "journal/2026-06-01" or "palace/decisions/ranking". */
27
+ source: string;
28
+ /** Verbatim text, capped to ~1200 chars. */
29
+ text: string;
30
+ }
31
+ /**
32
+ * Resolve a verbatimKey to its raw source text. Never throws.
33
+ * Returns null when the date is malformed, the file is absent, or a path
34
+ * escape is detected.
35
+ */
36
+ export declare function fetchVerbatim(project: string, key: VerbatimKey | undefined): VerbatimSource | null;
37
+ //# sourceMappingURL=drill-down.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drill-down.d.ts","sourceRoot":"","sources":["../../src/tools-logic/drill-down.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,mFAAmF;AACnF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC3B,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,IAAI,CAAC;IACZ,0FAA0F;IAC1F,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;CACd;AAQD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,cAAc,GAAG,IAAI,CA6BlG"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * drill-down.ts — the lossless fallback half of the Bridge (Wave 4).
3
+ *
4
+ * When the model tier (compressed recall) is not confident, the bridge drills
5
+ * DOWN into the lossless archive and attaches a verbatim source instead of
6
+ * answering thinly. `fetchVerbatim(project, key)` resolves a result item's
7
+ * `verbatimKey` to its raw text.
8
+ *
9
+ * Local-only this wave: the Supabase backend maps no `date` field and folds the
10
+ * slug into `title`, so remote drill-down is unsound until the remote query is
11
+ * extended (see plan §Wave 4 verified facts). Journal + palace local reads only.
12
+ *
13
+ * NEVER throws into recall — returns null on any error or path-escape attempt.
14
+ */
15
+ import * as fs from "node:fs";
16
+ import * as path from "node:path";
17
+ import { readJournalFile } from "../helpers/journal-files.js";
18
+ import { palaceDir, sanitizeSlug } from "../storage/paths.js";
19
+ import { getRoot } from "../types.js";
20
+ /** Cap to n chars (no ellipsis — this is verbatim source, not a summary). */
21
+ const VERBATIM_CAP = 1200;
22
+ function cap(s) {
23
+ return s.length <= VERBATIM_CAP ? s : s.slice(0, VERBATIM_CAP);
24
+ }
25
+ /**
26
+ * Resolve a verbatimKey to its raw source text. Never throws.
27
+ * Returns null when the date is malformed, the file is absent, or a path
28
+ * escape is detected.
29
+ */
30
+ export function fetchVerbatim(project, key) {
31
+ if (!key)
32
+ return null;
33
+ try {
34
+ if (key.kind === "journal") {
35
+ if (!key.date || !/^\d{4}-\d{2}-\d{2}$/.test(key.date))
36
+ return null;
37
+ const text = readJournalFile(project, key.date);
38
+ if (!text)
39
+ return null;
40
+ return { found: true, source: `journal/${key.date}`, text: cap(text) };
41
+ }
42
+ // palace
43
+ if (!key.room || !key.file)
44
+ return null;
45
+ const safeRoom = sanitizeSlug(key.room);
46
+ const safeFile = sanitizeSlug(key.file);
47
+ const p = path.join(palaceDir(project), "rooms", safeRoom, `${safeFile}.md`);
48
+ // Defense-in-depth path-escape assertion (mirror compress.ts 169-173).
49
+ const root = getRoot();
50
+ const rootWithSep = root.endsWith(path.sep) ? root : root + path.sep;
51
+ if (!p.startsWith(rootWithSep) && p !== root) {
52
+ throw new Error(`Path escape blocked: room=${key.room} file=${key.file}`);
53
+ }
54
+ if (!fs.existsSync(p))
55
+ return null;
56
+ const text = fs.readFileSync(p, "utf-8");
57
+ return { found: true, source: `palace/${key.room}/${key.file}`, text: cap(text) };
58
+ }
59
+ catch {
60
+ return null; // never throw into recall
61
+ }
62
+ }
63
+ //# sourceMappingURL=drill-down.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drill-down.js","sourceRoot":"","sources":["../../src/tools-logic/drill-down.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAoBtC,6EAA6E;AAC7E,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,SAAS,GAAG,CAAC,CAAS;IACpB,OAAO,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,GAA4B;IACzE,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpE,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,CAAC;QAED,SAAS;QACT,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;QAE7E,uEAAuE;QACvE,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;QACrE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,0BAA0B;IACzC,CAAC;AACH,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * export-corrections.ts — the vendor-neutral, fail-closed-scrubbed export of
3
+ * corrections (backlog #1, revealed by the Hindsight integration).
4
+ *
5
+ * WHY: before this, the only way to get active corrections out of AgentRecall was
6
+ * to glob the on-disk JSON directly (schema-coupled, re-implements the scrub that
7
+ * WILL drift) or `ar recall` (drops severity/weight/recurrence). Every external
8
+ * memory backend (Hindsight, Mem0, Zep) had to re-port the egress scrub. This is
9
+ * the ONE supported export contract: a stable versioned schema, scrubbed through
10
+ * the FAIL-CLOSED scrubForExport (a surviving secret aborts the export, never
11
+ * leaks), active-only by default (never teach an external store a retracted
12
+ * belief).
13
+ *
14
+ * DELIBERATELY VENDOR-NEUTRAL: this emits the generic CorrectionExport shape, NOT
15
+ * a Hindsight/Mem0-specific payload — the vendor mapping belongs in the adapter,
16
+ * not in AgentRecall core.
17
+ */
18
+ /** Bump when the export shape changes — consumers pin/diff against this. */
19
+ export declare const CORRECTION_EXPORT_SCHEMA_VERSION = "corrections-export/v1";
20
+ /**
21
+ * One exported correction. A stable, vendor-neutral projection of CorrectionRecord
22
+ * with every free-text field already scrubbed. `confidence_basis` is explicit so a
23
+ * downstream store never mistakes `weight` for retrieval relevance or a truth
24
+ * probability — it is correction AUTHORITY (pre-empts the three-way `confidence`
25
+ * ambiguity, backlog #2).
26
+ */
27
+ export interface CorrectionExport {
28
+ schema_version: string;
29
+ id: string;
30
+ date: string;
31
+ project: string;
32
+ severity: "p0" | "p1";
33
+ kind: string;
34
+ rule: string;
35
+ context: string;
36
+ tags: string[];
37
+ weight: number | null;
38
+ confidence_basis: "authority-weight";
39
+ active: boolean;
40
+ authoritative: boolean | null;
41
+ retrieved_count: number;
42
+ heeded_count: number;
43
+ recurrence_count: number;
44
+ last_outcome: string | null;
45
+ }
46
+ export interface ExportCorrectionsOptions {
47
+ /** A specific project slug. Omit to export across ALL projects. */
48
+ project?: string;
49
+ /** Include retracted (active:false) records. Default false — active-only. */
50
+ includeRetracted?: boolean;
51
+ /** Inclusive lower bound on the correction date (YYYY-MM-DD). */
52
+ since?: string;
53
+ }
54
+ /**
55
+ * Export corrections as a stable, scrubbed, vendor-neutral array.
56
+ *
57
+ * Active-only by default (never teach an external store a retracted belief).
58
+ * Fail-closed: if any record holds a secret that cannot be redacted, the entire
59
+ * export throws SecretScanError naming the offending correction id — it never
60
+ * emits a partial set that silently omits the leaky record.
61
+ */
62
+ export declare function exportCorrections(opts?: ExportCorrectionsOptions): CorrectionExport[];
63
+ //# sourceMappingURL=export-corrections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-corrections.d.ts","sourceRoot":"","sources":["../../src/tools-logic/export-corrections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH,4EAA4E;AAC5E,eAAO,MAAM,gCAAgC,0BAA0B,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,gBAAgB,EAAE,kBAAkB,CAAC;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA4DD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,wBAA6B,GAAG,gBAAgB,EAAE,CA6BzF"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * export-corrections.ts — the vendor-neutral, fail-closed-scrubbed export of
3
+ * corrections (backlog #1, revealed by the Hindsight integration).
4
+ *
5
+ * WHY: before this, the only way to get active corrections out of AgentRecall was
6
+ * to glob the on-disk JSON directly (schema-coupled, re-implements the scrub that
7
+ * WILL drift) or `ar recall` (drops severity/weight/recurrence). Every external
8
+ * memory backend (Hindsight, Mem0, Zep) had to re-port the egress scrub. This is
9
+ * the ONE supported export contract: a stable versioned schema, scrubbed through
10
+ * the FAIL-CLOSED scrubForExport (a surviving secret aborts the export, never
11
+ * leaks), active-only by default (never teach an external store a retracted
12
+ * belief).
13
+ *
14
+ * DELIBERATELY VENDOR-NEUTRAL: this emits the generic CorrectionExport shape, NOT
15
+ * a Hindsight/Mem0-specific payload — the vendor mapping belongs in the adapter,
16
+ * not in AgentRecall core.
17
+ */
18
+ import * as fs from "node:fs";
19
+ import * as path from "node:path";
20
+ import { getRoot } from "../types.js";
21
+ import { readCorrections } from "../storage/corrections.js";
22
+ import { scrubForExport, SecretScanError } from "../storage/content-guard.js";
23
+ /** Bump when the export shape changes — consumers pin/diff against this. */
24
+ export const CORRECTION_EXPORT_SCHEMA_VERSION = "corrections-export/v1";
25
+ function toExport(rec) {
26
+ // scrubForExport throws SecretScanError if a secret survives — let it propagate
27
+ // so the whole export aborts loudly rather than emitting a partial/leaky set.
28
+ // EVERY free-text string field is scrubbed — not just rule/context/tags. A
29
+ // corrupt or hand-edited record could carry a secret in project, kind, or
30
+ // last_outcome too; defense-in-depth scrubs them all. (id/date are structurally
31
+ // constrained auto-generated values and carry no free text.)
32
+ return {
33
+ schema_version: CORRECTION_EXPORT_SCHEMA_VERSION,
34
+ id: rec.id,
35
+ date: rec.date,
36
+ project: scrubForExport(rec.project ?? ""),
37
+ severity: rec.severity,
38
+ kind: scrubForExport(String(rec.kind ?? "correction")),
39
+ rule: scrubForExport(rec.rule ?? ""),
40
+ context: scrubForExport(rec.context ?? ""),
41
+ tags: (rec.tags ?? []).map((t) => scrubForExport(String(t))),
42
+ weight: typeof rec.weight === "number" ? rec.weight : null,
43
+ confidence_basis: "authority-weight",
44
+ active: rec.active !== false,
45
+ authoritative: typeof rec.authoritative === "boolean" ? rec.authoritative : null,
46
+ retrieved_count: rec.retrieved_count ?? 0,
47
+ heeded_count: rec.heeded_count ?? 0,
48
+ recurrence_count: rec.recurrence_count ?? 0,
49
+ last_outcome: rec.last_outcome != null ? scrubForExport(rec.last_outcome) : null,
50
+ };
51
+ }
52
+ /**
53
+ * Project slugs that actually have a corrections directory with ≥1 record.
54
+ * Deliberately NOT listAllProjects() (which enumerates by journal presence) — a
55
+ * project can have corrections without a journal, and a security export must not
56
+ * silently skip it.
57
+ */
58
+ function projectsWithCorrections() {
59
+ const dir = path.join(getRoot(), "projects");
60
+ const out = [];
61
+ let slugs = [];
62
+ try {
63
+ slugs = fs.readdirSync(dir);
64
+ }
65
+ catch {
66
+ return []; // no projects dir (or unreadable) — nothing to export
67
+ }
68
+ for (const slug of slugs) {
69
+ const cdir = path.join(dir, slug, "corrections");
70
+ try {
71
+ // readdirSync throws ENOENT for a missing corrections dir — the catch makes
72
+ // existsSync redundant and closes the existsSync→readdirSync TOCTOU window.
73
+ if (fs.readdirSync(cdir).some((f) => f.endsWith(".json"))) {
74
+ out.push(slug);
75
+ }
76
+ }
77
+ catch {
78
+ // no corrections dir, or unreadable — skip, never throw
79
+ }
80
+ }
81
+ return out;
82
+ }
83
+ /**
84
+ * Export corrections as a stable, scrubbed, vendor-neutral array.
85
+ *
86
+ * Active-only by default (never teach an external store a retracted belief).
87
+ * Fail-closed: if any record holds a secret that cannot be redacted, the entire
88
+ * export throws SecretScanError naming the offending correction id — it never
89
+ * emits a partial set that silently omits the leaky record.
90
+ */
91
+ export function exportCorrections(opts = {}) {
92
+ const slugs = opts.project ? [opts.project] : projectsWithCorrections();
93
+ const out = [];
94
+ for (const slug of slugs) {
95
+ let records;
96
+ try {
97
+ records = readCorrections(slug);
98
+ }
99
+ catch {
100
+ // A project dir that became unreadable between enumeration and read — skip,
101
+ // consistent with projectsWithCorrections()'s never-throw posture.
102
+ continue;
103
+ }
104
+ for (const rec of records) {
105
+ if (!opts.includeRetracted && rec.active === false)
106
+ continue;
107
+ if (opts.since && rec.date < opts.since)
108
+ continue;
109
+ try {
110
+ out.push(toExport(rec));
111
+ }
112
+ catch (e) {
113
+ if (e instanceof SecretScanError) {
114
+ // Re-throw with the offending id so the operator knows exactly which
115
+ // correction to redact or retract before re-running.
116
+ throw new SecretScanError(`${e.label} (in correction ${rec.id})`);
117
+ }
118
+ throw e;
119
+ }
120
+ }
121
+ }
122
+ return out;
123
+ }
124
+ //# sourceMappingURL=export-corrections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-corrections.js","sourceRoot":"","sources":["../../src/tools-logic/export-corrections.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"journal-capture.d.ts","sourceRoot":"","sources":["../../src/tools-logic/journal-capture.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAiF9F"}
1
+ {"version":3,"file":"journal-capture.d.ts","sourceRoot":"","sources":["../../src/tools-logic/journal-capture.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAoF9F"}
@@ -32,11 +32,14 @@ export async function journalCapture(input) {
32
32
  const logFileName = captureLogFileName(date, fs.existsSync(baseLogPath), {
33
33
  saveType: "capture",
34
34
  content: combined,
35
- });
35
+ }, dir);
36
36
  const logPath = path.join(dir, logFileName);
37
37
  const entryNum = countLogEntries(logPath) + 1;
38
38
  const tagStr = input.tags && input.tags.length > 0 ? ` [${input.tags.join(", ")}]` : "";
39
39
  const timestamp = new Date().toISOString().slice(11, 19);
40
+ // Wave 2 note: capture is the CURATED stream — these 2000/5000 caps are
41
+ // intentional. The lossless tier is journal/archive/raw (verbatim, uncapped);
42
+ // do not remove these caps to "preserve everything" — that is the raw tier's job.
40
43
  const question = input.question.length > 2000 ? input.question.slice(0, 2000) + "..." : input.question;
41
44
  const answer = input.answer.length > 5000 ? input.answer.slice(0, 5000) + "..." : input.answer;
42
45
  let entry = `### Q${entryNum} (${timestamp})${tagStr}\n\n`;
@@ -1 +1 @@
1
- {"version":3,"file":"journal-capture.js","sourceRoot":"","sources":["../../src/tools-logic/journal-capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journal-capture.js","sourceRoot":"","sources":["../../src/tools-logic/journal-capture.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"journal-write.d.ts","sourceRoot":"","sources":["../../src/tools-logic/journal-write.ts"],"names":[],"mappings":"AAWA,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAGjF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAClE,YAAY,CAAC,EAAE;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC;CACV;AAoCD,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAuFxF"}
1
+ {"version":3,"file":"journal-write.d.ts","sourceRoot":"","sources":["../../src/tools-logic/journal-write.ts"],"names":[],"mappings":"AAWA,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAIjF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAClE,YAAY,CAAC,EAAE;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC;CACV;AAoCD,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAuFxF"}
@@ -11,6 +11,7 @@ import { generateFrontmatter } from "../palace/obsidian.js";
11
11
  import { updatePalaceIndex } from "../palace/index-manager.js";
12
12
  import { journalFileName } from "../storage/session.js";
13
13
  import { syncToSupabase } from "../supabase/sync.js";
14
+ import { scrubForCloud } from "../storage/content-guard.js";
14
15
  /** Lightweight content → palace room classifier. Returns null if unclear. */
15
16
  function classifyContent(content) {
16
17
  const lower = content.toLowerCase();
@@ -98,8 +99,8 @@ export async function journalWrite(input) {
98
99
  updatePalaceIndex(slug);
99
100
  palaceResult = { room: input.palace_room, topic: topicFile, fan_out: fanOutResult.updatedRooms };
100
101
  }
101
- // Async sync to Supabase (non-blocking)
102
- syncToSupabase(filePath, updated, slug, "journal");
102
+ // Async sync to Supabase (non-blocking) — scrub injection and secrets before egress.
103
+ syncToSupabase(filePath, scrubForCloud(updated), slug, "journal");
103
104
  // Advisory routing hint — only when no palace_room was already specified
104
105
  let routingHint = null;
105
106
  if (!input.palace_room) {
@@ -1 +1 @@
1
- {"version":3,"file":"journal-write.js","sourceRoot":"","sources":["../../src/tools-logic/journal-write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journal-write.js","sourceRoot":"","sources":["../../src/tools-logic/journal-write.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,13 @@
4
4
  * Unlike `recall` (general search), this is called mid-task:
5
5
  * "I'm about to do X — what should I know?"
6
6
  *
7
- * Only returns high/medium confidence results. Designed for pull-on-demand
8
- * retrieval rather than push-on-start injection.
7
+ * Returns high/medium confidence results as the primary list. When the primary
8
+ * filter is empty (the match exists but is only low-confidence), the BRIDGE
9
+ * (Wave 4) attaches the verbatim drill-down source under `fallback` instead of
10
+ * silently suppressing it — so the agent gets the lossless source plus a
11
+ * "verify before relying" caution rather than a bare "nothing found" string.
9
12
  */
13
+ import { type BridgedSource } from "./smart-recall.js";
10
14
  export interface MemoryQueryInput {
11
15
  /** Describe what you're about to do or decide. e.g. "push to npm" or "modify auth middleware" */
12
16
  intent: string;
@@ -28,9 +32,12 @@ export interface MemoryQueryResult {
28
32
  intent: string;
29
33
  project: string;
30
34
  results: MemoryQueryItem[];
31
- /** True when no memory is relevant to this intent at the given confidence threshold. */
35
+ /** True when no memory passed the confidence threshold for the primary list. */
32
36
  empty: boolean;
33
37
  guidance?: string;
38
+ /** Verbatim drill-down source attached when the primary filter was empty but a
39
+ * low-confidence match exists (Wave 4 bridge). */
40
+ fallback?: BridgedSource[];
34
41
  }
35
42
  export declare function memoryQuery(input: MemoryQueryInput): Promise<MemoryQueryResult>;
36
43
  //# sourceMappingURL=memory-query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-query.d.ts","sourceRoot":"","sources":["../../src/tools-logic/memory-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,WAAW,gBAAgB;IAC/B,iGAAiG;IACjG,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC3C,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,wFAAwF;IACxF,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAgBD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgCrF"}
1
+ {"version":3,"file":"memory-query.d.ts","sourceRoot":"","sources":["../../src/tools-logic/memory-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOpE,MAAM,WAAW,gBAAgB;IAC/B,iGAAiG;IACjG,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC3C,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,gFAAgF;IAChF,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;uDACmD;IACnD,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAgBD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuDrF"}
@@ -4,8 +4,11 @@
4
4
  * Unlike `recall` (general search), this is called mid-task:
5
5
  * "I'm about to do X — what should I know?"
6
6
  *
7
- * Only returns high/medium confidence results. Designed for pull-on-demand
8
- * retrieval rather than push-on-start injection.
7
+ * Returns high/medium confidence results as the primary list. When the primary
8
+ * filter is empty (the match exists but is only low-confidence), the BRIDGE
9
+ * (Wave 4) attaches the verbatim drill-down source under `fallback` instead of
10
+ * silently suppressing it — so the agent gets the lossless source plus a
11
+ * "verify before relying" caution rather than a bare "nothing found" string.
9
12
  */
10
13
  import { smartRecall } from "./smart-recall.js";
11
14
  import { resolveProject } from "../storage/project.js";
@@ -28,6 +31,7 @@ export async function memoryQuery(input) {
28
31
  query: input.intent,
29
32
  project,
30
33
  limit: limit * 2, // over-fetch then filter by confidence
34
+ drilldown: true, // bridge: attach verbatim source for low-confidence hits
31
35
  });
32
36
  const filtered = recalled.results
33
37
  .filter((r) => r.score >= minScore)
@@ -40,14 +44,34 @@ export async function memoryQuery(input) {
40
44
  confidence: r.confidence,
41
45
  room: r.room,
42
46
  }));
47
+ if (filtered.length > 0) {
48
+ return {
49
+ intent: input.intent,
50
+ project,
51
+ results: filtered,
52
+ empty: false,
53
+ };
54
+ }
55
+ // Primary filter empty — fall back to the bridged verbatim source if the
56
+ // model tier had a low-confidence match worth drilling into.
57
+ const fallback = recalled.bridged;
58
+ if (fallback && fallback.length > 0) {
59
+ return {
60
+ intent: input.intent,
61
+ project,
62
+ results: [],
63
+ empty: true,
64
+ fallback,
65
+ guidance: `Low-confidence match — verbatim source attached; verify before relying.`,
66
+ };
67
+ }
43
68
  return {
44
69
  intent: input.intent,
45
70
  project,
46
- results: filtered,
47
- empty: filtered.length === 0,
48
- guidance: filtered.length === 0
49
- ? `No memory found relevant to: "${input.intent}". This may be a new area — proceed with standard caution.`
50
- : undefined,
71
+ results: [],
72
+ empty: true,
73
+ fallback: [],
74
+ guidance: `No memory found relevant to: "${input.intent}". This may be a new area — proceed with standard caution.`,
51
75
  };
52
76
  }
53
77
  //# sourceMappingURL=memory-query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-query.js","sourceRoot":"","sources":["../../src/tools-logic/memory-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAkCvD,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,MAAM,oBAAoB,GAA2B;IACnD,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,IAAI;IACZ,GAAG,EAAE,IAAI;CACV,CAAC;AAEF,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAuB;IACvD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,cAAc,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC;IAChF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAE/B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,OAAO;QACP,KAAK,EAAE,KAAK,GAAG,CAAC,EAAG,uCAAuC;KAC3D,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO;SAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC;SAClC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO;QACP,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC5B,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;YAC7B,CAAC,CAAC,iCAAiC,KAAK,CAAC,MAAM,4DAA4D;YAC3G,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"memory-query.js","sourceRoot":"","sources":["../../src/tools-logic/memory-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAsB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAqCvD,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,MAAM,oBAAoB,GAA2B;IACnD,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,IAAI;IACZ,GAAG,EAAE,IAAI;CACV,CAAC;AAEF,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAuB;IACvD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,cAAc,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC;IAChF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAE/B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,OAAO;QACP,KAAK,EAAE,KAAK,GAAG,CAAC,EAAG,uCAAuC;QAC1D,SAAS,EAAE,IAAI,EAAI,yDAAyD;KAC7E,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO;SAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC;SAClC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAC;IAEN,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO;YACP,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC;IAClC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO;YACL,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO;YACP,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,IAAI;YACX,QAAQ;YACR,QAAQ,EAAE,yEAAyE;SACpF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO;QACP,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,iCAAiC,KAAK,CAAC,MAAM,4DAA4D;KACpH,CAAC;AACJ,CAAC"}