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
@@ -0,0 +1,64 @@
1
+ // Dormant memories: list, restore, forget and check.
2
+ import { ConflictError, NotFoundError } from '../../core/api-errors.js';
3
+ import { stampOriginProject } from '../../store/entry-row.js';
4
+ import { strengthAblation } from '../../core/ablation.js';
5
+ import { createMemory, calculateStrength } from '../../core/memory.js';
6
+ import { configOf } from '../config-of.js';
7
+ import { canTouchScope, personalScopeOf } from '../../core/recall-scope.js';
8
+ /**
9
+ * A tenant's dormant memories (src/store/dormant.ts): what sleep moved out of active memory when `dormant.enabled` is
10
+ * on. Newest first;
11
+ * `opts.query` keeps rows containing every term (case-insensitive). */
12
+ export function listDormant(ctx, opts = {}) {
13
+ return ctx.store.dormant.list(ctx.tenantId, personalScopeOf(ctx.actor), opts);
14
+ }
15
+ /**
16
+ * Restores a dormant memory as if just recalled, with a full half-life; a row set aside by audit repair returns
17
+ * `verified`.
18
+ * Throws if the tenant has no such dormant id or a live memory holds it, and RejectedValueError if the value was since
19
+ * rejected (the dormant copy stays).
20
+ */
21
+ export async function restoreDormant(ctx, id) {
22
+ const outcome = await ctx.store.dormant.restore(ctx.tenantId, {
23
+ id,
24
+ actor: ctx.actor.subject,
25
+ inReach: (scope) => canTouchScope(ctx.actor, scope),
26
+ revive: (snapshot, now) => reviveSnapshot(ctx, snapshot, now),
27
+ });
28
+ if (outcome.status === 'missing')
29
+ throw new NotFoundError(`dormant memory not found: ${id}`);
30
+ if (outcome.status === 'active') {
31
+ throw new ConflictError(`memory ${id} is already active; forget it before restoring its dormant copy`);
32
+ }
33
+ return outcome.entry;
34
+ }
35
+ function reviveSnapshot(ctx, dormant, now) {
36
+ // A snapshot can predate a field added later: createMemory supplies defaults, then the snapshot overrides every field
37
+ // it carries.
38
+ // The placeholder content only meets createMemory's minimum length, so a legacy row under 3 chars still restores.
39
+ const revived = {
40
+ ...createMemory('dormant snapshot defaults', { baseHalfLifeDays: configOf(ctx).defaultHalfLifeDays }),
41
+ ...dormant.entry,
42
+ last_retrieved: now.toISOString(),
43
+ };
44
+ if (dormant.reason === 'quality-repair')
45
+ revived.confidence = 'verified';
46
+ return stampOriginProject(ctx.hippoRoot, {
47
+ ...revived,
48
+ strength: calculateStrength(revived, now, { ablation: strengthAblation() }),
49
+ });
50
+ }
51
+ /**
52
+ * Permanently deletes a dormant memory, the explicit "forget it for good"; throws when the tenant has no dormant memory
53
+ * with that id.
54
+ */
55
+ export async function forgetDormant(ctx, id) {
56
+ const forgotten = await ctx.store.dormant.forget(ctx.tenantId, personalScopeOf(ctx.actor), id, ctx.actor.subject);
57
+ if (!forgotten)
58
+ throw new NotFoundError(`dormant memory not found: ${id}`);
59
+ }
60
+ /** Whether the tenant holds a dormant memory with this id that the caller may touch (for "not found" hints). */
61
+ export function isDormant(ctx, id) {
62
+ return ctx.store.dormant.holds(ctx.tenantId, personalScopeOf(ctx.actor), id);
63
+ }
64
+ //# sourceMappingURL=dormant.js.map
@@ -1,5 +1,5 @@
1
- import { type InvalidationOptions, type InvalidationResult, type InvalidationTarget } from '../learn/invalidation.js';
2
- import type { Context } from './types.js';
1
+ import { type InvalidationOptions, type InvalidationResult, type InvalidationTarget } from '../../learn/invalidation.js';
2
+ import type { Context, ContextWith } from '../types.js';
3
3
  /** How a surface writes what it learns. */
4
4
  export interface LearnProfile {
5
5
  readonly tags: readonly string[];
@@ -28,8 +28,9 @@ export interface LearnResult {
28
28
  }>;
29
29
  }
30
30
  /** Learn from `repoPath`'s last `days` of commits into the caller's tenant. Host admin only. */
31
- export declare function learn(ctx: Context, opts: LearnOpts): Promise<LearnResult>;
31
+ export declare function learn(ctx: ContextWith<'lessonWrites'>, opts: LearnOpts): Promise<LearnResult>;
32
32
  export type { InvalidationOptions, InvalidationResult, InvalidationTarget };
