hippo-memory 1.70.0 → 1.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (629) hide show
  1. package/README.md +1 -1
  2. package/dist/agent-memories/claude-code.d.ts +4 -2
  3. package/dist/agent-memories/claude-code.js +14 -5
  4. package/dist/agent-memories/files.js +23 -12
  5. package/dist/agent-memories/markdown.d.ts +1 -3
  6. package/dist/agent-memories/markdown.js +1 -3
  7. package/dist/agent-memories/report.js +2 -1
  8. package/dist/agent-memories/sync.d.ts +4 -2
  9. package/dist/agent-memories/sync.js +10 -5
  10. package/dist/api/assemble.d.ts +7 -44
  11. package/dist/api/assemble.js +2 -22
  12. package/dist/api/audit.d.ts +5 -1
  13. package/dist/api/audit.js +9 -1
  14. package/dist/api/auth.d.ts +13 -22
  15. package/dist/api/auth.js +34 -24
  16. package/dist/api/auto-sleep.js +2 -2
  17. package/dist/api/availability.d.ts +2 -15
  18. package/dist/api/availability.js +2 -15
  19. package/dist/api/context-select.js +3 -4
  20. package/dist/api/context-types.d.ts +10 -35
  21. package/dist/api/context.d.ts +5 -22
  22. package/dist/api/context.js +21 -38
  23. package/dist/api/dormant.d.ts +5 -21
  24. package/dist/api/dormant.js +7 -26
  25. package/dist/api/drill-down.d.ts +7 -46
  26. package/dist/api/drill-down.js +5 -26
  27. package/dist/api/forget.d.ts +5 -24
  28. package/dist/api/forget.js +5 -28
  29. package/dist/api/graph.d.ts +8 -0
  30. package/dist/api/graph.js +7 -0
  31. package/dist/api/index.d.ts +2 -0
  32. package/dist/api/index.js +2 -0
  33. package/dist/api/instruction-detect.js +16 -5
  34. package/dist/api/ledger-db.d.ts +2 -1
  35. package/dist/api/ledger-db.js +5 -3
  36. package/dist/api/memories.d.ts +5 -0
  37. package/dist/api/memories.js +7 -0
  38. package/dist/api/objects.d.ts +9 -0
  39. package/dist/api/objects.js +11 -0
  40. package/dist/api/on-store.js +5 -3
  41. package/dist/api/predictions.d.ts +9 -0
  42. package/dist/api/predictions.js +18 -0
  43. package/dist/api/promote.d.ts +13 -17
  44. package/dist/api/promote.js +11 -19
  45. package/dist/api/prompt-hook.d.ts +4 -4
  46. package/dist/api/prompt-hook.js +10 -9
  47. package/dist/api/recall-cli.d.ts +55 -0
  48. package/dist/api/recall-cli.js +94 -0
  49. package/dist/api/recall-core.js +14 -6
  50. package/dist/api/recall-finish.d.ts +53 -0
  51. package/dist/api/recall-finish.js +30 -0
  52. package/dist/api/recall-history.d.ts +17 -84
  53. package/dist/api/recall-history.js +15 -88
  54. package/dist/api/recall-pipeline.d.ts +2 -3
  55. package/dist/api/recall-pipeline.js +16 -9
  56. package/dist/api/recall-types.d.ts +64 -304
  57. package/dist/api/recall.d.ts +5 -33
  58. package/dist/api/recall.js +59 -60
  59. package/dist/api/refine.d.ts +7 -0
  60. package/dist/api/refine.js +10 -0
  61. package/dist/api/remember-local.d.ts +57 -0
  62. package/dist/api/remember-local.js +90 -0
  63. package/dist/api/remember.d.ts +18 -1
  64. package/dist/api/remember.js +13 -1
  65. package/dist/api/sleep-run.d.ts +1 -3
  66. package/dist/api/sleep-run.js +17 -21
  67. package/dist/api/sleep.d.ts +9 -28
  68. package/dist/api/tokens.d.ts +3 -10
  69. package/dist/api/tokens.js +3 -10
  70. package/dist/api/types.d.ts +6 -29
  71. package/dist/api/types.js +4 -22
  72. package/dist/capture/command.d.ts +4 -12
  73. package/dist/capture/command.js +6 -22
  74. package/dist/capture/compact.d.ts +4 -15
  75. package/dist/capture/compact.js +16 -25
  76. package/dist/capture/compaction-record.js +101 -69
  77. package/dist/capture/compaction-spool.d.ts +1 -1
  78. package/dist/capture/compaction-spool.js +1 -1
  79. package/dist/capture/session-digest.d.ts +1 -1
  80. package/dist/capture/session-digest.js +13 -7
  81. package/dist/capture/transcript.d.ts +2 -10
  82. package/dist/capture/transcript.js +4 -18
  83. package/dist/cli/api-context.d.ts +3 -0
  84. package/dist/cli/api-context.js +6 -0
  85. package/dist/cli/audit-prune.d.ts +6 -39
  86. package/dist/cli/audit-prune.js +6 -39
  87. package/dist/cli/audit.d.ts +1 -1
  88. package/dist/cli/audit.js +33 -34
  89. package/dist/cli/auth.d.ts +2 -2
  90. package/dist/cli/auth.js +57 -39
  91. package/dist/cli/briefs.d.ts +4 -4
  92. package/dist/cli/briefs.js +18 -22
  93. package/dist/cli/card.d.ts +2 -2
  94. package/dist/cli/card.js +31 -32
  95. package/dist/cli/client.d.ts +7 -27
  96. package/dist/cli/client.js +24 -43
  97. package/dist/cli/compact-resume-payload.js +3 -2
  98. package/dist/cli/context.d.ts +1 -2
  99. package/dist/cli/context.js +12 -8
  100. package/dist/cli/continuity.d.ts +6 -6
  101. package/dist/cli/continuity.js +62 -64
  102. package/dist/cli/correction-latency.d.ts +2 -14
  103. package/dist/cli/correction-latency.js +2 -14
  104. package/dist/cli/curate.d.ts +13 -17
  105. package/dist/cli/curate.js +68 -92
  106. package/dist/cli/dag.d.ts +4 -4
  107. package/dist/cli/dag.js +33 -27
  108. package/dist/cli/decisions.d.ts +4 -4
  109. package/dist/cli/decisions.js +33 -47
  110. package/dist/cli/eval.js +15 -13
  111. package/dist/cli/exit.d.ts +6 -0
  112. package/dist/cli/exit.js +11 -0
  113. package/dist/cli/explain.d.ts +1 -2
  114. package/dist/cli/explain.js +6 -4
  115. package/dist/cli/flag-values.d.ts +6 -1
  116. package/dist/cli/flag-values.js +27 -10
  117. package/dist/cli/flags.d.ts +1 -0
  118. package/dist/cli/flags.js +1 -1
  119. package/dist/cli/github.d.ts +14 -0
  120. package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
  121. package/dist/cli/goals.d.ts +2 -2
  122. package/dist/cli/goals.js +46 -50
  123. package/dist/cli/hook-runtime.d.ts +9 -27
  124. package/dist/cli/hook-runtime.js +15 -31
  125. package/dist/cli/init.d.ts +2 -2
  126. package/dist/cli/init.js +6 -12
  127. package/dist/cli/install-steps.js +3 -12
  128. package/dist/cli/last-sleep.d.ts +2 -1
  129. package/dist/cli/last-sleep.js +3 -0
  130. package/dist/cli/maintenance.d.ts +4 -4
  131. package/dist/cli/maintenance.js +14 -19
  132. package/dist/cli/object-verbs.js +4 -3
  133. package/dist/cli/owner-validation.d.ts +5 -28
  134. package/dist/cli/owner-validation.js +5 -28
  135. package/dist/cli/playbooks.d.ts +4 -4
  136. package/dist/cli/playbooks.js +23 -28
  137. package/dist/cli/print.d.ts +2 -5
  138. package/dist/cli/print.js +1 -4
  139. package/dist/cli/projects.d.ts +2 -2
  140. package/dist/cli/projects.js +1 -3
  141. package/dist/cli/provenance-coverage.d.ts +2 -6
  142. package/dist/cli/provenance-coverage.js +2 -6
  143. package/dist/cli/quality-repair-once.js +2 -2
  144. package/dist/cli/recall.d.ts +2 -4
  145. package/dist/cli/recall.js +55 -131
  146. package/dist/cli/refine-llm.d.ts +5 -31
  147. package/dist/cli/refine-llm.js +9 -36
  148. package/dist/cli/remember.d.ts +3 -3
  149. package/dist/cli/remember.js +122 -180
  150. package/dist/cli/scheduler.d.ts +2 -17
  151. package/dist/cli/scheduler.js +12 -18
  152. package/dist/cli/serve.js +21 -12
  153. package/dist/cli/session-hooks.d.ts +10 -18
  154. package/dist/cli/session-hooks.js +112 -113
  155. package/dist/cli/setup.d.ts +4 -4
  156. package/dist/cli/setup.js +19 -21
  157. package/dist/cli/shared.d.ts +9 -23
  158. package/dist/cli/shared.js +9 -32
  159. package/dist/cli/slack.d.ts +2 -2
  160. package/dist/cli/slack.js +19 -23
  161. package/dist/cli/sleep.d.ts +3 -2
  162. package/dist/cli/sleep.js +15 -16
  163. package/dist/cli/status.d.ts +9 -12
  164. package/dist/cli/status.js +55 -98
  165. package/dist/cli/stdin.d.ts +4 -6
  166. package/dist/cli/stdin.js +2 -3
  167. package/dist/cli/transfer.d.ts +9 -9
  168. package/dist/cli/transfer.js +66 -89
  169. package/dist/cli/usage.js +11 -5
  170. package/dist/cli.d.ts +66 -448
  171. package/dist/cli.js +87 -263
  172. package/dist/connectors/github/backfill.d.ts +5 -25
  173. package/dist/connectors/github/backfill.js +14 -49
  174. package/dist/connectors/github/deletion.d.ts +4 -18
  175. package/dist/connectors/github/deletion.js +2 -15
  176. package/dist/connectors/github/dlq.d.ts +8 -33
  177. package/dist/connectors/github/dlq.js +12 -29
  178. package/dist/connectors/github/ingest.d.ts +2 -6
  179. package/dist/connectors/github/ingest.js +4 -10
  180. package/dist/connectors/github/octokit-client.d.ts +4 -16
  181. package/dist/connectors/github/octokit-client.js +27 -24
  182. package/dist/connectors/github/ratelimit.d.ts +3 -14
  183. package/dist/connectors/github/ratelimit.js +3 -14
  184. package/dist/connectors/github/scope.d.ts +3 -5
  185. package/dist/connectors/github/scope.js +3 -5
  186. package/dist/connectors/github/signature.d.ts +4 -26
  187. package/dist/connectors/github/signature.js +4 -26
  188. package/dist/connectors/github/tenant-routing.d.ts +2 -24
  189. package/dist/connectors/github/tenant-routing.js +4 -26
  190. package/dist/connectors/github/transform.js +2 -16
  191. package/dist/connectors/github/types.d.ts +3 -15
  192. package/dist/connectors/github/types.js +2 -9
  193. package/dist/connectors/github/webhook.d.ts +2 -16
  194. package/dist/connectors/github/webhook.js +6 -22
  195. package/dist/connectors/slack/backfill.d.ts +4 -17
  196. package/dist/connectors/slack/backfill.js +4 -13
  197. package/dist/connectors/slack/dlq.d.ts +2 -19
  198. package/dist/connectors/slack/dlq.js +2 -19
  199. package/dist/connectors/slack/ingest.d.ts +2 -3
  200. package/dist/connectors/slack/ingest.js +2 -3
  201. package/dist/connectors/slack/scope.d.ts +2 -8
  202. package/dist/connectors/slack/scope.js +2 -8
  203. package/dist/connectors/slack/signature.d.ts +1 -6
  204. package/dist/connectors/slack/tenant-routing.d.ts +2 -19
  205. package/dist/connectors/slack/tenant-routing.js +2 -21
  206. package/dist/connectors/slack/transform.d.ts +2 -18
  207. package/dist/connectors/slack/transform.js +2 -18
  208. package/dist/connectors/slack/types.d.ts +3 -9
  209. package/dist/connectors/slack/types.js +2 -4
  210. package/dist/connectors/slack/web-client.js +33 -27
  211. package/dist/connectors/slack/webhook.d.ts +2 -19
  212. package/dist/connectors/slack/webhook.js +5 -26
  213. package/dist/connectors/slack/workspaces.d.ts +4 -24
  214. package/dist/connectors/slack/workspaces.js +4 -24
  215. package/dist/consolidate/conflicts.js +6 -14
  216. package/dist/consolidate/dag-summary.d.ts +8 -0
  217. package/dist/consolidate/dag-summary.js +41 -0
  218. package/dist/consolidate/dag.d.ts +5 -28
  219. package/dist/consolidate/dag.js +14 -75
  220. package/dist/consolidate/decay.js +7 -19
  221. package/dist/consolidate/dedupe.d.ts +6 -52
  222. package/dist/consolidate/dedupe.js +13 -71
  223. package/dist/consolidate/flush-units.d.ts +3 -4
  224. package/dist/consolidate/flush-units.js +3 -3
  225. package/dist/consolidate/half-life-migration.d.ts +3 -26
  226. package/dist/consolidate/half-life-migration.js +11 -28
  227. package/dist/consolidate/llm-passes.js +4 -21
  228. package/dist/consolidate/memory-value-weights.d.ts +2 -13
  229. package/dist/consolidate/memory-value-weights.js +2 -13
  230. package/dist/consolidate/memory-value.d.ts +11 -84
  231. package/dist/consolidate/memory-value.js +16 -104
  232. package/dist/consolidate/merge.js +10 -31
  233. package/dist/consolidate/merged-row.js +2 -1
  234. package/dist/consolidate/physics-pass.js +1 -3
  235. package/dist/consolidate/replay.d.ts +6 -38
  236. package/dist/consolidate/replay.js +14 -52
  237. package/dist/consolidate/run.js +1 -1
  238. package/dist/consolidate/sleep.d.ts +1 -8
  239. package/dist/consolidate/sleep.js +5 -17
  240. package/dist/consolidate/trace.d.ts +3 -18
  241. package/dist/consolidate/trace.js +3 -18
  242. package/dist/consolidate/traces.js +6 -22
  243. package/dist/core/ablation.d.ts +4 -91
  244. package/dist/core/ablation.js +4 -91
  245. package/dist/core/ambient.d.ts +1 -8
  246. package/dist/core/ambient.js +1 -8
  247. package/dist/core/capture-contract.d.ts +4 -2
  248. package/dist/core/capture-contract.js +4 -2
  249. package/dist/core/card.d.ts +4 -1
  250. package/dist/core/card.js +8 -0
  251. package/dist/core/compare.d.ts +11 -67
  252. package/dist/core/compare.js +9 -63
  253. package/dist/core/config.d.ts +10 -24
  254. package/dist/core/config.js +13 -14
  255. package/dist/core/handoff.d.ts +1 -7
  256. package/dist/core/handoff.js +1 -7
  257. package/dist/core/memory-quality.js +1 -1
  258. package/dist/core/memory.d.ts +41 -164
  259. package/dist/core/memory.js +51 -221
  260. package/dist/core/package-root.d.ts +3 -0
  261. package/dist/core/package-root.js +5 -0
  262. package/dist/core/physics-config.d.ts +1 -4
  263. package/dist/core/physics-config.js +3 -8
  264. package/dist/core/physics.d.ts +15 -61
  265. package/dist/core/physics.js +59 -122
  266. package/dist/core/project-identity.d.ts +17 -58
  267. package/dist/core/project-identity.js +17 -38
  268. package/dist/core/project-remote.js +13 -2
  269. package/dist/core/raw-append-only.d.ts +5 -0
  270. package/dist/core/raw-append-only.js +7 -0
  271. package/dist/core/salience.d.ts +1 -7
  272. package/dist/core/salience.js +1 -7
  273. package/dist/dashboard/dashboard-actions.js +2 -2
  274. package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
  275. package/dist/dashboard/dashboard-snapshot.js +11 -2
  276. package/dist/dashboard/dashboard-types.d.ts +2 -1
  277. package/dist/dashboard/dashboard.d.ts +1 -0
  278. package/dist/dashboard/dashboard.js +50 -4
  279. package/dist/db/busy.d.ts +1 -1
  280. package/dist/db/busy.js +17 -8
  281. package/dist/db/connect.d.ts +1 -0
  282. package/dist/db/connect.js +3 -3
  283. package/dist/db/migrate.js +3 -3
  284. package/dist/db/migrations/types.d.ts +2 -5
  285. package/dist/db/migrations/v14.js +2 -3
  286. package/dist/db/migrations/v15.js +2 -8
  287. package/dist/db/migrations/v16.js +2 -3
  288. package/dist/db/migrations/v17.js +2 -3
  289. package/dist/db/migrations/v19.js +2 -5
  290. package/dist/db/migrations/v20.js +2 -7
  291. package/dist/db/migrations/v22.js +4 -17
  292. package/dist/db/migrations/v23.js +3 -14
  293. package/dist/db/migrations/v24.js +2 -4
  294. package/dist/db/migrations/v25.js +3 -8
  295. package/dist/db/migrations/v26.js +2 -13
  296. package/dist/db/migrations/v27.js +3 -11
  297. package/dist/db/migrations/v28.js +2 -14
  298. package/dist/db/migrations/v29.js +4 -18
  299. package/dist/db/migrations/v30.js +4 -16
  300. package/dist/db/migrations/v31.js +2 -15
  301. package/dist/db/migrations/v32.js +4 -22
  302. package/dist/db/migrations/v33.js +2 -15
  303. package/dist/db/migrations/v34.js +2 -11
  304. package/dist/db/migrations/v35.js +2 -11
  305. package/dist/db/migrations/v36.js +2 -11
  306. package/dist/db/migrations/v37.js +8 -33
  307. package/dist/db/migrations/v38.js +5 -38
  308. package/dist/db/migrations/v39.js +9 -20
  309. package/dist/db/migrations/v40.js +2 -9
  310. package/dist/db/migrations/v41.js +2 -24
  311. package/dist/db/migrations/v43.js +1 -1
  312. package/dist/db/migrations/v44.js +2 -8
  313. package/dist/db/migrations/v45.js +2 -7
  314. package/dist/db/migrations/v47.js +2 -3
  315. package/dist/db/migrations/v51.js +1 -1
  316. package/dist/db/open.d.ts +2 -0
  317. package/dist/db/open.js +17 -1
  318. package/dist/db/physics-state.d.ts +6 -22
  319. package/dist/db/physics-state.js +25 -36
  320. package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
  321. package/dist/db/raw-archive-mirror-cleanup.js +2 -17
  322. package/dist/db/vector-store.d.ts +2 -0
  323. package/dist/db/vector-store.js +8 -1
  324. package/dist/doctor.js +74 -19
  325. package/dist/entry/session-text.js +2 -1
  326. package/dist/eval/eval-stats.d.ts +15 -53
  327. package/dist/eval/eval-stats.js +12 -42
  328. package/dist/eval/eval-suite.d.ts +2 -13
  329. package/dist/eval/eval-suite.js +74 -34
  330. package/dist/eval/eval.d.ts +6 -24
  331. package/dist/eval/eval.js +7 -34
  332. package/dist/eval/judgment.d.ts +0 -3
  333. package/dist/eval/judgment.js +19 -11
  334. package/dist/extensions/openclaw-plugin/index.js +1 -1
  335. package/dist/graph/extract.d.ts +5 -27
  336. package/dist/graph/extract.js +7 -33
  337. package/dist/graph/recall.d.ts +7 -20
  338. package/dist/graph/recall.js +14 -76
  339. package/dist/graph/stream.d.ts +7 -39
  340. package/dist/graph/stream.js +11 -34
  341. package/dist/graph/view.d.ts +9 -35
  342. package/dist/graph/view.js +11 -39
  343. package/dist/hooks/codex-wrapper.js +2 -2
  344. package/dist/hooks/copilot.js +2 -1
  345. package/dist/hooks/hook-blocks.d.ts +6 -2
  346. package/dist/hooks/hook-blocks.js +37 -124
  347. package/dist/hooks/json-hooks.d.ts +4 -36
  348. package/dist/hooks/json-hooks.js +18 -57
  349. package/dist/hooks/opencode.d.ts +0 -38
  350. package/dist/hooks/opencode.js +9 -76
  351. package/dist/hooks/shared.d.ts +8 -17
  352. package/dist/hooks/shared.js +29 -20
  353. package/dist/importers/core.d.ts +12 -37
  354. package/dist/importers/core.js +9 -27
  355. package/dist/importers/markdown-parse.d.ts +8 -22
  356. package/dist/importers/markdown-parse.js +8 -25
  357. package/dist/importers/markdown.js +3 -12
  358. package/dist/importers/sources.js +7 -35
  359. package/dist/importers/vault.d.ts +2 -8
  360. package/dist/importers/vault.js +25 -81
  361. package/dist/index.d.ts +6 -2
  362. package/dist/index.js +6 -2
  363. package/dist/learn/autolearn.d.ts +14 -41
  364. package/dist/learn/autolearn.js +14 -41
  365. package/dist/learn/extract.js +2 -4
  366. package/dist/learn/forward-claim-detector.d.ts +6 -30
  367. package/dist/learn/forward-claim-detector.js +14 -66
  368. package/dist/learn/invalidation.d.ts +6 -18
  369. package/dist/learn/invalidation.js +9 -26
  370. package/dist/mcp/admin-tools.js +3 -5
  371. package/dist/mcp/memory-tools.js +4 -9
  372. package/dist/mcp/protocol.d.ts +8 -26
  373. package/dist/mcp/protocol.js +3 -6
  374. package/dist/mcp/recall-tools.js +3 -3
  375. package/dist/mcp/request.d.ts +3 -11
  376. package/dist/mcp/request.js +10 -26
  377. package/dist/mcp/server.d.ts +3 -9
  378. package/dist/mcp/server.js +5 -16
  379. package/dist/mcp/session-state.d.ts +1 -1
  380. package/dist/mcp/session-state.js +5 -11
  381. package/dist/mcp/stdio.d.ts +2 -6
  382. package/dist/mcp/stdio.js +48 -12
  383. package/dist/mcp/tools.js +5 -3
  384. package/dist/objects/customer-notes.d.ts +7 -42
  385. package/dist/objects/customer-notes.js +7 -48
  386. package/dist/objects/decisions.d.ts +12 -50
  387. package/dist/objects/decisions.js +15 -53
  388. package/dist/objects/incidents.d.ts +7 -38
  389. package/dist/objects/incidents.js +7 -41
  390. package/dist/objects/policies.d.ts +11 -89
  391. package/dist/objects/policies.js +11 -98
  392. package/dist/objects/processes.d.ts +7 -52
  393. package/dist/objects/processes.js +7 -61
  394. package/dist/objects/project-briefs.d.ts +11 -55
  395. package/dist/objects/project-briefs.js +14 -75
  396. package/dist/objects/skills.d.ts +7 -42
  397. package/dist/objects/skills.js +8 -54
  398. package/dist/postinstall.js +6 -19
  399. package/dist/predictions/planning-fallacy.d.ts +11 -34
  400. package/dist/rerankers/clef.js +3 -31
  401. package/dist/rerankers/cross-encoder.js +4 -6
  402. package/dist/rerankers/jev.js +9 -6
  403. package/dist/rerankers/llm.d.ts +2 -11
  404. package/dist/rerankers/llm.js +14 -14
  405. package/dist/rerankers/outage-warning.d.ts +2 -1
  406. package/dist/rerankers/outage-warning.js +2 -1
  407. package/dist/rerankers/remote.d.ts +1 -0
  408. package/dist/rerankers/remote.js +2 -0
  409. package/dist/rerankers/types.d.ts +2 -14
  410. package/dist/search/boosts.d.ts +0 -2
  411. package/dist/search/boosts.js +2 -2
  412. package/dist/search/goal-boost.d.ts +23 -0
  413. package/dist/search/goal-boost.js +90 -0
  414. package/dist/search/hybrid.d.ts +2 -0
  415. package/dist/search/multihop.js +2 -3
  416. package/dist/search/path-context.d.ts +5 -18
  417. package/dist/search/path-context.js +5 -18
  418. package/dist/search/physics-search.js +11 -8
  419. package/dist/search/rrf.d.ts +7 -35
  420. package/dist/search/rrf.js +5 -30
  421. package/dist/search/vector.d.ts +7 -0
  422. package/dist/search/vector.js +35 -5
  423. package/dist/server/auth.d.ts +9 -28
  424. package/dist/server/auth.js +32 -25
  425. package/dist/server/boot.d.ts +2 -21
  426. package/dist/server/boot.js +63 -96
  427. package/dist/server/client-ip.d.ts +3 -19
  428. package/dist/server/client-ip.js +5 -28
  429. package/dist/server/defaults.d.ts +3 -0
  430. package/dist/server/defaults.js +4 -0
  431. package/dist/server/key-check-bounds.d.ts +2 -1
  432. package/dist/server/lifecycle.d.ts +5 -4
  433. package/dist/server/lifecycle.js +19 -4
  434. package/dist/server/mcp-http.js +10 -44
  435. package/dist/server/rate-limit.d.ts +5 -18
  436. package/dist/server/rate-limit.js +4 -13
  437. package/dist/server/request.d.ts +4 -8
  438. package/dist/server/request.js +9 -17
  439. package/dist/server/route-table.js +42 -49
  440. package/dist/server/routes/admin.js +22 -28
  441. package/dist/server/routes/customer-notes.js +7 -12
  442. package/dist/server/routes/decisions.js +10 -17
  443. package/dist/server/routes/incidents.js +12 -20
  444. package/dist/server/routes/memories.js +12 -32
  445. package/dist/server/routes/object-routes.d.ts +0 -5
  446. package/dist/server/routes/object-routes.js +7 -15
  447. package/dist/server/routes/policies.js +10 -18
  448. package/dist/server/routes/predictions.js +13 -25
  449. package/dist/server/routes/processes.js +16 -26
  450. package/dist/server/routes/project-briefs.js +9 -16
  451. package/dist/server/routes/recall.js +10 -35
  452. package/dist/server/routes/skills.js +8 -18
  453. package/dist/server/server-detect.d.ts +9 -53
  454. package/dist/server/server-detect.js +24 -90
  455. package/dist/server/sleep-offload.js +4 -1
  456. package/dist/server/types.d.ts +12 -10
  457. package/dist/server/validation.d.ts +3 -1
  458. package/dist/server/validation.js +10 -23
  459. package/dist/server.d.ts +2 -2
  460. package/dist/server.js +3 -2
  461. package/dist/sharing/global-store.d.ts +19 -0
  462. package/dist/sharing/global-store.js +75 -0
  463. package/dist/sharing/global-sync.d.ts +6 -0
  464. package/dist/sharing/global-sync.js +80 -0
  465. package/dist/sharing/project-merge.d.ts +4 -5
  466. package/dist/sharing/project-merge.js +9 -7
  467. package/dist/sharing/scope.d.ts +4 -11
  468. package/dist/sharing/scope.js +4 -11
  469. package/dist/sharing/search-both.d.ts +60 -0
  470. package/dist/sharing/search-both.js +138 -0
  471. package/dist/sharing/share.d.ts +38 -0
  472. package/dist/sharing/share.js +226 -0
  473. package/dist/store/ambient.js +4 -9
  474. package/dist/store/audit-event.d.ts +4 -12
  475. package/dist/store/audit-event.js +4 -12
  476. package/dist/store/audit.d.ts +2 -5
  477. package/dist/store/audit.js +4 -12
  478. package/dist/store/auth.d.ts +6 -6
  479. package/dist/store/auth.js +10 -9
  480. package/dist/store/candidates.d.ts +20 -3
  481. package/dist/store/candidates.js +77 -48
  482. package/dist/store/card-detail.d.ts +2 -1
  483. package/dist/store/card-detail.js +2 -1
  484. package/dist/store/cards.d.ts +14 -9
  485. package/dist/store/cards.js +72 -126
  486. package/dist/store/conflicts.d.ts +4 -21
  487. package/dist/store/conflicts.js +71 -150
  488. package/dist/store/connectors/github.d.ts +10 -10
  489. package/dist/store/connectors/github.js +10 -10
  490. package/dist/store/dashboard-reads.js +4 -8
  491. package/dist/store/delete-and-batch.d.ts +11 -31
  492. package/dist/store/delete-and-batch.js +48 -64
  493. package/dist/store/delivery-recorder.d.ts +8 -4
  494. package/dist/store/delivery-recorder.js +25 -15
  495. package/dist/store/diagnostics.js +6 -13
  496. package/dist/store/dormant.d.ts +7 -29
  497. package/dist/store/dormant.js +15 -56
  498. package/dist/store/embeddings/index.d.ts +11 -80
  499. package/dist/store/embeddings/index.js +71 -207
  500. package/dist/store/embeddings/local.js +15 -32
  501. package/dist/store/embeddings/provider.d.ts +16 -53
  502. package/dist/store/embeddings/provider.js +41 -69
  503. package/dist/store/entry-reads.d.ts +21 -57
  504. package/dist/store/entry-reads.js +65 -126
  505. package/dist/store/entry-row.d.ts +6 -35
  506. package/dist/store/entry-row.js +9 -37
  507. package/dist/store/entry-writes.d.ts +10 -16
  508. package/dist/store/entry-writes.js +17 -35
  509. package/dist/store/goals.d.ts +3 -40
  510. package/dist/store/goals.js +21 -160
  511. package/dist/store/graph-queue.d.ts +6 -22
  512. package/dist/store/graph-queue.js +14 -45
  513. package/dist/store/graph-reads.d.ts +11 -35
  514. package/dist/store/graph-reads.js +20 -58
  515. package/dist/store/graph-rows.d.ts +3 -6
  516. package/dist/store/graph-rows.js +6 -9
  517. package/dist/store/graph-view-rows.d.ts +2 -1
  518. package/dist/store/graph-view-rows.js +2 -1
  519. package/dist/store/graph-writes.d.ts +6 -31
  520. package/dist/store/graph-writes.js +13 -37
  521. package/dist/store/half-life.d.ts +2 -1
  522. package/dist/store/half-life.js +14 -16
  523. package/dist/store/handoffs.d.ts +5 -11
  524. package/dist/store/handoffs.js +16 -34
  525. package/dist/store/index-and-stats.d.ts +6 -19
  526. package/dist/store/index-and-stats.js +34 -82
  527. package/dist/store/markdown.d.ts +2 -6
  528. package/dist/store/markdown.js +21 -20
  529. package/dist/store/mirrors.d.ts +2 -6
  530. package/dist/store/mirrors.js +14 -23
  531. package/dist/store/open.js +6 -13
  532. package/dist/store/planning-fallacy-evidence.d.ts +2 -30
  533. package/dist/store/planning-fallacy-evidence.js +8 -37
  534. package/dist/store/port.d.ts +82 -79
  535. package/dist/store/predictions.d.ts +11 -51
  536. package/dist/store/predictions.js +38 -119
  537. package/dist/{cli → store}/quality-repair.js +15 -31
  538. package/dist/store/raw-archive.d.ts +4 -16
  539. package/dist/store/raw-archive.js +14 -29
  540. package/dist/store/recall-scope.d.ts +19 -79
  541. package/dist/store/recall-scope.js +21 -82
  542. package/dist/store/recall-trace.d.ts +10 -77
  543. package/dist/store/recall-trace.js +19 -95
  544. package/dist/store/rejected-values.js +7 -19
  545. package/dist/store/rejection.d.ts +12 -58
  546. package/dist/store/rejection.js +13 -65
  547. package/dist/store/report-reads.d.ts +6 -0
  548. package/dist/store/report-reads.js +29 -0
  549. package/dist/store/rows.d.ts +9 -19
  550. package/dist/store/rows.js +36 -34
  551. package/dist/store/rule-sql.d.ts +5 -0
  552. package/dist/store/rule-sql.js +37 -0
  553. package/dist/store/search-rows.d.ts +7 -38
  554. package/dist/store/search-rows.js +14 -50
  555. package/dist/store/sessions.d.ts +10 -47
  556. package/dist/store/sessions.js +17 -73
  557. package/dist/store/sqlite/connector-events-group.js +2 -2
  558. package/dist/store/sqlite/entry-writes-group.js +2 -2
  559. package/dist/store/sqlite/error-codec.js +4 -2
  560. package/dist/store/sqlite/executor.d.ts +2 -1
  561. package/dist/store/sqlite/executor.js +2 -1
  562. package/dist/store/sqlite/local.d.ts +3 -3
  563. package/dist/store/sqlite/local.js +1 -0
  564. package/dist/store/sqlite/object-rows.js +6 -3
  565. package/dist/store/sqlite/objects-group.js +4 -2
  566. package/dist/store/sqlite/quarantine-group.js +2 -2
  567. package/dist/store/sqlite/store.d.ts +1 -4
  568. package/dist/store/sqlite/store.js +2 -3
  569. package/dist/store/sqlite/vector-reads-group.js +2 -2
  570. package/dist/store/sqlite/worker-jobs.js +1 -1
  571. package/dist/store/sqlite/worker-ops.d.ts +13 -2
  572. package/dist/store/sqlite/worker-ops.js +13 -2
  573. package/dist/store/sqlite/worker-store.js +5 -2
  574. package/dist/store/summaries.d.ts +10 -62
  575. package/dist/store/summaries.js +34 -146
  576. package/dist/store/summary-dirty.js +1 -1
  577. package/dist/store/tenant-lookup.d.ts +6 -1
  578. package/dist/store/tenant-lookup.js +7 -0
  579. package/dist/store/tenant.d.ts +2 -16
  580. package/dist/store/tenant.js +4 -19
  581. package/dist/store/token-ledger.d.ts +13 -43
  582. package/dist/store/token-ledger.js +19 -50
  583. package/dist/store/usage-reports.js +5 -13
  584. package/dist/store/vector-index.d.ts +46 -0
  585. package/dist/store/vector-index.js +170 -0
  586. package/dist/store/working-memory.d.ts +6 -25
  587. package/dist/store/working-memory.js +18 -52
  588. package/dist/store/yaml.d.ts +1 -5
  589. package/dist/store/yaml.js +2 -6
  590. package/dist/support-bundle.js +7 -5
  591. package/dist/trust/reject-flow.js +1 -3
  592. package/dist/util/anthropic-messages.js +14 -2
  593. package/dist/util/atomic-write.d.ts +2 -1
  594. package/dist/util/atomic-write.js +35 -4
  595. package/dist/util/capped-json.d.ts +6 -0
  596. package/dist/util/capped-json.js +46 -0
  597. package/dist/util/crash-handlers.d.ts +8 -1
  598. package/dist/util/crash-handlers.js +52 -10
  599. package/dist/util/env.d.ts +13 -6
  600. package/dist/util/env.js +14 -7
  601. package/dist/util/home-path.d.ts +2 -1
  602. package/dist/util/home-path.js +4 -2
  603. package/dist/util/http-retry.d.ts +3 -1
  604. package/dist/util/http-retry.js +26 -5
  605. package/dist/util/log.d.ts +3 -2
  606. package/dist/util/log.js +25 -9
  607. package/dist/util/request-scope.d.ts +2 -1
  608. package/dist/util/request-scope.js +2 -1
  609. package/dist/util/secret-detect.d.ts +5 -30
  610. package/dist/util/secret-detect.js +13 -39
  611. package/dist/util/stored-json.d.ts +1 -1
  612. package/dist/util/stored-json.js +1 -1
  613. package/dist/util/token-text.d.ts +1 -4
  614. package/dist/util/token-text.js +1 -4
  615. package/dist/util/transcript-tail.d.ts +2 -0
  616. package/dist/util/transcript-tail.js +24 -23
  617. package/dist/util/version.d.ts +5 -20
  618. package/dist/util/version.js +5 -20
  619. package/extensions/openclaw-plugin/index.ts +1 -1
  620. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  621. package/extensions/openclaw-plugin/package.json +1 -1
  622. package/openclaw.plugin.json +1 -1
  623. package/package.json +1 -1
  624. package/dist/connectors/github/cli-impl.d.ts +0 -25
  625. package/dist/sharing/shared.d.ts +0 -187
  626. package/dist/sharing/shared.js +0 -563
  627. package/dist/store/vector-writes.d.ts +0 -13
  628. package/dist/store/vector-writes.js +0 -89
  629. /package/dist/{cli → store}/quality-repair.d.ts +0 -0
