hippo-memory 1.69.0 → 1.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1014) hide show
  1. package/README.md +5 -2
  2. package/dist/agent-memories/apply.d.ts +3 -3
  3. package/dist/agent-memories/apply.js +16 -31
  4. package/dist/agent-memories/claude-code.d.ts +5 -5
  5. package/dist/agent-memories/claude-code.js +25 -12
  6. package/dist/agent-memories/copilot.js +3 -2
  7. package/dist/agent-memories/files.js +26 -14
  8. package/dist/agent-memories/gemini.js +6 -5
  9. package/dist/agent-memories/keys.js +3 -2
  10. package/dist/agent-memories/legacy.d.ts +2 -2
  11. package/dist/agent-memories/legacy.js +2 -2
  12. package/dist/agent-memories/markdown.d.ts +1 -3
  13. package/dist/agent-memories/markdown.js +1 -3
  14. package/dist/agent-memories/report.d.ts +1 -1
  15. package/dist/agent-memories/report.js +3 -2
  16. package/dist/agent-memories/source.d.ts +1 -1
  17. package/dist/agent-memories/source.js +6 -5
  18. package/dist/agent-memories/sync.d.ts +5 -3
  19. package/dist/agent-memories/sync.js +34 -38
  20. package/dist/agent-memories/types.d.ts +1 -1
  21. package/dist/api/assemble.d.ts +9 -46
  22. package/dist/api/assemble.js +44 -54
  23. package/dist/api/audit.d.ts +8 -7
  24. package/dist/api/audit.js +15 -21
  25. package/dist/api/auth.d.ts +17 -39
  26. package/dist/api/auth.js +76 -216
  27. package/dist/api/auto-sleep.d.ts +13 -0
  28. package/dist/api/auto-sleep.js +32 -0
  29. package/dist/{availability.d.ts → api/availability.d.ts} +4 -17
  30. package/dist/{availability.js → api/availability.js} +14 -44
  31. package/dist/{context-auto.js → api/context-auto.js} +2 -1
  32. package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
  33. package/dist/{context-render.js → api/context-render.js} +7 -6
  34. package/dist/api/context-select.d.ts +5 -5
  35. package/dist/api/context-select.js +39 -48
  36. package/dist/api/context-types.d.ts +15 -40
  37. package/dist/api/context.d.ts +7 -26
  38. package/dist/api/context.js +67 -97
  39. package/dist/api/dormant.d.ts +7 -23
  40. package/dist/api/dormant.js +40 -128
  41. package/dist/api/drill-down.d.ts +9 -48
  42. package/dist/api/drill-down.js +41 -90
  43. package/dist/api/forget.d.ts +5 -33
  44. package/dist/api/forget.js +17 -73
  45. package/dist/api/goals.d.ts +1 -1
  46. package/dist/api/goals.js +2 -2
  47. package/dist/api/graph.d.ts +8 -0
  48. package/dist/api/graph.js +7 -0
  49. package/dist/api/index.d.ts +28 -0
  50. package/dist/api/index.js +31 -0
  51. package/dist/api/instruction-detect.js +85 -0
  52. package/dist/api/learn.js +63 -55
  53. package/dist/api/ledger-db.d.ts +21 -0
  54. package/dist/api/ledger-db.js +81 -0
  55. package/dist/api/memories.d.ts +5 -0
  56. package/dist/api/memories.js +7 -0
  57. package/dist/api/objects.d.ts +9 -0
  58. package/dist/api/objects.js +11 -0
  59. package/dist/api/on-store.d.ts +16 -0
  60. package/dist/api/on-store.js +38 -0
  61. package/dist/api/outcome.d.ts +5 -42
  62. package/dist/api/outcome.js +15 -80
  63. package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
  64. package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
  65. package/dist/api/predictions.d.ts +9 -0
  66. package/dist/api/predictions.js +18 -0
  67. package/dist/api/promote.d.ts +16 -31
  68. package/dist/api/promote.js +38 -123
  69. package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
  70. package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
  71. package/dist/api/quarantine.d.ts +5 -5
  72. package/dist/api/quarantine.js +30 -106
  73. package/dist/api/recall-cli.d.ts +55 -0
  74. package/dist/api/recall-cli.js +94 -0
  75. package/dist/api/recall-core.d.ts +4 -0
  76. package/dist/api/recall-core.js +120 -0
  77. package/dist/api/recall-finish.d.ts +53 -0
  78. package/dist/api/recall-finish.js +30 -0
  79. package/dist/api/recall-history.d.ts +64 -0
  80. package/dist/api/recall-history.js +159 -0
  81. package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
  82. package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
  83. package/dist/api/recall-record.d.ts +10 -13
  84. package/dist/api/recall-record.js +10 -30
  85. package/dist/api/recall-request.d.ts +2 -2
  86. package/dist/api/recall-request.js +3 -3
  87. package/dist/api/recall-types.d.ts +101 -316
  88. package/dist/api/recall.d.ts +5 -33
  89. package/dist/api/recall.js +92 -91
  90. package/dist/api/refine.d.ts +7 -0
  91. package/dist/api/refine.js +10 -0
  92. package/dist/api/remember-local.d.ts +57 -0
  93. package/dist/api/remember-local.js +90 -0
  94. package/dist/api/remember.d.ts +27 -12
  95. package/dist/api/remember.js +42 -46
  96. package/dist/api/session-owners.d.ts +4 -0
  97. package/dist/api/session-owners.js +17 -0
  98. package/dist/api/sleep-run.d.ts +7 -9
  99. package/dist/api/sleep-run.js +78 -94
  100. package/dist/api/sleep.d.ts +10 -29
  101. package/dist/api/tokens.d.ts +5 -12
  102. package/dist/api/tokens.js +12 -31
  103. package/dist/api/types.d.ts +8 -31
  104. package/dist/api/types.js +5 -23
  105. package/dist/capture/caller-session.d.ts +2 -2
  106. package/dist/capture/caller-session.js +8 -8
  107. package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
  108. package/dist/{capture-error.js → capture/capture-error.js} +7 -7
  109. package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
  110. package/dist/capture/command.d.ts +5 -13
  111. package/dist/capture/command.js +57 -60
  112. package/dist/capture/compact-resume-caller.d.ts +1 -1
  113. package/dist/capture/compact-resume-caller.js +7 -7
  114. package/dist/capture/compact.d.ts +8 -16
  115. package/dist/capture/compact.js +56 -47
  116. package/dist/capture/compaction-items-caller.d.ts +1 -1
  117. package/dist/capture/compaction-items-caller.js +7 -5
  118. package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
  119. package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
  120. package/dist/{compaction-record.js → capture/compaction-record.js} +143 -157
  121. package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
  122. package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
  123. package/dist/capture/copilot-transcript.js +1 -1
  124. package/dist/capture/extract.js +2 -2
  125. package/dist/capture/failure-caller.d.ts +2 -2
  126. package/dist/capture/failure-caller.js +6 -6
  127. package/dist/capture/failure-reading.d.ts +2 -5
  128. package/dist/capture/failure-reading.js +11 -12
  129. package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
  130. package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
  131. package/dist/capture/pre-compact-caller.d.ts +1 -1
  132. package/dist/capture/pre-compact-caller.js +2 -2
  133. package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +2 -6
  134. package/dist/{session-digest.js → capture/session-digest.js} +29 -29
  135. package/dist/capture/session-end-caller.d.ts +2 -2
  136. package/dist/capture/session-end-caller.js +1 -1
  137. package/dist/capture/session-texts.d.ts +1 -1
  138. package/dist/capture/session-texts.js +5 -5
  139. package/dist/capture/session-worker.js +6 -4
  140. package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
  141. package/dist/capture/transcript.d.ts +2 -10
  142. package/dist/capture/transcript.js +72 -92
  143. package/dist/capture/working-state.d.ts +0 -3
  144. package/dist/capture/working-state.js +7 -7
  145. package/dist/cli/api-context.d.ts +3 -0
  146. package/dist/cli/api-context.js +6 -0
  147. package/dist/cli/audit-prune.d.ts +28 -0
  148. package/dist/cli/audit-prune.js +40 -0
  149. package/dist/cli/audit.d.ts +2 -2
  150. package/dist/cli/audit.js +92 -88
  151. package/dist/cli/auth.d.ts +2 -1
  152. package/dist/cli/auth.js +69 -53
  153. package/dist/cli/briefs.d.ts +4 -3
  154. package/dist/cli/briefs.js +76 -202
  155. package/dist/cli/card.d.ts +2 -1
  156. package/dist/cli/card.js +55 -54
  157. package/dist/cli/client.d.ts +28 -0
  158. package/dist/{client.js → cli/client.js} +25 -44
  159. package/dist/cli/compact-resume-payload.d.ts +8 -0
  160. package/dist/cli/compact-resume-payload.js +40 -0
  161. package/dist/cli/context.d.ts +1 -13
  162. package/dist/cli/context.js +51 -77
  163. package/dist/cli/continuity.d.ts +6 -5
  164. package/dist/cli/continuity.js +153 -145
  165. package/dist/cli/correction-latency.d.ts +24 -0
  166. package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
  167. package/dist/cli/curate.d.ts +13 -17
  168. package/dist/cli/curate.js +226 -222
  169. package/dist/cli/dag.d.ts +4 -4
  170. package/dist/cli/dag.js +70 -52
  171. package/dist/cli/decisions.d.ts +4 -3
  172. package/dist/cli/decisions.js +129 -253
  173. package/dist/cli/eval.d.ts +1 -3
  174. package/dist/cli/eval.js +56 -42
  175. package/dist/cli/exit.d.ts +6 -0
  176. package/dist/cli/exit.js +11 -0
  177. package/dist/cli/explain.d.ts +1 -2
  178. package/dist/cli/explain.js +39 -21
  179. package/dist/cli/flag-values.d.ts +30 -0
  180. package/dist/cli/flag-values.js +120 -0
  181. package/dist/cli/flags.d.ts +304 -0
  182. package/dist/cli/flags.js +169 -0
  183. package/dist/cli/github.d.ts +14 -0
  184. package/dist/cli/github.js +184 -0
  185. package/dist/cli/goals.d.ts +2 -1
  186. package/dist/cli/goals.js +76 -75
  187. package/dist/cli/hook-runtime.d.ts +31 -0
  188. package/dist/cli/hook-runtime.js +139 -0
  189. package/dist/cli/init.d.ts +2 -1
  190. package/dist/cli/init.js +153 -126
  191. package/dist/cli/install-steps.d.ts +7 -0
  192. package/dist/cli/install-steps.js +101 -0
  193. package/dist/cli/last-sleep.d.ts +3 -1
  194. package/dist/cli/last-sleep.js +12 -7
  195. package/dist/cli/maintenance.d.ts +5 -4
  196. package/dist/cli/maintenance.js +41 -42
  197. package/dist/cli/object-verbs.d.ts +40 -0
  198. package/dist/cli/object-verbs.js +66 -0
  199. package/dist/cli/owner-validation.d.ts +18 -0
  200. package/dist/cli/owner-validation.js +33 -0
  201. package/dist/cli/playbooks.d.ts +4 -3
  202. package/dist/cli/playbooks.js +98 -306
  203. package/dist/cli/print.d.ts +15 -0
  204. package/dist/cli/print.js +82 -0
  205. package/dist/cli/projects.d.ts +2 -3
  206. package/dist/cli/projects.js +56 -51
  207. package/dist/cli/provenance-coverage.d.ts +14 -0
  208. package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
  209. package/dist/cli/quality-repair-once.js +4 -4
  210. package/dist/cli/recall.d.ts +2 -6
  211. package/dist/cli/recall.js +128 -253
  212. package/dist/cli/refine-llm.d.ts +35 -0
  213. package/dist/cli/refine-llm.js +128 -0
  214. package/dist/cli/remember.d.ts +4 -6
  215. package/dist/cli/remember.js +193 -230
  216. package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
  217. package/dist/{scheduler.js → cli/scheduler.js} +22 -22
  218. package/dist/cli/serve.d.ts +1 -1
  219. package/dist/cli/serve.js +46 -7
  220. package/dist/cli/session-hooks.d.ts +11 -19
  221. package/dist/cli/session-hooks.js +263 -258
  222. package/dist/cli/setup.d.ts +4 -3
  223. package/dist/cli/setup.js +55 -37
  224. package/dist/cli/shared.d.ts +14 -118
  225. package/dist/cli/shared.js +26 -400
  226. package/dist/cli/slack.d.ts +2 -1
  227. package/dist/cli/slack.js +46 -74
  228. package/dist/cli/sleep-render.d.ts +4 -0
  229. package/dist/cli/sleep-render.js +61 -0
  230. package/dist/cli/sleep.d.ts +3 -8
  231. package/dist/cli/sleep.js +34 -91
  232. package/dist/cli/status.d.ts +9 -12
  233. package/dist/cli/status.js +86 -131
  234. package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
  235. package/dist/{stdin.js → cli/stdin.js} +8 -9
  236. package/dist/cli/transfer.d.ts +9 -9
  237. package/dist/cli/transfer.js +125 -122
  238. package/dist/cli/usage.js +13 -5
  239. package/dist/cli.d.ts +69 -167
  240. package/dist/cli.js +187 -296
  241. package/dist/connectors/dlq.d.ts +44 -0
  242. package/dist/connectors/dlq.js +30 -0
  243. package/dist/connectors/github/backfill.d.ts +6 -26
  244. package/dist/connectors/github/backfill.js +42 -114
  245. package/dist/connectors/github/deletion.d.ts +6 -21
  246. package/dist/connectors/github/deletion.js +17 -64
  247. package/dist/connectors/github/dlq.d.ts +12 -91
  248. package/dist/connectors/github/dlq.js +23 -140
  249. package/dist/connectors/github/ingest.d.ts +4 -37
  250. package/dist/connectors/github/ingest.js +24 -93
  251. package/dist/connectors/github/octokit-client.d.ts +5 -17
  252. package/dist/connectors/github/octokit-client.js +29 -25
  253. package/dist/connectors/github/ratelimit.d.ts +3 -14
  254. package/dist/connectors/github/ratelimit.js +3 -14
  255. package/dist/connectors/github/scope.d.ts +3 -5
  256. package/dist/connectors/github/scope.js +3 -5
  257. package/dist/connectors/github/signature.d.ts +4 -26
  258. package/dist/connectors/github/signature.js +4 -26
  259. package/dist/connectors/github/tenant-routing.d.ts +4 -26
  260. package/dist/connectors/github/tenant-routing.js +13 -61
  261. package/dist/connectors/github/transform.d.ts +1 -1
  262. package/dist/connectors/github/transform.js +2 -16
  263. package/dist/connectors/github/types.d.ts +4 -16
  264. package/dist/connectors/github/types.js +17 -27
  265. package/dist/connectors/github/webhook.d.ts +5 -18
  266. package/dist/connectors/github/webhook.js +86 -105
  267. package/dist/connectors/slack/backfill.d.ts +5 -18
  268. package/dist/connectors/slack/backfill.js +9 -42
  269. package/dist/connectors/slack/deletion.d.ts +4 -7
  270. package/dist/connectors/slack/deletion.js +20 -49
  271. package/dist/connectors/slack/dlq.d.ts +9 -68
  272. package/dist/connectors/slack/dlq.js +26 -136
  273. package/dist/connectors/slack/ingest.d.ts +4 -18
  274. package/dist/connectors/slack/ingest.js +26 -91
  275. package/dist/connectors/slack/scope.d.ts +2 -8
  276. package/dist/connectors/slack/scope.js +2 -8
  277. package/dist/connectors/slack/signature.d.ts +1 -6
  278. package/dist/connectors/slack/signature.js +2 -1
  279. package/dist/connectors/slack/tenant-routing.d.ts +4 -18
  280. package/dist/connectors/slack/tenant-routing.js +11 -31
  281. package/dist/connectors/slack/transform.d.ts +3 -19
  282. package/dist/connectors/slack/transform.js +2 -18
  283. package/dist/connectors/slack/types.d.ts +4 -10
  284. package/dist/connectors/slack/types.js +5 -16
  285. package/dist/connectors/slack/web-client.js +34 -28
  286. package/dist/connectors/slack/webhook.d.ts +5 -21
  287. package/dist/connectors/slack/webhook.js +80 -108
  288. package/dist/connectors/slack/workspaces.d.ts +8 -41
  289. package/dist/connectors/slack/workspaces.js +8 -58
  290. package/dist/consolidate/conflicts.d.ts +1 -1
  291. package/dist/consolidate/conflicts.js +10 -18
  292. package/dist/consolidate/dag-summary.d.ts +8 -0
  293. package/dist/consolidate/dag-summary.js +41 -0
  294. package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
  295. package/dist/{dag.js → consolidate/dag.js} +49 -131
  296. package/dist/consolidate/decay.d.ts +2 -2
  297. package/dist/consolidate/decay.js +35 -41
  298. package/dist/consolidate/dedupe.d.ts +29 -0
  299. package/dist/consolidate/dedupe.js +103 -0
  300. package/dist/consolidate/flush-units.d.ts +5 -6
  301. package/dist/consolidate/flush-units.js +3 -3
  302. package/dist/consolidate/half-life-migration.d.ts +34 -0
  303. package/dist/consolidate/half-life-migration.js +89 -0
  304. package/dist/consolidate/llm-passes.js +12 -29
  305. package/dist/consolidate/memory-value-weights.d.ts +8 -0
  306. package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
  307. package/dist/consolidate/memory-value.d.ts +45 -0
  308. package/dist/consolidate/memory-value.js +164 -0
  309. package/dist/consolidate/merge.js +65 -83
  310. package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
  311. package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
  312. package/dist/consolidate/physics-pass.js +46 -48
  313. package/dist/consolidate/replay.d.ts +9 -0
  314. package/dist/consolidate/replay.js +84 -0
  315. package/dist/consolidate/run.d.ts +7 -13
  316. package/dist/consolidate/run.js +6 -37
  317. package/dist/consolidate/sleep.d.ts +2 -9
  318. package/dist/consolidate/sleep.js +69 -151
  319. package/dist/consolidate/trace.d.ts +19 -0
  320. package/dist/{trace.js → consolidate/trace.js} +7 -24
  321. package/dist/consolidate/traces.js +40 -51
  322. package/dist/core/ablation.d.ts +15 -0
  323. package/dist/core/ablation.js +49 -0
  324. package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
  325. package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
  326. package/dist/{ambient.d.ts → core/ambient.d.ts} +1 -8
  327. package/dist/{ambient.js → core/ambient.js} +13 -18
  328. package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
  329. package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
  330. package/dist/{card.d.ts → core/card.d.ts} +4 -1
  331. package/dist/{card.js → core/card.js} +8 -0
  332. package/dist/core/compare.d.ts +32 -0
  333. package/dist/core/compare.js +70 -0
  334. package/dist/{config.d.ts → core/config.d.ts} +14 -28
  335. package/dist/{config.js → core/config.js} +101 -75
  336. package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
  337. package/dist/core/handoff.js +81 -0
  338. package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
  339. package/dist/core/memory.d.ts +183 -0
  340. package/dist/core/memory.js +380 -0
  341. package/dist/core/package-root.d.ts +3 -0
  342. package/dist/core/package-root.js +5 -0
  343. package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
  344. package/dist/{physics-config.js → core/physics-config.js} +3 -8
  345. package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
  346. package/dist/{physics.js → core/physics.js} +60 -122
  347. package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
  348. package/dist/{project-identity.js → core/project-identity.js} +22 -55
  349. package/dist/{project-remote.js → core/project-remote.js} +17 -6
  350. package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
  351. package/dist/core/raw-append-only.d.ts +5 -0
  352. package/dist/core/raw-append-only.js +7 -0
  353. package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
  354. package/dist/{salience.js → core/salience.js} +36 -27
  355. package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
  356. package/dist/{search/types.js → core/search-types.js} +1 -1
  357. package/dist/core/session-digest-row.d.ts +5 -0
  358. package/dist/core/session-digest-row.js +6 -0
  359. package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
  360. package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +7 -7
  361. package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
  362. package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
  363. package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +11 -10
  364. package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
  365. package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
  366. package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
  367. package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
  368. package/dist/db/backup.js +1 -1
  369. package/dist/db/busy.d.ts +19 -2
  370. package/dist/db/busy.js +88 -14
  371. package/dist/db/connect.d.ts +11 -2
  372. package/dist/db/connect.js +43 -10
  373. package/dist/db/index.d.ts +9 -0
  374. package/dist/db/index.js +8 -0
  375. package/dist/db/meta.d.ts +4 -0
  376. package/dist/db/meta.js +11 -1
  377. package/dist/db/migrate.d.ts +8 -1
  378. package/dist/db/migrate.js +28 -33
  379. package/dist/db/migrations/types.d.ts +2 -5
  380. package/dist/db/migrations/v08.js +1 -1
  381. package/dist/db/migrations/v14.js +39 -36
  382. package/dist/db/migrations/v15.js +2 -8
  383. package/dist/db/migrations/v16.js +31 -29
  384. package/dist/db/migrations/v17.js +2 -3
  385. package/dist/db/migrations/v18.js +6 -5
  386. package/dist/db/migrations/v19.js +2 -5
  387. package/dist/db/migrations/v20.js +5 -8
  388. package/dist/db/migrations/v22.js +28 -38
  389. package/dist/db/migrations/v23.js +3 -14
  390. package/dist/db/migrations/v24.js +25 -22
  391. package/dist/db/migrations/v25.js +3 -8
  392. package/dist/db/migrations/v26.js +2 -13
  393. package/dist/db/migrations/v27.js +3 -11
  394. package/dist/db/migrations/v28.js +2 -14
  395. package/dist/db/migrations/v29.js +23 -32
  396. package/dist/db/migrations/v30.js +4 -16
  397. package/dist/db/migrations/v31.js +23 -31
  398. package/dist/db/migrations/v32.js +4 -22
  399. package/dist/db/migrations/v33.js +2 -15
  400. package/dist/db/migrations/v34.js +2 -11
  401. package/dist/db/migrations/v35.js +2 -11
  402. package/dist/db/migrations/v36.js +2 -11
  403. package/dist/db/migrations/v37.js +8 -33
  404. package/dist/db/migrations/v38.js +5 -38
  405. package/dist/db/migrations/v39.js +10 -21
  406. package/dist/db/migrations/v40.js +8 -14
  407. package/dist/db/migrations/v41.js +2 -24
  408. package/dist/db/migrations/v43.js +7 -6
  409. package/dist/db/migrations/v44.js +2 -8
  410. package/dist/db/migrations/v45.js +2 -7
  411. package/dist/db/migrations/v46.js +1 -1
  412. package/dist/db/migrations/v47.js +2 -3
  413. package/dist/db/migrations/v48.js +1 -1
  414. package/dist/db/migrations/v49.js +1 -1
  415. package/dist/db/migrations/v50.js +8 -7
  416. package/dist/db/migrations/v51.js +1 -1
  417. package/dist/db/migrations/v52.js +1 -1
  418. package/dist/db/open.d.ts +11 -1
  419. package/dist/db/open.js +37 -4
  420. package/dist/db/physics-state.d.ts +23 -0
  421. package/dist/{physics-state.js → db/physics-state.js} +34 -52
  422. package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
  423. package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
  424. package/dist/db/request-stores.d.ts +15 -2
  425. package/dist/db/request-stores.js +37 -15
  426. package/dist/db/tables.d.ts +2 -0
  427. package/dist/db/tables.js +6 -0
  428. package/dist/{vector-store.d.ts → db/vector-store.d.ts} +6 -2
  429. package/dist/{vector-store.js → db/vector-store.js} +83 -51
  430. package/dist/db/wal-checkpointer.d.ts +11 -0
  431. package/dist/db/wal-checkpointer.js +92 -0
  432. package/dist/doctor.js +176 -152
  433. package/dist/entry/json-hooks.d.ts +1 -1
  434. package/dist/entry/json-hooks.js +1 -1
  435. package/dist/entry/project-identity.d.ts +1 -1
  436. package/dist/entry/project-identity.js +1 -1
  437. package/dist/entry/session-text.d.ts +3 -3
  438. package/dist/entry/session-text.js +5 -4
  439. package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
  440. package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
  441. package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
  442. package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
  443. package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
  444. package/dist/{eval.js → eval/eval.js} +35 -55
  445. package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
  446. package/dist/{judgment.js → eval/judgment.js} +23 -20
  447. package/dist/extensions/openclaw-plugin/index.js +2 -3
  448. package/dist/graph/delta.d.ts +3 -2
  449. package/dist/graph/delta.js +9 -23
  450. package/dist/{graph-extract.d.ts → graph/extract.d.ts} +10 -32
  451. package/dist/{graph-extract.js → graph/extract.js} +40 -81
  452. package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
  453. package/dist/{graph-recall.js → graph/recall.js} +65 -108
  454. package/dist/graph/stream.d.ts +38 -0
  455. package/dist/{graph-stream.js → graph/stream.js} +20 -41
  456. package/dist/graph/view.d.ts +50 -0
  457. package/dist/graph/view.js +265 -0
  458. package/dist/graph/write.d.ts +4 -76
  459. package/dist/graph/write.js +13 -397
  460. package/dist/hooks/codex-session.js +1 -1
  461. package/dist/hooks/codex-wrapper.js +16 -17
  462. package/dist/hooks/copilot.d.ts +1 -8
  463. package/dist/hooks/copilot.js +16 -16
  464. package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
  465. package/dist/{cli → hooks}/hook-blocks.js +38 -125
  466. package/dist/hooks/json-hooks.d.ts +5 -37
  467. package/dist/hooks/json-hooks.js +49 -179
  468. package/dist/hooks/opencode.d.ts +0 -38
  469. package/dist/hooks/opencode.js +44 -103
  470. package/dist/hooks/shared.d.ts +8 -21
  471. package/dist/hooks/shared.js +30 -25
  472. package/dist/importers/core.d.ts +13 -42
  473. package/dist/importers/core.js +48 -64
  474. package/dist/importers/markdown-parse.d.ts +9 -32
  475. package/dist/importers/markdown-parse.js +10 -44
  476. package/dist/importers/markdown.js +5 -13
  477. package/dist/importers/sources.js +57 -81
  478. package/dist/importers/vault.d.ts +2 -8
  479. package/dist/importers/vault.js +95 -172
  480. package/dist/index.d.ts +26 -22
  481. package/dist/index.js +25 -21
  482. package/dist/learn/autolearn.d.ts +29 -0
  483. package/dist/{autolearn.js → learn/autolearn.js} +26 -51
  484. package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
  485. package/dist/{churn-git.js → learn/churn-git.js} +6 -4
  486. package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
  487. package/dist/learn/extract.js +123 -0
  488. package/dist/learn/forward-claim-detector.d.ts +12 -0
  489. package/dist/learn/forward-claim-detector.js +60 -0
  490. package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
  491. package/dist/{invalidation.js → learn/invalidation.js} +92 -125
  492. package/dist/mcp/admin-tools.d.ts +1 -1
  493. package/dist/mcp/admin-tools.js +39 -64
  494. package/dist/mcp/format.d.ts +5 -5
  495. package/dist/mcp/format.js +7 -6
  496. package/dist/mcp/framing.d.ts +6 -0
  497. package/dist/mcp/framing.js +11 -3
  498. package/dist/mcp/memory-tools.js +10 -35
  499. package/dist/mcp/protocol.d.ts +14 -36
  500. package/dist/mcp/protocol.js +10 -19
  501. package/dist/mcp/recall-tools.d.ts +2 -2
  502. package/dist/mcp/recall-tools.js +70 -52
  503. package/dist/mcp/request.d.ts +3 -11
  504. package/dist/mcp/request.js +71 -85
  505. package/dist/mcp/server.d.ts +3 -9
  506. package/dist/mcp/server.js +6 -17
  507. package/dist/mcp/session-state.d.ts +2 -3
  508. package/dist/mcp/session-state.js +7 -13
  509. package/dist/mcp/shared-gate.js +1 -1
  510. package/dist/mcp/stdio.d.ts +2 -6
  511. package/dist/mcp/stdio.js +112 -38
  512. package/dist/mcp/tool-args.js +2 -1
  513. package/dist/mcp/tools.js +7 -5
  514. package/dist/objects/customer-notes.d.ts +44 -0
  515. package/dist/objects/customer-notes.js +71 -0
  516. package/dist/objects/decisions.d.ts +41 -0
  517. package/dist/objects/decisions.js +63 -0
  518. package/dist/objects/descriptor.d.ts +52 -0
  519. package/dist/objects/descriptor.js +4 -0
  520. package/dist/objects/fields.d.ts +15 -0
  521. package/dist/objects/fields.js +21 -0
  522. package/dist/objects/incidents.d.ts +45 -0
  523. package/dist/objects/incidents.js +96 -0
  524. package/dist/objects/lifecycle.d.ts +27 -0
  525. package/dist/objects/lifecycle.js +96 -0
  526. package/dist/objects/policies.d.ts +60 -0
  527. package/dist/objects/policies.js +102 -0
  528. package/dist/objects/processes.d.ts +43 -0
  529. package/dist/objects/processes.js +92 -0
  530. package/dist/objects/project-briefs.d.ts +63 -0
  531. package/dist/objects/project-briefs.js +194 -0
  532. package/dist/objects/skills.d.ts +51 -0
  533. package/dist/objects/skills.js +110 -0
  534. package/dist/postinstall.js +10 -21
  535. package/dist/predictions/planning-fallacy.d.ts +14 -109
  536. package/dist/predictions/planning-fallacy.js +4 -129
  537. package/dist/rerankers/clef.d.ts +2 -6
  538. package/dist/rerankers/clef.js +28 -76
  539. package/dist/rerankers/cross-encoder.d.ts +0 -7
  540. package/dist/rerankers/cross-encoder.js +18 -28
  541. package/dist/rerankers/index.js +8 -7
  542. package/dist/rerankers/jev.d.ts +1 -4
  543. package/dist/rerankers/jev.js +36 -52
  544. package/dist/rerankers/llm.d.ts +2 -13
  545. package/dist/rerankers/llm.js +42 -59
  546. package/dist/rerankers/outage-warning.d.ts +8 -0
  547. package/dist/rerankers/outage-warning.js +32 -0
  548. package/dist/rerankers/remote.d.ts +4 -0
  549. package/dist/rerankers/remote.js +25 -0
  550. package/dist/rerankers/types.d.ts +3 -15
  551. package/dist/search/as-of.d.ts +1 -1
  552. package/dist/search/bm25-search.d.ts +2 -2
  553. package/dist/search/bm25-search.js +7 -7
  554. package/dist/search/bm25.d.ts +1 -1
  555. package/dist/search/bm25.js +1 -1
  556. package/dist/search/boosts.d.ts +5 -3
  557. package/dist/search/boosts.js +36 -15
  558. package/dist/search/breakdown.d.ts +2 -2
  559. package/dist/search/breakdown.js +2 -1
  560. package/dist/search/explain.d.ts +1 -1
  561. package/dist/search/explain.js +3 -2
  562. package/dist/search/finalize.d.ts +2 -2
  563. package/dist/search/finalize.js +4 -3
  564. package/dist/search/fusion.d.ts +1 -1
  565. package/dist/search/fusion.js +3 -3
  566. package/dist/search/goal-boost.d.ts +23 -0
  567. package/dist/search/goal-boost.js +90 -0
  568. package/dist/search/hybrid-score.d.ts +2 -2
  569. package/dist/search/hybrid-score.js +1 -1
  570. package/dist/search/hybrid.d.ts +6 -4
  571. package/dist/search/hybrid.js +11 -8
  572. package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
  573. package/dist/{multihop.js → search/multihop.js} +9 -8
  574. package/dist/search/path-context.d.ts +11 -0
  575. package/dist/{path-context.js → search/path-context.js} +8 -19
  576. package/dist/search/physics-search.d.ts +4 -4
  577. package/dist/search/physics-search.js +25 -22
  578. package/dist/search/rerank.d.ts +3 -3
  579. package/dist/search/rerank.js +4 -3
  580. package/dist/search/rrf.d.ts +15 -0
  581. package/dist/search/rrf.js +36 -0
  582. package/dist/search/temporal.d.ts +1 -1
  583. package/dist/search/temporal.js +5 -2
  584. package/dist/search/vector.d.ts +10 -3
  585. package/dist/search/vector.js +51 -15
  586. package/dist/server/auth.d.ts +10 -29
  587. package/dist/server/auth.js +57 -42
  588. package/dist/server/boot.d.ts +5 -0
  589. package/dist/server/boot.js +432 -0
  590. package/dist/server/client-ip.d.ts +8 -20
  591. package/dist/server/client-ip.js +23 -34
  592. package/dist/server/cursor.d.ts +1 -1
  593. package/dist/server/cursor.js +2 -3
  594. package/dist/server/deadline.d.ts +13 -0
  595. package/dist/server/deadline.js +45 -0
  596. package/dist/server/defaults.d.ts +3 -0
  597. package/dist/server/defaults.js +4 -0
  598. package/dist/server/key-check-bounds.d.ts +9 -0
  599. package/dist/server/key-check-bounds.js +46 -0
  600. package/dist/server/lifecycle.d.ts +5 -4
  601. package/dist/server/lifecycle.js +20 -5
  602. package/dist/server/mcp-http.d.ts +1 -4
  603. package/dist/server/mcp-http.js +44 -68
  604. package/dist/server/rate-limit.d.ts +21 -0
  605. package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
  606. package/dist/server/ready.d.ts +7 -0
  607. package/dist/server/ready.js +38 -0
  608. package/dist/server/request.d.ts +14 -12
  609. package/dist/server/request.js +71 -28
  610. package/dist/server/route-table.d.ts +15 -0
  611. package/dist/server/route-table.js +202 -0
  612. package/dist/server/routes/admin.js +29 -30
  613. package/dist/server/routes/customer-notes.d.ts +5 -5
  614. package/dist/server/routes/customer-notes.js +35 -105
  615. package/dist/server/routes/decisions.d.ts +5 -5
  616. package/dist/server/routes/decisions.js +45 -115
  617. package/dist/server/routes/incidents.d.ts +5 -5
  618. package/dist/server/routes/incidents.js +44 -105
  619. package/dist/server/routes/memories.js +21 -43
  620. package/dist/server/routes/object-routes.d.ts +35 -0
  621. package/dist/server/routes/object-routes.js +72 -0
  622. package/dist/server/routes/policies.d.ts +6 -6
  623. package/dist/server/routes/policies.js +42 -134
  624. package/dist/server/routes/predictions.js +35 -63
  625. package/dist/server/routes/processes.d.ts +5 -5
  626. package/dist/server/routes/processes.js +44 -134
  627. package/dist/server/routes/project-briefs.d.ts +6 -6
  628. package/dist/server/routes/project-briefs.js +41 -120
  629. package/dist/server/routes/recall.js +21 -44
  630. package/dist/server/routes/skills.d.ts +6 -6
  631. package/dist/server/routes/skills.js +40 -138
  632. package/dist/server/server-detect.d.ts +28 -0
  633. package/dist/server/server-detect.js +156 -0
  634. package/dist/server/sleep-child.d.ts +2 -0
  635. package/dist/server/sleep-child.js +19 -0
  636. package/dist/server/sleep-offload.d.ts +20 -0
  637. package/dist/server/sleep-offload.js +73 -0
  638. package/dist/server/tls.d.ts +6 -0
  639. package/dist/server/tls.js +24 -0
  640. package/dist/server/types.d.ts +35 -14
  641. package/dist/server/validation.d.ts +6 -5
  642. package/dist/server/validation.js +16 -34
  643. package/dist/server.d.ts +39 -61
  644. package/dist/server.js +26 -569
  645. package/dist/sharing/global-store.d.ts +19 -0
  646. package/dist/sharing/global-store.js +75 -0
  647. package/dist/sharing/global-sync.d.ts +6 -0
  648. package/dist/sharing/global-sync.js +80 -0
  649. package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
  650. package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
  651. package/dist/sharing/scope.d.ts +7 -0
  652. package/dist/{scope.js → sharing/scope.js} +5 -12
  653. package/dist/sharing/search-both.d.ts +60 -0
  654. package/dist/sharing/search-both.js +138 -0
  655. package/dist/sharing/share.d.ts +38 -0
  656. package/dist/sharing/share.js +226 -0
  657. package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
  658. package/dist/{ambient-store.js → store/ambient.js} +11 -16
  659. package/dist/store/audit-event.d.ts +15 -17
  660. package/dist/store/audit-event.js +9 -16
  661. package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
  662. package/dist/{audit.js → store/audit.js} +95 -18
  663. package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
  664. package/dist/{auth.js → store/auth.js} +108 -99
  665. package/dist/store/candidates.d.ts +41 -13
  666. package/dist/store/candidates.js +141 -60
  667. package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
  668. package/dist/{card-detail.js → store/card-detail.js} +3 -2
  669. package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
  670. package/dist/{store-cards.js → store/cards.js} +133 -248
  671. package/dist/store/compactions.d.ts +78 -0
  672. package/dist/store/compactions.js +93 -0
  673. package/dist/store/conflicts.d.ts +26 -26
  674. package/dist/store/conflicts.js +194 -222
  675. package/dist/store/connectors/github.d.ts +84 -0
  676. package/dist/store/connectors/github.js +180 -0
  677. package/dist/store/connectors/slack.d.ts +69 -0
  678. package/dist/store/connectors/slack.js +177 -0
  679. package/dist/store/dashboard-reads.d.ts +27 -0
  680. package/dist/store/dashboard-reads.js +88 -0
  681. package/dist/store/delete-and-batch.d.ts +27 -51
  682. package/dist/store/delete-and-batch.js +100 -92
  683. package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
  684. package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
  685. package/dist/store/descendant-page.d.ts +12 -0
  686. package/dist/store/descendant-page.js +99 -0
  687. package/dist/store/diagnostics.d.ts +47 -0
  688. package/dist/store/diagnostics.js +44 -0
  689. package/dist/store/doctor-reads.d.ts +16 -0
  690. package/dist/store/doctor-reads.js +19 -0
  691. package/dist/store/dormant.d.ts +105 -0
  692. package/dist/store/dormant.js +241 -0
  693. package/dist/store/embeddings/index.d.ts +36 -0
  694. package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
  695. package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
  696. package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
  697. package/dist/store/embeddings/provider.d.ts +40 -0
  698. package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
  699. package/dist/store/entry-reads.d.ts +66 -63
  700. package/dist/store/entry-reads.js +159 -121
  701. package/dist/store/entry-row.d.ts +14 -37
  702. package/dist/store/entry-row.js +37 -45
  703. package/dist/store/entry-writes.d.ts +40 -17
  704. package/dist/store/entry-writes.js +105 -41
  705. package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
  706. package/dist/{failure-log.js → store/failure-log.js} +9 -2
  707. package/dist/store/goals.d.ts +96 -0
  708. package/dist/store/goals.js +260 -0
  709. package/dist/store/graph-queue.d.ts +13 -0
  710. package/dist/store/graph-queue.js +70 -0
  711. package/dist/store/graph-reads.d.ts +41 -0
  712. package/dist/{graph/read.js → store/graph-reads.js} +72 -162
  713. package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
  714. package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
  715. package/dist/store/graph-view-rows.d.ts +13 -0
  716. package/dist/store/graph-view-rows.js +68 -0
  717. package/dist/store/graph-writes.d.ts +33 -0
  718. package/dist/store/graph-writes.js +232 -0
  719. package/dist/store/half-life.d.ts +35 -0
  720. package/dist/store/half-life.js +75 -0
  721. package/dist/store/handoffs.d.ts +6 -12
  722. package/dist/store/handoffs.js +54 -63
  723. package/dist/store/index-and-stats.d.ts +14 -20
  724. package/dist/store/index-and-stats.js +74 -119
  725. package/dist/store/index.d.ts +4 -0
  726. package/dist/store/index.js +3 -0
  727. package/dist/store/key-audit.d.ts +2 -2
  728. package/dist/store/key-audit.js +4 -4
  729. package/dist/store/key-writes.d.ts +12 -5
  730. package/dist/store/key-writes.js +30 -4
  731. package/dist/store/ledger-turn.d.ts +17 -0
  732. package/dist/store/ledger-turn.js +27 -0
  733. package/dist/store/markdown.d.ts +3 -7
  734. package/dist/store/markdown.js +25 -23
  735. package/dist/store/mirrors.d.ts +7 -13
  736. package/dist/store/mirrors.js +52 -47
  737. package/dist/store/object-types.d.ts +189 -0
  738. package/dist/store/object-types.js +4 -0
  739. package/dist/store/open.d.ts +6 -4
  740. package/dist/store/open.js +30 -36
  741. package/dist/store/planning-fallacy-evidence.d.ts +14 -0
  742. package/dist/store/planning-fallacy-evidence.js +52 -0
  743. package/dist/store/port.d.ts +649 -0
  744. package/dist/store/port.js +17 -0
  745. package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
  746. package/dist/{predictions/store.js → store/predictions.js} +88 -184
  747. package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
  748. package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
  749. package/dist/{quarantine.js → store/quarantine.js} +64 -22
  750. package/dist/store/raw-archive.d.ts +14 -0
  751. package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
  752. package/dist/store/recall-scope.d.ts +78 -0
  753. package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
  754. package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
  755. package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
  756. package/dist/store/rejected-values.d.ts +55 -0
  757. package/dist/store/rejected-values.js +150 -0
  758. package/dist/store/rejection.d.ts +54 -0
  759. package/dist/{rejection.js → store/rejection.js} +16 -67
  760. package/dist/store/report-reads.d.ts +6 -0
  761. package/dist/store/report-reads.js +29 -0
  762. package/dist/store/rows.d.ts +11 -22
  763. package/dist/store/rows.js +52 -43
  764. package/dist/store/rule-sql.d.ts +5 -0
  765. package/dist/store/rule-sql.js +37 -0
  766. package/dist/store/search-rows.d.ts +22 -42
  767. package/dist/store/search-rows.js +55 -78
  768. package/dist/store/sessions.d.ts +23 -49
  769. package/dist/store/sessions.js +96 -118
  770. package/dist/store/sqlite/commit-watch.d.ts +4 -0
  771. package/dist/store/sqlite/commit-watch.js +29 -0
  772. package/dist/store/sqlite/connector-events-group.d.ts +5 -0
  773. package/dist/store/sqlite/connector-events-group.js +50 -0
  774. package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
  775. package/dist/store/sqlite/connector-writes-group.js +65 -0
  776. package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
  777. package/dist/store/sqlite/dag-reads-group.js +45 -0
  778. package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
  779. package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
  780. package/dist/store/sqlite/error-codec.d.ts +17 -0
  781. package/dist/store/sqlite/error-codec.js +61 -0
  782. package/dist/store/sqlite/executor-counts.d.ts +10 -0
  783. package/dist/store/sqlite/executor-counts.js +11 -0
  784. package/dist/store/sqlite/executor.d.ts +29 -0
  785. package/dist/store/sqlite/executor.js +287 -0
  786. package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
  787. package/dist/store/sqlite/graph-reads-group.js +18 -0
  788. package/dist/store/sqlite/local.d.ts +21 -0
  789. package/dist/store/sqlite/local.js +39 -0
  790. package/dist/store/sqlite/object-rows.d.ts +102 -0
  791. package/dist/store/sqlite/object-rows.js +221 -0
  792. package/dist/store/sqlite/objects-group.d.ts +20 -0
  793. package/dist/store/sqlite/objects-group.js +316 -0
  794. package/dist/store/sqlite/predictions-group.d.ts +5 -0
  795. package/dist/store/sqlite/predictions-group.js +28 -0
  796. package/dist/store/sqlite/quarantine-group.d.ts +5 -0
  797. package/dist/store/sqlite/quarantine-group.js +38 -0
  798. package/dist/store/sqlite/store.d.ts +23 -0
  799. package/dist/store/sqlite/store.js +294 -0
  800. package/dist/store/sqlite/vector-pack.d.ts +18 -0
  801. package/dist/store/sqlite/vector-pack.js +46 -0
  802. package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
  803. package/dist/store/sqlite/vector-reads-group.js +23 -0
  804. package/dist/store/sqlite/worker-entry.d.ts +2 -0
  805. package/dist/store/sqlite/worker-entry.js +8 -0
  806. package/dist/store/sqlite/worker-jobs.d.ts +5 -0
  807. package/dist/store/sqlite/worker-jobs.js +116 -0
  808. package/dist/store/sqlite/worker-ops.d.ts +135 -0
  809. package/dist/store/sqlite/worker-ops.js +93 -0
  810. package/dist/store/sqlite/worker-store.d.ts +8 -0
  811. package/dist/store/sqlite/worker-store.js +79 -0
  812. package/dist/store/summaries.d.ts +11 -72
  813. package/dist/store/summaries.js +47 -186
  814. package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
  815. package/dist/{summary-dirty.js → store/summary-dirty.js} +1 -1
  816. package/dist/store/tenant-lookup.d.ts +6 -1
  817. package/dist/store/tenant-lookup.js +7 -0
  818. package/dist/store/tenant.d.ts +11 -0
  819. package/dist/store/tenant.js +28 -0
  820. package/dist/store/token-ledger-rows.d.ts +61 -0
  821. package/dist/store/token-ledger-rows.js +68 -0
  822. package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +14 -51
  823. package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
  824. package/dist/store/tombstone-checks.d.ts +12 -0
  825. package/dist/store/tombstone-checks.js +31 -0
  826. package/dist/store/usage-reports.d.ts +7 -0
  827. package/dist/store/usage-reports.js +18 -0
  828. package/dist/store/vector-index.d.ts +46 -0
  829. package/dist/store/vector-index.js +170 -0
  830. package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
  831. package/dist/store/working-memory.js +118 -0
  832. package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
  833. package/dist/{yaml.js → store/yaml.js} +2 -6
  834. package/dist/support-bundle.d.ts +1 -1
  835. package/dist/support-bundle.js +19 -37
  836. package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
  837. package/dist/{gated-write.js → trust/gated-write.js} +6 -6
  838. package/dist/trust/quarantine.d.ts +4 -0
  839. package/dist/trust/quarantine.js +8 -0
  840. package/dist/trust/reject-flow.d.ts +23 -0
  841. package/dist/trust/reject-flow.js +65 -0
  842. package/dist/util/anthropic-messages.d.ts +31 -0
  843. package/dist/util/anthropic-messages.js +58 -0
  844. package/dist/util/atomic-write.d.ts +4 -0
  845. package/dist/util/atomic-write.js +138 -0
  846. package/dist/util/capped-json.d.ts +6 -0
  847. package/dist/util/capped-json.js +46 -0
  848. package/dist/util/crash-handlers.d.ts +12 -0
  849. package/dist/util/crash-handlers.js +72 -0
  850. package/dist/{env.d.ts → util/env.d.ts} +27 -7
  851. package/dist/{env.js → util/env.js} +33 -8
  852. package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
  853. package/dist/util/home-path.js +69 -0
  854. package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
  855. package/dist/util/http-retry.js +103 -0
  856. package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
  857. package/dist/{http-util.js → util/http-util.js} +31 -11
  858. package/dist/util/json.d.ts +17 -0
  859. package/dist/util/json.js +25 -0
  860. package/dist/{log.d.ts → util/log.d.ts} +7 -3
  861. package/dist/{log.js → util/log.js} +36 -11
  862. package/dist/util/real-path.d.ts +3 -0
  863. package/dist/util/real-path.js +15 -0
  864. package/dist/util/request-scope.d.ts +28 -0
  865. package/dist/util/request-scope.js +48 -0
  866. package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
  867. package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
  868. package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
  869. package/dist/util/stored-json.d.ts +9 -0
  870. package/dist/util/stored-json.js +8 -0
  871. package/dist/util/time.d.ts +2 -0
  872. package/dist/util/time.js +3 -0
  873. package/dist/util/token-text.d.ts +15 -0
  874. package/dist/util/token-text.js +20 -0
  875. package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
  876. package/dist/util/transcript-tail.js +49 -0
  877. package/dist/util/version.d.ts +11 -0
  878. package/dist/util/version.js +26 -0
  879. package/extensions/openclaw-plugin/index.ts +2 -6
  880. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  881. package/extensions/openclaw-plugin/package.json +1 -1
  882. package/openclaw.plugin.json +1 -1
  883. package/package.json +2 -2
  884. package/dist/ablation.d.ts +0 -102
  885. package/dist/ablation.js +0 -136
  886. package/dist/api.d.ts +0 -26
  887. package/dist/api.js +0 -29
  888. package/dist/audit-prune.d.ts +0 -62
  889. package/dist/audit-prune.js +0 -107
  890. package/dist/autolearn.d.ts +0 -56
  891. package/dist/client.d.ts +0 -48
  892. package/dist/compare.d.ts +0 -86
  893. package/dist/compare.js +0 -117
  894. package/dist/connectors/github/cli-impl.d.ts +0 -25
  895. package/dist/connectors/github/cli-impl.js +0 -227
  896. package/dist/connectors/github/idempotency.d.ts +0 -19
  897. package/dist/connectors/github/idempotency.js +0 -27
  898. package/dist/connectors/slack/idempotency.d.ts +0 -17
  899. package/dist/connectors/slack/idempotency.js +0 -31
  900. package/dist/correction-latency.d.ts +0 -36
  901. package/dist/customer-notes.d.ts +0 -96
  902. package/dist/customer-notes.js +0 -336
  903. package/dist/db.d.ts +0 -9
  904. package/dist/db.js +0 -8
  905. package/dist/decisions.d.ts +0 -94
  906. package/dist/decisions.js +0 -326
  907. package/dist/dedupe.d.ts +0 -75
  908. package/dist/dedupe.js +0 -169
  909. package/dist/dormant.d.ts +0 -93
  910. package/dist/dormant.js +0 -137
  911. package/dist/embedding-provider.d.ts +0 -77
  912. package/dist/embeddings.d.ts +0 -101
  913. package/dist/extract.js +0 -133
  914. package/dist/forward-claim-detector.d.ts +0 -36
  915. package/dist/forward-claim-detector.js +0 -112
  916. package/dist/goals.d.ts +0 -173
  917. package/dist/goals.js +0 -448
  918. package/dist/graph/read.d.ts +0 -73
  919. package/dist/graph/rows.d.ts +0 -45
  920. package/dist/graph/types.js +0 -11
  921. package/dist/graph-stream.d.ts +0 -70
  922. package/dist/graph-view.d.ts +0 -73
  923. package/dist/graph-view.js +0 -333
  924. package/dist/half-life-migration.d.ts +0 -63
  925. package/dist/half-life-migration.js +0 -182
  926. package/dist/handoff.js +0 -68
  927. package/dist/home-path.js +0 -24
  928. package/dist/http-retry.js +0 -51
  929. package/dist/incidents.d.ts +0 -103
  930. package/dist/incidents.js +0 -349
  931. package/dist/instruction-detect.js +0 -27
  932. package/dist/json.d.ts +0 -7
  933. package/dist/json.js +0 -11
  934. package/dist/ledger-db.d.ts +0 -10
  935. package/dist/ledger-db.js +0 -42
  936. package/dist/memory-value-weights.d.ts +0 -19
  937. package/dist/memory-value.d.ts +0 -113
  938. package/dist/memory-value.js +0 -250
  939. package/dist/memory.d.ts +0 -294
  940. package/dist/memory.js +0 -522
  941. package/dist/owner-validation.d.ts +0 -42
  942. package/dist/owner-validation.js +0 -56
  943. package/dist/path-context.d.ts +0 -24
  944. package/dist/physics-state.d.ts +0 -39
  945. package/dist/policies.d.ts +0 -151
  946. package/dist/policies.js +0 -434
  947. package/dist/processes.d.ts +0 -108
  948. package/dist/processes.js +0 -371
  949. package/dist/project-briefs.d.ts +0 -128
  950. package/dist/project-briefs.js +0 -523
  951. package/dist/provenance-coverage.d.ts +0 -18
  952. package/dist/rate-limit.d.ts +0 -34
  953. package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
  954. package/dist/raw-archive.d.ts +0 -24
  955. package/dist/recall-history.d.ts +0 -131
  956. package/dist/recall-history.js +0 -227
  957. package/dist/recall-scope.d.ts +0 -138
  958. package/dist/refine-llm.d.ts +0 -61
  959. package/dist/refine-llm.js +0 -167
  960. package/dist/reject-flow.d.ts +0 -69
  961. package/dist/reject-flow.js +0 -260
  962. package/dist/rejection.d.ts +0 -100
  963. package/dist/replay.d.ts +0 -41
  964. package/dist/replay.js +0 -122
  965. package/dist/rrf.d.ts +0 -43
  966. package/dist/rrf.js +0 -61
  967. package/dist/scope.d.ts +0 -14
  968. package/dist/server-detect.d.ts +0 -72
  969. package/dist/server-detect.js +0 -222
  970. package/dist/session-owners.d.ts +0 -7
  971. package/dist/session-owners.js +0 -54
  972. package/dist/shared.d.ts +0 -186
  973. package/dist/shared.js +0 -540
  974. package/dist/skills.d.ts +0 -101
  975. package/dist/skills.js +0 -367
  976. package/dist/store/entry-writes-group.d.ts +0 -9
  977. package/dist/store/vector-writes.d.ts +0 -6
  978. package/dist/store/vector-writes.js +0 -59
  979. package/dist/store-port.d.ts +0 -262
  980. package/dist/store-port.js +0 -178
  981. package/dist/tenant.d.ts +0 -25
  982. package/dist/tenant.js +0 -43
  983. package/dist/trace.d.ts +0 -34
  984. package/dist/transcript-tail.js +0 -48
  985. package/dist/version.d.ts +0 -26
  986. package/dist/version.js +0 -41
  987. package/dist/working-memory.js +0 -154
  988. /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
  989. /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
  990. /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
  991. /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
  992. /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
  993. /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
  994. /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
  995. /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
  996. /package/dist/{api-errors.js → core/api-errors.js} +0 -0
  997. /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
  998. /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
  999. /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
  1000. /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
  1001. /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
  1002. /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
  1003. /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
  1004. /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
  1005. /package/dist/{escape.js → util/escape.js} +0 -0
  1006. /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
  1007. /package/dist/{keyset.js → util/keyset.js} +0 -0
  1008. /package/dist/{same-text.js → util/same-text.js} +0 -0
  1009. /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
  1010. /package/dist/{db → util}/sqlite-blocked.js +0 -0
  1011. /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
  1012. /package/dist/{tokenize.js → util/tokenize.js} +0 -0
  1013. /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
  1014. /package/dist/{write-budget.js → util/write-budget.js} +0 -0
