hippo-memory 1.70.0 → 1.72.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 (855) hide show
  1. package/README.md +2 -2
  2. package/dist/agent-memories/apply.d.ts +0 -11
  3. package/dist/agent-memories/apply.js +6 -21
  4. package/dist/agent-memories/claude-code.d.ts +4 -2
  5. package/dist/agent-memories/claude-code.js +15 -6
  6. package/dist/agent-memories/codex.js +1 -1
  7. package/dist/agent-memories/copilot.d.ts +1 -3
  8. package/dist/agent-memories/copilot.js +1 -17
  9. package/dist/agent-memories/files.js +23 -12
  10. package/dist/agent-memories/markdown.d.ts +1 -3
  11. package/dist/agent-memories/markdown.js +1 -3
  12. package/dist/agent-memories/project-folds.d.ts +10 -0
  13. package/dist/agent-memories/project-folds.js +34 -0
  14. package/dist/agent-memories/report.js +2 -1
  15. package/dist/agent-memories/sync.d.ts +4 -2
  16. package/dist/agent-memories/sync.js +18 -11
  17. package/dist/api/assemble.d.ts +7 -44
  18. package/dist/api/assemble.js +3 -23
  19. package/dist/api/audit.d.ts +33 -1
  20. package/dist/api/audit.js +48 -1
  21. package/dist/api/auth.d.ts +20 -26
  22. package/dist/api/auth.js +43 -29
  23. package/dist/api/auto-sleep.d.ts +5 -2
  24. package/dist/api/auto-sleep.js +9 -5
  25. package/dist/api/availability.d.ts +2 -15
  26. package/dist/api/availability.js +4 -18
  27. package/dist/api/cards.d.ts +42 -0
  28. package/dist/api/cards.js +52 -0
  29. package/dist/api/conflicts.d.ts +28 -0
  30. package/dist/api/conflicts.js +61 -0
  31. package/dist/api/context-render.js +4 -3
  32. package/dist/api/context-select.js +12 -15
  33. package/dist/api/context-types.d.ts +10 -35
  34. package/dist/api/context.d.ts +5 -22
  35. package/dist/api/context.js +38 -46
  36. package/dist/api/continuity.d.ts +47 -0
  37. package/dist/api/continuity.js +66 -0
  38. package/dist/{cli → api}/correction-latency.d.ts +2 -14
  39. package/dist/{cli → api}/correction-latency.js +2 -14
  40. package/dist/api/dormant.d.ts +5 -21
  41. package/dist/api/dormant.js +11 -28
  42. package/dist/api/drill-down.d.ts +7 -46
  43. package/dist/api/drill-down.js +6 -27
  44. package/dist/api/embeddings.d.ts +17 -0
  45. package/dist/api/embeddings.js +28 -0
  46. package/dist/api/error-reply.d.ts +8 -0
  47. package/dist/api/error-reply.js +21 -0
  48. package/dist/api/forget.d.ts +11 -26
  49. package/dist/api/forget.js +23 -35
  50. package/dist/api/goals.d.ts +1 -1
  51. package/dist/api/goals.js +5 -9
  52. package/dist/api/graph.d.ts +8 -0
  53. package/dist/api/graph.js +7 -0
  54. package/dist/api/index.d.ts +6 -2
  55. package/dist/api/index.js +6 -2
  56. package/dist/api/instruction-detect.js +21 -6
  57. package/dist/api/learn.d.ts +4 -0
  58. package/dist/api/learn.js +53 -27
  59. package/dist/api/ledger-db.d.ts +2 -5
  60. package/dist/api/ledger-db.js +5 -35
  61. package/dist/api/memories.d.ts +23 -0
  62. package/dist/api/memories.js +46 -0
  63. package/dist/api/objects.d.ts +9 -0
  64. package/dist/api/objects.js +11 -0
  65. package/dist/api/on-store.js +5 -3
  66. package/dist/api/outcome.js +1 -1
  67. package/dist/api/pilot-arm.d.ts +1 -11
  68. package/dist/api/pilot-arm.js +5 -45
  69. package/dist/api/predictions.d.ts +11 -0
  70. package/dist/api/predictions.js +24 -0
  71. package/dist/api/projects.d.ts +21 -0
  72. package/dist/api/projects.js +24 -0
  73. package/dist/api/promote.d.ts +13 -17
  74. package/dist/api/promote.js +12 -20
  75. package/dist/api/prompt-hook.d.ts +19 -6
  76. package/dist/api/prompt-hook.js +54 -13
  77. package/dist/api/provenance-coverage.d.ts +14 -0
  78. package/dist/{cli → api}/provenance-coverage.js +2 -6
  79. package/dist/api/recall-cli.d.ts +58 -0
  80. package/dist/api/recall-cli.js +103 -0
  81. package/dist/api/recall-core.js +17 -9
  82. package/dist/api/recall-finish.d.ts +53 -0
  83. package/dist/api/recall-finish.js +30 -0
  84. package/dist/api/recall-history.d.ts +17 -84
  85. package/dist/api/recall-history.js +15 -88
  86. package/dist/api/recall-pipeline.d.ts +2 -3
  87. package/dist/api/recall-pipeline.js +21 -15
  88. package/dist/api/recall-request.js +1 -1
  89. package/dist/api/recall-types.d.ts +64 -304
  90. package/dist/api/recall.d.ts +3 -34
  91. package/dist/api/recall.js +63 -89
  92. package/dist/api/refine.d.ts +7 -0
  93. package/dist/api/refine.js +10 -0
  94. package/dist/api/remember-local.d.ts +57 -0
  95. package/dist/api/remember-local.js +90 -0
  96. package/dist/api/remember.d.ts +20 -2
  97. package/dist/api/remember.js +16 -3
  98. package/dist/api/session-end.d.ts +22 -0
  99. package/dist/api/session-end.js +101 -0
  100. package/dist/api/sleep-run.d.ts +2 -4
  101. package/dist/api/sleep-run.js +28 -28
  102. package/dist/api/sleep.d.ts +9 -28
  103. package/dist/api/status.d.ts +24 -0
  104. package/dist/api/status.js +40 -0
  105. package/dist/api/store-init.d.ts +4 -0
  106. package/dist/api/store-init.js +9 -0
  107. package/dist/api/tokens.d.ts +3 -10
  108. package/dist/api/tokens.js +4 -11
  109. package/dist/api/types.d.ts +8 -29
  110. package/dist/api/types.js +10 -23
  111. package/dist/capture/caller-session.d.ts +0 -3
  112. package/dist/capture/caller-session.js +1 -12
  113. package/dist/capture/capture-error.d.ts +2 -2
  114. package/dist/capture/capture-error.js +23 -18
  115. package/dist/capture/codex-patch.js +3 -1
  116. package/dist/capture/command.d.ts +4 -12
  117. package/dist/capture/command.js +39 -114
  118. package/dist/capture/compact.d.ts +4 -15
  119. package/dist/capture/compact.js +26 -30
  120. package/dist/capture/compaction-items-caller.js +11 -20
  121. package/dist/capture/compaction-record.d.ts +7 -93
  122. package/dist/capture/compaction-record.js +34 -399
  123. package/dist/capture/compaction-spool.d.ts +5 -3
  124. package/dist/capture/compaction-spool.js +21 -7
  125. package/dist/capture/copilot-transcript.d.ts +2 -1
  126. package/dist/capture/copilot-transcript.js +2 -1
  127. package/dist/capture/extract.d.ts +5 -2
  128. package/dist/capture/extract.js +4 -3
  129. package/dist/capture/failure-caller.d.ts +1 -1
  130. package/dist/capture/failure-caller.js +21 -16
  131. package/dist/capture/failure-reading.d.ts +2 -1
  132. package/dist/capture/failure-reading.js +7 -9
  133. package/dist/capture/pre-compact-caller.js +5 -4
  134. package/dist/capture/session-digest.d.ts +1 -1
  135. package/dist/capture/session-digest.js +17 -10
  136. package/dist/capture/session-end-caller.js +2 -1
  137. package/dist/capture/session-worker.js +3 -4
  138. package/dist/capture/transcript.d.ts +4 -11
  139. package/dist/capture/transcript.js +10 -21
  140. package/dist/capture/working-state.d.ts +4 -2
  141. package/dist/capture/working-state.js +4 -2
  142. package/dist/cli/api-context.d.ts +3 -0
  143. package/dist/cli/api-context.js +6 -0
  144. package/dist/cli/audit-prune.d.ts +1 -59
  145. package/dist/cli/audit-prune.js +2 -61
  146. package/dist/cli/audit.d.ts +1 -1
  147. package/dist/cli/audit.js +42 -43
  148. package/dist/cli/auth.d.ts +2 -2
  149. package/dist/cli/auth.js +61 -44
  150. package/dist/cli/briefs.d.ts +1 -4
  151. package/dist/cli/briefs.js +42 -301
  152. package/dist/cli/card.d.ts +2 -2
  153. package/dist/cli/card.js +63 -56
  154. package/dist/cli/client.d.ts +12 -27
  155. package/dist/cli/client.js +41 -44
  156. package/dist/cli/compact-resume-payload.js +4 -3
  157. package/dist/cli/context.d.ts +2 -3
  158. package/dist/cli/context.js +22 -18
  159. package/dist/cli/continuity.d.ts +6 -6
  160. package/dist/cli/continuity.js +81 -86
  161. package/dist/cli/curate.d.ts +13 -17
  162. package/dist/cli/curate.js +88 -116
  163. package/dist/cli/dag.d.ts +4 -4
  164. package/dist/cli/dag.js +55 -34
  165. package/dist/cli/decisions.d.ts +2 -4
  166. package/dist/cli/decisions.js +18 -309
  167. package/dist/cli/eval.d.ts +1 -1
  168. package/dist/cli/eval.js +27 -26
  169. package/dist/cli/exit.d.ts +6 -0
  170. package/dist/cli/exit.js +11 -0
  171. package/dist/cli/explain.d.ts +2 -3
  172. package/dist/cli/explain.js +25 -27
  173. package/dist/cli/flag-values.d.ts +6 -1
  174. package/dist/cli/flag-values.js +42 -15
  175. package/dist/cli/flags.d.ts +0 -288
  176. package/dist/cli/flags.js +3 -138
  177. package/dist/cli/github.d.ts +14 -0
  178. package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
  179. package/dist/cli/goals.d.ts +2 -2
  180. package/dist/cli/goals.js +46 -50
  181. package/dist/cli/graph.d.ts +3 -0
  182. package/dist/cli/graph.js +83 -0
  183. package/dist/cli/hook-runtime.d.ts +12 -32
  184. package/dist/cli/hook-runtime.js +21 -64
  185. package/dist/cli/incidents.d.ts +3 -0
  186. package/dist/cli/incidents.js +112 -0
  187. package/dist/cli/init.d.ts +2 -2
  188. package/dist/cli/init.js +33 -30
  189. package/dist/cli/install-steps.d.ts +2 -1
  190. package/dist/cli/install-steps.js +13 -14
  191. package/dist/cli/last-sleep.d.ts +2 -1
  192. package/dist/cli/last-sleep.js +4 -1
  193. package/dist/cli/lenient-id.d.ts +2 -0
  194. package/dist/cli/lenient-id.js +13 -0
  195. package/dist/cli/maintenance.d.ts +5 -5
  196. package/dist/cli/maintenance.js +37 -43
  197. package/dist/cli/notes.d.ts +2 -0
  198. package/dist/cli/notes.js +41 -0
  199. package/dist/cli/object-verbs.js +4 -3
  200. package/dist/cli/open-browser.d.ts +14 -0
  201. package/dist/cli/open-browser.js +26 -0
  202. package/dist/cli/owner-validation.d.ts +5 -28
  203. package/dist/cli/owner-validation.js +5 -28
  204. package/dist/cli/playbooks.d.ts +3 -4
  205. package/dist/cli/playbooks.js +131 -300
  206. package/dist/cli/predictions.d.ts +3 -0
  207. package/dist/cli/predictions.js +175 -0
  208. package/dist/cli/print.d.ts +2 -5
  209. package/dist/cli/print.js +3 -5
  210. package/dist/cli/projects.d.ts +2 -2
  211. package/dist/cli/projects.js +31 -25
  212. package/dist/cli/quality-repair-once.d.ts +1 -1
  213. package/dist/cli/quality-repair-once.js +7 -6
  214. package/dist/cli/recall.d.ts +2 -4
  215. package/dist/cli/recall.js +67 -137
  216. package/dist/cli/refine-llm.d.ts +5 -31
  217. package/dist/cli/refine-llm.js +23 -50
  218. package/dist/cli/remember.d.ts +3 -3
  219. package/dist/cli/remember.js +134 -192
  220. package/dist/cli/scheduler.d.ts +2 -17
  221. package/dist/cli/scheduler.js +14 -19
  222. package/dist/cli/serve.js +23 -14
  223. package/dist/cli/session-hooks.d.ts +11 -19
  224. package/dist/cli/session-hooks.js +143 -214
  225. package/dist/cli/setup.d.ts +4 -4
  226. package/dist/cli/setup.js +35 -30
  227. package/dist/cli/shared.d.ts +7 -25
  228. package/dist/cli/shared.js +17 -60
  229. package/dist/cli/slack.d.ts +2 -2
  230. package/dist/cli/slack.js +19 -23
  231. package/dist/cli/sleep-render.js +6 -3
  232. package/dist/cli/sleep.d.ts +3 -2
  233. package/dist/cli/sleep.js +17 -49
  234. package/dist/cli/status.d.ts +11 -14
  235. package/dist/cli/status.js +74 -120
  236. package/dist/cli/stdin.d.ts +4 -6
  237. package/dist/cli/stdin.js +2 -3
  238. package/dist/cli/transfer.d.ts +9 -9
  239. package/dist/cli/transfer.js +87 -108
  240. package/dist/cli/usage.d.ts +0 -79
  241. package/dist/cli/usage.js +1 -689
  242. package/dist/cli/verb-row.d.ts +32 -0
  243. package/dist/cli/verb-row.js +6 -0
  244. package/dist/cli/verbs/health.d.ts +27 -0
  245. package/dist/cli/verbs/health.js +232 -0
  246. package/dist/cli/verbs/memory.d.ts +16 -0
  247. package/dist/cli/verbs/memory.js +244 -0
  248. package/dist/cli/verbs/objects.d.ts +20 -0
  249. package/dist/cli/verbs/objects.js +254 -0
  250. package/dist/cli/verbs/sessions.d.ts +31 -0
  251. package/dist/cli/verbs/sessions.js +312 -0
  252. package/dist/cli/verbs.d.ts +81 -0
  253. package/dist/cli/verbs.js +7 -0
  254. package/dist/cli/versioned-verbs.d.ts +51 -0
  255. package/dist/cli/versioned-verbs.js +79 -0
  256. package/dist/cli.d.ts +1 -654
  257. package/dist/cli.js +44 -510
  258. package/dist/connectors/dlq.d.ts +39 -3
  259. package/dist/connectors/dlq.js +37 -3
  260. package/dist/connectors/github/backfill.d.ts +5 -25
  261. package/dist/connectors/github/backfill.js +26 -52
  262. package/dist/connectors/github/deletion.d.ts +4 -18
  263. package/dist/connectors/github/deletion.js +2 -15
  264. package/dist/connectors/github/dlq.d.ts +8 -33
  265. package/dist/connectors/github/dlq.js +34 -93
  266. package/dist/connectors/github/ingest.d.ts +4 -12
  267. package/dist/connectors/github/ingest.js +5 -36
  268. package/dist/connectors/github/octokit-client.d.ts +4 -16
  269. package/dist/connectors/github/octokit-client.js +27 -24
  270. package/dist/connectors/github/ratelimit.d.ts +3 -14
  271. package/dist/connectors/github/ratelimit.js +3 -14
  272. package/dist/connectors/github/scope.d.ts +3 -5
  273. package/dist/connectors/github/scope.js +3 -5
  274. package/dist/connectors/github/signature.d.ts +4 -26
  275. package/dist/connectors/github/signature.js +4 -26
  276. package/dist/connectors/github/tenant-routing.d.ts +2 -24
  277. package/dist/connectors/github/tenant-routing.js +4 -26
  278. package/dist/connectors/github/transform.js +2 -16
  279. package/dist/connectors/github/types.d.ts +3 -15
  280. package/dist/connectors/github/types.js +2 -9
  281. package/dist/connectors/github/webhook.d.ts +3 -16
  282. package/dist/connectors/github/webhook.js +38 -23
  283. package/dist/connectors/ingest.d.ts +10 -0
  284. package/dist/connectors/ingest.js +28 -0
  285. package/dist/connectors/slack/backfill.d.ts +4 -17
  286. package/dist/connectors/slack/backfill.js +4 -13
  287. package/dist/connectors/slack/dlq.d.ts +2 -19
  288. package/dist/connectors/slack/dlq.js +51 -90
  289. package/dist/connectors/slack/ingest.d.ts +4 -9
  290. package/dist/connectors/slack/ingest.js +4 -30
  291. package/dist/connectors/slack/scope.d.ts +2 -8
  292. package/dist/connectors/slack/scope.js +2 -8
  293. package/dist/connectors/slack/signature.d.ts +1 -6
  294. package/dist/connectors/slack/tenant-routing.d.ts +2 -19
  295. package/dist/connectors/slack/tenant-routing.js +2 -21
  296. package/dist/connectors/slack/transform.d.ts +2 -18
  297. package/dist/connectors/slack/transform.js +2 -18
  298. package/dist/connectors/slack/types.d.ts +3 -9
  299. package/dist/connectors/slack/types.js +2 -4
  300. package/dist/connectors/slack/web-client.js +33 -27
  301. package/dist/connectors/slack/webhook.d.ts +3 -19
  302. package/dist/connectors/slack/webhook.js +6 -26
  303. package/dist/connectors/slack/workspaces.d.ts +4 -24
  304. package/dist/connectors/slack/workspaces.js +4 -24
  305. package/dist/consolidate/conflicts.js +7 -15
  306. package/dist/consolidate/dag-summary.d.ts +8 -0
  307. package/dist/consolidate/dag-summary.js +41 -0
  308. package/dist/consolidate/dag.d.ts +5 -28
  309. package/dist/consolidate/dag.js +29 -84
  310. package/dist/consolidate/decay.js +7 -19
  311. package/dist/consolidate/dedupe.d.ts +13 -52
  312. package/dist/consolidate/dedupe.js +18 -74
  313. package/dist/consolidate/flush-units.d.ts +3 -4
  314. package/dist/consolidate/flush-units.js +3 -3
  315. package/dist/consolidate/half-life-migration.d.ts +3 -26
  316. package/dist/consolidate/half-life-migration.js +11 -28
  317. package/dist/consolidate/llm-passes.js +49 -40
  318. package/dist/consolidate/memory-value-weights.d.ts +2 -13
  319. package/dist/consolidate/memory-value-weights.js +2 -13
  320. package/dist/consolidate/memory-value.d.ts +11 -84
  321. package/dist/consolidate/memory-value.js +18 -105
  322. package/dist/consolidate/merge.js +12 -33
  323. package/dist/consolidate/physics-pass.d.ts +6 -1
  324. package/dist/consolidate/physics-pass.js +27 -9
  325. package/dist/consolidate/replay.d.ts +6 -38
  326. package/dist/consolidate/replay.js +25 -56
  327. package/dist/consolidate/run.js +1 -1
  328. package/dist/consolidate/sleep.d.ts +1 -8
  329. package/dist/consolidate/sleep.js +13 -22
  330. package/dist/consolidate/trace.d.ts +3 -18
  331. package/dist/consolidate/trace.js +3 -18
  332. package/dist/consolidate/traces.js +9 -25
  333. package/dist/core/ablation.d.ts +14 -91
  334. package/dist/core/ablation.js +16 -91
  335. package/dist/core/active-scope.d.ts +7 -0
  336. package/dist/{sharing/scope.js → core/active-scope.js} +5 -12
  337. package/dist/core/ambient.d.ts +5 -8
  338. package/dist/core/ambient.js +40 -26
  339. package/dist/core/api-errors.d.ts +16 -0
  340. package/dist/core/api-errors.js +20 -0
  341. package/dist/core/capture-contract.d.ts +4 -2
  342. package/dist/core/capture-contract.js +4 -2
  343. package/dist/core/card.d.ts +4 -1
  344. package/dist/core/card.js +11 -1
  345. package/dist/core/compaction-timing.d.ts +7 -0
  346. package/dist/core/compaction-timing.js +9 -0
  347. package/dist/core/compare.d.ts +11 -67
  348. package/dist/core/compare.js +9 -63
  349. package/dist/core/config.d.ts +10 -24
  350. package/dist/core/config.js +20 -16
  351. package/dist/core/cosine.d.ts +3 -0
  352. package/dist/core/cosine.js +19 -0
  353. package/dist/core/handoff.d.ts +1 -7
  354. package/dist/core/handoff.js +1 -7
  355. package/dist/core/markdown.d.ts +6 -0
  356. package/dist/{store → core}/markdown.js +23 -22
  357. package/dist/core/memory-audit.d.ts +17 -0
  358. package/dist/core/memory-audit.js +54 -0
  359. package/dist/core/memory-quality.js +1 -1
  360. package/dist/core/memory.d.ts +51 -168
  361. package/dist/core/memory.js +76 -239
  362. package/dist/{consolidate → core}/merged-row.d.ts +1 -1
  363. package/dist/{consolidate → core}/merged-row.js +3 -2
  364. package/dist/core/package-root.d.ts +3 -0
  365. package/dist/core/package-root.js +5 -0
  366. package/dist/core/physics-config.d.ts +1 -4
  367. package/dist/core/physics-config.js +3 -8
  368. package/dist/core/physics.d.ts +15 -61
  369. package/dist/core/physics.js +65 -138
  370. package/dist/core/prediction.d.ts +3 -0
  371. package/dist/core/prediction.js +6 -0
  372. package/dist/core/project-identity.d.ts +20 -58
  373. package/dist/core/project-identity.js +27 -39
  374. package/dist/core/project-remote.js +13 -2
  375. package/dist/core/raw-append-only.d.ts +5 -0
  376. package/dist/core/raw-append-only.js +7 -0
  377. package/dist/core/recall-scope.d.ts +69 -0
  378. package/dist/core/recall-scope.js +138 -0
  379. package/dist/core/salience.d.ts +1 -7
  380. package/dist/core/salience.js +1 -7
  381. package/dist/dashboard/dashboard-actions.js +2 -2
  382. package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
  383. package/dist/dashboard/dashboard-snapshot.js +11 -2
  384. package/dist/dashboard/dashboard-types.d.ts +2 -1
  385. package/dist/dashboard/dashboard.d.ts +1 -0
  386. package/dist/dashboard/dashboard.js +50 -4
  387. package/dist/db/busy.d.ts +3 -8
  388. package/dist/db/busy.js +37 -33
  389. package/dist/db/connect.js +7 -8
  390. package/dist/db/index.d.ts +3 -3
  391. package/dist/db/index.js +3 -3
  392. package/dist/db/migrate.js +3 -3
  393. package/dist/db/migrations/index.d.ts +1 -1
  394. package/dist/db/migrations/index.js +3 -1
  395. package/dist/db/migrations/types.d.ts +2 -5
  396. package/dist/db/migrations/v14.js +2 -3
  397. package/dist/db/migrations/v15.js +2 -8
  398. package/dist/db/migrations/v16.js +2 -3
  399. package/dist/db/migrations/v17.js +2 -3
  400. package/dist/db/migrations/v19.js +2 -5
  401. package/dist/db/migrations/v20.js +2 -7
  402. package/dist/db/migrations/v22.js +4 -17
  403. package/dist/db/migrations/v23.js +3 -14
  404. package/dist/db/migrations/v24.js +2 -4
  405. package/dist/db/migrations/v25.js +3 -8
  406. package/dist/db/migrations/v26.js +2 -13
  407. package/dist/db/migrations/v27.js +3 -11
  408. package/dist/db/migrations/v28.js +2 -14
  409. package/dist/db/migrations/v29.js +4 -18
  410. package/dist/db/migrations/v30.js +4 -16
  411. package/dist/db/migrations/v31.js +2 -15
  412. package/dist/db/migrations/v32.js +4 -22
  413. package/dist/db/migrations/v33.js +2 -15
  414. package/dist/db/migrations/v34.js +2 -11
  415. package/dist/db/migrations/v35.js +2 -11
  416. package/dist/db/migrations/v36.js +2 -11
  417. package/dist/db/migrations/v37.js +8 -33
  418. package/dist/db/migrations/v38.js +5 -38
  419. package/dist/db/migrations/v39.js +9 -20
  420. package/dist/db/migrations/v40.js +2 -9
  421. package/dist/db/migrations/v41.js +2 -24
  422. package/dist/db/migrations/v43.js +1 -1
  423. package/dist/db/migrations/v44.js +2 -8
  424. package/dist/db/migrations/v45.js +2 -7
  425. package/dist/db/migrations/v47.js +2 -3
  426. package/dist/db/migrations/v51.js +1 -1
  427. package/dist/db/migrations/v55.d.ts +3 -0
  428. package/dist/db/migrations/v55.js +17 -0
  429. package/dist/db/open.d.ts +2 -2
  430. package/dist/db/open.js +21 -9
  431. package/dist/db/physics-state.d.ts +6 -22
  432. package/dist/db/physics-state.js +28 -39
  433. package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
  434. package/dist/db/raw-archive-mirror-cleanup.js +2 -17
  435. package/dist/db/tables.d.ts +2 -0
  436. package/dist/db/tables.js +6 -2
  437. package/dist/db/vector-store.d.ts +2 -0
  438. package/dist/db/vector-store.js +25 -5
  439. package/dist/db/wal-checkpointer.js +2 -1
  440. package/dist/doctor.js +85 -27
  441. package/dist/embeddings/local.d.ts +62 -0
  442. package/dist/embeddings/local.js +146 -0
  443. package/dist/embeddings/provider.d.ts +43 -0
  444. package/dist/{store/embeddings → embeddings}/provider.js +58 -83
  445. package/dist/embeddings/transformers.d.ts +26 -0
  446. package/dist/embeddings/transformers.js +89 -0
  447. package/dist/entry/session-text.d.ts +1 -1
  448. package/dist/entry/session-text.js +3 -2
  449. package/dist/eval/eval-stats.d.ts +15 -53
  450. package/dist/eval/eval-stats.js +12 -42
  451. package/dist/eval/eval-suite.d.ts +2 -13
  452. package/dist/eval/eval-suite.js +91 -45
  453. package/dist/eval/eval.d.ts +6 -24
  454. package/dist/eval/eval.js +8 -35
  455. package/dist/eval/judgment.d.ts +0 -3
  456. package/dist/eval/judgment.js +30 -15
  457. package/dist/extensions/openclaw-plugin/index.js +1 -1
  458. package/dist/graph/extract.d.ts +5 -27
  459. package/dist/graph/extract.js +10 -36
  460. package/dist/graph/recall.d.ts +7 -20
  461. package/dist/graph/recall.js +15 -77
  462. package/dist/graph/stream.d.ts +7 -39
  463. package/dist/graph/stream.js +11 -34
  464. package/dist/graph/view.d.ts +9 -35
  465. package/dist/graph/view.js +24 -44
  466. package/dist/graph/write.d.ts +1 -1
  467. package/dist/graph/write.js +9 -9
  468. package/dist/hooks/codex-session.js +3 -2
  469. package/dist/hooks/codex-wrapper.js +4 -3
  470. package/dist/hooks/copilot.js +2 -1
  471. package/dist/hooks/hook-blocks.d.ts +6 -2
  472. package/dist/hooks/hook-blocks.js +37 -124
  473. package/dist/hooks/json-hooks.d.ts +4 -36
  474. package/dist/hooks/json-hooks.js +22 -59
  475. package/dist/hooks/opencode.d.ts +0 -38
  476. package/dist/hooks/opencode.js +17 -81
  477. package/dist/hooks/shared.d.ts +6 -21
  478. package/dist/hooks/shared.js +31 -33
  479. package/dist/importers/core.d.ts +12 -37
  480. package/dist/importers/core.js +10 -28
  481. package/dist/importers/markdown-parse.d.ts +8 -22
  482. package/dist/importers/markdown-parse.js +8 -25
  483. package/dist/importers/markdown.js +3 -12
  484. package/dist/importers/sources.js +12 -39
  485. package/dist/importers/vault.d.ts +2 -8
  486. package/dist/importers/vault.js +31 -85
  487. package/dist/index.d.ts +8 -3
  488. package/dist/index.js +8 -3
  489. package/dist/learn/autolearn.d.ts +23 -42
  490. package/dist/learn/autolearn.js +45 -52
  491. package/dist/learn/churn-git.js +13 -4
  492. package/dist/learn/extract.d.ts +3 -2
  493. package/dist/learn/extract.js +8 -8
  494. package/dist/learn/forward-claim-detector.d.ts +6 -30
  495. package/dist/learn/forward-claim-detector.js +18 -68
  496. package/dist/learn/invalidation.d.ts +6 -18
  497. package/dist/learn/invalidation.js +18 -31
  498. package/dist/mcp/admin-tools.d.ts +2 -2
  499. package/dist/mcp/admin-tools.js +30 -53
  500. package/dist/mcp/format.js +3 -2
  501. package/dist/mcp/framing.d.ts +1 -0
  502. package/dist/mcp/framing.js +1 -1
  503. package/dist/mcp/memory-tools.js +7 -10
  504. package/dist/mcp/protocol.d.ts +15 -29
  505. package/dist/mcp/protocol.js +26 -16
  506. package/dist/mcp/recall-tools.js +14 -11
  507. package/dist/mcp/request.d.ts +3 -11
  508. package/dist/mcp/request.js +12 -27
  509. package/dist/mcp/server.d.ts +3 -9
  510. package/dist/mcp/server.js +5 -16
  511. package/dist/mcp/session-state.d.ts +1 -1
  512. package/dist/mcp/session-state.js +5 -11
  513. package/dist/mcp/stdio.d.ts +2 -6
  514. package/dist/mcp/stdio.js +68 -16
  515. package/dist/mcp/tool-args.js +2 -1
  516. package/dist/mcp/tools.js +47 -22
  517. package/dist/objects/customer-notes.d.ts +9 -44
  518. package/dist/objects/customer-notes.js +7 -48
  519. package/dist/objects/decisions.d.ts +14 -52
  520. package/dist/objects/decisions.js +15 -53
  521. package/dist/objects/descriptor.d.ts +1 -1
  522. package/dist/objects/incidents.d.ts +9 -40
  523. package/dist/objects/incidents.js +7 -41
  524. package/dist/objects/lifecycle.d.ts +1 -1
  525. package/dist/objects/lifecycle.js +2 -1
  526. package/dist/objects/policies.d.ts +13 -91
  527. package/dist/objects/policies.js +13 -99
  528. package/dist/objects/processes.d.ts +9 -54
  529. package/dist/objects/processes.js +7 -61
  530. package/dist/objects/project-briefs.d.ts +13 -57
  531. package/dist/objects/project-briefs.js +16 -78
  532. package/dist/objects/skills.d.ts +9 -44
  533. package/dist/objects/skills.js +8 -54
  534. package/dist/postinstall.js +7 -20
  535. package/dist/predictions/planning-fallacy.d.ts +11 -34
  536. package/dist/rerankers/clef.js +6 -37
  537. package/dist/rerankers/cross-encoder.d.ts +31 -2
  538. package/dist/rerankers/cross-encoder.js +65 -101
  539. package/dist/rerankers/index.js +5 -4
  540. package/dist/rerankers/jev.js +11 -10
  541. package/dist/rerankers/llm.d.ts +2 -11
  542. package/dist/rerankers/llm.js +14 -14
  543. package/dist/rerankers/outage-warning.d.ts +5 -2
  544. package/dist/rerankers/outage-warning.js +7 -4
  545. package/dist/rerankers/remote.d.ts +1 -0
  546. package/dist/rerankers/remote.js +2 -0
  547. package/dist/rerankers/types.d.ts +2 -14
  548. package/dist/search/bm25-search.js +1 -1
  549. package/dist/search/boosts.d.ts +0 -2
  550. package/dist/search/boosts.js +3 -3
  551. package/dist/search/embed-memories.d.ts +9 -0
  552. package/dist/search/embed-memories.js +377 -0
  553. package/dist/search/goal-boost.d.ts +23 -0
  554. package/dist/search/goal-boost.js +93 -0
  555. package/dist/search/hybrid.d.ts +11 -2
  556. package/dist/search/hybrid.js +9 -4
  557. package/dist/search/multihop.js +2 -3
  558. package/dist/search/path-context.d.ts +5 -18
  559. package/dist/search/path-context.js +5 -18
  560. package/dist/search/physics-search.d.ts +6 -3
  561. package/dist/search/physics-search.js +29 -19
  562. package/dist/search/rerank.js +1 -1
  563. package/dist/search/rrf.d.ts +7 -35
  564. package/dist/search/rrf.js +5 -30
  565. package/dist/search/vector.d.ts +13 -4
  566. package/dist/search/vector.js +40 -13
  567. package/dist/server/auth.d.ts +11 -28
  568. package/dist/server/auth.js +49 -32
  569. package/dist/server/boot.d.ts +2 -21
  570. package/dist/server/boot.js +69 -161
  571. package/dist/server/client-ip.d.ts +3 -21
  572. package/dist/server/client-ip.js +8 -30
  573. package/dist/server/deadline.d.ts +0 -2
  574. package/dist/server/deadline.js +1 -7
  575. package/dist/server/defaults.d.ts +4 -0
  576. package/dist/server/defaults.js +5 -0
  577. package/dist/server/key-check-bounds.d.ts +2 -1
  578. package/dist/server/lifecycle.d.ts +5 -4
  579. package/dist/server/lifecycle.js +19 -4
  580. package/dist/server/mcp-http.js +24 -53
  581. package/dist/server/rate-limit.d.ts +5 -18
  582. package/dist/server/rate-limit.js +4 -13
  583. package/dist/server/request.d.ts +4 -8
  584. package/dist/server/request.js +16 -19
  585. package/dist/server/route-checks.d.ts +7 -0
  586. package/dist/server/route-checks.js +42 -0
  587. package/dist/server/route-table.d.ts +9 -8
  588. package/dist/server/route-table.js +127 -139
  589. package/dist/server/routes/admin.d.ts +8 -8
  590. package/dist/server/routes/admin.js +35 -49
  591. package/dist/server/routes/customer-notes.d.ts +6 -6
  592. package/dist/server/routes/customer-notes.js +8 -14
  593. package/dist/server/routes/decisions.d.ts +6 -6
  594. package/dist/server/routes/decisions.js +12 -21
  595. package/dist/server/routes/incidents.d.ts +6 -6
  596. package/dist/server/routes/incidents.js +14 -25
  597. package/dist/server/routes/memories.d.ts +9 -9
  598. package/dist/server/routes/memories.js +20 -63
  599. package/dist/server/routes/object-routes.d.ts +6 -11
  600. package/dist/server/routes/object-routes.js +11 -22
  601. package/dist/server/routes/policies.d.ts +7 -7
  602. package/dist/server/routes/policies.js +12 -22
  603. package/dist/server/routes/predictions.d.ts +6 -6
  604. package/dist/server/routes/predictions.js +22 -38
  605. package/dist/server/routes/processes.d.ts +6 -6
  606. package/dist/server/routes/processes.js +17 -28
  607. package/dist/server/routes/project-briefs.d.ts +7 -7
  608. package/dist/server/routes/project-briefs.js +11 -20
  609. package/dist/server/routes/recall.d.ts +5 -5
  610. package/dist/server/routes/recall.js +16 -45
  611. package/dist/server/routes/skills.d.ts +7 -7
  612. package/dist/server/routes/skills.js +10 -22
  613. package/dist/server/server-detect.d.ts +15 -53
  614. package/dist/server/server-detect.js +55 -96
  615. package/dist/server/sleep-child.js +26 -7
  616. package/dist/server/sleep-offload.d.ts +11 -5
  617. package/dist/server/sleep-offload.js +21 -12
  618. package/dist/server/types.d.ts +32 -18
  619. package/dist/server/validation.d.ts +3 -2
  620. package/dist/server/validation.js +15 -33
  621. package/dist/server.d.ts +7 -6
  622. package/dist/server.js +8 -6
  623. package/dist/sharing/global-store.d.ts +19 -0
  624. package/dist/sharing/global-store.js +75 -0
  625. package/dist/sharing/global-sync.d.ts +6 -0
  626. package/dist/sharing/global-sync.js +73 -0
  627. package/dist/sharing/project-merge.d.ts +11 -19
  628. package/dist/sharing/project-merge.js +63 -125
  629. package/dist/sharing/search-both.d.ts +60 -0
  630. package/dist/sharing/search-both.js +138 -0
  631. package/dist/sharing/share.d.ts +40 -0
  632. package/dist/sharing/share.js +229 -0
  633. package/dist/store/ambient.js +9 -15
  634. package/dist/store/audit-event.d.ts +5 -13
  635. package/dist/store/audit-event.js +4 -12
  636. package/dist/store/audit.d.ts +2 -21
  637. package/dist/store/audit.js +8 -67
  638. package/dist/store/auth.d.ts +10 -8
  639. package/dist/store/auth.js +17 -12
  640. package/dist/store/candidates.d.ts +23 -5
  641. package/dist/store/candidates.js +119 -71
  642. package/dist/store/capture-write.d.ts +17 -0
  643. package/dist/store/capture-write.js +35 -0
  644. package/dist/store/card-detail.d.ts +2 -1
  645. package/dist/store/card-detail.js +2 -1
  646. package/dist/store/cards.d.ts +14 -9
  647. package/dist/store/cards.js +72 -126
  648. package/dist/store/compaction-caller.d.ts +18 -0
  649. package/dist/store/compaction-caller.js +29 -0
  650. package/dist/store/compactions-record.d.ts +115 -0
  651. package/dist/store/compactions-record.js +417 -0
  652. package/dist/store/compactions.js +6 -4
  653. package/dist/store/conflicts.d.ts +4 -21
  654. package/dist/store/conflicts.js +76 -152
  655. package/dist/store/connectors/dlq.d.ts +10 -0
  656. package/dist/store/connectors/dlq.js +32 -0
  657. package/dist/store/connectors/github.d.ts +14 -16
  658. package/dist/store/connectors/github.js +34 -57
  659. package/dist/store/connectors/slack.d.ts +2 -11
  660. package/dist/store/connectors/slack.js +18 -47
  661. package/dist/store/dashboard-reads.js +11 -14
  662. package/dist/store/delete-and-batch.d.ts +17 -31
  663. package/dist/store/delete-and-batch.js +84 -67
  664. package/dist/store/delivery-recorder.d.ts +15 -4
  665. package/dist/store/delivery-recorder.js +34 -17
  666. package/dist/store/descendant-page.js +6 -3
  667. package/dist/store/diagnostics.js +6 -13
  668. package/dist/store/dormant.d.ts +8 -30
  669. package/dist/store/dormant.js +18 -57
  670. package/dist/store/embeddings/index.d.ts +11 -90
  671. package/dist/store/embeddings/index.js +18 -523
  672. package/dist/store/entry-reads.d.ts +34 -61
  673. package/dist/store/entry-reads.js +111 -136
  674. package/dist/store/entry-row.d.ts +6 -35
  675. package/dist/store/entry-row.js +9 -37
  676. package/dist/store/entry-writes.d.ts +12 -18
  677. package/dist/store/entry-writes.js +46 -44
  678. package/dist/store/failure-log-at.d.ts +8 -0
  679. package/dist/store/failure-log-at.js +16 -0
  680. package/dist/store/failure-log.d.ts +2 -2
  681. package/dist/store/failure-log.js +5 -3
  682. package/dist/{trust → store}/gated-write.d.ts +3 -1
  683. package/dist/{trust → store}/gated-write.js +7 -5
  684. package/dist/store/goals.d.ts +3 -40
  685. package/dist/store/goals.js +41 -178
  686. package/dist/store/graph-queue.d.ts +6 -22
  687. package/dist/store/graph-queue.js +14 -45
  688. package/dist/store/graph-reads.d.ts +11 -35
  689. package/dist/store/graph-reads.js +24 -60
  690. package/dist/store/graph-rows.d.ts +3 -6
  691. package/dist/store/graph-rows.js +6 -9
  692. package/dist/store/graph-view-rows.d.ts +2 -1
  693. package/dist/store/graph-view-rows.js +2 -1
  694. package/dist/store/graph-writes.d.ts +10 -35
  695. package/dist/store/graph-writes.js +59 -106
  696. package/dist/store/half-life.d.ts +2 -1
  697. package/dist/store/half-life.js +14 -16
  698. package/dist/store/handoffs.d.ts +6 -12
  699. package/dist/store/handoffs.js +22 -40
  700. package/dist/store/index-and-stats.d.ts +6 -19
  701. package/dist/store/index-and-stats.js +36 -84
  702. package/dist/store/key-writes.js +1 -1
  703. package/dist/store/ledger-turn.d.ts +9 -0
  704. package/dist/store/ledger-turn.js +38 -0
  705. package/dist/store/mirrors.d.ts +2 -6
  706. package/dist/store/mirrors.js +24 -29
  707. package/dist/store/open.d.ts +0 -4
  708. package/dist/store/open.js +42 -62
  709. package/dist/store/pilot-arm.d.ts +12 -0
  710. package/dist/store/pilot-arm.js +42 -0
  711. package/dist/store/planning-fallacy-evidence.d.ts +2 -30
  712. package/dist/store/planning-fallacy-evidence.js +8 -37
  713. package/dist/store/port.d.ts +91 -82
  714. package/dist/store/port.js +8 -0
  715. package/dist/store/predictions.d.ts +12 -53
  716. package/dist/store/predictions.js +41 -125
  717. package/dist/store/project-tags.d.ts +62 -0
  718. package/dist/store/project-tags.js +67 -0
  719. package/dist/{cli → store}/quality-repair.js +15 -31
  720. package/dist/store/quarantine.js +2 -1
  721. package/dist/store/raw-archive.d.ts +4 -16
  722. package/dist/store/raw-archive.js +14 -29
  723. package/dist/store/recall-trace.d.ts +12 -77
  724. package/dist/store/recall-trace.js +37 -97
  725. package/dist/store/rejected-values.js +9 -20
  726. package/dist/store/rejection-probe.d.ts +4 -0
  727. package/dist/store/rejection-probe.js +19 -0
  728. package/dist/store/rejection.d.ts +10 -73
  729. package/dist/store/rejection.js +12 -84
  730. package/dist/store/report-reads.d.ts +6 -0
  731. package/dist/store/report-reads.js +29 -0
  732. package/dist/store/rows.d.ts +9 -19
  733. package/dist/store/rows.js +36 -34
  734. package/dist/store/rule-sql.d.ts +14 -0
  735. package/dist/store/rule-sql.js +56 -0
  736. package/dist/store/search-rows.d.ts +7 -38
  737. package/dist/store/search-rows.js +23 -54
  738. package/dist/store/sessions.d.ts +10 -47
  739. package/dist/store/sessions.js +21 -75
  740. package/dist/store/set-aside.d.ts +14 -0
  741. package/dist/store/set-aside.js +23 -0
  742. package/dist/store/sqlite/busy.d.ts +3 -0
  743. package/dist/store/sqlite/busy.js +8 -0
  744. package/dist/store/sqlite/connector-events-group.js +5 -8
  745. package/dist/store/sqlite/connector-writes-group.js +3 -3
  746. package/dist/store/sqlite/entry-writes-group.js +4 -4
  747. package/dist/store/sqlite/error-codec.js +8 -5
  748. package/dist/store/sqlite/executor.d.ts +2 -1
  749. package/dist/store/sqlite/executor.js +12 -5
  750. package/dist/store/sqlite/graph-reads-group.js +1 -1
  751. package/dist/store/sqlite/held-connection.d.ts +9 -0
  752. package/dist/store/sqlite/held-connection.js +41 -0
  753. package/dist/store/sqlite/local.d.ts +3 -3
  754. package/dist/store/sqlite/local.js +1 -0
  755. package/dist/store/sqlite/object-rows.d.ts +1 -1
  756. package/dist/store/sqlite/object-rows.js +6 -3
  757. package/dist/store/sqlite/objects-group.d.ts +1 -1
  758. package/dist/store/sqlite/objects-group.js +5 -3
  759. package/dist/store/sqlite/quarantine-group.js +2 -2
  760. package/dist/store/sqlite/store.d.ts +1 -4
  761. package/dist/store/sqlite/store.js +16 -15
  762. package/dist/store/sqlite/vector-reads-group.js +2 -2
  763. package/dist/store/sqlite/worker-jobs.js +1 -1
  764. package/dist/store/sqlite/worker-ops.d.ts +13 -2
  765. package/dist/store/sqlite/worker-ops.js +13 -2
  766. package/dist/store/sqlite/worker-store.js +5 -2
  767. package/dist/store/summaries.d.ts +11 -63
  768. package/dist/store/summaries.js +37 -148
  769. package/dist/store/summary-dirty.js +1 -1
  770. package/dist/store/tenant-lookup.d.ts +6 -1
  771. package/dist/store/tenant-lookup.js +7 -0
  772. package/dist/store/tenant.d.ts +2 -16
  773. package/dist/store/tenant.js +4 -19
  774. package/dist/store/token-ledger.d.ts +13 -50
  775. package/dist/store/token-ledger.js +19 -85
  776. package/dist/store/usage-reports.js +5 -13
  777. package/dist/store/vector-index.d.ts +46 -0
  778. package/dist/store/vector-index.js +171 -0
  779. package/dist/store/working-memory.d.ts +6 -25
  780. package/dist/store/working-memory.js +18 -52
  781. package/dist/support-bundle.js +9 -8
  782. package/dist/trust/reject-flow.js +3 -5
  783. package/dist/util/agent-homes.d.ts +15 -0
  784. package/dist/util/agent-homes.js +34 -0
  785. package/dist/util/anthropic-messages.d.ts +3 -0
  786. package/dist/util/anthropic-messages.js +35 -6
  787. package/dist/util/atomic-write.d.ts +2 -1
  788. package/dist/util/atomic-write.js +35 -4
  789. package/dist/util/capped-json.d.ts +6 -0
  790. package/dist/util/capped-json.js +46 -0
  791. package/dist/util/chunked.d.ts +3 -0
  792. package/dist/util/chunked.js +10 -0
  793. package/dist/util/crash-handlers.d.ts +8 -1
  794. package/dist/util/crash-handlers.js +52 -10
  795. package/dist/util/ellipsize.d.ts +3 -0
  796. package/dist/util/ellipsize.js +5 -0
  797. package/dist/util/env.d.ts +14 -6
  798. package/dist/util/env.js +15 -7
  799. package/dist/util/format.d.ts +3 -0
  800. package/dist/util/format.js +6 -0
  801. package/dist/util/home-path.d.ts +2 -1
  802. package/dist/util/home-path.js +4 -2
  803. package/dist/util/hook-payload.d.ts +8 -0
  804. package/dist/util/hook-payload.js +37 -0
  805. package/dist/util/http-retry.d.ts +9 -1
  806. package/dist/util/http-retry.js +67 -8
  807. package/dist/util/http-util.d.ts +0 -8
  808. package/dist/util/http-util.js +10 -21
  809. package/dist/util/limits.d.ts +7 -0
  810. package/dist/util/limits.js +14 -0
  811. package/dist/util/log.d.ts +7 -2
  812. package/dist/util/log.js +34 -9
  813. package/dist/util/request-scope.d.ts +5 -2
  814. package/dist/util/request-scope.js +13 -7
  815. package/dist/util/secret-detect.d.ts +5 -30
  816. package/dist/util/secret-detect.js +19 -40
  817. package/dist/util/sqlite-blocked.d.ts +2 -0
  818. package/dist/util/sqlite-blocked.js +5 -0
  819. package/dist/util/stored-json.d.ts +1 -1
  820. package/dist/util/stored-json.js +1 -1
  821. package/dist/util/stream-tee.d.ts +3 -0
  822. package/dist/util/stream-tee.js +35 -0
  823. package/dist/util/time.d.ts +4 -0
  824. package/dist/util/time.js +4 -0
  825. package/dist/util/token-text.d.ts +1 -4
  826. package/dist/util/token-text.js +1 -4
  827. package/dist/util/transcript-tail.d.ts +2 -0
  828. package/dist/util/transcript-tail.js +24 -23
  829. package/dist/util/version.d.ts +5 -20
  830. package/dist/util/version.js +5 -20
  831. package/dist/{store → util}/yaml.d.ts +1 -5
  832. package/dist/{store → util}/yaml.js +2 -6
  833. package/extensions/openclaw-plugin/index.ts +1 -1
  834. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  835. package/extensions/openclaw-plugin/package.json +1 -1
  836. package/openclaw.plugin.json +1 -1
  837. package/package.json +2 -2
  838. package/dist/cli/provenance-coverage.d.ts +0 -18
  839. package/dist/connectors/github/cli-impl.d.ts +0 -25
  840. package/dist/sharing/scope.d.ts +0 -14
  841. package/dist/sharing/shared.d.ts +0 -187
  842. package/dist/sharing/shared.js +0 -563
  843. package/dist/store/embeddings/local.d.ts +0 -15
  844. package/dist/store/embeddings/local.js +0 -192
  845. package/dist/store/embeddings/provider.d.ts +0 -77
  846. package/dist/store/markdown.d.ts +0 -10
  847. package/dist/store/recall-scope.d.ts +0 -138
  848. package/dist/store/recall-scope.js +0 -216
  849. package/dist/store/vector-writes.d.ts +0 -13
  850. package/dist/store/vector-writes.js +0 -89
  851. /package/dist/{store → core}/object-types.d.ts +0 -0
  852. /package/dist/{store → core}/object-types.js +0 -0
  853. /package/dist/{cli → store}/quality-repair.d.ts +0 -0
  854. /package/dist/{capture → util}/compaction-items.d.ts +0 -0
  855. /package/dist/{capture → util}/compaction-items.js +0 -0
