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,7 +1,13 @@
1
1
  /** Smallest number of shared tokens any qualifying pair can have, given either side's token count. */
2
2
  export type MinShared = (size: number) => number;
3
- /** Shared >= threshold * union >= threshold * size; one token of slack covers float rounding in the caller's Jaccard check. */
3
+ /**
4
+ * Shared >= threshold * union >= threshold * size; one token of slack covers float rounding in the caller's Jaccard
5
+ * check.
6
+ */
4
7
  export declare function jaccardMinShared(threshold: number, atLeast?: number): MinShared;
5
- /** Maps i to each j > i, ascending, that may share `minShared` tokens with set i; a superset the caller checks exactly, never a pair sharing no token. */
8
+ /**
9
+ * Maps i to each j > i, ascending, that may share `minShared` tokens with set i; a superset the caller checks exactly,
10
+ * never a pair sharing no token.
11
+ */
6
12
  export declare function overlapPartners(sets: readonly ReadonlySet<string>[], minShared: MinShared): (i: number) => number[];
7
13
  //# sourceMappingURL=overlap-index.d.ts.map
@@ -1,15 +1,22 @@
1
- // All-pairs overlap join through an inverted index over rare-first token prefixes (prefix filtering, Chaudhuri et al. 2006).
2
- /** Shared >= threshold * union >= threshold * size; one token of slack covers float rounding in the caller's Jaccard check. */
1
+ // All-pairs overlap join through an inverted index over rare-first token prefixes (prefix filtering, Chaudhuri et al.
2
+ // 2006).
3
+ /**
4
+ * Shared >= threshold * union >= threshold * size; one token of slack covers float rounding in the caller's Jaccard
5
+ * check.
6
+ */
3
7
  export function jaccardMinShared(threshold, atLeast = 1) {
4
8
  return (size) => Math.max(atLeast, Math.ceil(threshold * size) - 1);
5
9
  }
