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
@@ -30,10 +30,13 @@ function assertKeyedOnSharedStore(fn, hippoRoot, key) {
30
30
  }
31
31
  }
32
32
  function insertSnapshot(db, tenantId, snapshot, now, stamp) {
33
- const result = db.prepare(`
34
- INSERT INTO task_snapshots(task, summary, next_step, status, source, session_id, scope, tenant_id, created_at, updated_at, owner_subject, origin_project)
33
+ const result = db
34
+ .prepare(`
35
+ INSERT INTO task_snapshots(task, summary, next_step, status, source, session_id, scope, tenant_id, created_at,
36
+ updated_at, owner_subject, origin_project)
35
37
  VALUES (?, ?, ?, 'active', ?, ?, ?, ?, ?, ?, ?, ?)
36
- `).run(redactSecretsStrict(snapshot.task), redactSecretsStrict(snapshot.summary), redactSecretsStrict(snapshot.next_step), snapshot.source ?? 'cli', snapshot.session_id ?? null, snapshot.scope ?? null, tenantId, now, now, stamp?.owner ?? null, stamp?.origin ?? null);
38
+ `)
39
+ .run(redactSecretsStrict(snapshot.task), redactSecretsStrict(snapshot.summary), redactSecretsStrict(snapshot.next_step), snapshot.source ?? 'cli', snapshot.session_id ?? null, snapshot.scope ?? null, tenantId, now, now, stamp?.owner ?? null, stamp?.origin ?? null);
37
40
  return Number(result.lastInsertRowid ?? 0);
38
41
  }