@@ -1,9 +1,10 @@
1
1
  // The sleep pipeline behind `sleep`, with its phase dependencies injectable; kept out of the package root.
2
2
  import { loadAllEntries } from '../store/entry-reads.js';
3
- import { deleteEntry, memoriesBackingObjects } from '../store/delete-and-batch.js';
4
- import { reportAuditWriteFailure, auditMemories } from '../store/audit.js';
3
+ import { memoriesBackingObjects } from '../store/delete-and-batch.js';
4
+ import { reportAuditWriteFailure } from '../store/audit.js';
5
+ import { auditMemories } from '../core/memory-audit.js';
5
6
  import { sqliteSyncStore } from '../store/sqlite/store.js';
6
- import { autoShare } from '../sharing/shared.js';
7
+ import { AUTO_SHARE_MIN_SCORE, autoShare } from '../sharing/share.js';
7
8
  import { consolidate } from '../consolidate/sleep.js';
8
9
  import { failedUnitOf } from '../store/delete-and-batch.js';
9
10
  import { loadConfig } from '../core/config.js';
@@ -11,6 +12,7 @@ import { deduplicateStore } from '../consolidate/dedupe.js';
11
12
  import { computeAmbientState } from '../core/ambient.js';
12
13
  import { loadPendingExtractionTenants, markPendingProcessedUpTo } from '../store/graph-queue.js';
