hippo-memory 1.72.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (995) hide show
  1. package/README.md +6 -4
  2. package/dist/agent-memories/apply.d.ts +7 -5
  3. package/dist/agent-memories/apply.js +66 -39
  4. package/dist/agent-memories/claude-code.d.ts +8 -2
  5. package/dist/agent-memories/claude-code.js +26 -7
  6. package/dist/agent-memories/copilot.js +2 -1
  7. package/dist/agent-memories/files.js +2 -1
  8. package/dist/agent-memories/legacy.d.ts +6 -3
  9. package/dist/agent-memories/legacy.js +35 -14
  10. package/dist/agent-memories/markdown.d.ts +3 -1
  11. package/dist/agent-memories/markdown.js +3 -1
  12. package/dist/agent-memories/openclaw.js +5 -2
  13. package/dist/agent-memories/plan.js +11 -1
  14. package/dist/agent-memories/project-folds.js +2 -1
  15. package/dist/agent-memories/report.d.ts +4 -1
  16. package/dist/agent-memories/report.js +43 -9
  17. package/dist/agent-memories/source.d.ts +8 -2
  18. package/dist/agent-memories/source.js +11 -3
  19. package/dist/agent-memories/sync.d.ts +7 -2
  20. package/dist/agent-memories/sync.js +141 -101
  21. package/dist/api/assemble.d.ts +6 -4
  22. package/dist/api/assemble.js +11 -5
  23. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  24. package/dist/api/auth/audit.js +58 -0
  25. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
  26. package/dist/api/{auth.js → auth/auth.js} +66 -54
  27. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  28. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
  29. package/dist/api/auth/session-owners.d.ts +10 -0
  30. package/dist/api/auth/session-owners.js +35 -0
  31. package/dist/api/availability.d.ts +3 -1
  32. package/dist/api/availability.js +3 -1
  33. package/dist/api/busy.d.ts +2 -0
  34. package/dist/api/busy.js +2 -0
  35. package/dist/api/cli-surface.d.ts +6 -0
  36. package/dist/api/cli-surface.js +6 -0
  37. package/dist/api/config-of.d.ts +5 -0
  38. package/dist/api/config-of.js +6 -0
  39. package/dist/api/context-auto.d.ts +4 -1
  40. package/dist/api/context-auto.js +14 -4
  41. package/dist/api/context-render.js +14 -7
  42. package/dist/api/context-select.d.ts +4 -1
  43. package/dist/api/context-select.js +31 -34
  44. package/dist/api/context-types.d.ts +38 -12
  45. package/dist/api/context.d.ts +8 -5
  46. package/dist/api/context.js +120 -63
  47. package/dist/api/continuity.d.ts +24 -21
  48. package/dist/api/continuity.js +18 -20
  49. package/dist/api/correction-latency.d.ts +3 -1
  50. package/dist/api/correction-latency.js +3 -1
  51. package/dist/api/error-reply.d.ts +4 -1
  52. package/dist/api/error-reply.js +12 -3
  53. package/dist/api/index.d.ts +39 -23
  54. package/dist/api/index.js +21 -23
  55. package/dist/api/instruction-detect.d.ts +4 -1
  56. package/dist/api/instruction-detect.js +75 -20
  57. package/dist/api/ledger-db.d.ts +15 -11
  58. package/dist/api/ledger-db.js +21 -23
  59. package/dist/api/memories/conflicts.d.ts +33 -0
  60. package/dist/api/memories/conflicts.js +67 -0
  61. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  62. package/dist/api/{forget.js → memories/forget.js} +23 -17
  63. package/dist/api/memories/memories.d.ts +27 -0
  64. package/dist/api/memories/memories.js +52 -0
  65. package/dist/api/memories/outcome.d.ts +22 -0
  66. package/dist/api/memories/outcome.js +28 -0
  67. package/dist/api/memories/promote.d.ts +40 -0
  68. package/dist/api/memories/promote.js +76 -0
  69. package/dist/api/memories/refine.d.ts +10 -0
  70. package/dist/api/memories/refine.js +12 -0
  71. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
  72. package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
  73. package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
  74. package/dist/api/{remember.js → memories/remember.js} +50 -32
  75. package/dist/api/objects/cards.d.ts +39 -0
  76. package/dist/api/{cards.js → objects/cards.js} +12 -14
  77. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  78. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
  79. package/dist/api/objects/goals.d.ts +18 -0
  80. package/dist/api/{goals.js → objects/goals.js} +12 -12
  81. package/dist/api/objects/graph.d.ts +11 -0
  82. package/dist/api/objects/graph.js +16 -0
  83. package/dist/api/objects/objects.d.ts +9 -0
  84. package/dist/api/{objects.js → objects/objects.js} +2 -3
  85. package/dist/api/objects/predictions.d.ts +11 -0
  86. package/dist/api/{predictions.js → objects/predictions.js} +7 -5
  87. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  88. package/dist/api/{projects.js → objects/projects.js} +8 -4
  89. package/dist/api/pilot-arm.d.ts +8 -4
  90. package/dist/api/pilot-arm.js +5 -4
  91. package/dist/api/prompt-hook.d.ts +35 -20
  92. package/dist/api/prompt-hook.js +66 -44
  93. package/dist/api/provenance-coverage.d.ts +3 -1
  94. package/dist/api/provenance-coverage.js +3 -1
  95. package/dist/api/recall/finish.d.ts +185 -0
  96. package/dist/api/recall/finish.js +301 -0
  97. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  98. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
  99. package/dist/api/recall/recall.d.ts +6 -0
  100. package/dist/api/{recall.js → recall/recall.js} +116 -72
  101. package/dist/api/recall/render.d.ts +39 -0
  102. package/dist/api/recall/render.js +60 -0
  103. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  104. package/dist/api/recall/request.js +261 -0
  105. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  106. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  107. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
  108. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  109. package/dist/api/session-end.d.ts +36 -8
  110. package/dist/api/session-end.js +71 -25
  111. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  112. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  113. package/dist/api/sleep/dormant.d.ts +25 -0
  114. package/dist/api/sleep/dormant.js +64 -0
  115. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  116. package/dist/api/sleep/learn.js +138 -0
  117. package/dist/api/sleep/sleep-run.d.ts +38 -0
  118. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
  119. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  120. package/dist/api/sleep/sleep.js +9 -0
  121. package/dist/api/status.d.ts +3 -1
  122. package/dist/api/status.js +3 -1
  123. package/dist/api/store-init.d.ts +4 -1
  124. package/dist/api/store-init.js +4 -1
  125. package/dist/api/tokens.d.ts +10 -9
  126. package/dist/api/tokens.js +9 -10
  127. package/dist/api/types.d.ts +27 -12
  128. package/dist/api/types.js +13 -4
  129. package/dist/capture/caller-session.d.ts +8 -2
  130. package/dist/capture/caller-session.js +16 -6
  131. package/dist/capture/capture-error.d.ts +3 -1
  132. package/dist/capture/capture-error.js +3 -1
  133. package/dist/capture/codex-patch.js +7 -2
  134. package/dist/capture/command.d.ts +4 -2
  135. package/dist/capture/command.js +34 -15
  136. package/dist/capture/compact-resume-caller.js +15 -8
  137. package/dist/capture/compact.d.ts +8 -5
  138. package/dist/capture/compact.js +34 -23
  139. package/dist/capture/compaction-items-caller.js +9 -3
  140. package/dist/capture/compaction-record.d.ts +4 -3
  141. package/dist/capture/compaction-record.js +20 -12
  142. package/dist/capture/compaction-spool.d.ts +18 -9
  143. package/dist/capture/compaction-spool.js +105 -63
  144. package/dist/capture/copilot-transcript.d.ts +11 -3
  145. package/dist/capture/copilot-transcript.js +16 -6
  146. package/dist/capture/extract.js +20 -8
  147. package/dist/capture/failure-caller.js +23 -12
  148. package/dist/capture/failure-reading.d.ts +10 -3
  149. package/dist/capture/failure-reading.js +24 -7
  150. package/dist/capture/pre-compact-caller.js +11 -4
  151. package/dist/capture/session-digest.d.ts +15 -4
  152. package/dist/capture/session-digest.js +39 -13
  153. package/dist/capture/session-end-caller.d.ts +4 -1
  154. package/dist/capture/session-end-caller.js +20 -8
  155. package/dist/capture/session-texts.d.ts +6 -2
  156. package/dist/capture/session-texts.js +22 -7
  157. package/dist/capture/session-worker.d.ts +4 -2
  158. package/dist/capture/session-worker.js +58 -17
  159. package/dist/capture/transcript.d.ts +13 -4
  160. package/dist/capture/transcript.js +32 -10
  161. package/dist/capture/working-state.d.ts +13 -4
  162. package/dist/capture/working-state.js +50 -56
  163. package/dist/cli/api-context.d.ts +14 -2
  164. package/dist/cli/api-context.js +45 -2
  165. package/dist/cli/audit.js +33 -33
  166. package/dist/cli/auth.js +23 -31
  167. package/dist/cli/briefs.d.ts +1 -1
  168. package/dist/cli/briefs.js +20 -15
  169. package/dist/cli/card.d.ts +1 -1
  170. package/dist/cli/card.js +56 -73
  171. package/dist/cli/client.d.ts +12 -5
  172. package/dist/cli/client.js +53 -23
  173. package/dist/cli/compact-resume-payload.d.ts +4 -1
  174. package/dist/cli/compact-resume-payload.js +12 -5
  175. package/dist/cli/context.js +43 -18
  176. package/dist/cli/continuity.d.ts +5 -5
  177. package/dist/cli/continuity.js +90 -107
  178. package/dist/cli/curate.d.ts +5 -4
  179. package/dist/cli/curate.js +55 -77
  180. package/dist/cli/dag.d.ts +1 -1
  181. package/dist/cli/dag.js +14 -17
  182. package/dist/cli/decisions.js +30 -30
  183. package/dist/cli/eval.js +16 -21
  184. package/dist/cli/exit.d.ts +4 -1
  185. package/dist/cli/exit.js +10 -2
  186. package/dist/cli/explain.js +12 -11
  187. package/dist/cli/flag-values.d.ts +1 -1
  188. package/dist/cli/flag-values.js +9 -18
  189. package/dist/cli/github.d.ts +6 -0
  190. package/dist/cli/github.js +25 -13
  191. package/dist/cli/goals.d.ts +1 -1
  192. package/dist/cli/goals.js +39 -56
  193. package/dist/cli/graph.d.ts +1 -1
  194. package/dist/cli/graph.js +15 -11
  195. package/dist/cli/hook-runtime.d.ts +34 -10
  196. package/dist/cli/hook-runtime.js +41 -16
  197. package/dist/cli/incidents.d.ts +1 -1
  198. package/dist/cli/incidents.js +25 -25
  199. package/dist/cli/init.d.ts +1 -1
  200. package/dist/cli/init.js +35 -20
  201. package/dist/cli/install-steps.d.ts +12 -3
  202. package/dist/cli/install-steps.js +42 -18
  203. package/dist/cli/last-sleep.d.ts +4 -1
  204. package/dist/cli/last-sleep.js +9 -4
  205. package/dist/cli/maintenance.d.ts +1 -1
  206. package/dist/cli/maintenance.js +11 -12
  207. package/dist/cli/notes.d.ts +1 -1
  208. package/dist/cli/notes.js +8 -5
  209. package/dist/cli/object-verbs.d.ts +5 -5
  210. package/dist/cli/object-verbs.js +13 -16
  211. package/dist/cli/open-browser.js +11 -2
  212. package/dist/cli/playbooks.d.ts +3 -3
  213. package/dist/cli/playbooks.js +40 -32
  214. package/dist/cli/predictions.js +17 -22
  215. package/dist/cli/print.js +4 -2
  216. package/dist/cli/projects.js +21 -11
  217. package/dist/cli/quality-repair-once.d.ts +1 -1
  218. package/dist/cli/quality-repair-once.js +7 -6
  219. package/dist/cli/recall.js +129 -93
  220. package/dist/cli/refine-llm.d.ts +15 -4
  221. package/dist/cli/refine-llm.js +17 -7
  222. package/dist/cli/remember.js +51 -55
  223. package/dist/cli/scheduler.d.ts +4 -1
  224. package/dist/cli/scheduler.js +9 -5
  225. package/dist/cli/serve.js +28 -18
  226. package/dist/cli/session-hooks.d.ts +2 -6
  227. package/dist/cli/session-hooks.js +140 -112
  228. package/dist/cli/setup.d.ts +1 -1
  229. package/dist/cli/setup.js +56 -34
  230. package/dist/cli/shared.d.ts +4 -2
  231. package/dist/cli/shared.js +26 -11
  232. package/dist/cli/slack.js +15 -24
  233. package/dist/cli/sleep-render.d.ts +3 -1
  234. package/dist/cli/sleep-render.js +8 -5
  235. package/dist/cli/sleep.js +16 -8
  236. package/dist/cli/status.d.ts +4 -4
  237. package/dist/cli/status.js +32 -27
  238. package/dist/cli/stdin.d.ts +10 -3
  239. package/dist/cli/stdin.js +10 -3
  240. package/dist/cli/transfer.d.ts +4 -4
  241. package/dist/cli/transfer.js +97 -82
  242. package/dist/cli/usage.d.ts +1 -1
  243. package/dist/cli/usage.js +1 -1
  244. package/dist/cli/verb-row.d.ts +2 -0
  245. package/dist/cli/verbs/health.js +2 -0
  246. package/dist/cli/verbs/memory.js +47 -53
  247. package/dist/cli/verbs/objects.js +16 -7
  248. package/dist/cli/verbs/sessions.js +4 -2
  249. package/dist/cli/versioned-verbs.d.ts +8 -7
  250. package/dist/cli/versioned-verbs.js +31 -21
  251. package/dist/cli.js +14 -18
  252. package/dist/connectors/dlq.d.ts +6 -6
  253. package/dist/connectors/dlq.js +12 -7
  254. package/dist/connectors/github/backfill.d.ts +4 -4
  255. package/dist/connectors/github/backfill.js +6 -4
  256. package/dist/connectors/github/deletion.d.ts +6 -4
  257. package/dist/connectors/github/deletion.js +5 -4
  258. package/dist/connectors/github/dlq.d.ts +8 -6
  259. package/dist/connectors/github/dlq.js +11 -5
  260. package/dist/connectors/github/ingest.d.ts +2 -2
  261. package/dist/connectors/github/ingest.js +9 -5
  262. package/dist/connectors/github/octokit-client.d.ts +3 -1
  263. package/dist/connectors/github/octokit-client.js +7 -2
  264. package/dist/connectors/github/ratelimit.d.ts +6 -2
  265. package/dist/connectors/github/ratelimit.js +6 -2
  266. package/dist/connectors/github/signature.d.ts +14 -3
  267. package/dist/connectors/github/signature.js +17 -3
  268. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  269. package/dist/connectors/github/tenant-routing.js +6 -5
  270. package/dist/connectors/github/transform.js +50 -67
  271. package/dist/connectors/github/types.d.ts +10 -3
  272. package/dist/connectors/github/types.js +6 -2
  273. package/dist/connectors/github/webhook.d.ts +5 -5
  274. package/dist/connectors/github/webhook.js +36 -23
  275. package/dist/connectors/ingest.d.ts +5 -3
  276. package/dist/connectors/ingest.js +3 -3
  277. package/dist/connectors/slack/backfill.d.ts +5 -5
  278. package/dist/connectors/slack/backfill.js +3 -3
  279. package/dist/connectors/slack/deletion.d.ts +4 -4
  280. package/dist/connectors/slack/deletion.js +6 -5
  281. package/dist/connectors/slack/dlq.d.ts +4 -4
  282. package/dist/connectors/slack/dlq.js +6 -6
  283. package/dist/connectors/slack/ingest.d.ts +6 -4
  284. package/dist/connectors/slack/ingest.js +5 -4
  285. package/dist/connectors/slack/signature.d.ts +4 -1
  286. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  287. package/dist/connectors/slack/tenant-routing.js +6 -5
  288. package/dist/connectors/slack/transform.d.ts +6 -2
  289. package/dist/connectors/slack/transform.js +6 -2
  290. package/dist/connectors/slack/types.d.ts +3 -1
  291. package/dist/connectors/slack/web-client.js +8 -3
  292. package/dist/connectors/slack/webhook.d.ts +5 -5
  293. package/dist/connectors/slack/webhook.js +19 -11
  294. package/dist/connectors/slack/workspaces.d.ts +7 -3
  295. package/dist/connectors/slack/workspaces.js +7 -3
  296. package/dist/connectors/store.d.ts +8 -0
  297. package/dist/connectors/store.js +2 -0
  298. package/dist/consolidate/conflicts.js +24 -10
  299. package/dist/consolidate/dag-summary.js +2 -1
  300. package/dist/consolidate/dag.d.ts +10 -5
  301. package/dist/consolidate/dag.js +45 -39
  302. package/dist/consolidate/decay.js +19 -6
  303. package/dist/consolidate/dedupe.d.ts +14 -5
  304. package/dist/consolidate/dedupe.js +28 -17
  305. package/dist/consolidate/flush-units.d.ts +4 -1
  306. package/dist/consolidate/flush-units.js +4 -1
  307. package/dist/consolidate/half-life-migration.d.ts +18 -8
  308. package/dist/consolidate/half-life-migration.js +48 -18
  309. package/dist/consolidate/llm-passes.js +27 -11
  310. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  311. package/dist/consolidate/memory-value-weights.js +6 -2
  312. package/dist/consolidate/memory-value.d.ts +30 -10
  313. package/dist/consolidate/memory-value.js +37 -14
  314. package/dist/consolidate/merge.d.ts +4 -1
  315. package/dist/consolidate/merge.js +47 -37
  316. package/dist/consolidate/overlap-index.d.ts +8 -2
  317. package/dist/consolidate/overlap-index.js +11 -4
  318. package/dist/consolidate/physics-pass.d.ts +3 -1
  319. package/dist/consolidate/physics-pass.js +10 -7
  320. package/dist/consolidate/replay.d.ts +11 -4
  321. package/dist/consolidate/replay.js +19 -7
  322. package/dist/consolidate/run.d.ts +13 -5
  323. package/dist/consolidate/run.js +4 -4
  324. package/dist/consolidate/sleep.d.ts +14 -6
  325. package/dist/consolidate/sleep.js +42 -39
  326. package/dist/consolidate/trace.d.ts +7 -2
  327. package/dist/consolidate/trace.js +7 -2
  328. package/dist/consolidate/traces.js +27 -30
  329. package/dist/core/ablation.d.ts +9 -3
  330. package/dist/core/ablation.js +14 -4
  331. package/dist/core/active-scope.d.ts +3 -1
  332. package/dist/core/active-scope.js +3 -1
  333. package/dist/core/agent-memory-tools.d.ts +2 -0
  334. package/dist/core/agent-memory-tools.js +2 -0
  335. package/dist/core/ambient.d.ts +4 -3
  336. package/dist/core/ambient.js +8 -6
  337. package/dist/core/api-errors.d.ts +9 -3
  338. package/dist/core/api-errors.js +9 -3
  339. package/dist/core/capture-contract.d.ts +4 -1
  340. package/dist/core/capture-contract.js +27 -8
  341. package/dist/core/compare.d.ts +24 -8
  342. package/dist/core/compare.js +24 -8
  343. package/dist/core/config.d.ts +18 -9
  344. package/dist/core/config.js +38 -29
  345. package/dist/core/cosine.d.ts +4 -1
  346. package/dist/core/cosine.js +4 -1
  347. package/dist/core/handoff.d.ts +7 -2
  348. package/dist/core/handoff.js +4 -1
  349. package/dist/core/markdown.js +22 -17
  350. package/dist/core/memory-audit.js +14 -3
  351. package/dist/core/memory-quality.d.ts +12 -3
  352. package/dist/core/memory-quality.js +57 -21
  353. package/dist/core/memory.d.ts +87 -30
  354. package/dist/core/memory.js +82 -33
  355. package/dist/core/merged-row.d.ts +8 -2
  356. package/dist/core/merged-row.js +10 -3
  357. package/dist/core/package-root.d.ts +3 -1
  358. package/dist/core/package-root.js +3 -1
  359. package/dist/core/particle-refresh.d.ts +8 -0
  360. package/dist/core/particle-refresh.js +22 -0
  361. package/dist/core/physics-config.d.ts +4 -1
  362. package/dist/core/physics-config.js +6 -2
  363. package/dist/core/physics.d.ts +39 -11
  364. package/dist/core/physics.js +71 -21
  365. package/dist/core/project-identity.d.ts +34 -17
  366. package/dist/core/project-identity.js +35 -18
  367. package/dist/core/project-remote.d.ts +8 -4
  368. package/dist/core/project-remote.js +31 -14
  369. package/dist/core/recall-scope.d.ts +33 -11
  370. package/dist/core/recall-scope.js +42 -15
  371. package/dist/core/rejection-digest.d.ts +7 -0
  372. package/dist/core/rejection-digest.js +13 -0
  373. package/dist/core/salience.d.ts +3 -1
  374. package/dist/core/salience.js +10 -4
  375. package/dist/core/search-types.d.ts +15 -2
  376. package/dist/core/search-types.js +11 -0
  377. package/dist/dashboard/dashboard-actions.d.ts +2 -2
  378. package/dist/dashboard/dashboard-actions.js +18 -7
  379. package/dist/dashboard/dashboard-queries.js +2 -7
  380. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  381. package/dist/dashboard/dashboard-snapshot.js +5 -7
  382. package/dist/dashboard/dashboard.js +22 -8
  383. package/dist/db/backup.js +2 -2
  384. package/dist/db/busy.d.ts +10 -3
  385. package/dist/db/busy.js +27 -5
  386. package/dist/db/connect.d.ts +10 -2
  387. package/dist/db/connect.js +8 -2
  388. package/dist/db/continuity.d.ts +1 -1
  389. package/dist/db/continuity.js +27 -11
  390. package/dist/db/meta.d.ts +4 -1
  391. package/dist/db/meta.js +4 -1
  392. package/dist/db/migrate.d.ts +10 -5
  393. package/dist/db/migrate.js +40 -20
  394. package/dist/db/migrations/index.d.ts +1 -1
  395. package/dist/db/migrations/index.js +3 -1
  396. package/dist/db/migrations/types.d.ts +2 -1
  397. package/dist/db/migrations/v11.js +1 -0
  398. package/dist/db/migrations/v12.js +2 -1
  399. package/dist/db/migrations/v14.js +2 -0
  400. package/dist/db/migrations/v15.js +4 -2
  401. package/dist/db/migrations/v16.js +6 -3
  402. package/dist/db/migrations/v17.js +2 -1
  403. package/dist/db/migrations/v19.js +4 -2
  404. package/dist/db/migrations/v20.js +2 -1
  405. package/dist/db/migrations/v22.js +12 -6
  406. package/dist/db/migrations/v23.js +6 -3
  407. package/dist/db/migrations/v24.js +6 -3
  408. package/dist/db/migrations/v25.js +4 -2
  409. package/dist/db/migrations/v26.js +4 -2
  410. package/dist/db/migrations/v27.js +6 -3
  411. package/dist/db/migrations/v28.js +4 -2
  412. package/dist/db/migrations/v29.js +4 -2
  413. package/dist/db/migrations/v30.js +6 -3
  414. package/dist/db/migrations/v31.js +4 -2
  415. package/dist/db/migrations/v32.js +6 -3
  416. package/dist/db/migrations/v33.js +4 -2
  417. package/dist/db/migrations/v34.js +2 -1
  418. package/dist/db/migrations/v35.js +2 -1
  419. package/dist/db/migrations/v36.js +2 -1
  420. package/dist/db/migrations/v37.js +10 -5
  421. package/dist/db/migrations/v38.js +10 -5
  422. package/dist/db/migrations/v39.js +14 -6
  423. package/dist/db/migrations/v40.js +4 -2
  424. package/dist/db/migrations/v41.js +4 -2
  425. package/dist/db/migrations/v42.js +2 -1
  426. package/dist/db/migrations/v44.js +4 -2
  427. package/dist/db/migrations/v45.js +4 -2
  428. package/dist/db/migrations/v49.js +2 -1
  429. package/dist/db/migrations/v50.js +4 -2
  430. package/dist/db/migrations/v51.js +4 -2
  431. package/dist/db/migrations/v52.js +2 -1
  432. package/dist/db/migrations/v53.js +8 -4
  433. package/dist/db/migrations/v54.js +2 -1
  434. package/dist/db/migrations/v55.js +4 -2
  435. package/dist/db/migrations/v56.d.ts +3 -0
  436. package/dist/db/migrations/v56.js +28 -0
  437. package/dist/db/open.d.ts +24 -12
  438. package/dist/db/open.js +25 -13
  439. package/dist/db/physics-state.d.ts +8 -8
  440. package/dist/db/physics-state.js +17 -50
  441. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  442. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  443. package/dist/db/request-stores.d.ts +20 -5
  444. package/dist/db/request-stores.js +15 -5
  445. package/dist/db/tables.d.ts +2 -1
  446. package/dist/db/tables.js +12 -4
  447. package/dist/db/vector-store.d.ts +13 -4
  448. package/dist/db/vector-store.js +35 -14
  449. package/dist/db/wal-checkpointer.d.ts +2 -1
  450. package/dist/db/wal-checkpointer.js +19 -7
  451. package/dist/doctor.d.ts +7 -1
  452. package/dist/doctor.js +128 -46
  453. package/dist/embeddings/local.d.ts +8 -4
  454. package/dist/embeddings/local.js +11 -7
  455. package/dist/embeddings/provider.d.ts +19 -10
  456. package/dist/embeddings/provider.js +32 -27
  457. package/dist/embeddings/transformers.d.ts +16 -4
  458. package/dist/embeddings/transformers.js +32 -15
  459. package/dist/entry/json-hooks.d.ts +1 -1
  460. package/dist/entry/json-hooks.js +1 -1
  461. package/dist/entry/project-identity.js +2 -1
  462. package/dist/entry/session-text.d.ts +1 -1
  463. package/dist/entry/session-text.js +1 -1
  464. package/dist/entry/sqlite-handles.d.ts +10 -0
  465. package/dist/entry/sqlite-handles.js +9 -0
  466. package/dist/entry/store-kit.d.ts +50 -0
  467. package/dist/entry/store-kit.js +27 -0
  468. package/dist/entry/testing.d.ts +6 -0
  469. package/dist/entry/testing.js +7 -0
  470. package/dist/eval/eval-stats.d.ts +27 -8
  471. package/dist/eval/eval-stats.js +17 -5
  472. package/dist/eval/eval-suite.d.ts +3 -1
  473. package/dist/eval/eval-suite.js +409 -187
  474. package/dist/eval/eval.d.ts +8 -2
  475. package/dist/eval/eval.js +8 -2
  476. package/dist/eval/judgment.js +17 -7
  477. package/dist/graph/delta.d.ts +9 -42
  478. package/dist/graph/delta.js +17 -11
  479. package/dist/graph/extract.d.ts +10 -7
  480. package/dist/graph/extract.js +57 -25
  481. package/dist/graph/recall.d.ts +12 -4
  482. package/dist/graph/recall.js +30 -13
  483. package/dist/graph/stream.d.ts +18 -6
  484. package/dist/graph/stream.js +32 -10
  485. package/dist/graph/view.d.ts +19 -6
  486. package/dist/graph/view.js +42 -17
  487. package/dist/hooks/codex-session.js +2 -2
  488. package/dist/hooks/codex-wrapper.d.ts +3 -1
  489. package/dist/hooks/codex-wrapper.js +9 -4
  490. package/dist/hooks/copilot.d.ts +19 -5
  491. package/dist/hooks/copilot.js +54 -15
  492. package/dist/hooks/hook-blocks.d.ts +4 -1
  493. package/dist/hooks/hook-blocks.js +8 -3
  494. package/dist/hooks/json-hooks.d.ts +9 -5
  495. package/dist/hooks/json-hooks.js +72 -33
  496. package/dist/hooks/opencode.js +15 -5
  497. package/dist/hooks/shared.d.ts +27 -8
  498. package/dist/hooks/shared.js +57 -16
  499. package/dist/importers/core.d.ts +12 -4
  500. package/dist/importers/core.js +11 -10
  501. package/dist/importers/markdown-parse.d.ts +15 -5
  502. package/dist/importers/markdown-parse.js +16 -7
  503. package/dist/importers/markdown.js +6 -9
  504. package/dist/importers/sources.js +10 -23
  505. package/dist/importers/vault.d.ts +3 -3
  506. package/dist/importers/vault.js +61 -45
  507. package/dist/index.d.ts +33 -7
  508. package/dist/index.js +26 -8
  509. package/dist/learn/autolearn.d.ts +21 -6
  510. package/dist/learn/autolearn.js +57 -26
  511. package/dist/learn/churn-git.d.ts +4 -1
  512. package/dist/learn/churn-git.js +29 -5
  513. package/dist/learn/extract.d.ts +4 -1
  514. package/dist/learn/extract.js +17 -10
  515. package/dist/learn/forward-claim-detector.d.ts +17 -5
  516. package/dist/learn/forward-claim-detector.js +34 -15
  517. package/dist/learn/invalidation.d.ts +12 -6
  518. package/dist/learn/invalidation.js +62 -28
  519. package/dist/learn/roots.d.ts +3 -0
  520. package/dist/learn/roots.js +5 -0
  521. package/dist/mcp/admin-tools.d.ts +5 -5
  522. package/dist/mcp/admin-tools.js +28 -23
  523. package/dist/mcp/format.d.ts +1 -1
  524. package/dist/mcp/format.js +4 -2
  525. package/dist/mcp/framing.d.ts +3 -1
  526. package/dist/mcp/framing.js +20 -8
  527. package/dist/mcp/memory-tools.d.ts +3 -3
  528. package/dist/mcp/memory-tools.js +21 -20
  529. package/dist/mcp/protocol.d.ts +32 -16
  530. package/dist/mcp/protocol.js +12 -9
  531. package/dist/mcp/recall-tools.d.ts +3 -3
  532. package/dist/mcp/recall-tools.js +62 -74
  533. package/dist/mcp/request.d.ts +7 -5
  534. package/dist/mcp/request.js +61 -77
  535. package/dist/mcp/server.d.ts +3 -1
  536. package/dist/mcp/server.js +8 -3
  537. package/dist/mcp/session-state.d.ts +1 -1
  538. package/dist/mcp/session-state.js +4 -3
  539. package/dist/mcp/shared-gate.d.ts +3 -2
  540. package/dist/mcp/shared-gate.js +3 -2
  541. package/dist/mcp/stdio.d.ts +6 -3
  542. package/dist/mcp/stdio.js +59 -23
  543. package/dist/mcp/tool-args.d.ts +4 -1
  544. package/dist/mcp/tool-args.js +8 -3
  545. package/dist/mcp/tools.js +76 -32
  546. package/dist/objects/customer-notes.d.ts +12 -10
  547. package/dist/objects/customer-notes.js +21 -15
  548. package/dist/objects/decisions.d.ts +18 -10
  549. package/dist/objects/decisions.js +23 -17
  550. package/dist/objects/descriptor.js +2 -1
  551. package/dist/objects/fields.d.ts +4 -1
  552. package/dist/objects/fields.js +6 -2
  553. package/dist/objects/incidents.d.ts +14 -16
  554. package/dist/objects/incidents.js +29 -30
  555. package/dist/objects/lifecycle.d.ts +0 -4
  556. package/dist/objects/lifecycle.js +21 -24
  557. package/dist/objects/policies.d.ts +12 -16
  558. package/dist/objects/policies.js +17 -21
  559. package/dist/objects/processes.d.ts +16 -10
  560. package/dist/objects/processes.js +20 -15
  561. package/dist/objects/project-briefs.d.ts +13 -14
  562. package/dist/objects/project-briefs.js +33 -39
  563. package/dist/objects/skills.d.ts +10 -12
  564. package/dist/objects/skills.js +17 -22
  565. package/dist/postinstall.js +15 -7
  566. package/dist/predictions/planning-fallacy.d.ts +19 -6
  567. package/dist/predictions/planning-fallacy.js +4 -2
  568. package/dist/rerankers/clef.d.ts +8 -2
  569. package/dist/rerankers/clef.js +14 -9
  570. package/dist/rerankers/cross-encoder.d.ts +2 -1
  571. package/dist/rerankers/cross-encoder.js +19 -9
  572. package/dist/rerankers/index.js +2 -1
  573. package/dist/rerankers/jev.js +2 -1
  574. package/dist/rerankers/llm.d.ts +6 -2
  575. package/dist/rerankers/llm.js +8 -3
  576. package/dist/rerankers/remote.d.ts +3 -1
  577. package/dist/rerankers/remote.js +5 -2
  578. package/dist/rerankers/types.d.ts +6 -2
  579. package/dist/search/bm25-search.d.ts +3 -1
  580. package/dist/search/bm25-search.js +15 -2
  581. package/dist/search/boosts.js +4 -3
  582. package/dist/search/embed-memories.d.ts +12 -4
  583. package/dist/search/embed-memories.js +96 -58
  584. package/dist/search/engine.d.ts +11 -0
  585. package/dist/search/engine.js +14 -0
  586. package/dist/search/goal-boost.d.ts +10 -3
  587. package/dist/search/goal-boost.js +13 -6
  588. package/dist/search/hybrid-score.d.ts +4 -1
  589. package/dist/search/hybrid-score.js +4 -1
  590. package/dist/search/hybrid.d.ts +23 -8
  591. package/dist/search/hybrid.js +12 -7
  592. package/dist/search/multihop.js +14 -13
  593. package/dist/search/path-context.d.ts +10 -3
  594. package/dist/search/path-context.js +10 -3
  595. package/dist/search/physics-search.d.ts +9 -4
  596. package/dist/search/physics-search.js +38 -14
  597. package/dist/search/rerank.d.ts +2 -1
  598. package/dist/search/rerank.js +2 -1
  599. package/dist/search/rrf.d.ts +14 -5
  600. package/dist/search/rrf.js +11 -4
  601. package/dist/search/vector.d.ts +8 -2
  602. package/dist/search/vector.js +14 -8
  603. package/dist/server/auth.d.ts +19 -15
  604. package/dist/server/auth.js +68 -38
  605. package/dist/server/boot.d.ts +4 -1
  606. package/dist/server/boot.js +115 -67
  607. package/dist/server/client-ip.d.ts +17 -5
  608. package/dist/server/client-ip.js +56 -21
  609. package/dist/server/cursor.d.ts +10 -3
  610. package/dist/server/cursor.js +10 -3
  611. package/dist/server/deadline.d.ts +5 -2
  612. package/dist/server/deadline.js +10 -3
  613. package/dist/server/key-check-bounds.js +12 -4
  614. package/dist/server/lifecycle.d.ts +4 -1
  615. package/dist/server/lifecycle.js +10 -4
  616. package/dist/server/mcp-http.d.ts +2 -1
  617. package/dist/server/mcp-http.js +37 -22
  618. package/dist/server/rate-limit.d.ts +17 -5
  619. package/dist/server/rate-limit.js +55 -26
  620. package/dist/server/ready.js +7 -4
  621. package/dist/server/request.d.ts +15 -4
  622. package/dist/server/request.js +42 -15
  623. package/dist/server/route-checks.d.ts +4 -1
  624. package/dist/server/route-checks.js +8 -3
  625. package/dist/server/route-table.d.ts +8 -6
  626. package/dist/server/route-table.js +550 -97
  627. package/dist/server/routes/admin.d.ts +7 -7
  628. package/dist/server/routes/admin.js +36 -15
  629. package/dist/server/routes/customer-notes.d.ts +5 -5
  630. package/dist/server/routes/customer-notes.js +5 -4
  631. package/dist/server/routes/decisions.d.ts +5 -5
  632. package/dist/server/routes/decisions.js +12 -6
  633. package/dist/server/routes/incidents.d.ts +5 -5
  634. package/dist/server/routes/incidents.js +10 -4
  635. package/dist/server/routes/memories.d.ts +8 -8
  636. package/dist/server/routes/memories.js +12 -17
  637. package/dist/server/routes/object-routes.d.ts +8 -5
  638. package/dist/server/routes/object-routes.js +4 -2
  639. package/dist/server/routes/policies.d.ts +6 -6
  640. package/dist/server/routes/policies.js +11 -4
  641. package/dist/server/routes/predictions.d.ts +5 -5
  642. package/dist/server/routes/predictions.js +9 -4
  643. package/dist/server/routes/processes.d.ts +5 -5
  644. package/dist/server/routes/processes.js +15 -6
  645. package/dist/server/routes/project-briefs.d.ts +6 -6
  646. package/dist/server/routes/project-briefs.js +3 -2
  647. package/dist/server/routes/recall.d.ts +3 -3
  648. package/dist/server/routes/recall.js +21 -10
  649. package/dist/server/routes/skills.d.ts +6 -6
  650. package/dist/server/routes/skills.js +12 -4
  651. package/dist/server/server-detect.d.ts +24 -8
  652. package/dist/server/server-detect.js +57 -22
  653. package/dist/server/sleep-child.js +16 -10
  654. package/dist/server/sleep-offload.d.ts +8 -5
  655. package/dist/server/sleep-offload.js +40 -18
  656. package/dist/server/tls.d.ts +10 -2
  657. package/dist/server/tls.js +25 -5
  658. package/dist/server/types.d.ts +41 -24
  659. package/dist/server/validation.d.ts +4 -1
  660. package/dist/server/validation.js +22 -9
  661. package/dist/server.d.ts +17 -49
  662. package/dist/server.js +33 -40
  663. package/dist/sharing/global-store.d.ts +6 -12
  664. package/dist/sharing/global-store.js +8 -48
  665. package/dist/sharing/global-sync.d.ts +3 -1
  666. package/dist/sharing/global-sync.js +17 -7
  667. package/dist/sharing/project-merge.d.ts +25 -7
  668. package/dist/sharing/project-merge.js +49 -17
  669. package/dist/sharing/search-both.d.ts +8 -4
  670. package/dist/sharing/search-both.js +28 -14
  671. package/dist/sharing/share.d.ts +8 -4
  672. package/dist/sharing/share.js +40 -18
  673. package/dist/store/ambient.js +10 -5
  674. package/dist/store/audit-event.d.ts +2 -2
  675. package/dist/store/audit-event.js +8 -3
  676. package/dist/store/audit.d.ts +6 -3
  677. package/dist/store/audit.js +16 -6
  678. package/dist/store/auth.d.ts +4 -2
  679. package/dist/store/auth.js +63 -20
  680. package/dist/store/busy.d.ts +9 -0
  681. package/dist/store/busy.js +16 -0
  682. package/dist/store/candidates.d.ts +12 -5
  683. package/dist/store/candidates.js +90 -41
  684. package/dist/store/capture-write.d.ts +2 -1
  685. package/dist/store/capture-write.js +2 -1
  686. package/dist/store/card-detail.d.ts +4 -4
  687. package/dist/store/card-detail.js +15 -8
  688. package/dist/store/cards.d.ts +24 -10
  689. package/dist/store/cards.js +97 -63
  690. package/dist/store/compaction-caller.d.ts +2 -1
  691. package/dist/store/compaction-caller.js +2 -1
  692. package/dist/store/compactions-record.d.ts +14 -8
  693. package/dist/store/compactions-record.js +101 -37
  694. package/dist/store/compactions.js +35 -15
  695. package/dist/store/conflicts.d.ts +16 -5
  696. package/dist/store/conflicts.js +104 -48
  697. package/dist/store/connectors/dlq.d.ts +17 -5
  698. package/dist/store/connectors/dlq.js +58 -6
  699. package/dist/store/connectors/event-log.d.ts +122 -0
  700. package/dist/store/connectors/event-log.js +25 -0
  701. package/dist/store/connectors/github.d.ts +6 -3
  702. package/dist/store/connectors/github.js +30 -48
  703. package/dist/store/connectors/slack.d.ts +2 -1
  704. package/dist/store/connectors/slack.js +31 -47
  705. package/dist/store/dashboard-reads.d.ts +7 -3
  706. package/dist/store/dashboard-reads.js +32 -10
  707. package/dist/store/delete-and-batch.d.ts +17 -11
  708. package/dist/store/delete-and-batch.js +70 -28
  709. package/dist/store/delivery-recorder.d.ts +10 -7
  710. package/dist/store/delivery-recorder.js +70 -37
  711. package/dist/store/descendant-page.d.ts +2 -1
  712. package/dist/store/descendant-page.js +26 -10
  713. package/dist/store/diagnostics.d.ts +2 -1
  714. package/dist/store/diagnostics.js +2 -1
  715. package/dist/store/doctor-reads.d.ts +2 -1
  716. package/dist/store/doctor-reads.js +13 -5
  717. package/dist/store/dormant.d.ts +19 -11
  718. package/dist/store/dormant.js +45 -19
  719. package/dist/store/embeddings/index.d.ts +13 -9
  720. package/dist/store/embeddings/index.js +19 -12
  721. package/dist/store/entry-reads.d.ts +72 -21
  722. package/dist/store/entry-reads.js +215 -69
  723. package/dist/store/entry-row.d.ts +10 -6
  724. package/dist/store/entry-row.js +26 -14
  725. package/dist/store/entry-writes.d.ts +28 -13
  726. package/dist/store/entry-writes.js +61 -22
  727. package/dist/store/failure-log-at.js +1 -1
  728. package/dist/store/failure-log.d.ts +4 -2
  729. package/dist/store/failure-log.js +13 -6
  730. package/dist/store/gated-write.d.ts +3 -3
  731. package/dist/store/gated-write.js +3 -3
  732. package/dist/store/goals.d.ts +5 -4
  733. package/dist/store/goals.js +11 -12
  734. package/dist/store/graph-apply.d.ts +21 -0
  735. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  736. package/dist/store/graph-queue.d.ts +9 -6
  737. package/dist/store/graph-queue.js +15 -10
  738. package/dist/store/graph-reads.d.ts +16 -11
  739. package/dist/store/graph-reads.js +29 -19
  740. package/dist/store/graph-rows.d.ts +41 -3
  741. package/dist/store/graph-rows.js +10 -7
  742. package/dist/store/graph-view-rows.js +15 -7
  743. package/dist/store/graph-writes.d.ts +16 -10
  744. package/dist/store/graph-writes.js +59 -36
  745. package/dist/store/half-life.js +2 -2
  746. package/dist/store/handoffs.d.ts +13 -7
  747. package/dist/store/handoffs.js +44 -22
  748. package/dist/store/index-and-stats.d.ts +2 -2
  749. package/dist/store/index-and-stats.js +6 -5
  750. package/dist/store/index.d.ts +4 -2
  751. package/dist/store/index.js +2 -1
  752. package/dist/store/key-audit.d.ts +2 -1
  753. package/dist/store/key-audit.js +2 -1
  754. package/dist/store/key-writes.d.ts +2 -1
  755. package/dist/store/key-writes.js +9 -2
  756. package/dist/store/ledger-turn.d.ts +4 -1
  757. package/dist/store/ledger-turn.js +7 -2
  758. package/dist/store/mirrors.d.ts +11 -4
  759. package/dist/store/mirrors.js +96 -19
  760. package/dist/store/narrow.d.ts +6 -0
  761. package/dist/store/narrow.js +11 -0
  762. package/dist/store/open.d.ts +6 -3
  763. package/dist/store/open.js +20 -10
  764. package/dist/store/pilot-arm.d.ts +2 -1
  765. package/dist/store/pilot-arm.js +18 -6
  766. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  767. package/dist/store/planning-fallacy-evidence.js +8 -5
  768. package/dist/store/port/agent-import.d.ts +62 -0
  769. package/dist/store/port/agent-import.js +2 -0
  770. package/dist/store/port/consolidation.d.ts +129 -0
  771. package/dist/store/port/consolidation.js +2 -0
  772. package/dist/store/port/learning.d.ts +19 -0
  773. package/dist/store/port/learning.js +2 -0
  774. package/dist/store/port/local-files.d.ts +18 -0
  775. package/dist/store/port/local-files.js +2 -0
  776. package/dist/store/port/promotion.d.ts +20 -0
  777. package/dist/store/port/promotion.js +3 -0
  778. package/dist/store/port-groups.d.ts +160 -0
  779. package/dist/store/port-groups.js +2 -0
  780. package/dist/store/port.d.ts +261 -219
  781. package/dist/store/port.js +3 -9
  782. package/dist/store/predictions.d.ts +14 -10
  783. package/dist/store/predictions.js +37 -17
  784. package/dist/store/project-tags.d.ts +4 -1
  785. package/dist/store/project-tags.js +16 -5
  786. package/dist/store/quality-repair.d.ts +8 -4
  787. package/dist/store/quality-repair.js +53 -20
  788. package/dist/store/quarantine.d.ts +1 -0
  789. package/dist/store/quarantine.js +23 -9
  790. package/dist/store/raw-archive.d.ts +5 -4
  791. package/dist/store/raw-archive.js +11 -10
  792. package/dist/store/recall-trace.d.ts +22 -17
  793. package/dist/store/recall-trace.js +128 -64
  794. package/dist/store/rejected-values.d.ts +15 -10
  795. package/dist/store/rejected-values.js +46 -20
  796. package/dist/store/rejection.d.ts +12 -11
  797. package/dist/store/rejection.js +18 -19
  798. package/dist/store/report-reads.d.ts +2 -1
  799. package/dist/store/report-reads.js +2 -1
  800. package/dist/store/rows.d.ts +7 -5
  801. package/dist/store/rows.js +20 -13
  802. package/dist/store/rule-sql.d.ts +7 -3
  803. package/dist/store/rule-sql.js +26 -13
  804. package/dist/store/search-rows.d.ts +16 -11
  805. package/dist/store/search-rows.js +54 -32
  806. package/dist/store/sessions.d.ts +12 -10
  807. package/dist/store/sessions.js +40 -21
  808. package/dist/store/set-aside.d.ts +2 -2
  809. package/dist/store/set-aside.js +18 -5
  810. package/dist/store/sqlite/agent-import.d.ts +3 -0
  811. package/dist/store/sqlite/agent-import.js +77 -0
  812. package/dist/store/sqlite/cards-group.d.ts +6 -0
  813. package/dist/store/sqlite/cards-group.js +37 -0
  814. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  815. package/dist/store/sqlite/conflicts-group.js +18 -0
  816. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  817. package/dist/store/sqlite/connector-events-group.js +17 -6
  818. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  819. package/dist/store/sqlite/connector-writes-group.js +12 -5
  820. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  821. package/dist/store/sqlite/consolidation-group.js +64 -0
  822. package/dist/store/sqlite/dag-reads-group.js +1 -1
  823. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  824. package/dist/store/sqlite/dormant-group.js +29 -0
  825. package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
  826. package/dist/store/sqlite/entry-writes-group.js +37 -14
  827. package/dist/store/sqlite/error-codec.d.ts +4 -2
  828. package/dist/store/sqlite/error-codec.js +32 -10
  829. package/dist/store/sqlite/executor-counts.js +2 -1
  830. package/dist/store/sqlite/executor.d.ts +8 -3
  831. package/dist/store/sqlite/executor.js +56 -18
  832. package/dist/store/sqlite/global-promote.d.ts +5 -0
  833. package/dist/store/sqlite/global-promote.js +48 -0
  834. package/dist/store/sqlite/goals-group.d.ts +6 -0
  835. package/dist/store/sqlite/goals-group.js +23 -0
  836. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  837. package/dist/store/sqlite/graph-reads-group.js +2 -1
  838. package/dist/store/sqlite/held-connection.d.ts +8 -0
  839. package/dist/store/sqlite/held-connection.js +34 -7
  840. package/dist/store/sqlite/last-recall-group.d.ts +15 -0
  841. package/dist/store/sqlite/last-recall-group.js +62 -0
  842. package/dist/store/sqlite/learning-group.d.ts +4 -0
  843. package/dist/store/sqlite/learning-group.js +17 -0
  844. package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
  845. package/dist/store/sqlite/maintenance-groups.js +61 -0
  846. package/dist/store/sqlite/object-rows.d.ts +6 -3
  847. package/dist/store/sqlite/object-rows.js +34 -5
  848. package/dist/store/sqlite/objects-group.d.ts +5 -4
  849. package/dist/store/sqlite/objects-group.js +97 -38
  850. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  851. package/dist/store/sqlite/predictions-group.js +4 -2
  852. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  853. package/dist/store/sqlite/promotion-group.js +10 -0
  854. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  855. package/dist/store/sqlite/quarantine-group.js +4 -2
  856. package/dist/store/sqlite/reports-group.d.ts +6 -0
  857. package/dist/store/sqlite/reports-group.js +33 -0
  858. package/dist/store/sqlite/request-scope.d.ts +6 -0
  859. package/dist/store/sqlite/request-scope.js +18 -0
  860. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  861. package/dist/store/sqlite/sessions-group.js +46 -0
  862. package/dist/store/sqlite/store.d.ts +22 -18
  863. package/dist/store/sqlite/store.js +95 -33
  864. package/dist/store/sqlite/vector-pack.js +2 -1
  865. package/dist/store/sqlite/vector-reads-group.js +2 -1
  866. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  867. package/dist/store/sqlite/worker-jobs.js +19 -7
  868. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  869. package/dist/store/sqlite/worker-ops.js +6 -3
  870. package/dist/store/sqlite/worker-store.d.ts +4 -3
  871. package/dist/store/sqlite/worker-store.js +24 -14
  872. package/dist/store/summaries.d.ts +25 -11
  873. package/dist/store/summaries.js +84 -27
  874. package/dist/store/summary-dirty.d.ts +2 -1
  875. package/dist/store/summary-dirty.js +2 -1
  876. package/dist/store/tenant.d.ts +3 -2
  877. package/dist/store/tenant.js +5 -4
  878. package/dist/store/token-ledger-rows.js +8 -4
  879. package/dist/store/token-ledger.d.ts +19 -13
  880. package/dist/store/token-ledger.js +27 -14
  881. package/dist/store/tombstone-checks.d.ts +4 -1
  882. package/dist/store/tombstone-checks.js +10 -1
  883. package/dist/store/usage-reports.js +2 -1
  884. package/dist/store/vector-index.d.ts +8 -5
  885. package/dist/store/vector-index.js +28 -11
  886. package/dist/store/working-memory.d.ts +6 -4
  887. package/dist/store/working-memory.js +14 -9
  888. package/dist/support-bundle.js +10 -5
  889. package/dist/trust/quarantine.d.ts +1 -2
  890. package/dist/trust/quarantine.js +1 -5
  891. package/dist/trust/reject-flow.d.ts +12 -3
  892. package/dist/trust/reject-flow.js +12 -4
  893. package/dist/util/anthropic-messages.d.ts +7 -2
  894. package/dist/util/anthropic-messages.js +18 -7
  895. package/dist/util/atomic-write.d.ts +8 -3
  896. package/dist/util/atomic-write.js +36 -21
  897. package/dist/util/compaction-items.d.ts +4 -1
  898. package/dist/util/compaction-items.js +8 -2
  899. package/dist/util/crash-handlers.d.ts +7 -2
  900. package/dist/util/crash-handlers.js +13 -4
  901. package/dist/util/env.d.ts +26 -5
  902. package/dist/util/env.js +87 -25
  903. package/dist/util/format.d.ts +2 -0
  904. package/dist/util/format.js +4 -0
  905. package/dist/util/home-path.js +12 -6
  906. package/dist/util/hook-payload.d.ts +3 -1
  907. package/dist/util/hook-payload.js +3 -1
  908. package/dist/util/http-retry.d.ts +12 -6
  909. package/dist/util/http-retry.js +16 -6
  910. package/dist/util/http-util.d.ts +20 -5
  911. package/dist/util/http-util.js +28 -9
  912. package/dist/util/json.d.ts +4 -1
  913. package/dist/util/json.js +4 -1
  914. package/dist/util/keyset.js +2 -1
  915. package/dist/util/limits.js +4 -2
  916. package/dist/util/log.d.ts +13 -5
  917. package/dist/util/log.js +29 -6
  918. package/dist/util/net.d.ts +5 -0
  919. package/dist/util/net.js +19 -0
  920. package/dist/util/real-path.d.ts +2 -1
  921. package/dist/util/real-path.js +4 -3
  922. package/dist/util/request-scope.d.ts +16 -4
  923. package/dist/util/request-scope.js +19 -6
  924. package/dist/util/same-text.d.ts +10 -3
  925. package/dist/util/same-text.js +10 -3
  926. package/dist/util/secret-detect.d.ts +24 -7
  927. package/dist/util/secret-detect.js +49 -14
  928. package/dist/util/spawn-argv.d.ts +11 -0
  929. package/dist/util/spawn-argv.js +66 -0
  930. package/dist/util/sql.d.ts +3 -0
  931. package/dist/util/sql.js +6 -0
  932. package/dist/util/sqlite-blocked.d.ts +15 -4
  933. package/dist/util/sqlite-blocked.js +19 -6
  934. package/dist/util/stored-json.d.ts +4 -1
  935. package/dist/util/stored-json.js +6 -2
  936. package/dist/util/stream-tee.d.ts +2 -1
  937. package/dist/util/stream-tee.js +8 -5
  938. package/dist/util/transcript-tail.d.ts +4 -1
  939. package/dist/util/transcript-tail.js +4 -1
  940. package/dist/util/vector-codec.d.ts +4 -0
  941. package/dist/util/vector-codec.js +15 -0
  942. package/dist/util/version.d.ts +8 -3
  943. package/dist/util/version.js +8 -3
  944. package/dist/util/write-budget.d.ts +7 -2
  945. package/dist/util/write-budget.js +5 -2
  946. package/dist/util/yaml.d.ts +4 -1
  947. package/dist/util/yaml.js +4 -1
  948. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  949. package/extensions/openclaw-plugin/package.json +1 -1
  950. package/openclaw.plugin.json +1 -1
  951. package/package.json +4 -1
  952. package/scripts/postinstall.cjs +3 -1
  953. package/dist/api/audit.js +0 -56
  954. package/dist/api/cards.d.ts +0 -42
  955. package/dist/api/conflicts.d.ts +0 -28
  956. package/dist/api/conflicts.js +0 -61
  957. package/dist/api/dormant.d.ts +0 -14
  958. package/dist/api/dormant.js +0 -58
  959. package/dist/api/goals.d.ts +0 -18
  960. package/dist/api/graph.d.ts +0 -8
  961. package/dist/api/graph.js +0 -7
  962. package/dist/api/learn.js +0 -124
  963. package/dist/api/memories.d.ts +0 -23
  964. package/dist/api/memories.js +0 -46
  965. package/dist/api/objects.d.ts +0 -9
  966. package/dist/api/on-store.d.ts +0 -16
  967. package/dist/api/on-store.js +0 -38
  968. package/dist/api/outcome.d.ts +0 -19
  969. package/dist/api/outcome.js +0 -21
  970. package/dist/api/predictions.d.ts +0 -11
  971. package/dist/api/promote.d.ts +0 -36
  972. package/dist/api/promote.js +0 -65
  973. package/dist/api/recall-core.d.ts +0 -4
  974. package/dist/api/recall-core.js +0 -120
  975. package/dist/api/recall-finish.d.ts +0 -53
  976. package/dist/api/recall-finish.js +0 -30
  977. package/dist/api/recall-history.d.ts +0 -64
  978. package/dist/api/recall-history.js +0 -159
  979. package/dist/api/recall-record.d.ts +0 -43
  980. package/dist/api/recall-record.js +0 -78
  981. package/dist/api/recall-request.js +0 -121
  982. package/dist/api/recall.d.ts +0 -6
  983. package/dist/api/refine.d.ts +0 -7
  984. package/dist/api/refine.js +0 -10
  985. package/dist/api/session-owners.d.ts +0 -4
  986. package/dist/api/session-owners.js +0 -17
  987. package/dist/api/sleep-run.d.ts +0 -26
  988. package/dist/api/sleep.js +0 -10
  989. package/dist/cli/lenient-id.d.ts +0 -2
  990. package/dist/cli/lenient-id.js +0 -13
  991. package/dist/graph/write.d.ts +0 -14
  992. package/dist/store/sqlite/busy.d.ts +0 -3
  993. package/dist/store/sqlite/busy.js +0 -8
  994. package/dist/store/sqlite/local.d.ts +0 -21
  995. package/dist/store/sqlite/local.js +0 -39
