hippo-memory 2.0.0 → 2.1.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 (965) hide show
  1. package/dist/agent-memories/apply.d.ts +7 -5
  2. package/dist/agent-memories/apply.js +66 -39
  3. package/dist/agent-memories/claude-code.d.ts +8 -2
  4. package/dist/agent-memories/claude-code.js +26 -7
  5. package/dist/agent-memories/copilot.js +2 -1
  6. package/dist/agent-memories/files.js +2 -1
  7. package/dist/agent-memories/legacy.d.ts +6 -3
  8. package/dist/agent-memories/legacy.js +35 -14
  9. package/dist/agent-memories/markdown.d.ts +3 -1
  10. package/dist/agent-memories/markdown.js +3 -1
  11. package/dist/agent-memories/openclaw.js +5 -2
  12. package/dist/agent-memories/plan.js +11 -1
  13. package/dist/agent-memories/project-folds.js +2 -1
  14. package/dist/agent-memories/report.d.ts +4 -1
  15. package/dist/agent-memories/report.js +43 -9
  16. package/dist/agent-memories/source.d.ts +8 -2
  17. package/dist/agent-memories/source.js +11 -3
  18. package/dist/agent-memories/sync.d.ts +7 -2
  19. package/dist/agent-memories/sync.js +141 -101
  20. package/dist/api/assemble.d.ts +6 -4
  21. package/dist/api/assemble.js +11 -6
  22. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  23. package/dist/api/{audit.js → auth/audit.js} +11 -11
  24. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
  25. package/dist/api/{auth.js → auth/auth.js} +46 -29
  26. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  27. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
  28. package/dist/api/auth/session-owners.d.ts +10 -0
  29. package/dist/api/auth/session-owners.js +35 -0
  30. package/dist/api/availability.d.ts +3 -1
  31. package/dist/api/availability.js +3 -1
  32. package/dist/api/busy.d.ts +2 -0
  33. package/dist/api/busy.js +2 -0
  34. package/dist/api/cli-surface.d.ts +6 -0
  35. package/dist/api/cli-surface.js +6 -0
  36. package/dist/api/config-of.d.ts +5 -0
  37. package/dist/api/config-of.js +6 -0
  38. package/dist/api/context-auto.d.ts +4 -1
  39. package/dist/api/context-auto.js +10 -2
  40. package/dist/api/context-render.js +14 -7
  41. package/dist/api/context-select.d.ts +4 -1
  42. package/dist/api/context-select.js +23 -14
  43. package/dist/api/context-types.d.ts +38 -12
  44. package/dist/api/context.d.ts +8 -5
  45. package/dist/api/context.js +112 -57
  46. package/dist/api/continuity.d.ts +24 -21
  47. package/dist/api/continuity.js +18 -20
  48. package/dist/api/correction-latency.d.ts +3 -1
  49. package/dist/api/correction-latency.js +3 -1
  50. package/dist/api/error-reply.d.ts +4 -1
  51. package/dist/api/error-reply.js +12 -3
  52. package/dist/api/index.d.ts +39 -23
  53. package/dist/api/index.js +21 -23
  54. package/dist/api/instruction-detect.d.ts +4 -1
  55. package/dist/api/instruction-detect.js +75 -20
  56. package/dist/api/ledger-db.d.ts +15 -11
  57. package/dist/api/ledger-db.js +21 -23
  58. package/dist/api/memories/conflicts.d.ts +33 -0
  59. package/dist/api/memories/conflicts.js +67 -0
  60. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  61. package/dist/api/{forget.js → memories/forget.js} +22 -15
  62. package/dist/api/memories/memories.d.ts +27 -0
  63. package/dist/api/{memories.js → memories/memories.js} +16 -21
  64. package/dist/api/memories/outcome.d.ts +22 -0
  65. package/dist/api/{outcome.js → memories/outcome.js} +14 -8
  66. package/dist/api/memories/promote.d.ts +40 -0
  67. package/dist/api/{promote.js → memories/promote.js} +35 -22
  68. package/dist/api/memories/refine.d.ts +10 -0
  69. package/dist/api/memories/refine.js +12 -0
  70. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
  71. package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
  72. package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
  73. package/dist/api/{remember.js → memories/remember.js} +42 -26
  74. package/dist/api/objects/cards.d.ts +39 -0
  75. package/dist/api/{cards.js → objects/cards.js} +12 -14
  76. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  77. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
  78. package/dist/api/objects/goals.d.ts +18 -0
  79. package/dist/api/{goals.js → objects/goals.js} +12 -12
  80. package/dist/api/objects/graph.d.ts +11 -0
  81. package/dist/api/objects/graph.js +16 -0
  82. package/dist/api/objects/objects.d.ts +9 -0
  83. package/dist/api/{objects.js → objects/objects.js} +2 -4
  84. package/dist/api/objects/predictions.d.ts +11 -0
  85. package/dist/api/{predictions.js → objects/predictions.js} +7 -6
  86. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  87. package/dist/api/{projects.js → objects/projects.js} +8 -4
  88. package/dist/api/pilot-arm.d.ts +8 -4
  89. package/dist/api/pilot-arm.js +5 -4
  90. package/dist/api/prompt-hook.d.ts +32 -19
  91. package/dist/api/prompt-hook.js +65 -44
  92. package/dist/api/provenance-coverage.d.ts +3 -1
  93. package/dist/api/provenance-coverage.js +3 -1
  94. package/dist/api/recall/finish.d.ts +185 -0
  95. package/dist/api/recall/finish.js +301 -0
  96. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  97. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
  98. package/dist/api/recall/recall.d.ts +6 -0
  99. package/dist/api/{recall.js → recall/recall.js} +101 -60
  100. package/dist/api/recall/render.d.ts +39 -0
  101. package/dist/api/recall/render.js +60 -0
  102. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  103. package/dist/api/recall/request.js +261 -0
  104. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  105. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  106. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
  107. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  108. package/dist/api/session-end.d.ts +16 -12
  109. package/dist/api/session-end.js +46 -30
  110. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  111. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  112. package/dist/api/sleep/dormant.d.ts +25 -0
  113. package/dist/api/sleep/dormant.js +64 -0
  114. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  115. package/dist/api/sleep/learn.js +138 -0
  116. package/dist/api/sleep/sleep-run.d.ts +38 -0
  117. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
  118. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  119. package/dist/api/sleep/sleep.js +9 -0
  120. package/dist/api/status.d.ts +3 -1
  121. package/dist/api/status.js +3 -1
  122. package/dist/api/store-init.d.ts +4 -1
  123. package/dist/api/store-init.js +4 -1
  124. package/dist/api/tokens.d.ts +10 -9
  125. package/dist/api/tokens.js +9 -10
  126. package/dist/api/types.d.ts +28 -7
  127. package/dist/api/types.js +13 -4
  128. package/dist/capture/caller-session.d.ts +8 -2
  129. package/dist/capture/caller-session.js +16 -6
  130. package/dist/capture/capture-error.d.ts +3 -1
  131. package/dist/capture/capture-error.js +3 -1
  132. package/dist/capture/codex-patch.js +7 -2
  133. package/dist/capture/command.d.ts +4 -2
  134. package/dist/capture/command.js +33 -14
  135. package/dist/capture/compact-resume-caller.js +15 -8
  136. package/dist/capture/compact.d.ts +8 -5
  137. package/dist/capture/compact.js +34 -23
  138. package/dist/capture/compaction-items-caller.js +9 -3
  139. package/dist/capture/compaction-record.d.ts +4 -3
  140. package/dist/capture/compaction-record.js +20 -12
  141. package/dist/capture/compaction-spool.d.ts +15 -4
  142. package/dist/capture/compaction-spool.js +64 -17
  143. package/dist/capture/copilot-transcript.d.ts +11 -3
  144. package/dist/capture/copilot-transcript.js +16 -6
  145. package/dist/capture/extract.js +20 -8
  146. package/dist/capture/failure-caller.js +23 -12
  147. package/dist/capture/failure-reading.d.ts +10 -3
  148. package/dist/capture/failure-reading.js +24 -7
  149. package/dist/capture/pre-compact-caller.js +11 -4
  150. package/dist/capture/session-digest.d.ts +15 -4
  151. package/dist/capture/session-digest.js +39 -13
  152. package/dist/capture/session-end-caller.d.ts +4 -1
  153. package/dist/capture/session-end-caller.js +20 -8
  154. package/dist/capture/session-texts.d.ts +6 -2
  155. package/dist/capture/session-texts.js +22 -7
  156. package/dist/capture/session-worker.d.ts +4 -2
  157. package/dist/capture/session-worker.js +45 -17
  158. package/dist/capture/transcript.d.ts +13 -4
  159. package/dist/capture/transcript.js +32 -10
  160. package/dist/capture/working-state.d.ts +13 -4
  161. package/dist/capture/working-state.js +50 -56
  162. package/dist/cli/api-context.d.ts +14 -2
  163. package/dist/cli/api-context.js +45 -2
  164. package/dist/cli/audit.js +23 -23
  165. package/dist/cli/auth.js +19 -27
  166. package/dist/cli/briefs.d.ts +1 -1
  167. package/dist/cli/briefs.js +20 -15
  168. package/dist/cli/card.d.ts +1 -1
  169. package/dist/cli/card.js +56 -73
  170. package/dist/cli/client.d.ts +12 -4
  171. package/dist/cli/client.js +43 -13
  172. package/dist/cli/compact-resume-payload.d.ts +4 -1
  173. package/dist/cli/compact-resume-payload.js +12 -5
  174. package/dist/cli/context.js +42 -17
  175. package/dist/cli/continuity.d.ts +5 -5
  176. package/dist/cli/continuity.js +90 -107
  177. package/dist/cli/curate.d.ts +4 -3
  178. package/dist/cli/curate.js +46 -68
  179. package/dist/cli/dag.d.ts +1 -1
  180. package/dist/cli/dag.js +14 -17
  181. package/dist/cli/decisions.js +27 -26
  182. package/dist/cli/eval.js +16 -21
  183. package/dist/cli/exit.d.ts +4 -1
  184. package/dist/cli/exit.js +10 -2
  185. package/dist/cli/explain.js +12 -11
  186. package/dist/cli/flag-values.d.ts +1 -1
  187. package/dist/cli/flag-values.js +9 -18
  188. package/dist/cli/github.d.ts +6 -0
  189. package/dist/cli/github.js +25 -13
  190. package/dist/cli/goals.d.ts +1 -1
  191. package/dist/cli/goals.js +39 -56
  192. package/dist/cli/graph.d.ts +1 -1
  193. package/dist/cli/graph.js +15 -11
  194. package/dist/cli/hook-runtime.d.ts +31 -9
  195. package/dist/cli/hook-runtime.js +40 -15
  196. package/dist/cli/incidents.d.ts +1 -1
  197. package/dist/cli/incidents.js +25 -25
  198. package/dist/cli/init.js +26 -11
  199. package/dist/cli/install-steps.d.ts +12 -3
  200. package/dist/cli/install-steps.js +42 -18
  201. package/dist/cli/last-sleep.d.ts +4 -1
  202. package/dist/cli/last-sleep.js +9 -4
  203. package/dist/cli/maintenance.d.ts +1 -1
  204. package/dist/cli/maintenance.js +11 -12
  205. package/dist/cli/notes.d.ts +1 -1
  206. package/dist/cli/notes.js +8 -5
  207. package/dist/cli/object-verbs.d.ts +4 -4
  208. package/dist/cli/object-verbs.js +10 -13
  209. package/dist/cli/open-browser.js +11 -2
  210. package/dist/cli/playbooks.d.ts +3 -3
  211. package/dist/cli/playbooks.js +40 -32
  212. package/dist/cli/predictions.js +15 -19
  213. package/dist/cli/print.js +4 -2
  214. package/dist/cli/projects.js +21 -11
  215. package/dist/cli/quality-repair-once.js +5 -4
  216. package/dist/cli/recall.js +129 -93
  217. package/dist/cli/refine-llm.d.ts +15 -4
  218. package/dist/cli/refine-llm.js +16 -7
  219. package/dist/cli/remember.js +46 -50
  220. package/dist/cli/scheduler.d.ts +4 -1
  221. package/dist/cli/scheduler.js +9 -5
  222. package/dist/cli/serve.js +22 -17
  223. package/dist/cli/session-hooks.d.ts +2 -2
  224. package/dist/cli/session-hooks.js +87 -50
  225. package/dist/cli/setup.js +54 -32
  226. package/dist/cli/shared.d.ts +3 -1
  227. package/dist/cli/shared.js +24 -9
  228. package/dist/cli/slack.js +15 -24
  229. package/dist/cli/sleep-render.d.ts +3 -1
  230. package/dist/cli/sleep-render.js +8 -5
  231. package/dist/cli/sleep.js +14 -6
  232. package/dist/cli/status.d.ts +4 -4
  233. package/dist/cli/status.js +32 -27
  234. package/dist/cli/stdin.d.ts +10 -3
  235. package/dist/cli/stdin.js +10 -3
  236. package/dist/cli/transfer.d.ts +1 -1
  237. package/dist/cli/transfer.js +71 -75
  238. package/dist/cli/verbs/memory.js +8 -6
  239. package/dist/cli/verbs/objects.js +10 -4
  240. package/dist/cli/versioned-verbs.d.ts +8 -7
  241. package/dist/cli/versioned-verbs.js +31 -21
  242. package/dist/cli.js +13 -16
  243. package/dist/connectors/dlq.d.ts +6 -6
  244. package/dist/connectors/dlq.js +12 -8
  245. package/dist/connectors/github/backfill.d.ts +4 -4
  246. package/dist/connectors/github/backfill.js +6 -4
  247. package/dist/connectors/github/deletion.d.ts +6 -4
  248. package/dist/connectors/github/deletion.js +5 -5
  249. package/dist/connectors/github/dlq.d.ts +8 -6
  250. package/dist/connectors/github/dlq.js +11 -5
  251. package/dist/connectors/github/ingest.d.ts +2 -2
  252. package/dist/connectors/github/ingest.js +9 -6
  253. package/dist/connectors/github/octokit-client.d.ts +3 -1
  254. package/dist/connectors/github/octokit-client.js +7 -2
  255. package/dist/connectors/github/ratelimit.d.ts +6 -2
  256. package/dist/connectors/github/ratelimit.js +6 -2
  257. package/dist/connectors/github/signature.d.ts +14 -3
  258. package/dist/connectors/github/signature.js +17 -3
  259. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  260. package/dist/connectors/github/tenant-routing.js +6 -6
  261. package/dist/connectors/github/transform.js +50 -67
  262. package/dist/connectors/github/types.d.ts +10 -3
  263. package/dist/connectors/github/types.js +6 -2
  264. package/dist/connectors/github/webhook.d.ts +5 -5
  265. package/dist/connectors/github/webhook.js +34 -23
  266. package/dist/connectors/ingest.d.ts +5 -3
  267. package/dist/connectors/ingest.js +3 -4
  268. package/dist/connectors/slack/backfill.d.ts +5 -5
  269. package/dist/connectors/slack/backfill.js +3 -3
  270. package/dist/connectors/slack/deletion.d.ts +4 -4
  271. package/dist/connectors/slack/deletion.js +6 -6
  272. package/dist/connectors/slack/dlq.d.ts +4 -4
  273. package/dist/connectors/slack/dlq.js +6 -6
  274. package/dist/connectors/slack/ingest.d.ts +6 -4
  275. package/dist/connectors/slack/ingest.js +5 -5
  276. package/dist/connectors/slack/signature.d.ts +4 -1
  277. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  278. package/dist/connectors/slack/tenant-routing.js +6 -6
  279. package/dist/connectors/slack/transform.d.ts +6 -2
  280. package/dist/connectors/slack/transform.js +6 -2
  281. package/dist/connectors/slack/types.d.ts +3 -1
  282. package/dist/connectors/slack/web-client.js +8 -3
  283. package/dist/connectors/slack/webhook.d.ts +5 -5
  284. package/dist/connectors/slack/webhook.js +19 -11
  285. package/dist/connectors/slack/workspaces.d.ts +7 -3
  286. package/dist/connectors/slack/workspaces.js +7 -3
  287. package/dist/connectors/store.d.ts +8 -0
  288. package/dist/connectors/store.js +2 -0
  289. package/dist/consolidate/conflicts.js +23 -9
  290. package/dist/consolidate/dag-summary.js +2 -1
  291. package/dist/consolidate/dag.d.ts +10 -5
  292. package/dist/consolidate/dag.js +37 -36
  293. package/dist/consolidate/decay.js +19 -6
  294. package/dist/consolidate/dedupe.d.ts +14 -5
  295. package/dist/consolidate/dedupe.js +27 -16
  296. package/dist/consolidate/flush-units.d.ts +4 -1
  297. package/dist/consolidate/flush-units.js +4 -1
  298. package/dist/consolidate/half-life-migration.d.ts +18 -8
  299. package/dist/consolidate/half-life-migration.js +48 -18
  300. package/dist/consolidate/llm-passes.js +27 -11
  301. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  302. package/dist/consolidate/memory-value-weights.js +6 -2
  303. package/dist/consolidate/memory-value.d.ts +30 -10
  304. package/dist/consolidate/memory-value.js +36 -13
  305. package/dist/consolidate/merge.d.ts +4 -1
  306. package/dist/consolidate/merge.js +42 -32
  307. package/dist/consolidate/overlap-index.d.ts +8 -2
  308. package/dist/consolidate/overlap-index.js +11 -4
  309. package/dist/consolidate/physics-pass.d.ts +3 -1
  310. package/dist/consolidate/physics-pass.js +10 -7
  311. package/dist/consolidate/replay.d.ts +11 -4
  312. package/dist/consolidate/replay.js +19 -7
  313. package/dist/consolidate/run.d.ts +13 -5
  314. package/dist/consolidate/run.js +4 -4
  315. package/dist/consolidate/sleep.d.ts +14 -6
  316. package/dist/consolidate/sleep.js +41 -38
  317. package/dist/consolidate/trace.d.ts +7 -2
  318. package/dist/consolidate/trace.js +7 -2
  319. package/dist/consolidate/traces.js +26 -29
  320. package/dist/core/ablation.d.ts +9 -3
  321. package/dist/core/ablation.js +14 -4
  322. package/dist/core/active-scope.d.ts +3 -1
  323. package/dist/core/active-scope.js +3 -1
  324. package/dist/core/agent-memory-tools.d.ts +2 -0
  325. package/dist/core/agent-memory-tools.js +2 -0
  326. package/dist/core/ambient.d.ts +4 -3
  327. package/dist/core/ambient.js +8 -6
  328. package/dist/core/api-errors.d.ts +9 -3
  329. package/dist/core/api-errors.js +9 -3
  330. package/dist/core/capture-contract.d.ts +4 -1
  331. package/dist/core/capture-contract.js +27 -8
  332. package/dist/core/compare.d.ts +24 -8
  333. package/dist/core/compare.js +24 -8
  334. package/dist/core/config.d.ts +18 -9
  335. package/dist/core/config.js +24 -14
  336. package/dist/core/cosine.d.ts +4 -1
  337. package/dist/core/cosine.js +4 -1
  338. package/dist/core/handoff.d.ts +7 -2
  339. package/dist/core/handoff.js +4 -1
  340. package/dist/core/markdown.js +21 -16
  341. package/dist/core/memory-audit.js +14 -3
  342. package/dist/core/memory-quality.d.ts +12 -3
  343. package/dist/core/memory-quality.js +57 -21
  344. package/dist/core/memory.d.ts +84 -27
  345. package/dist/core/memory.js +73 -29
  346. package/dist/core/merged-row.d.ts +8 -2
  347. package/dist/core/merged-row.js +10 -3
  348. package/dist/core/package-root.d.ts +3 -1
  349. package/dist/core/package-root.js +3 -1
  350. package/dist/core/particle-refresh.d.ts +8 -0
  351. package/dist/core/particle-refresh.js +22 -0
  352. package/dist/core/physics-config.d.ts +4 -1
  353. package/dist/core/physics-config.js +6 -2
  354. package/dist/core/physics.d.ts +37 -11
  355. package/dist/core/physics.js +55 -20
  356. package/dist/core/project-identity.d.ts +34 -17
  357. package/dist/core/project-identity.js +33 -17
  358. package/dist/core/project-remote.d.ts +8 -4
  359. package/dist/core/project-remote.js +31 -14
  360. package/dist/core/recall-scope.d.ts +33 -11
  361. package/dist/core/recall-scope.js +42 -15
  362. package/dist/core/rejection-digest.d.ts +7 -0
  363. package/dist/core/rejection-digest.js +13 -0
  364. package/dist/core/salience.d.ts +3 -1
  365. package/dist/core/salience.js +10 -4
  366. package/dist/core/search-types.d.ts +15 -2
  367. package/dist/core/search-types.js +11 -0
  368. package/dist/dashboard/dashboard-actions.js +13 -2
  369. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  370. package/dist/dashboard/dashboard-snapshot.js +4 -4
  371. package/dist/dashboard/dashboard.js +6 -3
  372. package/dist/db/backup.js +2 -2
  373. package/dist/db/busy.d.ts +10 -3
  374. package/dist/db/busy.js +27 -5
  375. package/dist/db/connect.d.ts +10 -3
  376. package/dist/db/connect.js +8 -3
  377. package/dist/db/continuity.d.ts +1 -1
  378. package/dist/db/continuity.js +27 -11
  379. package/dist/db/meta.d.ts +4 -1
  380. package/dist/db/meta.js +4 -1
  381. package/dist/db/migrate.d.ts +10 -5
  382. package/dist/db/migrate.js +26 -13
  383. package/dist/db/migrations/index.d.ts +1 -1
  384. package/dist/db/migrations/index.js +3 -1
  385. package/dist/db/migrations/types.d.ts +2 -1
  386. package/dist/db/migrations/v12.js +2 -1
  387. package/dist/db/migrations/v14.js +2 -1
  388. package/dist/db/migrations/v15.js +4 -2
  389. package/dist/db/migrations/v16.js +6 -3
  390. package/dist/db/migrations/v17.js +2 -1
  391. package/dist/db/migrations/v19.js +4 -2
  392. package/dist/db/migrations/v20.js +2 -1
  393. package/dist/db/migrations/v22.js +12 -6
  394. package/dist/db/migrations/v23.js +6 -3
  395. package/dist/db/migrations/v24.js +6 -3
  396. package/dist/db/migrations/v25.js +4 -2
  397. package/dist/db/migrations/v26.js +4 -2
  398. package/dist/db/migrations/v27.js +6 -3
  399. package/dist/db/migrations/v28.js +4 -2
  400. package/dist/db/migrations/v29.js +4 -2
  401. package/dist/db/migrations/v30.js +6 -3
  402. package/dist/db/migrations/v31.js +4 -2
  403. package/dist/db/migrations/v32.js +6 -3
  404. package/dist/db/migrations/v33.js +4 -2
  405. package/dist/db/migrations/v34.js +2 -1
  406. package/dist/db/migrations/v35.js +2 -1
  407. package/dist/db/migrations/v36.js +2 -1
  408. package/dist/db/migrations/v37.js +10 -5
  409. package/dist/db/migrations/v38.js +10 -5
  410. package/dist/db/migrations/v39.js +14 -6
  411. package/dist/db/migrations/v40.js +4 -2
  412. package/dist/db/migrations/v41.js +4 -2
  413. package/dist/db/migrations/v42.js +2 -1
  414. package/dist/db/migrations/v44.js +4 -2
  415. package/dist/db/migrations/v45.js +4 -2
  416. package/dist/db/migrations/v49.js +2 -1
  417. package/dist/db/migrations/v50.js +4 -2
  418. package/dist/db/migrations/v51.js +4 -2
  419. package/dist/db/migrations/v52.js +2 -1
  420. package/dist/db/migrations/v53.js +8 -4
  421. package/dist/db/migrations/v54.js +2 -1
  422. package/dist/db/migrations/v55.js +4 -2
  423. package/dist/db/migrations/v56.d.ts +3 -0
  424. package/dist/db/migrations/v56.js +28 -0
  425. package/dist/db/open.d.ts +24 -12
  426. package/dist/db/open.js +25 -13
  427. package/dist/db/physics-state.d.ts +8 -4
  428. package/dist/db/physics-state.js +13 -20
  429. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  430. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  431. package/dist/db/request-stores.d.ts +19 -5
  432. package/dist/db/request-stores.js +14 -5
  433. package/dist/db/tables.d.ts +2 -1
  434. package/dist/db/tables.js +12 -4
  435. package/dist/db/vector-store.d.ts +13 -4
  436. package/dist/db/vector-store.js +34 -14
  437. package/dist/db/wal-checkpointer.d.ts +2 -1
  438. package/dist/db/wal-checkpointer.js +19 -7
  439. package/dist/doctor.d.ts +4 -1
  440. package/dist/doctor.js +121 -39
  441. package/dist/embeddings/local.d.ts +8 -4
  442. package/dist/embeddings/local.js +9 -5
  443. package/dist/embeddings/provider.d.ts +19 -10
  444. package/dist/embeddings/provider.js +31 -17
  445. package/dist/embeddings/transformers.d.ts +16 -4
  446. package/dist/embeddings/transformers.js +32 -15
  447. package/dist/entry/json-hooks.d.ts +1 -1
  448. package/dist/entry/json-hooks.js +1 -1
  449. package/dist/entry/project-identity.js +2 -1
  450. package/dist/entry/session-text.d.ts +1 -1
  451. package/dist/entry/session-text.js +1 -1
  452. package/dist/entry/sqlite-handles.d.ts +10 -0
  453. package/dist/entry/sqlite-handles.js +9 -0
  454. package/dist/entry/store-kit.d.ts +19 -6
  455. package/dist/entry/store-kit.js +6 -4
  456. package/dist/eval/eval-stats.d.ts +27 -8
  457. package/dist/eval/eval-stats.js +17 -5
  458. package/dist/eval/eval-suite.d.ts +3 -1
  459. package/dist/eval/eval-suite.js +409 -187
  460. package/dist/eval/eval.d.ts +8 -2
  461. package/dist/eval/eval.js +8 -2
  462. package/dist/eval/judgment.js +16 -6
  463. package/dist/graph/delta.d.ts +9 -42
  464. package/dist/graph/delta.js +17 -11
  465. package/dist/graph/extract.d.ts +10 -7
  466. package/dist/graph/extract.js +57 -25
  467. package/dist/graph/recall.d.ts +12 -4
  468. package/dist/graph/recall.js +30 -13
  469. package/dist/graph/stream.d.ts +18 -6
  470. package/dist/graph/stream.js +32 -10
  471. package/dist/graph/view.d.ts +19 -6
  472. package/dist/graph/view.js +42 -17
  473. package/dist/hooks/codex-session.js +2 -2
  474. package/dist/hooks/codex-wrapper.d.ts +3 -1
  475. package/dist/hooks/codex-wrapper.js +9 -4
  476. package/dist/hooks/copilot.d.ts +19 -5
  477. package/dist/hooks/copilot.js +54 -15
  478. package/dist/hooks/hook-blocks.d.ts +4 -1
  479. package/dist/hooks/hook-blocks.js +8 -3
  480. package/dist/hooks/json-hooks.d.ts +9 -5
  481. package/dist/hooks/json-hooks.js +69 -34
  482. package/dist/hooks/opencode.js +15 -5
  483. package/dist/hooks/shared.d.ts +27 -8
  484. package/dist/hooks/shared.js +57 -16
  485. package/dist/importers/core.d.ts +12 -4
  486. package/dist/importers/core.js +8 -7
  487. package/dist/importers/markdown-parse.d.ts +15 -5
  488. package/dist/importers/markdown-parse.js +16 -7
  489. package/dist/importers/markdown.js +6 -9
  490. package/dist/importers/sources.js +10 -23
  491. package/dist/importers/vault.d.ts +2 -2
  492. package/dist/importers/vault.js +43 -27
  493. package/dist/index.d.ts +32 -6
  494. package/dist/index.js +25 -7
  495. package/dist/learn/autolearn.d.ts +17 -6
  496. package/dist/learn/autolearn.js +53 -24
  497. package/dist/learn/churn-git.d.ts +4 -1
  498. package/dist/learn/churn-git.js +29 -5
  499. package/dist/learn/extract.d.ts +4 -1
  500. package/dist/learn/extract.js +16 -9
  501. package/dist/learn/forward-claim-detector.d.ts +17 -5
  502. package/dist/learn/forward-claim-detector.js +34 -15
  503. package/dist/learn/invalidation.d.ts +12 -7
  504. package/dist/learn/invalidation.js +56 -27
  505. package/dist/learn/roots.d.ts +3 -0
  506. package/dist/learn/roots.js +5 -0
  507. package/dist/mcp/admin-tools.d.ts +5 -5
  508. package/dist/mcp/admin-tools.js +28 -23
  509. package/dist/mcp/format.d.ts +1 -1
  510. package/dist/mcp/format.js +4 -2
  511. package/dist/mcp/framing.d.ts +3 -1
  512. package/dist/mcp/framing.js +20 -8
  513. package/dist/mcp/memory-tools.d.ts +3 -3
  514. package/dist/mcp/memory-tools.js +18 -14
  515. package/dist/mcp/protocol.d.ts +32 -16
  516. package/dist/mcp/protocol.js +12 -9
  517. package/dist/mcp/recall-tools.d.ts +3 -3
  518. package/dist/mcp/recall-tools.js +62 -74
  519. package/dist/mcp/request.d.ts +7 -5
  520. package/dist/mcp/request.js +57 -74
  521. package/dist/mcp/server.d.ts +3 -1
  522. package/dist/mcp/server.js +8 -3
  523. package/dist/mcp/session-state.d.ts +1 -1
  524. package/dist/mcp/session-state.js +4 -3
  525. package/dist/mcp/shared-gate.d.ts +3 -2
  526. package/dist/mcp/shared-gate.js +3 -2
  527. package/dist/mcp/stdio.d.ts +6 -3
  528. package/dist/mcp/stdio.js +52 -21
  529. package/dist/mcp/tool-args.d.ts +4 -1
  530. package/dist/mcp/tool-args.js +8 -3
  531. package/dist/mcp/tools.js +76 -32
  532. package/dist/objects/customer-notes.d.ts +12 -10
  533. package/dist/objects/customer-notes.js +21 -15
  534. package/dist/objects/decisions.d.ts +18 -10
  535. package/dist/objects/decisions.js +23 -17
  536. package/dist/objects/descriptor.js +2 -1
  537. package/dist/objects/fields.d.ts +4 -1
  538. package/dist/objects/fields.js +6 -2
  539. package/dist/objects/incidents.d.ts +14 -16
  540. package/dist/objects/incidents.js +29 -30
  541. package/dist/objects/lifecycle.d.ts +0 -4
  542. package/dist/objects/lifecycle.js +21 -24
  543. package/dist/objects/policies.d.ts +12 -16
  544. package/dist/objects/policies.js +17 -21
  545. package/dist/objects/processes.d.ts +16 -10
  546. package/dist/objects/processes.js +20 -15
  547. package/dist/objects/project-briefs.d.ts +13 -14
  548. package/dist/objects/project-briefs.js +33 -39
  549. package/dist/objects/skills.d.ts +10 -12
  550. package/dist/objects/skills.js +17 -22
  551. package/dist/postinstall.js +15 -7
  552. package/dist/predictions/planning-fallacy.d.ts +19 -6
  553. package/dist/predictions/planning-fallacy.js +4 -2
  554. package/dist/rerankers/clef.d.ts +8 -2
  555. package/dist/rerankers/clef.js +14 -9
  556. package/dist/rerankers/cross-encoder.d.ts +2 -1
  557. package/dist/rerankers/cross-encoder.js +9 -6
  558. package/dist/rerankers/index.js +2 -1
  559. package/dist/rerankers/jev.js +2 -1
  560. package/dist/rerankers/llm.d.ts +6 -2
  561. package/dist/rerankers/llm.js +8 -3
  562. package/dist/rerankers/remote.d.ts +3 -1
  563. package/dist/rerankers/remote.js +5 -2
  564. package/dist/rerankers/types.d.ts +6 -2
  565. package/dist/search/bm25-search.d.ts +3 -1
  566. package/dist/search/bm25-search.js +15 -2
  567. package/dist/search/boosts.js +4 -3
  568. package/dist/search/embed-memories.d.ts +10 -5
  569. package/dist/search/embed-memories.js +62 -36
  570. package/dist/search/engine.d.ts +4 -1
  571. package/dist/search/engine.js +6 -2
  572. package/dist/search/goal-boost.d.ts +10 -3
  573. package/dist/search/goal-boost.js +13 -6
  574. package/dist/search/hybrid-score.d.ts +4 -1
  575. package/dist/search/hybrid-score.js +4 -1
  576. package/dist/search/hybrid.d.ts +23 -8
  577. package/dist/search/hybrid.js +12 -7
  578. package/dist/search/multihop.js +14 -13
  579. package/dist/search/path-context.d.ts +10 -3
  580. package/dist/search/path-context.js +10 -3
  581. package/dist/search/physics-search.d.ts +9 -4
  582. package/dist/search/physics-search.js +38 -14
  583. package/dist/search/rerank.d.ts +2 -1
  584. package/dist/search/rerank.js +2 -1
  585. package/dist/search/rrf.d.ts +14 -5
  586. package/dist/search/rrf.js +11 -4
  587. package/dist/search/vector.d.ts +8 -2
  588. package/dist/search/vector.js +9 -3
  589. package/dist/server/auth.d.ts +18 -14
  590. package/dist/server/auth.js +69 -38
  591. package/dist/server/boot.d.ts +3 -1
  592. package/dist/server/boot.js +95 -56
  593. package/dist/server/client-ip.d.ts +11 -4
  594. package/dist/server/client-ip.js +27 -10
  595. package/dist/server/cursor.d.ts +10 -3
  596. package/dist/server/cursor.js +10 -3
  597. package/dist/server/deadline.d.ts +5 -2
  598. package/dist/server/deadline.js +10 -3
  599. package/dist/server/key-check-bounds.js +12 -4
  600. package/dist/server/lifecycle.d.ts +4 -1
  601. package/dist/server/lifecycle.js +10 -4
  602. package/dist/server/mcp-http.d.ts +2 -1
  603. package/dist/server/mcp-http.js +37 -22
  604. package/dist/server/rate-limit.d.ts +17 -5
  605. package/dist/server/rate-limit.js +55 -26
  606. package/dist/server/ready.js +7 -4
  607. package/dist/server/request.d.ts +15 -4
  608. package/dist/server/request.js +42 -15
  609. package/dist/server/route-checks.d.ts +4 -1
  610. package/dist/server/route-checks.js +8 -3
  611. package/dist/server/route-table.d.ts +8 -6
  612. package/dist/server/route-table.js +547 -93
  613. package/dist/server/routes/admin.d.ts +7 -7
  614. package/dist/server/routes/admin.js +36 -15
  615. package/dist/server/routes/customer-notes.d.ts +5 -5
  616. package/dist/server/routes/customer-notes.js +5 -4
  617. package/dist/server/routes/decisions.d.ts +5 -5
  618. package/dist/server/routes/decisions.js +12 -6
  619. package/dist/server/routes/incidents.d.ts +5 -5
  620. package/dist/server/routes/incidents.js +10 -4
  621. package/dist/server/routes/memories.d.ts +8 -8
  622. package/dist/server/routes/memories.js +12 -19
  623. package/dist/server/routes/object-routes.d.ts +8 -5
  624. package/dist/server/routes/object-routes.js +4 -2
  625. package/dist/server/routes/policies.d.ts +6 -6
  626. package/dist/server/routes/policies.js +11 -4
  627. package/dist/server/routes/predictions.d.ts +5 -5
  628. package/dist/server/routes/predictions.js +9 -4
  629. package/dist/server/routes/processes.d.ts +5 -5
  630. package/dist/server/routes/processes.js +15 -6
  631. package/dist/server/routes/project-briefs.d.ts +6 -6
  632. package/dist/server/routes/project-briefs.js +3 -2
  633. package/dist/server/routes/recall.d.ts +3 -3
  634. package/dist/server/routes/recall.js +21 -10
  635. package/dist/server/routes/skills.d.ts +6 -6
  636. package/dist/server/routes/skills.js +12 -4
  637. package/dist/server/server-detect.d.ts +24 -8
  638. package/dist/server/server-detect.js +57 -22
  639. package/dist/server/sleep-child.js +16 -10
  640. package/dist/server/sleep-offload.d.ts +8 -5
  641. package/dist/server/sleep-offload.js +41 -19
  642. package/dist/server/tls.d.ts +4 -1
  643. package/dist/server/tls.js +13 -5
  644. package/dist/server/types.d.ts +38 -26
  645. package/dist/server/validation.d.ts +4 -1
  646. package/dist/server/validation.js +22 -9
  647. package/dist/server.d.ts +15 -10
  648. package/dist/server.js +32 -12
  649. package/dist/sharing/global-store.d.ts +5 -10
  650. package/dist/sharing/global-store.js +8 -43
  651. package/dist/sharing/global-sync.d.ts +3 -1
  652. package/dist/sharing/global-sync.js +16 -6
  653. package/dist/sharing/project-merge.d.ts +25 -7
  654. package/dist/sharing/project-merge.js +49 -17
  655. package/dist/sharing/search-both.d.ts +8 -4
  656. package/dist/sharing/search-both.js +19 -12
  657. package/dist/sharing/share.d.ts +8 -4
  658. package/dist/sharing/share.js +39 -15
  659. package/dist/store/ambient.js +9 -5
  660. package/dist/store/audit-event.d.ts +2 -2
  661. package/dist/store/audit-event.js +8 -3
  662. package/dist/store/audit.d.ts +6 -3
  663. package/dist/store/audit.js +16 -6
  664. package/dist/store/auth.d.ts +4 -2
  665. package/dist/store/auth.js +63 -20
  666. package/dist/store/busy.d.ts +9 -0
  667. package/dist/store/busy.js +16 -0
  668. package/dist/store/candidates.d.ts +12 -5
  669. package/dist/store/candidates.js +75 -36
  670. package/dist/store/capture-write.d.ts +2 -1
  671. package/dist/store/capture-write.js +2 -1
  672. package/dist/store/card-detail.d.ts +4 -4
  673. package/dist/store/card-detail.js +15 -8
  674. package/dist/store/cards.d.ts +24 -10
  675. package/dist/store/cards.js +93 -60
  676. package/dist/store/compaction-caller.d.ts +2 -1
  677. package/dist/store/compaction-caller.js +2 -1
  678. package/dist/store/compactions-record.d.ts +14 -8
  679. package/dist/store/compactions-record.js +95 -32
  680. package/dist/store/compactions.js +35 -15
  681. package/dist/store/conflicts.d.ts +9 -4
  682. package/dist/store/conflicts.js +100 -45
  683. package/dist/store/connectors/dlq.d.ts +17 -5
  684. package/dist/store/connectors/dlq.js +56 -5
  685. package/dist/store/connectors/event-log.d.ts +111 -2
  686. package/dist/store/connectors/event-log.js +2 -1
  687. package/dist/store/connectors/github.d.ts +6 -3
  688. package/dist/store/connectors/github.js +24 -40
  689. package/dist/store/connectors/slack.d.ts +2 -1
  690. package/dist/store/connectors/slack.js +25 -37
  691. package/dist/store/dashboard-reads.d.ts +7 -3
  692. package/dist/store/dashboard-reads.js +32 -11
  693. package/dist/store/delete-and-batch.d.ts +17 -11
  694. package/dist/store/delete-and-batch.js +67 -26
  695. package/dist/store/delivery-recorder.d.ts +8 -5
  696. package/dist/store/delivery-recorder.js +70 -32
  697. package/dist/store/descendant-page.d.ts +2 -1
  698. package/dist/store/descendant-page.js +24 -9
  699. package/dist/store/diagnostics.d.ts +2 -1
  700. package/dist/store/diagnostics.js +2 -1
  701. package/dist/store/doctor-reads.d.ts +2 -1
  702. package/dist/store/doctor-reads.js +13 -5
  703. package/dist/store/dormant.d.ts +19 -11
  704. package/dist/store/dormant.js +40 -18
  705. package/dist/store/embeddings/index.d.ts +13 -9
  706. package/dist/store/embeddings/index.js +19 -12
  707. package/dist/store/entry-reads.d.ts +49 -20
  708. package/dist/store/entry-reads.js +181 -66
  709. package/dist/store/entry-row.d.ts +10 -6
  710. package/dist/store/entry-row.js +17 -12
  711. package/dist/store/entry-writes.d.ts +22 -10
  712. package/dist/store/entry-writes.js +41 -14
  713. package/dist/store/failure-log-at.js +1 -1
  714. package/dist/store/failure-log.d.ts +4 -2
  715. package/dist/store/failure-log.js +13 -6
  716. package/dist/store/gated-write.d.ts +3 -3
  717. package/dist/store/gated-write.js +3 -3
  718. package/dist/store/goals.d.ts +5 -4
  719. package/dist/store/goals.js +8 -10
  720. package/dist/store/graph-apply.d.ts +21 -0
  721. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  722. package/dist/store/graph-queue.d.ts +9 -6
  723. package/dist/store/graph-queue.js +15 -10
  724. package/dist/store/graph-reads.d.ts +16 -11
  725. package/dist/store/graph-reads.js +24 -15
  726. package/dist/store/graph-rows.d.ts +41 -3
  727. package/dist/store/graph-rows.js +10 -7
  728. package/dist/store/graph-view-rows.js +14 -7
  729. package/dist/store/graph-writes.d.ts +16 -10
  730. package/dist/store/graph-writes.js +59 -36
  731. package/dist/store/handoffs.d.ts +4 -4
  732. package/dist/store/handoffs.js +40 -19
  733. package/dist/store/index-and-stats.d.ts +2 -2
  734. package/dist/store/index-and-stats.js +6 -5
  735. package/dist/store/index.d.ts +3 -1
  736. package/dist/store/index.js +1 -0
  737. package/dist/store/key-audit.d.ts +2 -1
  738. package/dist/store/key-audit.js +2 -1
  739. package/dist/store/key-writes.d.ts +2 -1
  740. package/dist/store/key-writes.js +9 -2
  741. package/dist/store/ledger-turn.d.ts +4 -1
  742. package/dist/store/ledger-turn.js +7 -2
  743. package/dist/store/mirrors.d.ts +11 -4
  744. package/dist/store/mirrors.js +88 -16
  745. package/dist/store/narrow.d.ts +6 -0
  746. package/dist/store/narrow.js +11 -0
  747. package/dist/store/open.d.ts +4 -2
  748. package/dist/store/open.js +18 -9
  749. package/dist/store/pilot-arm.d.ts +2 -1
  750. package/dist/store/pilot-arm.js +18 -6
  751. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  752. package/dist/store/planning-fallacy-evidence.js +8 -5
  753. package/dist/store/port/agent-import.d.ts +62 -0
  754. package/dist/store/port/agent-import.js +2 -0
  755. package/dist/store/port/consolidation.d.ts +129 -0
  756. package/dist/store/port/consolidation.js +2 -0
  757. package/dist/store/port/learning.d.ts +19 -0
  758. package/dist/store/port/learning.js +2 -0
  759. package/dist/store/port/local-files.d.ts +18 -0
  760. package/dist/store/port/local-files.js +2 -0
  761. package/dist/store/port/promotion.d.ts +20 -0
  762. package/dist/store/port/promotion.js +3 -0
  763. package/dist/store/port-groups.d.ts +160 -0
  764. package/dist/store/port-groups.js +2 -0
  765. package/dist/store/port.d.ts +215 -229
  766. package/dist/store/port.js +3 -9
  767. package/dist/store/predictions.d.ts +14 -10
  768. package/dist/store/predictions.js +37 -17
  769. package/dist/store/project-tags.d.ts +4 -1
  770. package/dist/store/project-tags.js +16 -5
  771. package/dist/store/quality-repair.d.ts +8 -4
  772. package/dist/store/quality-repair.js +53 -20
  773. package/dist/store/quarantine.d.ts +1 -0
  774. package/dist/store/quarantine.js +23 -9
  775. package/dist/store/raw-archive.d.ts +5 -4
  776. package/dist/store/raw-archive.js +11 -10
  777. package/dist/store/recall-trace.d.ts +22 -17
  778. package/dist/store/recall-trace.js +126 -63
  779. package/dist/store/rejected-values.d.ts +15 -10
  780. package/dist/store/rejected-values.js +33 -12
  781. package/dist/store/rejection.d.ts +12 -11
  782. package/dist/store/rejection.js +18 -19
  783. package/dist/store/report-reads.d.ts +2 -1
  784. package/dist/store/report-reads.js +2 -1
  785. package/dist/store/rows.d.ts +7 -5
  786. package/dist/store/rows.js +18 -11
  787. package/dist/store/rule-sql.d.ts +6 -4
  788. package/dist/store/rule-sql.js +16 -9
  789. package/dist/store/search-rows.d.ts +14 -9
  790. package/dist/store/search-rows.js +48 -23
  791. package/dist/store/sessions.d.ts +12 -10
  792. package/dist/store/sessions.js +40 -21
  793. package/dist/store/set-aside.d.ts +2 -2
  794. package/dist/store/set-aside.js +18 -5
  795. package/dist/store/sqlite/agent-import.d.ts +3 -0
  796. package/dist/store/sqlite/agent-import.js +77 -0
  797. package/dist/store/sqlite/cards-group.d.ts +6 -0
  798. package/dist/store/sqlite/cards-group.js +37 -0
  799. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  800. package/dist/store/sqlite/conflicts-group.js +18 -0
  801. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  802. package/dist/store/sqlite/connector-events-group.js +17 -6
  803. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  804. package/dist/store/sqlite/connector-writes-group.js +9 -4
  805. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  806. package/dist/store/sqlite/consolidation-group.js +64 -0
  807. package/dist/store/sqlite/dag-reads-group.js +1 -1
  808. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  809. package/dist/store/sqlite/dormant-group.js +29 -0
  810. package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
  811. package/dist/store/sqlite/entry-writes-group.js +37 -14
  812. package/dist/store/sqlite/error-codec.d.ts +4 -2
  813. package/dist/store/sqlite/error-codec.js +32 -10
  814. package/dist/store/sqlite/executor-counts.js +2 -1
  815. package/dist/store/sqlite/executor.d.ts +8 -3
  816. package/dist/store/sqlite/executor.js +56 -18
  817. package/dist/store/sqlite/global-promote.d.ts +5 -0
  818. package/dist/store/sqlite/global-promote.js +48 -0
  819. package/dist/store/sqlite/goals-group.d.ts +6 -0
  820. package/dist/store/sqlite/goals-group.js +23 -0
  821. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  822. package/dist/store/sqlite/graph-reads-group.js +2 -1
  823. package/dist/store/sqlite/held-connection.d.ts +7 -1
  824. package/dist/store/sqlite/held-connection.js +34 -7
  825. package/dist/store/sqlite/last-recall-group.d.ts +4 -2
  826. package/dist/store/sqlite/last-recall-group.js +9 -4
  827. package/dist/store/sqlite/learning-group.d.ts +4 -0
  828. package/dist/store/sqlite/learning-group.js +17 -0
  829. package/dist/store/sqlite/maintenance-groups.js +2 -1
  830. package/dist/store/sqlite/object-rows.d.ts +6 -3
  831. package/dist/store/sqlite/object-rows.js +34 -5
  832. package/dist/store/sqlite/objects-group.d.ts +5 -4
  833. package/dist/store/sqlite/objects-group.js +84 -33
  834. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  835. package/dist/store/sqlite/predictions-group.js +4 -2
  836. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  837. package/dist/store/sqlite/promotion-group.js +10 -0
  838. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  839. package/dist/store/sqlite/quarantine-group.js +4 -2
  840. package/dist/store/sqlite/reports-group.d.ts +6 -0
  841. package/dist/store/sqlite/reports-group.js +33 -0
  842. package/dist/store/sqlite/request-scope.d.ts +6 -0
  843. package/dist/store/sqlite/request-scope.js +18 -0
  844. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  845. package/dist/store/sqlite/sessions-group.js +46 -0
  846. package/dist/store/sqlite/store.d.ts +22 -11
  847. package/dist/store/sqlite/store.js +84 -11
  848. package/dist/store/sqlite/vector-pack.js +2 -1
  849. package/dist/store/sqlite/vector-reads-group.js +2 -1
  850. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  851. package/dist/store/sqlite/worker-jobs.js +19 -7
  852. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  853. package/dist/store/sqlite/worker-ops.js +6 -3
  854. package/dist/store/sqlite/worker-store.d.ts +4 -3
  855. package/dist/store/sqlite/worker-store.js +24 -14
  856. package/dist/store/summaries.d.ts +19 -12
  857. package/dist/store/summaries.js +36 -21
  858. package/dist/store/summary-dirty.d.ts +2 -1
  859. package/dist/store/summary-dirty.js +2 -1
  860. package/dist/store/tenant.d.ts +3 -2
  861. package/dist/store/tenant.js +5 -4
  862. package/dist/store/token-ledger-rows.js +6 -3
  863. package/dist/store/token-ledger.d.ts +19 -13
  864. package/dist/store/token-ledger.js +27 -14
  865. package/dist/store/tombstone-checks.d.ts +4 -1
  866. package/dist/store/tombstone-checks.js +10 -1
  867. package/dist/store/usage-reports.js +2 -1
  868. package/dist/store/vector-index.d.ts +8 -5
  869. package/dist/store/vector-index.js +24 -10
  870. package/dist/store/working-memory.d.ts +6 -4
  871. package/dist/store/working-memory.js +14 -9
  872. package/dist/support-bundle.js +10 -5
  873. package/dist/trust/quarantine.d.ts +1 -2
  874. package/dist/trust/quarantine.js +1 -5
  875. package/dist/trust/reject-flow.d.ts +12 -3
  876. package/dist/trust/reject-flow.js +12 -4
  877. package/dist/util/anthropic-messages.d.ts +4 -1
  878. package/dist/util/anthropic-messages.js +14 -5
  879. package/dist/util/atomic-write.d.ts +4 -2
  880. package/dist/util/atomic-write.js +25 -14
  881. package/dist/util/compaction-items.d.ts +4 -1
  882. package/dist/util/compaction-items.js +8 -2
  883. package/dist/util/crash-handlers.d.ts +7 -2
  884. package/dist/util/crash-handlers.js +13 -4
  885. package/dist/util/env.d.ts +16 -4
  886. package/dist/util/env.js +78 -25
  887. package/dist/util/home-path.js +12 -6
  888. package/dist/util/hook-payload.d.ts +3 -1
  889. package/dist/util/hook-payload.js +3 -1
  890. package/dist/util/http-retry.d.ts +12 -6
  891. package/dist/util/http-retry.js +16 -6
  892. package/dist/util/http-util.d.ts +20 -5
  893. package/dist/util/http-util.js +28 -9
  894. package/dist/util/json.d.ts +4 -1
  895. package/dist/util/json.js +4 -1
  896. package/dist/util/keyset.js +2 -1
  897. package/dist/util/limits.js +4 -2
  898. package/dist/util/log.d.ts +13 -5
  899. package/dist/util/log.js +29 -6
  900. package/dist/util/net.d.ts +5 -0
  901. package/dist/util/net.js +19 -0
  902. package/dist/util/real-path.d.ts +2 -1
  903. package/dist/util/real-path.js +4 -3
  904. package/dist/util/request-scope.d.ts +11 -3
  905. package/dist/util/request-scope.js +13 -4
  906. package/dist/util/same-text.d.ts +10 -3
  907. package/dist/util/same-text.js +10 -3
  908. package/dist/util/secret-detect.d.ts +24 -7
  909. package/dist/util/secret-detect.js +49 -14
  910. package/dist/util/spawn-argv.d.ts +3 -1
  911. package/dist/util/spawn-argv.js +13 -4
  912. package/dist/util/sqlite-blocked.d.ts +15 -4
  913. package/dist/util/sqlite-blocked.js +19 -6
  914. package/dist/util/stored-json.d.ts +4 -1
  915. package/dist/util/stored-json.js +6 -2
  916. package/dist/util/stream-tee.d.ts +2 -1
  917. package/dist/util/stream-tee.js +8 -5
  918. package/dist/util/transcript-tail.d.ts +4 -1
  919. package/dist/util/transcript-tail.js +4 -1
  920. package/dist/util/version.d.ts +8 -3
  921. package/dist/util/version.js +8 -3
  922. package/dist/util/write-budget.d.ts +7 -2
  923. package/dist/util/write-budget.js +5 -2
  924. package/dist/util/yaml.d.ts +4 -1
  925. package/dist/util/yaml.js +4 -1
  926. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  927. package/extensions/openclaw-plugin/package.json +1 -1
  928. package/openclaw.plugin.json +1 -1
  929. package/package.json +2 -1
  930. package/scripts/postinstall.cjs +3 -1
  931. package/dist/api/cards.d.ts +0 -42
  932. package/dist/api/conflicts.d.ts +0 -28
  933. package/dist/api/conflicts.js +0 -61
  934. package/dist/api/dormant.d.ts +0 -14
  935. package/dist/api/dormant.js +0 -58
  936. package/dist/api/goals.d.ts +0 -18
  937. package/dist/api/graph.d.ts +0 -8
  938. package/dist/api/graph.js +0 -8
  939. package/dist/api/learn.js +0 -125
  940. package/dist/api/memories.d.ts +0 -25
  941. package/dist/api/objects.d.ts +0 -9
  942. package/dist/api/outcome.d.ts +0 -19
  943. package/dist/api/predictions.d.ts +0 -11
  944. package/dist/api/promote.d.ts +0 -36
  945. package/dist/api/recall-core.d.ts +0 -4
  946. package/dist/api/recall-core.js +0 -125
  947. package/dist/api/recall-finish.d.ts +0 -53
  948. package/dist/api/recall-finish.js +0 -30
  949. package/dist/api/recall-history.d.ts +0 -64
  950. package/dist/api/recall-history.js +0 -159
  951. package/dist/api/recall-record.d.ts +0 -43
  952. package/dist/api/recall-record.js +0 -78
  953. package/dist/api/recall-request.js +0 -121
  954. package/dist/api/recall.d.ts +0 -6
  955. package/dist/api/refine.d.ts +0 -7
  956. package/dist/api/refine.js +0 -10
  957. package/dist/api/session-owners.d.ts +0 -4
  958. package/dist/api/session-owners.js +0 -17
  959. package/dist/api/sleep-run.d.ts +0 -26
  960. package/dist/api/sleep.js +0 -11
  961. package/dist/graph/write.d.ts +0 -14
  962. package/dist/store/sqlite/busy.d.ts +0 -3
  963. package/dist/store/sqlite/busy.js +0 -8
  964. package/dist/store/sqlite/local.d.ts +0 -4
  965. package/dist/store/sqlite/local.js +0 -8
