hippo-memory 1.72.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (995) hide show
  1. package/README.md +6 -4
  2. package/dist/agent-memories/apply.d.ts +7 -5
  3. package/dist/agent-memories/apply.js +66 -39
  4. package/dist/agent-memories/claude-code.d.ts +8 -2
  5. package/dist/agent-memories/claude-code.js +26 -7
  6. package/dist/agent-memories/copilot.js +2 -1
  7. package/dist/agent-memories/files.js +2 -1
  8. package/dist/agent-memories/legacy.d.ts +6 -3
  9. package/dist/agent-memories/legacy.js +35 -14
  10. package/dist/agent-memories/markdown.d.ts +3 -1
  11. package/dist/agent-memories/markdown.js +3 -1
  12. package/dist/agent-memories/openclaw.js +5 -2
  13. package/dist/agent-memories/plan.js +11 -1
  14. package/dist/agent-memories/project-folds.js +2 -1
  15. package/dist/agent-memories/report.d.ts +4 -1
  16. package/dist/agent-memories/report.js +43 -9
  17. package/dist/agent-memories/source.d.ts +8 -2
  18. package/dist/agent-memories/source.js +11 -3
  19. package/dist/agent-memories/sync.d.ts +7 -2
  20. package/dist/agent-memories/sync.js +141 -101
  21. package/dist/api/assemble.d.ts +6 -4
  22. package/dist/api/assemble.js +11 -5
  23. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  24. package/dist/api/auth/audit.js +58 -0
  25. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
  26. package/dist/api/{auth.js → auth/auth.js} +66 -54
  27. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  28. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
  29. package/dist/api/auth/session-owners.d.ts +10 -0
  30. package/dist/api/auth/session-owners.js +35 -0
  31. package/dist/api/availability.d.ts +3 -1
  32. package/dist/api/availability.js +3 -1
  33. package/dist/api/busy.d.ts +2 -0
  34. package/dist/api/busy.js +2 -0
  35. package/dist/api/cli-surface.d.ts +6 -0
  36. package/dist/api/cli-surface.js +6 -0
  37. package/dist/api/config-of.d.ts +5 -0
  38. package/dist/api/config-of.js +6 -0
  39. package/dist/api/context-auto.d.ts +4 -1
  40. package/dist/api/context-auto.js +14 -4
  41. package/dist/api/context-render.js +14 -7
  42. package/dist/api/context-select.d.ts +4 -1
  43. package/dist/api/context-select.js +31 -34
  44. package/dist/api/context-types.d.ts +38 -12
  45. package/dist/api/context.d.ts +8 -5
  46. package/dist/api/context.js +120 -63
  47. package/dist/api/continuity.d.ts +24 -21
  48. package/dist/api/continuity.js +18 -20
  49. package/dist/api/correction-latency.d.ts +3 -1
  50. package/dist/api/correction-latency.js +3 -1
  51. package/dist/api/error-reply.d.ts +4 -1
  52. package/dist/api/error-reply.js +12 -3
  53. package/dist/api/index.d.ts +39 -23
  54. package/dist/api/index.js +21 -23
  55. package/dist/api/instruction-detect.d.ts +4 -1
  56. package/dist/api/instruction-detect.js +75 -20
  57. package/dist/api/ledger-db.d.ts +15 -11
  58. package/dist/api/ledger-db.js +21 -23
  59. package/dist/api/memories/conflicts.d.ts +33 -0
  60. package/dist/api/memories/conflicts.js +67 -0
  61. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  62. package/dist/api/{forget.js → memories/forget.js} +23 -17
  63. package/dist/api/memories/memories.d.ts +27 -0
  64. package/dist/api/memories/memories.js +52 -0
  65. package/dist/api/memories/outcome.d.ts +22 -0
  66. package/dist/api/memories/outcome.js +28 -0
  67. package/dist/api/memories/promote.d.ts +40 -0
  68. package/dist/api/memories/promote.js +76 -0
  69. package/dist/api/memories/refine.d.ts +10 -0
  70. package/dist/api/memories/refine.js +12 -0
  71. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
  72. package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
  73. package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
  74. package/dist/api/{remember.js → memories/remember.js} +50 -32
  75. package/dist/api/objects/cards.d.ts +39 -0
  76. package/dist/api/{cards.js → objects/cards.js} +12 -14
  77. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  78. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
  79. package/dist/api/objects/goals.d.ts +18 -0
  80. package/dist/api/{goals.js → objects/goals.js} +12 -12
  81. package/dist/api/objects/graph.d.ts +11 -0
  82. package/dist/api/objects/graph.js +16 -0
  83. package/dist/api/objects/objects.d.ts +9 -0
  84. package/dist/api/{objects.js → objects/objects.js} +2 -3
  85. package/dist/api/objects/predictions.d.ts +11 -0
  86. package/dist/api/{predictions.js → objects/predictions.js} +7 -5
  87. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  88. package/dist/api/{projects.js → objects/projects.js} +8 -4
  89. package/dist/api/pilot-arm.d.ts +8 -4
  90. package/dist/api/pilot-arm.js +5 -4
  91. package/dist/api/prompt-hook.d.ts +35 -20
  92. package/dist/api/prompt-hook.js +66 -44
  93. package/dist/api/provenance-coverage.d.ts +3 -1
  94. package/dist/api/provenance-coverage.js +3 -1
  95. package/dist/api/recall/finish.d.ts +185 -0
  96. package/dist/api/recall/finish.js +301 -0
  97. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  98. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
  99. package/dist/api/recall/recall.d.ts +6 -0
  100. package/dist/api/{recall.js → recall/recall.js} +116 -72
  101. package/dist/api/recall/render.d.ts +39 -0
  102. package/dist/api/recall/render.js +60 -0
  103. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  104. package/dist/api/recall/request.js +261 -0
  105. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  106. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  107. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
  108. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  109. package/dist/api/session-end.d.ts +36 -8
  110. package/dist/api/session-end.js +71 -25
  111. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  112. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  113. package/dist/api/sleep/dormant.d.ts +25 -0
  114. package/dist/api/sleep/dormant.js +64 -0
  115. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  116. package/dist/api/sleep/learn.js +138 -0
  117. package/dist/api/sleep/sleep-run.d.ts +38 -0
  118. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
  119. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  120. package/dist/api/sleep/sleep.js +9 -0
  121. package/dist/api/status.d.ts +3 -1
  122. package/dist/api/status.js +3 -1
  123. package/dist/api/store-init.d.ts +4 -1
  124. package/dist/api/store-init.js +4 -1
  125. package/dist/api/tokens.d.ts +10 -9
  126. package/dist/api/tokens.js +9 -10
  127. package/dist/api/types.d.ts +27 -12
  128. package/dist/api/types.js +13 -4
  129. package/dist/capture/caller-session.d.ts +8 -2
  130. package/dist/capture/caller-session.js +16 -6
  131. package/dist/capture/capture-error.d.ts +3 -1
  132. package/dist/capture/capture-error.js +3 -1
  133. package/dist/capture/codex-patch.js +7 -2
  134. package/dist/capture/command.d.ts +4 -2
  135. package/dist/capture/command.js +34 -15
  136. package/dist/capture/compact-resume-caller.js +15 -8
  137. package/dist/capture/compact.d.ts +8 -5
  138. package/dist/capture/compact.js +34 -23
  139. package/dist/capture/compaction-items-caller.js +9 -3
  140. package/dist/capture/compaction-record.d.ts +4 -3
  141. package/dist/capture/compaction-record.js +20 -12
  142. package/dist/capture/compaction-spool.d.ts +18 -9
  143. package/dist/capture/compaction-spool.js +105 -63
  144. package/dist/capture/copilot-transcript.d.ts +11 -3
  145. package/dist/capture/copilot-transcript.js +16 -6
  146. package/dist/capture/extract.js +20 -8
  147. package/dist/capture/failure-caller.js +23 -12
  148. package/dist/capture/failure-reading.d.ts +10 -3
  149. package/dist/capture/failure-reading.js +24 -7
  150. package/dist/capture/pre-compact-caller.js +11 -4
  151. package/dist/capture/session-digest.d.ts +15 -4
  152. package/dist/capture/session-digest.js +39 -13
  153. package/dist/capture/session-end-caller.d.ts +4 -1
  154. package/dist/capture/session-end-caller.js +20 -8
  155. package/dist/capture/session-texts.d.ts +6 -2
  156. package/dist/capture/session-texts.js +22 -7
  157. package/dist/capture/session-worker.d.ts +4 -2
  158. package/dist/capture/session-worker.js +58 -17
  159. package/dist/capture/transcript.d.ts +13 -4
  160. package/dist/capture/transcript.js +32 -10
  161. package/dist/capture/working-state.d.ts +13 -4
  162. package/dist/capture/working-state.js +50 -56
  163. package/dist/cli/api-context.d.ts +14 -2
  164. package/dist/cli/api-context.js +45 -2
  165. package/dist/cli/audit.js +33 -33
  166. package/dist/cli/auth.js +23 -31
  167. package/dist/cli/briefs.d.ts +1 -1
  168. package/dist/cli/briefs.js +20 -15
  169. package/dist/cli/card.d.ts +1 -1
  170. package/dist/cli/card.js +56 -73
  171. package/dist/cli/client.d.ts +12 -5
  172. package/dist/cli/client.js +53 -23
  173. package/dist/cli/compact-resume-payload.d.ts +4 -1
  174. package/dist/cli/compact-resume-payload.js +12 -5
  175. package/dist/cli/context.js +43 -18
  176. package/dist/cli/continuity.d.ts +5 -5
  177. package/dist/cli/continuity.js +90 -107
  178. package/dist/cli/curate.d.ts +5 -4
  179. package/dist/cli/curate.js +55 -77
  180. package/dist/cli/dag.d.ts +1 -1
  181. package/dist/cli/dag.js +14 -17
  182. package/dist/cli/decisions.js +30 -30
  183. package/dist/cli/eval.js +16 -21
  184. package/dist/cli/exit.d.ts +4 -1
  185. package/dist/cli/exit.js +10 -2
  186. package/dist/cli/explain.js +12 -11
  187. package/dist/cli/flag-values.d.ts +1 -1
  188. package/dist/cli/flag-values.js +9 -18
  189. package/dist/cli/github.d.ts +6 -0
  190. package/dist/cli/github.js +25 -13
  191. package/dist/cli/goals.d.ts +1 -1
  192. package/dist/cli/goals.js +39 -56
  193. package/dist/cli/graph.d.ts +1 -1
  194. package/dist/cli/graph.js +15 -11
  195. package/dist/cli/hook-runtime.d.ts +34 -10
  196. package/dist/cli/hook-runtime.js +41 -16
  197. package/dist/cli/incidents.d.ts +1 -1
  198. package/dist/cli/incidents.js +25 -25
  199. package/dist/cli/init.d.ts +1 -1
  200. package/dist/cli/init.js +35 -20
  201. package/dist/cli/install-steps.d.ts +12 -3
  202. package/dist/cli/install-steps.js +42 -18
  203. package/dist/cli/last-sleep.d.ts +4 -1
  204. package/dist/cli/last-sleep.js +9 -4
  205. package/dist/cli/maintenance.d.ts +1 -1
  206. package/dist/cli/maintenance.js +11 -12
  207. package/dist/cli/notes.d.ts +1 -1
  208. package/dist/cli/notes.js +8 -5
  209. package/dist/cli/object-verbs.d.ts +5 -5
  210. package/dist/cli/object-verbs.js +13 -16
  211. package/dist/cli/open-browser.js +11 -2
  212. package/dist/cli/playbooks.d.ts +3 -3
  213. package/dist/cli/playbooks.js +40 -32
  214. package/dist/cli/predictions.js +17 -22
  215. package/dist/cli/print.js +4 -2
  216. package/dist/cli/projects.js +21 -11
  217. package/dist/cli/quality-repair-once.d.ts +1 -1
  218. package/dist/cli/quality-repair-once.js +7 -6
  219. package/dist/cli/recall.js +129 -93
  220. package/dist/cli/refine-llm.d.ts +15 -4
  221. package/dist/cli/refine-llm.js +17 -7
  222. package/dist/cli/remember.js +51 -55
  223. package/dist/cli/scheduler.d.ts +4 -1
  224. package/dist/cli/scheduler.js +9 -5
  225. package/dist/cli/serve.js +28 -18
  226. package/dist/cli/session-hooks.d.ts +2 -6
  227. package/dist/cli/session-hooks.js +140 -112
  228. package/dist/cli/setup.d.ts +1 -1
  229. package/dist/cli/setup.js +56 -34
  230. package/dist/cli/shared.d.ts +4 -2
  231. package/dist/cli/shared.js +26 -11
  232. package/dist/cli/slack.js +15 -24
  233. package/dist/cli/sleep-render.d.ts +3 -1
  234. package/dist/cli/sleep-render.js +8 -5
  235. package/dist/cli/sleep.js +16 -8
  236. package/dist/cli/status.d.ts +4 -4
  237. package/dist/cli/status.js +32 -27
  238. package/dist/cli/stdin.d.ts +10 -3
  239. package/dist/cli/stdin.js +10 -3
  240. package/dist/cli/transfer.d.ts +4 -4
  241. package/dist/cli/transfer.js +97 -82
  242. package/dist/cli/usage.d.ts +1 -1
  243. package/dist/cli/usage.js +1 -1
  244. package/dist/cli/verb-row.d.ts +2 -0
  245. package/dist/cli/verbs/health.js +2 -0
  246. package/dist/cli/verbs/memory.js +47 -53
  247. package/dist/cli/verbs/objects.js +16 -7
  248. package/dist/cli/verbs/sessions.js +4 -2
  249. package/dist/cli/versioned-verbs.d.ts +8 -7
  250. package/dist/cli/versioned-verbs.js +31 -21
  251. package/dist/cli.js +14 -18
  252. package/dist/connectors/dlq.d.ts +6 -6
  253. package/dist/connectors/dlq.js +12 -7
  254. package/dist/connectors/github/backfill.d.ts +4 -4
  255. package/dist/connectors/github/backfill.js +6 -4
  256. package/dist/connectors/github/deletion.d.ts +6 -4
  257. package/dist/connectors/github/deletion.js +5 -4
  258. package/dist/connectors/github/dlq.d.ts +8 -6
  259. package/dist/connectors/github/dlq.js +11 -5
  260. package/dist/connectors/github/ingest.d.ts +2 -2
  261. package/dist/connectors/github/ingest.js +9 -5
  262. package/dist/connectors/github/octokit-client.d.ts +3 -1
  263. package/dist/connectors/github/octokit-client.js +7 -2
  264. package/dist/connectors/github/ratelimit.d.ts +6 -2
  265. package/dist/connectors/github/ratelimit.js +6 -2
  266. package/dist/connectors/github/signature.d.ts +14 -3
  267. package/dist/connectors/github/signature.js +17 -3
  268. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  269. package/dist/connectors/github/tenant-routing.js +6 -5
  270. package/dist/connectors/github/transform.js +50 -67
  271. package/dist/connectors/github/types.d.ts +10 -3
  272. package/dist/connectors/github/types.js +6 -2
  273. package/dist/connectors/github/webhook.d.ts +5 -5
  274. package/dist/connectors/github/webhook.js +36 -23
  275. package/dist/connectors/ingest.d.ts +5 -3
  276. package/dist/connectors/ingest.js +3 -3
  277. package/dist/connectors/slack/backfill.d.ts +5 -5
  278. package/dist/connectors/slack/backfill.js +3 -3
  279. package/dist/connectors/slack/deletion.d.ts +4 -4
  280. package/dist/connectors/slack/deletion.js +6 -5
  281. package/dist/connectors/slack/dlq.d.ts +4 -4
  282. package/dist/connectors/slack/dlq.js +6 -6
  283. package/dist/connectors/slack/ingest.d.ts +6 -4
  284. package/dist/connectors/slack/ingest.js +5 -4
  285. package/dist/connectors/slack/signature.d.ts +4 -1
  286. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  287. package/dist/connectors/slack/tenant-routing.js +6 -5
  288. package/dist/connectors/slack/transform.d.ts +6 -2
  289. package/dist/connectors/slack/transform.js +6 -2
  290. package/dist/connectors/slack/types.d.ts +3 -1
  291. package/dist/connectors/slack/web-client.js +8 -3
  292. package/dist/connectors/slack/webhook.d.ts +5 -5
  293. package/dist/connectors/slack/webhook.js +19 -11
  294. package/dist/connectors/slack/workspaces.d.ts +7 -3
  295. package/dist/connectors/slack/workspaces.js +7 -3
  296. package/dist/connectors/store.d.ts +8 -0
  297. package/dist/connectors/store.js +2 -0
  298. package/dist/consolidate/conflicts.js +24 -10
  299. package/dist/consolidate/dag-summary.js +2 -1
  300. package/dist/consolidate/dag.d.ts +10 -5
  301. package/dist/consolidate/dag.js +45 -39
  302. package/dist/consolidate/decay.js +19 -6
  303. package/dist/consolidate/dedupe.d.ts +14 -5
  304. package/dist/consolidate/dedupe.js +28 -17
  305. package/dist/consolidate/flush-units.d.ts +4 -1
  306. package/dist/consolidate/flush-units.js +4 -1
  307. package/dist/consolidate/half-life-migration.d.ts +18 -8
  308. package/dist/consolidate/half-life-migration.js +48 -18
  309. package/dist/consolidate/llm-passes.js +27 -11
  310. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  311. package/dist/consolidate/memory-value-weights.js +6 -2
  312. package/dist/consolidate/memory-value.d.ts +30 -10
  313. package/dist/consolidate/memory-value.js +37 -14
  314. package/dist/consolidate/merge.d.ts +4 -1
  315. package/dist/consolidate/merge.js +47 -37
  316. package/dist/consolidate/overlap-index.d.ts +8 -2
  317. package/dist/consolidate/overlap-index.js +11 -4
  318. package/dist/consolidate/physics-pass.d.ts +3 -1
  319. package/dist/consolidate/physics-pass.js +10 -7
  320. package/dist/consolidate/replay.d.ts +11 -4
  321. package/dist/consolidate/replay.js +19 -7
  322. package/dist/consolidate/run.d.ts +13 -5
  323. package/dist/consolidate/run.js +4 -4
  324. package/dist/consolidate/sleep.d.ts +14 -6
  325. package/dist/consolidate/sleep.js +42 -39
  326. package/dist/consolidate/trace.d.ts +7 -2
  327. package/dist/consolidate/trace.js +7 -2
  328. package/dist/consolidate/traces.js +27 -30
  329. package/dist/core/ablation.d.ts +9 -3
  330. package/dist/core/ablation.js +14 -4
  331. package/dist/core/active-scope.d.ts +3 -1
  332. package/dist/core/active-scope.js +3 -1
  333. package/dist/core/agent-memory-tools.d.ts +2 -0
  334. package/dist/core/agent-memory-tools.js +2 -0
  335. package/dist/core/ambient.d.ts +4 -3
  336. package/dist/core/ambient.js +8 -6
  337. package/dist/core/api-errors.d.ts +9 -3
  338. package/dist/core/api-errors.js +9 -3
  339. package/dist/core/capture-contract.d.ts +4 -1
  340. package/dist/core/capture-contract.js +27 -8
  341. package/dist/core/compare.d.ts +24 -8
  342. package/dist/core/compare.js +24 -8
  343. package/dist/core/config.d.ts +18 -9
  344. package/dist/core/config.js +38 -29
  345. package/dist/core/cosine.d.ts +4 -1
  346. package/dist/core/cosine.js +4 -1
  347. package/dist/core/handoff.d.ts +7 -2
  348. package/dist/core/handoff.js +4 -1
  349. package/dist/core/markdown.js +22 -17
  350. package/dist/core/memory-audit.js +14 -3
  351. package/dist/core/memory-quality.d.ts +12 -3
  352. package/dist/core/memory-quality.js +57 -21
  353. package/dist/core/memory.d.ts +87 -30
  354. package/dist/core/memory.js +82 -33
  355. package/dist/core/merged-row.d.ts +8 -2
  356. package/dist/core/merged-row.js +10 -3
  357. package/dist/core/package-root.d.ts +3 -1
  358. package/dist/core/package-root.js +3 -1
  359. package/dist/core/particle-refresh.d.ts +8 -0
  360. package/dist/core/particle-refresh.js +22 -0
  361. package/dist/core/physics-config.d.ts +4 -1
  362. package/dist/core/physics-config.js +6 -2
  363. package/dist/core/physics.d.ts +39 -11
  364. package/dist/core/physics.js +71 -21
  365. package/dist/core/project-identity.d.ts +34 -17
  366. package/dist/core/project-identity.js +35 -18
  367. package/dist/core/project-remote.d.ts +8 -4
  368. package/dist/core/project-remote.js +31 -14
  369. package/dist/core/recall-scope.d.ts +33 -11
  370. package/dist/core/recall-scope.js +42 -15
  371. package/dist/core/rejection-digest.d.ts +7 -0
  372. package/dist/core/rejection-digest.js +13 -0
  373. package/dist/core/salience.d.ts +3 -1
  374. package/dist/core/salience.js +10 -4
  375. package/dist/core/search-types.d.ts +15 -2
  376. package/dist/core/search-types.js +11 -0
  377. package/dist/dashboard/dashboard-actions.d.ts +2 -2
  378. package/dist/dashboard/dashboard-actions.js +18 -7
  379. package/dist/dashboard/dashboard-queries.js +2 -7
  380. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  381. package/dist/dashboard/dashboard-snapshot.js +5 -7
  382. package/dist/dashboard/dashboard.js +22 -8
  383. package/dist/db/backup.js +2 -2
  384. package/dist/db/busy.d.ts +10 -3
  385. package/dist/db/busy.js +27 -5
  386. package/dist/db/connect.d.ts +10 -2
  387. package/dist/db/connect.js +8 -2
  388. package/dist/db/continuity.d.ts +1 -1
  389. package/dist/db/continuity.js +27 -11
  390. package/dist/db/meta.d.ts +4 -1
  391. package/dist/db/meta.js +4 -1
  392. package/dist/db/migrate.d.ts +10 -5
  393. package/dist/db/migrate.js +40 -20
  394. package/dist/db/migrations/index.d.ts +1 -1
  395. package/dist/db/migrations/index.js +3 -1
  396. package/dist/db/migrations/types.d.ts +2 -1
  397. package/dist/db/migrations/v11.js +1 -0
  398. package/dist/db/migrations/v12.js +2 -1
  399. package/dist/db/migrations/v14.js +2 -0
  400. package/dist/db/migrations/v15.js +4 -2
  401. package/dist/db/migrations/v16.js +6 -3
  402. package/dist/db/migrations/v17.js +2 -1
  403. package/dist/db/migrations/v19.js +4 -2
  404. package/dist/db/migrations/v20.js +2 -1
  405. package/dist/db/migrations/v22.js +12 -6
  406. package/dist/db/migrations/v23.js +6 -3
  407. package/dist/db/migrations/v24.js +6 -3
  408. package/dist/db/migrations/v25.js +4 -2
  409. package/dist/db/migrations/v26.js +4 -2
  410. package/dist/db/migrations/v27.js +6 -3
  411. package/dist/db/migrations/v28.js +4 -2
  412. package/dist/db/migrations/v29.js +4 -2
  413. package/dist/db/migrations/v30.js +6 -3
  414. package/dist/db/migrations/v31.js +4 -2
  415. package/dist/db/migrations/v32.js +6 -3
  416. package/dist/db/migrations/v33.js +4 -2
  417. package/dist/db/migrations/v34.js +2 -1
  418. package/dist/db/migrations/v35.js +2 -1
  419. package/dist/db/migrations/v36.js +2 -1
  420. package/dist/db/migrations/v37.js +10 -5
  421. package/dist/db/migrations/v38.js +10 -5
  422. package/dist/db/migrations/v39.js +14 -6
  423. package/dist/db/migrations/v40.js +4 -2
  424. package/dist/db/migrations/v41.js +4 -2
  425. package/dist/db/migrations/v42.js +2 -1
  426. package/dist/db/migrations/v44.js +4 -2
  427. package/dist/db/migrations/v45.js +4 -2
  428. package/dist/db/migrations/v49.js +2 -1
  429. package/dist/db/migrations/v50.js +4 -2
  430. package/dist/db/migrations/v51.js +4 -2
  431. package/dist/db/migrations/v52.js +2 -1
  432. package/dist/db/migrations/v53.js +8 -4
  433. package/dist/db/migrations/v54.js +2 -1
  434. package/dist/db/migrations/v55.js +4 -2
  435. package/dist/db/migrations/v56.d.ts +3 -0
  436. package/dist/db/migrations/v56.js +28 -0
  437. package/dist/db/open.d.ts +24 -12
  438. package/dist/db/open.js +25 -13
  439. package/dist/db/physics-state.d.ts +8 -8
  440. package/dist/db/physics-state.js +17 -50
  441. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  442. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  443. package/dist/db/request-stores.d.ts +20 -5
  444. package/dist/db/request-stores.js +15 -5
  445. package/dist/db/tables.d.ts +2 -1
  446. package/dist/db/tables.js +12 -4
  447. package/dist/db/vector-store.d.ts +13 -4
  448. package/dist/db/vector-store.js +35 -14
  449. package/dist/db/wal-checkpointer.d.ts +2 -1
  450. package/dist/db/wal-checkpointer.js +19 -7
  451. package/dist/doctor.d.ts +7 -1
  452. package/dist/doctor.js +128 -46
  453. package/dist/embeddings/local.d.ts +8 -4
  454. package/dist/embeddings/local.js +11 -7
  455. package/dist/embeddings/provider.d.ts +19 -10
  456. package/dist/embeddings/provider.js +32 -27
  457. package/dist/embeddings/transformers.d.ts +16 -4
  458. package/dist/embeddings/transformers.js +32 -15
  459. package/dist/entry/json-hooks.d.ts +1 -1
  460. package/dist/entry/json-hooks.js +1 -1
  461. package/dist/entry/project-identity.js +2 -1
  462. package/dist/entry/session-text.d.ts +1 -1
  463. package/dist/entry/session-text.js +1 -1
  464. package/dist/entry/sqlite-handles.d.ts +10 -0
  465. package/dist/entry/sqlite-handles.js +9 -0
  466. package/dist/entry/store-kit.d.ts +50 -0
  467. package/dist/entry/store-kit.js +27 -0
  468. package/dist/entry/testing.d.ts +6 -0
  469. package/dist/entry/testing.js +7 -0
  470. package/dist/eval/eval-stats.d.ts +27 -8
  471. package/dist/eval/eval-stats.js +17 -5
  472. package/dist/eval/eval-suite.d.ts +3 -1
  473. package/dist/eval/eval-suite.js +409 -187
  474. package/dist/eval/eval.d.ts +8 -2
  475. package/dist/eval/eval.js +8 -2
  476. package/dist/eval/judgment.js +17 -7
  477. package/dist/graph/delta.d.ts +9 -42
  478. package/dist/graph/delta.js +17 -11
  479. package/dist/graph/extract.d.ts +10 -7
  480. package/dist/graph/extract.js +57 -25
  481. package/dist/graph/recall.d.ts +12 -4
  482. package/dist/graph/recall.js +30 -13
  483. package/dist/graph/stream.d.ts +18 -6
  484. package/dist/graph/stream.js +32 -10
  485. package/dist/graph/view.d.ts +19 -6
  486. package/dist/graph/view.js +42 -17
  487. package/dist/hooks/codex-session.js +2 -2
  488. package/dist/hooks/codex-wrapper.d.ts +3 -1
  489. package/dist/hooks/codex-wrapper.js +9 -4
  490. package/dist/hooks/copilot.d.ts +19 -5
  491. package/dist/hooks/copilot.js +54 -15
  492. package/dist/hooks/hook-blocks.d.ts +4 -1
  493. package/dist/hooks/hook-blocks.js +8 -3
  494. package/dist/hooks/json-hooks.d.ts +9 -5
  495. package/dist/hooks/json-hooks.js +72 -33
  496. package/dist/hooks/opencode.js +15 -5
  497. package/dist/hooks/shared.d.ts +27 -8
  498. package/dist/hooks/shared.js +57 -16
  499. package/dist/importers/core.d.ts +12 -4
  500. package/dist/importers/core.js +11 -10
  501. package/dist/importers/markdown-parse.d.ts +15 -5
  502. package/dist/importers/markdown-parse.js +16 -7
  503. package/dist/importers/markdown.js +6 -9
  504. package/dist/importers/sources.js +10 -23
  505. package/dist/importers/vault.d.ts +3 -3
  506. package/dist/importers/vault.js +61 -45
  507. package/dist/index.d.ts +33 -7
  508. package/dist/index.js +26 -8
  509. package/dist/learn/autolearn.d.ts +21 -6
  510. package/dist/learn/autolearn.js +57 -26
  511. package/dist/learn/churn-git.d.ts +4 -1
  512. package/dist/learn/churn-git.js +29 -5
  513. package/dist/learn/extract.d.ts +4 -1
  514. package/dist/learn/extract.js +17 -10
  515. package/dist/learn/forward-claim-detector.d.ts +17 -5
  516. package/dist/learn/forward-claim-detector.js +34 -15
  517. package/dist/learn/invalidation.d.ts +12 -6
  518. package/dist/learn/invalidation.js +62 -28
  519. package/dist/learn/roots.d.ts +3 -0
  520. package/dist/learn/roots.js +5 -0
  521. package/dist/mcp/admin-tools.d.ts +5 -5
  522. package/dist/mcp/admin-tools.js +28 -23
  523. package/dist/mcp/format.d.ts +1 -1
  524. package/dist/mcp/format.js +4 -2
  525. package/dist/mcp/framing.d.ts +3 -1
  526. package/dist/mcp/framing.js +20 -8
  527. package/dist/mcp/memory-tools.d.ts +3 -3
  528. package/dist/mcp/memory-tools.js +21 -20
  529. package/dist/mcp/protocol.d.ts +32 -16
  530. package/dist/mcp/protocol.js +12 -9
  531. package/dist/mcp/recall-tools.d.ts +3 -3
  532. package/dist/mcp/recall-tools.js +62 -74
  533. package/dist/mcp/request.d.ts +7 -5
  534. package/dist/mcp/request.js +61 -77
  535. package/dist/mcp/server.d.ts +3 -1
  536. package/dist/mcp/server.js +8 -3
  537. package/dist/mcp/session-state.d.ts +1 -1
  538. package/dist/mcp/session-state.js +4 -3
  539. package/dist/mcp/shared-gate.d.ts +3 -2
  540. package/dist/mcp/shared-gate.js +3 -2
  541. package/dist/mcp/stdio.d.ts +6 -3
  542. package/dist/mcp/stdio.js +59 -23
  543. package/dist/mcp/tool-args.d.ts +4 -1
  544. package/dist/mcp/tool-args.js +8 -3
  545. package/dist/mcp/tools.js +76 -32
  546. package/dist/objects/customer-notes.d.ts +12 -10
  547. package/dist/objects/customer-notes.js +21 -15
  548. package/dist/objects/decisions.d.ts +18 -10
  549. package/dist/objects/decisions.js +23 -17
  550. package/dist/objects/descriptor.js +2 -1
  551. package/dist/objects/fields.d.ts +4 -1
  552. package/dist/objects/fields.js +6 -2
  553. package/dist/objects/incidents.d.ts +14 -16
  554. package/dist/objects/incidents.js +29 -30
  555. package/dist/objects/lifecycle.d.ts +0 -4
  556. package/dist/objects/lifecycle.js +21 -24
  557. package/dist/objects/policies.d.ts +12 -16
  558. package/dist/objects/policies.js +17 -21
  559. package/dist/objects/processes.d.ts +16 -10
  560. package/dist/objects/processes.js +20 -15
  561. package/dist/objects/project-briefs.d.ts +13 -14
  562. package/dist/objects/project-briefs.js +33 -39
  563. package/dist/objects/skills.d.ts +10 -12
  564. package/dist/objects/skills.js +17 -22
  565. package/dist/postinstall.js +15 -7
  566. package/dist/predictions/planning-fallacy.d.ts +19 -6
  567. package/dist/predictions/planning-fallacy.js +4 -2
  568. package/dist/rerankers/clef.d.ts +8 -2
  569. package/dist/rerankers/clef.js +14 -9
  570. package/dist/rerankers/cross-encoder.d.ts +2 -1
  571. package/dist/rerankers/cross-encoder.js +19 -9
  572. package/dist/rerankers/index.js +2 -1
  573. package/dist/rerankers/jev.js +2 -1
  574. package/dist/rerankers/llm.d.ts +6 -2
  575. package/dist/rerankers/llm.js +8 -3
  576. package/dist/rerankers/remote.d.ts +3 -1
  577. package/dist/rerankers/remote.js +5 -2
  578. package/dist/rerankers/types.d.ts +6 -2
  579. package/dist/search/bm25-search.d.ts +3 -1
  580. package/dist/search/bm25-search.js +15 -2
  581. package/dist/search/boosts.js +4 -3
  582. package/dist/search/embed-memories.d.ts +12 -4
  583. package/dist/search/embed-memories.js +96 -58
  584. package/dist/search/engine.d.ts +11 -0
  585. package/dist/search/engine.js +14 -0
  586. package/dist/search/goal-boost.d.ts +10 -3
  587. package/dist/search/goal-boost.js +13 -6
  588. package/dist/search/hybrid-score.d.ts +4 -1
  589. package/dist/search/hybrid-score.js +4 -1
  590. package/dist/search/hybrid.d.ts +23 -8
  591. package/dist/search/hybrid.js +12 -7
  592. package/dist/search/multihop.js +14 -13
  593. package/dist/search/path-context.d.ts +10 -3
  594. package/dist/search/path-context.js +10 -3
  595. package/dist/search/physics-search.d.ts +9 -4
  596. package/dist/search/physics-search.js +38 -14
  597. package/dist/search/rerank.d.ts +2 -1
  598. package/dist/search/rerank.js +2 -1
  599. package/dist/search/rrf.d.ts +14 -5
  600. package/dist/search/rrf.js +11 -4
  601. package/dist/search/vector.d.ts +8 -2
  602. package/dist/search/vector.js +14 -8
  603. package/dist/server/auth.d.ts +19 -15
  604. package/dist/server/auth.js +68 -38
  605. package/dist/server/boot.d.ts +4 -1
  606. package/dist/server/boot.js +115 -67
  607. package/dist/server/client-ip.d.ts +17 -5
  608. package/dist/server/client-ip.js +56 -21
  609. package/dist/server/cursor.d.ts +10 -3
  610. package/dist/server/cursor.js +10 -3
  611. package/dist/server/deadline.d.ts +5 -2
  612. package/dist/server/deadline.js +10 -3
  613. package/dist/server/key-check-bounds.js +12 -4
  614. package/dist/server/lifecycle.d.ts +4 -1
  615. package/dist/server/lifecycle.js +10 -4
  616. package/dist/server/mcp-http.d.ts +2 -1
  617. package/dist/server/mcp-http.js +37 -22
  618. package/dist/server/rate-limit.d.ts +17 -5
  619. package/dist/server/rate-limit.js +55 -26
  620. package/dist/server/ready.js +7 -4
  621. package/dist/server/request.d.ts +15 -4
  622. package/dist/server/request.js +42 -15
  623. package/dist/server/route-checks.d.ts +4 -1
  624. package/dist/server/route-checks.js +8 -3
  625. package/dist/server/route-table.d.ts +8 -6
  626. package/dist/server/route-table.js +550 -97
  627. package/dist/server/routes/admin.d.ts +7 -7
  628. package/dist/server/routes/admin.js +36 -15
  629. package/dist/server/routes/customer-notes.d.ts +5 -5
  630. package/dist/server/routes/customer-notes.js +5 -4
  631. package/dist/server/routes/decisions.d.ts +5 -5
  632. package/dist/server/routes/decisions.js +12 -6
  633. package/dist/server/routes/incidents.d.ts +5 -5
  634. package/dist/server/routes/incidents.js +10 -4
  635. package/dist/server/routes/memories.d.ts +8 -8
  636. package/dist/server/routes/memories.js +12 -17
  637. package/dist/server/routes/object-routes.d.ts +8 -5
  638. package/dist/server/routes/object-routes.js +4 -2
  639. package/dist/server/routes/policies.d.ts +6 -6
  640. package/dist/server/routes/policies.js +11 -4
  641. package/dist/server/routes/predictions.d.ts +5 -5
  642. package/dist/server/routes/predictions.js +9 -4
  643. package/dist/server/routes/processes.d.ts +5 -5
  644. package/dist/server/routes/processes.js +15 -6
  645. package/dist/server/routes/project-briefs.d.ts +6 -6
  646. package/dist/server/routes/project-briefs.js +3 -2
  647. package/dist/server/routes/recall.d.ts +3 -3
  648. package/dist/server/routes/recall.js +21 -10
  649. package/dist/server/routes/skills.d.ts +6 -6
  650. package/dist/server/routes/skills.js +12 -4
  651. package/dist/server/server-detect.d.ts +24 -8
  652. package/dist/server/server-detect.js +57 -22
  653. package/dist/server/sleep-child.js +16 -10
  654. package/dist/server/sleep-offload.d.ts +8 -5
  655. package/dist/server/sleep-offload.js +40 -18
  656. package/dist/server/tls.d.ts +10 -2
  657. package/dist/server/tls.js +25 -5
  658. package/dist/server/types.d.ts +41 -24
  659. package/dist/server/validation.d.ts +4 -1
  660. package/dist/server/validation.js +22 -9
  661. package/dist/server.d.ts +17 -49
  662. package/dist/server.js +33 -40
  663. package/dist/sharing/global-store.d.ts +6 -12
  664. package/dist/sharing/global-store.js +8 -48
  665. package/dist/sharing/global-sync.d.ts +3 -1
  666. package/dist/sharing/global-sync.js +17 -7
  667. package/dist/sharing/project-merge.d.ts +25 -7
  668. package/dist/sharing/project-merge.js +49 -17
  669. package/dist/sharing/search-both.d.ts +8 -4
  670. package/dist/sharing/search-both.js +28 -14
  671. package/dist/sharing/share.d.ts +8 -4
  672. package/dist/sharing/share.js +40 -18
  673. package/dist/store/ambient.js +10 -5
  674. package/dist/store/audit-event.d.ts +2 -2
  675. package/dist/store/audit-event.js +8 -3
  676. package/dist/store/audit.d.ts +6 -3
  677. package/dist/store/audit.js +16 -6
  678. package/dist/store/auth.d.ts +4 -2
  679. package/dist/store/auth.js +63 -20
  680. package/dist/store/busy.d.ts +9 -0
  681. package/dist/store/busy.js +16 -0
  682. package/dist/store/candidates.d.ts +12 -5
  683. package/dist/store/candidates.js +90 -41
  684. package/dist/store/capture-write.d.ts +2 -1
  685. package/dist/store/capture-write.js +2 -1
  686. package/dist/store/card-detail.d.ts +4 -4
  687. package/dist/store/card-detail.js +15 -8
  688. package/dist/store/cards.d.ts +24 -10
  689. package/dist/store/cards.js +97 -63
  690. package/dist/store/compaction-caller.d.ts +2 -1
  691. package/dist/store/compaction-caller.js +2 -1
  692. package/dist/store/compactions-record.d.ts +14 -8
  693. package/dist/store/compactions-record.js +101 -37
  694. package/dist/store/compactions.js +35 -15
  695. package/dist/store/conflicts.d.ts +16 -5
  696. package/dist/store/conflicts.js +104 -48
  697. package/dist/store/connectors/dlq.d.ts +17 -5
  698. package/dist/store/connectors/dlq.js +58 -6
  699. package/dist/store/connectors/event-log.d.ts +122 -0
  700. package/dist/store/connectors/event-log.js +25 -0
  701. package/dist/store/connectors/github.d.ts +6 -3
  702. package/dist/store/connectors/github.js +30 -48
  703. package/dist/store/connectors/slack.d.ts +2 -1
  704. package/dist/store/connectors/slack.js +31 -47
  705. package/dist/store/dashboard-reads.d.ts +7 -3
  706. package/dist/store/dashboard-reads.js +32 -10
  707. package/dist/store/delete-and-batch.d.ts +17 -11
  708. package/dist/store/delete-and-batch.js +70 -28
  709. package/dist/store/delivery-recorder.d.ts +10 -7
  710. package/dist/store/delivery-recorder.js +70 -37
  711. package/dist/store/descendant-page.d.ts +2 -1
  712. package/dist/store/descendant-page.js +26 -10
  713. package/dist/store/diagnostics.d.ts +2 -1
  714. package/dist/store/diagnostics.js +2 -1
  715. package/dist/store/doctor-reads.d.ts +2 -1
  716. package/dist/store/doctor-reads.js +13 -5
  717. package/dist/store/dormant.d.ts +19 -11
  718. package/dist/store/dormant.js +45 -19
  719. package/dist/store/embeddings/index.d.ts +13 -9
  720. package/dist/store/embeddings/index.js +19 -12
  721. package/dist/store/entry-reads.d.ts +72 -21
  722. package/dist/store/entry-reads.js +215 -69
  723. package/dist/store/entry-row.d.ts +10 -6
  724. package/dist/store/entry-row.js +26 -14
  725. package/dist/store/entry-writes.d.ts +28 -13
  726. package/dist/store/entry-writes.js +61 -22
  727. package/dist/store/failure-log-at.js +1 -1
  728. package/dist/store/failure-log.d.ts +4 -2
  729. package/dist/store/failure-log.js +13 -6
  730. package/dist/store/gated-write.d.ts +3 -3
  731. package/dist/store/gated-write.js +3 -3
  732. package/dist/store/goals.d.ts +5 -4
  733. package/dist/store/goals.js +11 -12
  734. package/dist/store/graph-apply.d.ts +21 -0
  735. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  736. package/dist/store/graph-queue.d.ts +9 -6
  737. package/dist/store/graph-queue.js +15 -10
  738. package/dist/store/graph-reads.d.ts +16 -11
  739. package/dist/store/graph-reads.js +29 -19
  740. package/dist/store/graph-rows.d.ts +41 -3
  741. package/dist/store/graph-rows.js +10 -7
  742. package/dist/store/graph-view-rows.js +15 -7
  743. package/dist/store/graph-writes.d.ts +16 -10
  744. package/dist/store/graph-writes.js +59 -36
  745. package/dist/store/half-life.js +2 -2
  746. package/dist/store/handoffs.d.ts +13 -7
  747. package/dist/store/handoffs.js +44 -22
  748. package/dist/store/index-and-stats.d.ts +2 -2
  749. package/dist/store/index-and-stats.js +6 -5
  750. package/dist/store/index.d.ts +4 -2
  751. package/dist/store/index.js +2 -1
  752. package/dist/store/key-audit.d.ts +2 -1
  753. package/dist/store/key-audit.js +2 -1
  754. package/dist/store/key-writes.d.ts +2 -1
  755. package/dist/store/key-writes.js +9 -2
  756. package/dist/store/ledger-turn.d.ts +4 -1
  757. package/dist/store/ledger-turn.js +7 -2
  758. package/dist/store/mirrors.d.ts +11 -4
  759. package/dist/store/mirrors.js +96 -19
  760. package/dist/store/narrow.d.ts +6 -0
  761. package/dist/store/narrow.js +11 -0
  762. package/dist/store/open.d.ts +6 -3
  763. package/dist/store/open.js +20 -10
  764. package/dist/store/pilot-arm.d.ts +2 -1
  765. package/dist/store/pilot-arm.js +18 -6
  766. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  767. package/dist/store/planning-fallacy-evidence.js +8 -5
  768. package/dist/store/port/agent-import.d.ts +62 -0
  769. package/dist/store/port/agent-import.js +2 -0
  770. package/dist/store/port/consolidation.d.ts +129 -0
  771. package/dist/store/port/consolidation.js +2 -0
  772. package/dist/store/port/learning.d.ts +19 -0
  773. package/dist/store/port/learning.js +2 -0
  774. package/dist/store/port/local-files.d.ts +18 -0
  775. package/dist/store/port/local-files.js +2 -0
  776. package/dist/store/port/promotion.d.ts +20 -0
  777. package/dist/store/port/promotion.js +3 -0
  778. package/dist/store/port-groups.d.ts +160 -0
  779. package/dist/store/port-groups.js +2 -0
  780. package/dist/store/port.d.ts +261 -219
  781. package/dist/store/port.js +3 -9
  782. package/dist/store/predictions.d.ts +14 -10
  783. package/dist/store/predictions.js +37 -17
  784. package/dist/store/project-tags.d.ts +4 -1
  785. package/dist/store/project-tags.js +16 -5
  786. package/dist/store/quality-repair.d.ts +8 -4
  787. package/dist/store/quality-repair.js +53 -20
  788. package/dist/store/quarantine.d.ts +1 -0
  789. package/dist/store/quarantine.js +23 -9
  790. package/dist/store/raw-archive.d.ts +5 -4
  791. package/dist/store/raw-archive.js +11 -10
  792. package/dist/store/recall-trace.d.ts +22 -17
  793. package/dist/store/recall-trace.js +128 -64
  794. package/dist/store/rejected-values.d.ts +15 -10
  795. package/dist/store/rejected-values.js +46 -20
  796. package/dist/store/rejection.d.ts +12 -11
  797. package/dist/store/rejection.js +18 -19
  798. package/dist/store/report-reads.d.ts +2 -1
  799. package/dist/store/report-reads.js +2 -1
  800. package/dist/store/rows.d.ts +7 -5
  801. package/dist/store/rows.js +20 -13
  802. package/dist/store/rule-sql.d.ts +7 -3
  803. package/dist/store/rule-sql.js +26 -13
  804. package/dist/store/search-rows.d.ts +16 -11
  805. package/dist/store/search-rows.js +54 -32
  806. package/dist/store/sessions.d.ts +12 -10
  807. package/dist/store/sessions.js +40 -21
  808. package/dist/store/set-aside.d.ts +2 -2
  809. package/dist/store/set-aside.js +18 -5
  810. package/dist/store/sqlite/agent-import.d.ts +3 -0
  811. package/dist/store/sqlite/agent-import.js +77 -0
  812. package/dist/store/sqlite/cards-group.d.ts +6 -0
  813. package/dist/store/sqlite/cards-group.js +37 -0
  814. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  815. package/dist/store/sqlite/conflicts-group.js +18 -0
  816. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  817. package/dist/store/sqlite/connector-events-group.js +17 -6
  818. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  819. package/dist/store/sqlite/connector-writes-group.js +12 -5
  820. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  821. package/dist/store/sqlite/consolidation-group.js +64 -0
  822. package/dist/store/sqlite/dag-reads-group.js +1 -1
  823. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  824. package/dist/store/sqlite/dormant-group.js +29 -0
  825. package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
  826. package/dist/store/sqlite/entry-writes-group.js +37 -14
  827. package/dist/store/sqlite/error-codec.d.ts +4 -2
  828. package/dist/store/sqlite/error-codec.js +32 -10
  829. package/dist/store/sqlite/executor-counts.js +2 -1
  830. package/dist/store/sqlite/executor.d.ts +8 -3
  831. package/dist/store/sqlite/executor.js +56 -18
  832. package/dist/store/sqlite/global-promote.d.ts +5 -0
  833. package/dist/store/sqlite/global-promote.js +48 -0
  834. package/dist/store/sqlite/goals-group.d.ts +6 -0
  835. package/dist/store/sqlite/goals-group.js +23 -0
  836. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  837. package/dist/store/sqlite/graph-reads-group.js +2 -1
  838. package/dist/store/sqlite/held-connection.d.ts +8 -0
  839. package/dist/store/sqlite/held-connection.js +34 -7
  840. package/dist/store/sqlite/last-recall-group.d.ts +15 -0
  841. package/dist/store/sqlite/last-recall-group.js +62 -0
  842. package/dist/store/sqlite/learning-group.d.ts +4 -0
  843. package/dist/store/sqlite/learning-group.js +17 -0
  844. package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
  845. package/dist/store/sqlite/maintenance-groups.js +61 -0
  846. package/dist/store/sqlite/object-rows.d.ts +6 -3
  847. package/dist/store/sqlite/object-rows.js +34 -5
  848. package/dist/store/sqlite/objects-group.d.ts +5 -4
  849. package/dist/store/sqlite/objects-group.js +97 -38
  850. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  851. package/dist/store/sqlite/predictions-group.js +4 -2
  852. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  853. package/dist/store/sqlite/promotion-group.js +10 -0
  854. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  855. package/dist/store/sqlite/quarantine-group.js +4 -2
  856. package/dist/store/sqlite/reports-group.d.ts +6 -0
  857. package/dist/store/sqlite/reports-group.js +33 -0
  858. package/dist/store/sqlite/request-scope.d.ts +6 -0
  859. package/dist/store/sqlite/request-scope.js +18 -0
  860. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  861. package/dist/store/sqlite/sessions-group.js +46 -0
  862. package/dist/store/sqlite/store.d.ts +22 -18
  863. package/dist/store/sqlite/store.js +95 -33
  864. package/dist/store/sqlite/vector-pack.js +2 -1
  865. package/dist/store/sqlite/vector-reads-group.js +2 -1
  866. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  867. package/dist/store/sqlite/worker-jobs.js +19 -7
  868. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  869. package/dist/store/sqlite/worker-ops.js +6 -3
  870. package/dist/store/sqlite/worker-store.d.ts +4 -3
  871. package/dist/store/sqlite/worker-store.js +24 -14
  872. package/dist/store/summaries.d.ts +25 -11
  873. package/dist/store/summaries.js +84 -27
  874. package/dist/store/summary-dirty.d.ts +2 -1
  875. package/dist/store/summary-dirty.js +2 -1
  876. package/dist/store/tenant.d.ts +3 -2
  877. package/dist/store/tenant.js +5 -4
  878. package/dist/store/token-ledger-rows.js +8 -4
  879. package/dist/store/token-ledger.d.ts +19 -13
  880. package/dist/store/token-ledger.js +27 -14
  881. package/dist/store/tombstone-checks.d.ts +4 -1
  882. package/dist/store/tombstone-checks.js +10 -1
  883. package/dist/store/usage-reports.js +2 -1
  884. package/dist/store/vector-index.d.ts +8 -5
  885. package/dist/store/vector-index.js +28 -11
  886. package/dist/store/working-memory.d.ts +6 -4
  887. package/dist/store/working-memory.js +14 -9
  888. package/dist/support-bundle.js +10 -5
  889. package/dist/trust/quarantine.d.ts +1 -2
  890. package/dist/trust/quarantine.js +1 -5
  891. package/dist/trust/reject-flow.d.ts +12 -3
  892. package/dist/trust/reject-flow.js +12 -4
  893. package/dist/util/anthropic-messages.d.ts +7 -2
  894. package/dist/util/anthropic-messages.js +18 -7
  895. package/dist/util/atomic-write.d.ts +8 -3
  896. package/dist/util/atomic-write.js +36 -21
  897. package/dist/util/compaction-items.d.ts +4 -1
  898. package/dist/util/compaction-items.js +8 -2
  899. package/dist/util/crash-handlers.d.ts +7 -2
  900. package/dist/util/crash-handlers.js +13 -4
  901. package/dist/util/env.d.ts +26 -5
  902. package/dist/util/env.js +87 -25
  903. package/dist/util/format.d.ts +2 -0
  904. package/dist/util/format.js +4 -0
  905. package/dist/util/home-path.js +12 -6
  906. package/dist/util/hook-payload.d.ts +3 -1
  907. package/dist/util/hook-payload.js +3 -1
  908. package/dist/util/http-retry.d.ts +12 -6
  909. package/dist/util/http-retry.js +16 -6
  910. package/dist/util/http-util.d.ts +20 -5
  911. package/dist/util/http-util.js +28 -9
  912. package/dist/util/json.d.ts +4 -1
  913. package/dist/util/json.js +4 -1
  914. package/dist/util/keyset.js +2 -1
  915. package/dist/util/limits.js +4 -2
  916. package/dist/util/log.d.ts +13 -5
  917. package/dist/util/log.js +29 -6
  918. package/dist/util/net.d.ts +5 -0
  919. package/dist/util/net.js +19 -0
  920. package/dist/util/real-path.d.ts +2 -1
  921. package/dist/util/real-path.js +4 -3
  922. package/dist/util/request-scope.d.ts +16 -4
  923. package/dist/util/request-scope.js +19 -6
  924. package/dist/util/same-text.d.ts +10 -3
  925. package/dist/util/same-text.js +10 -3
  926. package/dist/util/secret-detect.d.ts +24 -7
  927. package/dist/util/secret-detect.js +49 -14
  928. package/dist/util/spawn-argv.d.ts +11 -0
  929. package/dist/util/spawn-argv.js +66 -0
  930. package/dist/util/sql.d.ts +3 -0
  931. package/dist/util/sql.js +6 -0
  932. package/dist/util/sqlite-blocked.d.ts +15 -4
  933. package/dist/util/sqlite-blocked.js +19 -6
  934. package/dist/util/stored-json.d.ts +4 -1
  935. package/dist/util/stored-json.js +6 -2
  936. package/dist/util/stream-tee.d.ts +2 -1
  937. package/dist/util/stream-tee.js +8 -5
  938. package/dist/util/transcript-tail.d.ts +4 -1
  939. package/dist/util/transcript-tail.js +4 -1
  940. package/dist/util/vector-codec.d.ts +4 -0
  941. package/dist/util/vector-codec.js +15 -0
  942. package/dist/util/version.d.ts +8 -3
  943. package/dist/util/version.js +8 -3
  944. package/dist/util/write-budget.d.ts +7 -2
  945. package/dist/util/write-budget.js +5 -2
  946. package/dist/util/yaml.d.ts +4 -1
  947. package/dist/util/yaml.js +4 -1
  948. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  949. package/extensions/openclaw-plugin/package.json +1 -1
  950. package/openclaw.plugin.json +1 -1
  951. package/package.json +4 -1
  952. package/scripts/postinstall.cjs +3 -1
  953. package/dist/api/audit.js +0 -56
  954. package/dist/api/cards.d.ts +0 -42
  955. package/dist/api/conflicts.d.ts +0 -28
  956. package/dist/api/conflicts.js +0 -61
  957. package/dist/api/dormant.d.ts +0 -14
  958. package/dist/api/dormant.js +0 -58
  959. package/dist/api/goals.d.ts +0 -18
  960. package/dist/api/graph.d.ts +0 -8
  961. package/dist/api/graph.js +0 -7
  962. package/dist/api/learn.js +0 -124
  963. package/dist/api/memories.d.ts +0 -23
  964. package/dist/api/memories.js +0 -46
  965. package/dist/api/objects.d.ts +0 -9
  966. package/dist/api/on-store.d.ts +0 -16
  967. package/dist/api/on-store.js +0 -38
  968. package/dist/api/outcome.d.ts +0 -19
  969. package/dist/api/outcome.js +0 -21
  970. package/dist/api/predictions.d.ts +0 -11
  971. package/dist/api/promote.d.ts +0 -36
  972. package/dist/api/promote.js +0 -65
  973. package/dist/api/recall-core.d.ts +0 -4
  974. package/dist/api/recall-core.js +0 -120
  975. package/dist/api/recall-finish.d.ts +0 -53
  976. package/dist/api/recall-finish.js +0 -30
  977. package/dist/api/recall-history.d.ts +0 -64
  978. package/dist/api/recall-history.js +0 -159
  979. package/dist/api/recall-record.d.ts +0 -43
  980. package/dist/api/recall-record.js +0 -78
  981. package/dist/api/recall-request.js +0 -121
  982. package/dist/api/recall.d.ts +0 -6
  983. package/dist/api/refine.d.ts +0 -7
  984. package/dist/api/refine.js +0 -10
  985. package/dist/api/session-owners.d.ts +0 -4
  986. package/dist/api/session-owners.js +0 -17
  987. package/dist/api/sleep-run.d.ts +0 -26
  988. package/dist/api/sleep.js +0 -10
  989. package/dist/cli/lenient-id.d.ts +0 -2
  990. package/dist/cli/lenient-id.js +0 -13
  991. package/dist/graph/write.d.ts +0 -14
  992. package/dist/store/sqlite/busy.d.ts +0 -3
  993. package/dist/store/sqlite/busy.js +0 -8
  994. package/dist/store/sqlite/local.d.ts +0 -21
  995. package/dist/store/sqlite/local.js +0 -39
