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
@@ -1,12 +1,12 @@
1
1
  // Session context assembly under a token budget.
2
- import { requireGroup, storeFor } from '../store/index.js';
3
2
  import { estimateTokens } from '../util/token-text.js';
4
3
  import { passesScopeFilterForRecall, assertScopeRequestAllowed, personalScopeOf } from '../core/recall-scope.js';
5
4
  import { classifyOriginProject, projectNames } from '../core/project-identity.js';
6
5
  const DEFAULT_FRESH_TAIL_COUNT = 10;
7
6
  const DEFAULT_ROW_CAP = 5000;
8
7
  export const DEFAULT_ASSEMBLE_BUDGET = 4000;
9
- /** Chronological context window for a session; over budget, evicts the lowest-strength non-fresh-tail item first (fresh tail is never evicted).
8
+ /** Chronological context window for a session; over budget, evicts the lowest-strength non-fresh-tail item first (fresh
9
+ * tail is never evicted).
10
10
  * Returns `items: []` for an empty sessionId, no raws, or when every row fails the scope/tenant filter. */
11
11
  export async function assemble(ctx, sessionId, opts = {}) {
12
12
  assertScopeRequestAllowed(ctx.actor, opts.scope);
@@ -43,7 +43,7 @@ export async function assemble(ctx, sessionId, opts = {}) {
43
43
  async function loadScopedRaws(ctx, sessionId, opts, own) {
44
44
  const rowCap = opts.rowCap ?? DEFAULT_ROW_CAP;
45
45
  const origins = opts.project ? projectNames(opts.project) : undefined;
46
- const dag = requireGroup(storeFor(ctx), 'dagReads');
46
+ const dag = ctx.store.dagReads;
47
47
  const rows = await dag.sessionRawEntries({ tenantId: ctx.tenantId, sessionId, cap: rowCap, origins });
48
48
  const truncated = rows.length === rowCap;
49
49
  // `scoped.length` under-counts a capped session, so totalRaw falls back to a COUNT below.
@@ -52,7 +52,13 @@ async function loadScopedRaws(ctx, sessionId, opts, own) {
52
52
  if (truncated) {
53
53
  // The COUNT applies the same default-deny scope rule in SQL, so a no-scope
54
54
  // caller cannot infer private rows by comparing totalRaw to items.length.
55
- totalRaw = await dag.sessionRawCount({ tenantId: ctx.tenantId, sessionId, scope: opts.scope, ownScope: own, origins });
55
+ totalRaw = await dag.sessionRawCount({
56
+ tenantId: ctx.tenantId,
57
+ sessionId,
58
+ scope: opts.scope,
59
+ ownScope: own,
60
+ origins,
61
+ });
56
62
  }
57
63
  else {
58
64
  totalRaw = scoped.length;
@@ -89,7 +95,7 @@ async function substituteSummaries(ctx, olderRows, scope, own, project) {
89
95
  }
90
96
  const eligibleParentIds = Array.from(olderByParent.keys()).filter((pid) => (olderByParent.get(pid)?.length ?? 0) >= 2);
91
97
  const parents = eligibleParentIds.length > 0
92
- ? (await storeFor(ctx).entriesByIds(eligibleParentIds, ctx.tenantId))
98
+ ? (await ctx.store.entriesByIds(eligibleParentIds, ctx.tenantId))
93
99
  .filter((p) => (p.dag_level ?? 0) === 2 && !p.superseded_by)
94
100
  .filter((p) => passesScopeFilterForRecall(p.scope ?? null, scope, own))
95
101
  .filter((p) => !project || classifyOriginProject(p.origin_project, project) !== 'cross-project')
@@ -1,8 +1,8 @@
1
- import { type AuditEvent, type AuditOp } from '../store/audit.js';
2
- import { type AuditIssue, type AuditResult } from '../core/memory-audit.js';
3
- import { type QualityRepairResult } from '../store/quality-repair.js';
4
- import type { KeysetPosition } from '../util/keyset.js';
5
- import type { Context } from './types.js';
1
+ import type { AuditEvent, AuditOp } from '../../store/audit.js';
2
+ import { type AuditIssue, type AuditResult } from '../../core/memory-audit.js';
3
+ import type { QualityRepairResult } from '../../store/quality-repair.js';
4
+ import type { KeysetPosition } from '../../util/keyset.js';
5
+ import type { ContextWith } from '../types.js';
6
6
  export interface AuditListOpts {
7
7
  op?: AuditOp;
8
8
  /** ISO timestamp lower bound. */
@@ -12,17 +12,19 @@ export interface AuditListOpts {
12
12
  after?: KeysetPosition;
13
13
  }
14
14
  /** Read audit events scoped to `ctx.tenantId` on the store the request runs on. Read-only, no audit emit. */
15
- export declare function auditList(ctx: Context, opts: AuditListOpts): Promise<AuditEvent[]>;
15
+ export declare function auditList(ctx: ContextWith<'auditLog'>, opts: AuditListOpts): Promise<AuditEvent[]>;
16
16
  /** The pass that removes audit errors; it leads the reason on each forget row. */
17
17
  export type AuditPass = 'audit --fix' | 'sleep-audit';
18
- /** Delete the memories an audit marked as errors, each with its own forget row, and answer the ids that went: a pinned or raw row stays. */
19
- export declare function removeAuditErrors(ctx: Context, pass: AuditPass, issues: readonly AuditIssue[]): string[];
18
+ /** Delete the memories an audit marked as errors, each with its own forget row, and answer the ids that went: a pinned
19
+ * or raw row stays. */
20
+ export declare function removeAuditErrors(ctx: ContextWith<'auditMaintenance'>, pass: AuditPass, issues: readonly AuditIssue[]): Promise<string[]>;
20
21
  /** The caller's memories run through the quality audit; a memory that backs an object is never marked for removal. */
21
- export declare function auditMemoryQuality(ctx: Context): AuditResult;
22
- /** Audit repair for the caller's tenant: a preview, or with `apply` the moves of certain defects to dormant storage behind a backup. */
23
- export declare function repairMemoryQuality(ctx: Context, apply: boolean): QualityRepairResult;
22
+ export declare function auditMemoryQuality(ctx: ContextWith<'auditMaintenance'>): Promise<AuditResult>;
23
+ /** Audit repair for the caller's tenant: a preview, or with `apply` the moves of certain defects to dormant storage
24
+ * behind a backup. */
25
+ export declare function repairMemoryQuality(ctx: ContextWith<'auditMaintenance'>, apply: boolean): Promise<QualityRepairResult>;
24
26
  /** The repair sleep and the daily runner apply once per store after an upgrade; null when it already ran there. */
25
- export declare function repairMemoryQualityOnce(ctx: Context): QualityRepairResult | null;
27
+ export declare function repairMemoryQualityOnce(ctx: ContextWith<'auditMaintenance'>): Promise<QualityRepairResult | null>;
26
28
  export interface PruneAuditOpts {
27
29
  /** Cutoff in days. Rows with `ts < (now - N days)` are deleted. */
28
30
  olderThanDays: number;
@@ -39,8 +41,8 @@ export interface PruneAuditResult {
39
41
  }
40
42
  /** Cutoff ISO timestamp for N days ago; exported so tests can pin "now" without mocking Date. */
41
43
  export declare function computeCutoff(days: number, now?: Date): string;
42
- /** Delete the caller's tenant's audit_log rows older than `olderThanDays`, then record an `audit_prune` row as `ctx.actor`; opt-in, since
43
- * retention floors (HIPAA, SOX, GDPR) apply. The row is written after the DELETE, so a call never prunes its own record.
44
- * Throws on non-positive days or an empty tenant. */
45
- export declare function pruneAuditLog(ctx: Context, opts: PruneAuditOpts): PruneAuditResult;
44
+ /** Delete the caller's tenant's audit_log rows older than `olderThanDays`, then record an `audit_prune` row as
45
+ * `ctx.actor`; opt-in, since retention floors (HIPAA, SOX, GDPR) apply. The row is written after the DELETE, so a call
46
+ * never prunes its own record. Throws on non-positive days or an empty tenant. */
47
+ export declare function pruneAuditLog(ctx: ContextWith<'auditMaintenance'>, opts: PruneAuditOpts): Promise<PruneAuditResult>;
46
48
  //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1,58 @@
1
+ // Audit log queries and retention, and the memory-quality audit with its repair passes.
2
+ import { auditMemories } from '../../core/memory-audit.js';
3
+ import { DAY_MS } from '../../util/time.js';
4
+ /** Read audit events scoped to `ctx.tenantId` on the store the request runs on. Read-only, no audit emit. */
5
+ export async function auditList(ctx, opts) {
6
+ return ctx.store.auditLog.listAuditEvents({
7
+ tenantId: ctx.tenantId, op: opts.op, since: opts.since, limit: opts.limit, after: opts.after,
8
+ });
9
+ }
10
+ function maintenanceOf(ctx) {
11
+ return ctx.store.auditMaintenance;
12
+ }
13
+ /** Delete the memories an audit marked as errors, each with its own forget row, and answer the ids that went: a pinned
14
+ * or raw row stays. */
15
+ export async function removeAuditErrors(ctx, pass, issues) {
16
+ const removals = issues
17
+ .filter((issue) => issue.severity === 'error')
18
+ .map((issue) => ({ id: issue.memoryId, reason: `${pass}: ${issue.reason}` }));
19
+ if (removals.length === 0)
20
+ return [];
21
+ return maintenanceOf(ctx).deleteAutomatically(removals, ctx.actor.subject);
22
+ }
23
+ /** The caller's memories run through the quality audit; a memory that backs an object is never marked for removal. */
24
+ export async function auditMemoryQuality(ctx) {
25
+ const maintenance = maintenanceOf(ctx);
26
+ return auditMemories(await maintenance.tenantEntries(ctx.tenantId), await maintenance.objectBackedIds());
27
+ }
28
+ /** Audit repair for the caller's tenant: a preview, or with `apply` the moves of certain defects to dormant storage
29
+ * behind a backup. */
30
+ export async function repairMemoryQuality(ctx, apply) {
31
+ return maintenanceOf(ctx).repairQuality(ctx.tenantId, apply);
32
+ }
33
+ /** The repair sleep and the daily runner apply once per store after an upgrade; null when it already ran there. */
34
+ export async function repairMemoryQualityOnce(ctx) {
35
+ return maintenanceOf(ctx).repairQualityOnce(ctx.tenantId);
36
+ }
37
+ /** Cutoff ISO timestamp for N days ago; exported so tests can pin "now" without mocking Date. */
38
+ export function computeCutoff(days, now = new Date()) {
39
+ const cutoff = new Date(now.getTime() - days * DAY_MS);
40
+ return cutoff.toISOString();
41
+ }
42
+ /** Delete the caller's tenant's audit_log rows older than `olderThanDays`, then record an `audit_prune` row as
43
+ * `ctx.actor`; opt-in, since retention floors (HIPAA, SOX, GDPR) apply. The row is written after the DELETE, so a call
44
+ * never prunes its own record. Throws on non-positive days or an empty tenant. */
45
+ export async function pruneAuditLog(ctx, opts) {
46
+ if (!Number.isFinite(opts.olderThanDays) || opts.olderThanDays <= 0) {
47
+ throw new Error(`pruneAuditLog: olderThanDays must be a positive number, got ${opts.olderThanDays}`);
48
+ }
49
+ if (!ctx.tenantId) {
50
+ throw new Error('pruneAuditLog: tenantId is required');
51
+ }
52
+ const dryRun = opts.dryRun === true;
53
+ const cutoff = computeCutoff(opts.olderThanDays);
54
+ const prune = { tenantId: ctx.tenantId, cutoff, actor: ctx.actor.subject, olderThanDays: opts.olderThanDays, dryRun };
55
+ const count = await maintenanceOf(ctx).pruneAuditRows(prune);
56
+ return { cutoff, count, dryRun };
57
+ }
58
+ //# sourceMappingURL=audit.js.map
@@ -1,9 +1,10 @@
1
- import { DEFAULT_KEY_TTL_DAYS, type ApiKeyListItem, type ApiKeyListRow } from '../store/auth.js';
2
- import type { KeysetPosition } from '../util/keyset.js';
3
- import { type Context, type StoreReply } from './types.js';
1
+ import { DEFAULT_KEY_TTL_DAYS, type ApiKeyListItem, type ApiKeyListRow } from '../../store/auth.js';
2
+ import type { KeysetPosition } from '../../util/keyset.js';
3
+ import { type Context, type ContextWith, type StoreContext } from '../types.js';
4
4
  export interface AuthCreateOpts {
5
5
  label?: string;
6
- /** Defaults to `'member'`, which admin-gated routes such as `POST /v1/sleep` refuse; an admin key has to be asked for by name. */
6
+ /** Defaults to `'member'`, which admin-gated routes such as
7
+ * `POST /v1/sleep` refuse; an admin key has to be asked for by name. */
7
8
  role?: 'admin' | 'member';
8
9
  /** Days until the key expires: above 0 and at most 3650. Defaults to 90. */
9
10
  ttlDays?: number;
@@ -19,9 +20,10 @@ export interface AuthCreateResult {
19
20
  /** ISO time the key stops working; null for a key that never expires. */
20
21
  expiresAt: string | null;
21
22
  }
22
- /** Mints a key always bound to `ctx.tenantId`; opts cannot override the tenant, or tenant A could mint a key for tenant B.
23
- * Admin only (ForbiddenError otherwise), and a key never outranks its minter: a resolver admin is tenant-only, so it mints members. */
24
- export declare function authCreate<C extends Context>(ctx: C, opts: AuthCreateOpts): StoreReply<C, AuthCreateResult>;
23
+ /** Mints a key always bound to `ctx.tenantId`; opts cannot override the tenant, or
24
+ * tenant A could mint a key for tenant B. Admin only (ForbiddenError otherwise), and a
25
+ * key never outranks its minter: a resolver admin is tenant-only, so it mints members. */
26
+ export declare function authCreate(ctx: ContextWith<'keyWrites'>, opts: AuthCreateOpts): Promise<AuthCreateResult>;
25
27
  export { DEFAULT_KEY_TTL_DAYS };
26
28
  export declare const MAX_TTL_DAYS = 3650;
27
29
  export interface AuthCreateSelfOpts {
@@ -37,33 +39,34 @@ export interface AuthCreateSelfResult extends AuthCreateResult {
37
39
  }
38
40
  /** Mint a member key for the caller an auth resolver vouched for, whatever its role; the
39
41
  * binary floor, the cap's revokes, the mint and its audit rows commit or fail together. */
40
- export declare function authCreateSelf<C extends Context>(ctx: C, opts: AuthCreateSelfOpts): StoreReply<C, AuthCreateSelfResult>;
42
+ export declare function authCreateSelf(ctx: ContextWith<'keyWrites'>, opts: AuthCreateSelfOpts): Promise<AuthCreateSelfResult>;
41
43
  type KeyListOpts = {
42
44
  active: boolean;
43
45
  limit?: number;
44
46
  after?: KeysetPosition;
45
47
  };
46
48
  /** One page of the caller's tenant's keys, newest first, with the row ids a next-page cursor is built from. */
47
- export declare function authListRows<C extends Context>(ctx: C, opts: KeyListOpts): StoreReply<C, ApiKeyListRow[]>;
48
- /** Every tenant's keys in the store, live ones only unless `active` is false; the host's own view, so the host admin only. */
49
+ export declare function authListRows(ctx: ContextWith<'keyWrites'>, opts: KeyListOpts): Promise<ApiKeyListRow[]>;
50
+ /** Every tenant's keys in the store, live ones only unless
51
+ * `active` is false; the host's own view, so the host admin only. */
49
52
  export declare function authListAllTenants(ctx: Context, active: boolean): ApiKeyListItem[];
50
53
  export interface AuthRevokeResult {
51
54
  ok: true;
52
55
  revokedAt: string;
53
56
  }
54
- export type AuthRevokeReply<C extends Context> = StoreReply<C, AuthRevokeResult>;
55
- /** Revoke a key in the caller's tenant: a member API key may revoke only itself, a resolver member only the keys it minted.
57
+ /** Revoke a key in the caller's tenant: a member API key may revoke only itself, a resolver member only the keys it
58
+ * minted.
56
59
  * The revoke and its auth_revoke row commit together on either store, so a failed audit write leaves the key live. */
57
- export declare function authRevoke<C extends Context>(ctx: C, keyId: string): AuthRevokeReply<C>;
60
+ export declare function authRevoke(ctx: ContextWith<'keyAudit'>, keyId: string): Promise<AuthRevokeResult>;
58
61
  /** The tenant that owns `keyId`, or undefined for an unknown key. Host admin only: it reads across tenants,
59
62
  * so the local CLI can run revoke and grant in the key's own tenant. */
60
- export declare function authKeyTenant(ctx: Context, keyId: string): Promise<string | undefined>;
63
+ export declare function authKeyTenant(ctx: StoreContext, keyId: string): Promise<string | undefined>;
61
64
  /** Shared result shape for authGrant/authUngrant, named per the file's oxlint anti-slop rule. */
62
65
  export interface AuthGrantResult {
63
66
  ok: true;
64
67
  }
65
68
  /** Grant `keyId` read access to one restricted `scope`. Admin only. */
66
- export declare function authGrant(ctx: Context, keyId: string, scope: string): AuthGrantResult;
69
+ export declare function authGrant(ctx: ContextWith<'keyGrants'>, keyId: string, scope: string): Promise<AuthGrantResult>;
67
70
  /** Revoke `keyId`'s grant on `scope`. Same authorization and lookup rules as authGrant. */
68
- export declare function authUngrant(ctx: Context, keyId: string, scope: string): AuthGrantResult;
71
+ export declare function authUngrant(ctx: ContextWith<'keyGrants'>, keyId: string, scope: string): Promise<AuthGrantResult>;
69
72
  //# sourceMappingURL=auth.d.ts.map
@@ -1,25 +1,22 @@
1
1
  // API key management: create, list, revoke, and grant or ungrant restricted scopes.
2
- import { BadRequestError, ForbiddenError, NotFoundError } from '../core/api-errors.js';
3
- import { DEFAULT_KEY_TTL_DAYS, listApiKeys, mintApiKey, } from '../store/auth.js';
4
- import { storeFor } from '../store/index.js';
5
- import { changeScopeGrant } from '../store/sqlite/local.js';
6
- import { DAY_MS } from '../util/time.js';
7
- import { andThen, notPorted, onStore } from './on-store.js';
8
- import { requireHostAdmin } from './types.js';
2
+ import { BadRequestError, ForbiddenError, NotFoundError } from '../../core/api-errors.js';
3
+ import { DEFAULT_KEY_TTL_DAYS, listApiKeys, mintApiKey, } from '../../store/auth.js';
4
+ import { DAY_MS } from '../../util/time.js';
5
+ import { requireHostAdmin } from '../types.js';
9
6
  const API_KEY_SUBJECT = 'api_key:';
10
7
  /** The key id an API-key actor's subject names, or null for any other actor. */
11
8
  function keyIdOfSubject(subject) {
12
9
  return subject.startsWith(API_KEY_SUBJECT) ? subject.slice(API_KEY_SUBJECT.length) : null;
13
10
  }
14
- /** Mints a key always bound to `ctx.tenantId`; opts cannot override the tenant, or tenant A could mint a key for tenant B.
15
- * Admin only (ForbiddenError otherwise), and a key never outranks its minter: a resolver admin is tenant-only, so it mints members. */
16
- export function authCreate(ctx, opts) {
17
- // The key and its auth_create row commit together on either store, so a failed audit write leaves no key.
18
- return onStore(ctx, (port) => {
19
- const keyWrites = port.keyWrites ?? notPorted(port, 'keyWrites');
20
- const { plaintext, mint } = adminKeyMint(ctx, opts);
21
- return andThen(keyWrites.createApiKey(mint), () => createResult(mint, plaintext));
22
- });
11
+ /** Mints a key always bound to `ctx.tenantId`; opts cannot override the tenant, or
12
+ * tenant A could mint a key for tenant B. Admin only (ForbiddenError otherwise), and a
13
+ * key never outranks its minter: a resolver admin is tenant-only, so it mints members. */
14
+ export async function authCreate(ctx, opts) {
15
+ // The key and its auth_create row commit together on every store, so a failed audit write leaves no key.
16
+ const keyWrites = ctx.store.keyWrites;
17
+ const { plaintext, mint } = adminKeyMint(ctx, opts);
18
+ await keyWrites.createApiKey(mint);
19
+ return createResult(mint, plaintext);
23
20
  }
24
21
  /** A key row in the caller's tenant, made here so only its hash ever reaches a store. */
25
22
  function newKey(ctx, fields) {
@@ -59,7 +56,8 @@ function adminKeyMint(ctx, opts) {
59
56
  function createResult({ key }, plaintext) {
60
57
  return { keyId: key.keyId, plaintext, tenantId: key.tenantId, role: key.role, expiresAt: key.expiresAt };
61
58
  }
62
- /** A RangeError, not a 4xx, since the operator's config sets these; the ttl ceiling keeps toISOString in range and a departed user's key short-lived. */
59
+ /** A RangeError, not a 4xx, since the operator's config sets these; the ttl ceiling keeps toISOString in range and a
60
+ * departed user's key short-lived. */
63
61
  function assertSelfMintOpts({ ttlDays, perSubject }) {
64
62
  if (!Number.isFinite(ttlDays) || ttlDays <= 0 || ttlDays > MAX_TTL_DAYS) {
65
63
  throw new RangeError(`authCreateSelf: ttlDays must be above 0 and at most ${MAX_TTL_DAYS}, got ${String(ttlDays)}`);
@@ -70,12 +68,11 @@ function assertSelfMintOpts({ ttlDays, perSubject }) {
70
68
  }
71
69
  /** Mint a member key for the caller an auth resolver vouched for, whatever its role; the
72
70
  * binary floor, the cap's revokes, the mint and its audit rows commit or fail together. */
73
- export function authCreateSelf(ctx, opts) {
74
- return onStore(ctx, (port) => {
75
- const keyWrites = port.keyWrites ?? notPorted(port, 'keyWrites');
76
- const { plaintext, mint } = selfKeyMint(ctx, opts);
77
- return andThen(keyWrites.createSelfApiKey(mint), () => selfResult(mint, plaintext));
78
- });
71
+ export async function authCreateSelf(ctx, opts) {
72
+ const keyWrites = ctx.store.keyWrites;
73
+ const { plaintext, mint } = selfKeyMint(ctx, opts);
74
+ await keyWrites.createSelfApiKey(mint);
75
+ return selfResult(mint, plaintext);
79
76
  }
80
77
  function selfKeyMint(ctx, opts) {
81
78
  if (!ctx.actor.viaAuthResolver) {
@@ -90,34 +87,40 @@ function selfKeyMint(ctx, opts) {
90
87
  // Same op and actor as an admin mint, so a lookup by audit row finds this key too.
91
88
  return {
92
89
  plaintext: made.plaintext,
93
- mint: { key: made.key, actor: subject, metadata: { label, role: 'member', self: true, expiresAt }, perSubject: opts.perSubject }
90
+ mint: {
91
+ key: made.key,
92
+ actor: subject,
93
+ metadata: { label, role: 'member', self: true, expiresAt },
94
+ perSubject: opts.perSubject,
95
+ },
94
96
  };
95
97
  }
96
98
  function selfResult({ key }, plaintext) {
97
99
  return { keyId: key.keyId, plaintext, tenantId: key.tenantId, role: 'member', expiresAt: key.expiresAt };
98
100
  }
99
101
  /** One page of the caller's tenant's keys, newest first, with the row ids a next-page cursor is built from. */
100
- export function authListRows(ctx, opts) {
101
- return onStore(ctx, (port) => listRows(ctx, port, opts));
102
+ export async function authListRows(ctx, opts) {
103
+ return listRows(ctx, ctx.store, opts);
102
104
  }
103
- /** Every tenant's keys in the store, live ones only unless `active` is false; the host's own view, so the host admin only. */
105
+ /** Every tenant's keys in the store, live ones only unless
106
+ * `active` is false; the host's own view, so the host admin only. */
104
107
  export function authListAllTenants(ctx, active) {
105
108
  requireHostAdmin(ctx, "Listing every tenant's keys");
106
109
  return listApiKeys(ctx.hippoRoot, { active });
107
110
  }
108
- function listRows(ctx, port, opts) {
109
- const keyWrites = port.keyWrites ?? notPorted(port, 'keyWrites');
111
+ async function listRows(ctx, store, opts) {
112
+ const keyWrites = store.keyWrites;
110
113
  const keyId = memberKeyIdOf(ctx.actor);
111
- return andThen(keyId === null ? undefined : port.findApiKey(keyId), (record) => {
112
- const filter = memberListFilter(ctx.actor, record?.ownerSubject);
113
- return filter === null ? [] : keyWrites.listApiKeys({ ...opts, tenantId: ctx.tenantId, ...filter });
114
- });
114
+ const record = keyId === null ? undefined : await store.findApiKey(keyId);
115
+ const filter = memberListFilter(ctx.actor, record?.ownerSubject);
116
+ return filter === null ? [] : keyWrites.listApiKeys({ ...opts, tenantId: ctx.tenantId, ...filter });
115
117
  }
116
118
  /** The key id of a member API key caller, whose owner decides what it lists; null for any other caller. */
117
119
  function memberKeyIdOf(actor) {
118
120
  return actor.role === 'admin' || actor.viaAuthResolver ? null : keyIdOfSubject(actor.subject);
119
121
  }
120
- /** A member sees only the keys its person minted, or just its own key when that has no owner; an admin sees the whole tenant; null means no keys. */
122
+ /** A member sees only the keys its person minted, or just its own key when that has no owner; an admin sees the whole
123
+ * tenant; null means no keys. */
121
124
  function memberListFilter(actor, owner) {
122
125
  if (actor.role === 'admin')
123
126
  return {};
@@ -128,10 +131,13 @@ function memberListFilter(actor, owner) {
128
131
  return null;
129
132
  return owner ? { ownerSubject: owner } : { keyId };
130
133
  }
131
- /** Throws unless `ctx` may revoke `keyId`; a member gets one answer for a missing, foreign or unowned key, so it cannot probe key ids. */
134
+ /** Throws unless `ctx` may revoke `keyId`; a member gets one answer for a missing, foreign or unowned key, so it cannot
135
+ * probe key ids. */
132
136
  function assertMayRevoke(ctx, keyId, row) {
133
137
  const { actor } = ctx;
134
- if (actor.role !== 'admin' && actor.viaAuthResolver && (row?.tenantId !== ctx.tenantId || row.ownerSubject !== actor.subject)) {
138
+ if (actor.role !== 'admin' &&
139
+ actor.viaAuthResolver &&
140
+ (row?.tenantId !== ctx.tenantId || row.ownerSubject !== actor.subject)) {
135
141
  throw new ForbiddenError('A member can revoke only the keys it minted');
136
142
  }
137
143
  // Cross-tenant access denied: same message as missing key, no info leak.
@@ -142,18 +148,17 @@ function assertMayRevoke(ctx, keyId, row) {
142
148
  throw new ForbiddenError('An auth resolver admin cannot revoke an admin key, which outranks it');
143
149
  }
144
150
  }
145
- /** Revoke a key in the caller's tenant: a member API key may revoke only itself, a resolver member only the keys it minted.
151
+ /** Revoke a key in the caller's tenant: a member API key may revoke only itself, a resolver member only the keys it
152
+ * minted.
146
153
  * The revoke and its auth_revoke row commit together on either store, so a failed audit write leaves the key live. */
147
- export function authRevoke(ctx, keyId) {
148
- return onStore(ctx, (port) => {
149
- const keyAudit = port.keyAudit ?? notPorted(port, 'keyAudit');
150
- assertMemberKeyRevokesSelf(ctx, keyId);
151
- return andThen(port.findApiKey(keyId), (record) => {
152
- assertMayRevoke(ctx, keyId, keyOwnerOf(record));
153
- const revoke = { tenantId: ctx.tenantId, keyId, actor: ctx.actor.subject, at: new Date().toISOString() };
154
- return andThen(keyAudit.revokeApiKey(revoke), (revokedAt) => ({ ok: true, revokedAt }));
155
- });
156
- });
154
+ export async function authRevoke(ctx, keyId) {
155
+ const store = ctx.store;
156
+ const keyAudit = store.keyAudit;
157
+ assertMemberKeyRevokesSelf(ctx, keyId);
158
+ const record = await store.findApiKey(keyId);
159
+ assertMayRevoke(ctx, keyId, keyOwnerOf(record));
160
+ const revoke = { tenantId: ctx.tenantId, keyId, actor: ctx.actor.subject, at: new Date().toISOString() };
161
+ return { ok: true, revokedAt: await keyAudit.revokeApiKey(revoke) };
157
162
  }
158
163
  function assertMemberKeyRevokesSelf(ctx, keyId) {
159
164
  if (ctx.actor.role !== 'admin' && !ctx.actor.viaAuthResolver && keyIdOfSubject(ctx.actor.subject) !== keyId) {
@@ -161,7 +166,14 @@ function assertMemberKeyRevokesSelf(ctx, keyId) {
161
166
  }
162
167
  }
163
168
  function keyOwnerOf(record) {
164
- return record ? { tenantId: record.tenantId, revokedAt: record.revokedAt, role: record.role, ownerSubject: record.ownerSubject ?? null } : undefined;
169
+ return record
170
+ ? {
171
+ tenantId: record.tenantId,
172
+ revokedAt: record.revokedAt,
173
+ role: record.role,
174
+ ownerSubject: record.ownerSubject ?? null,
175
+ }
176
+ : undefined;
165
177
  }
166
178
  /** The tenant that owns `keyId`, or undefined for an unknown key. Host admin only: it reads across tenants,
167
179
  * so the local CLI can run revoke and grant in the key's own tenant. */
@@ -169,22 +181,22 @@ export async function authKeyTenant(ctx, keyId) {
169
181
  if (!ctx.actor.hostAdmin) {
170
182
  throw new ForbiddenError('Only the host admin can look up a key across tenants');
171
183
  }
172
- return (await storeFor(ctx).findApiKey(keyId))?.tenantId;
184
+ return (await ctx.store.findApiKey(keyId))?.tenantId;
173
185
  }
174
186
  /** Grant `keyId` read access to one restricted `scope`. Admin only. */
175
- export function authGrant(ctx, keyId, scope) {
187
+ export async function authGrant(ctx, keyId, scope) {
176
188
  return changeGrant(ctx, keyId, scope, 'auth_grant');
177
189
  }
178
190
  /** Revoke `keyId`'s grant on `scope`. Same authorization and lookup rules as authGrant. */
179
- export function authUngrant(ctx, keyId, scope) {
191
+ export async function authUngrant(ctx, keyId, scope) {
180
192
  return changeGrant(ctx, keyId, scope, 'auth_ungrant');
181
193
  }
182
- /** hippo.db only: both callers are synchronous published functions, so no store's Promise can answer them. */
183
- function changeGrant(ctx, keyId, scope, op) {
194
+ async function changeGrant(ctx, keyId, scope, op) {
184
195
  if (ctx.actor.role !== 'admin') {
185
196
  throw new ForbiddenError('Only an admin key can change scope grants');
186
197
  }
187
- changeScopeGrant(ctx.hippoRoot, { tenantId: ctx.tenantId, keyId, scope, op, actor: ctx.actor.subject });
198
+ const change = { tenantId: ctx.tenantId, keyId, scope, op, actor: ctx.actor.subject };
199
+ await ctx.store.keyGrants.changeScopeGrant(change);
188
200
  return { ok: true };
189
201
  }
190
202
  //# sourceMappingURL=auth.js.map
@@ -1,6 +1,6 @@
1
- import type { QuarantineStatus } from '../store/quarantine.js';
2
- import type { KeysetPosition } from '../util/keyset.js';
3
- import type { Context } from './types.js';
1
+ import type { QuarantineStatus } from '../../store/quarantine.js';
2
+ import type { KeysetPosition } from '../../util/keyset.js';
3
+ import type { ContextWith } from '../types.js';
4
4
  export interface QuarantineListItem {
5
5
  id: string;
6
6
  originalScope: string | null;
@@ -12,13 +12,14 @@ export interface QuarantineListItem {
12
12
  contentPreview: string;
13
13
  }
14
14
  /** A tenant's quarantined memories, newest first. Default `status` is 'pending' (the review queue). */
15
- export declare function quarantineList(ctx: Context, opts?: {
15
+ export declare function quarantineList(ctx: ContextWith<'quarantine'>, opts?: {
16
16
  status?: QuarantineStatus | 'all';
17
17
  limit?: number;
18
18
  after?: KeysetPosition;
19
19
  }): Promise<QuarantineListItem[]>;
20
- /** Release a quarantined memory to its original scope. Admin only; the scope guard refuses a row moved since (mirrors restoreDormant). */
21
- export declare function quarantineApprove(ctx: Context, id: string): Promise<void>;
20
+ /** Release a quarantined memory to its original scope. Admin only; the
21
+ * scope guard refuses a row moved since (mirrors restoreDormant). */
22
+ export declare function quarantineApprove(ctx: ContextWith<'quarantine'>, id: string): Promise<void>;
22
23
  /** Keep a quarantined memory hidden for good. Admin only; the raw row is untouched (append-only). */
23
- export declare function quarantineReject(ctx: Context, id: string): Promise<void>;
24
+ export declare function quarantineReject(ctx: ContextWith<'quarantine'>, id: string): Promise<void>;
24
25
  //# sourceMappingURL=quarantine.d.ts.map
@@ -1,10 +1,9 @@
1
1
  // Quarantine review: list, approve and reject held memories.
2
- import { ConflictError, ForbiddenError, NotFoundError } from '../core/api-errors.js';
3
- import { requireGroup, storeFor } from '../store/index.js';
2
+ import { ConflictError, ForbiddenError, NotFoundError } from '../../core/api-errors.js';
4
3
  const QUARANTINE_PREVIEW_CHARS = 200;
5
4
  /** A tenant's quarantined memories, newest first. Default `status` is 'pending' (the review queue). */
6
5
  export async function quarantineList(ctx, opts = {}) {
7
- const rows = await requireGroup(storeFor(ctx), 'quarantine')
6
+ const rows = await ctx.store.quarantine
8
7
  .listQuarantined(ctx.tenantId, { status: opts.status ?? 'pending', limit: opts.limit, after: opts.after });
9
8
  return rows.map((row) => ({
10
9
  id: row.memoryId,
@@ -22,16 +21,18 @@ function refusalError(id, refusal) {
22
21
  return new NotFoundError(`not quarantined: ${id}`);
23
22
  return new ConflictError(`${id} is already ${refusal.status}`);
24
23
  }
25
- /** Release a quarantined memory to its original scope. Admin only; the scope guard refuses a row moved since (mirrors restoreDormant). */
24
+ /** Release a quarantined memory to its original scope. Admin only; the
25
+ * scope guard refuses a row moved since (mirrors restoreDormant). */
26
26
  export async function quarantineApprove(ctx, id) {
27
27
  if (ctx.actor.role !== 'admin') {
28
28
  throw new ForbiddenError('Only an admin key can approve a quarantined memory');
29
29
  }
30
- const result = await requireGroup(storeFor(ctx), 'quarantine').approveQuarantined(ctx.tenantId, id, ctx.actor.subject);
30
+ const result = await ctx.store.quarantine.approveQuarantined(ctx.tenantId, id, ctx.actor.subject);
31
31
  if (result.outcome === 'approved')
32
32
  return;
33
- if (result.outcome === 'scope_moved')
33
+ if (result.outcome === 'scope_moved') {
34
34
  throw new ConflictError(`memory ${id} scope changed since quarantine; refusing to approve`);
35
+ }
35
36
  throw refusalError(id, result);
36
37
  }
37
38
  /** Keep a quarantined memory hidden for good. Admin only; the raw row is untouched (append-only). */
@@ -39,7 +40,7 @@ export async function quarantineReject(ctx, id) {
39
40
  if (ctx.actor.role !== 'admin') {
40
41
  throw new ForbiddenError('Only an admin key can reject a quarantined memory');
41
42
  }
42
- const result = await requireGroup(storeFor(ctx), 'quarantine').rejectQuarantined(ctx.tenantId, id, ctx.actor.subject);
43
+ const result = await ctx.store.quarantine.rejectQuarantined(ctx.tenantId, id, ctx.actor.subject);
43
44
  if (result.outcome !== 'rejected')
44
45
  throw refusalError(id, result);
45
46
  }
@@ -0,0 +1,10 @@
1
+ import { type Context, type ContextWith } from '../types.js';
2
+ /**
3
+ * Binds `sessionId` to the caller's owner on first use; a session another owner holds is a 409, so the client can set
4
+ * it aside.
5
+ */
6
+ export declare function bindSessionOwner(ctx: Context, sessionId: string): void;
7
+ /** `bindSessionOwner` through the store's sessions group, for a caller whose store is not hippo.db; a failure rejects,
8
+ * never throws. */
9
+ export declare function bindSessionOwnerOn(ctx: ContextWith<'sessions'>, sessionId: string): Promise<void>;
10
+ //# sourceMappingURL=session-owners.d.ts.map
@@ -0,0 +1,35 @@
1
+ // A session id belongs to the first owner that binds it, so one developer's client cannot write into another's session.
2
+ import { ConflictError } from '../../core/api-errors.js';
3
+ import { ownerOrSubject } from '../types.js';
4
+ import { sessionOwnerOrBind } from '../../store/sessions.js';
5
+ import { assertTenantId } from '../../store/tenant.js';
6
+ import { DAY_MS } from '../../util/time.js';
7
+ /** Bindings older than this are pruned when a new session binds. */
8
+ const BINDING_RETENTION_DAYS = 90;
9
+ /**
10
+ * Binds `sessionId` to the caller's owner on first use; a session another owner holds is a 409, so the client can set
11
+ * it aside.
12
+ */
13
+ export function bindSessionOwner(ctx, sessionId) {
14
+ assertTenantId('bindSessionOwner', ctx.tenantId);
15
+ const owner = ownerOrSubject(ctx.actor);
16
+ const bound = sessionOwnerOrBind(ctx.hippoRoot, {
17
+ tenantId: ctx.tenantId,
18
+ sessionId,
19
+ owner,
20
+ retentionMs: BINDING_RETENTION_DAYS * DAY_MS,
21
+ });
22
+ if (bound !== owner)
23
+ throw new ConflictError('session id belongs to another caller');
24
+ }
25
+ /** `bindSessionOwner` through the store's sessions group, for a caller whose store is not hippo.db; a failure rejects,
26
+ * never throws. */
27
+ export async function bindSessionOwnerOn(ctx, sessionId) {
28
+ assertTenantId('bindSessionOwnerOn', ctx.tenantId);
29
+ const owner = ownerOrSubject(ctx.actor);
30
+ const retentionMs = BINDING_RETENTION_DAYS * DAY_MS;
31
+ const bound = await ctx.store.sessions.bindSessionOwner(ctx.tenantId, sessionId, owner, retentionMs);
32
+ if (bound !== owner)
33
+ throw new ConflictError('session id belongs to another caller');
34
+ }
35
+ //# sourceMappingURL=session-owners.js.map
@@ -46,7 +46,9 @@ export declare const DEFAULT_RECENT_FRACTION_THRESHOLD = 0.7;
46
46
  export declare const DEFAULT_MIN_RETURNED = 3;
47
47
  export declare const DEFAULT_MIN_POOL = 10;
48
48
  export declare const DEFAULT_MIN_OLDER_PASSED_OVER = 3;
49
- /** Returns an AvailabilityHint when the returned slice is recency-dominated, the pool skews older and older matches were passed over; else null.
49
+ /**
50
+ * Returns an AvailabilityHint when the returned slice is recency-dominated, the pool skews older and older matches were
51
+ * passed over; else null.
50
52
  * Entries with an unparseable `created` are dropped so a malformed row cannot poison the medians with NaN. */
51
53
  export declare function detectAvailabilityBias(opts: DetectAvailabilityBiasOpts): AvailabilityHint | null;
52
54
  //# sourceMappingURL=availability.d.ts.map
@@ -16,7 +16,9 @@ function parseTimestamps(refs) {
16
16
  .map((e) => ({ id: e.id, ts: Date.parse(e.created) }))
17
17
  .filter((e) => Number.isFinite(e.ts));
18
18
  }
19
- /** Returns an AvailabilityHint when the returned slice is recency-dominated, the pool skews older and older matches were passed over; else null.
19
+ /**
20
+ * Returns an AvailabilityHint when the returned slice is recency-dominated, the pool skews older and older matches were
21
+ * passed over; else null.
20
22
  * Entries with an unparseable `created` are dropped so a malformed row cannot poison the medians with NaN. */
21
23
  export function detectAvailabilityBias(opts) {
22
24
  const now = opts.now ?? Date.now();
@@ -0,0 +1,2 @@
1
+ export { isStoreBusy } from '../store/busy.js';
2
+ //# sourceMappingURL=busy.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { isStoreBusy } from '../store/busy.js';
2
+ //# sourceMappingURL=busy.js.map
@@ -0,0 +1,6 @@
1
+ export { hashQueryText } from './recall/finish.js';
2
+ export { sessionRing, shownRecallRows } from './recall/finish.js';
3
+ export { availabilityPool, cutoffClauses, detectRecallHints, shrinkToFit, suppressionSummary, tokenPurse, } from './recall/render.js';
4
+ export { handoffText, printedTokens, sessionTrailText, settleTokens, snapshotText } from './context-render.js';
5
+ export type { RankRecallResult, RankStage, RecallGraphHops, RecallGraphStream, RecallReranker, } from './recall/pipeline.js';
6
+ //# sourceMappingURL=cli-surface.d.ts.map
@@ -0,0 +1,6 @@
1
+ // The api internals the recall CLI reads; off api/index.ts because server.ts publishes names from that barrel.
2
+ export { hashQueryText } from './recall/finish.js';
3
+ export { sessionRing, shownRecallRows } from './recall/finish.js';
4
+ export { availabilityPool, cutoffClauses, detectRecallHints, shrinkToFit, suppressionSummary, tokenPurse, } from './recall/render.js';
5
+ export { handoffText, printedTokens, sessionTrailText, settleTokens, snapshotText } from './context-render.js';
6
+ //# sourceMappingURL=cli-surface.js.map
@@ -0,0 +1,5 @@
1
+ import { type HippoConfig } from '../core/config.js';
2
+ import type { Context } from './types.js';
3
+ /** The config a composition root set on the Context, else the store's own file; roots set it per command or request. */
4
+ export declare function configOf(ctx: Context): HippoConfig;
5
+ //# sourceMappingURL=config-of.d.ts.map