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
@@ -16,27 +16,28 @@ import { cmdPreCompact, cmdPostCompact } from '../capture/compact.js';
16
16
  import { transcriptWorkingState } from '../capture/working-state.js';
17
17
  import { collectHandoffEvidence } from '../capture/handoff-evidence.js';
18
18
  import { copilotTranscriptFor, SESSION_ID_RE } from '../capture/copilot-transcript.js';
19
- import { loadTurnPosition, runSessionWorker, saveTurnPosition, turnsAfter } from '../capture/session-worker.js';
20
- import { isStringValue, readSessionEnd, readVscodeStop } from '../core/capture-contract.js';
19
+ import { loadTurnPosition, runSessionWorker, saveTurnPosition, turnsAfter, } from '../capture/session-worker.js';
20
+ import { isStringValue, readSessionEnd, readVscodeStop, } from '../core/capture-contract.js';
21
21
  import { loadConfig } from '../core/config.js';
22
- import { autoSleepDue } from '../api/auto-sleep.js';
22
+ import { autoSleepDue } from '../api/sleep/auto-sleep.js';
23
23
  import { COMPACTION_DB_WAIT_MS } from '../core/compaction-timing.js';
24
24
  import { compactResumeBlock, sessionEndWork as runSessionEnd } from '../api/session-end.js';
25
25
  import { normaliseHookPayload, readHookStdin, readStdinBounded } from './stdin.js';
26
- import { errorMessage, log } from '../util/log.js';
26
+ import { errorMessage, log, errorFields } from '../util/log.js';
27
27
  import { cmdShimArgs } from '../util/spawn-argv.js';
28
28
  import { bookLedgerTurn } from '../api/ledger-db.js';
29
29
  import { flushDeliveryRecorder, startDeliveryRecorder, startToolFailureRecorder } from '../api/prompt-hook.js';
30
30
  import { printError } from './output.js';
31
31
  import { cmdLastSleep } from './last-sleep.js';
32
32
  import { readCompactResumePayload } from './compact-resume-payload.js';
33
- import { cliApiContext } from './api-context.js';
34
- import { boolFlag, flagIsTrue, stringFlag } from './flag-values.js';
33
+ import { cliApiContext, cliLedgerReach } from './api-context.js';
34
+ import { boolFlag, flagIsTrue, stringFlag, stringFlagOrExit, } from './flag-values.js';
35
35
  import { logSessionEndImport, appendSessionEndCloseLog, reportSessionEndFailure, resetHookInjection, hookStoreRoot, hookRuntime, payloadCwdRoot, runHookWithStores, inPilotHoldout, hostSessionId, } from './hook-runtime.js';
36
- import { CliExit } from './exit.js';
37
- /** SessionStart(compact) injector: prints the task snapshot and session trail lost to compaction; no pinned memories (UserPromptSubmit re-injects them).
38
- * Every path exits 0: a malformed payload or store read failure degrades to empty stdout, never a throw. */
39
- function cmdCompactResume(hippoRoot, tenantId, stdinText, stdinTimedOut) {
36
+ import { CliExit, fail } from './exit.js';
37
+ /** SessionStart(compact) injector: prints the task snapshot and session trail lost to compaction; no pinned memories
38
+ * (UserPromptSubmit re-injects them). Every path exits 0: a malformed payload or store read failure degrades to empty
39
+ * stdout, never a throw. */
40
+ async function cmdCompactResume(hippoRoot, tenantId, stdinText, stdinTimedOut) {
40
41
  let rec = null;
41
42
  try {
42
43
  // Gate on the non-exiting isInitialized check first: the store reads below call initStore, which would
@@ -53,25 +54,27 @@ function cmdCompactResume(hippoRoot, tenantId, stdinText, stdinTimedOut) {
53
54
  });
54
55
  }
55
56
  // A compaction follows a prompt or SessionStart that booked the arm, so this only reads it.
56
- if (!suppressOutput && payloadSessionId !== null && inPilotHoldout(hippoRoot, tenantId, payloadSessionId, { write: false })) {
57
+ if (!suppressOutput && payloadSessionId !== null &&
58
+ inPilotHoldout(hippoRoot, tenantId, payloadSessionId, { write: false })) {
57
59
  suppressOutput = true;
58
60
  rec?.disabled();
59
61
  }
60
62
  if (!suppressOutput)
61
- restoreCompactSnapshot(hippoRoot, tenantId, payloadSessionId, rec);
63
+ await restoreCompactSnapshot(hippoRoot, tenantId, payloadSessionId, rec);
62
64
  }
63
65
  catch (err) {
64
66
  if (err instanceof CliExit)
65
67
  throw err;
66
- // Empty stdout on any store error, never a crashed SessionStart; the reason goes to stderr, which the model never sees.
67
- log.warn(`hippo compact-resume: skipped: ${errorMessage(err)}`);
68
+ // Empty stdout on any store error, never a crashed SessionStart; the reason goes to stderr, which the model never
69
+ // sees.
70
+ log.warn(`hippo compact-resume: skipped: ${errorMessage(err)}`, errorFields(err));
68
71
  }
69
72
  // A no-op when the token ledger's handle already wrote the row; exit would drop it otherwise.
70
73
  flushDeliveryRecorder(rec);
71
74
  throw new CliExit(0);
72
75
  }
