hippo-memory 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (965) hide show
  1. package/dist/agent-memories/apply.d.ts +7 -5
  2. package/dist/agent-memories/apply.js +66 -39
  3. package/dist/agent-memories/claude-code.d.ts +8 -2
  4. package/dist/agent-memories/claude-code.js +26 -7
  5. package/dist/agent-memories/copilot.js +2 -1
  6. package/dist/agent-memories/files.js +2 -1
  7. package/dist/agent-memories/legacy.d.ts +6 -3
  8. package/dist/agent-memories/legacy.js +35 -14
  9. package/dist/agent-memories/markdown.d.ts +3 -1
  10. package/dist/agent-memories/markdown.js +3 -1
  11. package/dist/agent-memories/openclaw.js +5 -2
  12. package/dist/agent-memories/plan.js +11 -1
  13. package/dist/agent-memories/project-folds.js +2 -1
  14. package/dist/agent-memories/report.d.ts +4 -1
  15. package/dist/agent-memories/report.js +43 -9
  16. package/dist/agent-memories/source.d.ts +8 -2
  17. package/dist/agent-memories/source.js +11 -3
  18. package/dist/agent-memories/sync.d.ts +7 -2
  19. package/dist/agent-memories/sync.js +141 -101
  20. package/dist/api/assemble.d.ts +6 -4
  21. package/dist/api/assemble.js +11 -6
  22. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  23. package/dist/api/{audit.js → auth/audit.js} +11 -11
  24. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
  25. package/dist/api/{auth.js → auth/auth.js} +46 -29
  26. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  27. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
  28. package/dist/api/auth/session-owners.d.ts +10 -0
  29. package/dist/api/auth/session-owners.js +35 -0
  30. package/dist/api/availability.d.ts +3 -1
  31. package/dist/api/availability.js +3 -1
  32. package/dist/api/busy.d.ts +2 -0
  33. package/dist/api/busy.js +2 -0
  34. package/dist/api/cli-surface.d.ts +6 -0
  35. package/dist/api/cli-surface.js +6 -0
  36. package/dist/api/config-of.d.ts +5 -0
  37. package/dist/api/config-of.js +6 -0
  38. package/dist/api/context-auto.d.ts +4 -1
  39. package/dist/api/context-auto.js +10 -2
  40. package/dist/api/context-render.js +14 -7
  41. package/dist/api/context-select.d.ts +4 -1
  42. package/dist/api/context-select.js +23 -14
  43. package/dist/api/context-types.d.ts +38 -12
  44. package/dist/api/context.d.ts +8 -5
  45. package/dist/api/context.js +112 -57
  46. package/dist/api/continuity.d.ts +24 -21
  47. package/dist/api/continuity.js +18 -20
  48. package/dist/api/correction-latency.d.ts +3 -1
  49. package/dist/api/correction-latency.js +3 -1
  50. package/dist/api/error-reply.d.ts +4 -1
  51. package/dist/api/error-reply.js +12 -3
  52. package/dist/api/index.d.ts +39 -23
  53. package/dist/api/index.js +21 -23
  54. package/dist/api/instruction-detect.d.ts +4 -1
  55. package/dist/api/instruction-detect.js +75 -20
  56. package/dist/api/ledger-db.d.ts +15 -11
  57. package/dist/api/ledger-db.js +21 -23
  58. package/dist/api/memories/conflicts.d.ts +33 -0
  59. package/dist/api/memories/conflicts.js +67 -0
  60. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  61. package/dist/api/{forget.js → memories/forget.js} +22 -15
  62. package/dist/api/memories/memories.d.ts +27 -0
  63. package/dist/api/{memories.js → memories/memories.js} +16 -21
  64. package/dist/api/memories/outcome.d.ts +22 -0
  65. package/dist/api/{outcome.js → memories/outcome.js} +14 -8
  66. package/dist/api/memories/promote.d.ts +40 -0
  67. package/dist/api/{promote.js → memories/promote.js} +35 -22
  68. package/dist/api/memories/refine.d.ts +10 -0
  69. package/dist/api/memories/refine.js +12 -0
  70. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
  71. package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
  72. package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
  73. package/dist/api/{remember.js → memories/remember.js} +42 -26
  74. package/dist/api/objects/cards.d.ts +39 -0
  75. package/dist/api/{cards.js → objects/cards.js} +12 -14
  76. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  77. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
  78. package/dist/api/objects/goals.d.ts +18 -0
  79. package/dist/api/{goals.js → objects/goals.js} +12 -12
  80. package/dist/api/objects/graph.d.ts +11 -0
  81. package/dist/api/objects/graph.js +16 -0
  82. package/dist/api/objects/objects.d.ts +9 -0
  83. package/dist/api/{objects.js → objects/objects.js} +2 -4
  84. package/dist/api/objects/predictions.d.ts +11 -0
  85. package/dist/api/{predictions.js → objects/predictions.js} +7 -6
  86. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  87. package/dist/api/{projects.js → objects/projects.js} +8 -4
  88. package/dist/api/pilot-arm.d.ts +8 -4
  89. package/dist/api/pilot-arm.js +5 -4
  90. package/dist/api/prompt-hook.d.ts +32 -19
  91. package/dist/api/prompt-hook.js +65 -44
  92. package/dist/api/provenance-coverage.d.ts +3 -1
  93. package/dist/api/provenance-coverage.js +3 -1
  94. package/dist/api/recall/finish.d.ts +185 -0
  95. package/dist/api/recall/finish.js +301 -0
  96. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  97. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
  98. package/dist/api/recall/recall.d.ts +6 -0
  99. package/dist/api/{recall.js → recall/recall.js} +101 -60
  100. package/dist/api/recall/render.d.ts +39 -0
  101. package/dist/api/recall/render.js +60 -0
  102. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  103. package/dist/api/recall/request.js +261 -0
  104. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  105. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  106. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
  107. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  108. package/dist/api/session-end.d.ts +16 -12
  109. package/dist/api/session-end.js +46 -30
  110. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  111. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  112. package/dist/api/sleep/dormant.d.ts +25 -0
  113. package/dist/api/sleep/dormant.js +64 -0
  114. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  115. package/dist/api/sleep/learn.js +138 -0
  116. package/dist/api/sleep/sleep-run.d.ts +38 -0
  117. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
  118. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  119. package/dist/api/sleep/sleep.js +9 -0
  120. package/dist/api/status.d.ts +3 -1
  121. package/dist/api/status.js +3 -1
  122. package/dist/api/store-init.d.ts +4 -1
  123. package/dist/api/store-init.js +4 -1
  124. package/dist/api/tokens.d.ts +10 -9
  125. package/dist/api/tokens.js +9 -10
  126. package/dist/api/types.d.ts +28 -7
  127. package/dist/api/types.js +13 -4
  128. package/dist/capture/caller-session.d.ts +8 -2
  129. package/dist/capture/caller-session.js +16 -6
  130. package/dist/capture/capture-error.d.ts +3 -1
  131. package/dist/capture/capture-error.js +3 -1
  132. package/dist/capture/codex-patch.js +7 -2
  133. package/dist/capture/command.d.ts +4 -2
  134. package/dist/capture/command.js +33 -14
  135. package/dist/capture/compact-resume-caller.js +15 -8
  136. package/dist/capture/compact.d.ts +8 -5
  137. package/dist/capture/compact.js +34 -23
  138. package/dist/capture/compaction-items-caller.js +9 -3
  139. package/dist/capture/compaction-record.d.ts +4 -3
  140. package/dist/capture/compaction-record.js +20 -12
  141. package/dist/capture/compaction-spool.d.ts +15 -4
  142. package/dist/capture/compaction-spool.js +64 -17
  143. package/dist/capture/copilot-transcript.d.ts +11 -3
  144. package/dist/capture/copilot-transcript.js +16 -6
  145. package/dist/capture/extract.js +20 -8
  146. package/dist/capture/failure-caller.js +23 -12
  147. package/dist/capture/failure-reading.d.ts +10 -3
  148. package/dist/capture/failure-reading.js +24 -7
  149. package/dist/capture/pre-compact-caller.js +11 -4
  150. package/dist/capture/session-digest.d.ts +15 -4
  151. package/dist/capture/session-digest.js +39 -13
  152. package/dist/capture/session-end-caller.d.ts +4 -1
  153. package/dist/capture/session-end-caller.js +20 -8
  154. package/dist/capture/session-texts.d.ts +6 -2
  155. package/dist/capture/session-texts.js +22 -7
  156. package/dist/capture/session-worker.d.ts +4 -2
  157. package/dist/capture/session-worker.js +45 -17
  158. package/dist/capture/transcript.d.ts +13 -4
  159. package/dist/capture/transcript.js +32 -10
  160. package/dist/capture/working-state.d.ts +13 -4
  161. package/dist/capture/working-state.js +50 -56
  162. package/dist/cli/api-context.d.ts +14 -2
  163. package/dist/cli/api-context.js +45 -2
  164. package/dist/cli/audit.js +23 -23
  165. package/dist/cli/auth.js +19 -27
  166. package/dist/cli/briefs.d.ts +1 -1
  167. package/dist/cli/briefs.js +20 -15
  168. package/dist/cli/card.d.ts +1 -1
  169. package/dist/cli/card.js +56 -73
  170. package/dist/cli/client.d.ts +12 -4
  171. package/dist/cli/client.js +43 -13
  172. package/dist/cli/compact-resume-payload.d.ts +4 -1
  173. package/dist/cli/compact-resume-payload.js +12 -5
  174. package/dist/cli/context.js +42 -17
  175. package/dist/cli/continuity.d.ts +5 -5
  176. package/dist/cli/continuity.js +90 -107
  177. package/dist/cli/curate.d.ts +4 -3
  178. package/dist/cli/curate.js +46 -68
  179. package/dist/cli/dag.d.ts +1 -1
  180. package/dist/cli/dag.js +14 -17
  181. package/dist/cli/decisions.js +27 -26
  182. package/dist/cli/eval.js +16 -21
  183. package/dist/cli/exit.d.ts +4 -1
  184. package/dist/cli/exit.js +10 -2
  185. package/dist/cli/explain.js +12 -11
  186. package/dist/cli/flag-values.d.ts +1 -1
  187. package/dist/cli/flag-values.js +9 -18
  188. package/dist/cli/github.d.ts +6 -0
  189. package/dist/cli/github.js +25 -13
  190. package/dist/cli/goals.d.ts +1 -1
  191. package/dist/cli/goals.js +39 -56
  192. package/dist/cli/graph.d.ts +1 -1
  193. package/dist/cli/graph.js +15 -11
  194. package/dist/cli/hook-runtime.d.ts +31 -9
  195. package/dist/cli/hook-runtime.js +40 -15
  196. package/dist/cli/incidents.d.ts +1 -1
  197. package/dist/cli/incidents.js +25 -25
  198. package/dist/cli/init.js +26 -11
  199. package/dist/cli/install-steps.d.ts +12 -3
  200. package/dist/cli/install-steps.js +42 -18
  201. package/dist/cli/last-sleep.d.ts +4 -1
  202. package/dist/cli/last-sleep.js +9 -4
  203. package/dist/cli/maintenance.d.ts +1 -1
  204. package/dist/cli/maintenance.js +11 -12
  205. package/dist/cli/notes.d.ts +1 -1
  206. package/dist/cli/notes.js +8 -5
  207. package/dist/cli/object-verbs.d.ts +4 -4
  208. package/dist/cli/object-verbs.js +10 -13
  209. package/dist/cli/open-browser.js +11 -2
  210. package/dist/cli/playbooks.d.ts +3 -3
  211. package/dist/cli/playbooks.js +40 -32
  212. package/dist/cli/predictions.js +15 -19
  213. package/dist/cli/print.js +4 -2
  214. package/dist/cli/projects.js +21 -11
  215. package/dist/cli/quality-repair-once.js +5 -4
  216. package/dist/cli/recall.js +129 -93
  217. package/dist/cli/refine-llm.d.ts +15 -4
  218. package/dist/cli/refine-llm.js +16 -7
  219. package/dist/cli/remember.js +46 -50
  220. package/dist/cli/scheduler.d.ts +4 -1
  221. package/dist/cli/scheduler.js +9 -5
  222. package/dist/cli/serve.js +22 -17
  223. package/dist/cli/session-hooks.d.ts +2 -2
  224. package/dist/cli/session-hooks.js +87 -50
  225. package/dist/cli/setup.js +54 -32
  226. package/dist/cli/shared.d.ts +3 -1
  227. package/dist/cli/shared.js +24 -9
  228. package/dist/cli/slack.js +15 -24
  229. package/dist/cli/sleep-render.d.ts +3 -1
  230. package/dist/cli/sleep-render.js +8 -5
  231. package/dist/cli/sleep.js +14 -6
  232. package/dist/cli/status.d.ts +4 -4
  233. package/dist/cli/status.js +32 -27
  234. package/dist/cli/stdin.d.ts +10 -3
  235. package/dist/cli/stdin.js +10 -3
  236. package/dist/cli/transfer.d.ts +1 -1
  237. package/dist/cli/transfer.js +71 -75
  238. package/dist/cli/verbs/memory.js +8 -6
  239. package/dist/cli/verbs/objects.js +10 -4
  240. package/dist/cli/versioned-verbs.d.ts +8 -7
  241. package/dist/cli/versioned-verbs.js +31 -21
  242. package/dist/cli.js +13 -16
  243. package/dist/connectors/dlq.d.ts +6 -6
  244. package/dist/connectors/dlq.js +12 -8
  245. package/dist/connectors/github/backfill.d.ts +4 -4
  246. package/dist/connectors/github/backfill.js +6 -4
  247. package/dist/connectors/github/deletion.d.ts +6 -4
  248. package/dist/connectors/github/deletion.js +5 -5
  249. package/dist/connectors/github/dlq.d.ts +8 -6
  250. package/dist/connectors/github/dlq.js +11 -5
  251. package/dist/connectors/github/ingest.d.ts +2 -2
  252. package/dist/connectors/github/ingest.js +9 -6
  253. package/dist/connectors/github/octokit-client.d.ts +3 -1
  254. package/dist/connectors/github/octokit-client.js +7 -2
  255. package/dist/connectors/github/ratelimit.d.ts +6 -2
  256. package/dist/connectors/github/ratelimit.js +6 -2
  257. package/dist/connectors/github/signature.d.ts +14 -3
  258. package/dist/connectors/github/signature.js +17 -3
  259. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  260. package/dist/connectors/github/tenant-routing.js +6 -6
  261. package/dist/connectors/github/transform.js +50 -67
  262. package/dist/connectors/github/types.d.ts +10 -3
  263. package/dist/connectors/github/types.js +6 -2
  264. package/dist/connectors/github/webhook.d.ts +5 -5
  265. package/dist/connectors/github/webhook.js +34 -23
  266. package/dist/connectors/ingest.d.ts +5 -3
  267. package/dist/connectors/ingest.js +3 -4
  268. package/dist/connectors/slack/backfill.d.ts +5 -5
  269. package/dist/connectors/slack/backfill.js +3 -3
  270. package/dist/connectors/slack/deletion.d.ts +4 -4
  271. package/dist/connectors/slack/deletion.js +6 -6
  272. package/dist/connectors/slack/dlq.d.ts +4 -4
  273. package/dist/connectors/slack/dlq.js +6 -6
  274. package/dist/connectors/slack/ingest.d.ts +6 -4
  275. package/dist/connectors/slack/ingest.js +5 -5
  276. package/dist/connectors/slack/signature.d.ts +4 -1
  277. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  278. package/dist/connectors/slack/tenant-routing.js +6 -6
  279. package/dist/connectors/slack/transform.d.ts +6 -2
  280. package/dist/connectors/slack/transform.js +6 -2
  281. package/dist/connectors/slack/types.d.ts +3 -1
  282. package/dist/connectors/slack/web-client.js +8 -3
  283. package/dist/connectors/slack/webhook.d.ts +5 -5
  284. package/dist/connectors/slack/webhook.js +19 -11
  285. package/dist/connectors/slack/workspaces.d.ts +7 -3
  286. package/dist/connectors/slack/workspaces.js +7 -3
  287. package/dist/connectors/store.d.ts +8 -0
  288. package/dist/connectors/store.js +2 -0
  289. package/dist/consolidate/conflicts.js +23 -9
  290. package/dist/consolidate/dag-summary.js +2 -1
  291. package/dist/consolidate/dag.d.ts +10 -5
  292. package/dist/consolidate/dag.js +37 -36
  293. package/dist/consolidate/decay.js +19 -6
  294. package/dist/consolidate/dedupe.d.ts +14 -5
  295. package/dist/consolidate/dedupe.js +27 -16
  296. package/dist/consolidate/flush-units.d.ts +4 -1
  297. package/dist/consolidate/flush-units.js +4 -1
  298. package/dist/consolidate/half-life-migration.d.ts +18 -8
  299. package/dist/consolidate/half-life-migration.js +48 -18
  300. package/dist/consolidate/llm-passes.js +27 -11
  301. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  302. package/dist/consolidate/memory-value-weights.js +6 -2
  303. package/dist/consolidate/memory-value.d.ts +30 -10
  304. package/dist/consolidate/memory-value.js +36 -13
  305. package/dist/consolidate/merge.d.ts +4 -1
  306. package/dist/consolidate/merge.js +42 -32
  307. package/dist/consolidate/overlap-index.d.ts +8 -2
  308. package/dist/consolidate/overlap-index.js +11 -4
  309. package/dist/consolidate/physics-pass.d.ts +3 -1
  310. package/dist/consolidate/physics-pass.js +10 -7
  311. package/dist/consolidate/replay.d.ts +11 -4
  312. package/dist/consolidate/replay.js +19 -7
  313. package/dist/consolidate/run.d.ts +13 -5
  314. package/dist/consolidate/run.js +4 -4
  315. package/dist/consolidate/sleep.d.ts +14 -6
  316. package/dist/consolidate/sleep.js +41 -38
  317. package/dist/consolidate/trace.d.ts +7 -2
  318. package/dist/consolidate/trace.js +7 -2
  319. package/dist/consolidate/traces.js +26 -29
  320. package/dist/core/ablation.d.ts +9 -3
  321. package/dist/core/ablation.js +14 -4
  322. package/dist/core/active-scope.d.ts +3 -1
  323. package/dist/core/active-scope.js +3 -1
  324. package/dist/core/agent-memory-tools.d.ts +2 -0
  325. package/dist/core/agent-memory-tools.js +2 -0
  326. package/dist/core/ambient.d.ts +4 -3
  327. package/dist/core/ambient.js +8 -6
  328. package/dist/core/api-errors.d.ts +9 -3
  329. package/dist/core/api-errors.js +9 -3
  330. package/dist/core/capture-contract.d.ts +4 -1
  331. package/dist/core/capture-contract.js +27 -8
  332. package/dist/core/compare.d.ts +24 -8
  333. package/dist/core/compare.js +24 -8
  334. package/dist/core/config.d.ts +18 -9
  335. package/dist/core/config.js +24 -14
  336. package/dist/core/cosine.d.ts +4 -1
  337. package/dist/core/cosine.js +4 -1
  338. package/dist/core/handoff.d.ts +7 -2
  339. package/dist/core/handoff.js +4 -1
  340. package/dist/core/markdown.js +21 -16
  341. package/dist/core/memory-audit.js +14 -3
  342. package/dist/core/memory-quality.d.ts +12 -3
  343. package/dist/core/memory-quality.js +57 -21
  344. package/dist/core/memory.d.ts +84 -27
  345. package/dist/core/memory.js +73 -29
  346. package/dist/core/merged-row.d.ts +8 -2
  347. package/dist/core/merged-row.js +10 -3
  348. package/dist/core/package-root.d.ts +3 -1
  349. package/dist/core/package-root.js +3 -1
  350. package/dist/core/particle-refresh.d.ts +8 -0
  351. package/dist/core/particle-refresh.js +22 -0
  352. package/dist/core/physics-config.d.ts +4 -1
  353. package/dist/core/physics-config.js +6 -2
  354. package/dist/core/physics.d.ts +37 -11
  355. package/dist/core/physics.js +55 -20
  356. package/dist/core/project-identity.d.ts +34 -17
  357. package/dist/core/project-identity.js +33 -17
  358. package/dist/core/project-remote.d.ts +8 -4
  359. package/dist/core/project-remote.js +31 -14
  360. package/dist/core/recall-scope.d.ts +33 -11
  361. package/dist/core/recall-scope.js +42 -15
  362. package/dist/core/rejection-digest.d.ts +7 -0
  363. package/dist/core/rejection-digest.js +13 -0
  364. package/dist/core/salience.d.ts +3 -1
  365. package/dist/core/salience.js +10 -4
  366. package/dist/core/search-types.d.ts +15 -2
  367. package/dist/core/search-types.js +11 -0
  368. package/dist/dashboard/dashboard-actions.js +13 -2
  369. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  370. package/dist/dashboard/dashboard-snapshot.js +4 -4
  371. package/dist/dashboard/dashboard.js +6 -3
  372. package/dist/db/backup.js +2 -2
  373. package/dist/db/busy.d.ts +10 -3
  374. package/dist/db/busy.js +27 -5
  375. package/dist/db/connect.d.ts +10 -3
  376. package/dist/db/connect.js +8 -3
  377. package/dist/db/continuity.d.ts +1 -1
  378. package/dist/db/continuity.js +27 -11
  379. package/dist/db/meta.d.ts +4 -1
  380. package/dist/db/meta.js +4 -1
  381. package/dist/db/migrate.d.ts +10 -5
  382. package/dist/db/migrate.js +26 -13
  383. package/dist/db/migrations/index.d.ts +1 -1
  384. package/dist/db/migrations/index.js +3 -1
  385. package/dist/db/migrations/types.d.ts +2 -1
  386. package/dist/db/migrations/v12.js +2 -1
  387. package/dist/db/migrations/v14.js +2 -1
  388. package/dist/db/migrations/v15.js +4 -2
  389. package/dist/db/migrations/v16.js +6 -3
  390. package/dist/db/migrations/v17.js +2 -1
  391. package/dist/db/migrations/v19.js +4 -2
  392. package/dist/db/migrations/v20.js +2 -1
  393. package/dist/db/migrations/v22.js +12 -6
  394. package/dist/db/migrations/v23.js +6 -3
  395. package/dist/db/migrations/v24.js +6 -3
  396. package/dist/db/migrations/v25.js +4 -2
  397. package/dist/db/migrations/v26.js +4 -2
  398. package/dist/db/migrations/v27.js +6 -3
  399. package/dist/db/migrations/v28.js +4 -2
  400. package/dist/db/migrations/v29.js +4 -2
  401. package/dist/db/migrations/v30.js +6 -3
  402. package/dist/db/migrations/v31.js +4 -2
  403. package/dist/db/migrations/v32.js +6 -3
  404. package/dist/db/migrations/v33.js +4 -2
  405. package/dist/db/migrations/v34.js +2 -1
  406. package/dist/db/migrations/v35.js +2 -1
  407. package/dist/db/migrations/v36.js +2 -1
  408. package/dist/db/migrations/v37.js +10 -5
  409. package/dist/db/migrations/v38.js +10 -5
  410. package/dist/db/migrations/v39.js +14 -6
  411. package/dist/db/migrations/v40.js +4 -2
  412. package/dist/db/migrations/v41.js +4 -2
  413. package/dist/db/migrations/v42.js +2 -1
  414. package/dist/db/migrations/v44.js +4 -2
  415. package/dist/db/migrations/v45.js +4 -2
  416. package/dist/db/migrations/v49.js +2 -1
  417. package/dist/db/migrations/v50.js +4 -2
  418. package/dist/db/migrations/v51.js +4 -2
  419. package/dist/db/migrations/v52.js +2 -1
  420. package/dist/db/migrations/v53.js +8 -4
  421. package/dist/db/migrations/v54.js +2 -1
  422. package/dist/db/migrations/v55.js +4 -2
  423. package/dist/db/migrations/v56.d.ts +3 -0
  424. package/dist/db/migrations/v56.js +28 -0
  425. package/dist/db/open.d.ts +24 -12
  426. package/dist/db/open.js +25 -13
  427. package/dist/db/physics-state.d.ts +8 -4
  428. package/dist/db/physics-state.js +13 -20
  429. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  430. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  431. package/dist/db/request-stores.d.ts +19 -5
  432. package/dist/db/request-stores.js +14 -5
  433. package/dist/db/tables.d.ts +2 -1
  434. package/dist/db/tables.js +12 -4
  435. package/dist/db/vector-store.d.ts +13 -4
  436. package/dist/db/vector-store.js +34 -14
  437. package/dist/db/wal-checkpointer.d.ts +2 -1
  438. package/dist/db/wal-checkpointer.js +19 -7
  439. package/dist/doctor.d.ts +4 -1
  440. package/dist/doctor.js +121 -39
  441. package/dist/embeddings/local.d.ts +8 -4
  442. package/dist/embeddings/local.js +9 -5
  443. package/dist/embeddings/provider.d.ts +19 -10
  444. package/dist/embeddings/provider.js +31 -17
  445. package/dist/embeddings/transformers.d.ts +16 -4
  446. package/dist/embeddings/transformers.js +32 -15
  447. package/dist/entry/json-hooks.d.ts +1 -1
  448. package/dist/entry/json-hooks.js +1 -1
  449. package/dist/entry/project-identity.js +2 -1
  450. package/dist/entry/session-text.d.ts +1 -1
  451. package/dist/entry/session-text.js +1 -1
  452. package/dist/entry/sqlite-handles.d.ts +10 -0
  453. package/dist/entry/sqlite-handles.js +9 -0
  454. package/dist/entry/store-kit.d.ts +19 -6
  455. package/dist/entry/store-kit.js +6 -4
  456. package/dist/eval/eval-stats.d.ts +27 -8
  457. package/dist/eval/eval-stats.js +17 -5
  458. package/dist/eval/eval-suite.d.ts +3 -1
  459. package/dist/eval/eval-suite.js +409 -187
  460. package/dist/eval/eval.d.ts +8 -2
  461. package/dist/eval/eval.js +8 -2
  462. package/dist/eval/judgment.js +16 -6
  463. package/dist/graph/delta.d.ts +9 -42
  464. package/dist/graph/delta.js +17 -11
  465. package/dist/graph/extract.d.ts +10 -7
  466. package/dist/graph/extract.js +57 -25
  467. package/dist/graph/recall.d.ts +12 -4
  468. package/dist/graph/recall.js +30 -13
  469. package/dist/graph/stream.d.ts +18 -6
  470. package/dist/graph/stream.js +32 -10
  471. package/dist/graph/view.d.ts +19 -6
  472. package/dist/graph/view.js +42 -17
  473. package/dist/hooks/codex-session.js +2 -2
  474. package/dist/hooks/codex-wrapper.d.ts +3 -1
  475. package/dist/hooks/codex-wrapper.js +9 -4
  476. package/dist/hooks/copilot.d.ts +19 -5
  477. package/dist/hooks/copilot.js +54 -15
  478. package/dist/hooks/hook-blocks.d.ts +4 -1
  479. package/dist/hooks/hook-blocks.js +8 -3
  480. package/dist/hooks/json-hooks.d.ts +9 -5
  481. package/dist/hooks/json-hooks.js +69 -34
  482. package/dist/hooks/opencode.js +15 -5
  483. package/dist/hooks/shared.d.ts +27 -8
  484. package/dist/hooks/shared.js +57 -16
  485. package/dist/importers/core.d.ts +12 -4
  486. package/dist/importers/core.js +8 -7
  487. package/dist/importers/markdown-parse.d.ts +15 -5
  488. package/dist/importers/markdown-parse.js +16 -7
  489. package/dist/importers/markdown.js +6 -9
  490. package/dist/importers/sources.js +10 -23
  491. package/dist/importers/vault.d.ts +2 -2
  492. package/dist/importers/vault.js +43 -27
  493. package/dist/index.d.ts +32 -6
  494. package/dist/index.js +25 -7
  495. package/dist/learn/autolearn.d.ts +17 -6
  496. package/dist/learn/autolearn.js +53 -24
  497. package/dist/learn/churn-git.d.ts +4 -1
  498. package/dist/learn/churn-git.js +29 -5
  499. package/dist/learn/extract.d.ts +4 -1
  500. package/dist/learn/extract.js +16 -9
  501. package/dist/learn/forward-claim-detector.d.ts +17 -5
  502. package/dist/learn/forward-claim-detector.js +34 -15
  503. package/dist/learn/invalidation.d.ts +12 -7
  504. package/dist/learn/invalidation.js +56 -27
  505. package/dist/learn/roots.d.ts +3 -0
  506. package/dist/learn/roots.js +5 -0
  507. package/dist/mcp/admin-tools.d.ts +5 -5
  508. package/dist/mcp/admin-tools.js +28 -23
  509. package/dist/mcp/format.d.ts +1 -1
  510. package/dist/mcp/format.js +4 -2
  511. package/dist/mcp/framing.d.ts +3 -1
  512. package/dist/mcp/framing.js +20 -8
  513. package/dist/mcp/memory-tools.d.ts +3 -3
  514. package/dist/mcp/memory-tools.js +18 -14
  515. package/dist/mcp/protocol.d.ts +32 -16
  516. package/dist/mcp/protocol.js +12 -9
  517. package/dist/mcp/recall-tools.d.ts +3 -3
  518. package/dist/mcp/recall-tools.js +62 -74
  519. package/dist/mcp/request.d.ts +7 -5
  520. package/dist/mcp/request.js +57 -74
  521. package/dist/mcp/server.d.ts +3 -1
  522. package/dist/mcp/server.js +8 -3
  523. package/dist/mcp/session-state.d.ts +1 -1
  524. package/dist/mcp/session-state.js +4 -3
  525. package/dist/mcp/shared-gate.d.ts +3 -2
  526. package/dist/mcp/shared-gate.js +3 -2
  527. package/dist/mcp/stdio.d.ts +6 -3
  528. package/dist/mcp/stdio.js +52 -21
  529. package/dist/mcp/tool-args.d.ts +4 -1
  530. package/dist/mcp/tool-args.js +8 -3
  531. package/dist/mcp/tools.js +76 -32
  532. package/dist/objects/customer-notes.d.ts +12 -10
  533. package/dist/objects/customer-notes.js +21 -15
  534. package/dist/objects/decisions.d.ts +18 -10
  535. package/dist/objects/decisions.js +23 -17
  536. package/dist/objects/descriptor.js +2 -1
  537. package/dist/objects/fields.d.ts +4 -1
  538. package/dist/objects/fields.js +6 -2
  539. package/dist/objects/incidents.d.ts +14 -16
  540. package/dist/objects/incidents.js +29 -30
  541. package/dist/objects/lifecycle.d.ts +0 -4
  542. package/dist/objects/lifecycle.js +21 -24
  543. package/dist/objects/policies.d.ts +12 -16
  544. package/dist/objects/policies.js +17 -21
  545. package/dist/objects/processes.d.ts +16 -10
  546. package/dist/objects/processes.js +20 -15
  547. package/dist/objects/project-briefs.d.ts +13 -14
  548. package/dist/objects/project-briefs.js +33 -39
  549. package/dist/objects/skills.d.ts +10 -12
  550. package/dist/objects/skills.js +17 -22
  551. package/dist/postinstall.js +15 -7
  552. package/dist/predictions/planning-fallacy.d.ts +19 -6
  553. package/dist/predictions/planning-fallacy.js +4 -2
  554. package/dist/rerankers/clef.d.ts +8 -2
  555. package/dist/rerankers/clef.js +14 -9
  556. package/dist/rerankers/cross-encoder.d.ts +2 -1
  557. package/dist/rerankers/cross-encoder.js +9 -6
  558. package/dist/rerankers/index.js +2 -1
  559. package/dist/rerankers/jev.js +2 -1
  560. package/dist/rerankers/llm.d.ts +6 -2
  561. package/dist/rerankers/llm.js +8 -3
  562. package/dist/rerankers/remote.d.ts +3 -1
  563. package/dist/rerankers/remote.js +5 -2
  564. package/dist/rerankers/types.d.ts +6 -2
  565. package/dist/search/bm25-search.d.ts +3 -1
  566. package/dist/search/bm25-search.js +15 -2
  567. package/dist/search/boosts.js +4 -3
  568. package/dist/search/embed-memories.d.ts +10 -5
  569. package/dist/search/embed-memories.js +62 -36
  570. package/dist/search/engine.d.ts +4 -1
  571. package/dist/search/engine.js +6 -2
  572. package/dist/search/goal-boost.d.ts +10 -3
  573. package/dist/search/goal-boost.js +13 -6
  574. package/dist/search/hybrid-score.d.ts +4 -1
  575. package/dist/search/hybrid-score.js +4 -1
  576. package/dist/search/hybrid.d.ts +23 -8
  577. package/dist/search/hybrid.js +12 -7
  578. package/dist/search/multihop.js +14 -13
  579. package/dist/search/path-context.d.ts +10 -3
  580. package/dist/search/path-context.js +10 -3
  581. package/dist/search/physics-search.d.ts +9 -4
  582. package/dist/search/physics-search.js +38 -14
  583. package/dist/search/rerank.d.ts +2 -1
  584. package/dist/search/rerank.js +2 -1
  585. package/dist/search/rrf.d.ts +14 -5
  586. package/dist/search/rrf.js +11 -4
  587. package/dist/search/vector.d.ts +8 -2
  588. package/dist/search/vector.js +9 -3
  589. package/dist/server/auth.d.ts +18 -14
  590. package/dist/server/auth.js +69 -38
  591. package/dist/server/boot.d.ts +3 -1
  592. package/dist/server/boot.js +95 -56
  593. package/dist/server/client-ip.d.ts +11 -4
  594. package/dist/server/client-ip.js +27 -10
  595. package/dist/server/cursor.d.ts +10 -3
  596. package/dist/server/cursor.js +10 -3
  597. package/dist/server/deadline.d.ts +5 -2
  598. package/dist/server/deadline.js +10 -3
  599. package/dist/server/key-check-bounds.js +12 -4
  600. package/dist/server/lifecycle.d.ts +4 -1
  601. package/dist/server/lifecycle.js +10 -4
  602. package/dist/server/mcp-http.d.ts +2 -1
  603. package/dist/server/mcp-http.js +37 -22
  604. package/dist/server/rate-limit.d.ts +17 -5
  605. package/dist/server/rate-limit.js +55 -26
  606. package/dist/server/ready.js +7 -4
  607. package/dist/server/request.d.ts +15 -4
  608. package/dist/server/request.js +42 -15
  609. package/dist/server/route-checks.d.ts +4 -1
  610. package/dist/server/route-checks.js +8 -3
  611. package/dist/server/route-table.d.ts +8 -6
  612. package/dist/server/route-table.js +547 -93
  613. package/dist/server/routes/admin.d.ts +7 -7
  614. package/dist/server/routes/admin.js +36 -15
  615. package/dist/server/routes/customer-notes.d.ts +5 -5
  616. package/dist/server/routes/customer-notes.js +5 -4
  617. package/dist/server/routes/decisions.d.ts +5 -5
  618. package/dist/server/routes/decisions.js +12 -6
  619. package/dist/server/routes/incidents.d.ts +5 -5
  620. package/dist/server/routes/incidents.js +10 -4
  621. package/dist/server/routes/memories.d.ts +8 -8
  622. package/dist/server/routes/memories.js +12 -19
  623. package/dist/server/routes/object-routes.d.ts +8 -5
  624. package/dist/server/routes/object-routes.js +4 -2
  625. package/dist/server/routes/policies.d.ts +6 -6
  626. package/dist/server/routes/policies.js +11 -4
  627. package/dist/server/routes/predictions.d.ts +5 -5
  628. package/dist/server/routes/predictions.js +9 -4
  629. package/dist/server/routes/processes.d.ts +5 -5
  630. package/dist/server/routes/processes.js +15 -6
  631. package/dist/server/routes/project-briefs.d.ts +6 -6
  632. package/dist/server/routes/project-briefs.js +3 -2
  633. package/dist/server/routes/recall.d.ts +3 -3
  634. package/dist/server/routes/recall.js +21 -10
  635. package/dist/server/routes/skills.d.ts +6 -6
  636. package/dist/server/routes/skills.js +12 -4
  637. package/dist/server/server-detect.d.ts +24 -8
  638. package/dist/server/server-detect.js +57 -22
  639. package/dist/server/sleep-child.js +16 -10
  640. package/dist/server/sleep-offload.d.ts +8 -5
  641. package/dist/server/sleep-offload.js +41 -19
  642. package/dist/server/tls.d.ts +4 -1
  643. package/dist/server/tls.js +13 -5
  644. package/dist/server/types.d.ts +38 -26
  645. package/dist/server/validation.d.ts +4 -1
  646. package/dist/server/validation.js +22 -9
  647. package/dist/server.d.ts +15 -10
  648. package/dist/server.js +32 -12
  649. package/dist/sharing/global-store.d.ts +5 -10
  650. package/dist/sharing/global-store.js +8 -43
  651. package/dist/sharing/global-sync.d.ts +3 -1
  652. package/dist/sharing/global-sync.js +16 -6
  653. package/dist/sharing/project-merge.d.ts +25 -7
  654. package/dist/sharing/project-merge.js +49 -17
  655. package/dist/sharing/search-both.d.ts +8 -4
  656. package/dist/sharing/search-both.js +19 -12
  657. package/dist/sharing/share.d.ts +8 -4
  658. package/dist/sharing/share.js +39 -15
  659. package/dist/store/ambient.js +9 -5
  660. package/dist/store/audit-event.d.ts +2 -2
  661. package/dist/store/audit-event.js +8 -3
  662. package/dist/store/audit.d.ts +6 -3
  663. package/dist/store/audit.js +16 -6
  664. package/dist/store/auth.d.ts +4 -2
  665. package/dist/store/auth.js +63 -20
  666. package/dist/store/busy.d.ts +9 -0
  667. package/dist/store/busy.js +16 -0
  668. package/dist/store/candidates.d.ts +12 -5
  669. package/dist/store/candidates.js +75 -36
  670. package/dist/store/capture-write.d.ts +2 -1
  671. package/dist/store/capture-write.js +2 -1
  672. package/dist/store/card-detail.d.ts +4 -4
  673. package/dist/store/card-detail.js +15 -8
  674. package/dist/store/cards.d.ts +24 -10
  675. package/dist/store/cards.js +93 -60
  676. package/dist/store/compaction-caller.d.ts +2 -1
  677. package/dist/store/compaction-caller.js +2 -1
  678. package/dist/store/compactions-record.d.ts +14 -8
  679. package/dist/store/compactions-record.js +95 -32
  680. package/dist/store/compactions.js +35 -15
  681. package/dist/store/conflicts.d.ts +9 -4
  682. package/dist/store/conflicts.js +100 -45
  683. package/dist/store/connectors/dlq.d.ts +17 -5
  684. package/dist/store/connectors/dlq.js +56 -5
  685. package/dist/store/connectors/event-log.d.ts +111 -2
  686. package/dist/store/connectors/event-log.js +2 -1
  687. package/dist/store/connectors/github.d.ts +6 -3
  688. package/dist/store/connectors/github.js +24 -40
  689. package/dist/store/connectors/slack.d.ts +2 -1
  690. package/dist/store/connectors/slack.js +25 -37
  691. package/dist/store/dashboard-reads.d.ts +7 -3
  692. package/dist/store/dashboard-reads.js +32 -11
  693. package/dist/store/delete-and-batch.d.ts +17 -11
  694. package/dist/store/delete-and-batch.js +67 -26
  695. package/dist/store/delivery-recorder.d.ts +8 -5
  696. package/dist/store/delivery-recorder.js +70 -32
  697. package/dist/store/descendant-page.d.ts +2 -1
  698. package/dist/store/descendant-page.js +24 -9
  699. package/dist/store/diagnostics.d.ts +2 -1
  700. package/dist/store/diagnostics.js +2 -1
  701. package/dist/store/doctor-reads.d.ts +2 -1
  702. package/dist/store/doctor-reads.js +13 -5
  703. package/dist/store/dormant.d.ts +19 -11
  704. package/dist/store/dormant.js +40 -18
  705. package/dist/store/embeddings/index.d.ts +13 -9
  706. package/dist/store/embeddings/index.js +19 -12
  707. package/dist/store/entry-reads.d.ts +49 -20
  708. package/dist/store/entry-reads.js +181 -66
  709. package/dist/store/entry-row.d.ts +10 -6
  710. package/dist/store/entry-row.js +17 -12
  711. package/dist/store/entry-writes.d.ts +22 -10
  712. package/dist/store/entry-writes.js +41 -14
  713. package/dist/store/failure-log-at.js +1 -1
  714. package/dist/store/failure-log.d.ts +4 -2
  715. package/dist/store/failure-log.js +13 -6
  716. package/dist/store/gated-write.d.ts +3 -3
  717. package/dist/store/gated-write.js +3 -3
  718. package/dist/store/goals.d.ts +5 -4
  719. package/dist/store/goals.js +8 -10
  720. package/dist/store/graph-apply.d.ts +21 -0
  721. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  722. package/dist/store/graph-queue.d.ts +9 -6
  723. package/dist/store/graph-queue.js +15 -10
  724. package/dist/store/graph-reads.d.ts +16 -11
  725. package/dist/store/graph-reads.js +24 -15
  726. package/dist/store/graph-rows.d.ts +41 -3
  727. package/dist/store/graph-rows.js +10 -7
  728. package/dist/store/graph-view-rows.js +14 -7
  729. package/dist/store/graph-writes.d.ts +16 -10
  730. package/dist/store/graph-writes.js +59 -36
  731. package/dist/store/handoffs.d.ts +4 -4
  732. package/dist/store/handoffs.js +40 -19
  733. package/dist/store/index-and-stats.d.ts +2 -2
  734. package/dist/store/index-and-stats.js +6 -5
  735. package/dist/store/index.d.ts +3 -1
  736. package/dist/store/index.js +1 -0
  737. package/dist/store/key-audit.d.ts +2 -1
  738. package/dist/store/key-audit.js +2 -1
  739. package/dist/store/key-writes.d.ts +2 -1
  740. package/dist/store/key-writes.js +9 -2
  741. package/dist/store/ledger-turn.d.ts +4 -1
  742. package/dist/store/ledger-turn.js +7 -2
  743. package/dist/store/mirrors.d.ts +11 -4
  744. package/dist/store/mirrors.js +88 -16
  745. package/dist/store/narrow.d.ts +6 -0
  746. package/dist/store/narrow.js +11 -0
  747. package/dist/store/open.d.ts +4 -2
  748. package/dist/store/open.js +18 -9
  749. package/dist/store/pilot-arm.d.ts +2 -1
  750. package/dist/store/pilot-arm.js +18 -6
  751. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  752. package/dist/store/planning-fallacy-evidence.js +8 -5
  753. package/dist/store/port/agent-import.d.ts +62 -0
  754. package/dist/store/port/agent-import.js +2 -0
  755. package/dist/store/port/consolidation.d.ts +129 -0
  756. package/dist/store/port/consolidation.js +2 -0
  757. package/dist/store/port/learning.d.ts +19 -0
  758. package/dist/store/port/learning.js +2 -0
  759. package/dist/store/port/local-files.d.ts +18 -0
  760. package/dist/store/port/local-files.js +2 -0
  761. package/dist/store/port/promotion.d.ts +20 -0
  762. package/dist/store/port/promotion.js +3 -0
  763. package/dist/store/port-groups.d.ts +160 -0
  764. package/dist/store/port-groups.js +2 -0
  765. package/dist/store/port.d.ts +215 -229
  766. package/dist/store/port.js +3 -9
  767. package/dist/store/predictions.d.ts +14 -10
  768. package/dist/store/predictions.js +37 -17
  769. package/dist/store/project-tags.d.ts +4 -1
  770. package/dist/store/project-tags.js +16 -5
  771. package/dist/store/quality-repair.d.ts +8 -4
  772. package/dist/store/quality-repair.js +53 -20
  773. package/dist/store/quarantine.d.ts +1 -0
  774. package/dist/store/quarantine.js +23 -9
  775. package/dist/store/raw-archive.d.ts +5 -4
  776. package/dist/store/raw-archive.js +11 -10
  777. package/dist/store/recall-trace.d.ts +22 -17
  778. package/dist/store/recall-trace.js +126 -63
  779. package/dist/store/rejected-values.d.ts +15 -10
  780. package/dist/store/rejected-values.js +33 -12
  781. package/dist/store/rejection.d.ts +12 -11
  782. package/dist/store/rejection.js +18 -19
  783. package/dist/store/report-reads.d.ts +2 -1
  784. package/dist/store/report-reads.js +2 -1
  785. package/dist/store/rows.d.ts +7 -5
  786. package/dist/store/rows.js +18 -11
  787. package/dist/store/rule-sql.d.ts +6 -4
  788. package/dist/store/rule-sql.js +16 -9
  789. package/dist/store/search-rows.d.ts +14 -9
  790. package/dist/store/search-rows.js +48 -23
  791. package/dist/store/sessions.d.ts +12 -10
  792. package/dist/store/sessions.js +40 -21
  793. package/dist/store/set-aside.d.ts +2 -2
  794. package/dist/store/set-aside.js +18 -5
  795. package/dist/store/sqlite/agent-import.d.ts +3 -0
  796. package/dist/store/sqlite/agent-import.js +77 -0
  797. package/dist/store/sqlite/cards-group.d.ts +6 -0
  798. package/dist/store/sqlite/cards-group.js +37 -0
  799. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  800. package/dist/store/sqlite/conflicts-group.js +18 -0
  801. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  802. package/dist/store/sqlite/connector-events-group.js +17 -6
  803. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  804. package/dist/store/sqlite/connector-writes-group.js +9 -4
  805. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  806. package/dist/store/sqlite/consolidation-group.js +64 -0
  807. package/dist/store/sqlite/dag-reads-group.js +1 -1
  808. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  809. package/dist/store/sqlite/dormant-group.js +29 -0
  810. package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
  811. package/dist/store/sqlite/entry-writes-group.js +37 -14
  812. package/dist/store/sqlite/error-codec.d.ts +4 -2
  813. package/dist/store/sqlite/error-codec.js +32 -10
  814. package/dist/store/sqlite/executor-counts.js +2 -1
  815. package/dist/store/sqlite/executor.d.ts +8 -3
  816. package/dist/store/sqlite/executor.js +56 -18
  817. package/dist/store/sqlite/global-promote.d.ts +5 -0
  818. package/dist/store/sqlite/global-promote.js +48 -0
  819. package/dist/store/sqlite/goals-group.d.ts +6 -0
  820. package/dist/store/sqlite/goals-group.js +23 -0
  821. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  822. package/dist/store/sqlite/graph-reads-group.js +2 -1
  823. package/dist/store/sqlite/held-connection.d.ts +7 -1
  824. package/dist/store/sqlite/held-connection.js +34 -7
  825. package/dist/store/sqlite/last-recall-group.d.ts +4 -2
  826. package/dist/store/sqlite/last-recall-group.js +9 -4
  827. package/dist/store/sqlite/learning-group.d.ts +4 -0
  828. package/dist/store/sqlite/learning-group.js +17 -0
  829. package/dist/store/sqlite/maintenance-groups.js +2 -1
  830. package/dist/store/sqlite/object-rows.d.ts +6 -3
  831. package/dist/store/sqlite/object-rows.js +34 -5
  832. package/dist/store/sqlite/objects-group.d.ts +5 -4
  833. package/dist/store/sqlite/objects-group.js +84 -33
  834. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  835. package/dist/store/sqlite/predictions-group.js +4 -2
  836. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  837. package/dist/store/sqlite/promotion-group.js +10 -0
  838. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  839. package/dist/store/sqlite/quarantine-group.js +4 -2
  840. package/dist/store/sqlite/reports-group.d.ts +6 -0
  841. package/dist/store/sqlite/reports-group.js +33 -0
  842. package/dist/store/sqlite/request-scope.d.ts +6 -0
  843. package/dist/store/sqlite/request-scope.js +18 -0
  844. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  845. package/dist/store/sqlite/sessions-group.js +46 -0
  846. package/dist/store/sqlite/store.d.ts +22 -11
  847. package/dist/store/sqlite/store.js +84 -11
  848. package/dist/store/sqlite/vector-pack.js +2 -1
  849. package/dist/store/sqlite/vector-reads-group.js +2 -1
  850. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  851. package/dist/store/sqlite/worker-jobs.js +19 -7
  852. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  853. package/dist/store/sqlite/worker-ops.js +6 -3
  854. package/dist/store/sqlite/worker-store.d.ts +4 -3
  855. package/dist/store/sqlite/worker-store.js +24 -14
  856. package/dist/store/summaries.d.ts +19 -12
  857. package/dist/store/summaries.js +36 -21
  858. package/dist/store/summary-dirty.d.ts +2 -1
  859. package/dist/store/summary-dirty.js +2 -1
  860. package/dist/store/tenant.d.ts +3 -2
  861. package/dist/store/tenant.js +5 -4
  862. package/dist/store/token-ledger-rows.js +6 -3
  863. package/dist/store/token-ledger.d.ts +19 -13
  864. package/dist/store/token-ledger.js +27 -14
  865. package/dist/store/tombstone-checks.d.ts +4 -1
  866. package/dist/store/tombstone-checks.js +10 -1
  867. package/dist/store/usage-reports.js +2 -1
  868. package/dist/store/vector-index.d.ts +8 -5
  869. package/dist/store/vector-index.js +24 -10
  870. package/dist/store/working-memory.d.ts +6 -4
  871. package/dist/store/working-memory.js +14 -9
  872. package/dist/support-bundle.js +10 -5
  873. package/dist/trust/quarantine.d.ts +1 -2
  874. package/dist/trust/quarantine.js +1 -5
  875. package/dist/trust/reject-flow.d.ts +12 -3
  876. package/dist/trust/reject-flow.js +12 -4
  877. package/dist/util/anthropic-messages.d.ts +4 -1
  878. package/dist/util/anthropic-messages.js +14 -5
  879. package/dist/util/atomic-write.d.ts +4 -2
  880. package/dist/util/atomic-write.js +25 -14
  881. package/dist/util/compaction-items.d.ts +4 -1
  882. package/dist/util/compaction-items.js +8 -2
  883. package/dist/util/crash-handlers.d.ts +7 -2
  884. package/dist/util/crash-handlers.js +13 -4
  885. package/dist/util/env.d.ts +16 -4
  886. package/dist/util/env.js +78 -25
  887. package/dist/util/home-path.js +12 -6
  888. package/dist/util/hook-payload.d.ts +3 -1
  889. package/dist/util/hook-payload.js +3 -1
  890. package/dist/util/http-retry.d.ts +12 -6
  891. package/dist/util/http-retry.js +16 -6
  892. package/dist/util/http-util.d.ts +20 -5
  893. package/dist/util/http-util.js +28 -9
  894. package/dist/util/json.d.ts +4 -1
  895. package/dist/util/json.js +4 -1
  896. package/dist/util/keyset.js +2 -1
  897. package/dist/util/limits.js +4 -2
  898. package/dist/util/log.d.ts +13 -5
  899. package/dist/util/log.js +29 -6
  900. package/dist/util/net.d.ts +5 -0
  901. package/dist/util/net.js +19 -0
  902. package/dist/util/real-path.d.ts +2 -1
  903. package/dist/util/real-path.js +4 -3
  904. package/dist/util/request-scope.d.ts +11 -3
  905. package/dist/util/request-scope.js +13 -4
  906. package/dist/util/same-text.d.ts +10 -3
  907. package/dist/util/same-text.js +10 -3
  908. package/dist/util/secret-detect.d.ts +24 -7
  909. package/dist/util/secret-detect.js +49 -14
  910. package/dist/util/spawn-argv.d.ts +3 -1
  911. package/dist/util/spawn-argv.js +13 -4
  912. package/dist/util/sqlite-blocked.d.ts +15 -4
  913. package/dist/util/sqlite-blocked.js +19 -6
  914. package/dist/util/stored-json.d.ts +4 -1
  915. package/dist/util/stored-json.js +6 -2
  916. package/dist/util/stream-tee.d.ts +2 -1
  917. package/dist/util/stream-tee.js +8 -5
  918. package/dist/util/transcript-tail.d.ts +4 -1
  919. package/dist/util/transcript-tail.js +4 -1
  920. package/dist/util/version.d.ts +8 -3
  921. package/dist/util/version.js +8 -3
  922. package/dist/util/write-budget.d.ts +7 -2
  923. package/dist/util/write-budget.js +5 -2
  924. package/dist/util/yaml.d.ts +4 -1
  925. package/dist/util/yaml.js +4 -1
  926. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  927. package/extensions/openclaw-plugin/package.json +1 -1
  928. package/openclaw.plugin.json +1 -1
  929. package/package.json +2 -1
  930. package/scripts/postinstall.cjs +3 -1
  931. package/dist/api/cards.d.ts +0 -42
  932. package/dist/api/conflicts.d.ts +0 -28
  933. package/dist/api/conflicts.js +0 -61
  934. package/dist/api/dormant.d.ts +0 -14
  935. package/dist/api/dormant.js +0 -58
  936. package/dist/api/goals.d.ts +0 -18
  937. package/dist/api/graph.d.ts +0 -8
  938. package/dist/api/graph.js +0 -8
  939. package/dist/api/learn.js +0 -125
  940. package/dist/api/memories.d.ts +0 -25
  941. package/dist/api/objects.d.ts +0 -9
  942. package/dist/api/outcome.d.ts +0 -19
  943. package/dist/api/predictions.d.ts +0 -11
  944. package/dist/api/promote.d.ts +0 -36
  945. package/dist/api/recall-core.d.ts +0 -4
  946. package/dist/api/recall-core.js +0 -125
  947. package/dist/api/recall-finish.d.ts +0 -53
  948. package/dist/api/recall-finish.js +0 -30
  949. package/dist/api/recall-history.d.ts +0 -64
  950. package/dist/api/recall-history.js +0 -159
  951. package/dist/api/recall-record.d.ts +0 -43
  952. package/dist/api/recall-record.js +0 -78
  953. package/dist/api/recall-request.js +0 -121
  954. package/dist/api/recall.d.ts +0 -6
  955. package/dist/api/refine.d.ts +0 -7
  956. package/dist/api/refine.js +0 -10
  957. package/dist/api/session-owners.d.ts +0 -4
  958. package/dist/api/session-owners.js +0 -17
  959. package/dist/api/sleep-run.d.ts +0 -26
  960. package/dist/api/sleep.js +0 -11
  961. package/dist/graph/write.d.ts +0 -14
  962. package/dist/store/sqlite/busy.d.ts +0 -3
  963. package/dist/store/sqlite/busy.js +0 -8
  964. package/dist/store/sqlite/local.d.ts +0 -4
  965. package/dist/store/sqlite/local.js +0 -8
