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
@@ -3,9 +3,11 @@ export declare function getCurrentSchemaVersion(): number;
3
3
  /** Thrown by {@link assertBinaryCompatible}; doctor uses it to pick the upgrade fix over a generic permissions fix. */
4
4
  export declare class IncompatibleBinaryError extends Error {
5
5
  }
6
- /** Refuse a store stamped for a newer binary. Fails closed: runMigrations creates meta first, so a failed read is a real error. */
6
+ /** Refuse a store stamped for a newer binary. Fails closed:
7
+ * runMigrations creates meta first, so a failed read is a real error. */
7
8
  export declare function assertBinaryCompatible(db: DatabaseSyncLike): void;
8
- /** The fast path's single probe: versions, the binary minimum, the FTS flag, and counts of the meta defaults and required objects. */
9
+ /** The fast path's single probe: versions, the binary minimum, the
10
+ * FTS flag, and counts of the meta defaults and required objects. */
9
11
  export declare const SCHEMA_PROBE_SQL: string;
10
12
  /** What the probe of a current store read beyond the schema proof, so the same open need not read them again. */
11
13
  export interface OpenFacts {
@@ -13,13 +15,16 @@ export interface OpenFacts {
13
15
  readonly archiveTop: number;
14
16
  readonly hasMemories: boolean;
15
17
  }
16
- /** Brings the store to the current schema; returns the probe's facts when it was current already, null after any repair. */
18
+ /** Brings the store to the current schema; returns the probe's
19
+ * facts when it was current already, null after any repair. */
17
20
  export declare function runMigrations(db: DatabaseSyncLike, hippoRoot?: string, busyWaitMs?: number): OpenFacts | null;
18
- /** Row counts of `memories` and its full-text index, which differ once the index drifts; null when either table is missing. */
21
+ /** Row counts of `memories` and its full-text index, which differ
22
+ * once the index drifts; null when either table is missing. */
19
23
  export declare function ftsRowCounts(db: DatabaseSyncLike): {
20
24
  memories: number;
21
25
  fts: number;
22
26
  } | null;
23
- /** Re-syncs `memories_fts` with `memories` when their counts differ and returns whether it did; sleep runs it because a fast open does not. */
27
+ /** Re-syncs `memories_fts` with `memories` when their counts differ and returns whether it did; sleep runs it
28
+ * because a fast open does not. */
24
29
  export declare function repairFtsDrift(db: DatabaseSyncLike): boolean;
25
30
  //# sourceMappingURL=migrate.d.ts.map
@@ -4,7 +4,7 @@ import { importLegacyEmbeddingIndex } from './vector-store.js';
4
4
  import { execWithBusyRetry, withWriteScope } from './busy.js';
5
5
  import { tableExists } from './tables.js';
6
6
  import { ensureMetaTable, getMeta, getSchemaVersion, setMeta, setSchemaVersion } from './meta.js';
7
- import { MEMORIES_FTS_DDL, REQUIRED_SCHEMA_OBJECTS, ensureContinuityIndexes, ensureContinuityTables } from './continuity.js';
7
+ import { MEMORIES_FTS_DDL, REQUIRED_SCHEMA_OBJECTS, ensureContinuityIndexes, ensureContinuityTables, } from './continuity.js';
8
8
  import { CURRENT_SCHEMA_VERSION, MIGRATIONS } from './migrations/index.js';
9
9
  import { placeholders } from '../util/sql.js';
10
10
  export function getCurrentSchemaVersion() {
@@ -15,11 +15,14 @@ export class IncompatibleBinaryError extends Error {
15
15
  }
16
16
  function assertMinBinary(minRequired) {
17
17
  if (minRequired && compareSemver(minRequired, PACKAGE_VERSION) > 0) {
18
- throw new IncompatibleBinaryError(`hippo-memory: this database requires hippo-memory >= ${minRequired}, but the running binary is ${PACKAGE_VERSION}. ` +
19
- `Upgrade hippo-memory to open it; an older binary does not know this schema and could expose private rows or damage the store.`);
18
+ throw new IncompatibleBinaryError(`hippo-memory: this database requires hippo-memory >= ` +
19
+ `${minRequired}, but the running binary is ${PACKAGE_VERSION}. ` +
20
+ `Upgrade hippo-memory to open it; an older binary does not know ` +
21
+ `this schema and could expose private rows or damage the store.`);
20
22
  }
21
23
  }
22
- /** Refuse a store stamped for a newer binary. Fails closed: runMigrations creates meta first, so a failed read is a real error. */
24
+ /** Refuse a store stamped for a newer binary. Fails closed:
25
+ * runMigrations creates meta first, so a failed read is a real error. */
23
26
  export function assertBinaryCompatible(db) {
24
27
  assertMinBinary(getMeta(db, 'min_compatible_binary'));
25
28
  }
@@ -34,17 +37,20 @@ const META_DEFAULTS = [
34
37
  ];
35
38
  // Names come from our own constants and match \w+, so inlining them as literals is safe.
36
39
  const sqlList = (names) => names.map((n) => `'${n}'`).join(', ');
37
- /** The fast path's single probe: versions, the binary minimum, the FTS flag, and counts of the meta defaults and required objects. */
40
+ const REQUIRED_OBJECTS = sqlList(REQUIRED_SCHEMA_OBJECTS);
41
+ /** The fast path's single probe: versions, the binary minimum, the
42
+ * FTS flag, and counts of the meta defaults and required objects. */
38
43
  export const SCHEMA_PROBE_SQL = `SELECT
39
44
  (SELECT user_version FROM pragma_user_version) AS user_version,
40
45
  (SELECT value FROM meta WHERE key = 'schema_version') AS schema_version,
41
46
  (SELECT value FROM meta WHERE key = 'min_compatible_binary') AS min_binary,
42
47
  (SELECT value FROM meta WHERE key = 'fts5_available') AS fts5,
43
48
  (SELECT COUNT(*) FROM meta WHERE key IN (${sqlList(META_DEFAULTS.map(([key]) => key))})) AS meta_keys,
44
- (SELECT COUNT(*) FROM sqlite_master WHERE type IN ('table', 'index') AND name IN (${sqlList(REQUIRED_SCHEMA_OBJECTS)})) AS objects,
49
+ (SELECT COUNT(*) FROM sqlite_master WHERE type IN ('table', 'index') AND name IN (${REQUIRED_OBJECTS})) AS objects,
45
50
  (SELECT MAX(id) FROM raw_archive) AS archive_top,
46
51
  (SELECT 1 FROM memories LIMIT 1) AS has_memories`;
47
- /** The probe's facts when the store is current and whole, so the open can skip every DDL statement; else null. Runs the binary check either way. */
52
+ /** The probe's facts when the store is current and whole, so the open can skip every DDL statement; else null. Runs
53
+ * the binary check either way. */
48
54
  function currentStoreFacts(db) {
49
55
  let probe;
50
56
  try {
@@ -67,7 +73,8 @@ function currentStoreFacts(db) {
67
73
  && probe.fts5 === '1';
68
74
  return current ? { archiveTop: Number(probe.archive_top ?? 0), hasMemories: probe.has_memories !== null } : null;
69
75
  }
70
- /** Brings the store to the current schema; returns the probe's facts when it was current already, null after any repair. */
76
+ /** Brings the store to the current schema; returns the probe's
77
+ * facts when it was current already, null after any repair. */
71
78
  export function runMigrations(db, hippoRoot, busyWaitMs) {
72
79
  const facts = currentStoreFacts(db);
73
80
  if (!facts)
@@ -122,14 +129,18 @@ function importLegacyVectors(db, hippoRoot) {
122
129
  importLegacyEmbeddingIndex(db, hippoRoot);
123
130
  }
124
131
  catch (err) {
125
- log.warn(`embeddings.json import failed; the next open retries it (${errorMessage(err)})`, { hippoRoot });
132
+ log.warn(`embeddings.json import failed; the next open retries it (${errorMessage(err)})`, {
133
+ hippoRoot,
134
+ ...errorFields(err),
135
+ });
126
136
  }
127
137
  }
128
138
  function ensureMetaDefaults(db) {
129
139
  // Read-first: an already-current store has all 7 keys, so this is one SELECT and zero writes instead of 7 no-op
130
140
  // INSERT OR IGNOREs, each of which takes a RESERVED lock even when nothing changes.
131
141
  const keys = META_DEFAULTS.map(([key]) => key);
132
- // SAFETY: the statement selects only the `key` column of `meta`, which is TEXT NOT NULL, so each row is { key: string }.
142
+ // SAFETY: the statement selects only the `key` column of `meta`, which is TEXT NOT NULL, so each row is { key: string
143
+ // }.
133
144
  const present = new Set(db
134
145
  .prepare(`SELECT key FROM meta WHERE key IN (${placeholders(keys.length)})`)
135
146
  .all(...keys)
@@ -153,7 +164,7 @@ function ensureOptionalFts(db) {
153
164
  log.warn(`full-text index not set up this open (${errorMessage(err)}); the next open retries`, errorFields(err));
154
165
  return;
155
166
  }
156
- log.warn(`full-text index unavailable (${errorMessage(err)}); search falls back to slower LIKE matching`);
167
+ log.warn(`full-text index unavailable (${errorMessage(err)}); search falls back to slower LIKE matching`, errorFields(err));
157
168
  writeFtsFlag(db, '0');
158
169
  return;
159
170
  }
@@ -164,7 +175,8 @@ function writeFtsFlag(db, flag) {
164
175
  if (getMeta(db, 'fts5_available') !== flag)
165
176
  setMeta(db, 'fts5_available', flag);
166
177
  }
167
- /** Row counts of `memories` and its full-text index, which differ once the index drifts; null when either table is missing. */
178
+ /** Row counts of `memories` and its full-text index, which differ
179
+ * once the index drifts; null when either table is missing. */
168
180
  export function ftsRowCounts(db) {
169
181
  if (!tableExists(db, 'memories_fts') || !tableExists(db, 'memories'))
170
182
  return null;
@@ -176,7 +188,8 @@ export function ftsRowCounts(db) {
176
188
  const fts = db.prepare(`SELECT COUNT(*) AS c FROM ${ftsTable}`).get()?.c ?? 0;
177
189
  return { memories: Number(memories), fts: Number(fts) };
178
190
  }
179
- /** Re-syncs `memories_fts` with `memories` when their counts differ and returns whether it did; sleep runs it because a fast open does not. */
191
+ /** Re-syncs `memories_fts` with `memories` when their counts differ and returns whether it did; sleep runs it
192
+ * because a fast open does not. */
180
193
  export function repairFtsDrift(db) {
181
194
  const counts = ftsRowCounts(db);
182
195
  if (counts === null || counts.memories === counts.fts)
@@ -1,5 +1,5 @@
1
1
  import type { Migration } from './types.js';
2
- export declare const CURRENT_SCHEMA_VERSION = 55;
2
+ export declare const CURRENT_SCHEMA_VERSION = 56;
3
3
  /** Every schema migration in version order; runMigrations applies each one above the stored version. */
4
4
  export declare const MIGRATIONS: Migration[];
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -53,7 +53,8 @@ import { v52 } from './v52.js';
53
53
  import { v53 } from './v53.js';
54
54
  import { v54 } from './v54.js';
55
55
  import { v55 } from './v55.js';
56
- export const CURRENT_SCHEMA_VERSION = 55;
56
+ import { v56 } from './v56.js';
57
+ export const CURRENT_SCHEMA_VERSION = 56;
57
58
  /** Every schema migration in version order; runMigrations applies each one above the stored version. */
58
59
  export const MIGRATIONS = [
59
60
  v01,
@@ -111,5 +112,6 @@ export const MIGRATIONS = [
111
112
  v53,
112
113
  v54,
113
114
  v55,
115
+ v56,
114
116
  ];
115
117
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,6 @@
1
1
  import type { DatabaseSyncLike } from '../sqlite.js';
2
- /** Context for migrations that need to know where the store lives. hippoRoot is the store directory (e.g. `<project>/.hippo`);
2
+ /** Context for migrations that need to know where the store lives. hippoRoot is the store directory (e.g.
3
+ * `<project>/.hippo`);
3
4
  * undefined only for callers that open a DB without a filesystem store. */
4
5
  export type MigrationContext = {
5
6
  hippoRoot?: string;
@@ -5,7 +5,8 @@ export const v12 = {
5
5
  if (!tableHasColumn(db, 'memories', 'extracted_from')) {
6
6
  db.exec(`ALTER TABLE memories ADD COLUMN extracted_from TEXT`);
7
7
  }
8
- db.exec(`CREATE INDEX IF NOT EXISTS idx_memories_extracted_from ON memories(extracted_from) WHERE extracted_from IS NOT NULL`);
8
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_memories_extracted_from ` +
9
+ `ON memories(extracted_from) WHERE extracted_from IS NOT NULL`);
9
10
  },
10
11
  };
11
12
  //# sourceMappingURL=v12.js.map
@@ -48,7 +48,8 @@ export const v14 = {
48
48
  if (!tableHasColumn(db, 'memories', 'owner')) {
49
49
  db.exec(`ALTER TABLE memories ADD COLUMN owner TEXT`);
50
50
  }
51
- // SHORTCUT: artifact_ref has no index, so connector deletes and vault lookups scan the tenant; the index is held until a schema migration is approved.
51
+ // SHORTCUT: artifact_ref has no index, so connector deletes and vault lookups scan the tenant; the index is held
52
+ // until a schema migration is approved.
52
53
  if (!tableHasColumn(db, 'memories', 'artifact_ref')) {
53
54
  db.exec(`ALTER TABLE memories ADD COLUMN artifact_ref TEXT`);
54
55
  }
@@ -1,8 +1,10 @@
1
1
  export const v15 = {
2
2
  version: 15,
3
3
  up: (db) => {
4
- // Close the NULL-kind bypass: v14 triggers used `WHEN NEW.kind IS NOT NULL AND ...`, so kind=NULL slipped past; now `IS NULL OR NOT IN (...)` rejects it.
5
- // Add UNIQUE(memory_id, archived_at) to raw_archive so re-archiving in the same instant cannot yield ambiguous audit rows (per-id history stays allowed).
4
+ // Close the NULL-kind bypass: v14 triggers used `WHEN NEW.kind IS NOT NULL AND ...`, so kind=NULL slipped past;
5
+ // now `IS NULL OR NOT IN (...)` rejects it.
6
+ // Add UNIQUE(memory_id, archived_at) to raw_archive so re-archiving in the same instant cannot yield ambiguous
7
+ // audit rows (per-id history stays allowed).
6
8
  db.exec(`DROP TRIGGER IF EXISTS trg_memories_kind_check_insert`);
7
9
  db.exec(`DROP TRIGGER IF EXISTS trg_memories_kind_check_update`);
8
10
  db.exec(`
@@ -48,10 +48,13 @@ export const v16 = {
48
48
  // Composite indexes for recall hot paths. Leading column is tenant_id so
49
49
  // single-tenant lookups are O(log n).
50
50
  db.exec(`CREATE INDEX IF NOT EXISTS idx_memories_tenant_created ON memories(tenant_id, created)`);
51
- db.exec(`CREATE INDEX IF NOT EXISTS idx_working_memory_tenant ON working_memory(tenant_id, importance DESC, created_at DESC)`);
51
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_working_memory_tenant ` +
52
+ `ON working_memory(tenant_id, importance DESC, created_at DESC)`);
52
53
  db.exec(`CREATE INDEX IF NOT EXISTS idx_consolidation_runs_tenant_ts ON consolidation_runs(tenant_id, timestamp DESC)`);
53
- db.exec(`CREATE INDEX IF NOT EXISTS idx_task_snapshots_tenant_status ON task_snapshots(tenant_id, status, updated_at DESC)`);
54
- // Stub auth: api_keys (scrypt-hashed; plaintext returned once) and audit_log (append-only mutation trail), both with tenant_id from day 1
54
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_task_snapshots_tenant_status ` +
55
+ `ON task_snapshots(tenant_id, status, updated_at DESC)`);
56
+ // Stub auth: api_keys (scrypt-hashed; plaintext returned once) and audit_log (append-only mutation trail), both
57
+ // with tenant_id from day 1
55
58
  // so future multi-tenant enforcement is a config flip, not a re-migration.
56
59
  db.exec(CREATE_TABLE_API_KEYS_SQL);
57
60
  db.exec(CREATE_INDEX_IDX_API_KEYS_TENANT_ACTIVE_SQL);
@@ -9,7 +9,8 @@ export const v17 = {
9
9
  memory_id TEXT
10
10
  )
11
11
  `);
12
- db.exec(`CREATE INDEX IF NOT EXISTS idx_slack_event_log_memory ON slack_event_log(memory_id) WHERE memory_id IS NOT NULL`);
12
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_slack_event_log_memory ` +
13
+ `ON slack_event_log(memory_id) WHERE memory_id IS NOT NULL`);
13
14
  db.exec(`
14
15
  CREATE TABLE IF NOT EXISTS slack_cursors (
15
16
  tenant_id TEXT NOT NULL,
@@ -2,8 +2,10 @@ import { tableHasColumn } from '../tables.js';
2
2
  export const v19 = {
3
3
  version: 19,
4
4
  up: (db) => {
5
- // Widen slack_dlq with bucketing, retry tracking and the signature/timestamp pair `hippo slack dlq replay` re-verifies;
6
- // ALTER ADD COLUMN with DEFAULT is non-destructive, so legacy rows take the defaults. Idempotent via tableHasColumn().
5
+ // Widen slack_dlq with bucketing, retry tracking and the signature/timestamp pair `hippo slack dlq replay`
6
+ // re-verifies;
7
+ // ALTER ADD COLUMN with DEFAULT is non-destructive, so legacy rows take the defaults. Idempotent via
8
+ // tableHasColumn().
7
9
  if (!tableHasColumn(db, 'slack_dlq', 'team_id')) {
8
10
  db.exec(`ALTER TABLE slack_dlq ADD COLUMN team_id TEXT`);
9
11
  }
@@ -2,7 +2,8 @@ import { warnDamagedColumn } from '../../util/stored-json.js';
2
2
  export const v20 = {
3
3
  version: 20,
4
4
  up: (db) => {
5
- // GDPR Path A backfill: redact every existing raw_archive.payload_json to the metadata-only shape (store/raw-archive.ts); unparseable legacy JSON
5
+ // GDPR Path A backfill: redact every existing raw_archive.payload_json to the metadata-only shape
6
+ // (store/raw-archive.ts); unparseable legacy JSON
6
7
  // gets tenant_id='unknown', kind='unknown'. The audit_log remains the compliance record.
7
8
  // SAFETY: rows' shape matches the four columns named in the SELECT above.
8
9
  const rows = db
@@ -44,8 +44,10 @@ const BACKFILL_SESSION_HANDOFFS_TENANT_SQL = `
44
44
  export const v22 = {
45
45
  version: 22,
46
46
  up: (db) => {
47
- // session_events and session_handoffs missed the v16 tenant migration (cross-tenant leak): add tenant_id (NOT NULL DEFAULT 'default') backfilled from
48
- // task_snapshots when unambiguous, plus a scope column. Re-run v4/v5 CREATE IF NOT EXISTS first so a partial-init store isn't stamped v22 without tables.
47
+ // session_events and session_handoffs missed the v16 tenant migration (cross-tenant leak): add tenant_id (NOT
48
+ // NULL DEFAULT 'default') backfilled from
49
+ // task_snapshots when unambiguous, plus a scope column. Re-run v4/v5 CREATE IF NOT EXISTS first so a partial-init
50
+ // store isn't stamped v22 without tables.
49
51
  db.exec(CREATE_TABLE_SESSION_EVENTS_SQL);
50
52
  if (!tableHasColumn(db, 'session_events', 'tenant_id')) {
51
53
  db.exec(`ALTER TABLE session_events ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default'`);
@@ -59,12 +61,16 @@ export const v22 = {
59
61
  if (!tableHasColumn(db, 'session_handoffs', 'scope')) {
60
62
  db.exec(`ALTER TABLE session_handoffs ADD COLUMN scope TEXT`);
61
63
  }
62
- // Smart backfill: a row whose session_id maps to exactly one tenant in task_snapshots inherits it; ambiguous or unmapped rows keep 'default'.
63
- // The COUNT(DISTINCT) gate is load-bearing: without it a session_id spanning tenants would silently pick whichever group came first.
64
+ // Smart backfill: a row whose session_id maps to exactly one tenant in task_snapshots inherits it; ambiguous or
65
+ // unmapped rows keep 'default'.
66
+ // The COUNT(DISTINCT) gate is load-bearing: without it a session_id spanning tenants would silently pick
67
+ // whichever group came first.
64
68
  db.exec(BACKFILL_SESSION_EVENTS_TENANT_SQL);
65
69
  db.exec(BACKFILL_SESSION_HANDOFFS_TENANT_SQL);
66
- db.exec(`CREATE INDEX IF NOT EXISTS idx_session_events_tenant_session ON session_events(tenant_id, session_id, created_at DESC, id DESC)`);
67
- db.exec(`CREATE INDEX IF NOT EXISTS idx_session_handoffs_tenant_session ON session_handoffs(tenant_id, session_id, created_at DESC)`);
70
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_session_events_tenant_session ` +
71
+ `ON session_events(tenant_id, session_id, created_at DESC, id DESC)`);
72
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_session_handoffs_tenant_session ` +
73
+ `ON session_handoffs(tenant_id, session_id, created_at DESC)`);
68
74
  },
69
75
  };
70
76
  //# sourceMappingURL=v22.js.map
@@ -2,7 +2,8 @@ import { tableHasColumn, tableExists } from '../tables.js';
2
2
  export const v23 = {
3
3
  version: 23,
4
4
  up: (db) => {
5
- // task_snapshots: add scope so all three continuity tables carry it; self-heal partial-init stores via CREATE TABLE IF NOT EXISTS.
5
+ // task_snapshots: add scope so all three continuity tables carry it; self-heal partial-init stores via CREATE
6
+ // TABLE IF NOT EXISTS.
6
7
  db.exec(`
7
8
  CREATE TABLE IF NOT EXISTS task_snapshots (
8
9
  id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -20,8 +21,10 @@ export const v23 = {
20
21
  if (!tableHasColumn(db, 'task_snapshots', 'scope')) {
21
22
  db.exec(`ALTER TABLE task_snapshots ADD COLUMN scope TEXT`);
22
23
  }
23
- // Quarantine pre-existing continuity rows with NULL scope as 'unknown:legacy' so the recall default-deny filter excludes them for no-scope callers;
24
- // new rows legitimately carry NULL. UPDATE only tables that exist (v22 healing is skipped on some paths); WHERE scope IS NULL keeps it idempotent.
24
+ // Quarantine pre-existing continuity rows with NULL scope as 'unknown:legacy' so the recall default-deny filter
25
+ // excludes them for no-scope callers;
26
+ // new rows legitimately carry NULL. UPDATE only tables that exist (v22 healing is skipped on some paths); WHERE
27
+ // scope IS NULL keeps it idempotent.
25
28
  if (tableExists(db, 'task_snapshots')) {
26
29
  db.exec(`UPDATE task_snapshots SET scope = 'unknown:legacy' WHERE scope IS NULL`);
27
30
  }
@@ -56,18 +56,21 @@ export const v24 = {
56
56
  // GitHub connector schema.
57
57
  // Six tables + a min_compatible_binary meta row for rollback safety.
58
58
  db.exec(CREATE_TABLE_GITHUB_EVENT_LOG_SQL);
59
- db.exec(`CREATE INDEX IF NOT EXISTS idx_github_event_log_memory ON github_event_log(memory_id) WHERE memory_id IS NOT NULL`);
59
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_github_event_log_memory ` +
60
+ `ON github_event_log(memory_id) WHERE memory_id IS NOT NULL`);
60
61
  db.exec(`CREATE INDEX IF NOT EXISTS idx_github_event_log_delivery ON github_event_log(delivery_id)`);
61
62
  db.exec(CREATE_TABLE_GITHUB_CURSORS_SQL);
62
63
  db.exec(CREATE_TABLE_GITHUB_DLQ_SQL);
63
64
  db.exec(`CREATE INDEX IF NOT EXISTS idx_github_dlq_tenant_received ON github_dlq(tenant_id, received_at)`);
64
65
  db.exec(CREATE_TABLE_GITHUB_INSTALLATIONS_SQL);
65
- // PAT-mode multi-tenant routing: maps repo_full_name to a tenant when the webhook envelope has no `installation` field.
66
+ // PAT-mode multi-tenant routing: maps repo_full_name to a tenant when the webhook envelope has no `installation`
67
+ // field.
66
68
  // Composite PK so one repo can be visible to several tenants; the collision is on the (repo, tenant) pair.
67
69
  db.exec(CREATE_TABLE_GITHUB_REPOSITORIES_SQL);
68
70
  // Rollback-safety guard: an older binary lacks the *:private:* default-deny and would leak
69
71
  // github:private:* rows; the startup guard refuses a DB whose min_compatible_binary is newer.
70
- db.prepare(`INSERT INTO meta(key, value) VALUES('min_compatible_binary', ?) ON CONFLICT(key) DO UPDATE SET value=excluded.value`).run('1.2.1');
72
+ db.prepare(`INSERT INTO meta(key, value) VALUES('min_compatible_binary', ?) ` +
73
+ `ON CONFLICT(key) DO UPDATE SET value=excluded.value`).run('1.2.1');
71
74
  },
72
75
  };
73
76
  //# sourceMappingURL=v24.js.map
@@ -2,7 +2,8 @@ import { tableHasColumn } from '../tables.js';
2
2
  export const v25 = {
3
3
  version: 25,
4
4
  up: (db) => {
5
- // DAG-aware recall: three additive optional columns cache summary metadata so the assembler need not re-walk the DAG.
5
+ // DAG-aware recall: three additive optional columns cache summary metadata so the assembler need not re-walk the
6
+ // DAG.
6
7
  // No min_compatible_binary bump: older binaries see them as NULL / 0 and behave as before.
7
8
  if (!tableHasColumn(db, 'memories', 'descendant_count')) {
8
9
  db.exec(`ALTER TABLE memories ADD COLUMN descendant_count INTEGER NOT NULL DEFAULT 0`);
@@ -13,7 +14,8 @@ export const v25 = {
13
14
  if (!tableHasColumn(db, 'memories', 'latest_at')) {
14
15
  db.exec(`ALTER TABLE memories ADD COLUMN latest_at TEXT`);
15
16
  }
16
- // Backfill descendant_count for existing level-2 summary rows via dag_parent_id = summary id; level-3 (entity profiles) is not built, so it stays 0.
17
+ // Backfill descendant_count for existing level-2 summary rows via dag_parent_id = summary id; level-3 (entity
18
+ // profiles) is not built, so it stays 0.
17
19
  db.exec(`
18
20
  UPDATE memories
19
21
  SET descendant_count = (
@@ -2,8 +2,10 @@ import { tableHasColumn, tableExists } from '../tables.js';
2
2
  export const v26 = {
3
3
  version: 26,
4
4
  up: (db) => {
5
- // Add api_keys.role for the admin/member split gating /v1/sleep; existing keys backfill to 'admin' via DEFAULT. No min_compatible_binary bump.
6
- // Guard on tableExists: a partial-v16 DB without api_keys would crash this ALTER and block later migrations (v27 heals it with role present).
5
+ // Add api_keys.role for the admin/member split gating /v1/sleep; existing keys backfill to 'admin' via DEFAULT.
6
+ // No min_compatible_binary bump.
7
+ // Guard on tableExists: a partial-v16 DB without api_keys would crash this ALTER and block later migrations (v27
8
+ // heals it with role present).
7
9
  if (tableExists(db, 'api_keys') && !tableHasColumn(db, 'api_keys', 'role')) {
8
10
  db.exec(`ALTER TABLE api_keys ADD COLUMN role TEXT NOT NULL DEFAULT 'admin'`);
9
11
  }
@@ -2,8 +2,10 @@ import { tableHasColumn, tableExists } from '../tables.js';
2
2
  export const v27 = {
3
3
  version: 27,
4
4
  up: (db) => {
5
- // Self-heal: re-assert the v16 schema (api_keys + audit_log) on stores stamped past v16 whose tables are missing (dropped table or old-backup restore).
6
- // All CREATE IF NOT EXISTS, so a no-op for healthy stores; includes the role column so v26's ALTER is not needed on this path.
5
+ // Self-heal: re-assert the v16 schema (api_keys + audit_log) on stores stamped past v16 whose tables are missing
6
+ // (dropped table or old-backup restore).
7
+ // All CREATE IF NOT EXISTS, so a no-op for healthy stores; includes the role column so v26's ALTER is not needed
8
+ // on this path.
7
9
  db.exec(`
8
10
  CREATE TABLE IF NOT EXISTS api_keys (
9
11
  id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -32,7 +34,8 @@ export const v27 = {
32
34
  )
33
35
  `);
34
36
  db.exec(`CREATE INDEX IF NOT EXISTS idx_audit_log_tenant_ts ON audit_log(tenant_id, ts DESC)`);
35
- // Belt-and-braces: backfill role on an api_keys table that exists without it (v16-shape table that v26's ALTER skipped on an earlier broken run).
37
+ // Belt-and-braces: backfill role on an api_keys table that exists without it (v16-shape table that v26's ALTER
38
+ // skipped on an earlier broken run).
36
39
  if (tableExists(db, 'api_keys') && !tableHasColumn(db, 'api_keys', 'role')) {
37
40
  db.exec(`ALTER TABLE api_keys ADD COLUMN role TEXT NOT NULL DEFAULT 'admin'`);
38
41
  }
@@ -2,8 +2,10 @@ import { tableHasColumn } from '../tables.js';
2
2
  export const v28 = {
3
3
  version: 28,
4
4
  up: (db) => {
5
- // Dirty-flag persistence for level-2 DAG summaries; dag_level_3_built_at lands now so the entity-profile path needs no second migration.
6
- // Columns are additive and DEFAULTed/nullable, so no min_compatible_binary bump. Column-only guard: memories comes from v1 and always exists.
5
+ // Dirty-flag persistence for level-2 DAG summaries; dag_level_3_built_at lands now so the entity-profile path
6
+ // needs no second migration.
7
+ // Columns are additive and DEFAULTed/nullable, so no min_compatible_binary bump. Column-only guard: memories
8
+ // comes from v1 and always exists.
7
9
  if (!tableHasColumn(db, 'memories', 'summary_dirty')) {
8
10
  db.exec(`ALTER TABLE memories ADD COLUMN summary_dirty INTEGER NOT NULL DEFAULT 0`);
9
11
  }
@@ -52,8 +52,10 @@ const CREATE_TRIGGER_TRG_PREDICTIONS_TENANT_MATCH_UPDATE_SQL = `
52
52
  export const v29 = {
53
53
  version: 29,
54
54
  up: (db) => {
55
- // Prediction first-class object: claim_text is duplicated so deleting the memory loses nothing; memory_id is NULLABLE ON DELETE SET NULL.
56
- // Tenant-match triggers replace a composite FK, which is incompatible with ON DELETE SET NULL; closure_state is CHECKed to open|closed|closed-unknown.
55
+ // Prediction first-class object: claim_text is duplicated so deleting the memory loses nothing; memory_id is
56
+ // NULLABLE ON DELETE SET NULL.
57
+ // Tenant-match triggers replace a composite FK, which is incompatible with ON DELETE SET NULL; closure_state is
58
+ // CHECKed to open|closed|closed-unknown.
57
59
  if (!tableExists(db, 'predictions')) {
58
60
  db.exec(CREATE_TABLE_PREDICTIONS_SQL);
59
61
  db.exec(CREATE_INDEX_IDX_PREDICTIONS_TENANT_CLASS_SQL);
@@ -48,7 +48,8 @@ const TRG_DECISIONS_TENANT_MATCH_UPDATE = `
48
48
  END;
49
49
  END
50
50
  `;
51
- // Cross-tenant safety vs the successor decision (self-FK): superseded_by is set only via the supersede UPDATE and the successor,
51
+ // Cross-tenant safety vs the successor decision (self-FK): superseded_by is set only via the supersede UPDATE and the
52
+ // successor,
52
53
  // which already exists in the same transaction when this fires, must share the tenant.
53
54
  const TRG_DECISIONS_SUPERSEDE_TENANT_MATCH_UPDATE = `
54
55
  CREATE TRIGGER IF NOT EXISTS trg_decisions_supersede_tenant_match_update
@@ -65,8 +66,10 @@ const TRG_DECISIONS_SUPERSEDE_TENANT_MATCH_UPDATE = `
65
66
  export const v30 = {
66
67
  version: 30,
67
68
  up: (db) => {
68
- // Decision first-class object, the source of truth for `hippo decide`; the memory mirror serves recall only, memory_id NULLABLE ON DELETE SET NULL.
69
- // status active|superseded|closed (closed = retired without successor); a same-tenant trigger on superseded_by blocks cross-tenant supersession.
69
+ // Decision first-class object, the source of truth for `hippo decide`; the memory mirror serves recall only,
70
+ // memory_id NULLABLE ON DELETE SET NULL.
71
+ // status active|superseded|closed (closed = retired without successor); a same-tenant trigger on superseded_by
72
+ // blocks cross-tenant supersession.
70
73
  if (!tableExists(db, 'decisions')) {
71
74
  db.exec(DECISIONS_TABLE);
72
75
  db.exec(IDX_DECISIONS_TENANT_STATUS);
@@ -50,8 +50,10 @@ const CREATE_TRIGGER_TRG_INCIDENTS_TENANT_MATCH_UPDATE_SQL = `
50
50
  export const v31 = {
51
51
  version: 31,
52
52
  up: (db) => {
53
- // Incident first-class object: a postmortem capsule with an open -> resolved -> closed lifecycle (no supersede) and linked receipts (JSON ids).
54
- // Memory mirror is for recall only (memory_id NULLABLE ON DELETE SET NULL); BEFORE INSERT/UPDATE triggers mirror the v30 tenant-match triggers.
53
+ // Incident first-class object: a postmortem capsule with an open -> resolved -> closed lifecycle (no supersede)
54
+ // and linked receipts (JSON ids).
55
+ // Memory mirror is for recall only (memory_id NULLABLE ON DELETE SET NULL); BEFORE INSERT/UPDATE triggers mirror
56
+ // the v30 tenant-match triggers.
55
57
  if (!tableExists(db, 'incidents')) {
56
58
  db.exec(CREATE_TABLE_INCIDENTS_SQL);
57
59
  db.exec(CREATE_INDEX_IDX_INCIDENTS_TENANT_STATUS_SQL);
@@ -52,7 +52,8 @@ const TRG_PROCESSES_TENANT_MATCH_UPDATE = `
52
52
  END;
53
53
  END
54
54
  `;
55
- // Cross-tenant safety vs the successor process (self-FK; mirrors the v30 supersede trigger): superseded_by is set only via the supersede UPDATE
55
+ // Cross-tenant safety vs the successor process (self-FK; mirrors the v30 supersede trigger): superseded_by is set only
56
+ // via the supersede UPDATE
56
57
  // and the successor, already present in the same transaction, must share the tenant.
57
58
  const TRG_PROCESSES_SUPERSEDE_TENANT_MATCH_UPDATE = `
58
59
  CREATE TRIGGER IF NOT EXISTS trg_processes_supersede_tenant_match_update
@@ -69,8 +70,10 @@ const TRG_PROCESSES_SUPERSEDE_TENANT_MATCH_UPDATE = `
69
70
  export const v32 = {
70
71
  version: 32,
71
72
  up: (db) => {
72
- // Process first-class object (living process map): it evolves via the v30 supersede path, each version recording change_summary and full steps (JSON).
73
- // Combines the v31 tenant-match trigger pair with the v30 superseded_by self-FK; version is server-derived (predecessor + 1); only an active head closes.
73
+ // Process first-class object (living process map): it evolves via the v30 supersede path, each version recording
74
+ // change_summary and full steps (JSON).
75
+ // Combines the v31 tenant-match trigger pair with the v30 superseded_by self-FK; version is server-derived
76
+ // (predecessor + 1); only an active head closes.
74
77
  if (!tableExists(db, 'processes')) {
75
78
  db.exec(PROCESSES_TABLE);
76
79
  db.exec(IDX_PROCESSES_TENANT_STATUS);
@@ -75,8 +75,10 @@ const TRG_POLICIES_SUPERSEDE_TENANT_MATCH_UPDATE = `
75
75
  export const v33 = {
76
76
  version: 33,
77
77
  up: (db) => {
78
- // Policy first-class object: a rule in force over an effective-time range (valid_to nullable = open-ended); supersedes like v32 processes.
79
- // Dates are ISO-8601 (toISOString) at the store boundary so values sort lexically and the half-open [valid_from, valid_to) as-of comparison is correct.
78
+ // Policy first-class object: a rule in force over an effective-time range (valid_to nullable = open-ended);
79
+ // supersedes like v32 processes.
80
+ // Dates are ISO-8601 (toISOString) at the store boundary so values sort lexically and the half-open [valid_from,
81
+ // valid_to) as-of comparison is correct.
80
82
  if (!tableExists(db, 'policies')) {
81
83
  db.exec(POLICIES_TABLE);
82
84
  db.exec(IDX_POLICIES_TENANT_STATUS);
@@ -69,7 +69,8 @@ const TRG_SKILLS_SUPERSEDE_TENANT_MATCH_UPDATE = `
69
69
  export const v34 = {
70
70
  version: 34,
71
71
  up: (db) => {
72
- // Skill first-class object: `instructions` plus optional `trigger_text`, superseding like v32 processes; exportSkills writes it to AGENTS.md / CLAUDE.md.
72
+ // Skill first-class object: `instructions` plus optional `trigger_text`, superseding like v32 processes;
73
+ // exportSkills writes it to AGENTS.md / CLAUDE.md.
73
74
  // The column is `trigger_text`, not `trigger`, because TRIGGER is a SQLite reserved keyword.
74
75
  if (!tableExists(db, 'skills')) {
75
76
  db.exec(SKILLS_TABLE);
@@ -72,7 +72,8 @@ const TRG_PROJECT_BRIEFS_SUPERSEDE_TENANT_MATCH_UPDATE = `
72
72
  export const v35 = {
73
73
  version: 35,
74
74
  up: (db) => {
75
- // project_brief first-class object: repo-scoped `summary` superseding like v34 skills; refreshBrief (objects/project-briefs.ts) builds it from receipts.
75
+ // project_brief first-class object: repo-scoped `summary` superseding like v34 skills; refreshBrief
76
+ // (objects/project-briefs.ts) builds it from receipts.
76
77
  // The schema needs only `repo`; column names were checked against SQLite reserved words.
77
78
  if (!tableExists(db, 'project_briefs')) {
78
79
  db.exec(PROJECT_BRIEFS_TABLE);
@@ -72,7 +72,8 @@ const TRG_CUSTOMER_NOTES_SUPERSEDE_TENANT_MATCH_UPDATE = `
72
72
  export const v36 = {
73
73
  version: 36,
74
74
  up: (db) => {
75
- // customer_note first-class object: a note on a customer, superseding like v35 project_briefs; `customer` is a free-form id (no FK: no entities table).
75
+ // customer_note first-class object: a note on a customer, superseding like v35 project_briefs; `customer` is a
76
+ // free-form id (no FK: no entities table).
76
77
  // Many notes per customer, each its own supersede chain. Column names were checked against SQLite reserved words.
77
78
  if (!tableExists(db, 'customer_notes')) {
78
79
  db.exec(CUSTOMER_NOTES_TABLE);
@@ -41,7 +41,8 @@ const GRAPH_EXTRACTION_QUEUE_TABLE = `
41
41
  FOREIGN KEY (memory_id) REFERENCES memories(id) ON DELETE CASCADE
42
42
  )
43
43
  `;
44
- // entities guard: source_kind must equal the FK'd memory's actual kind (raw or a lying source_kind ABORTs) and tenant must match,
44
+ // entities guard: source_kind must equal the FK'd memory's actual kind (raw or a lying source_kind ABORTs) and tenant
45
+ // must match,
45
46
  // on INSERT and on UPDATE (when memory_id/source_kind/tenant_id change).
46
47
  const TRG_ENTITIES_CONSOLIDATED_ONLY_INSERT = `
47
48
  CREATE TRIGGER IF NOT EXISTS trg_entities_consolidated_only_insert
@@ -138,7 +139,8 @@ const TRG_GRAPH_QUEUE_CONSOLIDATED_ONLY_UPDATE = `
138
139
  END;
139
140
  END
140
141
  `;
141
- // Reverse guard: graph triggers fire only on graph-table writes, so reclassifying an indexed memory to raw (or tenant) would break the no-raw invariant.
142
+ // Reverse guard: graph triggers fire only on graph-table writes, so reclassifying an indexed memory to raw (or tenant)
143
+ // would break the no-raw invariant.
142
144
  // Block both while the graph references the memory; the EXISTS checks run only when kind becomes raw or tenant changes.
143
145
  const TRG_MEMORIES_GRAPH_REFERENCED_GUARD = `
144
146
  CREATE TRIGGER IF NOT EXISTS trg_memories_graph_referenced_guard
@@ -153,7 +155,8 @@ const TRG_MEMORIES_GRAPH_REFERENCED_GUARD = `
153
155
  SELECT RAISE(ABORT, 'cannot change the kind or tenant of a memory while the graph references it (E3.3 graph-on-consolidated guard); a graph-referenced memory is immutable in kind/tenant - rebuild/remove the graph rows first, or rebuild them after supersession');
154
156
  END
155
157
  `;
156
- // Second reverse guard: the entity UPDATE trigger does not re-validate existing relations, so a cross-tenant entity move would leave a tenant-A relation
158
+ // Second reverse guard: the entity UPDATE trigger does not re-validate existing relations, so a cross-tenant entity
159
+ // move would leave a tenant-A relation
157
160
  // pointing at a tenant-B entity. Block the tenant move while any relation references the entity.
158
161
  const TRG_ENTITIES_NO_TENANT_MOVE_WHEN_REFERENCED = `
159
162
  CREATE TRIGGER IF NOT EXISTS trg_entities_no_tenant_move_when_referenced
@@ -167,8 +170,10 @@ const TRG_ENTITIES_NO_TENANT_MOVE_WHEN_REFERENCED = `
167
170
  export const v37 = {
168
171
  version: 37,
169
172
  up: (db) => {
170
- // Graph-on-consolidated guard: entities, relations and graph_extraction_queue may reference only consolidated memories (distilled|superseded), never raw.
171
- // The kind match needs a subquery, so it is a BEFORE INSERT and UPDATE trigger (INSERT-only is bypassable). rel_type avoids the reserved word REFERENCES.
173
+ // Graph-on-consolidated guard: entities, relations and graph_extraction_queue may reference only consolidated
174
+ // memories (distilled|superseded), never raw.
175
+ // The kind match needs a subquery, so it is a BEFORE INSERT and UPDATE trigger (INSERT-only is bypassable).
176
+ // rel_type avoids the reserved word REFERENCES.
172
177
  if (!tableExists(db, 'entities')) {
173
178
  db.exec(ENTITIES_TABLE);
174
179
  db.exec(`CREATE INDEX IF NOT EXISTS idx_entities_tenant ON entities(tenant_id)`);