@@ -7,16 +7,16 @@ import { loadConfig } from '../core/config.js';
7
7
  import { RawAppendOnlyError } from '../core/raw-append-only.js';
8
8
  import { isGitRepo } from '../learn/autolearn.js';
9
9
  import * as api from '../api/index.js';
10
- import { getMemory } from '../api/memories.js';
10
+ import { getMemory } from '../api/memories/memories.js';
11
11
  import * as client from './client.js';
12
12
  import { cliApiContext } from './api-context.js';
13
13
  import { printError } from './output.js';
14
- import { parseCountFlag, boolFlag, flagIsTrue, nonEmptyStringFlag, stringFlag } from './flag-values.js';
14
+ import { parseCountFlag, boolFlag, flagIsTrue, nonEmptyStringFlag, stringFlag, stringFlagOrExit, } 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
+ import { CliExit, fail } from './exit.js';
20
20
  const CONFLICT_PREVIEW_CHARS = 120;
21
21
  const REJECTED_DIGEST_LIST_CHARS = 16;
22
22
  const DORMANT_PREVIEW_CHARS = 100;
@@ -26,12 +26,11 @@ export async function handleOutcome({ hippoRoot, tenantId, flags }) {
26
26
  const good = boolFlag(flags, 'good');
27
27
  const bad = boolFlag(flags, 'bad');
28
28
  if (!good && !bad) {
29
- printError('Specify --good or --bad');
30
- throw new CliExit(1);
29
+ fail('Specify --good or --bad');
31
30
  }
32
31
  // Through api.outcome so every CLI outcome writes one audit_log row per id, as the MCP path does.
33
32
  const ctx = cliApiContext(hippoRoot, tenantId);
34
- const specificId = flags['id'] ? String(flags['id']) : null;
33
+ const specificId = stringFlagOrExit(flags, 'id') || null;
35
34
  let updated;
36
35
  if (specificId) {
37
36
  updated = (await api.outcome(ctx, [specificId], good)).applied;
@@ -62,31 +61,29 @@ async function cmdForget(hippoRoot, tenantId, id, flags) {
62
61
  console.log(`Forgot ${id}`);
63
62
  }
64
63
  catch (err) {
65
- reportForgetFailure(ctx, id, err);
64
+ await reportForgetFailure(ctx, id, err);
66
65
  throw new CliExit(1);
67
66
  }
68
67
  }
69
68
  async function archiveForgottenRaw(ctx, id, reason) {
70
69
  if (!reason) {
71
- printError(ARCHIVE_REASON_REQUIRED);
72
- throw new CliExit(1);
70
+ fail(ARCHIVE_REASON_REQUIRED);
73
71
  }
74
72
  try {
75
73
  await api.archiveRaw(ctx, id, reason);
76
74
  console.log(`Archived ${id}`);
77
75
  }
78
76
  catch (err) {
79
- printError(`Could not archive ${id}: ${errorMessage(err)}`);
80
- throw new CliExit(1);
77
+ fail(`Could not archive ${id}: ${errorMessage(err)}`);
81
78
  }
82
79
  }
83
- function reportForgetFailure(ctx, id, cause) {
80
+ async function reportForgetFailure(ctx, id, cause) {
84
81
  if (cause instanceof RawAppendOnlyError) {
85
82
  // The delete was refused by the append-only trigger — this is a raw
86
83
  // memory, not a missing one. Point the user at the archive path.
87
84
  printError(rawForgetRefusal(id));
88
85
  }
89
- else if (api.isDormant(ctx, id)) {
86
+ else if (await api.isDormant(ctx, id)) {
90
87
  // Sleep moved it to the dormant store: it is not in active memory, so
91
88
  // point at the command that owns it.
92
89
  printError(`${id} is dormant, not in active memory. Delete it for good: hippo dormant forget ${id} ` +
@@ -104,23 +101,21 @@ async function previewForget(hippoRoot, tenantId, id, archive) {
104
101
  requireInit(hippoRoot);
105
102
  const entry = await getMemory(cliApiContext(hippoRoot, tenantId), id);
106
103
  if (!entry) {
107
- printError(`Memory not found: ${id}`);
108
- throw new CliExit(1);
104
+ fail(`Memory not found: ${id}`);
109
105
  }
110
106
  if (!archive && entry.kind === 'raw') {
111
- printError(rawForgetRefusal(id));
112
- throw new CliExit(1);
107
+ fail(rawForgetRefusal(id));
113
108
  }
114
109
  if (archive && entry.kind !== 'raw') {
115
- printError(`Could not archive ${id}: memory ${id} is not raw (kind=${entry.kind})`);
116
- throw new CliExit(1);
110
+ fail(`Could not archive ${id}: memory ${id} is not raw (kind=${entry.kind})`);
117
111
  }
118
112
  const snippet = truncateWithEllipsis(entry.content, CONTENT_PREVIEW_CHARS);
119
113
  console.log(`Would ${archive ? 'archive' : 'forget'} ${id} (dry run, nothing changed): "${snippet}"`);
120
114
  }
121
- export function handleConflicts({ hippoRoot, tenantId, flags }) {
115
+ export async function handleConflicts({ hippoRoot, tenantId, flags }) {
122
116
  requireInit(hippoRoot);
123
- const conflicts = api.listConflicts(cliApiContext(hippoRoot, tenantId), String(flags['status'] ?? 'open'), { everyTenant: true });
117
+ const status = stringFlagOrExit(flags, 'status') ?? 'open';
118
+ const conflicts = await api.listConflicts(cliApiContext(hippoRoot, tenantId), status, { everyTenant: true });
124
119
  if (flags['json']) {
125
120
  console.log(JSON.stringify({ conflicts }, null, 2));
126
121
  return;
@@ -139,11 +134,10 @@ export function handleConflicts({ hippoRoot, tenantId, flags }) {
139
134
  }
140
135
  /** Shown when --keep is missing, to help the user decide. */
141
136
  async function showConflictForResolve(hippoRoot, conflictId, tenantId) {
142
- const conflicts = api.listConflicts(cliApiContext(hippoRoot, tenantId), 'open');
137
+ const conflicts = await api.listConflicts(cliApiContext(hippoRoot, tenantId), 'open');
143
138
  const conflict = conflicts.find((c) => c.id === conflictId);
144
139
  if (!conflict) {
145
- printError(`Conflict ${conflictId} not found or already resolved.`);
146
- throw new CliExit(1);
140
+ fail(`Conflict ${conflictId} not found or already resolved.`);
147
141
  }
148
142
  console.log(`Conflict ${conflictId}:`);
149
143
  console.log(` ${conflict.memory_a_id} <-> ${conflict.memory_b_id}`);
@@ -169,10 +163,9 @@ export async function handleResolve({ hippoRoot, tenantId, args, flags }) {
169
163
  // Accept "42" or "conflict_42"
170
164
  const conflictId = parseInt(rawId.replace(/^conflict_/, ''), 10);
171
165
  if (isNaN(conflictId)) {
172
- printError('Usage: hippo resolve <conflict_id> --keep <memory_id> [--forget]');
173
- throw new CliExit(1);
166
+ fail('Usage: hippo resolve <conflict_id> --keep <memory_id> [--forget]');
174
167
  }
175
- const keepId = String(flags['keep'] ?? '').trim();
168
+ const keepId = stringFlagOrExit(flags, 'keep') ?? '';
176
169
  if (!keepId) {
177
170
  await showConflictForResolve(hippoRoot, conflictId, tenantId);
178
171
  return;
@@ -182,7 +175,7 @@ export async function handleResolve({ hippoRoot, tenantId, args, flags }) {
182
175
  // --reason is optional here, unlike `hippo reject`: resolve already has the conflict id and keepId.
183
176
  const rejectLoser = boolFlag(flags, 'reject-loser');
184
177
  const reasonFlag = stringFlag(flags, 'reason');
185
- const result = api.resolveMemoryConflict(cliApiContext(hippoRoot, tenantId), conflictId, {
178
+ const result = await api.resolveMemoryConflict(cliApiContext(hippoRoot, tenantId), conflictId, {
186
179
  keepId,
187
180
  forget: forgetLoser,
188
181
  rejectLoser,
@@ -203,20 +196,17 @@ export function handleReject({ hippoRoot, tenantId, args, flags }) {
203
196
  // --reason is REQUIRED: the tombstone stores no content, so reason is its only human-readable identity.
204
197
  const reason = (stringFlag(flags, 'reason') ?? '').trim();
205
198
  if (!reason) {
206
- printError('hippo reject requires --reason "<why>" (the tombstone stores no content; reason is its only identity).');
207
- throw new CliExit(1);
199
+ fail('hippo reject requires --reason "<why>" (the tombstone stores no content; reason is its only identity).');
208
200
  }
209
201
  const valueFlag = stringFlag(flags, 'value');
210
202
  const memoryId = args[0];
211
203
  if (!memoryId && valueFlag === undefined) {
212
204
  printError('Usage: hippo reject <memory-id> --reason "<why>"');
213
- printError(' or: hippo reject --value "<text>" --reason "<why>"');
214
- throw new CliExit(1);
205
+ fail(' or: hippo reject --value "<text>" --reason "<why>"');
215
206
  }
216
207
  if (memoryId && valueFlag !== undefined) {
217
208
  // Ambiguous ask: silently preferring one form would ignore the other without feedback.
218
- printError('hippo reject takes EITHER a memory id OR --value, not both.');
219
- throw new CliExit(1);
209
+ fail('hippo reject takes EITHER a memory id OR --value, not both.');
220
210
  }
221
211
  try {
222
212
  const result = api.rejectOnHost(cliApiContext(root, tenantId), {
@@ -227,8 +217,7 @@ export function handleReject({ hippoRoot, tenantId, args, flags }) {
227
217
  printRejected(result, reason);
228
218
  }
229
219
  catch (err) {
230
- printError(`Could not reject: ${errorMessage(err)}`);
231
- throw new CliExit(1);
220
+ fail(`Could not reject: ${errorMessage(err)}`);
232
221
  }
233
222
  }
234
223
  function printRejected(result, reason) {
@@ -277,13 +266,11 @@ export function handleUnreject({ hippoRoot, tenantId, args, flags }) {
277
266
  const root = resolveAuthRoot(hippoRoot, flags);
278
267
  const digestOrPrefix = (args[0] ?? '').trim();
279
268
  if (!digestOrPrefix) {
280
- printError('Usage: hippo unreject <digest-or-prefix>');
281
- throw new CliExit(1);
269
+ fail('Usage: hippo unreject <digest-or-prefix>');
282
270
  }
283
271
  const outcome = unrejectValue(root, tenantId, digestOrPrefix, 'cli');
284
272
  if (outcome.status === 'not_found') {
285
- printError(`No rejected value matches "${digestOrPrefix}". Run \`hippo rejections\` to list tombstones.`);
286
- throw new CliExit(1);
273
+ fail(`No rejected value matches "${digestOrPrefix}". Run \`hippo rejections\` to list tombstones.`);
287
274
  }
288
275
  if (outcome.status === 'ambiguous') {
289
276
  printError(`"${digestOrPrefix}" matches ${outcome.candidates.length} tombstones. Use a longer prefix:`);
@@ -296,17 +283,17 @@ export function handleUnreject({ hippoRoot, tenantId, args, flags }) {
296
283
  }
297
284
  /** `hippo dormant [list|restore <id>|forget <id>]`: dormant memories are what sleep keeps instead of deleting
298
285
  * (on by default; `"dormant": { "enabled": false }` in .hippo/config.json deletes instead). */
299
- export function handleDormant({ hippoRoot, tenantId, args, flags }) {
286
+ export async function handleDormant({ hippoRoot, tenantId, args, flags }) {
300
287
  const root = resolveAuthRoot(hippoRoot, flags);
301
288
  const ctx = cliApiContext(root, tenantId);
302
289
  const sub = args[0];
303
290
  if (sub === 'restore' || sub === 'forget') {
304
- changeDormant(ctx, sub, (args[1] ?? '').trim());
291
+ await changeDormant(ctx, sub, (args[1] ?? '').trim());
305
292
  return;
306
293
  }
307
294
  const queryArgs = sub === 'list' ? args.slice(1) : args;
308
295
  const limit = parseCountFlag(flags['limit']);
309
- const rows = api.listDormant(ctx, {
296
+ const rows = await api.listDormant(ctx, {
310
297
  query: queryArgs.join(' '),
311
298
  limit: limit > 0 ? limit : undefined,
312
299
  });
@@ -316,18 +303,17 @@ export function handleDormant({ hippoRoot, tenantId, args, flags }) {
316
303
  }
317
304
  printDormantRows(rows, queryArgs.length > 0, root);
318
305
  }
319
- function changeDormant(ctx, sub, id) {
306
+ async function changeDormant(ctx, sub, id) {
320
307
  if (!id) {
321
- printError(`Usage: hippo dormant ${sub} <id>`);
322
- throw new CliExit(1);
308
+ fail(`Usage: hippo dormant ${sub} <id>`);
323
309
  }
324
310
  try {
325
311
  if (sub === 'restore') {
326
- api.restoreDormant(ctx, id);
312
+ await api.restoreDormant(ctx, id);
327
313
  console.log(`Restored ${id} to active memory.`);
328
314
  }
329
315
  else {
330
- api.forgetDormant(ctx, id);
316
+ await api.forgetDormant(ctx, id);
331
317
  console.log(`Forgot dormant memory ${id} permanently.`);
332
318
  }
333
319
  }
@@ -361,7 +347,8 @@ function printDormantRows(rows, hasQuery, root) {
361
347
  }
362
348
  console.log('Bring one back: hippo dormant restore <id> Delete for good: hippo dormant forget <id>');
363
349
  }
364
- /** `hippo quarantine [list] [--all] [--json] [--global]`, `quarantine approve <id>`, `quarantine reject <id>` (poisoning defence). */
350
+ /** `hippo quarantine [list] [--all] [--json] [--global]`,
351
+ * `quarantine approve <id>`, `quarantine reject <id>` (poisoning defence). */
365
352
  export async function handleQuarantine({ hippoRoot, tenantId, args, flags }) {
366
353
  const root = resolveAuthRoot(hippoRoot, flags);
367
354
  const ctx = cliApiContext(root, tenantId);
@@ -384,8 +371,7 @@ export async function handleQuarantine({ hippoRoot, tenantId, args, flags }) {
384
371
  }
385
372
  async function decideQuarantined(ctx, sub, id) {
386
373
  if (!id) {
387
- printError(`Usage: hippo quarantine ${sub} <id>`);
388
- throw new CliExit(1);
374
+ fail(`Usage: hippo quarantine ${sub} <id>`);
389
375
  }
390
376
  try {
391
377
  if (sub === 'approve') {
@@ -398,8 +384,7 @@ async function decideQuarantined(ctx, sub, id) {
398
384
  }
399
385
  }
400
386
  catch (err) {
401
- printError(`Could not ${sub} ${id}: ${errorMessage(err)}`);
402
- throw new CliExit(1);
387
+ fail(`Could not ${sub} ${id}: ${errorMessage(err)}`);
403
388
  }
404
389
  }
405
390
  function printQuarantineRows(rows) {
@@ -415,16 +400,14 @@ function printQuarantineRows(rows) {
415
400
  export async function handleForget({ hippoRoot, tenantId, args, flags }) {
416
401
  const id = args[0];
417
402
  if (!id) {
418
- printError('Please provide a memory ID.');
419
- throw new CliExit(1);
403
+ fail('Please provide a memory ID.');
420
404
  }
421
405
  // Archive has its own HTTP route (POST /v1/memories/:id/archive); route
422
406
  // both branches the same way the direct path does.
423
407
  const archive = flagIsTrue(flags, 'archive');
424
408
  const reason = stringFlag(flags, 'reason') ?? null;
425
409
  if (archive && !reason) {
426
- printError(ARCHIVE_REASON_REQUIRED);
427
- throw new CliExit(1);
410
+ fail(ARCHIVE_REASON_REQUIRED);
428
411
  }
429
412
  if (flagIsTrue(flags, 'dry-run')) {
430
413
  await previewForget(hippoRoot, tenantId, id, archive);
@@ -447,8 +430,7 @@ export async function handleForget({ hippoRoot, tenantId, args, flags }) {
447
430
  if (err instanceof Error && client.classifyTransportFailure(err) !== 'none')
448
431
  throw err;
449
432
  const msg = errorMessage(err);
450
- printError(archive ? `Could not archive ${id}: ${msg}` : msg);
451
- throw new CliExit(1);
433
+ fail(archive ? `Could not archive ${id}: ${msg}` : msg);
452
434
  }
453
435
  });
454
436
  if (routed)
@@ -458,12 +440,10 @@ export async function handleForget({ hippoRoot, tenantId, args, flags }) {
458
440
  function invalidateChurn(hippoRoot, tenantId, args, flags) {
459
441
  if (args[0] || flags['id'] !== undefined) {
460
442
  printError('Usage: hippo invalidate --churn [--dry-run]');
461
- printError('--churn takes no pattern or --id.');
462
- throw new CliExit(1);
443
+ fail('--churn takes no pattern or --id.');
463
444
  }
464
445
  if (!isGitRepo(process.cwd())) {
465
- printError('hippo invalidate --churn must run inside a git repository.');
466
- throw new CliExit(1);
446
+ fail('hippo invalidate --churn must run inside a git repository.');
467
447
  }
468
448
  const churnDryRun = flagIsTrue(flags, 'dry-run');
469
449
  let churnFailed = false;
@@ -482,7 +462,7 @@ function invalidateChurn(hippoRoot, tenantId, args, flags) {
482
462
  else {
483
463
  console.log(`Tagged ${result.marked} memories churn-stale in ${root} (${result.alreadyMarked} already tagged):`);
484
464
  }
485
- result.preview.forEach(p => console.log(` ${p.id} ${p.evidence} ${p.already ? '(already) ' : ''}${p.headline}`));
465
+ result.preview.forEach((p) => console.log(` ${p.id} ${p.evidence} ${p.already ? '(already) ' : ''}${p.headline}`));
486
466
  if (result.skippedPinned.length > 0) {
487
467
  console.log(`Skipped ${result.skippedPinned.length} pinned: ${result.skippedPinned.join(', ')}`);
488
468
  }
@@ -498,16 +478,14 @@ export function handleInvalidate({ hippoRoot, tenantId, args, flags }) {
498
478
  if (flagIsTrue(flags, 'id')) {
499
479
  // Value-less --id must never silently fall through to pattern mode
500
480
  // (pattern mode writes broadly; an ignored --id reverses user intent).
501
- printError('--id requires a memory id');
502
- throw new CliExit(1);
481
+ fail('--id requires a memory id');
503
482
  }
504
483
  const onlyId = stringFlag(flags, 'id');
505
484
  const dryRun = flagIsTrue(flags, 'dry-run');
506
485
  if ((target && onlyId) || (!target && !onlyId)) {
507
486
  printError('Usage: hippo invalidate "<old pattern>" [--dry-run] [--reason "<why>"]');
508
487
  printError(' hippo invalidate --id <memory-id> [--dry-run] [--reason "<why>"]');
509
- printError('Pass a pattern OR --id, not both. Tag matching is EXACT: the full pattern must equal a tag.');
510
- throw new CliExit(1);
488
+ fail('Pass a pattern OR --id, not both. Tag matching is EXACT: the full pattern must equal a tag.');
511
489
  }
512
490
  const reason = nonEmptyStringFlag(flags, 'reason') ?? null;
513
491
  const invTarget = {
package/dist/cli/dag.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type CommandContext } from './flag-values.js';
2
- export declare function handleDag({ hippoRoot, tenantId, flags }: CommandContext): void;
2
+ export declare function handleDag({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
3
3
  export declare function handleDrill({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
4
4
  export declare function handleAssemble({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
5
5
  //# sourceMappingURL=dag.d.ts.map
package/dist/cli/dag.js CHANGED
@@ -1,30 +1,31 @@
1
1
  // DAG summary verbs: `hippo dag`, `hippo assemble` and `hippo drill`.
2
2
  import { truncateWithEllipsis } from '../util/ellipsize.js';
3
+ import { DAG_LEVEL } from '../core/memory.js';
3
4
  import * as api from '../api/index.js';
4
5
  import { assembleCost, assembleHeading, drillCost, settleTokens } from '../api/context-render.js';
5
- import { listMemories } from '../api/memories.js';
6
+ import { listMemories } from '../api/memories/memories.js';
6
7
  import { cliApiContext } from './api-context.js';
7
8
  import { printError } from './output.js';
8
- import { parseBudgetFlag, flagIsTrue, stringFlag, numberFlag } from './flag-values.js';
9
+ import { parseBudgetFlag, flagIsTrue, stringFlag, numberFlag, } from './flag-values.js';
9
10
  import { requireInit } from './shared.js';
10
11
  import { captureConsole } from './print.js';
11
12
  import { CONTENT_PREVIEW_CHARS } from '../util/token-text.js';
12
- import { CliExit } from './exit.js';
13
+ import { CliExit, fail } from './exit.js';
13
14
  const TREE_CHILD_PREVIEW_CHARS = 70;
14
15
  const TREE_LEAF_PREVIEW_CHARS = 60;
15
16
  const DAG_HEAD_CHARS = 120;
16
17
  const DAG_SUMMARY_PREVIEW_CHARS = 200;
17
18
  const DAG_CHILD_PREVIEW_CHARS = 100;
18
- export function handleDag({ hippoRoot, tenantId, flags }) {
19
+ export async function handleDag({ hippoRoot, tenantId, flags }) {
19
20
  requireInit(hippoRoot);
20
- const entries = listMemories(cliApiContext(hippoRoot, tenantId), { everyTenant: true });
21
+ const entries = await listMemories(cliApiContext(hippoRoot, tenantId), { everyTenant: true });
21
22
  const isStats = flagIsTrue(flags, 'stats');
22
23
  const byLevel = new Map();
23
24
  let unlinked = 0;
24
25
  for (const entry of entries) {
25
26
  const level = entry.dag_level ?? 0;
26
27
  byLevel.set(level, (byLevel.get(level) ?? 0) + 1);
27
- if (level === 1 && !entry.dag_parent_id)
28
+ if (level === DAG_LEVEL.extracted && !entry.dag_parent_id)
28
29
  unlinked++;
29
30
  }
30
31
  if (isStats) {
@@ -54,8 +55,8 @@ function groupByParent(entries) {
54
55
  }
55
56
  function printDagTree(entries) {
56
57
  // Tree view: L3 entity profiles as roots with L2 children indented, then orphan L2 summaries at top level.
57
- const profiles = entries.filter((e) => e.dag_level === 3);
58
- const l2List = entries.filter((e) => e.dag_level === 2);
58
+ const profiles = entries.filter((e) => e.dag_level === DAG_LEVEL.entity);
59
+ const l2List = entries.filter((e) => e.dag_level === DAG_LEVEL.topic);
59
60
  const orphanL2 = l2List.filter((e) => !e.dag_parent_id);
60
61
  const childL2ByProfile = new Map();
61
62
  for (const l2 of l2List) {
@@ -108,8 +109,7 @@ async function cmdAssemble(hippoRoot, tenantId, sessionId, flags) {
108
109
  const summarizeOlder = flags['no-summarize-older'] !== true;
109
110
  const scope = stringFlag(flags, 'scope') || undefined;
110
111
  const ctx = {
111
- hippoRoot,
112
- tenantId,
112
+ ...cliApiContext(hippoRoot, tenantId),
113
113
  actor: api.adminActor('cli:assemble'),
114
114
  };
115
115
  const opts = {};
@@ -145,14 +145,13 @@ async function cmdDrillDown(hippoRoot, tenantId, summaryId, flags) {
145
145
  let depth;
146
146
  if (rawDepth !== undefined) {
147
147
  if (!Number.isInteger(rawDepth) || rawDepth < 1 || rawDepth > 10) {
148
- printError(`--depth must be an integer between 1 and 10 (got ${flags['depth']})`);
148
+ printError(`--depth must be an integer between 1 and 10 (got ${stringFlag(flags, 'depth')})`);
149
149
  throw new CliExit(2);
150
150
  }
151
151
  depth = rawDepth;
152
152
  }
153
153
  const ctx = {
154
- hippoRoot,
155
- tenantId,
154
+ ...cliApiContext(hippoRoot, tenantId),
156
155
  actor: api.adminActor('cli:drill'),
157
156
  };
158
157
  const opts = {};
@@ -190,16 +189,14 @@ async function cmdDrillDown(hippoRoot, tenantId, summaryId, flags) {
190
189
  export async function handleDrill({ hippoRoot, tenantId, args, flags }) {
191
190
  const summaryId = args[0];
192
191
  if (!summaryId) {
193
- printError('Usage: hippo drill <summary-id> [--limit N] [--budget N]');
194
- throw new CliExit(1);
192
+ fail('Usage: hippo drill <summary-id> [--limit N] [--budget N]');
195
193
  }
196
194
  await cmdDrillDown(hippoRoot, tenantId, summaryId, flags);
197
195
  }
198
196
  export async function handleAssemble({ hippoRoot, tenantId, args, flags }) {
199
197
  const sessionId = stringFlag(flags, 'session') ?? args[0];
200
198
  if (!sessionId) {
201
- printError('Usage: hippo assemble --session <id> [--budget N] [--fresh-tail N] [--no-summarize-older] [--json]');
202
- throw new CliExit(1);
199
+ fail('Usage: hippo assemble --session <id> [--budget N] [--fresh-tail N] [--no-summarize-older] [--json]');
203
200
  }
204
201
  await cmdAssemble(hippoRoot, tenantId, sessionId, flags);
205
202
  }
@@ -1,14 +1,15 @@
1
1
  // First-class object verbs for decisions: record one (optionally superseding an older one's memory), list, get, close.
2
- import { getMemory } from '../api/memories.js';
2
+ import { getMemory } from '../api/memories/memories.js';
3
+ import { objectsOf } from '../api/objects/objects.js';
3
4
  import { extractPathTags } from '../search/path-context.js';
4
5
  import * as decisionsModule from '../objects/decisions.js';
5
6
  import { printError } from './output.js';
6
7
  import { nonEmptyStringFlag, flagIsTrue, stringFlag } from './flag-values.js';
7
8
  import { requireInit } from './shared.js';
8
9
  import { cliApiContext } from './api-context.js';
9
- import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail } from './object-verbs.js';
10
+ import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail, } from './object-verbs.js';
10
11
  import { errorMessage } from '../util/log.js';
11
- import { CliExit } from './exit.js';
12
+ import { fail } from './exit.js';
12
13
  const DECISION = { cmd: 'decide', noun: 'Decision', idLabel: 'decision' };
13
14
  function printDecisionRow(d) {
14
15
  const supPart = d.supersededBy !== null ? ` superseded_by=#${d.supersededBy}` : '';
@@ -17,17 +18,17 @@ function printDecisionRow(d) {
17
18
  if (d.context)
18
19
  console.log(` context: ${d.context}`);
19
20
  }
20
- function decideList(hippoRoot, tenantId, flags) {
21
- listObjects(flags, {
21
+ function decideList(objects, tenantId, flags) {
22
+ return listObjects(flags, {
22
23
  plural: 'decisions',
23
24
  states: decisionsModule.VALID_DECISION_STATES,
24
- load: (opts) => decisionsModule.loadDecisions(hippoRoot, tenantId, opts),
25
+ load: (opts) => decisionsModule.loadDecisions(objects, tenantId, opts),
25
26
  printRow: printDecisionRow,
26
27
  });
27
28
  }
28
- function decideGet(hippoRoot, tenantId, args) {
29
+ async function decideGet(objects, tenantId, args) {
29
30
  const id = idArgOrExit(args, 'Usage: hippo decide get <id>', DECISION.idLabel);
30
- const decision = foundOrExit(decisionsModule.loadDecisionById(hippoRoot, tenantId, id), DECISION.noun, id);
31
+ const decision = foundOrExit(await decisionsModule.loadDecisionById(objects, tenantId, id), DECISION.noun, id);
31
32
  console.log(`Decision #${decision.id}`);
32
33
  console.log(` status: ${decision.status}`);
33
34
  console.log(` text: ${decision.decisionText}`);
@@ -35,47 +36,48 @@ function decideGet(hippoRoot, tenantId, args) {
35
36
  console.log(` context: ${decision.context}`);
36
37
  printLifecycleTail(decision);
37
38
  }
38
- function decideClose(hippoRoot, tenantId, args) {
39
- closeObject(args, DECISION, (id) => decisionsModule.closeDecision(hippoRoot, tenantId, id));
39
+ function decideClose(objects, tenantId, args) {
40
+ return closeObject(args, DECISION, (id) => decisionsModule.closeDecision(objects, tenantId, id));
40
41
  }
41
42
  export async function handleDecide({ hippoRoot, tenantId, args, flags }) {
42
43
  requireInit(hippoRoot);
43
44
  const subcommand = args[0] ?? '';
45
+ const ctx = cliApiContext(hippoRoot, tenantId);
46
+ const objects = objectsOf(ctx);
44
47
  if (subcommand === 'list')
45
- return decideList(hippoRoot, tenantId, flags);
48
+ return decideList(objects, tenantId, flags);
46
49
  if (subcommand === 'get')
47
- return decideGet(hippoRoot, tenantId, args);
50
+ return decideGet(objects, tenantId, args);
48
51
  if (subcommand === 'close')
49
- return decideClose(hippoRoot, tenantId, args);
52
+ return decideClose(objects, tenantId, args);
50
53
  // Default subcommand: create. args[0] is the decision text.
51
- await decideCreate(hippoRoot, tenantId, subcommand, flags);
54
+ await decideCreate(ctx, subcommand, flags);
52
55
  }
53
- async function decideCreate(hippoRoot, tenantId, decisionText, flags) {
56
+ async function decideCreate(ctx, decisionText, flags) {
57
+ const { hippoRoot, tenantId } = ctx;
54
58
  if (!decisionText)
55
59
  exitWithDecideUsage();
56
60
  const context = nonEmptyStringFlag(flags, 'context');
57
61
  // A value-less `--supersedes` asks to supersede but gives no memory id: reject it rather
58
62
  // than silently creating a non-superseding decision.
59
63
  if (flagIsTrue(flags, 'supersedes')) {
60
- printError('--supersedes requires a memory id, e.g. hippo decide "<text>" --supersedes mem_abc123.');
61
- throw new CliExit(1);
64
+ fail('--supersedes requires a memory id, e.g. hippo decide "<text>" --supersedes mem_abc123.');
62
65
  }
63
66
  const supersedesMemId = stringFlag(flags, 'supersedes') ?? null;
64
- // Commit the table create+supersede first (inside saveDecision's SAVEPOINT) and weaken the old memory last, best-effort,
65
- // so a memory-write failure cannot leave the memory stale while the table shows the supersession.
67
+ // Commit the table create+supersede first (inside saveDecision's SAVEPOINT) and weaken the old memory last,
68
+ // best-effort, so a memory-write failure cannot leave the memory stale while the table shows the supersession.
66
69
  let supersedesDecisionId;
67
70
  let oldEntry = null;
68
71
  if (supersedesMemId) {
69
- oldEntry = await getMemory(cliApiContext(hippoRoot, tenantId), supersedesMemId);
72
+ oldEntry = await getMemory(ctx, supersedesMemId);
70
73
  if (!oldEntry) {
71
- printError(`Memory ${supersedesMemId} not found.`);
72
- throw new CliExit(1);
74
+ fail(`Memory ${supersedesMemId} not found.`);
73
75
  }
74
76
  supersedesDecisionId =
75
- decisionsModule.resolveActiveDecisionIdByMemory(hippoRoot, tenantId, supersedesMemId) ?? undefined;
77
+ (await decisionsModule.resolveActiveDecisionIdByMemory(objectsOf(ctx), tenantId, supersedesMemId)) ?? undefined;
76
78
  }
77
79
  const decisionPathTags = extractPathTags(process.cwd());
78
- const created = decisionsModule.saveDecision(hippoRoot, tenantId, {
80
+ const created = await decisionsModule.saveDecision(objectsOf(ctx), hippoRoot, tenantId, {
79
81
  decisionText,
80
82
  context,
81
83
  supersedesDecisionId,
@@ -93,8 +95,7 @@ function exitWithDecideUsage() {
93
95
  printError('Usage: hippo decide "<decision>" [--context "<why>"] [--supersedes <memory-id>]');
94
96
  printError(' hippo decide list [--status active|superseded|closed|all] [--limit N]');
95
97
  printError(' hippo decide get <id>');
96
- printError(' hippo decide close <id>');
97
- throw new CliExit(1);
98
+ fail(' hippo decide close <id>');
98
99
  }
99
100
  function weakenOrWarn(hippoRoot, oldEntry, supersedesMemId) {
100
101
  // Best-effort and last: saveDecision already committed. Failing here would make a retry find no active