agent-recall-core 3.4.31 → 3.4.36

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 (270) 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 +57 -17
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +60 -14
  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/ab-experiment.d.ts +184 -0
  52. package/dist/storage/ab-experiment.d.ts.map +1 -0
  53. package/dist/storage/ab-experiment.js +294 -0
  54. package/dist/storage/ab-experiment.js.map +1 -0
  55. package/dist/storage/archive-prune.d.ts +56 -0
  56. package/dist/storage/archive-prune.d.ts.map +1 -0
  57. package/dist/storage/archive-prune.js +118 -0
  58. package/dist/storage/archive-prune.js.map +1 -0
  59. package/dist/storage/archive-write.d.ts +38 -0
  60. package/dist/storage/archive-write.d.ts.map +1 -0
  61. package/dist/storage/archive-write.js +98 -0
  62. package/dist/storage/archive-write.js.map +1 -0
  63. package/dist/storage/blind-spots-store.d.ts +30 -0
  64. package/dist/storage/blind-spots-store.d.ts.map +1 -0
  65. package/dist/storage/blind-spots-store.js +91 -0
  66. package/dist/storage/blind-spots-store.js.map +1 -0
  67. package/dist/storage/capture-router.d.ts +60 -0
  68. package/dist/storage/capture-router.d.ts.map +1 -0
  69. package/dist/storage/capture-router.js +133 -0
  70. package/dist/storage/capture-router.js.map +1 -0
  71. package/dist/storage/classification.d.ts +36 -0
  72. package/dist/storage/classification.d.ts.map +1 -0
  73. package/dist/storage/classification.js +78 -0
  74. package/dist/storage/classification.js.map +1 -0
  75. package/dist/storage/consolidation-queue.d.ts +39 -0
  76. package/dist/storage/consolidation-queue.d.ts.map +1 -0
  77. package/dist/storage/consolidation-queue.js +120 -0
  78. package/dist/storage/consolidation-queue.js.map +1 -0
  79. package/dist/storage/content-guard.d.ts +74 -0
  80. package/dist/storage/content-guard.d.ts.map +1 -0
  81. package/dist/storage/content-guard.js +179 -0
  82. package/dist/storage/content-guard.js.map +1 -0
  83. package/dist/storage/corrections.d.ts +329 -22
  84. package/dist/storage/corrections.d.ts.map +1 -1
  85. package/dist/storage/corrections.js +788 -58
  86. package/dist/storage/corrections.js.map +1 -1
  87. package/dist/storage/durable-intent.d.ts +49 -0
  88. package/dist/storage/durable-intent.d.ts.map +1 -0
  89. package/dist/storage/durable-intent.js +124 -0
  90. package/dist/storage/durable-intent.js.map +1 -0
  91. package/dist/storage/filelock.d.ts +6 -0
  92. package/dist/storage/filelock.d.ts.map +1 -1
  93. package/dist/storage/filelock.js +6 -1
  94. package/dist/storage/filelock.js.map +1 -1
  95. package/dist/storage/memory-protocol.d.ts +19 -0
  96. package/dist/storage/memory-protocol.d.ts.map +1 -0
  97. package/dist/storage/memory-protocol.js +101 -0
  98. package/dist/storage/memory-protocol.js.map +1 -0
  99. package/dist/storage/paths.d.ts +23 -0
  100. package/dist/storage/paths.d.ts.map +1 -1
  101. package/dist/storage/paths.js +39 -0
  102. package/dist/storage/paths.js.map +1 -1
  103. package/dist/storage/retention.d.ts +23 -0
  104. package/dist/storage/retention.d.ts.map +1 -0
  105. package/dist/storage/retention.js +48 -0
  106. package/dist/storage/retention.js.map +1 -0
  107. package/dist/storage/session.d.ts +2 -2
  108. package/dist/storage/session.d.ts.map +1 -1
  109. package/dist/storage/session.js +11 -1
  110. package/dist/storage/session.js.map +1 -1
  111. package/dist/supabase/config.d.ts +26 -0
  112. package/dist/supabase/config.d.ts.map +1 -1
  113. package/dist/supabase/config.js +11 -0
  114. package/dist/supabase/config.js.map +1 -1
  115. package/dist/supabase/recall-backend.d.ts +1 -0
  116. package/dist/supabase/recall-backend.d.ts.map +1 -1
  117. package/dist/supabase/recall-backend.js +13 -13
  118. package/dist/supabase/recall-backend.js.map +1 -1
  119. package/dist/supabase/sync.d.ts +1 -1
  120. package/dist/supabase/sync.d.ts.map +1 -1
  121. package/dist/supabase/sync.js +85 -3
  122. package/dist/supabase/sync.js.map +1 -1
  123. package/dist/tools-logic/bootstrap.d.ts +15 -0
  124. package/dist/tools-logic/bootstrap.d.ts.map +1 -1
  125. package/dist/tools-logic/bootstrap.js +238 -47
  126. package/dist/tools-logic/bootstrap.js.map +1 -1
  127. package/dist/tools-logic/brief.d.ts +84 -0
  128. package/dist/tools-logic/brief.d.ts.map +1 -0
  129. package/dist/tools-logic/brief.js +193 -0
  130. package/dist/tools-logic/brief.js.map +1 -0
  131. package/dist/tools-logic/check-action.d.ts +9 -0
  132. package/dist/tools-logic/check-action.d.ts.map +1 -1
  133. package/dist/tools-logic/check-action.js +61 -3
  134. package/dist/tools-logic/check-action.js.map +1 -1
  135. package/dist/tools-logic/check.d.ts +7 -0
  136. package/dist/tools-logic/check.d.ts.map +1 -1
  137. package/dist/tools-logic/check.js +24 -2
  138. package/dist/tools-logic/check.js.map +1 -1
  139. package/dist/tools-logic/confidence.d.ts +50 -0
  140. package/dist/tools-logic/confidence.d.ts.map +1 -0
  141. package/dist/tools-logic/confidence.js +70 -0
  142. package/dist/tools-logic/confidence.js.map +1 -0
  143. package/dist/tools-logic/drill-down.d.ts +37 -0
  144. package/dist/tools-logic/drill-down.d.ts.map +1 -0
  145. package/dist/tools-logic/drill-down.js +63 -0
  146. package/dist/tools-logic/drill-down.js.map +1 -0
  147. package/dist/tools-logic/export-corrections.d.ts +63 -0
  148. package/dist/tools-logic/export-corrections.d.ts.map +1 -0
  149. package/dist/tools-logic/export-corrections.js +124 -0
  150. package/dist/tools-logic/export-corrections.js.map +1 -0
  151. package/dist/tools-logic/journal-capture.d.ts.map +1 -1
  152. package/dist/tools-logic/journal-capture.js +4 -1
  153. package/dist/tools-logic/journal-capture.js.map +1 -1
  154. package/dist/tools-logic/journal-write.d.ts.map +1 -1
  155. package/dist/tools-logic/journal-write.js +3 -2
  156. package/dist/tools-logic/journal-write.js.map +1 -1
  157. package/dist/tools-logic/local-archive-backend.d.ts +33 -0
  158. package/dist/tools-logic/local-archive-backend.d.ts.map +1 -0
  159. package/dist/tools-logic/local-archive-backend.js +124 -0
  160. package/dist/tools-logic/local-archive-backend.js.map +1 -0
  161. package/dist/tools-logic/memory-backend.d.ts +74 -0
  162. package/dist/tools-logic/memory-backend.d.ts.map +1 -0
  163. package/dist/tools-logic/memory-backend.js +172 -0
  164. package/dist/tools-logic/memory-backend.js.map +1 -0
  165. package/dist/tools-logic/memory-query.d.ts +10 -3
  166. package/dist/tools-logic/memory-query.d.ts.map +1 -1
  167. package/dist/tools-logic/memory-query.js +31 -7
  168. package/dist/tools-logic/memory-query.js.map +1 -1
  169. package/dist/tools-logic/mirror-builder.d.ts +115 -0
  170. package/dist/tools-logic/mirror-builder.d.ts.map +1 -0
  171. package/dist/tools-logic/mirror-builder.js +348 -0
  172. package/dist/tools-logic/mirror-builder.js.map +1 -0
  173. package/dist/tools-logic/palace-write.d.ts.map +1 -1
  174. package/dist/tools-logic/palace-write.js +3 -2
  175. package/dist/tools-logic/palace-write.js.map +1 -1
  176. package/dist/tools-logic/pipeline-close.d.ts.map +1 -1
  177. package/dist/tools-logic/pipeline-close.js +2 -1
  178. package/dist/tools-logic/pipeline-close.js.map +1 -1
  179. package/dist/tools-logic/pipeline-open.d.ts.map +1 -1
  180. package/dist/tools-logic/pipeline-open.js +2 -1
  181. package/dist/tools-logic/pipeline-open.js.map +1 -1
  182. package/dist/tools-logic/predict-correction.d.ts +47 -0
  183. package/dist/tools-logic/predict-correction.d.ts.map +1 -0
  184. package/dist/tools-logic/predict-correction.js +137 -0
  185. package/dist/tools-logic/predict-correction.js.map +1 -0
  186. package/dist/tools-logic/prior-builder.d.ts +27 -0
  187. package/dist/tools-logic/prior-builder.d.ts.map +1 -0
  188. package/dist/tools-logic/prior-builder.js +90 -0
  189. package/dist/tools-logic/prior-builder.js.map +1 -0
  190. package/dist/tools-logic/recognition-builder.d.ts +122 -0
  191. package/dist/tools-logic/recognition-builder.d.ts.map +1 -0
  192. package/dist/tools-logic/recognition-builder.js +289 -0
  193. package/dist/tools-logic/recognition-builder.js.map +1 -0
  194. package/dist/tools-logic/safety-consolidation.d.ts +104 -0
  195. package/dist/tools-logic/safety-consolidation.d.ts.map +1 -0
  196. package/dist/tools-logic/safety-consolidation.js +256 -0
  197. package/dist/tools-logic/safety-consolidation.js.map +1 -0
  198. package/dist/tools-logic/session-end-reflect.d.ts +18 -0
  199. package/dist/tools-logic/session-end-reflect.d.ts.map +1 -1
  200. package/dist/tools-logic/session-end-reflect.js +69 -30
  201. package/dist/tools-logic/session-end-reflect.js.map +1 -1
  202. package/dist/tools-logic/session-end.d.ts +18 -0
  203. package/dist/tools-logic/session-end.d.ts.map +1 -1
  204. package/dist/tools-logic/session-end.js +189 -34
  205. package/dist/tools-logic/session-end.js.map +1 -1
  206. package/dist/tools-logic/session-start-lite.d.ts +2 -0
  207. package/dist/tools-logic/session-start-lite.d.ts.map +1 -1
  208. package/dist/tools-logic/session-start-lite.js +11 -2
  209. package/dist/tools-logic/session-start-lite.js.map +1 -1
  210. package/dist/tools-logic/session-start.d.ts +81 -2
  211. package/dist/tools-logic/session-start.d.ts.map +1 -1
  212. package/dist/tools-logic/session-start.js +357 -40
  213. package/dist/tools-logic/session-start.js.map +1 -1
  214. package/dist/tools-logic/skill-propose.d.ts +27 -0
  215. package/dist/tools-logic/skill-propose.d.ts.map +1 -0
  216. package/dist/tools-logic/skill-propose.js +66 -0
  217. package/dist/tools-logic/skill-propose.js.map +1 -0
  218. package/dist/tools-logic/skill-recall.d.ts +5 -0
  219. package/dist/tools-logic/skill-recall.d.ts.map +1 -1
  220. package/dist/tools-logic/skill-recall.js +14 -1
  221. package/dist/tools-logic/skill-recall.js.map +1 -1
  222. package/dist/tools-logic/smart-recall.d.ts +17 -0
  223. package/dist/tools-logic/smart-recall.d.ts.map +1 -1
  224. package/dist/tools-logic/smart-recall.js +51 -16
  225. package/dist/tools-logic/smart-recall.js.map +1 -1
  226. package/dist/tools-logic/smart-remember.js +8 -9
  227. package/dist/tools-logic/smart-remember.js.map +1 -1
  228. package/dist/tools-logic/store-doctor.d.ts +71 -0
  229. package/dist/tools-logic/store-doctor.d.ts.map +1 -0
  230. package/dist/tools-logic/store-doctor.js +387 -0
  231. package/dist/tools-logic/store-doctor.js.map +1 -0
  232. package/dist/tools-logic/store-repair.d.ts +64 -0
  233. package/dist/tools-logic/store-repair.d.ts.map +1 -0
  234. package/dist/tools-logic/store-repair.js +243 -0
  235. package/dist/tools-logic/store-repair.js.map +1 -0
  236. package/dist/tools-logic/supersession.d.ts +34 -0
  237. package/dist/tools-logic/supersession.d.ts.map +1 -0
  238. package/dist/tools-logic/supersession.js +103 -0
  239. package/dist/tools-logic/supersession.js.map +1 -0
  240. package/dist/types.d.ts +7 -1
  241. package/dist/types.d.ts.map +1 -1
  242. package/dist/types.js +1 -1
  243. package/dist/vector/embedding.d.ts +8 -0
  244. package/dist/vector/embedding.d.ts.map +1 -1
  245. package/dist/vector/embedding.js +9 -1
  246. package/dist/vector/embedding.js.map +1 -1
  247. package/dist/vector/local-vector-backend.d.ts.map +1 -1
  248. package/dist/vector/local-vector-backend.js +14 -17
  249. package/dist/vector/local-vector-backend.js.map +1 -1
  250. package/package.json +2 -2
  251. package/dist/relevance/injector.d.ts +0 -51
  252. package/dist/relevance/injector.d.ts.map +0 -1
  253. package/dist/relevance/injector.js +0 -121
  254. package/dist/relevance/injector.js.map +0 -1
  255. package/dist/relevance/precision.d.ts +0 -109
  256. package/dist/relevance/precision.d.ts.map +0 -1
  257. package/dist/relevance/precision.js +0 -279
  258. package/dist/relevance/precision.js.map +0 -1
  259. package/dist/relevance/promoter.d.ts +0 -60
  260. package/dist/relevance/promoter.d.ts.map +0 -1
  261. package/dist/relevance/promoter.js +0 -336
  262. package/dist/relevance/promoter.js.map +0 -1
  263. package/dist/relevance/stager.d.ts +0 -61
  264. package/dist/relevance/stager.d.ts.map +0 -1
  265. package/dist/relevance/stager.js +0 -251
  266. package/dist/relevance/stager.js.map +0 -1
  267. package/dist/relevance/surfacer.d.ts +0 -34
  268. package/dist/relevance/surfacer.d.ts.map +0 -1
  269. package/dist/relevance/surfacer.js +0 -333
  270. package/dist/relevance/surfacer.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"stager.js","sourceRoot":"","sources":["../../src/relevance/stager.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- export interface Candidate {
2
- /** Unique id, e.g. "palace:goals/decisions.md" or "journal:2026-06-19.md". */
3
- id: string;
4
- source: "palace" | "journal" | "staging" | "correction";
5
- /** Room slug for palace/staging sources; omitted otherwise. */
6
- room?: string;
7
- /** ≤ 80 chars. */
8
- title: string;
9
- /** ≤ 300 chars preview. */
10
- snippet: string;
11
- /** 0..1 (clamped). */
12
- score: number;
13
- /** One-line explanation for the Injector. */
14
- why: string;
15
- }
16
- export interface SurfaceOptions {
17
- topK?: number;
18
- minScore?: number;
19
- }
20
- /**
21
- * Surface up to `topK` candidates from a project relevant to `query`.
22
- *
23
- * Returns an EMPTY array when:
24
- * • query is empty/whitespace (no signal to score against),
25
- * • the project has no palace/journal yet (cold start), or
26
- * • nothing clears `minScore` (silence is precision — better to surface
27
- * nothing than to pollute context with low-confidence noise).
28
- *
29
- * The function is read-only and synchronous internally, but exposed as async to
30
- * leave room for future remote/embedding backends without changing the surface
31
- * (the Injector awaits it either way).
32
- */
33
- export declare function surface(project: string, query: string, opts?: SurfaceOptions): Promise<Candidate[]>;
34
- //# sourceMappingURL=surfacer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"surfacer.d.ts","sourceRoot":"","sources":["../../src/relevance/surfacer.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,SAAS;IACxB,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;IACxD,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA6BD;;;;;;;;;;;;GAYG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC,CAiLtB"}
@@ -1,333 +0,0 @@
1
- /**
2
- * Surfacer — local retrieval for the Ambient Relevance Loop (v3.5.0 P-B).
3
- *
4
- * Per spec §4.2 (Surface) + §5: cheap, fully-local retrieval over palace + journal
5
- * + active corrections. Combines lexical overlap, room salience, and recency into
6
- * a single score. Threshold-gated (silence is precision) and top-K capped.
7
- *
8
- * Zero cloud. Zero embeddings dependency. Returns Candidate[] with a `why` field
9
- * the Injector uses to explain each surfaced memory.
10
- */
11
- import * as fs from "node:fs";
12
- import * as path from "node:path";
13
- import { listRooms } from "../palace/rooms.js";
14
- import { listJournalFiles } from "../helpers/journal-files.js";
15
- import { readActiveCorrections } from "../storage/corrections.js";
16
- import { roomDir } from "../storage/paths.js";
17
- import { readStaging } from "./stager.js";
18
- // ---------------------------------------------------------------------------
19
- // Tunables
20
- // ---------------------------------------------------------------------------
21
- const DEFAULT_TOP_K = 3;
22
- /** SILENCE IS PRECISION — anything below this floor returns nothing. */
23
- const DEFAULT_MIN_SCORE = 0.3;
24
- /** Cap journal scan to keep latency bounded (spec §10: tens-of-ms budget). */
25
- const JOURNAL_SCAN_CAP = 30;
26
- /** Cap staging scan — staging holds this-session exchanges; small N is plenty. */
27
- const STAGING_SCAN_CAP = 50;
28
- /** Snippet budget for a staged exchange (user+assistant concat). */
29
- const STAGING_SNIPPET_BUDGET = 400;
30
- /** Bytes of file content to consider for token overlap. */
31
- const PALACE_SNIPPET_BUDGET = 400;
32
- const JOURNAL_SNIPPET_BUDGET = 400;
33
- const SNIPPET_MAX_CHARS = 300;
34
- const TITLE_MAX_CHARS = 80;
35
- /** Correction surfacing — minimum lexical overlap before we surface. */
36
- const CORRECTION_OVERLAP_MIN = 0.3;
37
- /** Strong bonus added to the correction's surfaced score. */
38
- const CORRECTION_SCORE_BONUS = 0.3;
39
- // ---------------------------------------------------------------------------
40
- // Surface
41
- // ---------------------------------------------------------------------------
42
- /**
43
- * Surface up to `topK` candidates from a project relevant to `query`.
44
- *
45
- * Returns an EMPTY array when:
46
- * • query is empty/whitespace (no signal to score against),
47
- * • the project has no palace/journal yet (cold start), or
48
- * • nothing clears `minScore` (silence is precision — better to surface
49
- * nothing than to pollute context with low-confidence noise).
50
- *
51
- * The function is read-only and synchronous internally, but exposed as async to
52
- * leave room for future remote/embedding backends without changing the surface
53
- * (the Injector awaits it either way).
54
- */
55
- export async function surface(project, query, opts) {
56
- // Empty-query guard FIRST — tokenOverlap of "" against anything is 0 anyway,
57
- // but exiting early skips all the fs work for the no-signal case.
58
- if (!query || query.trim() === "")
59
- return [];
60
- const topK = opts?.topK ?? DEFAULT_TOP_K;
61
- const minScore = opts?.minScore ?? DEFAULT_MIN_SCORE;
62
- const candidates = [];
63
- // ── Palace topics ─────────────────────────────────────────────────────────
64
- let rooms;
65
- try {
66
- rooms = listRooms(project);
67
- }
68
- catch {
69
- rooms = [];
70
- }
71
- for (const room of rooms) {
72
- let dir;
73
- try {
74
- dir = roomDir(project, room.slug);
75
- }
76
- catch {
77
- continue; // bad slug — skip, never throw out of surface()
78
- }
79
- let topicFiles;
80
- try {
81
- topicFiles = fs.readdirSync(dir);
82
- }
83
- catch {
84
- continue; // missing/unreadable room dir — skip
85
- }
86
- for (const file of topicFiles) {
87
- if (!file.endsWith(".md"))
88
- continue;
89
- if (file === "README.md")
90
- continue; // README is room scaffold, not a topic
91
- const fullPath = path.join(dir, file);
92
- let content;
93
- try {
94
- content = fs.readFileSync(fullPath, "utf-8").slice(0, PALACE_SNIPPET_BUDGET);
95
- }
96
- catch {
97
- continue; // unreadable topic file — skip
98
- }
99
- const lex = tokenOverlap(query, `${room.name} ${file} ${content}`);
100
- // Lexical gate FIRST — silence is precision. A room can be high-salience
101
- // and freshly updated, but if zero query tokens match the topic, it is
102
- // not relevant to THIS turn; surfacing it is exactly the context-flooding
103
- // failure mode the spec warns against (§6). Salience/recency act only as
104
- // tiebreakers among lex-matched candidates.
105
- if (lex <= 0)
106
- continue;
107
- const sal = clamp01(room.salience ?? 0.5);
108
- const rec = recencyBoost(room.updated);
109
- const score = clamp01(lex * 0.5 + sal * 0.3 + rec * 0.2);
110
- if (score >= minScore) {
111
- candidates.push({
112
- id: `palace:${room.slug}/${file}`,
113
- source: "palace",
114
- room: room.slug,
115
- title: truncate(`${room.name} — ${file.replace(/\.md$/, "")}`, TITLE_MAX_CHARS),
116
- snippet: truncate(content, SNIPPET_MAX_CHARS),
117
- score,
118
- why: `matched palace/${room.slug}`,
119
- });
120
- }
121
- }
122
- }
123
- // ── Journals (recent only, exclude archive) ───────────────────────────────
124
- let journals;
125
- try {
126
- journals = listJournalFiles(project, /* includeArchive */ false);
127
- }
128
- catch {
129
- journals = [];
130
- }
131
- // Cap to keep latency bounded; listJournalFiles already sorts newest-first.
132
- const recentJournals = journals.slice(0, JOURNAL_SCAN_CAP);
133
- for (const j of recentJournals) {
134
- const fullPath = path.join(j.dir, j.file);
135
- let content;
136
- try {
137
- content = fs.readFileSync(fullPath, "utf-8").slice(0, JOURNAL_SNIPPET_BUDGET);
138
- }
139
- catch {
140
- continue;
141
- }
142
- const lex = tokenOverlap(query, content);
143
- // Same lex-gate as palace topics — a recent journal with zero query overlap
144
- // is not "relevant", it is just new. recency * 0.4 alone clears 0.3 and
145
- // would flood every turn with the latest entry; gate it.
146
- if (lex <= 0)
147
- continue;
148
- const rec = recencyBoost(j.date);
149
- const score = clamp01(lex * 0.6 + rec * 0.4);
150
- if (score >= minScore) {
151
- candidates.push({
152
- id: `journal:${j.file}`,
153
- source: "journal",
154
- title: truncate(`journal ${j.date}`, TITLE_MAX_CHARS),
155
- snippet: truncate(content, SNIPPET_MAX_CHARS),
156
- score,
157
- why: `matched recent journal ${j.date}`,
158
- });
159
- }
160
- }
161
- // ── Staging (this-session exchanges, pre-promote) ────────────────────────
162
- // Per spec §4.4: "Staging is itself retrievable by Surface (so this-session
163
- // content is recallable before promotion)". Without this branch, anything
164
- // captured by hook-stop in the current session is invisible to Surface
165
- // until session_end fires Promote — which defeats the read-after-write
166
- // contract the spec promises. We score these the same way as journals
167
- // (lex + recency) but skip the salience term (staged entries don't live
168
- // in a room yet) and gate them on the same lex floor (silence is
169
- // precision; a staged "ok thanks" must not surface). The Candidate.source
170
- // is "staging" so the Injector / dashboard can distinguish them from
171
- // promoted journal hits.
172
- let staged;
173
- try {
174
- staged = readStaging(project, STAGING_SCAN_CAP);
175
- }
176
- catch {
177
- staged = [];
178
- }
179
- for (const ex of staged) {
180
- // Concatenate the human-readable fields so token overlap considers both
181
- // sides of the exchange. tool_calls are intentionally excluded — their
182
- // args_summary is JSON noise that would inflate the token set without
183
- // adding semantic content.
184
- const text = `${ex.user ?? ""} ${ex.assistant ?? ""}`
185
- .trim()
186
- .slice(0, STAGING_SNIPPET_BUDGET);
187
- if (!text)
188
- continue; // tool-only turn — nothing to score against
189
- const lex = tokenOverlap(query, text);
190
- // Same lex-gate as palace topics / journals — silence is precision.
191
- // A freshly-staged exchange with zero query overlap is not relevant to
192
- // THIS turn; surfacing it would flood context with chitchat the
193
- // Promoter is about to discard anyway.
194
- if (lex <= 0)
195
- continue;
196
- const rec = recencyBoost(ex.ts);
197
- // Weight identical to journals (lex 0.6 + rec 0.4) — staging IS journal
198
- // material that just hasn't been promoted yet. Keeping weights aligned
199
- // means a staged-then-promoted entry's score doesn't visibly jump.
200
- const score = clamp01(lex * 0.6 + rec * 0.4);
201
- if (score >= minScore) {
202
- // Title: ISO timestamp + first ~40 chars of the text so the candidate
203
- // is identifiable to the agent even before it gets a real slug.
204
- const head = text.replace(/\s+/g, " ").slice(0, TITLE_MAX_CHARS - 25);
205
- candidates.push({
206
- // Use the ts as the id — ts is unique-enough within a project (one
207
- // line per exchange) and stable across reads. Tail with `staging:`
208
- // prefix so per_source bucketing in precision.ts groups them.
209
- id: `staging:${ex.ts}`,
210
- source: "staging",
211
- title: truncate(`staging ${ex.ts.slice(0, 19)} — ${head}`, TITLE_MAX_CHARS),
212
- snippet: truncate(text, SNIPPET_MAX_CHARS),
213
- score,
214
- why: `matched current-session staging`,
215
- });
216
- }
217
- }
218
- // ── Active corrections — strong bonus when query overlaps the rule ───────
219
- let corrections;
220
- try {
221
- corrections = readActiveCorrections(project);
222
- }
223
- catch {
224
- corrections = [];
225
- }
226
- for (const c of corrections) {
227
- const overlap = tokenOverlap(query, c.rule || "");
228
- if (overlap >= CORRECTION_OVERLAP_MIN) {
229
- const score = clamp01(overlap + CORRECTION_SCORE_BONUS);
230
- candidates.push({
231
- id: `correction:${c.id}`,
232
- source: "correction",
233
- title: truncate(c.rule || c.id, TITLE_MAX_CHARS),
234
- snippet: truncate(c.context || c.rule || "", SNIPPET_MAX_CHARS),
235
- score,
236
- why: "matches active correction",
237
- });
238
- }
239
- }
240
- return candidates.sort((a, b) => b.score - a.score).slice(0, topK);
241
- }
242
- // ---------------------------------------------------------------------------
243
- // Helpers (inline — only used by Surfacer)
244
- // ---------------------------------------------------------------------------
245
- /**
246
- * Lexical overlap between two strings.
247
- *
248
- * Tokens: lowercase alphanum/CJK runs of length ≥ 4. Ratio is
249
- * |aTokens ∩ bTokens| / max(|aTokens|, |bTokens|, 1)
250
- * so a tiny query that fully matches a long doc still scores high, and the
251
- * `max(..., 1)` guard keeps the empty-set case at 0 instead of NaN.
252
- *
253
- * Visible for testing — kept narrow (no synonym expansion, no stemming) because
254
- * Surfacer is the FIRST pass; the agent's own model is the final relevance
255
- * judge (spec §4.2 "Judge").
256
- */
257
- function tokenOverlap(a, b) {
258
- const aTokens = tokenize(a);
259
- const bTokens = tokenize(b);
260
- if (aTokens.size === 0 || bTokens.size === 0)
261
- return 0;
262
- let intersect = 0;
263
- // Iterate the smaller set for cheaper lookups.
264
- const [smaller, larger] = aTokens.size <= bTokens.size ? [aTokens, bTokens] : [bTokens, aTokens];
265
- for (const t of smaller) {
266
- if (larger.has(t))
267
- intersect++;
268
- }
269
- const denom = Math.max(aTokens.size, bTokens.size, 1);
270
- return intersect / denom;
271
- }
272
- function tokenize(s) {
273
- const out = new Set();
274
- if (!s)
275
- return out;
276
- // Split on anything that is not alphanumeric (ASCII only — keeps the helper
277
- // lean; the broader vector pipeline handles CJK).
278
- const parts = s.toLowerCase().split(/[^a-z0-9]+/);
279
- for (const p of parts) {
280
- if (p.length >= 4)
281
- out.add(p);
282
- }
283
- return out;
284
- }
285
- /**
286
- * Recency boost for a YYYY-MM-DD or ISO date string.
287
- *
288
- * < 7 days → 1.0
289
- * < 30 days → 0.6
290
- * < 180 days→ 0.2
291
- * else → 0
292
- *
293
- * Threshold ordering is high → low (worker done-definition rule 3). Any
294
- * unparseable input (NaN) returns 0 — never throws.
295
- */
296
- function recencyBoost(dateStr) {
297
- if (!dateStr)
298
- return 0;
299
- const dt = new Date(dateStr);
300
- const t = dt.getTime();
301
- if (isNaN(t))
302
- return 0;
303
- const ageMs = Date.now() - t;
304
- if (ageMs < 0) {
305
- // Future-dated entries (e.g. clock drift, fixture data). Treat as "very
306
- // recent" rather than NaN/0 so they still rank — but cap at 1.0.
307
- return 1.0;
308
- }
309
- const days = ageMs / (24 * 60 * 60 * 1000);
310
- // High threshold first so we never return the lower bucket for a recent doc.
311
- if (days < 7)
312
- return 1.0;
313
- if (days < 30)
314
- return 0.6;
315
- if (days < 180)
316
- return 0.2;
317
- return 0;
318
- }
319
- function clamp01(n) {
320
- if (isNaN(n))
321
- return 0;
322
- if (n < 0)
323
- return 0;
324
- if (n > 1)
325
- return 1;
326
- return n;
327
- }
328
- function truncate(s, n) {
329
- if (!s)
330
- return "";
331
- return s.length <= n ? s : s.slice(0, n);
332
- }
333
- //# sourceMappingURL=surfacer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"surfacer.js","sourceRoot":"","sources":["../../src/relevance/surfacer.ts"],"names":[],"mappings":"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"}