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
@@ -6,18 +6,26 @@ import { isObjectLike, isStringValue, readSessionEnd } from '../core/capture-con
6
6
  import { copilotTurn } from './copilot-transcript.js';
7
7
  const RECENT_USER_TURNS = 20;
8
8
  const RECENT_ASSISTANT_TURNS = 10;
9
- /** Build a compact text summary from a Claude Code / OpenCode / Copilot JSONL transcript: plain user messages and the final assistant text chunk,
9
+ /**
10
+ * Build a compact text summary from a Claude Code / OpenCode / Copilot JSONL transcript: plain user messages and the
11
+ * final assistant text chunk,
10
12
  * without thinking, tool_use and tool_result noise. Exported for tests. */
11
13
  /** Leading markers of the command lines Claude Code writes with type 'user'. */
12
14
  const CLAUDE_CODE_COMMAND_PREFIXES = ['<local-command-', '<command-name>', '<command-message>', '<command-args>'];
13
15
  function isNonHumanUserLine(entry, content) {
14
- if (entry.isMeta === true || entry.isSidechain === true || entry.isCompactSummary === true || entry.promptSource === 'system')
16
+ if (entry.isMeta === true ||
17
+ entry.isSidechain === true ||
18
+ entry.isCompactSummary === true ||
19
+ entry.promptSource === 'system') {
15
20
  return true;
21
+ }
16
22
  const head = content.trimStart();
17
23
  return CLAUDE_CODE_COMMAND_PREFIXES.some((p) => head.startsWith(p));
18
24
  }
19
25
  const NON_HUMAN_BLOCK_PREFIXES = ['<ide_', '[Request interrupted by user'];
20
- /** The human's words on a Claude Code user line, '' when none; VS Code stores prompts as text blocks, beside its own open-file, selection
26
+ /**
27
+ * The human's words on a Claude Code user line, '' when none; VS Code stores prompts as text blocks, beside its own
28
+ * open-file, selection
21
29
  * and interrupt blocks. */
