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
package/dist/cli/dag.js CHANGED
@@ -1,21 +1,23 @@
1
1
  // DAG summary verbs: `hippo dag`, `hippo assemble` and `hippo drill`.
2
- import { loadAllEntries } from '../store/entry-reads.js';
2
+ import { truncateWithEllipsis } from '../util/ellipsize.js';
3
3
  import * as api from '../api/index.js';
4
- import { resolveTenantId } from '../store/tenant.js';
5
4
  import { assembleCost, assembleHeading, drillCost, settleTokens } from '../api/context-render.js';
5
+ import { listMemories } from '../api/memories.js';
6
+ import { cliApiContext } from './api-context.js';
6
7
  import { printError } from './output.js';
7
8
  import { parseBudgetFlag, flagIsTrue, stringFlag, numberFlag } from './flag-values.js';
8
9
  import { requireInit } from './shared.js';
9
10
  import { captureConsole } from './print.js';
10
11
  import { CONTENT_PREVIEW_CHARS } from '../util/token-text.js';
12
+ import { CliExit } from './exit.js';
11
13
  const TREE_CHILD_PREVIEW_CHARS = 70;
12
14
  const TREE_LEAF_PREVIEW_CHARS = 60;
13
15
  const DAG_HEAD_CHARS = 120;
14
16
  const DAG_SUMMARY_PREVIEW_CHARS = 200;
15
17
  const DAG_CHILD_PREVIEW_CHARS = 100;
