hippo-memory 1.72.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (995) hide show
  1. package/README.md +6 -4
  2. package/dist/agent-memories/apply.d.ts +7 -5
  3. package/dist/agent-memories/apply.js +66 -39
  4. package/dist/agent-memories/claude-code.d.ts +8 -2
  5. package/dist/agent-memories/claude-code.js +26 -7
  6. package/dist/agent-memories/copilot.js +2 -1
  7. package/dist/agent-memories/files.js +2 -1
  8. package/dist/agent-memories/legacy.d.ts +6 -3
  9. package/dist/agent-memories/legacy.js +35 -14
  10. package/dist/agent-memories/markdown.d.ts +3 -1
  11. package/dist/agent-memories/markdown.js +3 -1
  12. package/dist/agent-memories/openclaw.js +5 -2
  13. package/dist/agent-memories/plan.js +11 -1
  14. package/dist/agent-memories/project-folds.js +2 -1
  15. package/dist/agent-memories/report.d.ts +4 -1
  16. package/dist/agent-memories/report.js +43 -9
  17. package/dist/agent-memories/source.d.ts +8 -2
  18. package/dist/agent-memories/source.js +11 -3
  19. package/dist/agent-memories/sync.d.ts +7 -2
  20. package/dist/agent-memories/sync.js +141 -101
  21. package/dist/api/assemble.d.ts +6 -4
  22. package/dist/api/assemble.js +11 -5
  23. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  24. package/dist/api/auth/audit.js +58 -0
  25. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
  26. package/dist/api/{auth.js → auth/auth.js} +66 -54
  27. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  28. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
  29. package/dist/api/auth/session-owners.d.ts +10 -0
  30. package/dist/api/auth/session-owners.js +35 -0
  31. package/dist/api/availability.d.ts +3 -1
  32. package/dist/api/availability.js +3 -1
  33. package/dist/api/busy.d.ts +2 -0
  34. package/dist/api/busy.js +2 -0
  35. package/dist/api/cli-surface.d.ts +6 -0
  36. package/dist/api/cli-surface.js +6 -0
  37. package/dist/api/config-of.d.ts +5 -0
  38. package/dist/api/config-of.js +6 -0
  39. package/dist/api/context-auto.d.ts +4 -1
  40. package/dist/api/context-auto.js +14 -4
  41. package/dist/api/context-render.js +14 -7
  42. package/dist/api/context-select.d.ts +4 -1
  43. package/dist/api/context-select.js +31 -34
  44. package/dist/api/context-types.d.ts +38 -12
  45. package/dist/api/context.d.ts +8 -5
  46. package/dist/api/context.js +120 -63
  47. package/dist/api/continuity.d.ts +24 -21
  48. package/dist/api/continuity.js +18 -20
  49. package/dist/api/correction-latency.d.ts +3 -1
  50. package/dist/api/correction-latency.js +3 -1
  51. package/dist/api/error-reply.d.ts +4 -1
  52. package/dist/api/error-reply.js +12 -3
  53. package/dist/api/index.d.ts +39 -23
  54. package/dist/api/index.js +21 -23
  55. package/dist/api/instruction-detect.d.ts +4 -1
  56. package/dist/api/instruction-detect.js +75 -20
  57. package/dist/api/ledger-db.d.ts +15 -11
  58. package/dist/api/ledger-db.js +21 -23
  59. package/dist/api/memories/conflicts.d.ts +33 -0
  60. package/dist/api/memories/conflicts.js +67 -0
  61. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  62. package/dist/api/{forget.js → memories/forget.js} +23 -17
  63. package/dist/api/memories/memories.d.ts +27 -0
  64. package/dist/api/memories/memories.js +52 -0
  65. package/dist/api/memories/outcome.d.ts +22 -0
  66. package/dist/api/memories/outcome.js +28 -0
  67. package/dist/api/memories/promote.d.ts +40 -0
  68. package/dist/api/memories/promote.js +76 -0
  69. package/dist/api/memories/refine.d.ts +10 -0
  70. package/dist/api/memories/refine.js +12 -0
  71. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
  72. package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
  73. package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
  74. package/dist/api/{remember.js → memories/remember.js} +50 -32
  75. package/dist/api/objects/cards.d.ts +39 -0
  76. package/dist/api/{cards.js → objects/cards.js} +12 -14
  77. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  78. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
  79. package/dist/api/objects/goals.d.ts +18 -0
  80. package/dist/api/{goals.js → objects/goals.js} +12 -12
  81. package/dist/api/objects/graph.d.ts +11 -0
  82. package/dist/api/objects/graph.js +16 -0
  83. package/dist/api/objects/objects.d.ts +9 -0
  84. package/dist/api/{objects.js → objects/objects.js} +2 -3
  85. package/dist/api/objects/predictions.d.ts +11 -0
  86. package/dist/api/{predictions.js → objects/predictions.js} +7 -5
  87. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  88. package/dist/api/{projects.js → objects/projects.js} +8 -4
  89. package/dist/api/pilot-arm.d.ts +8 -4
  90. package/dist/api/pilot-arm.js +5 -4
  91. package/dist/api/prompt-hook.d.ts +35 -20
  92. package/dist/api/prompt-hook.js +66 -44
  93. package/dist/api/provenance-coverage.d.ts +3 -1
  94. package/dist/api/provenance-coverage.js +3 -1
  95. package/dist/api/recall/finish.d.ts +185 -0
  96. package/dist/api/recall/finish.js +301 -0
  97. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  98. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
  99. package/dist/api/recall/recall.d.ts +6 -0
  100. package/dist/api/{recall.js → recall/recall.js} +116 -72
  101. package/dist/api/recall/render.d.ts +39 -0
  102. package/dist/api/recall/render.js +60 -0
  103. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  104. package/dist/api/recall/request.js +261 -0
  105. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  106. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  107. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
  108. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  109. package/dist/api/session-end.d.ts +36 -8
  110. package/dist/api/session-end.js +71 -25
  111. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  112. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  113. package/dist/api/sleep/dormant.d.ts +25 -0
  114. package/dist/api/sleep/dormant.js +64 -0
  115. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  116. package/dist/api/sleep/learn.js +138 -0
  117. package/dist/api/sleep/sleep-run.d.ts +38 -0
  118. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
  119. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  120. package/dist/api/sleep/sleep.js +9 -0
  121. package/dist/api/status.d.ts +3 -1
  122. package/dist/api/status.js +3 -1
  123. package/dist/api/store-init.d.ts +4 -1
  124. package/dist/api/store-init.js +4 -1
  125. package/dist/api/tokens.d.ts +10 -9
  126. package/dist/api/tokens.js +9 -10
  127. package/dist/api/types.d.ts +27 -12
  128. package/dist/api/types.js +13 -4
  129. package/dist/capture/caller-session.d.ts +8 -2
  130. package/dist/capture/caller-session.js +16 -6
  131. package/dist/capture/capture-error.d.ts +3 -1
  132. package/dist/capture/capture-error.js +3 -1
  133. package/dist/capture/codex-patch.js +7 -2
  134. package/dist/capture/command.d.ts +4 -2
  135. package/dist/capture/command.js +34 -15
  136. package/dist/capture/compact-resume-caller.js +15 -8
  137. package/dist/capture/compact.d.ts +8 -5
  138. package/dist/capture/compact.js +34 -23
  139. package/dist/capture/compaction-items-caller.js +9 -3
  140. package/dist/capture/compaction-record.d.ts +4 -3
  141. package/dist/capture/compaction-record.js +20 -12
  142. package/dist/capture/compaction-spool.d.ts +18 -9
  143. package/dist/capture/compaction-spool.js +105 -63
  144. package/dist/capture/copilot-transcript.d.ts +11 -3
  145. package/dist/capture/copilot-transcript.js +16 -6
  146. package/dist/capture/extract.js +20 -8
  147. package/dist/capture/failure-caller.js +23 -12
  148. package/dist/capture/failure-reading.d.ts +10 -3
  149. package/dist/capture/failure-reading.js +24 -7
  150. package/dist/capture/pre-compact-caller.js +11 -4
  151. package/dist/capture/session-digest.d.ts +15 -4
  152. package/dist/capture/session-digest.js +39 -13
  153. package/dist/capture/session-end-caller.d.ts +4 -1
  154. package/dist/capture/session-end-caller.js +20 -8
  155. package/dist/capture/session-texts.d.ts +6 -2
  156. package/dist/capture/session-texts.js +22 -7
  157. package/dist/capture/session-worker.d.ts +4 -2
  158. package/dist/capture/session-worker.js +58 -17
  159. package/dist/capture/transcript.d.ts +13 -4
  160. package/dist/capture/transcript.js +32 -10
  161. package/dist/capture/working-state.d.ts +13 -4
  162. package/dist/capture/working-state.js +50 -56
  163. package/dist/cli/api-context.d.ts +14 -2
  164. package/dist/cli/api-context.js +45 -2
  165. package/dist/cli/audit.js +33 -33
  166. package/dist/cli/auth.js +23 -31
  167. package/dist/cli/briefs.d.ts +1 -1
  168. package/dist/cli/briefs.js +20 -15
  169. package/dist/cli/card.d.ts +1 -1
  170. package/dist/cli/card.js +56 -73
  171. package/dist/cli/client.d.ts +12 -5
  172. package/dist/cli/client.js +53 -23
  173. package/dist/cli/compact-resume-payload.d.ts +4 -1
  174. package/dist/cli/compact-resume-payload.js +12 -5
  175. package/dist/cli/context.js +43 -18
  176. package/dist/cli/continuity.d.ts +5 -5
  177. package/dist/cli/continuity.js +90 -107
  178. package/dist/cli/curate.d.ts +5 -4
  179. package/dist/cli/curate.js +55 -77
  180. package/dist/cli/dag.d.ts +1 -1
  181. package/dist/cli/dag.js +14 -17
  182. package/dist/cli/decisions.js +30 -30
  183. package/dist/cli/eval.js +16 -21
  184. package/dist/cli/exit.d.ts +4 -1
  185. package/dist/cli/exit.js +10 -2
  186. package/dist/cli/explain.js +12 -11
  187. package/dist/cli/flag-values.d.ts +1 -1
  188. package/dist/cli/flag-values.js +9 -18
  189. package/dist/cli/github.d.ts +6 -0
  190. package/dist/cli/github.js +25 -13
  191. package/dist/cli/goals.d.ts +1 -1
  192. package/dist/cli/goals.js +39 -56
  193. package/dist/cli/graph.d.ts +1 -1
  194. package/dist/cli/graph.js +15 -11
  195. package/dist/cli/hook-runtime.d.ts +34 -10
  196. package/dist/cli/hook-runtime.js +41 -16
  197. package/dist/cli/incidents.d.ts +1 -1
  198. package/dist/cli/incidents.js +25 -25
  199. package/dist/cli/init.d.ts +1 -1
  200. package/dist/cli/init.js +35 -20
  201. package/dist/cli/install-steps.d.ts +12 -3
  202. package/dist/cli/install-steps.js +42 -18
  203. package/dist/cli/last-sleep.d.ts +4 -1
  204. package/dist/cli/last-sleep.js +9 -4
  205. package/dist/cli/maintenance.d.ts +1 -1
  206. package/dist/cli/maintenance.js +11 -12
  207. package/dist/cli/notes.d.ts +1 -1
  208. package/dist/cli/notes.js +8 -5
  209. package/dist/cli/object-verbs.d.ts +5 -5
  210. package/dist/cli/object-verbs.js +13 -16
  211. package/dist/cli/open-browser.js +11 -2
  212. package/dist/cli/playbooks.d.ts +3 -3
  213. package/dist/cli/playbooks.js +40 -32
  214. package/dist/cli/predictions.js +17 -22
  215. package/dist/cli/print.js +4 -2
  216. package/dist/cli/projects.js +21 -11
  217. package/dist/cli/quality-repair-once.d.ts +1 -1
  218. package/dist/cli/quality-repair-once.js +7 -6
  219. package/dist/cli/recall.js +129 -93
  220. package/dist/cli/refine-llm.d.ts +15 -4
  221. package/dist/cli/refine-llm.js +17 -7
  222. package/dist/cli/remember.js +51 -55
  223. package/dist/cli/scheduler.d.ts +4 -1
  224. package/dist/cli/scheduler.js +9 -5
  225. package/dist/cli/serve.js +28 -18
  226. package/dist/cli/session-hooks.d.ts +2 -6
  227. package/dist/cli/session-hooks.js +140 -112
  228. package/dist/cli/setup.d.ts +1 -1
  229. package/dist/cli/setup.js +56 -34
  230. package/dist/cli/shared.d.ts +4 -2
  231. package/dist/cli/shared.js +26 -11
  232. package/dist/cli/slack.js +15 -24
  233. package/dist/cli/sleep-render.d.ts +3 -1
  234. package/dist/cli/sleep-render.js +8 -5
  235. package/dist/cli/sleep.js +16 -8
  236. package/dist/cli/status.d.ts +4 -4
  237. package/dist/cli/status.js +32 -27
  238. package/dist/cli/stdin.d.ts +10 -3
  239. package/dist/cli/stdin.js +10 -3
  240. package/dist/cli/transfer.d.ts +4 -4
  241. package/dist/cli/transfer.js +97 -82
  242. package/dist/cli/usage.d.ts +1 -1
  243. package/dist/cli/usage.js +1 -1
  244. package/dist/cli/verb-row.d.ts +2 -0
  245. package/dist/cli/verbs/health.js +2 -0
  246. package/dist/cli/verbs/memory.js +47 -53
  247. package/dist/cli/verbs/objects.js +16 -7
  248. package/dist/cli/verbs/sessions.js +4 -2
  249. package/dist/cli/versioned-verbs.d.ts +8 -7
  250. package/dist/cli/versioned-verbs.js +31 -21
  251. package/dist/cli.js +14 -18
  252. package/dist/connectors/dlq.d.ts +6 -6
  253. package/dist/connectors/dlq.js +12 -7
  254. package/dist/connectors/github/backfill.d.ts +4 -4
  255. package/dist/connectors/github/backfill.js +6 -4
  256. package/dist/connectors/github/deletion.d.ts +6 -4
  257. package/dist/connectors/github/deletion.js +5 -4
  258. package/dist/connectors/github/dlq.d.ts +8 -6
  259. package/dist/connectors/github/dlq.js +11 -5
  260. package/dist/connectors/github/ingest.d.ts +2 -2
  261. package/dist/connectors/github/ingest.js +9 -5
  262. package/dist/connectors/github/octokit-client.d.ts +3 -1
  263. package/dist/connectors/github/octokit-client.js +7 -2
  264. package/dist/connectors/github/ratelimit.d.ts +6 -2
  265. package/dist/connectors/github/ratelimit.js +6 -2
  266. package/dist/connectors/github/signature.d.ts +14 -3
  267. package/dist/connectors/github/signature.js +17 -3
  268. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  269. package/dist/connectors/github/tenant-routing.js +6 -5
  270. package/dist/connectors/github/transform.js +50 -67
  271. package/dist/connectors/github/types.d.ts +10 -3
  272. package/dist/connectors/github/types.js +6 -2
  273. package/dist/connectors/github/webhook.d.ts +5 -5
  274. package/dist/connectors/github/webhook.js +36 -23
  275. package/dist/connectors/ingest.d.ts +5 -3
  276. package/dist/connectors/ingest.js +3 -3
  277. package/dist/connectors/slack/backfill.d.ts +5 -5
  278. package/dist/connectors/slack/backfill.js +3 -3
  279. package/dist/connectors/slack/deletion.d.ts +4 -4
  280. package/dist/connectors/slack/deletion.js +6 -5
  281. package/dist/connectors/slack/dlq.d.ts +4 -4
  282. package/dist/connectors/slack/dlq.js +6 -6
  283. package/dist/connectors/slack/ingest.d.ts +6 -4
  284. package/dist/connectors/slack/ingest.js +5 -4
  285. package/dist/connectors/slack/signature.d.ts +4 -1
  286. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  287. package/dist/connectors/slack/tenant-routing.js +6 -5
  288. package/dist/connectors/slack/transform.d.ts +6 -2
  289. package/dist/connectors/slack/transform.js +6 -2
  290. package/dist/connectors/slack/types.d.ts +3 -1
  291. package/dist/connectors/slack/web-client.js +8 -3
  292. package/dist/connectors/slack/webhook.d.ts +5 -5
  293. package/dist/connectors/slack/webhook.js +19 -11
  294. package/dist/connectors/slack/workspaces.d.ts +7 -3
  295. package/dist/connectors/slack/workspaces.js +7 -3
  296. package/dist/connectors/store.d.ts +8 -0
  297. package/dist/connectors/store.js +2 -0
  298. package/dist/consolidate/conflicts.js +24 -10
  299. package/dist/consolidate/dag-summary.js +2 -1
  300. package/dist/consolidate/dag.d.ts +10 -5
  301. package/dist/consolidate/dag.js +45 -39
  302. package/dist/consolidate/decay.js +19 -6
  303. package/dist/consolidate/dedupe.d.ts +14 -5
  304. package/dist/consolidate/dedupe.js +28 -17
  305. package/dist/consolidate/flush-units.d.ts +4 -1
  306. package/dist/consolidate/flush-units.js +4 -1
  307. package/dist/consolidate/half-life-migration.d.ts +18 -8
  308. package/dist/consolidate/half-life-migration.js +48 -18
  309. package/dist/consolidate/llm-passes.js +27 -11
  310. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  311. package/dist/consolidate/memory-value-weights.js +6 -2
  312. package/dist/consolidate/memory-value.d.ts +30 -10
  313. package/dist/consolidate/memory-value.js +37 -14
  314. package/dist/consolidate/merge.d.ts +4 -1
  315. package/dist/consolidate/merge.js +47 -37
  316. package/dist/consolidate/overlap-index.d.ts +8 -2
  317. package/dist/consolidate/overlap-index.js +11 -4
  318. package/dist/consolidate/physics-pass.d.ts +3 -1
  319. package/dist/consolidate/physics-pass.js +10 -7
  320. package/dist/consolidate/replay.d.ts +11 -4
  321. package/dist/consolidate/replay.js +19 -7
  322. package/dist/consolidate/run.d.ts +13 -5
  323. package/dist/consolidate/run.js +4 -4
  324. package/dist/consolidate/sleep.d.ts +14 -6
  325. package/dist/consolidate/sleep.js +42 -39
  326. package/dist/consolidate/trace.d.ts +7 -2
  327. package/dist/consolidate/trace.js +7 -2
  328. package/dist/consolidate/traces.js +27 -30
  329. package/dist/core/ablation.d.ts +9 -3
  330. package/dist/core/ablation.js +14 -4
  331. package/dist/core/active-scope.d.ts +3 -1
  332. package/dist/core/active-scope.js +3 -1
  333. package/dist/core/agent-memory-tools.d.ts +2 -0
  334. package/dist/core/agent-memory-tools.js +2 -0
  335. package/dist/core/ambient.d.ts +4 -3
  336. package/dist/core/ambient.js +8 -6
  337. package/dist/core/api-errors.d.ts +9 -3
  338. package/dist/core/api-errors.js +9 -3
  339. package/dist/core/capture-contract.d.ts +4 -1
  340. package/dist/core/capture-contract.js +27 -8
  341. package/dist/core/compare.d.ts +24 -8
  342. package/dist/core/compare.js +24 -8
  343. package/dist/core/config.d.ts +18 -9
  344. package/dist/core/config.js +38 -29
  345. package/dist/core/cosine.d.ts +4 -1
  346. package/dist/core/cosine.js +4 -1
  347. package/dist/core/handoff.d.ts +7 -2
  348. package/dist/core/handoff.js +4 -1
  349. package/dist/core/markdown.js +22 -17
  350. package/dist/core/memory-audit.js +14 -3
  351. package/dist/core/memory-quality.d.ts +12 -3
  352. package/dist/core/memory-quality.js +57 -21
  353. package/dist/core/memory.d.ts +87 -30
  354. package/dist/core/memory.js +82 -33
  355. package/dist/core/merged-row.d.ts +8 -2
  356. package/dist/core/merged-row.js +10 -3
  357. package/dist/core/package-root.d.ts +3 -1
  358. package/dist/core/package-root.js +3 -1
  359. package/dist/core/particle-refresh.d.ts +8 -0
  360. package/dist/core/particle-refresh.js +22 -0
  361. package/dist/core/physics-config.d.ts +4 -1
  362. package/dist/core/physics-config.js +6 -2
  363. package/dist/core/physics.d.ts +39 -11
  364. package/dist/core/physics.js +71 -21
  365. package/dist/core/project-identity.d.ts +34 -17
  366. package/dist/core/project-identity.js +35 -18
  367. package/dist/core/project-remote.d.ts +8 -4
  368. package/dist/core/project-remote.js +31 -14
  369. package/dist/core/recall-scope.d.ts +33 -11
  370. package/dist/core/recall-scope.js +42 -15
  371. package/dist/core/rejection-digest.d.ts +7 -0
  372. package/dist/core/rejection-digest.js +13 -0
  373. package/dist/core/salience.d.ts +3 -1
  374. package/dist/core/salience.js +10 -4
  375. package/dist/core/search-types.d.ts +15 -2
  376. package/dist/core/search-types.js +11 -0
  377. package/dist/dashboard/dashboard-actions.d.ts +2 -2
  378. package/dist/dashboard/dashboard-actions.js +18 -7
  379. package/dist/dashboard/dashboard-queries.js +2 -7
  380. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  381. package/dist/dashboard/dashboard-snapshot.js +5 -7
  382. package/dist/dashboard/dashboard.js +22 -8
  383. package/dist/db/backup.js +2 -2
  384. package/dist/db/busy.d.ts +10 -3
  385. package/dist/db/busy.js +27 -5
  386. package/dist/db/connect.d.ts +10 -2
  387. package/dist/db/connect.js +8 -2
  388. package/dist/db/continuity.d.ts +1 -1
  389. package/dist/db/continuity.js +27 -11
  390. package/dist/db/meta.d.ts +4 -1
  391. package/dist/db/meta.js +4 -1
  392. package/dist/db/migrate.d.ts +10 -5
  393. package/dist/db/migrate.js +40 -20
  394. package/dist/db/migrations/index.d.ts +1 -1
  395. package/dist/db/migrations/index.js +3 -1
  396. package/dist/db/migrations/types.d.ts +2 -1
  397. package/dist/db/migrations/v11.js +1 -0
  398. package/dist/db/migrations/v12.js +2 -1
  399. package/dist/db/migrations/v14.js +2 -0
  400. package/dist/db/migrations/v15.js +4 -2
  401. package/dist/db/migrations/v16.js +6 -3
  402. package/dist/db/migrations/v17.js +2 -1
  403. package/dist/db/migrations/v19.js +4 -2
  404. package/dist/db/migrations/v20.js +2 -1
  405. package/dist/db/migrations/v22.js +12 -6
  406. package/dist/db/migrations/v23.js +6 -3
  407. package/dist/db/migrations/v24.js +6 -3
  408. package/dist/db/migrations/v25.js +4 -2
  409. package/dist/db/migrations/v26.js +4 -2
  410. package/dist/db/migrations/v27.js +6 -3
  411. package/dist/db/migrations/v28.js +4 -2
  412. package/dist/db/migrations/v29.js +4 -2
  413. package/dist/db/migrations/v30.js +6 -3
  414. package/dist/db/migrations/v31.js +4 -2
  415. package/dist/db/migrations/v32.js +6 -3
  416. package/dist/db/migrations/v33.js +4 -2
  417. package/dist/db/migrations/v34.js +2 -1
  418. package/dist/db/migrations/v35.js +2 -1
  419. package/dist/db/migrations/v36.js +2 -1
  420. package/dist/db/migrations/v37.js +10 -5
  421. package/dist/db/migrations/v38.js +10 -5
  422. package/dist/db/migrations/v39.js +14 -6
  423. package/dist/db/migrations/v40.js +4 -2
  424. package/dist/db/migrations/v41.js +4 -2
  425. package/dist/db/migrations/v42.js +2 -1
  426. package/dist/db/migrations/v44.js +4 -2
  427. package/dist/db/migrations/v45.js +4 -2
  428. package/dist/db/migrations/v49.js +2 -1
  429. package/dist/db/migrations/v50.js +4 -2
  430. package/dist/db/migrations/v51.js +4 -2
  431. package/dist/db/migrations/v52.js +2 -1
  432. package/dist/db/migrations/v53.js +8 -4
  433. package/dist/db/migrations/v54.js +2 -1
  434. package/dist/db/migrations/v55.js +4 -2
  435. package/dist/db/migrations/v56.d.ts +3 -0
  436. package/dist/db/migrations/v56.js +28 -0
  437. package/dist/db/open.d.ts +24 -12
  438. package/dist/db/open.js +25 -13
  439. package/dist/db/physics-state.d.ts +8 -8
  440. package/dist/db/physics-state.js +17 -50
  441. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  442. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  443. package/dist/db/request-stores.d.ts +20 -5
  444. package/dist/db/request-stores.js +15 -5
  445. package/dist/db/tables.d.ts +2 -1
  446. package/dist/db/tables.js +12 -4
  447. package/dist/db/vector-store.d.ts +13 -4
  448. package/dist/db/vector-store.js +35 -14
  449. package/dist/db/wal-checkpointer.d.ts +2 -1
  450. package/dist/db/wal-checkpointer.js +19 -7
  451. package/dist/doctor.d.ts +7 -1
  452. package/dist/doctor.js +128 -46
  453. package/dist/embeddings/local.d.ts +8 -4
  454. package/dist/embeddings/local.js +11 -7
  455. package/dist/embeddings/provider.d.ts +19 -10
  456. package/dist/embeddings/provider.js +32 -27
  457. package/dist/embeddings/transformers.d.ts +16 -4
  458. package/dist/embeddings/transformers.js +32 -15
  459. package/dist/entry/json-hooks.d.ts +1 -1
  460. package/dist/entry/json-hooks.js +1 -1
  461. package/dist/entry/project-identity.js +2 -1
  462. package/dist/entry/session-text.d.ts +1 -1
  463. package/dist/entry/session-text.js +1 -1
  464. package/dist/entry/sqlite-handles.d.ts +10 -0
  465. package/dist/entry/sqlite-handles.js +9 -0
  466. package/dist/entry/store-kit.d.ts +50 -0
  467. package/dist/entry/store-kit.js +27 -0
  468. package/dist/entry/testing.d.ts +6 -0
  469. package/dist/entry/testing.js +7 -0
  470. package/dist/eval/eval-stats.d.ts +27 -8
  471. package/dist/eval/eval-stats.js +17 -5
  472. package/dist/eval/eval-suite.d.ts +3 -1
  473. package/dist/eval/eval-suite.js +409 -187
  474. package/dist/eval/eval.d.ts +8 -2
  475. package/dist/eval/eval.js +8 -2
  476. package/dist/eval/judgment.js +17 -7
  477. package/dist/graph/delta.d.ts +9 -42
  478. package/dist/graph/delta.js +17 -11
  479. package/dist/graph/extract.d.ts +10 -7
  480. package/dist/graph/extract.js +57 -25
  481. package/dist/graph/recall.d.ts +12 -4
  482. package/dist/graph/recall.js +30 -13
  483. package/dist/graph/stream.d.ts +18 -6
  484. package/dist/graph/stream.js +32 -10
  485. package/dist/graph/view.d.ts +19 -6
  486. package/dist/graph/view.js +42 -17
  487. package/dist/hooks/codex-session.js +2 -2
  488. package/dist/hooks/codex-wrapper.d.ts +3 -1
  489. package/dist/hooks/codex-wrapper.js +9 -4
  490. package/dist/hooks/copilot.d.ts +19 -5
  491. package/dist/hooks/copilot.js +54 -15
  492. package/dist/hooks/hook-blocks.d.ts +4 -1
  493. package/dist/hooks/hook-blocks.js +8 -3
  494. package/dist/hooks/json-hooks.d.ts +9 -5
  495. package/dist/hooks/json-hooks.js +72 -33
  496. package/dist/hooks/opencode.js +15 -5
  497. package/dist/hooks/shared.d.ts +27 -8
  498. package/dist/hooks/shared.js +57 -16
  499. package/dist/importers/core.d.ts +12 -4
  500. package/dist/importers/core.js +11 -10
  501. package/dist/importers/markdown-parse.d.ts +15 -5
  502. package/dist/importers/markdown-parse.js +16 -7
  503. package/dist/importers/markdown.js +6 -9
  504. package/dist/importers/sources.js +10 -23
  505. package/dist/importers/vault.d.ts +3 -3
  506. package/dist/importers/vault.js +61 -45
  507. package/dist/index.d.ts +33 -7
  508. package/dist/index.js +26 -8
  509. package/dist/learn/autolearn.d.ts +21 -6
  510. package/dist/learn/autolearn.js +57 -26
  511. package/dist/learn/churn-git.d.ts +4 -1
  512. package/dist/learn/churn-git.js +29 -5
  513. package/dist/learn/extract.d.ts +4 -1
  514. package/dist/learn/extract.js +17 -10
  515. package/dist/learn/forward-claim-detector.d.ts +17 -5
  516. package/dist/learn/forward-claim-detector.js +34 -15
  517. package/dist/learn/invalidation.d.ts +12 -6
  518. package/dist/learn/invalidation.js +62 -28
  519. package/dist/learn/roots.d.ts +3 -0
  520. package/dist/learn/roots.js +5 -0
  521. package/dist/mcp/admin-tools.d.ts +5 -5
  522. package/dist/mcp/admin-tools.js +28 -23
  523. package/dist/mcp/format.d.ts +1 -1
  524. package/dist/mcp/format.js +4 -2
  525. package/dist/mcp/framing.d.ts +3 -1
  526. package/dist/mcp/framing.js +20 -8
  527. package/dist/mcp/memory-tools.d.ts +3 -3
  528. package/dist/mcp/memory-tools.js +21 -20
  529. package/dist/mcp/protocol.d.ts +32 -16
  530. package/dist/mcp/protocol.js +12 -9
  531. package/dist/mcp/recall-tools.d.ts +3 -3
  532. package/dist/mcp/recall-tools.js +62 -74
  533. package/dist/mcp/request.d.ts +7 -5
  534. package/dist/mcp/request.js +61 -77
  535. package/dist/mcp/server.d.ts +3 -1
  536. package/dist/mcp/server.js +8 -3
  537. package/dist/mcp/session-state.d.ts +1 -1
  538. package/dist/mcp/session-state.js +4 -3
  539. package/dist/mcp/shared-gate.d.ts +3 -2
  540. package/dist/mcp/shared-gate.js +3 -2
  541. package/dist/mcp/stdio.d.ts +6 -3
  542. package/dist/mcp/stdio.js +59 -23
  543. package/dist/mcp/tool-args.d.ts +4 -1
  544. package/dist/mcp/tool-args.js +8 -3
  545. package/dist/mcp/tools.js +76 -32
  546. package/dist/objects/customer-notes.d.ts +12 -10
  547. package/dist/objects/customer-notes.js +21 -15
  548. package/dist/objects/decisions.d.ts +18 -10
  549. package/dist/objects/decisions.js +23 -17
  550. package/dist/objects/descriptor.js +2 -1
  551. package/dist/objects/fields.d.ts +4 -1
  552. package/dist/objects/fields.js +6 -2
  553. package/dist/objects/incidents.d.ts +14 -16
  554. package/dist/objects/incidents.js +29 -30
  555. package/dist/objects/lifecycle.d.ts +0 -4
  556. package/dist/objects/lifecycle.js +21 -24
  557. package/dist/objects/policies.d.ts +12 -16
  558. package/dist/objects/policies.js +17 -21
  559. package/dist/objects/processes.d.ts +16 -10
  560. package/dist/objects/processes.js +20 -15
  561. package/dist/objects/project-briefs.d.ts +13 -14
  562. package/dist/objects/project-briefs.js +33 -39
  563. package/dist/objects/skills.d.ts +10 -12
  564. package/dist/objects/skills.js +17 -22
  565. package/dist/postinstall.js +15 -7
  566. package/dist/predictions/planning-fallacy.d.ts +19 -6
  567. package/dist/predictions/planning-fallacy.js +4 -2
  568. package/dist/rerankers/clef.d.ts +8 -2
  569. package/dist/rerankers/clef.js +14 -9
  570. package/dist/rerankers/cross-encoder.d.ts +2 -1
  571. package/dist/rerankers/cross-encoder.js +19 -9
  572. package/dist/rerankers/index.js +2 -1
  573. package/dist/rerankers/jev.js +2 -1
  574. package/dist/rerankers/llm.d.ts +6 -2
  575. package/dist/rerankers/llm.js +8 -3
  576. package/dist/rerankers/remote.d.ts +3 -1
  577. package/dist/rerankers/remote.js +5 -2
  578. package/dist/rerankers/types.d.ts +6 -2
  579. package/dist/search/bm25-search.d.ts +3 -1
  580. package/dist/search/bm25-search.js +15 -2
  581. package/dist/search/boosts.js +4 -3
  582. package/dist/search/embed-memories.d.ts +12 -4
  583. package/dist/search/embed-memories.js +96 -58
  584. package/dist/search/engine.d.ts +11 -0
  585. package/dist/search/engine.js +14 -0
  586. package/dist/search/goal-boost.d.ts +10 -3
  587. package/dist/search/goal-boost.js +13 -6
  588. package/dist/search/hybrid-score.d.ts +4 -1
  589. package/dist/search/hybrid-score.js +4 -1
  590. package/dist/search/hybrid.d.ts +23 -8
  591. package/dist/search/hybrid.js +12 -7
  592. package/dist/search/multihop.js +14 -13
  593. package/dist/search/path-context.d.ts +10 -3
  594. package/dist/search/path-context.js +10 -3
  595. package/dist/search/physics-search.d.ts +9 -4
  596. package/dist/search/physics-search.js +38 -14
  597. package/dist/search/rerank.d.ts +2 -1
  598. package/dist/search/rerank.js +2 -1
  599. package/dist/search/rrf.d.ts +14 -5
  600. package/dist/search/rrf.js +11 -4
  601. package/dist/search/vector.d.ts +8 -2
  602. package/dist/search/vector.js +14 -8
  603. package/dist/server/auth.d.ts +19 -15
  604. package/dist/server/auth.js +68 -38
  605. package/dist/server/boot.d.ts +4 -1
  606. package/dist/server/boot.js +115 -67
  607. package/dist/server/client-ip.d.ts +17 -5
  608. package/dist/server/client-ip.js +56 -21
  609. package/dist/server/cursor.d.ts +10 -3
  610. package/dist/server/cursor.js +10 -3
  611. package/dist/server/deadline.d.ts +5 -2
  612. package/dist/server/deadline.js +10 -3
  613. package/dist/server/key-check-bounds.js +12 -4
  614. package/dist/server/lifecycle.d.ts +4 -1
  615. package/dist/server/lifecycle.js +10 -4
  616. package/dist/server/mcp-http.d.ts +2 -1
  617. package/dist/server/mcp-http.js +37 -22
  618. package/dist/server/rate-limit.d.ts +17 -5
  619. package/dist/server/rate-limit.js +55 -26
  620. package/dist/server/ready.js +7 -4
  621. package/dist/server/request.d.ts +15 -4
  622. package/dist/server/request.js +42 -15
  623. package/dist/server/route-checks.d.ts +4 -1
  624. package/dist/server/route-checks.js +8 -3
  625. package/dist/server/route-table.d.ts +8 -6
  626. package/dist/server/route-table.js +550 -97
  627. package/dist/server/routes/admin.d.ts +7 -7
  628. package/dist/server/routes/admin.js +36 -15
  629. package/dist/server/routes/customer-notes.d.ts +5 -5
  630. package/dist/server/routes/customer-notes.js +5 -4
  631. package/dist/server/routes/decisions.d.ts +5 -5
  632. package/dist/server/routes/decisions.js +12 -6
  633. package/dist/server/routes/incidents.d.ts +5 -5
  634. package/dist/server/routes/incidents.js +10 -4
  635. package/dist/server/routes/memories.d.ts +8 -8
  636. package/dist/server/routes/memories.js +12 -17
  637. package/dist/server/routes/object-routes.d.ts +8 -5
  638. package/dist/server/routes/object-routes.js +4 -2
  639. package/dist/server/routes/policies.d.ts +6 -6
  640. package/dist/server/routes/policies.js +11 -4
  641. package/dist/server/routes/predictions.d.ts +5 -5
  642. package/dist/server/routes/predictions.js +9 -4
  643. package/dist/server/routes/processes.d.ts +5 -5
  644. package/dist/server/routes/processes.js +15 -6
  645. package/dist/server/routes/project-briefs.d.ts +6 -6
  646. package/dist/server/routes/project-briefs.js +3 -2
  647. package/dist/server/routes/recall.d.ts +3 -3
  648. package/dist/server/routes/recall.js +21 -10
  649. package/dist/server/routes/skills.d.ts +6 -6
  650. package/dist/server/routes/skills.js +12 -4
  651. package/dist/server/server-detect.d.ts +24 -8
  652. package/dist/server/server-detect.js +57 -22
  653. package/dist/server/sleep-child.js +16 -10
  654. package/dist/server/sleep-offload.d.ts +8 -5
  655. package/dist/server/sleep-offload.js +40 -18
  656. package/dist/server/tls.d.ts +10 -2
  657. package/dist/server/tls.js +25 -5
  658. package/dist/server/types.d.ts +41 -24
  659. package/dist/server/validation.d.ts +4 -1
  660. package/dist/server/validation.js +22 -9
  661. package/dist/server.d.ts +17 -49
  662. package/dist/server.js +33 -40
  663. package/dist/sharing/global-store.d.ts +6 -12
  664. package/dist/sharing/global-store.js +8 -48
  665. package/dist/sharing/global-sync.d.ts +3 -1
  666. package/dist/sharing/global-sync.js +17 -7
  667. package/dist/sharing/project-merge.d.ts +25 -7
  668. package/dist/sharing/project-merge.js +49 -17
  669. package/dist/sharing/search-both.d.ts +8 -4
  670. package/dist/sharing/search-both.js +28 -14
  671. package/dist/sharing/share.d.ts +8 -4
  672. package/dist/sharing/share.js +40 -18
  673. package/dist/store/ambient.js +10 -5
  674. package/dist/store/audit-event.d.ts +2 -2
  675. package/dist/store/audit-event.js +8 -3
  676. package/dist/store/audit.d.ts +6 -3
  677. package/dist/store/audit.js +16 -6
  678. package/dist/store/auth.d.ts +4 -2
  679. package/dist/store/auth.js +63 -20
  680. package/dist/store/busy.d.ts +9 -0
  681. package/dist/store/busy.js +16 -0
  682. package/dist/store/candidates.d.ts +12 -5
  683. package/dist/store/candidates.js +90 -41
  684. package/dist/store/capture-write.d.ts +2 -1
  685. package/dist/store/capture-write.js +2 -1
  686. package/dist/store/card-detail.d.ts +4 -4
  687. package/dist/store/card-detail.js +15 -8
  688. package/dist/store/cards.d.ts +24 -10
  689. package/dist/store/cards.js +97 -63
  690. package/dist/store/compaction-caller.d.ts +2 -1
  691. package/dist/store/compaction-caller.js +2 -1
  692. package/dist/store/compactions-record.d.ts +14 -8
  693. package/dist/store/compactions-record.js +101 -37
  694. package/dist/store/compactions.js +35 -15
  695. package/dist/store/conflicts.d.ts +16 -5
  696. package/dist/store/conflicts.js +104 -48
  697. package/dist/store/connectors/dlq.d.ts +17 -5
  698. package/dist/store/connectors/dlq.js +58 -6
  699. package/dist/store/connectors/event-log.d.ts +122 -0
  700. package/dist/store/connectors/event-log.js +25 -0
  701. package/dist/store/connectors/github.d.ts +6 -3
  702. package/dist/store/connectors/github.js +30 -48
  703. package/dist/store/connectors/slack.d.ts +2 -1
  704. package/dist/store/connectors/slack.js +31 -47
  705. package/dist/store/dashboard-reads.d.ts +7 -3
  706. package/dist/store/dashboard-reads.js +32 -10
  707. package/dist/store/delete-and-batch.d.ts +17 -11
  708. package/dist/store/delete-and-batch.js +70 -28
  709. package/dist/store/delivery-recorder.d.ts +10 -7
  710. package/dist/store/delivery-recorder.js +70 -37
  711. package/dist/store/descendant-page.d.ts +2 -1
  712. package/dist/store/descendant-page.js +26 -10
  713. package/dist/store/diagnostics.d.ts +2 -1
  714. package/dist/store/diagnostics.js +2 -1
  715. package/dist/store/doctor-reads.d.ts +2 -1
  716. package/dist/store/doctor-reads.js +13 -5
  717. package/dist/store/dormant.d.ts +19 -11
  718. package/dist/store/dormant.js +45 -19
  719. package/dist/store/embeddings/index.d.ts +13 -9
  720. package/dist/store/embeddings/index.js +19 -12
  721. package/dist/store/entry-reads.d.ts +72 -21
  722. package/dist/store/entry-reads.js +215 -69
  723. package/dist/store/entry-row.d.ts +10 -6
  724. package/dist/store/entry-row.js +26 -14
  725. package/dist/store/entry-writes.d.ts +28 -13
  726. package/dist/store/entry-writes.js +61 -22
  727. package/dist/store/failure-log-at.js +1 -1
  728. package/dist/store/failure-log.d.ts +4 -2
  729. package/dist/store/failure-log.js +13 -6
  730. package/dist/store/gated-write.d.ts +3 -3
  731. package/dist/store/gated-write.js +3 -3
  732. package/dist/store/goals.d.ts +5 -4
  733. package/dist/store/goals.js +11 -12
  734. package/dist/store/graph-apply.d.ts +21 -0
  735. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  736. package/dist/store/graph-queue.d.ts +9 -6
  737. package/dist/store/graph-queue.js +15 -10
  738. package/dist/store/graph-reads.d.ts +16 -11
  739. package/dist/store/graph-reads.js +29 -19
  740. package/dist/store/graph-rows.d.ts +41 -3
  741. package/dist/store/graph-rows.js +10 -7
  742. package/dist/store/graph-view-rows.js +15 -7
  743. package/dist/store/graph-writes.d.ts +16 -10
  744. package/dist/store/graph-writes.js +59 -36
  745. package/dist/store/half-life.js +2 -2
  746. package/dist/store/handoffs.d.ts +13 -7
  747. package/dist/store/handoffs.js +44 -22
  748. package/dist/store/index-and-stats.d.ts +2 -2
  749. package/dist/store/index-and-stats.js +6 -5
  750. package/dist/store/index.d.ts +4 -2
  751. package/dist/store/index.js +2 -1
  752. package/dist/store/key-audit.d.ts +2 -1
  753. package/dist/store/key-audit.js +2 -1
  754. package/dist/store/key-writes.d.ts +2 -1
  755. package/dist/store/key-writes.js +9 -2
  756. package/dist/store/ledger-turn.d.ts +4 -1
  757. package/dist/store/ledger-turn.js +7 -2
  758. package/dist/store/mirrors.d.ts +11 -4
  759. package/dist/store/mirrors.js +96 -19
  760. package/dist/store/narrow.d.ts +6 -0
  761. package/dist/store/narrow.js +11 -0
  762. package/dist/store/open.d.ts +6 -3
  763. package/dist/store/open.js +20 -10
  764. package/dist/store/pilot-arm.d.ts +2 -1
  765. package/dist/store/pilot-arm.js +18 -6
  766. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  767. package/dist/store/planning-fallacy-evidence.js +8 -5
  768. package/dist/store/port/agent-import.d.ts +62 -0
  769. package/dist/store/port/agent-import.js +2 -0
  770. package/dist/store/port/consolidation.d.ts +129 -0
  771. package/dist/store/port/consolidation.js +2 -0
  772. package/dist/store/port/learning.d.ts +19 -0
  773. package/dist/store/port/learning.js +2 -0
  774. package/dist/store/port/local-files.d.ts +18 -0
  775. package/dist/store/port/local-files.js +2 -0
  776. package/dist/store/port/promotion.d.ts +20 -0
  777. package/dist/store/port/promotion.js +3 -0
  778. package/dist/store/port-groups.d.ts +160 -0
  779. package/dist/store/port-groups.js +2 -0
  780. package/dist/store/port.d.ts +261 -219
  781. package/dist/store/port.js +3 -9
  782. package/dist/store/predictions.d.ts +14 -10
  783. package/dist/store/predictions.js +37 -17
  784. package/dist/store/project-tags.d.ts +4 -1
  785. package/dist/store/project-tags.js +16 -5
  786. package/dist/store/quality-repair.d.ts +8 -4
  787. package/dist/store/quality-repair.js +53 -20
  788. package/dist/store/quarantine.d.ts +1 -0
  789. package/dist/store/quarantine.js +23 -9
  790. package/dist/store/raw-archive.d.ts +5 -4
  791. package/dist/store/raw-archive.js +11 -10
  792. package/dist/store/recall-trace.d.ts +22 -17
  793. package/dist/store/recall-trace.js +128 -64
  794. package/dist/store/rejected-values.d.ts +15 -10
  795. package/dist/store/rejected-values.js +46 -20
  796. package/dist/store/rejection.d.ts +12 -11
  797. package/dist/store/rejection.js +18 -19
  798. package/dist/store/report-reads.d.ts +2 -1
  799. package/dist/store/report-reads.js +2 -1
  800. package/dist/store/rows.d.ts +7 -5
  801. package/dist/store/rows.js +20 -13
  802. package/dist/store/rule-sql.d.ts +7 -3
  803. package/dist/store/rule-sql.js +26 -13
  804. package/dist/store/search-rows.d.ts +16 -11
  805. package/dist/store/search-rows.js +54 -32
  806. package/dist/store/sessions.d.ts +12 -10
  807. package/dist/store/sessions.js +40 -21
  808. package/dist/store/set-aside.d.ts +2 -2
  809. package/dist/store/set-aside.js +18 -5
  810. package/dist/store/sqlite/agent-import.d.ts +3 -0
  811. package/dist/store/sqlite/agent-import.js +77 -0
  812. package/dist/store/sqlite/cards-group.d.ts +6 -0
  813. package/dist/store/sqlite/cards-group.js +37 -0
  814. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  815. package/dist/store/sqlite/conflicts-group.js +18 -0
  816. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  817. package/dist/store/sqlite/connector-events-group.js +17 -6
  818. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  819. package/dist/store/sqlite/connector-writes-group.js +12 -5
  820. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  821. package/dist/store/sqlite/consolidation-group.js +64 -0
  822. package/dist/store/sqlite/dag-reads-group.js +1 -1
  823. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  824. package/dist/store/sqlite/dormant-group.js +29 -0
  825. package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
  826. package/dist/store/sqlite/entry-writes-group.js +37 -14
  827. package/dist/store/sqlite/error-codec.d.ts +4 -2
  828. package/dist/store/sqlite/error-codec.js +32 -10
  829. package/dist/store/sqlite/executor-counts.js +2 -1
  830. package/dist/store/sqlite/executor.d.ts +8 -3
  831. package/dist/store/sqlite/executor.js +56 -18
  832. package/dist/store/sqlite/global-promote.d.ts +5 -0
  833. package/dist/store/sqlite/global-promote.js +48 -0
  834. package/dist/store/sqlite/goals-group.d.ts +6 -0
  835. package/dist/store/sqlite/goals-group.js +23 -0
  836. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  837. package/dist/store/sqlite/graph-reads-group.js +2 -1
  838. package/dist/store/sqlite/held-connection.d.ts +8 -0
  839. package/dist/store/sqlite/held-connection.js +34 -7
  840. package/dist/store/sqlite/last-recall-group.d.ts +15 -0
  841. package/dist/store/sqlite/last-recall-group.js +62 -0
  842. package/dist/store/sqlite/learning-group.d.ts +4 -0
  843. package/dist/store/sqlite/learning-group.js +17 -0
  844. package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
  845. package/dist/store/sqlite/maintenance-groups.js +61 -0
  846. package/dist/store/sqlite/object-rows.d.ts +6 -3
  847. package/dist/store/sqlite/object-rows.js +34 -5
  848. package/dist/store/sqlite/objects-group.d.ts +5 -4
  849. package/dist/store/sqlite/objects-group.js +97 -38
  850. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  851. package/dist/store/sqlite/predictions-group.js +4 -2
  852. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  853. package/dist/store/sqlite/promotion-group.js +10 -0
  854. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  855. package/dist/store/sqlite/quarantine-group.js +4 -2
  856. package/dist/store/sqlite/reports-group.d.ts +6 -0
  857. package/dist/store/sqlite/reports-group.js +33 -0
  858. package/dist/store/sqlite/request-scope.d.ts +6 -0
  859. package/dist/store/sqlite/request-scope.js +18 -0
  860. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  861. package/dist/store/sqlite/sessions-group.js +46 -0
  862. package/dist/store/sqlite/store.d.ts +22 -18
  863. package/dist/store/sqlite/store.js +95 -33
  864. package/dist/store/sqlite/vector-pack.js +2 -1
  865. package/dist/store/sqlite/vector-reads-group.js +2 -1
  866. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  867. package/dist/store/sqlite/worker-jobs.js +19 -7
  868. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  869. package/dist/store/sqlite/worker-ops.js +6 -3
  870. package/dist/store/sqlite/worker-store.d.ts +4 -3
  871. package/dist/store/sqlite/worker-store.js +24 -14
  872. package/dist/store/summaries.d.ts +25 -11
  873. package/dist/store/summaries.js +84 -27
  874. package/dist/store/summary-dirty.d.ts +2 -1
  875. package/dist/store/summary-dirty.js +2 -1
  876. package/dist/store/tenant.d.ts +3 -2
  877. package/dist/store/tenant.js +5 -4
  878. package/dist/store/token-ledger-rows.js +8 -4
  879. package/dist/store/token-ledger.d.ts +19 -13
  880. package/dist/store/token-ledger.js +27 -14
  881. package/dist/store/tombstone-checks.d.ts +4 -1
  882. package/dist/store/tombstone-checks.js +10 -1
  883. package/dist/store/usage-reports.js +2 -1
  884. package/dist/store/vector-index.d.ts +8 -5
  885. package/dist/store/vector-index.js +28 -11
  886. package/dist/store/working-memory.d.ts +6 -4
  887. package/dist/store/working-memory.js +14 -9
  888. package/dist/support-bundle.js +10 -5
  889. package/dist/trust/quarantine.d.ts +1 -2
  890. package/dist/trust/quarantine.js +1 -5
  891. package/dist/trust/reject-flow.d.ts +12 -3
  892. package/dist/trust/reject-flow.js +12 -4
  893. package/dist/util/anthropic-messages.d.ts +7 -2
  894. package/dist/util/anthropic-messages.js +18 -7
  895. package/dist/util/atomic-write.d.ts +8 -3
  896. package/dist/util/atomic-write.js +36 -21
  897. package/dist/util/compaction-items.d.ts +4 -1
  898. package/dist/util/compaction-items.js +8 -2
  899. package/dist/util/crash-handlers.d.ts +7 -2
  900. package/dist/util/crash-handlers.js +13 -4
  901. package/dist/util/env.d.ts +26 -5
  902. package/dist/util/env.js +87 -25
  903. package/dist/util/format.d.ts +2 -0
  904. package/dist/util/format.js +4 -0
  905. package/dist/util/home-path.js +12 -6
  906. package/dist/util/hook-payload.d.ts +3 -1
  907. package/dist/util/hook-payload.js +3 -1
  908. package/dist/util/http-retry.d.ts +12 -6
  909. package/dist/util/http-retry.js +16 -6
  910. package/dist/util/http-util.d.ts +20 -5
  911. package/dist/util/http-util.js +28 -9
  912. package/dist/util/json.d.ts +4 -1
  913. package/dist/util/json.js +4 -1
  914. package/dist/util/keyset.js +2 -1
  915. package/dist/util/limits.js +4 -2
  916. package/dist/util/log.d.ts +13 -5
  917. package/dist/util/log.js +29 -6
  918. package/dist/util/net.d.ts +5 -0
  919. package/dist/util/net.js +19 -0
  920. package/dist/util/real-path.d.ts +2 -1
  921. package/dist/util/real-path.js +4 -3
  922. package/dist/util/request-scope.d.ts +16 -4
  923. package/dist/util/request-scope.js +19 -6
  924. package/dist/util/same-text.d.ts +10 -3
  925. package/dist/util/same-text.js +10 -3
  926. package/dist/util/secret-detect.d.ts +24 -7
  927. package/dist/util/secret-detect.js +49 -14
  928. package/dist/util/spawn-argv.d.ts +11 -0
  929. package/dist/util/spawn-argv.js +66 -0
  930. package/dist/util/sql.d.ts +3 -0
  931. package/dist/util/sql.js +6 -0
  932. package/dist/util/sqlite-blocked.d.ts +15 -4
  933. package/dist/util/sqlite-blocked.js +19 -6
  934. package/dist/util/stored-json.d.ts +4 -1
  935. package/dist/util/stored-json.js +6 -2
  936. package/dist/util/stream-tee.d.ts +2 -1
  937. package/dist/util/stream-tee.js +8 -5
  938. package/dist/util/transcript-tail.d.ts +4 -1
  939. package/dist/util/transcript-tail.js +4 -1
  940. package/dist/util/vector-codec.d.ts +4 -0
  941. package/dist/util/vector-codec.js +15 -0
  942. package/dist/util/version.d.ts +8 -3
  943. package/dist/util/version.js +8 -3
  944. package/dist/util/write-budget.d.ts +7 -2
  945. package/dist/util/write-budget.js +5 -2
  946. package/dist/util/yaml.d.ts +4 -1
  947. package/dist/util/yaml.js +4 -1
  948. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  949. package/extensions/openclaw-plugin/package.json +1 -1
  950. package/openclaw.plugin.json +1 -1
  951. package/package.json +4 -1
  952. package/scripts/postinstall.cjs +3 -1
  953. package/dist/api/audit.js +0 -56
  954. package/dist/api/cards.d.ts +0 -42
  955. package/dist/api/conflicts.d.ts +0 -28
  956. package/dist/api/conflicts.js +0 -61
  957. package/dist/api/dormant.d.ts +0 -14
  958. package/dist/api/dormant.js +0 -58
  959. package/dist/api/goals.d.ts +0 -18
  960. package/dist/api/graph.d.ts +0 -8
  961. package/dist/api/graph.js +0 -7
  962. package/dist/api/learn.js +0 -124
  963. package/dist/api/memories.d.ts +0 -23
  964. package/dist/api/memories.js +0 -46
  965. package/dist/api/objects.d.ts +0 -9
  966. package/dist/api/on-store.d.ts +0 -16
  967. package/dist/api/on-store.js +0 -38
  968. package/dist/api/outcome.d.ts +0 -19
  969. package/dist/api/outcome.js +0 -21
  970. package/dist/api/predictions.d.ts +0 -11
  971. package/dist/api/promote.d.ts +0 -36
  972. package/dist/api/promote.js +0 -65
  973. package/dist/api/recall-core.d.ts +0 -4
  974. package/dist/api/recall-core.js +0 -120
  975. package/dist/api/recall-finish.d.ts +0 -53
  976. package/dist/api/recall-finish.js +0 -30
  977. package/dist/api/recall-history.d.ts +0 -64
  978. package/dist/api/recall-history.js +0 -159
  979. package/dist/api/recall-record.d.ts +0 -43
  980. package/dist/api/recall-record.js +0 -78
  981. package/dist/api/recall-request.js +0 -121
  982. package/dist/api/recall.d.ts +0 -6
  983. package/dist/api/refine.d.ts +0 -7
  984. package/dist/api/refine.js +0 -10
  985. package/dist/api/session-owners.d.ts +0 -4
  986. package/dist/api/session-owners.js +0 -17
  987. package/dist/api/sleep-run.d.ts +0 -26
  988. package/dist/api/sleep.js +0 -10
  989. package/dist/cli/lenient-id.d.ts +0 -2
  990. package/dist/cli/lenient-id.js +0 -13
  991. package/dist/graph/write.d.ts +0 -14
  992. package/dist/store/sqlite/busy.d.ts +0 -3
  993. package/dist/store/sqlite/busy.js +0 -8
  994. package/dist/store/sqlite/local.d.ts +0 -21
  995. package/dist/store/sqlite/local.js +0 -39
