hippo-memory 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (965) hide show
  1. package/dist/agent-memories/apply.d.ts +7 -5
  2. package/dist/agent-memories/apply.js +66 -39
  3. package/dist/agent-memories/claude-code.d.ts +8 -2
  4. package/dist/agent-memories/claude-code.js +26 -7
  5. package/dist/agent-memories/copilot.js +2 -1
  6. package/dist/agent-memories/files.js +2 -1
  7. package/dist/agent-memories/legacy.d.ts +6 -3
  8. package/dist/agent-memories/legacy.js +35 -14
  9. package/dist/agent-memories/markdown.d.ts +3 -1
  10. package/dist/agent-memories/markdown.js +3 -1
  11. package/dist/agent-memories/openclaw.js +5 -2
  12. package/dist/agent-memories/plan.js +11 -1
  13. package/dist/agent-memories/project-folds.js +2 -1
  14. package/dist/agent-memories/report.d.ts +4 -1
  15. package/dist/agent-memories/report.js +43 -9
  16. package/dist/agent-memories/source.d.ts +8 -2
  17. package/dist/agent-memories/source.js +11 -3
  18. package/dist/agent-memories/sync.d.ts +7 -2
  19. package/dist/agent-memories/sync.js +141 -101
  20. package/dist/api/assemble.d.ts +6 -4
  21. package/dist/api/assemble.js +11 -6
  22. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  23. package/dist/api/{audit.js → auth/audit.js} +11 -11
  24. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
  25. package/dist/api/{auth.js → auth/auth.js} +46 -29
  26. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  27. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
  28. package/dist/api/auth/session-owners.d.ts +10 -0
  29. package/dist/api/auth/session-owners.js +35 -0
  30. package/dist/api/availability.d.ts +3 -1
  31. package/dist/api/availability.js +3 -1
  32. package/dist/api/busy.d.ts +2 -0
  33. package/dist/api/busy.js +2 -0
  34. package/dist/api/cli-surface.d.ts +6 -0
  35. package/dist/api/cli-surface.js +6 -0
  36. package/dist/api/config-of.d.ts +5 -0
  37. package/dist/api/config-of.js +6 -0
  38. package/dist/api/context-auto.d.ts +4 -1
  39. package/dist/api/context-auto.js +10 -2
  40. package/dist/api/context-render.js +14 -7
  41. package/dist/api/context-select.d.ts +4 -1
  42. package/dist/api/context-select.js +23 -14
  43. package/dist/api/context-types.d.ts +38 -12
  44. package/dist/api/context.d.ts +8 -5
  45. package/dist/api/context.js +112 -57
  46. package/dist/api/continuity.d.ts +24 -21
  47. package/dist/api/continuity.js +18 -20
  48. package/dist/api/correction-latency.d.ts +3 -1
  49. package/dist/api/correction-latency.js +3 -1
  50. package/dist/api/error-reply.d.ts +4 -1
  51. package/dist/api/error-reply.js +12 -3
  52. package/dist/api/index.d.ts +39 -23
  53. package/dist/api/index.js +21 -23
  54. package/dist/api/instruction-detect.d.ts +4 -1
  55. package/dist/api/instruction-detect.js +75 -20
  56. package/dist/api/ledger-db.d.ts +15 -11
  57. package/dist/api/ledger-db.js +21 -23
  58. package/dist/api/memories/conflicts.d.ts +33 -0
  59. package/dist/api/memories/conflicts.js +67 -0
  60. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  61. package/dist/api/{forget.js → memories/forget.js} +22 -15
  62. package/dist/api/memories/memories.d.ts +27 -0
  63. package/dist/api/{memories.js → memories/memories.js} +16 -21
  64. package/dist/api/memories/outcome.d.ts +22 -0
  65. package/dist/api/{outcome.js → memories/outcome.js} +14 -8
  66. package/dist/api/memories/promote.d.ts +40 -0
  67. package/dist/api/{promote.js → memories/promote.js} +35 -22
  68. package/dist/api/memories/refine.d.ts +10 -0
  69. package/dist/api/memories/refine.js +12 -0
  70. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
  71. package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
  72. package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
  73. package/dist/api/{remember.js → memories/remember.js} +42 -26
  74. package/dist/api/objects/cards.d.ts +39 -0
  75. package/dist/api/{cards.js → objects/cards.js} +12 -14
  76. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  77. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
  78. package/dist/api/objects/goals.d.ts +18 -0
  79. package/dist/api/{goals.js → objects/goals.js} +12 -12
  80. package/dist/api/objects/graph.d.ts +11 -0
  81. package/dist/api/objects/graph.js +16 -0
  82. package/dist/api/objects/objects.d.ts +9 -0
  83. package/dist/api/{objects.js → objects/objects.js} +2 -4
  84. package/dist/api/objects/predictions.d.ts +11 -0
  85. package/dist/api/{predictions.js → objects/predictions.js} +7 -6
  86. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  87. package/dist/api/{projects.js → objects/projects.js} +8 -4
  88. package/dist/api/pilot-arm.d.ts +8 -4
  89. package/dist/api/pilot-arm.js +5 -4
  90. package/dist/api/prompt-hook.d.ts +32 -19
  91. package/dist/api/prompt-hook.js +65 -44
  92. package/dist/api/provenance-coverage.d.ts +3 -1
  93. package/dist/api/provenance-coverage.js +3 -1
  94. package/dist/api/recall/finish.d.ts +185 -0
  95. package/dist/api/recall/finish.js +301 -0
  96. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  97. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
  98. package/dist/api/recall/recall.d.ts +6 -0
  99. package/dist/api/{recall.js → recall/recall.js} +101 -60
  100. package/dist/api/recall/render.d.ts +39 -0
  101. package/dist/api/recall/render.js +60 -0
  102. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  103. package/dist/api/recall/request.js +261 -0
  104. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  105. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  106. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
  107. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  108. package/dist/api/session-end.d.ts +16 -12
  109. package/dist/api/session-end.js +46 -30
  110. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  111. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  112. package/dist/api/sleep/dormant.d.ts +25 -0
  113. package/dist/api/sleep/dormant.js +64 -0
  114. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  115. package/dist/api/sleep/learn.js +138 -0
  116. package/dist/api/sleep/sleep-run.d.ts +38 -0
  117. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
  118. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  119. package/dist/api/sleep/sleep.js +9 -0
  120. package/dist/api/status.d.ts +3 -1
  121. package/dist/api/status.js +3 -1
  122. package/dist/api/store-init.d.ts +4 -1
  123. package/dist/api/store-init.js +4 -1
  124. package/dist/api/tokens.d.ts +10 -9
  125. package/dist/api/tokens.js +9 -10
  126. package/dist/api/types.d.ts +28 -7
  127. package/dist/api/types.js +13 -4
  128. package/dist/capture/caller-session.d.ts +8 -2
  129. package/dist/capture/caller-session.js +16 -6
  130. package/dist/capture/capture-error.d.ts +3 -1
  131. package/dist/capture/capture-error.js +3 -1
  132. package/dist/capture/codex-patch.js +7 -2
  133. package/dist/capture/command.d.ts +4 -2
  134. package/dist/capture/command.js +33 -14
  135. package/dist/capture/compact-resume-caller.js +15 -8
  136. package/dist/capture/compact.d.ts +8 -5
  137. package/dist/capture/compact.js +34 -23
  138. package/dist/capture/compaction-items-caller.js +9 -3
  139. package/dist/capture/compaction-record.d.ts +4 -3
  140. package/dist/capture/compaction-record.js +20 -12
  141. package/dist/capture/compaction-spool.d.ts +15 -4
  142. package/dist/capture/compaction-spool.js +64 -17
  143. package/dist/capture/copilot-transcript.d.ts +11 -3
  144. package/dist/capture/copilot-transcript.js +16 -6
  145. package/dist/capture/extract.js +20 -8
  146. package/dist/capture/failure-caller.js +23 -12
  147. package/dist/capture/failure-reading.d.ts +10 -3
  148. package/dist/capture/failure-reading.js +24 -7
  149. package/dist/capture/pre-compact-caller.js +11 -4
  150. package/dist/capture/session-digest.d.ts +15 -4
  151. package/dist/capture/session-digest.js +39 -13
  152. package/dist/capture/session-end-caller.d.ts +4 -1
  153. package/dist/capture/session-end-caller.js +20 -8
  154. package/dist/capture/session-texts.d.ts +6 -2
  155. package/dist/capture/session-texts.js +22 -7
  156. package/dist/capture/session-worker.d.ts +4 -2
  157. package/dist/capture/session-worker.js +45 -17
  158. package/dist/capture/transcript.d.ts +13 -4
  159. package/dist/capture/transcript.js +32 -10
  160. package/dist/capture/working-state.d.ts +13 -4
  161. package/dist/capture/working-state.js +50 -56
  162. package/dist/cli/api-context.d.ts +14 -2
  163. package/dist/cli/api-context.js +45 -2
  164. package/dist/cli/audit.js +23 -23
  165. package/dist/cli/auth.js +19 -27
  166. package/dist/cli/briefs.d.ts +1 -1
  167. package/dist/cli/briefs.js +20 -15
  168. package/dist/cli/card.d.ts +1 -1
  169. package/dist/cli/card.js +56 -73
  170. package/dist/cli/client.d.ts +12 -4
  171. package/dist/cli/client.js +43 -13
  172. package/dist/cli/compact-resume-payload.d.ts +4 -1
  173. package/dist/cli/compact-resume-payload.js +12 -5
  174. package/dist/cli/context.js +42 -17
  175. package/dist/cli/continuity.d.ts +5 -5
  176. package/dist/cli/continuity.js +90 -107
  177. package/dist/cli/curate.d.ts +4 -3
  178. package/dist/cli/curate.js +46 -68
  179. package/dist/cli/dag.d.ts +1 -1
  180. package/dist/cli/dag.js +14 -17
  181. package/dist/cli/decisions.js +27 -26
  182. package/dist/cli/eval.js +16 -21
  183. package/dist/cli/exit.d.ts +4 -1
  184. package/dist/cli/exit.js +10 -2
  185. package/dist/cli/explain.js +12 -11
  186. package/dist/cli/flag-values.d.ts +1 -1
  187. package/dist/cli/flag-values.js +9 -18
  188. package/dist/cli/github.d.ts +6 -0
  189. package/dist/cli/github.js +25 -13
  190. package/dist/cli/goals.d.ts +1 -1
  191. package/dist/cli/goals.js +39 -56
  192. package/dist/cli/graph.d.ts +1 -1
  193. package/dist/cli/graph.js +15 -11
  194. package/dist/cli/hook-runtime.d.ts +31 -9
  195. package/dist/cli/hook-runtime.js +40 -15
  196. package/dist/cli/incidents.d.ts +1 -1
  197. package/dist/cli/incidents.js +25 -25
  198. package/dist/cli/init.js +26 -11
  199. package/dist/cli/install-steps.d.ts +12 -3
  200. package/dist/cli/install-steps.js +42 -18
  201. package/dist/cli/last-sleep.d.ts +4 -1
  202. package/dist/cli/last-sleep.js +9 -4
  203. package/dist/cli/maintenance.d.ts +1 -1
  204. package/dist/cli/maintenance.js +11 -12
  205. package/dist/cli/notes.d.ts +1 -1
  206. package/dist/cli/notes.js +8 -5
  207. package/dist/cli/object-verbs.d.ts +4 -4
  208. package/dist/cli/object-verbs.js +10 -13
  209. package/dist/cli/open-browser.js +11 -2
  210. package/dist/cli/playbooks.d.ts +3 -3
  211. package/dist/cli/playbooks.js +40 -32
  212. package/dist/cli/predictions.js +15 -19
  213. package/dist/cli/print.js +4 -2
  214. package/dist/cli/projects.js +21 -11
  215. package/dist/cli/quality-repair-once.js +5 -4
  216. package/dist/cli/recall.js +129 -93
  217. package/dist/cli/refine-llm.d.ts +15 -4
  218. package/dist/cli/refine-llm.js +16 -7
  219. package/dist/cli/remember.js +46 -50
  220. package/dist/cli/scheduler.d.ts +4 -1
  221. package/dist/cli/scheduler.js +9 -5
  222. package/dist/cli/serve.js +22 -17
  223. package/dist/cli/session-hooks.d.ts +2 -2
  224. package/dist/cli/session-hooks.js +87 -50
  225. package/dist/cli/setup.js +54 -32
  226. package/dist/cli/shared.d.ts +3 -1
  227. package/dist/cli/shared.js +24 -9
  228. package/dist/cli/slack.js +15 -24
  229. package/dist/cli/sleep-render.d.ts +3 -1
  230. package/dist/cli/sleep-render.js +8 -5
  231. package/dist/cli/sleep.js +14 -6
  232. package/dist/cli/status.d.ts +4 -4
  233. package/dist/cli/status.js +32 -27
  234. package/dist/cli/stdin.d.ts +10 -3
  235. package/dist/cli/stdin.js +10 -3
  236. package/dist/cli/transfer.d.ts +1 -1
  237. package/dist/cli/transfer.js +71 -75
  238. package/dist/cli/verbs/memory.js +8 -6
  239. package/dist/cli/verbs/objects.js +10 -4
  240. package/dist/cli/versioned-verbs.d.ts +8 -7
  241. package/dist/cli/versioned-verbs.js +31 -21
  242. package/dist/cli.js +13 -16
  243. package/dist/connectors/dlq.d.ts +6 -6
  244. package/dist/connectors/dlq.js +12 -8
  245. package/dist/connectors/github/backfill.d.ts +4 -4
  246. package/dist/connectors/github/backfill.js +6 -4
  247. package/dist/connectors/github/deletion.d.ts +6 -4
  248. package/dist/connectors/github/deletion.js +5 -5
  249. package/dist/connectors/github/dlq.d.ts +8 -6
  250. package/dist/connectors/github/dlq.js +11 -5
  251. package/dist/connectors/github/ingest.d.ts +2 -2
  252. package/dist/connectors/github/ingest.js +9 -6
  253. package/dist/connectors/github/octokit-client.d.ts +3 -1
  254. package/dist/connectors/github/octokit-client.js +7 -2
  255. package/dist/connectors/github/ratelimit.d.ts +6 -2
  256. package/dist/connectors/github/ratelimit.js +6 -2
  257. package/dist/connectors/github/signature.d.ts +14 -3
  258. package/dist/connectors/github/signature.js +17 -3
  259. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  260. package/dist/connectors/github/tenant-routing.js +6 -6
  261. package/dist/connectors/github/transform.js +50 -67
  262. package/dist/connectors/github/types.d.ts +10 -3
  263. package/dist/connectors/github/types.js +6 -2
  264. package/dist/connectors/github/webhook.d.ts +5 -5
  265. package/dist/connectors/github/webhook.js +34 -23
  266. package/dist/connectors/ingest.d.ts +5 -3
  267. package/dist/connectors/ingest.js +3 -4
  268. package/dist/connectors/slack/backfill.d.ts +5 -5
  269. package/dist/connectors/slack/backfill.js +3 -3
  270. package/dist/connectors/slack/deletion.d.ts +4 -4
  271. package/dist/connectors/slack/deletion.js +6 -6
  272. package/dist/connectors/slack/dlq.d.ts +4 -4
  273. package/dist/connectors/slack/dlq.js +6 -6
  274. package/dist/connectors/slack/ingest.d.ts +6 -4
  275. package/dist/connectors/slack/ingest.js +5 -5
  276. package/dist/connectors/slack/signature.d.ts +4 -1
  277. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  278. package/dist/connectors/slack/tenant-routing.js +6 -6
  279. package/dist/connectors/slack/transform.d.ts +6 -2
  280. package/dist/connectors/slack/transform.js +6 -2
  281. package/dist/connectors/slack/types.d.ts +3 -1
  282. package/dist/connectors/slack/web-client.js +8 -3
  283. package/dist/connectors/slack/webhook.d.ts +5 -5
  284. package/dist/connectors/slack/webhook.js +19 -11
  285. package/dist/connectors/slack/workspaces.d.ts +7 -3
  286. package/dist/connectors/slack/workspaces.js +7 -3
  287. package/dist/connectors/store.d.ts +8 -0
  288. package/dist/connectors/store.js +2 -0
  289. package/dist/consolidate/conflicts.js +23 -9
  290. package/dist/consolidate/dag-summary.js +2 -1
  291. package/dist/consolidate/dag.d.ts +10 -5
  292. package/dist/consolidate/dag.js +37 -36
  293. package/dist/consolidate/decay.js +19 -6
  294. package/dist/consolidate/dedupe.d.ts +14 -5
  295. package/dist/consolidate/dedupe.js +27 -16
  296. package/dist/consolidate/flush-units.d.ts +4 -1
  297. package/dist/consolidate/flush-units.js +4 -1
  298. package/dist/consolidate/half-life-migration.d.ts +18 -8
  299. package/dist/consolidate/half-life-migration.js +48 -18
  300. package/dist/consolidate/llm-passes.js +27 -11
  301. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  302. package/dist/consolidate/memory-value-weights.js +6 -2
  303. package/dist/consolidate/memory-value.d.ts +30 -10
  304. package/dist/consolidate/memory-value.js +36 -13
  305. package/dist/consolidate/merge.d.ts +4 -1
  306. package/dist/consolidate/merge.js +42 -32
  307. package/dist/consolidate/overlap-index.d.ts +8 -2
  308. package/dist/consolidate/overlap-index.js +11 -4
  309. package/dist/consolidate/physics-pass.d.ts +3 -1
  310. package/dist/consolidate/physics-pass.js +10 -7
  311. package/dist/consolidate/replay.d.ts +11 -4
  312. package/dist/consolidate/replay.js +19 -7
  313. package/dist/consolidate/run.d.ts +13 -5
  314. package/dist/consolidate/run.js +4 -4
  315. package/dist/consolidate/sleep.d.ts +14 -6
  316. package/dist/consolidate/sleep.js +41 -38
  317. package/dist/consolidate/trace.d.ts +7 -2
  318. package/dist/consolidate/trace.js +7 -2
  319. package/dist/consolidate/traces.js +26 -29
  320. package/dist/core/ablation.d.ts +9 -3
  321. package/dist/core/ablation.js +14 -4
  322. package/dist/core/active-scope.d.ts +3 -1
  323. package/dist/core/active-scope.js +3 -1
  324. package/dist/core/agent-memory-tools.d.ts +2 -0
  325. package/dist/core/agent-memory-tools.js +2 -0
  326. package/dist/core/ambient.d.ts +4 -3
  327. package/dist/core/ambient.js +8 -6
  328. package/dist/core/api-errors.d.ts +9 -3
  329. package/dist/core/api-errors.js +9 -3
  330. package/dist/core/capture-contract.d.ts +4 -1
  331. package/dist/core/capture-contract.js +27 -8
  332. package/dist/core/compare.d.ts +24 -8
  333. package/dist/core/compare.js +24 -8
  334. package/dist/core/config.d.ts +18 -9
  335. package/dist/core/config.js +24 -14
  336. package/dist/core/cosine.d.ts +4 -1
  337. package/dist/core/cosine.js +4 -1
  338. package/dist/core/handoff.d.ts +7 -2
  339. package/dist/core/handoff.js +4 -1
  340. package/dist/core/markdown.js +21 -16
  341. package/dist/core/memory-audit.js +14 -3
  342. package/dist/core/memory-quality.d.ts +12 -3
  343. package/dist/core/memory-quality.js +57 -21
  344. package/dist/core/memory.d.ts +84 -27
  345. package/dist/core/memory.js +73 -29
  346. package/dist/core/merged-row.d.ts +8 -2
  347. package/dist/core/merged-row.js +10 -3
  348. package/dist/core/package-root.d.ts +3 -1
  349. package/dist/core/package-root.js +3 -1
  350. package/dist/core/particle-refresh.d.ts +8 -0
  351. package/dist/core/particle-refresh.js +22 -0
  352. package/dist/core/physics-config.d.ts +4 -1
  353. package/dist/core/physics-config.js +6 -2
  354. package/dist/core/physics.d.ts +37 -11
  355. package/dist/core/physics.js +55 -20
  356. package/dist/core/project-identity.d.ts +34 -17
  357. package/dist/core/project-identity.js +33 -17
  358. package/dist/core/project-remote.d.ts +8 -4
  359. package/dist/core/project-remote.js +31 -14
  360. package/dist/core/recall-scope.d.ts +33 -11
  361. package/dist/core/recall-scope.js +42 -15
  362. package/dist/core/rejection-digest.d.ts +7 -0
  363. package/dist/core/rejection-digest.js +13 -0
  364. package/dist/core/salience.d.ts +3 -1
  365. package/dist/core/salience.js +10 -4
  366. package/dist/core/search-types.d.ts +15 -2
  367. package/dist/core/search-types.js +11 -0
  368. package/dist/dashboard/dashboard-actions.js +13 -2
  369. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  370. package/dist/dashboard/dashboard-snapshot.js +4 -4
  371. package/dist/dashboard/dashboard.js +6 -3
  372. package/dist/db/backup.js +2 -2
  373. package/dist/db/busy.d.ts +10 -3
  374. package/dist/db/busy.js +27 -5
  375. package/dist/db/connect.d.ts +10 -3
  376. package/dist/db/connect.js +8 -3
  377. package/dist/db/continuity.d.ts +1 -1
  378. package/dist/db/continuity.js +27 -11
  379. package/dist/db/meta.d.ts +4 -1
  380. package/dist/db/meta.js +4 -1
  381. package/dist/db/migrate.d.ts +10 -5
  382. package/dist/db/migrate.js +26 -13
  383. package/dist/db/migrations/index.d.ts +1 -1
  384. package/dist/db/migrations/index.js +3 -1
  385. package/dist/db/migrations/types.d.ts +2 -1
  386. package/dist/db/migrations/v12.js +2 -1
  387. package/dist/db/migrations/v14.js +2 -1
  388. package/dist/db/migrations/v15.js +4 -2
  389. package/dist/db/migrations/v16.js +6 -3
  390. package/dist/db/migrations/v17.js +2 -1
  391. package/dist/db/migrations/v19.js +4 -2
  392. package/dist/db/migrations/v20.js +2 -1
  393. package/dist/db/migrations/v22.js +12 -6
  394. package/dist/db/migrations/v23.js +6 -3
  395. package/dist/db/migrations/v24.js +6 -3
  396. package/dist/db/migrations/v25.js +4 -2
  397. package/dist/db/migrations/v26.js +4 -2
  398. package/dist/db/migrations/v27.js +6 -3
  399. package/dist/db/migrations/v28.js +4 -2
  400. package/dist/db/migrations/v29.js +4 -2
  401. package/dist/db/migrations/v30.js +6 -3
  402. package/dist/db/migrations/v31.js +4 -2
  403. package/dist/db/migrations/v32.js +6 -3
  404. package/dist/db/migrations/v33.js +4 -2
  405. package/dist/db/migrations/v34.js +2 -1
  406. package/dist/db/migrations/v35.js +2 -1
  407. package/dist/db/migrations/v36.js +2 -1
  408. package/dist/db/migrations/v37.js +10 -5
  409. package/dist/db/migrations/v38.js +10 -5
  410. package/dist/db/migrations/v39.js +14 -6
  411. package/dist/db/migrations/v40.js +4 -2
  412. package/dist/db/migrations/v41.js +4 -2
  413. package/dist/db/migrations/v42.js +2 -1
  414. package/dist/db/migrations/v44.js +4 -2
  415. package/dist/db/migrations/v45.js +4 -2
  416. package/dist/db/migrations/v49.js +2 -1
  417. package/dist/db/migrations/v50.js +4 -2
  418. package/dist/db/migrations/v51.js +4 -2
  419. package/dist/db/migrations/v52.js +2 -1
  420. package/dist/db/migrations/v53.js +8 -4
  421. package/dist/db/migrations/v54.js +2 -1
  422. package/dist/db/migrations/v55.js +4 -2
  423. package/dist/db/migrations/v56.d.ts +3 -0
  424. package/dist/db/migrations/v56.js +28 -0
  425. package/dist/db/open.d.ts +24 -12
  426. package/dist/db/open.js +25 -13
  427. package/dist/db/physics-state.d.ts +8 -4
  428. package/dist/db/physics-state.js +13 -20
  429. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  430. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  431. package/dist/db/request-stores.d.ts +19 -5
  432. package/dist/db/request-stores.js +14 -5
  433. package/dist/db/tables.d.ts +2 -1
  434. package/dist/db/tables.js +12 -4
  435. package/dist/db/vector-store.d.ts +13 -4
  436. package/dist/db/vector-store.js +34 -14
  437. package/dist/db/wal-checkpointer.d.ts +2 -1
  438. package/dist/db/wal-checkpointer.js +19 -7
  439. package/dist/doctor.d.ts +4 -1
  440. package/dist/doctor.js +121 -39
  441. package/dist/embeddings/local.d.ts +8 -4
  442. package/dist/embeddings/local.js +9 -5
  443. package/dist/embeddings/provider.d.ts +19 -10
  444. package/dist/embeddings/provider.js +31 -17
  445. package/dist/embeddings/transformers.d.ts +16 -4
  446. package/dist/embeddings/transformers.js +32 -15
  447. package/dist/entry/json-hooks.d.ts +1 -1
  448. package/dist/entry/json-hooks.js +1 -1
  449. package/dist/entry/project-identity.js +2 -1
  450. package/dist/entry/session-text.d.ts +1 -1
  451. package/dist/entry/session-text.js +1 -1
  452. package/dist/entry/sqlite-handles.d.ts +10 -0
  453. package/dist/entry/sqlite-handles.js +9 -0
  454. package/dist/entry/store-kit.d.ts +19 -6
  455. package/dist/entry/store-kit.js +6 -4
  456. package/dist/eval/eval-stats.d.ts +27 -8
  457. package/dist/eval/eval-stats.js +17 -5
  458. package/dist/eval/eval-suite.d.ts +3 -1
  459. package/dist/eval/eval-suite.js +409 -187
  460. package/dist/eval/eval.d.ts +8 -2
  461. package/dist/eval/eval.js +8 -2
  462. package/dist/eval/judgment.js +16 -6
  463. package/dist/graph/delta.d.ts +9 -42
  464. package/dist/graph/delta.js +17 -11
  465. package/dist/graph/extract.d.ts +10 -7
  466. package/dist/graph/extract.js +57 -25
  467. package/dist/graph/recall.d.ts +12 -4
  468. package/dist/graph/recall.js +30 -13
  469. package/dist/graph/stream.d.ts +18 -6
  470. package/dist/graph/stream.js +32 -10
  471. package/dist/graph/view.d.ts +19 -6
  472. package/dist/graph/view.js +42 -17
  473. package/dist/hooks/codex-session.js +2 -2
  474. package/dist/hooks/codex-wrapper.d.ts +3 -1
  475. package/dist/hooks/codex-wrapper.js +9 -4
  476. package/dist/hooks/copilot.d.ts +19 -5
  477. package/dist/hooks/copilot.js +54 -15
  478. package/dist/hooks/hook-blocks.d.ts +4 -1
  479. package/dist/hooks/hook-blocks.js +8 -3
  480. package/dist/hooks/json-hooks.d.ts +9 -5
  481. package/dist/hooks/json-hooks.js +69 -34
  482. package/dist/hooks/opencode.js +15 -5
  483. package/dist/hooks/shared.d.ts +27 -8
  484. package/dist/hooks/shared.js +57 -16
  485. package/dist/importers/core.d.ts +12 -4
  486. package/dist/importers/core.js +8 -7
  487. package/dist/importers/markdown-parse.d.ts +15 -5
  488. package/dist/importers/markdown-parse.js +16 -7
  489. package/dist/importers/markdown.js +6 -9
  490. package/dist/importers/sources.js +10 -23
  491. package/dist/importers/vault.d.ts +2 -2
  492. package/dist/importers/vault.js +43 -27
  493. package/dist/index.d.ts +32 -6
  494. package/dist/index.js +25 -7
  495. package/dist/learn/autolearn.d.ts +17 -6
  496. package/dist/learn/autolearn.js +53 -24
  497. package/dist/learn/churn-git.d.ts +4 -1
  498. package/dist/learn/churn-git.js +29 -5
  499. package/dist/learn/extract.d.ts +4 -1
  500. package/dist/learn/extract.js +16 -9
  501. package/dist/learn/forward-claim-detector.d.ts +17 -5
  502. package/dist/learn/forward-claim-detector.js +34 -15
  503. package/dist/learn/invalidation.d.ts +12 -7
  504. package/dist/learn/invalidation.js +56 -27
  505. package/dist/learn/roots.d.ts +3 -0
  506. package/dist/learn/roots.js +5 -0
  507. package/dist/mcp/admin-tools.d.ts +5 -5
  508. package/dist/mcp/admin-tools.js +28 -23
  509. package/dist/mcp/format.d.ts +1 -1
  510. package/dist/mcp/format.js +4 -2
  511. package/dist/mcp/framing.d.ts +3 -1
  512. package/dist/mcp/framing.js +20 -8
  513. package/dist/mcp/memory-tools.d.ts +3 -3
  514. package/dist/mcp/memory-tools.js +18 -14
  515. package/dist/mcp/protocol.d.ts +32 -16
  516. package/dist/mcp/protocol.js +12 -9
  517. package/dist/mcp/recall-tools.d.ts +3 -3
  518. package/dist/mcp/recall-tools.js +62 -74
  519. package/dist/mcp/request.d.ts +7 -5
  520. package/dist/mcp/request.js +57 -74
  521. package/dist/mcp/server.d.ts +3 -1
  522. package/dist/mcp/server.js +8 -3
  523. package/dist/mcp/session-state.d.ts +1 -1
  524. package/dist/mcp/session-state.js +4 -3
  525. package/dist/mcp/shared-gate.d.ts +3 -2
  526. package/dist/mcp/shared-gate.js +3 -2
  527. package/dist/mcp/stdio.d.ts +6 -3
  528. package/dist/mcp/stdio.js +52 -21
  529. package/dist/mcp/tool-args.d.ts +4 -1
  530. package/dist/mcp/tool-args.js +8 -3
  531. package/dist/mcp/tools.js +76 -32
  532. package/dist/objects/customer-notes.d.ts +12 -10
  533. package/dist/objects/customer-notes.js +21 -15
  534. package/dist/objects/decisions.d.ts +18 -10
  535. package/dist/objects/decisions.js +23 -17
  536. package/dist/objects/descriptor.js +2 -1
  537. package/dist/objects/fields.d.ts +4 -1
  538. package/dist/objects/fields.js +6 -2
  539. package/dist/objects/incidents.d.ts +14 -16
  540. package/dist/objects/incidents.js +29 -30
  541. package/dist/objects/lifecycle.d.ts +0 -4
  542. package/dist/objects/lifecycle.js +21 -24
  543. package/dist/objects/policies.d.ts +12 -16
  544. package/dist/objects/policies.js +17 -21
  545. package/dist/objects/processes.d.ts +16 -10
  546. package/dist/objects/processes.js +20 -15
  547. package/dist/objects/project-briefs.d.ts +13 -14
  548. package/dist/objects/project-briefs.js +33 -39
  549. package/dist/objects/skills.d.ts +10 -12
  550. package/dist/objects/skills.js +17 -22
  551. package/dist/postinstall.js +15 -7
  552. package/dist/predictions/planning-fallacy.d.ts +19 -6
  553. package/dist/predictions/planning-fallacy.js +4 -2
  554. package/dist/rerankers/clef.d.ts +8 -2
  555. package/dist/rerankers/clef.js +14 -9
  556. package/dist/rerankers/cross-encoder.d.ts +2 -1
  557. package/dist/rerankers/cross-encoder.js +9 -6
  558. package/dist/rerankers/index.js +2 -1
  559. package/dist/rerankers/jev.js +2 -1
  560. package/dist/rerankers/llm.d.ts +6 -2
  561. package/dist/rerankers/llm.js +8 -3
  562. package/dist/rerankers/remote.d.ts +3 -1
  563. package/dist/rerankers/remote.js +5 -2
  564. package/dist/rerankers/types.d.ts +6 -2
  565. package/dist/search/bm25-search.d.ts +3 -1
  566. package/dist/search/bm25-search.js +15 -2
  567. package/dist/search/boosts.js +4 -3
  568. package/dist/search/embed-memories.d.ts +10 -5
  569. package/dist/search/embed-memories.js +62 -36
  570. package/dist/search/engine.d.ts +4 -1
  571. package/dist/search/engine.js +6 -2
  572. package/dist/search/goal-boost.d.ts +10 -3
  573. package/dist/search/goal-boost.js +13 -6
  574. package/dist/search/hybrid-score.d.ts +4 -1
  575. package/dist/search/hybrid-score.js +4 -1
  576. package/dist/search/hybrid.d.ts +23 -8
  577. package/dist/search/hybrid.js +12 -7
  578. package/dist/search/multihop.js +14 -13
  579. package/dist/search/path-context.d.ts +10 -3
  580. package/dist/search/path-context.js +10 -3
  581. package/dist/search/physics-search.d.ts +9 -4
  582. package/dist/search/physics-search.js +38 -14
  583. package/dist/search/rerank.d.ts +2 -1
  584. package/dist/search/rerank.js +2 -1
  585. package/dist/search/rrf.d.ts +14 -5
  586. package/dist/search/rrf.js +11 -4
  587. package/dist/search/vector.d.ts +8 -2
  588. package/dist/search/vector.js +9 -3
  589. package/dist/server/auth.d.ts +18 -14
  590. package/dist/server/auth.js +69 -38
  591. package/dist/server/boot.d.ts +3 -1
  592. package/dist/server/boot.js +95 -56
  593. package/dist/server/client-ip.d.ts +11 -4
  594. package/dist/server/client-ip.js +27 -10
  595. package/dist/server/cursor.d.ts +10 -3
  596. package/dist/server/cursor.js +10 -3
  597. package/dist/server/deadline.d.ts +5 -2
  598. package/dist/server/deadline.js +10 -3
  599. package/dist/server/key-check-bounds.js +12 -4
  600. package/dist/server/lifecycle.d.ts +4 -1
  601. package/dist/server/lifecycle.js +10 -4
  602. package/dist/server/mcp-http.d.ts +2 -1
  603. package/dist/server/mcp-http.js +37 -22
  604. package/dist/server/rate-limit.d.ts +17 -5
  605. package/dist/server/rate-limit.js +55 -26
  606. package/dist/server/ready.js +7 -4
  607. package/dist/server/request.d.ts +15 -4
  608. package/dist/server/request.js +42 -15
  609. package/dist/server/route-checks.d.ts +4 -1
  610. package/dist/server/route-checks.js +8 -3
  611. package/dist/server/route-table.d.ts +8 -6
  612. package/dist/server/route-table.js +547 -93
  613. package/dist/server/routes/admin.d.ts +7 -7
  614. package/dist/server/routes/admin.js +36 -15
  615. package/dist/server/routes/customer-notes.d.ts +5 -5
  616. package/dist/server/routes/customer-notes.js +5 -4
  617. package/dist/server/routes/decisions.d.ts +5 -5
  618. package/dist/server/routes/decisions.js +12 -6
  619. package/dist/server/routes/incidents.d.ts +5 -5
  620. package/dist/server/routes/incidents.js +10 -4
  621. package/dist/server/routes/memories.d.ts +8 -8
  622. package/dist/server/routes/memories.js +12 -19
  623. package/dist/server/routes/object-routes.d.ts +8 -5
  624. package/dist/server/routes/object-routes.js +4 -2
  625. package/dist/server/routes/policies.d.ts +6 -6
  626. package/dist/server/routes/policies.js +11 -4
  627. package/dist/server/routes/predictions.d.ts +5 -5
  628. package/dist/server/routes/predictions.js +9 -4
  629. package/dist/server/routes/processes.d.ts +5 -5
  630. package/dist/server/routes/processes.js +15 -6
  631. package/dist/server/routes/project-briefs.d.ts +6 -6
  632. package/dist/server/routes/project-briefs.js +3 -2
  633. package/dist/server/routes/recall.d.ts +3 -3
  634. package/dist/server/routes/recall.js +21 -10
  635. package/dist/server/routes/skills.d.ts +6 -6
  636. package/dist/server/routes/skills.js +12 -4
  637. package/dist/server/server-detect.d.ts +24 -8
  638. package/dist/server/server-detect.js +57 -22
  639. package/dist/server/sleep-child.js +16 -10
  640. package/dist/server/sleep-offload.d.ts +8 -5
  641. package/dist/server/sleep-offload.js +41 -19
  642. package/dist/server/tls.d.ts +4 -1
  643. package/dist/server/tls.js +13 -5
  644. package/dist/server/types.d.ts +38 -26
  645. package/dist/server/validation.d.ts +4 -1
  646. package/dist/server/validation.js +22 -9
  647. package/dist/server.d.ts +15 -10
  648. package/dist/server.js +32 -12
  649. package/dist/sharing/global-store.d.ts +5 -10
  650. package/dist/sharing/global-store.js +8 -43
  651. package/dist/sharing/global-sync.d.ts +3 -1
  652. package/dist/sharing/global-sync.js +16 -6
  653. package/dist/sharing/project-merge.d.ts +25 -7
  654. package/dist/sharing/project-merge.js +49 -17
  655. package/dist/sharing/search-both.d.ts +8 -4
  656. package/dist/sharing/search-both.js +19 -12
  657. package/dist/sharing/share.d.ts +8 -4
  658. package/dist/sharing/share.js +39 -15
  659. package/dist/store/ambient.js +9 -5
  660. package/dist/store/audit-event.d.ts +2 -2
  661. package/dist/store/audit-event.js +8 -3
  662. package/dist/store/audit.d.ts +6 -3
  663. package/dist/store/audit.js +16 -6
  664. package/dist/store/auth.d.ts +4 -2
  665. package/dist/store/auth.js +63 -20
  666. package/dist/store/busy.d.ts +9 -0
  667. package/dist/store/busy.js +16 -0
  668. package/dist/store/candidates.d.ts +12 -5
  669. package/dist/store/candidates.js +75 -36
  670. package/dist/store/capture-write.d.ts +2 -1
  671. package/dist/store/capture-write.js +2 -1
  672. package/dist/store/card-detail.d.ts +4 -4
  673. package/dist/store/card-detail.js +15 -8
  674. package/dist/store/cards.d.ts +24 -10
  675. package/dist/store/cards.js +93 -60
  676. package/dist/store/compaction-caller.d.ts +2 -1
  677. package/dist/store/compaction-caller.js +2 -1
  678. package/dist/store/compactions-record.d.ts +14 -8
  679. package/dist/store/compactions-record.js +95 -32
  680. package/dist/store/compactions.js +35 -15
  681. package/dist/store/conflicts.d.ts +9 -4
  682. package/dist/store/conflicts.js +100 -45
  683. package/dist/store/connectors/dlq.d.ts +17 -5
  684. package/dist/store/connectors/dlq.js +56 -5
  685. package/dist/store/connectors/event-log.d.ts +111 -2
  686. package/dist/store/connectors/event-log.js +2 -1
  687. package/dist/store/connectors/github.d.ts +6 -3
  688. package/dist/store/connectors/github.js +24 -40
  689. package/dist/store/connectors/slack.d.ts +2 -1
  690. package/dist/store/connectors/slack.js +25 -37
  691. package/dist/store/dashboard-reads.d.ts +7 -3
  692. package/dist/store/dashboard-reads.js +32 -11
  693. package/dist/store/delete-and-batch.d.ts +17 -11
  694. package/dist/store/delete-and-batch.js +67 -26
  695. package/dist/store/delivery-recorder.d.ts +8 -5
  696. package/dist/store/delivery-recorder.js +70 -32
  697. package/dist/store/descendant-page.d.ts +2 -1
  698. package/dist/store/descendant-page.js +24 -9
  699. package/dist/store/diagnostics.d.ts +2 -1
  700. package/dist/store/diagnostics.js +2 -1
  701. package/dist/store/doctor-reads.d.ts +2 -1
  702. package/dist/store/doctor-reads.js +13 -5
  703. package/dist/store/dormant.d.ts +19 -11
  704. package/dist/store/dormant.js +40 -18
  705. package/dist/store/embeddings/index.d.ts +13 -9
  706. package/dist/store/embeddings/index.js +19 -12
  707. package/dist/store/entry-reads.d.ts +49 -20
  708. package/dist/store/entry-reads.js +181 -66
  709. package/dist/store/entry-row.d.ts +10 -6
  710. package/dist/store/entry-row.js +17 -12
  711. package/dist/store/entry-writes.d.ts +22 -10
  712. package/dist/store/entry-writes.js +41 -14
  713. package/dist/store/failure-log-at.js +1 -1
  714. package/dist/store/failure-log.d.ts +4 -2
  715. package/dist/store/failure-log.js +13 -6
  716. package/dist/store/gated-write.d.ts +3 -3
  717. package/dist/store/gated-write.js +3 -3
  718. package/dist/store/goals.d.ts +5 -4
  719. package/dist/store/goals.js +8 -10
  720. package/dist/store/graph-apply.d.ts +21 -0
  721. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  722. package/dist/store/graph-queue.d.ts +9 -6
  723. package/dist/store/graph-queue.js +15 -10
  724. package/dist/store/graph-reads.d.ts +16 -11
  725. package/dist/store/graph-reads.js +24 -15
  726. package/dist/store/graph-rows.d.ts +41 -3
  727. package/dist/store/graph-rows.js +10 -7
  728. package/dist/store/graph-view-rows.js +14 -7
  729. package/dist/store/graph-writes.d.ts +16 -10
  730. package/dist/store/graph-writes.js +59 -36
  731. package/dist/store/handoffs.d.ts +4 -4
  732. package/dist/store/handoffs.js +40 -19
  733. package/dist/store/index-and-stats.d.ts +2 -2
  734. package/dist/store/index-and-stats.js +6 -5
  735. package/dist/store/index.d.ts +3 -1
  736. package/dist/store/index.js +1 -0
  737. package/dist/store/key-audit.d.ts +2 -1
  738. package/dist/store/key-audit.js +2 -1
  739. package/dist/store/key-writes.d.ts +2 -1
  740. package/dist/store/key-writes.js +9 -2
  741. package/dist/store/ledger-turn.d.ts +4 -1
  742. package/dist/store/ledger-turn.js +7 -2
  743. package/dist/store/mirrors.d.ts +11 -4
  744. package/dist/store/mirrors.js +88 -16
  745. package/dist/store/narrow.d.ts +6 -0
  746. package/dist/store/narrow.js +11 -0
  747. package/dist/store/open.d.ts +4 -2
  748. package/dist/store/open.js +18 -9
  749. package/dist/store/pilot-arm.d.ts +2 -1
  750. package/dist/store/pilot-arm.js +18 -6
  751. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  752. package/dist/store/planning-fallacy-evidence.js +8 -5
  753. package/dist/store/port/agent-import.d.ts +62 -0
  754. package/dist/store/port/agent-import.js +2 -0
  755. package/dist/store/port/consolidation.d.ts +129 -0
  756. package/dist/store/port/consolidation.js +2 -0
  757. package/dist/store/port/learning.d.ts +19 -0
  758. package/dist/store/port/learning.js +2 -0
  759. package/dist/store/port/local-files.d.ts +18 -0
  760. package/dist/store/port/local-files.js +2 -0
  761. package/dist/store/port/promotion.d.ts +20 -0
  762. package/dist/store/port/promotion.js +3 -0
  763. package/dist/store/port-groups.d.ts +160 -0
  764. package/dist/store/port-groups.js +2 -0
  765. package/dist/store/port.d.ts +215 -229
  766. package/dist/store/port.js +3 -9
  767. package/dist/store/predictions.d.ts +14 -10
  768. package/dist/store/predictions.js +37 -17
  769. package/dist/store/project-tags.d.ts +4 -1
  770. package/dist/store/project-tags.js +16 -5
  771. package/dist/store/quality-repair.d.ts +8 -4
  772. package/dist/store/quality-repair.js +53 -20
  773. package/dist/store/quarantine.d.ts +1 -0
  774. package/dist/store/quarantine.js +23 -9
  775. package/dist/store/raw-archive.d.ts +5 -4
  776. package/dist/store/raw-archive.js +11 -10
  777. package/dist/store/recall-trace.d.ts +22 -17
  778. package/dist/store/recall-trace.js +126 -63
  779. package/dist/store/rejected-values.d.ts +15 -10
  780. package/dist/store/rejected-values.js +33 -12
  781. package/dist/store/rejection.d.ts +12 -11
  782. package/dist/store/rejection.js +18 -19
  783. package/dist/store/report-reads.d.ts +2 -1
  784. package/dist/store/report-reads.js +2 -1
  785. package/dist/store/rows.d.ts +7 -5
  786. package/dist/store/rows.js +18 -11
  787. package/dist/store/rule-sql.d.ts +6 -4
  788. package/dist/store/rule-sql.js +16 -9
  789. package/dist/store/search-rows.d.ts +14 -9
  790. package/dist/store/search-rows.js +48 -23
  791. package/dist/store/sessions.d.ts +12 -10
  792. package/dist/store/sessions.js +40 -21
  793. package/dist/store/set-aside.d.ts +2 -2
  794. package/dist/store/set-aside.js +18 -5
  795. package/dist/store/sqlite/agent-import.d.ts +3 -0
  796. package/dist/store/sqlite/agent-import.js +77 -0
  797. package/dist/store/sqlite/cards-group.d.ts +6 -0
  798. package/dist/store/sqlite/cards-group.js +37 -0
  799. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  800. package/dist/store/sqlite/conflicts-group.js +18 -0
  801. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  802. package/dist/store/sqlite/connector-events-group.js +17 -6
  803. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  804. package/dist/store/sqlite/connector-writes-group.js +9 -4
  805. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  806. package/dist/store/sqlite/consolidation-group.js +64 -0
  807. package/dist/store/sqlite/dag-reads-group.js +1 -1
  808. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  809. package/dist/store/sqlite/dormant-group.js +29 -0
  810. package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
  811. package/dist/store/sqlite/entry-writes-group.js +37 -14
  812. package/dist/store/sqlite/error-codec.d.ts +4 -2
  813. package/dist/store/sqlite/error-codec.js +32 -10
  814. package/dist/store/sqlite/executor-counts.js +2 -1
  815. package/dist/store/sqlite/executor.d.ts +8 -3
  816. package/dist/store/sqlite/executor.js +56 -18
  817. package/dist/store/sqlite/global-promote.d.ts +5 -0
  818. package/dist/store/sqlite/global-promote.js +48 -0
  819. package/dist/store/sqlite/goals-group.d.ts +6 -0
  820. package/dist/store/sqlite/goals-group.js +23 -0
  821. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  822. package/dist/store/sqlite/graph-reads-group.js +2 -1
  823. package/dist/store/sqlite/held-connection.d.ts +7 -1
  824. package/dist/store/sqlite/held-connection.js +34 -7
  825. package/dist/store/sqlite/last-recall-group.d.ts +4 -2
  826. package/dist/store/sqlite/last-recall-group.js +9 -4
  827. package/dist/store/sqlite/learning-group.d.ts +4 -0
  828. package/dist/store/sqlite/learning-group.js +17 -0
  829. package/dist/store/sqlite/maintenance-groups.js +2 -1
  830. package/dist/store/sqlite/object-rows.d.ts +6 -3
  831. package/dist/store/sqlite/object-rows.js +34 -5
  832. package/dist/store/sqlite/objects-group.d.ts +5 -4
  833. package/dist/store/sqlite/objects-group.js +84 -33
  834. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  835. package/dist/store/sqlite/predictions-group.js +4 -2
  836. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  837. package/dist/store/sqlite/promotion-group.js +10 -0
  838. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  839. package/dist/store/sqlite/quarantine-group.js +4 -2
  840. package/dist/store/sqlite/reports-group.d.ts +6 -0
  841. package/dist/store/sqlite/reports-group.js +33 -0
  842. package/dist/store/sqlite/request-scope.d.ts +6 -0
  843. package/dist/store/sqlite/request-scope.js +18 -0
  844. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  845. package/dist/store/sqlite/sessions-group.js +46 -0
  846. package/dist/store/sqlite/store.d.ts +22 -11
  847. package/dist/store/sqlite/store.js +84 -11
  848. package/dist/store/sqlite/vector-pack.js +2 -1
  849. package/dist/store/sqlite/vector-reads-group.js +2 -1
  850. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  851. package/dist/store/sqlite/worker-jobs.js +19 -7
  852. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  853. package/dist/store/sqlite/worker-ops.js +6 -3
  854. package/dist/store/sqlite/worker-store.d.ts +4 -3
  855. package/dist/store/sqlite/worker-store.js +24 -14
  856. package/dist/store/summaries.d.ts +19 -12
  857. package/dist/store/summaries.js +36 -21
  858. package/dist/store/summary-dirty.d.ts +2 -1
  859. package/dist/store/summary-dirty.js +2 -1
  860. package/dist/store/tenant.d.ts +3 -2
  861. package/dist/store/tenant.js +5 -4
  862. package/dist/store/token-ledger-rows.js +6 -3
  863. package/dist/store/token-ledger.d.ts +19 -13
  864. package/dist/store/token-ledger.js +27 -14
  865. package/dist/store/tombstone-checks.d.ts +4 -1
  866. package/dist/store/tombstone-checks.js +10 -1
  867. package/dist/store/usage-reports.js +2 -1
  868. package/dist/store/vector-index.d.ts +8 -5
  869. package/dist/store/vector-index.js +24 -10
  870. package/dist/store/working-memory.d.ts +6 -4
  871. package/dist/store/working-memory.js +14 -9
  872. package/dist/support-bundle.js +10 -5
  873. package/dist/trust/quarantine.d.ts +1 -2
  874. package/dist/trust/quarantine.js +1 -5
  875. package/dist/trust/reject-flow.d.ts +12 -3
  876. package/dist/trust/reject-flow.js +12 -4
  877. package/dist/util/anthropic-messages.d.ts +4 -1
  878. package/dist/util/anthropic-messages.js +14 -5
  879. package/dist/util/atomic-write.d.ts +4 -2
  880. package/dist/util/atomic-write.js +25 -14
  881. package/dist/util/compaction-items.d.ts +4 -1
  882. package/dist/util/compaction-items.js +8 -2
  883. package/dist/util/crash-handlers.d.ts +7 -2
  884. package/dist/util/crash-handlers.js +13 -4
  885. package/dist/util/env.d.ts +16 -4
  886. package/dist/util/env.js +78 -25
  887. package/dist/util/home-path.js +12 -6
  888. package/dist/util/hook-payload.d.ts +3 -1
  889. package/dist/util/hook-payload.js +3 -1
  890. package/dist/util/http-retry.d.ts +12 -6
  891. package/dist/util/http-retry.js +16 -6
  892. package/dist/util/http-util.d.ts +20 -5
  893. package/dist/util/http-util.js +28 -9
  894. package/dist/util/json.d.ts +4 -1
  895. package/dist/util/json.js +4 -1
  896. package/dist/util/keyset.js +2 -1
  897. package/dist/util/limits.js +4 -2
  898. package/dist/util/log.d.ts +13 -5
  899. package/dist/util/log.js +29 -6
  900. package/dist/util/net.d.ts +5 -0
  901. package/dist/util/net.js +19 -0
  902. package/dist/util/real-path.d.ts +2 -1
  903. package/dist/util/real-path.js +4 -3
  904. package/dist/util/request-scope.d.ts +11 -3
  905. package/dist/util/request-scope.js +13 -4
  906. package/dist/util/same-text.d.ts +10 -3
  907. package/dist/util/same-text.js +10 -3
  908. package/dist/util/secret-detect.d.ts +24 -7
  909. package/dist/util/secret-detect.js +49 -14
  910. package/dist/util/spawn-argv.d.ts +3 -1
  911. package/dist/util/spawn-argv.js +13 -4
  912. package/dist/util/sqlite-blocked.d.ts +15 -4
  913. package/dist/util/sqlite-blocked.js +19 -6
  914. package/dist/util/stored-json.d.ts +4 -1
  915. package/dist/util/stored-json.js +6 -2
  916. package/dist/util/stream-tee.d.ts +2 -1
  917. package/dist/util/stream-tee.js +8 -5
  918. package/dist/util/transcript-tail.d.ts +4 -1
  919. package/dist/util/transcript-tail.js +4 -1
  920. package/dist/util/version.d.ts +8 -3
  921. package/dist/util/version.js +8 -3
  922. package/dist/util/write-budget.d.ts +7 -2
  923. package/dist/util/write-budget.js +5 -2
  924. package/dist/util/yaml.d.ts +4 -1
  925. package/dist/util/yaml.js +4 -1
  926. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  927. package/extensions/openclaw-plugin/package.json +1 -1
  928. package/openclaw.plugin.json +1 -1
  929. package/package.json +2 -1
  930. package/scripts/postinstall.cjs +3 -1
  931. package/dist/api/cards.d.ts +0 -42
  932. package/dist/api/conflicts.d.ts +0 -28
  933. package/dist/api/conflicts.js +0 -61
  934. package/dist/api/dormant.d.ts +0 -14
  935. package/dist/api/dormant.js +0 -58
  936. package/dist/api/goals.d.ts +0 -18
  937. package/dist/api/graph.d.ts +0 -8
  938. package/dist/api/graph.js +0 -8
  939. package/dist/api/learn.js +0 -125
  940. package/dist/api/memories.d.ts +0 -25
  941. package/dist/api/objects.d.ts +0 -9
  942. package/dist/api/outcome.d.ts +0 -19
  943. package/dist/api/predictions.d.ts +0 -11
  944. package/dist/api/promote.d.ts +0 -36
  945. package/dist/api/recall-core.d.ts +0 -4
  946. package/dist/api/recall-core.js +0 -125
  947. package/dist/api/recall-finish.d.ts +0 -53
  948. package/dist/api/recall-finish.js +0 -30
  949. package/dist/api/recall-history.d.ts +0 -64
  950. package/dist/api/recall-history.js +0 -159
  951. package/dist/api/recall-record.d.ts +0 -43
  952. package/dist/api/recall-record.js +0 -78
  953. package/dist/api/recall-request.js +0 -121
  954. package/dist/api/recall.d.ts +0 -6
  955. package/dist/api/refine.d.ts +0 -7
  956. package/dist/api/refine.js +0 -10
  957. package/dist/api/session-owners.d.ts +0 -4
  958. package/dist/api/session-owners.js +0 -17
  959. package/dist/api/sleep-run.d.ts +0 -26
  960. package/dist/api/sleep.js +0 -11
  961. package/dist/graph/write.d.ts +0 -14
  962. package/dist/store/sqlite/busy.d.ts +0 -3
  963. package/dist/store/sqlite/busy.js +0 -8
  964. package/dist/store/sqlite/local.d.ts +0 -4
  965. package/dist/store/sqlite/local.js +0 -8
