hippo-memory 1.69.0 → 1.71.0

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 (1014) hide show
  1. package/README.md +5 -2
  2. package/dist/agent-memories/apply.d.ts +3 -3
  3. package/dist/agent-memories/apply.js +16 -31
  4. package/dist/agent-memories/claude-code.d.ts +5 -5
  5. package/dist/agent-memories/claude-code.js +25 -12
  6. package/dist/agent-memories/copilot.js +3 -2
  7. package/dist/agent-memories/files.js +26 -14
  8. package/dist/agent-memories/gemini.js +6 -5
  9. package/dist/agent-memories/keys.js +3 -2
  10. package/dist/agent-memories/legacy.d.ts +2 -2
  11. package/dist/agent-memories/legacy.js +2 -2
  12. package/dist/agent-memories/markdown.d.ts +1 -3
  13. package/dist/agent-memories/markdown.js +1 -3
  14. package/dist/agent-memories/report.d.ts +1 -1
  15. package/dist/agent-memories/report.js +3 -2
  16. package/dist/agent-memories/source.d.ts +1 -1
  17. package/dist/agent-memories/source.js +6 -5
  18. package/dist/agent-memories/sync.d.ts +5 -3
  19. package/dist/agent-memories/sync.js +34 -38
  20. package/dist/agent-memories/types.d.ts +1 -1
  21. package/dist/api/assemble.d.ts +9 -46
  22. package/dist/api/assemble.js +44 -54
  23. package/dist/api/audit.d.ts +8 -7
  24. package/dist/api/audit.js +15 -21
  25. package/dist/api/auth.d.ts +17 -39
  26. package/dist/api/auth.js +76 -216
  27. package/dist/api/auto-sleep.d.ts +13 -0
  28. package/dist/api/auto-sleep.js +32 -0
  29. package/dist/{availability.d.ts → api/availability.d.ts} +4 -17
  30. package/dist/{availability.js → api/availability.js} +14 -44
  31. package/dist/{context-auto.js → api/context-auto.js} +2 -1
  32. package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
  33. package/dist/{context-render.js → api/context-render.js} +7 -6
  34. package/dist/api/context-select.d.ts +5 -5
  35. package/dist/api/context-select.js +39 -48
  36. package/dist/api/context-types.d.ts +15 -40
  37. package/dist/api/context.d.ts +7 -26
  38. package/dist/api/context.js +67 -97
  39. package/dist/api/dormant.d.ts +7 -23
  40. package/dist/api/dormant.js +40 -128
  41. package/dist/api/drill-down.d.ts +9 -48
  42. package/dist/api/drill-down.js +41 -90
  43. package/dist/api/forget.d.ts +5 -33
  44. package/dist/api/forget.js +17 -73
  45. package/dist/api/goals.d.ts +1 -1
  46. package/dist/api/goals.js +2 -2
  47. package/dist/api/graph.d.ts +8 -0
  48. package/dist/api/graph.js +7 -0
  49. package/dist/api/index.d.ts +28 -0
  50. package/dist/api/index.js +31 -0
  51. package/dist/api/instruction-detect.js +85 -0
  52. package/dist/api/learn.js +63 -55
  53. package/dist/api/ledger-db.d.ts +21 -0
  54. package/dist/api/ledger-db.js +81 -0
  55. package/dist/api/memories.d.ts +5 -0
  56. package/dist/api/memories.js +7 -0
  57. package/dist/api/objects.d.ts +9 -0
  58. package/dist/api/objects.js +11 -0
  59. package/dist/api/on-store.d.ts +16 -0
  60. package/dist/api/on-store.js +38 -0
  61. package/dist/api/outcome.d.ts +5 -42
  62. package/dist/api/outcome.js +15 -80
  63. package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
  64. package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
  65. package/dist/api/predictions.d.ts +9 -0
  66. package/dist/api/predictions.js +18 -0
  67. package/dist/api/promote.d.ts +16 -31
  68. package/dist/api/promote.js +38 -123
  69. package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
  70. package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
  71. package/dist/api/quarantine.d.ts +5 -5
  72. package/dist/api/quarantine.js +30 -106
  73. package/dist/api/recall-cli.d.ts +55 -0
  74. package/dist/api/recall-cli.js +94 -0
  75. package/dist/api/recall-core.d.ts +4 -0
  76. package/dist/api/recall-core.js +120 -0
  77. package/dist/api/recall-finish.d.ts +53 -0
  78. package/dist/api/recall-finish.js +30 -0
  79. package/dist/api/recall-history.d.ts +64 -0
  80. package/dist/api/recall-history.js +159 -0
  81. package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
  82. package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
  83. package/dist/api/recall-record.d.ts +10 -13
  84. package/dist/api/recall-record.js +10 -30
  85. package/dist/api/recall-request.d.ts +2 -2
  86. package/dist/api/recall-request.js +3 -3
  87. package/dist/api/recall-types.d.ts +101 -316
  88. package/dist/api/recall.d.ts +5 -33
  89. package/dist/api/recall.js +92 -91
  90. package/dist/api/refine.d.ts +7 -0
  91. package/dist/api/refine.js +10 -0
  92. package/dist/api/remember-local.d.ts +57 -0
  93. package/dist/api/remember-local.js +90 -0
  94. package/dist/api/remember.d.ts +27 -12
  95. package/dist/api/remember.js +42 -46
  96. package/dist/api/session-owners.d.ts +4 -0
  97. package/dist/api/session-owners.js +17 -0
  98. package/dist/api/sleep-run.d.ts +7 -9
  99. package/dist/api/sleep-run.js +78 -94
  100. package/dist/api/sleep.d.ts +10 -29
  101. package/dist/api/tokens.d.ts +5 -12
  102. package/dist/api/tokens.js +12 -31
  103. package/dist/api/types.d.ts +8 -31
  104. package/dist/api/types.js +5 -23
  105. package/dist/capture/caller-session.d.ts +2 -2
  106. package/dist/capture/caller-session.js +8 -8
  107. package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
  108. package/dist/{capture-error.js → capture/capture-error.js} +7 -7
  109. package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
  110. package/dist/capture/command.d.ts +5 -13
  111. package/dist/capture/command.js +57 -60
  112. package/dist/capture/compact-resume-caller.d.ts +1 -1
  113. package/dist/capture/compact-resume-caller.js +7 -7
  114. package/dist/capture/compact.d.ts +8 -16
  115. package/dist/capture/compact.js +56 -47
  116. package/dist/capture/compaction-items-caller.d.ts +1 -1
  117. package/dist/capture/compaction-items-caller.js +7 -5
  118. package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
  119. package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
  120. package/dist/{compaction-record.js → capture/compaction-record.js} +143 -157
  121. package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
  122. package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
  123. package/dist/capture/copilot-transcript.js +1 -1
  124. package/dist/capture/extract.js +2 -2
  125. package/dist/capture/failure-caller.d.ts +2 -2
  126. package/dist/capture/failure-caller.js +6 -6
  127. package/dist/capture/failure-reading.d.ts +2 -5
  128. package/dist/capture/failure-reading.js +11 -12
  129. package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
  130. package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
  131. package/dist/capture/pre-compact-caller.d.ts +1 -1
  132. package/dist/capture/pre-compact-caller.js +2 -2
  133. package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +2 -6
  134. package/dist/{session-digest.js → capture/session-digest.js} +29 -29
  135. package/dist/capture/session-end-caller.d.ts +2 -2
  136. package/dist/capture/session-end-caller.js +1 -1
  137. package/dist/capture/session-texts.d.ts +1 -1
  138. package/dist/capture/session-texts.js +5 -5
  139. package/dist/capture/session-worker.js +6 -4
  140. package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
  141. package/dist/capture/transcript.d.ts +2 -10
  142. package/dist/capture/transcript.js +72 -92
  143. package/dist/capture/working-state.d.ts +0 -3
  144. package/dist/capture/working-state.js +7 -7
  145. package/dist/cli/api-context.d.ts +3 -0
  146. package/dist/cli/api-context.js +6 -0
  147. package/dist/cli/audit-prune.d.ts +28 -0
  148. package/dist/cli/audit-prune.js +40 -0
  149. package/dist/cli/audit.d.ts +2 -2
  150. package/dist/cli/audit.js +92 -88
  151. package/dist/cli/auth.d.ts +2 -1
  152. package/dist/cli/auth.js +69 -53
  153. package/dist/cli/briefs.d.ts +4 -3
  154. package/dist/cli/briefs.js +76 -202
  155. package/dist/cli/card.d.ts +2 -1
  156. package/dist/cli/card.js +55 -54
  157. package/dist/cli/client.d.ts +28 -0
  158. package/dist/{client.js → cli/client.js} +25 -44
  159. package/dist/cli/compact-resume-payload.d.ts +8 -0
  160. package/dist/cli/compact-resume-payload.js +40 -0
  161. package/dist/cli/context.d.ts +1 -13
  162. package/dist/cli/context.js +51 -77
  163. package/dist/cli/continuity.d.ts +6 -5
  164. package/dist/cli/continuity.js +153 -145
  165. package/dist/cli/correction-latency.d.ts +24 -0
  166. package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
  167. package/dist/cli/curate.d.ts +13 -17
  168. package/dist/cli/curate.js +226 -222
  169. package/dist/cli/dag.d.ts +4 -4
  170. package/dist/cli/dag.js +70 -52
  171. package/dist/cli/decisions.d.ts +4 -3
  172. package/dist/cli/decisions.js +129 -253
  173. package/dist/cli/eval.d.ts +1 -3
  174. package/dist/cli/eval.js +56 -42
  175. package/dist/cli/exit.d.ts +6 -0
  176. package/dist/cli/exit.js +11 -0
  177. package/dist/cli/explain.d.ts +1 -2
  178. package/dist/cli/explain.js +39 -21
  179. package/dist/cli/flag-values.d.ts +30 -0
  180. package/dist/cli/flag-values.js +120 -0
  181. package/dist/cli/flags.d.ts +304 -0
  182. package/dist/cli/flags.js +169 -0
  183. package/dist/cli/github.d.ts +14 -0
  184. package/dist/cli/github.js +184 -0
  185. package/dist/cli/goals.d.ts +2 -1
  186. package/dist/cli/goals.js +76 -75
  187. package/dist/cli/hook-runtime.d.ts +31 -0
  188. package/dist/cli/hook-runtime.js +139 -0
  189. package/dist/cli/init.d.ts +2 -1
  190. package/dist/cli/init.js +153 -126
  191. package/dist/cli/install-steps.d.ts +7 -0
  192. package/dist/cli/install-steps.js +101 -0
  193. package/dist/cli/last-sleep.d.ts +3 -1
  194. package/dist/cli/last-sleep.js +12 -7
  195. package/dist/cli/maintenance.d.ts +5 -4
  196. package/dist/cli/maintenance.js +41 -42
  197. package/dist/cli/object-verbs.d.ts +40 -0
  198. package/dist/cli/object-verbs.js +66 -0
  199. package/dist/cli/owner-validation.d.ts +18 -0
  200. package/dist/cli/owner-validation.js +33 -0
  201. package/dist/cli/playbooks.d.ts +4 -3
  202. package/dist/cli/playbooks.js +98 -306
  203. package/dist/cli/print.d.ts +15 -0
  204. package/dist/cli/print.js +82 -0
  205. package/dist/cli/projects.d.ts +2 -3
  206. package/dist/cli/projects.js +56 -51
  207. package/dist/cli/provenance-coverage.d.ts +14 -0
  208. package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
  209. package/dist/cli/quality-repair-once.js +4 -4
  210. package/dist/cli/recall.d.ts +2 -6
  211. package/dist/cli/recall.js +128 -253
  212. package/dist/cli/refine-llm.d.ts +35 -0
  213. package/dist/cli/refine-llm.js +128 -0
  214. package/dist/cli/remember.d.ts +4 -6
  215. package/dist/cli/remember.js +193 -230
  216. package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
  217. package/dist/{scheduler.js → cli/scheduler.js} +22 -22
  218. package/dist/cli/serve.d.ts +1 -1
  219. package/dist/cli/serve.js +46 -7
  220. package/dist/cli/session-hooks.d.ts +11 -19
  221. package/dist/cli/session-hooks.js +263 -258
  222. package/dist/cli/setup.d.ts +4 -3
  223. package/dist/cli/setup.js +55 -37
  224. package/dist/cli/shared.d.ts +14 -118
  225. package/dist/cli/shared.js +26 -400
  226. package/dist/cli/slack.d.ts +2 -1
  227. package/dist/cli/slack.js +46 -74
  228. package/dist/cli/sleep-render.d.ts +4 -0
  229. package/dist/cli/sleep-render.js +61 -0
  230. package/dist/cli/sleep.d.ts +3 -8
  231. package/dist/cli/sleep.js +34 -91
  232. package/dist/cli/status.d.ts +9 -12
  233. package/dist/cli/status.js +86 -131
  234. package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
  235. package/dist/{stdin.js → cli/stdin.js} +8 -9
  236. package/dist/cli/transfer.d.ts +9 -9
  237. package/dist/cli/transfer.js +125 -122
  238. package/dist/cli/usage.js +13 -5
  239. package/dist/cli.d.ts +69 -167
  240. package/dist/cli.js +187 -296
  241. package/dist/connectors/dlq.d.ts +44 -0
  242. package/dist/connectors/dlq.js +30 -0
  243. package/dist/connectors/github/backfill.d.ts +6 -26
  244. package/dist/connectors/github/backfill.js +42 -114
  245. package/dist/connectors/github/deletion.d.ts +6 -21
  246. package/dist/connectors/github/deletion.js +17 -64
  247. package/dist/connectors/github/dlq.d.ts +12 -91
  248. package/dist/connectors/github/dlq.js +23 -140
  249. package/dist/connectors/github/ingest.d.ts +4 -37
  250. package/dist/connectors/github/ingest.js +24 -93
  251. package/dist/connectors/github/octokit-client.d.ts +5 -17
  252. package/dist/connectors/github/octokit-client.js +29 -25
  253. package/dist/connectors/github/ratelimit.d.ts +3 -14
  254. package/dist/connectors/github/ratelimit.js +3 -14
  255. package/dist/connectors/github/scope.d.ts +3 -5
  256. package/dist/connectors/github/scope.js +3 -5
  257. package/dist/connectors/github/signature.d.ts +4 -26
  258. package/dist/connectors/github/signature.js +4 -26
  259. package/dist/connectors/github/tenant-routing.d.ts +4 -26
  260. package/dist/connectors/github/tenant-routing.js +13 -61
  261. package/dist/connectors/github/transform.d.ts +1 -1
  262. package/dist/connectors/github/transform.js +2 -16
  263. package/dist/connectors/github/types.d.ts +4 -16
  264. package/dist/connectors/github/types.js +17 -27
  265. package/dist/connectors/github/webhook.d.ts +5 -18
  266. package/dist/connectors/github/webhook.js +86 -105
  267. package/dist/connectors/slack/backfill.d.ts +5 -18
  268. package/dist/connectors/slack/backfill.js +9 -42
  269. package/dist/connectors/slack/deletion.d.ts +4 -7
  270. package/dist/connectors/slack/deletion.js +20 -49
  271. package/dist/connectors/slack/dlq.d.ts +9 -68
  272. package/dist/connectors/slack/dlq.js +26 -136
  273. package/dist/connectors/slack/ingest.d.ts +4 -18
  274. package/dist/connectors/slack/ingest.js +26 -91
  275. package/dist/connectors/slack/scope.d.ts +2 -8
  276. package/dist/connectors/slack/scope.js +2 -8
  277. package/dist/connectors/slack/signature.d.ts +1 -6
  278. package/dist/connectors/slack/signature.js +2 -1
  279. package/dist/connectors/slack/tenant-routing.d.ts +4 -18
  280. package/dist/connectors/slack/tenant-routing.js +11 -31
  281. package/dist/connectors/slack/transform.d.ts +3 -19
  282. package/dist/connectors/slack/transform.js +2 -18
  283. package/dist/connectors/slack/types.d.ts +4 -10
  284. package/dist/connectors/slack/types.js +5 -16
  285. package/dist/connectors/slack/web-client.js +34 -28
  286. package/dist/connectors/slack/webhook.d.ts +5 -21
  287. package/dist/connectors/slack/webhook.js +80 -108
  288. package/dist/connectors/slack/workspaces.d.ts +8 -41
  289. package/dist/connectors/slack/workspaces.js +8 -58
  290. package/dist/consolidate/conflicts.d.ts +1 -1
  291. package/dist/consolidate/conflicts.js +10 -18
  292. package/dist/consolidate/dag-summary.d.ts +8 -0
  293. package/dist/consolidate/dag-summary.js +41 -0
  294. package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
  295. package/dist/{dag.js → consolidate/dag.js} +49 -131
  296. package/dist/consolidate/decay.d.ts +2 -2
  297. package/dist/consolidate/decay.js +35 -41
  298. package/dist/consolidate/dedupe.d.ts +29 -0
  299. package/dist/consolidate/dedupe.js +103 -0
  300. package/dist/consolidate/flush-units.d.ts +5 -6
  301. package/dist/consolidate/flush-units.js +3 -3
  302. package/dist/consolidate/half-life-migration.d.ts +34 -0
  303. package/dist/consolidate/half-life-migration.js +89 -0
  304. package/dist/consolidate/llm-passes.js +12 -29
  305. package/dist/consolidate/memory-value-weights.d.ts +8 -0
  306. package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
  307. package/dist/consolidate/memory-value.d.ts +45 -0
  308. package/dist/consolidate/memory-value.js +164 -0
  309. package/dist/consolidate/merge.js +65 -83
  310. package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
  311. package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
  312. package/dist/consolidate/physics-pass.js +46 -48
  313. package/dist/consolidate/replay.d.ts +9 -0
  314. package/dist/consolidate/replay.js +84 -0
  315. package/dist/consolidate/run.d.ts +7 -13
  316. package/dist/consolidate/run.js +6 -37
  317. package/dist/consolidate/sleep.d.ts +2 -9
  318. package/dist/consolidate/sleep.js +69 -151
  319. package/dist/consolidate/trace.d.ts +19 -0
  320. package/dist/{trace.js → consolidate/trace.js} +7 -24
  321. package/dist/consolidate/traces.js +40 -51
  322. package/dist/core/ablation.d.ts +15 -0
  323. package/dist/core/ablation.js +49 -0
  324. package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
  325. package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
  326. package/dist/{ambient.d.ts → core/ambient.d.ts} +1 -8
  327. package/dist/{ambient.js → core/ambient.js} +13 -18
  328. package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
  329. package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
  330. package/dist/{card.d.ts → core/card.d.ts} +4 -1
  331. package/dist/{card.js → core/card.js} +8 -0
  332. package/dist/core/compare.d.ts +32 -0
  333. package/dist/core/compare.js +70 -0
  334. package/dist/{config.d.ts → core/config.d.ts} +14 -28
  335. package/dist/{config.js → core/config.js} +101 -75
  336. package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
  337. package/dist/core/handoff.js +81 -0
  338. package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
  339. package/dist/core/memory.d.ts +183 -0
  340. package/dist/core/memory.js +380 -0
  341. package/dist/core/package-root.d.ts +3 -0
  342. package/dist/core/package-root.js +5 -0
  343. package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
  344. package/dist/{physics-config.js → core/physics-config.js} +3 -8
  345. package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
  346. package/dist/{physics.js → core/physics.js} +60 -122
  347. package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
  348. package/dist/{project-identity.js → core/project-identity.js} +22 -55
  349. package/dist/{project-remote.js → core/project-remote.js} +17 -6
  350. package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
  351. package/dist/core/raw-append-only.d.ts +5 -0
  352. package/dist/core/raw-append-only.js +7 -0
  353. package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
  354. package/dist/{salience.js → core/salience.js} +36 -27
  355. package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
  356. package/dist/{search/types.js → core/search-types.js} +1 -1
  357. package/dist/core/session-digest-row.d.ts +5 -0
  358. package/dist/core/session-digest-row.js +6 -0
  359. package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
  360. package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +7 -7
  361. package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
  362. package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
  363. package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +11 -10
  364. package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
  365. package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
  366. package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
  367. package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
  368. package/dist/db/backup.js +1 -1
  369. package/dist/db/busy.d.ts +19 -2
  370. package/dist/db/busy.js +88 -14
  371. package/dist/db/connect.d.ts +11 -2
  372. package/dist/db/connect.js +43 -10
  373. package/dist/db/index.d.ts +9 -0
  374. package/dist/db/index.js +8 -0
  375. package/dist/db/meta.d.ts +4 -0
  376. package/dist/db/meta.js +11 -1
  377. package/dist/db/migrate.d.ts +8 -1
  378. package/dist/db/migrate.js +28 -33
  379. package/dist/db/migrations/types.d.ts +2 -5
  380. package/dist/db/migrations/v08.js +1 -1
  381. package/dist/db/migrations/v14.js +39 -36
  382. package/dist/db/migrations/v15.js +2 -8
  383. package/dist/db/migrations/v16.js +31 -29
  384. package/dist/db/migrations/v17.js +2 -3
  385. package/dist/db/migrations/v18.js +6 -5
  386. package/dist/db/migrations/v19.js +2 -5
  387. package/dist/db/migrations/v20.js +5 -8
  388. package/dist/db/migrations/v22.js +28 -38
  389. package/dist/db/migrations/v23.js +3 -14
  390. package/dist/db/migrations/v24.js +25 -22
  391. package/dist/db/migrations/v25.js +3 -8
  392. package/dist/db/migrations/v26.js +2 -13
  393. package/dist/db/migrations/v27.js +3 -11
  394. package/dist/db/migrations/v28.js +2 -14
  395. package/dist/db/migrations/v29.js +23 -32
  396. package/dist/db/migrations/v30.js +4 -16
  397. package/dist/db/migrations/v31.js +23 -31
  398. package/dist/db/migrations/v32.js +4 -22
  399. package/dist/db/migrations/v33.js +2 -15
  400. package/dist/db/migrations/v34.js +2 -11
  401. package/dist/db/migrations/v35.js +2 -11
  402. package/dist/db/migrations/v36.js +2 -11
  403. package/dist/db/migrations/v37.js +8 -33
  404. package/dist/db/migrations/v38.js +5 -38
  405. package/dist/db/migrations/v39.js +10 -21
  406. package/dist/db/migrations/v40.js +8 -14
  407. package/dist/db/migrations/v41.js +2 -24
  408. package/dist/db/migrations/v43.js +7 -6
  409. package/dist/db/migrations/v44.js +2 -8
  410. package/dist/db/migrations/v45.js +2 -7
  411. package/dist/db/migrations/v46.js +1 -1
  412. package/dist/db/migrations/v47.js +2 -3
  413. package/dist/db/migrations/v48.js +1 -1
  414. package/dist/db/migrations/v49.js +1 -1
  415. package/dist/db/migrations/v50.js +8 -7
  416. package/dist/db/migrations/v51.js +1 -1
  417. package/dist/db/migrations/v52.js +1 -1
  418. package/dist/db/open.d.ts +11 -1
  419. package/dist/db/open.js +37 -4
  420. package/dist/db/physics-state.d.ts +23 -0
  421. package/dist/{physics-state.js → db/physics-state.js} +34 -52
  422. package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
  423. package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
  424. package/dist/db/request-stores.d.ts +15 -2
  425. package/dist/db/request-stores.js +37 -15
  426. package/dist/db/tables.d.ts +2 -0
  427. package/dist/db/tables.js +6 -0
  428. package/dist/{vector-store.d.ts → db/vector-store.d.ts} +6 -2
  429. package/dist/{vector-store.js → db/vector-store.js} +83 -51
  430. package/dist/db/wal-checkpointer.d.ts +11 -0
  431. package/dist/db/wal-checkpointer.js +92 -0
  432. package/dist/doctor.js +176 -152
  433. package/dist/entry/json-hooks.d.ts +1 -1
  434. package/dist/entry/json-hooks.js +1 -1
  435. package/dist/entry/project-identity.d.ts +1 -1
  436. package/dist/entry/project-identity.js +1 -1
  437. package/dist/entry/session-text.d.ts +3 -3
  438. package/dist/entry/session-text.js +5 -4
  439. package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
  440. package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
  441. package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
  442. package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
  443. package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
  444. package/dist/{eval.js → eval/eval.js} +35 -55
  445. package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
  446. package/dist/{judgment.js → eval/judgment.js} +23 -20
  447. package/dist/extensions/openclaw-plugin/index.js +2 -3
  448. package/dist/graph/delta.d.ts +3 -2
  449. package/dist/graph/delta.js +9 -23
  450. package/dist/{graph-extract.d.ts → graph/extract.d.ts} +10 -32
  451. package/dist/{graph-extract.js → graph/extract.js} +40 -81
  452. package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
  453. package/dist/{graph-recall.js → graph/recall.js} +65 -108
  454. package/dist/graph/stream.d.ts +38 -0
  455. package/dist/{graph-stream.js → graph/stream.js} +20 -41
  456. package/dist/graph/view.d.ts +50 -0
  457. package/dist/graph/view.js +265 -0
  458. package/dist/graph/write.d.ts +4 -76
  459. package/dist/graph/write.js +13 -397
  460. package/dist/hooks/codex-session.js +1 -1
  461. package/dist/hooks/codex-wrapper.js +16 -17
  462. package/dist/hooks/copilot.d.ts +1 -8
  463. package/dist/hooks/copilot.js +16 -16
  464. package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
  465. package/dist/{cli → hooks}/hook-blocks.js +38 -125
  466. package/dist/hooks/json-hooks.d.ts +5 -37
  467. package/dist/hooks/json-hooks.js +49 -179
  468. package/dist/hooks/opencode.d.ts +0 -38
  469. package/dist/hooks/opencode.js +44 -103
  470. package/dist/hooks/shared.d.ts +8 -21
  471. package/dist/hooks/shared.js +30 -25
  472. package/dist/importers/core.d.ts +13 -42
  473. package/dist/importers/core.js +48 -64
  474. package/dist/importers/markdown-parse.d.ts +9 -32
  475. package/dist/importers/markdown-parse.js +10 -44
  476. package/dist/importers/markdown.js +5 -13
  477. package/dist/importers/sources.js +57 -81
  478. package/dist/importers/vault.d.ts +2 -8
  479. package/dist/importers/vault.js +95 -172
  480. package/dist/index.d.ts +26 -22
  481. package/dist/index.js +25 -21
  482. package/dist/learn/autolearn.d.ts +29 -0
  483. package/dist/{autolearn.js → learn/autolearn.js} +26 -51
  484. package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
  485. package/dist/{churn-git.js → learn/churn-git.js} +6 -4
  486. package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
  487. package/dist/learn/extract.js +123 -0
  488. package/dist/learn/forward-claim-detector.d.ts +12 -0
  489. package/dist/learn/forward-claim-detector.js +60 -0
  490. package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
  491. package/dist/{invalidation.js → learn/invalidation.js} +92 -125
  492. package/dist/mcp/admin-tools.d.ts +1 -1
  493. package/dist/mcp/admin-tools.js +39 -64
  494. package/dist/mcp/format.d.ts +5 -5
  495. package/dist/mcp/format.js +7 -6
  496. package/dist/mcp/framing.d.ts +6 -0
  497. package/dist/mcp/framing.js +11 -3
  498. package/dist/mcp/memory-tools.js +10 -35
  499. package/dist/mcp/protocol.d.ts +14 -36
  500. package/dist/mcp/protocol.js +10 -19
  501. package/dist/mcp/recall-tools.d.ts +2 -2
  502. package/dist/mcp/recall-tools.js +70 -52
  503. package/dist/mcp/request.d.ts +3 -11
  504. package/dist/mcp/request.js +71 -85
  505. package/dist/mcp/server.d.ts +3 -9
  506. package/dist/mcp/server.js +6 -17
  507. package/dist/mcp/session-state.d.ts +2 -3
  508. package/dist/mcp/session-state.js +7 -13
  509. package/dist/mcp/shared-gate.js +1 -1
  510. package/dist/mcp/stdio.d.ts +2 -6
  511. package/dist/mcp/stdio.js +112 -38
  512. package/dist/mcp/tool-args.js +2 -1
  513. package/dist/mcp/tools.js +7 -5
  514. package/dist/objects/customer-notes.d.ts +44 -0
  515. package/dist/objects/customer-notes.js +71 -0
  516. package/dist/objects/decisions.d.ts +41 -0
  517. package/dist/objects/decisions.js +63 -0
  518. package/dist/objects/descriptor.d.ts +52 -0
  519. package/dist/objects/descriptor.js +4 -0
  520. package/dist/objects/fields.d.ts +15 -0
  521. package/dist/objects/fields.js +21 -0
  522. package/dist/objects/incidents.d.ts +45 -0
  523. package/dist/objects/incidents.js +96 -0
  524. package/dist/objects/lifecycle.d.ts +27 -0
  525. package/dist/objects/lifecycle.js +96 -0
  526. package/dist/objects/policies.d.ts +60 -0
  527. package/dist/objects/policies.js +102 -0
  528. package/dist/objects/processes.d.ts +43 -0
  529. package/dist/objects/processes.js +92 -0
  530. package/dist/objects/project-briefs.d.ts +63 -0
  531. package/dist/objects/project-briefs.js +194 -0
  532. package/dist/objects/skills.d.ts +51 -0
  533. package/dist/objects/skills.js +110 -0
  534. package/dist/postinstall.js +10 -21
  535. package/dist/predictions/planning-fallacy.d.ts +14 -109
  536. package/dist/predictions/planning-fallacy.js +4 -129
  537. package/dist/rerankers/clef.d.ts +2 -6
  538. package/dist/rerankers/clef.js +28 -76
  539. package/dist/rerankers/cross-encoder.d.ts +0 -7
  540. package/dist/rerankers/cross-encoder.js +18 -28
  541. package/dist/rerankers/index.js +8 -7
  542. package/dist/rerankers/jev.d.ts +1 -4
  543. package/dist/rerankers/jev.js +36 -52
  544. package/dist/rerankers/llm.d.ts +2 -13
  545. package/dist/rerankers/llm.js +42 -59
  546. package/dist/rerankers/outage-warning.d.ts +8 -0
  547. package/dist/rerankers/outage-warning.js +32 -0
  548. package/dist/rerankers/remote.d.ts +4 -0
  549. package/dist/rerankers/remote.js +25 -0
  550. package/dist/rerankers/types.d.ts +3 -15
  551. package/dist/search/as-of.d.ts +1 -1
  552. package/dist/search/bm25-search.d.ts +2 -2
  553. package/dist/search/bm25-search.js +7 -7
  554. package/dist/search/bm25.d.ts +1 -1
  555. package/dist/search/bm25.js +1 -1
  556. package/dist/search/boosts.d.ts +5 -3
  557. package/dist/search/boosts.js +36 -15
  558. package/dist/search/breakdown.d.ts +2 -2
  559. package/dist/search/breakdown.js +2 -1
  560. package/dist/search/explain.d.ts +1 -1
  561. package/dist/search/explain.js +3 -2
  562. package/dist/search/finalize.d.ts +2 -2
  563. package/dist/search/finalize.js +4 -3
  564. package/dist/search/fusion.d.ts +1 -1
  565. package/dist/search/fusion.js +3 -3
  566. package/dist/search/goal-boost.d.ts +23 -0
  567. package/dist/search/goal-boost.js +90 -0
  568. package/dist/search/hybrid-score.d.ts +2 -2
  569. package/dist/search/hybrid-score.js +1 -1
  570. package/dist/search/hybrid.d.ts +6 -4
  571. package/dist/search/hybrid.js +11 -8
  572. package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
  573. package/dist/{multihop.js → search/multihop.js} +9 -8
  574. package/dist/search/path-context.d.ts +11 -0
  575. package/dist/{path-context.js → search/path-context.js} +8 -19
  576. package/dist/search/physics-search.d.ts +4 -4
  577. package/dist/search/physics-search.js +25 -22
  578. package/dist/search/rerank.d.ts +3 -3
  579. package/dist/search/rerank.js +4 -3
  580. package/dist/search/rrf.d.ts +15 -0
  581. package/dist/search/rrf.js +36 -0
  582. package/dist/search/temporal.d.ts +1 -1
  583. package/dist/search/temporal.js +5 -2
  584. package/dist/search/vector.d.ts +10 -3
  585. package/dist/search/vector.js +51 -15
  586. package/dist/server/auth.d.ts +10 -29
  587. package/dist/server/auth.js +57 -42
  588. package/dist/server/boot.d.ts +5 -0
  589. package/dist/server/boot.js +432 -0
  590. package/dist/server/client-ip.d.ts +8 -20
  591. package/dist/server/client-ip.js +23 -34
  592. package/dist/server/cursor.d.ts +1 -1
  593. package/dist/server/cursor.js +2 -3
  594. package/dist/server/deadline.d.ts +13 -0
  595. package/dist/server/deadline.js +45 -0
  596. package/dist/server/defaults.d.ts +3 -0
  597. package/dist/server/defaults.js +4 -0
  598. package/dist/server/key-check-bounds.d.ts +9 -0
  599. package/dist/server/key-check-bounds.js +46 -0
  600. package/dist/server/lifecycle.d.ts +5 -4
  601. package/dist/server/lifecycle.js +20 -5
  602. package/dist/server/mcp-http.d.ts +1 -4
  603. package/dist/server/mcp-http.js +44 -68
  604. package/dist/server/rate-limit.d.ts +21 -0
  605. package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
  606. package/dist/server/ready.d.ts +7 -0
  607. package/dist/server/ready.js +38 -0
  608. package/dist/server/request.d.ts +14 -12
  609. package/dist/server/request.js +71 -28
  610. package/dist/server/route-table.d.ts +15 -0
  611. package/dist/server/route-table.js +202 -0
  612. package/dist/server/routes/admin.js +29 -30
  613. package/dist/server/routes/customer-notes.d.ts +5 -5
  614. package/dist/server/routes/customer-notes.js +35 -105
  615. package/dist/server/routes/decisions.d.ts +5 -5
  616. package/dist/server/routes/decisions.js +45 -115
  617. package/dist/server/routes/incidents.d.ts +5 -5
  618. package/dist/server/routes/incidents.js +44 -105
  619. package/dist/server/routes/memories.js +21 -43
  620. package/dist/server/routes/object-routes.d.ts +35 -0
  621. package/dist/server/routes/object-routes.js +72 -0
  622. package/dist/server/routes/policies.d.ts +6 -6
  623. package/dist/server/routes/policies.js +42 -134
  624. package/dist/server/routes/predictions.js +35 -63
  625. package/dist/server/routes/processes.d.ts +5 -5
  626. package/dist/server/routes/processes.js +44 -134
  627. package/dist/server/routes/project-briefs.d.ts +6 -6
  628. package/dist/server/routes/project-briefs.js +41 -120
  629. package/dist/server/routes/recall.js +21 -44
  630. package/dist/server/routes/skills.d.ts +6 -6
  631. package/dist/server/routes/skills.js +40 -138
  632. package/dist/server/server-detect.d.ts +28 -0
  633. package/dist/server/server-detect.js +156 -0
  634. package/dist/server/sleep-child.d.ts +2 -0
  635. package/dist/server/sleep-child.js +19 -0
  636. package/dist/server/sleep-offload.d.ts +20 -0
  637. package/dist/server/sleep-offload.js +73 -0
  638. package/dist/server/tls.d.ts +6 -0
  639. package/dist/server/tls.js +24 -0
  640. package/dist/server/types.d.ts +35 -14
  641. package/dist/server/validation.d.ts +6 -5
  642. package/dist/server/validation.js +16 -34
  643. package/dist/server.d.ts +39 -61
  644. package/dist/server.js +26 -569
  645. package/dist/sharing/global-store.d.ts +19 -0
  646. package/dist/sharing/global-store.js +75 -0
  647. package/dist/sharing/global-sync.d.ts +6 -0
  648. package/dist/sharing/global-sync.js +80 -0
  649. package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
  650. package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
  651. package/dist/sharing/scope.d.ts +7 -0
  652. package/dist/{scope.js → sharing/scope.js} +5 -12
  653. package/dist/sharing/search-both.d.ts +60 -0
  654. package/dist/sharing/search-both.js +138 -0
  655. package/dist/sharing/share.d.ts +38 -0
  656. package/dist/sharing/share.js +226 -0
  657. package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
  658. package/dist/{ambient-store.js → store/ambient.js} +11 -16
  659. package/dist/store/audit-event.d.ts +15 -17
  660. package/dist/store/audit-event.js +9 -16
  661. package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
  662. package/dist/{audit.js → store/audit.js} +95 -18
  663. package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
  664. package/dist/{auth.js → store/auth.js} +108 -99
  665. package/dist/store/candidates.d.ts +41 -13
  666. package/dist/store/candidates.js +141 -60
  667. package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
  668. package/dist/{card-detail.js → store/card-detail.js} +3 -2
  669. package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
  670. package/dist/{store-cards.js → store/cards.js} +133 -248
  671. package/dist/store/compactions.d.ts +78 -0
  672. package/dist/store/compactions.js +93 -0
  673. package/dist/store/conflicts.d.ts +26 -26
  674. package/dist/store/conflicts.js +194 -222
  675. package/dist/store/connectors/github.d.ts +84 -0
  676. package/dist/store/connectors/github.js +180 -0
  677. package/dist/store/connectors/slack.d.ts +69 -0
  678. package/dist/store/connectors/slack.js +177 -0
  679. package/dist/store/dashboard-reads.d.ts +27 -0
  680. package/dist/store/dashboard-reads.js +88 -0
  681. package/dist/store/delete-and-batch.d.ts +27 -51
  682. package/dist/store/delete-and-batch.js +100 -92
  683. package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
  684. package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
  685. package/dist/store/descendant-page.d.ts +12 -0
  686. package/dist/store/descendant-page.js +99 -0
  687. package/dist/store/diagnostics.d.ts +47 -0
  688. package/dist/store/diagnostics.js +44 -0
  689. package/dist/store/doctor-reads.d.ts +16 -0
  690. package/dist/store/doctor-reads.js +19 -0
  691. package/dist/store/dormant.d.ts +105 -0
  692. package/dist/store/dormant.js +241 -0
  693. package/dist/store/embeddings/index.d.ts +36 -0
  694. package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
  695. package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
  696. package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
  697. package/dist/store/embeddings/provider.d.ts +40 -0
  698. package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
  699. package/dist/store/entry-reads.d.ts +66 -63
  700. package/dist/store/entry-reads.js +159 -121
  701. package/dist/store/entry-row.d.ts +14 -37
  702. package/dist/store/entry-row.js +37 -45
  703. package/dist/store/entry-writes.d.ts +40 -17
  704. package/dist/store/entry-writes.js +105 -41
  705. package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
  706. package/dist/{failure-log.js → store/failure-log.js} +9 -2
  707. package/dist/store/goals.d.ts +96 -0
  708. package/dist/store/goals.js +260 -0
  709. package/dist/store/graph-queue.d.ts +13 -0
  710. package/dist/store/graph-queue.js +70 -0
  711. package/dist/store/graph-reads.d.ts +41 -0
  712. package/dist/{graph/read.js → store/graph-reads.js} +72 -162
  713. package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
  714. package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
  715. package/dist/store/graph-view-rows.d.ts +13 -0
  716. package/dist/store/graph-view-rows.js +68 -0
  717. package/dist/store/graph-writes.d.ts +33 -0
  718. package/dist/store/graph-writes.js +232 -0
  719. package/dist/store/half-life.d.ts +35 -0
  720. package/dist/store/half-life.js +75 -0
  721. package/dist/store/handoffs.d.ts +6 -12
  722. package/dist/store/handoffs.js +54 -63
  723. package/dist/store/index-and-stats.d.ts +14 -20
  724. package/dist/store/index-and-stats.js +74 -119
  725. package/dist/store/index.d.ts +4 -0
  726. package/dist/store/index.js +3 -0
  727. package/dist/store/key-audit.d.ts +2 -2
  728. package/dist/store/key-audit.js +4 -4
  729. package/dist/store/key-writes.d.ts +12 -5
  730. package/dist/store/key-writes.js +30 -4
  731. package/dist/store/ledger-turn.d.ts +17 -0
  732. package/dist/store/ledger-turn.js +27 -0
  733. package/dist/store/markdown.d.ts +3 -7
  734. package/dist/store/markdown.js +25 -23
  735. package/dist/store/mirrors.d.ts +7 -13
  736. package/dist/store/mirrors.js +52 -47
  737. package/dist/store/object-types.d.ts +189 -0
  738. package/dist/store/object-types.js +4 -0
  739. package/dist/store/open.d.ts +6 -4
  740. package/dist/store/open.js +30 -36
  741. package/dist/store/planning-fallacy-evidence.d.ts +14 -0
  742. package/dist/store/planning-fallacy-evidence.js +52 -0
  743. package/dist/store/port.d.ts +649 -0
  744. package/dist/store/port.js +17 -0
  745. package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
  746. package/dist/{predictions/store.js → store/predictions.js} +88 -184
  747. package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
  748. package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
  749. package/dist/{quarantine.js → store/quarantine.js} +64 -22
  750. package/dist/store/raw-archive.d.ts +14 -0
  751. package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
  752. package/dist/store/recall-scope.d.ts +78 -0
  753. package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
  754. package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
  755. package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
  756. package/dist/store/rejected-values.d.ts +55 -0
  757. package/dist/store/rejected-values.js +150 -0
  758. package/dist/store/rejection.d.ts +54 -0
  759. package/dist/{rejection.js → store/rejection.js} +16 -67
  760. package/dist/store/report-reads.d.ts +6 -0
  761. package/dist/store/report-reads.js +29 -0
  762. package/dist/store/rows.d.ts +11 -22
  763. package/dist/store/rows.js +52 -43
  764. package/dist/store/rule-sql.d.ts +5 -0
  765. package/dist/store/rule-sql.js +37 -0
  766. package/dist/store/search-rows.d.ts +22 -42
  767. package/dist/store/search-rows.js +55 -78
  768. package/dist/store/sessions.d.ts +23 -49
  769. package/dist/store/sessions.js +96 -118
  770. package/dist/store/sqlite/commit-watch.d.ts +4 -0
  771. package/dist/store/sqlite/commit-watch.js +29 -0
  772. package/dist/store/sqlite/connector-events-group.d.ts +5 -0
  773. package/dist/store/sqlite/connector-events-group.js +50 -0
  774. package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
  775. package/dist/store/sqlite/connector-writes-group.js +65 -0
  776. package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
  777. package/dist/store/sqlite/dag-reads-group.js +45 -0
  778. package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
  779. package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
  780. package/dist/store/sqlite/error-codec.d.ts +17 -0
  781. package/dist/store/sqlite/error-codec.js +61 -0
  782. package/dist/store/sqlite/executor-counts.d.ts +10 -0
  783. package/dist/store/sqlite/executor-counts.js +11 -0
  784. package/dist/store/sqlite/executor.d.ts +29 -0
  785. package/dist/store/sqlite/executor.js +287 -0
  786. package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
  787. package/dist/store/sqlite/graph-reads-group.js +18 -0
  788. package/dist/store/sqlite/local.d.ts +21 -0
  789. package/dist/store/sqlite/local.js +39 -0
  790. package/dist/store/sqlite/object-rows.d.ts +102 -0
  791. package/dist/store/sqlite/object-rows.js +221 -0
  792. package/dist/store/sqlite/objects-group.d.ts +20 -0
  793. package/dist/store/sqlite/objects-group.js +316 -0
  794. package/dist/store/sqlite/predictions-group.d.ts +5 -0
  795. package/dist/store/sqlite/predictions-group.js +28 -0
  796. package/dist/store/sqlite/quarantine-group.d.ts +5 -0
  797. package/dist/store/sqlite/quarantine-group.js +38 -0
  798. package/dist/store/sqlite/store.d.ts +23 -0
  799. package/dist/store/sqlite/store.js +294 -0
  800. package/dist/store/sqlite/vector-pack.d.ts +18 -0
  801. package/dist/store/sqlite/vector-pack.js +46 -0
  802. package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
  803. package/dist/store/sqlite/vector-reads-group.js +23 -0
  804. package/dist/store/sqlite/worker-entry.d.ts +2 -0
  805. package/dist/store/sqlite/worker-entry.js +8 -0
  806. package/dist/store/sqlite/worker-jobs.d.ts +5 -0
  807. package/dist/store/sqlite/worker-jobs.js +116 -0
  808. package/dist/store/sqlite/worker-ops.d.ts +135 -0
  809. package/dist/store/sqlite/worker-ops.js +93 -0
  810. package/dist/store/sqlite/worker-store.d.ts +8 -0
  811. package/dist/store/sqlite/worker-store.js +79 -0
  812. package/dist/store/summaries.d.ts +11 -72
  813. package/dist/store/summaries.js +47 -186
  814. package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
  815. package/dist/{summary-dirty.js → store/summary-dirty.js} +1 -1
  816. package/dist/store/tenant-lookup.d.ts +6 -1
  817. package/dist/store/tenant-lookup.js +7 -0
  818. package/dist/store/tenant.d.ts +11 -0
  819. package/dist/store/tenant.js +28 -0
  820. package/dist/store/token-ledger-rows.d.ts +61 -0
  821. package/dist/store/token-ledger-rows.js +68 -0
  822. package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +14 -51
  823. package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
  824. package/dist/store/tombstone-checks.d.ts +12 -0
  825. package/dist/store/tombstone-checks.js +31 -0
  826. package/dist/store/usage-reports.d.ts +7 -0
  827. package/dist/store/usage-reports.js +18 -0
  828. package/dist/store/vector-index.d.ts +46 -0
  829. package/dist/store/vector-index.js +170 -0
  830. package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
  831. package/dist/store/working-memory.js +118 -0
  832. package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
  833. package/dist/{yaml.js → store/yaml.js} +2 -6
  834. package/dist/support-bundle.d.ts +1 -1
  835. package/dist/support-bundle.js +19 -37
  836. package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
  837. package/dist/{gated-write.js → trust/gated-write.js} +6 -6
  838. package/dist/trust/quarantine.d.ts +4 -0
  839. package/dist/trust/quarantine.js +8 -0
  840. package/dist/trust/reject-flow.d.ts +23 -0
  841. package/dist/trust/reject-flow.js +65 -0
  842. package/dist/util/anthropic-messages.d.ts +31 -0
  843. package/dist/util/anthropic-messages.js +58 -0
  844. package/dist/util/atomic-write.d.ts +4 -0
  845. package/dist/util/atomic-write.js +138 -0
  846. package/dist/util/capped-json.d.ts +6 -0
  847. package/dist/util/capped-json.js +46 -0
  848. package/dist/util/crash-handlers.d.ts +12 -0
  849. package/dist/util/crash-handlers.js +72 -0
  850. package/dist/{env.d.ts → util/env.d.ts} +27 -7
  851. package/dist/{env.js → util/env.js} +33 -8
  852. package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
  853. package/dist/util/home-path.js +69 -0
  854. package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
  855. package/dist/util/http-retry.js +103 -0
  856. package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
  857. package/dist/{http-util.js → util/http-util.js} +31 -11
  858. package/dist/util/json.d.ts +17 -0
  859. package/dist/util/json.js +25 -0
  860. package/dist/{log.d.ts → util/log.d.ts} +7 -3
  861. package/dist/{log.js → util/log.js} +36 -11
  862. package/dist/util/real-path.d.ts +3 -0
  863. package/dist/util/real-path.js +15 -0
  864. package/dist/util/request-scope.d.ts +28 -0
  865. package/dist/util/request-scope.js +48 -0
  866. package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
  867. package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
  868. package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
  869. package/dist/util/stored-json.d.ts +9 -0
  870. package/dist/util/stored-json.js +8 -0
  871. package/dist/util/time.d.ts +2 -0
  872. package/dist/util/time.js +3 -0
  873. package/dist/util/token-text.d.ts +15 -0
  874. package/dist/util/token-text.js +20 -0
  875. package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
  876. package/dist/util/transcript-tail.js +49 -0
  877. package/dist/util/version.d.ts +11 -0
  878. package/dist/util/version.js +26 -0
  879. package/extensions/openclaw-plugin/index.ts +2 -6
  880. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  881. package/extensions/openclaw-plugin/package.json +1 -1
  882. package/openclaw.plugin.json +1 -1
  883. package/package.json +2 -2
  884. package/dist/ablation.d.ts +0 -102
  885. package/dist/ablation.js +0 -136
  886. package/dist/api.d.ts +0 -26
  887. package/dist/api.js +0 -29
  888. package/dist/audit-prune.d.ts +0 -62
  889. package/dist/audit-prune.js +0 -107
  890. package/dist/autolearn.d.ts +0 -56
  891. package/dist/client.d.ts +0 -48
  892. package/dist/compare.d.ts +0 -86
  893. package/dist/compare.js +0 -117
  894. package/dist/connectors/github/cli-impl.d.ts +0 -25
  895. package/dist/connectors/github/cli-impl.js +0 -227
  896. package/dist/connectors/github/idempotency.d.ts +0 -19
  897. package/dist/connectors/github/idempotency.js +0 -27
  898. package/dist/connectors/slack/idempotency.d.ts +0 -17
  899. package/dist/connectors/slack/idempotency.js +0 -31
  900. package/dist/correction-latency.d.ts +0 -36
  901. package/dist/customer-notes.d.ts +0 -96
  902. package/dist/customer-notes.js +0 -336
  903. package/dist/db.d.ts +0 -9
  904. package/dist/db.js +0 -8
  905. package/dist/decisions.d.ts +0 -94
  906. package/dist/decisions.js +0 -326
  907. package/dist/dedupe.d.ts +0 -75
  908. package/dist/dedupe.js +0 -169
  909. package/dist/dormant.d.ts +0 -93
  910. package/dist/dormant.js +0 -137
  911. package/dist/embedding-provider.d.ts +0 -77
  912. package/dist/embeddings.d.ts +0 -101
  913. package/dist/extract.js +0 -133
  914. package/dist/forward-claim-detector.d.ts +0 -36
  915. package/dist/forward-claim-detector.js +0 -112
  916. package/dist/goals.d.ts +0 -173
  917. package/dist/goals.js +0 -448
  918. package/dist/graph/read.d.ts +0 -73
  919. package/dist/graph/rows.d.ts +0 -45
  920. package/dist/graph/types.js +0 -11
  921. package/dist/graph-stream.d.ts +0 -70
  922. package/dist/graph-view.d.ts +0 -73
  923. package/dist/graph-view.js +0 -333
  924. package/dist/half-life-migration.d.ts +0 -63
  925. package/dist/half-life-migration.js +0 -182
  926. package/dist/handoff.js +0 -68
  927. package/dist/home-path.js +0 -24
  928. package/dist/http-retry.js +0 -51
  929. package/dist/incidents.d.ts +0 -103
  930. package/dist/incidents.js +0 -349
  931. package/dist/instruction-detect.js +0 -27
  932. package/dist/json.d.ts +0 -7
  933. package/dist/json.js +0 -11
  934. package/dist/ledger-db.d.ts +0 -10
  935. package/dist/ledger-db.js +0 -42
  936. package/dist/memory-value-weights.d.ts +0 -19
  937. package/dist/memory-value.d.ts +0 -113
  938. package/dist/memory-value.js +0 -250
  939. package/dist/memory.d.ts +0 -294
  940. package/dist/memory.js +0 -522
  941. package/dist/owner-validation.d.ts +0 -42
  942. package/dist/owner-validation.js +0 -56
  943. package/dist/path-context.d.ts +0 -24
  944. package/dist/physics-state.d.ts +0 -39
  945. package/dist/policies.d.ts +0 -151
  946. package/dist/policies.js +0 -434
  947. package/dist/processes.d.ts +0 -108
  948. package/dist/processes.js +0 -371
  949. package/dist/project-briefs.d.ts +0 -128
  950. package/dist/project-briefs.js +0 -523
  951. package/dist/provenance-coverage.d.ts +0 -18
  952. package/dist/rate-limit.d.ts +0 -34
  953. package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
  954. package/dist/raw-archive.d.ts +0 -24
  955. package/dist/recall-history.d.ts +0 -131
  956. package/dist/recall-history.js +0 -227
  957. package/dist/recall-scope.d.ts +0 -138
  958. package/dist/refine-llm.d.ts +0 -61
  959. package/dist/refine-llm.js +0 -167
  960. package/dist/reject-flow.d.ts +0 -69
  961. package/dist/reject-flow.js +0 -260
  962. package/dist/rejection.d.ts +0 -100
  963. package/dist/replay.d.ts +0 -41
  964. package/dist/replay.js +0 -122
  965. package/dist/rrf.d.ts +0 -43
  966. package/dist/rrf.js +0 -61
  967. package/dist/scope.d.ts +0 -14
  968. package/dist/server-detect.d.ts +0 -72
  969. package/dist/server-detect.js +0 -222
  970. package/dist/session-owners.d.ts +0 -7
  971. package/dist/session-owners.js +0 -54
  972. package/dist/shared.d.ts +0 -186
  973. package/dist/shared.js +0 -540
  974. package/dist/skills.d.ts +0 -101
  975. package/dist/skills.js +0 -367
  976. package/dist/store/entry-writes-group.d.ts +0 -9
  977. package/dist/store/vector-writes.d.ts +0 -6
  978. package/dist/store/vector-writes.js +0 -59
  979. package/dist/store-port.d.ts +0 -262
  980. package/dist/store-port.js +0 -178
  981. package/dist/tenant.d.ts +0 -25
  982. package/dist/tenant.js +0 -43
  983. package/dist/trace.d.ts +0 -34
  984. package/dist/transcript-tail.js +0 -48
  985. package/dist/version.d.ts +0 -26
  986. package/dist/version.js +0 -41
  987. package/dist/working-memory.js +0 -154
  988. /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
  989. /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
  990. /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
  991. /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
  992. /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
  993. /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
  994. /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
  995. /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
  996. /package/dist/{api-errors.js → core/api-errors.js} +0 -0
  997. /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
  998. /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
  999. /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
  1000. /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
  1001. /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
  1002. /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
  1003. /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
  1004. /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
  1005. /package/dist/{escape.js → util/escape.js} +0 -0
  1006. /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
  1007. /package/dist/{keyset.js → util/keyset.js} +0 -0
  1008. /package/dist/{same-text.js → util/same-text.js} +0 -0
  1009. /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
  1010. /package/dist/{db → util}/sqlite-blocked.js +0 -0
  1011. /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
  1012. /package/dist/{tokenize.js → util/tokenize.js} +0 -0
  1013. /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
  1014. /package/dist/{write-budget.js → util/write-budget.js} +0 -0