@@ -15,10 +15,10 @@ import { PACKAGE_VERSION } from '../util/version.js';
15
15
  import { FAILURE_LOG_RETENTION_DAYS } from '../store/failure-log.js';
16
16
  import { getGlobalRoot } from '../sharing/global-store.js';
17
17
  import * as api from '../api/index.js';
18
- import { getMemory } from '../api/memories.js';
18
+ import { getMemory } from '../api/memories/memories.js';
19
19
  import { correctionLatencyReport, embeddingReindexNeeded, provenanceCoverageReport, storeStatus, storedParticles, vectorSummary, } from '../api/status.js';
20
20
  import { cliApiContext } from './api-context.js';
21
- import { errorMessage, log } from '../util/log.js';
21
+ import { errorMessage, log, errorFields } from '../util/log.js';
22
22
  import { printError } from './output.js';
23
23
  import { parseCountFlag, stringFlagOrExit, flagIsTrue } from './flag-values.js';
24
24
  import { requireInit, resolveAuthRoot } from './shared.js';
@@ -26,11 +26,12 @@ import { fmt } from './print.js';
26
26
  import { isJsonObject } from '../util/json.js';
27
27
  import { hookStoreRoot } from './hook-runtime.js';
28
28
  import { DAY_MS, HOUR_MS, MINUTE_MS } from '../util/time.js';
