hippo-memory 1.72.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (995) hide show
  1. package/README.md +6 -4
  2. package/dist/agent-memories/apply.d.ts +7 -5
  3. package/dist/agent-memories/apply.js +66 -39
  4. package/dist/agent-memories/claude-code.d.ts +8 -2
  5. package/dist/agent-memories/claude-code.js +26 -7
  6. package/dist/agent-memories/copilot.js +2 -1
  7. package/dist/agent-memories/files.js +2 -1
  8. package/dist/agent-memories/legacy.d.ts +6 -3
  9. package/dist/agent-memories/legacy.js +35 -14
  10. package/dist/agent-memories/markdown.d.ts +3 -1
  11. package/dist/agent-memories/markdown.js +3 -1
  12. package/dist/agent-memories/openclaw.js +5 -2
  13. package/dist/agent-memories/plan.js +11 -1
  14. package/dist/agent-memories/project-folds.js +2 -1
  15. package/dist/agent-memories/report.d.ts +4 -1
  16. package/dist/agent-memories/report.js +43 -9
  17. package/dist/agent-memories/source.d.ts +8 -2
  18. package/dist/agent-memories/source.js +11 -3
  19. package/dist/agent-memories/sync.d.ts +7 -2
  20. package/dist/agent-memories/sync.js +141 -101
  21. package/dist/api/assemble.d.ts +6 -4
  22. package/dist/api/assemble.js +11 -5
  23. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  24. package/dist/api/auth/audit.js +58 -0
  25. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
  26. package/dist/api/{auth.js → auth/auth.js} +66 -54
  27. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  28. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
  29. package/dist/api/auth/session-owners.d.ts +10 -0
  30. package/dist/api/auth/session-owners.js +35 -0
  31. package/dist/api/availability.d.ts +3 -1
  32. package/dist/api/availability.js +3 -1
  33. package/dist/api/busy.d.ts +2 -0
  34. package/dist/api/busy.js +2 -0
  35. package/dist/api/cli-surface.d.ts +6 -0
  36. package/dist/api/cli-surface.js +6 -0
  37. package/dist/api/config-of.d.ts +5 -0
  38. package/dist/api/config-of.js +6 -0
  39. package/dist/api/context-auto.d.ts +4 -1
  40. package/dist/api/context-auto.js +14 -4
  41. package/dist/api/context-render.js +14 -7
  42. package/dist/api/context-select.d.ts +4 -1
  43. package/dist/api/context-select.js +31 -34
  44. package/dist/api/context-types.d.ts +38 -12
  45. package/dist/api/context.d.ts +8 -5
  46. package/dist/api/context.js +120 -63
  47. package/dist/api/continuity.d.ts +24 -21
  48. package/dist/api/continuity.js +18 -20
  49. package/dist/api/correction-latency.d.ts +3 -1
  50. package/dist/api/correction-latency.js +3 -1
  51. package/dist/api/error-reply.d.ts +4 -1
  52. package/dist/api/error-reply.js +12 -3
  53. package/dist/api/index.d.ts +39 -23
  54. package/dist/api/index.js +21 -23
  55. package/dist/api/instruction-detect.d.ts +4 -1
  56. package/dist/api/instruction-detect.js +75 -20
  57. package/dist/api/ledger-db.d.ts +15 -11
  58. package/dist/api/ledger-db.js +21 -23
  59. package/dist/api/memories/conflicts.d.ts +33 -0
  60. package/dist/api/memories/conflicts.js +67 -0
  61. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  62. package/dist/api/{forget.js → memories/forget.js} +23 -17
  63. package/dist/api/memories/memories.d.ts +27 -0
  64. package/dist/api/memories/memories.js +52 -0
  65. package/dist/api/memories/outcome.d.ts +22 -0
  66. package/dist/api/memories/outcome.js +28 -0
  67. package/dist/api/memories/promote.d.ts +40 -0
  68. package/dist/api/memories/promote.js +76 -0
  69. package/dist/api/memories/refine.d.ts +10 -0
  70. package/dist/api/memories/refine.js +12 -0
  71. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
  72. package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
  73. package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
  74. package/dist/api/{remember.js → memories/remember.js} +50 -32
  75. package/dist/api/objects/cards.d.ts +39 -0
  76. package/dist/api/{cards.js → objects/cards.js} +12 -14
  77. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  78. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
  79. package/dist/api/objects/goals.d.ts +18 -0
  80. package/dist/api/{goals.js → objects/goals.js} +12 -12
  81. package/dist/api/objects/graph.d.ts +11 -0
  82. package/dist/api/objects/graph.js +16 -0
  83. package/dist/api/objects/objects.d.ts +9 -0
  84. package/dist/api/{objects.js → objects/objects.js} +2 -3
  85. package/dist/api/objects/predictions.d.ts +11 -0
  86. package/dist/api/{predictions.js → objects/predictions.js} +7 -5
  87. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  88. package/dist/api/{projects.js → objects/projects.js} +8 -4
  89. package/dist/api/pilot-arm.d.ts +8 -4
  90. package/dist/api/pilot-arm.js +5 -4
  91. package/dist/api/prompt-hook.d.ts +35 -20
  92. package/dist/api/prompt-hook.js +66 -44
  93. package/dist/api/provenance-coverage.d.ts +3 -1
  94. package/dist/api/provenance-coverage.js +3 -1
  95. package/dist/api/recall/finish.d.ts +185 -0
  96. package/dist/api/recall/finish.js +301 -0
  97. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  98. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
  99. package/dist/api/recall/recall.d.ts +6 -0
  100. package/dist/api/{recall.js → recall/recall.js} +116 -72
  101. package/dist/api/recall/render.d.ts +39 -0
  102. package/dist/api/recall/render.js +60 -0
  103. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  104. package/dist/api/recall/request.js +261 -0
  105. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  106. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  107. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
  108. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  109. package/dist/api/session-end.d.ts +36 -8
  110. package/dist/api/session-end.js +71 -25
  111. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  112. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  113. package/dist/api/sleep/dormant.d.ts +25 -0
  114. package/dist/api/sleep/dormant.js +64 -0
  115. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  116. package/dist/api/sleep/learn.js +138 -0
  117. package/dist/api/sleep/sleep-run.d.ts +38 -0
  118. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
  119. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  120. package/dist/api/sleep/sleep.js +9 -0
  121. package/dist/api/status.d.ts +3 -1
  122. package/dist/api/status.js +3 -1
  123. package/dist/api/store-init.d.ts +4 -1
  124. package/dist/api/store-init.js +4 -1
  125. package/dist/api/tokens.d.ts +10 -9
  126. package/dist/api/tokens.js +9 -10
  127. package/dist/api/types.d.ts +27 -12
  128. package/dist/api/types.js +13 -4
  129. package/dist/capture/caller-session.d.ts +8 -2
  130. package/dist/capture/caller-session.js +16 -6
  131. package/dist/capture/capture-error.d.ts +3 -1
  132. package/dist/capture/capture-error.js +3 -1
  133. package/dist/capture/codex-patch.js +7 -2
  134. package/dist/capture/command.d.ts +4 -2
  135. package/dist/capture/command.js +34 -15
  136. package/dist/capture/compact-resume-caller.js +15 -8
  137. package/dist/capture/compact.d.ts +8 -5
  138. package/dist/capture/compact.js +34 -23
  139. package/dist/capture/compaction-items-caller.js +9 -3
  140. package/dist/capture/compaction-record.d.ts +4 -3
  141. package/dist/capture/compaction-record.js +20 -12
  142. package/dist/capture/compaction-spool.d.ts +18 -9
  143. package/dist/capture/compaction-spool.js +105 -63
  144. package/dist/capture/copilot-transcript.d.ts +11 -3
  145. package/dist/capture/copilot-transcript.js +16 -6
  146. package/dist/capture/extract.js +20 -8
  147. package/dist/capture/failure-caller.js +23 -12
  148. package/dist/capture/failure-reading.d.ts +10 -3
  149. package/dist/capture/failure-reading.js +24 -7
  150. package/dist/capture/pre-compact-caller.js +11 -4
  151. package/dist/capture/session-digest.d.ts +15 -4
  152. package/dist/capture/session-digest.js +39 -13
  153. package/dist/capture/session-end-caller.d.ts +4 -1
  154. package/dist/capture/session-end-caller.js +20 -8
  155. package/dist/capture/session-texts.d.ts +6 -2
  156. package/dist/capture/session-texts.js +22 -7
  157. package/dist/capture/session-worker.d.ts +4 -2
  158. package/dist/capture/session-worker.js +58 -17
  159. package/dist/capture/transcript.d.ts +13 -4
  160. package/dist/capture/transcript.js +32 -10
  161. package/dist/capture/working-state.d.ts +13 -4
  162. package/dist/capture/working-state.js +50 -56
  163. package/dist/cli/api-context.d.ts +14 -2
  164. package/dist/cli/api-context.js +45 -2
  165. package/dist/cli/audit.js +33 -33
  166. package/dist/cli/auth.js +23 -31
  167. package/dist/cli/briefs.d.ts +1 -1
  168. package/dist/cli/briefs.js +20 -15
  169. package/dist/cli/card.d.ts +1 -1
  170. package/dist/cli/card.js +56 -73
  171. package/dist/cli/client.d.ts +12 -5
  172. package/dist/cli/client.js +53 -23
  173. package/dist/cli/compact-resume-payload.d.ts +4 -1
  174. package/dist/cli/compact-resume-payload.js +12 -5
  175. package/dist/cli/context.js +43 -18
  176. package/dist/cli/continuity.d.ts +5 -5
  177. package/dist/cli/continuity.js +90 -107
  178. package/dist/cli/curate.d.ts +5 -4
  179. package/dist/cli/curate.js +55 -77
  180. package/dist/cli/dag.d.ts +1 -1
  181. package/dist/cli/dag.js +14 -17
  182. package/dist/cli/decisions.js +30 -30
  183. package/dist/cli/eval.js +16 -21
  184. package/dist/cli/exit.d.ts +4 -1
  185. package/dist/cli/exit.js +10 -2
  186. package/dist/cli/explain.js +12 -11
  187. package/dist/cli/flag-values.d.ts +1 -1
  188. package/dist/cli/flag-values.js +9 -18
  189. package/dist/cli/github.d.ts +6 -0
  190. package/dist/cli/github.js +25 -13
  191. package/dist/cli/goals.d.ts +1 -1
  192. package/dist/cli/goals.js +39 -56
  193. package/dist/cli/graph.d.ts +1 -1
  194. package/dist/cli/graph.js +15 -11
  195. package/dist/cli/hook-runtime.d.ts +34 -10
  196. package/dist/cli/hook-runtime.js +41 -16
  197. package/dist/cli/incidents.d.ts +1 -1
  198. package/dist/cli/incidents.js +25 -25
  199. package/dist/cli/init.d.ts +1 -1
  200. package/dist/cli/init.js +35 -20
  201. package/dist/cli/install-steps.d.ts +12 -3
  202. package/dist/cli/install-steps.js +42 -18
  203. package/dist/cli/last-sleep.d.ts +4 -1
  204. package/dist/cli/last-sleep.js +9 -4
  205. package/dist/cli/maintenance.d.ts +1 -1
  206. package/dist/cli/maintenance.js +11 -12
  207. package/dist/cli/notes.d.ts +1 -1
  208. package/dist/cli/notes.js +8 -5
  209. package/dist/cli/object-verbs.d.ts +5 -5
  210. package/dist/cli/object-verbs.js +13 -16
  211. package/dist/cli/open-browser.js +11 -2
  212. package/dist/cli/playbooks.d.ts +3 -3
  213. package/dist/cli/playbooks.js +40 -32
  214. package/dist/cli/predictions.js +17 -22
  215. package/dist/cli/print.js +4 -2
  216. package/dist/cli/projects.js +21 -11
  217. package/dist/cli/quality-repair-once.d.ts +1 -1
  218. package/dist/cli/quality-repair-once.js +7 -6
  219. package/dist/cli/recall.js +129 -93
  220. package/dist/cli/refine-llm.d.ts +15 -4
  221. package/dist/cli/refine-llm.js +17 -7
  222. package/dist/cli/remember.js +51 -55
  223. package/dist/cli/scheduler.d.ts +4 -1
  224. package/dist/cli/scheduler.js +9 -5
  225. package/dist/cli/serve.js +28 -18
  226. package/dist/cli/session-hooks.d.ts +2 -6
  227. package/dist/cli/session-hooks.js +140 -112
  228. package/dist/cli/setup.d.ts +1 -1
  229. package/dist/cli/setup.js +56 -34
  230. package/dist/cli/shared.d.ts +4 -2
  231. package/dist/cli/shared.js +26 -11
  232. package/dist/cli/slack.js +15 -24
  233. package/dist/cli/sleep-render.d.ts +3 -1
  234. package/dist/cli/sleep-render.js +8 -5
  235. package/dist/cli/sleep.js +16 -8
  236. package/dist/cli/status.d.ts +4 -4
  237. package/dist/cli/status.js +32 -27
  238. package/dist/cli/stdin.d.ts +10 -3
  239. package/dist/cli/stdin.js +10 -3
  240. package/dist/cli/transfer.d.ts +4 -4
  241. package/dist/cli/transfer.js +97 -82
  242. package/dist/cli/usage.d.ts +1 -1
  243. package/dist/cli/usage.js +1 -1
  244. package/dist/cli/verb-row.d.ts +2 -0
  245. package/dist/cli/verbs/health.js +2 -0
  246. package/dist/cli/verbs/memory.js +47 -53
  247. package/dist/cli/verbs/objects.js +16 -7
  248. package/dist/cli/verbs/sessions.js +4 -2
  249. package/dist/cli/versioned-verbs.d.ts +8 -7
  250. package/dist/cli/versioned-verbs.js +31 -21
  251. package/dist/cli.js +14 -18
  252. package/dist/connectors/dlq.d.ts +6 -6
  253. package/dist/connectors/dlq.js +12 -7
  254. package/dist/connectors/github/backfill.d.ts +4 -4
  255. package/dist/connectors/github/backfill.js +6 -4
  256. package/dist/connectors/github/deletion.d.ts +6 -4
  257. package/dist/connectors/github/deletion.js +5 -4
  258. package/dist/connectors/github/dlq.d.ts +8 -6
  259. package/dist/connectors/github/dlq.js +11 -5
  260. package/dist/connectors/github/ingest.d.ts +2 -2
  261. package/dist/connectors/github/ingest.js +9 -5
  262. package/dist/connectors/github/octokit-client.d.ts +3 -1
  263. package/dist/connectors/github/octokit-client.js +7 -2
  264. package/dist/connectors/github/ratelimit.d.ts +6 -2
  265. package/dist/connectors/github/ratelimit.js +6 -2
  266. package/dist/connectors/github/signature.d.ts +14 -3
  267. package/dist/connectors/github/signature.js +17 -3
  268. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  269. package/dist/connectors/github/tenant-routing.js +6 -5
  270. package/dist/connectors/github/transform.js +50 -67
  271. package/dist/connectors/github/types.d.ts +10 -3
  272. package/dist/connectors/github/types.js +6 -2
  273. package/dist/connectors/github/webhook.d.ts +5 -5
  274. package/dist/connectors/github/webhook.js +36 -23
  275. package/dist/connectors/ingest.d.ts +5 -3
  276. package/dist/connectors/ingest.js +3 -3
  277. package/dist/connectors/slack/backfill.d.ts +5 -5
  278. package/dist/connectors/slack/backfill.js +3 -3
  279. package/dist/connectors/slack/deletion.d.ts +4 -4
  280. package/dist/connectors/slack/deletion.js +6 -5
  281. package/dist/connectors/slack/dlq.d.ts +4 -4
  282. package/dist/connectors/slack/dlq.js +6 -6
  283. package/dist/connectors/slack/ingest.d.ts +6 -4
  284. package/dist/connectors/slack/ingest.js +5 -4
  285. package/dist/connectors/slack/signature.d.ts +4 -1
  286. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  287. package/dist/connectors/slack/tenant-routing.js +6 -5
  288. package/dist/connectors/slack/transform.d.ts +6 -2
  289. package/dist/connectors/slack/transform.js +6 -2
  290. package/dist/connectors/slack/types.d.ts +3 -1
  291. package/dist/connectors/slack/web-client.js +8 -3
  292. package/dist/connectors/slack/webhook.d.ts +5 -5
  293. package/dist/connectors/slack/webhook.js +19 -11
  294. package/dist/connectors/slack/workspaces.d.ts +7 -3
  295. package/dist/connectors/slack/workspaces.js +7 -3
  296. package/dist/connectors/store.d.ts +8 -0
  297. package/dist/connectors/store.js +2 -0
  298. package/dist/consolidate/conflicts.js +24 -10
  299. package/dist/consolidate/dag-summary.js +2 -1
  300. package/dist/consolidate/dag.d.ts +10 -5
  301. package/dist/consolidate/dag.js +45 -39
  302. package/dist/consolidate/decay.js +19 -6
  303. package/dist/consolidate/dedupe.d.ts +14 -5
  304. package/dist/consolidate/dedupe.js +28 -17
  305. package/dist/consolidate/flush-units.d.ts +4 -1
  306. package/dist/consolidate/flush-units.js +4 -1
  307. package/dist/consolidate/half-life-migration.d.ts +18 -8
  308. package/dist/consolidate/half-life-migration.js +48 -18
  309. package/dist/consolidate/llm-passes.js +27 -11
  310. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  311. package/dist/consolidate/memory-value-weights.js +6 -2
  312. package/dist/consolidate/memory-value.d.ts +30 -10
  313. package/dist/consolidate/memory-value.js +37 -14
  314. package/dist/consolidate/merge.d.ts +4 -1
  315. package/dist/consolidate/merge.js +47 -37
  316. package/dist/consolidate/overlap-index.d.ts +8 -2
  317. package/dist/consolidate/overlap-index.js +11 -4
  318. package/dist/consolidate/physics-pass.d.ts +3 -1
  319. package/dist/consolidate/physics-pass.js +10 -7
  320. package/dist/consolidate/replay.d.ts +11 -4
  321. package/dist/consolidate/replay.js +19 -7
  322. package/dist/consolidate/run.d.ts +13 -5
  323. package/dist/consolidate/run.js +4 -4
  324. package/dist/consolidate/sleep.d.ts +14 -6
  325. package/dist/consolidate/sleep.js +42 -39
  326. package/dist/consolidate/trace.d.ts +7 -2
  327. package/dist/consolidate/trace.js +7 -2
  328. package/dist/consolidate/traces.js +27 -30
  329. package/dist/core/ablation.d.ts +9 -3
  330. package/dist/core/ablation.js +14 -4
  331. package/dist/core/active-scope.d.ts +3 -1
  332. package/dist/core/active-scope.js +3 -1
  333. package/dist/core/agent-memory-tools.d.ts +2 -0
  334. package/dist/core/agent-memory-tools.js +2 -0
  335. package/dist/core/ambient.d.ts +4 -3
  336. package/dist/core/ambient.js +8 -6
  337. package/dist/core/api-errors.d.ts +9 -3
  338. package/dist/core/api-errors.js +9 -3
  339. package/dist/core/capture-contract.d.ts +4 -1
  340. package/dist/core/capture-contract.js +27 -8
  341. package/dist/core/compare.d.ts +24 -8
  342. package/dist/core/compare.js +24 -8
  343. package/dist/core/config.d.ts +18 -9
  344. package/dist/core/config.js +38 -29
  345. package/dist/core/cosine.d.ts +4 -1
  346. package/dist/core/cosine.js +4 -1
  347. package/dist/core/handoff.d.ts +7 -2
  348. package/dist/core/handoff.js +4 -1
  349. package/dist/core/markdown.js +22 -17
  350. package/dist/core/memory-audit.js +14 -3
  351. package/dist/core/memory-quality.d.ts +12 -3
  352. package/dist/core/memory-quality.js +57 -21
  353. package/dist/core/memory.d.ts +87 -30
  354. package/dist/core/memory.js +82 -33
  355. package/dist/core/merged-row.d.ts +8 -2
  356. package/dist/core/merged-row.js +10 -3
  357. package/dist/core/package-root.d.ts +3 -1
  358. package/dist/core/package-root.js +3 -1
  359. package/dist/core/particle-refresh.d.ts +8 -0
  360. package/dist/core/particle-refresh.js +22 -0
  361. package/dist/core/physics-config.d.ts +4 -1
  362. package/dist/core/physics-config.js +6 -2
  363. package/dist/core/physics.d.ts +39 -11
  364. package/dist/core/physics.js +71 -21
  365. package/dist/core/project-identity.d.ts +34 -17
  366. package/dist/core/project-identity.js +35 -18
  367. package/dist/core/project-remote.d.ts +8 -4
  368. package/dist/core/project-remote.js +31 -14
  369. package/dist/core/recall-scope.d.ts +33 -11
  370. package/dist/core/recall-scope.js +42 -15
  371. package/dist/core/rejection-digest.d.ts +7 -0
  372. package/dist/core/rejection-digest.js +13 -0
  373. package/dist/core/salience.d.ts +3 -1
  374. package/dist/core/salience.js +10 -4
  375. package/dist/core/search-types.d.ts +15 -2
  376. package/dist/core/search-types.js +11 -0
  377. package/dist/dashboard/dashboard-actions.d.ts +2 -2
  378. package/dist/dashboard/dashboard-actions.js +18 -7
  379. package/dist/dashboard/dashboard-queries.js +2 -7
  380. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  381. package/dist/dashboard/dashboard-snapshot.js +5 -7
  382. package/dist/dashboard/dashboard.js +22 -8
  383. package/dist/db/backup.js +2 -2
  384. package/dist/db/busy.d.ts +10 -3
  385. package/dist/db/busy.js +27 -5
  386. package/dist/db/connect.d.ts +10 -2
  387. package/dist/db/connect.js +8 -2
  388. package/dist/db/continuity.d.ts +1 -1
  389. package/dist/db/continuity.js +27 -11
  390. package/dist/db/meta.d.ts +4 -1
  391. package/dist/db/meta.js +4 -1
  392. package/dist/db/migrate.d.ts +10 -5
  393. package/dist/db/migrate.js +40 -20
  394. package/dist/db/migrations/index.d.ts +1 -1
  395. package/dist/db/migrations/index.js +3 -1
  396. package/dist/db/migrations/types.d.ts +2 -1
  397. package/dist/db/migrations/v11.js +1 -0
  398. package/dist/db/migrations/v12.js +2 -1
  399. package/dist/db/migrations/v14.js +2 -0
  400. package/dist/db/migrations/v15.js +4 -2
  401. package/dist/db/migrations/v16.js +6 -3
  402. package/dist/db/migrations/v17.js +2 -1
  403. package/dist/db/migrations/v19.js +4 -2
  404. package/dist/db/migrations/v20.js +2 -1
  405. package/dist/db/migrations/v22.js +12 -6
  406. package/dist/db/migrations/v23.js +6 -3
  407. package/dist/db/migrations/v24.js +6 -3
  408. package/dist/db/migrations/v25.js +4 -2
  409. package/dist/db/migrations/v26.js +4 -2
  410. package/dist/db/migrations/v27.js +6 -3
  411. package/dist/db/migrations/v28.js +4 -2
  412. package/dist/db/migrations/v29.js +4 -2
  413. package/dist/db/migrations/v30.js +6 -3
  414. package/dist/db/migrations/v31.js +4 -2
  415. package/dist/db/migrations/v32.js +6 -3
  416. package/dist/db/migrations/v33.js +4 -2
  417. package/dist/db/migrations/v34.js +2 -1
  418. package/dist/db/migrations/v35.js +2 -1
  419. package/dist/db/migrations/v36.js +2 -1
  420. package/dist/db/migrations/v37.js +10 -5
  421. package/dist/db/migrations/v38.js +10 -5
  422. package/dist/db/migrations/v39.js +14 -6
  423. package/dist/db/migrations/v40.js +4 -2
  424. package/dist/db/migrations/v41.js +4 -2
  425. package/dist/db/migrations/v42.js +2 -1
  426. package/dist/db/migrations/v44.js +4 -2
  427. package/dist/db/migrations/v45.js +4 -2
  428. package/dist/db/migrations/v49.js +2 -1
  429. package/dist/db/migrations/v50.js +4 -2
  430. package/dist/db/migrations/v51.js +4 -2
  431. package/dist/db/migrations/v52.js +2 -1
  432. package/dist/db/migrations/v53.js +8 -4
  433. package/dist/db/migrations/v54.js +2 -1
  434. package/dist/db/migrations/v55.js +4 -2
  435. package/dist/db/migrations/v56.d.ts +3 -0
  436. package/dist/db/migrations/v56.js +28 -0
  437. package/dist/db/open.d.ts +24 -12
  438. package/dist/db/open.js +25 -13
  439. package/dist/db/physics-state.d.ts +8 -8
  440. package/dist/db/physics-state.js +17 -50
  441. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  442. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  443. package/dist/db/request-stores.d.ts +20 -5
  444. package/dist/db/request-stores.js +15 -5
  445. package/dist/db/tables.d.ts +2 -1
  446. package/dist/db/tables.js +12 -4
  447. package/dist/db/vector-store.d.ts +13 -4
  448. package/dist/db/vector-store.js +35 -14
  449. package/dist/db/wal-checkpointer.d.ts +2 -1
  450. package/dist/db/wal-checkpointer.js +19 -7
  451. package/dist/doctor.d.ts +7 -1
  452. package/dist/doctor.js +128 -46
  453. package/dist/embeddings/local.d.ts +8 -4
  454. package/dist/embeddings/local.js +11 -7
  455. package/dist/embeddings/provider.d.ts +19 -10
  456. package/dist/embeddings/provider.js +32 -27
  457. package/dist/embeddings/transformers.d.ts +16 -4
  458. package/dist/embeddings/transformers.js +32 -15
  459. package/dist/entry/json-hooks.d.ts +1 -1
  460. package/dist/entry/json-hooks.js +1 -1
  461. package/dist/entry/project-identity.js +2 -1
  462. package/dist/entry/session-text.d.ts +1 -1
  463. package/dist/entry/session-text.js +1 -1
  464. package/dist/entry/sqlite-handles.d.ts +10 -0
  465. package/dist/entry/sqlite-handles.js +9 -0
  466. package/dist/entry/store-kit.d.ts +50 -0
  467. package/dist/entry/store-kit.js +27 -0
  468. package/dist/entry/testing.d.ts +6 -0
  469. package/dist/entry/testing.js +7 -0
  470. package/dist/eval/eval-stats.d.ts +27 -8
  471. package/dist/eval/eval-stats.js +17 -5
  472. package/dist/eval/eval-suite.d.ts +3 -1
  473. package/dist/eval/eval-suite.js +409 -187
  474. package/dist/eval/eval.d.ts +8 -2
  475. package/dist/eval/eval.js +8 -2
  476. package/dist/eval/judgment.js +17 -7
  477. package/dist/graph/delta.d.ts +9 -42
  478. package/dist/graph/delta.js +17 -11
  479. package/dist/graph/extract.d.ts +10 -7
  480. package/dist/graph/extract.js +57 -25
  481. package/dist/graph/recall.d.ts +12 -4
  482. package/dist/graph/recall.js +30 -13
  483. package/dist/graph/stream.d.ts +18 -6
  484. package/dist/graph/stream.js +32 -10
  485. package/dist/graph/view.d.ts +19 -6
  486. package/dist/graph/view.js +42 -17
  487. package/dist/hooks/codex-session.js +2 -2
  488. package/dist/hooks/codex-wrapper.d.ts +3 -1
  489. package/dist/hooks/codex-wrapper.js +9 -4
  490. package/dist/hooks/copilot.d.ts +19 -5
  491. package/dist/hooks/copilot.js +54 -15
  492. package/dist/hooks/hook-blocks.d.ts +4 -1
  493. package/dist/hooks/hook-blocks.js +8 -3
  494. package/dist/hooks/json-hooks.d.ts +9 -5
  495. package/dist/hooks/json-hooks.js +72 -33
  496. package/dist/hooks/opencode.js +15 -5
  497. package/dist/hooks/shared.d.ts +27 -8
  498. package/dist/hooks/shared.js +57 -16
  499. package/dist/importers/core.d.ts +12 -4
  500. package/dist/importers/core.js +11 -10
  501. package/dist/importers/markdown-parse.d.ts +15 -5
  502. package/dist/importers/markdown-parse.js +16 -7
  503. package/dist/importers/markdown.js +6 -9
  504. package/dist/importers/sources.js +10 -23
  505. package/dist/importers/vault.d.ts +3 -3
  506. package/dist/importers/vault.js +61 -45
  507. package/dist/index.d.ts +33 -7
  508. package/dist/index.js +26 -8
  509. package/dist/learn/autolearn.d.ts +21 -6
  510. package/dist/learn/autolearn.js +57 -26
  511. package/dist/learn/churn-git.d.ts +4 -1
  512. package/dist/learn/churn-git.js +29 -5
  513. package/dist/learn/extract.d.ts +4 -1
  514. package/dist/learn/extract.js +17 -10
  515. package/dist/learn/forward-claim-detector.d.ts +17 -5
  516. package/dist/learn/forward-claim-detector.js +34 -15
  517. package/dist/learn/invalidation.d.ts +12 -6
  518. package/dist/learn/invalidation.js +62 -28
  519. package/dist/learn/roots.d.ts +3 -0
  520. package/dist/learn/roots.js +5 -0
  521. package/dist/mcp/admin-tools.d.ts +5 -5
  522. package/dist/mcp/admin-tools.js +28 -23
  523. package/dist/mcp/format.d.ts +1 -1
  524. package/dist/mcp/format.js +4 -2
  525. package/dist/mcp/framing.d.ts +3 -1
  526. package/dist/mcp/framing.js +20 -8
  527. package/dist/mcp/memory-tools.d.ts +3 -3
  528. package/dist/mcp/memory-tools.js +21 -20
  529. package/dist/mcp/protocol.d.ts +32 -16
  530. package/dist/mcp/protocol.js +12 -9
  531. package/dist/mcp/recall-tools.d.ts +3 -3
  532. package/dist/mcp/recall-tools.js +62 -74
  533. package/dist/mcp/request.d.ts +7 -5
  534. package/dist/mcp/request.js +61 -77
  535. package/dist/mcp/server.d.ts +3 -1
  536. package/dist/mcp/server.js +8 -3
  537. package/dist/mcp/session-state.d.ts +1 -1
  538. package/dist/mcp/session-state.js +4 -3
  539. package/dist/mcp/shared-gate.d.ts +3 -2
  540. package/dist/mcp/shared-gate.js +3 -2
  541. package/dist/mcp/stdio.d.ts +6 -3
  542. package/dist/mcp/stdio.js +59 -23
  543. package/dist/mcp/tool-args.d.ts +4 -1
  544. package/dist/mcp/tool-args.js +8 -3
  545. package/dist/mcp/tools.js +76 -32
  546. package/dist/objects/customer-notes.d.ts +12 -10
  547. package/dist/objects/customer-notes.js +21 -15
  548. package/dist/objects/decisions.d.ts +18 -10
  549. package/dist/objects/decisions.js +23 -17
  550. package/dist/objects/descriptor.js +2 -1
  551. package/dist/objects/fields.d.ts +4 -1
  552. package/dist/objects/fields.js +6 -2
  553. package/dist/objects/incidents.d.ts +14 -16
  554. package/dist/objects/incidents.js +29 -30
  555. package/dist/objects/lifecycle.d.ts +0 -4
  556. package/dist/objects/lifecycle.js +21 -24
  557. package/dist/objects/policies.d.ts +12 -16
  558. package/dist/objects/policies.js +17 -21
  559. package/dist/objects/processes.d.ts +16 -10
  560. package/dist/objects/processes.js +20 -15
  561. package/dist/objects/project-briefs.d.ts +13 -14
  562. package/dist/objects/project-briefs.js +33 -39
  563. package/dist/objects/skills.d.ts +10 -12
  564. package/dist/objects/skills.js +17 -22
  565. package/dist/postinstall.js +15 -7
  566. package/dist/predictions/planning-fallacy.d.ts +19 -6
  567. package/dist/predictions/planning-fallacy.js +4 -2
  568. package/dist/rerankers/clef.d.ts +8 -2
  569. package/dist/rerankers/clef.js +14 -9
  570. package/dist/rerankers/cross-encoder.d.ts +2 -1
  571. package/dist/rerankers/cross-encoder.js +19 -9
  572. package/dist/rerankers/index.js +2 -1
  573. package/dist/rerankers/jev.js +2 -1
  574. package/dist/rerankers/llm.d.ts +6 -2
  575. package/dist/rerankers/llm.js +8 -3
  576. package/dist/rerankers/remote.d.ts +3 -1
  577. package/dist/rerankers/remote.js +5 -2
  578. package/dist/rerankers/types.d.ts +6 -2
  579. package/dist/search/bm25-search.d.ts +3 -1
  580. package/dist/search/bm25-search.js +15 -2
  581. package/dist/search/boosts.js +4 -3
  582. package/dist/search/embed-memories.d.ts +12 -4
  583. package/dist/search/embed-memories.js +96 -58
  584. package/dist/search/engine.d.ts +11 -0
  585. package/dist/search/engine.js +14 -0
  586. package/dist/search/goal-boost.d.ts +10 -3
  587. package/dist/search/goal-boost.js +13 -6
  588. package/dist/search/hybrid-score.d.ts +4 -1
  589. package/dist/search/hybrid-score.js +4 -1
  590. package/dist/search/hybrid.d.ts +23 -8
  591. package/dist/search/hybrid.js +12 -7
  592. package/dist/search/multihop.js +14 -13
  593. package/dist/search/path-context.d.ts +10 -3
  594. package/dist/search/path-context.js +10 -3
  595. package/dist/search/physics-search.d.ts +9 -4
  596. package/dist/search/physics-search.js +38 -14
  597. package/dist/search/rerank.d.ts +2 -1
  598. package/dist/search/rerank.js +2 -1
  599. package/dist/search/rrf.d.ts +14 -5
  600. package/dist/search/rrf.js +11 -4
  601. package/dist/search/vector.d.ts +8 -2
  602. package/dist/search/vector.js +14 -8
  603. package/dist/server/auth.d.ts +19 -15
  604. package/dist/server/auth.js +68 -38
  605. package/dist/server/boot.d.ts +4 -1
  606. package/dist/server/boot.js +115 -67
  607. package/dist/server/client-ip.d.ts +17 -5
  608. package/dist/server/client-ip.js +56 -21
  609. package/dist/server/cursor.d.ts +10 -3
  610. package/dist/server/cursor.js +10 -3
  611. package/dist/server/deadline.d.ts +5 -2
  612. package/dist/server/deadline.js +10 -3
  613. package/dist/server/key-check-bounds.js +12 -4
  614. package/dist/server/lifecycle.d.ts +4 -1
  615. package/dist/server/lifecycle.js +10 -4
  616. package/dist/server/mcp-http.d.ts +2 -1
  617. package/dist/server/mcp-http.js +37 -22
  618. package/dist/server/rate-limit.d.ts +17 -5
  619. package/dist/server/rate-limit.js +55 -26
  620. package/dist/server/ready.js +7 -4
  621. package/dist/server/request.d.ts +15 -4
  622. package/dist/server/request.js +42 -15
  623. package/dist/server/route-checks.d.ts +4 -1
  624. package/dist/server/route-checks.js +8 -3
  625. package/dist/server/route-table.d.ts +8 -6
  626. package/dist/server/route-table.js +550 -97
  627. package/dist/server/routes/admin.d.ts +7 -7
  628. package/dist/server/routes/admin.js +36 -15
  629. package/dist/server/routes/customer-notes.d.ts +5 -5
  630. package/dist/server/routes/customer-notes.js +5 -4
  631. package/dist/server/routes/decisions.d.ts +5 -5
  632. package/dist/server/routes/decisions.js +12 -6
  633. package/dist/server/routes/incidents.d.ts +5 -5
  634. package/dist/server/routes/incidents.js +10 -4
  635. package/dist/server/routes/memories.d.ts +8 -8
  636. package/dist/server/routes/memories.js +12 -17
  637. package/dist/server/routes/object-routes.d.ts +8 -5
  638. package/dist/server/routes/object-routes.js +4 -2
  639. package/dist/server/routes/policies.d.ts +6 -6
  640. package/dist/server/routes/policies.js +11 -4
  641. package/dist/server/routes/predictions.d.ts +5 -5
  642. package/dist/server/routes/predictions.js +9 -4
  643. package/dist/server/routes/processes.d.ts +5 -5
  644. package/dist/server/routes/processes.js +15 -6
  645. package/dist/server/routes/project-briefs.d.ts +6 -6
  646. package/dist/server/routes/project-briefs.js +3 -2
  647. package/dist/server/routes/recall.d.ts +3 -3
  648. package/dist/server/routes/recall.js +21 -10
  649. package/dist/server/routes/skills.d.ts +6 -6
  650. package/dist/server/routes/skills.js +12 -4
  651. package/dist/server/server-detect.d.ts +24 -8
  652. package/dist/server/server-detect.js +57 -22
  653. package/dist/server/sleep-child.js +16 -10
  654. package/dist/server/sleep-offload.d.ts +8 -5
  655. package/dist/server/sleep-offload.js +40 -18
  656. package/dist/server/tls.d.ts +10 -2
  657. package/dist/server/tls.js +25 -5
  658. package/dist/server/types.d.ts +41 -24
  659. package/dist/server/validation.d.ts +4 -1
  660. package/dist/server/validation.js +22 -9
  661. package/dist/server.d.ts +17 -49
  662. package/dist/server.js +33 -40
  663. package/dist/sharing/global-store.d.ts +6 -12
  664. package/dist/sharing/global-store.js +8 -48
  665. package/dist/sharing/global-sync.d.ts +3 -1
  666. package/dist/sharing/global-sync.js +17 -7
  667. package/dist/sharing/project-merge.d.ts +25 -7
  668. package/dist/sharing/project-merge.js +49 -17
  669. package/dist/sharing/search-both.d.ts +8 -4
  670. package/dist/sharing/search-both.js +28 -14
  671. package/dist/sharing/share.d.ts +8 -4
  672. package/dist/sharing/share.js +40 -18
  673. package/dist/store/ambient.js +10 -5
  674. package/dist/store/audit-event.d.ts +2 -2
  675. package/dist/store/audit-event.js +8 -3
  676. package/dist/store/audit.d.ts +6 -3
  677. package/dist/store/audit.js +16 -6
  678. package/dist/store/auth.d.ts +4 -2
  679. package/dist/store/auth.js +63 -20
  680. package/dist/store/busy.d.ts +9 -0
  681. package/dist/store/busy.js +16 -0
  682. package/dist/store/candidates.d.ts +12 -5
  683. package/dist/store/candidates.js +90 -41
  684. package/dist/store/capture-write.d.ts +2 -1
  685. package/dist/store/capture-write.js +2 -1
  686. package/dist/store/card-detail.d.ts +4 -4
  687. package/dist/store/card-detail.js +15 -8
  688. package/dist/store/cards.d.ts +24 -10
  689. package/dist/store/cards.js +97 -63
  690. package/dist/store/compaction-caller.d.ts +2 -1
  691. package/dist/store/compaction-caller.js +2 -1
  692. package/dist/store/compactions-record.d.ts +14 -8
  693. package/dist/store/compactions-record.js +101 -37
  694. package/dist/store/compactions.js +35 -15
  695. package/dist/store/conflicts.d.ts +16 -5
  696. package/dist/store/conflicts.js +104 -48
  697. package/dist/store/connectors/dlq.d.ts +17 -5
  698. package/dist/store/connectors/dlq.js +58 -6
  699. package/dist/store/connectors/event-log.d.ts +122 -0
  700. package/dist/store/connectors/event-log.js +25 -0
  701. package/dist/store/connectors/github.d.ts +6 -3
  702. package/dist/store/connectors/github.js +30 -48
  703. package/dist/store/connectors/slack.d.ts +2 -1
  704. package/dist/store/connectors/slack.js +31 -47
  705. package/dist/store/dashboard-reads.d.ts +7 -3
  706. package/dist/store/dashboard-reads.js +32 -10
  707. package/dist/store/delete-and-batch.d.ts +17 -11
  708. package/dist/store/delete-and-batch.js +70 -28
  709. package/dist/store/delivery-recorder.d.ts +10 -7
  710. package/dist/store/delivery-recorder.js +70 -37
  711. package/dist/store/descendant-page.d.ts +2 -1
  712. package/dist/store/descendant-page.js +26 -10
  713. package/dist/store/diagnostics.d.ts +2 -1
  714. package/dist/store/diagnostics.js +2 -1
  715. package/dist/store/doctor-reads.d.ts +2 -1
  716. package/dist/store/doctor-reads.js +13 -5
  717. package/dist/store/dormant.d.ts +19 -11
  718. package/dist/store/dormant.js +45 -19
  719. package/dist/store/embeddings/index.d.ts +13 -9
  720. package/dist/store/embeddings/index.js +19 -12
  721. package/dist/store/entry-reads.d.ts +72 -21
  722. package/dist/store/entry-reads.js +215 -69
  723. package/dist/store/entry-row.d.ts +10 -6
  724. package/dist/store/entry-row.js +26 -14
  725. package/dist/store/entry-writes.d.ts +28 -13
  726. package/dist/store/entry-writes.js +61 -22
  727. package/dist/store/failure-log-at.js +1 -1
  728. package/dist/store/failure-log.d.ts +4 -2
  729. package/dist/store/failure-log.js +13 -6
  730. package/dist/store/gated-write.d.ts +3 -3
  731. package/dist/store/gated-write.js +3 -3
  732. package/dist/store/goals.d.ts +5 -4
  733. package/dist/store/goals.js +11 -12
  734. package/dist/store/graph-apply.d.ts +21 -0
  735. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  736. package/dist/store/graph-queue.d.ts +9 -6
  737. package/dist/store/graph-queue.js +15 -10
  738. package/dist/store/graph-reads.d.ts +16 -11
  739. package/dist/store/graph-reads.js +29 -19
  740. package/dist/store/graph-rows.d.ts +41 -3
  741. package/dist/store/graph-rows.js +10 -7
  742. package/dist/store/graph-view-rows.js +15 -7
  743. package/dist/store/graph-writes.d.ts +16 -10
  744. package/dist/store/graph-writes.js +59 -36
  745. package/dist/store/half-life.js +2 -2
  746. package/dist/store/handoffs.d.ts +13 -7
  747. package/dist/store/handoffs.js +44 -22
  748. package/dist/store/index-and-stats.d.ts +2 -2
  749. package/dist/store/index-and-stats.js +6 -5
  750. package/dist/store/index.d.ts +4 -2
  751. package/dist/store/index.js +2 -1
  752. package/dist/store/key-audit.d.ts +2 -1
  753. package/dist/store/key-audit.js +2 -1
  754. package/dist/store/key-writes.d.ts +2 -1
  755. package/dist/store/key-writes.js +9 -2
  756. package/dist/store/ledger-turn.d.ts +4 -1
  757. package/dist/store/ledger-turn.js +7 -2
  758. package/dist/store/mirrors.d.ts +11 -4
  759. package/dist/store/mirrors.js +96 -19
  760. package/dist/store/narrow.d.ts +6 -0
  761. package/dist/store/narrow.js +11 -0
  762. package/dist/store/open.d.ts +6 -3
  763. package/dist/store/open.js +20 -10
  764. package/dist/store/pilot-arm.d.ts +2 -1
  765. package/dist/store/pilot-arm.js +18 -6
  766. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  767. package/dist/store/planning-fallacy-evidence.js +8 -5
  768. package/dist/store/port/agent-import.d.ts +62 -0
  769. package/dist/store/port/agent-import.js +2 -0
  770. package/dist/store/port/consolidation.d.ts +129 -0
  771. package/dist/store/port/consolidation.js +2 -0
  772. package/dist/store/port/learning.d.ts +19 -0
  773. package/dist/store/port/learning.js +2 -0
  774. package/dist/store/port/local-files.d.ts +18 -0
  775. package/dist/store/port/local-files.js +2 -0
  776. package/dist/store/port/promotion.d.ts +20 -0
  777. package/dist/store/port/promotion.js +3 -0
  778. package/dist/store/port-groups.d.ts +160 -0
  779. package/dist/store/port-groups.js +2 -0
  780. package/dist/store/port.d.ts +261 -219
  781. package/dist/store/port.js +3 -9
  782. package/dist/store/predictions.d.ts +14 -10
  783. package/dist/store/predictions.js +37 -17
  784. package/dist/store/project-tags.d.ts +4 -1
  785. package/dist/store/project-tags.js +16 -5
  786. package/dist/store/quality-repair.d.ts +8 -4
  787. package/dist/store/quality-repair.js +53 -20
  788. package/dist/store/quarantine.d.ts +1 -0
  789. package/dist/store/quarantine.js +23 -9
  790. package/dist/store/raw-archive.d.ts +5 -4
  791. package/dist/store/raw-archive.js +11 -10
  792. package/dist/store/recall-trace.d.ts +22 -17
  793. package/dist/store/recall-trace.js +128 -64
  794. package/dist/store/rejected-values.d.ts +15 -10
  795. package/dist/store/rejected-values.js +46 -20
  796. package/dist/store/rejection.d.ts +12 -11
  797. package/dist/store/rejection.js +18 -19
  798. package/dist/store/report-reads.d.ts +2 -1
  799. package/dist/store/report-reads.js +2 -1
  800. package/dist/store/rows.d.ts +7 -5
  801. package/dist/store/rows.js +20 -13
  802. package/dist/store/rule-sql.d.ts +7 -3
  803. package/dist/store/rule-sql.js +26 -13
  804. package/dist/store/search-rows.d.ts +16 -11
  805. package/dist/store/search-rows.js +54 -32
  806. package/dist/store/sessions.d.ts +12 -10
  807. package/dist/store/sessions.js +40 -21
  808. package/dist/store/set-aside.d.ts +2 -2
  809. package/dist/store/set-aside.js +18 -5
  810. package/dist/store/sqlite/agent-import.d.ts +3 -0
  811. package/dist/store/sqlite/agent-import.js +77 -0
  812. package/dist/store/sqlite/cards-group.d.ts +6 -0
  813. package/dist/store/sqlite/cards-group.js +37 -0
  814. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  815. package/dist/store/sqlite/conflicts-group.js +18 -0
  816. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  817. package/dist/store/sqlite/connector-events-group.js +17 -6
  818. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  819. package/dist/store/sqlite/connector-writes-group.js +12 -5
  820. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  821. package/dist/store/sqlite/consolidation-group.js +64 -0
  822. package/dist/store/sqlite/dag-reads-group.js +1 -1
  823. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  824. package/dist/store/sqlite/dormant-group.js +29 -0
  825. package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
  826. package/dist/store/sqlite/entry-writes-group.js +37 -14
  827. package/dist/store/sqlite/error-codec.d.ts +4 -2
  828. package/dist/store/sqlite/error-codec.js +32 -10
  829. package/dist/store/sqlite/executor-counts.js +2 -1
  830. package/dist/store/sqlite/executor.d.ts +8 -3
  831. package/dist/store/sqlite/executor.js +56 -18
  832. package/dist/store/sqlite/global-promote.d.ts +5 -0
  833. package/dist/store/sqlite/global-promote.js +48 -0
  834. package/dist/store/sqlite/goals-group.d.ts +6 -0
  835. package/dist/store/sqlite/goals-group.js +23 -0
  836. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  837. package/dist/store/sqlite/graph-reads-group.js +2 -1
  838. package/dist/store/sqlite/held-connection.d.ts +8 -0
  839. package/dist/store/sqlite/held-connection.js +34 -7
  840. package/dist/store/sqlite/last-recall-group.d.ts +15 -0
  841. package/dist/store/sqlite/last-recall-group.js +62 -0
  842. package/dist/store/sqlite/learning-group.d.ts +4 -0
  843. package/dist/store/sqlite/learning-group.js +17 -0
  844. package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
  845. package/dist/store/sqlite/maintenance-groups.js +61 -0
  846. package/dist/store/sqlite/object-rows.d.ts +6 -3
  847. package/dist/store/sqlite/object-rows.js +34 -5
  848. package/dist/store/sqlite/objects-group.d.ts +5 -4
  849. package/dist/store/sqlite/objects-group.js +97 -38
  850. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  851. package/dist/store/sqlite/predictions-group.js +4 -2
  852. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  853. package/dist/store/sqlite/promotion-group.js +10 -0
  854. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  855. package/dist/store/sqlite/quarantine-group.js +4 -2
  856. package/dist/store/sqlite/reports-group.d.ts +6 -0
  857. package/dist/store/sqlite/reports-group.js +33 -0
  858. package/dist/store/sqlite/request-scope.d.ts +6 -0
  859. package/dist/store/sqlite/request-scope.js +18 -0
  860. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  861. package/dist/store/sqlite/sessions-group.js +46 -0
  862. package/dist/store/sqlite/store.d.ts +22 -18
  863. package/dist/store/sqlite/store.js +95 -33
  864. package/dist/store/sqlite/vector-pack.js +2 -1
  865. package/dist/store/sqlite/vector-reads-group.js +2 -1
  866. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  867. package/dist/store/sqlite/worker-jobs.js +19 -7
  868. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  869. package/dist/store/sqlite/worker-ops.js +6 -3
  870. package/dist/store/sqlite/worker-store.d.ts +4 -3
  871. package/dist/store/sqlite/worker-store.js +24 -14
  872. package/dist/store/summaries.d.ts +25 -11
  873. package/dist/store/summaries.js +84 -27
  874. package/dist/store/summary-dirty.d.ts +2 -1
  875. package/dist/store/summary-dirty.js +2 -1
  876. package/dist/store/tenant.d.ts +3 -2
  877. package/dist/store/tenant.js +5 -4
  878. package/dist/store/token-ledger-rows.js +8 -4
  879. package/dist/store/token-ledger.d.ts +19 -13
  880. package/dist/store/token-ledger.js +27 -14
  881. package/dist/store/tombstone-checks.d.ts +4 -1
  882. package/dist/store/tombstone-checks.js +10 -1
  883. package/dist/store/usage-reports.js +2 -1
  884. package/dist/store/vector-index.d.ts +8 -5
  885. package/dist/store/vector-index.js +28 -11
  886. package/dist/store/working-memory.d.ts +6 -4
  887. package/dist/store/working-memory.js +14 -9
  888. package/dist/support-bundle.js +10 -5
  889. package/dist/trust/quarantine.d.ts +1 -2
  890. package/dist/trust/quarantine.js +1 -5
  891. package/dist/trust/reject-flow.d.ts +12 -3
  892. package/dist/trust/reject-flow.js +12 -4
  893. package/dist/util/anthropic-messages.d.ts +7 -2
  894. package/dist/util/anthropic-messages.js +18 -7
  895. package/dist/util/atomic-write.d.ts +8 -3
  896. package/dist/util/atomic-write.js +36 -21
  897. package/dist/util/compaction-items.d.ts +4 -1
  898. package/dist/util/compaction-items.js +8 -2
  899. package/dist/util/crash-handlers.d.ts +7 -2
  900. package/dist/util/crash-handlers.js +13 -4
  901. package/dist/util/env.d.ts +26 -5
  902. package/dist/util/env.js +87 -25
  903. package/dist/util/format.d.ts +2 -0
  904. package/dist/util/format.js +4 -0
  905. package/dist/util/home-path.js +12 -6
  906. package/dist/util/hook-payload.d.ts +3 -1
  907. package/dist/util/hook-payload.js +3 -1
  908. package/dist/util/http-retry.d.ts +12 -6
  909. package/dist/util/http-retry.js +16 -6
  910. package/dist/util/http-util.d.ts +20 -5
  911. package/dist/util/http-util.js +28 -9
  912. package/dist/util/json.d.ts +4 -1
  913. package/dist/util/json.js +4 -1
  914. package/dist/util/keyset.js +2 -1
  915. package/dist/util/limits.js +4 -2
  916. package/dist/util/log.d.ts +13 -5
  917. package/dist/util/log.js +29 -6
  918. package/dist/util/net.d.ts +5 -0
  919. package/dist/util/net.js +19 -0
  920. package/dist/util/real-path.d.ts +2 -1
  921. package/dist/util/real-path.js +4 -3
  922. package/dist/util/request-scope.d.ts +16 -4
  923. package/dist/util/request-scope.js +19 -6
  924. package/dist/util/same-text.d.ts +10 -3
  925. package/dist/util/same-text.js +10 -3
  926. package/dist/util/secret-detect.d.ts +24 -7
  927. package/dist/util/secret-detect.js +49 -14
  928. package/dist/util/spawn-argv.d.ts +11 -0
  929. package/dist/util/spawn-argv.js +66 -0
  930. package/dist/util/sql.d.ts +3 -0
  931. package/dist/util/sql.js +6 -0
  932. package/dist/util/sqlite-blocked.d.ts +15 -4
  933. package/dist/util/sqlite-blocked.js +19 -6
  934. package/dist/util/stored-json.d.ts +4 -1
  935. package/dist/util/stored-json.js +6 -2
  936. package/dist/util/stream-tee.d.ts +2 -1
  937. package/dist/util/stream-tee.js +8 -5
  938. package/dist/util/transcript-tail.d.ts +4 -1
  939. package/dist/util/transcript-tail.js +4 -1
  940. package/dist/util/vector-codec.d.ts +4 -0
  941. package/dist/util/vector-codec.js +15 -0
  942. package/dist/util/version.d.ts +8 -3
  943. package/dist/util/version.js +8 -3
  944. package/dist/util/write-budget.d.ts +7 -2
  945. package/dist/util/write-budget.js +5 -2
  946. package/dist/util/yaml.d.ts +4 -1
  947. package/dist/util/yaml.js +4 -1
  948. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  949. package/extensions/openclaw-plugin/package.json +1 -1
  950. package/openclaw.plugin.json +1 -1
  951. package/package.json +4 -1
  952. package/scripts/postinstall.cjs +3 -1
  953. package/dist/api/audit.js +0 -56
  954. package/dist/api/cards.d.ts +0 -42
  955. package/dist/api/conflicts.d.ts +0 -28
  956. package/dist/api/conflicts.js +0 -61
  957. package/dist/api/dormant.d.ts +0 -14
  958. package/dist/api/dormant.js +0 -58
  959. package/dist/api/goals.d.ts +0 -18
  960. package/dist/api/graph.d.ts +0 -8
  961. package/dist/api/graph.js +0 -7
  962. package/dist/api/learn.js +0 -124
  963. package/dist/api/memories.d.ts +0 -23
  964. package/dist/api/memories.js +0 -46
  965. package/dist/api/objects.d.ts +0 -9
  966. package/dist/api/on-store.d.ts +0 -16
  967. package/dist/api/on-store.js +0 -38
  968. package/dist/api/outcome.d.ts +0 -19
  969. package/dist/api/outcome.js +0 -21
  970. package/dist/api/predictions.d.ts +0 -11
  971. package/dist/api/promote.d.ts +0 -36
  972. package/dist/api/promote.js +0 -65
  973. package/dist/api/recall-core.d.ts +0 -4
  974. package/dist/api/recall-core.js +0 -120
  975. package/dist/api/recall-finish.d.ts +0 -53
  976. package/dist/api/recall-finish.js +0 -30
  977. package/dist/api/recall-history.d.ts +0 -64
  978. package/dist/api/recall-history.js +0 -159
  979. package/dist/api/recall-record.d.ts +0 -43
  980. package/dist/api/recall-record.js +0 -78
  981. package/dist/api/recall-request.js +0 -121
  982. package/dist/api/recall.d.ts +0 -6
  983. package/dist/api/refine.d.ts +0 -7
  984. package/dist/api/refine.js +0 -10
  985. package/dist/api/session-owners.d.ts +0 -4
  986. package/dist/api/session-owners.js +0 -17
  987. package/dist/api/sleep-run.d.ts +0 -26
  988. package/dist/api/sleep.js +0 -10
  989. package/dist/cli/lenient-id.d.ts +0 -2
  990. package/dist/cli/lenient-id.js +0 -13
  991. package/dist/graph/write.d.ts +0 -14
  992. package/dist/store/sqlite/busy.d.ts +0 -3
  993. package/dist/store/sqlite/busy.js +0 -8
  994. package/dist/store/sqlite/local.d.ts +0 -21
  995. package/dist/store/sqlite/local.js +0 -39
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,29 +1,53 @@
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. */
28
- export declare function inPilotHoldout(hippoRoot: string, tenantId: string, sessionId: string | undefined, write: boolean): boolean;
50
+ export declare function inPilotHoldout(hippoRoot: string, tenantId: string, sessionId: string | undefined, opts: {
51
+ write: boolean;
52
+ }): boolean;
29
53
  //# sourceMappingURL=hook-runtime.d.ts.map
