hippo-memory 1.69.0 → 1.71.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 (1014) hide show
  1. package/README.md +5 -2
  2. package/dist/agent-memories/apply.d.ts +3 -3
  3. package/dist/agent-memories/apply.js +16 -31
  4. package/dist/agent-memories/claude-code.d.ts +5 -5
  5. package/dist/agent-memories/claude-code.js +25 -12
  6. package/dist/agent-memories/copilot.js +3 -2
  7. package/dist/agent-memories/files.js +26 -14
  8. package/dist/agent-memories/gemini.js +6 -5
  9. package/dist/agent-memories/keys.js +3 -2
  10. package/dist/agent-memories/legacy.d.ts +2 -2
  11. package/dist/agent-memories/legacy.js +2 -2
  12. package/dist/agent-memories/markdown.d.ts +1 -3
  13. package/dist/agent-memories/markdown.js +1 -3
  14. package/dist/agent-memories/report.d.ts +1 -1
  15. package/dist/agent-memories/report.js +3 -2
  16. package/dist/agent-memories/source.d.ts +1 -1
  17. package/dist/agent-memories/source.js +6 -5
  18. package/dist/agent-memories/sync.d.ts +5 -3
  19. package/dist/agent-memories/sync.js +34 -38
  20. package/dist/agent-memories/types.d.ts +1 -1
  21. package/dist/api/assemble.d.ts +9 -46
  22. package/dist/api/assemble.js +44 -54
  23. package/dist/api/audit.d.ts +8 -7
  24. package/dist/api/audit.js +15 -21
  25. package/dist/api/auth.d.ts +17 -39
  26. package/dist/api/auth.js +76 -216
  27. package/dist/api/auto-sleep.d.ts +13 -0
  28. package/dist/api/auto-sleep.js +32 -0
  29. package/dist/{availability.d.ts → api/availability.d.ts} +4 -17
  30. package/dist/{availability.js → api/availability.js} +14 -44
  31. package/dist/{context-auto.js → api/context-auto.js} +2 -1
  32. package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
  33. package/dist/{context-render.js → api/context-render.js} +7 -6
  34. package/dist/api/context-select.d.ts +5 -5
  35. package/dist/api/context-select.js +39 -48
  36. package/dist/api/context-types.d.ts +15 -40
  37. package/dist/api/context.d.ts +7 -26
  38. package/dist/api/context.js +67 -97
  39. package/dist/api/dormant.d.ts +7 -23
  40. package/dist/api/dormant.js +40 -128
  41. package/dist/api/drill-down.d.ts +9 -48
  42. package/dist/api/drill-down.js +41 -90
  43. package/dist/api/forget.d.ts +5 -33
  44. package/dist/api/forget.js +17 -73
  45. package/dist/api/goals.d.ts +1 -1
  46. package/dist/api/goals.js +2 -2
  47. package/dist/api/graph.d.ts +8 -0
  48. package/dist/api/graph.js +7 -0
  49. package/dist/api/index.d.ts +28 -0
  50. package/dist/api/index.js +31 -0
  51. package/dist/api/instruction-detect.js +85 -0
  52. package/dist/api/learn.js +63 -55
  53. package/dist/api/ledger-db.d.ts +21 -0
  54. package/dist/api/ledger-db.js +81 -0
  55. package/dist/api/memories.d.ts +5 -0
  56. package/dist/api/memories.js +7 -0
  57. package/dist/api/objects.d.ts +9 -0
  58. package/dist/api/objects.js +11 -0
  59. package/dist/api/on-store.d.ts +16 -0
  60. package/dist/api/on-store.js +38 -0
  61. package/dist/api/outcome.d.ts +5 -42
  62. package/dist/api/outcome.js +15 -80
  63. package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
  64. package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
  65. package/dist/api/predictions.d.ts +9 -0
  66. package/dist/api/predictions.js +18 -0
  67. package/dist/api/promote.d.ts +16 -31
  68. package/dist/api/promote.js +38 -123
  69. package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
  70. package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
  71. package/dist/api/quarantine.d.ts +5 -5
  72. package/dist/api/quarantine.js +30 -106
  73. package/dist/api/recall-cli.d.ts +55 -0
  74. package/dist/api/recall-cli.js +94 -0
  75. package/dist/api/recall-core.d.ts +4 -0
  76. package/dist/api/recall-core.js +120 -0
  77. package/dist/api/recall-finish.d.ts +53 -0
  78. package/dist/api/recall-finish.js +30 -0
  79. package/dist/api/recall-history.d.ts +64 -0
  80. package/dist/api/recall-history.js +159 -0
  81. package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
  82. package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
  83. package/dist/api/recall-record.d.ts +10 -13
  84. package/dist/api/recall-record.js +10 -30
  85. package/dist/api/recall-request.d.ts +2 -2
  86. package/dist/api/recall-request.js +3 -3
  87. package/dist/api/recall-types.d.ts +101 -316
  88. package/dist/api/recall.d.ts +5 -33
  89. package/dist/api/recall.js +92 -91
  90. package/dist/api/refine.d.ts +7 -0
  91. package/dist/api/refine.js +10 -0
  92. package/dist/api/remember-local.d.ts +57 -0
  93. package/dist/api/remember-local.js +90 -0
  94. package/dist/api/remember.d.ts +27 -12
  95. package/dist/api/remember.js +42 -46
  96. package/dist/api/session-owners.d.ts +4 -0
  97. package/dist/api/session-owners.js +17 -0
  98. package/dist/api/sleep-run.d.ts +7 -9
  99. package/dist/api/sleep-run.js +78 -94
  100. package/dist/api/sleep.d.ts +10 -29
  101. package/dist/api/tokens.d.ts +5 -12
  102. package/dist/api/tokens.js +12 -31
  103. package/dist/api/types.d.ts +8 -31
  104. package/dist/api/types.js +5 -23
  105. package/dist/capture/caller-session.d.ts +2 -2
  106. package/dist/capture/caller-session.js +8 -8
  107. package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
  108. package/dist/{capture-error.js → capture/capture-error.js} +7 -7
  109. package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
  110. package/dist/capture/command.d.ts +5 -13
  111. package/dist/capture/command.js +57 -60
  112. package/dist/capture/compact-resume-caller.d.ts +1 -1
  113. package/dist/capture/compact-resume-caller.js +7 -7
  114. package/dist/capture/compact.d.ts +8 -16
  115. package/dist/capture/compact.js +56 -47
  116. package/dist/capture/compaction-items-caller.d.ts +1 -1
  117. package/dist/capture/compaction-items-caller.js +7 -5
  118. package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
  119. package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
  120. package/dist/{compaction-record.js → capture/compaction-record.js} +143 -157
  121. package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
  122. package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
  123. package/dist/capture/copilot-transcript.js +1 -1
  124. package/dist/capture/extract.js +2 -2
  125. package/dist/capture/failure-caller.d.ts +2 -2
  126. package/dist/capture/failure-caller.js +6 -6
  127. package/dist/capture/failure-reading.d.ts +2 -5
  128. package/dist/capture/failure-reading.js +11 -12
  129. package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
  130. package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
  131. package/dist/capture/pre-compact-caller.d.ts +1 -1
  132. package/dist/capture/pre-compact-caller.js +2 -2
  133. package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +2 -6
  134. package/dist/{session-digest.js → capture/session-digest.js} +29 -29
  135. package/dist/capture/session-end-caller.d.ts +2 -2
  136. package/dist/capture/session-end-caller.js +1 -1
  137. package/dist/capture/session-texts.d.ts +1 -1
  138. package/dist/capture/session-texts.js +5 -5
  139. package/dist/capture/session-worker.js +6 -4
  140. package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
  141. package/dist/capture/transcript.d.ts +2 -10
  142. package/dist/capture/transcript.js +72 -92
  143. package/dist/capture/working-state.d.ts +0 -3
  144. package/dist/capture/working-state.js +7 -7
  145. package/dist/cli/api-context.d.ts +3 -0
  146. package/dist/cli/api-context.js +6 -0
  147. package/dist/cli/audit-prune.d.ts +28 -0
  148. package/dist/cli/audit-prune.js +40 -0
  149. package/dist/cli/audit.d.ts +2 -2
  150. package/dist/cli/audit.js +92 -88
  151. package/dist/cli/auth.d.ts +2 -1
  152. package/dist/cli/auth.js +69 -53
  153. package/dist/cli/briefs.d.ts +4 -3
  154. package/dist/cli/briefs.js +76 -202
  155. package/dist/cli/card.d.ts +2 -1
  156. package/dist/cli/card.js +55 -54
  157. package/dist/cli/client.d.ts +28 -0
  158. package/dist/{client.js → cli/client.js} +25 -44
  159. package/dist/cli/compact-resume-payload.d.ts +8 -0
  160. package/dist/cli/compact-resume-payload.js +40 -0
  161. package/dist/cli/context.d.ts +1 -13
  162. package/dist/cli/context.js +51 -77
  163. package/dist/cli/continuity.d.ts +6 -5
  164. package/dist/cli/continuity.js +153 -145
  165. package/dist/cli/correction-latency.d.ts +24 -0
  166. package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
  167. package/dist/cli/curate.d.ts +13 -17
  168. package/dist/cli/curate.js +226 -222
  169. package/dist/cli/dag.d.ts +4 -4
  170. package/dist/cli/dag.js +70 -52
  171. package/dist/cli/decisions.d.ts +4 -3
  172. package/dist/cli/decisions.js +129 -253
  173. package/dist/cli/eval.d.ts +1 -3
  174. package/dist/cli/eval.js +56 -42
  175. package/dist/cli/exit.d.ts +6 -0
  176. package/dist/cli/exit.js +11 -0
  177. package/dist/cli/explain.d.ts +1 -2
  178. package/dist/cli/explain.js +39 -21
  179. package/dist/cli/flag-values.d.ts +30 -0
  180. package/dist/cli/flag-values.js +120 -0
  181. package/dist/cli/flags.d.ts +304 -0
  182. package/dist/cli/flags.js +169 -0
  183. package/dist/cli/github.d.ts +14 -0
  184. package/dist/cli/github.js +184 -0
  185. package/dist/cli/goals.d.ts +2 -1
  186. package/dist/cli/goals.js +76 -75
  187. package/dist/cli/hook-runtime.d.ts +31 -0
  188. package/dist/cli/hook-runtime.js +139 -0
  189. package/dist/cli/init.d.ts +2 -1
  190. package/dist/cli/init.js +153 -126
  191. package/dist/cli/install-steps.d.ts +7 -0
  192. package/dist/cli/install-steps.js +101 -0
  193. package/dist/cli/last-sleep.d.ts +3 -1
  194. package/dist/cli/last-sleep.js +12 -7
  195. package/dist/cli/maintenance.d.ts +5 -4
  196. package/dist/cli/maintenance.js +41 -42
  197. package/dist/cli/object-verbs.d.ts +40 -0
  198. package/dist/cli/object-verbs.js +66 -0
  199. package/dist/cli/owner-validation.d.ts +18 -0
  200. package/dist/cli/owner-validation.js +33 -0
  201. package/dist/cli/playbooks.d.ts +4 -3
  202. package/dist/cli/playbooks.js +98 -306
  203. package/dist/cli/print.d.ts +15 -0
  204. package/dist/cli/print.js +82 -0
  205. package/dist/cli/projects.d.ts +2 -3
  206. package/dist/cli/projects.js +56 -51
  207. package/dist/cli/provenance-coverage.d.ts +14 -0
  208. package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
  209. package/dist/cli/quality-repair-once.js +4 -4
  210. package/dist/cli/recall.d.ts +2 -6
  211. package/dist/cli/recall.js +128 -253
  212. package/dist/cli/refine-llm.d.ts +35 -0
  213. package/dist/cli/refine-llm.js +128 -0
  214. package/dist/cli/remember.d.ts +4 -6
  215. package/dist/cli/remember.js +193 -230
  216. package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
  217. package/dist/{scheduler.js → cli/scheduler.js} +22 -22
  218. package/dist/cli/serve.d.ts +1 -1
  219. package/dist/cli/serve.js +46 -7
  220. package/dist/cli/session-hooks.d.ts +11 -19
  221. package/dist/cli/session-hooks.js +263 -258
  222. package/dist/cli/setup.d.ts +4 -3
  223. package/dist/cli/setup.js +55 -37
  224. package/dist/cli/shared.d.ts +14 -118
  225. package/dist/cli/shared.js +26 -400
  226. package/dist/cli/slack.d.ts +2 -1
  227. package/dist/cli/slack.js +46 -74
  228. package/dist/cli/sleep-render.d.ts +4 -0
  229. package/dist/cli/sleep-render.js +61 -0
  230. package/dist/cli/sleep.d.ts +3 -8
  231. package/dist/cli/sleep.js +34 -91
  232. package/dist/cli/status.d.ts +9 -12
  233. package/dist/cli/status.js +86 -131
  234. package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
  235. package/dist/{stdin.js → cli/stdin.js} +8 -9
  236. package/dist/cli/transfer.d.ts +9 -9
  237. package/dist/cli/transfer.js +125 -122
  238. package/dist/cli/usage.js +13 -5
  239. package/dist/cli.d.ts +69 -167
  240. package/dist/cli.js +187 -296
  241. package/dist/connectors/dlq.d.ts +44 -0
  242. package/dist/connectors/dlq.js +30 -0
  243. package/dist/connectors/github/backfill.d.ts +6 -26
  244. package/dist/connectors/github/backfill.js +42 -114
  245. package/dist/connectors/github/deletion.d.ts +6 -21
  246. package/dist/connectors/github/deletion.js +17 -64
  247. package/dist/connectors/github/dlq.d.ts +12 -91
  248. package/dist/connectors/github/dlq.js +23 -140
  249. package/dist/connectors/github/ingest.d.ts +4 -37
  250. package/dist/connectors/github/ingest.js +24 -93
  251. package/dist/connectors/github/octokit-client.d.ts +5 -17
  252. package/dist/connectors/github/octokit-client.js +29 -25
  253. package/dist/connectors/github/ratelimit.d.ts +3 -14
  254. package/dist/connectors/github/ratelimit.js +3 -14
  255. package/dist/connectors/github/scope.d.ts +3 -5
  256. package/dist/connectors/github/scope.js +3 -5
  257. package/dist/connectors/github/signature.d.ts +4 -26
  258. package/dist/connectors/github/signature.js +4 -26
  259. package/dist/connectors/github/tenant-routing.d.ts +4 -26
  260. package/dist/connectors/github/tenant-routing.js +13 -61
  261. package/dist/connectors/github/transform.d.ts +1 -1
  262. package/dist/connectors/github/transform.js +2 -16
  263. package/dist/connectors/github/types.d.ts +4 -16
  264. package/dist/connectors/github/types.js +17 -27
  265. package/dist/connectors/github/webhook.d.ts +5 -18
  266. package/dist/connectors/github/webhook.js +86 -105
  267. package/dist/connectors/slack/backfill.d.ts +5 -18
  268. package/dist/connectors/slack/backfill.js +9 -42
  269. package/dist/connectors/slack/deletion.d.ts +4 -7
  270. package/dist/connectors/slack/deletion.js +20 -49
  271. package/dist/connectors/slack/dlq.d.ts +9 -68
  272. package/dist/connectors/slack/dlq.js +26 -136
  273. package/dist/connectors/slack/ingest.d.ts +4 -18
  274. package/dist/connectors/slack/ingest.js +26 -91
  275. package/dist/connectors/slack/scope.d.ts +2 -8
  276. package/dist/connectors/slack/scope.js +2 -8
  277. package/dist/connectors/slack/signature.d.ts +1 -6
  278. package/dist/connectors/slack/signature.js +2 -1
  279. package/dist/connectors/slack/tenant-routing.d.ts +4 -18
  280. package/dist/connectors/slack/tenant-routing.js +11 -31
  281. package/dist/connectors/slack/transform.d.ts +3 -19
  282. package/dist/connectors/slack/transform.js +2 -18
  283. package/dist/connectors/slack/types.d.ts +4 -10
  284. package/dist/connectors/slack/types.js +5 -16
  285. package/dist/connectors/slack/web-client.js +34 -28
  286. package/dist/connectors/slack/webhook.d.ts +5 -21
  287. package/dist/connectors/slack/webhook.js +80 -108
  288. package/dist/connectors/slack/workspaces.d.ts +8 -41
  289. package/dist/connectors/slack/workspaces.js +8 -58
  290. package/dist/consolidate/conflicts.d.ts +1 -1
  291. package/dist/consolidate/conflicts.js +10 -18
  292. package/dist/consolidate/dag-summary.d.ts +8 -0
  293. package/dist/consolidate/dag-summary.js +41 -0
  294. package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
  295. package/dist/{dag.js → consolidate/dag.js} +49 -131
  296. package/dist/consolidate/decay.d.ts +2 -2
  297. package/dist/consolidate/decay.js +35 -41
  298. package/dist/consolidate/dedupe.d.ts +29 -0
  299. package/dist/consolidate/dedupe.js +103 -0
  300. package/dist/consolidate/flush-units.d.ts +5 -6
  301. package/dist/consolidate/flush-units.js +3 -3
  302. package/dist/consolidate/half-life-migration.d.ts +34 -0
  303. package/dist/consolidate/half-life-migration.js +89 -0
  304. package/dist/consolidate/llm-passes.js +12 -29
  305. package/dist/consolidate/memory-value-weights.d.ts +8 -0
  306. package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
  307. package/dist/consolidate/memory-value.d.ts +45 -0
  308. package/dist/consolidate/memory-value.js +164 -0
  309. package/dist/consolidate/merge.js +65 -83
  310. package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
  311. package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
  312. package/dist/consolidate/physics-pass.js +46 -48
  313. package/dist/consolidate/replay.d.ts +9 -0
  314. package/dist/consolidate/replay.js +84 -0
  315. package/dist/consolidate/run.d.ts +7 -13
  316. package/dist/consolidate/run.js +6 -37
  317. package/dist/consolidate/sleep.d.ts +2 -9
  318. package/dist/consolidate/sleep.js +69 -151
  319. package/dist/consolidate/trace.d.ts +19 -0
  320. package/dist/{trace.js → consolidate/trace.js} +7 -24
  321. package/dist/consolidate/traces.js +40 -51
  322. package/dist/core/ablation.d.ts +15 -0
  323. package/dist/core/ablation.js +49 -0
  324. package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
  325. package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
  326. package/dist/{ambient.d.ts → core/ambient.d.ts} +1 -8
  327. package/dist/{ambient.js → core/ambient.js} +13 -18
  328. package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
  329. package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
  330. package/dist/{card.d.ts → core/card.d.ts} +4 -1
  331. package/dist/{card.js → core/card.js} +8 -0
  332. package/dist/core/compare.d.ts +32 -0
  333. package/dist/core/compare.js +70 -0
  334. package/dist/{config.d.ts → core/config.d.ts} +14 -28
  335. package/dist/{config.js → core/config.js} +101 -75
  336. package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
  337. package/dist/core/handoff.js +81 -0
  338. package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
  339. package/dist/core/memory.d.ts +183 -0
  340. package/dist/core/memory.js +380 -0
  341. package/dist/core/package-root.d.ts +3 -0
  342. package/dist/core/package-root.js +5 -0
  343. package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
  344. package/dist/{physics-config.js → core/physics-config.js} +3 -8
  345. package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
  346. package/dist/{physics.js → core/physics.js} +60 -122
  347. package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
  348. package/dist/{project-identity.js → core/project-identity.js} +22 -55
  349. package/dist/{project-remote.js → core/project-remote.js} +17 -6
  350. package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
  351. package/dist/core/raw-append-only.d.ts +5 -0
  352. package/dist/core/raw-append-only.js +7 -0
  353. package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
  354. package/dist/{salience.js → core/salience.js} +36 -27
  355. package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
  356. package/dist/{search/types.js → core/search-types.js} +1 -1
  357. package/dist/core/session-digest-row.d.ts +5 -0
  358. package/dist/core/session-digest-row.js +6 -0
  359. package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
  360. package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +7 -7
  361. package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
  362. package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
  363. package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +11 -10
  364. package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
  365. package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
  366. package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
  367. package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
  368. package/dist/db/backup.js +1 -1
  369. package/dist/db/busy.d.ts +19 -2
  370. package/dist/db/busy.js +88 -14
  371. package/dist/db/connect.d.ts +11 -2
  372. package/dist/db/connect.js +43 -10
  373. package/dist/db/index.d.ts +9 -0
  374. package/dist/db/index.js +8 -0
  375. package/dist/db/meta.d.ts +4 -0
  376. package/dist/db/meta.js +11 -1
  377. package/dist/db/migrate.d.ts +8 -1
  378. package/dist/db/migrate.js +28 -33
  379. package/dist/db/migrations/types.d.ts +2 -5
  380. package/dist/db/migrations/v08.js +1 -1
  381. package/dist/db/migrations/v14.js +39 -36
  382. package/dist/db/migrations/v15.js +2 -8
  383. package/dist/db/migrations/v16.js +31 -29
  384. package/dist/db/migrations/v17.js +2 -3
  385. package/dist/db/migrations/v18.js +6 -5
  386. package/dist/db/migrations/v19.js +2 -5
  387. package/dist/db/migrations/v20.js +5 -8
  388. package/dist/db/migrations/v22.js +28 -38
  389. package/dist/db/migrations/v23.js +3 -14
  390. package/dist/db/migrations/v24.js +25 -22
  391. package/dist/db/migrations/v25.js +3 -8
  392. package/dist/db/migrations/v26.js +2 -13
  393. package/dist/db/migrations/v27.js +3 -11
  394. package/dist/db/migrations/v28.js +2 -14
  395. package/dist/db/migrations/v29.js +23 -32
  396. package/dist/db/migrations/v30.js +4 -16
  397. package/dist/db/migrations/v31.js +23 -31
  398. package/dist/db/migrations/v32.js +4 -22
  399. package/dist/db/migrations/v33.js +2 -15
  400. package/dist/db/migrations/v34.js +2 -11
  401. package/dist/db/migrations/v35.js +2 -11
  402. package/dist/db/migrations/v36.js +2 -11
  403. package/dist/db/migrations/v37.js +8 -33
  404. package/dist/db/migrations/v38.js +5 -38
  405. package/dist/db/migrations/v39.js +10 -21
  406. package/dist/db/migrations/v40.js +8 -14
  407. package/dist/db/migrations/v41.js +2 -24
  408. package/dist/db/migrations/v43.js +7 -6
  409. package/dist/db/migrations/v44.js +2 -8
  410. package/dist/db/migrations/v45.js +2 -7
  411. package/dist/db/migrations/v46.js +1 -1
  412. package/dist/db/migrations/v47.js +2 -3
  413. package/dist/db/migrations/v48.js +1 -1
  414. package/dist/db/migrations/v49.js +1 -1
  415. package/dist/db/migrations/v50.js +8 -7
  416. package/dist/db/migrations/v51.js +1 -1
  417. package/dist/db/migrations/v52.js +1 -1
  418. package/dist/db/open.d.ts +11 -1
  419. package/dist/db/open.js +37 -4
  420. package/dist/db/physics-state.d.ts +23 -0
  421. package/dist/{physics-state.js → db/physics-state.js} +34 -52
  422. package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
  423. package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
  424. package/dist/db/request-stores.d.ts +15 -2
  425. package/dist/db/request-stores.js +37 -15
  426. package/dist/db/tables.d.ts +2 -0
  427. package/dist/db/tables.js +6 -0
  428. package/dist/{vector-store.d.ts → db/vector-store.d.ts} +6 -2
  429. package/dist/{vector-store.js → db/vector-store.js} +83 -51
  430. package/dist/db/wal-checkpointer.d.ts +11 -0
  431. package/dist/db/wal-checkpointer.js +92 -0
  432. package/dist/doctor.js +176 -152
  433. package/dist/entry/json-hooks.d.ts +1 -1
  434. package/dist/entry/json-hooks.js +1 -1
  435. package/dist/entry/project-identity.d.ts +1 -1
  436. package/dist/entry/project-identity.js +1 -1
  437. package/dist/entry/session-text.d.ts +3 -3
  438. package/dist/entry/session-text.js +5 -4
  439. package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
  440. package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
  441. package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
  442. package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
  443. package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
  444. package/dist/{eval.js → eval/eval.js} +35 -55
  445. package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
  446. package/dist/{judgment.js → eval/judgment.js} +23 -20
  447. package/dist/extensions/openclaw-plugin/index.js +2 -3
  448. package/dist/graph/delta.d.ts +3 -2
  449. package/dist/graph/delta.js +9 -23
  450. package/dist/{graph-extract.d.ts → graph/extract.d.ts} +10 -32
  451. package/dist/{graph-extract.js → graph/extract.js} +40 -81
  452. package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
  453. package/dist/{graph-recall.js → graph/recall.js} +65 -108
  454. package/dist/graph/stream.d.ts +38 -0
  455. package/dist/{graph-stream.js → graph/stream.js} +20 -41
  456. package/dist/graph/view.d.ts +50 -0
  457. package/dist/graph/view.js +265 -0
  458. package/dist/graph/write.d.ts +4 -76
  459. package/dist/graph/write.js +13 -397
  460. package/dist/hooks/codex-session.js +1 -1
  461. package/dist/hooks/codex-wrapper.js +16 -17
  462. package/dist/hooks/copilot.d.ts +1 -8
  463. package/dist/hooks/copilot.js +16 -16
  464. package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
  465. package/dist/{cli → hooks}/hook-blocks.js +38 -125
  466. package/dist/hooks/json-hooks.d.ts +5 -37
  467. package/dist/hooks/json-hooks.js +49 -179
  468. package/dist/hooks/opencode.d.ts +0 -38
  469. package/dist/hooks/opencode.js +44 -103
  470. package/dist/hooks/shared.d.ts +8 -21
  471. package/dist/hooks/shared.js +30 -25
  472. package/dist/importers/core.d.ts +13 -42
  473. package/dist/importers/core.js +48 -64
  474. package/dist/importers/markdown-parse.d.ts +9 -32
  475. package/dist/importers/markdown-parse.js +10 -44
  476. package/dist/importers/markdown.js +5 -13
  477. package/dist/importers/sources.js +57 -81
  478. package/dist/importers/vault.d.ts +2 -8
  479. package/dist/importers/vault.js +95 -172
  480. package/dist/index.d.ts +26 -22
  481. package/dist/index.js +25 -21
  482. package/dist/learn/autolearn.d.ts +29 -0
  483. package/dist/{autolearn.js → learn/autolearn.js} +26 -51
  484. package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
  485. package/dist/{churn-git.js → learn/churn-git.js} +6 -4
  486. package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
  487. package/dist/learn/extract.js +123 -0
  488. package/dist/learn/forward-claim-detector.d.ts +12 -0
  489. package/dist/learn/forward-claim-detector.js +60 -0
  490. package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
  491. package/dist/{invalidation.js → learn/invalidation.js} +92 -125
  492. package/dist/mcp/admin-tools.d.ts +1 -1
  493. package/dist/mcp/admin-tools.js +39 -64
  494. package/dist/mcp/format.d.ts +5 -5
  495. package/dist/mcp/format.js +7 -6
  496. package/dist/mcp/framing.d.ts +6 -0
  497. package/dist/mcp/framing.js +11 -3
  498. package/dist/mcp/memory-tools.js +10 -35
  499. package/dist/mcp/protocol.d.ts +14 -36
  500. package/dist/mcp/protocol.js +10 -19
  501. package/dist/mcp/recall-tools.d.ts +2 -2
  502. package/dist/mcp/recall-tools.js +70 -52
  503. package/dist/mcp/request.d.ts +3 -11
  504. package/dist/mcp/request.js +71 -85
  505. package/dist/mcp/server.d.ts +3 -9
  506. package/dist/mcp/server.js +6 -17
  507. package/dist/mcp/session-state.d.ts +2 -3
  508. package/dist/mcp/session-state.js +7 -13
  509. package/dist/mcp/shared-gate.js +1 -1
  510. package/dist/mcp/stdio.d.ts +2 -6
  511. package/dist/mcp/stdio.js +112 -38
  512. package/dist/mcp/tool-args.js +2 -1
  513. package/dist/mcp/tools.js +7 -5
  514. package/dist/objects/customer-notes.d.ts +44 -0
  515. package/dist/objects/customer-notes.js +71 -0
  516. package/dist/objects/decisions.d.ts +41 -0
  517. package/dist/objects/decisions.js +63 -0
  518. package/dist/objects/descriptor.d.ts +52 -0
  519. package/dist/objects/descriptor.js +4 -0
  520. package/dist/objects/fields.d.ts +15 -0
  521. package/dist/objects/fields.js +21 -0
  522. package/dist/objects/incidents.d.ts +45 -0
  523. package/dist/objects/incidents.js +96 -0
  524. package/dist/objects/lifecycle.d.ts +27 -0
  525. package/dist/objects/lifecycle.js +96 -0
  526. package/dist/objects/policies.d.ts +60 -0
  527. package/dist/objects/policies.js +102 -0
  528. package/dist/objects/processes.d.ts +43 -0
  529. package/dist/objects/processes.js +92 -0
  530. package/dist/objects/project-briefs.d.ts +63 -0
  531. package/dist/objects/project-briefs.js +194 -0
  532. package/dist/objects/skills.d.ts +51 -0
  533. package/dist/objects/skills.js +110 -0
  534. package/dist/postinstall.js +10 -21
  535. package/dist/predictions/planning-fallacy.d.ts +14 -109
  536. package/dist/predictions/planning-fallacy.js +4 -129
  537. package/dist/rerankers/clef.d.ts +2 -6
  538. package/dist/rerankers/clef.js +28 -76
  539. package/dist/rerankers/cross-encoder.d.ts +0 -7
  540. package/dist/rerankers/cross-encoder.js +18 -28
  541. package/dist/rerankers/index.js +8 -7
  542. package/dist/rerankers/jev.d.ts +1 -4
  543. package/dist/rerankers/jev.js +36 -52
  544. package/dist/rerankers/llm.d.ts +2 -13
  545. package/dist/rerankers/llm.js +42 -59
  546. package/dist/rerankers/outage-warning.d.ts +8 -0
  547. package/dist/rerankers/outage-warning.js +32 -0
  548. package/dist/rerankers/remote.d.ts +4 -0
  549. package/dist/rerankers/remote.js +25 -0
  550. package/dist/rerankers/types.d.ts +3 -15
  551. package/dist/search/as-of.d.ts +1 -1
  552. package/dist/search/bm25-search.d.ts +2 -2
  553. package/dist/search/bm25-search.js +7 -7
  554. package/dist/search/bm25.d.ts +1 -1
  555. package/dist/search/bm25.js +1 -1
  556. package/dist/search/boosts.d.ts +5 -3
  557. package/dist/search/boosts.js +36 -15
  558. package/dist/search/breakdown.d.ts +2 -2
  559. package/dist/search/breakdown.js +2 -1
  560. package/dist/search/explain.d.ts +1 -1
  561. package/dist/search/explain.js +3 -2
  562. package/dist/search/finalize.d.ts +2 -2
  563. package/dist/search/finalize.js +4 -3
  564. package/dist/search/fusion.d.ts +1 -1
  565. package/dist/search/fusion.js +3 -3
  566. package/dist/search/goal-boost.d.ts +23 -0
  567. package/dist/search/goal-boost.js +90 -0
  568. package/dist/search/hybrid-score.d.ts +2 -2
  569. package/dist/search/hybrid-score.js +1 -1
  570. package/dist/search/hybrid.d.ts +6 -4
  571. package/dist/search/hybrid.js +11 -8
  572. package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
  573. package/dist/{multihop.js → search/multihop.js} +9 -8
  574. package/dist/search/path-context.d.ts +11 -0
  575. package/dist/{path-context.js → search/path-context.js} +8 -19
  576. package/dist/search/physics-search.d.ts +4 -4
  577. package/dist/search/physics-search.js +25 -22
  578. package/dist/search/rerank.d.ts +3 -3
  579. package/dist/search/rerank.js +4 -3
  580. package/dist/search/rrf.d.ts +15 -0
  581. package/dist/search/rrf.js +36 -0
  582. package/dist/search/temporal.d.ts +1 -1
  583. package/dist/search/temporal.js +5 -2
  584. package/dist/search/vector.d.ts +10 -3
  585. package/dist/search/vector.js +51 -15
  586. package/dist/server/auth.d.ts +10 -29
  587. package/dist/server/auth.js +57 -42
  588. package/dist/server/boot.d.ts +5 -0
  589. package/dist/server/boot.js +432 -0
  590. package/dist/server/client-ip.d.ts +8 -20
  591. package/dist/server/client-ip.js +23 -34
  592. package/dist/server/cursor.d.ts +1 -1
  593. package/dist/server/cursor.js +2 -3
  594. package/dist/server/deadline.d.ts +13 -0
  595. package/dist/server/deadline.js +45 -0
  596. package/dist/server/defaults.d.ts +3 -0
  597. package/dist/server/defaults.js +4 -0
  598. package/dist/server/key-check-bounds.d.ts +9 -0
  599. package/dist/server/key-check-bounds.js +46 -0
  600. package/dist/server/lifecycle.d.ts +5 -4
  601. package/dist/server/lifecycle.js +20 -5
  602. package/dist/server/mcp-http.d.ts +1 -4
  603. package/dist/server/mcp-http.js +44 -68
  604. package/dist/server/rate-limit.d.ts +21 -0
  605. package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
  606. package/dist/server/ready.d.ts +7 -0
  607. package/dist/server/ready.js +38 -0
  608. package/dist/server/request.d.ts +14 -12
  609. package/dist/server/request.js +71 -28
  610. package/dist/server/route-table.d.ts +15 -0
  611. package/dist/server/route-table.js +202 -0
  612. package/dist/server/routes/admin.js +29 -30
  613. package/dist/server/routes/customer-notes.d.ts +5 -5
  614. package/dist/server/routes/customer-notes.js +35 -105
  615. package/dist/server/routes/decisions.d.ts +5 -5
  616. package/dist/server/routes/decisions.js +45 -115
  617. package/dist/server/routes/incidents.d.ts +5 -5
  618. package/dist/server/routes/incidents.js +44 -105
  619. package/dist/server/routes/memories.js +21 -43
  620. package/dist/server/routes/object-routes.d.ts +35 -0
  621. package/dist/server/routes/object-routes.js +72 -0
  622. package/dist/server/routes/policies.d.ts +6 -6
  623. package/dist/server/routes/policies.js +42 -134
  624. package/dist/server/routes/predictions.js +35 -63
  625. package/dist/server/routes/processes.d.ts +5 -5
  626. package/dist/server/routes/processes.js +44 -134
  627. package/dist/server/routes/project-briefs.d.ts +6 -6
  628. package/dist/server/routes/project-briefs.js +41 -120
  629. package/dist/server/routes/recall.js +21 -44
  630. package/dist/server/routes/skills.d.ts +6 -6
  631. package/dist/server/routes/skills.js +40 -138
  632. package/dist/server/server-detect.d.ts +28 -0
  633. package/dist/server/server-detect.js +156 -0
  634. package/dist/server/sleep-child.d.ts +2 -0
  635. package/dist/server/sleep-child.js +19 -0
  636. package/dist/server/sleep-offload.d.ts +20 -0
  637. package/dist/server/sleep-offload.js +73 -0
  638. package/dist/server/tls.d.ts +6 -0
  639. package/dist/server/tls.js +24 -0
  640. package/dist/server/types.d.ts +35 -14
  641. package/dist/server/validation.d.ts +6 -5
  642. package/dist/server/validation.js +16 -34
  643. package/dist/server.d.ts +39 -61
  644. package/dist/server.js +26 -569
  645. package/dist/sharing/global-store.d.ts +19 -0
  646. package/dist/sharing/global-store.js +75 -0
  647. package/dist/sharing/global-sync.d.ts +6 -0
  648. package/dist/sharing/global-sync.js +80 -0
  649. package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
  650. package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
  651. package/dist/sharing/scope.d.ts +7 -0
  652. package/dist/{scope.js → sharing/scope.js} +5 -12
  653. package/dist/sharing/search-both.d.ts +60 -0
  654. package/dist/sharing/search-both.js +138 -0
  655. package/dist/sharing/share.d.ts +38 -0
  656. package/dist/sharing/share.js +226 -0
  657. package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
  658. package/dist/{ambient-store.js → store/ambient.js} +11 -16
  659. package/dist/store/audit-event.d.ts +15 -17
  660. package/dist/store/audit-event.js +9 -16
  661. package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
  662. package/dist/{audit.js → store/audit.js} +95 -18
  663. package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
  664. package/dist/{auth.js → store/auth.js} +108 -99
  665. package/dist/store/candidates.d.ts +41 -13
  666. package/dist/store/candidates.js +141 -60
  667. package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
  668. package/dist/{card-detail.js → store/card-detail.js} +3 -2
  669. package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
  670. package/dist/{store-cards.js → store/cards.js} +133 -248
  671. package/dist/store/compactions.d.ts +78 -0
  672. package/dist/store/compactions.js +93 -0
  673. package/dist/store/conflicts.d.ts +26 -26
  674. package/dist/store/conflicts.js +194 -222
  675. package/dist/store/connectors/github.d.ts +84 -0
  676. package/dist/store/connectors/github.js +180 -0
  677. package/dist/store/connectors/slack.d.ts +69 -0
  678. package/dist/store/connectors/slack.js +177 -0
  679. package/dist/store/dashboard-reads.d.ts +27 -0
  680. package/dist/store/dashboard-reads.js +88 -0
  681. package/dist/store/delete-and-batch.d.ts +27 -51
  682. package/dist/store/delete-and-batch.js +100 -92
  683. package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
  684. package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
  685. package/dist/store/descendant-page.d.ts +12 -0
  686. package/dist/store/descendant-page.js +99 -0
  687. package/dist/store/diagnostics.d.ts +47 -0
  688. package/dist/store/diagnostics.js +44 -0
  689. package/dist/store/doctor-reads.d.ts +16 -0
  690. package/dist/store/doctor-reads.js +19 -0
  691. package/dist/store/dormant.d.ts +105 -0
  692. package/dist/store/dormant.js +241 -0
  693. package/dist/store/embeddings/index.d.ts +36 -0
  694. package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
  695. package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
  696. package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
  697. package/dist/store/embeddings/provider.d.ts +40 -0
  698. package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
  699. package/dist/store/entry-reads.d.ts +66 -63
  700. package/dist/store/entry-reads.js +159 -121
  701. package/dist/store/entry-row.d.ts +14 -37
  702. package/dist/store/entry-row.js +37 -45
  703. package/dist/store/entry-writes.d.ts +40 -17
  704. package/dist/store/entry-writes.js +105 -41
  705. package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
  706. package/dist/{failure-log.js → store/failure-log.js} +9 -2
  707. package/dist/store/goals.d.ts +96 -0
  708. package/dist/store/goals.js +260 -0
  709. package/dist/store/graph-queue.d.ts +13 -0
  710. package/dist/store/graph-queue.js +70 -0
  711. package/dist/store/graph-reads.d.ts +41 -0
  712. package/dist/{graph/read.js → store/graph-reads.js} +72 -162
  713. package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
  714. package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
  715. package/dist/store/graph-view-rows.d.ts +13 -0
  716. package/dist/store/graph-view-rows.js +68 -0
  717. package/dist/store/graph-writes.d.ts +33 -0
  718. package/dist/store/graph-writes.js +232 -0
  719. package/dist/store/half-life.d.ts +35 -0
  720. package/dist/store/half-life.js +75 -0
  721. package/dist/store/handoffs.d.ts +6 -12
  722. package/dist/store/handoffs.js +54 -63
  723. package/dist/store/index-and-stats.d.ts +14 -20
  724. package/dist/store/index-and-stats.js +74 -119
  725. package/dist/store/index.d.ts +4 -0
  726. package/dist/store/index.js +3 -0
  727. package/dist/store/key-audit.d.ts +2 -2
  728. package/dist/store/key-audit.js +4 -4
  729. package/dist/store/key-writes.d.ts +12 -5
  730. package/dist/store/key-writes.js +30 -4
  731. package/dist/store/ledger-turn.d.ts +17 -0
  732. package/dist/store/ledger-turn.js +27 -0
  733. package/dist/store/markdown.d.ts +3 -7
  734. package/dist/store/markdown.js +25 -23
  735. package/dist/store/mirrors.d.ts +7 -13
  736. package/dist/store/mirrors.js +52 -47
  737. package/dist/store/object-types.d.ts +189 -0
  738. package/dist/store/object-types.js +4 -0
  739. package/dist/store/open.d.ts +6 -4
  740. package/dist/store/open.js +30 -36
  741. package/dist/store/planning-fallacy-evidence.d.ts +14 -0
  742. package/dist/store/planning-fallacy-evidence.js +52 -0
  743. package/dist/store/port.d.ts +649 -0
  744. package/dist/store/port.js +17 -0
  745. package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
  746. package/dist/{predictions/store.js → store/predictions.js} +88 -184
  747. package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
  748. package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
  749. package/dist/{quarantine.js → store/quarantine.js} +64 -22
  750. package/dist/store/raw-archive.d.ts +14 -0
  751. package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
  752. package/dist/store/recall-scope.d.ts +78 -0
  753. package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
  754. package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
  755. package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
  756. package/dist/store/rejected-values.d.ts +55 -0
  757. package/dist/store/rejected-values.js +150 -0
  758. package/dist/store/rejection.d.ts +54 -0
  759. package/dist/{rejection.js → store/rejection.js} +16 -67
  760. package/dist/store/report-reads.d.ts +6 -0
  761. package/dist/store/report-reads.js +29 -0
  762. package/dist/store/rows.d.ts +11 -22
  763. package/dist/store/rows.js +52 -43
  764. package/dist/store/rule-sql.d.ts +5 -0
  765. package/dist/store/rule-sql.js +37 -0
  766. package/dist/store/search-rows.d.ts +22 -42
  767. package/dist/store/search-rows.js +55 -78
  768. package/dist/store/sessions.d.ts +23 -49
  769. package/dist/store/sessions.js +96 -118
  770. package/dist/store/sqlite/commit-watch.d.ts +4 -0
  771. package/dist/store/sqlite/commit-watch.js +29 -0
  772. package/dist/store/sqlite/connector-events-group.d.ts +5 -0
  773. package/dist/store/sqlite/connector-events-group.js +50 -0
  774. package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
  775. package/dist/store/sqlite/connector-writes-group.js +65 -0
  776. package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
  777. package/dist/store/sqlite/dag-reads-group.js +45 -0
  778. package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
  779. package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
  780. package/dist/store/sqlite/error-codec.d.ts +17 -0
  781. package/dist/store/sqlite/error-codec.js +61 -0
  782. package/dist/store/sqlite/executor-counts.d.ts +10 -0
  783. package/dist/store/sqlite/executor-counts.js +11 -0
  784. package/dist/store/sqlite/executor.d.ts +29 -0
  785. package/dist/store/sqlite/executor.js +287 -0
  786. package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
  787. package/dist/store/sqlite/graph-reads-group.js +18 -0
  788. package/dist/store/sqlite/local.d.ts +21 -0
  789. package/dist/store/sqlite/local.js +39 -0
  790. package/dist/store/sqlite/object-rows.d.ts +102 -0
  791. package/dist/store/sqlite/object-rows.js +221 -0
  792. package/dist/store/sqlite/objects-group.d.ts +20 -0
  793. package/dist/store/sqlite/objects-group.js +316 -0
  794. package/dist/store/sqlite/predictions-group.d.ts +5 -0
  795. package/dist/store/sqlite/predictions-group.js +28 -0
  796. package/dist/store/sqlite/quarantine-group.d.ts +5 -0
  797. package/dist/store/sqlite/quarantine-group.js +38 -0
  798. package/dist/store/sqlite/store.d.ts +23 -0
  799. package/dist/store/sqlite/store.js +294 -0
  800. package/dist/store/sqlite/vector-pack.d.ts +18 -0
  801. package/dist/store/sqlite/vector-pack.js +46 -0
  802. package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
  803. package/dist/store/sqlite/vector-reads-group.js +23 -0
  804. package/dist/store/sqlite/worker-entry.d.ts +2 -0
  805. package/dist/store/sqlite/worker-entry.js +8 -0
  806. package/dist/store/sqlite/worker-jobs.d.ts +5 -0
  807. package/dist/store/sqlite/worker-jobs.js +116 -0
  808. package/dist/store/sqlite/worker-ops.d.ts +135 -0
  809. package/dist/store/sqlite/worker-ops.js +93 -0
  810. package/dist/store/sqlite/worker-store.d.ts +8 -0
  811. package/dist/store/sqlite/worker-store.js +79 -0
  812. package/dist/store/summaries.d.ts +11 -72
  813. package/dist/store/summaries.js +47 -186
  814. package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
  815. package/dist/{summary-dirty.js → store/summary-dirty.js} +1 -1
  816. package/dist/store/tenant-lookup.d.ts +6 -1
  817. package/dist/store/tenant-lookup.js +7 -0
  818. package/dist/store/tenant.d.ts +11 -0
  819. package/dist/store/tenant.js +28 -0
  820. package/dist/store/token-ledger-rows.d.ts +61 -0
  821. package/dist/store/token-ledger-rows.js +68 -0
  822. package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +14 -51
  823. package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
  824. package/dist/store/tombstone-checks.d.ts +12 -0
  825. package/dist/store/tombstone-checks.js +31 -0
  826. package/dist/store/usage-reports.d.ts +7 -0
  827. package/dist/store/usage-reports.js +18 -0
  828. package/dist/store/vector-index.d.ts +46 -0
  829. package/dist/store/vector-index.js +170 -0
  830. package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
  831. package/dist/store/working-memory.js +118 -0
  832. package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
  833. package/dist/{yaml.js → store/yaml.js} +2 -6
  834. package/dist/support-bundle.d.ts +1 -1
  835. package/dist/support-bundle.js +19 -37
  836. package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
  837. package/dist/{gated-write.js → trust/gated-write.js} +6 -6
  838. package/dist/trust/quarantine.d.ts +4 -0
  839. package/dist/trust/quarantine.js +8 -0
  840. package/dist/trust/reject-flow.d.ts +23 -0
  841. package/dist/trust/reject-flow.js +65 -0
  842. package/dist/util/anthropic-messages.d.ts +31 -0
  843. package/dist/util/anthropic-messages.js +58 -0
  844. package/dist/util/atomic-write.d.ts +4 -0
  845. package/dist/util/atomic-write.js +138 -0
  846. package/dist/util/capped-json.d.ts +6 -0
  847. package/dist/util/capped-json.js +46 -0
  848. package/dist/util/crash-handlers.d.ts +12 -0
  849. package/dist/util/crash-handlers.js +72 -0
  850. package/dist/{env.d.ts → util/env.d.ts} +27 -7
  851. package/dist/{env.js → util/env.js} +33 -8
  852. package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
  853. package/dist/util/home-path.js +69 -0
  854. package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
  855. package/dist/util/http-retry.js +103 -0
  856. package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
  857. package/dist/{http-util.js → util/http-util.js} +31 -11
  858. package/dist/util/json.d.ts +17 -0
  859. package/dist/util/json.js +25 -0
  860. package/dist/{log.d.ts → util/log.d.ts} +7 -3
  861. package/dist/{log.js → util/log.js} +36 -11
  862. package/dist/util/real-path.d.ts +3 -0
  863. package/dist/util/real-path.js +15 -0
  864. package/dist/util/request-scope.d.ts +28 -0
  865. package/dist/util/request-scope.js +48 -0
  866. package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
  867. package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
  868. package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
  869. package/dist/util/stored-json.d.ts +9 -0
  870. package/dist/util/stored-json.js +8 -0
  871. package/dist/util/time.d.ts +2 -0
  872. package/dist/util/time.js +3 -0
  873. package/dist/util/token-text.d.ts +15 -0
  874. package/dist/util/token-text.js +20 -0
  875. package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
  876. package/dist/util/transcript-tail.js +49 -0
  877. package/dist/util/version.d.ts +11 -0
  878. package/dist/util/version.js +26 -0
  879. package/extensions/openclaw-plugin/index.ts +2 -6
  880. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  881. package/extensions/openclaw-plugin/package.json +1 -1
  882. package/openclaw.plugin.json +1 -1
  883. package/package.json +2 -2
  884. package/dist/ablation.d.ts +0 -102
  885. package/dist/ablation.js +0 -136
  886. package/dist/api.d.ts +0 -26
  887. package/dist/api.js +0 -29
  888. package/dist/audit-prune.d.ts +0 -62
  889. package/dist/audit-prune.js +0 -107
  890. package/dist/autolearn.d.ts +0 -56
  891. package/dist/client.d.ts +0 -48
  892. package/dist/compare.d.ts +0 -86
  893. package/dist/compare.js +0 -117
  894. package/dist/connectors/github/cli-impl.d.ts +0 -25
  895. package/dist/connectors/github/cli-impl.js +0 -227
  896. package/dist/connectors/github/idempotency.d.ts +0 -19
  897. package/dist/connectors/github/idempotency.js +0 -27
  898. package/dist/connectors/slack/idempotency.d.ts +0 -17
  899. package/dist/connectors/slack/idempotency.js +0 -31
  900. package/dist/correction-latency.d.ts +0 -36
  901. package/dist/customer-notes.d.ts +0 -96
  902. package/dist/customer-notes.js +0 -336
  903. package/dist/db.d.ts +0 -9
  904. package/dist/db.js +0 -8
  905. package/dist/decisions.d.ts +0 -94
  906. package/dist/decisions.js +0 -326
  907. package/dist/dedupe.d.ts +0 -75
  908. package/dist/dedupe.js +0 -169
  909. package/dist/dormant.d.ts +0 -93
  910. package/dist/dormant.js +0 -137
  911. package/dist/embedding-provider.d.ts +0 -77
  912. package/dist/embeddings.d.ts +0 -101
  913. package/dist/extract.js +0 -133
  914. package/dist/forward-claim-detector.d.ts +0 -36
  915. package/dist/forward-claim-detector.js +0 -112
  916. package/dist/goals.d.ts +0 -173
  917. package/dist/goals.js +0 -448
  918. package/dist/graph/read.d.ts +0 -73
  919. package/dist/graph/rows.d.ts +0 -45
  920. package/dist/graph/types.js +0 -11
  921. package/dist/graph-stream.d.ts +0 -70
  922. package/dist/graph-view.d.ts +0 -73
  923. package/dist/graph-view.js +0 -333
  924. package/dist/half-life-migration.d.ts +0 -63
  925. package/dist/half-life-migration.js +0 -182
  926. package/dist/handoff.js +0 -68
  927. package/dist/home-path.js +0 -24
  928. package/dist/http-retry.js +0 -51
  929. package/dist/incidents.d.ts +0 -103
  930. package/dist/incidents.js +0 -349
  931. package/dist/instruction-detect.js +0 -27
  932. package/dist/json.d.ts +0 -7
  933. package/dist/json.js +0 -11
  934. package/dist/ledger-db.d.ts +0 -10
  935. package/dist/ledger-db.js +0 -42
  936. package/dist/memory-value-weights.d.ts +0 -19
  937. package/dist/memory-value.d.ts +0 -113
  938. package/dist/memory-value.js +0 -250
  939. package/dist/memory.d.ts +0 -294
  940. package/dist/memory.js +0 -522
  941. package/dist/owner-validation.d.ts +0 -42
  942. package/dist/owner-validation.js +0 -56
  943. package/dist/path-context.d.ts +0 -24
  944. package/dist/physics-state.d.ts +0 -39
  945. package/dist/policies.d.ts +0 -151
  946. package/dist/policies.js +0 -434
  947. package/dist/processes.d.ts +0 -108
  948. package/dist/processes.js +0 -371
  949. package/dist/project-briefs.d.ts +0 -128
  950. package/dist/project-briefs.js +0 -523
  951. package/dist/provenance-coverage.d.ts +0 -18
  952. package/dist/rate-limit.d.ts +0 -34
  953. package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
  954. package/dist/raw-archive.d.ts +0 -24
  955. package/dist/recall-history.d.ts +0 -131
  956. package/dist/recall-history.js +0 -227
  957. package/dist/recall-scope.d.ts +0 -138
  958. package/dist/refine-llm.d.ts +0 -61
  959. package/dist/refine-llm.js +0 -167
  960. package/dist/reject-flow.d.ts +0 -69
  961. package/dist/reject-flow.js +0 -260
  962. package/dist/rejection.d.ts +0 -100
  963. package/dist/replay.d.ts +0 -41
  964. package/dist/replay.js +0 -122
  965. package/dist/rrf.d.ts +0 -43
  966. package/dist/rrf.js +0 -61
  967. package/dist/scope.d.ts +0 -14
  968. package/dist/server-detect.d.ts +0 -72
  969. package/dist/server-detect.js +0 -222
  970. package/dist/session-owners.d.ts +0 -7
  971. package/dist/session-owners.js +0 -54
  972. package/dist/shared.d.ts +0 -186
  973. package/dist/shared.js +0 -540
  974. package/dist/skills.d.ts +0 -101
  975. package/dist/skills.js +0 -367
  976. package/dist/store/entry-writes-group.d.ts +0 -9
  977. package/dist/store/vector-writes.d.ts +0 -6
  978. package/dist/store/vector-writes.js +0 -59
  979. package/dist/store-port.d.ts +0 -262
  980. package/dist/store-port.js +0 -178
  981. package/dist/tenant.d.ts +0 -25
  982. package/dist/tenant.js +0 -43
  983. package/dist/trace.d.ts +0 -34
  984. package/dist/transcript-tail.js +0 -48
  985. package/dist/version.d.ts +0 -26
  986. package/dist/version.js +0 -41
  987. package/dist/working-memory.js +0 -154
  988. /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
  989. /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
  990. /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
  991. /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
  992. /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
  993. /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
  994. /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
  995. /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
  996. /package/dist/{api-errors.js → core/api-errors.js} +0 -0
  997. /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
  998. /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
  999. /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
  1000. /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
  1001. /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
  1002. /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
  1003. /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
  1004. /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
  1005. /package/dist/{escape.js → util/escape.js} +0 -0
  1006. /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
  1007. /package/dist/{keyset.js → util/keyset.js} +0 -0
  1008. /package/dist/{same-text.js → util/same-text.js} +0 -0
  1009. /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
  1010. /package/dist/{db → util}/sqlite-blocked.js +0 -0
  1011. /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
  1012. /package/dist/{tokenize.js → util/tokenize.js} +0 -0
  1013. /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
  1014. /package/dist/{write-budget.js → util/write-budget.js} +0 -0