@@ -1,15 +1,14 @@
1
1
  // Write path: remember stores one memory after secret vetting and, for untrusted content, the instruction check.
2
- import { writeEntry } from '../store/entry-writes.js';
3
2
  import { stampOriginProject } from '../store/entry-row.js';
4
- import { requireGroup } from '../store-port.js';
5
- import { detectInstruction } from '../instruction-detect.js';
6
- import { quarantineScopeFor, recordQuarantine } from '../quarantine.js';
7
- import { createMemory } from '../memory.js';
8
- import { loadConfig } from '../config.js';
9
- import { vetSecrets } from '../secret-detect.js';
10
- import { assertCallerProject } from '../project-identity.js';
11
- import { BadRequestError } from '../api-errors.js';
12
- import { assertClientScope, personalScopeOf } from '../recall-scope.js';
3
+ import { detectInstruction } from './instruction-detect.js';
4
+ import { quarantineScopeFor } from '../trust/quarantine.js';
5
+ import { createMemory } from '../core/memory.js';
6
+ import { loadConfig } from '../core/config.js';
7
+ import { vetSecrets } from '../util/secret-detect.js';
8
+ import { assertCallerProject } from '../core/project-identity.js';
9
+ import { BadRequestError } from '../core/api-errors.js';
10
+ import { assertClientScope, personalScopeOf } from '../store/recall-scope.js';
11
+ import { andThen, notPorted, onStore } from './on-store.js';
13
12
  /** The scope a write lands in: the caller's own personal scope when asked for, else the client's, which may not be a personal one. */