@@ -1,19 +1,11 @@
1
- /**
2
- * Recall eval harness.
3
- *
4
- * Given a corpus of (query, expected_memory_ids) cases, run recall against
5
- * the store and report ranking-quality metrics: MRR, Recall@K, NDCG@K.
6
- *
7
- * The goal is to make recall quality measurable so MMR lambda, embedding
8
- * weights, and future scoring tweaks can be tuned against evidence instead
9
- * of intuition.
10
- */
11
- import { hybridSearch } from './search/hybrid.js';
12
- import { searchBothHybrid } from './shared.js';
13
- import { isInitialized } from './store/open.js';
14
- // ---------------------------------------------------------------------------
15
- // Metrics — pure functions. K is inclusive of position K.
16
- // ---------------------------------------------------------------------------
1
+ /** Recall eval harness: runs recall over (query, expected_memory_ids) cases and reports MRR, Recall@K and NDCG@K.
2
+ * It exists so MMR lambda, embedding weights and scoring tweaks are tuned against evidence instead of intuition. */
3
+ import { hybridSearch } from '../search/hybrid.js';
4
+ import { searchBothHybrid } from '../sharing/search-both.js';
5
+ import { isInitialized } from '../store/open.js';
6
+ // Generous so metrics are not truncated.
7
+ const DEFAULT_EVAL_BUDGET = 100_000;
8
+ const QUERY_WORDS = 8;
17
9
  /** Mean Reciprocal Rank for a single ranking given expected ids. */
