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
package/dist/cli/init.js CHANGED
@@ -13,7 +13,7 @@ import { loadAllEntries } from '../store/entry-reads.js';
13
13
  import { isGitRepo } from '../learn/autolearn.js';
14
14
  import { currentMachine, importForStore, importProjectMemories, importUserMemories } from '../agent-memories/sync.js';
15
15
  import { emptyReport, mergeReports } from '../agent-memories/report.js';
16
- import { getGlobalRoot, initGlobal } from '../sharing/shared.js';
16
+ import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
17
17
  import { registerWorkspace } from './scheduler.js';
18
18
  import { stringFlag } from './flag-values.js';
19
19
  import { printAgentImport } from './print.js';
@@ -104,10 +104,7 @@ function cmdInitScan(scanDir, flags) {
104
104
  console.log(`Found ${repos.length} repositories:\n`);
105
105
  const globalRoot = initGlobalFirst();
106
106
  let totalLessons = 0;
107
- // Rolled up so the cross-repo summary reports the gate too. Each repo
108
- // already prints its own count inside learnFromRepo, but the aggregate
109
- // line showed only what was ADDED - and the point of this change is
110
- // that a dropped subject is never invisible.
107
+ // Rolled up so the cross-repo summary reports the gate too: a dropped subject is never invisible.
111
108
  let totalLowInfo = 0;
112
109
  const seedDays = parseInt(String(flags['days'] ?? '365'), 10);
113
110
  const machine = currentMachine();
@@ -160,7 +157,7 @@ function seedFromGitHistory(hippoRoot) {
160
157
  console.log(` No matching commits found in git history.`);
161
158
  }
162
159
  }