16
- export function cmdDag(hippoRoot, flags) {
18
+ export function handleDag({ hippoRoot, tenantId, flags }) {
17
19
  requireInit(hippoRoot);
18
- const entries = loadAllEntries(hippoRoot);
20
+ const entries = listMemories(cliApiContext(hippoRoot, tenantId), { everyTenant: true });
19
21
  const isStats = flagIsTrue(flags, 'stats');
20
22
  const byLevel = new Map();
21
23
  let unlinked = 0;
@@ -39,6 +41,17 @@ function printDagStats(byLevel, unlinked) {
39
41
  console.log(` Level 0 (raw memories): ${byLevel.get(0) ?? 0}`);
40
42
  console.log(` Unlinked facts: ${unlinked}`);
41
43
  }
44
+ function groupByParent(entries) {
45
+ const byParent = new Map();
46
+ for (const e of entries) {
47
+ if (!e.dag_parent_id)
48
+ continue;
49
+ const list = byParent.get(e.dag_parent_id) ?? [];
50
+ list.push(e);
51
+ byParent.set(e.dag_parent_id, list);
52
+ }
53
+ return byParent;
54
+ }
42
55
  function printDagTree(entries) {
43
56
  // Tree view: L3 entity profiles as roots with L2 children indented, then orphan L2 summaries at top level.
44
57
  const profiles = entries.filter((e) => e.dag_level === 3);
@@ -52,6 +65,7 @@ function printDagTree(entries) {
52
65
  list.push(l2);
53
66
  childL2ByProfile.set(l2.dag_parent_id, list);
54
67
  }
68
+ const childrenByParent = groupByParent(entries);
55
69
  if (profiles.length === 0 && orphanL2.length === 0) {
56
70
  console.log('No DAG summaries yet. Run `hippo sleep` with ANTHROPIC_API_KEY set.');
57
71
  return;
@@ -68,7 +82,7 @@ function printDagTree(entries) {
68
82
  console.log(` └─ 📌 ${l2.content.slice(0, TREE_CHILD_PREVIEW_CHARS)}`);
69
83
  if (l2Tags)
70
84
  console.log(` [${l2Tags}]`);
71
- const facts = entries.filter((e) => e.dag_parent_id === l2.id);
85
+ const facts = childrenByParent.get(l2.id) ?? [];
72
86
  for (const f of facts) {
73
87
  console.log(` └─ ${f.content.slice(0, TREE_LEAF_PREVIEW_CHARS)}`);
74
88
  }
@@ -80,13 +94,13 @@ function printDagTree(entries) {
80
94
  console.log(`\n📌 ${summary.content.slice(0, CONTENT_PREVIEW_CHARS)}`);
81
95
  if (summaryTags)
82
96
  console.log(` [${summaryTags}]`);
83
- const children = entries.filter((e) => e.dag_parent_id === summary.id);
97
+ const children = childrenByParent.get(summary.id) ?? [];
84
98
  for (const child of children) {
85
99
  console.log(` └─ ${child.content.slice(0, TREE_CHILD_PREVIEW_CHARS)}`);
86
100
  }
87
101
  }
88
102
  }
89
- async function cmdAssemble(hippoRoot, sessionId, flags) {
103
+ async function cmdAssemble(hippoRoot, tenantId, sessionId, flags) {
90
104
  requireInit(hippoRoot);
91
105
  // Absent stays undefined so the api default applies; the 0 fallback is unreachable.
92
106
  const budget = flags['budget'] === undefined ? undefined : parseBudgetFlag(flags['budget'], 0);
@@ -95,16 +109,19 @@ async function cmdAssemble(hippoRoot, sessionId, flags) {
95
109
  const scope = stringFlag(flags, 'scope') || undefined;
96
110
  const ctx = {
97
111
  hippoRoot,
98
- tenantId: resolveTenantId({}),
112
+ tenantId,
99
113
  actor: api.adminActor('cli:assemble'),
100
114
  };
101
- const r = await api.assemble(ctx, sessionId, {
102
- ...(Number.isFinite(budget) && budget > 0 ? { budget } : {}),
103
- ...(Number.isFinite(freshTailCount) && freshTailCount >= 0 ? { freshTailCount } : {}),
104
- summarizeOlder,
105
- ...(scope !== undefined ? { scope } : {}),
106
- cost: assembleCost(sessionId),
107
- });
115
+ const opts = {};
116
+ if (Number.isFinite(budget) && budget > 0)
117
+ opts.budget = budget;
118
+ if (Number.isFinite(freshTailCount) && freshTailCount >= 0)
119
+ opts.freshTailCount = freshTailCount;
120
+ opts.summarizeOlder = summarizeOlder;
121
+ if (scope !== undefined)
122
+ opts.scope = scope;
123
+ opts.cost = assembleCost(sessionId);
124
+ const r = await api.assemble(ctx, sessionId, opts);
108
125
  if (flags['json']) {
109
126
  console.log(JSON.stringify(r, null, 2));
110
127
  return;
@@ -118,7 +135,7 @@ async function cmdAssemble(hippoRoot, sessionId, flags) {
118
135
  }
119
136
  })));
120
137
  }
121
- async function cmdDrillDown(hippoRoot, summaryId, flags) {
138
+ async function cmdDrillDown(hippoRoot, tenantId, summaryId, flags) {
122
139
  requireInit(hippoRoot);
123
140
  const limit = numberFlag(flags, 'limit');
124
141
  // Absent stays undefined so the api default applies; the 0 fallback is unreachable.
@@ -129,21 +146,24 @@ async function cmdDrillDown(hippoRoot, summaryId, flags) {
129
146
  if (rawDepth !== undefined) {
130
147
  if (!Number.isInteger(rawDepth) || rawDepth < 1 || rawDepth > 10) {
131
148
  printError(`--depth must be an integer between 1 and 10 (got ${flags['depth']})`);
132
- process.exit(2);
149
+ throw new CliExit(2);
133
150
  }
134
151
  depth = rawDepth;
135
152
  }
136
153
  const ctx = {
137
154
  hippoRoot,
138
- tenantId: resolveTenantId({}),
155
+ tenantId,
139
156
  actor: api.adminActor('cli:drill'),
140
157
  };
141
- const r = await api.drillDown(ctx, summaryId, {
142
- ...(Number.isFinite(limit) && limit > 0 ? { limit } : {}),
143
- ...(Number.isFinite(budget) && budget > 0 ? { budget } : {}),
144
- ...(depth !== undefined ? { depth } : {}),
145
- cost: drillCost,
146
- });
158
+ const opts = {};
159
+ if (Number.isFinite(limit) && limit > 0)
160
+ opts.limit = limit;
161
+ if (Number.isFinite(budget) && budget > 0)
162
+ opts.budget = budget;
163
+ if (depth !== undefined)
164
+ opts.depth = depth;
165
+ opts.cost = drillCost;
166
+ const r = await api.drillDown(ctx, summaryId, opts);
147
167
  if ('failure' in r) {
148
168
  // Only `not_drillable` is caller-actionable. `not_found` collapses cross-tenant, scope-blocked
149
169
  // and missing on purpose: telling scope_blocked apart would leak that the row exists.
@@ -153,33 +173,34 @@ async function cmdDrillDown(hippoRoot, summaryId, flags) {
153
173
  else {
154
174
  printError(`No drillable summary at id=${summaryId}.`);
155
175
  }
156
- process.exit(1);
176
+ throw new CliExit(1);
157
177
  }
158
178
  if (flags['json']) {
159
179
  console.log(JSON.stringify(r, null, 2));
160
180
  return;
161
181
  }
162
- console.log(`Summary ${r.summary.id} — ${r.summary.descendantCount} descendants${r.summary.earliestAt ? ` (${r.summary.earliestAt} → ${r.summary.latestAt})` : ''}`);
163
- console.log(` ${r.summary.content.slice(0, DAG_SUMMARY_PREVIEW_CHARS)}${r.summary.content.length > DAG_SUMMARY_PREVIEW_CHARS ? '…' : ''}`);
182
+ console.log(`Summary ${r.summary.id} — ${r.summary.descendantCount} descendants` +
183
+ `${r.summary.earliestAt ? ` (${r.summary.earliestAt} → ${r.summary.latestAt})` : ''}`);
184
+ console.log(` ${truncateWithEllipsis(r.summary.content, DAG_SUMMARY_PREVIEW_CHARS, '…')}`);
164
185
  console.log(`\nChildren (${r.children.length}/${r.totalChildren}${r.truncated ? ', truncated' : ''}):`);
165
186
  for (const c of r.children) {
166
- console.log(` [L${c.dagLevel}] ${c.id} — ${c.content.slice(0, DAG_CHILD_PREVIEW_CHARS)}${c.content.length > DAG_CHILD_PREVIEW_CHARS ? '…' : ''}`);
187
+ console.log(` [L${c.dagLevel}] ${c.id} — ${truncateWithEllipsis(c.content, DAG_CHILD_PREVIEW_CHARS, '…')}`);
167
188
  }
168
189
  }
169
- export async function handleDrill({ hippoRoot, args, flags }) {
190
+ export async function handleDrill({ hippoRoot, tenantId, args, flags }) {
170
191
  const summaryId = args[0];
171
192
  if (!summaryId) {
172
193
  printError('Usage: hippo drill <summary-id> [--limit N] [--budget N]');
173
- process.exit(1);
194
+ throw new CliExit(1);
174
195
  }
175
- await cmdDrillDown(hippoRoot, summaryId, flags);
196
+ await cmdDrillDown(hippoRoot, tenantId, summaryId, flags);
176
197
  }
177
- export async function handleAssemble({ hippoRoot, args, flags }) {
198
+ export async function handleAssemble({ hippoRoot, tenantId, args, flags }) {
178
199
  const sessionId = stringFlag(flags, 'session') ?? args[0];
179
200
  if (!sessionId) {
180
201
  printError('Usage: hippo assemble --session <id> [--budget N] [--fresh-tail N] [--no-summarize-older] [--json]');
181
- process.exit(1);
202
+ throw new CliExit(1);
182
203
  }
183
- await cmdAssemble(hippoRoot, sessionId, flags);
204
+ await cmdAssemble(hippoRoot, tenantId, sessionId, flags);
184
205
  }
185
206
  //# sourceMappingURL=dag.js.map
@@ -1,5 +1,3 @@
1
- import { type CliFlags } from './flag-values.js';
2
- export declare function cmdPredict(hippoRoot: string, args: string[], flags: CliFlags): void;
3
- export declare function cmdDecide(hippoRoot: string, args: string[], flags: CliFlags): void;
4
- export declare function cmdIncident(hippoRoot: string, args: string[], flags: CliFlags): void;
1
+ import { type CommandContext } from './flag-values.js';
2
+ export declare function handleDecide({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
5
3
  //# sourceMappingURL=decisions.d.ts.map
@@ -1,192 +1,16 @@
1
- // First-class object verbs for predictions, decisions and incidents.
2
- import { writeEntry } from '../store/entry-writes.js';
3
- import { readEntry } from '../store/entry-reads.js';
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';
4
3
  import { extractPathTags } from '../search/path-context.js';
5
- import * as predictionsModule from '../store/predictions.js';
6
4
  import * as decisionsModule from '../objects/decisions.js';
7
- import * as incidentsModule from '../objects/incidents.js';
8
- import { resolveTenantId } from '../store/tenant.js';
9
5
  import { printError } from './output.js';
10
- import { nonEmptyStringFlag, parseListLimit, flagIsTrue, stringFlag } from './flag-values.js';
6
+ import { nonEmptyStringFlag, flagIsTrue, stringFlag } from './flag-values.js';
11
7
  import { requireInit } from './shared.js';
12
- import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail, requireStatus } from './object-verbs.js';
8
+ import { cliApiContext } from './api-context.js';
9
+ import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail } from './object-verbs.js';
10
+ import { parseObjectId } from './lenient-id.js';
13
11
  import { errorMessage } from '../util/log.js';
14
- const BASERATE_DECIMALS = 3;
12
+ import { CliExit } from './exit.js';
15
13
  const DECISION = { cmd: 'decide', noun: 'Decision', idLabel: 'decision' };
16
- const INCIDENT = { cmd: 'incident', noun: 'Incident', idLabel: 'incident' };
17
- const PREDICTION_NOUN = 'Prediction';
18
- // Lenient on purpose (parseInt reads "1abc" as 1) until the next major version; incidents use the strict parser.
19
- function parseObjectId(idRaw, noun) {
20
- const id = parseInt(String(idRaw), 10);
21
- if (!Number.isFinite(id) || id <= 0) {
22
- printError(`Invalid ${noun} id: "${idRaw}"`);
23
- process.exit(1);
24
- }
25
- return id;
26
- }
27
- // ---------------------------------------------------------------------------
28
- // Prediction first-class object
29
- // ---------------------------------------------------------------------------
30
- function predictClose(hippoRoot, tenantId, args, flags) {
31
- const id = idArgOrExit(args, 'Usage: hippo predict close <id> --state <closed|closed-unknown> [--actual <v>] [--note "..."]', 'prediction', parseObjectId);
32
- const stateRaw = (stringFlag(flags, 'state') ?? '').trim();
33
- if (!predictionsModule.VALID_CLOSURE_STATES.has(stateRaw) || stateRaw === 'open') {
34
- printError(`Invalid --state: "${stateRaw}". Must be one of: closed | closed-unknown.`);
35
- process.exit(1);
36
- }
37
- const actualRaw = flags['actual'];
38
- const actualValue = actualRaw !== undefined ? Number(actualRaw) : undefined;
39
- if (actualRaw !== undefined && !Number.isFinite(actualValue)) {
40
- printError(`Invalid --actual: "${actualRaw}". Must be a number.`);
41
- process.exit(1);
42
- }
43
- const closureNote = stringFlag(flags, 'note');
44
- const closed = predictionsModule.closePrediction(hippoRoot, tenantId, id, {
45
- closureState: stateRaw,
46
- actualValue,
47
- closureNote,
48
- });
49
- console.log(`Prediction ${closed.id} closed: state=${closed.closureState}${closed.actualValue !== null ? ` actual=${closed.actualValue}` : ''}`);
50
- }
51
- function loadPredictionList(hippoRoot, tenantId, status, classTag, limit) {
52
- if (status === 'open') {
53
- return predictionsModule.loadOpenPredictions(hippoRoot, tenantId, {
54
- classTag: classTag || undefined,
55
- limit,
56
- });
57
- }
58
- if (status === 'all') {
59
- return classTag
60
- ? predictionsModule.loadPredictionsByClass(hippoRoot, tenantId, classTag, { limit })
61
- : predictionsModule.loadAllPredictions(hippoRoot, tenantId, { limit });
62
- }
63
- const closureState = requireStatus(status, predictionsModule.VALID_CLOSURE_STATES);
64
- if (!classTag) {
65
- // status filter without class — scan all classes is more complex; v1 requires --class for non-default status
66
- printError('--status filter (non-open) requires --class to be set.');
67
- process.exit(1);
68
- }
69
- return predictionsModule.loadPredictionsByClass(hippoRoot, tenantId, classTag, {
70
- closureState,
71
- limit,
72
- });
73
- }
74
- function predictList(hippoRoot, tenantId, flags) {
75
- const classTag = stringFlag(flags, 'class')?.trim() ?? '';
76
- const status = stringFlag(flags, 'status')?.trim() ?? 'all';
77
- const limit = parseListLimit(flags);
78
- const results = loadPredictionList(hippoRoot, tenantId, status, classTag, limit);
79
- if (results.length === 0) {
80
- console.log(classTag ? `No predictions in class "${classTag}".` : 'No predictions.');
81
- return;
82
- }
83
- console.log(`Found ${results.length} predictions:\n`);
84
- for (const p of results) {
85
- const estPart = p.estimateValue !== null ? ` estimate=${p.estimateValue}${p.estimateUnit ? ` ${p.estimateUnit}` : ''}` : '';
86
- const actPart = p.actualValue !== null ? ` actual=${p.actualValue}` : '';
87
- const tgtPart = p.targetDate ? ` target=${p.targetDate}` : '';
88
- console.log(`#${p.id} [${p.closureState}] class=${p.classTag}${estPart}${actPart}${tgtPart}`);
89
- console.log(` ${p.claimText}`);
90
- if (p.closureNote)
91
- console.log(` note: ${p.closureNote}`);
92
- }
93
- }
94
- function predictShow(hippoRoot, tenantId, args) {
95
- const id = idArgOrExit(args, 'Usage: hippo predict show <id>', 'prediction', parseObjectId);
96
- const pred = foundOrExit(predictionsModule.loadPredictionById(hippoRoot, tenantId, id), PREDICTION_NOUN, id);
97
- console.log(`Prediction #${pred.id}`);
98
- console.log(` class: ${pred.classTag}`);
99
- console.log(` claim: ${pred.claimText}`);
100
- console.log(` state: ${pred.closureState}`);
101
- if (pred.estimateValue !== null)
102
- console.log(` estimate: ${pred.estimateValue}${pred.estimateUnit ? ' ' + pred.estimateUnit : ''}`);
103
- if (pred.targetDate)
104
- console.log(` target: ${pred.targetDate}`);
105
- if (pred.actualValue !== null)
106
- console.log(` actual: ${pred.actualValue}`);
107
- if (pred.closedAt)
108
- console.log(` closed: ${pred.closedAt}`);
109
- if (pred.closureNote)
110
- console.log(` note: ${pred.closureNote}`);
111
- if (pred.memoryId)
112
- console.log(` memory: ${pred.memoryId}`);
113
- console.log(` created: ${pred.createdAt}`);
114
- }
115
- function predictBaserate(hippoRoot, tenantId, flags) {
116
- // Reference-class / planning-fallacy detector
117
- const classTag = stringFlag(flags, 'class')?.trim();
118
- if (!classTag) {
119
- printError('Usage: hippo predict baserate --class <c>');
120
- process.exit(1);
121
- }
122
- const baserate = predictionsModule.computePredictionBaserate(hippoRoot, tenantId, classTag);
123
- if (baserate.nClosed === 0) {
124
- console.log(`No closed predictions in class "${baserate.classTag}" yet.`);
125
- console.log(` Create one with: hippo predict "<claim>" --class ${baserate.classTag} --estimate N`);
126
- console.log(` Close it later: hippo predict close <id> --state closed --actual N`);
127
- return;
128
- }
129
- console.log(baserate.summary);
130
- console.log(` n_closed: ${baserate.nClosed}`);
131
- console.log(` n_ratio_eligible: ${baserate.nRatioEligible}`);
132
- if (baserate.meanEstimate !== null)
133
- console.log(` mean_estimate: ${baserate.meanEstimate.toFixed(BASERATE_DECIMALS)}`);
134
- if (baserate.meanActual !== null)
135
- console.log(` mean_actual: ${baserate.meanActual.toFixed(BASERATE_DECIMALS)}`);
136
- if (baserate.meanRatio !== null)
137
- console.log(` mean_ratio: ${baserate.meanRatio.toFixed(BASERATE_DECIMALS)}x`);
138
- if (baserate.p50Ratio !== null)
139
- console.log(` p50_ratio: ${baserate.p50Ratio.toFixed(BASERATE_DECIMALS)}x`);
140
- if (baserate.mae !== null)
141
- console.log(` mae: ${baserate.mae.toFixed(BASERATE_DECIMALS)}`);
142
- }
143
- export function cmdPredict(hippoRoot, args, flags) {
144
- requireInit(hippoRoot);
145
- const tenantId = resolveTenantId({});
146
- const subcommand = args[0] ?? '';
147
- if (subcommand === 'close')
148
- return predictClose(hippoRoot, tenantId, args, flags);
149
- if (subcommand === 'list')
150
- return predictList(hippoRoot, tenantId, flags);
151
- if (subcommand === 'show')
152
- return predictShow(hippoRoot, tenantId, args);
153
- if (subcommand === 'baserate')
154
- return predictBaserate(hippoRoot, tenantId, flags);
155
- // Default subcommand: create. args[0] is the claim text.
156
- predictCreate(hippoRoot, tenantId, subcommand, flags);
157
- }
158
- function predictCreate(hippoRoot, tenantId, claimText, flags) {
159
- if (!claimText) {
160
- printError('Usage: hippo predict "<claim>" --class <c> [--estimate <v>] [--unit <u>] [--target <YYYY-MM-DD>]');
161
- printError(' hippo predict close <id> --state <closed|closed-unknown> [--actual <v>] [--note "..."]');
162
- printError(' hippo predict list [--class X] [--status open|closed|closed-unknown|all] [--limit N]');
163
- printError(' hippo predict show <id>');
164
- process.exit(1);
165
- }
166
- const classTag = stringFlag(flags, 'class')?.trim();
167
- if (!classTag) {
168
- printError('--class is required for prediction creation.');
169
- process.exit(1);
170
- }
171
- const estimateRaw = flags['estimate'];
172
- const estimateValue = estimateRaw !== undefined ? Number(estimateRaw) : undefined;
173
- if (estimateRaw !== undefined && !Number.isFinite(estimateValue)) {
174
- printError(`Invalid --estimate: "${estimateRaw}". Must be a number.`);
175
- process.exit(1);
176
- }
177
- const estimateUnit = stringFlag(flags, 'unit');
178
- const targetDate = stringFlag(flags, 'target');
179
- const created = predictionsModule.savePrediction(hippoRoot, tenantId, {
180
- classTag,
181
- claimText,
182
- estimateValue,
183
- estimateUnit,
184
- targetDate,
185
- });
186
- console.log(`Prediction recorded: #${created.id} class=${created.classTag}`);
187
- if (created.memoryId)
188
- console.log(` memory: ${created.memoryId}`);
189
- }
190
14
  function printDecisionRow(d) {
191
15
  const supPart = d.supersededBy !== null ? ` superseded_by=#${d.supersededBy}` : '';
192
16
  console.log(`#${d.id} [${d.status}]${supPart} memory=${d.memoryId ?? '-'}`);
@@ -215,9 +39,8 @@ function decideGet(hippoRoot, tenantId, args) {
215
39
  function decideClose(hippoRoot, tenantId, args) {
216
40
  closeObject(args, DECISION, (id) => decisionsModule.closeDecision(hippoRoot, tenantId, id), parseObjectId);
217
41
  }
218
- export function cmdDecide(hippoRoot, args, flags) {
42
+ export async function handleDecide({ hippoRoot, tenantId, args, flags }) {
219
43
  requireInit(hippoRoot);
220
- const tenantId = resolveTenantId({});
221
44
  const subcommand = args[0] ?? '';
222
45
  if (subcommand === 'list')
223
46
  return decideList(hippoRoot, tenantId, flags);
@@ -226,9 +49,9 @@ export function cmdDecide(hippoRoot, args, flags) {
226
49
  if (subcommand === 'close')
227
50
  return decideClose(hippoRoot, tenantId, args);
228
51
  // Default subcommand: create. args[0] is the decision text.
229
- decideCreate(hippoRoot, tenantId, subcommand, flags);
52
+ await decideCreate(hippoRoot, tenantId, subcommand, flags);
230
53
  }
231
- function decideCreate(hippoRoot, tenantId, decisionText, flags) {
54
+ async function decideCreate(hippoRoot, tenantId, decisionText, flags) {
232
55
  if (!decisionText)
233
56
  exitWithDecideUsage();
234
57
  const context = nonEmptyStringFlag(flags, 'context');
@@ -236,21 +59,18 @@ function decideCreate(hippoRoot, tenantId, decisionText, flags) {
236
59
  // than silently creating a non-superseding decision.
237
60
  if (flagIsTrue(flags, 'supersedes')) {
238
61
  printError('--supersedes requires a memory id, e.g. hippo decide "<text>" --supersedes mem_abc123.');
239
- process.exit(1);
62
+ throw new CliExit(1);
240
63
  }
241
64
  const supersedesMemId = stringFlag(flags, 'supersedes') ?? null;
242
- // Backward-compat: --supersedes takes a MEMORY id. Validate it exists and
243
- // resolve it to the active decision row (if any). Commit the
244
- // canonical table create+supersede FIRST (inside saveDecision's SAVEPOINT),
245
- // weaken the old memory LAST (best-effort) so a memory-write failure cannot
246
- // leave the memory stale without the table reflecting the supersession.
65
+ // Commit the table create+supersede first (inside saveDecision's SAVEPOINT) and weaken the old memory last, best-effort,
66
+ // so a memory-write failure cannot leave the memory stale while the table shows the supersession.
247
67
  let supersedesDecisionId;
248
68
  let oldEntry = null;
249
69
  if (supersedesMemId) {
250
- oldEntry = readEntry(hippoRoot, supersedesMemId, tenantId) ?? null;
70
+ oldEntry = await getMemory(cliApiContext(hippoRoot, tenantId), supersedesMemId);
251
71
  if (!oldEntry) {
252
72
  printError(`Memory ${supersedesMemId} not found.`);
253
- process.exit(1);
73
+ throw new CliExit(1);
254
74
  }
255
75
  supersedesDecisionId =
256
76
  decisionsModule.resolveActiveDecisionIdByMemory(hippoRoot, tenantId, supersedesMemId) ?? undefined;
@@ -275,20 +95,13 @@ function exitWithDecideUsage() {
275
95
  printError(' hippo decide list [--status active|superseded|closed|all] [--limit N]');
276
96
  printError(' hippo decide get <id>');
277
97
  printError(' hippo decide close <id>');
278
- process.exit(1);
98
+ throw new CliExit(1);
279
99
  }
280
100
  function weakenSupersededMemory(hippoRoot, oldEntry, supersedesMemId) {
281
- // Legacy memory-weaken (best-effort, LAST): half-life halved, marked stale +
282
- // 'superseded' tag. Preserves the exact pre-promotion behavior for the memory
283
- // mirror; the canonical table supersession already committed above.
284
- // Best-effort: saveDecision already committed. Failing here would make a retry find no active
101
+ // Best-effort and last: saveDecision already committed. Failing here would make a retry find no active
285
102
  // decision for the old memory and create a duplicate active successor, so warn instead.
286
103
  try {
287
- oldEntry.half_life_days = Math.max(1, Math.floor(oldEntry.half_life_days / 2));
288
- oldEntry.confidence = 'stale';
289
- if (!oldEntry.tags.includes('superseded'))
290
- oldEntry.tags.push('superseded');
291
- writeEntry(hippoRoot, oldEntry);
104
+ decisionsModule.weakenSupersededMemory(hippoRoot, oldEntry);
292
105
  }
293
106
  catch (e) {
294
107
  printError(` warning: decision recorded and superseded, but failed to weaken the prior memory ${supersedesMemId}: ${errorMessage(e)}`);
@@ -300,108 +113,4 @@ function printSupersedes(supersedesMemId, supersedesDecisionId) {
300
113
  : ' (no active decision row; memory weakened only)';
301
114
  console.log(` supersedes memory: ${supersedesMemId}${tail}`);
302
115
  }
303
- function printIncidentRow(inc) {
304
- const linkPart = inc.linkedMemoryIds.length > 0 ? ` links=${inc.linkedMemoryIds.length}` : '';
305
- console.log(`#${inc.id} [${inc.status}]${linkPart} memory=${inc.memoryId ?? '-'}`);
306
- console.log(` ${inc.incidentText}`);
307
- if (inc.context)
308
- console.log(` context: ${inc.context}`);
309
- }
310
- function incidentList(hippoRoot, tenantId, flags) {
311
- listObjects(flags, {
312
- plural: 'incidents',
313
- states: incidentsModule.VALID_INCIDENT_STATES,
314
- load: (opts) => incidentsModule.loadIncidents(hippoRoot, tenantId, opts),
315
- printRow: printIncidentRow,
316
- });
317
- }
318
- function incidentGet(hippoRoot, tenantId, args) {
319
- const id = idArgOrExit(args, 'Usage: hippo incident get <id>', INCIDENT.idLabel);
320
- const incident = foundOrExit(incidentsModule.loadIncidentById(hippoRoot, tenantId, id), INCIDENT.noun, id);
321
- console.log(`Incident #${incident.id}`);
322
- console.log(` status: ${incident.status}`);
323
- console.log(` text: ${incident.incidentText}`);
324
- if (incident.context)
325
- console.log(` context: ${incident.context}`);
326
- if (incident.resolutionText)
327
- console.log(` resolution: ${incident.resolutionText}`);
328
- if (incident.resolvedAt)
329
- console.log(` resolved_at: ${incident.resolvedAt}`);
330
- if (incident.closedAt)
331
- console.log(` closed_at: ${incident.closedAt}`);
332
- if (incident.linkedMemoryIds.length > 0) {
333
- console.log(` linked memories: ${incident.linkedMemoryIds.join(', ')}`);
334
- }
335
- if (incident.memoryId)
336
- console.log(` memory: ${incident.memoryId}`);
337
- console.log(` created: ${incident.createdAt}`);
338
- }
339
- function incidentResolve(hippoRoot, tenantId, args, flags) {
340
- const id = idArgOrExit(args, 'Usage: hippo incident resolve <id> --resolution "<text>"', INCIDENT.idLabel);
341
- const resolutionRaw = stringFlag(flags, 'resolution');
342
- if (!resolutionRaw?.trim()) {
343
- printError('--resolution requires a non-empty value, e.g. hippo incident resolve <id> --resolution "root cause fixed".');
344
- process.exit(1);
345
- }
346
- const resolved = incidentsModule.resolveIncident(hippoRoot, tenantId, id, resolutionRaw);
347
- console.log(`Incident #${resolved.id} resolved.`);
348
- }
349
- function incidentClose(hippoRoot, tenantId, args) {
350
- closeObject(args, INCIDENT, (id) => incidentsModule.closeIncident(hippoRoot, tenantId, id));
351
- }
352
- export function cmdIncident(hippoRoot, args, flags) {
353
- requireInit(hippoRoot);
354
- const tenantId = resolveTenantId({});
355
- const subcommand = args[0] ?? '';
356
- if (subcommand === 'list')
357
- return incidentList(hippoRoot, tenantId, flags);
358
- if (subcommand === 'get')
359
- return incidentGet(hippoRoot, tenantId, args);
360
- if (subcommand === 'resolve')
361
- return incidentResolve(hippoRoot, tenantId, args, flags);
362
- if (subcommand === 'close')
363
- return incidentClose(hippoRoot, tenantId, args);
364
- // Default subcommand: open (create). Accept both the documented
365
- // `incident open "<text>"` form and the bare `incident "<text>"` form: for the
366
- // `open` keyword the text is args[1], otherwise args[0] IS the text.
367
- incidentCreate(hippoRoot, tenantId, subcommand === 'open' ? (args[1] ?? '') : subcommand, flags);
368
- }
369
- function incidentCreate(hippoRoot, tenantId, incidentText, flags) {
370
- if (!incidentText) {
371
- printError('Usage: hippo incident "<incident>" [--context "<details>"] [--link <memory-id>]...');
372
- printError(' hippo incident list [--status open|resolved|closed|all] [--limit N]');
373
- printError(' hippo incident get <id>');
374
- printError(' hippo incident resolve <id> --resolution "<text>"');
375
- printError(' hippo incident close <id>');
376
- process.exit(1);
377
- }
378
- const context = nonEmptyStringFlag(flags, 'context');
379
- // --link is a repeatable flag (collected into an array by parseArgs). A
380
- // single --link <id> yields a string; normalize both to string[].
381
- const linkRaw = flags['link'];
382
- let linkedMemoryIds;
383
- if (Array.isArray(linkRaw)) {
384
- linkedMemoryIds = linkRaw;
385
- }
386
- else if (typeof linkRaw === 'string') {
387
- linkedMemoryIds = [linkRaw];
388
- }
389
- else if (linkRaw === true) {
390
- printError('--link requires a memory id, e.g. hippo incident "<text>" --link mem_abc123.');
391
- process.exit(1);
392
- }
393
- const incidentPathTags = extractPathTags(process.cwd());
394
- const created = incidentsModule.saveIncident(hippoRoot, tenantId, {
395
- incidentText,
396
- context,
397
- linkedMemoryIds,
398
- extraTags: incidentPathTags,
399
- });
400
- console.log(`Incident recorded: #${created.id}`);
401
- if (created.memoryId)
402
- console.log(` memory: ${created.memoryId}`);
403
- if (created.linkedMemoryIds.length > 0) {
404
- console.log(` linked memories: ${created.linkedMemoryIds.join(', ')}`);
405
- }
406
- }
407
116
  //# sourceMappingURL=decisions.js.map
@@ -1,3 +1,3 @@
1
1
  import { type CommandContext } from './flag-values.js';
2
- export declare function handleEval({ hippoRoot, args, flags }: CommandContext): Promise<void>;
2
+ export declare function handleEval({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
3
3
  //# sourceMappingURL=eval.d.ts.map