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,33 @@
1
+ // hippo.db's Reports group: the tenant reports and listings the status verbs print.
2
+ import { withReadSnapshot } from '../../db/index.js';
3
+ import { strengthTalliesAt } from '../candidates.js';
4
+ import { countOpenConflictsAt } from '../conflicts.js';
5
+ import { countAllEntries, loadEntriesPage } from '../entry-reads.js';
6
+ import { onHandle, openStore } from '../open.js';
7
+ import { failureLogSummary, tokenUseSummary } from '../usage-reports.js';
8
+ export function sqliteReports(hippoRoot) {
9
+ return {
10
+ tokenUse: (tenantId, sinceIso) => tokenUseSummary(hippoRoot, tenantId, sinceIso),
11
+ failures: (tenantId, sinceIso) => failureLogSummary(hippoRoot, tenantId, sinceIso),
12
+ memoryStatus(tenantId, now, atRiskBelow) {
13
+ // One snapshot, so the tallies and the conflict count never straddle another process's write.
14
+ return onHandle(hippoRoot, (db) => withReadSnapshot(db, () => ({
15
+ ...strengthTalliesAt(db, tenantId, now, atRiskBelow),
16
+ openConflicts: countOpenConflictsAt(db, tenantId),
17
+ })), openStore);
18
+ },
19
+ entriesPage: (tenantId, page) => loadEntriesPage(hippoRoot, tenantId ?? undefined, page),
20
+ countEntries: () => countAllEntries(hippoRoot),
21
+ };
22
+ }
23
+ /** The group as a served store answers it: a throw rejects as another store's would. */
24
+ export function servedReports(sync) {
25
+ return {
26
+ tokenUse: async (tenantId, sinceIso) => sync.tokenUse(tenantId, sinceIso),
27
+ failures: async (tenantId, sinceIso) => sync.failures(tenantId, sinceIso),
28
+ memoryStatus: async (tenantId, now, atRiskBelow) => sync.memoryStatus(tenantId, now, atRiskBelow),
29
+ entriesPage: async (tenantId, page) => sync.entriesPage(tenantId, page),
30
+ countEntries: async () => sync.countEntries(),
31
+ };
32
+ }
33
+ //# sourceMappingURL=reports-group.js.map
@@ -0,0 +1,6 @@
1
+ export type RequestPreset = 'cli' | 'hook' | 'server';
2
+ /** Runs `fn` with one store handle per store, closed with it, at the root's lock wait. */
3
+ export declare function runSqliteRequest<T>(fn: () => T | Promise<T>, preset: RequestPreset): Promise<T>;
4
+ /** A scope of its own: the caller closes a handle the work holds across its pauses; the lock wait carries over. */
5
+ export declare function runDetachedSqliteRequest<T>(fn: () => T | Promise<T>): Promise<T>;
6
+ //# sourceMappingURL=request-scope.d.ts.map
@@ -0,0 +1,18 @@
1
+ // The request-scope plumbing the composition roots (cli, server, stdio MCP) run their requests in.
2
+ import { HOOK_DB_WAIT_MS, outsideRequestStores, runWithRequestStores, scopedBusyWait, SERVER_DB_WAIT_MS, } from '../../db/index.js';
3
+ /** Lock wait per root; a hook also skips later writes once one wait runs out, so it never stalls its host. */
4
+ const PRESETS = {
5
+ cli: {},
6
+ hook: { busyWaitMs: HOOK_DB_WAIT_MS, failFastWhenBusy: true },
7
+ server: { busyWaitMs: SERVER_DB_WAIT_MS },
8
+ };
9
+ /** Runs `fn` with one store handle per store, closed with it, at the root's lock wait. */
10
+ export function runSqliteRequest(fn, preset) {
11
+ return runWithRequestStores(fn, PRESETS[preset]);
12
+ }
13
+ /** A scope of its own: the caller closes a handle the work holds across its pauses; the lock wait carries over. */
14
+ export function runDetachedSqliteRequest(fn) {
15
+ const busyWaitMs = scopedBusyWait();
16
+ return outsideRequestStores(() => runWithRequestStores(fn, { busyWaitMs }));
17
+ }
18
+ //# sourceMappingURL=request-scope.js.map
@@ -0,0 +1,6 @@
1
+ import type { Sessions } from '../port-groups.js';
2
+ import type { Sync } from '../port.js';
3
+ export declare function sqliteSessions(hippoRoot: string): Sync<Sessions>;
4
+ /** The group as a served store answers it: a throw rejects as another store's would. */
5
+ export declare function servedSessions(sync: Sync<Sessions>): Sessions;
6
+ //# sourceMappingURL=sessions-group.d.ts.map
@@ -0,0 +1,46 @@
1
+ // hippo.db's Sessions group: snapshots, session events, handoffs, working memory and session-owner binding.
2
+ import { loadHandoffById, loadLatestHandoff, saveSessionHandoff, stampHandoffOutcome, writeSessionEndHandoff, } from '../handoffs.js';
3
+ import { appendSessionEvent, clearActiveTaskSnapshot, closeTaskSnapshotsForSession, listSessionEvents, loadActiveTaskSnapshot, loadFreshActiveTaskSnapshot, saveActiveTaskSnapshot, sessionOwnerOrBind, } from '../sessions.js';
4
+ import { wmClear, wmPush, wmRead } from '../working-memory.js';
5
+ export function sqliteSessions(hippoRoot) {
6
+ return {
7
+ saveSnapshot: (tenantId, snapshot, key) => saveActiveTaskSnapshot(hippoRoot, tenantId, snapshot, key ?? undefined),
8
+ loadSnapshot: (tenantId, key) => loadActiveTaskSnapshot(hippoRoot, tenantId, key ?? undefined),
9
+ loadFreshSnapshot: (tenantId, opts, key) => loadFreshActiveTaskSnapshot(hippoRoot, tenantId, opts, key ?? undefined),
10
+ clearSnapshot: (tenantId, clearedStatus) => clearActiveTaskSnapshot(hippoRoot, tenantId, clearedStatus),
11
+ closeSessionSnapshots: (tenantId, sessionId, status, key) => closeTaskSnapshotsForSession(hippoRoot, tenantId, sessionId, status, key ?? undefined),
12
+ appendEvent: (tenantId, event) => appendSessionEvent(hippoRoot, tenantId, event),
13
+ listEvents: (tenantId, { sessionId, task, limit }) => listSessionEvents(hippoRoot, tenantId, { session_id: sessionId, task, limit }),
14
+ saveHandoff: (tenantId, handoff, key) => saveSessionHandoff(hippoRoot, tenantId, handoff, key ?? undefined),
15
+ latestHandoff: (tenantId, sessionId, filter, key) => loadLatestHandoff(hippoRoot, tenantId, sessionId ?? undefined, filter, key ?? undefined),
16
+ handoffById: (tenantId, id) => loadHandoffById(hippoRoot, tenantId, id),
17
+ stampHandoffOutcome: (tenantId, sessionId, outcome) => stampHandoffOutcome(hippoRoot, tenantId, sessionId, outcome),
18
+ writeSessionEndHandoff: (tenantId, request) => writeSessionEndHandoff(hippoRoot, { ...request, tenantId }),
19
+ pushWorkingMemory: (tenantId, item) => wmPush(hippoRoot, { ...item, tenantId }),
20
+ readWorkingMemory: (tenantId, filter) => wmRead(hippoRoot, { ...filter, tenantId }),
21
+ clearWorkingMemory: (tenantId, filter) => wmClear(hippoRoot, { ...filter, tenantId }),
22
+ bindSessionOwner: (tenantId, sessionId, owner, retentionMs) => sessionOwnerOrBind(hippoRoot, { tenantId, sessionId, owner, retentionMs }),
23
+ };
24
+ }
25
+ /** The group as a served store answers it: a throw rejects as another store's would. */
26
+ export function servedSessions(sync) {
27
+ return {
28
+ saveSnapshot: async (tenantId, snapshot, key) => sync.saveSnapshot(tenantId, snapshot, key),
29
+ loadSnapshot: async (tenantId, key) => sync.loadSnapshot(tenantId, key),
30
+ loadFreshSnapshot: async (tenantId, opts, key) => sync.loadFreshSnapshot(tenantId, opts, key),
31
+ clearSnapshot: async (tenantId, clearedStatus) => sync.clearSnapshot(tenantId, clearedStatus),
32
+ closeSessionSnapshots: async (tenantId, sessionId, status, key) => sync.closeSessionSnapshots(tenantId, sessionId, status, key),
33
+ appendEvent: async (tenantId, event) => sync.appendEvent(tenantId, event),
34
+ listEvents: async (tenantId, opts) => sync.listEvents(tenantId, opts),
35
+ saveHandoff: async (tenantId, handoff, key) => sync.saveHandoff(tenantId, handoff, key),
36
+ latestHandoff: async (tenantId, sessionId, filter, key) => sync.latestHandoff(tenantId, sessionId, filter, key),
37
+ handoffById: async (tenantId, id) => sync.handoffById(tenantId, id),
38
+ stampHandoffOutcome: async (tenantId, sessionId, outcome) => sync.stampHandoffOutcome(tenantId, sessionId, outcome),
39
+ writeSessionEndHandoff: async (tenantId, request) => sync.writeSessionEndHandoff(tenantId, request),
40
+ pushWorkingMemory: async (tenantId, item) => sync.pushWorkingMemory(tenantId, item),
41
+ readWorkingMemory: async (tenantId, filter) => sync.readWorkingMemory(tenantId, filter),
42
+ clearWorkingMemory: async (tenantId, filter) => sync.clearWorkingMemory(tenantId, filter),
43
+ bindSessionOwner: async (tenantId, sessionId, owner, retentionMs) => sync.bindSessionOwner(tenantId, sessionId, owner, retentionMs),
44
+ };
45
+ }
46
+ //# sourceMappingURL=sessions-group.js.map
@@ -1,23 +1,27 @@
1
- import type { HippoStore, RecallWrites, StoreGroups, Sync } from '../port.js';
2
- /** The store a request runs on: the served one, else hippo.db under its root, as the CLI and SDK callers have it. */
3
- export declare function storeFor(ctx: {
1
+ import { type StoreWith } from '../narrow.js';
2
+ import { type HippoStore, type StoreGroup, type StoreGroups, type StoreReach, type Sync } from '../port.js';
3
+ /** `ctx` with its store filled (the one it carries, else hippo.db under its root) and its groups proven,
4
+ * so a public entry given a store without them still answers 501. */
5
+ export declare function withStoreGroups<C extends {
4
6
  readonly hippoRoot: string;
5
7
  readonly store?: HippoStore;
6
- }): HippoStore;
7
- /** Not on the synchronous store: the nearest-row scan yields to the event loop, so this group answers only through Promises. */
8
+ }, G extends StoreGroup>(ctx: C, ...groups: readonly [G, ...G[]]): C & {
9
+ readonly store: StoreWith<G>;
10
+ };
11
+ /** Not on the synchronous store: the nearest-row scan yields to
12
+ * the event loop, so this group answers only through Promises. */
8
13
  type AsyncOnly = 'vectors';