@@ -0,0 +1,15 @@
1
+ import type { LastRecall, RecallWrites, Sync } from '../port.js';
2
+ /** What a finished recall wrote after its audit rows: the trace's id, null when none was asked or its write failed, and
3
+ * the ids strengthened. */
4
+ interface RecallFinish {
5
+ readonly traceId: number | null;
6
+ readonly strengthened: ReadonlySet<string>;
7
+ }
8
+ /** sqliteStore's finishRecall, for the synchronous recall that cannot await the port. */
9
+ export declare function finishRecallAt(hippoRoot: string, writes: RecallWrites): RecallFinish;
10
+ export declare function sqliteLastRecall(hippoRoot: string): Sync<LastRecall>;
11
+ /** The group as a served store answers it: the call runs at once and resolves through a Promise, so a throw rejects as
12
+ * another store's would. */
13
+ export declare function servedLastRecall(sync: Sync<LastRecall>): LastRecall;
14
+ export {};
15
+ //# sourceMappingURL=last-recall-group.d.ts.map
@@ -0,0 +1,62 @@
1
+ // hippo.db's LastRecall group: the last recall sits in its meta table, and a traced outcome links on the outcome's own
2
+ // handle.
3
+ import { withWriteScope } from '../../db/index.js';
4
+ import { appendAuditEvent } from '../audit.js';
5
+ import { strengthenRetrieved, strengthenRetrievedInOwnTx } from '../entry-writes.js';
6
+ import { localGoalRecallRows, writeGoalRecallLog } from '../goals.js';
7
+ import { loadLastRecall, saveIndex } from '../index-and-stats.js';
8
+ import { onHandle } from '../open.js';
9
+ import { writeRecallTrace } from '../recall-trace.js';
10
+ import { applyOutcomeAt } from './entry-writes-group.js';
11
+ /** sqliteStore's finishRecall, for the synchronous recall that cannot await the port. */
12
+ export function finishRecallAt(hippoRoot, writes) {
13
+ return onHandle(hippoRoot, (db) => {
14
+ const traceAndStrengthen = () => ({
15
+ traceId: writes.trace ? writeRecallTrace(db, writes.trace) : null,
16
+ strengthened: writes.strengthen
17
+ ? strengthenRetrievedInOwnTx(db, writes.strengthen.ids, writes.strengthen.opts)
18
+ : new Set(),
19
+ });
20
+ // Alone, the fail-soft trace and strengthen keep their own scopes so a busy lock loses them, never the read.
21
+ if (writes.goalLog.length === 0 && writes.audit.length === 0)
22
+ return traceAndStrengthen();
23
+ // Inside this scope both run as savepoints, so one recall commits once and a failed trace or strengthen still
24
+ // unwinds alone.
25
+ return withWriteScope(db, 'finish_recall', () => {
26
+ writeGoalRecallLog(db, localGoalRecallRows(db, writes.goalLog));
27
+ for (const event of writes.audit)
28
+ appendAuditEvent(db, event);
29
+ return traceAndStrengthen();
30
+ });
31
+ });
32
+ }
33
+ export function sqliteLastRecall(hippoRoot) {
34
+ return {
35
+ applyTracedOutcome: (outcome, traceId) => applyOutcomeAt(hippoRoot, outcome, traceId),
36
+ applyOutcomeToLast(target, good) {
37
+ const { last_retrieval_ids: ids, last_trace_id: trace } = loadLastRecall(hippoRoot);
38
+ if (ids.length === 0)
39
+ return [];
40
+ return applyOutcomeAt(hippoRoot, { ...target, ids, good }, trace === null ? undefined : Number(trace));
41
+ },
42
+ finishRecall(writes, globalRoot) {
43
+ const { ids, opts } = writes.strengthen;
44
+ const { traceId, strengthened } = finishRecallAt(hippoRoot, writes);
45
+ if (globalRoot !== undefined)
46
+ strengthenRetrieved(globalRoot, ids.filter((id) => !strengthened.has(id)), opts);
47
+ // One write for both keys, so an outcome never pairs these ids with an older trace; a lost trace saves null.
48
+ saveIndex(hippoRoot, { last_retrieval_ids: [...ids], last_trace_id: traceId === null ? null : String(traceId) });
49
+ return traceId;
50
+ },
51
+ };
52
+ }
53
+ /** The group as a served store answers it: the call runs at once and resolves through a Promise, so a throw rejects as
54
+ * another store's would. */
55
+ export function servedLastRecall(sync) {
56
+ return {
57
+ applyTracedOutcome: async (outcome, traceId) => sync.applyTracedOutcome(outcome, traceId),
58
+ applyOutcomeToLast: async (target, good) => sync.applyOutcomeToLast(target, good),
59
+ finishRecall: async (writes, globalRoot) => sync.finishRecall(writes, globalRoot),
60
+ };
61
+ }
62
+ //# sourceMappingURL=last-recall-group.js.map
@@ -0,0 +1,4 @@
1
+ import type { Learning } from '../port/learning.js';
2
+ /** The learn passes' store work on the hippo.db under `hippoRoot`, each call on its own short-lived handle. */
3
+ export declare function sqliteLearning(hippoRoot: string): Learning;
4
+ //# sourceMappingURL=learning-group.d.ts.map
@@ -0,0 +1,17 @@
1
+ import { confirmedOutcomeTimes } from '../audit.js';
2
+ import { loadAllEntries, loadCurrentEntriesFromOrigins, loadEntriesMentioning, readEntry } from '../entry-reads.js';
3
+ import { addTagToEntries, writeEntriesTogether, writeEntry } from '../entry-writes.js';
4
+ /** The learn passes' store work on the hippo.db under `hippoRoot`, each call on its own short-lived handle. */
5
+ export function sqliteLearning(hippoRoot) {
6
+ return {
7
+ allEntries: (tenantId) => loadAllEntries(hippoRoot, tenantId),
8
+ entriesMentioning: (tokens, tag, tenantId) => loadEntriesMentioning(hippoRoot, tokens, tag, tenantId),
9
+ readEntry: (id, tenantId) => readEntry(hippoRoot, id, tenantId),
10
+ currentEntriesFromOrigins: (tenantId, origins) => loadCurrentEntriesFromOrigins(hippoRoot, tenantId, origins),
11
+ writeEntry: (entry) => writeEntry(hippoRoot, entry),
12
+ writeEntriesTogether: (entries) => writeEntriesTogether(hippoRoot, entries),
13
+ addTagToEntries: (tenantId, ids, tag) => addTagToEntries(hippoRoot, tenantId, ids, tag),
14
+ confirmedOutcomeTimes: (tenantId) => confirmedOutcomeTimes(hippoRoot, tenantId),
15
+ };
16
+ }
17
+ //# sourceMappingURL=learning-group.js.map
@@ -0,0 +1,6 @@
1
+ import type { AuditMaintenance, LessonWrites, Sync } from '../port.js';
2
+ export declare function sqliteAuditMaintenance(hippoRoot: string): Sync<AuditMaintenance>;
3
+ export declare function servedAuditMaintenance(sync: Sync<AuditMaintenance>): AuditMaintenance;
4
+ export declare function sqliteLessonWrites(hippoRoot: string): Sync<LessonWrites>;
5
+ export declare function servedLessonWrites(sync: Sync<LessonWrites>): LessonWrites;
6
+ //# sourceMappingURL=maintenance-groups.d.ts.map
@@ -0,0 +1,61 @@
1
+ // hippo.db's half of the AuditMaintenance and LessonWrites store groups: the quality audit, audit prune and git learn's
2
+ // batch.
3
+ import { pruneAuditRows } from '../audit.js';
4
+ import { loadTextsHoldingWords } from '../candidates.js';
5
+ import { deleteEntriesAutomatically, memoriesBackingObjects } from '../delete-and-batch.js';
6
+ import { loadAllEntries } from '../entry-reads.js';
7
+ import { writeEntriesSkippingRejected, writeEntriesTogether } from '../entry-writes.js';
8
+ import { updateStats } from '../index-and-stats.js';
9
+ import { repairAutomaticMemories, repairQualityOnce } from '../quality-repair.js';
10
+ import { touchableScopeSql } from '../rule-sql.js';
11
+ export function sqliteAuditMaintenance(hippoRoot) {
12
+ return {
13
+ tenantEntries: (tenantId) => loadAllEntries(hippoRoot, tenantId),
14
+ objectBackedIds: () => memoriesBackingObjects(hippoRoot),
15
+ deleteAutomatically: (removals, actor) => deleteEntriesAutomatically(hippoRoot, removals, actor),
16
+ pruneAuditRows: (prune) => pruneAuditRows(hippoRoot, prune),
17
+ repairQuality: (tenantId, apply) => repairAutomaticMemories(hippoRoot, { tenantId, apply }),
18
+ repairQualityOnce: (tenantId) => repairQualityOnce(hippoRoot, tenantId),
19
+ };
20
+ }
21
+ export function servedAuditMaintenance(sync) {
22
+ return {
23
+ tenantEntries: async (tenantId) => sync.tenantEntries(tenantId),
24
+ objectBackedIds: async () => sync.objectBackedIds(),
25
+ deleteAutomatically: async (removals, actor) => sync.deleteAutomatically(removals, actor),
26
+ pruneAuditRows: async (prune) => sync.pruneAuditRows(prune),
27
+ repairQuality: async (tenantId, apply) => sync.repairQuality(tenantId, apply),
28
+ repairQualityOnce: async (tenantId) => sync.repairQualityOnce(tenantId),
29
+ };
30
+ }
31
+ export function sqliteLessonWrites(hippoRoot) {
32
+ return {
33
+ tenantEntries: (tenantId) => loadAllEntries(hippoRoot, tenantId),
34
+ textsHoldingWords: (tenantId, words, ownScope) => loadTextsHoldingWords(hippoRoot, tenantId, words, undefined, touchableScopeSql('', ownScope)),
35
+ writeSkippingRejected(entries, actor) {
36
+ const written = [];
37
+ writeEntriesSkippingRejected(hippoRoot, (put) => {
38
+ for (const entry of entries)
39
+ if (put(entry))
40
+ written.push(entry.id);
41
+ }, actor);
42
+ return written;
43
+ },
44
+ writeTogether(entries) {
45
+ writeEntriesTogether(hippoRoot, entries);
46
+ },
47
+ bumpRemembered(count) {
48
+ updateStats(hippoRoot, { remembered: count });
49
+ },
50
+ };
51
+ }
52
+ export function servedLessonWrites(sync) {
53
+ return {
54
+ tenantEntries: async (tenantId) => sync.tenantEntries(tenantId),
55
+ textsHoldingWords: async (tenantId, words, ownScope) => sync.textsHoldingWords(tenantId, words, ownScope),
56
+ writeSkippingRejected: async (entries, actor) => sync.writeSkippingRejected(entries, actor),
57
+ writeTogether: async (entries) => sync.writeTogether(entries),
58
+ bumpRemembered: async (count) => sync.bumpRemembered(count),
59
+ };
60
+ }
61
+ //# sourceMappingURL=maintenance-groups.js.map
@@ -78,7 +78,8 @@ interface RowSpec<K extends ObjectKind> {
78
78
  readonly closeOp: AuditOp;
79
79
  /** The one column a list may filter by equality. */
80
80
  readonly filterColumn?: string;
81
- /** Set for the kinds the graph extracts, so a save marks the graph stale and a close drops the object's graph rows. */
81
+ /** Set for the kinds the graph extracts, so a save marks the graph stale and a close drops the object's graph
82
+ * rows. */
82
83
  readonly graphType?: SourceObjectType;
83
84
  }