18
10
  export function mrr(returned, expected) {
19
11
  if (expected.length === 0)
@@ -38,10 +30,8 @@ export function recallAtK(returned, expected, k) {
38
30
  }
39
31
  return hits / expected.length;
40
32
  }
41
- /**
42
- * Normalized Discounted Cumulative Gain at K with binary relevance.
43
- * gain_i = 1 if returned[i] ∈ expected else 0. discount = log2(i + 2).
44
- */
33
+ /** Normalized Discounted Cumulative Gain at K with binary relevance.
34
+ * gain_i = 1 if returned[i] ∈ expected else 0. discount = log2(i + 2). */
45
35
  export function ndcgAtK(returned, expected, k) {
46
36
  if (expected.length === 0)
47
37
  return 0;
@@ -60,32 +50,12 @@ export function ndcgAtK(returned, expected, k) {
60
50
  }
61
51
  return idcg === 0 ? 0 : dcg / idcg;
62
52
  }
63
- // ---------------------------------------------------------------------------
64
- // Runner
65
- // ---------------------------------------------------------------------------
66
53
  export async function runEval(cases, entries, options = {}) {
67
- const budget = options.budget ?? 100_000; // generous so metrics aren't truncated
68
54
  const start = Date.now();
69
55
  const results = [];
70
56
  const useBothStores = Boolean(options.globalRoot && options.hippoRoot && isInitialized(options.globalRoot));
71
57
  for (const c of cases) {
72
- const ranked = useBothStores
73
- ? await searchBothHybrid(c.query, options.hippoRoot, options.globalRoot, {
74
- budget,
75
- now: options.now,
76
- embeddingWeight: options.embeddingWeight,
77
- mmr: options.mmr,
78
- mmrLambda: options.mmrLambda,
79
- localBump: options.localBump,
80
- })
81
- : await hybridSearch(c.query, entries, {
82
- budget,
83
- now: options.now,
84
- hippoRoot: options.hippoRoot,
85
- embeddingWeight: options.embeddingWeight,
86
- mmr: options.mmr,
87
- mmrLambda: options.mmrLambda,
88
- });
58
+ const ranked = await rankForCase(c.query, entries, options, useBothStores);
89
59
  const returnedIds = ranked.map((r) => r.entry.id);
90
60
  results.push({
91
61
  case: c,
@@ -110,11 +80,28 @@ export async function runEval(cases, entries, options = {}) {
110
80
  durationMs: Date.now() - start,
111
81
  };
112
82
  }
113
- /**
114
- * Compute pairwise deltas between a baseline and a current eval summary.
115
- * Cases are matched by EvalCase.id; any mismatch is surfaced in the onlyIn
116
- * arrays so the caller knows the corpora diverged.
117
- */
83
+ /** One case's ranking: across the local and global stores when `useBothStores`, else over `entries` alone. */
84
+ function rankForCase(query, entries, options, useBothStores) {
85
+ const budget = options.budget ?? DEFAULT_EVAL_BUDGET;
86
+ return useBothStores
87
+ ? searchBothHybrid(query, options.hippoRoot, options.globalRoot, {
88
+ budget,
89
+ now: options.now,
90
+ embeddingWeight: options.embeddingWeight,
91
+ mmr: options.mmr,
92
+ mmrLambda: options.mmrLambda,
93
+ localBump: options.localBump,
94
+ })
95
+ : hybridSearch(query, entries, {
96
+ budget,
97
+ now: options.now,
98
+ hippoRoot: options.hippoRoot,
99
+ embeddingWeight: options.embeddingWeight,
100
+ mmr: options.mmr,
101
+ mmrLambda: options.mmrLambda,
102
+ });
103
+ }
104
+ /** Compute pairwise deltas between a baseline and a current eval summary, matching cases by EvalCase.id; mismatches land in the onlyIn arrays. */
118
105
  export function compareSummaries(baseline, current) {
119
106
  const aggregate = {
120
107
  mrr: current.meanMrr - baseline.meanMrr,
@@ -158,14 +145,7 @@ export function compareSummaries(baseline, current) {
158
145
  onlyInCurrent: [...curById.keys()].filter((id) => !baseById.has(id)),
159
146
  };
160
147
  }
161
- // ---------------------------------------------------------------------------
162
- // Bootstrap — generate a synthetic corpus from current memories
163
- // ---------------------------------------------------------------------------
164
- /**
165
- * For each memory, take its first 8 content words as a trivial query and
166
- * expect that memory back. Useful as a smoke test: if recall can't find a
167
- * memory by its own opening words, something is broken.
168
- */
148
+ /** For each memory, use its first 8 content words as a trivial query and expect that memory back: a smoke test for recall. */
169
149
  export function bootstrapCorpus(entries, maxCases = 50) {
170
150
  const cases = [];
171
151
  for (const e of entries) {
@@ -174,7 +154,7 @@ export function bootstrapCorpus(entries, maxCases = 50) {
174
154
  const words = e.content.trim().split(/\s+/).filter((w) => w.length > 2);
175
155
  if (words.length < 3)
176
156
  continue;
177
- const query = words.slice(0, 8).join(' ');
157
+ const query = words.slice(0, QUERY_WORDS).join(' ');
178
158
  cases.push({
179
159
  id: `bootstrap_${e.id}`,
180
160
  query,
@@ -1,7 +1,7 @@
1
1
  /** Typed judgment over capture candidates via TypeSafe's Jev (System One).
2
2
  * Regex picks WHAT is a candidate; it cannot say what is worth keeping, so
3
3
  * every captured memory currently lands on a flat schema_fit of 0.5. */
4
- import { ConfidenceLevel, EmotionalValence } from './memory.js';
4
+ import { ConfidenceLevel, EmotionalValence } from '../core/memory.js';
5
5
  export type JudgedKind = 'error' | 'decision' | 'convention' | 'preference' | 'trivia';
6
6
  export interface Judgment {
7
7
  /** Jev noul, 0..1. Maps to `schema_fit` on the written entry. */
@@ -20,11 +20,6 @@ export interface JudgeOptions {
20
20
  /** Bounded parallelism for `judgeAll`. */
21
21
  concurrency?: number;
22
22
  }
23
- /** Absent key means hippo keeps its pre-Jev behaviour and makes no HTTP call. */
24
- export declare function judgmentApiKey(): string | undefined;
25
- /** `null` on any failure, so a Jev outage degrades capture to today's
26
- * behaviour instead of blocking the write. */
27
- export declare function judge(content: string, opts: JudgeOptions): Promise<Judgment | null>;
28
23
  /** Judge many candidates under a bounded concurrency pool, order preserved. */
29
24
  export declare function judgeAll(contents: readonly string[], opts: JudgeOptions): Promise<(Judgment | null)[]>;
30
25
  //# sourceMappingURL=judgment.d.ts.map
@@ -1,12 +1,21 @@
1
1
  /** Typed judgment over capture candidates via TypeSafe's Jev (System One).
2
2
  * Regex picks WHAT is a candidate; it cannot say what is worth keeping, so
3
3
  * every captured memory currently lands on a flat schema_fit of 0.5. */
4
- import { envTypesafeApiKey } from './env.js';
5
- import { fetchWithRetry } from './http-retry.js';
6
- import { log } from './log.js';
4
+ import { fetchWithRetry } from '../util/http-retry.js';
5
+ import { errorMessage, log } from '../util/log.js';
6
+ import { readCappedJson } from '../util/capped-json.js';
7
+ import { isJsonNumber, isJsonObject, isJsonString } from '../util/json.js';
7
8
  const ENDPOINT = 'https://api.typesafe.ai/v1/systemone';
8
9
  const DEFAULT_MODEL = 'jev-1.13.0';
9
10
  const MAX_CONCURRENCY = 8;
11
+ // An honest reply is three short answers, a few hundred bytes; 1 MiB leaves room for a verbose envelope.
12
+ const JUDGE_MAX_REPLY_BYTES = 1024 * 1024;
13
+ /** One named answer of a Jev reply `{ answers: { <name>: Answer } }`; an empty object when the reply has none of that shape. */
14
+ function answerNamed(reply, name) {
15
+ const answers = isJsonObject(reply) ? reply.answers : undefined;
16
+ const answer = isJsonObject(answers) ? answers[name] : undefined;
17
+ return isJsonObject(answer) ? answer : {};
18
+ }
10
19
  const QUESTIONS = {
11
20
  durable: {
12
21
  type: 'noul',
@@ -36,12 +45,8 @@ const QUESTIONS = {
36
45
  };
37
46
  const KINDS = ['error', 'decision', 'convention', 'preference', 'trivia'];
38
47
  const VALENCES = ['critical', 'negative', 'positive', 'neutral'];
39
- /** Absent key means hippo keeps its pre-Jev behaviour and makes no HTTP call. */
40
- export function judgmentApiKey() {
41
- return envTypesafeApiKey();
42
- }
43
48
  function oneOf(value, allowed) {
44
- return allowed.find((option) => option === value) ?? null;
49
+ return isJsonString(value) ? allowed.find((option) => option === value) ?? null : null;
45
50
  }
46
51
  /** `verified` is unreachable: that tier means a human or a test confirmed it. */
47
52
  function toConfidenceTier(kindConfidence) {
@@ -68,14 +73,14 @@ async function post(content, opts) {
68
73
  }, { timeoutMs: JUDGE_TIMEOUT_MS, fetchFn: opts.fetcher });
69
74
  }
70
75
  catch (err) {
71
- log.debug(`judge: request failed: ${err instanceof Error ? err.message : String(err)}`);
76
+ log.debug(`judge: request failed: ${errorMessage(err)}`);
72
77
  return null;
73
78
  }
74
79
  return res.ok ? res : null;
75
80
  }
76
81
  /** `null` on any failure, so a Jev outage degrades capture to today's
77
82
  * behaviour instead of blocking the write. */
78
- export async function judge(content, opts) {
83
+ async function judge(content, opts) {
79
84
  const trimmed = content.trim();
80
85
  if (trimmed.length < 3)
81
86
  return null;
@@ -84,21 +89,19 @@ export async function judge(content, opts) {
84
89
  return null;
85
90
  let data;
86
91
  try {
87
- // SAFETY: the documented Jev response is `{ answers: { <name>: Answer } }`
88
- // keyed by the question names posted above; every field read below is
89
- // optional-chained and range-checked before use, so a lie here returns null.
90
- data = await res.json();
92
+ data = await readCappedJson(res, JUDGE_MAX_REPLY_BYTES);
91
93
  }
92
94
  catch (err) {
93
- log.debug(`judge: unreadable response: ${err instanceof Error ? err.message : String(err)}`);
95
+ log.debug(`judge: unreadable response: ${errorMessage(err)}`);
94
96
  return null;
95
97
  }
96
- const durable = data.answers?.durable?.noul;
97
- const kind = oneOf(data.answers?.kind?.choice, KINDS);
98
- const valence = oneOf(data.answers?.valence?.choice, VALENCES);
99
- if (durable === undefined || durable < 0 || durable > 1 || !kind || !valence)
98
+ const durable = answerNamed(data, 'durable').noul;
99
+ const kindAnswer = answerNamed(data, 'kind');
100
+ const kind = oneOf(kindAnswer.choice, KINDS);
101
+ const valence = oneOf(answerNamed(data, 'valence').choice, VALENCES);
102
+ if (!isJsonNumber(durable) || durable < 0 || durable > 1 || !kind || !valence)
100
103
  return null;
101
- const kindConfidence = data.answers?.kind?.confidence ?? 0;
104
+ const kindConfidence = isJsonNumber(kindAnswer.confidence) ? kindAnswer.confidence : 0;
102
105
  return { durable, kind, valence, confidence: toConfidenceTier(kindConfidence), kindConfidence };
103
106
  }
104
107
  /** Judge many candidates under a bounded concurrency pool, order preserved. */
@@ -226,9 +226,8 @@ export default function register(api) {
226
226
  async execute(_id, params) {
227
227
  const cfg = getConfig(api);
228
228
  const budget = params.budget ?? cfg.budget ?? 1500;
229
- const framing = cfg.framing ?? 'observe';
230
229
  const hippoCwd = resolveHippoCwdFromContext(api, ctx, cfg.root);
231
- const result = runHippo(['recall', params.query, '--budget', String(budget), '--framing', framing], hippoCwd);
230
+ const result = runHippo(['recall', params.query, '--budget', String(budget)], hippoCwd);
232
231
  return { content: [{ type: 'text', text: result || 'No relevant memories found.' }] };
233
232
  },
234
233
  }));
@@ -281,7 +280,7 @@ export default function register(api) {
281
280
  // --- Tool: hippo_outcome ---
282
281
  api.registerTool((ctx) => ({
283
282
  name: 'hippo_outcome',
284
- description: 'Report whether recalled memories were useful. Strengthens good memories (+5 days half-life) and weakens bad ones (-3 days). Call after completing work.',
283
+ description: "Report whether recalled memories were useful. Good outcomes slow a memory's decay and bad ones speed it up, in proportion to its record. Call after completing work.",
285
284
  parameters: {
286
285
  type: 'object',
287
286
  properties: {
@@ -1,4 +1,5 @@
1
- import type { GraphTxDb, EntityType, RelationType, SourceObjectRef } from './types.js';
1
+ import type { DatabaseSyncLike } from '../db/index.js';
2
+ import type { EntityType, RelationType, SourceObjectRef } from '../store/graph-rows.js';
2
3
  /** What names an object-derived entity across rebuilds; v38 has no UNIQUE on it, so the diff keeps one row per key. */
3
4
  export interface NaturalKey {
4
5
  readonly entityType: EntityType;
@@ -38,7 +39,7 @@ export type GraphOp = {
38
39
  };
39
40
  export declare function entityKey(k: NaturalKey): string;
40
41
  /** Ops that turn the stored graph into `desired`, in apply order; reads only, and keeps the lowest id per natural key. */
41
- export declare function graphDelta(db: GraphTxDb, tenantId: string, desired: DesiredGraph): GraphOp[];
42
+ export declare function graphDelta(db: DatabaseSyncLike, tenantId: string, desired: DesiredGraph): GraphOp[];
42
43
  /** graphDelta on its own connection and outside any write lock; the apply re-checks each op against what changed since. */
43
44
  export declare function readGraphDelta(hippoRoot: string, tenantId: string, desired: DesiredGraph): GraphOp[];
44
45
  //# sourceMappingURL=delta.d.ts.map
@@ -1,5 +1,4 @@
1
- // Diffs the derived graph against the stored rows, so a rebuild writes only what changed and an entity keeps the id its relations hang on.
2
- import { openHippoDb, closeHippoDb } from '../db.js';
1
+ import { loadStoredGraph, storedGraphOn } from '../store/graph-reads.js';
3
2
  const keyText = (entityType, objectType, objectId) => `${entityType}|${objectType}:${objectId}`;
4
3
  export function entityKey(k) {
5
4
  return keyText(k.entityType, k.sourceObject.type, k.sourceObject.id);
@@ -15,17 +14,12 @@ function provenanceOf(memoryId, kinds) {
15
14
  const kind = memoryId === null ? undefined : kinds.get(memoryId);
16
15
  return kind === undefined ? '|distilled' : `${memoryId}|${kind}`;
17
16
  }
18
- function memoryKindsOf(db, desired) {
17
+ function memoryIdsOf(desired) {
19
18
  const ids = new Set();
20
19
  for (const row of [...desired.entities, ...desired.relations])
21
20
  if (row.memoryId !== null)
22
21
  ids.add(row.memoryId);
23
- if (ids.size === 0)
24
- return new Map();
25
- // SAFETY: the SELECT names exactly the two columns of the row type.
26
- const rows = db.prepare(`SELECT id, kind FROM memories WHERE id IN (SELECT value FROM json_each(?))`)
27
- .all(JSON.stringify([...ids]));
28
- return new Map(rows.map((r) => [r.id, r.kind]));
22
+ return [...ids];
29
23
  }
30
24
  function firstByKey(rows, keyOf) {
31
25
  const out = new Map();
@@ -86,24 +80,16 @@ function diffRelations(stored, desired, keptKeyById, kinds) {
86
80
  inserts.push({ op: 'insertRelation', relation });
87
81
  return [...deletes, ...inserts];
88
82
  }
83
+ function deltaOf(stored, desired) {
84
+ const entityDelta = diffEntities(stored.entities, desired.entities, stored.kinds);
85
+ return [...entityDelta.ops, ...diffRelations(stored.relations, desired.relations, entityDelta.keptKeyById, stored.kinds)];
86
+ }
89
87
  /** Ops that turn the stored graph into `desired`, in apply order; reads only, and keeps the lowest id per natural key. */
90
88
  export function graphDelta(db, tenantId, desired) {
91
- const kinds = memoryKindsOf(db, desired);
92
- // SAFETY: the SELECT names exactly the columns of StoredEntity.
93
- const entities = db.prepare(`SELECT id, entity_type, name, memory_id, source_kind, source_object_type, source_object_id FROM entities WHERE tenant_id = ? ORDER BY id`).all(tenantId);
94
- // SAFETY: the SELECT names exactly the columns of StoredRelation.
95
- const relations = db.prepare(`SELECT id, from_entity_id, to_entity_id, rel_type, memory_id, source_kind, source_object_type, source_object_id FROM relations WHERE tenant_id = ? ORDER BY id`).all(tenantId);
96
- const entityDelta = diffEntities(entities, desired.entities, kinds);
97
- return [...entityDelta.ops, ...diffRelations(relations, desired.relations, entityDelta.keptKeyById, kinds)];
89
+ return deltaOf(storedGraphOn(db, tenantId, memoryIdsOf(desired)), desired);
98
90
  }
99
91
  /** graphDelta on its own connection and outside any write lock; the apply re-checks each op against what changed since. */
100
92
  export function readGraphDelta(hippoRoot, tenantId, desired) {
101
- const db = openHippoDb(hippoRoot);
102
- try {
103
- return graphDelta(db, tenantId, desired);
104
- }
105
- finally {
106
- closeHippoDb(db);
107
- }
93
+ return deltaOf(loadStoredGraph(hippoRoot, tenantId, memoryIdsOf(desired)), desired);
108
94
  }
109
95
  //# sourceMappingURL=delta.js.map
@@ -1,34 +1,12 @@
1
- /**
2
- * Deterministic entity extraction.
3
- *
4
- * Populates the graph from the already-structured consolidated first-class object tables -
5
- * NO NLP, no precision gate for entities + supersedes. The graph is a pure derived
6
- * function of the current object state, so `extractGraph` is an idempotent REBUILD: derive
7
- * entities + `supersedes` relations from decisions /
8
- * policies / customer_notes / project_briefs (the four object types whose kind maps to the
9
- * `entity_type` enum), then write only their difference from the stored rows. All writes go
10
- * through the src/graph/write.ts consolidated-source guard; this module issues no raw SQL.
11
- *
12
- * Pass 3 adds the
13
- * first CROSS-OBJECT relations: a deterministic NAME-MATCH heuristic that emits a
14
- * `references` edge when one consolidated object's text contains another entity's name.
15
- * It is conservative (word-boundary, length-bounded, ambiguity-guarded, per-source
16
- * capped); its precision is measured + reported, not assumed.
17
- *
18
- * Deferred (follow-ups): NLP prose-extraction (semantic depends-on / blocked-by / owns);
19
- * skill/incident/process entities (not in the entity_type enum - needs a migration); the
20
- * `hippo sleep` enqueue-hook.
21
- */
22
- import { type EntityType } from './graph/types.js';
23
- import { type DesiredGraph } from './graph/delta.js';
24
- import { type WriteBudget } from './write-budget.js';
25
- /** Per-type load cap (the loaders default to 100). A type whose active or superseded
26
- * set exceeds this is truncated; `ExtractResult.truncated` records it so the
27
- * incompleteness is observable rather than silent. */
1
+ /** Deterministic entity extraction: the graph is a pure function of the consolidated object tables (decisions, policies, customer_notes, project_briefs).
2
+ * Writes go through the src/store/graph-writes.ts consolidated-source guard. Pass 3 adds `references` edges by a conservative name-match heuristic. */
3
+ import { type EntityType } from '../store/graph-rows.js';
4
+ import { type DesiredGraph } from './delta.js';
5
+ import { type WriteBudget } from '../util/write-budget.js';
6
+ /** Per-type load cap (the loaders default to 100); a type over it is truncated and `ExtractResult.truncated` records that. */
28
7
  export declare const MAX_EXTRACT_PER_TYPE = 10000;
29
- /** A target entity name must be in [MIN, MAX] chars to be matched: MIN skips short /
30
- * generic words; MAX skips prose (a decision's prose name is never a target, only a
31
- * source). */
8
+ /** A target entity name must be in [MIN, MAX] chars to be matched: MIN skips short, generic words; MAX skips prose
9
+ * (a decision's prose name is never a target, only a source). */
32
10
  export declare const MIN_REF_NAME_LEN = 4;
33
11
  export declare const MAX_REF_NAME_LEN = 80;
34
12
  /** Per-source cap so one object cannot explode the graph with references edges. */
@@ -62,7 +40,7 @@ export interface ExtractRow {
62
40
  /** The successor's object id (Y) when this row (X) is superseded; null otherwise. */
63
41
  supersededBy: number | null;
64
42
  }
65
- /** One object type's loaded rows. */
43
+ /** One object type's rows, loaded and normalised. */
66
44
  export interface LoadedType {
67
45
  entityType: EntityType;
68
46
  rows: ExtractRow[];
@@ -85,4 +63,4 @@ export declare function extractGraph(hippoRoot: string, tenantId: string): Extra
85
63
  /** extractGraph for sleep: diffs outside the lock, then applies in transactions of about `budget.holdMs` with a pause
86
64
  * between them. A run stopped between chunks leaves a mixed graph that the next run's diff finishes. */
87
65
  export declare function extractGraphChunked(hippoRoot: string, tenantId: string, budget?: WriteBudget): Promise<ExtractResult>;
88
- //# sourceMappingURL=graph-extract.d.ts.map
66
+ //# sourceMappingURL=extract.d.ts.map
@@ -1,43 +1,21 @@
1
- /**
2
- * Deterministic entity extraction.
3
- *
4
- * Populates the graph from the already-structured consolidated first-class object tables -
5
- * NO NLP, no precision gate for entities + supersedes. The graph is a pure derived
6
- * function of the current object state, so `extractGraph` is an idempotent REBUILD: derive
7
- * entities + `supersedes` relations from decisions /
8
- * policies / customer_notes / project_briefs (the four object types whose kind maps to the
9
- * `entity_type` enum), then write only their difference from the stored rows. All writes go
10
- * through the src/graph/write.ts consolidated-source guard; this module issues no raw SQL.
11
- *
12
- * Pass 3 adds the
13
- * first CROSS-OBJECT relations: a deterministic NAME-MATCH heuristic that emits a
14
- * `references` edge when one consolidated object's text contains another entity's name.
15
- * It is conservative (word-boundary, length-bounded, ambiguity-guarded, per-source
16
- * capped); its precision is measured + reported, not assumed.
17
- *
18
- * Deferred (follow-ups): NLP prose-extraction (semantic depends-on / blocked-by / owns);
19
- * skill/incident/process entities (not in the entity_type enum - needs a migration); the
20
- * `hippo sleep` enqueue-hook.
21
- */
22
- import { applyGraphOps, runGraphRebuildTransaction } from './graph/write.js';
23
- import { MAX_ENTITY_NAME_LEN } from './graph/types.js';
24
- import { graphDelta, readGraphDelta } from './graph/delta.js';
25
- import { WRITE_BUDGET } from './write-budget.js';
26
- import { SLEEP_DB_WAIT_MS } from './db.js';
27
- import { loadDecisions } from './decisions.js';
28
- import { loadPolicies } from './policies.js';
29
- import { loadCustomerNotes } from './customer-notes.js';
30
- import { loadProjectBriefs } from './project-briefs.js';
31
- import { assertTenantId } from './tenant.js';
32
- import { escapeRegex } from './escape.js';
33
- /** Per-type load cap (the loaders default to 100). A type whose active or superseded
34
- * set exceeds this is truncated; `ExtractResult.truncated` records it so the
35
- * incompleteness is observable rather than silent. */
1
+ /** Deterministic entity extraction: the graph is a pure function of the consolidated object tables (decisions, policies, customer_notes, project_briefs).
2
+ * Writes go through the src/store/graph-writes.ts consolidated-source guard. Pass 3 adds `references` edges by a conservative name-match heuristic. */
3
+ import { applyGraphOps } from './write.js';
4
+ import { runGraphRebuildTransaction } from '../store/graph-writes.js';
5
+ import { MAX_ENTITY_NAME_LEN } from '../store/graph-rows.js';
6
+ import { graphDelta, readGraphDelta } from './delta.js';
7
+ import { WRITE_BUDGET } from '../util/write-budget.js';
8
+ import { SLEEP_DB_WAIT_MS } from '../db/index.js';
9
+ import { loadDecisions } from '../objects/decisions.js';
10
+ import { loadPolicies } from '../objects/policies.js';
11
+ import { loadCustomerNotes } from '../objects/customer-notes.js';
12
+ import { loadProjectBriefs } from '../objects/project-briefs.js';
13
+ import { assertTenantId } from '../store/tenant.js';
14
+ import { escapeRegex } from '../util/escape.js';
15
+ /** Per-type load cap (the loaders default to 100); a type over it is truncated and `ExtractResult.truncated` records that. */
36
16
  export const MAX_EXTRACT_PER_TYPE = 10000;
37
- // --- Pass 3 (cross-object references) tunables ------------------------------------
38
- /** A target entity name must be in [MIN, MAX] chars to be matched: MIN skips short /
39
- * generic words; MAX skips prose (a decision's prose name is never a target, only a
40
- * source). */
17
+ /** A target entity name must be in [MIN, MAX] chars to be matched: MIN skips short, generic words; MAX skips prose
18
+ * (a decision's prose name is never a target, only a source). */
41
19
  export const MIN_REF_NAME_LEN = 4;
42
20
  export const MAX_REF_NAME_LEN = 80;
43
21
  /** Per-source cap so one object cannot explode the graph with references edges. */
@@ -71,52 +49,33 @@ function sourceObjectOf(entityType, e2Id) {
71
49
  function pairKey(a, b) {
72
50
  return a < b ? `${a}:${b}` : `${b}:${a}`;
73
51
  }
74
- /**
75
- * Load a type's ACTIVE + SUPERSEDED rows (excluding `closed` = retired), normalised.
76
- * Calls the loader once per status so MAX_EXTRACT_PER_TYPE is a per-status budget
77
- * (closed rows never consume it). Sets `hitCap` when either status load is full.
78
- */
79
- function loadType(hippoRoot, tenantId, entityType,
80
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
81
- loadFn,
82
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
83
- nameOf,
84
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
- textOf) {
86
- const rows = [];
87
- let hitCap = false;
88
- for (const status of ['active', 'superseded']) {
89
- const loaded = loadFn(hippoRoot, tenantId, { status, limit: MAX_EXTRACT_PER_TYPE });
90
- if (loaded.length === MAX_EXTRACT_PER_TYPE)
91
- hitCap = true;
92
- for (const r of loaded) {
93
- // SAFETY: loadFn is always one of loadDecisions/loadPolicies/loadCustomerNotes/
94
- // loadProjectBriefs (wired in GRAPH_SOURCES); every one of their row
95
- // types declares id: number, memoryId: string | null, supersededBy: number | null.
96
- // `any` here is the deliberate type-erasure boundary (see eslint-disable above)
97
- // that lets one loop handle all four object row shapes.
98
- rows.push({
99
- entityType,
100
- e2Id: r.id,
101
- name: nameOf(r),
102
- searchText: textOf(r),
103
- memoryId: (r.memoryId ?? null),
104
- supersededBy: (r.supersededBy ?? null),
105
- });
52
+ /** Close over one loader's row type so the table below holds uniform functions. Loads ACTIVE and SUPERSEDED rows (not `closed`),
53
+ * one call per status, so MAX_EXTRACT_PER_TYPE is a per-status budget; `hitCap` is set when either load is full. */
54
+ function source(entityType, load, nameOf, textOf) {
55
+ return (hippoRoot, tenantId) => {
56
+ const rows = [];
57
+ let hitCap = false;
58
+ for (const status of ['active', 'superseded']) {
59
+ const loaded = load(hippoRoot, tenantId, { status, limit: MAX_EXTRACT_PER_TYPE });
60
+ if (loaded.length === MAX_EXTRACT_PER_TYPE)
61
+ hitCap = true;
62
+ for (const r of loaded) {
63
+ rows.push({ entityType, e2Id: r.id, name: nameOf(r), searchText: textOf(r), memoryId: r.memoryId, supersededBy: r.supersededBy });
64
+ }
106
65
  }
107
- }
108
- return { entityType, rows, hitCap };
66
+ return { entityType, rows, hitCap };
67
+ };
109
68
  }
110
69
  const GRAPH_SOURCES = [
111
- { entityType: 'decision', loadFn: loadDecisions, nameOf: (r) => r.decisionText, textOf: (r) => [r.decisionText, r.context].filter(Boolean).join(' ') },
112
- { entityType: 'policy', loadFn: loadPolicies, nameOf: (r) => r.policyName, textOf: (r) => [r.policyName, r.policyText].filter(Boolean).join(' ') },
113
- { entityType: 'customer', loadFn: loadCustomerNotes, nameOf: (r) => r.customer, textOf: (r) => [r.customer, r.note].filter(Boolean).join(' ') },
114
- { entityType: 'project', loadFn: loadProjectBriefs, nameOf: (r) => r.repo, textOf: (r) => [r.repo, r.summary].filter(Boolean).join(' ') },
70
+ source('decision', loadDecisions, (r) => r.decisionText, (r) => [r.decisionText, r.context].filter(Boolean).join(' ')),
71
+ source('policy', loadPolicies, (r) => r.policyName, (r) => [r.policyName, r.policyText].filter(Boolean).join(' ')),
72
+ source('customer', loadCustomerNotes, (r) => r.customer, (r) => [r.customer, r.note].filter(Boolean).join(' ')),
73
+ source('project', loadProjectBriefs, (r) => r.repo, (r) => [r.repo, r.summary].filter(Boolean).join(' ')),
115
74
  ];
116
75
  /** Every source type's rows, each read on its own connection; callers load before any write lock is taken. */
117
76
  export function loadGraphSources(hippoRoot, tenantId) {
118
77
  assertTenantId('loadGraphSources', tenantId);
119
- return GRAPH_SOURCES.map((src) => loadType(hippoRoot, tenantId, src.entityType, src.loadFn, src.nameOf, src.textOf));
78
+ return GRAPH_SOURCES.map((load) => load(hippoRoot, tenantId));
120
79
  }
121
80
  /** The tenant's graph as a pure function of its loaded objects; the write side diffs it against what is stored. */
122
81
  export function deriveGraph(loaded) {
@@ -261,7 +220,7 @@ export function extractGraph(hippoRoot, tenantId) {
261
220
  // Loaded first: opening a second connection under the rebuild's BEGIN IMMEDIATE dead-locks ('database is locked').
262
221
  const derived = deriveGraph(loadGraphSources(hippoRoot, tenantId));
263
222
  // Diffed and applied under one lock, so two concurrent rebuilds serialize instead of both inserting a missing row.
264
- const skipped = runGraphRebuildTransaction(hippoRoot, tenantId, (txDb) => applyGraphOps(txDb, hippoRoot, tenantId, graphDelta(txDb, tenantId, derived), 0, { holdMs: Infinity }).skipped);
223
+ const skipped = runGraphRebuildTransaction(hippoRoot, tenantId, (txDb) => applyGraphOps(txDb, hippoRoot, tenantId, graphDelta(txDb, tenantId, derived), { from: 0, holdMs: Infinity }).skipped);
265
224
  return resultOf(derived, skipped);
266
225
  }
267
226
  /** extractGraph for sleep: diffs outside the lock, then applies in transactions of about `budget.holdMs` with a pause
@@ -278,11 +237,11 @@ export async function extractGraphChunked(hippoRoot, tenantId, budget = WRITE_BU
278
237
  await budget.pause(committedAt);
279
238
  const from = next;
280
239
  // Sleep's wait, not a server request's 250 ms: each chunk is a fresh BEGIN IMMEDIATE a hook's write could otherwise fail.
281
- const chunk = runGraphRebuildTransaction(hippoRoot, tenantId, (txDb) => applyGraphOps(txDb, hippoRoot, tenantId, ops, from, { holdMs: budget.holdMs, clock: budget.clock }), { busyWaitMs: SLEEP_DB_WAIT_MS });
240
+ const chunk = runGraphRebuildTransaction(hippoRoot, tenantId, (txDb) => applyGraphOps(txDb, hippoRoot, tenantId, ops, { from, holdMs: budget.holdMs, clock: budget.clock }), { busyWaitMs: SLEEP_DB_WAIT_MS });
282
241
  committedAt = budget.clock();
283
242
  next = chunk.next;
284
243
  skipped += chunk.skipped;
285
244
  }
286
245
  return resultOf(derived, skipped);
287
246
  }
288
- //# sourceMappingURL=graph-extract.js.map
247
+ //# sourceMappingURL=extract.js.map
@@ -1,4 +1,4 @@
1
- import { type ResultCost, type SearchResult } from './search/types.js';
1
+ import { type ResultCost, type SearchResult } from '../core/search-types.js';
2
2
  /** Hard cap on `--hops` (a higher value just walks more of a finite graph; this bounds
3
3
  * worst-case work and keeps the flag honest). */
4
4
  export declare const MAX_HOPS = 3;
@@ -17,9 +17,8 @@ export interface GraphExpandOpts {
17
17
  tenantId: string;
18
18
  /** Mirror the recall handler's hard filters when re-loading graph-reached rows. */
19
19
  includeSuperseded?: boolean;
20
- /** ISO date; bi-temporal as-of filter applied to graph-reached rows (full rule, matching
21
- * cmdRecall: a row is visible if valid_from <= asOf AND, when superseded, its successor
22
- * was not yet valid at asOf). */
20
+ /** ISO date; bi-temporal as-of filter applied to graph-reached rows, matching cmdRecall:
21
+ * visible if valid_from <= asOf and, when superseded, its successor was not yet valid at asOf. */
23
22
  asOf?: string;
24
23
  /** Token budget for the augmented set (defaults to DEFAULT_RECALL_BUDGET, matching recall). */
25
24
  budget?: number;
@@ -28,28 +27,16 @@ export interface GraphExpandOpts {
28
27
  /** The recall --min-results floor: this many top base rows are kept regardless of
29
28
  * budget, so graph expansion never violates the floor. Defaults to 1. */
30
29
  minResults?: number;
31
- /** Recall-side envelope scope rule applied to graph-REACHED memories (the injected
32
- * rows), mirroring shared.ts SearchBothOptions.recallScope. Omitted = default-deny
33
- * (private + quarantine scopes excluded, NULL passes) — the fail-closed default for
34
- * bare/SDK callers. { requested, additive: true } = CLI --scope unlock semantics
35
- * (passesCliRecallScopeFilter); additive false/absent with requested set = api
36
- * exact-narrowing semantics (passesScopeFilterForRecall). Base results are the
37
- * caller's responsibility (they passed through the caller's own scope filter). */
30
+ /** Recall-side scope rule applied to graph-REACHED memories only (base results already passed the caller), mirroring HybridSearchOptions.recallScope.
31
+ * Omitted = default-deny (private and quarantine excluded, NULL passes), the fail-closed default for SDK callers.
32
+ * { requested, additive: true } is CLI --scope unlock (passesCliRecallScopeFilter); otherwise exact narrowing (passesScopeFilterForRecall). */
38
33
  recallScope?: {
39
34
  requested?: string;
40
35
  additive?: boolean;
41
36
  ownScope?: string;
42
37
  };
43
38
  }
44
- /**
45
- * Augment `baseResults` with memories reached by walking the graph `hops` edges out from
46
- * the seed results' entities (across the local AND global stores). Each graph hit is
47
- * inserted directly after the base result it descends from, scored just below that seed;
48
- * the base list's own order is preserved. Token-budget-bounded; deduped against the base
49
- * set and across stores.
50
- *
51
- * No-op (returns `baseResults` unchanged) when `hops <= 0`, there are no base results, the
52
- * graph is empty, no seed maps to an entity, or nothing new survives the filters/budget.
53
- */
39
+ /** Augment `baseResults` with memories reached by walking `hops` graph edges from the seeds across local AND global stores, each placed after its seed.
40
+ * Returns `baseResults` unchanged when `hops <= 0`, there are no base results, or nothing new survives the filters and the token budget. */
54
41
  export declare function graphExpandRecall(baseResults: SearchResult[], opts: GraphExpandOpts): SearchResult[];
55
- //# sourceMappingURL=graph-recall.d.ts.map
42
+ //# sourceMappingURL=recall.d.ts.map