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,27 +1,29 @@
1
1
  // The per-prompt hook's block and ledger rows, rendered here for `hippo context` and for promptHookContext (a remote hook route's call).
2
- // promptHookContext keeps the server-side copy of the CLI's getContext flags (cli/context.ts); the CLI parity case in tests/prompt-hook-context.test.ts is all that ties the two.
3
- import { getContext } from './api.js';
4
- import { BadRequestError } from './api-errors.js';
5
- import { isSharedStore, loadConfig } from './config.js';
2
+ // promptHookContext keeps the server-side copy of the CLI's getContext flags (cli/context.ts);
3
+ // the CLI parity case in tests/prompt-hook-context.test.ts is all that ties the two.
4
+ import { getContext } from './index.js';
5
+ import { BadRequestError } from '../core/api-errors.js';
6
+ import { isSharedStore, loadConfig } from '../core/config.js';
6
7
  import { contextBlockLines, contextCost, crossProjectLines, handoffText, sessionTrailText, settleTokens, snapshotText } from './context-render.js';
7
- import { isSqliteBusy, noteStoreBusy } from './db.js';
8
- import { MAX_ID_LEN } from './http-util.js';
9
- import { isJsonString } from './json.js';
10
- import { withLedgerDb } from './ledger-db.js';
8
+ import { MAX_ID_LEN } from '../util/http-util.js';
9
+ import { isJsonString } from '../util/json.js';
10
+ import { bookLedgerTurn, ledgerLastSent, noteLedgerRowSkipped } from './ledger-db.js';
11
11
  import { sessionPilotArm } from './pilot-arm.js';