29
- import { CliExit } from './exit.js';
29
+ import { CliExit, fail } from './exit.js';
30
+ const AT_RISK_BELOW = 0.2;
30
31
  export function handleStatus({ hippoRoot, tenantId }) {
31
32
  requireInit(hippoRoot);
32
33
  const ctx = cliApiContext(hippoRoot, tenantId);
33
- const { stats, counts } = storeStatus(ctx, evalNow(), 0.2);
34
+ const { stats, counts } = storeStatus(ctx, evalNow(), AT_RISK_BELOW);
34
35
  const { byLayer, byConfidence, pinned, atRisk, agedOut, avgStrength } = counts;
35
36
  console.log('Hippo Status');
36
37
  console.log('---------------------------');
@@ -40,7 +41,7 @@ export function handleStatus({ hippoRoot, tenantId }) {
40
41
  console.log(` Semantic: ${byLayer[Layer.Semantic]}`);
41
42
  console.log(` Trace: ${byLayer[Layer.Trace]}`);
42
43
  console.log(`Pinned: ${pinned}`);
43
- console.log(`At risk (<0.2): ${atRisk}`);
44
+ console.log(`At risk (<${AT_RISK_BELOW}): ${atRisk}`);
44
45
  console.log(`Open conflicts: ${counts.openConflicts}`);
45
46
  console.log(`Avg strength: ${fmt(avgStrength)}`);
46
47
  console.log('');
@@ -130,7 +131,7 @@ function printPhysicsStatus(ctx) {
130
131
  }
131
132
  catch (err) {
132
133
  // The physics table may not exist yet, so status prints without that line.
133
- log.debug(`physics status skipped: ${errorMessage(err)}`);
134
+ log.debug(`physics status skipped: ${errorMessage(err)}`, errorFields(err));
134
135
  }
135
136
  }
136
137
  export function physicsEnergyText(particles, gMemory) {
@@ -143,8 +144,7 @@ async function cmdInspect(hippoRoot, tenantId, id) {
143
144
  requireInit(hippoRoot);
144
145
  const entry = await getMemory(cliApiContext(hippoRoot, tenantId), id);
145
146
  if (!entry) {
146
- printError(`Memory not found: ${id}`);
147
- throw new CliExit(1);
147
+ fail(`Memory not found: ${id}`);
148
148
  }
149
149
  const now = evalNow();
150
150
  const currentStrength = calculateStrength(entry, now, { ablation: strengthAblation() });
@@ -156,7 +156,8 @@ async function cmdInspect(hippoRoot, tenantId, id) {
156
156
  console.log(`Memory: ${entry.id}`);
157
157
  console.log('---------------------------');
158
158
  console.log(`Layer: ${entry.layer}`);
159
- console.log(`Confidence: ${entry.confidence}${effectiveConfidence !== entry.confidence ? ` (effective: ${effectiveConfidence})` : ''}`);
159
+ const effective = effectiveConfidence !== entry.confidence ? ` (effective: ${effectiveConfidence})` : '';
160
+ console.log(`Confidence: ${entry.confidence}${effective}`);
160
161
  console.log(`Created: ${entry.created} (${fmt(ageDays, 1)}d ago)`);
161
162
  console.log(`Last retrieved: ${entry.last_retrieved} (${fmt(daysSince, 1)}d ago)`);
162
163
  console.log(`Retrieval count: ${entry.retrieval_count}`);
@@ -181,13 +182,13 @@ async function cmdInspect(hippoRoot, tenantId, id) {
181
182
  console.log('-'.repeat(40));
182
183
  console.log(entry.content);
183
184
  }
184
- /** `hippo tokens [--days <n>] [--json] [--global]`: the token ledger per surface, tokens saved by skipped unchanged blocks, and re-read hook tokens.
185
- * Counts are estimates (characters / 4), the same estimate every budget uses. */
186
- export function handleTokens({ hippoRoot, tenantId, flags }) {
185
+ /** `hippo tokens [--days <n>] [--json] [--global]`: the token ledger per surface, tokens saved by skipped unchanged
186
+ * blocks, and re-read hook tokens. Counts are estimates (characters / 4), the same estimate every budget uses. */
187
+ export async function handleTokens({ hippoRoot, tenantId, flags }) {
187
188
  const root = resolveAuthRoot(hippoRoot, flags);
188
189
  const ctx = cliApiContext(root, tenantId);
189
190
  const days = parseCountFlag(flags['days']);
190
- const summary = api.tokenSummary(ctx, { days: days > 0 ? days : undefined });
191
+ const summary = await api.tokenSummary(ctx, { days: days > 0 ? days : undefined });
191
192
  if (flags['json']) {
192
193
  console.log(JSON.stringify(summary, null, 2));
193
194
  return;
@@ -198,11 +199,13 @@ export function handleTokens({ hippoRoot, tenantId, flags }) {
198
199
  return;
199
200
  }
200
201
  console.log(`Memory text handed to agents, last ${windowDays} days (estimated tokens, characters / 4)\n`);
201
- console.log(` ${'surface'.padEnd(14)}${'sent'.padStart(8)}${'tokens'.padStart(12)}${'skipped'.padStart(10)}${'saved'.padStart(12)}`
202
+ console.log(` ${'surface'.padEnd(14)}${'sent'.padStart(8)}${'tokens'.padStart(12)}${'skipped'.padStart(10)}` +
203
+ `${'saved'.padStart(12)}`
202
204
  + `${'re-read'.padStart(12)}`);
203
205
  for (const row of summary.surfaces) {
204
206
  console.log(` ${row.surface.padEnd(14)}${String(row.injected).padStart(8)}${String(row.tokens).padStart(12)}`
205
- + `${String(row.skipped).padStart(10)}${String(row.tokensAvoided).padStart(12)}${String(row.tokensReread).padStart(12)}`);
207
+ + `${String(row.skipped).padStart(10)}${String(row.tokensAvoided).padStart(12)}`
208
+ + `${String(row.tokensReread).padStart(12)}`);
206
209
  }
207
210
  console.log('');
208
211
  console.log(` Total sent: ${summary.totalTokens} tokens. Saved by skipping unchanged blocks: ${summary.totalTokensAvoided}.`);
@@ -211,17 +214,18 @@ export function handleTokens({ hippoRoot, tenantId, flags }) {
211
214
  if (summary.meanTokensPerSession > 0) {
212
215
  console.log(` Mean per session (rows with a session id): ${summary.meanTokensPerSession} tokens.`);
213
216
  }
214
- console.log(' Re-reads are counted for hook and compact-resume blocks when a session ends; other surfaces, and open or crashed sessions, show sent only.');
217
+ console.log(' Re-reads are counted for hook and compact-resume blocks when a session ends; ' +
218
+ 'other surfaces, and open or crashed sessions, show sent only.');
215
219
  console.log(" Re-reads usually bill at the provider's cached-input rate, a fraction of the full input price.");
216
220
  }
217
221
  /** `hippo failures [--days <n>] [--json] [--global]`: failed tool calls by outcome, and repeats across sessions. */
218
- export function handleFailures({ hippoRoot, tenantId, flags }) {
222
+ export async function handleFailures({ hippoRoot, tenantId, flags }) {
219
223
  // The store the capture-error hook writes to; a report never creates one.
220
224
  const root = flags['global'] ? getGlobalRoot() : hookStoreRoot(hippoRoot);
221
225
  requireInit(root);
222
226
  const ctx = cliApiContext(root, tenantId);
223
227
  const days = parseCountFlag(flags['days']);
224
- const summary = api.failureSummary(ctx, { days: days > 0 ? days : undefined });
228
+ const summary = await api.failureSummary(ctx, { days: days > 0 ? days : undefined });
225
229
  if (flags['json']) {
226
230
  console.log(JSON.stringify(summary, null, 2));
227
231
  return;
@@ -305,8 +309,9 @@ export function handleProvenance({ hippoRoot, tenantId, flags }) {
305
309
  }
306
310
  }
307
311
  export function handleDoctor({ flags }) {
312
+ const pkgPath = path.join(path.dirname(fileURLToPath(import.meta.url)), '..', '..', 'package.json');
308
313
  // SAFETY: package.json always carries a string "version" (checked at release by check-manifest-versions).
309
- const pkg = JSON.parse(fs.readFileSync(path.join(path.dirname(fileURLToPath(import.meta.url)), '..', '..', 'package.json'), 'utf-8'));
314
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
310
315
  const report = runDoctor({ version: pkg.version });
311
316
  console.log(flags['json'] ? JSON.stringify(report, null, 2) : formatDoctor(report));
312
317
  if (!report.ok)
@@ -315,8 +320,7 @@ export function handleDoctor({ flags }) {
315
320
  export function handleSupportBundle({ flags }) {
316
321
  const outFlag = stringFlagOrExit(flags, 'out');
317
322
  if (outFlag === '') {
318
- printError('--out requires a file path.');
319
- throw new CliExit(1);
323
+ fail('--out requires a file path.');
320
324
  }
321
325
  const includeLogs = flagIsTrue(flags, 'include-logs');
322
326
  const home = envHomeDir() || os.homedir();
@@ -340,16 +344,17 @@ export function handleSupportBundle({ flags }) {
340
344
  const kb = Math.round(Buffer.byteLength(json) / 1024);
341
345
  console.log(`Wrote ${file} (${kb} KB).`);
342
346
  console.log(includeLogs
343
- ? `It holds versions, doctor checks, config with secrets removed, store counts, and the last ${TAIL_MAX_LINES} lines of ` +
344
- 'each hippo log with known secret shapes removed. Those log lines can quote memory text. Read it before you attach it to a ticket.'
345
- : 'It holds versions, doctor checks, config with secrets removed, store counts and log file names. It never holds memory text. Read it before you ' +
346
- 'attach it to a ticket.');
347
+ ? `It holds versions, doctor checks, config with secrets removed, store counts, ` +
348
+ `and the last ${TAIL_MAX_LINES} lines of ` +
349
+ 'each hippo log with known secret shapes removed. Those log lines can quote memory text. ' +
350
+ 'Read it before you attach it to a ticket.'
351
+ : 'It holds versions, doctor checks, config with secrets removed, store counts and log file names. ' +
352
+ 'It never holds memory text. Read it before you attach it to a ticket.');
347
353
  }
348
354
  export async function handleInspect({ hippoRoot, tenantId, args }) {
349
355
  const id = args[0];
350
356
  if (!id) {
351
- printError('Please provide a memory ID.');
352
- throw new CliExit(1);
357
+ fail('Please provide a memory ID.');
353
358
  }
354
359
  await cmdInspect(hippoRoot, tenantId, id);
355
360
  }
@@ -1,15 +1,22 @@
1
- /** `timedOut` means the window closed with stdin still open, so absent `text` is "unknown", not "none", and present `text` may be truncated;
1
+ /**
2
+ * `timedOut` means the window closed with stdin still open, so absent `text` is "unknown", not "none", and present
3
+ * `text` may be truncated;
2
4
  * treating absence as a manual run is only safe when it is false. */
3
5
  export interface BoundedStdin {
4
6
  text?: string;
5
7
  timedOut: boolean;
6
8
  }
7
- /** Never blocks: a TTY resolves at once, otherwise waits up to `waitMs` of idle (default 1000ms, or `HIPPO_STDIN_WAIT_MS`),
9
+ /**
10
+ * Never blocks: a TTY resolves at once, otherwise waits up to `waitMs` of idle (default 1000ms, or
11
+ * `HIPPO_STDIN_WAIT_MS`),
8
12
  * refreshed on each chunk so a slow real write is not cut off, capped at `waitMs * 10`. */
9
13
  export declare function readStdinBounded(waitMs?: number): Promise<BoundedStdin>;
10
14
  /** A hook payload with Copilot's camelCase fields copied to the snake_case keys hippo reads. The camelCase keys stay,
11
15
  * so the sessionStart reply can follow the sender's casing; text that needs no change comes back exactly as sent. */
12
16
  export declare function normaliseHookPayload(text: string | undefined): string | undefined;
13
- /** The stdin read every hook verb uses: {@link readStdinBounded}, with the payload passed through {@link normaliseHookPayload}. */
17
+ /**
18
+ * The stdin read every hook verb uses: {@link readStdinBounded}, with the payload passed through {@link
19
+ * normaliseHookPayload}.
20
+ */
14
21
  export declare function readHookStdin(waitMs?: number): Promise<BoundedStdin>;
15
22
  //# sourceMappingURL=stdin.d.ts.map
package/dist/cli/stdin.js CHANGED
@@ -4,7 +4,9 @@ const DEFAULT_STDIN_WAIT_MS = 1000;
4
4
  function defaultWaitMs() {
5
5
  return envStdinWaitMs() ?? DEFAULT_STDIN_WAIT_MS;
6
6
  }
7
- /** Never blocks: a TTY resolves at once, otherwise waits up to `waitMs` of idle (default 1000ms, or `HIPPO_STDIN_WAIT_MS`),
7
+ /**
8
+ * Never blocks: a TTY resolves at once, otherwise waits up to `waitMs` of idle (default 1000ms, or
9
+ * `HIPPO_STDIN_WAIT_MS`),
8
10
  * refreshed on each chunk so a slow real write is not cut off, capped at `waitMs * 10`. */
9
11
  export function readStdinBounded(waitMs = defaultWaitMs()) {
10
12
  let stdin;
@@ -48,7 +50,9 @@ const CAMEL_TO_SNAKE = [
48
50
  ['hookEventName', 'hook_event_name'],
49
51
  ['customInstructions', 'custom_instructions'],
50
52
  ];
51
- /** Copilot sends `toolArgs` as the model's raw JSON string; Claude Code and VS Code send `tool_input` already parsed. */
53
+ /**
54
+ * Copilot sends `toolArgs` as the model's raw JSON string; Claude Code and VS Code send `tool_input` already parsed.
55
+ */
52
56
  function parsedToolArgs(value) {
53
57
  if (!isJsonString(value))
54
58
  return value;
@@ -95,7 +99,10 @@ export function normaliseHookPayload(text) {
95
99
  const added = snakeCaseFields(payload);
96
100
  return Object.keys(added).length === 0 ? text : JSON.stringify({ ...payload, ...added });
97
101
  }
98
- /** The stdin read every hook verb uses: {@link readStdinBounded}, with the payload passed through {@link normaliseHookPayload}. */
102
+ /**
103
+ * The stdin read every hook verb uses: {@link readStdinBounded}, with the payload passed through {@link
104
+ * normaliseHookPayload}.
105
+ */
99
106
  export async function readHookStdin(waitMs) {
100
107
  const read = await readStdinBounded(waitMs);
101
108
  return { text: normaliseHookPayload(read.text), timedOut: read.timedOut };
@@ -1,10 +1,10 @@
1
1
  import { type CommandContext } from './flag-values.js';
2
- export declare function handleLearn({ hippoRoot, tenantId, flags }: CommandContext): void;
3
- export declare function handleImport({ hippoRoot, tenantId, args, flags }: CommandContext): void;
2
+ export declare function handleLearn({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
3
+ export declare function handleImport({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
4
4
  export declare function handleSync({ hippoRoot, flags }: CommandContext): void;
5
- export declare function handleWatch({ hippoRoot, tenantId, args }: CommandContext): Promise<void>;
5
+ export declare function handleWatch({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
6
6
  export declare function handlePromote({ hippoRoot, tenantId, args }: CommandContext): Promise<void>;
7
7
  export declare function handleShare({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
8
8
  export declare function handlePeers({ tenantId, flags }: CommandContext): void;
9
- export declare function handleExport({ hippoRoot, tenantId, args, flags }: CommandContext): void;
9
+ export declare function handleExport({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
10
10
  //# sourceMappingURL=transfer.d.ts.map
@@ -4,7 +4,7 @@ import * as fs from 'fs';
4
4
  import { isInitialized } from '../core/project-identity.js';
5
5
  import { RejectedValueError } from '../core/api-errors.js';
6
6
  import { embedCoverage, embedMissingMemories } from '../api/embeddings.js';
7
- import { captureError, runWatched } from '../learn/autolearn.js';
7
+ import { captureError, runWatched, runWatchedLine } from '../learn/autolearn.js';
8
8
  import { currentMachine, importAtSessionEnd, importForStore } from '../agent-memories/sync.js';
9
9
  import { detailLines } from '../agent-memories/report.js';
10
10
  import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
@@ -14,25 +14,44 @@ import { importChatGPT, importClaude, importCursor, importGenericFile, } from '.
14
14
  import { importMarkdown } from '../importers/markdown.js';
15
15
  import { importVault } from '../importers/vault.js';
16
16
  import * as api from '../api/index.js';
17
- import { getMemory, listMemories } from '../api/memories.js';
17
+ import { getMemory, listMemories } from '../api/memories/memories.js';
18
18
  import * as client from './client.js';
19
19
  import { cliApiContext } from './api-context.js';
20
20
  import { printError } from './output.js';
21
21
  import { errorMessage, log } from '../util/log.js';
22
22
  import { requireInit, runViaServerIfAvailable, learnFromRepo } from './shared.js';
23
23
  import { fmt } from './print.js';
24
- import { boolFlag, flagIsTrue, isStringFlag, nonEmptyStringFlag, numberFlag } from './flag-values.js';
24
+ import { boolFlag, flagIsTrue, isStringFlag, nonEmptyStringFlag, numberFlag, stringFlagOrExit, stringListFlag, } from './flag-values.js';
25
25
  import { CONTENT_PREVIEW_CHARS, DATE_PREFIX_CHARS } from '../util/token-text.js';
26
- import { CliExit } from './exit.js';
26
+ import { CliExit, fail } from './exit.js';
27
27
  const STDERR_PREVIEW_CHARS = 80;
28
28
  const MAX_ENTRIES_SHOWN = 10;
29
29
  // Watch command
30
- async function cmdWatch(command, hippoRoot, tenantId) {
31
- if (!command) {
32
- printError('Usage: hippo watch "<command>"');
33
- throw new CliExit(1);
30
+ const WATCH_USAGE = 'Usage: hippo watch -- <command> [args...], or hippo watch --shell "<command line>"';
31
+ /** The argv to run and whether a shell parses it: `--shell` takes one command line, anything else is argv as given. */
32
+ function watchedCommand(args, flags) {
33
+ if (flags['shell'] !== undefined) {
34
+ const line = nonEmptyStringFlag(flags, 'shell');
35
+ if (line === undefined) {
36
+ fail(WATCH_USAGE);
37
+ }
38
+ // The shell is the feature here: the user's own command line, pipes and && included, opted into by name; argv runs
39
+ // with no shell.
40
+ return { argv: [line], shell: true };
41
+ }
42
+ if (args.length === 0) {
43
+ fail(WATCH_USAGE);
44
+ }
45
+ // A quoted 1.x command line would now run as one program name, so it is refused rather than guessed at.
46
+ if (args.length === 1 && /\s/.test(args[0])) {
47
+ fail(`hippo watch: "${args[0]}" is one argument with spaces. Use \`hippo watch -- cmd args\` ` +
48
+ `or \`hippo watch --shell "<command line>"\`.`);
34
49
  }
35
- const { exitCode, stderr } = await runWatched(command);
50
+ return { argv: [...args], shell: false };
51
+ }
52
+ async function cmdWatch(argv, shell, hippoRoot, tenantId) {
53
+ const command = argv.join(' ');
54
+ const { exitCode, stderr } = await (shell ? runWatchedLine(argv[0]) : runWatched(argv));
36
55
  if (exitCode === 0) {
37
56
  // Success: no noise
38
57
  return;
@@ -46,7 +65,7 @@ async function cmdWatch(command, hippoRoot, tenantId) {
46
65
  // A rejection-guard refusal of a failed command's output must not crash the watcher:
47
66
  // skip with the message below and still exit with the wrapped command's real exit code.
48
67
  try {
49
- api.rememberLocally(cliApiContext(hippoRoot, tenantId), {
68
+ await api.rememberLocally(cliApiContext(hippoRoot, tenantId), {
50
69
  content: failure.content,
51
70
  tags: failure.tags,
52
71
  layer: failure.layer,
@@ -69,11 +88,10 @@ async function cmdWatch(command, hippoRoot, tenantId) {
69
88
  throw new CliExit(exitCode);
70
89
  }
71
90
  // Learn command
72
- export function handleLearn({ hippoRoot, tenantId, flags }) {
91
+ export async function handleLearn({ hippoRoot, tenantId, flags }) {
73
92
  requireInit(hippoRoot);
74
93
  if (!flags['git']) {
75
- printError('Usage: hippo learn --git [--days <n>] [--repos <paths>]');
76
- throw new CliExit(1);
94
+ fail('Usage: hippo learn --git [--days <n>] [--repos <paths>]');
77
95
  }
78
96
  const days = numberFlag(flags, 'days') ?? 7;
79
97
  console.log(`Scanning git log for the last ${days} days...`);
@@ -84,19 +102,21 @@ export function handleLearn({ hippoRoot, tenantId, flags }) {
84
102
  let totalSkipped = 0;
85
103
  for (const repo of repos) {
86
104
  const label = path.basename(repo);
87
- const { added, skipped } = learnFromRepo(hippoRoot, tenantId, repo, days, label);
105
+ const { added, skipped } = await learnFromRepo(hippoRoot, tenantId, repo, days, label);
88
106
  totalAdded += added;
89
107
  totalSkipped += skipped;
90
108
  }
91
- console.log(`Git learn complete: ${totalAdded} new lessons added, ${totalSkipped} duplicates skipped across ${repos.length} repos.`);
109
+ console.log(`Git learn complete: ${totalAdded} new lessons added, ` +
110
+ `${totalSkipped} duplicates skipped across ${repos.length} repos.`);
92
111
  }
93
112
  else {
94
- const { added, skipped } = learnFromRepo(hippoRoot, tenantId, process.cwd(), days);
113
+ const { added, skipped } = await learnFromRepo(hippoRoot, tenantId, process.cwd(), days);
95
114
  console.log(`Git learn complete: ${added} new lessons added, ${skipped} duplicates skipped.`);
96
115
  }
97
116
  }
98
117
  // Import command
99
- /** The rows are saved either way; a failed backfill only delays vectors, so it warns with how many wait and the command that finishes them. */
118
+ /** The rows are saved either way; a failed backfill only delays vectors, so it warns with how many wait and the command
119
+ * that finishes them. */
100
120
  function warnBackfillFailed(ctx, embedCommand, err) {
101
121
  let waiting;
102
122
  try {
@@ -107,25 +127,24 @@ function warnBackfillFailed(ctx, embedCommand, err) {
107
127
  catch (countErr) {
108
128
  waiting = `an unknown number of (count failed: ${errorMessage(countErr)})`;
109
129
  }
110
- log.warn(`import: embedding backfill failed (${errorMessage(err)}); ${waiting} rows have no vector; run '${embedCommand}' to backfill`);
130
+ log.warn(`import: embedding backfill failed (${errorMessage(err)}); ${waiting} rows have no vector; ` +
131
+ `run '${embedCommand}' to backfill`);
111
132
  }
112
- /** Batch-embed freshly imported rows. The floating promise is deliberate: libuv keeps the process alive until it settles, and awaiting
113
- * would block the CLI on model load; `hippo embed` is the backstop if interrupted. */
133
+ /** Batch-embed freshly imported rows. The floating promise is deliberate: libuv keeps the process alive until it
134
+ * settles, and awaiting would block the CLI on model load; `hippo embed` is the backstop if interrupted. */
114
135
  function backfillVectors(ctx, embedCommand) {
115
136
  void embedMissingMemories(ctx).catch((err) => warnBackfillFailed(ctx, embedCommand, err));
116
137
  }
117
138
  function warnRedacted(count) {
118
- if (count)
119
- printError(`Warning: secret-shaped text was redacted from ${count} imported ${count === 1 ? 'entry' : 'entries'} before storing`);
139
+ if (count) {
140
+ const noun = count === 1 ? 'entry' : 'entries';
141
+ printError(`Warning: secret-shaped text was redacted from ${count} imported ${noun} before storing`);
142
+ }
120
143
  }
121
- export function handleImport({ hippoRoot, tenantId, args, flags }) {
144
+ export async function handleImport({ hippoRoot, tenantId, args, flags }) {
122
145
  const useGlobal = boolFlag(flags, 'global');
123
146
  const dryRun = boolFlag(flags, 'dry-run');
124
- const extraTags = Array.isArray(flags['tag'])
125
- ? flags['tag']
126
- : flags['tag']
127
- ? [String(flags['tag'])]
128
- : [];
147
+ const extraTags = stringListFlag(flags, 'tag') ?? [];
129
148
  const targetRoot = useGlobal ? getGlobalRoot() : hippoRoot;
130
149
  if (flags['agents'])
131
150
  return importAgentMemories(hippoRoot, useGlobal, dryRun);
@@ -141,24 +160,31 @@ export function handleImport({ hippoRoot, tenantId, args, flags }) {
141
160
  extraTags,
142
161
  hippoRoot,
143
162
  };
144
- // Vault import is a FOLDER importer that dispatches apart from the single-file slot below; it writes through tenant-scoped api calls,
145
- // so the tenant is resolved and passed through. --global is unsupported (the connector raw-archive path is tenant-local).
146
- if (flags['vault'])
147
- return importVaultFolder(hippoRoot, tenantId, flags, importOptions, useGlobal, dryRun);
163
+ // Vault import is a FOLDER importer that dispatches apart from the single-file slot below; it writes through
164
+ // tenant-scoped api calls, so the tenant is resolved and passed through. --global is unsupported (the connector
165
+ // raw-archive path is tenant-local).
166
+ const vault = stringFlagOrExit(flags, 'vault');
167
+ if (vault)
168
+ return await importVaultFolder(hippoRoot, tenantId, vault, flags, importOptions, useGlobal, dryRun);
148
169
  importFromFile(targetRoot, args, flags, { importOptions, useGlobal, dryRun, tenantId });
149
170
  }
150
171
  // Determine which importer to use based on flag
151
172
  function pickImporter(args, flags) {
152
- if (flags['chatgpt'])
153
- return { filePath: String(flags['chatgpt']), importer: importChatGPT, importerName: 'ChatGPT' };
154
- if (flags['claude'])
155
- return { filePath: String(flags['claude']), importer: importClaude, importerName: 'Claude' };
156
- if (flags['cursor'])
157
- return { filePath: String(flags['cursor']), importer: importCursor, importerName: 'Cursor' };
158
- if (flags['file'])
159
- return { filePath: String(flags['file']), importer: importGenericFile, importerName: 'File' };
160
- if (flags['markdown'])
161
- return { filePath: String(flags['markdown']), importer: importMarkdown, importerName: 'Markdown' };
173
+ if (flags['chatgpt']) {
174
+ return { filePath: stringFlagOrExit(flags, 'chatgpt'), importer: importChatGPT, importerName: 'ChatGPT' };
175
+ }
176
+ if (flags['claude']) {
177
+ return { filePath: stringFlagOrExit(flags, 'claude'), importer: importClaude, importerName: 'Claude' };
178
+ }
179
+ if (flags['cursor']) {
180
+ return { filePath: stringFlagOrExit(flags, 'cursor'), importer: importCursor, importerName: 'Cursor' };
181
+ }
182
+ if (flags['file']) {
183
+ return { filePath: stringFlagOrExit(flags, 'file'), importer: importGenericFile, importerName: 'File' };
184
+ }
185
+ if (flags['markdown']) {
186
+ return { filePath: stringFlagOrExit(flags, 'markdown'), importer: importMarkdown, importerName: 'Markdown' };
187
+ }
162
188
  // Positional: try to auto-detect from extension
163
189
  if (args[0])
164
190
  return { filePath: args[0], importer: importGenericFile, importerName: 'File' };
@@ -168,12 +194,11 @@ function importFromFile(targetRoot, args, flags, options) {
168
194
  const { importOptions, useGlobal, dryRun, tenantId } = options;
169
195
  const { filePath, importer, importerName } = pickImporter(args, flags);
170
196
  if (!filePath || !importer) {
171
- printError('Usage: hippo import <--chatgpt|--claude|--cursor|--file|--markdown|--vault> <path>, or hippo import --agents [--dry-run]');
172
- throw new CliExit(1);
197
+ fail('Usage: hippo import <--chatgpt|--claude|--cursor|--file|--markdown|--vault> <path>, ' +
198
+ 'or hippo import --agents [--dry-run]');
173
199
  }
174
200
  if (!fs.existsSync(filePath)) {
175
- printError(`File not found: ${filePath}`);
176
- throw new CliExit(1);
201
+ fail(`File not found: ${filePath}`);
177
202
  }
178
203
  const result = importer(filePath, importOptions);
179
204
  // The importers' writeEntry sites don't embed, so the new rows are embedded here in one pass.
@@ -219,38 +244,33 @@ function importAgentMemories(hippoRoot, useGlobal, dryRun) {
219
244
  for (const warning of report.warnings)
220
245
  printError(`hippo: agent memories: ${warning}`);
221
246
  }
222
- function importVaultFolder(hippoRoot, tenantId, flags, importOptions, useGlobal, dryRun) {
223
- const folderPath = String(flags['vault']);
247
+ async function importVaultFolder(hippoRoot, tenantId, folderPath, flags, importOptions, useGlobal, dryRun) {
224
248
  checkVaultArgs(folderPath, flags, useGlobal);
225
249
  const vaultOptions = {
226
250
  ...importOptions,
227
251
  tenantId,
228
- name: flags['name'] ? String(flags['name']) : undefined,
229
- scope: flags['scope'] ? String(flags['scope']) : undefined,
252
+ name: nonEmptyStringFlag(flags, 'name'),
253
+ scope: nonEmptyStringFlag(flags, 'scope'),
230
254
  };
231
- const vaultResult = importVault(folderPath, vaultOptions);
255
+ const vaultResult = await importVault(folderPath, vaultOptions);
232
256
  printVaultSummary(vaultResult, folderPath, cliApiContext(hippoRoot, tenantId), dryRun);
233
257
  }
234
258
  function checkVaultArgs(folderPath, flags, useGlobal) {
235
259
  if (!fs.existsSync(folderPath) || !fs.statSync(folderPath).isDirectory()) {
236
- printError(`Vault folder not found (or not a directory): ${folderPath}`);
237
- throw new CliExit(1);
260
+ fail(`Vault folder not found (or not a directory): ${folderPath}`);
238
261
  }
239
262
  if (useGlobal) {
240
- printError('hippo import --vault does not support --global (raw rows are tenant-local).');
241
- throw new CliExit(1);
263
+ fail('hippo import --vault does not support --global (raw rows are tenant-local).');
242
264
  }
243
265
  if (!isStringFlag(flags['name']) || !flags['name'].trim()) {
244
266
  // --name keys the destructive source-deletion sync; a folder-basename default lets same-basename vaults clobber
245
267
  // each other, and a valueless `--name` (boolean true) would silently import under vault:true:*.
246
- printError('hippo import --vault requires --name <vault> (a non-empty identity key for source-deletion sync).');
247
- throw new CliExit(1);
268
+ fail('hippo import --vault requires --name <vault> (a non-empty identity key for source-deletion sync).');
248
269
  }
249
270
  if (flags['scope'] !== undefined && (!isStringFlag(flags['scope']) || !flags['scope'].trim())) {
250
- // Same valueless-flag trap: a bare `--scope` must not become scope "true". The example uses the source-prefixed private form,
251
- // since a bare `private` scope is not treated as private by recall and importVault rejects it.
252
- printError('hippo import --vault: --scope requires a value (e.g. --scope vault:private:notes).');
253
- throw new CliExit(1);
271
+ // Same valueless-flag trap: a bare `--scope` must not become scope "true". The example uses the source-prefixed
272
+ // private form, since a bare `private` scope is not treated as private by recall and importVault rejects it.
273
+ fail('hippo import --vault: --scope requires a value (e.g. --scope vault:private:notes).');
254
274
  }
255
275
  }
256
276
  function printVaultSummary(vaultResult, folderPath, ctx, dryRun) {
@@ -272,8 +292,7 @@ function printVaultSummary(vaultResult, folderPath, ctx, dryRun) {
272
292
  function cmdPromote(hippoRoot, tenantId, id) {
273
293
  requireInit(hippoRoot);
274
294
  if (!id) {
275
- printError('Usage: hippo promote <id>');
276
- throw new CliExit(1);
295
+ fail('Usage: hippo promote <id>');
277
296
  }
278
297
  const ctx = cliApiContext(hippoRoot, tenantId);
279
298
  try {
@@ -282,8 +301,7 @@ function cmdPromote(hippoRoot, tenantId, id) {
282
301
  console.log(` Global store: ${getGlobalRoot()}`);
283
302
  }
284
303
  catch (err) {
285
- printError(`Failed to promote: ${errorMessage(err)}`);
286
- throw new CliExit(1);
304
+ fail(`Failed to promote: ${errorMessage(err)}`);
287
305
  }
288
306
  }
289
307
  // Sync command
@@ -297,18 +315,17 @@ export function handleSync({ hippoRoot, flags }) {
297
315
  // v39: other-project rows are skipped by default; secrets always are.
298
316
  const includeCrossProject = flagIsTrue(flags, 'cross-project');
299
317
  const count = syncGlobalToLocal(hippoRoot, globalRoot, { includeCrossProject });
300
- console.log(`Synced ${count} global memories into local project.${includeCrossProject ? '' : ' (other-project rows skipped; use --cross-project to ' +
301
- 'include them)'}`);
318
+ const skipNote = includeCrossProject ? '' : ' (other-project rows skipped; use --cross-project to include them)';
319
+ console.log(`Synced ${count} global memories into local project.${skipNote}`);
302
320
  }
303
- export async function handleWatch({ hippoRoot, tenantId, args }) {
304
- const watchCmd = args.join(' ').trim();
305
- await cmdWatch(watchCmd, hippoRoot, tenantId);
321
+ export async function handleWatch({ hippoRoot, tenantId, args, flags }) {
322
+ const { argv, shell } = watchedCommand(args, flags);
323
+ await cmdWatch(argv, shell, hippoRoot, tenantId);
306
324
  }
307
325
  export async function handlePromote({ hippoRoot, tenantId, args }) {
308
326
  const id = args[0];
309
327
  if (!id) {
310
- printError('Please provide a memory ID.');
311
- throw new CliExit(1);
328
+ fail('Please provide a memory ID.');
312
329
  }
313
330
  const promoted = await runViaServerIfAvailable(hippoRoot, async (info, apiKey) => {
314
331
  try {
@@ -316,8 +333,7 @@ export async function handlePromote({ hippoRoot, tenantId, args }) {
316
333
  console.log(`Promoted ${id} to global store as ${result.globalId}`);
317
334
  }
318
335
  catch (err) {
319
- printError(`Failed to promote: ${errorMessage(err)}`);
320
- throw new CliExit(1);
336
+ fail(`Failed to promote: ${errorMessage(err)}`);
321
337
  }
322
338
  });
323
339
  if (promoted)
@@ -365,14 +381,12 @@ export async function handleShare({ hippoRoot, tenantId, args, flags }) {
365
381
  console.log('Use --force to share anyway.');
366
382
  }
367
383
  else {
368
- printError(`Memory not found: ${shareId}`);
369
- throw new CliExit(1);
384
+ fail(`Memory not found: ${shareId}`);
370
385
  }
371
386
  }
372
387
  }
373
388
  else {
374
- printError('Usage: hippo share <memory_id> [--force] or hippo share --auto [--dry-run]');
375
- throw new CliExit(1);
389
+ fail('Usage: hippo share <memory_id> [--force] or hippo share --auto [--dry-run]');
376
390
  }
377
391
  }
378
392
  export function handlePeers({ tenantId, flags }) {
@@ -387,15 +401,16 @@ export function handlePeers({ tenantId, flags }) {
387
401
  const scopeLabel = allTenants ? 'global store (all tenants)' : `global store (tenant "${tenantScope}")`;
388
402
  console.log(`${peers.length} project${peers.length === 1 ? '' : 's'} contributing to ${scopeLabel}:\n`);
389
403
  for (const p of peers) {
390
- console.log(` ${p.project.padEnd(25)} ${String(p.count).padStart(4)} memories (latest: ${p.latest.slice(0, DATE_PREFIX_CHARS)})`);
404
+ console.log(` ${p.project.padEnd(25)} ${String(p.count).padStart(4)} memories ` +
405
+ `(latest: ${p.latest.slice(0, DATE_PREFIX_CHARS)})`);
391
406
  }
392
407
  }
393
408
  }
394
- export function handleExport({ hippoRoot, tenantId, args, flags }) {
409
+ export async function handleExport({ hippoRoot, tenantId, args, flags }) {
395
410
  requireInit(hippoRoot);
396
- const format = String(flags['format'] || 'json');
411
+ const format = stringFlagOrExit(flags, 'format') || 'json';
397
412
  const outputPath = args[0] || null;
398
- const entries = listMemories(cliApiContext(hippoRoot, tenantId));
413
+ const entries = await listMemories(cliApiContext(hippoRoot, tenantId));
399
414
  let output;
400
415
  if (format === 'markdown' || format === 'md') {
401
416
  output = entries.map(e => {
@@ -2,5 +2,5 @@ export declare function printAuditPruneUsage(): void;
2
2
  export declare function printSlackBackfillUsage(): void;
3
3
  export declare function printSlackWorkspacesUsage(): void;
4
4
  export declare const USAGE_HEADER = "\nHippo - Make your agent's memory work like a brain. Hippo is long-term memory for coding agents.\n\nUsage: hippo <command> [options]\n\nCommands:";
5
- export declare const USAGE_EXAMPLES = "\n\nExamples:\n hippo init\n hippo remember \"FRED cache can silently drop series\" --tag error\n hippo recall \"data pipeline issues\" --budget 2000\n hippo context --auto --budget 1500\n hippo conflicts\n hippo reject mem_abc123 --reason \"leaked credential\"\n hippo reject --value \"never store my key again\" --reason \"secret\"\n hippo rejections\n hippo unreject a1b2c3d4e5f6\n hippo dormant \"staging hostname\"\n hippo dormant restore mem_abc123\n hippo tokens --days 7\n hippo session log --id sess_123 --task \"Ship feature\" --type progress --content \"Build is green, next step is docs\"\n hippo session latest --json\n hippo session resume\n hippo snapshot save --task \"Ship feature\" --summary \"Tests are green\" --next-step \"Open the PR\" --session sess_123\n hippo handoff create --summary \"PR is open, tests green\" --next \"Merge after review\" --session sess_123 --artifact src/foo.ts\n hippo handoff create --summary s --constraint a --constraint b --outcome partial --target-runtime codex --card-id c1 --tests pass\n hippo card create --title \"Add cards table\" --repo hippo --depends-on card_abc\n hippo card claim card_abc --runtime codex\n hippo card complete card_abc --outcome success\n hippo card heartbeat card_abc --run 7\n hippo card reclaim\n hippo embed --status\n hippo watch \"npm run build\"\n hippo learn --git --days 30\n hippo promote mem_abc123\n hippo sync\n hippo setup\n hippo hook install claude-code\n hippo decide \"Use PostgreSQL for new services\" --context \"JSONB support\"\n hippo incident \"Prod outage: DB connection pool exhausted\" --context \"spike at 14:00\"\n hippo process new \"Release\" --step \"run tests\" --step \"bump version\" --step \"publish\"\n hippo policy new \"Data retention\" --text \"Delete logs after 90 days\" --from 2026-01-01\n hippo policy asof 2026-03-01 --name \"Data retention\"\n hippo skill new \"Run tests\" --instructions \"npm test before every commit\" --trigger \"before commit\"\n hippo skill export\n hippo brief new \"hippo\" --summary \"Agent-memory library; E2 first-class objects in progress\"\n hippo brief refresh \"hippo\"\n hippo note new \"Acme Corp\" --text \"Renewal call: wants SSO before Q3; champion is the VP Eng\"\n hippo note list --customer \"Acme Corp\" --status active\n hippo graph extract\n hippo invalidate \"REST API\" --dry-run\n hippo invalidate \"REST API\" --reason \"migrated to GraphQL\"\n hippo invalidate --id mem_a1b2c3d4e5f6 --reason \"superseded by new policy\"\n hippo invalidate --churn --dry-run\n hippo export memories.json\n hippo export --format markdown memories.md\n hippo sleep --dry-run\n hippo outcome --good\n hippo status\n";
5
+ export declare const USAGE_EXAMPLES = "\n\nExamples:\n hippo init\n hippo remember \"FRED cache can silently drop series\" --tag error\n hippo recall \"data pipeline issues\" --budget 2000\n hippo context --auto --budget 1500\n hippo conflicts\n hippo reject mem_abc123 --reason \"leaked credential\"\n hippo reject --value \"never store my key again\" --reason \"secret\"\n hippo rejections\n hippo unreject a1b2c3d4e5f6\n hippo dormant \"staging hostname\"\n hippo dormant restore mem_abc123\n hippo tokens --days 7\n hippo session log --id sess_123 --task \"Ship feature\" --type progress --content \"Build is green, next step is docs\"\n hippo session latest --json\n hippo session resume\n hippo snapshot save --task \"Ship feature\" --summary \"Tests are green\" --next-step \"Open the PR\" --session sess_123\n hippo handoff create --summary \"PR is open, tests green\" --next \"Merge after review\" --session sess_123 --artifact src/foo.ts\n hippo handoff create --summary s --constraint a --constraint b --outcome partial --target-runtime codex --card-id c1 --tests pass\n hippo card create --title \"Add cards table\" --repo hippo --depends-on card_abc\n hippo card claim card_abc --runtime codex\n hippo card complete card_abc --outcome success\n hippo card heartbeat card_abc --run 7\n hippo card reclaim\n hippo embed --status\n hippo watch -- npm run build\n hippo learn --git --days 30\n hippo promote mem_abc123\n hippo sync\n hippo setup\n hippo hook install claude-code\n hippo decide \"Use PostgreSQL for new services\" --context \"JSONB support\"\n hippo incident \"Prod outage: DB connection pool exhausted\" --context \"spike at 14:00\"\n hippo process new \"Release\" --step \"run tests\" --step \"bump version\" --step \"publish\"\n hippo policy new \"Data retention\" --text \"Delete logs after 90 days\" --from 2026-01-01\n hippo policy asof 2026-03-01 --name \"Data retention\"\n hippo skill new \"Run tests\" --instructions \"npm test before every commit\" --trigger \"before commit\"\n hippo skill export\n hippo brief new \"hippo\" --summary \"Agent-memory library; E2 first-class objects in progress\"\n hippo brief refresh \"hippo\"\n hippo note new \"Acme Corp\" --text \"Renewal call: wants SSO before Q3; champion is the VP Eng\"\n hippo note list --customer \"Acme Corp\" --status active\n hippo graph extract\n hippo invalidate \"REST API\" --dry-run\n hippo invalidate \"REST API\" --reason \"migrated to GraphQL\"\n hippo invalidate --id mem_a1b2c3d4e5f6 --reason \"superseded by new policy\"\n hippo invalidate --churn --dry-run\n hippo export memories.json\n hippo export --format markdown memories.md\n hippo sleep --dry-run\n hippo outcome --good\n hippo status\n";
6
6
  //# sourceMappingURL=usage.d.ts.map
package/dist/cli/usage.js CHANGED
@@ -50,7 +50,7 @@ Examples:
50
50
  hippo card heartbeat card_abc --run 7
51
51
  hippo card reclaim
52
52
  hippo embed --status
53
- hippo watch "npm run build"
53
+ hippo watch -- npm run build
54
54
  hippo learn --git --days 30
55
55
  hippo promote mem_abc123
56
56
  hippo sync
@@ -18,6 +18,8 @@ export interface VerbRow {
18
18
  readonly aliases?: readonly string[];
19
19
  /** Runs in a request scope, opening each store once; set on api-backed verbs, as hook verbs open their own. */
20
20
  readonly scoped?: true;
21
+ /** Routine verbs after which a previously installed codex wrapper is repaired (never first-installed). */
22
+ readonly repairsCodexWrapper?: true;
21
23
  /** Deletes or hides memories: an unknown flag stops the run instead of being ignored. */
22
24
  readonly destructive?: true;
23
25
  /** Unset: --dry-run is honoured exactly when the verb declares it; `false` refuses it even so. */