73
- function restoreCompactSnapshot(hippoRoot, tenantId, payloadSessionId, rec) {
74
- const text = compactResumeBlock(cliApiContext(hippoRoot, tenantId), payloadSessionId);
76
+ async function restoreCompactSnapshot(hippoRoot, tenantId, payloadSessionId, rec) {
77
+ const text = await compactResumeBlock(cliApiContext(hippoRoot, tenantId), payloadSessionId);
75
78
  if (text === null)
76
79
  return;
77
80
  // Printed in one write so the ledger books exactly the text the model is handed.
@@ -79,21 +82,29 @@ function restoreCompactSnapshot(hippoRoot, tenantId, payloadSessionId, rec) {
79
82
  rec?.delivered({ state: 'sent', emittedText: `${text}\n` });
80
83
  bookLedgerTurn(hippoRoot, {
81
84
  uses: [{
82
- tenantId, sessionId: payloadSessionId, surface: 'compact_resume', event: 'inject', items: 1, tokens: estimateTokens(text),
85
+ tenantId,
86
+ sessionId: payloadSessionId,
87
+ surface: 'compact_resume',
88
+ event: 'inject',
89
+ items: 1,
90
+ tokens: estimateTokens(text),
83
91
  }],
84
92
  delivery: (write) => flushDeliveryRecorder(rec, write),
85
- });
93
+ }, cliLedgerReach(hippoRoot));
86
94
  }