33
- /** `hippo invalidate`: weakens the caller's tenant's memories that reference `target.from`, or only the one `options.onlyId` names. */
33
+ /** `hippo invalidate`: weakens the caller's tenant's memories that
34
+ * reference `target.from`, or only the one `options.onlyId` names. */
34
35
  export declare function invalidateMemories(ctx: Context, target: InvalidationTarget, options: InvalidationOptions): InvalidationResult;
35
36
  //# sourceMappingURL=learn.d.ts.map
@@ -0,0 +1,138 @@
1
+ // Git auto-learn: fix/revert/bug commit subjects become memories.
2
+ // `hippo learn`, init, sleep and MCP hippo_learn share it.
3
+ import { ForbiddenError } from '../../core/api-errors.js';
4
+ import { fetchGitLog, extractLessons, partitionLessons, isGitRepo } from '../../learn/autolearn.js';
5
+ import { configOf } from '../config-of.js';
6
+ import { embedMemory } from '../../search/embed-memories.js';
7
+ import { extractInvalidationTarget, invalidateMatching, invalidateMatchingAmong, } from '../../learn/invalidation.js';
8
+ import { createMemory, Layer, schemaFitFrom, schemaFitSourceOf } from '../../core/memory.js';
9
+ import { extractPathTags } from '../../search/path-context.js';
10
+ import { canReadScope, personalScopeOf } from '../../core/recall-scope.js';
11
+ import { duplicateKey, longestWord, storedTextKeys } from '../../util/same-text.js';
12
+ // SHORTCUT: two profiles keep each surface's rows as they were; fold MCP onto the CLI profile once it may invalidate.
13
+ export const CLI_LEARN = Object.freeze({
14
+ tags: Object.freeze(['error', 'git-learned']),
15
+ source: 'git-learn',
16
+ full: true,
17
+ });
18
+ export const MCP_LEARN = Object.freeze({
19
+ tags: Object.freeze(['git-learned']),
20
+ source: 'git',
21
+ full: false,
22
+ });
23
+ /** Learn from `repoPath`'s last `days` of commits into the caller's tenant. Host admin only. */
24
+ export async function learn(ctx, opts) {
25
+ // It reads the host's own git history, which belongs to the host, not to the caller's tenant.
26
+ if (!ctx.actor.hostAdmin)
27
+ throw new ForbiddenError('hippo_learn requires a host admin');
28
+ const none = { added: 0, skipped: 0, rejected: 0, lowInfo: 0, invalidations: [] };
29
+ if (!isGitRepo(opts.repoPath))
30
+ return { status: 'not-a-repo', ...none };
31
+ const gitLog = fetchGitLog(opts.repoPath, opts.days);
32
+ if (!gitLog.trim())
33
+ return { status: 'no-commits', ...none };
34
+ const config = configOf(ctx);
35
+ const parsed = extractLessons(gitLog, config.gitLearnPatterns);
36
+ if (parsed.length === 0)
37
+ return { status: 'no-lessons', ...none };
38
+ // The gate filters the loop input, so a dropped lesson neither stores nor invalidates; docs/decisions
39
+ // git-learn-gate-placement says why.
40
+ const { kept, dropped } = partitionLessons(parsed);
41
+ return { status: 'scanned', lowInfo: dropped.length, ...await writeLessons(ctx, kept, opts, config) };
42
+ }
43
+ /** Writes `queued` in one transaction; a refused lesson is dropped from `live` and `keys` and must not abort the rest
44
+ * of the git-log scan. */
45
+ async function landLessons(batch, queued) {
46
+ if (queued.length === 0)
47
+ return;
48
+ const { ctx, writes, live, keys, counts } = batch;
49
+ const written = new Set(await writes.writeSkippingRejected(queued.map((q) => q.entry), ctx.actor.subject));
50
+ const landed = [];
51
+ for (const { entry, key } of queued) {
52
+ if (written.has(entry.id)) {
53
+ landed.push(entry);
54
+ continue;
55
+ }
56
+ counts.rejected++;
57
+ keys.delete(key);
58
+ const at = live.indexOf(entry);
59
+ if (at !== -1)
60
+ live.splice(at, 1);
61
+ }
62
+ counts.added += landed.length;
63
+ if (!batch.full)
64
+ return;
65
+ if (landed.length > 0)
66
+ await writes.bumpRemembered(landed.length);
67
+ for (const entry of landed)
68
+ void embedMemory(ctx.hippoRoot, entry, undefined, ctx.store);
69
+ }
70
+ /** The duplicate keys a batch skips: every readable row's with
71
+ * `existing`, else only the rows holding a lesson's longest word. */
72
+ async function knownKeys(ctx, writes, lessons, existing) {
73
+ return storedTextKeys(existing ?? (await writes.textsHoldingWords(ctx.tenantId, lessons.map(longestWord), personalScopeOf(ctx.actor))));
74
+ }
75
+ function newLessonMemory(lesson, profile, inputs) {
76
+ const { tenantId, config, fitSource, pathTags } = inputs;
77
+ const entry = createMemory(lesson, {
78
+ layer: Layer.Episodic,
79
+ tags: [...profile.tags],
80
+ source: profile.source,
81
+ confidence: 'observed',
82
+ schemaFit: fitSource && schemaFitFrom(lesson, [...profile.tags], fitSource),
83
+ tenantId,
84
+ baseHalfLifeDays: config.defaultHalfLifeDays,
85
+ });
86
+ for (const tag of pathTags)
87
+ if (!entry.tags.includes(tag))
88
+ entry.tags.push(tag);
89
+ return entry;
90
+ }
91
+ async function writeLessons(ctx, lessons, opts, config) {
92
+ const { tenantId } = ctx;
93
+ const { profile } = opts;
94
+ const store = ctx.store;
95
+ const writes = store.lessonWrites;
96
+ // One read serves the batch: invalidation matches against `live`,
97
+ // which follows every write below, as a reload per lesson did.
98
+ const live = profile.full ? await writes.tenantEntries(tenantId) : [];
99
+ // Schema fit needs every row; without it, only rows holding a lesson's longest word can be its copy. Learn is
100
+ // host-admin only, so both read what an admin can.
101
+ const existing = profile.full ? live.filter((e) => e.scope == null || canReadScope(ctx.actor, e.scope)) : undefined;
102
+ // Each lesson is scored against `existing` as it was before the batch, so its tag counts and texts are read once.
103
+ const fitSource = existing && schemaFitSourceOf(existing);
104
+ const batch = {
105
+ ctx, writes, live, keys: await knownKeys(ctx, writes, lessons, existing), full: profile.full,
106
+ counts: { added: 0, skipped: 0, rejected: 0, invalidations: [] },
107
+ };
108
+ const pathTags = profile.full ? extractPathTags(opts.repoPath) : [];
109
+ // Lessons queue and land in one transaction; an invalidation reads the store, so it flushes the queue first.
110
+ const queue = [];
111
+ for (const lesson of lessons) {
112
+ const key = duplicateKey(lesson);
113
+ if (batch.keys.has(key)) {
114
+ batch.counts.skipped++;
115
+ continue;
116
+ }
117
+ const target = profile.full ? extractInvalidationTarget(lesson) : null;
118
+ if (target) {
119
+ await landLessons(batch, queue.splice(0));
120
+ const { invalidated } = await invalidateMatchingAmong(store, live, target, tenantId);
121
+ if (invalidated > 0)
122
+ batch.counts.invalidations.push({ from: target.from, count: invalidated });
123
+ }
124
+ const entry = newLessonMemory(lesson, profile, { tenantId, config, fitSource, pathTags });
125
+ queue.push({ entry, key });
126
+ if (profile.full)
127
+ live.push(entry);
128
+ batch.keys.add(key);
129
+ }
130
+ await landLessons(batch, queue.splice(0));
131
+ return batch.counts;
132
+ }
133
+ /** `hippo invalidate`: weakens the caller's tenant's memories that
134
+ * reference `target.from`, or only the one `options.onlyId` names. */
135
+ export function invalidateMemories(ctx, target, options) {
136
+ return invalidateMatching(ctx.hippoRoot, target, ctx.tenantId, options);
137
+ }
138
+ //# sourceMappingURL=learn.js.map
@@ -0,0 +1,38 @@
1
+ import { auditMemories } from '../../core/memory-audit.js';
2
+ import { autoShare } from '../../sharing/share.js';
3
+ import { runConsolidation } from '../../consolidate/sleep.js';
4
+ import { loadConfig } from '../../core/config.js';
5
+ import { deduplicateStore } from '../../consolidate/dedupe.js';
6
+ import { computeAmbientState } from '../../core/ambient.js';
7
+ import { type ExtractResult } from '../../graph/extract.js';
8
+ import type { MemoryEntry } from '../../core/memory.js';
9
+ import type { ContextWith } from '../types.js';
10
+ import type { Consolidation, Objects } from '../../store/port.js';
11
+ import type { SleepOpts, SleepResult } from './sleep.js';
12
+ /** Test-only seam: `runSleep` overrides force a phase to throw into emitSleepAudit's `partial: true` row; production
13
+ * never sets them. */
14
+ export interface SleepPhases {
15
+ consolidate: typeof runConsolidation;
16
+ deduplicateStore: typeof deduplicateStore;
17
+ auditMemories: typeof auditMemories;
18
+ autoShare: typeof autoShare;
19
+ loadAllEntries: (store: Consolidation) => MemoryEntry[];
20
+ computeAmbientState: typeof computeAmbientState;
21
+ loadConfig: typeof loadConfig;
22
+ loadPendingExtractionTenants: (store: Consolidation) => DirtyTenantSnapshot['dirtyTenants'];
23
+ extractGraph: (objects: Objects, hippoRoot: string, tenantId: string) => ExtractResult | Promise<ExtractResult>;
24
+ }
25
+ interface DirtyTenantSnapshot {
26
+ dirtyTenants: {
27
+ tenantId: string;
28
+ maxPendingId: number;
29
+ }[];
30
+ error: string | null;
31
+ }
32
+ /** The groups one sleep runs on: hippo.db's own files, the audit pass and the graph's objects. */
33
+ type SleepContext = ContextWith<'auditMaintenance' | 'objects' | 'localFiles'>;
34
+ /** `sleep` with its phase dependencies overridable; tests pass
35
+ * stubs here, so the seam never touches the public `SleepOpts`. */
36
+ export declare function runSleep(ctx: SleepContext, opts: SleepOpts, overrides?: Partial<SleepPhases>): Promise<SleepResult>;
37
+ export {};
38
+ //# sourceMappingURL=sleep-run.d.ts.map
@@ -1,62 +1,63 @@
1
1
  // The sleep pipeline behind `sleep`, with its phase dependencies injectable; kept out of the package root.
