hippo-memory 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (965) hide show
  1. package/dist/agent-memories/apply.d.ts +7 -5
  2. package/dist/agent-memories/apply.js +66 -39
  3. package/dist/agent-memories/claude-code.d.ts +8 -2
  4. package/dist/agent-memories/claude-code.js +26 -7
  5. package/dist/agent-memories/copilot.js +2 -1
  6. package/dist/agent-memories/files.js +2 -1
  7. package/dist/agent-memories/legacy.d.ts +6 -3
  8. package/dist/agent-memories/legacy.js +35 -14
  9. package/dist/agent-memories/markdown.d.ts +3 -1
  10. package/dist/agent-memories/markdown.js +3 -1
  11. package/dist/agent-memories/openclaw.js +5 -2
  12. package/dist/agent-memories/plan.js +11 -1
  13. package/dist/agent-memories/project-folds.js +2 -1
  14. package/dist/agent-memories/report.d.ts +4 -1
  15. package/dist/agent-memories/report.js +43 -9
  16. package/dist/agent-memories/source.d.ts +8 -2
  17. package/dist/agent-memories/source.js +11 -3
  18. package/dist/agent-memories/sync.d.ts +7 -2
  19. package/dist/agent-memories/sync.js +141 -101
  20. package/dist/api/assemble.d.ts +6 -4
  21. package/dist/api/assemble.js +11 -6
  22. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  23. package/dist/api/{audit.js → auth/audit.js} +11 -11
  24. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
  25. package/dist/api/{auth.js → auth/auth.js} +46 -29
  26. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  27. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
  28. package/dist/api/auth/session-owners.d.ts +10 -0
  29. package/dist/api/auth/session-owners.js +35 -0
  30. package/dist/api/availability.d.ts +3 -1
  31. package/dist/api/availability.js +3 -1
  32. package/dist/api/busy.d.ts +2 -0
  33. package/dist/api/busy.js +2 -0
  34. package/dist/api/cli-surface.d.ts +6 -0
  35. package/dist/api/cli-surface.js +6 -0
  36. package/dist/api/config-of.d.ts +5 -0
  37. package/dist/api/config-of.js +6 -0
  38. package/dist/api/context-auto.d.ts +4 -1
  39. package/dist/api/context-auto.js +10 -2
  40. package/dist/api/context-render.js +14 -7
  41. package/dist/api/context-select.d.ts +4 -1
  42. package/dist/api/context-select.js +23 -14
  43. package/dist/api/context-types.d.ts +38 -12
  44. package/dist/api/context.d.ts +8 -5
  45. package/dist/api/context.js +112 -57
  46. package/dist/api/continuity.d.ts +24 -21
  47. package/dist/api/continuity.js +18 -20
  48. package/dist/api/correction-latency.d.ts +3 -1
  49. package/dist/api/correction-latency.js +3 -1
  50. package/dist/api/error-reply.d.ts +4 -1
  51. package/dist/api/error-reply.js +12 -3
  52. package/dist/api/index.d.ts +39 -23
  53. package/dist/api/index.js +21 -23
  54. package/dist/api/instruction-detect.d.ts +4 -1
  55. package/dist/api/instruction-detect.js +75 -20
  56. package/dist/api/ledger-db.d.ts +15 -11
  57. package/dist/api/ledger-db.js +21 -23
  58. package/dist/api/memories/conflicts.d.ts +33 -0
  59. package/dist/api/memories/conflicts.js +67 -0
  60. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  61. package/dist/api/{forget.js → memories/forget.js} +22 -15
  62. package/dist/api/memories/memories.d.ts +27 -0
  63. package/dist/api/{memories.js → memories/memories.js} +16 -21
  64. package/dist/api/memories/outcome.d.ts +22 -0
  65. package/dist/api/{outcome.js → memories/outcome.js} +14 -8
  66. package/dist/api/memories/promote.d.ts +40 -0
  67. package/dist/api/{promote.js → memories/promote.js} +35 -22
  68. package/dist/api/memories/refine.d.ts +10 -0
  69. package/dist/api/memories/refine.js +12 -0
  70. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
  71. package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
  72. package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
  73. package/dist/api/{remember.js → memories/remember.js} +42 -26
  74. package/dist/api/objects/cards.d.ts +39 -0
  75. package/dist/api/{cards.js → objects/cards.js} +12 -14
  76. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  77. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
  78. package/dist/api/objects/goals.d.ts +18 -0
  79. package/dist/api/{goals.js → objects/goals.js} +12 -12
  80. package/dist/api/objects/graph.d.ts +11 -0
  81. package/dist/api/objects/graph.js +16 -0
  82. package/dist/api/objects/objects.d.ts +9 -0
  83. package/dist/api/{objects.js → objects/objects.js} +2 -4
  84. package/dist/api/objects/predictions.d.ts +11 -0
  85. package/dist/api/{predictions.js → objects/predictions.js} +7 -6
  86. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  87. package/dist/api/{projects.js → objects/projects.js} +8 -4
  88. package/dist/api/pilot-arm.d.ts +8 -4
  89. package/dist/api/pilot-arm.js +5 -4
  90. package/dist/api/prompt-hook.d.ts +32 -19
  91. package/dist/api/prompt-hook.js +65 -44
  92. package/dist/api/provenance-coverage.d.ts +3 -1
  93. package/dist/api/provenance-coverage.js +3 -1
  94. package/dist/api/recall/finish.d.ts +185 -0
  95. package/dist/api/recall/finish.js +301 -0
  96. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  97. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
  98. package/dist/api/recall/recall.d.ts +6 -0
  99. package/dist/api/{recall.js → recall/recall.js} +101 -60
  100. package/dist/api/recall/render.d.ts +39 -0
  101. package/dist/api/recall/render.js +60 -0
  102. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  103. package/dist/api/recall/request.js +261 -0
  104. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  105. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  106. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
  107. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  108. package/dist/api/session-end.d.ts +16 -12
  109. package/dist/api/session-end.js +46 -30
  110. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  111. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  112. package/dist/api/sleep/dormant.d.ts +25 -0
  113. package/dist/api/sleep/dormant.js +64 -0
  114. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  115. package/dist/api/sleep/learn.js +138 -0
  116. package/dist/api/sleep/sleep-run.d.ts +38 -0
  117. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
  118. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  119. package/dist/api/sleep/sleep.js +9 -0
  120. package/dist/api/status.d.ts +3 -1
  121. package/dist/api/status.js +3 -1
  122. package/dist/api/store-init.d.ts +4 -1
  123. package/dist/api/store-init.js +4 -1
  124. package/dist/api/tokens.d.ts +10 -9
  125. package/dist/api/tokens.js +9 -10
  126. package/dist/api/types.d.ts +28 -7
  127. package/dist/api/types.js +13 -4
  128. package/dist/capture/caller-session.d.ts +8 -2
  129. package/dist/capture/caller-session.js +16 -6
  130. package/dist/capture/capture-error.d.ts +3 -1
  131. package/dist/capture/capture-error.js +3 -1
  132. package/dist/capture/codex-patch.js +7 -2
  133. package/dist/capture/command.d.ts +4 -2
  134. package/dist/capture/command.js +33 -14
  135. package/dist/capture/compact-resume-caller.js +15 -8
  136. package/dist/capture/compact.d.ts +8 -5
  137. package/dist/capture/compact.js +34 -23
  138. package/dist/capture/compaction-items-caller.js +9 -3
  139. package/dist/capture/compaction-record.d.ts +4 -3
  140. package/dist/capture/compaction-record.js +20 -12
  141. package/dist/capture/compaction-spool.d.ts +15 -4
  142. package/dist/capture/compaction-spool.js +64 -17
  143. package/dist/capture/copilot-transcript.d.ts +11 -3
  144. package/dist/capture/copilot-transcript.js +16 -6
  145. package/dist/capture/extract.js +20 -8
  146. package/dist/capture/failure-caller.js +23 -12
  147. package/dist/capture/failure-reading.d.ts +10 -3
  148. package/dist/capture/failure-reading.js +24 -7
  149. package/dist/capture/pre-compact-caller.js +11 -4
  150. package/dist/capture/session-digest.d.ts +15 -4
  151. package/dist/capture/session-digest.js +39 -13
  152. package/dist/capture/session-end-caller.d.ts +4 -1
  153. package/dist/capture/session-end-caller.js +20 -8
  154. package/dist/capture/session-texts.d.ts +6 -2
  155. package/dist/capture/session-texts.js +22 -7
  156. package/dist/capture/session-worker.d.ts +4 -2
  157. package/dist/capture/session-worker.js +45 -17
  158. package/dist/capture/transcript.d.ts +13 -4
  159. package/dist/capture/transcript.js +32 -10
  160. package/dist/capture/working-state.d.ts +13 -4
  161. package/dist/capture/working-state.js +50 -56
  162. package/dist/cli/api-context.d.ts +14 -2
  163. package/dist/cli/api-context.js +45 -2
  164. package/dist/cli/audit.js +23 -23
  165. package/dist/cli/auth.js +19 -27
  166. package/dist/cli/briefs.d.ts +1 -1
  167. package/dist/cli/briefs.js +20 -15
  168. package/dist/cli/card.d.ts +1 -1
  169. package/dist/cli/card.js +56 -73
  170. package/dist/cli/client.d.ts +12 -4
  171. package/dist/cli/client.js +43 -13
  172. package/dist/cli/compact-resume-payload.d.ts +4 -1
  173. package/dist/cli/compact-resume-payload.js +12 -5
  174. package/dist/cli/context.js +42 -17
  175. package/dist/cli/continuity.d.ts +5 -5
  176. package/dist/cli/continuity.js +90 -107
  177. package/dist/cli/curate.d.ts +4 -3
  178. package/dist/cli/curate.js +46 -68
  179. package/dist/cli/dag.d.ts +1 -1
  180. package/dist/cli/dag.js +14 -17
  181. package/dist/cli/decisions.js +27 -26
  182. package/dist/cli/eval.js +16 -21
  183. package/dist/cli/exit.d.ts +4 -1
  184. package/dist/cli/exit.js +10 -2
  185. package/dist/cli/explain.js +12 -11
  186. package/dist/cli/flag-values.d.ts +1 -1
  187. package/dist/cli/flag-values.js +9 -18
  188. package/dist/cli/github.d.ts +6 -0
  189. package/dist/cli/github.js +25 -13
  190. package/dist/cli/goals.d.ts +1 -1
  191. package/dist/cli/goals.js +39 -56
  192. package/dist/cli/graph.d.ts +1 -1
  193. package/dist/cli/graph.js +15 -11
  194. package/dist/cli/hook-runtime.d.ts +31 -9
  195. package/dist/cli/hook-runtime.js +40 -15
  196. package/dist/cli/incidents.d.ts +1 -1
  197. package/dist/cli/incidents.js +25 -25
  198. package/dist/cli/init.js +26 -11
  199. package/dist/cli/install-steps.d.ts +12 -3
  200. package/dist/cli/install-steps.js +42 -18
  201. package/dist/cli/last-sleep.d.ts +4 -1
  202. package/dist/cli/last-sleep.js +9 -4
  203. package/dist/cli/maintenance.d.ts +1 -1
  204. package/dist/cli/maintenance.js +11 -12
  205. package/dist/cli/notes.d.ts +1 -1
  206. package/dist/cli/notes.js +8 -5
  207. package/dist/cli/object-verbs.d.ts +4 -4
  208. package/dist/cli/object-verbs.js +10 -13
  209. package/dist/cli/open-browser.js +11 -2
  210. package/dist/cli/playbooks.d.ts +3 -3
  211. package/dist/cli/playbooks.js +40 -32
  212. package/dist/cli/predictions.js +15 -19
  213. package/dist/cli/print.js +4 -2
  214. package/dist/cli/projects.js +21 -11
  215. package/dist/cli/quality-repair-once.js +5 -4
  216. package/dist/cli/recall.js +129 -93
  217. package/dist/cli/refine-llm.d.ts +15 -4
  218. package/dist/cli/refine-llm.js +16 -7
  219. package/dist/cli/remember.js +46 -50
  220. package/dist/cli/scheduler.d.ts +4 -1
  221. package/dist/cli/scheduler.js +9 -5
  222. package/dist/cli/serve.js +22 -17
  223. package/dist/cli/session-hooks.d.ts +2 -2
  224. package/dist/cli/session-hooks.js +87 -50
  225. package/dist/cli/setup.js +54 -32
  226. package/dist/cli/shared.d.ts +3 -1
  227. package/dist/cli/shared.js +24 -9
  228. package/dist/cli/slack.js +15 -24
  229. package/dist/cli/sleep-render.d.ts +3 -1
  230. package/dist/cli/sleep-render.js +8 -5
  231. package/dist/cli/sleep.js +14 -6
  232. package/dist/cli/status.d.ts +4 -4
  233. package/dist/cli/status.js +32 -27
  234. package/dist/cli/stdin.d.ts +10 -3
  235. package/dist/cli/stdin.js +10 -3
  236. package/dist/cli/transfer.d.ts +1 -1
  237. package/dist/cli/transfer.js +71 -75
  238. package/dist/cli/verbs/memory.js +8 -6
  239. package/dist/cli/verbs/objects.js +10 -4
  240. package/dist/cli/versioned-verbs.d.ts +8 -7
  241. package/dist/cli/versioned-verbs.js +31 -21
  242. package/dist/cli.js +13 -16
  243. package/dist/connectors/dlq.d.ts +6 -6
  244. package/dist/connectors/dlq.js +12 -8
  245. package/dist/connectors/github/backfill.d.ts +4 -4
  246. package/dist/connectors/github/backfill.js +6 -4
  247. package/dist/connectors/github/deletion.d.ts +6 -4
  248. package/dist/connectors/github/deletion.js +5 -5
  249. package/dist/connectors/github/dlq.d.ts +8 -6
  250. package/dist/connectors/github/dlq.js +11 -5
  251. package/dist/connectors/github/ingest.d.ts +2 -2
  252. package/dist/connectors/github/ingest.js +9 -6
  253. package/dist/connectors/github/octokit-client.d.ts +3 -1
  254. package/dist/connectors/github/octokit-client.js +7 -2
  255. package/dist/connectors/github/ratelimit.d.ts +6 -2
  256. package/dist/connectors/github/ratelimit.js +6 -2
  257. package/dist/connectors/github/signature.d.ts +14 -3
  258. package/dist/connectors/github/signature.js +17 -3
  259. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  260. package/dist/connectors/github/tenant-routing.js +6 -6
  261. package/dist/connectors/github/transform.js +50 -67
  262. package/dist/connectors/github/types.d.ts +10 -3
  263. package/dist/connectors/github/types.js +6 -2
  264. package/dist/connectors/github/webhook.d.ts +5 -5
  265. package/dist/connectors/github/webhook.js +34 -23
  266. package/dist/connectors/ingest.d.ts +5 -3
  267. package/dist/connectors/ingest.js +3 -4
  268. package/dist/connectors/slack/backfill.d.ts +5 -5
  269. package/dist/connectors/slack/backfill.js +3 -3
  270. package/dist/connectors/slack/deletion.d.ts +4 -4
  271. package/dist/connectors/slack/deletion.js +6 -6
  272. package/dist/connectors/slack/dlq.d.ts +4 -4
  273. package/dist/connectors/slack/dlq.js +6 -6
  274. package/dist/connectors/slack/ingest.d.ts +6 -4
  275. package/dist/connectors/slack/ingest.js +5 -5
  276. package/dist/connectors/slack/signature.d.ts +4 -1
  277. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  278. package/dist/connectors/slack/tenant-routing.js +6 -6
  279. package/dist/connectors/slack/transform.d.ts +6 -2
  280. package/dist/connectors/slack/transform.js +6 -2
  281. package/dist/connectors/slack/types.d.ts +3 -1
  282. package/dist/connectors/slack/web-client.js +8 -3
  283. package/dist/connectors/slack/webhook.d.ts +5 -5
  284. package/dist/connectors/slack/webhook.js +19 -11
  285. package/dist/connectors/slack/workspaces.d.ts +7 -3
  286. package/dist/connectors/slack/workspaces.js +7 -3
  287. package/dist/connectors/store.d.ts +8 -0
  288. package/dist/connectors/store.js +2 -0
  289. package/dist/consolidate/conflicts.js +23 -9
  290. package/dist/consolidate/dag-summary.js +2 -1
  291. package/dist/consolidate/dag.d.ts +10 -5
  292. package/dist/consolidate/dag.js +37 -36
  293. package/dist/consolidate/decay.js +19 -6
  294. package/dist/consolidate/dedupe.d.ts +14 -5
  295. package/dist/consolidate/dedupe.js +27 -16
  296. package/dist/consolidate/flush-units.d.ts +4 -1
  297. package/dist/consolidate/flush-units.js +4 -1
  298. package/dist/consolidate/half-life-migration.d.ts +18 -8
  299. package/dist/consolidate/half-life-migration.js +48 -18
  300. package/dist/consolidate/llm-passes.js +27 -11
  301. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  302. package/dist/consolidate/memory-value-weights.js +6 -2
  303. package/dist/consolidate/memory-value.d.ts +30 -10
  304. package/dist/consolidate/memory-value.js +36 -13
  305. package/dist/consolidate/merge.d.ts +4 -1
  306. package/dist/consolidate/merge.js +42 -32
  307. package/dist/consolidate/overlap-index.d.ts +8 -2
  308. package/dist/consolidate/overlap-index.js +11 -4
  309. package/dist/consolidate/physics-pass.d.ts +3 -1
  310. package/dist/consolidate/physics-pass.js +10 -7
  311. package/dist/consolidate/replay.d.ts +11 -4
  312. package/dist/consolidate/replay.js +19 -7
  313. package/dist/consolidate/run.d.ts +13 -5
  314. package/dist/consolidate/run.js +4 -4
  315. package/dist/consolidate/sleep.d.ts +14 -6
  316. package/dist/consolidate/sleep.js +41 -38
  317. package/dist/consolidate/trace.d.ts +7 -2
  318. package/dist/consolidate/trace.js +7 -2
  319. package/dist/consolidate/traces.js +26 -29
  320. package/dist/core/ablation.d.ts +9 -3
  321. package/dist/core/ablation.js +14 -4
  322. package/dist/core/active-scope.d.ts +3 -1
  323. package/dist/core/active-scope.js +3 -1
  324. package/dist/core/agent-memory-tools.d.ts +2 -0
  325. package/dist/core/agent-memory-tools.js +2 -0
  326. package/dist/core/ambient.d.ts +4 -3
  327. package/dist/core/ambient.js +8 -6
  328. package/dist/core/api-errors.d.ts +9 -3
  329. package/dist/core/api-errors.js +9 -3
  330. package/dist/core/capture-contract.d.ts +4 -1
  331. package/dist/core/capture-contract.js +27 -8
  332. package/dist/core/compare.d.ts +24 -8
  333. package/dist/core/compare.js +24 -8
  334. package/dist/core/config.d.ts +18 -9
  335. package/dist/core/config.js +24 -14
  336. package/dist/core/cosine.d.ts +4 -1
  337. package/dist/core/cosine.js +4 -1
  338. package/dist/core/handoff.d.ts +7 -2
  339. package/dist/core/handoff.js +4 -1
  340. package/dist/core/markdown.js +21 -16
  341. package/dist/core/memory-audit.js +14 -3
  342. package/dist/core/memory-quality.d.ts +12 -3
  343. package/dist/core/memory-quality.js +57 -21
  344. package/dist/core/memory.d.ts +84 -27
  345. package/dist/core/memory.js +73 -29
  346. package/dist/core/merged-row.d.ts +8 -2
  347. package/dist/core/merged-row.js +10 -3
  348. package/dist/core/package-root.d.ts +3 -1
  349. package/dist/core/package-root.js +3 -1
  350. package/dist/core/particle-refresh.d.ts +8 -0
  351. package/dist/core/particle-refresh.js +22 -0
  352. package/dist/core/physics-config.d.ts +4 -1
  353. package/dist/core/physics-config.js +6 -2
  354. package/dist/core/physics.d.ts +37 -11
  355. package/dist/core/physics.js +55 -20
  356. package/dist/core/project-identity.d.ts +34 -17
  357. package/dist/core/project-identity.js +33 -17
  358. package/dist/core/project-remote.d.ts +8 -4
  359. package/dist/core/project-remote.js +31 -14
  360. package/dist/core/recall-scope.d.ts +33 -11
  361. package/dist/core/recall-scope.js +42 -15
  362. package/dist/core/rejection-digest.d.ts +7 -0
  363. package/dist/core/rejection-digest.js +13 -0
  364. package/dist/core/salience.d.ts +3 -1
  365. package/dist/core/salience.js +10 -4
  366. package/dist/core/search-types.d.ts +15 -2
  367. package/dist/core/search-types.js +11 -0
  368. package/dist/dashboard/dashboard-actions.js +13 -2
  369. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  370. package/dist/dashboard/dashboard-snapshot.js +4 -4
  371. package/dist/dashboard/dashboard.js +6 -3
  372. package/dist/db/backup.js +2 -2
  373. package/dist/db/busy.d.ts +10 -3
  374. package/dist/db/busy.js +27 -5
  375. package/dist/db/connect.d.ts +10 -3
  376. package/dist/db/connect.js +8 -3
  377. package/dist/db/continuity.d.ts +1 -1
  378. package/dist/db/continuity.js +27 -11
  379. package/dist/db/meta.d.ts +4 -1
  380. package/dist/db/meta.js +4 -1
  381. package/dist/db/migrate.d.ts +10 -5
  382. package/dist/db/migrate.js +26 -13
  383. package/dist/db/migrations/index.d.ts +1 -1
  384. package/dist/db/migrations/index.js +3 -1
  385. package/dist/db/migrations/types.d.ts +2 -1
  386. package/dist/db/migrations/v12.js +2 -1
  387. package/dist/db/migrations/v14.js +2 -1
  388. package/dist/db/migrations/v15.js +4 -2
  389. package/dist/db/migrations/v16.js +6 -3
  390. package/dist/db/migrations/v17.js +2 -1
  391. package/dist/db/migrations/v19.js +4 -2
  392. package/dist/db/migrations/v20.js +2 -1
  393. package/dist/db/migrations/v22.js +12 -6
  394. package/dist/db/migrations/v23.js +6 -3
  395. package/dist/db/migrations/v24.js +6 -3
  396. package/dist/db/migrations/v25.js +4 -2
  397. package/dist/db/migrations/v26.js +4 -2
  398. package/dist/db/migrations/v27.js +6 -3
  399. package/dist/db/migrations/v28.js +4 -2
  400. package/dist/db/migrations/v29.js +4 -2
  401. package/dist/db/migrations/v30.js +6 -3
  402. package/dist/db/migrations/v31.js +4 -2
  403. package/dist/db/migrations/v32.js +6 -3
  404. package/dist/db/migrations/v33.js +4 -2
  405. package/dist/db/migrations/v34.js +2 -1
  406. package/dist/db/migrations/v35.js +2 -1
  407. package/dist/db/migrations/v36.js +2 -1
  408. package/dist/db/migrations/v37.js +10 -5
  409. package/dist/db/migrations/v38.js +10 -5
  410. package/dist/db/migrations/v39.js +14 -6
  411. package/dist/db/migrations/v40.js +4 -2
  412. package/dist/db/migrations/v41.js +4 -2
  413. package/dist/db/migrations/v42.js +2 -1
  414. package/dist/db/migrations/v44.js +4 -2
  415. package/dist/db/migrations/v45.js +4 -2
  416. package/dist/db/migrations/v49.js +2 -1
  417. package/dist/db/migrations/v50.js +4 -2
  418. package/dist/db/migrations/v51.js +4 -2
  419. package/dist/db/migrations/v52.js +2 -1
  420. package/dist/db/migrations/v53.js +8 -4
  421. package/dist/db/migrations/v54.js +2 -1
  422. package/dist/db/migrations/v55.js +4 -2
  423. package/dist/db/migrations/v56.d.ts +3 -0
  424. package/dist/db/migrations/v56.js +28 -0
  425. package/dist/db/open.d.ts +24 -12
  426. package/dist/db/open.js +25 -13
  427. package/dist/db/physics-state.d.ts +8 -4
  428. package/dist/db/physics-state.js +13 -20
  429. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  430. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  431. package/dist/db/request-stores.d.ts +19 -5
  432. package/dist/db/request-stores.js +14 -5
  433. package/dist/db/tables.d.ts +2 -1
  434. package/dist/db/tables.js +12 -4
  435. package/dist/db/vector-store.d.ts +13 -4
  436. package/dist/db/vector-store.js +34 -14
  437. package/dist/db/wal-checkpointer.d.ts +2 -1
  438. package/dist/db/wal-checkpointer.js +19 -7
  439. package/dist/doctor.d.ts +4 -1
  440. package/dist/doctor.js +121 -39
  441. package/dist/embeddings/local.d.ts +8 -4
  442. package/dist/embeddings/local.js +9 -5
  443. package/dist/embeddings/provider.d.ts +19 -10
  444. package/dist/embeddings/provider.js +31 -17
  445. package/dist/embeddings/transformers.d.ts +16 -4
  446. package/dist/embeddings/transformers.js +32 -15
  447. package/dist/entry/json-hooks.d.ts +1 -1
  448. package/dist/entry/json-hooks.js +1 -1
  449. package/dist/entry/project-identity.js +2 -1
  450. package/dist/entry/session-text.d.ts +1 -1
  451. package/dist/entry/session-text.js +1 -1
  452. package/dist/entry/sqlite-handles.d.ts +10 -0
  453. package/dist/entry/sqlite-handles.js +9 -0
  454. package/dist/entry/store-kit.d.ts +19 -6
  455. package/dist/entry/store-kit.js +6 -4
  456. package/dist/eval/eval-stats.d.ts +27 -8
  457. package/dist/eval/eval-stats.js +17 -5
  458. package/dist/eval/eval-suite.d.ts +3 -1
  459. package/dist/eval/eval-suite.js +409 -187
  460. package/dist/eval/eval.d.ts +8 -2
  461. package/dist/eval/eval.js +8 -2
  462. package/dist/eval/judgment.js +16 -6
  463. package/dist/graph/delta.d.ts +9 -42
  464. package/dist/graph/delta.js +17 -11
  465. package/dist/graph/extract.d.ts +10 -7
  466. package/dist/graph/extract.js +57 -25
  467. package/dist/graph/recall.d.ts +12 -4
  468. package/dist/graph/recall.js +30 -13
  469. package/dist/graph/stream.d.ts +18 -6
  470. package/dist/graph/stream.js +32 -10
  471. package/dist/graph/view.d.ts +19 -6
  472. package/dist/graph/view.js +42 -17
  473. package/dist/hooks/codex-session.js +2 -2
  474. package/dist/hooks/codex-wrapper.d.ts +3 -1
  475. package/dist/hooks/codex-wrapper.js +9 -4
  476. package/dist/hooks/copilot.d.ts +19 -5
  477. package/dist/hooks/copilot.js +54 -15
  478. package/dist/hooks/hook-blocks.d.ts +4 -1
  479. package/dist/hooks/hook-blocks.js +8 -3
  480. package/dist/hooks/json-hooks.d.ts +9 -5
  481. package/dist/hooks/json-hooks.js +69 -34
  482. package/dist/hooks/opencode.js +15 -5
  483. package/dist/hooks/shared.d.ts +27 -8
  484. package/dist/hooks/shared.js +57 -16
  485. package/dist/importers/core.d.ts +12 -4
  486. package/dist/importers/core.js +8 -7
  487. package/dist/importers/markdown-parse.d.ts +15 -5
  488. package/dist/importers/markdown-parse.js +16 -7
  489. package/dist/importers/markdown.js +6 -9
  490. package/dist/importers/sources.js +10 -23
  491. package/dist/importers/vault.d.ts +2 -2
  492. package/dist/importers/vault.js +43 -27
  493. package/dist/index.d.ts +32 -6
  494. package/dist/index.js +25 -7
  495. package/dist/learn/autolearn.d.ts +17 -6
  496. package/dist/learn/autolearn.js +53 -24
  497. package/dist/learn/churn-git.d.ts +4 -1
  498. package/dist/learn/churn-git.js +29 -5
  499. package/dist/learn/extract.d.ts +4 -1
  500. package/dist/learn/extract.js +16 -9
  501. package/dist/learn/forward-claim-detector.d.ts +17 -5
  502. package/dist/learn/forward-claim-detector.js +34 -15
  503. package/dist/learn/invalidation.d.ts +12 -7
  504. package/dist/learn/invalidation.js +56 -27
  505. package/dist/learn/roots.d.ts +3 -0
  506. package/dist/learn/roots.js +5 -0
  507. package/dist/mcp/admin-tools.d.ts +5 -5
  508. package/dist/mcp/admin-tools.js +28 -23
  509. package/dist/mcp/format.d.ts +1 -1
  510. package/dist/mcp/format.js +4 -2
  511. package/dist/mcp/framing.d.ts +3 -1
  512. package/dist/mcp/framing.js +20 -8
  513. package/dist/mcp/memory-tools.d.ts +3 -3
  514. package/dist/mcp/memory-tools.js +18 -14
  515. package/dist/mcp/protocol.d.ts +32 -16
  516. package/dist/mcp/protocol.js +12 -9
  517. package/dist/mcp/recall-tools.d.ts +3 -3
  518. package/dist/mcp/recall-tools.js +62 -74
  519. package/dist/mcp/request.d.ts +7 -5
  520. package/dist/mcp/request.js +57 -74
  521. package/dist/mcp/server.d.ts +3 -1
  522. package/dist/mcp/server.js +8 -3
  523. package/dist/mcp/session-state.d.ts +1 -1
  524. package/dist/mcp/session-state.js +4 -3
  525. package/dist/mcp/shared-gate.d.ts +3 -2
  526. package/dist/mcp/shared-gate.js +3 -2
  527. package/dist/mcp/stdio.d.ts +6 -3
  528. package/dist/mcp/stdio.js +52 -21
  529. package/dist/mcp/tool-args.d.ts +4 -1
  530. package/dist/mcp/tool-args.js +8 -3
  531. package/dist/mcp/tools.js +76 -32
  532. package/dist/objects/customer-notes.d.ts +12 -10
  533. package/dist/objects/customer-notes.js +21 -15
  534. package/dist/objects/decisions.d.ts +18 -10
  535. package/dist/objects/decisions.js +23 -17
  536. package/dist/objects/descriptor.js +2 -1
  537. package/dist/objects/fields.d.ts +4 -1
  538. package/dist/objects/fields.js +6 -2
  539. package/dist/objects/incidents.d.ts +14 -16
  540. package/dist/objects/incidents.js +29 -30
  541. package/dist/objects/lifecycle.d.ts +0 -4
  542. package/dist/objects/lifecycle.js +21 -24
  543. package/dist/objects/policies.d.ts +12 -16
  544. package/dist/objects/policies.js +17 -21
  545. package/dist/objects/processes.d.ts +16 -10
  546. package/dist/objects/processes.js +20 -15
  547. package/dist/objects/project-briefs.d.ts +13 -14
  548. package/dist/objects/project-briefs.js +33 -39
  549. package/dist/objects/skills.d.ts +10 -12
  550. package/dist/objects/skills.js +17 -22
  551. package/dist/postinstall.js +15 -7
  552. package/dist/predictions/planning-fallacy.d.ts +19 -6
  553. package/dist/predictions/planning-fallacy.js +4 -2
  554. package/dist/rerankers/clef.d.ts +8 -2
  555. package/dist/rerankers/clef.js +14 -9
  556. package/dist/rerankers/cross-encoder.d.ts +2 -1
  557. package/dist/rerankers/cross-encoder.js +9 -6
  558. package/dist/rerankers/index.js +2 -1
  559. package/dist/rerankers/jev.js +2 -1
  560. package/dist/rerankers/llm.d.ts +6 -2
  561. package/dist/rerankers/llm.js +8 -3
  562. package/dist/rerankers/remote.d.ts +3 -1
  563. package/dist/rerankers/remote.js +5 -2
  564. package/dist/rerankers/types.d.ts +6 -2
  565. package/dist/search/bm25-search.d.ts +3 -1
  566. package/dist/search/bm25-search.js +15 -2
  567. package/dist/search/boosts.js +4 -3
  568. package/dist/search/embed-memories.d.ts +10 -5
  569. package/dist/search/embed-memories.js +62 -36
  570. package/dist/search/engine.d.ts +4 -1
  571. package/dist/search/engine.js +6 -2
  572. package/dist/search/goal-boost.d.ts +10 -3
  573. package/dist/search/goal-boost.js +13 -6
  574. package/dist/search/hybrid-score.d.ts +4 -1
  575. package/dist/search/hybrid-score.js +4 -1
  576. package/dist/search/hybrid.d.ts +23 -8
  577. package/dist/search/hybrid.js +12 -7
  578. package/dist/search/multihop.js +14 -13
  579. package/dist/search/path-context.d.ts +10 -3
  580. package/dist/search/path-context.js +10 -3
  581. package/dist/search/physics-search.d.ts +9 -4
  582. package/dist/search/physics-search.js +38 -14
  583. package/dist/search/rerank.d.ts +2 -1
  584. package/dist/search/rerank.js +2 -1
  585. package/dist/search/rrf.d.ts +14 -5
  586. package/dist/search/rrf.js +11 -4
  587. package/dist/search/vector.d.ts +8 -2
  588. package/dist/search/vector.js +9 -3
  589. package/dist/server/auth.d.ts +18 -14
  590. package/dist/server/auth.js +69 -38
  591. package/dist/server/boot.d.ts +3 -1
  592. package/dist/server/boot.js +95 -56
  593. package/dist/server/client-ip.d.ts +11 -4
  594. package/dist/server/client-ip.js +27 -10
  595. package/dist/server/cursor.d.ts +10 -3
  596. package/dist/server/cursor.js +10 -3
  597. package/dist/server/deadline.d.ts +5 -2
  598. package/dist/server/deadline.js +10 -3
  599. package/dist/server/key-check-bounds.js +12 -4
  600. package/dist/server/lifecycle.d.ts +4 -1
  601. package/dist/server/lifecycle.js +10 -4
  602. package/dist/server/mcp-http.d.ts +2 -1
  603. package/dist/server/mcp-http.js +37 -22
  604. package/dist/server/rate-limit.d.ts +17 -5
  605. package/dist/server/rate-limit.js +55 -26
  606. package/dist/server/ready.js +7 -4
  607. package/dist/server/request.d.ts +15 -4
  608. package/dist/server/request.js +42 -15
  609. package/dist/server/route-checks.d.ts +4 -1
  610. package/dist/server/route-checks.js +8 -3
  611. package/dist/server/route-table.d.ts +8 -6
  612. package/dist/server/route-table.js +547 -93
  613. package/dist/server/routes/admin.d.ts +7 -7
  614. package/dist/server/routes/admin.js +36 -15
  615. package/dist/server/routes/customer-notes.d.ts +5 -5
  616. package/dist/server/routes/customer-notes.js +5 -4
  617. package/dist/server/routes/decisions.d.ts +5 -5
  618. package/dist/server/routes/decisions.js +12 -6
  619. package/dist/server/routes/incidents.d.ts +5 -5
  620. package/dist/server/routes/incidents.js +10 -4
  621. package/dist/server/routes/memories.d.ts +8 -8
  622. package/dist/server/routes/memories.js +12 -19
  623. package/dist/server/routes/object-routes.d.ts +8 -5
  624. package/dist/server/routes/object-routes.js +4 -2
  625. package/dist/server/routes/policies.d.ts +6 -6
  626. package/dist/server/routes/policies.js +11 -4
  627. package/dist/server/routes/predictions.d.ts +5 -5
  628. package/dist/server/routes/predictions.js +9 -4
  629. package/dist/server/routes/processes.d.ts +5 -5
  630. package/dist/server/routes/processes.js +15 -6
  631. package/dist/server/routes/project-briefs.d.ts +6 -6
  632. package/dist/server/routes/project-briefs.js +3 -2
  633. package/dist/server/routes/recall.d.ts +3 -3
  634. package/dist/server/routes/recall.js +21 -10
  635. package/dist/server/routes/skills.d.ts +6 -6
  636. package/dist/server/routes/skills.js +12 -4
  637. package/dist/server/server-detect.d.ts +24 -8
  638. package/dist/server/server-detect.js +57 -22
  639. package/dist/server/sleep-child.js +16 -10
  640. package/dist/server/sleep-offload.d.ts +8 -5
  641. package/dist/server/sleep-offload.js +41 -19
  642. package/dist/server/tls.d.ts +4 -1
  643. package/dist/server/tls.js +13 -5
  644. package/dist/server/types.d.ts +38 -26
  645. package/dist/server/validation.d.ts +4 -1
  646. package/dist/server/validation.js +22 -9
  647. package/dist/server.d.ts +15 -10
  648. package/dist/server.js +32 -12
  649. package/dist/sharing/global-store.d.ts +5 -10
  650. package/dist/sharing/global-store.js +8 -43
  651. package/dist/sharing/global-sync.d.ts +3 -1
  652. package/dist/sharing/global-sync.js +16 -6
  653. package/dist/sharing/project-merge.d.ts +25 -7
  654. package/dist/sharing/project-merge.js +49 -17
  655. package/dist/sharing/search-both.d.ts +8 -4
  656. package/dist/sharing/search-both.js +19 -12
  657. package/dist/sharing/share.d.ts +8 -4
  658. package/dist/sharing/share.js +39 -15
  659. package/dist/store/ambient.js +9 -5
  660. package/dist/store/audit-event.d.ts +2 -2
  661. package/dist/store/audit-event.js +8 -3
  662. package/dist/store/audit.d.ts +6 -3
  663. package/dist/store/audit.js +16 -6
  664. package/dist/store/auth.d.ts +4 -2
  665. package/dist/store/auth.js +63 -20
  666. package/dist/store/busy.d.ts +9 -0
  667. package/dist/store/busy.js +16 -0
  668. package/dist/store/candidates.d.ts +12 -5
  669. package/dist/store/candidates.js +75 -36
  670. package/dist/store/capture-write.d.ts +2 -1
  671. package/dist/store/capture-write.js +2 -1
  672. package/dist/store/card-detail.d.ts +4 -4
  673. package/dist/store/card-detail.js +15 -8
  674. package/dist/store/cards.d.ts +24 -10
  675. package/dist/store/cards.js +93 -60
  676. package/dist/store/compaction-caller.d.ts +2 -1
  677. package/dist/store/compaction-caller.js +2 -1
  678. package/dist/store/compactions-record.d.ts +14 -8
  679. package/dist/store/compactions-record.js +95 -32
  680. package/dist/store/compactions.js +35 -15
  681. package/dist/store/conflicts.d.ts +9 -4
  682. package/dist/store/conflicts.js +100 -45
  683. package/dist/store/connectors/dlq.d.ts +17 -5
  684. package/dist/store/connectors/dlq.js +56 -5
  685. package/dist/store/connectors/event-log.d.ts +111 -2
  686. package/dist/store/connectors/event-log.js +2 -1
  687. package/dist/store/connectors/github.d.ts +6 -3
  688. package/dist/store/connectors/github.js +24 -40
  689. package/dist/store/connectors/slack.d.ts +2 -1
  690. package/dist/store/connectors/slack.js +25 -37
  691. package/dist/store/dashboard-reads.d.ts +7 -3
  692. package/dist/store/dashboard-reads.js +32 -11
  693. package/dist/store/delete-and-batch.d.ts +17 -11
  694. package/dist/store/delete-and-batch.js +67 -26
  695. package/dist/store/delivery-recorder.d.ts +8 -5
  696. package/dist/store/delivery-recorder.js +70 -32
  697. package/dist/store/descendant-page.d.ts +2 -1
  698. package/dist/store/descendant-page.js +24 -9
  699. package/dist/store/diagnostics.d.ts +2 -1
  700. package/dist/store/diagnostics.js +2 -1
  701. package/dist/store/doctor-reads.d.ts +2 -1
  702. package/dist/store/doctor-reads.js +13 -5
  703. package/dist/store/dormant.d.ts +19 -11
  704. package/dist/store/dormant.js +40 -18
  705. package/dist/store/embeddings/index.d.ts +13 -9
  706. package/dist/store/embeddings/index.js +19 -12
  707. package/dist/store/entry-reads.d.ts +49 -20
  708. package/dist/store/entry-reads.js +181 -66
  709. package/dist/store/entry-row.d.ts +10 -6
  710. package/dist/store/entry-row.js +17 -12
  711. package/dist/store/entry-writes.d.ts +22 -10
  712. package/dist/store/entry-writes.js +41 -14
  713. package/dist/store/failure-log-at.js +1 -1
  714. package/dist/store/failure-log.d.ts +4 -2
  715. package/dist/store/failure-log.js +13 -6
  716. package/dist/store/gated-write.d.ts +3 -3
  717. package/dist/store/gated-write.js +3 -3
  718. package/dist/store/goals.d.ts +5 -4
  719. package/dist/store/goals.js +8 -10
  720. package/dist/store/graph-apply.d.ts +21 -0
  721. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  722. package/dist/store/graph-queue.d.ts +9 -6
  723. package/dist/store/graph-queue.js +15 -10
  724. package/dist/store/graph-reads.d.ts +16 -11
  725. package/dist/store/graph-reads.js +24 -15
  726. package/dist/store/graph-rows.d.ts +41 -3
  727. package/dist/store/graph-rows.js +10 -7
  728. package/dist/store/graph-view-rows.js +14 -7
  729. package/dist/store/graph-writes.d.ts +16 -10
  730. package/dist/store/graph-writes.js +59 -36
  731. package/dist/store/handoffs.d.ts +4 -4
  732. package/dist/store/handoffs.js +40 -19
  733. package/dist/store/index-and-stats.d.ts +2 -2
  734. package/dist/store/index-and-stats.js +6 -5
  735. package/dist/store/index.d.ts +3 -1
  736. package/dist/store/index.js +1 -0
  737. package/dist/store/key-audit.d.ts +2 -1
  738. package/dist/store/key-audit.js +2 -1
  739. package/dist/store/key-writes.d.ts +2 -1
  740. package/dist/store/key-writes.js +9 -2
  741. package/dist/store/ledger-turn.d.ts +4 -1
  742. package/dist/store/ledger-turn.js +7 -2
  743. package/dist/store/mirrors.d.ts +11 -4
  744. package/dist/store/mirrors.js +88 -16
  745. package/dist/store/narrow.d.ts +6 -0
  746. package/dist/store/narrow.js +11 -0
  747. package/dist/store/open.d.ts +4 -2
  748. package/dist/store/open.js +18 -9
  749. package/dist/store/pilot-arm.d.ts +2 -1
  750. package/dist/store/pilot-arm.js +18 -6
  751. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  752. package/dist/store/planning-fallacy-evidence.js +8 -5
  753. package/dist/store/port/agent-import.d.ts +62 -0
  754. package/dist/store/port/agent-import.js +2 -0
  755. package/dist/store/port/consolidation.d.ts +129 -0
  756. package/dist/store/port/consolidation.js +2 -0
  757. package/dist/store/port/learning.d.ts +19 -0
  758. package/dist/store/port/learning.js +2 -0
  759. package/dist/store/port/local-files.d.ts +18 -0
  760. package/dist/store/port/local-files.js +2 -0
  761. package/dist/store/port/promotion.d.ts +20 -0
  762. package/dist/store/port/promotion.js +3 -0
  763. package/dist/store/port-groups.d.ts +160 -0
  764. package/dist/store/port-groups.js +2 -0
  765. package/dist/store/port.d.ts +215 -229
  766. package/dist/store/port.js +3 -9
  767. package/dist/store/predictions.d.ts +14 -10
  768. package/dist/store/predictions.js +37 -17
  769. package/dist/store/project-tags.d.ts +4 -1
  770. package/dist/store/project-tags.js +16 -5
  771. package/dist/store/quality-repair.d.ts +8 -4
  772. package/dist/store/quality-repair.js +53 -20
  773. package/dist/store/quarantine.d.ts +1 -0
  774. package/dist/store/quarantine.js +23 -9
  775. package/dist/store/raw-archive.d.ts +5 -4
  776. package/dist/store/raw-archive.js +11 -10
  777. package/dist/store/recall-trace.d.ts +22 -17
  778. package/dist/store/recall-trace.js +126 -63
  779. package/dist/store/rejected-values.d.ts +15 -10
  780. package/dist/store/rejected-values.js +33 -12
  781. package/dist/store/rejection.d.ts +12 -11
  782. package/dist/store/rejection.js +18 -19
  783. package/dist/store/report-reads.d.ts +2 -1
  784. package/dist/store/report-reads.js +2 -1
  785. package/dist/store/rows.d.ts +7 -5
  786. package/dist/store/rows.js +18 -11
  787. package/dist/store/rule-sql.d.ts +6 -4
  788. package/dist/store/rule-sql.js +16 -9
  789. package/dist/store/search-rows.d.ts +14 -9
  790. package/dist/store/search-rows.js +48 -23
  791. package/dist/store/sessions.d.ts +12 -10
  792. package/dist/store/sessions.js +40 -21
  793. package/dist/store/set-aside.d.ts +2 -2
  794. package/dist/store/set-aside.js +18 -5
  795. package/dist/store/sqlite/agent-import.d.ts +3 -0
  796. package/dist/store/sqlite/agent-import.js +77 -0
  797. package/dist/store/sqlite/cards-group.d.ts +6 -0
  798. package/dist/store/sqlite/cards-group.js +37 -0
  799. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  800. package/dist/store/sqlite/conflicts-group.js +18 -0
  801. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  802. package/dist/store/sqlite/connector-events-group.js +17 -6
  803. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  804. package/dist/store/sqlite/connector-writes-group.js +9 -4
  805. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  806. package/dist/store/sqlite/consolidation-group.js +64 -0
  807. package/dist/store/sqlite/dag-reads-group.js +1 -1
  808. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  809. package/dist/store/sqlite/dormant-group.js +29 -0
  810. package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
  811. package/dist/store/sqlite/entry-writes-group.js +37 -14
  812. package/dist/store/sqlite/error-codec.d.ts +4 -2
  813. package/dist/store/sqlite/error-codec.js +32 -10
  814. package/dist/store/sqlite/executor-counts.js +2 -1
  815. package/dist/store/sqlite/executor.d.ts +8 -3
  816. package/dist/store/sqlite/executor.js +56 -18
  817. package/dist/store/sqlite/global-promote.d.ts +5 -0
  818. package/dist/store/sqlite/global-promote.js +48 -0
  819. package/dist/store/sqlite/goals-group.d.ts +6 -0
  820. package/dist/store/sqlite/goals-group.js +23 -0
  821. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  822. package/dist/store/sqlite/graph-reads-group.js +2 -1
  823. package/dist/store/sqlite/held-connection.d.ts +7 -1
  824. package/dist/store/sqlite/held-connection.js +34 -7
  825. package/dist/store/sqlite/last-recall-group.d.ts +4 -2
  826. package/dist/store/sqlite/last-recall-group.js +9 -4
  827. package/dist/store/sqlite/learning-group.d.ts +4 -0
  828. package/dist/store/sqlite/learning-group.js +17 -0
  829. package/dist/store/sqlite/maintenance-groups.js +2 -1
  830. package/dist/store/sqlite/object-rows.d.ts +6 -3
  831. package/dist/store/sqlite/object-rows.js +34 -5
  832. package/dist/store/sqlite/objects-group.d.ts +5 -4
  833. package/dist/store/sqlite/objects-group.js +84 -33
  834. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  835. package/dist/store/sqlite/predictions-group.js +4 -2
  836. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  837. package/dist/store/sqlite/promotion-group.js +10 -0
  838. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  839. package/dist/store/sqlite/quarantine-group.js +4 -2
  840. package/dist/store/sqlite/reports-group.d.ts +6 -0
  841. package/dist/store/sqlite/reports-group.js +33 -0
  842. package/dist/store/sqlite/request-scope.d.ts +6 -0
  843. package/dist/store/sqlite/request-scope.js +18 -0
  844. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  845. package/dist/store/sqlite/sessions-group.js +46 -0
  846. package/dist/store/sqlite/store.d.ts +22 -11
  847. package/dist/store/sqlite/store.js +84 -11
  848. package/dist/store/sqlite/vector-pack.js +2 -1
  849. package/dist/store/sqlite/vector-reads-group.js +2 -1
  850. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  851. package/dist/store/sqlite/worker-jobs.js +19 -7
  852. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  853. package/dist/store/sqlite/worker-ops.js +6 -3
  854. package/dist/store/sqlite/worker-store.d.ts +4 -3
  855. package/dist/store/sqlite/worker-store.js +24 -14
  856. package/dist/store/summaries.d.ts +19 -12
  857. package/dist/store/summaries.js +36 -21
  858. package/dist/store/summary-dirty.d.ts +2 -1
  859. package/dist/store/summary-dirty.js +2 -1
  860. package/dist/store/tenant.d.ts +3 -2
  861. package/dist/store/tenant.js +5 -4
  862. package/dist/store/token-ledger-rows.js +6 -3
  863. package/dist/store/token-ledger.d.ts +19 -13
  864. package/dist/store/token-ledger.js +27 -14
  865. package/dist/store/tombstone-checks.d.ts +4 -1
  866. package/dist/store/tombstone-checks.js +10 -1
  867. package/dist/store/usage-reports.js +2 -1
  868. package/dist/store/vector-index.d.ts +8 -5
  869. package/dist/store/vector-index.js +24 -10
  870. package/dist/store/working-memory.d.ts +6 -4
  871. package/dist/store/working-memory.js +14 -9
  872. package/dist/support-bundle.js +10 -5
  873. package/dist/trust/quarantine.d.ts +1 -2
  874. package/dist/trust/quarantine.js +1 -5
  875. package/dist/trust/reject-flow.d.ts +12 -3
  876. package/dist/trust/reject-flow.js +12 -4
  877. package/dist/util/anthropic-messages.d.ts +4 -1
  878. package/dist/util/anthropic-messages.js +14 -5
  879. package/dist/util/atomic-write.d.ts +4 -2
  880. package/dist/util/atomic-write.js +25 -14
  881. package/dist/util/compaction-items.d.ts +4 -1
  882. package/dist/util/compaction-items.js +8 -2
  883. package/dist/util/crash-handlers.d.ts +7 -2
  884. package/dist/util/crash-handlers.js +13 -4
  885. package/dist/util/env.d.ts +16 -4
  886. package/dist/util/env.js +78 -25
  887. package/dist/util/home-path.js +12 -6
  888. package/dist/util/hook-payload.d.ts +3 -1
  889. package/dist/util/hook-payload.js +3 -1
  890. package/dist/util/http-retry.d.ts +12 -6
  891. package/dist/util/http-retry.js +16 -6
  892. package/dist/util/http-util.d.ts +20 -5
  893. package/dist/util/http-util.js +28 -9
  894. package/dist/util/json.d.ts +4 -1
  895. package/dist/util/json.js +4 -1
  896. package/dist/util/keyset.js +2 -1
  897. package/dist/util/limits.js +4 -2
  898. package/dist/util/log.d.ts +13 -5
  899. package/dist/util/log.js +29 -6
  900. package/dist/util/net.d.ts +5 -0
  901. package/dist/util/net.js +19 -0
  902. package/dist/util/real-path.d.ts +2 -1
  903. package/dist/util/real-path.js +4 -3
  904. package/dist/util/request-scope.d.ts +11 -3
  905. package/dist/util/request-scope.js +13 -4
  906. package/dist/util/same-text.d.ts +10 -3
  907. package/dist/util/same-text.js +10 -3
  908. package/dist/util/secret-detect.d.ts +24 -7
  909. package/dist/util/secret-detect.js +49 -14
  910. package/dist/util/spawn-argv.d.ts +3 -1
  911. package/dist/util/spawn-argv.js +13 -4
  912. package/dist/util/sqlite-blocked.d.ts +15 -4
  913. package/dist/util/sqlite-blocked.js +19 -6
  914. package/dist/util/stored-json.d.ts +4 -1
  915. package/dist/util/stored-json.js +6 -2
  916. package/dist/util/stream-tee.d.ts +2 -1
  917. package/dist/util/stream-tee.js +8 -5
  918. package/dist/util/transcript-tail.d.ts +4 -1
  919. package/dist/util/transcript-tail.js +4 -1
  920. package/dist/util/version.d.ts +8 -3
  921. package/dist/util/version.js +8 -3
  922. package/dist/util/write-budget.d.ts +7 -2
  923. package/dist/util/write-budget.js +5 -2
  924. package/dist/util/yaml.d.ts +4 -1
  925. package/dist/util/yaml.js +4 -1
  926. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  927. package/extensions/openclaw-plugin/package.json +1 -1
  928. package/openclaw.plugin.json +1 -1
  929. package/package.json +2 -1
  930. package/scripts/postinstall.cjs +3 -1
  931. package/dist/api/cards.d.ts +0 -42
  932. package/dist/api/conflicts.d.ts +0 -28
  933. package/dist/api/conflicts.js +0 -61
  934. package/dist/api/dormant.d.ts +0 -14
  935. package/dist/api/dormant.js +0 -58
  936. package/dist/api/goals.d.ts +0 -18
  937. package/dist/api/graph.d.ts +0 -8
  938. package/dist/api/graph.js +0 -8
  939. package/dist/api/learn.js +0 -125
  940. package/dist/api/memories.d.ts +0 -25
  941. package/dist/api/objects.d.ts +0 -9
  942. package/dist/api/outcome.d.ts +0 -19
  943. package/dist/api/predictions.d.ts +0 -11
  944. package/dist/api/promote.d.ts +0 -36
  945. package/dist/api/recall-core.d.ts +0 -4
  946. package/dist/api/recall-core.js +0 -125
  947. package/dist/api/recall-finish.d.ts +0 -53
  948. package/dist/api/recall-finish.js +0 -30
  949. package/dist/api/recall-history.d.ts +0 -64
  950. package/dist/api/recall-history.js +0 -159
  951. package/dist/api/recall-record.d.ts +0 -43
  952. package/dist/api/recall-record.js +0 -78
  953. package/dist/api/recall-request.js +0 -121
  954. package/dist/api/recall.d.ts +0 -6
  955. package/dist/api/refine.d.ts +0 -7
  956. package/dist/api/refine.js +0 -10
  957. package/dist/api/session-owners.d.ts +0 -4
  958. package/dist/api/session-owners.js +0 -17
  959. package/dist/api/sleep-run.d.ts +0 -26
  960. package/dist/api/sleep.js +0 -11
  961. package/dist/graph/write.d.ts +0 -14
  962. package/dist/store/sqlite/busy.d.ts +0 -3
  963. package/dist/store/sqlite/busy.js +0 -8
  964. package/dist/store/sqlite/local.d.ts +0 -4
  965. package/dist/store/sqlite/local.js +0 -8