@@ -4,19 +4,22 @@ import { jaccardMinShared, overlapPartners } from './overlap-index.js';
4
4
  import { compareEntryIdentity } from '../core/compare.js';
5
5
  import { duplicateKey, mergedText } from '../util/same-text.js';
6
6
  import { successorAfterRetirement } from '../core/merged-row.js';
7
- import { rejectionDigest } from '../store/rejection.js';
8
- import { reportAuditWriteFailure } from '../store/audit.js';
7
+ import { rejectionDigest } from '../core/rejection-digest.js';
9
8
  import { derivationScope, derivationPartitionKey } from '../core/recall-scope.js';
10
9
  import { jaccardSets } from './conflicts.js';
11
10
  import { keptAsWritten } from './run.js';
12
11
  import { isReusable } from '../core/memory-quality.js';
13
12
  const MERGE_OVERLAP_THRESHOLD = 0.35; // Jaccard similarity for "related"
14
13
  const MERGE_MIN_CLUSTER = 2; // minimum cluster size to merge
15
- const MERGE_MAX_SOURCES = 5; // with MERGE_MAX_CHARS, keeps a merged row near 500 tokens, a third of the 1,500-token context budget
14
+ // with MERGE_MAX_CHARS, keeps a merged row near 500 tokens, a third of the 1,500-token context budget
15
+ const MERGE_MAX_SOURCES = 5;
16
16
  const MERGE_MAX_CHARS = 2000; // total source text; sources past either cap stay unmerged and keep their half-life