84
85
  /** What one column of a new row can hold. */
@@ -86,12 +87,14 @@ export type ColumnValue = string | number | null;
86
87
  interface InsertSpec<K extends SavableKind> {
87
88
  readonly createOp: AuditOp;
88
89
  readonly supersedeOp: AuditOp;
89
- /** A versioned table has `version` and `change_summary`: a successor takes its predecessor's version plus one and the caller's change note. */
90
+ /** A versioned table has `version` and `change_summary`: a successor takes its predecessor's version plus one and the
91
+ * caller's change note. */
90
92
  readonly versioned: boolean;
91
93
  /** The kind's own columns, in the order `values` fills them. */
92
94
  readonly columns: readonly string[];
93
95
  readonly values: (w: ObjectFields[K]) => readonly ColumnValue[];
94
- /** The create audit's keys after the id, in the order they are stored: ids, counts and flags, never the object's text. */
96
+ /** The create audit's keys after the id, in the order they are stored: ids, counts and flags, never the object's
97
+ * text. */
95
98
  readonly createMeta: (w: ObjectFields[K], version: number) => JsonObject;
96
99
  /** Keys the supersede audit stores after its own. */
97
100
  readonly supersedeMeta?: (w: ObjectFields[K]) => JsonObject;
@@ -69,11 +69,40 @@ function parseSteps(raw, id) {
69
69
  return [];
70
70
  }
71
71
  }