39
42
  export function saveActiveTaskSnapshot(hippoRoot, tenantId, snapshot, key) {
@@ -45,8 +48,8 @@ export function saveActiveTaskSnapshot(hippoRoot, tenantId, snapshot, key) {
45
48
  const now = new Date().toISOString();
46
49
  try {
47
50
  const id = withWriteScope(db, 'save_active_task', () => {
48
- db.prepare(`UPDATE task_snapshots SET status = 'superseded', updated_at = ? WHERE status = 'active' AND tenant_id = ?${owned ? ` AND ${owned.sql}` : ''}`)
49
- .run(now, tenantId, ...(owned?.params ?? []));
51
+ db.prepare(`UPDATE task_snapshots SET status = 'superseded', updated_at = ? WHERE status = 'active' AND tenant_id = ` +
52
+ `?${owned ? ` AND ${owned.sql}` : ''}`).run(now, tenantId, ...(owned?.params ?? []));
50
53
  const inserted = insertSnapshot(db, tenantId, snapshot, now, stamp);
51
54
  // An older binary's tenant-wide supersede would close other owners' rows, so the first owner row shuts it out.
52
55
  if (stamp)
@@ -95,15 +98,18 @@ export function loadActiveTaskSnapshot(hippoRoot, tenantId, key) {
95
98
  return loaded;
96
99
  }, openStore);
97
100
  }
98
- /** Default freshness bound for AMBIENT active-task-snapshot reads: 72h rather than 48h so a Friday-evening orphan still offers continuity on Monday;
99
- * override via `loadFreshActiveTaskSnapshot`'s `opts.maxAgeMs`; deliberately no env knob. */
101
+ /** Default freshness bound for AMBIENT active-task-snapshot reads: 72h rather than 48h so a Friday-evening orphan still
102
+ * offers continuity on Monday; override via `loadFreshActiveTaskSnapshot`'s `opts.maxAgeMs`; deliberately no env
103
+ * knob. */
100
104
  export const SNAPSHOT_AMBIENT_MAX_AGE_MS = 72 * HOUR_MS;
101
- /** A usable session id: non-null, non-empty string; named so the owner-match rule in `loadFreshActiveTaskSnapshot` states its contract once. */
105
+ /** A usable session id: non-null, non-empty string; named so the owner-match rule in `loadFreshActiveTaskSnapshot`
106
+ * states its contract once. */
102
107
  function isNonEmptySessionId(value) {
103
108
  return typeof value === 'string' && value.length > 0;
104
109
  }
105
- /** Bounded read for AMBIENT snapshot surfaces so orphaned snapshots expire. The owner (both session ids non-empty and `===`) always sees its own state;
106
- * all others, null ids included (null === null is no match), get it only if age(updated_at) <= maxAgeMs (default `SNAPSHOT_AMBIENT_MAX_AGE_MS`), else null. */
110
+ /** Bounded read for AMBIENT snapshot surfaces so orphaned snapshots expire. The owner (both session ids non-empty and
111
+ * `===`) always sees its own state; all others, null ids included (null === null is no match), get it only if
112
+ * age(updated_at) <= maxAgeMs (default `SNAPSHOT_AMBIENT_MAX_AGE_MS`), else null. */
107
113
  export function loadFreshActiveTaskSnapshot(hippoRoot, tenantId, opts = {}, key) {
108
114
  return freshActiveSnapshot(loadActiveTaskSnapshot(hippoRoot, tenantId, key), opts);
109
115
  }
@@ -128,7 +134,10 @@ export function clearActiveTaskSnapshot(hippoRoot, tenantId, clearedStatus = 'cl
128
134
  const now = new Date().toISOString();
129
135
  try {
130
136
  // SAFETY: active's shape matches the single `id` column selected above.
131
- const active = db.prepare(`SELECT id FROM task_snapshots WHERE status = 'active' AND tenant_id = ? ORDER BY updated_at DESC, id DESC LIMIT 1`).get(tenantId);
137
+ const active = db
138
+ .prepare(`SELECT id FROM task_snapshots WHERE status = 'active' AND tenant_id = ? ORDER BY updated_at DESC, id DESC ` +
139
+ `LIMIT 1`)
140
+ .get(tenantId);
132
141
  if (!active?.id) {
133
142
  removeActiveTaskMirror(hippoRoot, tenantId);
134
143
  return false;
@@ -141,8 +150,8 @@ export function clearActiveTaskSnapshot(hippoRoot, tenantId, clearedStatus = 'cl
141
150
  closeHippoDb(db);
142
151
  }
143
152
  }
144
- /** Close the `active` task snapshot(s) owned by `sessionId` at session end; the WHERE scopes on `session_id` too so an ending session can never close a
145
- * newer session's snapshot. Returns the number of rows closed. */
153
+ /** Close the `active` task snapshot(s) owned by `sessionId` at session end; the WHERE scopes on `session_id` too so an
154
+ * ending session can never close a newer session's snapshot. Returns the number of rows closed. */
146
155
  export function closeTaskSnapshotsForSession(hippoRoot, tenantId, sessionId, status = 'session-ended', key) {
147
156
  assertTenantId('closeTaskSnapshotsForSession', tenantId);
148
157
  if (key)
@@ -151,7 +160,10 @@ export function closeTaskSnapshotsForSession(hippoRoot, tenantId, sessionId, sta
151
160
  const db = openStore(hippoRoot);
152
161
  const now = new Date().toISOString();
153
162
  try {
154
- const result = db.prepare(`UPDATE task_snapshots SET status = ?, updated_at = ? WHERE status = 'active' AND tenant_id = ? AND session_id = ?${owned ? ` AND ${owned.sql}` : ''}`).run(status, now, tenantId, sessionId, ...(owned?.params ?? []));
163
+ const result = db
164
+ .prepare(`UPDATE task_snapshots SET status = ?, updated_at = ? WHERE status = 'active' AND tenant_id = ? AND ` +
165
+ `session_id = ?${owned ? ` AND ${owned.sql}` : ''}`)
166
+ .run(status, now, tenantId, sessionId, ...(owned?.params ?? []));
155
167
  return Number(result.changes ?? 0);
156
168
  }
157
169
  finally {
@@ -159,10 +171,13 @@ export function closeTaskSnapshotsForSession(hippoRoot, tenantId, sessionId, sta
159
171
  }
160
172
  }
161
173
  function insertSessionEventRow(db, tenantId, event, now) {
162
- const result = db.prepare(`
163
- INSERT INTO session_events(session_id, task, event_type, content, source, scope, metadata_json, tenant_id, created_at)
174
+ const result = db
175
+ .prepare(`
176
+ INSERT INTO session_events(session_id, task, event_type, content, source, scope, metadata_json, tenant_id,
177
+ created_at)
164
178
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
165
- `).run(event.session_id, event.task ?? null, event.event_type, event.content, event.source ?? 'cli', event.scope ?? null, JSON.stringify(event.metadata ?? {}), tenantId, now);
179
+ `)
180
+ .run(event.session_id, event.task ?? null, event.event_type, event.content, event.source ?? 'cli', event.scope ?? null, JSON.stringify(event.metadata ?? {}), tenantId, now);
166
181
  return Number(result.lastInsertRowid ?? 0);
167
182
  }
168
183
  function reloadSessionEvent(db, id) {
@@ -179,13 +194,15 @@ function reloadSessionEvent(db, id) {
179
194
  }
180
195
  function recentSessionEventsOldestFirst(db, tenantId, sessionId, limit) {
181
196
  // SAFETY: recentRows' shape matches the nine columns named in the SELECT below.
182
- const recentRows = db.prepare(`
197
+ const recentRows = db
198
+ .prepare(`
183
199
  SELECT id, session_id, task, event_type, content, source, scope, metadata_json, created_at
184
200
  FROM session_events
185
201
  WHERE session_id = ? AND tenant_id = ?
186
202
  ORDER BY created_at DESC, id DESC
187
203
  LIMIT ?
188
- `).all(sessionId, tenantId, limit);
204
+ `)
205
+ .all(sessionId, tenantId, limit);
189
206
  return recentRows.map(rowToSessionEvent).reverse();
190
207
  }
191
208
  export function appendSessionEvent(hippoRoot, tenantId, event) {
@@ -232,7 +249,8 @@ export function listSessionEvents(hippoRoot, tenantId, options = {}) {
232
249
  return rows.map(rowToSessionEvent).reverse();
233
250
  }, openStore);
234
251
  }
235
- /** Session_ids with a `session_complete` event newer than `sinceMs`; bounds the sleep auto-promotion scan to a fixed window. */
252
+ /** Session_ids with a `session_complete` event newer than `sinceMs`; bounds the sleep auto-promotion scan to a fixed
253
+ * window. */
236
254
  export function findPromotableSessions(hippoRoot, tenantId, sinceMs) {
237
255
  assertTenantId('findPromotableSessions', tenantId);
238
256
  return onHandle(hippoRoot, (db) => {
@@ -265,7 +283,8 @@ function selectSessionOwnerAt(db, tenantId, sessionId) {
265
283
  }
266
284
  /** Binds `sessionId` to `owner` unless a binding exists; the count is 1 when this call bound it. */
267
285
  function insertSessionOwnerAt(db, tenantId, sessionId, owner, createdAt) {
268
- const result = db.prepare(`INSERT OR IGNORE INTO session_owners(tenant_id, session_id, owner_subject, created_at) VALUES (?, ?, ?, ?)`)
286
+ const result = db
287
+ .prepare(`INSERT OR IGNORE INTO session_owners(tenant_id, session_id, owner_subject, created_at) VALUES (?, ?, ?, ?)`)
269
288
  .run(tenantId, sessionId, owner, createdAt);
270
289
  return Number(result.changes ?? 0);
271
290
  }
@@ -1,6 +1,5 @@
1
1
  import type { DatabaseSyncLike } from '../db/index.js';
2
2
  import { type MemoryEntry } from '../core/memory.js';
3
- export declare const SYNC_ACTOR = "agent-memories";
4
3
  export type SetAsideWhy = 'note-gone' | 'note-changed' | 'handover' | 'project-merge' | 'project-repair';
5
4
  export type SetAsideResult = {
6
5
  readonly kind: 'untagged';
@@ -9,6 +8,7 @@ export type SetAsideResult = {
9
8
  readonly kind: 'dormant';
10
9
  readonly id: string;
11
10
  };
12
- /** Design 6's set-aside on the caller's transaction: a pinned row only loses the tag, any other goes dormant, restorable. */
11
+ /** Design 6's set-aside on the caller's transaction: a pinned row only loses the tag, any other goes dormant,
12
+ * restorable. */
13
13
  export declare function setAsideRow(db: DatabaseSyncLike, tag: string, row: MemoryEntry, why: SetAsideWhy): SetAsideResult;
14
14
  //# sourceMappingURL=set-aside.d.ts.map
@@ -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.tenantId, 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,13 +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)
25
- recordQuarantine(handle, { tenantId: entry.tenantId, memoryId, originalScope: quarantine.originalScope, reason: quarantine.reason, actor });
27
+ if (quarantine) {
28
+ recordQuarantine(handle, {
29
+ tenantId: entry.tenant_id, memoryId, originalScope: quarantine.originalScope, reason: quarantine.reason, actor,
30
+ });
31
+ }
26
32
  if (event && !logEvent(handle, event, memoryId))
27
33
  throw new EventAlreadyLogged();
28
34
  });
@@ -55,7 +61,8 @@ export function sqliteConnectorWrites(hippoRoot) {
55
61
  },
56
62
  };
57
63
  }
58
- /** 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. */
59
66
  export function servedConnectorWrites(sync) {
60
67
  return {
61
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
@@ -2,17 +2,20 @@ import { type DatabaseSyncLike } from '../../db/index.js';
2
2
  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
- import { type WriteEntryOptions } 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. */
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
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
- export declare function writeEntryAt(hippoRoot: string, { entry, actor }: EntryWrite, afterWrite?: WriteEntryOptions['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. */
10
+ export declare function writeEntryAt(hippoRoot: string, { entry, actor }: EntryWrite, afterWrite?: WriteEntryInternalOptions['afterWrite']): void;
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;
16
19
  /** writeEntryAt on the caller's handle, so a sibling group can read on it after the scope has unwound. */
17
- export declare function writeInOwnTenant(db: DatabaseSyncLike, entry: MemoryEntry, actor: string, afterWrite?: WriteEntryOptions['afterWrite']): void;
20
+ export declare function writeInOwnTenant(db: DatabaseSyncLike, entry: MemoryEntry, actor: string, afterWrite?: WriteEntryInternalOptions['afterWrite']): void;
18
21
  //# sourceMappingURL=entry-writes-group.d.ts.map