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,39 +1,36 @@
1
1
  // Verbs that weaken, suppress or retire memories: outcome, forget, conflicts, reject, dormant, quarantine, invalidate.
2
+ import { truncateWithEllipsis } from '../util/ellipsize.js';
2
3
  import * as path from 'path';
3
- import { readEntry } from '../store/entry-reads.js';
4
- import { listMemoryConflicts, resolveConflict } from '../store/conflicts.js';
5
- import { rejectValue, unrejectValue, listRejectionsForTenant } from '../trust/reject-flow.js';
6
- import { RejectedValueError } from '../store/rejection.js';
4
+ import { unrejectValue, listRejectionsForTenant } from '../trust/reject-flow.js';
5
+ import { RejectedValueError } from '../core/api-errors.js';
7
6
  import { loadConfig } from '../core/config.js';
7
+ import { RawAppendOnlyError } from '../core/raw-append-only.js';
8
8
  import { isGitRepo } from '../learn/autolearn.js';
9
- import { invalidateMatching } from '../learn/invalidation.js';
10
9
  import * as api from '../api/index.js';
10
+ import { getMemory } from '../api/memories.js';
11
11
  import * as client from './client.js';
12
- import { resolveTenantId } from '../store/tenant.js';
12
+ import { cliApiContext } from './api-context.js';
13
13
  import { printError } from './output.js';
14
- import { parseCountFlag, boolFlag, flagIsTrue, stringFlag } from './flag-values.js';
14
+ import { parseCountFlag, boolFlag, flagIsTrue, nonEmptyStringFlag, stringFlag } from './flag-values.js';
15
15
  import { requireInit, runChurnStaleForRepo, runViaServerIfAvailable, resolveAuthRoot } from './shared.js';
16
16
  import { fmt } from './print.js';
17
17
  import { errorMessage } from '../util/log.js';
18
18
  import { DIGEST_DISPLAY_CHARS, CONTENT_PREVIEW_CHARS, DATE_PREFIX_CHARS } from '../util/token-text.js';
19
+ import { CliExit } from './exit.js';
19
20
  const CONFLICT_PREVIEW_CHARS = 120;
20
21
  const REJECTED_DIGEST_LIST_CHARS = 16;
21
22
  const DORMANT_PREVIEW_CHARS = 100;
22
23
  const STRENGTH_DECIMALS = 3;
