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
@@ -1,7 +1,7 @@
1
- import { type MergeResult, type ProjectSummary, type RepairResult } from '../sharing/project-merge.js';
2
- import type { Context } from './types.js';
3
- export type { MergeResult, ProjectCollision, ProjectSummary, RepairResult } from '../sharing/project-merge.js';
4
- export type { ProjectFold } from '../agent-memories/project-folds.js';
1
+ import { type MergeResult, type ProjectSummary, type RepairResult } from '../../sharing/project-merge.js';
2
+ import type { Context } from '../types.js';
3
+ export type { MergeResult, ProjectCollision, ProjectSummary, RepairResult } from '../../sharing/project-merge.js';
4
+ export type { ProjectFold } from '../../agent-memories/project-folds.js';
5
5
  export interface MergeProjectNamesOpts {
6
6
  from: string;
7
7
  into: string;
@@ -10,7 +10,10 @@ export interface MergeProjectNamesOpts {
10
10
  }
11
11
  /** Live rows per project name in the caller's tenant, newest write first. */
12
12
  export declare function listProjectNames(ctx: Context): ProjectSummary[];
13
- /** Folds project `from` into `into`, backed up and audited as `ctx.actor`; throws on user-global, unknown or equal names. */
13
+ /**
14
+ * Folds project `from` into `into`, backed up and audited as `ctx.actor`; throws on user-global, unknown or equal
15
+ * names.
16
+ */
14
17
  export declare function mergeProjectNames(ctx: Context, opts: MergeProjectNamesOpts): MergeResult;
15
18
  /** Sets aside stray imports, folds renamed projects and re-tags sleep's user-global merges; a dry run only plans. */
16
19
  export declare function repairProjectNames(ctx: Context, opts: {
@@ -1,7 +1,8 @@
1
- // Project names for every front end: list them, fold one into another, and repair old tags; the store opens hippo.db and owns each transaction.
1
+ // Project names for every front end: list them, fold one into another, and repair old tags; the store opens hippo.db
2
+ // and owns each transaction.
2
3
  // SHORTCUT: hippo.db only, since the store port has no project calls; a projects group when a served store needs them.
3
- import { listProjects, mergeProjects, repairOnceOnSleep, repairProjects, } from '../sharing/project-merge.js';
4
- import { onProjectTags } from '../store/project-tags.js';
4
+ import { listProjects, mergeProjects, repairOnceOnSleep, repairProjects, } from '../../sharing/project-merge.js';
5
+ import { onProjectTags } from '../../store/project-tags.js';
5
6
  function onProjects(ctx, fn) {
6
7
  return onProjectTags({ hippoRoot: ctx.hippoRoot, tenantId: ctx.tenantId, actor: ctx.actor.subject }, fn);
7
8
  }
@@ -9,7 +10,10 @@ function onProjects(ctx, fn) {
9
10
  export function listProjectNames(ctx) {
10
11
  return onProjects(ctx, listProjects);
11
12
  }
12
- /** Folds project `from` into `into`, backed up and audited as `ctx.actor`; throws on user-global, unknown or equal names. */
13
+ /**
14
+ * Folds project `from` into `into`, backed up and audited as `ctx.actor`; throws on user-global, unknown or equal
15
+ * names.
16
+ */
13
17
  export function mergeProjectNames(ctx, opts) {
14
18
  return onProjects(ctx, (store) => mergeProjects(store, opts));
15
19
  }
@@ -1,10 +1,14 @@
1
- import { type LedgerRootOpts } from './ledger-db.js';
1
+ import { type LedgerReach } from './ledger-db.js';
2
2
  import { type PilotArm } from '../store/pilot-arm.js';
3
- export interface SessionArmOpts extends LedgerRootOpts {
4
- /** Only the caller tenant's arm row counts, so a caller holding another tenant's session id cannot claim that session's arm. */
3
+ export interface SessionArmOpts {
4
+ readonly reach: LedgerReach;
5
+ /**
6
+ * Only the caller tenant's arm row counts, so a caller holding another tenant's session id cannot claim that
7
+ * session's arm.
8
+ */
5
9
  readonly ownTenantOnly?: boolean;
6
10
  }
7
11
  /** The session's arm, or null at rate 0, with no session id, or with no store.
8
12
  * `write` books the arm row; a read-only caller (env-only id, sub-agent) follows the stored arm, else the hash. */
9
- export declare function sessionPilotArm(hippoRoot: string, tenantId: string, sessionId: string | undefined, write: boolean, opts?: SessionArmOpts): PilotArm | null;
13
+ export declare function sessionPilotArm(hippoRoot: string, tenantId: string, sessionId: string | undefined, write: boolean, opts: SessionArmOpts): PilotArm | null;
10
14
  //# sourceMappingURL=pilot-arm.d.ts.map
@@ -1,21 +1,22 @@
1
- // Which pilot arm a session is in: the rate comes from the ledger store's config, the arm row from src/store/pilot-arm.ts.
1
+ // Which pilot arm a session is in: the rate comes from the ledger store's config, the arm row from
2
+ // src/store/pilot-arm.ts.
2
3
  import { loadConfig } from '../core/config.js';
3
4
  import { ledgerRoot, onLedgerRoot } from './ledger-db.js';
4
5
  import { pilotArmOnRoot } from '../store/ledger-turn.js';
5
6
  import { hashArm } from '../store/pilot-arm.js';
6
7
  /** The session's arm, or null at rate 0, with no session id, or with no store.
7
8
  * `write` books the arm row; a read-only caller (env-only id, sub-agent) follows the stored arm, else the hash. */
8
- export function sessionPilotArm(hippoRoot, tenantId, sessionId, write, opts = {}) {
9
+ export function sessionPilotArm(hippoRoot, tenantId, sessionId, write, opts) {
9
10
  if (sessionId === undefined || sessionId.trim() === '')
10
11
  return null;
11
- const root = ledgerRoot(hippoRoot, opts);
12
+ const root = ledgerRoot(hippoRoot, opts.reach);
12
13
  if (root === null)
13
14
  return null;
14
15
  const rate = loadConfig(root).pilot.holdoutRateBp;
15
16
  if (rate <= 0)
16
17
  return null;
17
18
  const { ownTenantOnly } = opts;
18
- const arm = onLedgerRoot(hippoRoot, opts, (at) => pilotArmOnRoot(at, tenantId, sessionId, rate, { write, ownTenantOnly }));
19
+ const arm = onLedgerRoot(hippoRoot, opts.reach, (at) => pilotArmOnRoot(at, tenantId, sessionId, rate, { write, ownTenantOnly }));
19
20
  return arm ?? hashArm(sessionId, rate);
20
21
  }
21
22
  //# sourceMappingURL=pilot-arm.js.map
@@ -1,7 +1,9 @@
1
- import { type Context, type ContextResult, type ContextResultEntry } from './index.js';
1
+ import { type Context, type ContextResult, type ContextResultEntry, type ContextWith } from './index.js';
2
+ import { type HippoConfig } from '../core/config.js';
2
3
  import { type DeliveryEventType, type DeliveryFault, type DeliveryRecorder } from '../store/delivery-recorder.js';
3
4
  import type { HookRuntime } from '../core/capture-contract.js';
4
5
  import { type JsonValue } from '../util/json.js';
6
+ import { type LedgerReach } from './ledger-db.js';
5
7
  import type { MemoryEntry } from '../core/memory.js';
6
8
  import type { PilotArm } from '../store/pilot-arm.js';
7
9
  import type { DeliveryWrite } from '../store/ledger-turn.js';
@@ -17,13 +19,17 @@ export interface DeliveryStart {
17
19
  }
18
20
  /** A delivery recorder for a hook on `ctx.hippoRoot` when the ledger store enables one, else null; never throws. */
19
21
  export declare function startDeliveryRecorder(ctx: Context, start: DeliveryStart): DeliveryRecorder | null;
20
- /** A recorder for `hippo capture-error`, only when the failure log and the ledger are one store, so `failure_id` never points into another. */
22
+ /** A recorder for `hippo capture-error`, only when the failure log and the ledger are one store, so `failure_id` never
23
+ * points into another. */
21
24
  export declare function startToolFailureRecorder(ctx: Context, start: Omit<DeliveryStart, 'eventType'>): DeliveryRecorder | null;
22
- /** With `write`, stores on the token ledger's connection (same store); without it, opens its own. A second flush is a no-op. */
25
+ /** With `write`, stores on the token ledger's connection (same
26
+ * store); without it, opens its own. A second flush is a no-op. */
23
27
  export declare function flushDeliveryRecorder(rec: DeliveryRecorder | null, write?: DeliveryWrite): void;
24
28
  /** What one render needs once api.getContext has answered. */
25
29
  export interface ContextView {
26
30
  readonly hippoRoot: string;
31
+ /** The caller's Context config, else the folder's config.json is read. */
32
+ readonly config?: HippoConfig;
27
33
  readonly tenantId: string;
28
34
  readonly ledgerSessionId: string | undefined;
29
35
  readonly payloadSessionId: string | undefined;
@@ -31,17 +37,20 @@ export interface ContextView {
31
37
  readonly framing: string;
32
38
  readonly rec: DeliveryRecorder | null;
33
39
  readonly result: ContextResult;
34
- /** Ledger rows stay in `hippoRoot`, never the global store; see promptHookContext. */
35
- readonly sharedStore?: boolean;
40
+ /** Where the ledger rows go; a shared store's reach has no global store, see promptHookContext. */
41
+ readonly reach: LedgerReach;
36
42
  /** The static block's hash the caller says it printed last. Undefined keeps the ledger-only skip rule;
37
- * a string or null also needs that hash to match, because the ledger counts blocks a caller that prints elsewhere may never have shown. */
43
+ * a string or null also needs that hash to match, because the ledger counts blocks a caller that prints elsewhere
44
+ * may never have shown. */
38
45
  readonly printedHash?: string | null;
39
46
  /** The reply's JSON wrapper; absent means Claude Code's UserPromptSubmit. */
40
47
  readonly envelope?: HookEnvelope;
41
48
  }
42
- /** `copilot-session-start` is the Copilot harness's top-level reply, `vscode-session-start` the nested one VS Code Local reads. */
49
+ /** `copilot-session-start` is the Copilot harness's top-level reply,
50
+ * `vscode-session-start` the nested one VS Code Local reads. */
43
51
  export type HookEnvelope = 'user-prompt-submit' | 'copilot-session-start' | 'vscode-session-start';
44
- /** A Copilot sessionStart reply's wrapper, picked by the sender's casing: stdin.ts keeps a camelCase `sessionId`, which only the Copilot harness sends. */
52
+ /** A Copilot sessionStart reply's wrapper, picked by the sender's casing: stdin.ts keeps a camelCase `sessionId`, which
53
+ * only the Copilot harness sends. */
45
54
  export declare function sessionStartEnvelope(stdinText: string | undefined): HookEnvelope;
46
55
  export declare function hasContextData(result: ContextResult): boolean;
47
56
  export type RenderItem = {
@@ -51,36 +60,40 @@ export type RenderItem = {
51
60
  isGlobal: boolean;
52
61
  };
53
62
  export declare function toRenderItems(entries: ContextResultEntry[]): RenderItem[];
54
- /** The hook format's stdout, '' when nothing is sent: a skippable static block (snapshot, handoff, events, pins, recent-N) and a never-skipped recall block. */
63
+ /** The hook format's stdout, '' when nothing is sent: a skippable static block (snapshot, handoff, events, pins,
64
+ * recent-N) and a never-skipped recall block. */
55
65
  export declare function additionalContextOutput(view: ContextView): string;
56
- /** The project a hook caller runs in: its id, the folder name its older rows carry, and any other names it resolves to. */
66
+ /** The project a hook caller runs in: its id, the folder name
67
+ * its older rows carry, and any other names it resolves to. */
57
68
  export interface CallerProject {
58
69
  readonly name: string;
59
70
  readonly legacyName: string;
60
71
  readonly aliases?: readonly string[];
61
72
  }
62
- interface PromptHookRequest {
73
+ export interface PromptHookRequest {
63
74
  readonly sessionId: string;
64
75
  readonly project: CallerProject;
65
76
  readonly payload?: Readonly<Record<string, JsonValue>>;
66
- /** The staticHash of the last reply whose stdout the caller printed in this session; absent, the block is always sent. */
77
+ /** The staticHash of the last reply whose stdout the caller
78
+ * printed in this session; absent, the block is always sent. */
67
79
  readonly printedHash?: string;
68
80
  }
69
- interface PromptHookOpts {
81
+ export interface PromptHookOpts {
70
82
  /** The store serves many people, so the caller is not its owner: no global store, no user-global recent rows,
71
83
  * task state only for the caller's own owner and project, and no ledger rows outside this store. */
72
84
  readonly sharedStore?: true;
73
85
  }
74
86
  /** The caps on a hook caller's session id and project names, so a caller other than an HTTP route is bounded too. */
75
87
  export declare function assertCallerIds(sessionId: string, project: CallerProject): void;
76
- /** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read on `ctx`'s store for its project.
77
- * Omits an unchanged static block only when `printedHash` matches; `arm` is the ledger arm (`hippo` or `holdout`, null at rate 0); a holdout gets empty stdout.
78
- * `staticHash` is the hash to echo back (null with no static block, a sub-agent or a holdout). Scope detection and delivery-ledger events are CLI-only.
79
- * Throws BadRequestError past the input caps, and on a shared store for a project assertCallerProject refuses, before any arm is booked. */
80
- export declare function promptHookContext(ctx: Context, req: PromptHookRequest, opts?: PromptHookOpts): Promise<{
88
+ /** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read
89
+ * on `ctx`'s store for its project. Omits an unchanged static block only when `printedHash` matches; `arm` is the
90
+ * ledger arm (`hippo` or `holdout`, null at rate 0); a holdout gets empty stdout. `staticHash` is the hash to echo back
91
+ * (null with no static block, a sub-agent or a holdout). Scope detection and delivery-ledger events are CLI-only.
92
+ * Throws BadRequestError past the input caps, and on a shared store for a project assertCallerProject refuses, before
93
+ * any arm is booked. */
94
+ export declare function promptHookContext(ctx: ContextWith<'contextReads'>, req: PromptHookRequest, opts?: PromptHookOpts): Promise<{
81
95
  arm: PilotArm | null;
82
96
  stdout: string;
83
97
  staticHash: string | null;
84
98
  }>;
85
- export {};
86
99
  //# sourceMappingURL=prompt-hook.d.ts.map
@@ -1,35 +1,36 @@
1
- // The per-prompt hook's block and ledger rows, rendered here for `hippo context` and for promptHookContext (a remote hook route's call).
2
- // promptHookContext keeps the server-side copy of the CLI's getContext flags (cli/context.ts);
3
- // the CLI parity case in tests/prompt-hook-context.test.ts is all that ties the two.
1
+ // The per-prompt hook's block and ledger rows, rendered here for `hippo context` and for promptHookContext (a remote
2
+ // hook route's call). promptHookContext keeps the server-side copy of the CLI's getContext flags (cli/context.ts); the
3
+ // CLI parity case in tests/prompt-hook-context.test.ts is all that ties the two.
4
4
  import { getContext } from './index.js';
5
5
  import { BadRequestError } from '../core/api-errors.js';
6
6
  import { isSharedStore, loadConfig } from '../core/config.js';
7
- import { contextBlockLines, contextCost, crossProjectLines, handoffText, sessionTrailText, settleTokens, snapshotText } from './context-render.js';
8
- import { createDeliveryRecorder } from '../store/delivery-recorder.js';
7
+ import { contextBlockLines, contextCost, crossProjectLines, handoffText, sessionTrailText, settleTokens, snapshotText, } from './context-render.js';
8
+ import { createDeliveryRecorder, } from '../store/delivery-recorder.js';
9
9
  import { realpathOrResolve } from '../util/real-path.js';
10
10
  import { MAX_ID_LEN } from '../util/limits.js';
11
11
  import { isJsonString } from '../util/json.js';
12
- import { bookLedgerTurn, ledgerLastSent, ledgerRoot } from './ledger-db.js';
12
+ import { bookLedgerTurn, ledgerLastSent, ledgerReachOf, ledgerRoot } from './ledger-db.js';
13
13
  import { noteLedgerRowSkipped } from '../store/ledger-turn.js';
14
14
  import { sessionPilotArm } from './pilot-arm.js';
15
- import { assertCallerProject, isGlobalStoreRoot, MAX_PROJECT_ALIASES } from '../core/project-identity.js';
15
+ import { assertCallerProject, MAX_PROJECT_ALIASES } from '../core/project-identity.js';
16
16
  import { writeDeliveryEventAtRoot } from '../store/recall-trace.js';
17
17
  import { shouldSkipUnchanged } from '../store/token-ledger.js';
18
18
  import { hookPayloadString, isSubagentPayload } from '../util/hook-payload.js';
19
19
  import { blockHash, estimateTokens } from '../util/token-text.js';
20
- import { errorMessage, log } from '../util/log.js';
20
+ import { errorMessage, log, errorFields } from '../util/log.js';
21
21
  import { DEFAULT_CONTEXT_BUDGET } from './context.js';
22
22
  /** A delivery recorder for a hook on `ctx.hippoRoot` when the ledger store enables one, else null; never throws. */
23
23
  export function startDeliveryRecorder(ctx, start) {
24
24
  try {
25
25
  // The same store the token ledger writes to, so its config governs both.
26
- const root = ledgerRoot(ctx.hippoRoot);
26
+ const root = ledgerRoot(ctx.hippoRoot, ledgerReachOf(ctx));
27
27
  if (root === null || !loadConfig(root).deliveryLedger.enabled)
28
28
  return null;
29
29
  return createDeliveryRecorder({
30
30
  root,
31
31
  storeHash: blockHash(realpathOrResolve(root)),
32
- writeStore: isGlobalStoreRoot(root) ? 'global' : 'local',
32
+ // ledgerRoot falls back to the global root only when the primary is not initialized.
33
+ writeStore: root !== ctx.hippoRoot || ctx.reach?.isGlobal === true ? 'global' : 'local',
33
34
  tenantId: ctx.tenantId,
34
35
  stdinText: start.stdinText,
35
36
  envSessionId: start.envSessionId,
@@ -39,24 +40,26 @@ export function startDeliveryRecorder(ctx, start) {
39
40
  });
40
41
  }
41
42
  catch (error) {
42
- log.warn(`delivery ledger skipped: ${errorMessage(error)}`);
43
+ log.warn(`delivery ledger skipped: ${errorMessage(error)}`, errorFields(error));
43
44
  return null;
44
45
  }
45
46
  }
46
- /** A recorder for `hippo capture-error`, only when the failure log and the ledger are one store, so `failure_id` never points into another. */
47
+ /** A recorder for `hippo capture-error`, only when the failure log and the ledger are one store, so `failure_id` never
48
+ * points into another. */
47
49
  export function startToolFailureRecorder(ctx, start) {
48
50
  try {
49
- const root = ledgerRoot(ctx.hippoRoot);
51
+ const root = ledgerRoot(ctx.hippoRoot, ledgerReachOf(ctx));
50
52
  if (root === null || realpathOrResolve(root) !== realpathOrResolve(ctx.hippoRoot))
51
53
  return null;
52
54
  return startDeliveryRecorder(ctx, { ...start, eventType: 'tool-failure' });
53
55
  }
54
56
  catch (error) {
55
- log.warn(`delivery ledger skipped: ${errorMessage(error)}`);
57
+ log.warn(`delivery ledger skipped: ${errorMessage(error)}`, errorFields(error));
56
58
  return null;
57
59
  }
58
60
  }
59
- /** With `write`, stores on the token ledger's connection (same store); without it, opens its own. A second flush is a no-op. */
61
+ /** With `write`, stores on the token ledger's connection (same
62
+ * store); without it, opens its own. A second flush is a no-op. */
60
63
  export function flushDeliveryRecorder(rec, write) {
61
64
  if (rec === null)
62
65
  return;
@@ -64,10 +67,11 @@ export function flushDeliveryRecorder(rec, write) {
64
67
  rec.flush(write ?? ((input) => writeDeliveryEventAtRoot(rec.root, input)));
65
68
  }
66
69
  catch (error) {
67
- log.error(`delivery ledger write failed: ${errorMessage(error)}`);
70
+ log.error(`delivery ledger write failed: ${errorMessage(error)}`, errorFields(error));
68
71
  }
69
72
  }
70
- /** A Copilot sessionStart reply's wrapper, picked by the sender's casing: stdin.ts keeps a camelCase `sessionId`, which only the Copilot harness sends. */
73
+ /** A Copilot sessionStart reply's wrapper, picked by the sender's casing: stdin.ts keeps a camelCase `sessionId`, which
74
+ * only the Copilot harness sends. */
71
75
  export function sessionStartEnvelope(stdinText) {
72
76
  return hookPayloadString(stdinText, 'sessionId') !== null ? 'copilot-session-start' : 'vscode-session-start';
73
77
  }
@@ -87,17 +91,14 @@ export function hasContextData(result) {
87
91
  export function toRenderItems(entries) {
88
92
  return entries.map((r) => ({ entry: r.entry, score: r.score, tokens: r.tokens, isGlobal: r.isGlobal ?? false }));
89
93
  }
90
- /** The hook format's stdout, '' when nothing is sent: a skippable static block (snapshot, handoff, events, pins, recent-N) and a never-skipped recall block. */
94
+ /** The hook format's stdout, '' when nothing is sent: a skippable static block (snapshot, handoff, events, pins,
95
+ * recent-N) and a never-skipped recall block. */
91
96
  export function additionalContextOutput(view) {
92
97
  return renderAdditionalContext(view).stdout;
93
98
  }
94
- function renderAdditionalContext(view) {
95
- const { result, rec, framing } = view;
96
- const staticEntries = result.entries.filter((r) => r.category !== 'cross-project' && !r.promptRecall);
97
- const staticCrossEntries = result.entries.filter((r) => r.category === 'cross-project' && !r.promptRecall);
98
- const staticItems = toRenderItems(staticEntries);
99
- const recallItems = toRenderItems(result.entries.filter((r) => r.promptRecall));
100
- const staticBlock = settleTokens((t) => [
99
+ function renderStaticBlock(view, staticItems, staticCrossEntries) {
100
+ const { result, framing } = view;
101
+ return settleTokens((t) => [
101
102
  ...(result.activeSnapshot ? [snapshotText(result.activeSnapshot)] : []),
102
103
  ...(result.sessionHandoff ? [handoffText(result.sessionHandoff)] : []),
103
104
  ...(result.recentEvents && result.recentEvents.length > 0 ? [sessionTrailText(result.recentEvents)] : []),
@@ -105,9 +106,20 @@ function renderAdditionalContext(view) {
105
106
  ...(staticItems.length > 0 ? contextBlockLines(staticItems, t, framing, { showStrength: false }) : []),
106
107
  ...crossProjectLines(staticCrossEntries),
107
108
  ].join('\n'));
108
- const recallBlock = recallItems.length > 0
109
- ? settleTokens((t) => contextBlockLines(recallItems, t, framing, { showStrength: false, heading: 'Prompt-Relevant Memory' }).join('\n'))
110
- : '';
109
+ }
110
+ function renderRecallBlock(recallItems, framing) {
111
+ if (recallItems.length === 0)
112
+ return '';
113
+ return settleTokens((t) => contextBlockLines(recallItems, t, framing, { showStrength: false, heading: 'Prompt-Relevant Memory' }).join('\n'));
114
+ }
115
+ function renderAdditionalContext(view) {
116
+ const { result, rec, framing } = view;
117
+ const staticEntries = result.entries.filter((r) => r.category !== 'cross-project' && !r.promptRecall);
118
+ const staticCrossEntries = result.entries.filter((r) => r.category === 'cross-project' && !r.promptRecall);
119
+ const staticItems = toRenderItems(staticEntries);
120
+ const recallItems = toRenderItems(result.entries.filter((r) => r.promptRecall));
121
+ const staticBlock = renderStaticBlock(view, staticItems, staticCrossEntries);
122
+ const recallBlock = renderRecallBlock(recallItems, framing);
111
123
  if (!staticBlock.trim() && !recallBlock.trim()) {
112
124
  rec?.delivered({ state: 'empty' });
113
125
  return NOTHING_RENDERED;
@@ -139,13 +151,12 @@ function renderAdditionalContext(view) {
139
151
  /** True, after booking the skip row, when the hook may omit a static block this session already holds. */
140
152
  function skipUnchangedStatic(view, surface, staticBlock, recallBlock, staticCount) {
141
153
  const { hippoRoot, payloadSessionId, rec } = view;
142
- const ledgerOpts = { sharedStore: view.sharedStore };
143
154
  if (!view.pinnedOnly || payloadSessionId === undefined)
144
155
  return false;
145
156
  // Session start is the only injection Copilot gets, so a resumed session needs the whole block again.
146
157
  if (view.envelope === 'copilot-session-start' || view.envelope === 'vscode-session-start')
147
158
  return false;
148
- const injectCfg = loadConfig(hippoRoot).pinnedInject;
159
+ const injectCfg = (view.config ?? loadConfig(hippoRoot)).pinnedInject;
149
160
  if (injectCfg.skipUnchanged === false)
150
161
  return false;
151
162
  const refreshTurns = Number.isFinite(injectCfg.refreshTurns) && injectCfg.refreshTurns >= 0
@@ -156,7 +167,7 @@ function skipUnchangedStatic(view, surface, staticBlock, recallBlock, staticCoun
156
167
  // Before the ledger read, so a caller that did not print this block books no skip row.
157
168
  if (view.printedHash !== undefined && view.printedHash !== staticHash)
158
169
  return false;
159
- const last = ledgerLastSent(hippoRoot, view.tenantId, payloadSessionId, surface, ledgerOpts);
170
+ const last = ledgerLastSent(hippoRoot, view.tenantId, payloadSessionId, surface, view.reach);
160
171
  if (!shouldSkipUnchanged(last ?? null, staticHash, refreshTurns))
161
172
  return false;
162
173
  bookLedgerTurn(hippoRoot, {
@@ -168,20 +179,24 @@ function skipUnchangedStatic(view, surface, staticBlock, recallBlock, staticCoun
168
179
  rec?.delivered({ state: 'reused', staticHash, staticReused: true });
169
180
  flushDeliveryRecorder(rec, write);
170
181
  },
171
- }, ledgerOpts);
182
+ }, view.reach);
172
183
  return true;
173
184
  }
174
- /** One connection for both rows; a failed row is logged and the other still lands, because a ledger failure must not break the hook. */
185
+ /** One connection for both rows; a failed row is logged and the other still lands, because a ledger failure must not
186
+ * break the hook. */
175
187
  function recordAdditionalContextRows(view, surface, staticPart, recallPart) {
176
188
  const row = (part, on) => ({
177
189
  tenantId: view.tenantId, sessionId: view.ledgerSessionId, surface: on, event: 'inject',
178
190
  items: part.items, tokens: estimateTokens(part.text), hash: blockHash(part.text),
179
191
  });
180
192
  bookLedgerTurn(view.hippoRoot, {
181
- uses: [...(staticPart.text ? [row(staticPart, surface)] : []), ...(recallPart.text ? [row(recallPart, 'hook_recall')] : [])],
193
+ uses: [
194
+ ...(staticPart.text ? [row(staticPart, surface)] : []),
195
+ ...(recallPart.text ? [row(recallPart, 'hook_recall')] : []),
196
+ ],
182
197
  onRowError: noteLedgerRowSkipped,
183
198
  delivery: (write) => flushDeliveryRecorder(view.rec, write),
184
- }, { sharedStore: view.sharedStore });
199
+ }, view.reach);
185
200
  }
186
201
  // The flags HIPPO_PINNED_INJECT_COMMAND gives the local hook; the CLI parity test fails if the two drift.
187
202
  const HOOK_INCLUDE_RECENT = 5;
@@ -192,8 +207,9 @@ const BLOCK_HASH_RE = /^[0-9a-f]{16}$/;
192
207
  /** The caps on a hook caller's session id and project names, so a caller other than an HTTP route is bounded too. */
193
208
  export function assertCallerIds(sessionId, project) {
194
209
  const { name, legacyName, aliases = [] } = project;
195
- if (aliases.length > MAX_PROJECT_ALIASES)
210
+ if (aliases.length > MAX_PROJECT_ALIASES) {
196
211
  throw new BadRequestError(`project aliases: at most ${MAX_PROJECT_ALIASES}`);
212
+ }
197
213
  if ([sessionId, name, legacyName, ...aliases].some((v) => v.length > MAX_ID_LEN)) {
198
214
  throw new BadRequestError(`session id and project names: at most ${MAX_ID_LEN} characters each`);
199
215
  }
@@ -204,20 +220,24 @@ function assertPromptHookRequest(req) {
204
220
  throw new BadRequestError('printed hash: 16 lowercase hex characters');
205
221
  }
206
222
  }
207
- /** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read on `ctx`'s store for its project.
208
- * Omits an unchanged static block only when `printedHash` matches; `arm` is the ledger arm (`hippo` or `holdout`, null at rate 0); a holdout gets empty stdout.
209
- * `staticHash` is the hash to echo back (null with no static block, a sub-agent or a holdout). Scope detection and delivery-ledger events are CLI-only.
210
- * Throws BadRequestError past the input caps, and on a shared store for a project assertCallerProject refuses, before any arm is booked. */
223
+ /** The text `hippo context --pinned-only --include-recent 5 --format additional-context` prints for this session, read
224
+ * on `ctx`'s store for its project. Omits an unchanged static block only when `printedHash` matches; `arm` is the
225
+ * ledger arm (`hippo` or `holdout`, null at rate 0); a holdout gets empty stdout. `staticHash` is the hash to echo back
226
+ * (null with no static block, a sub-agent or a holdout). Scope detection and delivery-ledger events are CLI-only.
227
+ * Throws BadRequestError past the input caps, and on a shared store for a project assertCallerProject refuses, before
228
+ * any arm is booked. */
211
229
  export async function promptHookContext(ctx, req, opts = {}) {
212
230
  assertPromptHookRequest(req);
213
231
  const { sessionId, payload } = req;
214
232
  const { sharedStore } = opts;
215
- if (sharedStore || isSharedStore(ctx.hippoRoot))
233
+ const sharedByReach = ctx.reach ? ctx.reach.shared : isSharedStore(ctx.hippoRoot);
234
+ if (sharedStore || sharedByReach)
216
235
  assertCallerProject(req.project);
217
236
  // The test the local hook runs on its stdin, so a sub-agent books no arm and no session rows here either.
218
237
  const subagent = payload !== undefined && isSubagentPayload(JSON.stringify(payload));
219
238
  const ledgerSessionId = subagent ? undefined : sessionId;
220
- const arm = sessionPilotArm(ctx.hippoRoot, ctx.tenantId, sessionId, !subagent, { sharedStore, ownTenantOnly: true });
239
+ const reach = ledgerReachOf(ctx, sharedStore);
240
+ const arm = sessionPilotArm(ctx.hippoRoot, ctx.tenantId, sessionId, !subagent, { reach, ownTenantOnly: true });
221
241
  if (arm === 'holdout')
222
242
  return { arm, ...NOTHING_RENDERED };
223
243
  const prompt = payload?.prompt;
@@ -234,8 +254,9 @@ export async function promptHookContext(ctx, req, opts = {}) {
234
254
  });
235
255
  const rendered = hasContextData(result)
236
256
  ? renderAdditionalContext({
237
- hippoRoot: ctx.hippoRoot, tenantId: ctx.tenantId, ledgerSessionId, payloadSessionId: ledgerSessionId,
238
- pinnedOnly: true, framing: HOOK_FRAMING, rec: null, result, sharedStore, printedHash: req.printedHash ?? null,
257
+ hippoRoot: ctx.hippoRoot, config: ctx.config, tenantId: ctx.tenantId, ledgerSessionId,
258
+ payloadSessionId: ledgerSessionId, pinnedOnly: true, framing: HOOK_FRAMING, rec: null, result, reach,
259
+ printedHash: req.printedHash ?? null,
239
260
  })
240
261
  : NOTHING_RENDERED;
241
262
  // A sub-agent's output is not the session's, so its caller must not record it as printed.
@@ -8,7 +8,9 @@ export interface ProvenanceCoverage {
8
8
  missing: ('owner' | 'artifact_ref')[];
9
9
  }>;
10
10
  }
11
- /** Provenance coverage gate: every `kind='raw'` row must carry `owner` and `artifact_ref`; derivative or terminal rows are excluded.
11
+ /**
12
+ * Provenance coverage gate: every `kind='raw'` row must carry `owner` and `artifact_ref`; derivative or terminal rows
13
+ * are excluded.
12
14
  * Coverage 1.0 on a non-empty raw set is the ship gate. */
13
15
  export declare function buildProvenanceCoverage(entries: MemoryEntry[]): ProvenanceCoverage;
14
16
  //# sourceMappingURL=provenance-coverage.d.ts.map
@@ -1,4 +1,6 @@
1
- /** Provenance coverage gate: every `kind='raw'` row must carry `owner` and `artifact_ref`; derivative or terminal rows are excluded.
1
+ /**
2
+ * Provenance coverage gate: every `kind='raw'` row must carry `owner` and `artifact_ref`; derivative or terminal rows
3
+ * are excluded.
2
4
  * Coverage 1.0 on a non-empty raw set is the ship gate. */
3
5
  export function buildProvenanceCoverage(entries) {
4
6
  const raws = entries.filter((e) => e.kind === 'raw');