2
- import { loadAllEntries } from '../store/entry-reads.js';
3
- import { memoriesBackingObjects } from '../store/delete-and-batch.js';
4
- import { reportAuditWriteFailure } from '../store/audit.js';
5
- import { auditMemories } from '../core/memory-audit.js';
6
- import { sqliteSyncStore } from '../store/sqlite/store.js';
7
- import { AUTO_SHARE_MIN_SCORE, autoShare } from '../sharing/share.js';
8
- import { consolidate } from '../consolidate/sleep.js';
9
- import { failedUnitOf } from '../store/delete-and-batch.js';
10
- import { loadConfig } from '../core/config.js';
11
- import { deduplicateStore } from '../consolidate/dedupe.js';
12
- import { computeAmbientState } from '../core/ambient.js';
13
- import { loadPendingExtractionTenants, markPendingProcessedUpTo } from '../store/graph-queue.js';
14
- import { extractGraphChunked } from '../graph/extract.js';
15
- import { removeAuditErrors } from './audit.js';
16
- import { errorMessage } from '../util/log.js';
2
+ import { auditMemories } from '../../core/memory-audit.js';
3
+ import { AUTO_SHARE_MIN_SCORE, autoShare } from '../../sharing/share.js';
4
+ import { runConsolidation } from '../../consolidate/sleep.js';
5
+ import { loadConfig } from '../../core/config.js';
6
+ import { deduplicateStore } from '../../consolidate/dedupe.js';
7
+ import { computeAmbientState } from '../../core/ambient.js';
8
+ import { extractGraphChunked } from '../../graph/extract.js';
9
+ import { objectsOf } from '../objects/objects.js';
10
+ import { removeAuditErrors } from '../auth/audit.js';
11
+ import { errorMessage } from '../../util/log.js';
17
12
  const DEFAULT_SLEEP_PHASES = {
18
- consolidate,
13
+ consolidate: runConsolidation,
19
14
  deduplicateStore,
20
15
  auditMemories,
21
16
  autoShare,
22
- loadAllEntries,
17
+ loadAllEntries: (store) => store.allEntries(),
23
18
  computeAmbientState,
24
19
  loadConfig,
25
- loadPendingExtractionTenants,
20
+ loadPendingExtractionTenants: (store) => store.dirtyGraphTenants(),
26
21
  extractGraph: extractGraphChunked,
27
22
  };