9
- /** The port as hippo.db answers it: each call runs to its end and returns the value, so no write scope spans an await. */
10
- export type SqliteSyncStore = Sync<Omit<HippoStore, AsyncOnly>>;
11
- /** The built-in store: hippo.db under the port's own method names, each call on its own short-lived handles, so close has nothing to release. */
12
- export declare function sqliteSyncStore(hippoRoot: string): SqliteSyncStore & Sync<Omit<StoreGroups, AsyncOnly>>;
13
- /** `sqliteSyncStore` as a served store: each method runs at once and answers through a Promise, so a throw rejects as another store's would. */
14
+ /** The port as hippo.db answers it: each call runs to its end
15
+ * and returns the value, so no write scope spans an await. */
16
+ export type SqliteSyncStore = Sync<Omit<HippoStore, AsyncOnly | 'localFiles'>> & Pick<HippoStore, 'localFiles'>;
17
+ /** The built-in store: hippo.db under the port's own method names, each call on its own short-lived handles, so close
18
+ * has nothing to release. */
19
+ export declare function sqliteSyncStore(hippoRoot: string): SqliteSyncStore & Sync<Omit<StoreGroups, AsyncOnly | 'localFiles'>> & Pick<StoreGroups, 'localFiles'>;
20
+ /** The composition roots reach the request scope through the adapter's one entry. */
21
+ export { runDetachedSqliteRequest, runSqliteRequest } from './request-scope.js';
22
+ /** What a call on `store` reaches, probed as the api's own context plan did (`shared` is the transport's flag). */
23
+ export declare function sqliteReach(hippoRoot: string, store: HippoStore, shared?: boolean): StoreReach;
24
+ /** `sqliteSyncStore` as a served store: each method runs at once and answers through a Promise, so a throw rejects as
25
+ * another store's would. */
14
26
  export declare function sqliteStore(hippoRoot: string): HippoStore & StoreGroups;