6
- /** Maps i to each j > i, ascending, that may share `minShared` tokens with set i; a superset the caller checks exactly, never a pair sharing no token. */
10
+ /**
11
+ * Maps i to each j > i, ascending, that may share `minShared` tokens with set i; a superset the caller checks exactly,
12
+ * never a pair sharing no token.
13
+ */
7
14
  export function overlapPartners(sets, minShared) {
8
15
  const docFreq = new Map();
9
16
  for (const set of sets)
10
17
  for (const t of set)
11
18
  docFreq.set(t, (docFreq.get(t) ?? 0) + 1);
12
- const rareFirst = (a, b) => ((docFreq.get(a) ?? 0) - (docFreq.get(b) ?? 0)) || (a < b ? -1 : a > b ? 1 : 0);
19
+ const rareFirst = (a, b) => (docFreq.get(a) ?? 0) - (docFreq.get(b) ?? 0) || (a < b ? -1 : a > b ? 1 : 0);
13
20
  // Under one total order the first token two sets share lies in both sets' first size - minShared + 1 tokens.
14
21
  const prefixes = sets.map((set) => {
15
22
  const keep = set.size - Math.max(1, minShared(set.size)) + 1;
@@ -2,7 +2,9 @@ import { type PhysicsParticle } from '../core/physics.js';
2
2
  import type { MemoryEntry } from '../core/memory.js';
3
3
  import type { SleepRun } from './run.js';
4
4
  export declare function physicsPass(run: SleepRun, maxParticles?: number): void;
5
- /** Every stored particle in load order up to the cap; past it, the most recently recalled survivors (memory id breaks ties),
5
+ /**
6
+ * Every stored particle in load order up to the cap; past it, the most recently recalled survivors (memory id breaks
7
+ * ties),
6
8
  * then particles with no survivor. */
7
9
  export declare function particlesToSimulate(stored: PhysicsParticle[], entries: ReadonlyMap<string, MemoryEntry>, max?: number): PhysicsParticle[];
8
10
  //# sourceMappingURL=physics-pass.d.ts.map
@@ -1,9 +1,9 @@
1
- import { refreshParticleProperties } from '../db/physics-state.js';
2
- import { loadStoredParticles, saveStoredParticles } from '../store/vector-index.js';
1
+ import { refreshParticleProperties } from '../core/particle-refresh.js';
3
2
  import { simulate } from '../core/physics.js';
4
3
  import { errorMessage } from '../util/log.js';
5
4
  const STATS_DECIMALS = 4;
6
- // Every substep is all-pairs, so one sleep moves at most this many particles; the rest keep their stored state until they are recalled.
5
+ // Every substep is all-pairs, so one sleep moves at most this many particles; the rest keep their stored state until
6
+ // they are recalled.
7
7
  const SLEEP_PHYSICS_MAX_PARTICLES = 1000;
8
8
  // 2. Physics simulation pass
9
9
  export function physicsPass(run, maxParticles = SLEEP_PHYSICS_MAX_PARTICLES) {
@@ -22,7 +22,7 @@ export function physicsPass(run, maxParticles = SLEEP_PHYSICS_MAX_PARTICLES) {
22
22
  }
23
23
  function simulateStoredParticles(run, maxParticles) {
24
24
  const { result, survivors } = run;
25
- const stored = loadStoredParticles(run.hippoRoot);
25
+ const stored = run.store.storedParticles();
26
26
  if (stored.length === 0)
27
27
  return;
28
28
  // Build entry lookup for property refresh
@@ -30,14 +30,16 @@ function simulateStoredParticles(run, maxParticles) {
30
30
  const particles = particlesToSimulate(stored, entryMap, maxParticles);
31
31
  refreshParticleProperties(particles, entryMap, run.now);
32
32
  const stats = simulate(particles, survivorForces(run));
33
- saveStoredParticles(run.hippoRoot, particles);
33
+ run.store.saveParticles(particles);
34
34
  result.physicsSimulated = stats.particleCount;
35
35
  const capped = particles.length < stored.length ? ` (the ${particles.length} most recently recalled of ${stored.length})` : '';
36
36
  result.details.push(` ⚛️ physics: ${stats.particleCount} particles${capped}, ` +
37
37
  `avg vel ${stats.avgVelocityMagnitude.toFixed(STATS_DECIMALS)}, ` +
38
38
  `energy ${stats.energy.total.toFixed(STATS_DECIMALS)}`);
39
39
  }
40
- /** Every stored particle in load order up to the cap; past it, the most recently recalled survivors (memory id breaks ties),
40
+ /**
41
+ * Every stored particle in load order up to the cap; past it, the most recently recalled survivors (memory id breaks
42
+ * ties),
41
43
  * then particles with no survivor. */
42
44
  export function particlesToSimulate(stored, entries, max = SLEEP_PHYSICS_MAX_PARTICLES) {
43
45
  if (stored.length <= max)
@@ -50,7 +52,8 @@ export function particlesToSimulate(stored, entries, max = SLEEP_PHYSICS_MAX_PAR
50
52
  return a.memoryId < b.memoryId ? -1 : a.memoryId > b.memoryId ? 1 : 0;
51
53
  });
52
54
  const kept = new Set(ranked.slice(0, max));
53
- // Load order, not rank order: the force sums run in this order, so a capped run matches an uncapped one over the same set.
55
+ // Load order, not rank order: the force sums run in this order, so a capped run matches an uncapped one over the same
56
+ // set.
54
57
  return stored.filter((p) => kept.has(p));
55
58
  }
56
59
  function survivorForces(run) {
@@ -1,9 +1,16 @@
1
- /** Replay: during `hippo sleep`, sample N survivors weighted by reward, valence, under-rehearsal and age, then apply the `markRetrieved` strengthening.
2
- * A lightweight deterministic analog of hippocampal replay, so important memories stay strong without being queried; distinct from decay, physics and merge. */
1
+ /**
2
+ * Replay: during `hippo sleep`, sample N survivors weighted by reward, valence, under-rehearsal and age, then apply the
3
+ * `markRetrieved` strengthening.
4
+ * A lightweight deterministic analog of hippocampal replay, so important memories stay strong without being queried;
5
+ * distinct from decay, physics and merge.
6
+ */
3
7
  import { type MemoryEntry } from '../core/memory.js';
4
- /** Priority score for ranking survivors for replay (higher = more likely sampled); pure in the entry and current time. */
8
+ /**
9
+ * Priority score for ranking survivors for replay (higher = more likely sampled); pure in the entry and current time.
10
+ */
5
11
  export declare function replayPriority(entry: MemoryEntry, now: Date, outcomeAblated: boolean): number;
6
12
  /** Pick `count` memories for replay, weighted by `replayPriority`, without replacement; deterministic for a seed.
7
- * Weighted but not greedy: always taking the top-N overfits, so a stochastic element keeps adjacent survivors in play. */
13
+ * Weighted but not greedy: always taking the top-N overfits, so a stochastic element keeps adjacent survivors in play.
14
+ */
8
15
  export declare function sampleForReplay(survivors: MemoryEntry[], count: number, now: Date, seed?: number): MemoryEntry[];
9
16
  //# sourceMappingURL=replay.d.ts.map
@@ -1,5 +1,9 @@
1
- /** Replay: during `hippo sleep`, sample N survivors weighted by reward, valence, under-rehearsal and age, then apply the `markRetrieved` strengthening.
2
- * A lightweight deterministic analog of hippocampal replay, so important memories stay strong without being queried; distinct from decay, physics and merge. */
1
+ /**
2
+ * Replay: during `hippo sleep`, sample N survivors weighted by reward, valence, under-rehearsal and age, then apply the
3
+ * `markRetrieved` strengthening.
4
+ * A lightweight deterministic analog of hippocampal replay, so important memories stay strong without being queried;
5
+ * distinct from decay, physics and merge.
6
+ */
3
7
  import { HOUR_MS } from '../util/time.js';
4
8
  import { isOutcomeSlowAblated } from '../core/ablation.js';
5
9
  import { resolveConfidence } from '../core/memory.js';
@@ -15,11 +19,14 @@ const REWARD_POSITIVE_GAIN = 0.5;
15
19
  const REWARD_NET_GAIN = 0.25;
16
20
  const IDLE_BOOST_GAIN = 0.1;
17
21
  const STRENGTH_FLOOR = 0.1;
18
- /** Priority score for ranking survivors for replay (higher = more likely sampled); pure in the entry and current time. */
22
+ /**
23
+ * Priority score for ranking survivors for replay (higher = more likely sampled); pure in the entry and current time.
24
+ */
19
25
  export function replayPriority(entry, now, outcomeAblated) {
20
26
  const pos = entry.outcome_positive ?? 0;
21
27
  const neg = entry.outcome_negative ?? 0;
22
- // Reward signal: neutral = 1, strongly rewarded > 1, negative-dominated floors at 0.1 (still eligible, just unlikely).
28
+ // Reward signal: neutral = 1, strongly rewarded > 1, negative-dominated floors at 0.1 (still eligible, just
29
+ // unlikely).
23
30
  // The clamp is required because sampleForReplay needs all weights positive.
24
31
  const rewardSignal = outcomeAblated
25
32
  ? 1.0 // EVAL-ONLY ablation (see ablation.ts): outcome-off also silences replay's reward bias
@@ -37,7 +44,10 @@ export function replayPriority(entry, now, outcomeAblated) {
37
44
  const strengthFloor = Math.max(STRENGTH_FLOOR, rawStrength);
38
45
  return rewardSignal * valence * underRehearsed * idleBoost * strengthFloor;
39
46
  }
40
- /** Deterministic 32-bit RNG (Mulberry32): same seed, same sequence, so replay is reproducible without a random-number dependency. */
47
+ /**
48
+ * Deterministic 32-bit RNG (Mulberry32): same seed, same sequence, so replay is reproducible without a random-number
49
+ * dependency.
50
+ */
41
51
  function mulberry32(seed) {
42
52
  let s = seed >>> 0;
43
53
  return () => {
@@ -48,12 +58,14 @@ function mulberry32(seed) {
48
58
  };
49
59
  }
50
60
  /** Pick `count` memories for replay, weighted by `replayPriority`, without replacement; deterministic for a seed.
51
- * Weighted but not greedy: always taking the top-N overfits, so a stochastic element keeps adjacent survivors in play. */
61
+ * Weighted but not greedy: always taking the top-N overfits, so a stochastic element keeps adjacent survivors in play.
62
+ */
52
63
  export function sampleForReplay(survivors, count, now, seed = Date.now() >>> 0) {
53
64
  if (count <= 0 || survivors.length === 0)
54
65
  return [];
55
66
  const rng = mulberry32(seed);
56
- // Deliberately-marked and aged-out memories are both untrusted and rehearsing them defeats staleness, so derive rather than trust
67
+ // Deliberately-marked and aged-out memories are both untrusted and rehearsing them defeats staleness, so derive
68
+ // rather than trust
57
69
  // the stored value (it no longer carries the age-out case).
58
70
  const eligible = survivors.filter((e) => resolveConfidence(e, now) !== 'stale');
59
71
  if (eligible.length === 0)
@@ -1,6 +1,7 @@
1
1
  import { MemoryEntry, type DecayOptions } from '../core/memory.js';
2
- import { type DormantMove } from '../store/dormant.js';
3
- import { type TombstoneChecks } from '../store/tombstone-checks.js';
2
+ import type { DormantMove } from '../store/dormant.js';
3
+ import type { Consolidation } from '../store/port.js';
4
+ import type { TombstoneChecks } from '../store/tombstone-checks.js';
4
5
  import { loadConfig } from '../core/config.js';
5
6
  export interface ConsolidationResult {
6
7
  decayed: number;
@@ -36,10 +37,14 @@ export interface ConsolidationResult {
36
37
  export declare const REPLAY_COUNT_DEFAULT = 5;
37
38
  export declare function keptAsWritten(entry: MemoryEntry): boolean;
38
39
  /** Re-syncs the full-text index with `memories`; a store open that is already current no longer counts the two. */
39
- export declare function syncFtsIndex(hippoRoot: string, dryRun: boolean, result: ConsolidationResult): void;
40
- /** State every sleep stage reads or appends to; the pending lists are flushed at the end, each of `units` whole in one transaction. */
40
+ export declare function syncFtsIndex(store: Consolidation, dryRun: boolean, result: ConsolidationResult): void;
41
+ /**
42
+ * State every sleep stage reads or appends to; the pending lists are flushed at the end, each of `units` whole in one
43
+ * transaction.
44
+ */
41
45
  export interface SleepRun {
42
46
  hippoRoot: string;
47
+ store: Consolidation;
43
48
  now: Date;
44
49
  dryRun: boolean;
45
50
  config: ReturnType<typeof loadConfig>;
@@ -47,7 +52,10 @@ export interface SleepRun {
47
52
  result: ConsolidationResult;
48
53
  all: MemoryEntry[];
49
54
  retirable: (entry: MemoryEntry) => boolean;
50
- /** Auto-promote (1.4) and merge (3) write deterministic content through the guard's bypass, so both check tombstones here first. */
55
+ /**
56
+ * Auto-promote (1.4) and merge (3) write deterministic content through the guard's bypass, so both check tombstones
57
+ * here first.
58
+ */
51
59
  tombstones: TombstoneChecks;
52
60
  survivors: MemoryEntry[];
53
61
  pendingWrites: MemoryEntry[];
@@ -1,15 +1,15 @@
1
- import { ftsDrift } from '../store/entry-row.js';
2
1
  import { NO_MERGE_TAGS } from '../sharing/share.js';
3
2
  export const REPLAY_COUNT_DEFAULT = 5;
4
3
  export function keptAsWritten(entry) {
5
4
  return entry.tags.some((tag) => NO_MERGE_TAGS.has(tag));
6
5
  }
7
6
  /** Re-syncs the full-text index with `memories`; a store open that is already current no longer counts the two. */
8
- export function syncFtsIndex(hippoRoot, dryRun, result) {
9
- const counts = ftsDrift(hippoRoot, !dryRun);
7
+ export function syncFtsIndex(store, dryRun, result) {
8
+ const counts = store.ftsDrift(!dryRun);
10
9
  if (counts === null)
11
10
  return;
12
- result.details.push(` 🔎 ${dryRun ? 'would re-sync' : 're-synced'} the full-text index (${counts.fts} indexed rows for ${counts.memories} memories)`);
11
+ result.details.push(` 🔎 ${dryRun ? 'would re-sync' : 're-synced'} the full-text index (${counts.fts} indexed rows for ` +
12
+ `${counts.memories} memories)`);
13
13
  }
14
14
  export function newConsolidationResult(dryRun) {
15
15
  return {
@@ -1,13 +1,21 @@
1
- /** Consolidation engine ("Sleep"): decay pass (drop entries below the strength threshold), merge pass (semantic summaries of overlapping episodics), stats. */
2
- import { type WriteBudget } from '../util/write-budget.js';
3
- import { type ConsolidationResult } from './run.js';
4
1
  /**
5
- * Run a full consolidation pass.
2
+ * Consolidation engine ("Sleep"): decay pass (drop entries below the strength threshold), merge pass (semantic
3
+ * summaries of overlapping episodics), stats.
6
4
  */
7
- export declare function consolidate(hippoRoot: string, options?: {
5
+ import type { LocalFiles } from '../store/port.js';
6
+ import { type WriteBudget } from '../util/write-budget.js';
7
+ import { type ConsolidationResult } from './run.js';
8
+ type ConsolidateOptions = {
8
9
  dryRun?: boolean;
9
10
  now?: Date;
10
11
  fetcher?: typeof fetch;
11
12
  budget?: WriteBudget;
12
- }): Promise<ConsolidationResult>;
13
+ };
14
+ /**
15
+ * Run a full consolidation pass on the hippo.db under `hippoRoot`.
16
+ */
17
+ export declare function consolidate(hippoRoot: string, options?: ConsolidateOptions): Promise<ConsolidationResult>;
18
+ /** A full consolidation pass whose store work goes through `local.consolidation`. */
19
+ export declare function runConsolidation(local: LocalFiles, options?: ConsolidateOptions): Promise<ConsolidationResult>;
20
+ export {};
13
21
  //# sourceMappingURL=sleep.d.ts.map
@@ -1,16 +1,12 @@
1
- /** Consolidation engine ("Sleep"): decay pass (drop entries below the strength threshold), merge pass (semantic summaries of overlapping episodics), stats. */
1
+ /**
2
+ * Consolidation engine ("Sleep"): decay pass (drop entries below the strength threshold), merge pass (semantic
3
+ * summaries of overlapping episodics), stats.
4
+ */
2
5
  import { evalNow, strengthAblation } from '../core/ablation.js';
3
- import { canAutoDelete } from '../core/memory.js';
4
- import { loadAllEntriesWithBase } from '../store/entry-reads.js';
5
- import { commitInChunks, memoriesBackingObjects } from '../store/delete-and-batch.js';
6
- import { appendConsolidationRun, loadSessionDecayContext, incrementSleepCount } from '../store/index-and-stats.js';
7
- import { replaceDetectedConflicts } from '../store/conflicts.js';
8
- import { SLEEP_DB_WAIT_MS } from '../db/index.js';
9
- import { expireDormantBefore } from '../store/dormant.js';
6
+ import { canAutoDelete, LEGACY_TYPED_HALF_LIFE } from '../core/memory.js';
7
+ import { sqliteSyncStore } from '../store/sqlite/store.js';
10
8
  import { loadConfig } from '../core/config.js';
11
- import { recordAuditEventsRowByRow, reportAuditWriteFailure } from '../store/audit.js';
12
- import { lazyTombstoneChecks } from '../store/tombstone-checks.js';
13
- import { migrateDefaultHalfLife, LEGACY_TYPED_HALF_LIFE } from './half-life-migration.js';
9
+ import { migrateDefaultHalfLife } from './half-life-migration.js';
14
10
  import { errorFields, errorMessage, log } from '../util/log.js';
15
11
  import { WRITE_BUDGET } from '../util/write-budget.js';
16
12
  import { decayPass } from './decay.js';
@@ -23,28 +19,33 @@ import { llmPasses } from './llm-passes.js';
23
19
  import { physicsPass } from './physics-pass.js';
24
20
  import { DAY_MS } from '../util/time.js';
25
21
  /**
26
- * Run a full consolidation pass.
22
+ * Run a full consolidation pass on the hippo.db under `hippoRoot`.
27
23
  */
28
24
  export async function consolidate(hippoRoot, options = {}) {
25
+ return runConsolidation(sqliteSyncStore(hippoRoot).localFiles, options);
26
+ }
27
+ /** A full consolidation pass whose store work goes through `local.consolidation`. */
28
+ export async function runConsolidation(local, options = {}) {
29
+ const { hippoRoot, consolidation: store } = local;
29
30
  const now = options.now ?? evalNow(); // honors HIPPO_FAKE_NOW (eval-only; see ablation.ts)
30
31
  const dryRun = options.dryRun ?? false;
31
32
  const result = newConsolidationResult(dryRun);
32
- const halfLife = migrateHalfLives(hippoRoot, dryRun, result);
33
- syncFtsIndex(hippoRoot, dryRun, result);
33
+ const halfLife = migrateHalfLives(local, dryRun, result);
34
+ syncFtsIndex(store, dryRun, result);
34
35
  // Host-wide by design: per-tenant filtering would mean N runs per host and no cross-tenant dedup.
35
36
  // The api.sleep audit row tags this with the admin synthetic actor.
36
- const { entries: all, base: snapshot } = loadAllEntriesWithBase(hippoRoot);
37
+ const { entries: all, base: snapshot } = store.entriesWithBase();
37
38
  if (dryRun)
38
39
  for (const e of all)
39
40
  e.half_life_days = halfLife.halfLives.get(e.id) ?? e.half_life_days;
40
- const backingObjects = memoriesBackingObjects(hippoRoot);
41
+ const backingObjects = store.objectBackedIds();
41
42
  // Retirable: auto-deletable (never pinned, raw or kept for good) and not backing a first-class object.
42
43
  const retirable = (entry) => canAutoDelete(entry) && !backingObjects.has(entry.id);
43
44
  const config = loadConfig(hippoRoot);
44
- const decayOpts = sessionDecayOptions(hippoRoot, config);
45
+ const decayOpts = sessionDecayOptions(store, config);
45
46
  const run = {
46
- hippoRoot, now, dryRun, config, decayOpts, result, all, retirable,
47
- tombstones: lazyTombstoneChecks(hippoRoot, dryRun),
47
+ hippoRoot, store, now, dryRun, config, decayOpts, result, all, retirable,
48
+ tombstones: store.tombstoneChecks(dryRun),
48
49
  survivors: [],
49
50
  // Collect all writes/deletes and batch them at the end
50
51
  pendingWrites: [],
@@ -62,8 +63,8 @@ export async function consolidate(hippoRoot, options = {}) {
62
63
  return result;
63
64
  }
64
65
  // Load decay options from config + session context
65
- function sessionDecayOptions(hippoRoot, config) {
66
- const sessionCtx = loadSessionDecayContext(hippoRoot);
66
+ function sessionDecayOptions(store, config) {
67
+ const sessionCtx = store.sessionDecayContext();
67
68
  return {
68
69
  decayBasis: config.decayBasis,
69
70
  avgSessionIntervalDays: sessionCtx.avgSessionIntervalDays,
@@ -91,10 +92,12 @@ async function runPassesAfterDecay(run, fetcher) {
91
92
  }
92
93
  // A changed default half-life moves memories still on the old base first,
93
94
  // so this pass decays them at the new one (src/consolidate/half-life-migration.ts).
94
- function migrateHalfLives(hippoRoot, dryRun, result) {
95
- const halfLife = migrateDefaultHalfLife(hippoRoot, loadConfig(hippoRoot).defaultHalfLifeDays, { dryRun });
95
+ function migrateHalfLives(local, dryRun, result) {
96
+ const to = loadConfig(local.hippoRoot).defaultHalfLifeDays;
97
+ const halfLife = migrateDefaultHalfLife(local.consolidation, to, { dryRun });
96
98
  if (halfLife.rescaled > 0) {
97
- result.details.push(` ⏳ ${dryRun ? 'would move' : 'moved'} ${halfLife.rescaled} memories from the ${halfLife.from}-day to the ${halfLife.to}-day half-life`);
99
+ result.details.push(` ⏳ ${dryRun ? 'would move' : 'moved'} ${halfLife.rescaled} memories from the ${halfLife.from}-day to the ` +
100
+ `${halfLife.to}-day half-life`);
98
101
  }
99
102
  if (halfLife.typed > 0) {
100
103
  result.details.push(` ⏳ ${dryRun ? 'would move' : 'moved'} ${halfLife.typed} memories of decisions, incidents and other objects ` +
@@ -109,8 +112,8 @@ async function flushPending(run, snapshot, budget) {
109
112
  return;
110
113
  const units = [...run.units, ...familyUnits(pendingWrites, pendingDeletes, pendingDormant, snapshot)];
111
114
  const components = groupFlush(pendingWrites, pendingDeletes, pendingDormant, units);
112
- // The snapshot keeps what the DAG passes and other writers changed while sleep ran; the wait is sleep's own, not a server request's 250 ms.
113
- const left = new Set(await commitInChunks(run.hippoRoot, components, { snapshot, budget, busyWaitMs: SLEEP_DB_WAIT_MS }));
115
+ // The snapshot keeps what the DAG passes and other writers changed while sleep ran.
116
+ const left = new Set(await run.store.commitFlush(components, { snapshot, budget }));
114
117
  for (const id of [...pendingDeletes, ...pendingDormant.map((m) => m.entry.id)]) {
115
118
  if (!left.has(id))
116
119
  result.details.push(` ↩ ${id} not removed: pinned or already gone before sleep saved`);
@@ -119,44 +122,47 @@ async function flushPending(run, snapshot, budget) {
119
122
  result.removed = result.removedIds.length;
120
123
  result.dormant = pendingDormant.filter((m) => left.has(m.entry.id)).length;
121
124
  }
122
- // Dormant retention: a dormant memory nobody restored within dormant.retentionDays is deleted for good (0 keeps forever);
125
+ // Dormant retention: a dormant memory nobody restored within dormant.retentionDays is deleted for good (0 keeps
126
+ // forever);
123
127
  // runs even when dormant.enabled is off, so turning it off still ages out what earlier sleeps kept.
124
128
  async function expireDormant(run, budget) {
125
129
  const { config, result, dryRun } = run;
126
130
  if (!(config.dormant.retentionDays > 0))
127
131
  return;
128
132
  const cutoff = new Date(run.now.getTime() - config.dormant.retentionDays * DAY_MS).toISOString();
129
- result.dormantExpired = await expireDormantBefore(run.hippoRoot, cutoff, { dryRun, budget, busyWaitMs: SLEEP_DB_WAIT_MS });
133
+ result.dormantExpired = await run.store.expireDormant(cutoff, { dryRun, budget });
130
134
  if (result.dormantExpired > 0) {
131
- result.details.push(` ⌛ ${dryRun ? 'would expire' : 'expired'} ${result.dormantExpired} dormant memor${result.dormantExpired === 1 ? 'y' : 'ies'} ` +
135
+ result.details.push(` ⌛ ${dryRun ? 'would expire' : 'expired'} ${result.dormantExpired} dormant ` +
136
+ `memor${result.dormantExpired === 1 ? 'y' : 'ies'} ` +
132
137
  `older than ${config.dormant.retentionDays} days`);
133
138
  }
134
139
  }
135
140
  // 4. Log run
136
141
  function logRun(run, decay) {
137
- const { hippoRoot, now, result } = run;
142
+ const { store, now, result } = run;
138
143
  const detectedConflicts = detectConflicts(run.survivors, now, run.decayOpts, decay.rescuedIds);
139
- replaceDetectedConflicts(hippoRoot, detectedConflicts, now.toISOString());
144
+ store.replaceConflicts(detectedConflicts, now.toISOString());
140
145
  if (detectedConflicts.length > 0) {
141
146
  result.details.push(` ⚠️ detected ${detectedConflicts.length} memory conflict${detectedConflicts.length === 1 ? '' : 's'}`);
142
147
  }
143
- appendConsolidationRun(hippoRoot, {
148
+ store.recordRun({
144
149
  timestamp: now.toISOString(),
145
150
  decayed: result.decayed,
146
151
  merged: result.merged,
147
152
  removed: result.removed,
148
153
  });
149
- incrementSleepCount(hippoRoot);
154
+ store.countSleep();
150
155
  if (decay.rescuedEntries.length > 0)
151
156
  auditRescues(run, decay);
152
157
  }
153
- // One audit row per rescue, written only after the last flush chunk commits, so a run stopped mid-flush asserts no rescue.
158
+ // One audit row per rescue, written only after the last flush chunk commits, so a run stopped mid-flush asserts no
159
+ // rescue.
154
160
  function auditRescues(run, { rescuedEntries, rankById }) {
155
161
  const { result } = run;
156
162
  const rescueEvent = (entry) => {
157
163
  const rank = rankById.get(entry.id);
158
164
  return {
159
- tenantId: entry.tenantId,
165
+ tenantId: entry.tenant_id,
160
166
  actor: 'sleep',
161
167
  op: 'mv_rescue',
162
168
  targetId: entry.id,
@@ -167,10 +173,7 @@ function auditRescues(run, { rescuedEntries, rankById }) {
167
173
  };
168
174
  try {
169
175
  // Row by row: one failed audit write must not silently drop every remaining row.
170
- const failed = recordAuditEventsRowByRow(run.hippoRoot, rescuedEntries.map(rescueEvent));
171
- for (const { event, error } of failed)
172
- reportAuditWriteFailure('mv_rescue', String(error), event.targetId);
173
- const auditFailures = failed.length;
176
+ const auditFailures = run.store.auditEachRow(rescuedEntries.map(rescueEvent));
174
177
  if (auditFailures > 0) {
175
178
  result.details.push(` ⚠️ memory-value: ${auditFailures} mv_rescue audit row${auditFailures === 1 ? '' : 's'} ` +
176
179
  `failed to write (the rescue itself still landed)`);
@@ -1,4 +1,6 @@
1
- /** Trace-layer helpers. A trace is a `MemoryEntry` with `layer === 'trace'`: ordered agent actions and their outcome, stored as markdown in `content`
1
+ /**
2
+ * Trace-layer helpers. A trace is a `MemoryEntry` with `layer === 'trace'`: ordered agent actions and their outcome,
3
+ * stored as markdown in `content`
2
4
  * (`renderTraceContent` formats it). */
3
5
  export interface TraceStep {
4
6
  action: string;
@@ -10,7 +12,10 @@ export interface TraceRecord {
10
12
  steps: TraceStep[];
11
13
  outcome: 'success' | 'failure' | 'partial';
12
14
  }
13
- /** Render a trace record as agent-readable markdown: `Task:`, `Outcome:`, then numbered `Steps:` with each observation on an arrow line (omitted if empty). */
15
+ /**
16
+ * Render a trace record as agent-readable markdown: `Task:`, `Outcome:`, then numbered `Steps:` with each observation
17
+ * on an arrow line (omitted if empty).
18
+ */
14
19
  export declare function renderTraceContent(rec: TraceRecord): string;
15
20
  /**
16
21
  * Parse a JSON string into an array of TraceStep. Throws on invalid shape.
@@ -1,8 +1,13 @@
1
- /** Trace-layer helpers. A trace is a `MemoryEntry` with `layer === 'trace'`: ordered agent actions and their outcome, stored as markdown in `content`
1
+ /**
2
+ * Trace-layer helpers. A trace is a `MemoryEntry` with `layer === 'trace'`: ordered agent actions and their outcome,
3
+ * stored as markdown in `content`
2
4
  * (`renderTraceContent` formats it). */
3
5
  import { isJsonString, isJsonObject } from '../util/json.js';
4
6
  import { errorMessage } from '../util/log.js';
5
- /** Render a trace record as agent-readable markdown: `Task:`, `Outcome:`, then numbered `Steps:` with each observation on an arrow line (omitted if empty). */
7
+ /**
8
+ * Render a trace record as agent-readable markdown: `Task:`, `Outcome:`, then numbered `Steps:` with each observation
9
+ * on an arrow line (omitted if empty).
10
+ */
6
11
  export function renderTraceContent(rec) {
7
12
  const lines = [];
8
13
  lines.push(`Task: ${rec.task}`);
@@ -1,17 +1,16 @@
1
1
  import { isRecallBoostAblated, strengthAblation } from '../core/ablation.js';
2
2
  import { Layer, createMemory, markRetrieved } from '../core/memory.js';
3
- import { findPromotableSessions, traceExistsForSession, listSessionEvents } from '../store/sessions.js';
4
- import { rejectionDigest } from '../store/rejection.js';
3
+ import { rejectionDigest } from '../core/rejection-digest.js';
5
4
  import { sampleForReplay } from './replay.js';
6
5
  import { renderTraceContent } from './trace.js';
7
- import { resolveTenantId } from '../store/tenant.js';
8
- import { reportAuditWriteFailure } from '../store/audit.js';
6
+ import { envTenant } from '../util/env.js';
9
7
  import { commonDerivationScope } from '../core/recall-scope.js';
10
8
  import { log } from '../util/log.js';
11
9
  import { REPLAY_COUNT_DEFAULT } from './run.js';
12
10
  import { isJsonString } from '../util/json.js';
13
11
  import { DAY_MS } from '../util/time.js';
14
- // 1.4. Auto-promote complete sessions to traces: each session in the window with a `session_complete` event and no trace (idempotent via source_session_id)
12
+ // 1.4. Auto-promote complete sessions to traces: each session in the window with a `session_complete` event and no
13
+ // trace (idempotent via source_session_id)
15
14
  // is rendered as markdown and persisted as a Layer.Trace memory, which inherits decay, search, replay and physics.
16
15
  export function promoteSessionTraces(run) {
17
16
  const { result } = run;
@@ -22,8 +21,8 @@ export function promoteSessionTraces(run) {
22
21
  const sinceMs = run.now.getTime() - windowDays * DAY_MS;
23
22
  // Auto-trace runs single-tenant (the env-resolved tenant); consolidating
24
23
  // every tenant needs a per-tenant loop layered on top of this.
25
- const consolidationTenant = resolveTenantId({});
26
- const promotable = findPromotableSessions(run.hippoRoot, consolidationTenant, sinceMs);
24
+ const consolidationTenant = envTenant();
25
+ const promotable = run.store.promotableSessions(consolidationTenant, sinceMs);
27
26
  for (const session of promotable) {
28
27
  const built = sessionTrace(run, consolidationTenant, session.session_id);
29
28
  if (!built)
@@ -39,7 +38,8 @@ export function promoteSessionTraces(run) {
39
38
  result.details.push(` 🧬 promoted trace ${trace.id} from session ${session.session_id} (${outcome})`);
40
39
  }
41
40
  if (result.promotedTraces > 0) {
42
- result.details.push(` 🧬 promoted ${result.promotedTraces} trace${result.promotedTraces === 1 ? '' : 's'} from completed session${result.promotedTraces === 1 ? '' : 's'}`);
41
+ result.details.push(` 🧬 promoted ${result.promotedTraces} trace${result.promotedTraces === 1 ? '' : 's'} from completed ` +
42
+ `session${result.promotedTraces === 1 ? '' : 's'}`);
43
43
  }
44
44
  if (tracesSkippedRejected > 0) {
45
45
  log.warn(`consolidate: skipped ${tracesSkippedRejected} auto-promoted trace(s) whose content matches a rejected value`);
@@ -48,9 +48,9 @@ export function promoteSessionTraces(run) {
48
48
  /** The trace a completed session renders to, or null when it already has one or cannot be promoted. */
49
49
  function sessionTrace(run, consolidationTenant, sessionId) {
50
50
  // Idempotency: skip if a trace for this session already exists.
51
- if (traceExistsForSession(run.hippoRoot, consolidationTenant, sessionId))
51
+ if (run.store.traceExists(consolidationTenant, sessionId))
52
52
  return null;
53
- const events = listSessionEvents(run.hippoRoot, consolidationTenant, {
53
+ const events = run.store.sessionEvents(consolidationTenant, {
54
54
  session_id: sessionId,
55
55
  limit: 1000,
56
56
  });
@@ -70,8 +70,8 @@ function sessionTrace(run, consolidationTenant, sessionId) {
70
70
  .map((e) => ({ action: e.content, observation: '' }));
71
71
  const trace = createMemory(renderTraceContent({ task: summary, steps, outcome }), {
72
72
  layer: Layer.Trace,
73
- trace_outcome: outcome,
74
- source_session_id: sessionId,
73
+ traceOutcome: outcome,
74
+ sourceSessionId: sessionId,
75
75
  tags: ['auto-promoted'],
76
76
  source: 'auto-promote',
77
77
  scope: sessionScope.scope,
@@ -103,32 +103,29 @@ function sessionEnding(events) {
103
103
  // sleep; check the tombstone under the entry's own stamped tenantId, never a guessed one.
104
104
  function traceRejected(run, trace, sessionId) {
105
105
  const traceDigest = rejectionDigest(trace.content);
106
- const tombstone = run.tombstones.find(trace.tenantId, traceDigest);
106
+ const tombstone = run.tombstones.find(trace.tenant_id, traceDigest);
107
107
  if (!tombstone)
108
108
  return false;
109
- try {
110
- run.tombstones.audit({
111
- tenantId: trace.tenantId,
112
- actor: 'sleep',
113
- op: 'reject_refusal',
114
- metadata: {
115
- digest: traceDigest,
116
- reason: tombstone.reason,
117
- sourceSessionId: sessionId,
118
- },
119
- });
120
- }
121
- catch (error) {
122
- reportAuditWriteFailure('reject_refusal', String(error));
123
- }
109
+ run.tombstones.auditOrCount({
110
+ tenantId: trace.tenant_id,
111
+ actor: 'sleep',
112
+ op: 'reject_refusal',
113
+ metadata: {
114
+ digest: traceDigest,
115
+ reason: tombstone.reason,
116
+ sourceSessionId: sessionId,
117
+ },
118
+ });
124
119
  return true;
125
120
  }
126
- // 1.5. Replay pass: rehearse high-value survivors by sampling N memories weighted by outcome, valence, under-rehearsal and idle time,
121
+ // 1.5. Replay pass: rehearse high-value survivors by sampling N memories weighted by outcome, valence, under-rehearsal
122
+ // and idle time,
127
123
  // then applying the `markRetrieved` strengthening, so important memories don't fade.
128
124
  export function replayPass(run) {
129
125
  const { survivors, now } = run;
130
126
  const replayCount = run.config.replay?.count ?? REPLAY_COUNT_DEFAULT;
131
- // EVAL-ONLY ablation (see ablation.ts): replay rehearsal is recall strengthening, so the strengthen-off arm silences the whole pass;
127
+ // EVAL-ONLY ablation (see ablation.ts): replay rehearsal is recall strengthening, so the strengthen-off arm silences
128
+ // the whole pass;
132
129
  // persisting unmutated entries anyway would still refresh updated_at and mirrors.
133
130
  if (!(replayCount > 0 && survivors.length > 0 && !isRecallBoostAblated()))
134
131
  return;
@@ -1,5 +1,8 @@
1
- /** EVAL-ONLY ablation switches (HIPPO_ABLATE_*, HIPPO_EVAL_RECENCY_DAYS, HIPPO_FAKE_NOW): each cuts ONE mechanism (outcome also replayPriority bias).
2
- * Not a production surface. Env is read once per process; tests that mutate these vars MUST call _resetAblationCacheForTests() in beforeEach AND afterEach. See
1
+ /**
2
+ * EVAL-ONLY ablation switches (HIPPO_ABLATE_*, HIPPO_EVAL_RECENCY_DAYS, HIPPO_FAKE_NOW): each cuts ONE mechanism
3
+ * (outcome also replayPriority bias).
4
+ * Not a production surface. Env is read once per process; tests that mutate these vars MUST call
5
+ * _resetAblationCacheForTests() in beforeEach AND afterEach. See
3
6
  * docs/ARCHITECTURE.md#srccoreablationts. */
4
7
  /** The three switches strength scoring honours, resolved by the entry layer and handed to core in DecayOptions. */
5
8
  export interface StrengthAblation {
@@ -18,7 +21,10 @@ export declare function isOutcomeFastAblated(): boolean;
18
21
  export declare function isRecencyAblated(): boolean;
19
22
  /** HIPPO_EVAL_RECENCY_DAYS when it is a positive number, else null (callers keep their default). */
20
23
  export declare function evalRecencyScaleDays(): number | null;
21
- /** The default `now` for lifecycle computations: HIPPO_FAKE_NOW when set and parseable, else the real clock; an explicit `now` parameter always wins. */
24
+ /**
25
+ * The default `now` for lifecycle computations: HIPPO_FAKE_NOW when set and parseable, else the real clock; an explicit
26
+ * `now` parameter always wins.
27
+ */
22
28
  export declare function evalNow(): Date;
23
29
  /** Test-only. See module JSDoc: call in BOTH beforeEach AND afterEach. */
24
30
  export declare function _resetAblationCacheForTests(): void;