@@ -1,8 +1,10 @@
1
1
  // What a PostToolUseFailure payload says, read with no store, so a hook with no store sends the same reading the local log keeps.
2
- import { redactSecretsStrict } from '../secret-detect.js';
3
- import { scrubForSharing } from '../share-scrub.js';
4
- import { blockHash } from '../token-ledger.js';
5
- import { truncateCodePointSafe } from '../transcript-tail.js';
2
+ import { redactSecretsStrict } from '../util/secret-detect.js';
3
+ import { scrubForSharing } from './share-scrub.js';
4
+ import { blockHash } from '../util/token-text.js';
5
+ import { truncateCodePointSafe } from '../util/transcript-tail.js';
6
+ import { isJsonObjectLiteral } from '../util/json.js';
7
+ const COMMAND_HEAD_WORDS = 2;
6
8
  /** The longest lesson text a reading gives, so a check of a sent one imports it instead of copying it. */
7
9
  export const FAILURE_TEXT_MAX_CHARS = 200;
8
10
  /** The user, a permission prompt or a hook said no: routine, not a lesson. */
@@ -20,12 +22,9 @@ const SHELL_TOOLS = new Set(['Bash', 'bash', 'powershell', 'run_in_terminal']);
20
22
  function isString(v) {
21
23
  return v !== undefined && v !== null && v.constructor === String;
22
24
  }