15
- /** What a finished recall wrote after its audit rows: the trace's id, null when none was asked or its write failed, and the ids strengthened. */
16
- interface RecallFinish {
17
- readonly traceId: number | null;
18
- readonly strengthened: ReadonlySet<string>;
19
- }
20
- /** sqliteStore's finishRecall, for the synchronous recall that cannot await the port. */
21
- export declare function finishRecallAt(hippoRoot: string, writes: RecallWrites): RecallFinish;
22
- export {};
23
27
  //# sourceMappingURL=store.d.ts.map
@@ -4,17 +4,27 @@ import { listApiKeyRows, readApiKeyRecord } from '../auth.js';
4
4
  import { existsSync } from 'node:fs';
5
5
  import { appendAuditEvent, listAuditEventsAfter, queryAuditEvents } from '../audit.js';
6
6
  import { getHippoDbPath, withWriteScope } from '../../db/index.js';
7
- import { activeGoalsWithPolicies, localGoalRecallRows, writeGoalRecallLog } from '../goals.js';
7
+ import { activeGoalsWithPolicies } from '../goals.js';
8
8
  import { planningFallacyEvidenceAt } from '../planning-fallacy-evidence.js';
9
- import { writeRecallTrace } from '../recall-trace.js';
10
9
  import { recordTokenUse } from '../token-ledger.js';
11
10
  import { loadAmbientCandidates, loadContextCandidates } from '../candidates.js';
12
11
  import { loadEntriesByIds, loadFreshRawMemories } from '../entry-reads.js';