@@ -1,5 +1,7 @@
1
1
  import type { DatabaseSyncLike } from '../../db/index.js';
2
- import type { ConnectorEventRecord } from '../port.js';
2
+ import type { EntryWrite, RawArchive } from '../port.js';
3
+ import type { GitHubDlqInsert, GitHubRouting } from './github.js';
4
+ import type { SlackDlqInsert, SlackTeamRoute } from './slack.js';
3
5
  /** Which log table a connector writes and the column its dedupe key lives in. */
4
6
  export interface EventLogSpec {
5
7
  readonly table: 'slack_event_log' | 'github_event_log';
@@ -7,7 +9,114 @@ export interface EventLogSpec {
7
9
  }
8
10
  export declare function eventSeenAt(db: DatabaseSyncLike, log: EventLogSpec, key: string): boolean;
9
11
  export declare function eventMemoryAt(db: DatabaseSyncLike, log: EventLogSpec, key: string): string | null;
10
- /** Records the key unless a row holds it already; false means another writer got there first. `extra` pairs connector-only columns with values. */
12
+ /** Records the key unless a row holds it already; false means another writer got there first. `extra` pairs
13
+ * connector-only columns with values. */
11
14
  export declare function markEventSeenAt(db: DatabaseSyncLike, log: EventLogSpec, key: string, extra: ReadonlyArray<readonly [string, string]>, memoryId: string | null): boolean;
12
15
  export declare function eventRecord(hippoRoot: string, log: EventLogSpec, key: string): ConnectorEventRecord;
16
+ /** The source event a connector's write answers, by the source's own key. The store logs each key once per connector,
17
+ * across every tenant. */
18
+ export type ConnectorEvent = {
19
+ readonly connector: 'slack';
20
+ readonly eventId: string;
21
+ } | {
22
+ readonly connector: 'github';
23
+ readonly idempotencyKey: string;
24
+ readonly deliveryId: string;
25
+ readonly eventName: string;
26
+ };
27
+ /** An entry a connector brings in. `quarantine` is the review record of flagged content, whose entry already carries
28
+ * its quarantine scope. */
29
+ export interface ConnectorWrite extends EntryWrite {
30
+ readonly event?: ConnectorEvent;
31
+ readonly quarantine?: {
32
+ readonly originalScope: string | null;
33
+ readonly reason: string;
34
+ };
35
+ }
36
+ /** 'duplicate': the event's key was logged before; `memoryId` is the id its log row holds, null for an event logged
37
+ * with no memory. */
38
+ export type ConnectorWriteOutcome = {
39
+ readonly outcome: 'written';
40
+ } | {
41
+ readonly outcome: 'duplicate';
42
+ readonly memoryId: string | null;
43
+ };
44
+ export interface ConnectorArchive extends RawArchive {
45
+ readonly event: ConnectorEvent;
46
+ }
47
+ /** A connector's writes with the rows that must commit with them: the event log row
48
+ * that turns a redelivery into a no-op, and the quarantine record of flagged content. */
49
+ export interface ConnectorWrites {
50
+ /** entryWrites.writeEntry plus, in its transaction: with `quarantine`, one pending record and quarantine row; with
51
+ * `event`, one log row. All commit or none. A key logged before resolves 'duplicate' and stores nothing (never a
52
+ * rejection); every other refusal is writeEntry's own, decided first. */
53
+ writeConnectorEntry(write: ConnectorWrite): Promise<ConnectorWriteOutcome>;
54
+ /** entryWrites.archiveRaw plus, in its transaction, one log row for `event` naming the archived id, so a redelivery
55
+ * finds it logged; a failed log write undoes the archive. A key logged before keeps its row and does not stop the
56
+ * archive. Reach and every rejection are archiveRaw's own. */
57
+ archiveConnectorEntry(archive: ConnectorArchive): Promise<string>;
58
+ }
59
+ /** What the event log holds for one event's key; `memoryId` is null for an event logged with no memory. */
60
+ export type ConnectorEventRecord = {
61
+ readonly seen: false;
62
+ } | {
63
+ readonly seen: true;
64
+ readonly memoryId: string | null;
65
+ };
66
+ export interface DeletionLookup {
67
+ readonly event: ConnectorEvent;
68
+ readonly artifactRef: string;
69
+ readonly tenantId: string;
70
+ }
71
+ /** `memoryId` is null when the tenant holds no raw row for the artifact. */
72
+ export type DeletionTarget = {
73
+ readonly seen: true;
74
+ } | {
75
+ readonly seen: false;
76
+ readonly memoryId: string | null;
77
+ };
78
+ export interface ArtifactArchive {
79
+ readonly tenantId: string;
80
+ readonly actor: string;
81
+ readonly artifactRef: string;
82
+ readonly reason: string;
83
+ readonly event: Extract<ConnectorEvent, {
84
+ readonly connector: 'github';
85
+ }>;
86
+ }
87
+ /** One payload a webhook could not use, already redacted, for the dead-letter queue of its connector. */
88
+ export type ConnectorDeadLetter = ({
89
+ readonly connector: 'slack';
90
+ } & SlackDlqInsert) | ({
91
+ readonly connector: 'github';
92
+ } & GitHubDlqInsert);
93
+ /** What a connector delivery reads and writes beside connectorWrites: the event log,
94
+ * tenant routing, the dead-letter queue and the archive of a deleted artifact. */
95
+ export interface ConnectorEvents {
96
+ /** The log row of the event's key, in its connector's own key space. */
97
+ eventRecord(event: ConnectorEvent): Promise<ConnectorEventRecord>;
98
+ /** Logs an event that stored no memory, so its redelivery finds it. A key logged before keeps its row, the memory id
99
+ * it names included. */
100
+ markEventSeen(event: ConnectorEvent): Promise<void>;
101
+ /** Both reads on one snapshot: an event logged before answers `seen`, else the raw row the
102
+ * tenant holds for the artifact. Another tenant's row under the same ref is never returned. */
103
+ deletionTarget(lookup: DeletionLookup): Promise<DeletionTarget>;
104
+ /** A logged event answers `duplicate` and changes nothing. Else one transaction archives every raw row of the
105
+ * artifact (archive_raw row each, under `actor`) and logs the event naming the first, or no memory if none; one
106
+ * failed archive undoes all and the log row. No reach check. */
107
+ archiveDeletedArtifact(archive: ArtifactArchive): Promise<{
108
+ readonly duplicate: boolean;
109
+ readonly archived: number;
110
+ }>;
111
+ /** The tenant a Slack team is registered to, or how many workspaces are registered when it is not. */
112
+ slackTeamRoute(teamId: string): Promise<SlackTeamRoute>;
113
+ /** The tenant of the installation, or of the repository when no installation is named, with the size of both routing
114
+ * tables. */
115
+ githubRouting(query: {
116
+ readonly installationId?: string | null;
117
+ readonly repoFullName?: string | null;
118
+ }): Promise<GitHubRouting>;
119
+ /** Appends the row and answers its id. */
120
+ parkDeadLetter(letter: ConnectorDeadLetter): Promise<number>;
121
+ }
13
122
  //# sourceMappingURL=event-log.d.ts.map
@@ -9,7 +9,8 @@ export function eventMemoryAt(db, log, key) {
9
9
  const row = db.prepare(`SELECT memory_id FROM ${log.table} WHERE ${log.keyColumn} = ?`).get(key);
10
10
  return row?.memory_id ?? null;
11
11
  }
12
- /** Records the key unless a row holds it already; false means another writer got there first. `extra` pairs connector-only columns with values. */
12
+ /** Records the key unless a row holds it already; false means another writer got there first. `extra` pairs
13
+ * connector-only columns with values. */
13
14
  export function markEventSeenAt(db, log, key, extra, memoryId) {
14
15
  const names = [log.keyColumn, ...extra.map(([name]) => name), 'ingested_at', 'memory_id'];
15
16
  const values = [key, ...extra.map(([, value]) => value), new Date().toISOString(), memoryId];
@@ -22,7 +22,8 @@ export interface ArtifactDeletion {
22
22
  reason: string;
23
23
  who: string;
24
24
  }
25
- /** Archives every active raw row of one tenant's artifact and logs the delete event; a failed archive rolls back the batch and the log row. */
25
+ /** Archives every active raw row of one tenant's artifact and logs the delete event; a failed archive rolls back the
26
+ * batch and the log row. */
26
27
  export declare function archiveDeletedArtifact(hippoRoot: string, del: ArtifactDeletion): {
27
28
  duplicate: boolean;
28
29
  archived: number;
@@ -43,7 +44,8 @@ export interface DlqItem {
43
44
  retriedAt: string | null;
44
45
  bucket: DlqBucket | string;
45
46
  }
46
- /** One github_dlq row to write, already redacted by the caller; the four GitHub-only columns are stored NULL when left out. */
47
+ /** One github_dlq row to write, already redacted by the caller; the four GitHub-only columns are stored NULL when left
48
+ * out. */
47
49
  export interface GitHubDlqInsert {
48
50
  tenantId: string;
49
51
  rawPayload: string;
@@ -59,7 +61,8 @@ export declare function insertGitHubDlq(hippoRoot: string, row: GitHubDlqInsert)
59
61
  export declare function listGitHubDlq(hippoRoot: string, tenantId: string, limit: number): DlqItem[];
60
62
  export declare function githubDlqEntry(hippoRoot: string, id: number): DlqItem | null;
61
63
  export declare function markGitHubDlqRetried(hippoRoot: string, id: number): void;
62
- /** What the routing tables say about one webhook; `tenant` is the installation match, or the repo match when no installation was sent. */
64
+ /** What the routing tables say about one webhook; `tenant` is the installation match, or the repo match when no
65
+ * installation was sent. */
63
66
  export interface GitHubRouting {
64
67
  installations: number;
65
68
  repositories: number;
@@ -3,7 +3,7 @@ import { withWriteScope } from '../../db/index.js';
3
3
  import { archiveRawMemory } from '../raw-archive.js';
4
4
  import { onHandle } from '../open.js';
5
5
  import { eventMemoryAt, eventRecord, eventSeenAt, markEventSeenAt } from './event-log.js';
6
- import { getDlqRow, insertDlqRow, listDlqRows, markDlqRetried } from './dlq.js';
6
+ import { dlqAccess } from './dlq.js';
7
7
  const GITHUB_LOG = { table: 'github_event_log', keyColumn: 'idempotency_key' };
8
8
  export function githubEventSeenAt(db, idempotencyKey) {
9
9
  return eventSeenAt(db, GITHUB_LOG, idempotencyKey);
@@ -21,7 +21,8 @@ export function githubEventRecord(hippoRoot, idempotencyKey) {
21
21
  export function markGitHubEventSeen(hippoRoot, entry) {
22
22
  onHandle(hippoRoot, (db) => { markGitHubEventSeenAt(db, entry); });
23
23
  }
24
- /** Archives every active raw row of one tenant's artifact and logs the delete event; a failed archive rolls back the batch and the log row. */
24
+ /** Archives every active raw row of one tenant's artifact and logs the delete event; a failed archive rolls back the
25
+ * batch and the log row. */
25
26
  export function archiveDeletedArtifact(hippoRoot, del) {
26
27
  return onHandle(hippoRoot, (db) => {
27
28
  if (githubEventSeenAt(db, del.idempotencyKey))
@@ -45,50 +46,32 @@ export function archiveDeletedArtifact(hippoRoot, del) {
45
46
  return { duplicate: false, archived: memoryIds.length };
46
47
  });
47
48
  }
48
- const SELECT_COLUMNS = `id, tenant_id, raw_payload, error, event_name, delivery_id,
49
- signature, installation_id, repo_full_name, retry_count,
50
- received_at, retried_at, bucket`;
51
- function rowToItem(r) {
52
- return {
53
- id: Number(r.id),
54
- tenantId: String(r.tenant_id),
55
- rawPayload: String(r.raw_payload),
56
- error: String(r.error),
57
- eventName: r.event_name == null ? null : String(r.event_name),
58
- deliveryId: r.delivery_id == null ? null : String(r.delivery_id),
59
- signature: r.signature == null ? null : String(r.signature),
60
- installationId: r.installation_id == null ? null : String(r.installation_id),
61
- repoFullName: r.repo_full_name == null ? null : String(r.repo_full_name),
62
- retryCount: Number(r.retry_count ?? 0),
63
- receivedAt: String(r.received_at),
64
- retriedAt: r.retried_at == null ? null : String(r.retried_at),
65
- bucket: r.bucket == null ? 'parse_error' : String(r.bucket),
66
- };
67
- }
49
+ const DLQ = dlqAccess('github_dlq', [
50
+ { field: 'id', column: 'id', kind: 'int' },
51
+ { field: 'tenantId', column: 'tenant_id', kind: 'text', insert: true },
52
+ { field: 'rawPayload', column: 'raw_payload', kind: 'text', insert: true },
53
+ { field: 'error', column: 'error', kind: 'text', insert: true },
54
+ { field: 'eventName', column: 'event_name', kind: 'nullableText', insert: true },
55
+ { field: 'deliveryId', column: 'delivery_id', kind: 'nullableText', insert: true },
56
+ { field: 'signature', column: 'signature', kind: 'nullableText', insert: true },
57
+ { field: 'installationId', column: 'installation_id', kind: 'nullableText', insert: true },
58
+ { field: 'repoFullName', column: 'repo_full_name', kind: 'nullableText', insert: true },
59
+ { field: 'retryCount', column: 'retry_count', kind: 'count' },
60
+ { field: 'receivedAt', column: 'received_at', kind: 'text' },
61
+ { field: 'retriedAt', column: 'retried_at', kind: 'nullableText' },
62
+ { field: 'bucket', column: 'bucket', kind: 'bucket', insert: true },
63
+ ]);
68
64
  export function insertGitHubDlq(hippoRoot, row) {
69
- return onHandle(hippoRoot, (db) => insertDlqRow(db, 'github_dlq', [
70
- ['tenant_id', row.tenantId],
71
- ['raw_payload', row.rawPayload],
72
- ['error', row.error],
73
- ['event_name', row.eventName ?? null],
74
- ['delivery_id', row.deliveryId ?? null],
75
- ['signature', row.signature],
76
- ['installation_id', row.installationId ?? null],
77
- ['repo_full_name', row.repoFullName ?? null],
78
- ['bucket', row.bucket],
79
- ]));
65
+ return onHandle(hippoRoot, (db) => DLQ.insert(db, row));
80
66
  }
81
67
  export function listGitHubDlq(hippoRoot, tenantId, limit) {
82
- return onHandle(hippoRoot, (db) => listDlqRows(db, 'github_dlq', SELECT_COLUMNS, tenantId, limit).map(rowToItem));
68
+ return onHandle(hippoRoot, (db) => DLQ.list(db, tenantId, limit));
83
69
  }
84
70
  export function githubDlqEntry(hippoRoot, id) {
85
- return onHandle(hippoRoot, (db) => {
86
- const row = getDlqRow(db, 'github_dlq', SELECT_COLUMNS, id);
87
- return row ? rowToItem(row) : null;
88
- });
71
+ return onHandle(hippoRoot, (db) => DLQ.get(db, id));
89
72
  }
90
73
  export function markGitHubDlqRetried(hippoRoot, id) {
91
- onHandle(hippoRoot, (db) => markDlqRetried(db, 'github_dlq', id));
74
+ onHandle(hippoRoot, (db) => DLQ.markRetried(db, id));
92
75
  }
93
76
  export function githubRouting(hippoRoot, args) {
94
77
  return onHandle(hippoRoot, (db) => {
@@ -143,7 +126,8 @@ export function writeHwm(hippoRoot, tenantId, repo, column, value) {
143
126
  /** Sets all three HWMs to `since` for a first run; COALESCE keeps any HWM a stream has already saved. */
144
127
  export function seedCursors(hippoRoot, tenantId, repo, since) {
145
128
  onHandle(hippoRoot, (db) => {
146
- db.prepare(`INSERT INTO github_cursors (tenant_id, repo_full_name, issues_hwm, issue_comments_hwm, pr_review_comments_hwm, updated_at)
129
+ db.prepare(`INSERT INTO github_cursors (tenant_id, repo_full_name, issues_hwm, issue_comments_hwm, ` +
130
+ `pr_review_comments_hwm, updated_at)
147
131
  VALUES (?, ?, ?, ?, ?, ?)
148
132
  ON CONFLICT(tenant_id, repo_full_name) DO UPDATE SET
149
133
  issues_hwm = COALESCE(github_cursors.issues_hwm, excluded.issues_hwm),
@@ -10,7 +10,8 @@ export declare function markSlackEventSeenAt(db: DatabaseSyncLike, eventId: stri
10
10
  export declare function slackEventMemoryAt(db: DatabaseSyncLike, eventId: string): string | null;
11
11
  export declare function slackEventRecord(hippoRoot: string, eventId: string): ConnectorEventRecord;
12
12
  export declare function markSlackEventSeen(hippoRoot: string, eventId: string, memoryId: string | null): void;
13
- /** The raw memory a Slack message became. The tenant filter keeps one tenant's deletion from reaching another's row with the same ref. */
13
+ /** The raw memory a Slack message became. The tenant filter keeps one tenant's deletion from reaching another's row
14
+ * with the same ref. */
14
15
  export declare function rawMemoryIdForArtifactAt(db: DatabaseSyncLike, artifactRef: string, tenantId: string): string | null;
15
16
  export type DlqBucket = 'parse_error' | 'unroutable' | 'signature_fail';
16
17
  export interface DlqItem {
@@ -1,8 +1,9 @@
1
- // Every statement the Slack connector runs on hippo.db: backfill cursors, the event log, the dead-letter queue and workspace routing.
2
- // `xAt(db, ...)` runs on the caller's handle; the same name without `At` opens hippo.db for that one call.
1
+ // Every statement the Slack connector runs on hippo.db: backfill cursors, the event log, the dead-letter queue and
2
+ // workspace routing. `xAt(db, ...)` runs on the caller's handle; the same name without `At` opens hippo.db for that one
3
+ // call.
3
4
  import { onHandle } from '../open.js';
4
5
  import { eventMemoryAt, eventRecord, eventSeenAt, markEventSeenAt } from './event-log.js';
5
- import { getDlqRow, insertDlqRow, listDlqRows, markDlqRetried } from './dlq.js';
6
+ import { dlqAccess } from './dlq.js';
6
7
  // Backfill cursors
7
8
  export function slackCursorAt(db, tenantId, channelId) {
8
9
  // SAFETY: the SELECT names the single `latest_ts` column; sqlite returns undefined when no row matches.
@@ -13,7 +14,8 @@ export function slackCursorAt(db, tenantId, channelId) {
13
14
  }
14
15
  export function saveSlackCursorAt(db, tenantId, channelId, latestTs) {
15
16
  db.prepare(`INSERT INTO slack_cursors (tenant_id, channel_id, latest_ts, updated_at) VALUES (?,?,?,?)
16
- ON CONFLICT(tenant_id, channel_id) DO UPDATE SET latest_ts = excluded.latest_ts, updated_at = excluded.updated_at`).run(tenantId, channelId, latestTs, new Date().toISOString());
17
+ ON CONFLICT(tenant_id, channel_id) DO UPDATE SET latest_ts = excluded.latest_ts, updated_at =
18
+ excluded.updated_at`).run(tenantId, channelId, latestTs, new Date().toISOString());
17
19
  }
18
20
  export function slackCursor(hippoRoot, tenantId, channelId) {
19
21
  return onHandle(hippoRoot, (db) => slackCursorAt(db, tenantId, channelId));
@@ -40,7 +42,8 @@ export function markSlackEventSeen(hippoRoot, eventId, memoryId) {
40
42
  onHandle(hippoRoot, (db) => markSlackEventSeenAt(db, eventId, memoryId));
41
43
  }
42
44
  // Deletion lookup
43
- /** The raw memory a Slack message became. The tenant filter keeps one tenant's deletion from reaching another's row with the same ref. */
45
+ /** The raw memory a Slack message became. The tenant filter keeps one tenant's deletion from reaching another's row
46
+ * with the same ref. */
44
47
  export function rawMemoryIdForArtifactAt(db, artifactRef, tenantId) {
45
48
  // SAFETY: the SELECT projects only `id`; .get() returns undefined when no row matches.
46
49
  const row = db
@@ -48,45 +51,30 @@ export function rawMemoryIdForArtifactAt(db, artifactRef, tenantId) {
48
51
  .get(artifactRef, tenantId);
49
52
  return row?.id ?? null;
50
53
  }
51
- const SELECT_COLUMNS = `id, tenant_id, team_id, raw_payload, error, received_at, retried_at,
52
- bucket, retry_count, signature, slack_timestamp`;
53
- function rowToItem(r) {
54
- return {
55
- id: Number(r.id),
56
- tenantId: String(r.tenant_id),
57
- teamId: r.team_id == null ? null : String(r.team_id),
58
- rawPayload: String(r.raw_payload),
59
- error: String(r.error),
60
- receivedAt: String(r.received_at),
61
- retriedAt: r.retried_at == null ? null : String(r.retried_at),
62
- bucket: r.bucket == null ? 'parse_error' : String(r.bucket),
63
- retryCount: Number(r.retry_count ?? 0),
64
- signature: r.signature == null ? null : String(r.signature),
65
- slackTimestamp: r.slack_timestamp == null ? null : String(r.slack_timestamp),
66
- };
67
- }
54
+ const DLQ = dlqAccess('slack_dlq', [
55
+ { field: 'id', column: 'id', kind: 'int' },
56
+ { field: 'tenantId', column: 'tenant_id', kind: 'text', insert: true },
57
+ { field: 'teamId', column: 'team_id', kind: 'nullableText', insert: true },
58
+ { field: 'rawPayload', column: 'raw_payload', kind: 'text', insert: true },
59
+ { field: 'error', column: 'error', kind: 'text', insert: true },
60
+ { field: 'receivedAt', column: 'received_at', kind: 'text' },
61
+ { field: 'retriedAt', column: 'retried_at', kind: 'nullableText' },
62
+ { field: 'bucket', column: 'bucket', kind: 'bucket', insert: true },
63
+ { field: 'retryCount', column: 'retry_count', kind: 'count' },
64
+ { field: 'signature', column: 'signature', kind: 'nullableText', insert: true },
65
+ { field: 'slackTimestamp', column: 'slack_timestamp', kind: 'nullableText', insert: true },
66
+ ]);
68
67
  export function insertSlackDlq(hippoRoot, row) {
69
- return onHandle(hippoRoot, (db) => insertDlqRow(db, 'slack_dlq', [
70
- ['tenant_id', row.tenantId],
71
- ['team_id', row.teamId ?? null],
72
- ['raw_payload', row.rawPayload],
73
- ['error', row.error],
74
- ['bucket', row.bucket],
75
- ['signature', row.signature],
76
- ['slack_timestamp', row.slackTimestamp ?? null],
77
- ]));
68
+ return onHandle(hippoRoot, (db) => DLQ.insert(db, row));
78
69
  }
79
70
  export function listSlackDlq(hippoRoot, tenantId, limit) {
80
- return onHandle(hippoRoot, (db) => listDlqRows(db, 'slack_dlq', SELECT_COLUMNS, tenantId, limit).map(rowToItem));
71
+ return onHandle(hippoRoot, (db) => DLQ.list(db, tenantId, limit));
81
72
  }
82
73
  export function slackDlqEntry(hippoRoot, id) {
83
- return onHandle(hippoRoot, (db) => {
84
- const row = getDlqRow(db, 'slack_dlq', SELECT_COLUMNS, id);
85
- return row ? rowToItem(row) : null;
86
- });
74
+ return onHandle(hippoRoot, (db) => DLQ.get(db, id));
87
75
  }
88
76
  export function markSlackDlqRetried(hippoRoot, id) {
89
- onHandle(hippoRoot, (db) => markDlqRetried(db, 'slack_dlq', id));
77
+ onHandle(hippoRoot, (db) => DLQ.markRetried(db, id));
90
78
  }
91
79
  export function slackTeamRouteAt(db, teamId) {
92
80
  // SAFETY: the SELECT names only `tenant_id`; .get() returns undefined when no row matches.
@@ -13,15 +13,19 @@ export interface DashboardRows {
13
13
  }
14
14
  /** One tenant's live rows and the counts of the rest, read in one transaction so the two agree. */
15
15
  export declare function loadDashboardRows(hippoRoot: string, tenantId: string): DashboardRows;
16
- /** The dashboard's one read-only connection, kept across refreshes for the commit signal; it opens on the first read that finds a database. */
16
+ /** The dashboard's one read-only connection, kept across refreshes for the commit signal; it opens on the first read
17
+ * that finds a database. */
17
18
  export declare class DashboardConnection {
18
19
  private readonly hippoRoot;
19
20
  private db;
20
21
  constructor(hippoRoot: string);
21
22
  /** `PRAGMA data_version`, which moves when another connection commits; null while the store has no hippo.db. */
22
23
  dataVersion(): number | null;
23
- /** Ids with a stored vector: none before the connection opens, null on a store older than the vector table (schema v52). */
24
- embeddedIds(): ReadonlySet<string> | null;
24
+ /** Ids of the tenant's rows with a stored vector: none before the connection opens, null on a store older than the
25
+ * vector table (schema v52). */
26
+ embeddedIds(tenantId: string): ReadonlySet<string> | null;
27
+ /** Whether `id` has a stored vector, whatever its tenant and whether or not a memory row holds it. */
28
+ hasVector(id: string): boolean;
25
29
  close(): void;
26
30
  }
27
31
  //# sourceMappingURL=dashboard-reads.d.ts.map
@@ -1,18 +1,22 @@
1
- // The dashboard snapshot's read of one tenant: live rows with only the columns it shows, and SQL counts of the rows it leaves out.
1
+ // The dashboard snapshot's read of one tenant: live rows with only
2
+ // the columns it shows, and SQL counts of the rows it leaves out.
2
3
  import * as fs from 'fs';
3
4
  import { closeHippoDb, getHippoDbPath, openHippoDbReadOnly } from '../db/index.js';
4
5
  import { withReadSnapshot } from '../db/busy.js';
5
6
  import { pragmaDataVersion } from '../db/meta.js';
6
7
  import { tableExists } from '../db/tables.js';
7
- import { storedVectorIds } from '../db/vector-store.js';
8
8
  import { onHandle, openStore } from './open.js';
9
9
  import { QUARANTINE_SCOPE_PREFIX } from './quarantine.js';
10
10
  import { parseJsonArray } from './rows.js';
11
- // Full content stays: dashboard-snapshot's Fact.lower serves search over the whole text, so a preview would change which rows match.
12
- const LIVE_COLUMNS = 'id, created, last_retrieved, retrieval_count, half_life_days, layer, tags_json, emotional_valence, outcome_positive, ' +
11
+ // Full content stays: dashboard-snapshot's Fact.lower serves search over the whole text, so a preview would change
12
+ // which rows match.
13
+ const LIVE_COLUMNS = 'id, created, last_retrieved, retrieval_count, half_life_days, ' +
14
+ 'layer, tags_json, emotional_valence, outcome_positive, ' +
13
15
  'outcome_negative, pinned, confidence, content, superseded_by, kind, scope, origin_project';
14
- // SQL twins of isQuarantineScope and of the two halves of isLiveMemory; substr compares bytes, as startsWith does, where LIKE would fold case.
15
- const QUARANTINED = `(scope IS NOT NULL AND substr(scope, 1, ${QUARANTINE_SCOPE_PREFIX.length}) = '${QUARANTINE_SCOPE_PREFIX}')`;
16
+ // SQL twins of isQuarantineScope and of the two halves of isLiveMemory; substr compares bytes, as startsWith does,
17
+ // where LIKE would fold case.
18
+ const QUARANTINED = `(scope IS NOT NULL ` +
19
+ `AND substr(scope, 1, ${QUARANTINE_SCOPE_PREFIX.length}) = '${QUARANTINE_SCOPE_PREFIX}')`;
16
20
  const SUPERSEDED_BY = `(superseded_by IS NOT NULL AND superseded_by <> '')`;
17
21
  const KIND = `COALESCE(kind, 'distilled')`;
18
22
  const LIVE = `NOT ${SUPERSEDED_BY} AND ${KIND} IN ('raw', 'distilled') AND NOT ${QUARANTINED}`;
@@ -44,7 +48,9 @@ export function loadDashboardRows(hippoRoot, tenantId) {
44
48
  return onHandle(hippoRoot, (db) => {
45
49
  return withReadSnapshot(db, () => {
46
50
  // SAFETY: the SELECT names exactly LiveRow's columns.
47
- const live = db.prepare(`SELECT ${LIVE_COLUMNS} FROM memories WHERE tenant_id = ? AND ${LIVE} ORDER BY created ASC, id ASC`).all(tenantId);
51
+ const live = db
52
+ .prepare(`SELECT ${LIVE_COLUMNS} FROM memories WHERE tenant_id = ? AND ${LIVE} ORDER BY created ASC, id ASC`)
53
+ .all(tenantId);
48
54
  // SAFETY: the SELECT names exactly these two fields, and `why` is one of the three CASE arms or NULL.
49
55
  const counts = db.prepare(`\n SELECT CASE WHEN ${QUARANTINED} THEN 'quarantined' ` +
50
56
  `WHEN ${SUPERSEDED_BY} OR ${KIND} = 'superseded' THEN 'superseded' ` +
@@ -59,7 +65,8 @@ export function loadDashboardRows(hippoRoot, tenantId) {
59
65
  });
60
66
  }, openStore);
61
67
  }
62
- /** The dashboard's one read-only connection, kept across refreshes for the commit signal; it opens on the first read that finds a database. */
68
+ /** The dashboard's one read-only connection, kept across refreshes for the commit signal; it opens on the first read
69
+ * that finds a database. */
63
70
  export class DashboardConnection {
64
71
  hippoRoot;
65
72
  db = null;
@@ -75,11 +82,25 @@ export class DashboardConnection {
75
82
  }
76
83
  return pragmaDataVersion(this.db);
77
84
  }
78
- /** Ids with a stored vector: none before the connection opens, null on a store older than the vector table (schema v52). */
79
- embeddedIds() {
85
+ /** Ids of the tenant's rows with a stored vector: none before the connection opens, null on a store older than the
86
+ * vector table (schema v52). */
87
+ embeddedIds(tenantId) {
80
88
  if (this.db === null)
81
89
  return new Set();
82
- return tableExists(this.db, 'memory_vectors') ? storedVectorIds(this.db) : null;
90
+ if (!tableExists(this.db, 'memory_vectors'))
91
+ return null;
92
+ // SAFETY: the SELECT names the one TEXT id column.
93
+ const rows = this.db
94
+ .prepare('SELECT m.id FROM memories m WHERE m.tenant_id = ? ' +
95
+ 'AND EXISTS (SELECT 1 FROM memory_vectors v WHERE v.memory_id = m.id)')
96
+ .all(tenantId);
97
+ return new Set(rows.map((row) => row.id));
98
+ }
99
+ /** Whether `id` has a stored vector, whatever its tenant and whether or not a memory row holds it. */
100
+ hasVector(id) {
101
+ if (this.db === null || !tableExists(this.db, 'memory_vectors'))
102
+ return false;
103
+ return this.db.prepare('SELECT 1 FROM memory_vectors WHERE memory_id = ?').get(id) !== undefined;
83
104
  }
84
105
  close() {
85
106
  if (this.db !== null)
@@ -2,14 +2,17 @@ import { type MemoryEntry } from '../core/memory.js';
2
2
  import { openHippoDb, type DatabaseSyncLike } from '../db/index.js';
3
3
  import { type DormantMove } from './dormant.js';
4
4
  import { type WriteBudget } from '../util/write-budget.js';
5
- /** Tables whose rows keep a first-class object's backing memory in `memory_id` (ON DELETE SET NULL); tests/dormant-memories.test.ts pins it to the schema. */
5
+ /** Tables whose rows keep a first-class object's backing memory in `memory_id` (ON DELETE SET NULL);
6
+ * tests/dormant-memories.test.ts pins it to the schema. */
6
7
  export declare const MEMORY_BACKED_TABLES: readonly ["predictions", "decisions", "incidents", "processes", "policies", "skills", "project_briefs", "customer_notes"];
7
- /** Ids of memories that back a first-class object, for passes that plan deletes before making them. A table missing from an older schema is skipped. */
8
+ /** Ids of memories that back a first-class object, for passes that plan deletes before making them. A table missing
9
+ * from an older schema is skipped. */
8
10
  export declare function memoriesBackingObjects(hippoRoot: string): Set<string>;
9
11
  /** memoriesBackingObjects on the caller's handle. */
10
12
  export declare function memoriesBackingObjectsOn(db: DatabaseSyncLike): Set<string>;
11
- /** db-scoped delete core, composable inside a caller's transaction; NO filesystem I/O, mirrors are written post-commit. `suppressForgetAudit` is set by
12
- * rejectValue and resolveConflict (own audit row). Returns `{tenantId, dagParentId}`, or null if absent or `automatic` refused it. */
13
+ /** db-scoped delete core, composable inside a caller's transaction; NO filesystem I/O, mirrors are written post-commit.
14
+ * `suppressForgetAudit` is set by rejectValue and resolveConflict (own audit row). Returns `{tenantId, dagParentId}`,
15
+ * or null if absent or `automatic` refused it. */
13
16
  export declare function deleteEntryCore(db: ReturnType<typeof openHippoDb>, id: string, opts?: {
14
17
  actor?: string;
15
18
  suppressForgetAudit?: boolean;
@@ -20,22 +23,25 @@ export declare function deleteEntryCore(db: ReturnType<typeof openHippoDb>, id:
20
23
  dagParentId: string | null;
21
24
  } | null;
22
25
  /** Delete an entry from SQLite and mirrors; thin wrapper over `deleteEntryCore` (open, core, mirrors, close).
23
- * `opts.actor` defaults to 'cli'; the api layer threads `ctx.actor` so HTTP callers land as `api_key:<key_id>` in the audit log. */
26
+ * `opts.actor` defaults to 'cli'; the api layer threads `ctx.actor` so HTTP callers land as `api_key:<key_id>` in the
27
+ * audit log. */
24
28
  export declare function deleteEntry(hippoRoot: string, id: string, opts?: {
25
29
  actor?: string;
26
30
  reason?: string;
27
31
  automatic?: boolean;
28
32
  }): boolean;
29
- /** deleteEntry with `automatic` for each removal and its own forget row and reason, all in one transaction after one read of the id set.
30
- * Returns the ids deleted, in `removals` order; a missing, repeated, pinned, raw or object-backing id is left out. */
33
+ /** deleteEntry with `automatic` for each removal and its own forget row and reason, all in one transaction after one
34
+ * read of the id set. Returns the ids deleted, in `removals` order; a missing, repeated, pinned, raw or object-backing
35
+ * id is left out. */
31
36
  export declare function deleteEntriesAutomatically(hippoRoot: string, removals: readonly {
32
37
  id: string;
33
38
  reason: string;
34
39
  }[], actor: string): string[];
35
40
  /** Each row as the caller loaded it, by id; a `ReadonlyMap` fits. */
36
41
  export type LoadedRows = Pick<ReadonlyMap<string, MemoryEntry>, 'get'>;
37
- /** Writes, deletes and dormant moves in one transaction. With `snapshot`, a write keeps only the fields the caller changed and never resurrects a gone row.
38
- * Dormant moves (src/store/dormant.ts) leave `memories` like a delete; both skip rows no longer auto-deletable. Returns ids that left `memories`. */
42
+ /** Writes, deletes and dormant moves in one transaction. With `snapshot`, a write keeps only the fields the caller
43
+ * changed and never resurrects a gone row. Dormant moves (src/store/dormant.ts) leave `memories` like a delete; both
44
+ * skip rows no longer auto-deletable. Returns ids that left `memories`. */
39
45
  export declare function batchWriteAndDelete(hippoRoot: string, toWrite: MemoryEntry[], toDeleteIds: string[], opts?: {
40
46
  snapshot?: ReadonlyMap<string, MemoryEntry>;
41
47
  dormant?: DormantMove[];
@@ -56,8 +62,8 @@ export declare function deleteEntriesOneByOne(hippoRoot: string, targets: readon
56
62
  actor?: string;
57
63
  automatic?: boolean;
58
64
  }): boolean[];
59
- /** Commits whole components in transactions of about `budget.holdMs`, letting other writers in between; returns the ids that left `memories`.
60
- * The snapshot keeps what other writers changed after the caller loaded its rows. */
65
+ /** Commits whole components in transactions of about `budget.holdMs`, letting other writers in between; returns the ids
66
+ * that left `memories`. The snapshot keeps what other writers changed after the caller loaded its rows. */
61
67
  export declare function commitInChunks(hippoRoot: string, components: readonly FlushComponent[], opts: {
62
68
  snapshot: LoadedRows;
63
69
  budget: WriteBudget;