28
- /** `sleep` with its phase dependencies overridable; tests pass stubs here, so the seam never touches the public `SleepOpts`. */
23
+ /** `sleep` with its phase dependencies overridable; tests pass
24
+ * stubs here, so the seam never touches the public `SleepOpts`. */
29
25
  export async function runSleep(ctx, opts, overrides = {}) {
30
26
  const dryRun = Boolean(opts.dryRun);
31
27
  const phases = { ...DEFAULT_SLEEP_PHASES, ...overrides };
32
- // Phase counters for the consolidate audit emit (in finally), accumulated per phase so a partial failure still reports what got done.
28
+ // Phase counters for the consolidate audit emit (in finally), accumulated per phase so a partial failure still
29
+ // reports what got done.
33
30
  const counts = { consolidation: 0, dedup: 0, auditDeleted: 0, ambient: 0 };
34
31
  let phaseError = null;
35
32
  try {
36
33
  return await runSleepPhases(ctx, opts, phases, counts);
37
34
  }
38
35
  catch (err) {
39
- // SAFETY: phaseError is only read via phaseError.message / (phaseError !== null) below, safe even if a non-Error was thrown;
40
- // this mirrors the lenient (err as Error) pattern used through this catch chain.
36
+ // SAFETY: phaseError is only read via phaseError.message / (phaseError !== null) below, safe even if a non-Error
37
+ // was thrown; this mirrors the lenient (err as Error) pattern used through this catch chain.
41
38
  phaseError = err;
42
39
  throw err;
43
40
  }
44
41
  finally {
45
- emitSleepAudit(ctx, opts, dryRun, counts, phaseError);
42
+ await emitSleepAudit(ctx, opts, dryRun, counts, phaseError);
46
43
  }
47
44
  }