13
14
  import { extractGraphChunked } from '../graph/extract.js';
15
+ import { removeAuditErrors } from './audit.js';
14
16
  import { errorMessage } from '../util/log.js';
15
17
  const DEFAULT_SLEEP_PHASES = {
16
18
  consolidate,
@@ -18,7 +20,6 @@ const DEFAULT_SLEEP_PHASES = {
18
20
  auditMemories,
19
21
  autoShare,
20
22
  loadAllEntries,
21
- deleteEntry,
22
23
  computeAmbientState,
23
24
  loadConfig,
24
25
  loadPendingExtractionTenants,
@@ -28,18 +29,15 @@ const DEFAULT_SLEEP_PHASES = {
28
29
  export async function runSleep(ctx, opts, overrides = {}) {
29
30
  const dryRun = Boolean(opts.dryRun);
30
31
  const phases = { ...DEFAULT_SLEEP_PHASES, ...overrides };
31
- // Phase counters for the consolidate audit emit (in finally).
32
- // Accumulated as each phase completes so partial-failure paths still report
33
- // accurate "what got done before the failure" data.
32
+ // Phase counters for the consolidate audit emit (in finally), accumulated per phase so a partial failure still reports what got done.
34
33
  const counts = { consolidation: 0, dedup: 0, auditDeleted: 0, ambient: 0 };
35
34
  let phaseError = null;
36
35
  try {
37
36
  return await runSleepPhases(ctx, opts, phases, counts);
38
37
  }
39
38
  catch (err) {
40
- // SAFETY: phaseError is read via phaseError.message / (phaseError !==
41
- // null) below, both safe even if a non-Error was thrown; this mirrors
42
- // the existing lenient (err as Error) pattern used throughout this catch chain.
39
+ // SAFETY: phaseError is only read via phaseError.message / (phaseError !== null) below, safe even if a non-Error was thrown;
40
+ // this mirrors the lenient (err as Error) pattern used through this catch chain.
43
41
  phaseError = err;
44
42
  throw err;
45
43
  }
@@ -54,20 +52,23 @@ async function runSleepPhases(ctx, opts, phases, counts) {
54
52
  const consolidateResult = await phases.consolidate(ctx.hippoRoot, { dryRun });
55
53
  counts.consolidation = consolidateResult.semanticCreated + consolidateResult.merged;
56
54
  const result = sleepResultFrom(consolidateResult, dryRun);
55
+ // One read after consolidation serves dedup, the audit and ambient: dedup reports every row it deletes, so later phases subtract instead of reading again.
56
+ const loaded = { entries: phases.loadAllEntries(ctx.hippoRoot), backing: memoriesBackingObjects(ctx.hippoRoot) };
57
57
  // Phase 2: Dedup (post-consolidate near-duplicate cleanup).
58
- const dedupResult = phases.deduplicateStore(ctx.hippoRoot, { dryRun, actor: ctx.actor.subject });
58
+ const dedupResult = phases.deduplicateStore(ctx.hippoRoot, { dryRun, actor: ctx.actor.subject, loaded });
59
59
  counts.dedup = dedupResult.removed;
60
60
  if (dedupResult.removed > 0)
61
61
  result.deduped = dedupSummary(dedupResult);
62
62
  // Phase 3: Quality audit (remove junk, report warnings; a dry run skips rows earlier phases would remove).
63
- counts.auditDeleted = runQualityAudit(ctx, phases, { dryRun, consolidateResult, dedupResult, result });
63
+ const audited = runQualityAudit(ctx, phases, { dryRun, consolidateResult, dedupResult, result, loaded });
64
+ counts.auditDeleted = audited.removed;
64
65
  if (dryRun)
65
66
  return result;
66
67
  // Phase 4: Auto-share high-transfer-score memories to global.
67
68
  if (!opts.noShare)
68
69
  shareOnSleep(ctx, phases, result);
69
70
  // Phase 5: Post-sleep ambient state summary.
70
- counts.ambient = summarizeAmbient(ctx, phases, result);
71
+ counts.ambient = summarizeAmbient(ctx, phases, result, audited.remaining);
71
72
  await drainGraphQueue(ctx, phases, snapshot, result);
72
73
  return result;
73
74
  }
@@ -115,28 +116,27 @@ function dedupSummary(dedupResult) {
115
116
  crossDups,
116
117
  };
117
118
  }
119
+ /** `removed` counts audit errors deleted (or that would be under dryRun); `remaining` is what the audit read, less the rows it deleted. */
118
120
  function runQualityAudit(ctx, phases, options) {
119
- const { dryRun, consolidateResult, dedupResult, result } = options;
120
- const planned = new Set(dryRun ? [...(consolidateResult.removedIds ?? []), ...dedupResult.pairs.map((p) => p.removed)] : []);
121
- const allEntries = phases.loadAllEntries(ctx.hippoRoot).filter((e) => !planned.has(e.id));
122
- const auditOut = phases.auditMemories(allEntries, memoriesBackingObjects(ctx.hippoRoot));
121
+ const { dryRun, consolidateResult, dedupResult, result, loaded } = options;
122
+ // The load followed consolidation, so only a dry run still holds the rows consolidation would remove; dedup's pairs are gone or would be.
123
+ const planned = new Set([...(dryRun ? consolidateResult.removedIds ?? [] : []), ...dedupResult.pairs.map((p) => p.removed)]);
124
+ const allEntries = loaded.entries.filter((e) => !planned.has(e.id));
125
+ const auditOut = phases.auditMemories(allEntries, loaded.backing);
123
126
  if (auditOut.issues.length === 0)
124
- return 0;
127
+ return { removed: 0, remaining: allEntries };
125
128
  const errors = auditOut.issues.filter((i) => i.severity === 'error');
126
129
  const warnings = auditOut.issues.filter((i) => i.severity === 'warning');
127
- let removed = 0;
128
- for (const issue of errors) {
129
- const reason = `sleep-audit: ${issue.reason}`;
130
- if (dryRun || phases.deleteEntry(ctx.hippoRoot, issue.memoryId, { actor: ctx.actor.subject, reason, automatic: true }))
131
- removed++;
132
- }
130
+ const gone = dryRun ? errors.map((issue) => issue.memoryId) : removeAuditErrors(ctx, 'sleep-audit', errors);
131
+ const removed = gone.length;
132
+ const deleted = new Set(gone);
133
133
  if (removed > 0 || warnings.length > 0) {
134
134
  result.audit = {
135
135
  errorsRemoved: removed,
136
136
  warningCount: warnings.length,
137
137
  };
138
138
  }
139
- return removed;
139
+ return { removed, remaining: allEntries.filter((e) => !deleted.has(e.id)) };
140
140
  }
141
141
  function shareOnSleep(ctx, phases, result) {
142
142
  const sleepConfig = phases.loadConfig(ctx.hippoRoot);
@@ -144,7 +144,7 @@ function shareOnSleep(ctx, phases, result) {
144
144
  return;
145
145
  // Both skip counters are surfaced so the secret veto and the rejection tombstone are observable, not silent.
146
146
  const autoShareStats = { secretSkipped: 0, rejectedSkipped: 0 };
147
- const shared = phases.autoShare(ctx.hippoRoot, { minScore: 0.6, stats: autoShareStats });
147
+ const shared = phases.autoShare(ctx.hippoRoot, { minScore: AUTO_SHARE_MIN_SCORE, stats: autoShareStats });
148
148
  if (shared.length > 0) {
149
149
  result.shared = shared.length;
150
150
  }
@@ -156,11 +156,11 @@ function shareOnSleep(ctx, phases, result) {
156
156
  }
157
157
  }
158
158
  /** Returns the ambient total the audit row reports: 0 when ambient is off or no current row is left. */
159
- function summarizeAmbient(ctx, phases, result) {
159
+ function summarizeAmbient(ctx, phases, result, loaded) {
160
160
  const postSleepConfig = phases.loadConfig(ctx.hippoRoot);
161
161
  if (!postSleepConfig.ambient.enabled)
162
162
  return 0;
163
- const postSleepEntries = phases.loadAllEntries(ctx.hippoRoot).filter((e) => !e.superseded_by);
163
+ const postSleepEntries = loaded.filter((e) => !e.superseded_by);
164
164
  if (postSleepEntries.length === 0)
165
165
  return 0;
166
166
  result.ambient = phases.computeAmbientState(postSleepEntries);
@@ -4,23 +4,17 @@ import type { Context } from './types.js';
4
4
  export interface SleepOpts {
5
5
  /** Report what a sleep would change without applying it; sharing, the ambient summary and the graph refresh are skipped. */
6
6
  dryRun?: boolean;
7
- /** Skip copying high-scoring memories to the global store under `HIPPO_HOME`. Default false, so every tenant's memories are eligible; multi-tenant callers pass `true`. */
7
+ /** Skip copying high-scoring memories to the global store under `HIPPO_HOME`. Default
8
+ * false, so every tenant's memories are eligible; multi-tenant callers pass `true`. */
8
9
  noShare?: boolean;
9
10
  }
10
11
  export interface SleepResult {
11
12
  active: number;
12
13
  removed: number;
13
- /**
14
- * Faded memories the decay pass moved to the dormant store instead of
15
- * deleting (config `dormant.enabled`). Absent when 0. Per-invocation
16
- * activity counter, same class as `removed`.
17
- */
14
+ /** Faded memories the decay pass moved to the dormant store instead of deleting (config `dormant.enabled`); absent when 0. Per-invocation counter, like
15
+ * `removed`. */
18
16
  dormant?: number;
19
- /**
20
- * Dormant memories deleted for good this sleep because they outlived
21
- * `dormant.retentionDays`. Absent when 0. Same per-invocation class as
22
- * `removed`.
23
- */
17
+ /** Dormant memories deleted for good this sleep for outliving `dormant.retentionDays`; absent when 0. Per-invocation counter, like `removed`. */
24
18
  dormantExpired?: number;
25
19
  mergedEpisodic: number;
26
20
  newSemantic: number;
@@ -36,26 +30,13 @@ export interface SleepResult {
36
30
  warningCount: number;
37
31
  };
38
32
  shared?: number;
39
- /**
40
- * Count of memories the auto-share secret veto withheld this sleep
41
- * — rows that passed every other admission gate (transfer score,
42
- * not-already-global) and were blocked solely by `detectSecret`. Absent
43
- * when 0 or when auto-share did not run.
44
- */
33
+ /** Memories the auto-share secret veto withheld: rows that passed every other gate but `detectSecret`; absent when 0 or auto-share did not run. */
45
34
  secretSkipped?: number;
46
- /**
47
- * Count of auto-share candidates the GLOBAL store's rejection
48
- * tombstone refused this sleep; copy paths must not let one rejected
49
- * candidate abort the batch. Absent when 0 or when auto-share did not run.
50
- */
35
+ /** Auto-share candidates the GLOBAL store's rejection tombstone refused (one must not abort the batch); absent when 0 or auto-share did not run. */
51
36
  rejectedSkipped?: number;
52
37
  ambient?: AmbientState | null;
53
- /**
54
- * Graph re-extraction totals across the tenants rebuilt
55
- * this sleep. Absent when no tenant was dirty, and under dryRun (the graph
56
- * phase runs only on a real sleep). Cross-tenant aggregate, one reason
57
- * /v1/sleep stays loopback-only.
58
- */
38
+ /** Graph re-extraction totals across tenants rebuilt this sleep; absent when none was dirty or under dryRun.
39
+ * Cross-tenant aggregate: one reason /v1/sleep stays loopback-only. */
59
40
  graph?: {
60
41
  tenants: number;
61
42
  entities: number;
@@ -0,0 +1,24 @@
1
+ import type { PhysicsParticle } from '../core/physics.js';
2
+ import type { LegacyStats } from '../store/rows.js';
3
+ import { type StatusCounts } from '../store/candidates.js';
4
+ import { type StoredVectorSummary } from '../store/vector-index.js';
5
+ import { type CorrectionLatencyReport } from './correction-latency.js';
6
+ import { type ProvenanceCoverage } from './provenance-coverage.js';
7
+ import { type Context } from './types.js';
8
+ export interface StoreStatus {
9
+ stats: LegacyStats;
10
+ counts: StatusCounts;
11
+ }
12
+ /** Lifetime stats and row counts for the whole store. Every tenant, so the host admin only. */
13
+ export declare function storeStatus(ctx: Context, now: Date, atRiskBelow: number): StoreStatus;
14
+ /** Ids and dimension of the stored vectors. Every tenant, so the host admin only. */
15
+ export declare function vectorSummary(ctx: Context): StoredVectorSummary;
16
+ /** Whether the stored vectors were built by a different model than `providerId`. Every tenant, so the host admin only. */
17
+ export declare function embeddingReindexNeeded(ctx: Context, providerId: string): boolean;
18
+ /** Every stored physics particle. Every tenant, so the host admin only. */
19
+ export declare function storedParticles(ctx: Context): PhysicsParticle[];
20
+ /** Correction latency over every superseded row in the store. Every tenant, so the host admin only. */
21
+ export declare function correctionLatencyReport(ctx: Context): CorrectionLatencyReport;
22
+ /** Provenance coverage over every kind=raw row in the store. Every tenant, so the host admin only. */
23
+ export declare function provenanceCoverageReport(ctx: Context): ProvenanceCoverage;
24
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1,40 @@
1
+ // Store-wide status reads: counts, stats, vector index state and the correction and provenance reports.
2
+ import { loadCorrectionEntries, loadRawEntries } from '../store/report-reads.js';
3
+ import { loadStats } from '../store/index-and-stats.js';
4
+ import { loadStatusCounts } from '../store/candidates.js';
5
+ import { embeddingModelRequiresReindex } from '../store/embeddings/index.js';
6
+ import { loadStoredParticles, storedVectorSummary } from '../store/vector-index.js';
7
+ import { buildCorrectionLatency } from './correction-latency.js';
8
+ import { buildProvenanceCoverage } from './provenance-coverage.js';
9
+ import { requireHostAdmin } from './types.js';
10
+ /** Lifetime stats and row counts for the whole store. Every tenant, so the host admin only. */
11
+ export function storeStatus(ctx, now, atRiskBelow) {
12
+ requireHostAdmin(ctx, 'Reading every tenant');
13
+ return { stats: loadStats(ctx.hippoRoot), counts: loadStatusCounts(ctx.hippoRoot, now, atRiskBelow) };
14
+ }
15
+ /** Ids and dimension of the stored vectors. Every tenant, so the host admin only. */
16
+ export function vectorSummary(ctx) {
17
+ requireHostAdmin(ctx, 'Reading every tenant');
18
+ return storedVectorSummary(ctx.hippoRoot);
19
+ }
20
+ /** Whether the stored vectors were built by a different model than `providerId`. Every tenant, so the host admin only. */
21
+ export function embeddingReindexNeeded(ctx, providerId) {
22
+ requireHostAdmin(ctx, 'Reading every tenant');
23
+ return embeddingModelRequiresReindex(ctx.hippoRoot, providerId);
24
+ }
25
+ /** Every stored physics particle. Every tenant, so the host admin only. */
26
+ export function storedParticles(ctx) {
27
+ requireHostAdmin(ctx, 'Reading every tenant');
28
+ return loadStoredParticles(ctx.hippoRoot);
29
+ }
30
+ /** Correction latency over every superseded row in the store. Every tenant, so the host admin only. */
31
+ export function correctionLatencyReport(ctx) {
32
+ requireHostAdmin(ctx, 'Reading every tenant');
33
+ return buildCorrectionLatency(loadCorrectionEntries(ctx.hippoRoot));
34
+ }
35
+ /** Provenance coverage over every kind=raw row in the store. Every tenant, so the host admin only. */
36
+ export function provenanceCoverageReport(ctx) {
37
+ requireHostAdmin(ctx, 'Reading every tenant');
38
+ return buildProvenanceCoverage(loadRawEntries(ctx.hippoRoot));
39
+ }
40
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1,4 @@
1
+ import { type Context } from './types.js';
2
+ /** Create the store at `ctx.hippoRoot`, or finish setting up one that exists; a store holds every tenant, so the host admin only. */
3
+ export declare function initMemoryStore(ctx: Context): void;
4
+ //# sourceMappingURL=store-init.d.ts.map
@@ -0,0 +1,9 @@
1
+ // Creating a store for `hippo init`: the database, its mirror folders and first-run setup.
2
+ import { initStore } from '../store/open.js';
3
+ import { requireHostAdmin } from './types.js';
4
+ /** Create the store at `ctx.hippoRoot`, or finish setting up one that exists; a store holds every tenant, so the host admin only. */
5
+ export function initMemoryStore(ctx) {
6
+ requireHostAdmin(ctx, 'Creating a store');
7
+ initStore(ctx.hippoRoot);
8
+ }
9
+ //# sourceMappingURL=store-init.js.map
@@ -1,21 +1,14 @@
1
1
  import type { TokenSummary, TokenSurface } from '../store/token-ledger.js';
2
2
  import type { FailureSummary } from '../store/failure-log.js';
3
3
  import type { Context } from './types.js';
4
- /**
5
- * Record memory text handed to an agent in the token ledger.
6
- * Best-effort: never throws, because a ledger failure must not fail the
7
- * recall or context call that produced the text.
8
- */
4
+ /** Records memory text handed to an agent in the token ledger. Best-effort: never throws, since a ledger failure must not fail the recall or context call. */
9
5
  export declare function recordTokens(ctx: Context, surface: TokenSurface, use: {
10
6
  items: number;
11
7
  tokens: number;
12
8
  sessionId?: string | null;
13
9
  }): Promise<void>;
14
- /**
15
- * Token ledger totals for the tenant over the last `days` days (default 30):
16
- * tokens sent, skipped as unchanged and re-read by later model calls, per
17
- * surface, with session counts and mean tokens per session.
18
- */
10
+ /** Token ledger totals for the tenant over the last `days` days (default 30): tokens sent, skipped as unchanged and re-read,
11
+ * per surface, with session counts and mean tokens per session. */
19
12
  export declare function tokenSummary(ctx: Context, opts?: {
20
13
  days?: number;
21
14
  }): TokenSummary;
@@ -1,14 +1,10 @@
1
1
  // Token-use and failure reports.
2
- import { rethrowIfSqliteBlocked } from '../db/index.js';
2
+ import { rethrowIfSqliteBlocked } from '../util/sqlite-blocked.js';
3
3
  import { storeFor } from '../store/index.js';
4
4
  import { failureLogSummary, tokenUseSummary } from '../store/usage-reports.js';
5
5
  import { errorMessage, log } from '../util/log.js';
6
6
  import { DAY_MS } from '../util/time.js';
7
- /**
8
- * Record memory text handed to an agent in the token ledger.
9
- * Best-effort: never throws, because a ledger failure must not fail the
10
- * recall or context call that produced the text.
11
- */
7
+ /** Records memory text handed to an agent in the token ledger. Best-effort: never throws, since a ledger failure must not fail the recall or context call. */
12
8
  export async function recordTokens(ctx, surface, use) {
13
9
  try {
14
10
  await storeFor(ctx).recordTokens({
@@ -25,11 +21,8 @@ export async function recordTokens(ctx, surface, use) {
25
21
  log.warnThenDebug('api-token-ledger', `token ledger write failed; the reply is unaffected: ${errorMessage(err)}`);
26
22
  }
27
23
  }
28
- /**
29
- * Token ledger totals for the tenant over the last `days` days (default 30):
30
- * tokens sent, skipped as unchanged and re-read by later model calls, per
31
- * surface, with session counts and mean tokens per session.
32
- */
24
+ /** Token ledger totals for the tenant over the last `days` days (default 30): tokens sent, skipped as unchanged and re-read,
25
+ * per surface, with session counts and mean tokens per session. */
33
26
  export function tokenSummary(ctx, opts = {}) {
34
27
  return tokenUseSummary(ctx.hippoRoot, ctx.tenantId, reportWindowStart(opts.days));
35
28
  }
@@ -1,12 +1,7 @@
1
1
  import { BadRequestError } from '../core/api-errors.js';
2
2
  import type { HippoStore } from '../store/index.js';
3
- /**
4
- * Actor identity + authorization role for a Context.
5
- *
6
- * Carries the audit-log subject plus a role for /v1/sleep admin gating. Audit
7
- * helpers take the bare `string`, so callers pass `ctx.actor.subject`. Role checks happen at the request
8
- * boundary (e.g. /v1/sleep), except in authCreate and authRevoke (ForbiddenError).
9
- */
3
+ /** Actor identity + role for a Context: the audit-log subject (pass `ctx.actor.subject` to audit helpers) and the role for admin gating.
4
+ * Role checks happen at the request boundary (e.g. /v1/sleep), except in authCreate and authRevoke (ForbiddenError). */
10
5
  export interface Actor {
11
6
  /** 'cli' | 'localhost:cli' | 'api_key:<key_id>' | 'mcp' | 'connector:slack' | 'connector:github' */
12
7
  subject: string;
@@ -34,31 +29,15 @@ export type StoreReply<C extends Context, R> = C extends {
34
29
  readonly hippoRoot: string;
35
30
  readonly store?: undefined;
36
31
  } ? R : R | Promise<R>;
37
- /**
38
- * Helper for building process-local Actor values (admin and host admin),
39
- * used by CLI and CLI-run connector Context constructors so the role
40
- * boilerplate isn't repeated at every site. Bearer-authed callers (HTTP
41
- * /v1/*) construct Actor directly from the api_keys row's role column via
42
- * buildContextWithAuth in src/server.ts.
43
- */
32
+ /** Builds process-local Actor values (admin and host admin) for CLI and CLI-run connector Contexts; Bearer-authed callers build Actor from the api_keys row
33
+ * instead. */
44
34
  export declare function adminActor(subject: string): Actor;
35
+ /** Throws unless the caller is the host's operator: `action` reaches past the caller's tenant. */
36
+ export declare function requireHostAdmin(ctx: Context, action: string): void;
45
37
  /** The per-person key: an unowned key gets its own bucket by key id rather than sharing one. */
46
38
  export declare function ownerOrSubject(actor: Actor): string;
47
- /**
48
- * Thrown by `api.recall` when a caller's options violate a recall contract
49
- * that has been opted into via env. Carries a stable `code` field for HTTP /
50
- * MCP / CLI render paths to discriminate without parsing the message.
51
- *
52
- * Codes:
53
- * - 'fresh_tail_requires_session_id' — `freshTailCount > 0` AND no
54
- * `freshTailSessionId` AND `HIPPO_REQUIRE_SESSION_SCOPED_FRESH_TAIL=1`.
55
- * Default behaviour (env unset) returns tenant-wide rows; the env gate
56
- * is opt-in so multi-session tenants can fail loud instead of silently
57
- * surfacing cross-session rows tagged `isFreshTail=true`.
58
- * - 'invalid_scorer_window' — `opts.scorerWindow` is set to a non-positive,
59
- * non-integer, or non-finite value. 0 would route through FTS/LIKE
60
- * `LIMIT 0` and then an uncapped full-store fallback, so it is validated upfront.
61
- */
39
+ /** Thrown by `api.recall` on a contract violation; the stable `code` lets callers discriminate without parsing the message.
40
+ * 'fresh_tail_requires_session_id' (needs HIPPO_REQUIRE_SESSION_SCOPED_FRESH_TAIL=1) or 'invalid_scorer_window' (0 would hit an uncapped fallback). */
62
41
  export declare class RecallContractError extends BadRequestError {
63
42
  readonly code: 'fresh_tail_requires_session_id' | 'invalid_scorer_window';
64
43
  constructor(code: 'fresh_tail_requires_session_id' | 'invalid_scorer_window', message: string);
package/dist/api/types.js CHANGED
@@ -1,34 +1,21 @@
1
1
  // Request context (caller identity and tenant) shared by every API module, plus the recall contract error.
2
- import { BadRequestError } from '../core/api-errors.js';
3
- /**
4
- * Helper for building process-local Actor values (admin and host admin),
5
- * used by CLI and CLI-run connector Context constructors so the role
6
- * boilerplate isn't repeated at every site. Bearer-authed callers (HTTP
7
- * /v1/*) construct Actor directly from the api_keys row's role column via
8
- * buildContextWithAuth in src/server.ts.
9
- */
2
+ import { BadRequestError, ForbiddenError } from '../core/api-errors.js';
3
+ /** Builds process-local Actor values (admin and host admin) for CLI and CLI-run connector Contexts; Bearer-authed callers build Actor from the api_keys row
4
+ * instead. */
10
5
  export function adminActor(subject) {
11
6
  return { subject, role: 'admin', hostAdmin: true };
12
7
  }
8
+ /** Throws unless the caller is the host's operator: `action` reaches past the caller's tenant. */
9
+ export function requireHostAdmin(ctx, action) {
10
+ if (!ctx.actor.hostAdmin)
11
+ throw new ForbiddenError(`${action} requires a host admin`);
12
+ }
13
13
  /** The per-person key: an unowned key gets its own bucket by key id rather than sharing one. */
14
14
  export function ownerOrSubject(actor) {
15
15
  return actor.owner ?? actor.subject;
16
16
  }
17
- /**
18
- * Thrown by `api.recall` when a caller's options violate a recall contract
19
- * that has been opted into via env. Carries a stable `code` field for HTTP /
20
- * MCP / CLI render paths to discriminate without parsing the message.
21
- *
22
- * Codes:
23
- * - 'fresh_tail_requires_session_id' — `freshTailCount > 0` AND no
24
- * `freshTailSessionId` AND `HIPPO_REQUIRE_SESSION_SCOPED_FRESH_TAIL=1`.
25
- * Default behaviour (env unset) returns tenant-wide rows; the env gate
26
- * is opt-in so multi-session tenants can fail loud instead of silently
27
- * surfacing cross-session rows tagged `isFreshTail=true`.
28
- * - 'invalid_scorer_window' — `opts.scorerWindow` is set to a non-positive,
29
- * non-integer, or non-finite value. 0 would route through FTS/LIKE
30
- * `LIMIT 0` and then an uncapped full-store fallback, so it is validated upfront.
31
- */
17
+ /** Thrown by `api.recall` on a contract violation; the stable `code` lets callers discriminate without parsing the message.
18
+ * 'fresh_tail_requires_session_id' (needs HIPPO_REQUIRE_SESSION_SCOPED_FRESH_TAIL=1) or 'invalid_scorer_window' (0 would hit an uncapped fallback). */
32
19
  export class RecallContractError extends BadRequestError {
33
20
  code;
34
21
  constructor(code, message) {
@@ -1,5 +1,4 @@
1
1
  import { type Context } from '../api/types.js';
2
- import { type DatabaseSyncLike } from '../db/index.js';
3
2
  import { type CallerProject } from '../api/prompt-hook.js';
4
3
  import type { ContinuityKey } from '../store/sessions.js';
5
4
  import { type WorkingState } from './working-state.js';
@@ -11,6 +10,4 @@ export declare function callerInHoldout(ctx: Context, sessionId: string): boolea
11
10
  export declare function checkedWorkingState(state: WorkingState | null): WorkingState | null;
12
11
  export declare function assertTrigger(trigger: string | null): void;
13
12
  export declare function assertRequestId(requestId: string): void;
14
- /** Opens with the request's own lock wait, so a busy store becomes a 503 rather than a long stall. */
15
- export declare function withCallerDb<T>(ctx: Context, fn: (db: DatabaseSyncLike) => T): T;
16
13
  //# sourceMappingURL=caller-session.d.ts.map
@@ -1,8 +1,7 @@
1
1
  // The checks every caller call shares: ids, project, the session's owner and the pilot arm, all from the request, never the server's env or folder.
2
2
  import { BadRequestError } from '../core/api-errors.js';
3
3
  import { ownerOrSubject } from '../api/types.js';
4
- import { closeHippoDb, openHippoDb } from '../db/index.js';
5
- import { MAX_ID_LEN } from '../util/http-util.js';
4
+ import { MAX_ID_LEN } from '../util/limits.js';
6
5
  import { sessionPilotArm } from '../api/pilot-arm.js';
7
6
  import { assertCallerIds } from '../api/prompt-hook.js';
8
7
  import { assertCallerProject, projectNames } from '../core/project-identity.js';
@@ -45,14 +44,4 @@ export function assertRequestId(requestId) {
45
44
  if (requestId.length > MAX_ID_LEN)
46
45
  throw new BadRequestError(`request id: at most ${MAX_ID_LEN} characters`);
47
46
  }
48
- /** Opens with the request's own lock wait, so a busy store becomes a 503 rather than a long stall. */
49
- export function withCallerDb(ctx, fn) {
50
- const db = openHippoDb(ctx.hippoRoot);
51
- try {
52
- return fn(db);
53
- }
54
- finally {
55
- closeHippoDb(db);
56
- }
57
- }
58
47
  //# sourceMappingURL=caller-session.js.map
@@ -1,7 +1,7 @@
1
- import { type CaptureErrorOutcome } from '../store/failure-log.js';
1
+ import type { CaptureErrorOutcome } from '../store/failure-log.js';
2
2
  import type { JsonValue } from '../util/json.js';
3
3
  /** Store a failure as an error memory unless it is routine or a repeat, and log it either way, even when storing throws. */
4
- export declare function captureToolFailure(hippoRoot: string, tenantId: string, payload: JsonValue): CaptureErrorOutcome;
4
+ export declare function captureToolFailure(hippoRoot: string, tenantId: string, payload: JsonValue, onLogged?: (failureId: number | null) => void): CaptureErrorOutcome;
5
5
  /** Who sent a failure from another machine: the audit actor and the project its lesson and repeat check belong to. */
6
6
  export interface LessonCaller {
7
7
  actor: string;
@@ -5,11 +5,10 @@ import { createMemory } from '../core/memory.js';
5
5
  import { writeEntry } from '../store/entry-writes.js';
6
6
  import { loadContentsWithTag } from '../store/entry-reads.js';
7
7
  import { loadConfig } from '../core/config.js';
8
- import { closeHippoDb, openHippoDb } from '../db/index.js';
9
- import { recordFailure } from '../store/failure-log.js';
8
+ import { recordFailureAt } from '../store/failure-log-at.js';
10
9
  import { failureHash, failureSignature, lessonFromFailure, payloadString, } from './failure-reading.js';
11
10
  /** Store a failure as an error memory unless it is routine or a repeat, and log it either way, even when storing throws. */
12
- export function captureToolFailure(hippoRoot, tenantId, payload) {
11
+ export function captureToolFailure(hippoRoot, tenantId, payload, onLogged) {
13
12
  const lesson = lessonFromFailure(payload);
14
13
  let outcome = 'store-failed';
15
14
  try {
@@ -17,26 +16,32 @@ export function captureToolFailure(hippoRoot, tenantId, payload) {
17
16
  return outcome;
18
17
  }
19
18
  finally {
20
- logFailure(hippoRoot, tenantId, payload, lesson, outcome);
19
+ logAndReport(hippoRoot, tenantId, payload, lesson, outcome, onLogged);
21
20
  }
22
21
  }
23
- function logFailure(hippoRoot, tenantId, payload, lesson, outcome) {
24
- const hash = (s) => (s === null ? null : failureHash(s));
25
- const db = openHippoDb(hippoRoot);
22
+ /** Logs the failure, then tells the caller the row id, or null when the write threw; the throw goes on. */
23
+ function logAndReport(hippoRoot, tenantId, payload, lesson, outcome, onLogged) {
24
+ let id;
26
25
  try {
27
- recordFailure(db, {
28
- tenantId,
29
- sessionId: payloadString(payload, 'session_id'),
30
- tool: payloadString(payload, 'tool_name'),
31
- outcome,
32
- rule: 'rule' in lesson ? lesson.rule : null,
33
- sigHash: hash(lesson.text),
34
- detailHash: hash(lesson.detail),
35
- });
26
+ id = logFailure(hippoRoot, tenantId, payload, lesson, outcome);
36
27
  }
37
- finally {
38
- closeHippoDb(db);
28
+ catch (error) {
29
+ onLogged?.(null);
30
+ throw error;
39
31
  }
32
+ onLogged?.(id);
33
+ }
34
+ function logFailure(hippoRoot, tenantId, payload, lesson, outcome) {
35
+ const hash = (s) => (s === null ? null : failureHash(s));
36
+ return recordFailureAt(hippoRoot, {
37
+ tenantId,
38
+ sessionId: payloadString(payload, 'session_id'),
39
+ tool: payloadString(payload, 'tool_name'),
40
+ outcome,
41
+ rule: 'rule' in lesson ? lesson.rule : null,
42
+ sigHash: hash(lesson.text),
43
+ detailHash: hash(lesson.detail),
44
+ });
40
45
  }
41
46
  export function storeLesson(hippoRoot, tenantId, text, caller) {
42
47
  const sig = failureSignature(text);
@@ -35,7 +35,9 @@ export function patchPaths(body) {
35
35
  }
36
36
  return paths.filter(Boolean);
37
37
  }
38
- const HEREDOC = /^\s*(?:cd\s+(?<cd>'[^']*'|"[^"]*"|[^\s'"&|;]+)\s+&&\s+)?(?:apply_patch|applypatch)\s+<<\s*(?<q>['"]?)(?<tag>\w+)\k<q>[ \t]*\r?\n(?<body>[\s\S]*?)\r?\n\s*\k<tag>\s*$/;
38
+ const HEREDOC = new RegExp(String.raw `^\s*(?:cd\s+(?<cd>'[^']*'|"[^"]*"|[^\s'"&|;]+)\s+&&\s+)?` +
39
+ String.raw `(?:apply_patch|applypatch)\s+<<\s*(?<q>['"]?)(?<tag>\w+)\k<q>[ \t]*\r?\n` +
40
+ String.raw `(?<body>[\s\S]*?)\r?\n\s*\k<tag>\s*$`);
39
41
  /** The script a shell argv runs, for the shells Codex checks for an apply_patch heredoc. */
40
42
  function shellScript(argv) {
41
43
  const exe = path.basename(argv[0] ?? '').toLowerCase().replace(/\.exe$/, '');
@@ -12,21 +12,13 @@ export interface CaptureOptions {
12
12
  stdinText?: string;
13
13
  stdinTimedOut?: boolean;
14
14
  sessionTurns?: readonly SessionTurn[];
15
- /**
16
- * Tee stdout/stderr to this log file while capture runs. Mirrors the
17
- * pattern used by `hippo sleep --log-file` so the SessionEnd hook output
18
- * (invisible during TUI teardown) can be surfaced via `hippo last-sleep`
19
- * on the next session start. Appends rather than truncates — `hippo sleep`
20
- * writes the same file first in the SessionEnd sequence.
21
- */
15
+ /** Tee stdout/stderr to this log file while capture runs, so SessionEnd output (lost in TUI teardown) shows via `hippo last-sleep`.
16
+ * Appends, because `hippo sleep` writes the same file first. */
22
17
  logFile?: string;
23
18
  dryRun: boolean;
24
19
  global: boolean;
25
- /**
26
- * Tenant scope for the dedup read in `cmdCaptureCore`. When provided
27
- * AND `global` is false, the dedup check only considers this tenant's
28
- * existing memories. Undefined means host-wide dedup. Ignored when `global: true` (global captures are host-wide).
29
- */
20
+ /** Tenant scope for the dedup read in `cmdCaptureCore`: when set and `global` is false, only this tenant's memories count.
21
+ * Undefined means host-wide dedup; ignored when `global: true`. */
30
22
  tenantId?: string;
31
23
  /** The session's project: rows are stamped with its id, and dedup reads its rows under either name. */
32
24
  originProject?: ProjectRef;