@@ -5,8 +5,11 @@ import { autoDetectContext } from '../api/context-auto.js';
5
5
  import { detectScope } from '../sharing/scope.js';
6
6
  import { bookLedgerTurn } from '../api/ledger-db.js';
7
7
  import { readHookStdin } from './stdin.js';
8
+ import { isJsonObject, isJsonString } from '../util/json.js';
8
9
  import * as api from '../api/index.js';
10
+ import { DEFAULT_CONTEXT_BUDGET } from '../api/context.js';
9
11
  import { resolveTenantId } from '../store/tenant.js';
12
+ import { cliApiContext } from './api-context.js';
10
13
  import { renderAmbientSummary } from '../core/ambient.js';
11
14
  import { contextBlockLines, contextCost, crossProjectLines, settleTokens } from '../api/context-render.js';
12
15
  import { additionalContextOutput, flushDeliveryRecorder, hasContextData, sessionStartEnvelope, toRenderItems, } from '../api/prompt-hook.js';
@@ -14,8 +17,8 @@ import { parseLimitFlag, parseCountFlag, parseBudgetFlag, flagIsTrue } from './f
14
17
  import { requireInit } from './shared.js';
15
18
  import { printActiveTaskSnapshot, printSessionEvents, printHandoff, captureConsole } from './print.js';
