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
package/dist/cli/graph.js CHANGED
@@ -5,10 +5,13 @@ import { buildGraphModel, renderGraphHtml, renderGraphCanvas, DEFAULT_VIEW_LIMIT
5
5
  import { printError } from './output.js';
6
6
  import { stringFlag } from './flag-values.js';
7
7
  import { requireInit } from './shared.js';
8
- import { CliExit } from './exit.js';
8
+ import { fail } from './exit.js';
9
+ import { objectsOf } from '../api/objects/objects.js';
10
+ import { cliApiContext } from './api-context.js';
9
11
  import { openInBrowser } from './open-browser.js';
10
- function graphExtract(hippoRoot, tenantId) {
11
- const result = extractGraph(hippoRoot, tenantId);
12
+ async function graphExtract(hippoRoot, tenantId) {
13
+ const ctx = cliApiContext(hippoRoot, tenantId);
14
+ const result = await extractGraph(objectsOf(ctx), hippoRoot, tenantId);
12
15
  const byType = Object.entries(result.byType)
13
16
  .map(([t, n]) => `${t} ${n}`)
14
17
  .join(', ');
@@ -16,7 +19,8 @@ function graphExtract(hippoRoot, tenantId) {
16
19
  const relations = `${result.relations} relations (${supersedes} supersedes, ${result.references} references)`;
17
20
  console.log(`Graph extracted: ${result.entities} entities (${byType}) + ${relations}.`);
18
21
  if (result.truncated.length > 0) {
19
- printError(`WARNING: under-extracted (hit the per-type cap): ${result.truncated.join(', ')}. The graph is incomplete for those types.`);
22
+ printError(`WARNING: under-extracted (hit the per-type cap): ${result.truncated.join(', ')}. ` +
23
+ 'The graph is incomplete for those types.');
20
24
  }
21
25
  }
22
26
  function graphShow(hippoRoot, tenantId, entity, flags) {
@@ -52,19 +56,19 @@ function graphShow(hippoRoot, tenantId, entity, flags) {
52
56
  function graphView(hippoRoot, tenantId, entity, flags) {
53
57
  const format = stringFlag(flags, 'format') ?? 'html';
54
58
  if (format !== 'html' && format !== 'canvas') {
55
- printError("graph view: --format must be 'html' or 'canvas'");
56
- throw new CliExit(1);
59
+ fail("graph view: --format must be 'html' or 'canvas'");
57
60
  }
58
61
  const model = buildGraphModel(hippoRoot, tenantId, { entity, limit: DEFAULT_VIEW_LIMIT });
59
62
  const content = format === 'canvas' ? renderGraphCanvas(model) : renderGraphHtml(model);
60
63
  const defaultOut = format === 'canvas' ? 'hippo-graph.canvas' : 'hippo-graph.html';
61
64
  const out = stringFlag(flags, 'out') ?? defaultOut;
62
65
  fs.writeFileSync(out, content, 'utf8');
63
- console.log(`Wrote ${model.nodes.length} entities + ${model.edges.length} relations to ${out}${model.truncated ? ' (truncated)' : ''}`);
66
+ const truncated = model.truncated ? ' (truncated)' : '';
67
+ console.log(`Wrote ${model.nodes.length} entities + ${model.edges.length} relations to ${out}${truncated}`);
64
68
  if (flags['open'] && format === 'html')
65
69
  openInBrowser(out);
66
70
  }
67
- export function handleGraph({ hippoRoot, tenantId, args, flags }) {
71
+ export async function handleGraph({ hippoRoot, tenantId, args, flags }) {
68
72
  requireInit(hippoRoot);
69
73
  const subcommand = args[0] ?? '';
70
74
  if (subcommand === 'extract')
@@ -74,10 +78,10 @@ export function handleGraph({ hippoRoot, tenantId, args, flags }) {
74
78
  return graphShow(hippoRoot, tenantId, entity, flags);
75
79
  if (subcommand === 'view')
76
80
  return graphView(hippoRoot, tenantId, entity, flags);
77
- printError('Usage:\n' +
81
+ fail('Usage:\n' +
78
82
  ' hippo graph extract Rebuild the entity/relation graph from consolidated objects\n' +
79
83
  ' hippo graph show [--entity NAME] [--json] Inspect entities + their edges (text or JSON)\n' +
80
- ' hippo graph view [--out FILE] [--open] [--format html|canvas] [--entity NAME] Generate an interactive node-link diagram');
81
- throw new CliExit(1);
84
+ ' hippo graph view [--out FILE] [--open] [--format html|canvas] [--entity NAME] ' +
85
+ 'Generate an interactive node-link diagram');
82
86
  }
83
87
  //# sourceMappingURL=graph.js.map
@@ -1,27 +1,49 @@
1
1
  import type { HookRuntime } from '../core/capture-contract.js';
2
2
  import type { CliFlags } from './flag-values.js';
3
- /** Detached worker (internal `__session-end-worker`): counts re-reads, runs sleep, then capture; one stage failing does not block the other. */
4
- /** A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here. */
3
+ /**
4
+ * Detached worker (internal `__session-end-worker`): counts re-reads, runs sleep, then capture; one stage failing does
5
+ * not block the other.
6
+ */
7
+ /**
8
+ * A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here.
9
+ */
5
10
  export declare function logSessionEndImport(logFile: string | null, transcriptPath: string | undefined): void;
6
- /** Best-effort log line for the cmdSessionEndWorker snapshot-close step: cmdSleep/cmdCapture restore their console tee before this runs,
11
+ /**
12
+ * Best-effort log line for the cmdSessionEndWorker snapshot-close step: cmdSleep/cmdCapture restore their console tee
13
+ * before this runs,
7
14
  * so console.log would be lost under the worker's `stdio: 'ignore'`; write to the file directly. */
8
15
  export declare function appendSessionEndCloseLog(logFile: string | null, message: string, opts?: {
9
16
  startFresh?: boolean;
10
17
  }): void;
11
- /** A session-end step that failed: one warn line, and the same text in the session log, the only place a detached worker's output survives. */
18
+ /**
19
+ * A session-end step that failed: one warn line, and the same text in the session log, the only place a detached
20
+ * worker's output survives.
21
+ */
12
22
  export declare function reportSessionEndFailure<E>(logFile: string | null, step: string, err: E): void;
13
23
  export declare function hostSessionId(): string | undefined;
14
- /** Compaction drops the pinned blocks the per-prompt hook injected, so record a `reset` for the payload's session and the next prompt injects again.
24
+ /**
25
+ * Compaction drops the pinned blocks the per-prompt hook injected, so record a `reset` for the payload's session and
26
+ * the next prompt injects again.
15
27
  * `requiredSource` limits it to payloads with that `source`; best-effort and silent on a malformed payload. */
16
28
  export declare function resetHookInjection(hippoRoot: string, tenantId: string, stdinText: string | undefined, requiredSource: string | null): void;
17
- /** Store a hook writes to: the project store, else an existing global one, else the project path (skipped: hooks must not create a store).
29
+ /**
30
+ * Store a hook writes to: the project store, else an existing global one, else the project path (skipped: hooks must
31
+ * not create a store).
18
32
  * Pre-compact and compact-resume must agree, or a snapshot is looked for in the other store. */
19
33
  export declare function hookStoreRoot(hippoRoot: string): string;
20
- /** `--runtime copilot`, or `--format copilot` on `hippo context`, marks a Copilot hook: the flag decides, never the payload. */
34
+ /**
35
+ * `--runtime copilot`, or `--format copilot` on `hippo context`, marks a Copilot hook: the flag decides, never the
36
+ * payload.
37
+ */
21
38
  export declare function hookRuntime(flags: CliFlags): HookRuntime;
22
- /** A Copilot hook's project root, from the payload's `cwd`, since VS Code runs user-level hooks in the home folder; other runtimes keep `hippoRoot`. */
39
+ /**
40
+ * A Copilot hook's project root, from the payload's `cwd`, since VS Code runs user-level hooks in the home folder;
41
+ * other runtimes keep `hippoRoot`.
42
+ */
23
43
  export declare function payloadCwdRoot(hippoRoot: string, stdinText: string | undefined, runtime: HookRuntime): string;
24
- /** Hook commands share one handle per store and wait at most HOOK_DB_WAIT_MS for a lock; a store still busy after that skips the hook's
44
+ /**
45
+ * Hook commands share one handle per store and wait at most HOOK_DB_WAIT_MS for a lock; a store still busy after that
46
+ * skips the hook's
25
47
  * work with one warning, exit 0. */
26
48
  export declare function runHookWithStores<T>(fn: () => T | Promise<T>): Promise<T | undefined>;
27
49
  /** Whether this session sits in the pilot's holdout arm; off at rate 0 and with no session id. */
@@ -5,15 +5,21 @@ import * as fs from 'fs';
5
5
  import { isSqliteBusy, noteStoreBusy, runWithRequestStores, HOOK_DB_WAIT_MS } from '../db/index.js';
6
6
  import { bookTokenUse } from '../api/ledger-db.js';
7
7
  import { sessionPilotArm } from '../api/pilot-arm.js';
8
+ import { cliLedgerReach } from './api-context.js';
8
9
  import { hookPayloadSessionId, hookPayloadString, isSubagentPayload } from '../util/hook-payload.js';
9
10
  import { importAtSessionEnd, currentMachine } from '../agent-memories/sync.js';
10
11
  import { summaryLine } from '../agent-memories/report.js';
11
12
  import { getHippoRoot, isInitialized } from '../core/project-identity.js';
12
13
  import { getGlobalRoot } from '../sharing/global-store.js';
13
14
  import { sanitizeLogMessage } from '../capture/compact.js';
14
- import { errorMessage, log } from '../util/log.js';
15
- /** Detached worker (internal `__session-end-worker`): counts re-reads, runs sleep, then capture; one stage failing does not block the other. */
16
- /** A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here. */
15
+ import { errorMessage, log, errorFields } from '../util/log.js';
16
+ /**
17
+ * Detached worker (internal `__session-end-worker`): counts re-reads, runs sleep, then capture; one stage failing does
18
+ * not block the other.
19
+ */
20
+ /**
21
+ * A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here.
22
+ */
17
23
  export function logSessionEndImport(logFile, transcriptPath) {
18
24
  try {
19
25
  const report = importAtSessionEnd(process.cwd(), transcriptPath, { machine: currentMachine() });
@@ -27,7 +33,9 @@ export function logSessionEndImport(logFile, transcriptPath) {
27
33
  appendSessionEndCloseLog(logFile, `agent memory import failed: ${errorMessage(err)}`);
28
34
  }
29
35
  }
30
- /** Best-effort log line for the cmdSessionEndWorker snapshot-close step: cmdSleep/cmdCapture restore their console tee before this runs,
36
+ /**
37
+ * Best-effort log line for the cmdSessionEndWorker snapshot-close step: cmdSleep/cmdCapture restore their console tee
38
+ * before this runs,
31
39
  * so console.log would be lost under the worker's `stdio: 'ignore'`; write to the file directly. */
32
40
  export function appendSessionEndCloseLog(logFile, message, opts = {}) {
33
41
  if (!logFile)
@@ -41,10 +49,13 @@ export function appendSessionEndCloseLog(logFile, message, opts = {}) {
41
49
  }
42
50
  catch (err) {
43
51
  // Best-effort only: a log-write failure must never fail the hook.
44
- log.debug(`session-end log not written: ${errorMessage(err)}`);
52
+ log.debug(`session-end log not written: ${errorMessage(err)}`, errorFields(err));
45
53
  }
46
54
  }
47
- /** A session-end step that failed: one warn line, and the same text in the session log, the only place a detached worker's output survives. */
55
+ /**
56
+ * A session-end step that failed: one warn line, and the same text in the session log, the only place a detached
57
+ * worker's output survives.
58
+ */
48
59
  export function reportSessionEndFailure(logFile, step, err) {
49
60
  const line = `${step} failed: ${errorMessage(err)}`;
50
61
  log.warn(line);
@@ -54,7 +65,9 @@ export function reportSessionEndFailure(logFile, step, err) {
54
65
  export function hostSessionId() {
55
66
  return envHippoSessionId() ?? envClaudeCodeSessionId();
56
67
  }
57
- /** Compaction drops the pinned blocks the per-prompt hook injected, so record a `reset` for the payload's session and the next prompt injects again.
68
+ /**
69
+ * Compaction drops the pinned blocks the per-prompt hook injected, so record a `reset` for the payload's session and
70
+ * the next prompt injects again.
58
71
  * `requiredSource` limits it to payloads with that `source`; best-effort and silent on a malformed payload. */
59
72
  export function resetHookInjection(hippoRoot, tenantId, stdinText, requiredSource) {
60
73
  const sessionId = hookPayloadSessionId(stdinText, requiredSource);
@@ -63,9 +76,11 @@ export function resetHookInjection(hippoRoot, tenantId, stdinText, requiredSourc
63
76
  return;
64
77
  bookTokenUse(hippoRoot, {
65
78
  tenantId, sessionId, surface: 'hook', event: 'reset', items: 0, tokens: 0,
66
- });
79
+ }, cliLedgerReach(hippoRoot));
67
80
  }
68
- /** Store a hook writes to: the project store, else an existing global one, else the project path (skipped: hooks must not create a store).
81
+ /**
82
+ * Store a hook writes to: the project store, else an existing global one, else the project path (skipped: hooks must
83
+ * not create a store).
69
84
  * Pre-compact and compact-resume must agree, or a snapshot is looked for in the other store. */
70
85
  export function hookStoreRoot(hippoRoot) {
71
86
  if (isInitialized(hippoRoot))
@@ -73,26 +88,35 @@ export function hookStoreRoot(hippoRoot) {
73
88
  const globalRoot = getGlobalRoot();
74
89
  return isInitialized(globalRoot) ? globalRoot : hippoRoot;
75
90
  }
76
- /** `--runtime copilot`, or `--format copilot` on `hippo context`, marks a Copilot hook: the flag decides, never the payload. */
91
+ /**
92
+ * `--runtime copilot`, or `--format copilot` on `hippo context`, marks a Copilot hook: the flag decides, never the
93
+ * payload.
94
+ */
77
95
  export function hookRuntime(flags) {
78
96
  return flags['runtime'] === 'copilot' || flags['format'] === 'copilot' ? 'copilot' : 'claude-code';
79
97
  }
80
- /** A Copilot hook's project root, from the payload's `cwd`, since VS Code runs user-level hooks in the home folder; other runtimes keep `hippoRoot`. */
98
+ /**
99
+ * A Copilot hook's project root, from the payload's `cwd`, since VS Code runs user-level hooks in the home folder;
100
+ * other runtimes keep `hippoRoot`.
101
+ */
81
102
  export function payloadCwdRoot(hippoRoot, stdinText, runtime) {
82
103
  const cwd = runtime === 'copilot' ? hookPayloadString(stdinText, 'cwd') : null;
83
104
  if (cwd === null || cwd.trim() === '')
84
105
  return hippoRoot;
85
106
  try {
86
- // Moving, not just re-rooting, keeps project identity, scope, handoff evidence and the session-end worker on that folder too.
107
+ // Moving, not just re-rooting, keeps project identity, scope, handoff evidence and the session-end worker on that
108
+ // folder too.
87
109
  process.chdir(cwd);
88
110
  }
89
111
  catch (err) {
90
- log.warn(`hippo: payload cwd ${cwd} is not usable, so the hook stays in ${process.cwd()}: ${errorMessage(err)}`);
112
+ log.warn(`hippo: payload cwd ${cwd} is not usable, so the hook stays in ${process.cwd()}: ${errorMessage(err)}`, errorFields(err));
91
113
  return hippoRoot;
92
114
  }
93
115
  return getHippoRoot(process.cwd());
94
116
  }
95
- /** Hook commands share one handle per store and wait at most HOOK_DB_WAIT_MS for a lock; a store still busy after that skips the hook's
117
+ /**
118
+ * Hook commands share one handle per store and wait at most HOOK_DB_WAIT_MS for a lock; a store still busy after that
119
+ * skips the hook's
96
120
  * work with one warning, exit 0. */
97
121
  export async function runHookWithStores(fn) {
98
122
  try {
@@ -107,6 +131,7 @@ export async function runHookWithStores(fn) {
107
131
  }
108
132
  /** Whether this session sits in the pilot's holdout arm; off at rate 0 and with no session id. */
109
133
  export function inPilotHoldout(hippoRoot, tenantId, sessionId, opts) {
110
- return sessionPilotArm(hippoRoot, tenantId, sessionId, opts.write) === 'holdout';
134
+ const reach = cliLedgerReach(hippoRoot);
135
+ return sessionPilotArm(hippoRoot, tenantId, sessionId, opts.write, { reach }) === 'holdout';
111
136
  }
112
137
  //# sourceMappingURL=hook-runtime.js.map
@@ -1,3 +1,3 @@
1
1
  import { type CommandContext } from './flag-values.js';
2
- export declare function handleIncident({ hippoRoot, tenantId, args, flags }: CommandContext): void;
2
+ export declare function handleIncident({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
3
3
  //# sourceMappingURL=incidents.d.ts.map
@@ -1,11 +1,13 @@
1
1
  // First-class object verbs for incidents: open one, resolve it, close it.
2
2
  import { extractPathTags } from '../search/path-context.js';
3
3
  import * as incidentsModule from '../objects/incidents.js';
4
+ import { objectsOf } from '../api/objects/objects.js';
5
+ import { cliApiContext } from './api-context.js';
4
6
  import { printError } from './output.js';
5
7
  import { nonEmptyStringFlag, isStringFlag, stringFlag } from './flag-values.js';
6
8
  import { requireInit } from './shared.js';
7
9
  import { closeObject, foundOrExit, idArgOrExit, listObjects } from './object-verbs.js';
8
- import { CliExit } from './exit.js';
10
+ import { fail } from './exit.js';
9
11
  const INCIDENT = { cmd: 'incident', noun: 'Incident', idLabel: 'incident' };
10
12
  function printIncidentRow(inc) {
11
13
  const linkPart = inc.linkedMemoryIds.length > 0 ? ` links=${inc.linkedMemoryIds.length}` : '';
@@ -14,17 +16,17 @@ function printIncidentRow(inc) {
14
16
  if (inc.context)
15
17
  console.log(` context: ${inc.context}`);
16
18
  }
17
- function incidentList(hippoRoot, tenantId, flags) {
18
- listObjects(flags, {
19
+ function incidentList(objects, tenantId, flags) {
20
+ return listObjects(flags, {
19
21
  plural: 'incidents',
20
22
  states: incidentsModule.VALID_INCIDENT_STATES,
21
- load: (opts) => incidentsModule.loadIncidents(hippoRoot, tenantId, opts),
23
+ load: (opts) => incidentsModule.loadIncidents(objects, tenantId, opts),
22
24
  printRow: printIncidentRow,
23
25
  });
24
26
  }
25
- function incidentGet(hippoRoot, tenantId, args) {
27
+ async function incidentGet(objects, tenantId, args) {
26
28
  const id = idArgOrExit(args, 'Usage: hippo incident get <id>', INCIDENT.idLabel);
27
- const incident = foundOrExit(incidentsModule.loadIncidentById(hippoRoot, tenantId, id), INCIDENT.noun, id);
29
+ const incident = foundOrExit(await incidentsModule.loadIncidentById(objects, tenantId, id), INCIDENT.noun, id);
28
30
  console.log(`Incident #${incident.id}`);
29
31
  console.log(` status: ${incident.status}`);
30
32
  console.log(` text: ${incident.incidentText}`);
@@ -43,42 +45,41 @@ function incidentGet(hippoRoot, tenantId, args) {
43
45
  console.log(` memory: ${incident.memoryId}`);
44
46
  console.log(` created: ${incident.createdAt}`);
45
47
  }
46
- function incidentResolve(hippoRoot, tenantId, args, flags) {
48
+ async function incidentResolve(objects, tenantId, args, flags) {
47
49
  const id = idArgOrExit(args, 'Usage: hippo incident resolve <id> --resolution "<text>"', INCIDENT.idLabel);
48
50
  const resolutionRaw = stringFlag(flags, 'resolution');
49
51
  if (!resolutionRaw?.trim()) {
50
- printError('--resolution requires a non-empty value, e.g. hippo incident resolve <id> --resolution "root cause fixed".');
51
- throw new CliExit(1);
52
+ fail('--resolution requires a non-empty value, e.g. hippo incident resolve <id> --resolution "root cause fixed".');
52
53
  }
53
- const resolved = incidentsModule.resolveIncident(hippoRoot, tenantId, id, resolutionRaw);
54
+ const resolved = await incidentsModule.resolveOpenIncident(objects, tenantId, id, resolutionRaw, 'cli');
54
55
  console.log(`Incident #${resolved.id} resolved.`);
55
56
  }
56
- function incidentClose(hippoRoot, tenantId, args) {
57
- closeObject(args, INCIDENT, (id) => incidentsModule.closeIncident(hippoRoot, tenantId, id));
57
+ function incidentClose(objects, tenantId, args) {
58
+ return closeObject(args, INCIDENT, (id) => incidentsModule.closeIncident(objects, tenantId, id));
58
59
  }
59
- export function handleIncident({ hippoRoot, tenantId, args, flags }) {
60
+ export async function handleIncident({ hippoRoot, tenantId, args, flags }) {
60
61
  requireInit(hippoRoot);
61
62
  const subcommand = args[0] ?? '';
63
+ const objects = objectsOf(cliApiContext(hippoRoot, tenantId));
62
64
  if (subcommand === 'list')
63
- return incidentList(hippoRoot, tenantId, flags);
65
+ return incidentList(objects, tenantId, flags);
64
66
  if (subcommand === 'get')
65
- return incidentGet(hippoRoot, tenantId, args);
67
+ return incidentGet(objects, tenantId, args);
66
68
  if (subcommand === 'resolve')
67
- return incidentResolve(hippoRoot, tenantId, args, flags);
69
+ return incidentResolve(objects, tenantId, args, flags);
68
70
  if (subcommand === 'close')
69
- return incidentClose(hippoRoot, tenantId, args);
71
+ return incidentClose(objects, tenantId, args);
70
72
  // Default subcommand is open (create): accept both `incident open "<text>"` and bare `incident "<text>"`;
71
73
  // for the `open` keyword the text is args[1], otherwise args[0] is the text.
72
- incidentCreate(hippoRoot, tenantId, subcommand === 'open' ? (args[1] ?? '') : subcommand, flags);
74
+ await incidentCreate(objects, hippoRoot, tenantId, subcommand === 'open' ? (args[1] ?? '') : subcommand, flags);
73
75
  }
74
- function incidentCreate(hippoRoot, tenantId, incidentText, flags) {
76
+ async function incidentCreate(objects, hippoRoot, tenantId, incidentText, flags) {
75
77
  if (!incidentText) {
76
78
  printError('Usage: hippo incident "<incident>" [--context "<details>"] [--link <memory-id>]...');
77
79
  printError(' hippo incident list [--status open|resolved|closed|all] [--limit N]');
78
80
  printError(' hippo incident get <id>');
79
81
  printError(' hippo incident resolve <id> --resolution "<text>"');
80
- printError(' hippo incident close <id>');
81
- throw new CliExit(1);
82
+ fail(' hippo incident close <id>');
82
83
  }
83
84
  const context = nonEmptyStringFlag(flags, 'context');
84
85
  // --link is a repeatable flag (collected into an array by parseArgs). A
@@ -92,16 +93,15 @@ function incidentCreate(hippoRoot, tenantId, incidentText, flags) {
92
93
  linkedMemoryIds = [linkRaw];
93
94
  }
94
95
  else if (linkRaw === true) {
95
- printError('--link requires a memory id, e.g. hippo incident "<text>" --link mem_abc123.');
96
- throw new CliExit(1);
96
+ fail('--link requires a memory id, e.g. hippo incident "<text>" --link mem_abc123.');
97
97
  }
98
98
  const incidentPathTags = extractPathTags(process.cwd());
99
- const created = incidentsModule.saveIncident(hippoRoot, tenantId, {
99
+ const created = await incidentsModule.openIncident(objects, hippoRoot, tenantId, {
100
100
  incidentText,
101
101
  context,
102
102
  linkedMemoryIds,
103
103
  extraTags: incidentPathTags,
104
- });
104
+ }, 'cli');
105
105
  console.log(`Incident recorded: #${created.id}`);
106
106
  if (created.memoryId)
107
107
  console.log(` memory: ${created.memoryId}`);
package/dist/cli/init.js CHANGED
@@ -10,7 +10,7 @@ import { isCodexWrapperInstalled } from '../hooks/codex-wrapper.js';
10
10
  import { installOpencodePlugin } from '../hooks/opencode.js';
11
11
  import { initMemoryStore } from '../api/store-init.js';
12
12
  import { isInitialized } from '../core/project-identity.js';
13
- import { listMemories } from '../api/memories.js';
13
+ import { listMemories } from '../api/memories/memories.js';
14
14
  import { cliApiContext } from './api-context.js';
15
15
  import { isGitRepo } from '../learn/autolearn.js';
16
16
  import { currentMachine, importForStore, importProjectMemories, importUserMemories } from '../agent-memories/sync.js';
@@ -19,7 +19,7 @@ import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
19
19
  import { registerWorkspace } from './scheduler.js';
20
20
  import { numberFlag, stringFlag } from './flag-values.js';
21
21
  import { printAgentImport } from './print.js';
22
- import { errorCode, errorMessage, log } from '../util/log.js';
22
+ import { errorCode, errorFields, errorMessage, log } from '../util/log.js';
23
23
  import { installCodexMemoryHooks, setupDailySchedule, warnClaudeSettingsUnusable } from './install-steps.js';
24
24
  import { learnFromRepo, skipLearnOnSharedStore } from './shared.js';
25
25
  import { HOOK_MARKERS, HOOKS, hippoBlock } from '../hooks/hook-blocks.js';
@@ -47,8 +47,13 @@ function scanForGitRepos(rootDir, maxDepth = 2) {
47
47
  }
48
48
  catch (err) {
49
49
  const code = errorCode(err);
50
- if (!QUIET_SCAN_ERRORS.has(code))
51
- log.warn(`repo scan skipped ${dir}`, { code: code || 'unknown', reason: errorMessage(err) });
50
+ if (!QUIET_SCAN_ERRORS.has(code)) {
51
+ log.warn(`repo scan skipped ${dir}`, {
52
+ code: code || 'unknown',
53
+ reason: errorMessage(err),
54
+ ...errorFields(err),
55
+ });
56
+ }
52
57
  }
53
58
  }
54
59
  // Check if rootDir itself is a git repo
@@ -125,8 +130,9 @@ async function cmdInitScan(scanDir, tenantId, flags) {
125
130
  totalLessons += added;
126
131
  totalLowInfo += lowInfo;
127
132
  const status = alreadyExists ? 'existing' : 'new';
128
- const entries = listMemories(cliApiContext(path.join(repo, '.hippo'), tenantId), { everyTenant: true });
129
- console.log(` ${path.basename(repo).padEnd(25)} ${status.padEnd(10)} ${entries.length} memories${added > 0 ? ` (+${added} from git)` : ''}`);
133
+ const entries = await listMemories(cliApiContext(path.join(repo, '.hippo'), tenantId), { everyTenant: true });
134
+ console.log(` ${path.basename(repo).padEnd(25)} ${status.padEnd(10)} ${entries.length} ` +
135
+ `memories${added > 0 ? ` (+${added} from git)` : ''}`);
130
136
  }
131
137
  printScanSummary(repos.length, totalLessons, totalLowInfo);
132
138
  if (learn) {
@@ -204,7 +210,10 @@ export async function handleInit({ hippoRoot, tenantId, flags }) {
204
210
  if (learn)
205
211
  printAgentImport(importForStore(hippoRoot, { machine: currentMachine() }));
206
212
  }
207
- /** Every write init makes into agent config (instruction blocks, hooks, plugins) is an automatic integration, so one switch skips them all. */
213
+ /**
214
+ * Every write init makes into agent config (instruction blocks, hooks, plugins) is an automatic integration, so one
215
+ * switch skips them all.
216
+ */
208
217
  function initInstallsIntegrations(flags) {
209
218
  if (flags['no-hooks'])
210
219
  return false;
@@ -246,7 +255,8 @@ function patchInstructionFiles(dir, agents) {
246
255
  if (!hookDef)
247
256
  continue;
248
257
  const targetPath = path.resolve(dir, hookDef.file);
249
- // Never create the file: a marker such as .codex or .claude/settings.json does not ask for a new AGENTS.md or CLAUDE.md.
258
+ // Never create the file: a marker such as .codex or .claude/settings.json does not ask for a new AGENTS.md or
259
+ // CLAUDE.md.
250
260
  if (!fs.existsSync(targetPath) || seen.has(targetPath))
251
261
  continue;
252
262
  seen.add(targetPath);
@@ -310,7 +320,8 @@ function installClaudeCodeSettingsHooks(hook) {
310
320
  }
311
321
  }
312
322
  function installOpencodeUserPlugin() {
313
- // opencode uses a TS plugin, not Claude Code's JSON-hook schema (see OPENCODE_PLUGIN_SOURCE in src/hooks/opencode.ts).
323
+ // opencode uses a TS plugin, not Claude Code's JSON-hook schema (see OPENCODE_PLUGIN_SOURCE in
324
+ // src/hooks/opencode.ts).
314
325
  const result = installOpencodePlugin();
315
326
  if (result.installed) {
316
327
  console.log(` Auto-installed hippo opencode plugin -> ${result.pluginPath}`);
@@ -322,7 +333,10 @@ function installOpencodeUserPlugin() {
322
333
  console.log(` WARNING: opencode.json is unparseable; legacy hooks block could not be auto-removed. Fix the file manually.`);
323
334
  }
324
335
  }
325
- /** Claude Code settings hooks, Codex's hooks.json and the OpenCode plugin, under the home directory; idempotent, so re-running init adds newer hooks. */
336
+ /**
337
+ * Claude Code settings hooks, Codex's hooks.json and the OpenCode plugin, under the home directory; idempotent, so
338
+ * re-running init adds newer hooks.
339
+ */
326
340
  function installUserLevelHooks(agents, codexHint) {
327
341
  for (const hook of agents) {
328
342
  // The Codex capture wrapper swaps the codex launcher binary, so init only points at the opt-in.
@@ -332,7 +346,8 @@ function installUserLevelHooks(agents, codexHint) {
332
346
  // Checked first so init never creates ~/.codex on a machine without Codex.
333
347
  if (hook === 'codex' && isCodexPresent())
334
348
  installCodexMemoryHooks(' ');
335
- // For Claude Code, also install SessionEnd+SessionStart entries in settings.json, keeping `hippo init` in lockstep with
349
+ // For Claude Code, also install SessionEnd+SessionStart entries in settings.json, keeping `hippo init` in lockstep
350
+ // with
336
351
  // `hippo hook install claude-code` and `hippo setup`.
337
352
  if (hook === 'claude-code')
338
353
  installClaudeCodeSettingsHooks(hook);
@@ -1,8 +1,17 @@
1
+ import { type ExecFileSyncOptionsWithStringEncoding } from 'child_process';
1
2
  import { type InstallResult } from '../hooks/json-hooks.js';
2
- /** Adds hippo's two Codex hooks and says what changed; each install ends on the trust reminder, since Codex skips an untrusted hook. */
3
+ /**
4
+ * Adds hippo's two Codex hooks and says what changed; each install ends on the trust reminder, since Codex skips an
5
+ * untrusted hook.
6
+ */
3
7
  export declare function installCodexMemoryHooks(indent: string): void;
4
- /** The one line init, hook install, hook uninstall and setup print when Claude Code's settings.json is not JSON hippo can edit and so was
8
+ /**
9
+ * The one line init, hook install, hook uninstall and setup print when Claude Code's settings.json is not JSON hippo
10
+ * can edit and so was
5
11
  * left unchanged; true when it printed. */
6
12
  export declare function warnClaudeSettingsUnusable(result: Pick<InstallResult, 'settingsPath' | 'invalidJson'>, indent: string, action?: 'install' | 'uninstall'): boolean;
7
- export declare function setupDailySchedule(globalRoot: string): void;
13
+ /** Runs one scheduler program from argv with no shell; tests hand in a stand-in so no real schtasks or crontab runs. */
14
+ type RunScheduler = (file: string, args: readonly string[], opts: ExecFileSyncOptionsWithStringEncoding) => string;
15
+ export declare function setupDailySchedule(globalRoot: string, run?: RunScheduler): void;
16
+ export {};
8
17
  //# sourceMappingURL=install-steps.d.ts.map
@@ -1,15 +1,19 @@
1
1
  // The init and setup steps that touch the machine: Codex hooks, the settings.json warning and the daily schedule.
2
2
  import * as path from 'path';
3
- import { execFileSync, execSync } from 'child_process';
3
+ import { execFileSync } from 'child_process';
4
4
  import { installJsonHooks } from '../hooks/json-hooks.js';
5
5
  import { CODEX_TRUST_LINE } from '../hooks/shared.js';
6
6
  import { envSkipSchedule } from '../util/env.js';
7
7
  import { DAILY_TASK_NAME, buildDailyRunnerCommand, hasUnsafeRunnerPathChars, buildSchtasksCreateArgs, buildWindowsTaskRun, quoteInsideWindowsArg, } from './scheduler.js';
8
- /** Adds hippo's two Codex hooks and says what changed; each install ends on the trust reminder, since Codex skips an untrusted hook. */
8
+ /**
9
+ * Adds hippo's two Codex hooks and says what changed; each install ends on the trust reminder, since Codex skips an
10
+ * untrusted hook.
11
+ */
9
12
  export function installCodexMemoryHooks(indent) {
10
13
  const result = installJsonHooks('codex');
11
14
  if (result.invalidJson) {
12
- console.log(`${indent}WARNING: ${result.settingsPath} is not a hooks file hippo can merge into; fix it, then run \`hippo hook install codex\`.`);
15
+ console.log(`${indent}WARNING: ${result.settingsPath} is not a hooks file hippo can merge into; fix it, then run \`hippo ` +
16
+ `hook install codex\`.`);
13
17
  return;
14
18
  }
15
19
  const added = [
@@ -21,7 +25,9 @@ export function installCodexMemoryHooks(indent) {
21
25
  : `${indent}hippo's Codex memory hooks already in ${result.settingsPath}`);
22
26
  console.log(`${indent}${CODEX_TRUST_LINE}`);
23
27
  }
24
- /** The one line init, hook install, hook uninstall and setup print when Claude Code's settings.json is not JSON hippo can edit and so was
28
+ /**
29
+ * The one line init, hook install, hook uninstall and setup print when Claude Code's settings.json is not JSON hippo
30
+ * can edit and so was
25
31
  * left unchanged; true when it printed. */
26
32
  export function warnClaudeSettingsUnusable(result, indent, action = 'install') {
27
33
  if (!result.invalidJson)
@@ -30,17 +36,34 @@ export function warnClaudeSettingsUnusable(result, indent, action = 'install') {
30
36
  `fix it, then run \`hippo hook ${action} claude-code\`.`);
31
37
  return true;
32
38
  }
33
- /** Machine-level daily runner sweeping all registered workspaces: user crontab on Linux/macOS, a scheduled task on Windows; skips if installed. */
34
- /** Bound on each schtasks and crontab call, so a scheduler that never answers cannot hang `hippo init` or `hippo setup`. */
39
+ /**
40
+ * Machine-level daily runner sweeping all registered workspaces: user crontab on Linux/macOS, a scheduled task on
41
+ * Windows; skips if installed.
42
+ */
43
+ /**
44
+ * Bound on each schtasks and crontab call, so a scheduler that never answers cannot hang `hippo init` or `hippo setup`.
45
+ */
35
46
  const SCHEDULER_CALL_TIMEOUT_MS = 30_000;
36
- /** Node kills a child at its timeout and reports ETIMEDOUT; every other failure here means the scheduler refused or is missing. */
47
+ // Piped stderr stands in for `2>nul` and `2>/dev/null`, so no shell is needed to keep the scheduler's complaints off
48
+ // the terminal.
49
+ const SCHEDULER_CALL = {
50
+ encoding: 'utf-8',
51
+ stdio: 'pipe',
52
+ windowsHide: true,
53
+ timeout: SCHEDULER_CALL_TIMEOUT_MS,
54
+ };
55
+ /**
56
+ * Node kills a child at its timeout and reports ETIMEDOUT; every other failure here means the scheduler refused or is
57
+ * missing.
58
+ */
37
59
  function schedulerTimedOut(err) {
38
60
  return err instanceof Error && 'code' in err && err.code === 'ETIMEDOUT';
39
61
  }
40
62
  function warnSchedulerTimedOut(command) {
41
- console.log(` ${command} did not answer within ${SCHEDULER_CALL_TIMEOUT_MS / 1000} s and was stopped, so the daily runner is not scheduled.`);
63
+ console.log(` ${command} did not answer within ${SCHEDULER_CALL_TIMEOUT_MS / 1000} s and was stopped, so the daily runner ` +
64
+ `is not scheduled.`);
42
65
  }
43
- export function setupDailySchedule(globalRoot) {
66
+ export function setupDailySchedule(globalRoot, run = execFileSync) {
44
67
  // Checked here, not per caller, so init, init --scan and setup all honour it.
45
68
  if (envSkipSchedule()) {
46
69
  console.log(' HIPPO_SKIP_SCHEDULE=1, so the machine-level daily runner was not scheduled.');
@@ -55,14 +78,14 @@ export function setupDailySchedule(globalRoot) {
55
78
  const taskName = DAILY_TASK_NAME;
56
79
  const cmd = buildDailyRunnerCommand(runnerDir);
57
80
  if (isWindows)
58
- scheduleOnWindows(taskName, cmd);
81
+ scheduleOnWindows(taskName, cmd, run);
59
82
  else
60
- scheduleOnCrontab(taskName, cmd);
83
+ scheduleOnCrontab(taskName, cmd, run);
61
84
  }
62
- function scheduleOnWindows(taskName, cmd) {
85
+ function scheduleOnWindows(taskName, cmd, run) {
63
86
  // Check if task already exists
64
87
  try {
65
- const existing = execSync(`schtasks /query /tn "${taskName}" 2>nul`, { encoding: 'utf-8', windowsHide: true, timeout: SCHEDULER_CALL_TIMEOUT_MS });
88
+ const existing = run('schtasks', ['/query', '/tn', taskName], SCHEDULER_CALL);
66
89
  if (existing.includes(taskName)) {
67
90
  return; // already scheduled
68
91
  }
@@ -73,7 +96,7 @@ function scheduleOnWindows(taskName, cmd) {
73
96
  warnSchedulerTimedOut('schtasks /query');
74
97
  }
75
98
  try {
76
- execFileSync('schtasks', buildSchtasksCreateArgs(taskName, cmd), { stdio: 'pipe', windowsHide: true, timeout: SCHEDULER_CALL_TIMEOUT_MS });
99
+ run('schtasks', buildSchtasksCreateArgs(taskName, cmd), SCHEDULER_CALL);
77
100
  console.log(` Scheduled machine-level daily runner (6:15am) via Task Scheduler: ${taskName}`);
78
101
  }
79
102
  catch (err) {
@@ -81,20 +104,21 @@ function scheduleOnWindows(taskName, cmd) {
81
104
  warnSchedulerTimedOut('schtasks /create');
82
105
  // No admin rights or schtasks unavailable, fall back to printing instructions
83
106
  console.log(` To schedule the machine-level daily runner, run:`);
84
- console.log(` schtasks /create /tn "${taskName}" /tr "${quoteInsideWindowsArg(buildWindowsTaskRun(cmd))}" /sc daily /st 06:15`);
107
+ console.log(` schtasks /create /tn "${taskName}" /tr "${quoteInsideWindowsArg(buildWindowsTaskRun(cmd))}" /sc daily /st ` +
108
+ `06:15`);
85
109
  }
86
110
  }
87
- function scheduleOnCrontab(taskName, cmd) {
111
+ function scheduleOnCrontab(taskName, cmd, run) {
88
112
  // Unix: check crontab for existing entry
89
113
  const marker = `# hippo:${taskName}`;
90
114
  try {
91
- const existing = execSync('crontab -l 2>/dev/null', { encoding: 'utf-8', windowsHide: true, timeout: SCHEDULER_CALL_TIMEOUT_MS });
115
+ const existing = run('crontab', ['-l'], SCHEDULER_CALL);
92
116
  if (existing.includes(marker)) {
93
117
  return; // already scheduled
94
118
  }
95
119
  const cronLine = `15 6 * * * ${cmd} ${marker}`;
96
120
  const newCrontab = existing.trimEnd() + '\n' + cronLine + '\n';
97
- execSync('crontab -', { input: newCrontab, stdio: ['pipe', 'pipe', 'pipe'], windowsHide: true, timeout: SCHEDULER_CALL_TIMEOUT_MS });
121
+ run('crontab', ['-'], { ...SCHEDULER_CALL, input: newCrontab });
98
122
  console.log(` Scheduled machine-level daily runner (6:15am) via crontab`);
99
123
  }
100
124
  catch (err) {
@@ -1,5 +1,8 @@
1
1
  import { type CliFlags, type CommandContext } from './flag-values.js';
2
- /** The line the user sees when the last sleep failed, a spool step hit an unexpected error, or the spool holds `.bad` files; null when none did. */
2
+ /**
3
+ * The line the user sees when the last sleep failed, a spool step hit an unexpected error, or the spool holds `.bad`
4
+ * files; null when none did.
5
+ */
3
6
  export declare function sleepProblems(logText: string, bad: number): string | null;
4
7
  /** Prints the SessionEnd sleep log on stderr, then clears it. In a hook, stdout carries only `systemMessage`,
5
8
  * because Claude Code shows that to the user and adds any other SessionStart stdout to the model's context. */