12
- import { assertCallerProject, MAX_PROJECT_ALIASES } from './project-identity.js';
13
- import { writeDeliveryEventAtRoot, writeDeliveryEventOnHandle } from './recall-trace.js';
14
- import { blockHash, estimateTokens, hookPayloadString, isSubagentPayload, lastSentState, recordTokenUse, shouldSkipUnchanged, } from './token-ledger.js';
15
- /** With `db`, writes on the token ledger's handle (same store); without it, opens its own. A second flush is a no-op. */
16
- export function flushDeliveryRecorder(rec, db) {
12
+ import { assertCallerProject, MAX_PROJECT_ALIASES } from '../core/project-identity.js';
13
+ import { writeDeliveryEventAtRoot } from '../store/recall-trace.js';
14
+ import { hookPayloadString, isSubagentPayload, shouldSkipUnchanged, } from '../store/token-ledger.js';
15
+ import { blockHash, estimateTokens } from '../util/token-text.js';
16
+ import { errorMessage, log } from '../util/log.js';
17
+ import { DEFAULT_CONTEXT_BUDGET } from './context.js';
18
+ /** With `write`, stores on the token ledger's connection (same store); without it, opens its own. A second flush is a no-op. */
19
+ export function flushDeliveryRecorder(rec, write) {
17
20
  if (rec === null)
18
21
  return;
19
22
  try {
20
- rec.flush((input) => (db ? writeDeliveryEventOnHandle(db, input) : writeDeliveryEventAtRoot(rec.root, input)));
23
+ rec.flush(write ?? ((input) => writeDeliveryEventAtRoot(rec.root, input)));
21
24
  }
22
25
  catch (error) {
23
- // The hook's one-line stderr contract pins this exact text, so it bypasses the leveled logger.
24
- console.error(`[hippo] delivery ledger write failed:${error instanceof Error ? error.message : String(error)}`);
26
+ log.error(`delivery ledger write failed: ${errorMessage(error)}`);
25
27
  }
26
28
  }
27
29
  /** A Copilot sessionStart reply's wrapper, picked by the sender's casing: stdin.ts keeps a camelCase `sessionId`, which only the Copilot harness sends. */
@@ -113,56 +115,36 @@ function skipUnchangedStatic(view, surface, staticBlock, recallBlock, staticCoun
113
115
  // Before the ledger read, so a caller that did not print this block books no skip row.
114
116
  if (view.printedHash !== undefined && view.printedHash !== staticHash)
115
117
  return false;
116
- const last = withLedgerDb(hippoRoot, (db) => lastSentState(db, view.tenantId, payloadSessionId, surface), ledgerOpts);
118
+ const last = ledgerLastSent(hippoRoot, view.tenantId, payloadSessionId, surface, ledgerOpts);
117
119
  if (!shouldSkipUnchanged(last ?? null, staticHash, refreshTurns))
118
120
  return false;
119
- withLedgerDb(hippoRoot, (db) => {
120
- recordTokenUse(db, {
121
- tenantId: view.tenantId, sessionId: payloadSessionId, surface, event: 'skip',
122
- items: staticCount, tokens: estimateTokens(staticBlock), hash: staticHash,
123
- });
124
- if (recallBlock.trim())
125
- return;
126
- rec?.delivered({ state: 'reused', staticHash, staticReused: true });
127
- flushDeliveryRecorder(rec, db);
121
+ bookLedgerTurn(hippoRoot, {
122
+ uses: [{
123
+ tenantId: view.tenantId, sessionId: payloadSessionId, surface, event: 'skip',
124
+ items: staticCount, tokens: estimateTokens(staticBlock), hash: staticHash,
125
+ }],
126
+ delivery: recallBlock.trim() ? undefined : (write) => {
127
+ rec?.delivered({ state: 'reused', staticHash, staticReused: true });
128
+ flushDeliveryRecorder(rec, write);
129
+ },
128
130
  }, ledgerOpts);
129
131
  return true;
130
132
  }
131
- /** One connection for both rows; each insert in its own try so one failing doesn't skip the other. */
133
+ /** One connection for both rows; a failed row is logged and the other still lands, because a ledger failure must not break the hook. */
132
134
  function recordAdditionalContextRows(view, surface, staticPart, recallPart) {
133
- withLedgerDb(view.hippoRoot, (db) => {
134
- if (staticPart.text) {
135
- try {
136
- recordTokenUse(db, {
137
- tenantId: view.tenantId, sessionId: view.ledgerSessionId, surface, event: 'inject',
138
- items: staticPart.items, tokens: estimateTokens(staticPart.text), hash: blockHash(staticPart.text),
139
- });
140
- // Best-effort row: only a busy store is actionable, and a ledger failure must not break the hook.
141
- }
142
- catch (error) {
143
- if (isSqliteBusy(error))
144
- noteStoreBusy('token ledger row skipped');
145
- }
146
- }
147
- if (recallPart.text) {
148
- try {
149
- recordTokenUse(db, {
150
- tenantId: view.tenantId, sessionId: view.ledgerSessionId, surface: 'hook_recall', event: 'inject',
151
- items: recallPart.items, tokens: estimateTokens(recallPart.text), hash: blockHash(recallPart.text),
152
- });
153
- // Same best-effort rule as the inject row above.
154
- }
155
- catch (error) {
156
- if (isSqliteBusy(error))
157
- noteStoreBusy('token ledger row skipped');
158
- }
159
- }
160
- flushDeliveryRecorder(view.rec, db);
135
+ const row = (part, on) => ({
136
+ tenantId: view.tenantId, sessionId: view.ledgerSessionId, surface: on, event: 'inject',
137
+ items: part.items, tokens: estimateTokens(part.text), hash: blockHash(part.text),
138
+ });
139
+ bookLedgerTurn(view.hippoRoot, {
140
+ uses: [...(staticPart.text ? [row(staticPart, surface)] : []), ...(recallPart.text ? [row(recallPart, 'hook_recall')] : [])],
141
+ onRowError: noteLedgerRowSkipped,
142
+ delivery: (write) => flushDeliveryRecorder(view.rec, write),
161
143
  }, { sharedStore: view.sharedStore });
162
144
  }
163
145
  // The flags HIPPO_PINNED_INJECT_COMMAND gives the local hook; the CLI parity test fails if the two drift.
164
146
  const HOOK_INCLUDE_RECENT = 5;
165
- const HOOK_BUDGET = 1500;
147
+ const HOOK_BUDGET = DEFAULT_CONTEXT_BUDGET;
166
148
  const HOOK_FRAMING = 'observe';
167
149
  // blockHash's shape (token-ledger.ts).
168
150
  const BLOCK_HASH_RE = /^[0-9a-f]{16}$/;
@@ -181,10 +163,10 @@ function assertPromptHookRequest(req) {
181
163
  throw new BadRequestError('printed hash: 16 lowercase hex characters');
182
164
  }
183
165
  }
184
- /** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read on `ctx`'s store for the caller's project, leaving out an unchanged static block only when `printedHash` matches it.
185
- * `arm` is the raw ledger arm (`hippo` or `holdout`), null at rate 0; a holdout session gets an empty stdout. `staticHash` is the hash to echo back: null with no static block, for a sub-agent or a holdout.
186
- * Scope detection (HIPPO_SCOPE and skill env vars) and delivery-ledger events are CLI-only.
187
- * Throws BadRequestError past the input caps, and on a shared store for a project assertCallerProject refuses, before any arm is booked. */
166
+ /** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read on `ctx`'s store for its project.
167
+ * Omits an unchanged static block only when `printedHash` matches; `arm` is the ledger arm (`hippo` or `holdout`, null at rate 0); a holdout gets empty stdout.
168
+ * `staticHash` is the hash to echo back (null with no static block, a sub-agent or a holdout). Scope detection and delivery-ledger events are CLI-only.
169
+ * Throws BadRequestError past the input caps, and on a shared store for a project assertCallerProject refuses, before any arm is booked. */
188
170
  export async function promptHookContext(ctx, req, opts = {}) {
189
171
  assertPromptHookRequest(req);
190
172
  const { sessionId, payload } = req;
@@ -1,5 +1,5 @@
1
- import { type QuarantineStatus } from '../quarantine.js';
2
- import type { KeysetPosition } from '../keyset.js';
1
+ import type { QuarantineStatus } from '../store/quarantine.js';
2
+ import type { KeysetPosition } from '../util/keyset.js';
3
3
  import type { Context } from './types.js';
4
4
  export interface QuarantineListItem {
5
5
  id: string;
@@ -16,9 +16,9 @@ export declare function quarantineList(ctx: Context, opts?: {
16
16
  status?: QuarantineStatus | 'all';
17
17
  limit?: number;
18
18
  after?: KeysetPosition;
19
- }): QuarantineListItem[];
19
+ }): Promise<QuarantineListItem[]>;
20
20
  /** Release a quarantined memory to its original scope. Admin only; the scope guard refuses a row moved since (mirrors restoreDormant). */
21
- export declare function quarantineApprove(ctx: Context, id: string): void;
21
+ export declare function quarantineApprove(ctx: Context, id: string): Promise<void>;
22
22
  /** Keep a quarantined memory hidden for good. Admin only; the raw row is untouched (append-only). */
23
- export declare function quarantineReject(ctx: Context, id: string): void;
23
+ export declare function quarantineReject(ctx: Context, id: string): Promise<void>;
24
24
  //# sourceMappingURL=quarantine.d.ts.map
@@ -1,122 +1,46 @@
1
1
  // Quarantine review: list, approve and reject held memories.
2
- import { openHippoDb, closeHippoDb } from '../db.js';
3
- import { ConflictError, ForbiddenError, NotFoundError } from '../api-errors.js';
4
- import { writeEntryMirrors } from '../store/entry-writes.js';
5
- import { readEntry, selectEntriesByIds } from '../store/entry-reads.js';
6
- import { quarantineScopeFor, getQuarantineRow, listQuarantineRows, approveQuarantineRow, rejectQuarantineRow, } from '../quarantine.js';
7
- import { log } from '../log.js';
8
- import { appendAuditEvent } from '../audit.js';
2
+ import { ConflictError, ForbiddenError, NotFoundError } from '../core/api-errors.js';
3
+ import { requireGroup, storeFor } from '../store/index.js';
9
4
  const QUARANTINE_PREVIEW_CHARS = 200;
10
5
  /** A tenant's quarantined memories, newest first. Default `status` is 'pending' (the review queue). */
11
- export function quarantineList(ctx, opts = {}) {
12
- const db = openHippoDb(ctx.hippoRoot);
13
- try {
14
- const rows = listQuarantineRows(db, ctx.tenantId, opts.status ?? 'pending', opts.limit, opts.after);
15
- const entries = selectEntriesByIds(db, rows.map((row) => row.memoryId), ctx.tenantId);
16
- return rows.map((row) => {
17
- const entry = entries.get(row.memoryId);
18
- return {
19
- id: row.memoryId,
20
- originalScope: row.originalScope,
21
- reason: row.reason,
22
- status: row.status,
23
- quarantinedAt: row.quarantinedAt,
24
- decidedAt: row.decidedAt,
25
- decidedBy: row.decidedBy,
26
- contentPreview: entry ? entry.content.slice(0, QUARANTINE_PREVIEW_CHARS) : '',
27
- };
28
- });
29
- }
30
- finally {
31
- closeHippoDb(db);
32
- }
6
+ export async function quarantineList(ctx, opts = {}) {
7
+ const rows = await requireGroup(storeFor(ctx), 'quarantine')
8
+ .listQuarantined(ctx.tenantId, { status: opts.status ?? 'pending', limit: opts.limit, after: opts.after });
9
+ return rows.map((row) => ({
10
+ id: row.memoryId,
11
+ originalScope: row.originalScope,
12
+ reason: row.reason,
13
+ status: row.status,
14
+ quarantinedAt: row.quarantinedAt,
15
+ decidedAt: row.decidedAt,
16
+ decidedBy: row.decidedBy,
17
+ contentPreview: (row.content ?? '').slice(0, QUARANTINE_PREVIEW_CHARS),
18
+ }));
33
19
  }
34
- function loadPendingQuarantineRow(db, tenantId, id) {
35
- const row = getQuarantineRow(db, tenantId, id);
36
- if (!row)
37
- throw new NotFoundError(`not quarantined: ${id}`);
38
- if (row.status !== 'pending')
39
- throw new ConflictError(`${id} is already ${row.status}`);
40
- return row;
20
+ function refusalError(id, refusal) {
21
+ if (refusal.outcome === 'not_quarantined')
22
+ return new NotFoundError(`not quarantined: ${id}`);
23
+ return new ConflictError(`${id} is already ${refusal.status}`);
41
24
  }
42
25
  /** Release a quarantined memory to its original scope. Admin only; the scope guard refuses a row moved since (mirrors restoreDormant). */
43
- export function quarantineApprove(ctx, id) {
26
+ export async function quarantineApprove(ctx, id) {
44
27
  if (ctx.actor.role !== 'admin') {
45
28
  throw new ForbiddenError('Only an admin key can approve a quarantined memory');
46
29
  }
47
- const db = openHippoDb(ctx.hippoRoot);
48
- try {
49
- db.exec('BEGIN IMMEDIATE');
50
- try {
51
- const row = loadPendingQuarantineRow(db, ctx.tenantId, id);
52
- const quarantineScope = quarantineScopeFor(row.originalScope);
53
- const updated = db
54
- .prepare(`UPDATE memories SET scope = ? WHERE id = ? AND tenant_id = ? AND scope = ?`)
55
- .run(row.originalScope, id, ctx.tenantId, quarantineScope);
56
- if (Number(updated.changes ?? 0) !== 1) {
57
- throw new ConflictError(`memory ${id} scope changed since quarantine; refusing to approve`);
58
- }
59
- approveQuarantineRow(db, ctx.tenantId, id, ctx.actor.subject);
60
- appendAuditEvent(db, {
61
- tenantId: ctx.tenantId,
62
- actor: ctx.actor.subject,
63
- op: 'quarantine_approve',
64
- targetId: id,
65
- metadata: { originalScope: row.originalScope },
66
- });
67
- db.exec('COMMIT');
68
- }
69
- catch (err) {
70
- try {
71
- db.exec('ROLLBACK');
72
- }
73
- catch { /* already rolled back */ }
74
- throw err;
75
- }
76
- }
77
- finally {
78
- closeHippoDb(db);
79
- }
80
- // Post-commit, best-effort: a failed rewrite leaves the mirror showing the quarantine scope (fail-closed).
81
- try {
82
- const restored = readEntry(ctx.hippoRoot, id, ctx.tenantId);
83
- if (restored)
84
- writeEntryMirrors(ctx.hippoRoot, restored);
85
- }
86
- catch (err) {
87
- log.error(`quarantine: mirror rewrite failed for ${id}: ${err instanceof Error ? err.message : String(err)}`);
88
- }
30
+ const result = await requireGroup(storeFor(ctx), 'quarantine').approveQuarantined(ctx.tenantId, id, ctx.actor.subject);
31
+ if (result.outcome === 'approved')
32
+ return;
33
+ if (result.outcome === 'scope_moved')
34
+ throw new ConflictError(`memory ${id} scope changed since quarantine; refusing to approve`);
35
+ throw refusalError(id, result);
89
36
  }
90
37
  /** Keep a quarantined memory hidden for good. Admin only; the raw row is untouched (append-only). */
91
- export function quarantineReject(ctx, id) {
38
+ export async function quarantineReject(ctx, id) {
92
39
  if (ctx.actor.role !== 'admin') {
93
40
  throw new ForbiddenError('Only an admin key can reject a quarantined memory');
94
41
  }
95
- const db = openHippoDb(ctx.hippoRoot);
96
- try {
97
- db.exec('BEGIN IMMEDIATE');
98
- try {
99
- loadPendingQuarantineRow(db, ctx.tenantId, id);
100
- rejectQuarantineRow(db, ctx.tenantId, id, ctx.actor.subject);
101
- appendAuditEvent(db, {
102
- tenantId: ctx.tenantId,
103
- actor: ctx.actor.subject,
104
- op: 'quarantine_reject',
105
- targetId: id,
106
- metadata: {},
107
- });
108
- db.exec('COMMIT');
109
- }
110
- catch (err) {
111
- try {
112
- db.exec('ROLLBACK');
113
- }
114
- catch { /* already rolled back */ }
115
- throw err;
116
- }
117
- }
118
- finally {
119
- closeHippoDb(db);
120
- }
42
+ const result = await requireGroup(storeFor(ctx), 'quarantine').rejectQuarantined(ctx.tenantId, id, ctx.actor.subject);
43
+ if (result.outcome !== 'rejected')
44
+ throw refusalError(id, result);
121
45
  }
122
46
  //# sourceMappingURL=quarantine.js.map
@@ -0,0 +1,55 @@
1
+ import { confidenceFacets } from '../core/memory.js';
2
+ import type { ResultCost, SearchResult } from '../core/search-types.js';
3
+ import type { RerankerFn } from '../rerankers/types.js';
4
+ import { explainMatch } from '../search/explain.js';
5
+ import type { ContinuityBlock } from '../store/port.js';
6
+ import type { Context } from './types.js';
7
+ export { DEFAULT_MAX_NEIGHBORS, MAX_HOPS } from '../graph/recall.js';
8
+ /** The global store beside this one, whether this one is it, and the scope that boosts rows. */
9
+ export interface CliRecallSetting {
10
+ readonly globalRoot: string;
11
+ readonly primaryIsGlobal: boolean;
12
+ readonly activeScope: string | null;
13
+ }
14
+ /** The active scope merges `--scope` with the detected one, which only boosts. */
15
+ export declare function cliRecallSetting(ctx: Context, explicitScope: string | null): CliRecallSetting;
16
+ export interface CliRecallOrigin {
17
+ readonly globalOn: boolean;
18
+ /** True when a ranked row came from the global store: this store is it, or the global store is on and this one lacks the id. */
19
+ readonly isGlobal: (id: string) => boolean;
20
+ }
21
+ export declare function cliRecallOrigin(ctx: Context, setting: CliRecallSetting): CliRecallOrigin;
22
+ /** The active snapshot, its session's latest handoff and last five events, each kept only when its scope passes. */
23
+ export declare function loadCliRecallContinuity(ctx: Context, setting: CliRecallSetting, wanted: boolean): ContinuityBlock;
24
+ export interface CliRecallRerankerPick {
25
+ readonly fn: RerankerFn;
26
+ readonly defaultTopK: number;
27
+ }
28
+ /** The reranker a `--reranker` name picks and the top-k it takes by default; an unknown name throws, a blank one picks none. */
29
+ export declare function cliRecallReranker(name: string): CliRecallRerankerPick | null;
30
+ /** The ranked rows a print budget holds, best first; the first `floor` stay whatever they cost. */
31
+ export declare function fitRecallRows(ranked: SearchResult[], budget: number, floor: number, cost: ResultCost): SearchResult[];
32
+ /** One result row; the optional keys are set in the order the JSON prints them. */
33
+ export interface RecallJsonRow {
34
+ id: string;
35
+ score: number;
36
+ strength: SearchResult['entry']['strength'];
37
+ tokens: number;
38
+ tags: SearchResult['entry']['tags'];
39
+ content: string;
40
+ layer: SearchResult['entry']['layer'];
41
+ trace_outcome?: SearchResult['entry']['trace_outcome'];
42
+ superseded?: boolean;
43
+ superseded_by?: SearchResult['entry']['superseded_by'];
44
+ graphVia?: SearchResult['graphVia'];
45
+ confidence?: ReturnType<typeof confidenceFacets>['tier'];
46
+ aged_out?: ReturnType<typeof confidenceFacets>['agedOut'];
47
+ source?: 'global' | 'local';
48
+ reason?: ReturnType<typeof explainMatch>['reason'];
49
+ bm25?: SearchResult['bm25'];
50
+ cosine?: SearchResult['cosine'];
51
+ envelope?: ReturnType<typeof explainMatch>['envelope'];
52
+ rerankTrace?: SearchResult['rerankTrace'];
53
+ }
54
+ export declare function recallJsonRow(r: SearchResult, query: string, showWhy: boolean, isGlobal: boolean): RecallJsonRow;
55
+ //# sourceMappingURL=recall-cli.d.ts.map
@@ -0,0 +1,94 @@
1
+ // What the `hippo recall` verb reads beside its ranking core: the stores it searches, the resume packet and the JSON rows.
2
+ import { confidenceFacets, Layer } from '../core/memory.js';
3
+ import { isGlobalStoreRoot } from '../core/project-identity.js';
4
+ import { getReranker } from '../rerankers/index.js';
5
+ import { isClefModel } from '../rerankers/clef.js';
6
+ import { JEV_DEFAULT_TOP_K } from '../rerankers/jev.js';
7
+ import { explainMatch } from '../search/explain.js';
8
+ import { fitBudget } from '../search/finalize.js';
9
+ import { getGlobalRoot } from '../sharing/global-store.js';
10
+ import { detectScope } from '../sharing/scope.js';
11
+ import { loadLatestHandoff } from '../store/handoffs.js';
12
+ import { loadIndex } from '../store/index-and-stats.js';
13
+ import { isInitialized } from '../store/open.js';
14
+ import { passesScopeFilterForRecall } from '../store/recall-scope.js';
15
+ import { listSessionEvents, loadActiveTaskSnapshot } from '../store/sessions.js';
16
+ export { DEFAULT_MAX_NEIGHBORS, MAX_HOPS } from '../graph/recall.js';
17
+ /** The active scope merges `--scope` with the detected one, which only boosts. */
18
+ export function cliRecallSetting(ctx, explicitScope) {
19
+ return { globalRoot: getGlobalRoot(), primaryIsGlobal: isGlobalStoreRoot(ctx.hippoRoot), activeScope: explicitScope || detectScope() };
20
+ }
21
+ export function cliRecallOrigin(ctx, setting) {
22
+ const localIndex = loadIndex(ctx.hippoRoot);
23
+ const globalOn = isInitialized(setting.globalRoot);
24
+ return { globalOn, isGlobal: (id) => setting.primaryIsGlobal || (globalOn && !localIndex.entries[id]) };
25
+ }
26
+ /** The active snapshot, its session's latest handoff and last five events, each kept only when its scope passes. */
27
+ export function loadCliRecallContinuity(ctx, setting, wanted) {
28
+ if (!wanted || setting.primaryIsGlobal)
29
+ return { activeSnapshot: null, sessionHandoff: null, recentSessionEvents: [] };
30
+ const { hippoRoot, tenantId } = ctx;
31
+ const rawSnapshot = loadActiveTaskSnapshot(hippoRoot, tenantId);
32
+ const sessionId = rawSnapshot?.session_id ?? undefined;
33
+ const rawHandoff = sessionId ? loadLatestHandoff(hippoRoot, tenantId, sessionId) : null;
34
+ const rawEvents = sessionId ? listSessionEvents(hippoRoot, tenantId, { session_id: sessionId, limit: 5 }) : [];
35
+ // The same shared scope rule as api.recall; the active scope merges --scope and detectScope().
36
+ const effectiveScope = setting.activeScope || undefined;
37
+ const passes = (r) => passesScopeFilterForRecall(r.scope ?? null, effectiveScope);
38
+ return {
39
+ activeSnapshot: rawSnapshot && passes(rawSnapshot) ? rawSnapshot : null,
40
+ sessionHandoff: rawHandoff && passes(rawHandoff) ? rawHandoff : null,
41
+ recentSessionEvents: rawEvents.filter(passes),
42
+ };
43
+ }
44
+ /** The reranker a `--reranker` name picks and the top-k it takes by default; an unknown name throws, a blank one picks none. */
45
+ export function cliRecallReranker(name) {
46
+ const fn = getReranker(name);
47
+ if (!fn)
48
+ return null;
49
+ return { fn, defaultTopK: name === 'jev' || isClefModel(name) ? JEV_DEFAULT_TOP_K : 50 };
50
+ }
51
+ /** The ranked rows a print budget holds, best first; the first `floor` stay whatever they cost. */
52
+ export function fitRecallRows(ranked, budget, floor, cost) {
53
+ return fitBudget(ranked, budget, floor, cost);
54
+ }
55
+ export function recallJsonRow(r, query, showWhy, isGlobal) {
56
+ const base = {
57
+ id: r.entry.id,
58
+ score: r.score,
59
+ strength: r.entry.strength,
60
+ tokens: r.tokens,
61
+ tags: r.entry.tags,
62
+ content: r.entry.content,
63
+ layer: r.entry.layer,
64
+ };
65
+ if (r.entry.layer === Layer.Trace) {
66
+ base.trace_outcome = r.entry.trace_outcome;
67
+ }
68
+ if (r.entry.superseded_by) {
69
+ base.superseded = true;
70
+ base.superseded_by = r.entry.superseded_by;
71
+ }
72
+ if (r.graphVia) {
73
+ base.graphVia = r.graphVia;
74
+ }
75
+ if (showWhy) {
76
+ const explanation = explainMatch(query, r);
77
+ const facets = confidenceFacets(r.entry);
78
+ base.confidence = facets.tier;
79
+ base.aged_out = facets.agedOut;
80
+ base.source = isGlobal ? 'global' : 'local';
81
+ base.reason = explanation.reason;
82
+ base.bm25 = r.bm25;
83
+ base.cosine = r.cosine;
84
+ if (explanation.envelope) {
85
+ base.envelope = explanation.envelope;
86
+ }
87
+ // The ordered lifecycle re-ranking steps, so a caller can see why a row moved.
88
+ if (r.rerankTrace && r.rerankTrace.length > 0) {
89
+ base.rerankTrace = r.rerankTrace;
90
+ }
91
+ }
92
+ return base;
93
+ }
94
+ //# sourceMappingURL=recall-cli.js.map
@@ -0,0 +1,4 @@
1
+ import type { CliCoreRanker, RecallOpts, RecallResult } from './recall-types.js';
2
+ import type { Context } from './types.js';
3
+ export declare function retrieveWithCliCore(ctx: Context, opts: RecallOpts, core: CliCoreRanker): Promise<RecallResult>;
4
+ //# sourceMappingURL=recall-core.d.ts.map
@@ -0,0 +1,120 @@
1
+ // The CLI ranking core as a ranker of retrieve(): rank, let the caller pick the list it shows, then record that list once.
2
+ import { ForbiddenError } from '../core/api-errors.js';
3
+ import { reportAuditWriteFailure } from '../store/audit.js';
4
+ import { decidePlanningFallacy, detectPlanningClaim } from '../predictions/planning-fallacy.js';
5
+ import { rankRecall } from './recall-pipeline.js';
6
+ import { writeRecallTraceAtRoot } from '../store/recall-trace.js';
7
+ import { saveIndex } from '../store/index-and-stats.js';
8
+ import { sqliteStore } from '../store/index.js';
9
+ import { estimateTokens } from '../util/token-text.js';
10
+ import { callerOf, recallAuditMetadata, recallAuditRow, strengthenOf } from './recall-record.js';
11
+ import { RECALL_RECORDING, recordShownRecall } from './recall-finish.js';
12
+ // entriesByIds reads at most this many ids a call.
13
+ const ID_READ_CHUNK = 500;
14
+ export async function retrieveWithCliCore(ctx, opts, core) {
15
+ // This ranker applies the operator's scope rule and may search a second store, so no bearer client may reach it.
16
+ if (!ctx.actor.hostAdmin)
17
+ throw new ForbiddenError('The CLI ranking core serves the host admin only');
18
+ const globalRoot = core.sources?.globalRoot;
19
+ // The ranking core reads hippo.db itself, so its writes go to the same file whatever store the context names.
20
+ const store = sqliteStore(ctx.hippoRoot);
21
+ const ranking = await rankRecall({ hippoRoot: ctx.hippoRoot, globalRoot, tenantId: ctx.tenantId, note: core.note }, { ...core.rank, query: opts.query, sessionId: opts.sessionId, goalTag: opts.goalTag });
22
+ if (ranking.halted) {
23
+ // The stages that ran earned these rows, so the caller's flag error does not drop them.
24
+ if (ranking.goalRecallLog.length > 0)
25
+ await store.finishRecall({ goalLog: ranking.goalRecallLog, audit: [] });
26
+ return resultOf(ranking, []);
27
+ }
28
+ if ('inspect' in core) {
29
+ core.inspect(ranking);
30
+ return resultOf(ranking, ranking.results);
31
+ }
32
+ const planning = await planningFor(ctx, store, opts.query);
33
+ const shown = core.show(ranking, planning?.output ?? {});
34
+ await recordShown(ctx, store, opts, core, { ranking, shown, planningAudit: planning?.audit });
35
+ const result = resultOf(ranking, shown.results);
36
+ if (planning?.output.hint)
37
+ result.planningFallacyHint = planning.output.hint;
38
+ if (planning?.output.watching)
39
+ result.planningFallacyWatching = planning.output.watching;
40
+ return result;
41
+ }
42
+ async function planningFor(ctx, store, query) {
43
+ const claim = detectPlanningClaim(query);
44
+ if (!claim)
45
+ return null;
46
+ return decidePlanningFallacy(claim, await store.planningFallacyEvidence(ctx.tenantId, claim.classQueryTokens), ctx.tenantId, ctx.actor.subject);
47
+ }
48
+ function resultOf(ranking, shown) {
49
+ const results = shown.map((r) => ({ id: r.entry.id, content: r.entry.content, score: r.score, layer: r.entry.layer, strength: r.entry.strength }));
50
+ return {
51
+ results,
52
+ total: ranking.totalCandidates + ranking.graphAdded,
53
+ tokens: results.reduce((sum, r) => sum + estimateTokens(r.content), 0),
54
+ };
55
+ }
56
+ /** Audit rows first: a recall they cannot be written for leaves no strengthen, trace, marker or count, as under the other rankers. */
57
+ async function recordShown(ctx, store, opts, core, done) {
58
+ const { ranking, shown, planningAudit } = done;
59
+ const ids = shown.results.map((r) => r.entry.id);
60
+ const recallRow = recallAuditRow(callerOf(ctx), 'recall', undefined, recallAuditMetadata(opts.query, ids.length));
61
+ const second = core.sources?.globalRoot !== undefined && core.sources.globalRoot !== ctx.hippoRoot ? core.sources.globalRoot : undefined;
62
+ const heldElsewhere = second !== undefined ? await idsNotHeld(store, ids, ctx.tenantId) : [];
63
+ const audited = await finishOrReport(store, {
64
+ goalLog: ranking.goalRecallLog,
65
+ audit: [...(planningAudit ? [planningAudit] : []), ...shown.audit, recallRow],
66
+ strengthen: strengthenOf(ctx, ids),
67
+ });
68
+ if (audited) {
69
+ // The second store logs that it was searched, and strengthens only the rows the first does not hold.
70
+ if (second !== undefined)
71
+ await finishOrReport(sqliteStore(second), { goalLog: [], audit: [recallRow], strengthen: strengthenOf(ctx, heldElsewhere) });
72
+ traceAndMark(ctx, opts, core, shown.results);
73
+ }
74
+ // The caller prints whether or not the record was written, so the ring and the ledger still take this list; `written` holds back the count.
75
+ await recordShownRecall(ctx, store, RECALL_RECORDING.cli, {
76
+ query: opts.query,
77
+ sessionId: opts.sessionId,
78
+ topId: ids[0] ?? null,
79
+ anchoredOn: shown.anchoredOn,
80
+ items: ids.length,
81
+ tokens: shown.tokens,
82
+ ledgerSessionId: core.hostSessionId ?? null,
83
+ written: audited,
84
+ });
85
+ }
86
+ // The caller has ranked and is about to print, so a failed audit write is logged and counted, never thrown.
87
+ async function finishOrReport(store, writes) {
88
+ try {
89
+ await store.finishRecall(writes);
90
+ return true;
91
+ }
92
+ catch (err) {
93
+ reportAuditWriteFailure('recall', String(err));
94
+ return false;
95
+ }
96
+ }
97
+ async function idsNotHeld(store, ids, tenantId) {
98
+ const held = new Set();
99
+ for (let i = 0; i < ids.length; i += ID_READ_CHUNK) {
100
+ for (const entry of await store.entriesByIds(ids.slice(i, i + ID_READ_CHUNK), tenantId))
101
+ held.add(entry.id);
102
+ }
103
+ return ids.filter((id) => !held.has(id));
104
+ }
105
+ function traceAndMark(ctx, opts, core, shown) {
106
+ // An empty list is traced too, so a coverage gap still reaches the training corpus.
107
+ const traceId = writeRecallTraceAtRoot(ctx.hippoRoot, {
108
+ tenantId: ctx.tenantId,
109
+ sessionId: opts.sessionId || core.hostSessionId || null,
110
+ pipeline: 'cli',
111
+ query: opts.query,
112
+ explainMode: core.rank.why === true,
113
+ results: shown.map((r) => ({ memoryId: r.entry.id, score: r.score, rerankSteps: r.rerankTrace })),
114
+ });
115
+ if (shown.length === 0)
116
+ return;
117
+ // One write for both markers, so `hippo outcome` never pairs these ids with an older trace.
118
+ saveIndex(ctx.hippoRoot, { last_retrieval_ids: shown.map((r) => r.entry.id), last_trace_id: traceId !== null ? String(traceId) : null });
119
+ }
120
+ //# sourceMappingURL=recall-core.js.map
@@ -0,0 +1,53 @@
1
+ import type { AppendAuditOpts } from '../store/audit.js';
2
+ import type { HippoStore } from '../store/index.js';
3
+ import type { TokenSurface } from '../store/token-ledger.js';
4
+ import { type RecallHistorySnapshot } from './recall-history.js';
5
+ import { type RecallSurface } from './recall-record.js';
6
+ import type { Context } from './types.js';
7
+ /** How one surface's recall is recorded. The surfaces differ in these three values and in the list they hand over, nowhere else. */
8
+ export interface RecallRecording {
9
+ /** Whose session rings the recall reads and feeds. */
10
+ readonly ring: RecallSurface;
11
+ /** The label of its token ledger row. */
12
+ readonly ledger: TokenSurface;
13
+ /** 'every': an empty list still reaches the stats write, which then only rewrites stats.json; 'shown': an empty list skips it. */
14
+ readonly stats: 'every' | 'shown';
15
+ }
16
+ /** The surfaces `retrieve` records in full. MCP is pending: src/mcp still feeds its own ring and books its own ledger row, and counts no stats. */
17
+ export declare const RECALL_RECORDING: {
18
+ readonly http: {
19
+ readonly ring: "http";
20
+ readonly ledger: "http_recall";
21
+ readonly stats: "every";
22
+ };
23
+ readonly cli: {
24
+ readonly ring: "cli";
25
+ readonly ledger: "recall";
26
+ readonly stats: "shown";
27
+ };
28
+ };
29
+ /** What a recorded recall takes into ranking. */
30
+ export interface RecallLead {
31
+ readonly recallHistory: RecallHistorySnapshot | undefined;
32
+ readonly leadingAudit: readonly AppendAuditOpts[];
33
+ }
34
+ /** For a surface whose hint `retrieve` judges: the session's history, or the row saying the recall named no session. */
35
+ export declare function recallLead(ctx: Context, how: RecallRecording, query: string, sessionId: string | undefined): RecallLead;
36
+ /** The list a recall showed, as its ranker counted and priced it. */
37
+ export interface ShownList {
38
+ readonly query: string;
39
+ /** The recall's session, which keys the ring. */
40
+ readonly sessionId: string | undefined;
41
+ readonly topId: string | null;
42
+ /** The memory this recall's anchoring hint named; the next recall's cooldown reads it. */
43
+ readonly anchoredOn: string | undefined;
44
+ readonly items: number;
45
+ readonly tokens: number;
46
+ /** The session the ledger row names: the recall's own on HTTP, the host agent's on the CLI. */
47
+ readonly ledgerSessionId: string | null;
48
+ /** False when the audit rows could not be written and the caller answers anyway. */
49
+ readonly written: boolean;
50
+ }
51
+ /** Runs after the recall's own write, in this order: the ring, then the counter, then the ledger. */
52
+ export declare function recordShownRecall(ctx: Context, store: HippoStore, how: RecallRecording, shown: ShownList): Promise<void>;
53
+ //# sourceMappingURL=recall-finish.d.ts.map