@@ -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 {
@@ -106,7 +130,8 @@ export async function runHookWithStores(fn) {
106
130
  }
107
131
  }
108
132
  /** Whether this session sits in the pilot's holdout arm; off at rate 0 and with no session id. */
109
- export function inPilotHoldout(hippoRoot, tenantId, sessionId, write) {
110
- return sessionPilotArm(hippoRoot, tenantId, sessionId, write) === 'holdout';
133
+ export function inPilotHoldout(hippoRoot, tenantId, sessionId, opts) {
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}`);
@@ -1,3 +1,3 @@
1
1
  import { type CommandContext } from './flag-values.js';
2
- export declare function handleInit({ hippoRoot, tenantId, flags }: CommandContext): void;
2
+ export declare function handleInit({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
3
3
  //# sourceMappingURL=init.d.ts.map
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
@@ -68,12 +73,12 @@ function initScannedRepo(repo, tenantId, globalRoot) {
68
73
  return alreadyExists;
69
74
  }
70
75
  /** Seeds one scanned repo from git history and its agents' notes, unless --no-learn. */
71
- function learnScannedRepo(repo, tenantId, seedDays, learn, machine, agentImport) {
76
+ async function learnScannedRepo(repo, tenantId, seedDays, learn, machine, agentImport) {
72
77
  const repoHippo = path.join(repo, '.hippo');
73
78
  let added = 0;
74
79
  let lowInfo = 0;
75
80
  if (learn && isGitRepo(repo)) {
76
- const result = learnFromRepo(repoHippo, tenantId, repo, seedDays, path.basename(repo));
81
+ const result = await learnFromRepo(repoHippo, tenantId, repo, seedDays, path.basename(repo));
77
82
  added = result.added;
78
83
  lowInfo = result.lowInfo;
79
84
  }
@@ -102,7 +107,7 @@ function printScanSummary(repoCount, totalLessons, totalLowInfo) {
102
107
  (totalLowInfo > 0 ? `, ${totalLowInfo} low-information subject(s) dropped` : '') +
103
108
  '.');
104
109
  }
105
- function cmdInitScan(scanDir, tenantId, flags) {
110
+ async function cmdInitScan(scanDir, tenantId, flags) {
106
111
  const resolved = path.resolve(scanDir);
107
112
  console.log(`Scanning ${resolved} for git repositories...\n`);
108
113
  const repos = scanForGitRepos(resolved);
@@ -121,12 +126,13 @@ function cmdInitScan(scanDir, tenantId, flags) {
121
126
  const learn = !flags['no-learn'];
122
127
  for (const repo of repos) {
123
128
  const alreadyExists = initScannedRepo(repo, tenantId, globalRoot);
124
- const { added, lowInfo } = learnScannedRepo(repo, tenantId, seedDays, learn, machine, agentImport);
129
+ const { added, lowInfo } = await learnScannedRepo(repo, tenantId, seedDays, learn, machine, agentImport);
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) {
@@ -153,12 +159,12 @@ function initGlobalOnly(flags) {
153
159
  if (!flags['no-learn'])
154
160
  printAgentImport(importUserMemories(globalRoot, { machine: currentMachine() }));
155
161
  }
156
- function seedFromGitHistory(hippoRoot, tenantId) {
162
+ async function seedFromGitHistory(hippoRoot, tenantId) {
157
163
  if (!isGitRepo(process.cwd()))
158
164
  return;
159
165
  const seedDays = 30;
160
166
  console.log(`\n Seeding memories from last ${seedDays} days of git history...`);
161
- const { added, skipped } = learnFromRepo(hippoRoot, tenantId, process.cwd(), seedDays);
167
+ const { added, skipped } = await learnFromRepo(hippoRoot, tenantId, process.cwd(), seedDays);
162
168
  if (added > 0) {
163
169
  console.log(` Learned ${added} lessons from git (${skipped} duplicates skipped).`);
164
170
  }
@@ -166,11 +172,11 @@ function seedFromGitHistory(hippoRoot, tenantId) {
166
172
  console.log(` No matching commits found in git history.`);
167
173
  }
168
174
  }
169
- export function handleInit({ hippoRoot, tenantId, flags }) {
175
+ export async function handleInit({ hippoRoot, tenantId, flags }) {
170
176
  // Handle --scan mode
171
177
  if (flags['scan']) {
172
178
  const scanDir = stringFlag(flags, 'scan') ?? os.homedir();
173
- cmdInitScan(scanDir, tenantId, flags);
179
+ await cmdInitScan(scanDir, tenantId, flags);
174
180
  return;
175
181
  }
176
182
  if (flags['global']) {
@@ -199,12 +205,15 @@ export function handleInit({ hippoRoot, tenantId, flags }) {
199
205
  const learn = !flags['no-learn'] && !skipLearnOnSharedStore(hippoRoot);
200
206
  // Seed with git history on first init (unless --no-learn)
201
207
  if (!alreadyExists && learn && !flags['global'])
202
- seedFromGitHistory(hippoRoot, tenantId);
208
+ await seedFromGitHistory(hippoRoot, tenantId);
203
209
  // Every run, not only the first: an agent's notes change between inits.
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