87
- /** SessionEnd entry: TUI teardown kills children still running, so read stdin inline, spawn a detached child that runs sleep then capture, and exit.
88
- * The child logs to a file that the next SessionStart reads via `hippo last-sleep`. */
95
+ /** SessionEnd entry: TUI teardown kills children still running, so read stdin inline, spawn a detached child that runs
96
+ * sleep then capture, and exit. The child logs to a file that the next SessionStart reads via `hippo last-sleep`. */
89
97
  export async function handleSessionEnd({ hippoRoot, tenantId, flags }) {
90
98
  const runtime = hookRuntime(flags);
91
99
  const turn = flagIsTrue(flags, 'turn');
92
- // Copilot's hook command carries no path, since one quoted into it would need escaping for each shell; the log goes where the hook table used to point.
93
- const logFile = stringFlag(flags, 'log-file') ?? (runtime === 'copilot' ? resolveJsonHookPaths('copilot').logFile : null);
100
+ // Copilot's hook command carries no path, since one quoted into it would need escaping for each shell; the log goes
101
+ // where the hook table used to point.
102
+ const logFile = stringFlag(flags, 'log-file') ??
103
+ (runtime === 'copilot' ? resolveJsonHookPaths('copilot').logFile : null);
94
104
  // Bounded read: extracts transcript_path + session_id for the detached worker's argv.
95
105
  const raw = await readStdinBounded();
96
- // Read before normalising: the Copilot CLI's agentStop shares this hook line, and camelCase keys would pass as VS Code's.
106
+ // Read before normalising: the Copilot CLI's agentStop shares this hook line, and camelCase keys would pass as VS
107
+ // Code's.
97
108
  const stop = turn ? vscodeStopInput(raw) : null;
98
109
  if (turn && !stop)
99
110
  return;
@@ -103,11 +114,12 @@ export async function handleSessionEnd({ hippoRoot, tenantId, flags }) {
103
114
  const input = stop ?? sessionEndInput(stdinText, raw.timedOut, runtime);
104
115
  // Only a host payload ends a session: a manual run and a reply's end (turn mode) are not boundaries.
105
116
  const rec = !turn && input !== null && !input.manual
106
- ? startDeliveryRecorder(cliApiContext(hookStoreRoot(root), tenantId), { stdinText, runtime, eventType: 'session-end', envSessionId: hostSessionId() })
117
+ ? startSessionEndRecorder(root, tenantId, stdinText, runtime)
107
118
  : null;
108
119
  const sessionId = input?.sessionId ?? null;
109
- // Resolved here because only this process saw the payload; the worker captures just the path it is handed.
110
- // Always a hook, so never scan: an empty stdin here is not a manual run. The Copilot CLI's sessionEnd names no transcript, so its log is found by id.
120
+ // Resolved here because only this process saw the payload; the worker captures just the path it is handed. Always a
121
+ // hook, so never scan: an empty stdin here is not a manual run. The Copilot CLI's sessionEnd names no transcript, so
122
+ // its log is found by id.
111
123
  const named = input?.transcriptPath ?? null;
112
124
  const transcriptPath = (named !== null && fs.existsSync(named) ? named : null)
113
125
  ?? (runtime === 'copilot' && sessionId ? copilotTranscriptFor(sessionId) : null);
@@ -116,7 +128,7 @@ export async function handleSessionEnd({ hippoRoot, tenantId, flags }) {
116
128
  spawnSessionEndWorker(sessionEndWorkerArgs(worker));
117
129
  }
118
130
  catch (err) {
119
- log.debug(`session-end: the worker did not spawn, running inline: ${errorMessage(err)}`);
131
+ log.debug(`session-end: the worker did not spawn, running inline: ${errorMessage(err)}`, errorFields(err));
120
132
  // Inline is the last resort, handed what the child's argv would have carried.
121
133
  try {
122
134
  await cmdSessionEndWorker(root, tenantId, inlineWorkerFlags(flags, worker));
@@ -129,7 +141,16 @@ export async function handleSessionEnd({ hippoRoot, tenantId, flags }) {
129
141
  // After the spawn, so a locked store delays only the row; the hook's short lock wait bounds it.
130
142
  await runHookWithStores(() => flushDeliveryRecorder(rec));
131
143
  }
132
- /** What the session-end payload named; null for one hippo refuses or one that never arrived, and the worker then runs with neither value. */
144
+ function startSessionEndRecorder(root, tenantId, stdinText, runtime) {
145
+ return startDeliveryRecorder(cliApiContext(hookStoreRoot(root), tenantId), {
146
+ stdinText,
147
+ runtime,
148
+ eventType: 'session-end',
149
+ envSessionId: hostSessionId(),
150
+ });
151
+ }
152
+ /** What the session-end payload named; null for one hippo refuses or one that never arrived, and the worker then runs
153
+ * with neither value. */
133
154
  function sessionEndInput(stdinText, timedOut, runtime) {
134
155
  const receipt = readSessionEnd(stdinText, timedOut, runtime);
135
156
  if (receipt.status === 'received')
@@ -150,7 +171,8 @@ function sessionEndWorkerArgs(o) {
150
171
  workerArgs.push('--turn');
151
172
  return workerArgs;
152
173
  }
153
- /** The flags the detached worker would parse from its argv, so the inline run sees what the child would have; the hook's own flags fill the gaps. */
174
+ /** The flags the detached worker would parse from its argv, so the inline run sees what the child would have; the
175
+ * hook's own flags fill the gaps. */
154
176
  function inlineWorkerFlags(flags, w) {
155
177
  const out = {};
156
178
  const keep = (name, value) => {
@@ -180,10 +202,12 @@ function spawnSessionEndWorker(workerArgs) {
180
202
  child.on('error', (err) => log.warn(`hippo session-end: the worker did not start: ${errorMessage(err)}`));
181
203
  child.unref();
182
204
  }
183
- /** The input of a VS Code Stop payload with a session id that can name the lock file; null makes turn mode a silent no-op. */
205
+ /** The input of a VS Code Stop payload with a session id that can name the lock file; null makes turn mode a silent
206
+ * no-op. */
184
207
  function vscodeStopInput(raw) {
185
208
  const receipt = readVscodeStop(raw.text, raw.timedOut);
186
- return receipt.status === 'received' && receipt.input.sessionId !== null && SESSION_ID_RE.test(receipt.input.sessionId) ? receipt.input : null;
209
+ return receipt.status === 'received' && receipt.input.sessionId !== null &&
210
+ SESSION_ID_RE.test(receipt.input.sessionId) ? receipt.input : null;
187
211
  }
188
212
  async function cmdSessionEndWorker(hippoRoot, tenantId, flags) {
189
213
  const sessionId = flags['session-id'];
@@ -203,7 +227,10 @@ function sessionEndWork(hippoRoot, tenantId, flags, mode) {
203
227
  sessionId,
204
228
  transcriptPath,
205
229
  contextFor: (root) => cliApiContext(root, tenantId),
206
- storeRoot: () => hookStoreRoot(hippoRoot),
230
+ storeRoot: () => {
231
+ const root = hookStoreRoot(hippoRoot);
232
+ return isInitialized(root) ? root : null;
233
+ },
207
234
  log: (line, opts) => appendSessionEndCloseLog(logFile, line, opts),
208
235
  sleep: () => (mode === 'turn' && sessionId
209
236
  ? sleepIfDue(hippoRoot, tenantId, flags, logFile, transcriptPath, sessionId)
@@ -211,8 +238,9 @@ function sessionEndWork(hippoRoot, tenantId, flags, mode) {
211
238
  readScan: (log) => (transcriptPath ? readSessionScan(transcriptPath, log) : null),
212
239
  capture: (store, scan) => {
213
240
  const capture = (turns) => captureEndedSession(hippoRoot, tenantId, store, flags, transcriptPath, turns);
214
- if (mode === 'turn')
241
+ if (mode === 'turn') {
215
242
  captureNewTurns(transcriptPath, sessionId, scan, capture, (line) => appendSessionEndCloseLog(logFile, line));
243
+ }
216
244
  else
217
245
  capture(scan?.turns);
218
246
  },
@@ -241,7 +269,8 @@ async function sleepProjectStore(hippoRoot, tenantId, flags, closeLogFile, trans
241
269
  logSessionEndImport(closeLogFile, transcriptPath);
242
270
  }
243
271
  }
244
- /** A close after every reply sleeps only at the MCP server's auto-sleep threshold; each line starts the log afresh, as a sleep does. */
272
+ /** A close after every reply sleeps only at the MCP server's auto-sleep threshold; each line starts the log afresh, as
273
+ * a sleep does. */
245
274
  async function sleepIfDue(hippoRoot, tenantId, flags, closeLogFile, transcriptPath, sessionId) {
246
275
  if (!isInitialized(hippoRoot))
247
276
  return sleepProjectStore(hippoRoot, tenantId, flags, closeLogFile, transcriptPath);
@@ -329,7 +358,7 @@ export function handleCodexRun({ hippoRoot, tenantId, args }) {
329
358
  cmdLastSleep(hippoRoot, { path: metadata.logFile }, 'terminal');
330
359
  }
331
360
  catch (err) {
332
- log.debug(`codex run: the last sleep summary was not shown: ${errorMessage(err)}`);
361
+ log.debug(`codex run: the last sleep summary was not shown: ${errorMessage(err)}`, errorFields(err));
333
362
  }
334
363
  const child = spawnRealCodex(metadata.realCodexPath, args, process.cwd());
335
364
  child.on('error', (err) => {
@@ -369,10 +398,11 @@ async function launchCodexSessionEndWorker(hippoRoot, tenantId, historyPath, sta
369
398
  });
370
399
  }
371
400
  catch (inlineErr) {
372
- log.debug(`codex run: the inline session-end failed: ${errorMessage(inlineErr)}`);
401
+ log.debug(`codex run: the inline session-end failed: ${errorMessage(inlineErr)}`, errorFields(inlineErr));
373
402
  }
374
403
  }
375
- /** Resolves true once the detached worker is running, false when the spawn fails, whether it throws or reports later. */
404
+ /** Resolves true once the detached worker is running, false when the spawn fails, whether it throws or reports
405
+ * later. */
376
406
  function detachedWorkerStarted(workerArgs) {
377
407
  return new Promise((resolve) => {
378
408
  const failed = (reason) => {
@@ -437,8 +467,8 @@ function captureCodexTranscript(hippoRoot, tenantId, store, flags, logFile) {
437
467
  try {
438
468
  const codexHome = stringFlag(flags, 'codex-home') ?? resolveCodexWrapperPaths().codexHome;
439
469
  const historyPath = stringFlag(flags, 'history-path') ?? path.join(codexHome, 'history.jsonl');
440
- const startOffsetBytes = parseInt(String(flags['start-offset'] ?? '0'), 10) || 0;
441
- const startedAtMs = parseInt(String(flags['started-at'] ?? Date.now()), 10) || Date.now();
470
+ const startOffsetBytes = parseInt(stringFlag(flags, 'start-offset') ?? '', 10) || 0;
471
+ const startedAtMs = parseInt(stringFlag(flags, 'started-at') ?? '', 10) || Date.now();
442
472
  const transcriptPath = resolveCodexSessionTranscript({
443
473
  codexHome,
444
474
  historyPath,
@@ -499,8 +529,8 @@ export async function handlePreCompact({ hippoRoot, tenantId, flags }) {
499
529
  });
500
530
  }
501
531
  export async function handlePostCompact({ hippoRoot, flags }) {
502
- // PostCompact hook: saves the compaction summary and its memories, then prints one plain line, because Claude Code shows this hook's
503
- // stdout as-is. Always exits 0.
532
+ // PostCompact hook: saves the compaction summary and its memories, then prints one plain line, because Claude Code
533
+ // shows this hook's stdout as-is. Always exits 0.
504
534
  const { text, timedOut } = await readHookStdin();
505
535
  const logFlag = flags['log-file'];
506
536
  const store = hookStoreRoot(hippoRoot);
@@ -510,7 +540,10 @@ export async function handlePostCompact({ hippoRoot, flags }) {
510
540
  logFile: logFlag === true || logFlag === false || Array.isArray(logFlag) ? undefined : logFlag,
511
541
  // Passed in, since src/capture/ importing the sync would close an import cycle.
512
542
  afterSave: (transcriptPath, cwd, log) => {
513
- const report = importSessionFolder(store, transcriptPath, cwd, { machine: currentMachine(), busyWaitMs: COMPACTION_DB_WAIT_MS });
543
+ const report = importSessionFolder(store, transcriptPath, cwd, {
544
+ machine: currentMachine(),
545
+ busyWaitMs: COMPACTION_DB_WAIT_MS,
546
+ });
514
547
  const summary = summaryLine(report);
515
548
  if (summary !== null)
516
549
  log(summary);
@@ -531,7 +564,11 @@ export async function handleCaptureError({ hippoRoot, tenantId, flags }) {
531
564
  if (isInitialized(root) && payload) {
532
565
  // SAFETY: JSON.parse returns a JSON value by definition.
533
566
  const failure = JSON.parse(payload);
534
- const rec = startToolFailureRecorder(cliApiContext(root, tenantId), { stdinText: text, runtime: hookRuntime(flags), envSessionId: hostSessionId() });
567
+ const rec = startToolFailureRecorder(cliApiContext(root, tenantId), {
568
+ stdinText: text,
569
+ runtime: hookRuntime(flags),
570
+ envSessionId: hostSessionId(),
571
+ });
535
572
  await runHookWithStores(() => {
536
573
  try {
537
574
  return captureToolFailure(root, tenantId, failure, (id) => rec?.logged(id));
@@ -544,14 +581,14 @@ export async function handleCaptureError({ hippoRoot, tenantId, flags }) {
544
581
  }
545
582
  catch (err) {
546
583
  // A malformed payload or store error must never fail the agent's tool call, so it is reported and dropped.
547
- log.warn(`failure capture skipped: ${errorMessage(err)}`);
584
+ log.warn(`failure capture skipped: ${errorMessage(err)}`, errorFields(err));
548
585
  }
549
586
  }
550
587
  export async function handleCompactResume({ hippoRoot, tenantId }) {
551
588
  const { text: stdinText, timedOut: stdinTimedOut } = await readHookStdin();
552
- await runHookWithStores(() => {
589
+ await runHookWithStores(async () => {
553
590
  resetHookInjection(hippoRoot, tenantId, stdinText, 'compact');
554
- cmdCompactResume(hookStoreRoot(hippoRoot), tenantId, stdinText, stdinTimedOut);
591
+ await cmdCompactResume(hookStoreRoot(hippoRoot), tenantId, stdinText, stdinTimedOut);
555
592
  });
556
593
  }
557
594
  export async function handleCapture({ hippoRoot, tenantId, flags }) {
@@ -563,19 +600,19 @@ export async function handleCapture({ hippoRoot, tenantId, flags }) {
563
600
  }
564
601
  else if (flags['file']) {
565
602
  captureSource = 'file';
566
- captureFile = String(flags['file']);
603
+ captureFile = stringFlagOrExit(flags, 'file');
567
604
  }
568
605
  else if (flags['last-session']) {
569
606
  captureSource = 'last-session';
570
607
  }
571
608
  if (flags['transcript']) {
572
- transcriptPath = String(flags['transcript']);
609
+ transcriptPath = stringFlagOrExit(flags, 'transcript');
573
610
  if (!captureSource)
574
611
  captureSource = 'last-session';
575
612
  }
576
613
  if (!captureSource) {
577
- printError('Usage: hippo capture --stdin|--file <path>|--last-session [--transcript <path>] [--log-file <path>] [--dry-run] [--global]');
578
- throw new CliExit(1);
614
+ fail('Usage: hippo capture --stdin|--file <path>|--last-session [--transcript <path>] [--log-file <path>] ' +
615
+ '[--dry-run] [--global]');
579
616
  }
580
617
  // Bounded, and only when last-session has no explicit path: the
581
618
  // --stdin source keeps its own blocking read in src/capture/ by design.
package/dist/cli/setup.js CHANGED
@@ -3,7 +3,7 @@ import { MINUTE_MS } from '../util/time.js';
3
3
  import * as path from 'path';
4
4
  import * as fs from 'fs';
5
5
  import { execFileSync } from 'child_process';
6
- import { installJsonHooks, uninstallJsonHooks, checkUninstallable, copilotHookEvents, resolveJsonHookPaths } from '../hooks/json-hooks.js';
6
+ import { installJsonHooks, uninstallJsonHooks, checkUninstallable, copilotHookEvents, resolveJsonHookPaths, } from '../hooks/json-hooks.js';
7
7
  import { detectInstalledTools } from '../hooks/shared.js';
8
8
  import { ensureCodexWrapperInstalled, installCodexWrapper, detectRealCodexPath, uninstallCodexWrapper, } from '../hooks/codex-wrapper.js';
9
9
  import { installOpencodePlugin, uninstallOpencodePlugin, resolveOpencodePluginPath } from '../hooks/opencode.js';
@@ -23,7 +23,7 @@ import { installCodexMemoryHooks, setupDailySchedule, warnClaudeSettingsUnusable
23
23
  import { repairQualityOnceAt } from './quality-repair-once.js';
24
24
  import { HOOK_MARKERS, HOOKS, hippoBlock, withoutHookBlock } from '../hooks/hook-blocks.js';
25
25
  import { escapeRegex } from '../util/escape.js';
26
- import { CliExit } from './exit.js';
26
+ import { fail } from './exit.js';
27
27
  // Hook install/uninstall
28
28
  export function handleHook({ args }) {
29
29
  const subcommand = args[0];
@@ -34,8 +34,7 @@ export function handleHook({ args }) {
34
34
  return hookInstall(target);
35
35
  if (subcommand === 'uninstall')
36
36
  return hookUninstall(target);
37
- printError('Usage: hippo hook <install|uninstall|list> [target]');
38
- throw new CliExit(1);
37
+ fail('Usage: hippo hook <install|uninstall|list> [target]');
39
38
  }
40
39
  // Cursor has no init row, so the AGENTS.md block is usually another agent's, and Cursor reads that one as it is.
41
40
  function othersBlock(target, text) {
@@ -46,7 +45,8 @@ function hookList() {
46
45
  for (const [name, hook] of Object.entries(HOOKS)) {
47
46
  console.log(` ${name.padEnd(15)} -> ${hook.file} (${hook.description})`);
48
47
  }
49
- console.log(` ${'copilot'.padEnd(15)} -> $COPILOT_HOME or ~/.copilot, and each VS Code User folder (GitHub Copilot: hooks, MCP server and instructions)`);
48
+ console.log(` ${'copilot'.padEnd(15)} -> $COPILOT_HOME or ~/.copilot, and each VS Code User folder ` +
49
+ '(GitHub Copilot: hooks, MCP server and instructions)');
50
50
  console.log('\nUsage: hippo hook install <name>');
51
51
  console.log(' hippo hook uninstall <name>');
52
52
  }
@@ -56,8 +56,7 @@ function hookInstall(target) {
56
56
  return printCopilotInstall(installCopilot(), '');
57
57
  if (!target || !HOOKS[target]) {
58
58
  printError(`Unknown hook target: ${target ?? '(none)'}`);
59
- printError(` Available: ${[...Object.keys(HOOKS), 'copilot'].join(', ')}`);
60
- throw new CliExit(1);
59
+ fail(` Available: ${[...Object.keys(HOOKS), 'copilot'].join(', ')}`);
61
60
  }
62
61
  const hook = HOOKS[target];
63
62
  patchAgentFile(hook, target);
@@ -103,8 +102,8 @@ function patchAgentFile(hook, target) {
103
102
  }
104
103
  }
105
104
  else {
106
- // Do not create an agent-instructions file (CLAUDE.md, AGENTS.md, etc.) in directories without one, to avoid polluting cwd;
107
- // the settings.json hook below is still installed for claude-code.
105
+ // Do not create an agent-instructions file (CLAUDE.md, AGENTS.md, etc.) in directories without one, to avoid
106
+ // polluting cwd; the settings.json hook below is still installed for claude-code.
108
107
  console.log(`${hook.file} not found in ${process.cwd()} — skipping agent-instructions patch.`);
109
108
  console.log(` Create ${hook.file} and re-run \`hippo hook install ${target}\` if you want the agent prompt.`);
110
109
  }
@@ -155,7 +154,8 @@ function installOpencodeHook() {
155
154
  console.log(`Removed legacy Claude Code-style hooks block from opencode.json — opencode can now launch`);
156
155
  }
157
156
  if (result.jsonRepairFailed) {
158
- console.log(`WARNING: opencode.json is unparseable; legacy hooks block could not be auto-removed. Fix the file manually.`);
157
+ console.log(`WARNING: opencode.json is unparseable; legacy hooks block could not be auto-removed. ` +
158
+ `Fix the file manually.`);
159
159
  }
160
160
  }
161
161
  const addByHand = (host) => `add this under "${host.key}" by hand: ${copilotMcpSnippet(host)}`;
@@ -163,20 +163,24 @@ const MCP_MERGE_LINES = {
163
163
  added: (file) => `Added the "hippo" MCP server -> ${file}`,
164
164
  present: (file) => `The "hippo" MCP server is already in ${file}`,
165
165
  'user-owned': (file) => `Left the "hippo" MCP server in ${file} as it is: hippo did not write it`,
166
- unreadable: (file, host) => `WARNING: ${file} has comments or is not a JSON object hippo can merge into, so it was left unchanged; ${addByHand(host)}`,
166
+ unreadable: (file, host) => `WARNING: ${file} has comments or is not a JSON object hippo can merge into, so it was left unchanged; ` +
167
+ addByHand(host),
167
168
  };
168
169
  const mcpFailureLine = (file, failure, fix) => `WARNING: hippo could not use ${file} (${failure.failed}), so it was left unchanged; ${fix}`;
169
- const unclosedLine = (file) => `WARNING: ${file} has ${HOOK_MARKERS.start} with no ${HOOK_MARKERS.end}, so hippo left it unchanged; fix the markers by hand`;
170
+ const unclosedLine = (file) => `WARNING: ${file} has ${HOOK_MARKERS.start} with no ${HOOK_MARKERS.end}, so hippo left it unchanged; ` +
171
+ 'fix the markers by hand';
170
172
  const INSTRUCTIONS_INSTALL_LINES = {
171
173
  written: (file) => `Wrote the hippo block -> ${file}`,
172
174
  present: (file) => `The hippo block is already in ${file}`,
173
- kept: (file) => `Kept the hippo block in ${file} as it is: it is not the Copilot text hippo wrote, so it was edited or is another agent's`,
175
+ kept: (file) => `Kept the hippo block in ${file} as it is: it is not the Copilot text hippo wrote, ` +
176
+ `so it was edited or is another agent's`,
174
177
  unclosed: unclosedLine,
175
178
  };
176
179
  const INSTRUCTIONS_REMOVE_LINES = {
177
180
  removed: (file) => `Removed the hippo block from ${file}`,
178
181
  absent: () => '',
179
- kept: (file) => `Left the hippo block in ${file}: it is not the Copilot text hippo wrote. Delete it by hand if no agent needs it.`,
182
+ kept: (file) => `Left the hippo block in ${file}: it is not the Copilot text hippo wrote. ` +
183
+ 'Delete it by hand if no agent needs it.',
180
184
  unclosed: unclosedLine,
181
185
  };
182
186
  const VSCODE_INSTRUCTIONS_INSTALL_LINES = {
@@ -189,8 +193,8 @@ const VSCODE_INSTRUCTIONS_REMOVE_LINES = {
189
193
  absent: () => '',
190
194
  kept: (file) => `Left ${file}: it is not the text hippo wrote. Delete it by hand if no agent needs it.`,
191
195
  };
192
- const VSCODE_HOOKS_LINE = 'VS Code: hooks need VS Code 1.109.3 or later with chat.useHooks on (the default); older versions get the MCP server and the ' +
193
- 'instructions file only.';
196
+ const VSCODE_HOOKS_LINE = 'VS Code: hooks need VS Code 1.109.3 or later with chat.useHooks on (the default); ' +
197
+ 'older versions get the MCP server and the instructions file only.';
194
198
  function mcpInstallLine(file, mcp, host) {
195
199
  return isMcpFailure(mcp) ? mcpFailureLine(file, mcp, addByHand(host)) : MCP_MERGE_LINES[mcp](file, host);
196
200
  }
@@ -201,12 +205,15 @@ function printVscodeInstall(result, indent) {
201
205
  if (paths.profiles.length > 0) {
202
206
  const names = paths.profiles.map((dir) => path.basename(dir)).join(', ');
203
207
  console.log(`${indent}Found VS Code profiles (${names}) under ${path.join(paths.userDir, 'profiles')}: ` +
204
- 'hippo set up the default profile only; copy the "hippo" server and prompts/hippo.instructions.md into a profile to use hippo there.');
208
+ 'hippo set up the default profile only; copy the "hippo" server and prompts/hippo.instructions.md ' +
209
+ 'into a profile to use hippo there.');
205
210
  }
206
211
  }
207
212
  function printCopilotInstall(result, indent) {
208
213
  const { paths } = result;
209
- const hooks = result.hooks ? `Installed hippo's Copilot hooks (${copilotHookEvents().join(', ')}) ->` : "hippo's Copilot hooks are already in";
214
+ const hooks = result.hooks
215
+ ? `Installed hippo's Copilot hooks (${copilotHookEvents().join(', ')}) ->`
216
+ : "hippo's Copilot hooks are already in";
210
217
  console.log(`${indent}${hooks} ${paths.hooks}`);
211
218
  if (result.mcp === null || result.instructions === null) {
212
219
  console.log(`${indent}No Copilot CLI files in ${path.dirname(paths.mcpConfig)}, ` +
@@ -257,8 +264,7 @@ function hookUninstall(target) {
257
264
  if (target === 'copilot')
258
265
  return printCopilotUninstall(uninstallCopilot());
259
266
  if (!target || !HOOKS[target]) {
260
- printError(`Unknown hook target: ${target ?? '(none)'}`);
261
- throw new CliExit(1);
267
+ fail(`Unknown hook target: ${target ?? '(none)'}`);
262
268
  }
263
269
  unpatchAgentFile(HOOKS[target], target);
264
270
  // For Claude Code, also strip its SessionEnd/SessionStart entries.
@@ -271,7 +277,8 @@ function hookUninstall(target) {
271
277
  }
272
278
  }
273
279
  else if (target === 'opencode') {
274
- // opencode uses a TS plugin; uninstall removes the plugin file and also runs the legacy-hooks migration, so remove leaves opencode launchable.
280
+ // opencode uses a TS plugin; uninstall removes the plugin file and also runs the legacy-hooks migration, so remove
281
+ // leaves opencode launchable.
275
282
  if (uninstallOpencodePlugin()) {
276
283
  console.log(`Removed hippo opencode plugin (and any legacy hooks block from opencode.json)`);
277
284
  }
@@ -318,7 +325,9 @@ function removeLegacyCursorRules() {
318
325
  writeFileAtomic(legacy, left + '\n');
319
326
  else
320
327
  fs.unlinkSync(legacy);
321
- console.log(left ? 'Removed the old Hippo hook from .cursorrules' : 'Deleted .cursorrules, which held only the old Hippo hook');
328
+ console.log(left
329
+ ? 'Removed the old Hippo hook from .cursorrules'
330
+ : 'Deleted .cursorrules, which held only the old Hippo hook');
322
331
  }
323
332
  }
324
333
  function setupDetectedTools(tools, forceAll, dryRun) {
@@ -383,15 +392,19 @@ function setupCopilot(dryRun) {
383
392
  if (!dryRun)
384
393
  return printCopilotInstall(installCopilot(), indent);
385
394
  const { hooks, mcpConfig, instructions, vscode } = copilotPaths();
386
- const cliFiles = isCopilotCliPresent() ? `, the MCP server in ${mcpConfig} and the hippo block in ${instructions}` : '';
395
+ const cliFiles = isCopilotCliPresent()
396
+ ? `, the MCP server in ${mcpConfig} and the hippo block in ${instructions}`
397
+ : '';
387
398
  console.log(`[dry-run] would install hooks in ${hooks}${cliFiles}`);
388
- for (const dir of vscode)
399
+ for (const dir of vscode) {
389
400
  console.log(`[dry-run] would add the MCP server to ${dir.mcpConfig} and write ${dir.instructions}`);
401
+ }
390
402
  }
391
403
  function setupJsonTool(tool, dryRun) {
392
404
  if (tool.name === 'copilot')
393
405
  return setupCopilot(dryRun);
394
- // SAFETY: detectInstalledTools gives kind 'json-hook' only to claude-code and copilot (hooks/shared.ts), and copilot returned above.
406
+ // SAFETY: detectInstalledTools gives kind 'json-hook' only to claude-code and copilot (hooks/shared.ts), and copilot
407
+ // returned above.
395
408
  const target = tool.name;
396
409
  if (dryRun) {
397
410
  // Resolve the real settings path so the filename is right for each tool
@@ -433,8 +446,9 @@ function setupJsonTool(tool, dryRun) {
433
446
  }
434
447
  function setupWrapperTool(tool, dryRun) {
435
448
  if (dryRun) {
436
- if (tool.name === 'codex')
449
+ if (tool.name === 'codex') {
437
450
  console.log(`[dry-run] would install Codex memory hooks in ${resolveJsonHookPaths('codex').settings}`);
451
+ }
438
452
  console.log(`[dry-run] would wrap the detected ${tool.name} launcher in place`);
439
453
  return;
440
454
  }
@@ -478,12 +492,15 @@ function setupPluginTool(tool, dryRun) {
478
492
  console.log(` ${tool.name.padEnd(14)} ${bits.join(', ')} -> ${result.pluginPath}`);
479
493
  }
480
494
  }
481
- // Three times the 10 minutes POST /v1/sleep allows a consolidation, so a slow real sleep fits and a hung child cannot stall every later workspace.
495
+ // Three times the 10 minutes POST /v1/sleep allows a consolidation, so a slow real sleep fits and a hung child cannot
496
+ // stall every later workspace.
482
497
  const DAILY_STEP_TIMEOUT_MS = 30 * MINUTE_MS;
483
- /** Why a child step failed; a child killed at the deadline says so, since its own message is only the spawn error code. */
498
+ /** Why a child step failed; a child killed at the deadline says so, since its own message is only the spawn error
499
+ * code. */
484
500
  function dailyStepFailure(err, timeoutMs) {
485
- if (err instanceof Error && 'code' in err && err.code === 'ETIMEDOUT')
501
+ if (err instanceof Error && 'code' in err && err.code === 'ETIMEDOUT') {
486
502
  return `timed out after ${timeoutMs} ms and was stopped`;
503
+ }
487
504
  return errorMessage(err);
488
505
  }
489
506
  export async function handleDailyRunner({ tenantId }) {
@@ -491,8 +508,9 @@ export async function handleDailyRunner({ tenantId }) {
491
508
  // No workspace sleep ever opens the global store, yet hooks in folders without a store compact into it.
492
509
  if (isInitialized(globalRoot)) {
493
510
  const finished = replayCompactionsAt(globalRoot, (message) => log.warn(`compaction replay: ${message}`));
494
- if (finished > 0)
511
+ if (finished > 0) {
495
512
  console.log(`Finished saving ${finished} compaction${finished === 1 ? '' : 's'} left over in the global store.`);
513
+ }
496
514
  await repairQualityOnceAt(globalRoot, tenantId);
497
515
  }
498
516
  printAgentImport(importUserMemories(globalRoot, { machine: currentMachine() }), '');
@@ -501,7 +519,8 @@ export async function handleDailyRunner({ tenantId }) {
501
519
  console.log('No registered Hippo workspaces found. Run `hippo init` inside a project first.');
502
520
  return;
503
521
  }
504
- console.log(`Running daily maintenance across ${workspaces.length} registered workspace${workspaces.length === 1 ? '' : 's'}...`);
522
+ const plural = workspaces.length === 1 ? '' : 's';
523
+ console.log(`Running daily maintenance across ${workspaces.length} registered workspace${plural}...`);
505
524
  let processed = 0;
506
525
  let failed = 0;
507
526
  const timeout = envDailyStepTimeoutMs() ?? DAILY_STEP_TIMEOUT_MS;
@@ -519,7 +538,10 @@ export async function handleDailyRunner({ tenantId }) {
519
538
  catch (err) {
520
539
  failed++;
521
540
  const action = args.join(' ');
522
- log.error(`daily-runner failed in ${cwd} during \`${action}\`: ${dailyStepFailure(err, timeout)}`, { workspace: cwd, ...errorFields(err) });
541
+ log.error(`daily-runner failed in ${cwd} during \`${action}\`: ${dailyStepFailure(err, timeout)}`, {
542
+ workspace: cwd,
543
+ ...errorFields(err),
544
+ });
523
545
  }
524
546
  });
525
547
  console.log(`Daily maintenance complete: ${processed} workspace${processed === 1 ? '' : 's'} processed, ` +
@@ -7,7 +7,9 @@ export declare function runChurnStaleForRepo(hippoRoot: string, tenantId: string
7
7
  root: string;
8
8
  result: ChurnStaleResult;
9
9
  }[];
10
- /** Run an HTTP-routed command if a `hippo serve` is detected: true if it ran, false on no server or a stale pidfile (removed if it names the dead server).
10
+ /**
11
+ * Run an HTTP-routed command if a `hippo serve` is detected: true if it ran, false on no server or a stale pidfile
12
+ * (removed if it names the dead server).
11
13
  * With HIPPO_REQUIRE_SERVER set both fallbacks throw; a stale pidfile must self-heal, not crash. */
12
14
  export declare function runViaServerIfAvailable(hippoRoot: string, httpFn: (info: ServerInfo, apiKey: string | undefined) => Promise<void>): Promise<boolean>;
13
15
  /** True, after one line, on a shared store: this account's commits and agent notes are not its members' memories. */