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