14
13
  function rememberScope(ctx, opts) {
15
14
  if (!opts.personal) {
@@ -32,7 +31,15 @@ function prepareRemember(ctx, opts) {
32
31
  const requestedScope = rememberScope(ctx, opts);
33
32
  const vetted = vetSecrets(opts.content, opts.tags ?? [], opts.untrusted === true);
34
33
  const detection = opts.untrusted ? detectInstruction(vetted.content) : { flagged: false, reason: null };
35
- const entry = createMemory(vetted.content, {
34
+ const local = opts.local ?? {};
35
+ const created = createMemory(vetted.content, {
36
+ layer: local.layer,
37
+ pinned: local.pinned,
38
+ confidence: local.confidence,
39
+ source: local.source,
40
+ schema_fit: local.schemaFit,
41
+ trace_outcome: local.traceOutcome,
42
+ source_session_id: local.sourceSessionId,
36
43
  kind: opts.kind ?? 'distilled',
37
44
  scope: detection.flagged ? quarantineScopeFor(requestedScope) : requestedScope,
38
45
  owner: opts.owner ?? null,
@@ -41,54 +48,43 @@ function prepareRemember(ctx, opts) {
41
48
  tenantId: ctx.tenantId,
42
49
  baseHalfLifeDays: loadConfig(ctx.hippoRoot).defaultHalfLifeDays,
43
50
  });
51
+ const entry = local.weaken ? weakened(created, local.weaken) : created;
44
52
  // Aliases only widen what a reader matches; a row has one origin. A personal row's '' follows its owner into every project.
45
53
  const origin = opts.personal ? '' : opts.project?.name;
46
54
  const stamped = origin !== undefined ? { ...entry, origin_project: origin } : entry;
47
55
  return { entry: stamped, requestedScope, detection, warnings: vetted.warnings };
48
56
  }
49
- function rememberResult(ctx, prepared) {
57
+ function weakened(entry, weaken) {
58
+ return { ...entry, strength: weaken.strength, half_life_days: Math.max(1, entry.half_life_days * weaken.halfLifeFactor) };
59
+ }
60
+ function rememberResult(ctx, prepared, written) {
50
61
  const { entry, detection, warnings } = prepared;
51
62
  const result = { id: entry.id, kind: entry.kind, tenantId: ctx.tenantId };
52
63
  if (detection.flagged)
53
64
  result.quarantined = { reason: detection.reason ?? 'unknown' };
54
65
  if (warnings.length > 0)
55
66
  result.warnings = [...warnings];
67
+ if (written?.outcome === 'duplicate')
68
+ result.duplicate = { memoryId: written.memoryId };
56
69
  return result;
57
70
  }
58
- /** Store one memory. With `ctx.store`, its entryWrites group writes the row and its remember row; hippo.db is opened only when there is no store. */
59
- export function remember(ctx, opts) {
60
- const reply = ctx.store ? rememberThroughStore(ctx, ctx.store, opts) : rememberOnHippoDb(ctx, opts);
61
- // SAFETY: a C typed with a store gets the promise its path returns; a wide C is typed as the union, which a caller has to await anyway.
62
- return reply;
63
- }
64
- /** afterWrite and the quarantine row write on hippo.db's own handle, and only connectors send them, so a store refuses both. */
65
- async function rememberThroughStore(ctx, store, opts) {
66
- const entryWrites = requireGroup(store, 'entryWrites');
67
- if (opts.afterWrite || opts.untrusted)
68
- throw new Error('afterWrite and untrusted content are written to hippo.db only, never through a store');
69
- const prepared = prepareRemember(ctx, opts);
70
- // The store writes origin_project as given, so the served folder's fallback is stamped here.
71
- await entryWrites.writeEntry({ entry: stampOriginProject(ctx.hippoRoot, prepared.entry), actor: ctx.actor.subject });
72
- return rememberResult(ctx, prepared);
71
+ /** A flagged row's review record, which the store writes in the row's own transaction. */
72
+ function quarantineOf({ requestedScope, detection }) {
73
+ return detection.flagged ? { originalScope: requestedScope, reason: detection.reason ?? 'unknown' } : undefined;
73
74
  }
74
- function rememberOnHippoDb(ctx, opts) {
75
- const prepared = prepareRemember(ctx, opts);
76
- const { requestedScope, detection } = prepared;
77
- // writeEntry threads ctx.actor.subject into its internal audit hook, so exactly
78
- // one 'remember' event lands in the log with the supplied actor.
79
- const afterWrite = detection.flagged
80
- ? (db, memoryId) => {
81
- recordQuarantine(db, {
82
- tenantId: ctx.tenantId,
83
- memoryId,
84
- originalScope: requestedScope,
85
- reason: detection.reason ?? 'unknown',
86
- actor: ctx.actor.subject,
87
- });
88
- opts.afterWrite?.(db, memoryId);
89
- }
90
- : opts.afterWrite;
91
- writeEntry(ctx.hippoRoot, prepared.entry, { actor: ctx.actor.subject, afterWrite });
92
- return rememberResult(ctx, prepared);
75
+ /** Store one memory: the store's entryWrites group writes the row and its one remember audit row, under the caller's subject.
76
+ * A write that carries a connector event or untrusted content goes through connectorWrites, which commits its companion rows with it. */
77
+ export function remember(ctx, opts) {
78
+ return onStore(ctx, (port) => {
79
+ const entryWrites = port.entryWrites ?? notPorted(port, 'entryWrites');
80
+ const prepared = prepareRemember(ctx, opts);
81
+ // A store writes origin_project as given, so the served folder's fallback is stamped here.
82
+ const write = { entry: stampOriginProject(ctx.hippoRoot, prepared.entry), actor: ctx.actor.subject };
83
+ if (opts.untrusted !== true && opts.event === undefined)
84
+ return andThen(entryWrites.writeEntry(write), () => rememberResult(ctx, prepared));
85
+ const connectorWrites = port.connectorWrites ?? notPorted(port, 'connectorWrites');
86
+ const written = connectorWrites.writeConnectorEntry({ ...write, event: opts.event, quarantine: quarantineOf(prepared) });
87
+ return andThen(written, (outcome) => rememberResult(ctx, prepared, outcome));
88
+ });
93
89
  }
94
90
  //# sourceMappingURL=remember.js.map
@@ -0,0 +1,4 @@
1
+ import { type Context } from './types.js';
2
+ /** Binds `sessionId` to the caller's owner on first use; a session another owner holds is a 409, so the client can set it aside. */
3
+ export declare function bindSessionOwner(ctx: Context, sessionId: string): void;
4
+ //# sourceMappingURL=session-owners.d.ts.map
@@ -0,0 +1,17 @@
1
+ // A session id belongs to the first owner that binds it, so one developer's client cannot write into another's session.
2
+ import { ConflictError } from '../core/api-errors.js';
3
+ import { ownerOrSubject } from './types.js';
4
+ import { sessionOwnerOrBind } from '../store/sessions.js';
5
+ import { assertTenantId } from '../store/tenant.js';
6
+ import { DAY_MS } from '../util/time.js';
7
+ /** Bindings older than this are pruned when a new session binds. */
8
+ const BINDING_RETENTION_DAYS = 90;
9
+ /** Binds `sessionId` to the caller's owner on first use; a session another owner holds is a 409, so the client can set it aside. */
10
+ export function bindSessionOwner(ctx, sessionId) {
11
+ assertTenantId('bindSessionOwner', ctx.tenantId);
12
+ const owner = ownerOrSubject(ctx.actor);
13
+ const bound = sessionOwnerOrBind(ctx.hippoRoot, { tenantId: ctx.tenantId, sessionId, owner, retentionMs: BINDING_RETENTION_DAYS * DAY_MS });
14
+ if (bound !== owner)
15
+ throw new ConflictError('session id belongs to another caller');
16
+ }
17
+ //# sourceMappingURL=session-owners.js.map
@@ -1,13 +1,12 @@
1
1
  import { loadAllEntries } from '../store/entry-reads.js';
2
- import { deleteEntry } from '../store/delete-and-batch.js';
3
- import { auditMemories } from '../audit.js';
4
- import { autoShare } from '../shared.js';
2
+ import { auditMemories } from '../store/audit.js';
3
+ import { autoShare } from '../sharing/share.js';
5
4
  import { consolidate } from '../consolidate/sleep.js';
6
- import { loadConfig } from '../config.js';
7
- import { deduplicateStore } from '../dedupe.js';
8
- import { computeAmbientState } from '../ambient.js';
9
- import { loadPendingExtractionTenants } from '../graph/read.js';
10
- import { type ExtractResult } from '../graph-extract.js';
5
+ import { loadConfig } from '../core/config.js';
6
+ import { deduplicateStore } from '../consolidate/dedupe.js';
7
+ import { computeAmbientState } from '../core/ambient.js';
8
+ import { loadPendingExtractionTenants } from '../store/graph-queue.js';
9
+ import { type ExtractResult } from '../graph/extract.js';
11
10
  import type { Context } from './types.js';
12
11
  import type { SleepOpts, SleepResult } from './sleep.js';
13
12
  /** Test-only seam: `runSleep` overrides force a phase to throw into emitSleepAudit's `partial: true` row; production never sets them. */
@@ -17,7 +16,6 @@ export interface SleepPhases {
17
16
  auditMemories: typeof auditMemories;
18
17
  autoShare: typeof autoShare;
19
18
  loadAllEntries: typeof loadAllEntries;
20
- deleteEntry: typeof deleteEntry;
21
19
  computeAmbientState: typeof computeAmbientState;
22
20
  loadConfig: typeof loadConfig;
23
21
  loadPendingExtractionTenants: typeof loadPendingExtractionTenants;
@@ -1,24 +1,24 @@
1
1
  // The sleep pipeline behind `sleep`, with its phase dependencies injectable; kept out of the package root.
2
- import { openHippoDb, closeHippoDb } from '../db.js';
3
2
  import { loadAllEntries } from '../store/entry-reads.js';
4
- import { deleteEntry, memoriesBackingObjects } from '../store/delete-and-batch.js';
5
- import { appendAuditEvent, reportAuditWriteFailure, auditMemories } from '../audit.js';
6
- import { autoShare } from '../shared.js';
3
+ import { memoriesBackingObjects } from '../store/delete-and-batch.js';
4
+ import { reportAuditWriteFailure, auditMemories } from '../store/audit.js';
5
+ import { sqliteSyncStore } from '../store/sqlite/store.js';
6
+ import { autoShare } from '../sharing/share.js';
7
7
  import { consolidate } from '../consolidate/sleep.js';
8
8
  import { failedUnitOf } from '../store/delete-and-batch.js';
9
- import { loadConfig } from '../config.js';
10
- import { deduplicateStore } from '../dedupe.js';
11
- import { computeAmbientState } from '../ambient.js';
12
- import { loadPendingExtractionTenants } from '../graph/read.js';
13
- import { markPendingProcessedUpTo } from '../graph/write.js';
14
- import { extractGraphChunked } from '../graph-extract.js';
9
+ import { loadConfig } from '../core/config.js';
10
+ import { deduplicateStore } from '../consolidate/dedupe.js';
11
+ import { computeAmbientState } from '../core/ambient.js';
12
+ import { loadPendingExtractionTenants, markPendingProcessedUpTo } from '../store/graph-queue.js';
13
+ import { extractGraphChunked } from '../graph/extract.js';
14
+ import { removeAuditErrors } from './audit.js';
15
+ import { errorMessage } from '../util/log.js';
15
16
  const DEFAULT_SLEEP_PHASES = {
16
17
  consolidate,
17
18
  deduplicateStore,
18
19
  auditMemories,
19
20
  autoShare,
20
21
  loadAllEntries,
21
- deleteEntry,
22
22
  computeAmbientState,
23
23
  loadConfig,
24
24
  loadPendingExtractionTenants,
@@ -28,18 +28,15 @@ const DEFAULT_SLEEP_PHASES = {
28
28
  export async function runSleep(ctx, opts, overrides = {}) {
29
29
  const dryRun = Boolean(opts.dryRun);
30
30
  const phases = { ...DEFAULT_SLEEP_PHASES, ...overrides };
31
- // Phase counters for the consolidate audit emit (in finally).
32
- // Accumulated as each phase completes so partial-failure paths still report
33
- // accurate "what got done before the failure" data.
31
+ // Phase counters for the consolidate audit emit (in finally), accumulated per phase so a partial failure still reports what got done.
34
32
  const counts = { consolidation: 0, dedup: 0, auditDeleted: 0, ambient: 0 };
35
33
  let phaseError = null;
36
34
  try {
37
35
  return await runSleepPhases(ctx, opts, phases, counts);
38
36
  }
39
37
  catch (err) {
40
- // SAFETY: phaseError is read via phaseError.message / (phaseError !==
41
- // null) below, both safe even if a non-Error was thrown; this mirrors
42
- // the existing lenient (err as Error) pattern used throughout this catch chain.
38
+ // SAFETY: phaseError is only read via phaseError.message / (phaseError !== null) below, safe even if a non-Error was thrown;
39
+ // this mirrors the lenient (err as Error) pattern used through this catch chain.
43
40
  phaseError = err;
44
41
  throw err;
45
42
  }
@@ -60,14 +57,15 @@ async function runSleepPhases(ctx, opts, phases, counts) {
60
57
  if (dedupResult.removed > 0)
61
58
  result.deduped = dedupSummary(dedupResult);
62
59
  // Phase 3: Quality audit (remove junk, report warnings; a dry run skips rows earlier phases would remove).
63
- counts.auditDeleted = runQualityAudit(ctx, phases, dryRun, consolidateResult, dedupResult, result);
60
+ const audited = runQualityAudit(ctx, phases, { dryRun, consolidateResult, dedupResult, result });
61
+ counts.auditDeleted = audited.removed;
64
62
  if (dryRun)
65
63
  return result;
66
64
  // Phase 4: Auto-share high-transfer-score memories to global.
67
65
  if (!opts.noShare)
68
66
  shareOnSleep(ctx, phases, result);
69
67
  // Phase 5: Post-sleep ambient state summary.
70
- counts.ambient = summarizeAmbient(ctx, phases, result);
68
+ counts.ambient = summarizeAmbient(ctx, phases, result, audited.remaining);
71
69
  await drainGraphQueue(ctx, phases, snapshot, result);
72
70
  return result;
73
71
  }
@@ -80,10 +78,7 @@ function snapshotDirtyTenants(ctx, phases, dryRun) {
80
78
  snapshot.dirtyTenants = phases.loadPendingExtractionTenants(ctx.hippoRoot);
81
79
  }
82
80
  catch (snapErr) {
83
- // SAFETY: this is a best-effort log message only; property access on
84
- // any JS value is safe (undefined if absent), preserving the existing
85
- // lenient formatting even when something non-Error was thrown.
86
- snapshot.error = snapErr.message;
81
+ snapshot.error = errorMessage(snapErr);
87
82
  }
88
83
  }
89
84
  return snapshot;
@@ -118,28 +113,26 @@ function dedupSummary(dedupResult) {
118
113
  crossDups,
119
114
  };
120
115
  }
121
- /** Returns how many audit errors were deleted, or would be under dryRun. */
122
- function runQualityAudit(ctx, phases, dryRun, consolidateResult, dedupResult, result) {
116
+ /** `removed` counts audit errors deleted (or that would be under dryRun); `remaining` is what the audit read, less the rows it deleted. */
117
+ function runQualityAudit(ctx, phases, options) {
118
+ const { dryRun, consolidateResult, dedupResult, result } = options;
123
119
  const planned = new Set(dryRun ? [...(consolidateResult.removedIds ?? []), ...dedupResult.pairs.map((p) => p.removed)] : []);
124
120
  const allEntries = phases.loadAllEntries(ctx.hippoRoot).filter((e) => !planned.has(e.id));
125
121
  const auditOut = phases.auditMemories(allEntries, memoriesBackingObjects(ctx.hippoRoot));
126
122
  if (auditOut.issues.length === 0)
127
- return 0;
123
+ return { removed: 0, remaining: allEntries };
128
124
  const errors = auditOut.issues.filter((i) => i.severity === 'error');
129
125
  const warnings = auditOut.issues.filter((i) => i.severity === 'warning');
130
- let removed = 0;
131
- for (const issue of errors) {
132
- const reason = `sleep-audit: ${issue.reason}`;
133
- if (dryRun || phases.deleteEntry(ctx.hippoRoot, issue.memoryId, { actor: ctx.actor.subject, reason, automatic: true }))
134
- removed++;
135
- }
126
+ const gone = dryRun ? errors.map((issue) => issue.memoryId) : removeAuditErrors(ctx, 'sleep-audit', errors);
127
+ const removed = gone.length;
128
+ const deleted = new Set(gone);
136
129
  if (removed > 0 || warnings.length > 0) {
137
130
  result.audit = {
138
131
  errorsRemoved: removed,
139
132
  warningCount: warnings.length,
140
133
  };
141
134
  }
142
- return removed;
135
+ return { removed, remaining: allEntries.filter((e) => !deleted.has(e.id)) };
143
136
  }
144
137
  function shareOnSleep(ctx, phases, result) {
145
138
  const sleepConfig = phases.loadConfig(ctx.hippoRoot);
@@ -159,11 +152,11 @@ function shareOnSleep(ctx, phases, result) {
159
152
  }
160
153
  }
161
154
  /** Returns the ambient total the audit row reports: 0 when ambient is off or no current row is left. */
162
- function summarizeAmbient(ctx, phases, result) {
155
+ function summarizeAmbient(ctx, phases, result, loaded) {
163
156
  const postSleepConfig = phases.loadConfig(ctx.hippoRoot);
164
157
  if (!postSleepConfig.ambient.enabled)
165
158
  return 0;
166
- const postSleepEntries = phases.loadAllEntries(ctx.hippoRoot).filter((e) => !e.superseded_by);
159
+ const postSleepEntries = loaded.filter((e) => !e.superseded_by);
167
160
  if (postSleepEntries.length === 0)
168
161
  return 0;
169
162
  result.ambient = phases.computeAmbientState(postSleepEntries);
@@ -180,49 +173,45 @@ async function drainGraphQueue(ctx, phases, snapshot, result) {
180
173
  `graph: dirty-tenant snapshot failed (skipped graph refresh): ${snapshot.error}`,
181
174
  ];
182
175
  }
183
- let gTenants = 0;
184
- let gEntities = 0;
185
- let gRelations = 0;
176
+ const rebuilt = { tenants: 0, entities: 0, relations: 0 };
186
177
  // dirtyTenants was snapshotted before the memory-deleting phases above.
187
178
  for (const { tenantId, maxPendingId } of snapshot.dirtyTenants) {
188
- try {
189
- const ext = await phases.extractGraph(ctx.hippoRoot, tenantId);
190
- // Count the rebuild as soon as it succeeds — it happened regardless of
191
- // the drain-mark below.
192
- gTenants += 1;
193
- gEntities += ext.entities;
194
- gRelations += ext.relations;
195
- if (ext.skipped) {
196
- result.details = [
197
- ...(result.details ?? []),
198
- `graph: ${ext.skipped} stale op(s) skipped for a tenant; the next sleep redoes them`,
199
- ];
200
- }
201
- // Watermark drain: only items enqueued before this rebuild started are marked; later arrivals stay pending.
202
- // Marked only after the last chunk, so a run stopped between chunks leaves the tenant for the next one.
203
- markPendingProcessedUpTo(ctx.hippoRoot, tenantId, maxPendingId);
204
- }
205
- catch (tenantErr) {
206
- // SAFETY: this is a best-effort log message only; property access
207
- // on any JS value is safe (undefined if absent), preserving the
208
- // existing lenient formatting even when something non-Error was thrown.
209
- result.details = [
210
- ...(result.details ?? []),
211
- `graph: extract failed for a dirty tenant (left pending): ${tenantErr.message}`,
212
- ];
213
- }
179
+ await rebuildDirtyTenant(ctx, phases, { tenantId, maxPendingId }, rebuilt, result);
214
180
  }
215
- if (gTenants > 0) {
216
- result.graph = { tenants: gTenants, entities: gEntities, relations: gRelations };
181
+ if (rebuilt.tenants > 0) {
182
+ result.graph = rebuilt;
217
183
  }
218
184
  }
219
185
  catch (graphErr) {
220
- // SAFETY: this is a best-effort log message only; property access on
221
- // any JS value is safe (undefined if absent), preserving the existing
222
- // lenient formatting even when something non-Error was thrown.
223
186
  result.details = [
224
187
  ...(result.details ?? []),
225
- `graph: drain phase failed (skipped): ${graphErr.message}`,
188
+ `graph: drain phase failed (skipped): ${errorMessage(graphErr)}`,
189
+ ];
190
+ }
191
+ }
192
+ /** Rebuilds one dirty tenant's graph into `rebuilt` and drains its queue; a failure is a detail line and the tenant stays pending. */
193
+ async function rebuildDirtyTenant(ctx, phases, dirty, rebuilt, result) {
194
+ try {
195
+ const ext = await phases.extractGraph(ctx.hippoRoot, dirty.tenantId);
196
+ // Count the rebuild as soon as it succeeds — it happened regardless of
197
+ // the drain-mark below.
198
+ rebuilt.tenants += 1;
199
+ rebuilt.entities += ext.entities;
200
+ rebuilt.relations += ext.relations;
201
+ if (ext.skipped) {
202
+ result.details = [
203
+ ...(result.details ?? []),
204
+ `graph: ${ext.skipped} stale op(s) skipped for a tenant; the next sleep redoes them`,
205
+ ];
206
+ }
207
+ // Watermark drain: only items enqueued before this rebuild started are marked; later arrivals stay pending.
208
+ // Marked only after the last chunk, so a run stopped between chunks leaves the tenant for the next one.
209
+ markPendingProcessedUpTo(ctx.hippoRoot, dirty.tenantId, dirty.maxPendingId);
210
+ }
211
+ catch (tenantErr) {
212
+ result.details = [
213
+ ...(result.details ?? []),
214
+ `graph: extract failed for a dirty tenant (left pending): ${errorMessage(tenantErr)}`,
226
215
  ];
227
216
  }
228
217
  }
@@ -230,34 +219,29 @@ async function drainGraphQueue(ctx, phases, snapshot, result) {
230
219
  // Its own handle; an audit failure is logged and never replaces the original phase error.
231
220
  function emitSleepAudit(ctx, opts, dryRun, counts, phaseError) {
232
221
  try {
233
- const db = openHippoDb(ctx.hippoRoot);
234
- try {
235
- const sleepAuditMetadata = {
236
- consolidationCount: counts.consolidation,
237
- dedupCount: counts.dedup,
238
- auditDeletedCount: counts.auditDeleted,
239
- ambientTotal: counts.ambient,
240
- dryRun,
241
- noShare: opts.noShare ?? false,
242
- partial: phaseError !== null,
243
- triggeredByTenant: ctx.tenantId, // preserve for audit forensics
244
- };
245
- if (phaseError)
246
- sleepAuditMetadata.errorMessage = phaseError.message;
247
- // A flush stopped between chunks names the unit it would have committed next, so a unit that fails every night can be found.
248
- const nextUnitIds = failedUnitOf(phaseError);
249
- if (nextUnitIds)
250
- sleepAuditMetadata.nextUnitIds = nextUnitIds;
251
- appendAuditEvent(db, {
222
+ // Tagged '__host__' because sleep is host-wide; the actor still names the operator who ran it.
223
+ const sleepAuditMetadata = {
224
+ consolidationCount: counts.consolidation,
225
+ dedupCount: counts.dedup,
226
+ auditDeletedCount: counts.auditDeleted,
227
+ ambientTotal: counts.ambient,
228
+ dryRun,
229
+ noShare: opts.noShare ?? false,
230
+ partial: phaseError !== null,
231
+ triggeredByTenant: ctx.tenantId, // preserve for audit forensics
232
+ };
233
+ if (phaseError)
234
+ sleepAuditMetadata.errorMessage = phaseError.message;
235
+ // A flush stopped between chunks names the unit it would have committed next, so a unit that fails every night can be found.
236
+ const nextUnitIds = failedUnitOf(phaseError);
237
+ if (nextUnitIds)
238
+ sleepAuditMetadata.nextUnitIds = nextUnitIds;
239
+ sqliteSyncStore(ctx.hippoRoot).appendAuditEvents([{
252
240
  tenantId: '__host__',
253
241
  actor: ctx.actor.subject,
254
242
  op: 'consolidate',
255
243
  metadata: { ...sleepAuditMetadata },
256
- });
257
- }
258
- finally {
259
- closeHippoDb(db);
260
- }
244
+ }]);
261
245
  }
262
246
  catch (auditErr) {
263
247
  // Logged, never thrown: a second failure must not mask the original phaseError.
@@ -1,26 +1,20 @@
1
- import type { AmbientState } from '../ambient.js';
1
+ import type { AmbientState } from '../core/ambient.js';
2
2
  import type { Context } from './types.js';
3
3
  /** Options for `sleep`, one consolidation cycle on a SQLite store that returns counts; unlike `hippo sleep` it skips the auto-learn step. */
4
4
  export interface SleepOpts {
5
5
  /** Report what a sleep would change without applying it; sharing, the ambient summary and the graph refresh are skipped. */
6
6
  dryRun?: boolean;
7
- /** Skip copying high-scoring memories to the global store under `HIPPO_HOME`. Default false, so every tenant's memories are eligible; multi-tenant callers pass `true`. */
7
+ /** Skip copying high-scoring memories to the global store under `HIPPO_HOME`. Default
8
+ * false, so every tenant's memories are eligible; multi-tenant callers pass `true`. */
8
9
  noShare?: boolean;
9
10
  }
10
11
  export interface SleepResult {
11
12
  active: number;
12
13
  removed: number;
13
- /**
14
- * Faded memories the decay pass moved to the dormant store instead of
15
- * deleting (config `dormant.enabled`). Absent when 0. Per-invocation
16
- * activity counter, same class as `removed`.
17
- */
14
+ /** Faded memories the decay pass moved to the dormant store instead of deleting (config `dormant.enabled`); absent when 0. Per-invocation counter, like
15
+ * `removed`. */
18
16
  dormant?: number;
19
- /**
20
- * Dormant memories deleted for good this sleep because they outlived
21
- * `dormant.retentionDays`. Absent when 0. Same per-invocation class as
22
- * `removed`.
23
- */
17
+ /** Dormant memories deleted for good this sleep for outliving `dormant.retentionDays`; absent when 0. Per-invocation counter, like `removed`. */
24
18
  dormantExpired?: number;
25
19
  mergedEpisodic: number;
26
20
  newSemantic: number;
@@ -36,26 +30,13 @@ export interface SleepResult {
36
30
  warningCount: number;
37
31
  };
38
32
  shared?: number;
39
- /**
40
- * Count of memories the auto-share secret veto withheld this sleep
41
- * — rows that passed every other admission gate (transfer score,
42
- * not-already-global) and were blocked solely by `detectSecret`. Absent
43
- * when 0 or when auto-share did not run.
44
- */
33
+ /** Memories the auto-share secret veto withheld: rows that passed every other gate but `detectSecret`; absent when 0 or auto-share did not run. */
45
34
  secretSkipped?: number;
46
- /**
47
- * Count of auto-share candidates the GLOBAL store's rejection
48
- * tombstone refused this sleep; copy paths must not let one rejected
49
- * candidate abort the batch. Absent when 0 or when auto-share did not run.
50
- */
35
+ /** Auto-share candidates the GLOBAL store's rejection tombstone refused (one must not abort the batch); absent when 0 or auto-share did not run. */
51
36
  rejectedSkipped?: number;
52
37
  ambient?: AmbientState | null;
53
- /**
54
- * Graph re-extraction totals across the tenants rebuilt
55
- * this sleep. Absent when no tenant was dirty, and under dryRun (the graph
56
- * phase runs only on a real sleep). Cross-tenant aggregate, one reason
57
- * /v1/sleep stays loopback-only.
58
- */
38
+ /** Graph re-extraction totals across tenants rebuilt this sleep; absent when none was dirty or under dryRun.
39
+ * Cross-tenant aggregate: one reason /v1/sleep stays loopback-only. */
59
40
  graph?: {
60
41
  tenants: number;
61
42
  entities: number;
@@ -1,21 +1,14 @@
1
- import { type TokenSummary, type TokenSurface } from '../token-ledger.js';
2
- import { type FailureSummary } from '../failure-log.js';
1
+ import type { TokenSummary, TokenSurface } from '../store/token-ledger.js';
2
+ import type { FailureSummary } from '../store/failure-log.js';
3
3
  import type { Context } from './types.js';
4
- /**
5
- * Record memory text handed to an agent in the token ledger.
6
- * Best-effort: never throws, because a ledger failure must not fail the
7
- * recall or context call that produced the text.
8
- */
4
+ /** Records memory text handed to an agent in the token ledger. Best-effort: never throws, since a ledger failure must not fail the recall or context call. */
9
5
  export declare function recordTokens(ctx: Context, surface: TokenSurface, use: {
10
6
  items: number;
11
7
  tokens: number;
12
8
  sessionId?: string | null;
13
9
  }): Promise<void>;
14
- /**
15
- * Token ledger totals for the tenant over the last `days` days (default 30):
16
- * tokens sent, skipped as unchanged and re-read by later model calls, per
17
- * surface, with session counts and mean tokens per session.
18
- */
10
+ /** Token ledger totals for the tenant over the last `days` days (default 30): tokens sent, skipped as unchanged and re-read,
11
+ * per surface, with session counts and mean tokens per session. */
19
12
  export declare function tokenSummary(ctx: Context, opts?: {
20
13
  days?: number;
21
14
  }): TokenSummary;
@@ -1,14 +1,10 @@
1
1
  // Token-use and failure reports.
2
- import { openHippoDb, closeHippoDb, rethrowIfSqliteBlocked } from '../db.js';
3
- import { summarizeTokenUse } from '../token-ledger.js';
4
- import { storeFor } from '../store-port.js';
5
- import { summarizeFailures } from '../failure-log.js';
6
- import { log } from '../log.js';
7
- /**
8
- * Record memory text handed to an agent in the token ledger.
9
- * Best-effort: never throws, because a ledger failure must not fail the
10
- * recall or context call that produced the text.
11
- */
2
+ import { rethrowIfSqliteBlocked } from '../db/index.js';
3
+ import { storeFor } from '../store/index.js';
4
+ import { failureLogSummary, tokenUseSummary } from '../store/usage-reports.js';
5
+ import { errorMessage, log } from '../util/log.js';
6
+ import { DAY_MS } from '../util/time.js';
7
+ /** Records memory text handed to an agent in the token ledger. Best-effort: never throws, since a ledger failure must not fail the recall or context call. */
12
8
  export async function recordTokens(ctx, surface, use) {
13
9
  try {
14
10
  await storeFor(ctx).recordTokens({
@@ -22,35 +18,20 @@ export async function recordTokens(ctx, surface, use) {
22
18
  }
23
19
  catch (err) {
24
20
  rethrowIfSqliteBlocked(err);
25
- log.warnThenDebug('api-token-ledger', `token ledger write failed; the reply is unaffected: ${err instanceof Error ? err.message : String(err)}`);
21
+ log.warnThenDebug('api-token-ledger', `token ledger write failed; the reply is unaffected: ${errorMessage(err)}`);
26
22
  }
27
23
  }
28
- /**
29
- * Token ledger totals for the tenant over the last `days` days (default 30):
30
- * tokens sent, skipped as unchanged and re-read by later model calls, per
31
- * surface, with session counts and mean tokens per session.
32
- */
24
+ /** Token ledger totals for the tenant over the last `days` days (default 30): tokens sent, skipped as unchanged and re-read,
25
+ * per surface, with session counts and mean tokens per session. */
33
26
  export function tokenSummary(ctx, opts = {}) {
34
- const db = openHippoDb(ctx.hippoRoot);
35
- try {
36
- return summarizeTokenUse(db, ctx.tenantId, reportWindowStart(opts.days));
37
- }
38
- finally {
39
- closeHippoDb(db);
40
- }
27
+ return tokenUseSummary(ctx.hippoRoot, ctx.tenantId, reportWindowStart(opts.days));
41
28
  }
42
29
  /** Failed tool calls by outcome, and repeats across sessions, over the last `days` days (default 30). */
43
30
  export function failureSummary(ctx, opts = {}) {
44
- const db = openHippoDb(ctx.hippoRoot);
45
- try {
46
- return summarizeFailures(db, ctx.tenantId, reportWindowStart(opts.days));
47
- }
48
- finally {
49
- closeHippoDb(db);
50
- }
31
+ return failureLogSummary(ctx.hippoRoot, ctx.tenantId, reportWindowStart(opts.days));
51
32
  }
52
33
  function reportWindowStart(days) {
53
34
  const span = days !== undefined && Number.isFinite(days) && days > 0 ? days : 30;
54
- return new Date(Date.now() - span * 86_400_000).toISOString();
35
+ return new Date(Date.now() - span * DAY_MS).toISOString();
55
36
  }
56
37
  //# sourceMappingURL=tokens.js.map