163
- export function cmdInit(hippoRoot, flags) {
160
+ export function handleInit({ hippoRoot, flags }) {
164
161
  // Handle --scan mode
165
162
  if (flags['scan']) {
166
163
  const scanDir = stringFlag(flags, 'scan') ?? os.homedir();
@@ -304,9 +301,7 @@ function installClaudeCodeSettingsHooks(hook) {
304
301
  }
305
302
  }
306
303
  function installOpencodeUserPlugin() {
307
- // opencode uses a TS plugin, not Claude Code's JSON-hook schema.
308
- // See OPENCODE_PLUGIN_SOURCE in src/hooks.ts for the plugin file
309
- // content + design rationale.
304
+ // opencode uses a TS plugin, not Claude Code's JSON-hook schema (see OPENCODE_PLUGIN_SOURCE in src/hooks/opencode.ts).
310
305
  const result = installOpencodePlugin();
311
306
  if (result.installed) {
312
307
  console.log(` Auto-installed hippo opencode plugin -> ${result.pluginPath}`);
@@ -328,9 +323,8 @@ function installUserLevelHooks(agents, codexHint) {
328
323
  // Checked first so init never creates ~/.codex on a machine without Codex.
329
324
  if (hook === 'codex' && isCodexPresent())
330
325
  installCodexMemoryHooks(' ');
331
- // For Claude Code, also install SessionEnd+SessionStart entries in its
332
- // settings.json. Keeps `hippo init` in lockstep with `hippo hook install
333
- // claude-code` and `hippo setup`.
326
+ // For Claude Code, also install SessionEnd+SessionStart entries in settings.json, keeping `hippo init` in lockstep with
327
+ // `hippo hook install claude-code` and `hippo setup`.
334
328
  if (hook === 'claude-code')
335
329
  installClaudeCodeSettingsHooks(hook);
336
330
  else if (hook === 'opencode')
@@ -3,7 +3,7 @@ import * as path from 'path';
3
3
  import { execFileSync, execSync } from 'child_process';
4
4
  import { installJsonHooks } from '../hooks/json-hooks.js';
5
5
  import { CODEX_TRUST_LINE } from '../hooks/shared.js';
6
- import { DAILY_TASK_NAME, buildDailyRunnerCommand, buildSchtasksCreateArgs, buildWindowsTaskRun, quoteInsideWindowsArg } from './scheduler.js';
6
+ import { DAILY_TASK_NAME, buildDailyRunnerCommand, hasUnsafeRunnerPathChars, buildSchtasksCreateArgs, buildWindowsTaskRun, quoteInsideWindowsArg } from './scheduler.js';
7
7
  /** Adds hippo's two Codex hooks and says what changed; each install ends on the trust reminder, since Codex skips an untrusted hook. */
8
8
  export function installCodexMemoryHooks(indent) {
9
9
  const result = installJsonHooks('codex');
@@ -27,13 +27,7 @@ export function warnClaudeSettingsUnusable(result, indent, action = 'install') {
27
27
  console.log(`${indent}WARNING: ${result.settingsPath} is not a JSON object hippo can merge into, so it was left unchanged; fix it, then run \`hippo hook ${action} claude-code\`.`);
28
28
  return true;
29
29
  }
30
- /**
31
- * Set up a machine-level daily runner that sweeps all registered Hippo
32
- * workspaces.
33
- * Linux/macOS: writes to user crontab.
34
- * Windows: creates a scheduled task.
35
- * Skips if already installed.
36
- */
30
+ /** Machine-level daily runner sweeping all registered workspaces: user crontab on Linux/macOS, a scheduled task on Windows; skips if installed. */
37
31
  /** Bound on each schtasks and crontab call, so a scheduler that never answers cannot hang `hippo init` or `hippo setup`. */
38
32
  const SCHEDULER_CALL_TIMEOUT_MS = 30_000;
39
33
  /** Node kills a child at its timeout and reports ETIMEDOUT; every other failure here means the scheduler refused or is missing. */
@@ -45,10 +39,7 @@ function warnSchedulerTimedOut(command) {
45
39
  }
46
40
  export function setupDailySchedule(globalRoot) {
47
41
  const runnerDir = path.resolve(globalRoot);
48
- // Reject paths with characters that could break shell/crontab quoting
49
- // (backslash is normal on Windows, only dangerous in Unix shell/crontab)
50
- const unsafeChars = process.platform === 'win32' ? /["`$%\n\r]/ : /["`$\n\r\\]/;
51
- if (unsafeChars.test(runnerDir)) {
42
+ if (hasUnsafeRunnerPathChars(runnerDir, process.platform)) {
52
43
  console.log(` Skipping schedule: runner path contains unsafe characters.`);
53
44
  return;
54
45
  }
@@ -1,7 +1,8 @@
1
- import { type CliFlags } from './flag-values.js';
1
+ import { type CliFlags, type CommandContext } from './flag-values.js';
2
2
  /** The line the user sees when the last sleep failed, a spool step hit an unexpected error, or the spool holds `.bad` files; null when none did. */
3
3
  export declare function sleepProblems(logText: string, bad: number): string | null;
4
4
  /** Prints the SessionEnd sleep log on stderr, then clears it. In a hook, stdout carries only `systemMessage`,
5
5
  * because Claude Code shows that to the user and adds any other SessionStart stdout to the model's context. */
6
6
  export declare function cmdLastSleep(hippoRoot: string, flags: CliFlags, out?: 'hook' | 'terminal'): void;
7
+ export declare function handleLastSleep({ hippoRoot, flags }: CommandContext): void;
7
8
  //# sourceMappingURL=last-sleep.d.ts.map
@@ -67,4 +67,7 @@ export function cmdLastSleep(hippoRoot, flags, out = process.stdout.isTTY ? 'ter
67
67
  }
68
68
  }
69
69
  }
70
+ export function handleLastSleep({ hippoRoot, flags }) {
71
+ return cmdLastSleep(hippoRoot, flags);
72
+ }
70
73
  //# sourceMappingURL=last-sleep.js.map
@@ -1,6 +1,6 @@
1
1
  import { type EmbeddingProvider } from '../store/embeddings/provider.js';
2
- import { type CliFlags } from './flag-values.js';
3
- export declare function cmdRefine(hippoRoot: string, flags: CliFlags): Promise<void>;
4
- export declare function cmdDedup(hippoRoot: string, flags: CliFlags): void;
5
- export declare function cmdEmbed(hippoRoot: string, flags: CliFlags, given?: EmbeddingProvider): Promise<void>;
2
+ import { type CommandContext } from './flag-values.js';
3
+ export declare function handleRefine({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
4
+ export declare function handleDedup({ hippoRoot, flags }: CommandContext): void;
5
+ export declare function handleEmbed({ hippoRoot, flags }: CommandContext, given?: EmbeddingProvider): Promise<void>;
6
6
  //# sourceMappingURL=maintenance.d.ts.map
@@ -1,26 +1,26 @@
1
1
  // Store upkeep verbs: `hippo refine`, `hippo dedup` and `hippo embed`.
2
2
  import { envAnthropicApiKey } from '../util/env.js';
3
- import { loadAllEntries } from '../store/entry-reads.js';
3
+ import { loadAllEntries, loadAllEntryIds } from '../store/entry-reads.js';
4
4
  import { deduplicateStore } from '../consolidate/dedupe.js';
5
- import { embedAll, loadEmbeddingIndex } from '../store/embeddings/index.js';
5
+ import { embedAll } from '../store/embeddings/index.js';
6
6
  import { resolveEmbeddingProvider } from '../store/embeddings/provider.js';
7
- import { resetStoredParticles } from '../store/vector-writes.js';
7
+ import { loadEmbeddingIndex, resetStoredParticles } from '../store/vector-index.js';
8
8
  import { loadConfig } from '../core/config.js';
9
- import { resolveTenantId } from '../store/tenant.js';
10
9
  import { refineStore } from './refine-llm.js';
11
10
  import { printError } from './output.js';
12
11
  import { boolFlag } from './flag-values.js';
13
12
  import { requireInit, resolveAuthRoot } from './shared.js';
14
13
  import { errorMessage } from '../util/log.js';
14
+ import { CliExit } from './exit.js';
15
15
  const MAX_FAILED_SHOWN = 5;
16
16
  const MAX_PAIRS_SHOWN = 15;
17
17
  const PAIR_PREVIEW_CHARS = 90;
18
- export async function cmdRefine(hippoRoot, flags) {
18
+ export async function handleRefine({ hippoRoot, tenantId, flags }) {
19
19
  requireInit(hippoRoot);
20
20
  const apiKey = envAnthropicApiKey();
21
21
  if (!apiKey) {
22
22
  printError('hippo refine needs ANTHROPIC_API_KEY in the environment.');
23
- process.exit(1);
23
+ throw new CliExit(1);
24
24
  }
25
25
  const dryRun = boolFlag(flags, 'dry-run');
26
26
  const all = boolFlag(flags, 'all');
@@ -33,7 +33,7 @@ export async function cmdRefine(hippoRoot, flags) {
33
33
  limit,
34
34
  dryRun,
35
35
  all,
36
- tenantId: resolveTenantId({}),
36
+ tenantId,
37
37
  });
38
38
  if (asJson) {
39
39
  console.log(JSON.stringify(result, null, 2));
@@ -50,7 +50,7 @@ export async function cmdRefine(hippoRoot, flags) {
50
50
  }
51
51
  }
52
52
  }
53
- export function cmdDedup(hippoRoot, flags) {
53
+ export function handleDedup({ hippoRoot, flags }) {
54
54
  requireInit(hippoRoot);
55
55
  const dryRun = boolFlag(flags, 'dry-run');
56
56
  if (flags['threshold'] !== undefined) {
@@ -99,17 +99,13 @@ function printDedupPairs(result, dryRun) {
99
99
  console.log(` ... and ${result.pairs.length - 15} more (run with --dry-run to see all)`);
100
100
  }
101
101
  }
102
- // ---------------------------------------------------------------------------
103
102
  // Embed command
104
- // ---------------------------------------------------------------------------
105
- export async function cmdEmbed(hippoRoot, flags, given) {
106
- // --global mirrors resolveAuthRoot (cli.ts:6900): initGlobal() + the global
107
- // root, skipping the local requireInit entirely, so this is the healing
108
- // path for pre-1.27.0 global stores from a directory with no local .hippo.
103
+ export async function handleEmbed({ hippoRoot, flags }, given) {
104
+ // --global mirrors resolveAuthRoot: initGlobal() + the global root, skipping the local requireInit,
105
+ // so it heals pre-1.27.0 global stores from a directory with no local .hippo.
109
106
  const root = resolveAuthRoot(hippoRoot, flags);
110
- // --status and --reset-physics only read cached state, so they must work even
111
- // when no provider key is present (e.g. embedded earlier with a key that was
112
- // later removed). The provider-availability gate is deferred to the embed path.
107
+ // --status and --reset-physics only read cached state, so they must work with no provider key (e.g. removed after an earlier embed);
108
+ // the provider-availability gate is deferred to the embed path.
113
109
  if (flags['reset-physics']) {
114
110
  resetPhysics(root);
115
111
  return;
@@ -143,9 +139,8 @@ export async function cmdEmbed(hippoRoot, flags, given) {
143
139
  }
144
140
  }
145
141
  function resetPhysics(root) {
146
- const entries = loadAllEntries(root);
147
142
  const embIndex = loadEmbeddingIndex(root);
148
- const count = resetStoredParticles(root, entries, embIndex);
143
+ const count = resetStoredParticles(root, loadAllEntryIds(root), embIndex);
149
144
  console.log(`Reset physics state: ${count} particles re-initialized from embeddings.`);
150
145
  }
151
146
  function printEmbedStatus(root) {
@@ -1,12 +1,13 @@
1
1
  // The status, list, id and not-found paths the typed-object verbs (process, policy, skill, brief, note, decide, incident, predict) share.
2
2
  import { printError } from './output.js';
3
3
  import { parseListLimit, parsePositiveId, stringFlag } from './flag-values.js';
4
+ import { CliExit } from './exit.js';
4
5
  /** The member of `states` named by `status`, or exit 1 with the message that lists every allowed value. */
5
6
  export function requireStatus(status, states) {
6
7
  const found = [...states].find((s) => s === status);
7
8
  if (found === undefined) {
8
9
  printError(`Invalid --status: "${status}". Must be one of: ${[...states, 'all'].join(' | ')}.`);
9
- process.exit(1);
10
+ throw new CliExit(1);
10
11
  }
11
12
  return found;
12
13
  }
@@ -32,14 +33,14 @@ export function idArgOrExit(args, usage, label, parseId = parsePositiveId) {
32
33
  const idRaw = args[1];
33
34
  if (!idRaw) {
34
35
  printError(usage);
35
- process.exit(1);
36
+ throw new CliExit(1);
36
37
  }
37
38
  return parseId(idRaw, label);
38
39
  }
39
40
  export function foundOrExit(found, noun, id) {
40
41
  if (!found) {
41
42
  printError(`${noun} ${id} not found.`);
42
- process.exit(1);
43
+ throw new CliExit(1);
43
44
  }
44
45
  return found;
45
46
  }
@@ -1,14 +1,5 @@
1
- /**
2
- * --owner format validation.
3
- *
4
- * Documented MEMORY_ENVELOPE.md contract: owner = `user:<id>` | `agent:<id>`
5
- * with id ∈ `[A-Za-z0-9_-]+`.
6
- *
7
- * Default: WARN-ONLY (log + accept) to preserve back-compat with existing
8
- * scripted callers passing legacy owner strings. Set `HIPPO_STRICT_OWNER=1`
9
- * to reject + exit. Strict mode will become the default once real auth replaces
10
- * the stub (see `TODOS.md` for the migration path).
11
- */
1
+ /** --owner validation per MEMORY_ENVELOPE.md: `user:<id>` | `agent:<id>`, id in `[A-Za-z0-9_-]+`.
2
+ * Warn-only by default for legacy scripted callers; `HIPPO_STRICT_OWNER=1` rejects and exits. */
12
3
  export declare const OWNER_CONTRACT_HINT = "Must match ^(user|agent):[A-Za-z0-9_-]+$ (e.g. user:alice, agent:capture-bot).";
13
4
  export interface OwnerValidation {
14
5
  ok: boolean;
@@ -17,25 +8,11 @@ export interface OwnerValidation {
17
8
  /** Human-readable message (warn or error). Empty when ok = true. */
18
9
  message: string;
19
10
  }
20
- /**
21
- * Pure validator. Returns `{ ok, value, message }`. Does NOT print or
22
- * `process.exit`. The CLI wrapper below handles side effects so this is
23
- * unit-testable.
24
- *
25
- * Behaviour:
26
- * - owner undefined → ok=true, value=undefined, no message.
27
- * - owner matches OWNER_RE → ok=true, value=owner.
28
- * - owner doesn't match + strict=false → ok=true, value=owner (accept),
29
- * message contains the warning text.
30
- * - owner doesn't match + strict=true → ok=false, value=owner (echoed),
31
- * message contains the error text.
32
- */
11
+ /** Pure validator returning `{ ok, value, message }`; never prints or exits, so it is unit-testable.
12
+ * A non-matching owner is accepted with a warning unless strict, where ok=false with an error message. */
33
13
  export declare function validateOwner(owner: string | null | undefined, opts?: {
34
14
  strict?: boolean;
35
15
  }): OwnerValidation;
36
- /**
37
- * Returns true when strict-owner enforcement is enabled via env var.
38
- * Centralised here so any future bump to default-strict is one edit.
39
- */
16
+ /** True when strict-owner enforcement is enabled via env var. */
40
17
  export declare function isStrictOwnerEnv(env?: NodeJS.ProcessEnv): boolean;
41
18
  //# sourceMappingURL=owner-validation.d.ts.map
@@ -1,30 +1,10 @@
1
- /**
2
- * --owner format validation.
3
- *
4
- * Documented MEMORY_ENVELOPE.md contract: owner = `user:<id>` | `agent:<id>`
5
- * with id ∈ `[A-Za-z0-9_-]+`.
6
- *
7
- * Default: WARN-ONLY (log + accept) to preserve back-compat with existing
8
- * scripted callers passing legacy owner strings. Set `HIPPO_STRICT_OWNER=1`
9
- * to reject + exit. Strict mode will become the default once real auth replaces
10
- * the stub (see `TODOS.md` for the migration path).
11
- */
1
+ /** --owner validation per MEMORY_ENVELOPE.md: `user:<id>` | `agent:<id>`, id in `[A-Za-z0-9_-]+`.
2
+ * Warn-only by default for legacy scripted callers; `HIPPO_STRICT_OWNER=1` rejects and exits. */
12
3
  import { processEnv } from '../util/env.js';
13
4
  const OWNER_RE = /^(user|agent):[A-Za-z0-9_-]+$/;
14
5
  export const OWNER_CONTRACT_HINT = 'Must match ^(user|agent):[A-Za-z0-9_-]+$ (e.g. user:alice, agent:capture-bot).';
15
- /**
16
- * Pure validator. Returns `{ ok, value, message }`. Does NOT print or
17
- * `process.exit`. The CLI wrapper below handles side effects so this is
18
- * unit-testable.
19
- *
20
- * Behaviour:
21
- * - owner undefined → ok=true, value=undefined, no message.
22
- * - owner matches OWNER_RE → ok=true, value=owner.
23
- * - owner doesn't match + strict=false → ok=true, value=owner (accept),
24
- * message contains the warning text.
25
- * - owner doesn't match + strict=true → ok=false, value=owner (echoed),
26
- * message contains the error text.
27
- */
6
+ /** Pure validator returning `{ ok, value, message }`; never prints or exits, so it is unit-testable.
7
+ * A non-matching owner is accepted with a warning unless strict, where ok=false with an error message. */
28
8
  export function validateOwner(owner, opts = {}) {
29
9
  if (owner === undefined || owner === null || owner === '') {
30
10
  return { ok: true, value: undefined, message: '' };
@@ -46,10 +26,7 @@ export function validateOwner(owner, opts = {}) {
46
26
  `Accepting for back-compat; set HIPPO_STRICT_OWNER=1 to reject.`,
47
27
  };
48
28
  }
49
- /**
50
- * Returns true when strict-owner enforcement is enabled via env var.
51
- * Centralised here so any future bump to default-strict is one edit.
52
- */
29
+ /** True when strict-owner enforcement is enabled via env var. */
53
30
  export function isStrictOwnerEnv(env = processEnv()) {
54
31
  return env.HIPPO_STRICT_OWNER === '1';
55
32
  }
@@ -1,5 +1,5 @@
1
- import { type CliFlags } from './flag-values.js';
2
- export declare function cmdProcess(hippoRoot: string, args: string[], flags: CliFlags): void;
3
- export declare function cmdPolicy(hippoRoot: string, args: string[], flags: CliFlags): void;
4
- export declare function cmdSkill(hippoRoot: string, args: string[], flags: CliFlags): void;
1
+ import { type CommandContext } from './flag-values.js';
2
+ export declare function handleProcess({ hippoRoot, tenantId, args, flags }: CommandContext): void;
3
+ export declare function handlePolicy({ hippoRoot, tenantId, args, flags }: CommandContext): void;
4
+ export declare function handleSkill({ hippoRoot, tenantId, args, flags }: CommandContext): void;
5
5
  //# sourceMappingURL=playbooks.d.ts.map
@@ -3,12 +3,12 @@ import { extractPathTags } from '../search/path-context.js';
3
3
  import * as processesModule from '../objects/processes.js';
4
4
  import * as policiesModule from '../objects/policies.js';
5
5
  import * as skillsModule from '../objects/skills.js';
6
- import { resolveTenantId } from '../store/tenant.js';
7
6
  import { printError } from './output.js';
8
- import { nonEmptyStringFlag, stringFlag } from './flag-values.js';
7
+ import { isStringFlag, nonEmptyStringFlag, stringFlag } from './flag-values.js';
9
8
  import { requireInit } from './shared.js';
10
9
  import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail } from './object-verbs.js';
11
10
  import { errorMessage } from '../util/log.js';
11
+ import { CliExit } from './exit.js';
12
12
  const PROCESS = { cmd: 'process', noun: 'Process', idLabel: 'process' };
13
13
  const POLICY = { cmd: 'policy', noun: 'Policy', idLabel: 'policy' };
14
14
  const SKILL = { cmd: 'skill', noun: 'Skill', idLabel: 'skill' };
@@ -17,11 +17,11 @@ const SKILL = { cmd: 'skill', noun: 'Skill', idLabel: 'skill' };
17
17
  function collectProcessSteps(stepRaw) {
18
18
  if (Array.isArray(stepRaw))
19
19
  return stepRaw;
20
- if (typeof stepRaw === 'string')
20
+ if (isStringFlag(stepRaw))
21
21
  return [stepRaw];
22
22
  if (stepRaw === true) {
23
23
  printError('--step requires a value, e.g. hippo process new "<name>" --step "do X".');
24
- process.exit(1);
24
+ throw new CliExit(1);
25
25
  }
26
26
  return [];
27
27
  }
@@ -59,11 +59,10 @@ function processSupersede(hippoRoot, tenantId, args, flags) {
59
59
  const steps = collectProcessSteps(flags['step']);
60
60
  if (steps.length === 0) {
61
61
  printError('hippo process supersede requires at least one --step "<text>" for the new version.');
62
- process.exit(1);
62
+ throw new CliExit(1);
63
63
  }
64
- // A supersession is a new version of the SAME process, so the new row reuses the predecessor's name (stable identity
65
- // across versions). loadProcessById gives an early not-found before the write; saveProcess's in-SAVEPOINT preflight
66
- // is the authoritative active-state check.
64
+ // A supersession is a new version of the SAME process, so the new row reuses the predecessor's name; loadProcessById gives an early not-found,
65
+ // and saveProcess's in-SAVEPOINT preflight is the authoritative active-state check.
67
66
  const existing = foundOrExit(processesModule.loadProcessById(hippoRoot, tenantId, id), PROCESS.noun, id);
68
67
  const changeSummary = nonEmptyStringFlag(flags, 'change');
69
68
  const description = nonEmptyStringFlag(flags, 'description');
@@ -83,9 +82,8 @@ function processSupersede(hippoRoot, tenantId, args, flags) {
83
82
  function processClose(hippoRoot, tenantId, args) {
84
83
  closeObject(args, PROCESS, (id) => processesModule.closeProcess(hippoRoot, tenantId, id));
85
84
  }
86
- export function cmdProcess(hippoRoot, args, flags) {
85
+ export function handleProcess({ hippoRoot, tenantId, args, flags }) {
87
86
  requireInit(hippoRoot);
88
- const tenantId = resolveTenantId({});
89
87
  const subcommand = args[0] ?? '';
90
88
  if (subcommand === 'list')
91
89
  return processList(hippoRoot, tenantId, flags);
@@ -95,9 +93,8 @@ export function cmdProcess(hippoRoot, args, flags) {
95
93
  return processSupersede(hippoRoot, tenantId, args, flags);
96
94
  if (subcommand === 'close')
97
95
  return processClose(hippoRoot, tenantId, args);
98
- // Default subcommand: new (create). Accept both the documented
99
- // `process new "<name>"` form and the bare `process "<name>"` form: for the
100
- // `new` keyword the name is args[1], otherwise args[0] IS the name.
96
+ // Default subcommand is new (create): accept both `process new "<name>"` and bare `process "<name>"`;
97
+ // for the `new` keyword the name is args[1], otherwise args[0] is the name.
101
98
  processCreate(hippoRoot, tenantId, subcommand === 'new' ? (args[1] ?? '') : subcommand, flags);
102
99
  }
103
100
  function processCreate(hippoRoot, tenantId, processName, flags) {
@@ -107,7 +104,7 @@ function processCreate(hippoRoot, tenantId, processName, flags) {
107
104
  printError(' hippo process get <id>');
108
105
  printError(' hippo process supersede <id> --step "<text>" [--change "<summary>"]');
109
106
  printError(' hippo process close <id>');
110
- process.exit(1);
107
+ throw new CliExit(1);
111
108
  }
112
109
  const steps = collectProcessSteps(flags['step']);
113
110
  const description = nonEmptyStringFlag(flags, 'description');
@@ -141,7 +138,7 @@ function policyAsOf(hippoRoot, tenantId, args, flags) {
141
138
  const dateRaw = args[1];
142
139
  if (!dateRaw) {
143
140
  printError('Usage: hippo policy asof <iso-date> [--name "<policy>"]');
144
- process.exit(1);
141
+ throw new CliExit(1);
145
142
  }
146
143
  const name = nonEmptyStringFlag(flags, 'name');
147
144
  let results;
@@ -150,7 +147,7 @@ function policyAsOf(hippoRoot, tenantId, args, flags) {
150
147
  }
151
148
  catch (e) {
152
149
  printError(errorMessage(e));
153
- process.exit(1);
150
+ throw new CliExit(1);
154
151
  }
155
152
  if (results.length === 0) {
156
153
  console.log(`No active policies in force at ${dateRaw}${name ? ` for "${name}"` : ''}.`);
@@ -177,7 +174,7 @@ function policySupersede(hippoRoot, tenantId, args, flags) {
177
174
  const textRaw = stringFlag(flags, 'text');
178
175
  if (!textRaw?.trim()) {
179
176
  printError('hippo policy supersede requires --text "<rule>" for the new version.');
180
- process.exit(1);
177
+ throw new CliExit(1);
181
178
  }
182
179
  const existing = foundOrExit(policiesModule.loadPolicyById(hippoRoot, tenantId, id), POLICY.noun, id);
183
180
  try {
@@ -196,15 +193,14 @@ function policySupersede(hippoRoot, tenantId, args, flags) {
196
193
  }
197
194
  catch (e) {
198
195
  printError(errorMessage(e));
199
- process.exit(1);
196
+ throw new CliExit(1);
200
197
  }
201
198
  }
202
199
  function policyClose(hippoRoot, tenantId, args) {
203
200
  closeObject(args, POLICY, (id) => policiesModule.closePolicy(hippoRoot, tenantId, id));
204
201
  }
205
- export function cmdPolicy(hippoRoot, args, flags) {
202
+ export function handlePolicy({ hippoRoot, tenantId, args, flags }) {
206
203
  requireInit(hippoRoot);
207
- const tenantId = resolveTenantId({});
208
204
  const subcommand = args[0] ?? '';
209
205
  if (subcommand === 'list')
210
206
  return policyList(hippoRoot, tenantId, flags);
@@ -231,7 +227,7 @@ function policyCreate(hippoRoot, tenantId, args, flags) {
231
227
  printError(' hippo policy asof <iso-date> [--name "<policy>"]');
232
228
  printError(' hippo policy supersede <id> --text "<rule>" [--from] [--to] [--change "<summary>"]');
233
229
  printError(' hippo policy close <id>');
234
- process.exit(1);
230
+ throw new CliExit(1);
235
231
  }
236
232
  try {
237
233
  const created = policiesModule.savePolicy(hippoRoot, tenantId, {
@@ -248,7 +244,7 @@ function policyCreate(hippoRoot, tenantId, args, flags) {
248
244
  }
249
245
  catch (e) {
250
246
  printError(errorMessage(e));
251
- process.exit(1);
247
+ throw new CliExit(1);
252
248
  }
253
249
  }
254
250
  function printSkillRow(s) {
@@ -291,7 +287,7 @@ function skillSupersede(hippoRoot, tenantId, args, flags) {
291
287
  const instrRaw = stringFlag(flags, 'instructions');
292
288
  if (!instrRaw?.trim()) {
293
289
  printError('hippo skill supersede requires --instructions "<text>" for the new version.');
294
- process.exit(1);
290
+ throw new CliExit(1);
295
291
  }
296
292
  const existing = foundOrExit(skillsModule.loadSkillById(hippoRoot, tenantId, id), SKILL.noun, id);
297
293
  try {
@@ -309,15 +305,14 @@ function skillSupersede(hippoRoot, tenantId, args, flags) {
309
305
  }
310
306
  catch (e) {
311
307
  printError(errorMessage(e));
312
- process.exit(1);
308
+ throw new CliExit(1);
313
309
  }
314
310
  }
315
311
  function skillClose(hippoRoot, tenantId, args) {
316
312
  closeObject(args, SKILL, (id) => skillsModule.closeSkill(hippoRoot, tenantId, id));
317
313
  }
318
- export function cmdSkill(hippoRoot, args, flags) {
314
+ export function handleSkill({ hippoRoot, tenantId, args, flags }) {
319
315
  requireInit(hippoRoot);
320
- const tenantId = resolveTenantId({});
321
316
  const subcommand = args[0] ?? '';
322
317
  if (subcommand === 'list')
323
318
  return skillList(hippoRoot, tenantId, flags);
@@ -344,7 +339,7 @@ function skillCreate(hippoRoot, tenantId, args, flags) {
344
339
  printError(' hippo skill export (render active skills as an AGENTS.md/CLAUDE.md block)');
345
340
  printError(' hippo skill supersede <id> --instructions "<text>" [--trigger] [--change "<summary>"]');
346
341
  printError(' hippo skill close <id>');
347
- process.exit(1);
342
+ throw new CliExit(1);
348
343
  }
349
344
  try {
350
345
  const created = skillsModule.saveSkill(hippoRoot, tenantId, {
@@ -359,7 +354,7 @@ function skillCreate(hippoRoot, tenantId, args, flags) {
359
354
  }
360
355
  catch (e) {
361
356
  printError(errorMessage(e));
362
- process.exit(1);
357
+ throw new CliExit(1);
363
358
  }
364
359
  }
365
360
  //# sourceMappingURL=playbooks.js.map
@@ -1,4 +1,4 @@
1
- import { TaskSnapshot, SessionEvent } from '../store/rows.js';
1
+ import type { TaskSnapshot, SessionEvent } from '../store/rows.js';
2
2
  import type { SessionHandoff } from '../core/handoff.js';
3
3
  import type { SearchResult } from '../core/search-types.js';
4
4
  import { type ImportReport } from '../agent-memories/report.js';
@@ -10,9 +10,6 @@ export declare function printAgentImport(report: ImportReport, indent?: string):
10
10
  export declare function printActiveTaskSnapshot(snapshot: TaskSnapshot): void;
11
11
  export declare function printSessionEvents(events: SessionEvent[]): void;
12
12
  export declare function printHandoff(handoff: SessionHandoff): void;
13
- /**
14
- * Run `fn` with console.log captured; returns the captured lines joined by
15
- * newlines (what the same calls would have printed, minus the final newline).
16
- */
13
+ /** Run `fn` with console.log captured; returns the captured lines joined by newlines (no final newline). */
17
14
  export declare function captureConsole(fn: () => void): string;
18
15
  //# sourceMappingURL=print.d.ts.map
package/dist/cli/print.js CHANGED
@@ -66,10 +66,7 @@ export function printSessionEvents(events) {
66
66
  export function printHandoff(handoff) {
67
67
  console.log(handoffText(handoff));
68
68
  }
69
- /**
70
- * Run `fn` with console.log captured; returns the captured lines joined by
71
- * newlines (what the same calls would have printed, minus the final newline).
72
- */
69
+ /** Run `fn` with console.log captured; returns the captured lines joined by newlines (no final newline). */
73
70
  export function captureConsole(fn) {
74
71
  const lines = [];
75
72
  const realLog = console.log;
@@ -1,3 +1,3 @@
1
- import { type CliFlags } from './flag-values.js';
2
- export declare function cmdProjects(hippoRoot: string, args: string[], flags: CliFlags): void;
1
+ import { type CommandContext } from './flag-values.js';
2
+ export declare function handleProjects({ hippoRoot, tenantId, args, flags }: CommandContext): void;
3
3
  //# sourceMappingURL=projects.d.ts.map
@@ -3,7 +3,6 @@ import * as path from 'path';
3
3
  import { execFileSync } from 'child_process';
4
4
  import { closeHippoDb, openHippoDb } from '../db/index.js';
5
5
  import { listProjects, mergeProjects, repairProjects } from '../sharing/project-merge.js';
6
- import { resolveTenantId } from '../store/tenant.js';
7
6
  import { flagIsTrue } from './flag-values.js';
8
7
  import { resolveAuthRoot } from './shared.js';
9
8
  import { printError } from './output.js';
@@ -76,9 +75,8 @@ function projectsRepair(db, tenantId, root, flags) {
76
75
  console.log(` ${r.untraced.length} left as they are (no parent left to show which project; check them with hippo inspect <id>)`);
77
76
  console.log(apply ? `Backup: ${r.backup}\nEvery id is in the audit log: hippo audit list --op project_repair` : 'Nothing written. Add --apply to run it.');
78
77
  }
79
- export function cmdProjects(hippoRoot, args, flags) {
78
+ export function handleProjects({ hippoRoot, tenantId, args, flags }) {
80
79
  const root = resolveAuthRoot(hippoRoot, flags);
81
- const tenantId = resolveTenantId({});
82
80
  const sub = args[0] ?? 'list';
83
81
  const db = openHippoDb(root);
84
82
  try {
@@ -8,11 +8,7 @@ export interface ProvenanceCoverage {
8
8
  missing: ('owner' | 'artifact_ref')[];
9
9
  }>;
10
10
  }
11
- /**
12
- * Provenance coverage gate: every `kind='raw'` row must carry both `owner`
13
- * and `artifact_ref`. Distilled / superseded / archived rows are excluded —
14
- * those are derivative or terminal, not source receipts. Coverage of 1.0 on
15
- * a non-empty raw set is the ship gate from the Company Brain scorecard.
16
- */
11
+ /** Provenance coverage gate: every `kind='raw'` row must carry `owner` and `artifact_ref`; derivative or terminal rows are excluded.
12
+ * Coverage 1.0 on a non-empty raw set is the ship gate. */
17
13
  export declare function buildProvenanceCoverage(entries: MemoryEntry[]): ProvenanceCoverage;
18
14
  //# sourceMappingURL=provenance-coverage.d.ts.map
@@ -1,9 +1,5 @@
1
- /**
2
- * Provenance coverage gate: every `kind='raw'` row must carry both `owner`
3
- * and `artifact_ref`. Distilled / superseded / archived rows are excluded —
4
- * those are derivative or terminal, not source receipts. Coverage of 1.0 on
5
- * a non-empty raw set is the ship gate from the Company Brain scorecard.
6
- */
1
+ /** Provenance coverage gate: every `kind='raw'` row must carry `owner` and `artifact_ref`; derivative or terminal rows are excluded.
2
+ * Coverage 1.0 on a non-empty raw set is the ship gate. */
7
3
  export function buildProvenanceCoverage(entries) {
8
4
  const raws = entries.filter((e) => e.kind === 'raw');
9
5
  const gaps = [];
@@ -1,8 +1,8 @@
1
1
  // Sleep and the daily runner clean a store's old automatic memories once, so an upgrade needs no command.
2
2
  import * as path from 'path';
3
3
  import { errorMessage, log } from '../util/log.js';
4
- import { repairQualityOnce } from './quality-repair.js';
5
- import { getGlobalRoot } from '../sharing/shared.js';
4
+ import { repairQualityOnce } from '../store/quality-repair.js';
5
+ import { getGlobalRoot } from '../sharing/global-store.js';
6
6
  import { resolveTenantId } from '../store/tenant.js';
7
7
  /** Fault-isolated like the project tag repair: a failure warns, leaves the store unmarked and runs again next time. */
8
8
  export function repairQualityOnceAt(root) {
@@ -1,5 +1,3 @@
1
- import { type CliFlags, type CommandContext } from './flag-values.js';
2
- /** Runs `hippo recall`: the flags name the ranking core and this verb's presenter, `retrieve` ranks and records, then the block prints. */
3
- export declare function cmdRecall(hippoRoot: string, query: string, flags: CliFlags): Promise<void>;
4
- export declare function handleRecall({ hippoRoot, args, flags }: CommandContext): Promise<void>;
1
+ import { type CommandContext } from './flag-values.js';
2
+ export declare function handleRecall({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
5
3
  //# sourceMappingURL=recall.d.ts.map