48
45
  async function runSleepPhases(ctx, opts, phases, counts) {
49
46
  const dryRun = Boolean(opts.dryRun);
50
47
  const snapshot = snapshotDirtyTenants(ctx, phases, dryRun);
51
48
  // Phase 1: Consolidation.
52
- const consolidateResult = await phases.consolidate(ctx.hippoRoot, { dryRun });
49
+ const local = ctx.store.localFiles;
50
+ const consolidateResult = await phases.consolidate(local, { dryRun });
53
51
  counts.consolidation = consolidateResult.semanticCreated + consolidateResult.merged;
54
52
  const result = sleepResultFrom(consolidateResult, dryRun);
55
- // Consolidate's own read predates its writes, so it cannot stand in for this one.
56
- // One read after consolidation serves dedup, the audit and ambient: dedup reports every row it deletes, so later phases subtract.
57
- const loaded = { entries: phases.loadAllEntries(ctx.hippoRoot), backing: memoriesBackingObjects(ctx.hippoRoot) };
53
+ // Consolidate's own read predates its writes, so it cannot stand in for this one. One read after consolidation serves
54
+ // dedup, the audit and ambient: dedup reports every row it deletes, so later phases subtract.
55
+ const loaded = {
56
+ entries: phases.loadAllEntries(local.consolidation),
57
+ backing: local.consolidation.objectBackedIds(),
58
+ };
58
59
  // Phase 2: Dedup (post-consolidate near-duplicate cleanup).
59
- const dedupResult = phases.deduplicateStore(ctx.hippoRoot, { dryRun, actor: ctx.actor.subject, loaded });
60
+ const dedupResult = phases.deduplicateStore(local.consolidation, { dryRun, actor: ctx.actor.subject, loaded });
60
61
  counts.dedup = dedupResult.removed;
61
62
  if (dedupResult.removed > 0)
62
63
  result.deduped = dedupSummary(dedupResult);
@@ -79,7 +80,7 @@ function snapshotDirtyTenants(ctx, phases, dryRun) {
79
80
  const snapshot = { dirtyTenants: [], error: null };
80
81
  if (!dryRun) {
81
82
  try {
82
- snapshot.dirtyTenants = phases.loadPendingExtractionTenants(ctx.hippoRoot);
83
+ snapshot.dirtyTenants = phases.loadPendingExtractionTenants(ctx.store.localFiles.consolidation);
83
84
  }
84
85
  catch (snapErr) {
85
86
  snapshot.error = errorMessage(snapErr);
@@ -117,11 +118,16 @@ function dedupSummary(dedupResult) {
117
118
  crossDups,
118
119
  };
119
120
  }
120
- /** `removed` counts audit errors deleted (or that would be under dryRun); `remaining` is what the audit read, less the rows it deleted. */
121
+ /** `removed` counts audit errors deleted (or that would be under dryRun); `remaining` is what the audit read, less the
122
+ * rows it deleted. */
121
123
  async function runQualityAudit(ctx, phases, options) {
122
124
  const { dryRun, consolidateResult, dedupResult, result, loaded } = options;
123
- // The load followed consolidation, so only a dry run still holds the rows consolidation would remove; dedup's pairs are gone or would be.
124
- const planned = new Set([...(dryRun ? consolidateResult.removedIds ?? [] : []), ...dedupResult.pairs.map((p) => p.removed)]);
125
+ // The load followed consolidation, so only a dry run still holds the rows consolidation would remove; dedup's pairs
126
+ // are gone or would be.
127
+ const planned = new Set([
128
+ ...(dryRun ? (consolidateResult.removedIds ?? []) : []),
129
+ ...dedupResult.pairs.map((p) => p.removed),
130
+ ]);
125
131
  const allEntries = loaded.entries.filter((e) => !planned.has(e.id));
126
132
  const auditOut = phases.auditMemories(allEntries, loaded.backing);
127
133
  if (auditOut.issues.length === 0)
@@ -140,7 +146,7 @@ async function runQualityAudit(ctx, phases, options) {
140
146
  return { removed, remaining: allEntries.filter((e) => !deleted.has(e.id)) };
141
147
  }
142
148
  function shareOnSleep(ctx, phases, result) {
143
- const sleepConfig = phases.loadConfig(ctx.hippoRoot);
149
+ const sleepConfig = ctx.config ?? phases.loadConfig(ctx.hippoRoot);
144
150
  if (!sleepConfig.autoShareOnSleep)
145
151
  return;
146
152
  // Both skip counters are surfaced so the secret veto and the rejection tombstone are observable, not silent.
@@ -158,7 +164,7 @@ function shareOnSleep(ctx, phases, result) {
158
164
  }
159
165
  /** Returns the ambient total the audit row reports: 0 when ambient is off or no current row is left. */
160
166
  function summarizeAmbient(ctx, phases, result, loaded) {
161
- const postSleepConfig = phases.loadConfig(ctx.hippoRoot);
167
+ const postSleepConfig = ctx.config ?? phases.loadConfig(ctx.hippoRoot);
162
168
  if (!postSleepConfig.ambient.enabled)
163
169
  return 0;
164
170
  const postSleepEntries = loaded.filter((e) => !e.superseded_by);
@@ -194,10 +200,11 @@ async function drainGraphQueue(ctx, phases, snapshot, result) {
194
200
  ];
195
201
  }
196
202
  }
197
- /** Rebuilds one dirty tenant's graph into `rebuilt` and drains its queue; a failure is a detail line and the tenant stays pending. */
203
+ /** Rebuilds one dirty tenant's graph into `rebuilt` and drains its
204
+ * queue; a failure is a detail line and the tenant stays pending. */
198
205
  async function rebuildDirtyTenant(ctx, phases, dirty, rebuilt, result) {
199
206
  try {
200
- const ext = await phases.extractGraph(ctx.hippoRoot, dirty.tenantId);
207
+ const ext = await phases.extractGraph(objectsOf(ctx), ctx.hippoRoot, dirty.tenantId);
201
208
  // Count the rebuild as soon as it succeeds — it happened regardless of
202
209
  // the drain-mark below.
203
210
  rebuilt.tenants += 1;
@@ -211,7 +218,7 @@ async function rebuildDirtyTenant(ctx, phases, dirty, rebuilt, result) {
211
218
  }
212
219
  // Watermark drain: only items enqueued before this rebuild started are marked; later arrivals stay pending.
213
220
  // Marked only after the last chunk, so a run stopped between chunks leaves the tenant for the next one.
214
- markPendingProcessedUpTo(ctx.hippoRoot, dirty.tenantId, dirty.maxPendingId);
221
+ ctx.store.localFiles.consolidation.markGraphDrained(dirty.tenantId, dirty.maxPendingId);
215
222
  }
216
223
  catch (tenantErr) {
217
224
  result.details = [
@@ -221,8 +228,8 @@ async function rebuildDirtyTenant(ctx, phases, dirty, rebuilt, result) {
221
228
  }
222
229
  }
223
230
  // One 'consolidate' row per sleep, emitted from finally so a partial failure still reports what got done.
224
- // Its own handle; an audit failure is logged and never replaces the original phase error.
225
- function emitSleepAudit(ctx, opts, dryRun, counts, phaseError) {
231
+ // An audit failure is logged and never replaces the original phase error.
232
+ async function emitSleepAudit(ctx, opts, dryRun, counts, phaseError) {
226
233
  try {
227
234
  // Tagged '__host__' because sleep is host-wide; the actor still names the operator who ran it.
228
235
  const sleepAuditMetadata = {
@@ -237,11 +244,12 @@ function emitSleepAudit(ctx, opts, dryRun, counts, phaseError) {
237
244
  };
238
245
  if (phaseError)
239
246
  sleepAuditMetadata.errorMessage = phaseError.message;
240
- // A flush stopped between chunks names the unit it would have committed next, so a unit that fails every night can be found.
241
- const nextUnitIds = failedUnitOf(phaseError);
247
+ // A flush stopped between chunks names the unit it would have
248
+ // committed next, so a unit that fails every night can be found.
249
+ const nextUnitIds = ctx.store.localFiles.consolidation.failedUnitOf(phaseError);
242
250
  if (nextUnitIds)
243
251
  sleepAuditMetadata.nextUnitIds = nextUnitIds;
244
- sqliteSyncStore(ctx.hippoRoot).appendAuditEvents([{
252
+ await ctx.store.appendAuditEvents([{
245
253
  tenantId: '__host__',
246
254
  actor: ctx.actor.subject,
247
255
  op: 'consolidate',
@@ -250,7 +258,7 @@ function emitSleepAudit(ctx, opts, dryRun, counts, phaseError) {
250
258
  }
251
259
  catch (auditErr) {
252
260
  // Logged, never thrown: a second failure must not mask the original phaseError.
253
- reportAuditWriteFailure('consolidate', String(auditErr));
261
+ ctx.store.localFiles.consolidation.reportAuditFailure('consolidate', String(auditErr));
254
262
  }
255
263
  }
256
264
  //# sourceMappingURL=sleep-run.js.map
@@ -1,8 +1,10 @@
1
- import type { AmbientState } from '../core/ambient.js';
2
- import type { Context } from './types.js';
3
- /** Options for `sleep`, one consolidation cycle on a SQLite store that returns counts; unlike `hippo sleep` it skips the auto-learn step. */
1
+ import type { AmbientState } from '../../core/ambient.js';
2
+ import { type ContextWith } from '../types.js';
3
+ /** Options for `sleep`, one consolidation cycle on a SQLite store that returns counts; unlike `hippo sleep` it skips
4
+ * the auto-learn step. */
4
5
  export interface SleepOpts {
5
- /** Report what a sleep would change without applying it; sharing, the ambient summary and the graph refresh are skipped. */
6
+ /** Report what a sleep would change without applying it; sharing,
7
+ * the ambient summary and the graph refresh are skipped. */
6
8
  dryRun?: boolean;
7
9
  /** Skip copying high-scoring memories to the global store under `HIPPO_HOME`. Default
8
10
  * false, so every tenant's memories are eligible; multi-tenant callers pass `true`. */
@@ -11,10 +13,11 @@ export interface SleepOpts {
11
13
  export interface SleepResult {
12
14
  active: number;
13
15
  removed: number;
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`. */
16
+ /** Faded memories the decay pass moved to the dormant store instead of deleting (config `dormant.enabled`); absent
17
+ * when 0. Per-invocation counter, like `removed`. */
16
18
  dormant?: number;
17
- /** Dormant memories deleted for good this sleep for outliving `dormant.retentionDays`; absent when 0. Per-invocation counter, like `removed`. */
19
+ /** Dormant memories deleted for good this sleep for outliving `dormant.retentionDays`; absent when 0. Per-invocation
20
+ * counter, like `removed`. */
18
21
  dormantExpired?: number;
19
22
  mergedEpisodic: number;
20
23
  newSemantic: number;
@@ -30,9 +33,11 @@ export interface SleepResult {
30
33
  warningCount: number;
31
34
  };
32
35
  shared?: number;
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. */
36
+ /** Memories the auto-share secret veto withheld: rows that passed every other gate but `detectSecret`; absent when 0
37
+ * or auto-share did not run. */
34
38
  secretSkipped?: number;
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. */
39
+ /** Auto-share candidates the GLOBAL store's rejection tombstone refused (one must not abort the batch); absent when 0
40
+ * or auto-share did not run. */
36
41
  rejectedSkipped?: number;
37
42
  ambient?: AmbientState | null;
38
43
  /** Graph re-extraction totals across tenants rebuilt this sleep; absent when none was dirty or under dryRun.
@@ -44,6 +49,7 @@ export interface SleepResult {
44
49
  };
45
50
  details?: string[];
46
51
  }
47
- /** Sleeps the WHOLE hippoRoot, every tenant, so /v1/sleep stays loopback-only; SQLite only; never auto-deletes pinned, raw, kept or object-backing rows. */
48
- export declare function sleep(ctx: Context, opts?: SleepOpts): Promise<SleepResult>;
52
+ /** Sleeps the WHOLE hippoRoot, every tenant, so /v1/sleep stays loopback-only; SQLite only; never auto-deletes pinned,
53
+ * raw, kept or object-backing rows. */
54
+ export declare function sleep(ctx: ContextWith<'localFiles'>, opts?: SleepOpts): Promise<SleepResult>;
49
55
  //# sourceMappingURL=sleep.d.ts.map
@@ -0,0 +1,9 @@
1
+ // The sleep cycle: decay, consolidation, dedupe, graph extraction and the other maintenance passes.
2
+ import { narrowContext } from '../types.js';
3
+ import { runSleep } from './sleep-run.js';
4
+ /** Sleeps the WHOLE hippoRoot, every tenant, so /v1/sleep stays loopback-only; SQLite only; never auto-deletes pinned,
5
+ * raw, kept or object-backing rows. */
6
+ export async function sleep(ctx, opts = {}) {
7
+ return runSleep(narrowContext(ctx, 'auditMaintenance', 'objects', 'localFiles'), opts);
8
+ }
9
+ //# sourceMappingURL=sleep.js.map
@@ -13,7 +13,9 @@ export interface StoreStatus {
13
13
  export declare function storeStatus(ctx: Context, now: Date, atRiskBelow: number): StoreStatus;
14
14
  /** Ids and dimension of the stored vectors. Every tenant, so the host admin only. */
15
15
  export declare function vectorSummary(ctx: Context): StoredVectorSummary;
16
- /** Whether the stored vectors were built by a different model than `providerId`. Every tenant, so the host admin only. */
16
+ /**
17
+ * Whether the stored vectors were built by a different model than `providerId`. Every tenant, so the host admin only.
18
+ */
17
19
  export declare function embeddingReindexNeeded(ctx: Context, providerId: string): boolean;
18
20
  /** Every stored physics particle. Every tenant, so the host admin only. */
19
21
  export declare function storedParticles(ctx: Context): PhysicsParticle[];
@@ -17,7 +17,9 @@ export function vectorSummary(ctx) {
17
17
  requireHostAdmin(ctx, 'Reading every tenant');
18
18
  return storedVectorSummary(ctx.hippoRoot);
19
19
  }
20
- /** Whether the stored vectors were built by a different model than `providerId`. Every tenant, so the host admin only. */
20
+ /**
21
+ * Whether the stored vectors were built by a different model than `providerId`. Every tenant, so the host admin only.
22
+ */
21
23
  export function embeddingReindexNeeded(ctx, providerId) {
22
24
  requireHostAdmin(ctx, 'Reading every tenant');
23
25
  return embeddingModelRequiresReindex(ctx.hippoRoot, providerId);
@@ -1,4 +1,7 @@
1
1
  import { type Context } from './types.js';
2
- /** Create the store at `ctx.hippoRoot`, or finish setting up one that exists; a store holds every tenant, so the host admin only. */
2
+ /**
3
+ * Create the store at `ctx.hippoRoot`, or finish setting up one that exists; a store holds every tenant, so the host
4
+ * admin only.
5
+ */
3
6
  export declare function initMemoryStore(ctx: Context): void;
4
7
  //# sourceMappingURL=store-init.d.ts.map
@@ -1,7 +1,10 @@
1
1
  // Creating a store for `hippo init`: the database, its mirror folders and first-run setup.
2
2
  import { initStore } from '../store/open.js';
3
3
  import { requireHostAdmin } from './types.js';
4
- /** Create the store at `ctx.hippoRoot`, or finish setting up one that exists; a store holds every tenant, so the host admin only. */
4
+ /**
5
+ * Create the store at `ctx.hippoRoot`, or finish setting up one that exists; a store holds every tenant, so the host
6
+ * admin only.
7
+ */
5
8
  export function initMemoryStore(ctx) {
6
9
  requireHostAdmin(ctx, 'Creating a store');
7
10
  initStore(ctx.hippoRoot);
@@ -1,19 +1,20 @@
1
1
  import type { TokenSummary, TokenSurface } from '../store/token-ledger.js';
2
2
  import type { FailureSummary } from '../store/failure-log.js';
3
- import type { Context } from './types.js';
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. */
5
- export declare function recordTokens(ctx: Context, surface: TokenSurface, use: {
3
+ import type { ContextWith, StoreContext } from './types.js';
4
+ /** Records memory text handed to an agent in the token ledger. Best-effort: never throws, since a ledger failure must
5
+ * not fail the recall or context call. */
6
+ export declare function recordTokens(ctx: StoreContext, surface: TokenSurface, use: {
6
7
  items: number;
7
8
  tokens: number;
8
9
  sessionId?: string | null;
9
10
  }): Promise<void>;
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. */
12
- export declare function tokenSummary(ctx: Context, opts?: {
11
+ /** Token ledger totals for the tenant over the last `days` days (default 30): tokens sent, skipped as unchanged and
12
+ * re-read, per surface, with session counts and mean tokens per session. */
13
+ export declare function tokenSummary(ctx: ContextWith<'reports'>, opts?: {
13
14
  days?: number;
14
- }): TokenSummary;
15
+ }): Promise<TokenSummary>;
15
16
  /** Failed tool calls by outcome, and repeats across sessions, over the last `days` days (default 30). */
16
- export declare function failureSummary(ctx: Context, opts?: {
17
+ export declare function failureSummary(ctx: ContextWith<'reports'>, opts?: {
17
18
  days?: number;
18
- }): FailureSummary;
19
+ }): Promise<FailureSummary>;
19
20
  //# sourceMappingURL=tokens.d.ts.map