@@ -3,28 +3,27 @@ import * as briefsModule from '../objects/project-briefs.js';
3
3
  import { errorMessage } from '../util/log.js';
4
4
  import { printError } from './output.js';
5
5
  import { boolFlag, stringFlag } from './flag-values.js';
6
- import { CliExit } from './exit.js';
6
+ import { fail } from './exit.js';
7
7
  import { requiredText, versionedVerbs } from './versioned-verbs.js';
8
8
  function printBriefRow(b) {
9
9
  console.log(`#${b.id} [${b.status}] v${b.version} repo="${b.repo}" memory=${b.memoryId ?? '-'}`);
10
10
  if (b.changeSummary)
11
11
  console.log(` change: ${b.changeSummary}`);
12
12
  }
13
- function briefRefresh(hippoRoot, tenantId, args, flags) {
13
+ async function briefRefresh(objects, hippoRoot, tenantId, args, flags) {
14
14
  const repoRaw = args[1];
15
15
  if (!repoRaw) {
16
- printError('Usage: hippo brief refresh "<repo>" [--dry-run]');
17
- throw new CliExit(1);
16
+ fail('Usage: hippo brief refresh "<repo>" [--dry-run]');
18
17
  }
19
18
  const dryRun = boolFlag(flags, 'dry-run');
20
19
  try {
21
20
  if (dryRun) {
22
- const { markdown, receiptCount } = briefsModule.assembleBriefFromReceipts(hippoRoot, tenantId, repoRaw);
21
+ const { markdown, receiptCount } = await briefsModule.briefFromReceipts(objects, tenantId, repoRaw);
23
22
  printError(`(dry-run: assembled from ${receiptCount} receipt(s); brief NOT written)`);
24
23
  console.log(markdown);
25
24
  return;
26
25
  }
27
- const created = briefsModule.refreshBrief(hippoRoot, tenantId, repoRaw, 'cli');
26
+ const created = await briefsModule.refreshedBrief(objects, { hippoRoot, tenantId, actor: 'cli' }, repoRaw);
28
27
  console.log(`Project brief #${created.id} recorded (v${created.version}) for repo "${created.repo}".`);
29
28
  if (created.changeSummary)
30
29
  console.log(` change: ${created.changeSummary}`);
@@ -32,11 +31,10 @@ function briefRefresh(hippoRoot, tenantId, args, flags) {
32
31
  console.log(` memory: ${created.memoryId}`);
33
32
  }
34
33
  catch (e) {
35
- printError(errorMessage(e));
36
- throw new CliExit(1);
34
+ fail(errorMessage(e));
37
35
  }
38
36
  }
39
- const briefKind = (hippoRoot, tenantId) => ({
37
+ const briefKind = (objects, hippoRoot, tenantId) => ({
40
38
  names: { cmd: 'brief', noun: 'Project brief', idLabel: 'brief' },
41
39
  plural: 'project briefs',
42
40
  states: briefsModule.VALID_BRIEF_STATES,
@@ -52,13 +50,20 @@ const briefKind = (hippoRoot, tenantId) => ({
52
50
  bodyRequired: '--summary "<text>"',
53
51
  body: (flags) => requiredText(flags, 'summary'),
54
52
  keyOf: (b) => b.repo,
55
- save: (repo, summary, extraTags, from) => briefsModule.saveProjectBrief(hippoRoot, tenantId, {
56
- repo, summary, extraTags, changeSummary: from?.changeSummary, supersedesBriefId: from?.id,
53
+ save: (repo, summary, extraTags, from) => briefsModule.saveProjectBrief(objects, hippoRoot, tenantId, {
54
+ repo,
55
+ summary,
56
+ extraTags,
57
+ changeSummary: from?.changeSummary,
58
+ supersedesBriefId: from?.id,
57
59
  }),
58
60
  recorded: (b) => `Project brief recorded: #${b.id} (v${b.version}) for repo "${b.repo}"`,
59
- list: (opts, flags) => briefsModule.loadProjectBriefs(hippoRoot, tenantId, { ...opts, repo: stringFlag(flags, 'repo')?.trim() || undefined }),
60
- loadById: (id) => briefsModule.loadProjectBriefById(hippoRoot, tenantId, id),
61
- close: (id) => briefsModule.closeProjectBrief(hippoRoot, tenantId, id),
61
+ list: (opts, flags) => briefsModule.loadProjectBriefs(objects, tenantId, {
62
+ ...opts,
63
+ repo: stringFlag(flags, 'repo')?.trim() || undefined,
64
+ }),
65
+ loadById: (id) => briefsModule.loadProjectBriefById(objects, tenantId, id),
66
+ close: (id) => briefsModule.closeProjectBrief(objects, tenantId, id),
62
67
  printRow: printBriefRow,
63
68
  printDetail: (b) => {
64
69
  console.log(` repo: ${b.repo}`);
@@ -66,7 +71,7 @@ const briefKind = (hippoRoot, tenantId) => ({
66
71
  console.log(` version: ${b.version}`);
67
72
  console.log(` summary: ${b.summary}`);
68
73
  },
69
- extra: { sub: 'refresh', run: (args, flags) => briefRefresh(hippoRoot, tenantId, args, flags) },
74
+ extra: { sub: 'refresh', run: (args, flags) => briefRefresh(objects, hippoRoot, tenantId, args, flags) },
70
75
  });
71
76
  export const handleProjectBrief = versionedVerbs(briefKind);
72
77
  //# sourceMappingURL=briefs.js.map
@@ -1,4 +1,4 @@
1
1
  import { type CommandContext } from './flag-values.js';
2
2
  /** Runs `hippo card <subcommand>`: rejects flags the subcommand never reads, then hands off to its handler. */
3
- export declare function handleCard({ hippoRoot, tenantId, args, flags }: CommandContext): void;
3
+ export declare function handleCard({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
4
4
  //# sourceMappingURL=card.d.ts.map
package/dist/cli/card.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // The `hippo card` verb (the agent work board); main() loads it lazily from the command table.
2
- import * as cardsApi from '../api/cards.js';
2
+ import * as cardsApi from '../api/objects/cards.js';
3
3
  import { cliApiContext } from './api-context.js';
4
4
  import { isHandoffOutcome } from '../core/handoff.js';
5
5
  import { isCardStatus } from '../core/card.js';
@@ -7,7 +7,7 @@ import { printError } from './output.js';
7
7
  import { stringFlagOrExit } from './flag-values.js';
8
8
  import { requireInit } from './shared.js';
9
9
  import { errorMessage } from '../util/log.js';
10
- import { CliExit } from './exit.js';
10
+ import { CliExit, fail } from './exit.js';
11
11
  // Each subcommand's usage line, written once so the repeated checks cannot drift.
12
12
  const CARD_USAGE = {
13
13
  create: 'hippo card create --title "..." [--repo <name>] [--contract <text>] [--budget <n>] [--depends-on <id>...]',
@@ -50,7 +50,8 @@ function printCard(detail) {
50
50
  if (runs.length > 0) {
51
51
  console.log('\n### Runs');
52
52
  for (const run of runs) {
53
- console.log(`- run ${run.id}: ${run.runtime} started ${run.started}${run.ended ? ` ended ${run.ended} (${run.outcome})` : ' (open)'}`);
53
+ const ended = run.ended ? ` ended ${run.ended} (${run.outcome})` : ' (open)';
54
+ console.log(`- run ${run.id}: ${run.runtime} started ${run.started}${ended}`);
54
55
  }
55
56
  }
56
57
  if (comments.length > 0) {
@@ -73,16 +74,15 @@ function cardRunFlag(flags) {
73
74
  return undefined;
74
75
  const n = Number(raw);
75
76
  if (!/^\d+$/.test(raw) || !Number.isSafeInteger(n) || n <= 0) {
76
- printError(`Invalid --run: "${raw}" (expected a positive integer).`);
77
- throw new CliExit(1);
77
+ fail(`Invalid --run: "${raw}" (expected a positive integer).`);
78
78
  }
79
79
  return n;
80
80
  }
81
81
  // Reads after the store already refused, so this only explains the refusal, never changes it.
82
- function cardRefusal(hippoRoot, tenantId, id) {
82
+ async function cardRefusal(hippoRoot, tenantId, id) {
83
83
  const ctx = cliApiContext(hippoRoot, tenantId);
84
- const card = cardsApi.cardLoad(ctx, id);
85
- const liveRun = cardsApi.cardRuns(ctx, id).find((r) => !r.ended);
84
+ const card = await cardsApi.cardLoad(ctx, id);
85
+ const liveRun = (await cardsApi.cardRuns(ctx, id)).find((r) => !r.ended);
86
86
  return `status ${card?.status ?? 'unknown'}, live run ${liveRun?.id ?? 'none'}`;
87
87
  }
88
88
  const CARD_SUBCOMMAND_FLAGS = {
@@ -102,8 +102,7 @@ export function handleCard({ hippoRoot, tenantId, args, flags }) {
102
102
  requireInit(hippoRoot);
103
103
  const subcommand = args[0] ?? '';
104
104
  if (!Object.hasOwn(CARD_SUBCOMMAND_FLAGS, subcommand)) {
105
- printError('Usage: hippo card <create|show|list|claim|heartbeat|block|review|complete|reclaim|comment>');
106
- throw new CliExit(1);
105
+ fail('Usage: hippo card <create|show|list|claim|heartbeat|block|review|complete|reclaim|comment>');
107
106
  }
108
107
  // SAFETY: hasOwn, unlike `in`, skips inherited keys such as constructor, so subcommand is a real key.
109
108
  const known = subcommand;
@@ -111,13 +110,12 @@ export function handleCard({ hippoRoot, tenantId, args, flags }) {
111
110
  for (const key of Object.keys(flags)) {
112
111
  if (!allowedFlags.includes(key)) {
113
112
  const valid = allowedFlags.length > 0 ? allowedFlags.map((f) => `--${f}`).join(', ') : '(none)';
114
- printError(`Unknown flag --${key} for hippo card ${subcommand}. Valid flags: ${valid}`);
115
- throw new CliExit(1);
113
+ fail(`Unknown flag --${key} for hippo card ${subcommand}. Valid flags: ${valid}`);
116
114
  }
117
115
  }
118
- CARD_HANDLERS[known](hippoRoot, tenantId, args, flags);
116
+ return CARD_HANDLERS[known](hippoRoot, tenantId, args, flags);
119
117
  }
120
- function cardCreate(hippoRoot, tenantId, _args, flags) {
118
+ async function cardCreate(hippoRoot, tenantId, _args, flags) {
121
119
  const title = stringFlagOrExit(flags, 'title') ?? '';
122
120
  if (!title) {
123
121
  throw usageError('create');
@@ -128,36 +126,32 @@ function cardCreate(hippoRoot, tenantId, _args, flags) {
128
126
  let budget;
129
127
  if (budgetRaw !== undefined) {
130
128
  if (!/^\d+$/.test(budgetRaw)) {
131
- printError(`Invalid budget: "${budgetRaw}" (expected a positive integer)`);
132
- throw new CliExit(1);
129
+ fail(`Invalid budget: "${budgetRaw}" (expected a positive integer)`);
133
130
  }
134
131
  budget = Number(budgetRaw);
135
132
  }
136
133
  const dependsOnFlag = flags['depends-on'];
137
134
  if (dependsOnFlag === true) {
138
- printError('--depends-on requires a value');
139
- throw new CliExit(1);
135
+ fail('--depends-on requires a value');
140
136
  }
141
137
  const dependsOn = Array.isArray(dependsOnFlag) ? dependsOnFlag : [];
142
138
  let card;
143
139
  try {
144
- card = cardsApi.cardCreate(cliApiContext(hippoRoot, tenantId), { title, repo, contract, budget, dependsOn });
140
+ card = await cardsApi.cardCreate(cliApiContext(hippoRoot, tenantId), { title, repo, contract, budget, dependsOn });
145
141
  }
146
142
  catch (error) {
147
- printError(errorMessage(error));
148
- throw new CliExit(1);
143
+ fail(errorMessage(error));
149
144
  }
150
145
  console.log(`Created card ${card.id} (status: ${card.status})`);
151
146
  }
152
- function cardShow(hippoRoot, tenantId, args, flags) {
147
+ async function cardShow(hippoRoot, tenantId, args, flags) {
153
148
  const id = args[1];
154
149
  if (!id) {
155
150
  throw usageError('show');
156
151
  }
157
- const detail = cardsApi.cardDetail(cliApiContext(hippoRoot, tenantId), id);
152
+ const detail = await cardsApi.cardDetail(cliApiContext(hippoRoot, tenantId), id);
158
153
  if (!detail) {
159
- printError(`No card found with id ${id}.`);
160
- throw new CliExit(1);
154
+ fail(`No card found with id ${id}.`);
161
155
  }
162
156
  if (flags['json']) {
163
157
  console.log(JSON.stringify(detail, null, 2));
@@ -165,13 +159,12 @@ function cardShow(hippoRoot, tenantId, args, flags) {
165
159
  }
166
160
  printCard(detail);
167
161
  }
168
- function cardList(hippoRoot, tenantId, _args, flags) {
162
+ async function cardList(hippoRoot, tenantId, _args, flags) {
169
163
  const status = stringFlagOrExit(flags, 'status');
170
164
  if (status !== undefined && !isCardStatus(status)) {
171
- printError(`Invalid status: "${status}".`);
172
- throw new CliExit(1);
165
+ fail(`Invalid status: "${status}".`);
173
166
  }
174
- const cards = cardsApi.cardList(cliApiContext(hippoRoot, tenantId), { status });
167
+ const cards = await cardsApi.cardList(cliApiContext(hippoRoot, tenantId), { status });
175
168
  if (flags['json']) {
176
169
  console.log(JSON.stringify({ cards }, null, 2));
177
170
  return;
@@ -181,10 +174,11 @@ function cardList(hippoRoot, tenantId, _args, flags) {
181
174
  return;
182
175
  }
183
176
  for (const card of cards) {
184
- console.log(`${card.id}\t${card.status}\t${card.title}${card.assigneeRuntime ? `\t(${card.assigneeRuntime})` : ''}`);
177
+ const assignee = card.assigneeRuntime ? `\t(${card.assigneeRuntime})` : '';
178
+ console.log(`${card.id}\t${card.status}\t${card.title}${assignee}`);
185
179
  }
186
180
  }
187
- function cardClaim(hippoRoot, tenantId, args, flags) {
181
+ async function cardClaim(hippoRoot, tenantId, args, flags) {
188
182
  const id = args[1];
189
183
  const runtime = stringFlagOrExit(flags, 'runtime') ?? '';
190
184
  if (!id || !runtime) {
@@ -193,19 +187,17 @@ function cardClaim(hippoRoot, tenantId, args, flags) {
193
187
  const sessionId = stringFlagOrExit(flags, 'session') || undefined;
194
188
  let card;
195
189
  try {
196
- card = cardsApi.cardClaim(cliApiContext(hippoRoot, tenantId), id, runtime, sessionId);
190
+ card = await cardsApi.cardClaim(cliApiContext(hippoRoot, tenantId), id, runtime, sessionId);
197
191
  }
198
192
  catch (error) {
199
- printError(errorMessage(error));
200
- throw new CliExit(1);
193
+ fail(errorMessage(error));
201
194
  }
202
195
  if (!card) {
203
- printError(`Could not claim card ${id} (not ready/blocked, or already claimed).`);
204
- throw new CliExit(1);
196
+ fail(`Could not claim card ${id} (not ready/blocked, or already claimed).`);
205
197
  }
206
198
  console.log(`Claimed card ${card.id} for ${runtime} (run ${card.runId}, lease until ${card.leaseUntil})`);
207
199
  }
208
- function cardHeartbeat(hippoRoot, tenantId, args, flags) {
200
+ async function cardHeartbeat(hippoRoot, tenantId, args, flags) {
209
201
  const id = args[1];
210
202
  const runId = cardRunFlag(flags);
211
203
  if (!id || runId === undefined) {
@@ -213,42 +205,37 @@ function cardHeartbeat(hippoRoot, tenantId, args, flags) {
213
205
  }
214
206
  let card;
215
207
  try {
216
- card = cardsApi.cardHeartbeat(cliApiContext(hippoRoot, tenantId), id, runId);
208
+ card = await cardsApi.cardHeartbeat(cliApiContext(hippoRoot, tenantId), id, runId);
217
209
  }
218
210
  catch (error) {
219
- printError(errorMessage(error));
220
- throw new CliExit(1);
211
+ fail(errorMessage(error));
221
212
  }
222
213
  if (!card) {
223
- printError(`Could not heartbeat card ${id} (${cardRefusal(hippoRoot, tenantId, id)}).`);
224
- throw new CliExit(1);
214
+ fail(`Could not heartbeat card ${id} (${await cardRefusal(hippoRoot, tenantId, id)}).`);
225
215
  }
226
216
  console.log(`Heartbeat card ${card.id}: lease until ${card.leaseUntil}`);
227
217
  }
228
- function cardBlock(hippoRoot, tenantId, args, flags) {
218
+ async function cardBlock(hippoRoot, tenantId, args, flags) {
229
219
  const id = args[1];
230
220
  const reason = stringFlagOrExit(flags, 'reason') ?? '';
231
221
  if (!id || !reason) {
232
- printError(CARD_BLOCK_REASON_REQUIRED);
233
- throw new CliExit(1);
222
+ fail(CARD_BLOCK_REASON_REQUIRED);
234
223
  }
235
224
  const runId = cardRunFlag(flags);
236
225
  let card;
237
226
  try {
238
- card = cardsApi.cardBlock(cliApiContext(hippoRoot, tenantId), id, reason, runId);
227
+ card = await cardsApi.cardBlock(cliApiContext(hippoRoot, tenantId), id, reason, runId);
239
228
  }
240
229
  catch (error) {
241
- printError(errorMessage(error));
242
- throw new CliExit(1);
230
+ fail(errorMessage(error));
243
231
  }
244
232
  if (!card) {
245
- const why = runId === undefined ? 'not running' : cardRefusal(hippoRoot, tenantId, id);
246
- printError(`Could not block card ${id} (${why}).`);
247
- throw new CliExit(1);
233
+ const why = runId === undefined ? 'not running' : await cardRefusal(hippoRoot, tenantId, id);
234
+ fail(`Could not block card ${id} (${why}).`);
248
235
  }
249
236
  console.log(`Blocked card ${card.id}`);
250
237
  }
251
- function cardReview(hippoRoot, tenantId, args, flags) {
238
+ async function cardReview(hippoRoot, tenantId, args, flags) {
252
239
  const id = args[1];
253
240
  if (!id) {
254
241
  throw usageError('review');
@@ -256,20 +243,18 @@ function cardReview(hippoRoot, tenantId, args, flags) {
256
243
  const runId = cardRunFlag(flags);
257
244
  let card;
258
245
  try {
259
- card = cardsApi.cardReview(cliApiContext(hippoRoot, tenantId), id, runId);
246
+ card = await cardsApi.cardReview(cliApiContext(hippoRoot, tenantId), id, runId);
260
247
  }
261
248
  catch (error) {
262
- printError(errorMessage(error));
263
- throw new CliExit(1);
249
+ fail(errorMessage(error));
264
250
  }
265
251
  if (!card) {
266
- const why = runId === undefined ? 'not running' : cardRefusal(hippoRoot, tenantId, id);
267
- printError(`Could not move card ${id} to review (${why}).`);
268
- throw new CliExit(1);
252
+ const why = runId === undefined ? 'not running' : await cardRefusal(hippoRoot, tenantId, id);
253
+ fail(`Could not move card ${id} to review (${why}).`);
269
254
  }
270
255
  console.log(`Card ${card.id} moved to review`);
271
256
  }
272
- function cardComplete(hippoRoot, tenantId, args, flags) {
257
+ async function cardComplete(hippoRoot, tenantId, args, flags) {
273
258
  const id = args[1];
274
259
  const outcomeRaw = flags['outcome'];
275
260
  if (!id || !isHandoffOutcome(outcomeRaw)) {
@@ -278,27 +263,25 @@ function cardComplete(hippoRoot, tenantId, args, flags) {
278
263
  const runId = cardRunFlag(flags);
279
264
  let result;
280
265
  try {
281
- result = cardsApi.cardComplete(cliApiContext(hippoRoot, tenantId), id, outcomeRaw, runId);
266
+ result = await cardsApi.cardComplete(cliApiContext(hippoRoot, tenantId), id, outcomeRaw, runId);
282
267
  }
283
268
  catch (error) {
284
- printError(errorMessage(error));
285
- throw new CliExit(1);
269
+ fail(errorMessage(error));
286
270
  }
287
271
  if (!result) {
288
- const why = runId === undefined ? 'not in review' : cardRefusal(hippoRoot, tenantId, id);
289
- printError(`Could not complete card ${id} (${why}).`);
290
- throw new CliExit(1);
272
+ const why = runId === undefined ? 'not in review' : await cardRefusal(hippoRoot, tenantId, id);
273
+ fail(`Could not complete card ${id} (${why}).`);
291
274
  }
292
275
  console.log(`Completed card ${result.card.id} (status: ${result.card.status})`);
293
276
  if (result.promotedChildren.length > 0) {
294
277
  console.log(`Promoted to ready: ${result.promotedChildren.join(', ')}`);
295
278
  }
296
279
  }
297
- function cardReclaim(hippoRoot, tenantId, args) {
280
+ async function cardReclaim(hippoRoot, tenantId, args) {
298
281
  if (args.length > 1) {
299
282
  throw usageError('reclaim');
300
283
  }
301
- const ids = cardsApi.cardReclaimExpired(cliApiContext(hippoRoot, tenantId));
284
+ const ids = await cardsApi.cardReclaimExpired(cliApiContext(hippoRoot, tenantId));
302
285
  if (ids.length === 0) {
303
286
  console.log('No expired leases.');
304
287
  return;
@@ -307,24 +290,24 @@ function cardReclaim(hippoRoot, tenantId, args) {
307
290
  console.log(`Reclaimed card ${id} (now ready)`);
308
291
  }
309
292
  }
310
- function cardComment(hippoRoot, tenantId, args, flags) {
293
+ async function cardComment(hippoRoot, tenantId, args, flags) {
311
294
  const id = args[1];
312
295
  if (!id) {
313
296
  throw usageError('comment');
314
297
  }
315
- // Only show and comment look the card up directly; claim/heartbeat/block/review/complete throw from the store instead.
298
+ // Only show and comment look the card up directly; claim/heartbeat/block/review/complete throw from the store
299
+ // instead.
316
300
  const ctx = cliApiContext(hippoRoot, tenantId);
317
- const card = cardsApi.cardLoad(ctx, id);
301
+ const card = await cardsApi.cardLoad(ctx, id);
318
302
  if (!card) {
319
- printError(`No card found with id ${id}.`);
320
- throw new CliExit(1);
303
+ fail(`No card found with id ${id}.`);
321
304
  }
322
305
  const body = stringFlagOrExit(flags, 'body') ?? '';
323
306
  if (!body) {
324
307
  throw usageError('comment');
325
308
  }
326
309
  const author = stringFlagOrExit(flags, 'author') || 'cli';
327
- const comment = cardsApi.cardComment(ctx, id, author, body);
310
+ const comment = await cardsApi.cardComment(ctx, id, author, body);
328
311
  console.log(`Added comment ${comment.id} to card ${id}`);
329
312
  }
330
313
  const CARD_HANDLERS = {
@@ -1,7 +1,13 @@
1
- /** HTTP client wrapper for `hippo serve`: only the routed writes (remember, forget, archive, promote); every other command opens the store directly.
2
- * Server errors rethrow with the message verbatim so CLI substring matches still work; network errors propagate as the native fetch failure. */
1
+ /**
2
+ * HTTP client wrapper for `hippo serve`: only the routed writes (remember, forget, archive, promote); every other
3
+ * command opens the store directly.
4
+ * Server errors rethrow with the message verbatim so CLI substring matches still work; network errors propagate as the
5
+ * native fetch failure.
6
+ */
3
7
  import type { RememberOpts, RememberResult } from '../api/index.js';
4
- /** An error the server answered with, not one the transport raised, so the transport classifier can skip it by class. */
8
+ /**
9
+ * An error the server answered with, not one the transport raised, so the transport classifier can skip it by class.
10
+ */
5
11
  export declare class HttpResponseError extends Error {
6
12
  readonly status: number;
7
13
  constructor(message: string, status: number);
@@ -25,7 +31,9 @@ export declare function archiveRaw(serverUrl: string, apiKey: string | undefined
25
31
  ok: true;
26
32
  archivedAt: string;
27
33
  }>;
28
- /** 'never-sent': connection never opened, safe to replay locally. 'delivery-unknown': the request was on the wire and may have
34
+ /**
35
+ * 'never-sent': connection never opened, safe to replay locally. 'delivery-unknown': the request was on the wire and
36
+ * may have
29
37
  * committed, so never replay a write. 'none': not a transport failure. */
30
38
  export type TransportFailure = 'none' | 'never-sent' | 'delivery-unknown';
31
39
  export declare function classifyTransportFailure(err: Error): TransportFailure;
@@ -1,23 +1,42 @@
1
- /** HTTP client wrapper for `hippo serve`: only the routed writes (remember, forget, archive, promote); every other command opens the store directly.
2
- * Server errors rethrow with the message verbatim so CLI substring matches still work; network errors propagate as the native fetch failure. */
1
+ /**
2
+ * HTTP client wrapper for `hippo serve`: only the routed writes (remember, forget, archive, promote); every other
3
+ * command opens the store directly.
4
+ * Server errors rethrow with the message verbatim so CLI substring matches still work; network errors propagate as the
5
+ * native fetch failure.
6
+ */
3
7
  import { fetchWithRetry } from '../util/http-retry.js';
4
8
  import { readCappedJson } from '../util/capped-json.js';
5
9
  import { isJsonObject, isJsonString } from '../util/json.js';
10
+ import { errorFields, errorMessage, log } from '../util/log.js';
6
11
  import { isObjectLike } from '../core/capture-contract.js';
7
12
  /** A write the local server has not answered in this long is stuck; the caller treats it as delivery-unknown. */
8
13
  const SERVER_TIMEOUT_MS = 30_000;
9
- /** Five tries at the server's 1 s Retry-After keeps the roughly 5 s wait the CLI had before the server answered busy with 503. */
14
+ /**
15
+ * Five tries at the server's 1 s Retry-After keeps the roughly 5 s wait the CLI had before the server answered busy
16
+ * with 503.
17
+ */
10
18
  const STORE_BUSY_ATTEMPTS = 5;
11
- /** Every routed write answers with a few short fields; the pidfile's port may now be another process, so cap what it sends. */
19
+ /**
20
+ * Every routed write answers with a few short fields; the pidfile's port may now be another process, so cap what it
21
+ * sends.
22
+ */
12
23
  const MAX_REPLY_BYTES = 1024 * 1024;
13
- /** The server sets Retry-After on a 503 only for a held write lock (server.ts replyFor); the auth-provider 503 has none. */
24
+ /**
25
+ * The server sets Retry-After on a 503 only for a held write lock (server.ts replyFor); the auth-provider 503 has none.
26
+ */
14
27
  function isStoreBusy(res) {
15
28
  return res.status === 503 && res.headers.has('retry-after');
16
29
  }
17
- /** Replaying is safe because each routed write commits in one transaction and anything after it is best-effort, so a busy 503 means
30
+ /**
31
+ * Replaying is safe because each routed write commits in one transaction and anything after it is best-effort, so a
32
+ * busy 503 means
18
33
  * nothing landed; a sleep is safe too, as a re-run finishes a partial one. */
19
34
  function sendWrite(url, init) {
20
- return fetchWithRetry(url, init, { timeoutMs: SERVER_TIMEOUT_MS, attempts: STORE_BUSY_ATTEMPTS, retryOn: isStoreBusy });
35
+ return fetchWithRetry(url, init, {
36
+ timeoutMs: SERVER_TIMEOUT_MS,
37
+ attempts: STORE_BUSY_ATTEMPTS,
38
+ retryOn: isStoreBusy,
39
+ });
21
40
  }
22
41
  function buildHeaders(apiKey, withBody) {
23
42
  const headers = {};
@@ -27,7 +46,9 @@ function buildHeaders(apiKey, withBody) {
27
46
  headers['authorization'] = `Bearer ${apiKey}`;
28
47
  return headers;
29
48
  }
30
- /** An error the server answered with, not one the transport raised, so the transport classifier can skip it by class. */
49
+ /**
50
+ * An error the server answered with, not one the transport raised, so the transport classifier can skip it by class.
51
+ */
31
52
  export class HttpResponseError extends Error {
32
53
  status;
33
54
  constructor(message, status) {
@@ -46,8 +67,9 @@ async function throwForStatus(res) {
46
67
  message = body.error;
47
68
  }
48
69
  }
49
- catch {
70
+ catch (err) {
50
71
  // body wasn't JSON or ran past the cap; fall back to status line.
72
+ log.debug(`server error body unreadable (${errorMessage(err)}); using the status line`, errorFields(err));
51
73
  }
52
74
  throw new HttpResponseError(message, res.status);
53
75
  }
@@ -60,11 +82,15 @@ export class MalformedReplyError extends Error {
60
82
  this.name = 'MalformedReplyError';
61
83
  }
62
84
  }
63
- /** A 2xx reply's body, read under the cap; it must be a JSON object, and `guard` narrows it further where the shape is known. */
85
+ /**
86
+ * A 2xx reply's body, read under the cap; it must be a JSON object, and `guard` narrows it further where the shape is
87
+ * known.
88
+ */
64
89
  async function readReply(res, route, guard) {
65
90
  const body = await readCappedJson(res, MAX_REPLY_BYTES);
66
- if (!isJsonObject(body))
91
+ if (!isJsonObject(body)) {
67
92
  throw new MalformedReplyError(route, body === null ? 'null' : Array.isArray(body) ? 'array' : 'a scalar');
93
+ }
68
94
  if (guard && !guard(body))
69
95
  throw new MalformedReplyError(route, 'unexpected fields');
70
96
  const reply = body;
@@ -109,7 +135,10 @@ export async function archiveRaw(serverUrl, apiKey, id, reason) {
109
135
  await throwForStatus(res);
110
136
  return readReply(res, 'POST /v1/memories/:id/archive', (b) => isJsonString(b.archivedAt));
111
137
  }
112
- /** The syscall code Node puts on a system error itself (`http` errors) or on the `cause` of a fetch `TypeError`; '' when there is none. */
138
+ /**
139
+ * The syscall code Node puts on a system error itself (`http` errors) or on the `cause` of a fetch `TypeError`; '' when
140
+ * there is none.
141
+ */
113
142
  function transportCode(err) {
114
143
  if ('code' in err)
115
144
  return String(err.code);
@@ -130,7 +159,8 @@ export function classifyTransportFailure(err) {
130
159
  if (code === 'ECONNRESET' || code === 'ECONNABORTED' || code === 'EPIPE' || code === 'UND_ERR_SOCKET') {
131
160
  return 'delivery-unknown';
132
161
  }
133
- // Fetch rejects every network failure as a TypeError, with a cause only when the syscall is known, so no code means the conservative answer.
162
+ // Fetch rejects every network failure as a TypeError, with a cause only when the syscall is known, so no code means
163
+ // the conservative answer.
134
164
  if (err instanceof TypeError)
135
165
  return 'delivery-unknown';
136
166
  // The request was sent and the server went quiet, so it may have committed.
@@ -3,6 +3,9 @@ export interface CompactResumePayload {
3
3
  payloadSessionId: string | null;
4
4
  boundary: boolean;
5
5
  }
6
- /** Fail-closed read of the SessionStart payload: only a manual run or a main-session `source: 'compact'` payload may print. */
6
+ /**
7
+ * Fail-closed read of the SessionStart payload: only a manual run or a main-session `source: 'compact'` payload may
8
+ * print.
9
+ */
7
10
  export declare function readCompactResumePayload(stdinText: string | undefined, stdinTimedOut: boolean): CompactResumePayload;
8
11
  //# sourceMappingURL=compact-resume-payload.d.ts.map
@@ -1,11 +1,16 @@
1
1
  // The payload gate for `hippo compact-resume`.
2
2
  import { isSubagentPayload } from '../util/hook-payload.js';
3
3
  import { isJsonObject, isJsonString } from '../util/json.js';
4
- /** Fail-closed read of the SessionStart payload: only a manual run or a main-session `source: 'compact'` payload may print. */
4
+ /**
5
+ * Fail-closed read of the SessionStart payload: only a manual run or a main-session `source: 'compact'` payload may
6
+ * print.
7
+ */
5
8
  export function readCompactResumePayload(stdinText, stdinTimedOut) {
6
- // An older Claude Code that ignores `matcher: 'compact'` runs this on every SessionStart, so a parsed payload with any other source stays silent.
9
+ // An older Claude Code that ignores `matcher: 'compact'` runs this on every SessionStart, so a parsed payload with
10
+ // any other source stays silent.
7
11
  const nonEmptyStdin = !!stdinText && stdinText.trim() !== '';
8
- // Without a payload session_id the cross-restore guard can never fire, so a timed-out empty read must not reach the print path.
12
+ // Without a payload session_id the cross-restore guard can never fire, so a timed-out empty read must not reach the
13
+ // print path.
9
14
  let suppressOutput = stdinTimedOut && !nonEmptyStdin;
10
15
  let payloadSessionId = null;
11
16
  // A boundary is a manual run or a payload that says it follows a compaction; anything else is not one.
@@ -24,8 +29,10 @@ export function readCompactResumePayload(stdinText, stdinTimedOut) {
24
29
  suppressOutput = true;
25
30
  }
26
31
  else {
27
- // Fail closed on structurally incomplete payloads too ({}, [], source missing/non-string): a real SessionStart payload always carries source.
28
- // A sub-agent's payload carries its parent's session id, so the mismatch guard would pass and restore the parent's snapshot into it.
32
+ // Fail closed on structurally incomplete payloads too ({}, [], source missing/non-string): a real SessionStart
33
+ // payload always carries source.
34
+ // A sub-agent's payload carries its parent's session id, so the mismatch guard would pass and restore the
35
+ // parent's snapshot into it.
29
36
  boundary = payload.source === 'compact';
30
37
  if (payload.source !== 'compact' || isSubagentPayload(stdinText)) {
31
38
  suppressOutput = true;