hippo-memory 1.72.0 → 2.1.0

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