13
- import { strengthenRetrievedInOwnTx } from '../entry-writes.js';
12
+ import { sqliteAgentImport } from './agent-import.js';
13
+ import { servedCards, sqliteCards } from './cards-group.js';
14
+ import { servedConflicts, sqliteConflicts } from './conflicts-group.js';
15
+ import { servedDormant, sqliteDormant } from './dormant-group.js';
16
+ import { servedGoals, sqliteGoals } from './goals-group.js';
17
+ import { servedReports, sqliteReports } from './reports-group.js';
18
+ import { servedSessions, sqliteSessions } from './sessions-group.js';
14
19
  import { servedConnectorEvents, sqliteConnectorEvents } from './connector-events-group.js';
15
20
  import { servedConnectorWrites, sqliteConnectorWrites } from './connector-writes-group.js';
21
+ import { sqliteConsolidation } from './consolidation-group.js';
22
+ import { sqliteLearning } from './learning-group.js';
23
+ import { sqlitePromotion } from './promotion-group.js';
16
24
  import { sqliteDagReads } from './dag-reads-group.js';
17
25
  import { sqliteEntryWrites } from './entry-writes-group.js';
26
+ import { servedAuditMaintenance, servedLessonWrites, sqliteAuditMaintenance, sqliteLessonWrites, } from './maintenance-groups.js';
27
+ import { finishRecallAt, servedLastRecall, sqliteLastRecall } from './last-recall-group.js';
18
28
  import { servedGraphReads, sqliteGraphReads } from './graph-reads-group.js';
19
29
  import { servedObjects, sqliteObjects } from './objects-group.js';
20
30
  import { servedPredictions, sqlitePredictions } from './predictions-group.js';
@@ -22,24 +32,39 @@ import { servedQuarantine, sqliteQuarantine } from './quarantine-group.js';
22
32
  import { sqliteVectorReads } from './vector-reads-group.js';
23
33
  import { loadLatestHandoff } from '../handoffs.js';
24
34
  import { updateStats } from '../index-and-stats.js';
35
+ import { flushStatsMirrors } from '../mirrors.js';
25
36
  import { auditHighIdAt, revokeKeyAt } from '../key-audit.js';
26
- import { createKeyAt, createSelfKeyAt } from '../key-writes.js';
37
+ import { changeScopeGrantAt, createKeyAt, createSelfKeyAt } from '../key-writes.js';
27
38
  import { onHandle } from '../open.js';
28
- import { loadRecallSearchEntries } from '../search-rows.js';
39
+ import { narrowStore } from '../narrow.js';
40
+ import { hasGroup, } from '../port.js';
41
+ import { isSharedStore } from '../../core/config.js';
42
+ import { isGlobalStoreRoot, isInitialized, resolveGlobalRootDir } from '../../core/project-identity.js';
43
+ import { loadRecallEntries } from '../search-rows.js';
29
44
  import { listSessionEvents, loadActiveTaskSnapshot } from '../sessions.js';
30
45
  import { entriesWithoutVectorAt, loadStoredVectorViews, writeVectorsAt } from '../vector-index.js';