23
- export function cmdOutcome(hippoRoot, flags) {
24
+ export function handleOutcome({ hippoRoot, tenantId, flags }) {
24
25
  requireInit(hippoRoot);
25
26
  const good = boolFlag(flags, 'good');
26
27
  const bad = boolFlag(flags, 'bad');
27
28
  if (!good && !bad) {
28
29
  printError('Specify --good or --bad');
29
- process.exit(1);
30
+ throw new CliExit(1);
30
31
  }
31
32
  // Through api.outcome so every CLI outcome writes one audit_log row per id, as the MCP path does.
32
- const ctx = {
33
- hippoRoot,
34
- tenantId: resolveTenantId({}),
35
- actor: api.adminActor('cli'),
36
- };
33
+ const ctx = cliApiContext(hippoRoot, tenantId);
37
34
  const specificId = flags['id'] ? String(flags['id']) : null;
38
35
  let updated;
39
36
  if (specificId) {
@@ -51,16 +48,11 @@ export function cmdOutcome(hippoRoot, flags) {
51
48
  }
52
49
  // Shared between the forget dispatch and cmdForget so the message can't drift.
53
50
  const ARCHIVE_REASON_REQUIRED = 'hippo forget --archive requires --reason "<why>" (recorded on the archive).';
54
- function cmdForget(hippoRoot, id, flags) {
51
+ function cmdForget(hippoRoot, tenantId, id, flags) {
55
52
  requireInit(hippoRoot);
56
- const ctx = {
57
- hippoRoot,
58
- tenantId: resolveTenantId({}),
59
- actor: api.adminActor('cli'),
60
- };
61
- // Raw memories (Slack / GitHub connector ingestion) are append-only: a
62
- // BEFORE-DELETE trigger aborts any delete. archiveRaw is the sanctioned
63
- // removal path; it records ctx.actor as the archiver for provenance.
53
+ const ctx = cliApiContext(hippoRoot, tenantId);
54
+ // Raw memories (connector ingestion) are append-only: a BEFORE-DELETE trigger aborts any delete,
55
+ // so archiveRaw is the sanctioned removal path and records ctx.actor as the archiver.
64
56
  if (flagIsTrue(flags, 'archive')) {
65
57
  archiveForgottenRaw(ctx, id, stringFlag(flags, 'reason') ?? null);
66
58
  return;
@@ -70,14 +62,14 @@ function cmdForget(hippoRoot, id, flags) {
70
62
  console.log(`Forgot ${id}`);
71
63
  }
72
64
  catch (err) {
73
- reportForgetFailure(ctx, id, errorMessage(err));
74
- process.exit(1);
65
+ reportForgetFailure(ctx, id, err);
66
+ throw new CliExit(1);
75
67
  }
76
68
  }
77
69
  function archiveForgottenRaw(ctx, id, reason) {
78
70
  if (!reason) {
79
71
  printError(ARCHIVE_REASON_REQUIRED);
80
- process.exit(1);
72
+ throw new CliExit(1);
81
73
  }
82
74
  try {
83
75
  api.archiveRaw(ctx, id, reason);
@@ -85,11 +77,11 @@ function archiveForgottenRaw(ctx, id, reason) {
85
77
  }
86
78
  catch (err) {
87
79
  printError(`Could not archive ${id}: ${errorMessage(err)}`);
88
- process.exit(1);
80
+ throw new CliExit(1);
89
81
  }
90
82
  }
91
- function reportForgetFailure(ctx, id, msg) {
92
- if (/append-only/i.test(msg)) {
83
+ function reportForgetFailure(ctx, id, cause) {
84
+ if (cause instanceof RawAppendOnlyError) {
93
85
  // The delete was refused by the append-only trigger — this is a raw
94
86
  // memory, not a missing one. Point the user at the archive path.
95
87
  printError(rawForgetRefusal(id));
@@ -108,27 +100,27 @@ function rawForgetRefusal(id) {
108
100
  return `Cannot forget ${id}: it is a raw, append-only memory. Archive it instead: hippo forget ${id} --archive --reason "<why>"`;
109
101
  }
110
102
  // Refuses exactly where the real run would, so "Would forget" is a promise, not a guess.
111
- function previewForget(hippoRoot, id, archive) {
103
+ async function previewForget(hippoRoot, tenantId, id, archive) {
112
104
  requireInit(hippoRoot);
113
- const entry = readEntry(hippoRoot, id, resolveTenantId({}));
105
+ const entry = await getMemory(cliApiContext(hippoRoot, tenantId), id);
114
106
  if (!entry) {
115
107
  printError(`Memory not found: ${id}`);
116
- process.exit(1);
108
+ throw new CliExit(1);
117
109
  }
118
110
  if (!archive && entry.kind === 'raw') {
119
111
  printError(rawForgetRefusal(id));
120
- process.exit(1);
112
+ throw new CliExit(1);
121
113
  }
122
114
  if (archive && entry.kind !== 'raw') {
123
115
  printError(`Could not archive ${id}: memory ${id} is not raw (kind=${entry.kind})`);
124
- process.exit(1);
116
+ throw new CliExit(1);
125
117
  }
126
- const snippet = entry.content.length > CONTENT_PREVIEW_CHARS ? `${entry.content.slice(0, CONTENT_PREVIEW_CHARS)}...` : entry.content;
118
+ const snippet = truncateWithEllipsis(entry.content, CONTENT_PREVIEW_CHARS);
127
119
  console.log(`Would ${archive ? 'archive' : 'forget'} ${id} (dry run, nothing changed): "${snippet}"`);
128
120
  }
129
- export function cmdConflicts(hippoRoot, flags) {
121
+ export function handleConflicts({ hippoRoot, tenantId, flags }) {
130
122
  requireInit(hippoRoot);
131
- const conflicts = listMemoryConflicts(hippoRoot, String(flags['status'] ?? 'open'));
123
+ const conflicts = api.listConflicts(cliApiContext(hippoRoot, tenantId), String(flags['status'] ?? 'open'), { everyTenant: true });
132
124
  if (flags['json']) {
133
125
  console.log(JSON.stringify({ conflicts }, null, 2));
134
126
  return;
@@ -146,43 +138,43 @@ export function cmdConflicts(hippoRoot, flags) {
146
138
  }
147
139
  }
148
140
  /** Shown when --keep is missing, to help the user decide. */
149
- function showConflictForResolve(hippoRoot, conflictId, tenantId) {
150
- const conflicts = listMemoryConflicts(hippoRoot, 'open', tenantId);
141
+ async function showConflictForResolve(hippoRoot, conflictId, tenantId) {
142
+ const conflicts = api.listConflicts(cliApiContext(hippoRoot, tenantId), 'open');
151
143
  const conflict = conflicts.find((c) => c.id === conflictId);
152
144
  if (!conflict) {
153
145
  printError(`Conflict ${conflictId} not found or already resolved.`);
154
- process.exit(1);
146
+ throw new CliExit(1);
155
147
  }
156
148
  console.log(`Conflict ${conflictId}:`);
157
149
  console.log(` ${conflict.memory_a_id} <-> ${conflict.memory_b_id}`);
158
150
  console.log(` Reason: ${conflict.reason}`);
159
151
  console.log('');
160
- const entryA = readEntry(hippoRoot, conflict.memory_a_id, tenantId);
161
- const entryB = readEntry(hippoRoot, conflict.memory_b_id, tenantId);
152
+ const ctx = cliApiContext(hippoRoot, tenantId);
153
+ const entryA = await getMemory(ctx, conflict.memory_a_id);
154
+ const entryB = await getMemory(ctx, conflict.memory_b_id);
162
155
  if (entryA) {
163
156
  console.log(` [A] ${conflict.memory_a_id}:`);
164
- console.log(` ${entryA.content.slice(0, CONFLICT_PREVIEW_CHARS)}${entryA.content.length > CONFLICT_PREVIEW_CHARS ? '...' : ''}`);
157
+ console.log(` ${truncateWithEllipsis(entryA.content, CONFLICT_PREVIEW_CHARS)}`);
165
158
  }
166
159
  if (entryB) {
167
160
  console.log(` [B] ${conflict.memory_b_id}:`);
168
- console.log(` ${entryB.content.slice(0, CONFLICT_PREVIEW_CHARS)}${entryB.content.length > CONFLICT_PREVIEW_CHARS ? '...' : ''}`);
161
+ console.log(` ${truncateWithEllipsis(entryB.content, CONFLICT_PREVIEW_CHARS)}`);
169
162
  }
170
163
  console.log('');
171
164
  console.log(`Resolve with: hippo resolve ${conflictId} --keep <memory_id> [--forget] [--reject-loser [--reason "<why>"]]`);
172
165
  }
173
- export function cmdResolve(hippoRoot, args, flags) {
166
+ export async function handleResolve({ hippoRoot, tenantId, args, flags }) {
174
167
  requireInit(hippoRoot);
175
168
  const rawId = args[0] ?? '';
176
169
  // Accept "42" or "conflict_42"
177
170
  const conflictId = parseInt(rawId.replace(/^conflict_/, ''), 10);
178
171
  if (isNaN(conflictId)) {
179
172
  printError('Usage: hippo resolve <conflict_id> --keep <memory_id> [--forget]');
180
- process.exit(1);
173
+ throw new CliExit(1);
181
174
  }
182
- const tenantId = resolveTenantId({});
183
175
  const keepId = String(flags['keep'] ?? '').trim();
184
176
  if (!keepId) {
185
- showConflictForResolve(hippoRoot, conflictId, tenantId);
177
+ await showConflictForResolve(hippoRoot, conflictId, tenantId);
186
178
  return;
187
179
  }
188
180
  const forgetLoser = boolFlag(flags, 'forget');
@@ -190,14 +182,12 @@ export function cmdResolve(hippoRoot, args, flags) {
190
182
  // --reason is optional here, unlike `hippo reject`: resolve already has the conflict id and keepId.
191
183
  const rejectLoser = boolFlag(flags, 'reject-loser');
192
184
  const reasonFlag = stringFlag(flags, 'reason');
193
- const result = resolveConflict(hippoRoot, conflictId, keepId, forgetLoser, tenantId, {
194
- rejectLoserValue: rejectLoser,
185
+ const result = api.resolveMemoryConflict(cliApiContext(hippoRoot, tenantId), conflictId, {
186
+ keepId,
187
+ forget: forgetLoser,
188
+ rejectLoser,
195
189
  reason: reasonFlag,
196
190
  });
197
- if (!result) {
198
- printError(`Could not resolve conflict ${conflictId}. Check the ID and --keep value.`);
199
- process.exit(1);
200
- }
201
191
  const action = rejectLoser
202
192
  ? 'rejected (tombstoned) and removed'
203
193
  : forgetLoser
@@ -205,37 +195,31 @@ export function cmdResolve(hippoRoot, args, flags) {
205
195
  : 'weakened (half-life halved)';
206
196
  console.log(`Resolved conflict ${conflictId}: kept ${keepId}, ${action} ${result.loserId}`);
207
197
  }
208
- // ---------------------------------------------------------------------------
209
198
  // reject / rejections / unreject
210
- // ---------------------------------------------------------------------------
211
- export function cmdReject(hippoRoot, args, flags) {
199
+ export function handleReject({ hippoRoot, tenantId, args, flags }) {
212
200
  // Store resolution mirrors `hippo remember`: --global writes to the
213
201
  // global store, otherwise the local store (requireInit'd via resolveAuthRoot).
214
202
  const root = resolveAuthRoot(hippoRoot, flags);
215
- const tenantId = resolveTenantId({});
216
203
  // --reason is REQUIRED: the tombstone stores no content, so reason is its only human-readable identity.
217
204
  const reason = (stringFlag(flags, 'reason') ?? '').trim();
218
205
  if (!reason) {
219
206
  printError('hippo reject requires --reason "<why>" (the tombstone stores no content; reason is its only identity).');
220
- process.exit(1);
207
+ throw new CliExit(1);
221
208
  }
222
209
  const valueFlag = stringFlag(flags, 'value');
223
210
  const memoryId = args[0];
224
211
  if (!memoryId && valueFlag === undefined) {
225
212
  printError('Usage: hippo reject <memory-id> --reason "<why>"');
226
213
  printError(' or: hippo reject --value "<text>" --reason "<why>"');
227
- process.exit(1);
214
+ throw new CliExit(1);
228
215
  }
229
216
  if (memoryId && valueFlag !== undefined) {
230
217
  // Ambiguous ask: silently preferring one form would ignore the other without feedback.
231
218
  printError('hippo reject takes EITHER a memory id OR --value, not both.');
232
- process.exit(1);
219
+ throw new CliExit(1);
233
220
  }
234
221
  try {
235
- const result = rejectValue({
236
- hippoRoot: root,
237
- tenantId,
238
- actor: 'cli',
222
+ const result = api.rejectOnHost(cliApiContext(root, tenantId), {
239
223
  reason,
240
224
  memoryId: valueFlag === undefined ? memoryId : undefined,
241
225
  value: valueFlag,
@@ -244,12 +228,12 @@ export function cmdReject(hippoRoot, args, flags) {
244
228
  }
245
229
  catch (err) {
246
230
  printError(`Could not reject: ${errorMessage(err)}`);
247
- process.exit(1);
231
+ throw new CliExit(1);
248
232
  }
249
233
  }
250
234
  function printRejected(result, reason) {
251
235
  const digestPrefix = result.digest.slice(0, DIGEST_DISPLAY_CHARS);
252
- const preview = result.content.length > CONTENT_PREVIEW_CHARS ? `${result.content.slice(0, CONTENT_PREVIEW_CHARS)}...` : result.content;
236
+ const preview = truncateWithEllipsis(result.content, CONTENT_PREVIEW_CHARS);
253
237
  console.log(`Rejected [${digestPrefix}...]: "${preview}"`);
254
238
  console.log(` Reason: ${reason}`);
255
239
  if (result.removedIds.length > 0) {
@@ -265,9 +249,8 @@ function printRejected(result, reason) {
265
249
  console.log(' No live rows matched (pre-emptive tombstone).');
266
250
  }
267
251
  }
268
- export function cmdRejections(hippoRoot, flags) {
252
+ export function handleRejections({ hippoRoot, tenantId, flags }) {
269
253
  const root = resolveAuthRoot(hippoRoot, flags);
270
- const tenantId = resolveTenantId({});
271
254
  const rows = listRejectionsForTenant(root, tenantId);
272
255
  if (flags['json']) {
273
256
  console.log(JSON.stringify({ rejections: rows }, null, 2));
@@ -290,41 +273,32 @@ export function cmdRejections(hippoRoot, flags) {
290
273
  console.log('');
291
274
  }
292
275
  }
293
- export function cmdUnreject(hippoRoot, args, flags) {
276
+ export function handleUnreject({ hippoRoot, tenantId, args, flags }) {
294
277
  const root = resolveAuthRoot(hippoRoot, flags);
295
- const tenantId = resolveTenantId({});
296
278
  const digestOrPrefix = (args[0] ?? '').trim();
297
279
  if (!digestOrPrefix) {
298
280
  printError('Usage: hippo unreject <digest-or-prefix>');
299
- process.exit(1);
281
+ throw new CliExit(1);
300
282
  }
301
283
  const outcome = unrejectValue(root, tenantId, digestOrPrefix, 'cli');
302
284
  if (outcome.status === 'not_found') {
303
285
  printError(`No rejected value matches "${digestOrPrefix}". Run \`hippo rejections\` to list tombstones.`);
304
- process.exit(1);
286
+ throw new CliExit(1);
305
287
  }
306
288
  if (outcome.status === 'ambiguous') {
307
289
  printError(`"${digestOrPrefix}" matches ${outcome.candidates.length} tombstones. Use a longer prefix:`);
308
290
  for (const c of outcome.candidates) {
309
291
  printError(` ${c.digest.slice(0, REJECTED_DIGEST_LIST_CHARS)}... ${c.reason ?? 'none given'}`);
310
292
  }
311
- process.exit(1);
293
+ throw new CliExit(1);
312
294
  }
313
295
  console.log(`Unrejected [${outcome.digest.slice(0, DIGEST_DISPLAY_CHARS)}...] (was: ${outcome.reason ?? 'none given'})`);
314
296
  }
315
- /**
316
- * `hippo dormant [list] [<query>...] [--limit <n>] [--json] [--global]`,
317
- * `hippo dormant restore <id>`, `hippo dormant forget <id>`.
318
- * Dormant memories are what sleep keeps instead of deleting (on by default;
319
- * `"dormant": { "enabled": false }` in .hippo/config.json deletes instead).
320
- */
321
- export function cmdDormant(hippoRoot, args, flags) {
297
+ /** `hippo dormant [list|restore <id>|forget <id>]`: dormant memories are what sleep keeps instead of deleting
298
+ * (on by default; `"dormant": { "enabled": false }` in .hippo/config.json deletes instead). */
299
+ export function handleDormant({ hippoRoot, tenantId, args, flags }) {
322
300
  const root = resolveAuthRoot(hippoRoot, flags);
323
- const ctx = {
324
- hippoRoot: root,
325
- tenantId: resolveTenantId({}),
326
- actor: api.adminActor('cli'),
327
- };
301
+ const ctx = cliApiContext(root, tenantId);
328
302
  const sub = args[0];
329
303
  if (sub === 'restore' || sub === 'forget') {
330
304
  changeDormant(ctx, sub, (args[1] ?? '').trim());
@@ -345,7 +319,7 @@ export function cmdDormant(hippoRoot, args, flags) {
345
319
  function changeDormant(ctx, sub, id) {
346
320
  if (!id) {
347
321
  printError(`Usage: hippo dormant ${sub} <id>`);
348
- process.exit(1);
322
+ throw new CliExit(1);
349
323
  }
350
324
  try {
351
325
  if (sub === 'restore') {
@@ -364,7 +338,7 @@ function changeDormant(ctx, sub, id) {
364
338
  else {
365
339
  printError(`Could not ${sub} ${id}: ${errorMessage(err)}`);
366
340
  }
367
- process.exit(1);
341
+ throw new CliExit(1);
368
342
  }
369
343
  }
370
344
  function printDormantRows(rows, hasQuery, root) {
@@ -377,22 +351,20 @@ function printDormantRows(rows, hasQuery, root) {
377
351
  }
378
352
  console.log(`${rows.length} dormant memor${rows.length === 1 ? 'y' : 'ies'}${hasQuery ? ' matching' : ''} (newest first):\n`);
379
353
  for (const row of rows) {
380
- const preview = row.content.length > DORMANT_PREVIEW_CHARS ? `${row.content.slice(0, DORMANT_PREVIEW_CHARS)}...` : row.content;
354
+ const preview = truncateWithEllipsis(row.content, DORMANT_PREVIEW_CHARS);
381
355
  console.log(`--- ${row.id}`);
382
356
  console.log(` ${preview}`);
383
- console.log(` Dormant since ${row.dormantAt.slice(0, DATE_PREFIX_CHARS)} (${row.reason}, strength ${row.strength.toFixed(STRENGTH_DECIMALS)})${row.tags.length > 0 ? ` tags: ${row.tags.join(', ')}` : ''}`);
357
+ console.log(` Dormant since ${row.dormantAt.slice(0, DATE_PREFIX_CHARS)} ` +
358
+ `(${row.reason}, strength ${row.strength.toFixed(STRENGTH_DECIMALS)})` +
359
+ `${row.tags.length > 0 ? ` tags: ${row.tags.join(', ')}` : ''}`);
384
360
  console.log('');
385
361
  }
386
362
  console.log('Bring one back: hippo dormant restore <id> Delete for good: hippo dormant forget <id>');
387
363
  }
388
364
  /** `hippo quarantine [list] [--all] [--json] [--global]`, `quarantine approve <id>`, `quarantine reject <id>` (poisoning defence). */
389
- export async function cmdQuarantine(hippoRoot, args, flags) {
365
+ export async function handleQuarantine({ hippoRoot, tenantId, args, flags }) {
390
366
  const root = resolveAuthRoot(hippoRoot, flags);
391
- const ctx = {
392
- hippoRoot: root,
393
- tenantId: resolveTenantId({}),
394
- actor: api.adminActor('cli'),
395
- };
367
+ const ctx = cliApiContext(root, tenantId);
396
368
  const sub = args[0];
397
369
  if (sub === 'approve' || sub === 'reject') {
398
370
  await decideQuarantined(ctx, sub, (args[1] ?? '').trim());
@@ -413,7 +385,7 @@ export async function cmdQuarantine(hippoRoot, args, flags) {
413
385
  async function decideQuarantined(ctx, sub, id) {
414
386
  if (!id) {
415
387
  printError(`Usage: hippo quarantine ${sub} <id>`);
416
- process.exit(1);
388
+ throw new CliExit(1);
417
389
  }
418
390
  try {
419
391
  if (sub === 'approve') {
@@ -427,7 +399,7 @@ async function decideQuarantined(ctx, sub, id) {
427
399
  }
428
400
  catch (err) {
429
401
  printError(`Could not ${sub} ${id}: ${errorMessage(err)}`);
430
- process.exit(1);
402
+ throw new CliExit(1);
431
403
  }
432
404
  }
433
405
  function printQuarantineRows(rows) {
@@ -440,11 +412,11 @@ function printQuarantineRows(rows) {
440
412
  }
441
413
  console.log('Approve: hippo quarantine approve <id> Reject: hippo quarantine reject <id>');
442
414
  }
443
- export async function handleForget({ hippoRoot, args, flags }) {
415
+ export async function handleForget({ hippoRoot, tenantId, args, flags }) {
444
416
  const id = args[0];
445
417
  if (!id) {
446
418
  printError('Please provide a memory ID.');
447
- process.exit(1);
419
+ throw new CliExit(1);
448
420
  }
449
421
  // Archive has its own HTTP route (POST /v1/memories/:id/archive); route
450
422
  // both branches the same way the direct path does.
@@ -452,10 +424,10 @@ export async function handleForget({ hippoRoot, args, flags }) {
452
424
  const reason = stringFlag(flags, 'reason') ?? null;
453
425
  if (archive && !reason) {
454
426
  printError(ARCHIVE_REASON_REQUIRED);
455
- process.exit(1);
427
+ throw new CliExit(1);
456
428
  }
457
429
  if (flagIsTrue(flags, 'dry-run')) {
458
- previewForget(hippoRoot, id, archive);
430
+ await previewForget(hippoRoot, tenantId, id, archive);
459
431
  return;
460
432
  }
461
433
  const routed = await runViaServerIfAvailable(hippoRoot, async (info, apiKey) => {
@@ -472,30 +444,30 @@ export async function handleForget({ hippoRoot, args, flags }) {
472
444
  catch (err) {
473
445
  // A server that died after the health probe is the caller's transport
474
446
  // fallback to handle, not an error to report to the user.
475
- if (client.classifyTransportFailure(err) !== 'none')
447
+ if (err instanceof Error && client.classifyTransportFailure(err) !== 'none')
476
448
  throw err;
477
449
  const msg = errorMessage(err);
478
450
  printError(archive ? `Could not archive ${id}: ${msg}` : msg);
479
- process.exit(1);
451
+ throw new CliExit(1);
480
452
  }
481
453
  });
482
454
  if (routed)
483
455
  return;
484
- cmdForget(hippoRoot, id, flags);
456
+ cmdForget(hippoRoot, tenantId, id, flags);
485
457
  }
486
- function invalidateChurn(hippoRoot, args, flags) {
458
+ function invalidateChurn(hippoRoot, tenantId, args, flags) {
487
459
  if (args[0] || flags['id'] !== undefined) {
488
460
  printError('Usage: hippo invalidate --churn [--dry-run]');
489
461
  printError('--churn takes no pattern or --id.');
490
- process.exit(1);
462
+ throw new CliExit(1);
491
463
  }
492
464
  if (!isGitRepo(process.cwd())) {
493
465
  printError('hippo invalidate --churn must run inside a git repository.');
494
- process.exit(1);
466
+ throw new CliExit(1);
495
467
  }
496
468
  const churnDryRun = flagIsTrue(flags, 'dry-run');
497
469
  let churnFailed = false;
498
- for (const { root, result } of runChurnStaleForRepo(hippoRoot, churnDryRun)) {
470
+ for (const { root, result } of runChurnStaleForRepo(hippoRoot, tenantId, churnDryRun)) {
499
471
  if (result.error) {
500
472
  printError(`Churn-staleness check failed for ${root}: ${result.error}`);
501
473
  churnFailed = true;
@@ -516,18 +488,18 @@ function invalidateChurn(hippoRoot, args, flags) {
516
488
  }
517
489
  }
518
490
  if (churnFailed)
519
- process.exit(1);
491
+ throw new CliExit(1);
520
492
  }
521
- export function handleInvalidate({ hippoRoot, args, flags }) {
493
+ export function handleInvalidate({ hippoRoot, tenantId, args, flags }) {
522
494
  requireInit(hippoRoot);
523
495
  if (flagIsTrue(flags, 'churn'))
524
- return invalidateChurn(hippoRoot, args, flags);
496
+ return invalidateChurn(hippoRoot, tenantId, args, flags);
525
497
  const target = args[0];
526
498
  if (flagIsTrue(flags, 'id')) {
527
499
  // Value-less --id must never silently fall through to pattern mode
528
500
  // (pattern mode writes broadly; an ignored --id reverses user intent).
529
501
  printError('--id requires a memory id');
530
- process.exit(1);
502
+ throw new CliExit(1);
531
503
  }
532
504
  const onlyId = stringFlag(flags, 'id');
533
505
  const dryRun = flagIsTrue(flags, 'dry-run');
@@ -535,15 +507,15 @@ export function handleInvalidate({ hippoRoot, args, flags }) {
535
507
  printError('Usage: hippo invalidate "<old pattern>" [--dry-run] [--reason "<why>"]');
536
508
  printError(' hippo invalidate --id <memory-id> [--dry-run] [--reason "<why>"]');
537
509
  printError('Pass a pattern OR --id, not both. Tag matching is EXACT: the full pattern must equal a tag.');
538
- process.exit(1);
510
+ throw new CliExit(1);
539
511
  }
540
- const reason = (flags['reason'] || null);
512
+ const reason = nonEmptyStringFlag(flags, 'reason') ?? null;
541
513
  const invTarget = {
542
514
  from: target ?? `id:${onlyId}`,
543
515
  to: reason,
544
516
  type: 'migration',
545
517
  };
546
- const result = invalidateMatching(hippoRoot, invTarget, resolveTenantId({}), { dryRun, onlyId });
518
+ const result = api.invalidateMemories(cliApiContext(hippoRoot, tenantId), invTarget, { dryRun, onlyId });
547
519
  const label = target ? `"${target}"` : `--id ${onlyId}`;
548
520
  if (result.dryRun) {
549
521
  if (result.invalidated === 0) {
package/dist/cli/dag.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { type CliFlags, type CommandContext } from './flag-values.js';
2
- export declare function cmdDag(hippoRoot: string, flags: CliFlags): void;
3
- export declare function handleDrill({ hippoRoot, args, flags }: CommandContext): Promise<void>;
4
- export declare function handleAssemble({ hippoRoot, args, flags }: CommandContext): Promise<void>;
1
+ import { type CommandContext } from './flag-values.js';
2
+ export declare function handleDag({ hippoRoot, tenantId, flags }: CommandContext): void;
3
+ export declare function handleDrill({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
4
+ export declare function handleAssemble({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
5
5
  //# sourceMappingURL=dag.d.ts.map