72
- const rowToProcess = (row) => ({ ...head(row), processName: row.process_name, description: row.description, steps: parseSteps(row.steps, row.id), ...versionedTail(row) });
73
- const rowToPolicy = (row) => ({ ...head(row), policyName: row.policy_name, policyText: row.policy_text, validFrom: row.valid_from, validTo: row.valid_to, ...versionedTail(row) });
74
- const rowToSkill = (row) => ({ ...head(row), skillName: row.skill_name, instructions: row.instructions, trigger: row.trigger_text, ...versionedTail(row) });
75
- const rowToProjectBrief = (row) => ({ ...head(row), repo: row.repo, summary: row.summary, ...versionedTail(row) });
76
- const rowToCustomerNote = (row) => ({ ...head(row), customer: row.customer, note: row.note, ...versionedTail(row) });
72
+ const rowToProcess = (row) => ({
73
+ ...head(row),
74
+ processName: row.process_name,
75
+ description: row.description,
76
+ steps: parseSteps(row.steps, row.id),
77
+ ...versionedTail(row),
78
+ });
79
+ const rowToPolicy = (row) => ({
80
+ ...head(row),
81
+ policyName: row.policy_name,
82
+ policyText: row.policy_text,
83
+ validFrom: row.valid_from,
84
+ validTo: row.valid_to,
85
+ ...versionedTail(row),
86
+ });
87
+ const rowToSkill = (row) => ({
88
+ ...head(row),
89
+ skillName: row.skill_name,
90
+ instructions: row.instructions,
91
+ trigger: row.trigger_text,
92
+ ...versionedTail(row),
93
+ });
94
+ const rowToProjectBrief = (row) => ({
95
+ ...head(row),
96
+ repo: row.repo,
97
+ summary: row.summary,
98
+ ...versionedTail(row),
99
+ });
100
+ const rowToCustomerNote = (row) => ({
101
+ ...head(row),
102
+ customer: row.customer,
103
+ note: row.note,
104
+ ...versionedTail(row),
105
+ });
77
106
  /** Tells an auto-refresh from a manual write in the audit log without a fourth audit op. */