22
30
  export function humanUserText(entry, message) {
23
31
  const content = message.content;
@@ -25,12 +33,14 @@ export function humanUserText(entry, message) {
25
33
  if (isStringValue(content)) {
26
34
  text = content;
27
35
  }
28
- else if (Array.isArray(content) && !content.some((b) => isObjectLike(b) && 'type' in b && b.type === 'tool_result')) {
36
+ else if (Array.isArray(content) &&
37
+ !content.some((b) => isObjectLike(b) && 'type' in b && b.type === 'tool_result')) {
29
38
  const parts = [];
30
39
  for (const block of content) {
31
40
  const blockText = isObjectLike(block) && 'type' in block && block.type === 'text' && 'text' in block ? block.text : undefined;
32
- if (isStringValue(blockText) && !NON_HUMAN_BLOCK_PREFIXES.some((p) => blockText.trimStart().startsWith(p)))
41
+ if (isStringValue(blockText) && !NON_HUMAN_BLOCK_PREFIXES.some((p) => blockText.trimStart().startsWith(p))) {
33
42
  parts.push(blockText);
43
+ }
34
44
  }
35
45
  text = parts.join('\n');
36
46
  }
@@ -57,7 +67,10 @@ export function collectSessionTurns(jsonl, visit) {
57
67
  }
58
68
  return turns;
59
69
  }
60
- /** The turn a Claude Code `user` or `assistant` line carries; null for any other line or one with no human or reply text. */
70
+ /**
71
+ * The turn a Claude Code `user` or `assistant` line carries; null for any other line or one with no human or reply
72
+ * text.
73
+ */
61
74
  function claudeCodeTurn(entry) {
62
75
  if (entry.type !== 'user' && entry.type !== 'assistant')
63
76
  return null;
@@ -83,7 +96,8 @@ function claudeCodeTurn(entry) {
83
96
  }
84
97
  return chunks.length > 0 ? { role: 'assistant', text: chunks.join('\n') } : null;
85
98
  }
86
- // Codex stores its own context as user messages: the AGENTS.md text, and one tagged block each for the environment and app state.
99
+ // Codex stores its own context as user messages: the AGENTS.md text, and one tagged block each for the environment and
100
+ // app state.
87
101
  const CODEX_INJECTED_USER_TEXT = /^(?:# AGENTS\.md instructions\b|<([A-Za-z][\w-]*)(?:\s[^>]*)?>[\s\S]*<\/\1>$)/;
88
102
  // Codex rollout transcript shape: response_item -> payload.message
89
103
  function codexTurn(entry) {
@@ -102,7 +116,11 @@ function codexTurn(entry) {
102
116
  continue;
103
117
  const blockType = 'type' in block ? block.type : undefined;
104
118
  const blockText = 'text' in block ? block.text : undefined;
105
- if (role === 'user' && blockType === 'input_text' && isStringValue(blockText) && blockText.trim() && !CODEX_INJECTED_USER_TEXT.test(blockText.trim())) {
119
+ if (role === 'user' &&
120
+ blockType === 'input_text' &&
121
+ isStringValue(blockText) &&
122
+ blockText.trim() &&
123
+ !CODEX_INJECTED_USER_TEXT.test(blockText.trim())) {
106
124
  chunks.push(blockText.trim());
107
125
  }
108
126
  if (role === 'assistant' && blockType === 'output_text' && isStringValue(blockText) && blockText.trim()) {
@@ -142,8 +160,12 @@ export function summariseSessionTurns(turns) {
142
160
  tailAssistants.join('\n\n'),
143
161
  ].join('\n');
144
162
  }
145
- /** Resolve a transcript path for `--last-session`: `transcriptPath`, then the stdin JSON payload, then the newest `.jsonl` in the Claude config dir.
146
- * The scan runs only with `mayScan` (it spans every project on the box); returns null when nothing resolves, never throws. */
163
+ /**
164
+ * Resolve a transcript path for `--last-session`: `transcriptPath`, then the stdin JSON payload, then the newest
165
+ * `.jsonl` in the Claude config dir.
166
+ * The scan runs only with `mayScan` (it spans every project on the box); returns null when nothing resolves, never
167
+ * throws.
168
+ */
147
169
  export function resolveLastSessionTranscript(explicit, stdinText, opts) {
148
170
  if (explicit)
149
171
  return fs.existsSync(explicit) ? explicit : null;
@@ -1,5 +1,8 @@
1
1
  import type { TaskSnapshot } from '../store/rows.js';
2
- /** The longest each field of {@link transcriptWorkingState} can be, so a check of a sent working state imports these instead of copying them. */
2
+ /**
3
+ * The longest each field of {@link transcriptWorkingState} can be, so a check of a sent working state imports these
4
+ * instead of copying them.
5
+ */
3
6
  export declare const WORKING_STATE_CAPS: {
4
7
  readonly task: 200;
5
8
  readonly summary: number;
@@ -8,13 +11,19 @@ export declare const WORKING_STATE_CAPS: {
8
11
  export type WorkingState = Pick<TaskSnapshot, 'task' | 'summary' | 'next_step'>;
9
12
  /** Cuts each field to {@link WORKING_STATE_CAPS}, for after a scrub, as a mask can run longer than what it hides. */
10
13
  export declare function fitWorkingState(state: WorkingState): WorkingState;
11
- /** Each empty field falls back to `existing`'s, since a tool-heavy tail derives no task; null when all are empty, so blanks never replace a snapshot.
14
+ /**
15
+ * Each empty field falls back to `existing`'s, since a tool-heavy tail derives no task; null when all are empty, so
16
+ * blanks never replace a snapshot.
12
17
  * Never across sessions: another session's task saved under this id would pass compact-resume's session check. */
13
18
  export declare function mergeWorkingState(derived: WorkingState, existing: TaskSnapshot | null, sessionId: string | null): WorkingState | null;
14
- /** Keeps the LAST maxChars behind a trim marker, aligned to a nearby line start: the summary runs oldest first, so a head cap would drop
19
+ /**
20
+ * Keeps the LAST maxChars behind a trim marker, aligned to a nearby line start: the summary runs oldest first, so a
21
+ * head cap would drop
15
22
  * the newest working state. */
16
23
  export declare function truncateKeepNewest(text: string, maxChars: number): string;
17
- /** A session's task, summary and next step from its transcript tail, secrets scrubbed and capped, '' where none; null with a logged
24
+ /**
25
+ * A session's task, summary and next step from its transcript tail, secrets scrubbed and capped, '' where none; null
26
+ * with a logged
18
27
  * reason when nothing is derivable. */
19
28
  export declare function transcriptWorkingState(transcriptPath: string, log: (message: string) => void): Pick<TaskSnapshot, 'task' | 'summary' | 'next_step'> | null;
20
29
  //# sourceMappingURL=working-state.d.ts.map
@@ -1,4 +1,5 @@
1
- // A session's working state read from its transcript tail, with no store in the imports, so a hook with no store can derive it.
1
+ // A session's working state read from its transcript tail, with no store in the imports, so a hook with no store can
2
+ // derive it.
2
3
  import * as fs from 'fs';
3
4
  import { maskEmails, redactSecretsStrict } from '../util/secret-detect.js';
4
5
  import { isObjectLike, isStringValue } from '../core/capture-contract.js';
@@ -10,7 +11,10 @@ const PRE_COMPACT_TASK_CAP = 200;
10
11
  const PRE_COMPACT_SUMMARY_CAP = 2000;
11
12
  const PRE_COMPACT_NEXT_STEP_CAP = 500;
12
13
  const TRIM_MARKER = '[...earlier turns trimmed]\n';
13
- /** The longest each field of {@link transcriptWorkingState} can be, so a check of a sent working state imports these instead of copying them. */
14
+ /**
15
+ * The longest each field of {@link transcriptWorkingState} can be, so a check of a sent working state imports these
16
+ * instead of copying them.
17
+ */
14
18
  export const WORKING_STATE_CAPS = {
15
19
  task: PRE_COMPACT_TASK_CAP,
16
20
  summary: PRE_COMPACT_SUMMARY_CAP + TRIM_MARKER.length,
@@ -20,15 +24,22 @@ export const WORKING_STATE_CAPS = {
20
24
  export function fitWorkingState(state) {
21
25
  return {
22
26
  task: truncateCodePointSafe(state.task, WORKING_STATE_CAPS.task),
23
- // Only past the cap, since re-trimming a summary that fits would drop its head again; the cut keeps the newest turns.
24
- summary: state.summary.length > WORKING_STATE_CAPS.summary ? truncateKeepNewest(state.summary, PRE_COMPACT_SUMMARY_CAP) : state.summary,
27
+ // Only past the cap, since re-trimming a summary that fits would drop its head again; the cut keeps the newest
28
+ // turns.
29
+ summary: state.summary.length > WORKING_STATE_CAPS.summary
30
+ ? truncateKeepNewest(state.summary, PRE_COMPACT_SUMMARY_CAP)
31
+ : state.summary,
25
32
  next_step: truncateCodePointSafe(state.next_step, WORKING_STATE_CAPS.next_step),
26
33
  };
27
34
  }
28
- /** Each empty field falls back to `existing`'s, since a tool-heavy tail derives no task; null when all are empty, so blanks never replace a snapshot.
35
+ /**
36
+ * Each empty field falls back to `existing`'s, since a tool-heavy tail derives no task; null when all are empty, so
37
+ * blanks never replace a snapshot.
29
38
  * Never across sessions: another session's task saved under this id would pass compact-resume's session check. */
30
39
  export function mergeWorkingState(derived, existing, sessionId) {
31
- const fallback = existing !== null && (existing.session_id === null || sessionId === null || existing.session_id === sessionId) ? existing : null;
40
+ const fallback = existing !== null && (existing.session_id === null || sessionId === null || existing.session_id === sessionId)
41
+ ? existing
42
+ : null;
32
43
  const merged = {
33
44
  task: derived.task || (fallback?.task ?? ''),
34
45
  summary: derived.summary || (fallback?.summary ?? ''),
@@ -36,7 +47,9 @@ export function mergeWorkingState(derived, existing, sessionId) {
36
47
  };
37
48
  return merged.task || merged.summary || merged.next_step ? merged : null;
38
49
  }
39
- /** Keeps the LAST maxChars behind a trim marker, aligned to a nearby line start: the summary runs oldest first, so a head cap would drop
50
+ /**
51
+ * Keeps the LAST maxChars behind a trim marker, aligned to a nearby line start: the summary runs oldest first, so a
52
+ * head cap would drop
40
53
  * the newest working state. */
41
54
  export function truncateKeepNewest(text, maxChars) {
42
55
  if (text.length <= maxChars)
@@ -50,8 +63,11 @@ export function truncateKeepNewest(text, maxChars) {
50
63
  start = nl + 1;
51
64
  return TRIM_MARKER + text.slice(start);
52
65
  }
53
- /** Most recent plain-text user message in a JSONL tail, from a Claude Code or a Copilot transcript. */
54
- function lastPlainUserMessage(jsonl) {
66
+ /**
67
+ * Newest main-agent `role` turn in a JSONL tail, from a Claude Code or a Copilot transcript; `textOf` reads a Claude
68
+ * Code line, '' when it has no text.
69
+ */
70
+ function lastTurnText(jsonl, role, textOf) {
55
71
  const lines = jsonl.split('\n').filter((l) => l.trim());
56
72
  for (let i = lines.length - 1; i >= 0; i--) {
57
73
  let entry;
@@ -66,65 +82,42 @@ function lastPlainUserMessage(jsonl) {
66
82
  if (!('type' in entry))
67
83
  continue;
68
84
  const copilot = copilotTurn(entry);
69
- if (copilot?.role === 'user')
85
+ if (copilot?.role === role)
70
86
  return copilot.text;
71
- if (entry.type !== 'user')
87
+ if (entry.type !== role)
72
88
  continue;
73
- // An isMeta user line holds an earlier compact summary and an isSidechain one is a sub-agent turn; neither is the human's task.
74
- if (('isMeta' in entry && entry.isMeta === true) || ('isSidechain' in entry && entry.isSidechain === true))
89
+ // An isMeta line holds an earlier compact summary and an isSidechain one is a sub-agent turn; neither is this
90
+ // session's own.
91
+ if (('isMeta' in entry && entry.isMeta === true) || ('isSidechain' in entry && entry.isSidechain === true)) {
75
92
  continue;
93
+ }
76
94
  const message = 'message' in entry && isObjectLike(entry.message) ? entry.message : undefined;
77
95
  if (!message)
78
96
  continue;
79
- const text = humanUserText(entry, message);
97
+ const text = textOf(entry, message);
80
98
  if (text)
81
99
  return text;
82
100
  }
83
101
  return '';
84
102
  }
85
- /** Last assistant text block in a JSONL tail (skips thinking + tool_use, same as summariseTranscript). */
86
- function lastAssistantTextBlock(jsonl) {
87
- const lines = jsonl.split('\n').filter((l) => l.trim());
88
- for (let i = lines.length - 1; i >= 0; i--) {
89
- let entry;
90
- try {
91
- entry = JSON.parse(lines[i]);
92
- }
93
- catch {
94
- continue; // the tail read can start mid-line; skip the torn fragment
95
- }
96
- if (!isObjectLike(entry))
97
- continue;
98
- if (!('type' in entry))
99
- continue;
100
- const copilot = copilotTurn(entry);
101
- if (copilot?.role === 'assistant')
102
- return copilot.text;
103
- if (entry.type !== 'assistant')
104
- continue;
105
- // Same meta/sidechain guard as lastPlainUserMessage: sub-agent turns
106
- // (isSidechain) are not this session's next step.
107
- if (('isMeta' in entry && entry.isMeta === true) || ('isSidechain' in entry && entry.isSidechain === true))
108
- continue;
109
- const message = 'message' in entry && isObjectLike(entry.message) ? entry.message : undefined;
110
- if (!message)
111
- continue;
112
- const content = 'content' in message ? message.content : undefined;
113
- if (!Array.isArray(content))
103
+ /** The last text block of an assistant message, skipping thinking and tool_use blocks (as summariseTranscript does). */
104
+ function lastTextBlock(_entry, message) {
105
+ const content = message.content;
106
+ if (!Array.isArray(content))
107
+ return '';
108
+ for (let j = content.length - 1; j >= 0; j--) {
109
+ const block = content[j];
110
+ if (!isObjectLike(block))
114
111
  continue;
115
- for (let j = content.length - 1; j >= 0; j--) {
116
- const block = content[j];
117
- if (isObjectLike(block)) {
118
- const blockText = 'type' in block && block.type === 'text' && 'text' in block ? block.text : undefined;
119
- if (isStringValue(blockText) && blockText.trim()) {
120
- return blockText.trim();
121
- }
122
- }
123
- }
112
+ const blockText = 'type' in block && block.type === 'text' && 'text' in block ? block.text : undefined;
113
+ if (isStringValue(blockText) && blockText.trim())
114
+ return blockText.trim();
124
115
  }
125
116
  return '';
126
117
  }
127
- /** A session's task, summary and next step from its transcript tail, secrets scrubbed and capped, '' where none; null with a logged
118
+ /**
119
+ * A session's task, summary and next step from its transcript tail, secrets scrubbed and capped, '' where none; null
120
+ * with a logged
128
121
  * reason when nothing is derivable. */
129
122
  export function transcriptWorkingState(transcriptPath, log) {
130
123
  let tail = '';
@@ -135,11 +128,12 @@ export function transcriptWorkingState(transcriptPath, log) {
135
128
  // megabytes back: grow the window a bounded number of times until both turns are in it.
136
129
  const size = fs.statSync(transcriptPath).size;
137
130
  for (const cap of [PRE_COMPACT_TAIL_BYTES, PRE_COMPACT_TAIL_BYTES * 4, PRE_COMPACT_TAIL_BYTES * 16]) {
138
- if (cap > PRE_COMPACT_TAIL_BYTES)
131
+ if (cap > PRE_COMPACT_TAIL_BYTES) {
139
132
  log(`tail window grown to ${cap} bytes (last ${rawTask ? 'assistant' : 'user'} turn is further back)`);
133
+ }
140
134
  tail = readTranscriptTail(transcriptPath, cap);
141
- rawTask = lastPlainUserMessage(tail);
142
- rawNextStep = lastAssistantTextBlock(tail);
135
+ rawTask = lastTurnText(tail, 'user', humanUserText);
136
+ rawNextStep = lastTurnText(tail, 'assistant', lastTextBlock);
143
137
  if ((rawTask && rawNextStep) || size <= cap)
144
138
  break;
145
139
  }
@@ -1,3 +1,15 @@
1
- import { type HippoDbContext } from '../api/index.js';
2
- export declare function cliApiContext(hippoRoot: string, tenantId: string): HippoDbContext;
1
+ import { type ContextWith } from '../api/index.js';
2
+ import { type LedgerReach } from '../api/ledger-db.js';
3
+ import type { McpHost } from '../mcp/protocol.js';
4
+ import type { StoreGroup } from '../store/index.js';
5
+ import type { LocalFiles } from '../store/port.js';
6
+ /** The folder's hippo.db for a verb that runs a sleep pass by itself. */
7
+ export declare function cliLocalFiles(hippoRoot: string): LocalFiles;
8
+ /** The request scope a scoped CLI verb and the stdio MCP server run in; named here so no other surface opens one. */
9
+ export declare function cliRequest<T>(run: () => T | Promise<T>): Promise<T>;
10
+ export declare function cliApiContext(hippoRoot: string, tenantId: string): ContextWith<StoreGroup>;
11
+ /** Where a hook on `hippoRoot` books its ledger rows: the folder's store, else the global one, probed once here. */
12
+ export declare function cliLedgerReach(hippoRoot: string): LedgerReach;
13
+ /** Stdio is the operator's own process: host admin, the folder's hippo.db, and an auto-sleep that runs in process. */
14
+ export declare const cliStdioHost: McpHost;
3
15
  //# sourceMappingURL=api-context.d.ts.map
@@ -1,6 +1,49 @@
1
1
  import { adminActor } from '../api/index.js';
2
- // The one place the CLI names its audit actor; root is a parameter because some verbs target the global store.
2
+ import { ledgerReachOf } from '../api/ledger-db.js';
3
+ import { loadConfig } from '../core/config.js';
4
+ import { runConsolidation } from '../consolidate/sleep.js';
5
+ import { runDetachedSqliteRequest, runSqliteRequest, sqliteReach, sqliteStore, sqliteSyncStore, } from '../store/sqlite/store.js';
6
+ /** The store the CLI and the stdio MCP server open; the adapter is named here so src/mcp never imports it. */
7
+ function cliStore(hippoRoot) {
8
+ return sqliteStore(hippoRoot);
9
+ }
10
+ /** The folder's hippo.db for a verb that runs a sleep pass by itself. */
11
+ export function cliLocalFiles(hippoRoot) {
12
+ return sqliteSyncStore(hippoRoot).localFiles;
13
+ }
14
+ /** The request scope a scoped CLI verb and the stdio MCP server run in; named here so no other surface opens one. */
15
+ export function cliRequest(run) {
16
+ return runSqliteRequest(run, 'cli');
17
+ }
18
+ // The one place the CLI names its audit actor and builds its store;
19
+ // root is a parameter because some verbs target the global store.
3
20
  export function cliApiContext(hippoRoot, tenantId) {
4
- return { hippoRoot, tenantId, actor: adminActor('cli') };
21
+ const store = cliStore(hippoRoot);
22
+ // Read here, once per command, so a long-lived caller of this function never pins a stale config.
23
+ const config = loadConfig(hippoRoot);
24
+ return { hippoRoot, tenantId, actor: adminActor('cli'), store, reach: sqliteReach(hippoRoot, store), config };
25
+ }
26
+ /** Where a hook on `hippoRoot` books its ledger rows: the folder's store, else the global one, probed once here. */
27
+ export function cliLedgerReach(hippoRoot) {
28
+ const store = cliStore(hippoRoot);
29
+ return ledgerReachOf({ reach: sqliteReach(hippoRoot, store), store });
5
30
  }
31
+ /** Stdio is the operator's own process: host admin, the folder's hippo.db, and an auto-sleep that runs in process. */
32
+ export const cliStdioHost = {
33
+ contextFor(hippoRoot, tenantId) {
34
+ const store = cliStore(hippoRoot);
35
+ return {
36
+ hippoRoot,
37
+ tenantId,
38
+ actor: 'mcp',
39
+ role: 'admin',
40
+ hostAdmin: true,
41
+ stdio: true,
42
+ store,
43
+ reach: sqliteReach(hippoRoot, store),
44
+ autoSleepRunner: (root) => runDetachedSqliteRequest(() => runConsolidation(cliLocalFiles(root))).then(() => { }),
45
+ };
46
+ },
47
+ runRequest: cliRequest,
48
+ };
6
49
  //# sourceMappingURL=api-context.js.map
package/dist/cli/audit.js CHANGED
@@ -4,13 +4,12 @@ import { DEFAULT_LIST_LIMIT } from '../util/limits.js';
4
4
  import { AUDIT_OPS } from '../store/audit.js';
5
5
  import * as api from '../api/index.js';
6
6
  import { parseOlderThanFlag } from './audit-prune.js';
7
- import { printError } from './output.js';
8
7
  import { cliApiContext } from './api-context.js';
9
8
  import { boolFlag, flagIsTrue, isBooleanFlag, stringFlag } from './flag-values.js';
10
9
  import { requireInit, resolveAuthRoot } from './shared.js';
11
10
  import { getGlobalRoot } from '../sharing/global-store.js';
12
11
  import { errorMessage } from '../util/log.js';
13
- import { CliExit } from './exit.js';
12
+ import { fail } from './exit.js';
14
13
  // Audit log subcommands (`hippo audit list`)
15
14
  const VALID_AUDIT_OPS = new Set(AUDIT_OPS);
16
15
  function formatAuditRow(ev) {
@@ -24,10 +23,10 @@ function readAuditOp(flags) {
24
23
  if (opFlag && !VALID_AUDIT_OPS.has(opFlag)) {
25
24
  // Built from the Set so the message cannot drift from the valid ops.
26
25
  const expected = Array.from(VALID_AUDIT_OPS).join(' | ');
27
- printError(`Unknown --op value: ${opFlag}. Expected one of: ${expected}.`);
28
- throw new CliExit(1);
26
+ fail(`Unknown --op value: ${opFlag}. Expected one of: ${expected}.`);
29
27
  }
30
- // SAFETY: the exit above rejects every non-empty opFlag outside VALID_AUDIT_OPS, and an empty one is returned as given.
28
+ // SAFETY: the exit above rejects every non-empty opFlag outside VALID_AUDIT_OPS, and an empty one is returned as
29
+ // given.
31
30
  return opFlag;
32
31
  }
33
32
  function readAuditLimit(flags) {
@@ -36,14 +35,12 @@ function readAuditLimit(flags) {
36
35
  if (limitRaw !== undefined && !isBooleanFlag(limitRaw)) {
37
36
  const parsed = parseInt(String(limitRaw), 10);
38
37
  if (!Number.isFinite(parsed)) {
39
- printError(`Invalid --limit value: ${String(limitRaw)} (expected a positive integer).`);
40
- throw new CliExit(1);
38
+ fail(`Invalid --limit value: ${String(limitRaw)} (expected a positive integer).`);
41
39
  }
42
40
  limit = parsed;
43
41
  }
44
42
  if (limit < 1 || limit > 10000) {
45
- printError(`--limit must be between 1 and 10000 (got ${limit}).`);
46
- throw new CliExit(1);
43
+ fail(`--limit must be between 1 and 10000 (got ${limit}).`);
47
44
  }
48
45
  return limit;
49
46
  }
@@ -53,11 +50,13 @@ async function cmdAuditList(hippoRoot, tenantId, flags) {
53
50
  const op = readAuditOp(flags);
54
51
  const since = stringFlag(flags, 'since');
55
52
  if (since !== undefined && !Number.isFinite(new Date(since).getTime())) {
56
- printError(`Invalid --since: ${since} (expected an ISO timestamp like 2026-04-22 or 2026-04-22T12:00:00Z).`);
57
- throw new CliExit(1);
53
+ fail(`Invalid --since: ${since} (expected an ISO timestamp like 2026-04-22 or 2026-04-22T12:00:00Z).`);
58
54
  }
59
55
  const limit = readAuditLimit(flags);
60
- const ctx = { hippoRoot: root, tenantId, actor: { subject: 'cli', role: 'admin' } };
56
+ const ctx = {
57
+ ...cliApiContext(root, tenantId),
58
+ actor: { subject: 'cli', role: 'admin' },
59
+ };
61
60
  const events = await api.auditList(ctx, { op, since, limit });
62
61
  if (asJson) {
63
62
  console.log(JSON.stringify(events));
@@ -75,16 +74,14 @@ async function cmdAuditList(hippoRoot, tenantId, flags) {
75
74
  async function cmdAuditPrune(hippoRoot, ctxTenantId, flags) {
76
75
  const olderThanRaw = stringFlag(flags, 'older-than') ?? '';
77
76
  if (!olderThanRaw) {
78
- printError('Usage: hippo audit prune --older-than <Nd> [--dry-run] [--tenant <t>]');
79
- throw new CliExit(1);
77
+ fail('Usage: hippo audit prune --older-than <Nd> [--dry-run] [--tenant <t>]');
80
78
  }
81
79
  let olderThanDays;
82
80
  try {
83
81
  olderThanDays = parseOlderThanFlag(olderThanRaw);
84
82
  }
85
83
  catch (e) {
86
- printError(errorMessage(e));
87
- throw new CliExit(1);
84
+ fail(errorMessage(e));
88
85
  }
89
86
  const tenantId = stringFlag(flags, 'tenant')?.trim() || ctxTenantId;
90
87
  const dryRun = flagIsTrue(flags, 'dry-run');
@@ -110,8 +107,7 @@ async function cmdAuditLog(hippoRoot, tenantId, args, flags) {
110
107
  await cmdAuditPrune(hippoRoot, tenantId, flags);
111
108
  return;
112
109
  }
113
- printError(`Unknown audit subcommand: ${sub}. Expected: list | prune.`);
114
- throw new CliExit(1);
110
+ fail(`Unknown audit subcommand: ${sub}. Expected: list | prune.`);
115
111
  }
116
112
  async function auditRepair(hippoRoot, tenantId, flags) {
117
113
  const apply = flagIsTrue(flags, 'apply') && flags['dry-run'] !== true;
@@ -121,24 +117,27 @@ async function auditRepair(hippoRoot, tenantId, flags) {
121
117
  return;
122
118
  }
123
119
  console.log(`Quality repair ${apply ? 'apply' : 'preview'}: ${result.issues.length} issue(s) across ${result.total} memories.`);
124
- for (const issue of result.issues)
120
+ for (const issue of result.issues) {
125
121
  console.log(` [${issue.disposition}] ${issue.id}: ${issue.reason}${issue.protection ? ` (${issue.protection})` : ''}`);
122
+ }
126
123
  for (const blocker of result.blockers) {
127
124
  console.log(` Blocked: ${blocker}. Repair never upgrades a store; ` +
128
125
  'any other hippo command does, then run repair again.');
129
126
  }
130
127
  const restore = `hippo dormant restore <id>${flags['global'] ? ' --global' : ''}`;
131
- if (result.backup)
128
+ if (result.backup) {
132
129
  console.log(`Backup: ${result.backup}\nMoved ${result.appliedIds.length} memories to dormant storage. Recovery: ${restore}.`);
130
+ }
133
131
  else if (apply && result.supported)
134
132
  console.log('Nothing moved: no unprotected memory has a certain defect.');
135
133
  for (const warning of result.warnings)
136
134
  console.log(`Warning: ${warning}`);
137
- if (!apply)
135
+ if (!apply) {
138
136
  console.log('Preview only. Add --apply to move set-aside memories to dormant storage. Pin a review memory to keep it.');
137
+ }
139
138
  }
140
139
  async function fixAuditErrors(hippoRoot, tenantId, result, flags) {
141
- const errors = result.issues.filter(i => i.severity === 'error');
140
+ const errors = result.issues.filter((i) => i.severity === 'error');
142
141
  if (errors.length > 0 && flagIsTrue(flags, 'dry-run')) {
143
142
  console.log(`\nWould remove ${errors.length} error-severity memories (dry run, nothing deleted).`);
144
143
  console.log(`${result.issues.length - errors.length} warnings would remain (review manually).`);
@@ -158,7 +157,8 @@ export async function handleAudit({ hippoRoot, tenantId, args, flags }) {
158
157
  await auditRepair(hippoRoot, tenantId, flags);
159
158
  return;
160
159
  }
161
- // `audit list` and `audit prune` are the audit-log subcommands; other forms (no sub, --fix) keep the memory-quality auditor.
160
+ // `audit list` and `audit prune` are the audit-log subcommands;
161
+ // other forms (no sub, --fix) keep the memory-quality auditor.
162
162
  if (args[0] === 'list' || args[0] === 'prune') {
163
163
  await cmdAuditLog(hippoRoot, tenantId, args, flags);
164
164
  return;
package/dist/cli/auth.js CHANGED
@@ -5,7 +5,7 @@ import { printError } from './output.js';
5
5
  import { boolFlag, stringFlag } from './flag-values.js';
6
6
  import { resolveAuthRoot } from './shared.js';
7
7
  import { errorMessage } from '../util/log.js';
8
- import { CliExit } from './exit.js';
8
+ import { fail } from './exit.js';
9
9
  // ---------------------------------------------------------------------------
10
10
  // Auth subcommands
11
11
  // ---------------------------------------------------------------------------
@@ -13,8 +13,7 @@ import { CliExit } from './exit.js';
13
13
  function roleFlagOrExit(flags) {
14
14
  const roleFlag = stringFlag(flags, 'role');
15
15
  if (roleFlag !== undefined && roleFlag !== 'admin' && roleFlag !== 'member') {
16
- printError(`Invalid --role value: '${roleFlag}'. Use 'admin' or 'member'.`);
17
- throw new CliExit(1);
16
+ fail(`Invalid --role value: '${roleFlag}'. Use 'admin' or 'member'.`);
18
17
  }
19
18
  return roleFlag;
20
19
  }
@@ -37,11 +36,11 @@ async function cmdAuthCreate(hippoRoot, defaultTenantId, flags) {
37
36
  const ttlFlag = stringFlag(flags, 'ttl-days');
38
37
  const ttlDays = ttlFlag === undefined ? undefined : Number(ttlFlag);
39
38
  const noExpiry = boolFlag(flags, 'no-expiry');
40
- // The CLI's --tenant flag is the only legitimate cross-tenant override
41
- // (admin minting a key for another tenant from the local machine). It
42
- // flows through ctx.tenantId, NOT through opts — authCreate's opts no
43
- // longer accepts a tenantId field, so the HTTP layer cannot smuggle a
44
- // body.tenantId across.
39
+ // The CLI's --tenant flag is the only legitimate cross-tenant
40
+ // override (admin minting a key for another tenant from the
41
+ // local machine). It flows through ctx.tenantId, NOT through
42
+ // opts — authCreate's opts no longer accepts a tenantId field,
43
+ // so the HTTP layer cannot smuggle a body.tenantId across.
45
44
  const ctx = cliApiContext(root, tenantFlag ?? defaultTenantId);
46
45
  let result;
47
46
  try {
@@ -50,8 +49,7 @@ async function cmdAuthCreate(hippoRoot, defaultTenantId, flags) {
50
49
  catch (err) {
51
50
  if (!(err instanceof api.BadRequestError))
52
51
  throw err;
53
- printError(`hippo auth create: ${err.message} (--ttl-days, --no-expiry).`);
54
- throw new CliExit(1);
52
+ fail(`hippo auth create: ${err.message} (--ttl-days, --no-expiry).`);
55
53
  }
56
54
  noteMintDefaults(role !== undefined, ttlFlag !== undefined || noExpiry);
57
55
  if (asJson) {
@@ -103,8 +101,7 @@ async function keyContext(root, tenantId, keyId) {
103
101
  const hostCtx = cliApiContext(root, tenantId);
104
102
  const keyTenant = await api.authKeyTenant(hostCtx, keyId);
105
103
  if (keyTenant === undefined) {
106
- printError(`Unknown key_id: ${keyId}`);
107
- throw new CliExit(1);
104
+ fail(`Unknown key_id: ${keyId}`);
108
105
  }
109
106
  return { ...hostCtx, tenantId: keyTenant };
110
107
  }
@@ -115,8 +112,7 @@ async function cmdAuthRevoke(hippoRoot, tenantId, keyId, flags) {
115
112
  revokedAt = (await api.authRevoke(ctx, keyId)).revokedAt;
116
113
  }
117
114
  catch (err) {
118
- printError(`Error: ${errorMessage(err)}`);
119
- throw new CliExit(1);
115
+ fail(`Error: ${errorMessage(err)}`);
120
116
  }
121
117
  if (flags['json']) {
122
118
  console.log(JSON.stringify({ keyId, revokedAt }));
@@ -124,18 +120,18 @@ async function cmdAuthRevoke(hippoRoot, tenantId, keyId, flags) {
124
120
  }
125
121
  console.log(`Revoked ${keyId} at ${revokedAt}`);
126
122
  }
127
- /** `hippo auth grant|ungrant <key_id> <scope>`, routed through api so the tenant, restricted-scope and audit checks live in one place. */
123
+ /** `hippo auth grant|ungrant <key_id> <scope>`, routed through api so the tenant, restricted-scope and audit checks
124
+ * live in one place. */
128
125
  async function cmdAuthScopeGrant(hippoRoot, tenantId, keyId, scope, grant, flags) {
129
126
  const ctx = await keyContext(resolveAuthRoot(hippoRoot, flags), tenantId, keyId);
130
127
  try {
131
128
  if (grant)
132
- api.authGrant(ctx, keyId, scope);
129
+ await api.authGrant(ctx, keyId, scope);
133
130
  else
134
- api.authUngrant(ctx, keyId, scope);
131
+ await api.authUngrant(ctx, keyId, scope);
135
132
  }
136
133
  catch (err) {
137
- printError(`Error: ${errorMessage(err)}`);
138
- throw new CliExit(1);
134
+ fail(`Error: ${errorMessage(err)}`);
139
135
  }
140
136
  if (flags['json']) {
141
137
  console.log(JSON.stringify({ keyId, scope, granted: grant }));
@@ -146,8 +142,7 @@ async function cmdAuthScopeGrant(hippoRoot, tenantId, keyId, scope, grant, flags
146
142
  export async function handleAuth({ hippoRoot, tenantId, args, flags }) {
147
143
  const sub = args[0];
148
144
  if (!sub) {
149
- printError('Usage: hippo auth <create|list|revoke|grant|ungrant> [options]');
150
- throw new CliExit(1);
145
+ fail('Usage: hippo auth <create|list|revoke|grant|ungrant> [options]');
151
146
  }
152
147
  const subArgs = args.slice(1);
153
148
  switch (sub) {
@@ -160,8 +155,7 @@ export async function handleAuth({ hippoRoot, tenantId, args, flags }) {
160
155
  case 'revoke': {
161
156
  const keyId = subArgs[0];
162
157
  if (!keyId) {
163
- printError('Usage: hippo auth revoke <key_id>');
164
- throw new CliExit(1);
158
+ fail('Usage: hippo auth revoke <key_id>');
165
159
  }
166
160
  await cmdAuthRevoke(hippoRoot, tenantId, keyId, flags);
167
161
  return;
@@ -170,15 +164,13 @@ export async function handleAuth({ hippoRoot, tenantId, args, flags }) {
170
164
  case 'ungrant': {
171
165
  const [keyId, scope] = subArgs;
172
166
  if (!keyId || !scope) {
173
- printError(`Usage: hippo auth ${sub} <key_id> <scope>`);
174
- throw new CliExit(1);
167
+ fail(`Usage: hippo auth ${sub} <key_id> <scope>`);
175
168
  }
176
169
  await cmdAuthScopeGrant(hippoRoot, tenantId, keyId, scope, sub === 'grant', flags);
177
170
  return;
178
171
  }
179
172
  default:
180
- printError(`Unknown auth subcommand: ${sub}. Expected: create | list | revoke | grant | ungrant.`);
181
- throw new CliExit(1);
173
+ fail(`Unknown auth subcommand: ${sub}. Expected: create | list | revoke | grant | ungrant.`);
182
174
  }
183
175
  }
184
176
  //# sourceMappingURL=auth.js.map
@@ -1,2 +1,2 @@
1
- export declare const handleProjectBrief: (ctx: import("./flag-values.js").CommandContext) => void;
1
+ export declare const handleProjectBrief: (ctx: import("./flag-values.js").CommandContext) => Promise<void>;
2
2
  //# sourceMappingURL=briefs.d.ts.map