23
- function isObject(v) {
24
- return v !== undefined && v !== null && !Array.isArray(v) && v.constructor === Object;
25
- }
26
25
  /** A non-blank string field of the payload, or null. */
27
26
  export function payloadString(payload, key) {
28
- if (!isObject(payload))
27
+ if (!isJsonObjectLiteral(payload))
29
28
  return null;
30
29
  const value = payload[key];
31
30
  return isString(value) && value.trim() !== '' ? value : null;
@@ -40,9 +39,9 @@ export function failureHash(text) {
40
39
  }
41
40
  /** The memory text for a failure payload, or why it is not stored; a routine skip keeps its text for the log. `scrub` runs before the cap, as a mask can be longer than what it hides. Pure. */
42
41
  export function lessonFromFailure(payload, scrub = (text) => text) {
43
- if (!isObject(payload))
42
+ if (!isJsonObjectLiteral(payload))
44
43
  return { skip: 'skipped-invalid', text: null, detail: null };
45
- // SAFETY: isObject narrowed payload to a plain JSON object; the fields read are all optional.
44
+ // SAFETY: isJsonObjectLiteral narrowed payload to a plain JSON object; the fields read are all optional.
46
45
  const p = payload;
47
46
  if (p.is_interrupt === true)
48
47
  return { skip: 'skipped-interrupt', text: null, detail: null };
@@ -51,8 +50,8 @@ export function lessonFromFailure(payload, scrub = (text) => text) {
51
50
  const tool = isString(p.tool_name) ? p.tool_name : 'tool';
52
51
  const error = redactSecretsStrict(p.error.replace(/\s+/g, ' ').trim());
53
52
  const text = truncateCodePointSafe(scrub(`${tool}: ${error}`), FAILURE_TEXT_MAX_CHARS);
54
- const command = isObject(p.tool_input) && isString(p.tool_input['command']) ? p.tool_input['command'].replace(LEADING_CD, '') : '';
55
- const head = command.trim().split(/\s+/).slice(0, 2).join(' ');
53
+ const command = isJsonObjectLiteral(p.tool_input) && isString(p.tool_input['command']) ? p.tool_input['command'].replace(LEADING_CD, '') : '';
54
+ const head = command.trim().split(/\s+/).slice(0, COMMAND_HEAD_WORDS).join(' ');
56
55
  const detail = `${tool}${head ? ` ${head}` : ''}: ${error}`;
57
56
  const routine = (rule) => ({ skip: 'skipped-routine', rule, text, detail });
58
57
  if (DECLINED.test(error))
@@ -1,4 +1,4 @@
1
- import type { HandoffEvidence } from './handoff.js';
1
+ import type { HandoffEvidence } from '../core/handoff.js';
2
2
  export declare function collectHandoffEvidence(cwd: string, testStatus: HandoffEvidence['testStatus'], options?: {
3
3
  timeoutMs?: number;
4
4
  }): HandoffEvidence;
@@ -1,9 +1,10 @@
1
1
  // A handoff's git evidence, read with no store, so a hook with no store can send it with the session's end.
2
2
  import { execFileSync } from 'child_process';
3
+ const DEFAULT_TIMEOUT_MS = 2000;
3
4
  // Best-effort git state; a missing git, non-repo cwd, or a call past timeoutMs (each call, default 2 s)
4
5
  // yields null fields rather than throw, so a hook with a hard deadline can cap a slow repo.
5
6
  export function collectHandoffEvidence(cwd, testStatus, options = {}) {
6
- const timeoutMs = options.timeoutMs ?? 2000;
7
+ const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
7
8
  let gitRef = null;
8
9
  try {
9
10
  gitRef = execFileSync('git', ['rev-parse', 'HEAD'], {
@@ -1,5 +1,5 @@
1
1
  import type { Context } from '../api/types.js';
2
- import type { CallerProject } from '../prompt-hook.js';
2
+ import type { CallerProject } from '../api/prompt-hook.js';
3
3
  import { type WorkingState } from './working-state.js';
4
4
  export interface CallerPreCompactRequest {
5
5
  readonly sessionId: string;
@@ -1,5 +1,5 @@
1
- import { markSnapshotSaved, PRE_COMPACT_INSTRUCTION, startCompaction } from '../compaction-record.js';
2
- import { errorMessage, log } from '../log.js';
1
+ import { markSnapshotSaved, PRE_COMPACT_INSTRUCTION, startCompaction } from './compaction-record.js';
2
+ import { errorMessage, log } from '../util/log.js';
3
3
  import { loadActiveTaskSnapshot, saveActiveTaskSnapshot } from '../store/sessions.js';
4
4
  import { assertTrigger, bindCaller, callerInHoldout, checkedWorkingState, withCallerDb } from './caller-session.js';
5
5
  import { mergeWorkingState } from './working-state.js';
@@ -1,6 +1,4 @@
1
- import { type SessionTurn } from './capture/transcript.js';
2
- import { type MemoryEntry } from './memory.js';
3
- export declare const SESSION_DIGEST_TAG = "session-digest";
1
+ import { type SessionTurn } from './transcript.js';
4
2
  /** Five-word runs are stock phrases; six in a row is a copied clause. */
5
3
  export declare const ECHO_WINDOW = 6;
6
4
  /** Five sentences of about 150 chars leave room for the Changed line inside the total cap. */
@@ -32,7 +30,7 @@ export declare function readSessionTranscript(transcriptPath: string, log: (mess
32
30
  /** The transcript, read once and scanned, or null with the reason logged. */
33
31
  export declare function readSessionScan(transcriptPath: string, log: (message: string) => void): SessionScan | null;
34
32
  /** Test-only seam, the scheduler's pattern: lets a test prove a network path never reaches the probe. Null restores it. */
35
- export declare function __setDigestExistsProbe(probe: ((p: string) => boolean) | null): void;
33
+ export declare function _setDigestExistsProbeForTests(probe: ((p: string) => boolean) | null): void;
36
34
  /** The store root is realpath'd; transcript paths are not, and a deleted file has no realpath of its own. Null for a network path. */
37
35
  export declare function realFsPath(p: string): string | null;
38
36
  /** Repo-relative with forward slashes, '' for the root itself, null outside the repo or when the path cannot be resolved. */
@@ -54,8 +52,6 @@ export interface DigestDraft {
54
52
  }
55
53
  /** The digest text, or null when nothing survives the filters. Sentences print in reply order. */
56
54
  export declare function buildSessionDigest(sources: DigestSources): DigestDraft | null;
57
- /** Facts extracted from a digest and DAG summaries over one inherit its tag, but they are not the digest itself. */
58
- export declare function isSessionDigestRow(entry: Pick<MemoryEntry, 'source' | 'tags' | 'extracted_from'>): boolean;
59
55
  /** Same session, same row: a second worker for one session updates the digest instead of adding one. */
60
56
  export declare function sessionDigestId(tenantId: string, key: string): string;
61
57
  export interface SessionDigestOptions {
@@ -2,23 +2,23 @@
2
2
  import { createHash } from 'crypto';
3
3
  import * as fs from 'fs';
4
4
  import * as path from 'path';
5
- import { collectSessionTurns } from './capture/transcript.js';
6
- import { isObjectLike, isStringValue } from './capture-contract.js';
5
+ import { collectSessionTurns } from './transcript.js';
6
+ import { isObjectLike, isStringValue } from '../core/capture-contract.js';
7
7
  import { PATCH_SUCCESS_LINE, patchPaths, shellPatch } from './codex-patch.js';
8
- import { loadConfig } from './config.js';
9
- import { USER_SEGMENT } from './home-path.js';
10
- import { errorMessage } from './log.js';
11
- import { createMemory, Layer } from './memory.js';
12
- import { RejectedValueError } from './rejection.js';
13
- import { maskEmails, redactSecretsStrict } from './secret-detect.js';
14
- import { isInitialized } from './store/open.js';
15
- import { writeEntry } from './store/entry-writes.js';
16
- import { loadAllEntries } from './store/entry-reads.js';
17
- import { SNAPSHOT_AMBIENT_MAX_AGE_MS } from './store/sessions.js';
18
- import { loadLatestHandoff } from './store/handoffs.js';
19
- import { isSyntheticMessage } from './token-ledger.js';
20
- import { readTranscriptTail } from './transcript-tail.js';
21
- export const SESSION_DIGEST_TAG = 'session-digest';
8
+ import { loadConfig } from '../core/config.js';
9
+ import { USER_SEGMENT } from '../util/home-path.js';
10
+ import { errorMessage } from '../util/log.js';
11
+ import { SESSION_DIGEST_TAG } from '../core/session-digest-row.js';
12
+ import { createMemory, Layer } from '../core/memory.js';
13
+ import { RejectedValueError } from '../store/rejection.js';
14
+ import { maskEmails, redactSecretsStrict } from '../util/secret-detect.js';
15
+ import { isInitialized } from '../store/open.js';
16
+ import { writeEntry } from '../store/entry-writes.js';
17
+ import { loadLiveContentsBySourceAndTag } from '../store/entry-reads.js';
18
+ import { SNAPSHOT_AMBIENT_MAX_AGE_MS } from '../store/sessions.js';
19
+ import { loadLatestHandoff } from '../store/handoffs.js';
20
+ import { isSyntheticMessage } from '../store/token-ledger.js';
21
+ import { readOpenTranscriptTail } from '../util/transcript-tail.js';
22
22
  /** Five-word runs are stock phrases; six in a row is a copied clause. */
23
23
  export const ECHO_WINDOW = 6;
24
24
  /** Five sentences of about 150 chars leave room for the Changed line inside the total cap. */
@@ -228,11 +228,17 @@ export function scanSessionTranscript(jsonl) {
228
228
  };
229
229
  }
230
230
  export function readSessionTranscript(transcriptPath, log) {
231
- const size = fs.statSync(transcriptPath).size;
232
- if (size <= READ_CAP_BYTES)
233
- return fs.readFileSync(transcriptPath, 'utf8');
234
- log(`digest: transcript is ${size} bytes, reading its last ${READ_CAP_BYTES}`);
235
- return readTranscriptTail(transcriptPath, READ_CAP_BYTES);
231
+ const fd = fs.openSync(transcriptPath, 'r');
232
+ try {
233
+ const size = fs.fstatSync(fd).size;
234
+ if (size <= READ_CAP_BYTES)
235
+ return fs.readFileSync(fd, 'utf8');
236
+ log(`digest: transcript is ${size} bytes, reading its last ${READ_CAP_BYTES}`);
237
+ return readOpenTranscriptTail(fd, size, READ_CAP_BYTES);
238
+ }
239
+ finally {
240
+ fs.closeSync(fd);
241
+ }
236
242
  }
237
243
  /** The transcript, read once and scanned, or null with the reason logged. */
238
244
  export function readSessionScan(transcriptPath, log) {
@@ -246,7 +252,7 @@ export function readSessionScan(transcriptPath, log) {
246
252
  }
247
253
  let existsProbe = fs.existsSync;
248
254
  /** Test-only seam, the scheduler's pattern: lets a test prove a network path never reaches the probe. Null restores it. */
249
- export function __setDigestExistsProbe(probe) {
255
+ export function _setDigestExistsProbeForTests(probe) {
250
256
  existsProbe = probe ?? fs.existsSync;
251
257
  }
252
258
  /** A \\host or //host path would make existsSync open an SMB connection to a host named in transcript text. */
@@ -430,19 +436,13 @@ export function buildSessionDigest(sources) {
430
436
  return content ? { content, sentences: kept.length, files: files.length } : null;
431
437
  }
432
438
  }
433
- /** Facts extracted from a digest and DAG summaries over one inherit its tag, but they are not the digest itself. */
434
- export function isSessionDigestRow(entry) {
435
- return entry.source === SESSION_DIGEST_TAG && entry.tags.includes(SESSION_DIGEST_TAG) && !entry.extracted_from;
436
- }
437
439
  /** Same session, same row: a second worker for one session updates the digest instead of adding one. */
438
440
  export function sessionDigestId(tenantId, key) {
439
441
  return `mem_${createHash('sha256').update(`${SESSION_DIGEST_TAG}\n${tenantId}\n${key}`).digest('hex').slice(0, 12)}`;
440
442
  }
441
443
  /** What hippo could have injected into the session: any live digest (prompt recall reaches old ones) and the ambient handoff, never this session's own. */
442
444
  function injectedTexts(hippoRoot, opts) {
443
- const digests = loadAllEntries(hippoRoot, opts.tenantId)
444
- .filter((e) => isSessionDigestRow(e) && !e.superseded_by && e.source_session_id !== opts.key)
445
- .map((e) => e.content);
445
+ const digests = loadLiveContentsBySourceAndTag(hippoRoot, opts.tenantId, SESSION_DIGEST_TAG, SESSION_DIGEST_TAG, opts.key);
446
446
  const handoff = loadLatestHandoff(hippoRoot, opts.tenantId, undefined, {
447
447
  unfinishedOnly: true,
448
448
  maxAgeMs: SNAPSHOT_AMBIENT_MAX_AGE_MS,
@@ -1,6 +1,6 @@
1
1
  import type { Context } from '../api/types.js';
2
- import type { HandoffEvidence } from '../handoff.js';
3
- import type { CallerProject } from '../prompt-hook.js';
2
+ import type { HandoffEvidence } from '../core/handoff.js';
3
+ import type { CallerProject } from '../api/prompt-hook.js';
4
4
  import type { WorkingState } from './working-state.js';
5
5
  export type CallerEvidence = Pick<HandoffEvidence, 'gitRef' | 'dirtyTree' | 'testStatus'>;
6
6
  export interface CallerSessionEndRequest {
@@ -1,5 +1,5 @@
1
1
  // SessionEnd for a caller on another machine: the owner's handoff, then the owner's snapshot for the session closed, both under its tenant and project.
2
- import { BadRequestError } from '../api-errors.js';
2
+ import { BadRequestError } from '../core/api-errors.js';
3
3
  import { writeSessionEndHandoff } from '../store/handoffs.js';
4
4
  import { closeTaskSnapshotsForSession } from '../store/sessions.js';
5
5
  import { bindCaller, checkedWorkingState } from './caller-session.js';
@@ -1,5 +1,5 @@
1
1
  import type { Context } from '../api/types.js';
2
- import { type CallerProject } from '../prompt-hook.js';
2
+ import { type CallerProject } from '../api/prompt-hook.js';
3
3
  import { type CaptureTally } from './command.js';
4
4
  export interface SessionCaptureRequest {
5
5
  readonly sessionId: string;
@@ -1,9 +1,9 @@
1
1
  // `hippo capture --last-session` for a caller whose transcript was read on another machine: its project names the rows, never the store's folder.
2
- import { BadRequestError } from '../api-errors.js';
3
- import { assertCallerIds } from '../prompt-hook.js';
4
- import { assertCallerProject, projectNames } from '../project-identity.js';
5
- import { longestWord, storedTextKeys } from '../same-text.js';
6
- import { scrubForSharing } from '../share-scrub.js';
2
+ import { BadRequestError } from '../core/api-errors.js';
3
+ import { assertCallerIds } from '../api/prompt-hook.js';
4
+ import { assertCallerProject, projectNames } from '../core/project-identity.js';
5
+ import { longestWord, storedTextKeys } from '../util/same-text.js';
6
+ import { scrubForSharing } from './share-scrub.js';
7
7
  import { loadTextsHoldingWords } from '../store/candidates.js';
8
8
  import { captureExtractedItems } from './command.js';
9
9
  import { extractFromTexts } from './extract.js';
@@ -4,9 +4,10 @@ import * as fs from 'fs';
4
4
  import * as path from 'path';
5
5
  import { createHash } from 'node:crypto';
6
6
  import { homeDir } from '../hooks/shared.js';
7
- import { errorMessage } from '../log.js';
8
- import { isObjectLike, isStringValue } from '../capture-contract.js';
7
+ import { errorMessage, log as logger } from '../util/log.js';
8
+ import { isObjectLike, isStringValue } from '../core/capture-contract.js';
9
9
  import { SESSION_ID_RE } from './copilot-transcript.js';
10
+ import { FINGERPRINT_HEX_CHARS } from '../util/token-text.js';
10
11
  /** Null for a missing id or one that could climb out of the sessions folder. */
11
12
  function sessionStateFiles(sessionId) {
12
13
  if (sessionId === null || !SESSION_ID_RE.test(sessionId))
@@ -73,8 +74,9 @@ function releaseSessionLock(lock) {
73
74
  try {
74
75
  fs.rmSync(lock, { force: true });
75
76
  }
76
- catch {
77
+ catch (err) {
77
78
  // A lock left behind names this pid, which is dead once the worker exits, so the next taker clears it.
79
+ logger.debug(`session lock not removed: ${errorMessage(err)}`);
78
80
  }
79
81
  }
80
82
  /** False when the sessions folder cannot be written, so the caller runs unlocked as before. */
@@ -133,7 +135,7 @@ export async function runSessionWorker(sessionId, mode, work) {
133
135
  }
134
136
  }
135
137
  function turnKey(turn) {
136
- return createHash('sha256').update(`${turn.role}\n${turn.text}`).digest('hex').slice(0, 16);
138
+ return createHash('sha256').update(`${turn.role}\n${turn.text}`).digest('hex').slice(0, FINGERPRINT_HEX_CHARS);
137
139
  }
138
140
  /** The cursor position after `turns`: how many there were and a hash of the last. */
139
141
  export function turnPosition(turns) {
@@ -1,6 +1,6 @@
1
1
  // The scrub for transcript text that leaves the machine it was typed on.
2
- import { maskHomePaths } from './home-path.js';
3
- import { maskEmails, redactSecretsStrict } from './secret-detect.js';
2
+ import { maskHomePaths } from '../util/home-path.js';
3
+ import { maskEmails, redactSecretsStrict } from '../util/secret-detect.js';
4
4
  /** Secrets first, then emails, then home paths: a home-path mask could split a secret so that no pattern matches it. */
5
5
  export function scrubForSharing(text) {
6
6
  return maskHomePaths(maskEmails(redactSecretsStrict(text)));
@@ -28,16 +28,8 @@ export declare function sessionTail(turns: readonly SessionTurn[]): {
28
28
  assistants: string[];
29
29
  };
30
30
  export declare function summariseSessionTurns(turns: readonly SessionTurn[]): string;
31
- /**
32
- * Resolve a transcript path for `--last-session`.
33
- *
34
- * Priority, where the first source present is the only one tried:
35
- * 1. Explicit `transcriptPath` option (from `--transcript <path>`)
36
- * 2. Stdin JSON payload (Claude Code / OpenCode SessionEnd hook shape)
37
- * 3. Most recent `.jsonl` under `<claude config dir>/projects/<any>/` (`~/.claude` unless CLAUDE_CONFIG_DIR is set), only when the caller passes `mayScan` (only the caller knows it is not a hook) and there is no path and no stdin text, because this scan spans every project on the box
38
- *
39
- * Returns null when nothing resolves, a named transcript or payload whose file is missing included. Never throws.
40
- */
31
+ /** Resolve a transcript path for `--last-session`: `transcriptPath`, then the stdin JSON payload, then the newest `.jsonl` in the Claude config dir.
32
+ * The scan runs only with `mayScan` (it spans every project on the box); returns null when nothing resolves, never throws. */
41
33
  export declare function resolveLastSessionTranscript(explicit: string | undefined, stdinText: string | undefined, opts: {
42
34
  mayScan: boolean;
43
35
  }): string | null;
@@ -1,17 +1,13 @@
1
- import { envHomeDir, processEnv } from '../env.js';
1
+ import { envHomeDir, processEnv } from '../util/env.js';
2
2
  import { claudeConfigDir } from '../hooks/shared.js';
3
3
  import * as fs from 'fs';
4
4
  import * as path from 'path';
5
- import { isObjectLike, isStringValue } from '../capture-contract.js';
5
+ import { isObjectLike, isStringValue, readSessionEnd } from '../core/capture-contract.js';
6
6
  import { copilotTurn } from './copilot-transcript.js';
7
- /**
8
- * Build a compact text summary from a Claude Code / OpenCode / Copilot JSONL transcript.
9
- * Keeps plain user messages and the final chunk of assistant text, drops
10
- * thinking blocks, tool_use, and tool_result noise. Capture reads the same
11
- * turns through `sessionTail`, one text per turn.
12
- *
13
- * Exported for tests.
14
- */
7
+ const RECENT_USER_TURNS = 20;
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,
10
+ * without thinking, tool_use and tool_result noise. Exported for tests. */
15
11
  /** Leading markers of the command lines Claude Code writes with type 'user'. */
16
12
  const CLAUDE_CODE_COMMAND_PREFIXES = ['<local-command-', '<command-name>', '<command-message>', '<command-args>'];
17
13
  function isNonHumanUserLine(entry, content) {
@@ -54,69 +50,69 @@ export function collectSessionTurns(jsonl, visit) {
54
50
  if (!isObjectLike(entry) || !('type' in entry))
55
51
  continue;
56
52
  visit?.(entry);
57
- const copilot = copilotTurn(entry);
58
- if (copilot !== null) {
59
- turns.push(copilot);
60
- continue;
61
- }
62
- if (entry.type === 'user' || entry.type === 'assistant') {
63
- const message = 'message' in entry && isObjectLike(entry.message) ? entry.message : undefined;
64
- if (!message)
65
- continue;
66
- const content = 'content' in message ? message.content : undefined;
67
- if (entry.type === 'user') {
68
- const text = humanUserText(entry, message);
69
- if (text)
70
- turns.push({ role: 'user', text });
71
- }
72
- else if (Array.isArray(content)) {
73
- // Keep assistant text blocks; drop thinking + tool_use
74
- const chunks = [];
75
- for (const block of content) {
76
- if (isObjectLike(block)) {
77
- const blockText = 'type' in block && block.type === 'text' && 'text' in block ? block.text : undefined;
78
- if (isStringValue(blockText) && blockText.trim()) {
79
- chunks.push(blockText.trim());
80
- }
81
- }
82
- }
83
- if (chunks.length > 0) {
84
- turns.push({ role: 'assistant', text: chunks.join('\n') });
85
- }
53
+ const turn = copilotTurn(entry) ?? claudeCodeTurn(entry) ?? codexTurn(entry);
54
+ if (turn !== null)
55
+ turns.push(turn);
56
+ }
57
+ return turns;
58
+ }
59
+ /** The turn a Claude Code `user` or `assistant` line carries; null for any other line or one with no human or reply text. */
60
+ function claudeCodeTurn(entry) {
61
+ if (entry.type !== 'user' && entry.type !== 'assistant')
62
+ return null;
63
+ const message = 'message' in entry && isObjectLike(entry.message) ? entry.message : undefined;
64
+ if (!message)
65
+ return null;
66
+ const content = 'content' in message ? message.content : undefined;
67
+ if (entry.type === 'user') {
68
+ const text = humanUserText(entry, message);
69
+ return text ? { role: 'user', text } : null;
70
+ }
71
+ if (!Array.isArray(content))
72
+ return null;
73
+ // Keep assistant text blocks; drop thinking + tool_use
74
+ const chunks = [];
75
+ for (const block of content) {
76
+ if (isObjectLike(block)) {
77
+ const blockText = 'type' in block && block.type === 'text' && 'text' in block ? block.text : undefined;
78
+ if (isStringValue(blockText) && blockText.trim()) {
79
+ chunks.push(blockText.trim());
86
80
  }
81
+ }
82
+ }
83
+ return chunks.length > 0 ? { role: 'assistant', text: chunks.join('\n') } : null;
84
+ }
85
+ // Codex rollout transcript shape: response_item -> payload.message
86
+ function codexTurn(entry) {
87
+ if (entry.type !== 'response_item')
88
+ return null;
89
+ const payload = 'payload' in entry && isObjectLike(entry.payload) ? entry.payload : undefined;
90
+ if (!payload || !('type' in payload) || payload.type !== 'message')
91
+ return null;
92
+ const role = 'role' in payload ? payload.role : undefined;
93
+ const content = 'content' in payload ? payload.content : undefined;
94
+ if (!Array.isArray(content))
95
+ return null;
96
+ const chunks = [];
97
+ for (const block of content) {
98
+ if (!isObjectLike(block))
87
99
  continue;
100
+ const blockType = 'type' in block ? block.type : undefined;
101
+ const blockText = 'text' in block ? block.text : undefined;
102
+ if (role === 'user' && blockType === 'input_text' && isStringValue(blockText) && blockText.trim()) {
103
+ chunks.push(blockText.trim());
88
104
  }
89
- // Codex rollout transcript shape: response_item -> payload.message
90
- if (entry.type === 'response_item') {
91
- const payload = 'payload' in entry && isObjectLike(entry.payload) ? entry.payload : undefined;
92
- if (!payload || !('type' in payload) || payload.type !== 'message')
93
- continue;
94
- const role = 'role' in payload ? payload.role : undefined;
95
- const content = 'content' in payload ? payload.content : undefined;
96
- if (!Array.isArray(content))
97
- continue;
98
- const chunks = [];
99
- for (const block of content) {
100
- if (!isObjectLike(block))
101
- continue;
102
- const blockType = 'type' in block ? block.type : undefined;
103
- const blockText = 'text' in block ? block.text : undefined;
104
- if (role === 'user' && blockType === 'input_text' && isStringValue(blockText) && blockText.trim()) {
105
- chunks.push(blockText.trim());
106
- }
107
- if (role === 'assistant' && blockType === 'output_text' && isStringValue(blockText) && blockText.trim()) {
108
- chunks.push(blockText.trim());
109
- }
110
- }
111
- if (chunks.length === 0)
112
- continue;
113
- if (role === 'user')
114
- turns.push({ role: 'user', text: chunks.join('\n') });
115
- if (role === 'assistant')
116
- turns.push({ role: 'assistant', text: chunks.join('\n') });
105
+ if (role === 'assistant' && blockType === 'output_text' && isStringValue(blockText) && blockText.trim()) {
106
+ chunks.push(blockText.trim());
117
107
  }
118
108
  }
119
- return turns;
109
+ if (chunks.length === 0)
110
+ return null;
111
+ if (role === 'user')
112
+ return { role: 'user', text: chunks.join('\n') };
113
+ if (role === 'assistant')
114
+ return { role: 'assistant', text: chunks.join('\n') };
115
+ return null;
120
116
  }
121
117
  export function summariseTranscript(jsonl) {
122
118
  return summariseSessionTurns(collectSessionTurns(jsonl));
@@ -124,8 +120,8 @@ export function summariseTranscript(jsonl) {
124
120
  /** The last 20 user turns and last 10 replies: session-end is about what was decided near the end, not at the start. */
125
121
  export function sessionTail(turns) {
126
122
  return {
127
- users: turns.filter((t) => t.role === 'user').map((t) => t.text).slice(-20),
128
- assistants: turns.filter((t) => t.role === 'assistant').map((t) => t.text).slice(-10),
123
+ users: turns.filter((t) => t.role === 'user').map((t) => t.text).slice(-RECENT_USER_TURNS),
124
+ assistants: turns.filter((t) => t.role === 'assistant').map((t) => t.text).slice(-RECENT_ASSISTANT_TURNS),
129
125
  };
130
126
  }
131
127
  export function summariseSessionTurns(turns) {
@@ -143,32 +139,16 @@ export function summariseSessionTurns(turns) {
143
139
  tailAssistants.join('\n\n'),
144
140
  ].join('\n');
145
141
  }
146
- /**
147
- * Resolve a transcript path for `--last-session`.
148
- *
149
- * Priority, where the first source present is the only one tried:
150
- * 1. Explicit `transcriptPath` option (from `--transcript <path>`)
151
- * 2. Stdin JSON payload (Claude Code / OpenCode SessionEnd hook shape)
152
- * 3. Most recent `.jsonl` under `<claude config dir>/projects/<any>/` (`~/.claude` unless CLAUDE_CONFIG_DIR is set), only when the caller passes `mayScan` (only the caller knows it is not a hook) and there is no path and no stdin text, because this scan spans every project on the box
153
- *
154
- * Returns null when nothing resolves, a named transcript or payload whose file is missing included. Never throws.
155
- */
142
+ /** Resolve a transcript path for `--last-session`: `transcriptPath`, then the stdin JSON payload, then the newest `.jsonl` in the Claude config dir.
143
+ * The scan runs only with `mayScan` (it spans every project on the box); returns null when nothing resolves, never throws. */
156
144
  export function resolveLastSessionTranscript(explicit, stdinText, opts) {
157
145
  if (explicit)
158
146
  return fs.existsSync(explicit) ? explicit : null;
159
147
  if (stdinText && stdinText.trim() !== '') {
160
- try {
161
- const payload = JSON.parse(stdinText);
162
- if (isObjectLike(payload) && 'transcript_path' in payload) {
163
- const tp = payload.transcript_path;
164
- if (isStringValue(tp) && fs.existsSync(tp))
165
- return tp;
166
- }
167
- }
168
- catch {
169
- // not JSON, but still a payload, so no scan
170
- }
171
- return null;
148
+ const receipt = readSessionEnd(stdinText, false);
149
+ // A refused payload is still a payload, so no scan.
150
+ const tp = receipt.status === 'received' ? receipt.input.transcriptPath : null;
151
+ return tp !== null && fs.existsSync(tp) ? tp : null;
172
152
  }
173
153
  if (!opts.mayScan)
174
154
  return null;
@@ -1,7 +1,4 @@
1
1
  import type { TaskSnapshot } from '../store/rows.js';
2
- export declare const PRE_COMPACT_TASK_CAP = 200;
3
- export declare const PRE_COMPACT_SUMMARY_CAP = 2000;
4
- export declare const PRE_COMPACT_NEXT_STEP_CAP = 500;
5
2
  /** The longest each field of {@link transcriptWorkingState} can be, so a check of a sent working state imports these instead of copying them. */
6
3
  export declare const WORKING_STATE_CAPS: {
7
4
  readonly task: 200;
@@ -1,14 +1,14 @@
1
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.
2
2
  import * as fs from 'fs';
3
- import { maskEmails, redactSecretsStrict } from '../secret-detect.js';
4
- import { isObjectLike, isStringValue } from '../capture-contract.js';
5
- import { errorMessage } from '../log.js';
6
- import { PRE_COMPACT_TAIL_BYTES, readTranscriptTail, truncateCodePointSafe } from '../transcript-tail.js';
3
+ import { maskEmails, redactSecretsStrict } from '../util/secret-detect.js';
4
+ import { isObjectLike, isStringValue } from '../core/capture-contract.js';
5
+ import { errorMessage } from '../util/log.js';
6
+ import { PRE_COMPACT_TAIL_BYTES, readTranscriptTail, truncateCodePointSafe } from '../util/transcript-tail.js';
7
7
  import { humanUserText, summariseTranscript } from './transcript.js';
8
8
  import { copilotTurn } from './copilot-transcript.js';
9
- export const PRE_COMPACT_TASK_CAP = 200;
10
- export const PRE_COMPACT_SUMMARY_CAP = 2000;
11
- export const PRE_COMPACT_NEXT_STEP_CAP = 500;
9
+ const PRE_COMPACT_TASK_CAP = 200;
10
+ const PRE_COMPACT_SUMMARY_CAP = 2000;
11
+ const PRE_COMPACT_NEXT_STEP_CAP = 500;
12
12
  const TRIM_MARKER = '[...earlier turns trimmed]\n';
13
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
14
  export const WORKING_STATE_CAPS = {
@@ -0,0 +1,3 @@
1
+ import { type HippoDbContext } from '../api/index.js';
2
+ export declare function cliApiContext(hippoRoot: string, tenantId: string): HippoDbContext;
3
+ //# sourceMappingURL=api-context.d.ts.map
@@ -0,0 +1,6 @@
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.
3
+ export function cliApiContext(hippoRoot, tenantId) {
4
+ return { hippoRoot, tenantId, actor: adminActor('cli') };
5
+ }
6
+ //# sourceMappingURL=api-context.js.map
@@ -0,0 +1,28 @@
1
+ /** Audit log retention pruning: opt-in per tenant because retention floors (HIPAA, SOX, GDPR) apply.
2
+ * The audit_prune row is written after the DELETE, so a call never prunes its own record. */
3
+ export interface PruneAuditOpts {
4
+ /** Cutoff in days. Rows with `ts < (now - N days)` are deleted. */
5
+ olderThanDays: number;
6
+ /** Tenant scope. Required: prune is always tenant-scoped. */
7
+ tenantId: string;
8
+ /** When true, count matching rows but do NOT delete. Default false. */
9
+ dryRun?: boolean;
10
+ /** Actor recording the prune in the audit trail. Default 'cli'. */
11
+ actor?: string;
12
+ }
13
+ export interface PruneAuditResult {
14
+ /** ISO timestamp of the cutoff. Rows with ts strictly less than this were deleted. */
15
+ cutoff: string;
16
+ /** Number of audit_log rows deleted (or that would be deleted, if dryRun). */
17
+ count: number;
18
+ /** Echo back whether this was a dry run. */
19
+ dryRun: boolean;
20
+ }
21
+ /** Cutoff ISO timestamp for N days ago; exported so tests can pin "now" without mocking Date. */
22
+ export declare function computeCutoff(days: number, now?: Date): string;
23
+ /** Delete audit_log rows older than `olderThanDays` for `tenantId`, emitting an `audit_prune` event.
24
+ * Throws on non-positive days or a missing tenantId. */
25
+ export declare function pruneAuditLog(hippoRoot: string, opts: PruneAuditOpts): PruneAuditResult;
26
+ /** Parse `--older-than`: bare integer days (`30`) or with a `d` suffix (`30d`); throws on any other format. */
27
+ export declare function parseOlderThanFlag(raw: string): number;
28
+ //# sourceMappingURL=audit-prune.d.ts.map