17
- // Half-life scale for merged source episodics. Demote via half_life_days: calculateStrength() recomputes live strength and never reads the stored field,
17
+ // Half-life scale for merged source episodics. Demote via half_life_days: calculateStrength() recomputes live strength
18
+ // and never reads the stored field,
18
19
  // so a stored-strength write is inert for ranking and overwritten by the next decay pass.
19
20
  const MERGE_SOURCE_HALF_LIFE_FACTOR = 0.3;
21
+ // deriveHalfLife grants its high-fit bonus only above 0.7, so a rollup at 0.7 gets none.
22
+ const MERGED_SCHEMA_FIT = 0.7;
20
23
  export function retireHeldTexts(run) {
21
24
  const { survivors } = run;
22
25
  const byId = new Map(run.all.map((e) => [e.id, e]));
@@ -118,8 +121,10 @@ function mergeCluster(run, partition, cluster, related, used) {
118
121
  run.pendingWrites.push(semantic);
119
122
  run.units.push([semantic.id, ...cluster.map((e) => e.id)]);
120
123
  result.semanticCreated++;
121
- // Scale half_life_days so merged sources decay sooner but stay recoverable; ranking is unchanged on purpose (demoting children regresses QA).
122
- // Mutate in place: `cluster` shares references with `survivors`, and the later detectConflicts(survivors) must see the post-demotion half-life.
124
+ // Scale half_life_days so merged sources decay sooner but stay recoverable; ranking is unchanged on purpose
125
+ // (demoting children regresses QA).
126
+ // Mutate in place: `cluster` shares references with `survivors`, and the later detectConflicts(survivors) must see
127
+ // the post-demotion half-life.
123
128
  demoteMergedSources(run, cluster);
124
129
  }
125
130
  return true;
@@ -131,8 +136,8 @@ function semanticSummary(mergedContent, cluster, partition, baseHalfLifeDays) {
131
136
  ...createMemory(mergedContent, {
132
137
  layer: Layer.Semantic,
133
138
  tags: allTags,
134
- emotional_valence: maxValence,
135
- schema_fit: 0.7,
139
+ emotionalValence: maxValence,
140
+ schemaFit: MERGED_SCHEMA_FIT,
136
141
  source: 'consolidation',
137
142
  confidence: 'inferred',
138
143
  tenantId: partition.tenantId,
@@ -150,43 +155,45 @@ function demoteMergedSources(run, cluster) {
150
155
  run.pendingWrites.push(e);
151
156
  }
152
157
  }
153
- // mergeContents is deterministic, so a rollup a human already rejected would regenerate each cycle and batchWriteAndDelete's guard bypass would re-assert it;
154
- // this producer-side check makes that bypass safe. A hit skips the whole cluster (no demote, no delete) so a later sleep can retry.
158
+ // mergeContents is deterministic, so a rollup a human already rejected would regenerate each cycle and
159
+ // batchWriteAndDelete's guard bypass would re-assert it;
160
+ // this producer-side check makes that bypass safe. A hit skips the whole cluster (no demote, no delete) so a later
161
+ // sleep can retry.
155
162
  function mergeRejected(run, semantic, cluster, related, used) {
156
163
  const { tombstones } = run;
157
164
  const newDigest = rejectionDigest(semantic.content);
158
- const oldDigest = rejectionDigest(legacyMergeContents(related)); // tombstones from older releases hold this format's digest
165
+ // tombstones from older releases hold this format's digest
166
+ const oldDigest = rejectionDigest(legacyMergeContents(related));
159
167
  const newHit = tombstones.find(semantic.tenant_id, newDigest);
160
168
  const tombstone = newHit ?? tombstones.find(semantic.tenant_id, oldDigest);
161
169
  const mergeDigest = newHit ? newDigest : oldDigest;
162
170
  if (!tombstone)
163
171
  return false;
164
- // Still mark used: these members are not re-tried against a different cluster in this pass; the next sleep re-clusters them fresh.
165
- const rejected = newHit ? cluster : related; // the old format digested the uncapped list, so rows past the cap were rejected too
172
+ // Still mark used: these members are not re-tried against a different cluster in this pass; the next sleep
173
+ // re-clusters them fresh.
174
+ // the old format digested the uncapped list, so rows past the cap were rejected too
175
+ const rejected = newHit ? cluster : related;
166
176
  for (const e of rejected)
167
177
  used.add(e.id);
168
- try {
169
- tombstones.audit({
170
- tenantId: semantic.tenant_id,
171
- actor: 'sleep',
172
- op: 'reject_refusal',
173
- metadata: {
174
- digest: mergeDigest,
175
- reason: tombstone.reason,
176
- sourceIds: rejected.map((e) => e.id),
177
- },
178
- });
179
- }
180
- catch (error) {
181
- reportAuditWriteFailure('reject_refusal', String(error));
182
- }
178
+ tombstones.auditOrCount({
179
+ tenantId: semantic.tenant_id,
180
+ actor: 'sleep',
181
+ op: 'reject_refusal',
182
+ metadata: {
183
+ digest: mergeDigest,
184
+ reason: tombstone.reason,
185
+ sourceIds: rejected.map((e) => e.id),
186
+ },
187
+ });
183
188
  return true;
184
189
  }
185
190
  // Helpers
186
191
  function mergeContents(entries) {
187
- // Each distinct text goes in once and in full (the merge demotes every source), one bullet with its lines indented, so heldTextKeys can read it back.
188
- // Newest first says which version is current; compareEntryIdentity settles ties, so the row and its rejection digest depend only on the sources.
189
- const sorted = [...entries].sort((a, b) => (Date.parse(b.created) - Date.parse(a.created)) || compareEntryIdentity(a, b));
192
+ // Each distinct text goes in once and in full (the merge demotes every source), one bullet with its lines indented,
193
+ // so heldTextKeys can read it back.
194
+ // Newest first says which version is current; compareEntryIdentity settles ties, so the row and its rejection digest
195
+ // depend only on the sources.
196
+ const sorted = [...entries].sort((a, b) => Date.parse(b.created) - Date.parse(a.created) || compareEntryIdentity(a, b));
190
197
  const texts = new Map();
191
198
  for (const e of sorted) {
192
199
  if (!texts.has(duplicateKey(e.content)))
@@ -213,7 +220,10 @@ function pickStrongestValence(entries) {
213
220
  }
214
221
  return 'neutral';
215
222
  }
216
- /** Maps i to each j > i, ascending, whose text overlap with i reaches the merge threshold; every text needs at least one token. */
223
+ /**
224
+ * Maps i to each j > i, ascending, whose text overlap with i reaches the merge threshold; every text needs at least one
225
+ * token.
226
+ */
217
227
  export function mergePartners(contents) {
218
228
  const sets = contents.map((text) => new Set(tokenize(text)));
219
229
  const candidatesOf = overlapPartners(sets, jaccardMinShared(MERGE_OVERLAP_THRESHOLD));
@@ -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,38 +122,41 @@ 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) => {
@@ -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}`);