16
19
  import { hostSessionId, hookStoreRoot, hookRuntime, payloadCwdRoot, runHookWithStores, inPilotHoldout, startDeliveryRecorder } from './hook-runtime.js';
17
- export async function cmdContext(hippoRoot, args, flags, stdinText) {
18
- const rec = flagIsTrue(flags, 'pinned-only') ? startDeliveryRecorder(hippoRoot, stdinText, hookRuntime(flags)) : null;
20
+ async function cmdContext(hippoRoot, args, flags, stdinText) {
21
+ const rec = startDeliveryRecorder(hippoRoot, stdinText, hookRuntime(flags), flagIsTrue(flags, 'pinned-only') ? undefined : 'context');
19
22
  // No try/finally: a render throw keeps its own exit code and writes no event.
20
23
  await renderContext(hippoRoot, args, flags, stdinText, rec);
21
24
  flushDeliveryRecorder(rec);
@@ -26,11 +29,12 @@ function readHookPayload(stdinText) {
26
29
  let prompt;
27
30
  if (stdinText && stdinText.trim() !== '') {
28
31
  try {
29
- // SAFETY: both fields are type-checked below before use; `?? {}` covers a JSON null payload.
30
- const { session_id: sid, prompt: raw } = (JSON.parse(stdinText.trim()) ?? {});
31
- if (typeof sid === 'string' && sid.trim() !== '')
32
+ const payload = JSON.parse(stdinText.trim());
33
+ const sid = isJsonObject(payload) ? payload['session_id'] : undefined;
34
+ const raw = isJsonObject(payload) ? payload['prompt'] : undefined;
35
+ if (isJsonString(sid) && sid.trim() !== '')
32
36
  sessionId = sid;
33
- if (typeof raw === 'string')
37
+ if (isJsonString(raw))
34
38
  prompt = raw;
35
39
  }
36
40
  catch {
@@ -54,14 +58,14 @@ async function renderContext(hippoRoot, args, flags, stdinText, rec) {
54
58
  rec?.disabled();
55
59
  return;
56
60
  }
57
- const budget = parseBudgetFlag(flags['budget'], 1500);
61
+ const budget = parseBudgetFlag(flags['budget'], DEFAULT_CONTEXT_BUDGET);
58
62
  if (budget <= 0) {
59
63
  rec?.disabled();
60
64
  return;
61
65
  }
62
66
  // --auto shells out to git, so it stays CLI-side; api.getContext stays host-agnostic and falls back to '*'.
63
67
  const query = contextQuery(args, flags);
64
- const ctx = { hippoRoot, tenantId: resolvedTenant, actor: api.adminActor('cli') };
68
+ const ctx = cliApiContext(hippoRoot, resolvedTenant);
65
69
  const format = String(flags['format'] ?? 'markdown');
66
70
  const framing = String(flags['framing'] ?? 'observe');
67
71
  const opts = buildContextOpts(flags, { query, budget, pinnedOnly, format, framing, session, rec });
@@ -1,7 +1,7 @@
1
- import { type CliFlags } from './flag-values.js';
2
- export declare function cmdSnapshot(hippoRoot: string, args: string[], flags: CliFlags): void;
3
- export declare function cmdSession(hippoRoot: string, args: string[], flags: CliFlags): void;
4
- export declare function cmdHandoff(hippoRoot: string, args: string[], flags: CliFlags): void;
5
- export declare function cmdCurrent(hippoRoot: string, args: string[], flags: CliFlags): void;
6
- export declare function cmdWm(hippoRoot: string, args: string[], flags: CliFlags): void;
1
+ import { type CommandContext } from './flag-values.js';
2
+ export declare function handleSnapshot({ hippoRoot, tenantId, args, flags }: CommandContext): void;
3
+ export declare function handleSession({ hippoRoot, tenantId, args, flags }: CommandContext): void;
4
+ export declare function handleHandoff({ hippoRoot, tenantId, args, flags }: CommandContext): void;
5
+ export declare function handleCurrent({ hippoRoot, tenantId, args, flags }: CommandContext): void;
6
+ export declare function handleWm({ hippoRoot, args, flags }: CommandContext): void;
7
7
  //# sourceMappingURL=continuity.d.ts.map
@@ -2,24 +2,24 @@
2
2
  import { saveActiveTaskSnapshot, loadActiveTaskSnapshot, clearActiveTaskSnapshot, appendSessionEvent, listSessionEvents, } from '../store/sessions.js';
3
3
  import { saveSessionHandoff, loadLatestHandoff, loadHandoffById, stampHandoffOutcome } from '../store/handoffs.js';
4
4
  import { isHandoffOutcome, formatHandoffEvidenceLine } from '../core/handoff.js';
5
- import { resolveTenantId } from '../store/tenant.js';
6
5
  import { wmPush, wmRead, wmClear, wmFlush } from '../store/working-memory.js';
7
6
  import { collectHandoffEvidence } from '../capture/handoff-evidence.js';
8
7
  import { printError } from './output.js';
9
8
  import { requireInit } from './shared.js';
10
9
  import { printActiveTaskSnapshot, printSessionEvents, printHandoff } from './print.js';
11
- import { boolFlag } from './flag-values.js';
10
+ import { boolFlag, isStringFlag } from './flag-values.js';
11
+ import { CliExit } from './exit.js';
12
12
  const ISO_DATETIME_CHARS = 19;
13
- function snapshotSave(hippoRoot, flags) {
13
+ function snapshotSave(hippoRoot, tenantId, flags) {
14
14
  const task = String(flags['task'] ?? '').trim();
15
15
  const summary = String(flags['summary'] ?? '').trim();
16
16
  const nextStep = String(flags['next-step'] ?? '').trim();
17
17
  const sessionId = String(flags['session'] ?? flags['id'] ?? '').trim();
18
18
  if (!task || !summary || !nextStep) {
19
19
  printError('Usage: hippo snapshot save --task <task> --summary <summary> --next-step <step> [--source <source>] [--session <session-id>]');
20
- process.exit(1);
20
+ throw new CliExit(1);
21
21
  }
22
- const snapshot = saveActiveTaskSnapshot(hippoRoot, resolveTenantId({}), {
22
+ const snapshot = saveActiveTaskSnapshot(hippoRoot, tenantId, {
23
23
  task,
24
24
  summary,
25
25
  next_step: nextStep,
@@ -33,16 +33,16 @@ function snapshotSave(hippoRoot, flags) {
33
33
  console.log(` Session: ${snapshot.session_id}`);
34
34
  }
35
35
  }
36
- function snapshotClear(hippoRoot, flags) {
37
- const cleared = clearActiveTaskSnapshot(hippoRoot, resolveTenantId({}), String(flags['status'] ?? 'cleared'));
36
+ function snapshotClear(hippoRoot, tenantId, flags) {
37
+ const cleared = clearActiveTaskSnapshot(hippoRoot, tenantId, String(flags['status'] ?? 'cleared'));
38
38
  if (!cleared) {
39
39
  console.log('No active task snapshot to clear.');
40
40
  return;
41
41
  }
42
42
  console.log('Cleared active task snapshot.');
43
43
  }
44
- function snapshotShow(hippoRoot, flags) {
45
- const snapshot = loadActiveTaskSnapshot(hippoRoot, resolveTenantId({}));
44
+ function snapshotShow(hippoRoot, tenantId, flags) {
45
+ const snapshot = loadActiveTaskSnapshot(hippoRoot, tenantId);
46
46
  if (!snapshot) {
47
47
  if (flags['json']) {
48
48
  console.log(JSON.stringify({ snapshot: null }));
@@ -58,26 +58,26 @@ function snapshotShow(hippoRoot, flags) {
58
58
  }
59
59
  printActiveTaskSnapshot(snapshot);
60
60
  }
61
- export function cmdSnapshot(hippoRoot, args, flags) {
61
+ export function handleSnapshot({ hippoRoot, tenantId, args, flags }) {
62
62
  requireInit(hippoRoot);
63
63
  const subcommand = args[0] ?? 'show';
64
64
  if (subcommand === 'save')
65
- return snapshotSave(hippoRoot, flags);
65
+ return snapshotSave(hippoRoot, tenantId, flags);
66
66
  if (subcommand === 'clear')
67
- return snapshotClear(hippoRoot, flags);
67
+ return snapshotClear(hippoRoot, tenantId, flags);
68
68
  if (subcommand === 'show')
69
- return snapshotShow(hippoRoot, flags);
69
+ return snapshotShow(hippoRoot, tenantId, flags);
70
70
  printError('Usage: hippo snapshot <save|show|clear>');
71
- process.exit(1);
71
+ throw new CliExit(1);
72
72
  }
73
- function sessionLog(hippoRoot, s, flags) {
73
+ function sessionLog(hippoRoot, tenantId, s, flags) {
74
74
  const eventType = String(flags['type'] ?? 'note').trim();
75
75
  const content = String(flags['content'] ?? '').trim();
76
76
  if (!s.sessionId || !content) {
77
77
  printError('Usage: hippo session log --id <session-id> --content <text> [--type <type>] [--task <task>] [--source <source>]');
78
- process.exit(1);
78
+ throw new CliExit(1);
79
79
  }
80
- const event = appendSessionEvent(hippoRoot, resolveTenantId({}), {
80
+ const event = appendSessionEvent(hippoRoot, tenantId, {
81
81
  session_id: s.sessionId,
82
82
  task: s.task || null,
83
83
  event_type: eventType || 'note',
@@ -88,8 +88,8 @@ function sessionLog(hippoRoot, s, flags) {
88
88
  console.log(` Session: ${event.session_id}`);
89
89
  console.log(` Type: ${event.event_type}`);
90
90
  }
91
- function sessionShow(hippoRoot, s, flags) {
92
- const events = listSessionEvents(hippoRoot, resolveTenantId({}), {
91
+ function sessionShow(hippoRoot, tenantId, s, flags) {
92
+ const events = listSessionEvents(hippoRoot, tenantId, {
93
93
  session_id: s.sessionId || undefined,
94
94
  task: s.task || undefined,
95
95
  limit: s.limit,
@@ -100,9 +100,9 @@ function sessionShow(hippoRoot, s, flags) {
100
100
  }
101
101
  printSessionEvents(events);
102
102
  }
103
- function sessionLatest(hippoRoot, s, flags) {
104
- const snapshot = loadActiveTaskSnapshot(hippoRoot, resolveTenantId({}));
105
- const events = listSessionEvents(hippoRoot, resolveTenantId({}), {
103
+ function sessionLatest(hippoRoot, tenantId, s, flags) {
104
+ const snapshot = loadActiveTaskSnapshot(hippoRoot, tenantId);
105
+ const events = listSessionEvents(hippoRoot, tenantId, {
106
106
  session_id: s.sessionId || snapshot?.session_id || undefined,
107
107
  limit: s.limit,
108
108
  });
@@ -119,23 +119,23 @@ function sessionLatest(hippoRoot, s, flags) {
119
119
  }
120
120
  printSessionEvents(events);
121
121
  }
122
- function sessionComplete(hippoRoot, s, flags) {
122
+ function sessionComplete(hippoRoot, tenantId, s, flags) {
123
123
  const { sessionId, task } = s;
124
124
  const outcomeRaw = String(flags['outcome'] ?? '').trim();
125
125
  const summary = String(flags['summary'] ?? '').trim();
126
126
  if (!sessionId) {
127
127
  printError('Usage: hippo session complete --session <session-id> --outcome <success|failure|partial> [--summary "..."]');
128
- process.exit(1);
128
+ throw new CliExit(1);
129
129
  }
130
130
  if (!isHandoffOutcome(outcomeRaw)) {
131
131
  printError(`Invalid outcome: "${outcomeRaw}". Must be one of: success, failure, partial.`);
132
- process.exit(1);
132
+ throw new CliExit(1);
133
133
  }
134
134
  const outcome = outcomeRaw;
135
135
  const metadata = { ended_at: new Date().toISOString() };
136
136
  if (summary)
137
137
  metadata.summary = summary;
138
- const event = appendSessionEvent(hippoRoot, resolveTenantId({}), {
138
+ const event = appendSessionEvent(hippoRoot, tenantId, {
139
139
  session_id: sessionId,
140
140
  task: task || null,
141
141
  event_type: 'session_complete',
@@ -144,12 +144,12 @@ function sessionComplete(hippoRoot, s, flags) {
144
144
  metadata,
145
145
  });
146
146
  console.log(`Completed session ${event.session_id} with outcome=${outcome} (event #${event.id})`);
147
- const stamped = stampHandoffOutcome(hippoRoot, resolveTenantId({}), sessionId, outcome);
147
+ const stamped = stampHandoffOutcome(hippoRoot, tenantId, sessionId, outcome);
148
148
  if (stamped > 0) {
149
149
  console.log(`Stamped outcome on handoff for session ${sessionId}`);
150
150
  }
151
151
  }
152
- export function cmdSession(hippoRoot, args, flags) {
152
+ export function handleSession({ hippoRoot, tenantId, args, flags }) {
153
153
  requireInit(hippoRoot);
154
154
  const subcommand = args[0] ?? 'show';
155
155
  const sessionId = String(flags['id'] ?? flags['session'] ?? '').trim();
@@ -157,20 +157,20 @@ export function cmdSession(hippoRoot, args, flags) {
157
157
  const limit = Math.max(1, parseInt(String(flags['limit'] ?? '8'), 10) || 8);
158
158
  const s = { sessionId, task, limit };
159
159
  if (subcommand === 'log')
160
- return sessionLog(hippoRoot, s, flags);
160
+ return sessionLog(hippoRoot, tenantId, s, flags);
161
161
  if (subcommand === 'show')
162
- return sessionShow(hippoRoot, s, flags);
162
+ return sessionShow(hippoRoot, tenantId, s, flags);
163
163
  if (subcommand === 'latest')
164
- return sessionLatest(hippoRoot, s, flags);
164
+ return sessionLatest(hippoRoot, tenantId, s, flags);
165
165
  if (subcommand === 'complete')
166
- return sessionComplete(hippoRoot, s, flags);
166
+ return sessionComplete(hippoRoot, tenantId, s, flags);
167
167
  if (subcommand === 'resume')
168
- return sessionResume(hippoRoot, sessionId);
168
+ return sessionResume(hippoRoot, tenantId, sessionId);
169
169
  printError('Usage: hippo session <log|show|latest|resume|complete>');
170
- process.exit(1);
170
+ throw new CliExit(1);
171
171
  }
172
- function sessionResume(hippoRoot, sessionId) {
173
- const handoff = loadLatestHandoff(hippoRoot, resolveTenantId({}), sessionId || undefined);
172
+ function sessionResume(hippoRoot, tenantId, sessionId) {
173
+ const handoff = loadLatestHandoff(hippoRoot, tenantId, sessionId || undefined);
174
174
  if (!handoff) {
175
175
  console.log('No handoff to resume from.');
176
176
  return;
@@ -215,18 +215,18 @@ function sessionResume(hippoRoot, sessionId) {
215
215
  }
216
216
  /** A repeatable flag as a list: absent is empty, one value is a singleton. */
217
217
  function flagList(value) {
218
- return Array.isArray(value) ? value : (typeof value === 'string' ? [value] : []);
218
+ return Array.isArray(value) ? value : (isStringFlag(value) ? [value] : []);
219
219
  }
220
- function handoffCreate(hippoRoot, flags) {
220
+ function handoffCreate(hippoRoot, tenantId, flags) {
221
221
  const summary = String(flags['summary'] ?? '').trim();
222
222
  if (!summary) {
223
223
  printError('Usage: hippo handoff create --summary "..." [--next "..."] [--session <id>] [--task <id>] [--artifact <path>...] [--constraint <text>...] [--outcome <success|failure|partial>] [--target-runtime <name>] [--card-id <id>] [--tests <pass|fail|unknown>]');
224
- process.exit(1);
224
+ throw new CliExit(1);
225
225
  }
226
226
  const outcomeRaw = flags['outcome'];
227
227
  if (outcomeRaw !== undefined && !isHandoffOutcome(outcomeRaw)) {
228
228
  printError(`Invalid outcome: "${String(outcomeRaw)}". Must be one of: success, failure, partial.`);
229
- process.exit(1);
229
+ throw new CliExit(1);
230
230
  }
231
231
  const sessionId = String(flags['session'] ?? flags['id'] ?? '').trim() || `fallback-${Date.now()}-${process.pid}`;
232
232
  const nextAction = String(flags['next'] ?? '').trim() || undefined;
@@ -237,14 +237,14 @@ function handoffCreate(hippoRoot, flags) {
237
237
  // parseArgs turns a value-less flag into `true`; refuse rather than store "true".
238
238
  if (flags[name] === true) {
239
239
  printError(`--${name} needs a value`);
240
- process.exit(1);
240
+ throw new CliExit(1);
241
241
  }
242
242
  }
243
243
  const targetRuntime = String(flags['target-runtime'] ?? '').trim() || undefined;
244
244
  const cardId = String(flags['card-id'] ?? '').trim() || undefined;
245
245
  const testStatus = String(flags['tests'] ?? '').trim();
246
246
  const evidence = collectHandoffEvidence(process.cwd(), testStatus === 'pass' || testStatus === 'fail' ? testStatus : 'unknown');
247
- const handoff = saveSessionHandoff(hippoRoot, resolveTenantId({}), {
247
+ const handoff = saveSessionHandoff(hippoRoot, tenantId, {
248
248
  version: 1,
249
249
  sessionId,
250
250
  repoRoot: process.cwd(),
@@ -281,9 +281,9 @@ function printCreatedHandoff(handoff) {
281
281
  if (handoff.evidence)
282
282
  console.log(` Evidence: ${formatHandoffEvidenceLine(handoff.evidence)}`);
283
283
  }
284
- function handoffLatest(hippoRoot, flags) {
284
+ function handoffLatest(hippoRoot, tenantId, flags) {
285
285
  const sessionId = String(flags['session'] ?? flags['id'] ?? '').trim() || undefined;
286
- const handoff = loadLatestHandoff(hippoRoot, resolveTenantId({}), sessionId);
286
+ const handoff = loadLatestHandoff(hippoRoot, tenantId, sessionId);
287
287
  if (!handoff) {
288
288
  if (flags['json']) {
289
289
  console.log(JSON.stringify({ handoff: null }));
@@ -299,18 +299,18 @@ function handoffLatest(hippoRoot, flags) {
299
299
  }
300
300
  printHandoff(handoff);
301
301
  }
302
- function handoffShow(hippoRoot, args, flags) {
302
+ function handoffShow(hippoRoot, tenantId, args, flags) {
303
303
  const idArg = args[1];
304
304
  if (!idArg) {
305
305
  printError('Usage: hippo handoff show <id> [--json]');
306
- process.exit(1);
306
+ throw new CliExit(1);
307
307
  }
308
308
  const handoffId = parseInt(idArg, 10);
309
309
  if (!Number.isFinite(handoffId) || handoffId <= 0) {
310
310
  printError(`Invalid handoff ID: ${idArg}`);
311
- process.exit(1);
311
+ throw new CliExit(1);
312
312
  }
313
- const handoff = loadHandoffById(hippoRoot, resolveTenantId({}), handoffId);
313
+ const handoff = loadHandoffById(hippoRoot, tenantId, handoffId);
314
314
  if (!handoff) {
315
315
  if (flags['json']) {
316
316
  console.log(JSON.stringify({ handoff: null }));
@@ -326,17 +326,17 @@ function handoffShow(hippoRoot, args, flags) {
326
326
  }
327
327
  printHandoff(handoff);
328
328
  }
329
- export function cmdHandoff(hippoRoot, args, flags) {
329
+ export function handleHandoff({ hippoRoot, tenantId, args, flags }) {
330
330
  requireInit(hippoRoot);
331
331
  const subcommand = args[0] ?? 'latest';
332
332
  if (subcommand === 'create')
333
- return handoffCreate(hippoRoot, flags);
333
+ return handoffCreate(hippoRoot, tenantId, flags);
334
334
  if (subcommand === 'latest')
335
- return handoffLatest(hippoRoot, flags);
335
+ return handoffLatest(hippoRoot, tenantId, flags);
336
336
  if (subcommand === 'show')
337
- return handoffShow(hippoRoot, args, flags);
337
+ return handoffShow(hippoRoot, tenantId, args, flags);
338
338
  printError('Usage: hippo handoff <create|latest|show>');
339
- process.exit(1);
339
+ throw new CliExit(1);
340
340
  }
341
341
  function printCurrentState(snapshot, events) {
342
342
  console.log('# Current State\n');
@@ -361,11 +361,11 @@ function printCurrentState(snapshot, events) {
361
361
  }
362
362
  }
363
363
  }
364
- function currentShow(hippoRoot, flags) {
364
+ function currentShow(hippoRoot, tenantId, flags) {
365
365
  const asJson = boolFlag(flags, 'json');
366
- const snapshot = loadActiveTaskSnapshot(hippoRoot, resolveTenantId({}));
366
+ const snapshot = loadActiveTaskSnapshot(hippoRoot, tenantId);
367
367
  const sessionId = snapshot?.session_id ?? undefined;
368
- const events = listSessionEvents(hippoRoot, resolveTenantId({}), {
368
+ const events = listSessionEvents(hippoRoot, tenantId, {
369
369
  session_id: sessionId,
370
370
  limit: 5,
371
371
  });
@@ -388,18 +388,16 @@ function currentShow(hippoRoot, flags) {
388
388
  }
389
389
  printCurrentState(snapshot, events);
390
390
  }
391
- export function cmdCurrent(hippoRoot, args, flags) {
391
+ export function handleCurrent({ hippoRoot, tenantId, args, flags }) {
392
392
  requireInit(hippoRoot);
393
393
  const subcommand = args[0] ?? 'show';
394
394
  if (subcommand === 'show')
395
- return currentShow(hippoRoot, flags);
395
+ return currentShow(hippoRoot, tenantId, flags);
396
396
  printError('Usage: hippo current <show>');
397
- process.exit(1);
397
+ throw new CliExit(1);
398
398
  }
399
- // ---------------------------------------------------------------------------
400
399
  // Working Memory
401
- // ---------------------------------------------------------------------------
402
- export function cmdWm(hippoRoot, args, flags) {
400
+ export function handleWm({ hippoRoot, args, flags }) {
403
401
  requireInit(hippoRoot);
404
402
  const subcommand = args[0] ?? '';
405
403
  if (subcommand === 'push')
@@ -421,7 +419,7 @@ export function cmdWm(hippoRoot, args, flags) {
421
419
  return;
422
420
  }
423
421
  printError('Usage: hippo wm <push|read|clear|flush>');
424
- process.exit(1);
422
+ throw new CliExit(1);
425
423
  }
426
424
  function wmPushCmd(hippoRoot, flags) {
427
425
  const scope = String(flags['scope'] ?? 'default').trim();
@@ -431,7 +429,7 @@ function wmPushCmd(hippoRoot, flags) {
431
429
  const taskId = flags['task'] ? String(flags['task']).trim() : undefined;
432
430
  if (!content) {
433
431
  printError('Usage: hippo wm push --scope <scope> --content "..." [--importance 0.8] [--session <id>] [--task <id>]');
434
- process.exit(1);
432
+ throw new CliExit(1);
435
433
  }
436
434
  const id = wmPush(hippoRoot, {
437
435
  scope,
@@ -18,19 +18,7 @@ export interface CorrectionLatencyReport {
18
18
  maxMs: number | null;
19
19
  pairs: CorrectionPair[];
20
20
  }
21
- /**
22
- * Correction latency = wall-clock delta between when hippo first saw the
23
- * change-of-truth and when the supersession actually landed.
24
- *
25
- * For each (old, new) chain via `old.superseded_by = new.id`:
26
- * - `correctedAt` = `new.created` (always)
27
- * - `observedAt` = source row's `created` if `new.extracted_from` is set,
28
- * else `new.created` (no earlier observation possible)
29
- *
30
- * Pairs split into two cohorts:
31
- * - `extraction` — derived from a raw receipt; latency is meaningful
32
- * - `manual` — direct supersede call; latency is trivially 0 and
33
- * excluded from percentiles to avoid masking real lag
34
- */
21
+ /** Correction latency = `new.created` minus the observation time (the extracted-from row's `created`, else `new.created`).
22
+ * Manual supersedes have latency 0 and are excluded from percentiles so they do not mask real lag. */
35
23
  export declare function buildCorrectionLatency(entries: MemoryEntry[]): CorrectionLatencyReport;
36
24
  //# sourceMappingURL=correction-latency.d.ts.map
@@ -10,20 +10,8 @@ function percentile(sorted, q) {
10
10
  return sorted[lo];
11
11
  return sorted[lo] + (sorted[hi] - sorted[lo]) * (idx - lo);
12
12
  }
13
- /**
14
- * Correction latency = wall-clock delta between when hippo first saw the
15
- * change-of-truth and when the supersession actually landed.
16
- *
17
- * For each (old, new) chain via `old.superseded_by = new.id`:
18
- * - `correctedAt` = `new.created` (always)
19
- * - `observedAt` = source row's `created` if `new.extracted_from` is set,
20
- * else `new.created` (no earlier observation possible)
21
- *
22
- * Pairs split into two cohorts:
23
- * - `extraction` — derived from a raw receipt; latency is meaningful
24
- * - `manual` — direct supersede call; latency is trivially 0 and
25
- * excluded from percentiles to avoid masking real lag
26
- */
13
+ /** Correction latency = `new.created` minus the observation time (the extracted-from row's `created`, else `new.created`).
14
+ * Manual supersedes have latency 0 and are excluded from percentiles so they do not mask real lag. */
27
15
  export function buildCorrectionLatency(entries) {
28
16
  const byId = new Map();
29
17
  for (const e of entries)
@@ -1,19 +1,15 @@
1
- import { type CliFlags, type CommandContext } from './flag-values.js';
2
- export declare function cmdOutcome(hippoRoot: string, flags: CliFlags): void;
3
- export declare function cmdConflicts(hippoRoot: string, flags: CliFlags): void;
4
- export declare function cmdResolve(hippoRoot: string, args: string[], flags: CliFlags): void;
5
- export declare function cmdReject(hippoRoot: string, args: string[], flags: CliFlags): void;
6
- export declare function cmdRejections(hippoRoot: string, flags: CliFlags): void;
7
- export declare function cmdUnreject(hippoRoot: string, args: string[], flags: CliFlags): void;
8
- /**
9
- * `hippo dormant [list] [<query>...] [--limit <n>] [--json] [--global]`,
10
- * `hippo dormant restore <id>`, `hippo dormant forget <id>`.
11
- * Dormant memories are what sleep keeps instead of deleting (on by default;
12
- * `"dormant": { "enabled": false }` in .hippo/config.json deletes instead).
13
- */
14
- export declare function cmdDormant(hippoRoot: string, args: string[], flags: CliFlags): void;
1
+ import { type CommandContext } from './flag-values.js';
2
+ export declare function handleOutcome({ hippoRoot, tenantId, flags }: CommandContext): void;
3
+ export declare function handleConflicts({ hippoRoot, flags }: CommandContext): void;
4
+ export declare function handleResolve({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
5
+ export declare function handleReject({ hippoRoot, tenantId, args, flags }: CommandContext): void;
6
+ export declare function handleRejections({ hippoRoot, tenantId, flags }: CommandContext): void;
7
+ export declare function handleUnreject({ hippoRoot, tenantId, args, flags }: CommandContext): void;
8
+ /** `hippo dormant [list|restore <id>|forget <id>]`: dormant memories are what sleep keeps instead of deleting
9
+ * (on by default; `"dormant": { "enabled": false }` in .hippo/config.json deletes instead). */
10
+ export declare function handleDormant({ hippoRoot, tenantId, args, flags }: CommandContext): void;
15
11
  /** `hippo quarantine [list] [--all] [--json] [--global]`, `quarantine approve <id>`, `quarantine reject <id>` (poisoning defence). */
16
- export declare function cmdQuarantine(hippoRoot: string, args: string[], flags: CliFlags): Promise<void>;
17
- export declare function handleForget({ hippoRoot, args, flags }: CommandContext): Promise<void>;
18
- export declare function handleInvalidate({ hippoRoot, args, flags }: CommandContext): void;
12
+ export declare function handleQuarantine({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
13
+ export declare function handleForget({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
14
+ export declare function handleInvalidate({ hippoRoot, tenantId, args, flags }: CommandContext): void;
19
15
  //# sourceMappingURL=curate.d.ts.map