31
- /** The store a request runs on: the served one, else hippo.db under its root, as the CLI and SDK callers have it. */
32
- export function storeFor(ctx) {
33
- return ctx.store ?? sqliteStore(ctx.hippoRoot);
46
+ /** `ctx` with its store filled (the one it carries, else hippo.db under its root) and its groups proven,
47
+ * so a public entry given a store without them still answers 501. */
48
+ export function withStoreGroups(ctx, ...groups) {
49
+ return { ...ctx, store: narrowStore(ctx.store ?? sqliteStore(ctx.hippoRoot), ...groups) };
34
50
  }
35
- /** The built-in store: hippo.db under the port's own method names, each call on its own short-lived handles, so close has nothing to release. */
51
+ /** The built-in store: hippo.db under the port's own method names, each call on its own short-lived handles, so close
52
+ * has nothing to release. */
36
53
  export function sqliteSyncStore(hippoRoot) {
37
54
  return {
38
55
  kind: 'sqlite',
56
+ localFiles: {
57
+ hippoRoot,
58
+ consolidation: sqliteConsolidation(hippoRoot),
59
+ agentImport: sqliteAgentImport,
60
+ promotion: sqlitePromotion(hippoRoot),
61
+ learning: sqliteLearning(hippoRoot),
62
+ },
39
63
  ...sqliteBaseReads(hippoRoot),
40
64
  ...sqliteRecallWrites(hippoRoot),
41
65
  keyAudit: sqliteKeyAudit(hippoRoot),
42
66
  keyWrites: sqliteKeyWrites(hippoRoot),
67
+ keyGrants: sqliteKeyGrants(hippoRoot),
43
68
  vectorViews: sqliteVectorViews(hippoRoot),
44
69
  vectorWrites: sqliteVectorWrites(hippoRoot),
45
70
  entryWrites: sqliteEntryWrites(hippoRoot),
@@ -53,7 +78,18 @@ export function sqliteSyncStore(hippoRoot) {
53
78
  connectorEvents: sqliteConnectorEvents(hippoRoot),
54
79
  objects: sqliteObjects(hippoRoot),
55
80
  readiness: sqliteReadiness(hippoRoot),
56
- close() { },
81
+ lastRecall: sqliteLastRecall(hippoRoot),
82
+ auditMaintenance: sqliteAuditMaintenance(hippoRoot),
83
+ lessonWrites: sqliteLessonWrites(hippoRoot),
84
+ sessions: sqliteSessions(hippoRoot),
85
+ cards: sqliteCards(hippoRoot),
86
+ goals: sqliteGoals(hippoRoot),
87
+ conflicts: sqliteConflicts(hippoRoot),
88
+ dormant: sqliteDormant(hippoRoot),
89
+ reports: sqliteReports(hippoRoot),
90
+ close() {
91
+ flushStatsMirrors(hippoRoot);
92
+ },
57
93
  };
58
94
  }
59
95
  function sqliteBaseReads(hippoRoot) {
@@ -62,7 +98,7 @@ function sqliteBaseReads(hippoRoot) {
62
98
  return onHandle(hippoRoot, (db) => readApiKeyRecord(db, keyId));
63
99
  },
64
100
  searchRecallEntries(query, args) {
65
- return loadRecallSearchEntries(hippoRoot, query, args.limit, args.tenantId, args.requestedScope, args.explicitScopeMode, args.includeSuperseded, args.originProjects, args.ownScope);
101
+ return loadRecallEntries(hippoRoot, query, args);
66
102
  },
67
103
  entriesByIds(ids, tenantId) {
68
104
  return loadEntriesByIds(hippoRoot, ids, tenantId);
@@ -136,11 +172,30 @@ function sqliteReadiness(hippoRoot) {
136
172
  },
137
173
  };
138
174
  }
139
- /** `sqliteSyncStore` as a served store: each method runs at once and answers through a Promise, so a throw rejects as another store's would. */
175
+ /** The composition roots reach the request scope through the adapter's one entry. */
176
+ export { runDetachedSqliteRequest, runSqliteRequest } from './request-scope.js';
177
+ /** What a call on `store` reaches, probed as the api's own context plan did (`shared` is the transport's flag). */
178
+ export function sqliteReach(hippoRoot, store, shared) {
179
+ const other = hasGroup(store, 'localFiles') ? undefined : store;
180
+ const sharedStore = shared === true || isSharedStore(hippoRoot);
181
+ const globalRoot = resolveGlobalRootDir();
182
+ const canReadGlobal = !sharedStore && other === undefined && isInitialized(globalRoot);
183
+ const reach = {
184
+ hasLocal: other !== undefined || isInitialized(hippoRoot),
185
+ isGlobal: isGlobalStoreRoot(hippoRoot),
186
+ shared: sharedStore,
187
+ };
188
+ if (!canReadGlobal)
189
+ return reach;
190
+ return { ...reach, global: { root: globalRoot, store: narrowStore(sqliteStore(globalRoot), 'contextReads') } };
191
+ }
192
+ /** `sqliteSyncStore` as a served store: each method runs at once and answers through a Promise, so a throw rejects as
193
+ * another store's would. */
140
194
  export function sqliteStore(hippoRoot) {
141
195
  const sync = sqliteSyncStore(hippoRoot);
142
196
  return {
143
197
  ...servedBaseMethods(sync),
198
+ localFiles: sync.localFiles,
144
199
  vectors: sqliteVectorReads(hippoRoot),
145
200
  vectorViews: { storedVectorViews: async (ids) => sync.vectorViews.storedVectorViews(ids) },
146
201
  ...servedKeyGroups(sync),
@@ -153,9 +208,23 @@ export function sqliteStore(hippoRoot) {
153
208
  connectorEvents: servedConnectorEvents(sync.connectorEvents),
154
209
  objects: servedObjects(sqliteObjects(hippoRoot)),
155
210
  readiness: { ping: async () => sync.readiness.ping() },
211
+ lastRecall: servedLastRecall(sync.lastRecall),
212
+ auditMaintenance: servedAuditMaintenance(sync.auditMaintenance),
213
+ lessonWrites: servedLessonWrites(sync.lessonWrites),
214
+ ...servedSessionAndAdminGroups(sync),
156
215
  close: async () => sync.close(),
157
216
  };
158
217
  }
218
+ function servedSessionAndAdminGroups(sync) {
219
+ return {
220
+ sessions: servedSessions(sync.sessions),
221
+ cards: servedCards(sync.cards),
222
+ goals: servedGoals(sync.goals),
223
+ conflicts: servedConflicts(sync.conflicts),
224
+ dormant: servedDormant(sync.dormant),
225
+ reports: servedReports(sync.reports),
226
+ };
227
+ }
159
228
  function servedBaseMethods(sync) {
160
229
  return {
161
230
  kind: sync.kind,
@@ -173,7 +242,7 @@ function servedBaseMethods(sync) {
173
242
  };
174
243
  }
175
244
  function servedKeyGroups(sync) {
176
- const { keyAudit, keyWrites } = sync;
245
+ const { keyAudit, keyWrites, keyGrants } = sync;
177
246
  return {
178
247
  keyAudit: {
179
248
  revokeApiKey: async (revoke) => keyAudit.revokeApiKey(revoke),
@@ -185,6 +254,9 @@ function servedKeyGroups(sync) {
185
254
  createSelfApiKey: async (mint) => keyWrites.createSelfApiKey(mint),
186
255
  listApiKeys: async (query) => keyWrites.listApiKeys(query),
187
256
  },
257
+ keyGrants: {
258
+ changeScopeGrant: async (change) => keyGrants.changeScopeGrant(change),
259
+ },
188
260
  };
189
261
  }
190
262
  function servedEntryGroups(sync) {
@@ -251,6 +323,13 @@ function sqliteKeyWrites(hippoRoot) {
251
323
  },
252
324
  };
253
325
  }
326
+ function sqliteKeyGrants(hippoRoot) {
327
+ return {
328
+ changeScopeGrant(change) {
329
+ onHandle(hippoRoot, (db) => changeScopeGrantAt(db, change));
330
+ },
331
+ };
332
+ }
254
333
  function sqliteKeyAudit(hippoRoot) {
255
334
  return {
256
335
  revokeApiKey(revoke) {
@@ -271,26 +350,9 @@ function continuityAt(hippoRoot, tenantId, eventLimit, key) {
271
350
  return {
272
351
  activeSnapshot,
273
352
  sessionHandoff: sessionId ? loadLatestHandoff(hippoRoot, tenantId, sessionId, {}, key ?? undefined) : null,
274
- recentSessionEvents: sessionId ? listSessionEvents(hippoRoot, tenantId, { session_id: sessionId, limit: eventLimit }) : [],
353
+ recentSessionEvents: sessionId
354
+ ? listSessionEvents(hippoRoot, tenantId, { session_id: sessionId, limit: eventLimit })
355
+ : [],
275
356
  };
276
357
  }
277
- /** sqliteStore's finishRecall, for the synchronous recall that cannot await the port. */
278
- export function finishRecallAt(hippoRoot, writes) {
279
- return onHandle(hippoRoot, (db) => {
280
- const traceAndStrengthen = () => ({
281
- traceId: writes.trace ? writeRecallTrace(db, writes.trace) : null,
282
- strengthened: writes.strengthen ? strengthenRetrievedInOwnTx(db, writes.strengthen.ids, writes.strengthen.opts) : new Set(),
283
- });
284
- // Alone, the fail-soft trace and strengthen keep their own scopes so a busy lock loses them, never the read.
285
- if (writes.goalLog.length === 0 && writes.audit.length === 0)
286
- return traceAndStrengthen();
287
- // Inside this scope both run as savepoints, so one recall commits once and a failed trace or strengthen still unwinds alone.
288
- return withWriteScope(db, 'finish_recall', () => {
289
- writeGoalRecallLog(db, localGoalRecallRows(db, writes.goalLog));
290
- for (const event of writes.audit)
291
- appendAuditEvent(db, event);
292
- return traceAndStrengthen();
293
- });
294
- });
295
- }
296
358
  //# sourceMappingURL=store.js.map
@@ -1,4 +1,5 @@
1
- // Vectors from a store worker as one buffer: it moves to the server thread with no copy, where a Map of typed arrays is copied value by value.
1
+ // Vectors from a store worker as one buffer: it moves to the server thread with no copy, where a Map of typed arrays is
2
+ // copied value by value.
2
3
  /** A pack on the thread that built it, so the reply that carries it knows which buffer to move. */
3
4
  export class PackedVectors {
4
5
  ids;
@@ -1,4 +1,5 @@
1
- // hippo.db's vector reads. Async only: the nearest-row scan yields between chunks, so a store worker awaits these where it runs every other method to its end.
1
+ // hippo.db's vector reads. Async only: the nearest-row scan yields between chunks, so a store worker awaits these where
2
+ // it runs every other method to its end.
2
3
  import { loadPhysicsState } from '../../db/physics-state.js';
3
4
  import { onHandle } from '../open.js';
4
5
  import { loadVectorCandidateEntries } from '../search-rows.js';
@@ -1,5 +1,6 @@
1
1
  import type { MessagePort } from 'node:worker_threads';
2
2
  import { type WorkerInit } from './worker-ops.js';
3
- /** Answers the thread's jobs until 'stop', which closes the connection so the thread ends with no handle on the store's files. */
3
+ /** Answers the thread's jobs until 'stop', which closes the connection so the thread ends with no handle on the store's
4
+ * files. */
4
5
  export declare function serveJobs(port: MessagePort, init: WorkerInit): void;
5
6
  //# sourceMappingURL=worker-jobs.d.ts.map
@@ -4,11 +4,12 @@ import { loadStoredVectorViews } from '../vector-index.js';
4
4
  import { requestScopes } from '../../util/request-scope.js';
5
5
  import { initStore } from '../open.js';
6
6
  import { watchCommits } from './commit-watch.js';
7
+ import { flushStatsMirrors } from '../mirrors.js';
7
8
  import { encodeError } from './error-codec.js';
8
9
  import { sqliteSyncStore } from './store.js';
9
10
  import { PackedVectors, packVectors } from './vector-pack.js';
10
11
  import { sqliteVectorReads } from './vector-reads-group.js';
11
- import { STORE_SETUP_OP, WORKER_OPS } from './worker-ops.js';
12
+ import { STORE_SETUP_OP, WORKER_OPS, } from './worker-ops.js';
12
13
  /** Every method the op table can name: the synchronous store, and the vector reads, which answer only through Promises.
13
14
  * The two reads that return vectors answer with a pack, which worker-store.ts turns back into the port's Map. */
14
15
  function workerOps(hippoRoot) {
@@ -48,7 +49,9 @@ class WorkerStores extends RequestStores {
48
49
  watchCommits(db, () => Atomics.store(flag, 0, this.jobId));
49
50
  }
50
51
  // The connection set its own value from this thread's state, where no checkpointer ever runs.
51
- if (hippoRoot === this.#init.hippoRoot && this.walPages !== undefined && this.#walPagesOn.get(db) !== this.walPages) {
52
+ if (hippoRoot === this.#init.hippoRoot &&
53
+ this.walPages !== undefined &&
54
+ this.#walPagesOn.get(db) !== this.walPages) {
52
55
  db.exec(`PRAGMA wal_autocheckpoint = ${this.walPages}`);
53
56
  this.#walPagesOn.set(db, this.walPages);
54
57
  }
@@ -63,7 +66,8 @@ function runsOnWorker(group, method) {
63
66
  return Object.hasOwn(places, method) && places[method] !== 'server';
64
67
  }
65
68
  function methodsOf(ops, group) {
66
- // SAFETY: every group is an object of methods, and the server thread sent the arguments the port's own signature for the one called took.
69
+ // SAFETY: every group is an object of methods, and the server thread sent the arguments the port's own signature for
70
+ // the one called took.
67
71
  return (group === 'base' ? ops : ops[group]);
68
72
  }
69
73
  /** Runs `op`; only a method the op table places on a worker can run. */
@@ -80,7 +84,7 @@ async function answer(ops, stores, hippoRoot, job) {
80
84
  stores.walPages = job.walPages;
81
85
  stores.jobId = job.id;
82
86
  try {
83
- const value = await requestScopes.run(stores, () => (job.op === STORE_SETUP_OP ? initStore(hippoRoot) : runOp(ops, job.op, job.args)));
87
+ const value = await requestScopes.run(stores, () => job.op === STORE_SETUP_OP ? initStore(hippoRoot) : runOp(ops, job.op, job.args));
84
88
  return { id: job.id, ok: true, value, auditFailures: auditWriteFailureCount() - failuresBefore };
85
89
  }
86
90
  catch (err) {
@@ -93,18 +97,26 @@ function post(port, reply) {
93
97
  }
94
98
  catch (err) {
95
99
  // A result that cannot be copied to the server thread must still answer, or its caller would wait for ever.
96
- port.postMessage({ id: reply.id, ok: false, error: encodeError(err), auditFailures: reply.auditFailures });
100
+ port.postMessage({
101
+ id: reply.id,
102
+ ok: false,
103
+ error: encodeError(err),
104
+ auditFailures: reply.auditFailures,
105
+ });
97
106
  }
98
107
  }
99
- /** Answers the thread's jobs until 'stop', which closes the connection so the thread ends with no handle on the store's files. */
108
+ /** Answers the thread's jobs until 'stop', which closes the connection so the thread ends with no handle on the store's
109
+ * files. */
100
110
  export function serveJobs(port, init) {
101
111
  const ops = workerOps(init.hippoRoot);
102
112
  const stores = new WorkerStores(init);
103
- // A thread is sent one job at a time, so only 'stop' can arrive while a vector scan yields, and it waits for that job's reply.
113
+ // A thread is sent one job at a time, so only 'stop' can arrive while a vector scan yields, and it waits for that
114
+ // job's reply.
104
115
  let last = Promise.resolve();
105
116
  port.on('message', (message) => {
106
117
  if (message === 'stop') {
107
118
  void last.then(() => {
119
+ flushStatsMirrors(init.hippoRoot);
108
120
  stores.close();
109
121
  port.close();
110
122
  });
@@ -7,8 +7,9 @@ export type OpPlace = OpMode | 'server';
7
7
  export type OpPlaces<G> = {
8
8
  readonly [M in keyof G]: OpPlace;
9
9
  };
10
- /** Store methods answered by a worker, base ones under `base`. Tagged by effect, not name: predictionBaserate (audit row) and bumpRecallStats
11
- * (stats.json) are writes. A read that opens through `openStore` is a read: the writer runs that open's setup before any reader serves. */
10
+ /** Store methods answered by a worker, base ones under `base`. Tagged by effect, not name: predictionBaserate (audit
11
+ * row) and bumpRecallStats (stats.json) are writes. A read that opens through `openStore` is a read: the writer runs
12
+ * that open's setup before any reader serves. */
12
13
  export declare const WORKER_OPS: {
13
14
  readonly base: {
14
15
  readonly findApiKey: "read";
@@ -92,12 +93,14 @@ export declare const WORKER_OPS: {
92
93
  readonly policiesInForce: "read";
93
94
  readonly activeSkillsByName: "read";
94
95
  readonly briefReceipts: "read";
96
+ readonly objectIdByMemory: "read";
95
97
  };
96
98
  readonly readiness: {
97
99
  readonly ping: "read";
98
100
  };
99
101
  };
100
- /** Sent by the executor itself and by no store method: the writer runs the store's open-time setup once, before any reader is sent a job. */
102
+ /** Sent by the executor itself and by no store method: the writer runs the store's open-time setup once, before any
103
+ * reader is sent a job. */
101
104
  export declare const STORE_SETUP_OP = "setup";
102
105
  export type WorkerGroup = keyof typeof WORKER_OPS;
103
106
  /** The base methods the op table names. */
@@ -107,7 +110,8 @@ export interface WorkerInit {
107
110
  readonly mode: OpMode;
108
111
  /** Lock wait of the thread's connection. */
109
112
  readonly busyWaitMs: number;
110
- /** One shared integer the writer sets to a job's id before that job may commit; the server thread reads it when the job passes its deadline. */
113
+ /** One shared integer the writer sets to a job's id before that job may commit; the server thread reads it when the
114
+ * job passes its deadline. */
111
115
  readonly commitFlag?: SharedArrayBuffer;
112
116
  }
113
117
  export interface Job {
@@ -120,7 +124,8 @@ export interface Job {
120
124
  /** wal_autocheckpoint as the server thread has it: a worker cannot see the checkpointer start or stop. */
121
125
  readonly walPages: number;
122
126
  }
123
- /** Both kinds carry the audit rows the job failed to write, since the count `/health` reports lives on the server thread. */
127
+ /** Both kinds carry the audit rows the job failed to write,
128
+ * since the count `/health` reports lives on the server thread. */
124
129
  export type Reply = {
125
130
  readonly id: number;
126
131
  readonly ok: true;
@@ -1,5 +1,6 @@
1
- /** Store methods answered by a worker, base ones under `base`. Tagged by effect, not name: predictionBaserate (audit row) and bumpRecallStats
2
- * (stats.json) are writes. A read that opens through `openStore` is a read: the writer runs that open's setup before any reader serves. */
1
+ /** Store methods answered by a worker, base ones under `base`. Tagged by effect, not name: predictionBaserate (audit
2
+ * row) and bumpRecallStats (stats.json) are writes. A read that opens through `openStore` is a read: the writer runs
3
+ * that open's setup before any reader serves. */
3
4
  export const WORKER_OPS = {
4
5
  base: {
5
6
  findApiKey: 'read',
@@ -83,11 +84,13 @@ export const WORKER_OPS = {
83
84
  policiesInForce: 'read',
84
85
  activeSkillsByName: 'read',
85
86
  briefReceipts: 'read',
87
+ objectIdByMemory: 'read',
86
88
  },
87
89
  readiness: {
88
90
  ping: 'read',
89
91
  },
90
92
  };
91
- /** Sent by the executor itself and by no store method: the writer runs the store's open-time setup once, before any reader is sent a job. */
93
+ /** Sent by the executor itself and by no store method: the writer runs the store's open-time setup once, before any
94
+ * reader is sent a job. */
92
95
  export const STORE_SETUP_OP = 'setup';
93
96
  //# sourceMappingURL=worker-ops.js.map
@@ -1,8 +1,9 @@
1
1
  import type { HippoStore, StoreGroups } from '../port.js';
2
2
  import { type SqliteExecutor } from './executor.js';
3
- /** Whether `store` answers its `loop: 'off'` routes from worker threads, so a hippo.db open on the server thread inside one is a defect. */
3
+ /** Whether `store` answers its `loop: 'off'` routes from worker threads, so a hippo.db open on the server thread inside
4
+ * one is a defect. */
4
5
  export declare function runsOffLoop(store: HippoStore): boolean;
5
- /** `sqliteStore` with the worker-backed methods in place of its in-process ones; close() closes `executor` and resolves once its threads have exited.
6
- * `executor` defaults to threads of the store's own, with the server's lock wait. */
6
+ /** `sqliteStore` with the worker-backed methods in place of its in-process ones; close() closes `executor` and resolves
7
+ * once its threads have exited. `executor` defaults to threads of the store's own, with the server's lock wait. */
7
8
  export declare function workerSqliteStore(hippoRoot: string, executor?: SqliteExecutor): HippoStore & StoreGroups;
8
9
  //# sourceMappingURL=worker-store.d.ts.map