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
@@ -1,13 +1,21 @@
1
- // Takes an imported agent note out of recall on the caller's transaction; the note sync and the project repair both use it.
1
+ // Takes an imported agent note out of recall on the caller's transaction; the note sync and the project repair both use
2
+ // it.
2
3
  import { appendAuditEvent } from './audit.js';
4
+ import { SYNC_ACTOR } from '../core/agent-memory-tools.js';
3
5
  import { insertDormantRow } from './dormant.js';
4
6
  import { calculateStrength } from '../core/memory.js';
5
7
  import { deleteEntryRowInTx, setEntryTagsInTx } from './entry-writes.js';
6
- export const SYNC_ACTOR = 'agent-memories';
7
- /** Design 6's set-aside on the caller's transaction: a pinned row only loses the tag, any other goes dormant, restorable. */
8
+ /** Design 6's set-aside on the caller's transaction: a pinned row only loses the tag, any other goes dormant,
9
+ * restorable. */
8
10
  export function setAsideRow(db, tag, row, why) {
9
11
  const untagged = { ...row, tags: row.tags.filter((t) => t !== tag) };
10
- const audit = (metadata) => appendAuditEvent(db, { tenantId: row.tenant_id, actor: SYNC_ACTOR, op: 'agent_memory_set_aside', targetId: row.id, metadata });
12
+ const audit = (metadata) => appendAuditEvent(db, {
13
+ tenantId: row.tenant_id,
14
+ actor: SYNC_ACTOR,
15
+ op: 'agent_memory_set_aside',
16
+ targetId: row.id,
17
+ metadata,
18
+ });
11
19
  if (row.pinned) {
12
20
  setEntryTagsInTx(db, untagged);
13
21
  audit({ why, untagged: true });
@@ -15,7 +23,12 @@ export function setAsideRow(db, tag, row, why) {
15
23
  }
16
24
  const now = new Date();
17
25
  // Sleep's dormant move skips kept rows, so the steps are written out here without its filter.
18
- insertDormantRow(db, { entry: untagged, strength: calculateStrength(row, now), reason: 'source-deleted', dormantAt: now.toISOString() });
26
+ insertDormantRow(db, {
27
+ entry: untagged,
28
+ strength: calculateStrength(row, now),
29
+ reason: 'source-deleted',
30
+ dormantAt: now.toISOString(),
31
+ });
19
32
  deleteEntryRowInTx(db, row, SYNC_ACTOR);
20
33
  audit({ why });
21
34
  return { kind: 'dormant', id: row.id };
@@ -0,0 +1,3 @@
1
+ import type { AgentImport } from '../port/agent-import.js';
2
+ export declare const sqliteAgentImport: AgentImport;
3
+ //# sourceMappingURL=agent-import.d.ts.map
@@ -0,0 +1,77 @@
1
+ // AgentImport on hippo.db: each target holds one bare handle, and a container's calls run on it in one scope.
2
+ import fs from 'node:fs';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { closeHippoDb, isSqliteBusy, outsideRequestStores, withTrialScope, withWriteScope, } from '../../db/index.js';
6
+ import { appendAuditEvent } from '../audit.js';
7
+ import { deleteDormantRow, dormantSnapshotsBySourcePrefix, readDormantSnapshot, replaceDormantEntry, } from '../dormant.js';
8
+ import { stampOriginProject } from '../entry-row.js';
9
+ import { entryIdTakenAt, selectLiveEntriesBySourcePrefix, selectRowsOutsideSourcePrefixAt } from '../entry-reads.js';
10
+ import { renameEntrySourceAndOriginAt, renameEntrySourceAt, setEntryTagsInTx, supersedeEntryAt, writeEntryMirrors, } from '../entry-writes.js';
11
+ import { gatedWrite } from '../gated-write.js';
12
+ import { updateStats } from '../index-and-stats.js';
13
+ import { removeEntryMirrors } from '../mirrors.js';
14
+ import { initStore, openBareHandle } from '../open.js';
15
+ import { projectTagReads } from '../project-tags.js';
16
+ import { findRejectedValue, rejectionDigest } from '../rejection.js';
17
+ import { setAsideRow } from '../set-aside.js';
18
+ import { markSummaryDirtyInTx } from '../summary-dirty.js';
19
+ import { resolveTenantId } from '../tenant.js';
20
+ function containerTx(db, root) {
21
+ return {
22
+ liveBySourcePrefix: (tenantId, prefix) => selectLiveEntriesBySourcePrefix(db, tenantId, prefix),
23
+ dormantBySourcePrefix: (tenantId, prefix) => dormantSnapshotsBySourcePrefix(db, tenantId, prefix),
24
+ readDormant: (tenantId, id) => readDormantSnapshot(db, tenantId, id),
25
+ deleteDormant: (tenantId, id) => {
26
+ deleteDormantRow(db, tenantId, id);
27
+ },
28
+ replaceDormant: (tenantId, id, entry) => replaceDormantEntry(db, tenantId, id, entry),
29
+ entryIdTaken: (id) => entryIdTakenAt(db, id),
30
+ isRejected: (tenantId, text) => findRejectedValue(db, tenantId, rejectionDigest(text)) !== null,
31
+ renameSource: (tenantId, id, from, to) => renameEntrySourceAt(db, tenantId, id, from, to),
32
+ renameSourceAndOrigin: (tenantId, id, move) => renameEntrySourceAndOriginAt(db, tenantId, id, move),
33
+ setTags: (entry) => setEntryTagsInTx(db, entry),
34
+ supersede: (tenantId, id, newId) => supersedeEntryAt(db, tenantId, id, newId),
35
+ markSummaryDirty: (summaryId, tenantId, actor) => markSummaryDirtyInTx(db, summaryId, tenantId, actor),
36
+ appendAudit: (event) => appendAuditEvent(db, event),
37
+ gatedWrite: (entry, opts) => gatedWrite(db, root, entry, opts),
38
+ setAside: (tag, row, why) => setAsideRow(db, tag, row, why),
39
+ stampOrigin: (entry) => stampOriginProject(root, entry),
40
+ };
41
+ }
42
+ function importTarget(db, root, close) {
43
+ const tenantId = resolveTenantId({});
44
+ return {
45
+ root,
46
+ tenantId,
47
+ liveBySourcePrefix: (prefix) => selectLiveEntriesBySourcePrefix(db, tenantId, prefix),
48
+ rowsOutsideSourcePrefix: (prefix, origins) => selectRowsOutsideSourcePrefixAt(db, tenantId, prefix, origins),
49
+ projectTagReads: () => projectTagReads(db, tenantId),
50
+ inContainer: (scope, dryRun, work) => {
51
+ const run = () => work(containerTx(db, root));
52
+ return dryRun ? withTrialScope(db, scope, run) : withWriteScope(db, scope, run);
53
+ },
54
+ writeMirror: (entry) => writeEntryMirrors(root, entry),
55
+ removeMirror: (id) => removeEntryMirrors(root, id),
56
+ bumpRemembered: (count) => updateStats(root, { remembered: count }),
57
+ close,
58
+ };
59
+ }
60
+ export const sqliteAgentImport = {
61
+ create: (root) => initStore(root),
62
+ open: (root, opts) => {
63
+ const db = openBareHandle(root, { busyWaitMs: opts.busyWaitMs });
64
+ return importTarget(db, root, () => closeHippoDb(db));
65
+ },
66
+ openStandIn: () => {
67
+ const root = fs.mkdtempSync(path.join(os.tmpdir(), 'hippo-agent-memories-'));
68
+ // Its folder is deleted at close, so a request scope must not keep the file open past that.
69
+ const db = outsideRequestStores(() => openBareHandle(root));
70
+ return importTarget(db, root, () => {
71
+ closeHippoDb(db);
72
+ fs.rmSync(root, { recursive: true, force: true });
73
+ });
74
+ },
75
+ isBusy: (err) => isSqliteBusy(err),
76
+ };
77
+ //# sourceMappingURL=agent-import.js.map
@@ -0,0 +1,6 @@
1
+ import type { Cards } from '../port-groups.js';
2
+ import type { Sync } from '../port.js';
3
+ export declare function sqliteCards(hippoRoot: string): Sync<Cards>;
4
+ /** The group as a served store answers it: a throw rejects as another store's would. */
5
+ export declare function servedCards(sync: Sync<Cards>): Cards;
6
+ //# sourceMappingURL=cards-group.d.ts.map
@@ -0,0 +1,37 @@
1
+ // hippo.db's Cards group: the agent work board.
2
+ import { loadCardDetail } from '../card-detail.js';
3
+ import { addCardComment, blockCard, claimCard, completeCard, createCard, heartbeatCard, listCards, loadCard, loadCardRuns, reclaimExpiredCards, reviewCard, } from '../cards.js';
4
+ export function sqliteCards(hippoRoot) {
5
+ return {
6
+ create: (tenantId, input) => createCard(hippoRoot, tenantId, { ...input, dependsOn: input.dependsOn ? [...input.dependsOn] : undefined }),
7
+ load: (tenantId, id) => loadCard(hippoRoot, tenantId, id),
8
+ detail: (tenantId, id) => loadCardDetail(hippoRoot, tenantId, id),
9
+ list: (tenantId, opts) => listCards(hippoRoot, tenantId, opts),
10
+ runs: (tenantId, id) => loadCardRuns(hippoRoot, tenantId, id),
11
+ claim: (tenantId, id, runtime, sessionId) => claimCard(hippoRoot, tenantId, id, runtime, sessionId),
12
+ heartbeat: (tenantId, id, runId) => heartbeatCard(hippoRoot, tenantId, id, runId),
13
+ block: (tenantId, id, reason, runId) => blockCard(hippoRoot, tenantId, id, reason, runId),
14
+ review: (tenantId, id, runId) => reviewCard(hippoRoot, tenantId, id, runId),
15
+ complete: (tenantId, id, outcome, runId) => completeCard(hippoRoot, tenantId, id, outcome, runId),
16
+ reclaimExpired: (tenantId) => reclaimExpiredCards(hippoRoot, tenantId),
17
+ comment: (tenantId, cardId, author, body) => addCardComment(hippoRoot, tenantId, cardId, author, body),
18
+ };
19
+ }
20
+ /** The group as a served store answers it: a throw rejects as another store's would. */
21
+ export function servedCards(sync) {
22
+ return {
23
+ create: async (tenantId, input) => sync.create(tenantId, input),
24
+ load: async (tenantId, id) => sync.load(tenantId, id),
25
+ detail: async (tenantId, id) => sync.detail(tenantId, id),
26
+ list: async (tenantId, opts) => sync.list(tenantId, opts),
27
+ runs: async (tenantId, id) => sync.runs(tenantId, id),
28
+ claim: async (tenantId, id, runtime, sessionId) => sync.claim(tenantId, id, runtime, sessionId),
29
+ heartbeat: async (tenantId, id, runId) => sync.heartbeat(tenantId, id, runId),
30
+ block: async (tenantId, id, reason, runId) => sync.block(tenantId, id, reason, runId),
31
+ review: async (tenantId, id, runId) => sync.review(tenantId, id, runId),
32
+ complete: async (tenantId, id, outcome, runId) => sync.complete(tenantId, id, outcome, runId),
33
+ reclaimExpired: async (tenantId) => sync.reclaimExpired(tenantId),
34
+ comment: async (tenantId, cardId, author, body) => sync.comment(tenantId, cardId, author, body),
35
+ };
36
+ }
37
+ //# sourceMappingURL=cards-group.js.map
@@ -0,0 +1,6 @@
1
+ import type { Conflicts } from '../port-groups.js';
2
+ import type { Sync } from '../port.js';
3
+ export declare function sqliteConflicts(hippoRoot: string): Sync<Conflicts>;
4
+ /** The group as a served store answers it: a throw rejects as another store's would. */
5
+ export declare function servedConflicts(sync: Sync<Conflicts>): Conflicts;
6
+ //# sourceMappingURL=conflicts-group.d.ts.map
@@ -0,0 +1,18 @@
1
+ // hippo.db's Conflicts group: listing and resolving the memory_conflicts rows.
2
+ import { listMemoryConflicts, listTouchableConflicts, resolveConflict } from '../conflicts.js';
3
+ export function sqliteConflicts(hippoRoot) {
4
+ return {
5
+ list: (tenantId, status) => listMemoryConflicts(hippoRoot, status, tenantId ?? undefined),
6
+ listTouchable: (tenantId, status, actor) => listTouchableConflicts(hippoRoot, status, tenantId, actor),
7
+ resolve: (tenantId, request, opts) => resolveConflict(hippoRoot, { ...request, tenantId }, opts),
8
+ };
9
+ }
10
+ /** The group as a served store answers it: a throw rejects as another store's would. */
11
+ export function servedConflicts(sync) {
12
+ return {
13
+ list: async (tenantId, status) => sync.list(tenantId, status),
14
+ listTouchable: async (tenantId, status, actor) => sync.listTouchable(tenantId, status, actor),
15
+ resolve: async (tenantId, request, opts) => sync.resolve(tenantId, request, opts),
16
+ };
17
+ }
18
+ //# sourceMappingURL=conflicts-group.js.map
@@ -1,5 +1,6 @@
1
1
  import type { ConnectorEvents, Sync } from '../port.js';
2
2
  export declare function sqliteConnectorEvents(hippoRoot: string): Sync<ConnectorEvents>;
3
- /** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as another store's would. */
3
+ /** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
4
+ * another store's would. */
4
5
  export declare function servedConnectorEvents(sync: Sync<ConnectorEvents>): ConnectorEvents;
5
6
  //# sourceMappingURL=connector-events-group.d.ts.map
@@ -1,9 +1,11 @@
1
1
  // hippo.db's half of the ConnectorEvents store group: each call on a handle of its own.
2
- import { archiveDeletedArtifact, githubEventRecord, githubEventSeenAt, githubRouting, insertGitHubDlq, markGitHubEventSeen } from '../connectors/github.js';
3
- import { insertSlackDlq, markSlackEventSeen, rawMemoryIdForArtifactAt, slackEventRecord, slackEventSeenAt, slackTeamRoute } from '../connectors/slack.js';
2
+ import { archiveDeletedArtifact, githubEventRecord, githubEventSeenAt, githubRouting, insertGitHubDlq, markGitHubEventSeen, } from '../connectors/github.js';
3
+ import { insertSlackDlq, markSlackEventSeen, rawMemoryIdForArtifactAt, slackEventRecord, slackEventSeenAt, slackTeamRoute, } from '../connectors/slack.js';
4
4
  import { onHandle } from '../open.js';
5
5
  function eventRecord(hippoRoot, event) {
6
- return event.connector === 'slack' ? slackEventRecord(hippoRoot, event.eventId) : githubEventRecord(hippoRoot, event.idempotencyKey);
6
+ return event.connector === 'slack'
7
+ ? slackEventRecord(hippoRoot, event.eventId)
8
+ : githubEventRecord(hippoRoot, event.idempotencyKey);
7
9
  }
8
10
  function markEventSeen(hippoRoot, event) {
9
11
  if (event.connector === 'slack')
@@ -19,7 +21,15 @@ function deletionTarget(hippoRoot, { event, artifactRef, tenantId }) {
19
21
  }
20
22
  function archiveArtifact(hippoRoot, { tenantId, actor, artifactRef, reason, event }) {
21
23
  const { idempotencyKey, deliveryId, eventName } = event;
22
- return archiveDeletedArtifact(hippoRoot, { tenantId, artifactRef, idempotencyKey, deliveryId, eventName, reason, who: actor });
24
+ return archiveDeletedArtifact(hippoRoot, {
25
+ tenantId,
26
+ artifactRef,
27
+ idempotencyKey,
28
+ deliveryId,
29
+ eventName,
30
+ reason,
31
+ who: actor,
32
+ });
23
33
  }
24
34
  export function sqliteConnectorEvents(hippoRoot) {
25
35
  return {
@@ -29,10 +39,11 @@ export function sqliteConnectorEvents(hippoRoot) {
29
39
  archiveDeletedArtifact: (archive) => archiveArtifact(hippoRoot, archive),
30
40
  slackTeamRoute: (teamId) => slackTeamRoute(hippoRoot, teamId),
31
41
  githubRouting: (query) => githubRouting(hippoRoot, query),
32
- parkDeadLetter: (letter) => (letter.connector === 'slack' ? insertSlackDlq(hippoRoot, letter) : insertGitHubDlq(hippoRoot, letter)),
42
+ parkDeadLetter: (letter) => letter.connector === 'slack' ? insertSlackDlq(hippoRoot, letter) : insertGitHubDlq(hippoRoot, letter),
33
43
  };
34
44
  }
35
- /** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as another store's would. */
45
+ /** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
46
+ * another store's would. */
36
47
  export function servedConnectorEvents(sync) {
37
48
  return {
38
49
  eventRecord: async (event) => sync.eventRecord(event),
@@ -1,6 +1,7 @@
1
1
  import type { ConnectorWrites, Sync } from '../port.js';
2
2
  /** Each call on its own handle; the mirror follows the commit, so a duplicate or a rolled-back write leaves none. */
3
3
  export declare function sqliteConnectorWrites(hippoRoot: string): Sync<ConnectorWrites>;
4
- /** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as another store's would. */
4
+ /** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
5
+ * another store's would. */
5
6
  export declare function servedConnectorWrites(sync: Sync<ConnectorWrites>): ConnectorWrites;
6
7
  //# sourceMappingURL=connector-writes-group.d.ts.map
@@ -16,15 +16,19 @@ function logEvent(db, event, memoryId) {
16
16
  return markGitHubEventSeenAt(db, { idempotencyKey, deliveryId, eventName, memoryId });
17
17
  }
18
18
  function loggedMemory(db, event) {
19
- return event.connector === 'slack' ? slackEventMemoryAt(db, event.eventId) : githubEventMemoryAt(db, event.idempotencyKey);
19
+ return event.connector === 'slack'
20
+ ? slackEventMemoryAt(db, event.eventId)
21
+ : githubEventMemoryAt(db, event.idempotencyKey);
20
22
  }
21
- /** The record, then the log row, go in after the memory row and ahead of its remember row, as a second store must order them. */
23
+ /** The record, then the log row, go in after the memory row and ahead of its remember row, as a second store must order
24
+ * them. */
22
25
  function writeWithCompanions(db, { entry, actor, event, quarantine }) {
23
26
  writeInOwnTenant(db, entry, actor, (handle, memoryId) => {
24
- if (quarantine)
27
+ if (quarantine) {
25
28
  recordQuarantine(handle, {
26
29
  tenantId: entry.tenant_id, memoryId, originalScope: quarantine.originalScope, reason: quarantine.reason, actor,
27
30
  });
31
+ }
28
32
  if (event && !logEvent(handle, event, memoryId))
29
33
  throw new EventAlreadyLogged();
30
34
  });
@@ -57,7 +61,8 @@ export function sqliteConnectorWrites(hippoRoot) {
57
61
  },
58
62
  };
59
63
  }
60
- /** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as another store's would. */
64
+ /** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
65
+ * another store's would. */
61
66
  export function servedConnectorWrites(sync) {
62
67
  return {
63
68
  writeConnectorEntry: async (write) => sync.writeConnectorEntry(write),
@@ -0,0 +1,4 @@
1
+ import type { Consolidation } from '../port/consolidation.js';
2
+ /** Sleep's store work on the hippo.db under `hippoRoot`, each call on its own short-lived handle. */
3
+ export declare function sqliteConsolidation(hippoRoot: string): Consolidation;
4
+ //# sourceMappingURL=consolidation-group.d.ts.map
@@ -0,0 +1,64 @@
1
+ import { SLEEP_DB_WAIT_MS } from '../../db/index.js';
2
+ import { recordAuditEventsRowByRow, reportAuditWriteFailure } from '../audit.js';
3
+ import { replaceDetectedConflicts } from '../conflicts.js';
4
+ import { commitInChunks, deleteEntriesOneByOne, failedUnitOf, memoriesBackingObjects } from '../delete-and-batch.js';
5
+ import { expireDormantBefore } from '../dormant.js';
6
+ import { loadAllEntries, loadAllEntriesWithBase, loadCurrentDistilledEntries } from '../entry-reads.js';
7
+ import { ftsDrift } from '../entry-row.js';
8
+ import { writeEntriesTogether, writeEntry } from '../entry-writes.js';
9
+ import { loadPendingExtractionTenants, markPendingProcessedUpTo } from '../graph-queue.js';
10
+ import { moveHalfLives, recordedHalfLifeBase } from '../half-life.js';
11
+ import { appendConsolidationRun, incrementSleepCount, loadSessionDecayContext } from '../index-and-stats.js';
12
+ import { findPromotableSessions, listSessionEvents, traceExistsForSession } from '../sessions.js';
13
+ import { applyRebuildResult, childrenKey, clearSummaryDirtyAfterBuild, loadAllDirtySummaries, loadAllL2Summaries, loadChildrenOfSummaries, loadChildrenOfSummary, } from '../summaries.js';
14
+ import { lazyTombstoneChecks } from '../tombstone-checks.js';
15
+ import { loadStoredParticles, saveStoredParticles } from '../vector-index.js';
16
+ import { errorMessage } from '../../util/log.js';
17
+ /** Sleep's store work on the hippo.db under `hippoRoot`, each call on its own short-lived handle. */
18
+ export function sqliteConsolidation(hippoRoot) {
19
+ return {
20
+ entriesWithBase: () => loadAllEntriesWithBase(hippoRoot),
21
+ objectBackedIds: () => memoriesBackingObjects(hippoRoot),
22
+ ftsDrift: (repair) => ftsDrift(hippoRoot, repair),
23
+ sessionDecayContext: () => loadSessionDecayContext(hippoRoot),
24
+ tombstoneChecks: (dryRun) => lazyTombstoneChecks(hippoRoot, dryRun),
25
+ halfLifeBase: () => recordedHalfLifeBase(hippoRoot),
26
+ moveHalfLives: (to, opts, plan) => moveHalfLives(hippoRoot, to, opts, plan),
27
+ promotableSessions: (tenantId, sinceMs) => findPromotableSessions(hippoRoot, tenantId, sinceMs),
28
+ traceExists: (tenantId, sessionId) => traceExistsForSession(hippoRoot, tenantId, sessionId),
29
+ sessionEvents: (tenantId, opts) => listSessionEvents(hippoRoot, tenantId, opts),
30
+ storedParticles: () => loadStoredParticles(hippoRoot),
31
+ saveParticles: (particles) => saveStoredParticles(hippoRoot, particles),
32
+ // The wait is sleep's own, not a server request's 250 ms.
33
+ commitFlush: (components, opts) => commitInChunks(hippoRoot, components, { ...opts, busyWaitMs: SLEEP_DB_WAIT_MS }),
34
+ expireDormant: (cutoffIso, opts) => expireDormantBefore(hippoRoot, cutoffIso, { ...opts, busyWaitMs: SLEEP_DB_WAIT_MS }),
35
+ replaceConflicts: (detected, detectedAt) => replaceDetectedConflicts(hippoRoot, detected, detectedAt),
36
+ recordRun: (run) => appendConsolidationRun(hippoRoot, run),
37
+ countSleep: () => incrementSleepCount(hippoRoot),
38
+ auditEachRow(events) {
39
+ const failed = recordAuditEventsRowByRow(hippoRoot, events);
40
+ for (const { event, error } of failed)
41
+ reportAuditWriteFailure(event.op, errorMessage(error), event.targetId);
42
+ return failed.length;
43
+ },
44
+ reportAuditFailure: (op, reason) => reportAuditWriteFailure(op, reason),
45
+ allEntries: () => loadAllEntries(hippoRoot),
46
+ currentDistilledEntries: () => loadCurrentDistilledEntries(hippoRoot),
47
+ deleteOneByOne: (targets, opts) => deleteEntriesOneByOne(hippoRoot, targets, opts),
48
+ failedUnitOf,
49
+ dirtyGraphTenants: () => loadPendingExtractionTenants(hippoRoot),
50
+ markGraphDrained: (tenantId, maxId) => markPendingProcessedUpTo(hippoRoot, tenantId, maxId),
51
+ writeEntry: (entry) => writeEntry(hippoRoot, entry),
52
+ writeTogether: (entries) => writeEntriesTogether(hippoRoot, entries),
53
+ dirtySummaries: (limit) => loadAllDirtySummaries(hippoRoot, limit),
54
+ childrenOfSummary: (summaryId, tenantId) => loadChildrenOfSummary(hippoRoot, summaryId, tenantId),
55
+ childrenOfSummaries(summaries) {
56
+ const byParent = loadChildrenOfSummaries(hippoRoot, summaries);
57
+ return (summary) => byParent.get(childrenKey(summary.tenant_id, summary.id)) ?? [];
58
+ },
59
+ applyRebuild: (summary, patch) => applyRebuildResult(hippoRoot, summary, patch),
60
+ clearSummaryDirty: (summaryId, tenantId, actor, source) => clearSummaryDirtyAfterBuild(hippoRoot, summaryId, tenantId, actor, source),
61
+ unprofiledTopicSummaries: () => loadAllL2Summaries(hippoRoot),
62
+ };
63
+ }
64
+ //# sourceMappingURL=consolidation-group.js.map
@@ -1,5 +1,5 @@
1
1
  import { pagedDescendants } from '../descendant-page.js';
2
- import { countSessionRawMemories, loadSessionRawMemories, selectChildrenByParent, selectEntriesByIds } from '../entry-reads.js';
2
+ import { countSessionRawMemories, loadSessionRawMemories, selectChildrenByParent, selectEntriesByIds, } from '../entry-reads.js';
3
3
  import { onHandle, openStore } from '../open.js';
4
4
  export function sqliteDagReads(hippoRoot) {
5
5
  return {
@@ -0,0 +1,6 @@
1
+ import type { Dormant } from '../port-groups.js';
2
+ import type { Sync } from '../port.js';
3
+ export declare function sqliteDormant(hippoRoot: string): Sync<Dormant>;
4
+ /** The group as a served store answers it: a throw rejects as another store's would. */
5
+ export declare function servedDormant(sync: Sync<Dormant>): Dormant;
6
+ //# sourceMappingURL=dormant-group.d.ts.map
@@ -0,0 +1,29 @@
1
+ // hippo.db's Dormant group: the memories sleep set aside, listed, restored or forgotten for good.
2
+ import { forgetDormantMemory, holdsDormantMemory, loadDormantMemories, restoreDormantMemory } from '../dormant.js';
3
+ import { updateStatsUnlessBusy } from '../index-and-stats.js';
4
+ import { touchableScopeSql } from '../rule-sql.js';
5
+ export function sqliteDormant(hippoRoot) {
6
+ return {
7
+ list: (tenantId, ownScope, opts) => loadDormantMemories(hippoRoot, tenantId, opts, touchableScopeSql('', ownScope)),
8
+ holds: (tenantId, ownScope, id) => holdsDormantMemory(hippoRoot, tenantId, id, touchableScopeSql('', ownScope)),
9
+ restore: (tenantId, request) => restoreDormantMemory(hippoRoot, { ...request, tenantId }),
10
+ forget(tenantId, ownScope, id, actor) {
11
+ const admit = touchableScopeSql('', ownScope);
12
+ if (!forgetDormantMemory(hippoRoot, { tenantId, id, actor, admit }))
13
+ return false;
14
+ // Counted like every other permanent removal (forget, archiveRaw).
15
+ updateStatsUnlessBusy(hippoRoot, { forgotten: 1 }, `removed ${id}`);
16
+ return true;
17
+ },
18
+ };
19
+ }
20
+ /** The group as a served store answers it: a throw rejects as another store's would. */
21
+ export function servedDormant(sync) {
22
+ return {
23
+ list: async (tenantId, ownScope, opts) => sync.list(tenantId, ownScope, opts),
24
+ holds: async (tenantId, ownScope, id) => sync.holds(tenantId, ownScope, id),
25
+ restore: async (tenantId, request) => sync.restore(tenantId, request),
26
+ forget: async (tenantId, ownScope, id, actor) => sync.forget(tenantId, ownScope, id, actor),
27
+ };
28
+ }
29
+ //# sourceMappingURL=dormant-group.js.map
@@ -3,13 +3,16 @@ import { type MemoryEntry } from '../../core/memory.js';
3
3
  import { type ArchiveOpts } from '../raw-archive.js';
4
4
  import type { EntryWrite, EntryWrites, OutcomeWrite, RawArchive, Sync } from '../port.js';
5
5
  import { type WriteEntryInternalOptions } from '../entry-writes.js';
6
- /** Each call on its own handle; mirrors and the forgotten counter follow the commit, so a rolled-back write leaves neither. */
6
+ /** Each call on its own handle; mirrors and the forgotten counter follow the commit, so a rolled-back write leaves
7
+ * neither. */
7
8
  export declare function sqliteEntryWrites(hippoRoot: string): Sync<EntryWrites>;
8
9
  /** A store-side hook writes on the row's handle inside its write scope, so its throw undoes the row. */
9
10
  export declare function writeEntryAt(hippoRoot: string, { entry, actor }: EntryWrite, afterWrite?: WriteEntryInternalOptions['afterWrite']): void;
10
- /** A trace link follows the commit on the same handle and names only the ids applied, so a rolled-back outcome leaves none. */
11
+ /** A trace link follows the commit on the same handle and names only the ids applied, so a rolled-back outcome leaves
12
+ * none. */
11
13
  export declare function applyOutcomeAt(hippoRoot: string, outcome: OutcomeWrite, traceId?: number): string[];
12
- /** Reach is checked inside the archive's write scope. A store-side hook writes on the same handle inside that scope, so its throw undoes the archive. */
14
+ /** Reach is checked inside the archive's write scope. A store-side hook writes on the same handle inside that scope, so
15
+ * its throw undoes the archive. */
13
16
  export declare function archiveRawAt(hippoRoot: string, archive: RawArchive, afterArchive?: ArchiveOpts['afterArchive']): string;
14
17
  /** The refusal row lands after `write` has rolled back, in a fresh implicit transaction the aborted one cannot undo. */
15
18
  export declare function auditingRefusal<T>(db: DatabaseSyncLike, actor: string, write: () => T): T;
@@ -1,4 +1,5 @@
1
- // hippo.db's half of the EntryWrites store group: the queries remember, outcome, supersede, archive and forget run today.
1
+ // hippo.db's half of the EntryWrites store group: the queries remember, outcome, supersede, archive and forget run
2
+ // today.
2
3
  import { ConflictError, NotFoundError } from '../../core/api-errors.js';
3
4
  import { appendAuditEvent } from '../audit.js';
4
5
  import { isSqliteBusy, withWriteScope } from '../../db/index.js';
@@ -18,7 +19,8 @@ import { updateStatsUnlessBusy } from '../index-and-stats.js';
18
19
  import { purgeMirrorBestEffort, removeEntryMirrors } from '../mirrors.js';
19
20
  import { onHandle, openStore } from '../open.js';
20
21
  import { selectMemoryReach } from '../tenant-lookup.js';
21
- /** Each call on its own handle; mirrors and the forgotten counter follow the commit, so a rolled-back write leaves neither. */
22
+ /** Each call on its own handle; mirrors and the forgotten counter follow the commit, so a rolled-back write leaves
23
+ * neither. */
22
24
  export function sqliteEntryWrites(hippoRoot) {
23
25
  return {
24
26
  writeEntry(write) {
@@ -52,13 +54,19 @@ export function writeEntryAt(hippoRoot, { entry, actor }, afterWrite) {
52
54
  onHandle(hippoRoot, (db) => writeInOwnTenant(db, stamped, actor, afterWrite), openStore);
53
55
  writeEntryMirrors(hippoRoot, stamped);
54
56
  }
55
- /** A trace link follows the commit on the same handle and names only the ids applied, so a rolled-back outcome leaves none. */
57
+ /** A trace link follows the commit on the same handle and names only the ids applied, so a rolled-back outcome leaves
58
+ * none. */
56
59
  export function applyOutcomeAt(hippoRoot, outcome, traceId) {
57
60
  const applied = onHandle(hippoRoot, (db) => {
58
61
  const rows = applyOutcomeOn(db, outcome);
59
62
  const memoryIds = rows.map((entry) => entry.id);
60
63
  if (traceId !== undefined && rows.length > 0) {
61
- recordTraceOutcome(db, { traceId, tenantId: outcome.tenantId, outcome: outcome.good ? 'positive' : 'negative', memoryIds });
64
+ recordTraceOutcome(db, {
65
+ traceId,
66
+ tenantId: outcome.tenantId,
67
+ outcome: outcome.good ? 'positive' : 'negative',
68
+ memoryIds,
69
+ });
62
70
  }
63
71
  return rows;
64
72
  }, openStore);
@@ -66,7 +74,8 @@ export function applyOutcomeAt(hippoRoot, outcome, traceId) {
66
74
  writeEntryMirrors(hippoRoot, entry);
67
75
  return applied.map((entry) => entry.id);
68
76
  }
69
- /** Reach is checked inside the archive's write scope. A store-side hook writes on the same handle inside that scope, so its throw undoes the archive. */
77
+ /** Reach is checked inside the archive's write scope. A store-side hook writes on the same handle inside that scope, so
78
+ * its throw undoes the archive. */
70
79
  export function archiveRawAt(hippoRoot, archive, afterArchive) {
71
80
  const archivedAt = onHandle(hippoRoot, (db) => {
72
81
  const at = withWriteScope(db, 'archive_raw_in_reach', () => {
@@ -88,11 +97,13 @@ function assertInReach(db, target, id) {
88
97
  if (reach?.tenantId !== target.tenantId || !ownScopeTouches(target.ownScope, reach.scope))
89
98
  throw notFound(id);
90
99
  }
91
- /** hippo.db's upsert would move the row into the writer's tenant, so a store write refuses an id another tenant holds. */
100
+ /** hippo.db's upsert would move the row into the writer's tenant, so a store write refuses an id another tenant
101
+ * holds. */
92
102
  function assertIdInTenant(db, entry) {
93
103
  const holder = selectMemoryReach(db, entry.id)?.tenantId;
94
- if (holder !== undefined && holder !== entry.tenant_id)
104
+ if (holder !== undefined && holder !== entry.tenant_id) {
95
105
  throw new ConflictError(`Memory ${entry.id} belongs to another tenant`);
106
+ }
96
107
  }
97
108
  /** The refusal row lands after `write` has rolled back, in a fresh implicit transaction the aborted one cannot undo. */
98
109
  export function auditingRefusal(db, actor, write) {
@@ -112,7 +123,8 @@ export function writeInOwnTenant(db, entry, actor, afterWrite) {
112
123
  writeEntryDbOnly(db, entry, { actor, afterWrite });
113
124
  }));
114
125
  }
115
- /** The reads, rewrites and outcome rows share one BEGIN IMMEDIATE transaction, hippo.db's form of the port's row lock; the caller writes the mirrors after. */
126
+ /** The reads, rewrites and outcome rows share one BEGIN IMMEDIATE transaction, hippo.db's form of the port's row lock;
127
+ * the caller writes the mirrors after. */
116
128
  function applyOutcomeOn(db, outcome) {
117
129
  return auditingRefusal(db, outcome.actor, () => withWriteScope(db, 'apply_outcome', () => {
118
130
  const live = selectEntriesByIds(db, outcome.ids, outcome.tenantId);
@@ -124,20 +136,29 @@ function applyOutcomeOn(db, outcome) {
124
136
  const updated = entryAfterOutcome(entry, outcome.good);
125
137
  writeEntryDbOnly(db, updated, { actor: outcome.actor });
126
138
  live.set(id, updated);
127
- appendAuditEvent(db, { tenantId: outcome.tenantId, actor: outcome.actor, op: 'outcome', targetId: id, metadata: { good: outcome.good } });
139
+ appendAuditEvent(db, {
140
+ tenantId: outcome.tenantId,
141
+ actor: outcome.actor,
142
+ op: 'outcome',
143
+ targetId: id,
144
+ metadata: { good: outcome.good },
145
+ });
128
146
  applied.push(updated);
129
147
  }
130
148
  return applied;
131
149
  }));
132
150
  }
133
- /** Reach, the CAS on the old row, the successor's insert and the supersede row in one BEGIN IMMEDIATE transaction. Two racing supersedes: one CAS wins. */
151
+ /** Reach, the CAS on the old row, the successor's insert and the supersede row in one BEGIN IMMEDIATE transaction. Two
152
+ * racing supersedes: one CAS wins. */
134
153
  function commitSupersede(db, write) {
135
154
  const { tenantId, actor, oldId, successor } = write;
136
155
  // The refusal row lands after the scope has rolled back, in a fresh implicit transaction the aborted one cannot undo.
137
156
  auditingRefusal(db, actor, () => withWriteScope(db, 'supersede', () => {
138
157
  assertInReach(db, write, oldId);
139
158
  // SAFETY: RETURNING names one column, dag_parent_id; no row means another writer got there first.
140
- const won = db.prepare('UPDATE memories SET superseded_by = ? WHERE id = ? AND tenant_id = ? AND superseded_by IS NULL RETURNING dag_parent_id')
159
+ const won = db
160
+ .prepare('UPDATE memories SET superseded_by = ? WHERE id = ? AND tenant_id = ? AND superseded_by IS NULL RETURNING ' +
161
+ 'dag_parent_id')
141
162
  .get(successor.id, oldId, tenantId);
142
163
  if (!won)
143
164
  throw new ConflictError(`Memory ${oldId} already superseded by another writer`);
@@ -149,13 +170,15 @@ function commitSupersede(db, write) {
149
170
  appendAuditEvent(db, { tenantId, actor, op: 'supersede', targetId: oldId, metadata: { newId: successor.id } });
150
171
  }));
151
172
  }
152
- /** A mirror left on disk would bring the archived row back on the next import; on failure the reaper retries, as mirror_cleaned_at stays NULL. */
173
+ /** A mirror left on disk would bring the archived row back on the next import; on failure the reaper retries, as
174
+ * mirror_cleaned_at stays NULL. */
153
175
  function cleanArchivedMirrors(db, hippoRoot, id) {
154
176
  try {
155
177
  removeEntryMirrors(hippoRoot, id);
156
178
  }
157
179
  catch (mirrorErr) {
158
- log.error(`archiveRaw: mirror cleanup failed for ${id} (will retry via reaper on next openHippoDb): ${errorMessage(mirrorErr)}`, errorFields(mirrorErr));
180
+ log.error(`archiveRaw: mirror cleanup failed for ${id} (will retry via reaper on next openHippoDb): ` +
181
+ `${errorMessage(mirrorErr)}`, errorFields(mirrorErr));
159
182
  return;
160
183
  }
161
184
  try {
@@ -164,7 +187,7 @@ function cleanArchivedMirrors(db, hippoRoot, id) {
164
187
  catch (err) {
165
188
  if (!isSqliteBusy(err))
166
189
  throw err;
167
- log.warnThenDebug('archive-mirror-stamp-busy', `archived ${id}; the store was busy, so the mirror reaper will re-check it on the next open`);
190
+ log.warnThenDebug('archive-mirror-stamp-busy', `archived ${id}; the store was busy, so the mirror reaper will re-check it on the next open`, errorFields(err));
168
191
  }
169
192
  }
170
193
  //# sourceMappingURL=entry-writes-group.js.map
@@ -1,7 +1,8 @@
1
1
  type FieldValue = string | number | boolean | null;
2
2
  /** One error as a thread message can carry it. */
3
3
  export interface WireError {
4
- /** Constructor names from the thrown class up to Error: several classes set no `name`, so a name alone cannot pick the class. */
4
+ /** Constructor names from the thrown class up to Error: several classes set no `name`, so a name alone cannot pick
5
+ * the class. */
5
6
  readonly classes: readonly string[];
6
7
  readonly message: string;
7
8
  readonly stack: string | undefined;
@@ -11,7 +12,8 @@ export interface WireError {
11
12
  }
12
13
  /** Worker side. A thrown value that is not an Error carries its text and no class. */
13
14
  export declare function encodeError<E>(err: E, depth?: number): WireError;
14
- /** Server side: an instance of the thrown class, or of its nearest ancestor in the table, with the worker's stack, cause and fields. */
15
+ /** Server side: an instance of the thrown class, or of its nearest ancestor in the table, with the worker's stack,
16
+ * cause and fields. */
15
17
  export declare function decodeError(wire: WireError): Error;
16
18
  export {};
17
19
  //# sourceMappingURL=error-codec.d.ts.map