78
107
  function refreshMeta(w) {
79
108
  return w.receiptCount === undefined ? { refreshed: false } : { refreshed: true, receipt_count: w.receiptCount };
@@ -1,6 +1,7 @@
1
1
  import type { BriefReceipt, Incident, ObjectByKind, ObjectKind, Policy, SavableKind, Skill } from '../../core/object-types.js';
2
2
  import { type IncidentOpen, type IncidentOpenRefusal, type IncidentResolve, type ObjectClose, type ObjectListQuery, type ObjectRefusal, type Objects, type ObjectSave, type PoliciesInForceQuery } from '../port.js';
3
- /** The group with each answer as its value; spelled out because `Sync<Objects>` would widen each method's kind to every kind. */
3
+ /** The group with each answer as its value; spelled out because
4
+ * `Sync<Objects>` would widen each method's kind to every kind. */
4
5
  export interface SyncObjects {
5
6
  listObjects<K extends ObjectKind>(tenantId: string, kind: K, query: ObjectListQuery<K>): ObjectByKind[K][];
6
7
  objectById<K extends ObjectKind>(tenantId: string, kind: K, id: number): ObjectByKind[K] | null;
@@ -11,10 +12,10 @@ export interface SyncObjects {
11
12
  policiesInForce(tenantId: string, query: PoliciesInForceQuery): Policy[];
12
13
  activeSkillsByName(tenantId: string, limit: number): Skill[];
13
14
  briefReceipts(tenantId: string, tag: string, limit: number): BriefReceipt[];
15
+ objectIdByMemory<K extends ObjectKind>(tenantId: string, kind: K, status: ObjectByKind[K]['status'], memoryId: string): number | null;
14
16
  }
15
17
  export declare function sqliteObjects(hippoRoot: string): SyncObjects;
16
- /** 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. */
18
+ /** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
19
+ * another store's would. */
17
20
  export declare function servedObjects(sync: SyncObjects): Objects;
18
- /** The newest object in `status` that a memory mirrors, for the CLI flags that name an object by its memory id. */
19
- export declare function objectIdByMemory<K extends ObjectKind>(hippoRoot: string, tenantId: string, kind: K, status: ObjectByKind[K]['status'], memoryId: string): number | null;
20
21
  //# sourceMappingURL=objects-group.d.ts.map
@@ -3,16 +3,18 @@ import { appendAuditEvent } from '../audit.js';
3
3
  import { getMeta, withWriteScopeOr } from '../../db/index.js';
4
4
  import { escapeLike } from '../../util/escape.js';
5
5
  import { keysetAfter } from '../../util/keyset.js';
6
- import { calculateStrength, deriveHalfLife } from '../../core/memory.js';
6
+ import { chunked } from '../../util/chunked.js';
7
+ import { calculateStrength, deriveHalfLife, LEGACY_TYPED_HALF_LIFE } from '../../core/memory.js';
7
8
  import { scopeAdmitSql } from '../rule-sql.js';
8
9
  import { stampOriginProject, upsertEntryRow } from '../entry-row.js';
9
10
  import { auditEntryWrite, writeEntryMirrors } from '../entry-writes.js';
10
11
  import { markGraphDirty } from '../graph-queue.js';
11
12
  import { removeGraphEntitiesForObject } from '../graph-writes.js';
12
- import { LEGACY_TYPED_HALF_LIFE, onHandle, openStore, TYPED_HALF_LIFE_META_KEY } from '../open.js';
13
+ import { onHandle, openStore, TYPED_HALF_LIFE_META_KEY } from '../open.js';
13
14
  import { isObjectRefusal, } from '../port.js';
14
15
  import { auditingRefusal } from './entry-writes-group.js';
15
16
  import { insertSpec, rowSpec } from './object-rows.js';
17
+ import { placeholders } from '../../util/sql.js';
16
18
  export function sqliteObjects(hippoRoot) {
17
19
  return {
18
20
  listObjects: (tenantId, kind, query) => onHandle(hippoRoot, (db) => listRows(db, tenantId, kind, query)),
@@ -27,9 +29,11 @@ export function sqliteObjects(hippoRoot) {
27
29
  policiesInForce: (tenantId, query) => onHandle(hippoRoot, (db) => policiesInForce(db, tenantId, query)),
28
30
  activeSkillsByName: (tenantId, limit) => onHandle(hippoRoot, (db) => activeSkillsByName(db, tenantId, limit)),
29
31
  briefReceipts: (tenantId, tag, limit) => onHandle(hippoRoot, (db) => briefReceipts(db, tenantId, tag, limit)),
32
+ objectIdByMemory: (tenantId, kind, status, memoryId) => onHandle(hippoRoot, (db) => idByMemory(db, tenantId, kind, status, memoryId)),
30
33
  };
31
34
  }
32
- /** 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. */
35
+ /** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
36
+ * another store's would. */
33
37
  export function servedObjects(sync) {
34
38
  return {
35
39
  listObjects: async (tenantId, kind, query) => sync.listObjects(tenantId, kind, query),
@@ -41,18 +45,22 @@ export function servedObjects(sync) {
41
45
  policiesInForce: async (tenantId, query) => sync.policiesInForce(tenantId, query),
42
46
  activeSkillsByName: async (tenantId, limit) => sync.activeSkillsByName(tenantId, limit),
43
47
  briefReceipts: async (tenantId, tag, limit) => sync.briefReceipts(tenantId, tag, limit),
48
+ objectIdByMemory: async (tenantId, kind, status, memoryId) => sync.objectIdByMemory(tenantId, kind, status, memoryId),
44
49
  };
45
50
  }
46
51
  /** The newest object in `status` that a memory mirrors, for the CLI flags that name an object by its memory id. */
47
- export function objectIdByMemory(hippoRoot, tenantId, kind, status, memoryId) {
48
- return onHandle(hippoRoot, (db) => {
49
- const row = db.prepare(`SELECT id FROM ${rowSpec(kind).table} WHERE memory_id = ? AND tenant_id = ? AND status = ? ORDER BY id DESC LIMIT 1`).get(memoryId, tenantId, status);
50
- return row ? row.id : null;
51
- });
52
+ function idByMemory(db, tenantId, kind, status, memoryId) {
53
+ const row = db
54
+ .prepare(`SELECT id FROM ${rowSpec(kind).table} WHERE memory_id = ? AND tenant_id = ? AND status = ? ORDER BY id DESC ` +
55
+ `LIMIT 1`)
56
+ .get(memoryId, tenantId, status);
57
+ return row ? row.id : null;
52
58
  }
53
59
  function selectRow(db, kind, tenantId, id) {
54
60
  const spec = rowSpec(kind);
55
- return db.prepare(`SELECT ${spec.cols} FROM ${spec.table} WHERE id = ? AND tenant_id = ?`).get(id, tenantId);
61
+ return db
62
+ .prepare(`SELECT ${spec.cols} FROM ${spec.table} WHERE id = ? AND tenant_id = ?`)
63
+ .get(id, tenantId);
56
64
  }
57
65
  function listRows(db, tenantId, kind, query) {
58
66
  const spec = rowSpec(kind);
@@ -68,29 +76,41 @@ function listRows(db, tenantId, kind, query) {
68
76
  }
69
77
  const after = keysetAfter('created_at', 'id', query.after);
70
78
  // SAFETY: the SELECT names spec.cols, the columns the kind's row declares, whatever the WHERE clause holds.
71
- const rows = db.prepare(`
79
+ const rows = db
80
+ .prepare(`
72
81
  SELECT ${spec.cols} FROM ${spec.table}
73
82
  WHERE ${clauses.join(' AND ')}${after.sql}
74
83
  ORDER BY created_at DESC, id DESC
75
84
  LIMIT ?
76
- `).all(...params, ...after.params, query.limit);
85
+ `)
86
+ .all(...params, ...after.params, query.limit);
77
87
  return rows.map((row) => spec.rowTo(row));
78
88
  }
79
89
  /** The status guard sits in the UPDATE, so zero rows changed means missing or not closable; the reread tells which. */
80
90
  function closeRow(db, tenantId, kind, id, close) {
81
91
  const spec = rowSpec(kind);
82
92
  return withWriteScopeOr(db, 'close_object', (rollback) => {
83
- const marks = close.from.map(() => '?').join(', ');
84
- const updated = db.prepare(`UPDATE ${spec.table} SET status = 'closed', closed_at = ? WHERE id = ? AND tenant_id = ? AND status IN (${marks})`).run(close.at, id, tenantId, ...close.from);
93
+ const marks = placeholders(close.from.length);
94
+ const updated = db
95
+ .prepare(`UPDATE ${spec.table} SET status = 'closed', closed_at = ? WHERE id = ? AND tenant_id = ? AND status IN ` +
96
+ `(${marks})`)
97
+ .run(close.at, id, tenantId, ...close.from);
85
98
  if (updated.changes === 0) {
86
- const existing = db.prepare(`SELECT status FROM ${spec.table} WHERE id = ? AND tenant_id = ?`)
99
+ const existing = db
100
+ .prepare(`SELECT status FROM ${spec.table} WHERE id = ? AND tenant_id = ?`)
87
101
  .get(id, tenantId);
88
102
  return rollback(existing ? { refused: 'status', status: existing.status } : { refused: 'missing' });
89
103
  }
90
104
  const row = selectRow(db, kind, tenantId, id);
91
105
  if (!row)
92
106
  return rollback({ refused: 'vanished' });
93
- appendAuditEvent(db, { tenantId, actor: close.actor, op: spec.closeOp, targetId: String(id), metadata: { [spec.idKey]: id } });
107
+ appendAuditEvent(db, {
108
+ tenantId,
109
+ actor: close.actor,
110
+ op: spec.closeOp,
111
+ targetId: String(id),
112
+ metadata: { [spec.idKey]: id },
113
+ });
94
114
  return spec.rowTo(row);
95
115
  });
96
116
  }
@@ -109,7 +129,10 @@ function closeAt(hippoRoot, tenantId, kind, id, close) {
109
129
  }
110
130
  /** Runs before the INSERT, so the new row's id can never be the id it replaces. */
111
131
  function successorVersion(db, tenantId, kind, replaced) {
112
- const pred = db.prepare(`SELECT status, ${insertSpec(kind).versioned ? 'version' : '0 AS version'} FROM ${rowSpec(kind).table} WHERE id = ? AND tenant_id = ?`).get(replaced, tenantId);
132
+ const pred = db
133
+ .prepare(`SELECT status, ${insertSpec(kind).versioned ? 'version' : '0 AS version'} FROM ${rowSpec(kind).table} WHERE ` +
134
+ `id = ? AND tenant_id = ?`)
135
+ .get(replaced, tenantId);
113
136
  if (!pred)
114
137
  return { refused: 'missing' };
115
138
  if (pred.status !== 'active')
@@ -124,21 +147,27 @@ function insertRow(db, row) {
124
147
  cols.push('version', 'change_summary');
125
148
  values.push(row.version, row.save.supersedesId === undefined ? null : row.save.changeSummary ?? null);
126
149
  }
127
- const result = db.prepare(`
128
- INSERT INTO ${rowSpec(row.kind).table}(${cols.join(', ')}, status, superseded_by, superseded_at, closed_at, created_at)
129
- VALUES (${cols.map(() => '?').join(', ')}, 'active', NULL, NULL, NULL, ?)
130
- `).run(...values, row.save.at);
150
+ const result = db
151
+ .prepare(`
152
+ INSERT INTO ${rowSpec(row.kind).table}(${cols.join(', ')}, status, superseded_by, superseded_at, closed_at,
153
+ created_at)
154
+ VALUES (${placeholders(cols.length)}, 'active', NULL, NULL, NULL, ?)
155
+ `)
156
+ .run(...values, row.save.at);
131
157
  return Number(result.lastInsertRowid ?? 0);
132
158
  }
133
- /** The status guard sits in the UPDATE, so a row another writer retired since the preflight fails the whole save; false says so. */
159
+ /** The status guard sits in the UPDATE, so a row another writer
160
+ * retired since the preflight fails the whole save; false says so. */
134
161
  function supersedeRow(db, row, replaced, id) {
135
162
  const spec = rowSpec(row.kind);
136
163
  const insert = insertSpec(row.kind);
137
- const updated = db.prepare(`
164
+ const updated = db
165
+ .prepare(`
138
166
  UPDATE ${spec.table}
139
167
  SET status = 'superseded', superseded_by = ?, superseded_at = ?
140
168
  WHERE id = ? AND tenant_id = ? AND status = 'active' AND id != ?
141
- `).run(id, row.save.at, replaced, row.tenantId, id);
169
+ `)
170
+ .run(id, row.save.at, replaced, row.tenantId, id);
142
171
  if (updated.changes === 0)
143
172
  return false;
144
173
  const own = insert.versioned
@@ -153,7 +182,8 @@ function supersedeRow(db, row, replaced, id) {
153
182
  });
154
183
  return true;
155
184
  }
156
- /** The object half of a save, inside the scope that holds the mirror memory: a refusal or a throw here leaves no row, memory or audit event. */
185
+ /** The object half of a save, inside the scope that holds the mirror memory: a refusal or a throw here leaves no row,
186
+ * memory or audit event. */
157
187
  function writeObjectRow(db, tenantId, kind, memoryId, save) {
158
188
  const replaced = save.supersedesId;
159
189
  const next = replaced === undefined ? { version: 1 } : successorVersion(db, tenantId, kind, replaced);
@@ -186,7 +216,8 @@ function onStoreHalfLife(db, mirror) {
186
216
  const legacy = { ...mirror, half_life_days: deriveHalfLife(LEGACY_TYPED_HALF_LIFE, mirror) };
187
217
  return { ...legacy, strength: calculateStrength(legacy) };
188
218
  }
189
- /** One write scope on one handle holds the mirror, the row `writeRow` adds, the successor link and every audit row, the mirror's remember row last. */
219
+ /** One write scope on one handle holds the mirror, the row `writeRow` adds, the successor link and every audit row, the
220
+ * mirror's remember row last. */
190
221
  function withMirror(hippoRoot, write, writeRow) {
191
222
  return onHandle(hippoRoot, (db) => auditingRefusal(db, write.actor, () => {
192
223
  let mirror = stampOriginProject(hippoRoot, write.mirror);
@@ -210,24 +241,38 @@ function withMirror(hippoRoot, write, writeRow) {
210
241
  }
211
242
  function saveAt(hippoRoot, tenantId, kind, save) {
212
243
  const spec = rowSpec(kind);
213
- const write = { mirror: save.mirror, actor: save.actor, graphTenant: spec.graphType ? tenantId : undefined };
244
+ const write = {
245
+ mirror: save.mirror,
246
+ actor: save.actor,
247
+ graphTenant: spec.graphType ? tenantId : undefined,
248
+ };
214
249
  const written = withMirror(hippoRoot, write, (db, memoryId) => writeObjectRow(db, tenantId, kind, memoryId, save));
215
250
  return isObjectRefusal(written) ? written : spec.rowTo(written);
216
251
  }
217
252
  /** The linked ids are checked once the mirror is in and before the INSERT, so a refusal undoes the mirror with it. */
218
253
  function openIncidentRow(db, tenantId, memoryId, open) {
219
254
  const { incidentText, context, linkedMemoryIds } = open.fields;
220
- for (const linkId of linkedMemoryIds) {
221
- const held = db.prepare(`SELECT id FROM memories WHERE id = ? AND tenant_id = ?`).get(linkId, tenantId);
222
- if (!held)
223
- return { refused: 'unlinked', memoryId: linkId };
255
+ const held = new Set();
256
+ for (const ids of chunked(linkedMemoryIds)) {
257
+ const marks = placeholders(ids.length);
258
+ // SAFETY: rows' shape matches the one column named in the SELECT.
259
+ const found = db
260
+ .prepare(`SELECT id FROM memories WHERE tenant_id = ? AND id IN (${marks})`)
261
+ .all(tenantId, ...ids);
262
+ for (const r of found)
263
+ held.add(r.id);
224
264
  }
225
- const result = db.prepare(`
265
+ const missing = linkedMemoryIds.find((linkId) => !held.has(linkId));
266
+ if (missing !== undefined)
267
+ return { refused: 'unlinked', memoryId: missing };
268
+ const result = db
269
+ .prepare(`
226
270
  INSERT INTO incidents(
227
271
  memory_id, tenant_id, incident_text, context,
228
272
  status, resolution_text, resolved_at, closed_at, linked_memory_ids, created_at
229
273
  ) VALUES (?, ?, ?, ?, 'open', NULL, NULL, NULL, ?, ?)
230
- `).run(memoryId, tenantId, incidentText, context ?? null, JSON.stringify(linkedMemoryIds), open.at);
274
+ `)
275
+ .run(memoryId, tenantId, incidentText, context ?? null, JSON.stringify(linkedMemoryIds), open.at);
231
276
  const id = Number(result.lastInsertRowid ?? 0);
232
277
  const row = selectRow(db, 'incident', tenantId, id);
233
278
  if (!row)
@@ -237,7 +282,11 @@ function openIncidentRow(db, tenantId, memoryId, open) {
237
282
  actor: open.actor,
238
283
  op: 'incident_open',
239
284
  targetId: String(id),
240
- metadata: { incident_id: id, has_context: context !== undefined && context !== '', linked_memory_count: linkedMemoryIds.length },
285
+ metadata: {
286
+ incident_id: id,
287
+ has_context: context !== undefined && context !== '',
288
+ linked_memory_count: linkedMemoryIds.length,
289
+ },
241
290
  });
242
291
  return row;
243
292
  }
@@ -249,24 +298,34 @@ function openIncidentAt(hippoRoot, tenantId, open) {
249
298
  /** The status guard sits in the UPDATE, so zero rows changed means missing or not open; the reread tells which. */
250
299
  function resolveRow(db, tenantId, id, resolve) {
251
300
  return withWriteScopeOr(db, 'resolve_incident', (rollback) => {
252
- const updated = db.prepare(`
301
+ const updated = db
302
+ .prepare(`
253
303
  UPDATE incidents
254
304
  SET status = 'resolved', resolution_text = ?, resolved_at = ?
255
305
  WHERE id = ? AND tenant_id = ? AND status = 'open'
256
- `).run(resolve.text, resolve.at, id, tenantId);
306
+ `)
307
+ .run(resolve.text, resolve.at, id, tenantId);
257
308
  if (updated.changes === 0) {
258
- const existing = db.prepare(`SELECT status FROM incidents WHERE id = ? AND tenant_id = ?`)
309
+ const existing = db
310
+ .prepare(`SELECT status FROM incidents WHERE id = ? AND tenant_id = ?`)
259
311
  .get(id, tenantId);
260
312
  return rollback(existing ? { refused: 'status', status: existing.status } : { refused: 'missing' });
261
313
  }
262
314
  const row = selectRow(db, 'incident', tenantId, id);
263
315
  if (!row)
264
316
  return rollback({ refused: 'vanished' });
265
- appendAuditEvent(db, { tenantId, actor: resolve.actor, op: 'incident_resolve', targetId: String(id), metadata: { incident_id: id } });
317
+ appendAuditEvent(db, {
318
+ tenantId,
319
+ actor: resolve.actor,
320
+ op: 'incident_resolve',
321
+ targetId: String(id),
322
+ metadata: { incident_id: id },
323
+ });
266
324
  return rowSpec('incident').rowTo(row);
267
325
  });
268
326
  }
269
- /** The successor is joined in so a superseded version is kept only while the row that replaced it is not yet in force. */
327
+ /** The successor is joined in so a superseded version is kept
328
+ * only while the row that replaced it is not yet in force. */
270
329
  function policiesInForce(db, tenantId, query) {
271
330
  const { asOf, name } = query;
272
331
  const nameClause = name !== undefined ? 'AND p.policy_name = ?' : '';
@@ -1,5 +1,6 @@
1
1
  import type { Predictions, Sync } from '../port.js';
2
2
  export declare function sqlitePredictions(hippoRoot: string): Sync<Predictions>;
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 servedPredictions(sync: Sync<Predictions>): Predictions;
5
6
  //# sourceMappingURL=predictions-group.d.ts.map
@@ -1,4 +1,5 @@
1
- // hippo.db's half of the Predictions store group: each method is one call into the queries the CLI and the MCP tools run.
1
+ // hippo.db's half of the Predictions store group: each method is one call into the queries the CLI and the MCP tools
2
+ // run.
2
3
  import { closePrediction, computePredictionBaserate, loadAllPredictions, loadOpenPredictions, loadPredictionById, loadPredictionsByClass, writePrediction, } from '../predictions.js';
3
4
  export function sqlitePredictions(hippoRoot) {
4
5
  return {
@@ -15,7 +16,8 @@ export function sqlitePredictions(hippoRoot) {
15
16
  predictionBaserate: (tenantId, classTag, actor) => computePredictionBaserate(hippoRoot, tenantId, classTag, actor),
16
17
  };
17
18
  }
18
- /** 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. */
19
+ /** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
20
+ * another store's would. */
19
21
  export function servedPredictions(sync) {
20
22
  return {
21
23
  savePrediction: async (tenantId, input, actor) => sync.savePrediction(tenantId, input, actor),
@@ -0,0 +1,3 @@
1
+ import type { Promotion } from '../port/promotion.js';
2
+ export declare function sqlitePromotion(hippoRoot: string): Promotion;
3
+ //# sourceMappingURL=promotion-group.d.ts.map
@@ -0,0 +1,10 @@
1
+ // The built-in store's promotion: the two existing functions, bound to this hippo root.
2
+ import { copyToGlobal } from './global-promote.js';
3
+ import { memoryReach } from '../tenant-lookup.js';
4
+ export function sqlitePromotion(hippoRoot) {
5
+ return {
6
+ reach: (id) => memoryReach(hippoRoot, id),
7
+ copyToGlobal: (id, opts) => copyToGlobal(hippoRoot, id, opts),
8
+ };
9
+ }
10
+ //# sourceMappingURL=promotion-group.js.map
@@ -1,5 +1,6 @@
1
1
  import type { Quarantine, Sync } from '../port.js';
2
2
  export declare function sqliteQuarantine(hippoRoot: string): Sync<Quarantine>;
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 servedQuarantine(sync: Sync<Quarantine>): Quarantine;
5
6
  //# sourceMappingURL=quarantine-group.d.ts.map
@@ -4,7 +4,8 @@ import { readEntry } from '../entry-reads.js';
4
4
  import { writeEntryMirrors } from '../entry-writes.js';
5
5
  import { onHandle } from '../open.js';
6
6
  import { approveQuarantinedAt, listQuarantinedAt, rejectQuarantinedAt } from '../quarantine.js';
7
- /** After the commit, best effort: a failed rewrite leaves the markdown mirror showing the quarantine scope, which still hides the memory. */
7
+ /** After the commit, best effort: a failed rewrite leaves the markdown mirror showing the quarantine scope, which still
8
+ * hides the memory. */
8
9
  function rewriteMirror(hippoRoot, tenantId, id) {
9
10
  try {
10
11
  const restored = readEntry(hippoRoot, id, tenantId);
@@ -27,7 +28,8 @@ export function sqliteQuarantine(hippoRoot) {
27
28
  rejectQuarantined: (tenantId, id, actor) => onHandle(hippoRoot, (db) => rejectQuarantinedAt(db, tenantId, id, actor)),
28
29
  };
29
30
  }
30
- /** 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. */
31
+ /** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
32
+ * another store's would. */
31
33
  export function servedQuarantine(sync) {
32
34
  return {
33
35
  listQuarantined: async (tenantId, query) => sync.listQuarantined(tenantId, query),
@@ -0,0 +1,6 @@
1
+ import type { Reports } from '../port-groups.js';
2
+ import type { Sync } from '../port.js';
3
+ export declare function sqliteReports(hippoRoot: string): Sync<Reports>;
4
+ /** The group as a served store answers it: a throw rejects as another store's would. */
5
+ export declare function servedReports(sync: Sync<Reports>): Reports;
6
+ //# sourceMappingURL=reports-group.d.ts.map