@@ -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): 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,66 +1,68 @@
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
- // One read after consolidation serves dedup, the audit and ambient: dedup reports every row it deletes, so later phases subtract instead of reading again.
56
- 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
+ };
57
59
  // Phase 2: Dedup (post-consolidate near-duplicate cleanup).
58
- 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 });
59
61
  counts.dedup = dedupResult.removed;
60
62
  if (dedupResult.removed > 0)
61
63
  result.deduped = dedupSummary(dedupResult);
62
64
  // Phase 3: Quality audit (remove junk, report warnings; a dry run skips rows earlier phases would remove).
63
- const audited = runQualityAudit(ctx, phases, { dryRun, consolidateResult, dedupResult, result, loaded });
65
+ const audited = await runQualityAudit(ctx, phases, { dryRun, consolidateResult, dedupResult, result, loaded });
64
66
  counts.auditDeleted = audited.removed;
65
67
  if (dryRun)
66
68
  return result;
@@ -78,7 +80,7 @@ function snapshotDirtyTenants(ctx, phases, dryRun) {
78
80
  const snapshot = { dirtyTenants: [], error: null };
79
81
  if (!dryRun) {
80
82
  try {
81
- snapshot.dirtyTenants = phases.loadPendingExtractionTenants(ctx.hippoRoot);
83
+ snapshot.dirtyTenants = phases.loadPendingExtractionTenants(ctx.store.localFiles.consolidation);
82
84
  }
83
85
  catch (snapErr) {
84
86
  snapshot.error = errorMessage(snapErr);
@@ -116,18 +118,23 @@ function dedupSummary(dedupResult) {
116
118
  crossDups,
117
119
  };
118
120
  }
119
- /** `removed` counts audit errors deleted (or that would be under dryRun); `remaining` is what the audit read, less the rows it deleted. */
120
- function runQualityAudit(ctx, phases, options) {
121
+ /** `removed` counts audit errors deleted (or that would be under dryRun); `remaining` is what the audit read, less the
122
+ * rows it deleted. */
123
+ async function runQualityAudit(ctx, phases, options) {
121
124
  const { dryRun, consolidateResult, dedupResult, result, loaded } = options;
122
- // The load followed consolidation, so only a dry run still holds the rows consolidation would remove; dedup's pairs are gone or would be.
123
- 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
+ ]);
124
131
  const allEntries = loaded.entries.filter((e) => !planned.has(e.id));
125
132
  const auditOut = phases.auditMemories(allEntries, loaded.backing);
126
133
  if (auditOut.issues.length === 0)
127
134
  return { removed: 0, remaining: allEntries };
128
135
  const errors = auditOut.issues.filter((i) => i.severity === 'error');
129
136
  const warnings = auditOut.issues.filter((i) => i.severity === 'warning');
130
- const gone = dryRun ? errors.map((issue) => issue.memoryId) : removeAuditErrors(ctx, 'sleep-audit', errors);
137
+ const gone = dryRun ? errors.map((issue) => issue.memoryId) : await removeAuditErrors(ctx, 'sleep-audit', errors);
131
138
  const removed = gone.length;
132
139
  const deleted = new Set(gone);
133
140
  if (removed > 0 || warnings.length > 0) {
@@ -139,7 +146,7 @@ function runQualityAudit(ctx, phases, options) {
139
146
  return { removed, remaining: allEntries.filter((e) => !deleted.has(e.id)) };
140
147
  }
141
148
  function shareOnSleep(ctx, phases, result) {
142
- const sleepConfig = phases.loadConfig(ctx.hippoRoot);
149
+ const sleepConfig = ctx.config ?? phases.loadConfig(ctx.hippoRoot);
143
150
  if (!sleepConfig.autoShareOnSleep)
144
151
  return;
145
152
  // Both skip counters are surfaced so the secret veto and the rejection tombstone are observable, not silent.
@@ -157,7 +164,7 @@ function shareOnSleep(ctx, phases, result) {
157
164
  }
158
165
  /** Returns the ambient total the audit row reports: 0 when ambient is off or no current row is left. */
159
166
  function summarizeAmbient(ctx, phases, result, loaded) {
160
- const postSleepConfig = phases.loadConfig(ctx.hippoRoot);
167
+ const postSleepConfig = ctx.config ?? phases.loadConfig(ctx.hippoRoot);
161
168
  if (!postSleepConfig.ambient.enabled)
162
169
  return 0;
163
170
  const postSleepEntries = loaded.filter((e) => !e.superseded_by);
@@ -193,10 +200,11 @@ async function drainGraphQueue(ctx, phases, snapshot, result) {
193
200
  ];
194
201
  }
195
202
  }
196
- /** 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. */
197
205
  async function rebuildDirtyTenant(ctx, phases, dirty, rebuilt, result) {
198
206
  try {
199
- const ext = await phases.extractGraph(ctx.hippoRoot, dirty.tenantId);
207
+ const ext = await phases.extractGraph(objectsOf(ctx), ctx.hippoRoot, dirty.tenantId);
200
208
  // Count the rebuild as soon as it succeeds — it happened regardless of
201
209
  // the drain-mark below.
202
210
  rebuilt.tenants += 1;
@@ -210,7 +218,7 @@ async function rebuildDirtyTenant(ctx, phases, dirty, rebuilt, result) {
210
218
  }
211
219
  // Watermark drain: only items enqueued before this rebuild started are marked; later arrivals stay pending.
212
220
  // Marked only after the last chunk, so a run stopped between chunks leaves the tenant for the next one.
213
- markPendingProcessedUpTo(ctx.hippoRoot, dirty.tenantId, dirty.maxPendingId);
221
+ ctx.store.localFiles.consolidation.markGraphDrained(dirty.tenantId, dirty.maxPendingId);
214
222
  }
215
223
  catch (tenantErr) {
216
224
  result.details = [
@@ -220,8 +228,8 @@ async function rebuildDirtyTenant(ctx, phases, dirty, rebuilt, result) {
220
228
  }
221
229
  }
222
230
  // One 'consolidate' row per sleep, emitted from finally so a partial failure still reports what got done.
223
- // Its own handle; an audit failure is logged and never replaces the original phase error.
224
- 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) {
225
233
  try {
226
234
  // Tagged '__host__' because sleep is host-wide; the actor still names the operator who ran it.
227
235
  const sleepAuditMetadata = {
@@ -236,11 +244,12 @@ function emitSleepAudit(ctx, opts, dryRun, counts, phaseError) {
236
244
  };
237
245
  if (phaseError)
238
246
  sleepAuditMetadata.errorMessage = phaseError.message;
239
- // A flush stopped between chunks names the unit it would have committed next, so a unit that fails every night can be found.
240
- 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);
241
250
  if (nextUnitIds)
242
251
  sleepAuditMetadata.nextUnitIds = nextUnitIds;
243
- sqliteSyncStore(ctx.hippoRoot).appendAuditEvents([{
252
+ await ctx.store.appendAuditEvents([{
244
253
  tenantId: '__host__',
245
254
  actor: ctx.actor.subject,
246
255
  op: 'consolidate',
@@ -249,7 +258,7 @@ function emitSleepAudit(ctx, opts, dryRun, counts, phaseError) {
249
258
  }
250
259
  catch (auditErr) {
251
260
  // Logged, never thrown: a second failure must not mask the original phaseError.
252
- reportAuditWriteFailure('consolidate', String(auditErr));
261
+ ctx.store.localFiles.consolidation.reportAuditFailure('consolidate', String(auditErr));
253
262
  }
254
263
  }
255
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