hippo-memory 1.69.0 → 1.70.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 (860) 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 +1 -3
  5. package/dist/agent-memories/claude-code.js +11 -7
  6. package/dist/agent-memories/copilot.js +3 -2
  7. package/dist/agent-memories/files.js +3 -2
  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/report.d.ts +1 -1
  13. package/dist/agent-memories/report.js +1 -1
  14. package/dist/agent-memories/source.d.ts +1 -1
  15. package/dist/agent-memories/source.js +6 -5
  16. package/dist/agent-memories/sync.d.ts +1 -1
  17. package/dist/agent-memories/sync.js +24 -33
  18. package/dist/agent-memories/types.d.ts +1 -1
  19. package/dist/api/assemble.d.ts +2 -2
  20. package/dist/api/assemble.js +42 -32
  21. package/dist/api/audit.d.ts +4 -7
  22. package/dist/api/audit.js +6 -20
  23. package/dist/api/auth.d.ts +5 -18
  24. package/dist/api/auth.js +44 -194
  25. package/dist/api/auto-sleep.d.ts +13 -0
  26. package/dist/api/auto-sleep.js +32 -0
  27. package/dist/{availability.d.ts → api/availability.d.ts} +2 -2
  28. package/dist/{availability.js → api/availability.js} +12 -29
  29. package/dist/{context-auto.js → api/context-auto.js} +2 -1
  30. package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
  31. package/dist/{context-render.js → api/context-render.js} +7 -6
  32. package/dist/api/context-select.d.ts +5 -5
  33. package/dist/api/context-select.js +37 -45
  34. package/dist/api/context-types.d.ts +5 -5
  35. package/dist/api/context.d.ts +2 -4
  36. package/dist/api/context.js +48 -61
  37. package/dist/api/dormant.d.ts +3 -3
  38. package/dist/api/dormant.js +38 -107
  39. package/dist/api/drill-down.d.ts +2 -2
  40. package/dist/api/drill-down.js +37 -65
  41. package/dist/api/forget.d.ts +2 -11
  42. package/dist/api/forget.js +13 -46
  43. package/dist/api/goals.d.ts +1 -1
  44. package/dist/api/goals.js +2 -2
  45. package/dist/api/index.d.ts +26 -0
  46. package/dist/api/index.js +29 -0
  47. package/dist/api/instruction-detect.js +74 -0
  48. package/dist/api/learn.js +63 -55
  49. package/dist/api/ledger-db.d.ts +20 -0
  50. package/dist/api/ledger-db.js +79 -0
  51. package/dist/api/on-store.d.ts +16 -0
  52. package/dist/api/on-store.js +36 -0
  53. package/dist/api/outcome.d.ts +5 -42
  54. package/dist/api/outcome.js +15 -80
  55. package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
  56. package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
  57. package/dist/api/promote.d.ts +4 -15
  58. package/dist/api/promote.js +29 -106
  59. package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +7 -7
  60. package/dist/{prompt-hook.js → api/prompt-hook.js} +34 -53
  61. package/dist/api/quarantine.d.ts +5 -5
  62. package/dist/api/quarantine.js +30 -106
  63. package/dist/api/recall-core.d.ts +4 -0
  64. package/dist/api/recall-core.js +112 -0
  65. package/dist/{recall-history.js → api/recall-history.js} +30 -25
  66. package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +5 -5
  67. package/dist/{recall-pipeline.js → api/recall-pipeline.js} +47 -42
  68. package/dist/api/recall-record.d.ts +10 -13
  69. package/dist/api/recall-record.js +10 -30
  70. package/dist/api/recall-request.d.ts +2 -2
  71. package/dist/api/recall-request.js +3 -3
  72. package/dist/api/recall-types.d.ts +41 -16
  73. package/dist/api/recall.d.ts +1 -1
  74. package/dist/api/recall.js +39 -37
  75. package/dist/api/remember.d.ts +10 -12
  76. package/dist/api/remember.js +29 -45
  77. package/dist/api/session-owners.d.ts +4 -0
  78. package/dist/api/session-owners.js +17 -0
  79. package/dist/api/sleep-run.d.ts +7 -7
  80. package/dist/api/sleep-run.js +63 -75
  81. package/dist/api/sleep.d.ts +1 -1
  82. package/dist/api/tokens.d.ts +2 -2
  83. package/dist/api/tokens.js +9 -21
  84. package/dist/api/types.d.ts +2 -2
  85. package/dist/api/types.js +1 -1
  86. package/dist/capture/caller-session.d.ts +2 -2
  87. package/dist/capture/caller-session.js +8 -8
  88. package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
  89. package/dist/{capture-error.js → capture/capture-error.js} +7 -7
  90. package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
  91. package/dist/capture/command.d.ts +1 -1
  92. package/dist/capture/command.js +54 -41
  93. package/dist/capture/compact-resume-caller.d.ts +1 -1
  94. package/dist/capture/compact-resume-caller.js +7 -7
  95. package/dist/capture/compact.d.ts +4 -1
  96. package/dist/capture/compact.js +40 -22
  97. package/dist/capture/compaction-items-caller.d.ts +1 -1
  98. package/dist/capture/compaction-items-caller.js +7 -5
  99. package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
  100. package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
  101. package/dist/{compaction-record.js → capture/compaction-record.js} +48 -94
  102. package/dist/{compaction-spool.js → capture/compaction-spool.js} +17 -13
  103. package/dist/capture/copilot-transcript.js +1 -1
  104. package/dist/capture/extract.js +2 -2
  105. package/dist/capture/failure-caller.d.ts +2 -2
  106. package/dist/capture/failure-caller.js +6 -6
  107. package/dist/capture/failure-reading.d.ts +2 -5
  108. package/dist/capture/failure-reading.js +11 -12
  109. package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
  110. package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
  111. package/dist/capture/pre-compact-caller.d.ts +1 -1
  112. package/dist/capture/pre-compact-caller.js +2 -2
  113. package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +1 -5
  114. package/dist/{session-digest.js → capture/session-digest.js} +17 -23
  115. package/dist/capture/session-end-caller.d.ts +2 -2
  116. package/dist/capture/session-end-caller.js +1 -1
  117. package/dist/capture/session-texts.d.ts +1 -1
  118. package/dist/capture/session-texts.js +5 -5
  119. package/dist/capture/session-worker.js +6 -4
  120. package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
  121. package/dist/capture/transcript.js +68 -74
  122. package/dist/capture/working-state.d.ts +0 -3
  123. package/dist/capture/working-state.js +7 -7
  124. package/dist/{audit-prune.d.ts → cli/audit-prune.d.ts} +1 -2
  125. package/dist/{audit-prune.js → cli/audit-prune.js} +5 -39
  126. package/dist/cli/audit.d.ts +2 -2
  127. package/dist/cli/audit.js +77 -72
  128. package/dist/cli/auth.d.ts +2 -1
  129. package/dist/cli/auth.js +18 -20
  130. package/dist/cli/briefs.d.ts +4 -3
  131. package/dist/cli/briefs.js +59 -181
  132. package/dist/cli/card.d.ts +2 -1
  133. package/dist/cli/card.js +25 -23
  134. package/dist/{client.d.ts → cli/client.d.ts} +1 -1
  135. package/dist/{client.js → cli/client.js} +1 -1
  136. package/dist/cli/compact-resume-payload.d.ts +8 -0
  137. package/dist/cli/compact-resume-payload.js +39 -0
  138. package/dist/cli/context.d.ts +2 -13
  139. package/dist/cli/context.js +41 -71
  140. package/dist/cli/continuity.d.ts +6 -5
  141. package/dist/cli/continuity.js +109 -99
  142. package/dist/{correction-latency.d.ts → cli/correction-latency.d.ts} +1 -1
  143. package/dist/cli/curate.d.ts +9 -9
  144. package/dist/cli/curate.js +177 -149
  145. package/dist/cli/dag.d.ts +4 -4
  146. package/dist/cli/dag.js +46 -34
  147. package/dist/cli/decisions.d.ts +4 -3
  148. package/dist/cli/decisions.js +108 -218
  149. package/dist/cli/eval.d.ts +1 -3
  150. package/dist/cli/eval.js +43 -31
  151. package/dist/cli/explain.d.ts +1 -1
  152. package/dist/cli/explain.js +35 -19
  153. package/dist/cli/flag-values.d.ts +25 -0
  154. package/dist/cli/flag-values.js +103 -0
  155. package/dist/cli/flags.d.ts +303 -0
  156. package/dist/cli/flags.js +169 -0
  157. package/dist/cli/goals.d.ts +2 -1
  158. package/dist/cli/goals.js +39 -34
  159. package/dist/cli/hook-runtime.d.ts +49 -0
  160. package/dist/cli/hook-runtime.js +155 -0
  161. package/dist/cli/init.d.ts +2 -1
  162. package/dist/cli/init.js +151 -118
  163. package/dist/cli/install-steps.d.ts +7 -0
  164. package/dist/cli/install-steps.js +110 -0
  165. package/dist/cli/last-sleep.d.ts +2 -1
  166. package/dist/cli/last-sleep.js +9 -7
  167. package/dist/cli/maintenance.d.ts +5 -4
  168. package/dist/cli/maintenance.js +31 -27
  169. package/dist/cli/object-verbs.d.ts +40 -0
  170. package/dist/cli/object-verbs.js +65 -0
  171. package/dist/{owner-validation.d.ts → cli/owner-validation.d.ts} +0 -1
  172. package/dist/{owner-validation.js → cli/owner-validation.js} +2 -2
  173. package/dist/cli/playbooks.d.ts +4 -3
  174. package/dist/cli/playbooks.js +77 -280
  175. package/dist/cli/print.d.ts +18 -0
  176. package/dist/cli/print.js +85 -0
  177. package/dist/cli/projects.d.ts +2 -3
  178. package/dist/cli/projects.js +56 -49
  179. package/dist/{provenance-coverage.d.ts → cli/provenance-coverage.d.ts} +1 -1
  180. package/dist/cli/quality-repair-once.js +4 -4
  181. package/dist/{quality-repair.js → cli/quality-repair.js} +23 -37
  182. package/dist/cli/recall.d.ts +2 -4
  183. package/dist/cli/recall.js +101 -150
  184. package/dist/{refine-llm.d.ts → cli/refine-llm.d.ts} +1 -1
  185. package/dist/{refine-llm.js → cli/refine-llm.js} +70 -82
  186. package/dist/cli/remember.d.ts +1 -3
  187. package/dist/cli/remember.js +124 -103
  188. package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +3 -1
  189. package/dist/{scheduler.js → cli/scheduler.js} +13 -7
  190. package/dist/cli/serve.d.ts +1 -1
  191. package/dist/cli/serve.js +34 -4
  192. package/dist/cli/session-hooks.d.ts +4 -4
  193. package/dist/cli/session-hooks.js +190 -184
  194. package/dist/cli/setup.d.ts +2 -1
  195. package/dist/cli/setup.js +41 -21
  196. package/dist/cli/shared.d.ts +5 -95
  197. package/dist/cli/shared.js +18 -369
  198. package/dist/cli/slack.d.ts +2 -1
  199. package/dist/cli/slack.js +31 -55
  200. package/dist/cli/sleep-render.d.ts +4 -0
  201. package/dist/cli/sleep-render.js +61 -0
  202. package/dist/cli/sleep.d.ts +2 -8
  203. package/dist/cli/sleep.js +20 -76
  204. package/dist/cli/status.d.ts +3 -3
  205. package/dist/cli/status.js +39 -41
  206. package/dist/{stdin.js → cli/stdin.js} +6 -6
  207. package/dist/cli/transfer.d.ts +4 -4
  208. package/dist/cli/transfer.js +68 -42
  209. package/dist/cli/usage.js +4 -2
  210. package/dist/cli.d.ts +289 -5
  211. package/dist/cli.js +184 -117
  212. package/dist/connectors/dlq.d.ts +44 -0
  213. package/dist/connectors/dlq.js +30 -0
  214. package/dist/connectors/github/backfill.d.ts +1 -1
  215. package/dist/connectors/github/backfill.js +29 -66
  216. package/dist/connectors/github/cli-impl.js +59 -74
  217. package/dist/connectors/github/deletion.d.ts +5 -6
  218. package/dist/connectors/github/deletion.js +18 -52
  219. package/dist/connectors/github/dlq.d.ts +7 -61
  220. package/dist/connectors/github/dlq.js +19 -119
  221. package/dist/connectors/github/ingest.d.ts +2 -31
  222. package/dist/connectors/github/ingest.js +20 -83
  223. package/dist/connectors/github/octokit-client.d.ts +1 -1
  224. package/dist/connectors/github/octokit-client.js +2 -1
  225. package/dist/connectors/github/tenant-routing.d.ts +2 -2
  226. package/dist/connectors/github/tenant-routing.js +10 -36
  227. package/dist/connectors/github/transform.d.ts +1 -1
  228. package/dist/connectors/github/types.d.ts +1 -1
  229. package/dist/connectors/github/types.js +15 -18
  230. package/dist/connectors/github/webhook.d.ts +3 -2
  231. package/dist/connectors/github/webhook.js +84 -87
  232. package/dist/connectors/slack/backfill.d.ts +1 -1
  233. package/dist/connectors/slack/backfill.js +5 -29
  234. package/dist/connectors/slack/deletion.d.ts +4 -7
  235. package/dist/connectors/slack/deletion.js +20 -49
  236. package/dist/connectors/slack/dlq.d.ts +7 -49
  237. package/dist/connectors/slack/dlq.js +25 -118
  238. package/dist/connectors/slack/ingest.d.ts +5 -18
  239. package/dist/connectors/slack/ingest.js +27 -91
  240. package/dist/connectors/slack/signature.js +2 -1
  241. package/dist/connectors/slack/tenant-routing.d.ts +4 -1
  242. package/dist/connectors/slack/tenant-routing.js +13 -14
  243. package/dist/connectors/slack/transform.d.ts +1 -1
  244. package/dist/connectors/slack/types.d.ts +1 -1
  245. package/dist/connectors/slack/types.js +3 -12
  246. package/dist/connectors/slack/web-client.js +2 -2
  247. package/dist/connectors/slack/webhook.d.ts +3 -2
  248. package/dist/connectors/slack/webhook.js +75 -82
  249. package/dist/connectors/slack/workspaces.d.ts +4 -17
  250. package/dist/connectors/slack/workspaces.js +4 -34
  251. package/dist/consolidate/conflicts.d.ts +1 -1
  252. package/dist/consolidate/conflicts.js +4 -4
  253. package/dist/{dag.d.ts → consolidate/dag.d.ts} +1 -1
  254. package/dist/{dag.js → consolidate/dag.js} +60 -81
  255. package/dist/consolidate/decay.d.ts +2 -2
  256. package/dist/consolidate/decay.js +28 -22
  257. package/dist/{dedupe.js → consolidate/dedupe.js} +11 -19
  258. package/dist/consolidate/flush-units.d.ts +2 -2
  259. package/dist/{half-life-migration.d.ts → consolidate/half-life-migration.d.ts} +3 -9
  260. package/dist/consolidate/half-life-migration.js +106 -0
  261. package/dist/consolidate/llm-passes.js +8 -8
  262. package/dist/{memory-value.d.ts → consolidate/memory-value.d.ts} +7 -2
  263. package/dist/{memory-value.js → consolidate/memory-value.js} +9 -7
  264. package/dist/consolidate/merge.js +57 -54
  265. package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
  266. package/dist/{merged-row.js → consolidate/merged-row.js} +2 -2
  267. package/dist/consolidate/physics-pass.js +46 -46
  268. package/dist/{replay.d.ts → consolidate/replay.d.ts} +1 -1
  269. package/dist/{replay.js → consolidate/replay.js} +2 -2
  270. package/dist/consolidate/run.d.ts +7 -13
  271. package/dist/consolidate/run.js +6 -37
  272. package/dist/consolidate/sleep.d.ts +1 -1
  273. package/dist/consolidate/sleep.js +64 -134
  274. package/dist/{trace.js → consolidate/trace.js} +4 -6
  275. package/dist/consolidate/traces.js +34 -29
  276. package/dist/{ablation.js → core/ablation.js} +1 -1
  277. package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
  278. package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
  279. package/dist/{ambient.js → core/ambient.js} +12 -10
  280. package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +13 -2
  281. package/dist/{capture-contract.js → core/capture-contract.js} +64 -0
  282. package/dist/{compare.d.ts → core/compare.d.ts} +2 -0
  283. package/dist/{compare.js → core/compare.js} +10 -3
  284. package/dist/{config.d.ts → core/config.d.ts} +6 -6
  285. package/dist/{config.js → core/config.js} +99 -72
  286. package/dist/core/handoff.js +87 -0
  287. package/dist/{memory-quality.js → core/memory-quality.js} +1 -1
  288. package/dist/{memory.d.ts → core/memory.d.ts} +17 -5
  289. package/dist/{memory.js → core/memory.js} +110 -82
  290. package/dist/{physics.d.ts → core/physics.d.ts} +1 -1
  291. package/dist/{physics.js → core/physics.js} +2 -1
  292. package/dist/{project-identity.d.ts → core/project-identity.d.ts} +0 -5
  293. package/dist/{project-identity.js → core/project-identity.js} +5 -17
  294. package/dist/{project-remote.js → core/project-remote.js} +4 -4
  295. package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
  296. package/dist/{salience.js → core/salience.js} +35 -20
  297. package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
  298. package/dist/{search/types.js → core/search-types.js} +1 -1
  299. package/dist/core/session-digest-row.d.ts +5 -0
  300. package/dist/core/session-digest-row.js +6 -0
  301. package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
  302. package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +5 -5
  303. package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
  304. package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
  305. package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +9 -9
  306. package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +101 -104
  307. package/dist/{dashboard.js → dashboard/dashboard.js} +124 -53
  308. package/dist/db/backup.js +1 -1
  309. package/dist/db/busy.d.ts +18 -1
  310. package/dist/db/busy.js +74 -9
  311. package/dist/db/connect.d.ts +10 -2
  312. package/dist/db/connect.js +43 -10
  313. package/dist/db/index.d.ts +9 -0
  314. package/dist/db/index.js +8 -0
  315. package/dist/db/meta.d.ts +4 -0
  316. package/dist/db/meta.js +11 -1
  317. package/dist/db/migrate.d.ts +8 -1
  318. package/dist/db/migrate.js +25 -30
  319. package/dist/db/migrations/v08.js +1 -1
  320. package/dist/db/migrations/v14.js +39 -35
  321. package/dist/db/migrations/v16.js +29 -26
  322. package/dist/db/migrations/v18.js +6 -5
  323. package/dist/db/migrations/v20.js +4 -2
  324. package/dist/db/migrations/v22.js +39 -36
  325. package/dist/db/migrations/v24.js +27 -22
  326. package/dist/db/migrations/v29.js +37 -32
  327. package/dist/db/migrations/v31.js +36 -31
  328. package/dist/db/migrations/v35.js +1 -1
  329. package/dist/db/migrations/v39.js +1 -1
  330. package/dist/db/migrations/v40.js +15 -14
  331. package/dist/db/migrations/v43.js +7 -6
  332. package/dist/db/migrations/v44.js +1 -1
  333. package/dist/db/migrations/v45.js +1 -1
  334. package/dist/db/migrations/v46.js +1 -1
  335. package/dist/db/migrations/v47.js +1 -1
  336. package/dist/db/migrations/v48.js +1 -1
  337. package/dist/db/migrations/v49.js +1 -1
  338. package/dist/db/migrations/v50.js +8 -7
  339. package/dist/db/migrations/v52.js +1 -1
  340. package/dist/db/open.d.ts +9 -1
  341. package/dist/db/open.js +21 -4
  342. package/dist/{physics-state.d.ts → db/physics-state.d.ts} +3 -3
  343. package/dist/{physics-state.js → db/physics-state.js} +9 -16
  344. package/dist/{raw-archive-mirror-cleanup.d.ts → db/raw-archive-mirror-cleanup.d.ts} +5 -5
  345. package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +11 -6
  346. package/dist/db/request-stores.d.ts +15 -2
  347. package/dist/db/request-stores.js +37 -15
  348. package/dist/db/tables.d.ts +2 -0
  349. package/dist/db/tables.js +6 -0
  350. package/dist/{vector-store.d.ts → db/vector-store.d.ts} +4 -2
  351. package/dist/{vector-store.js → db/vector-store.js} +76 -51
  352. package/dist/db/wal-checkpointer.d.ts +11 -0
  353. package/dist/db/wal-checkpointer.js +92 -0
  354. package/dist/doctor.js +105 -136
  355. package/dist/entry/json-hooks.d.ts +1 -1
  356. package/dist/entry/json-hooks.js +1 -1
  357. package/dist/entry/project-identity.d.ts +1 -1
  358. package/dist/entry/project-identity.js +1 -1
  359. package/dist/entry/session-text.d.ts +3 -3
  360. package/dist/entry/session-text.js +3 -3
  361. package/dist/{eval-stats.js → eval/eval-stats.js} +12 -9
  362. package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +1 -1
  363. package/dist/{eval-suite.js → eval/eval-suite.js} +25 -23
  364. package/dist/{eval.d.ts → eval/eval.d.ts} +1 -1
  365. package/dist/{eval.js → eval/eval.js} +29 -22
  366. package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -3
  367. package/dist/{judgment.js → eval/judgment.js} +4 -9
  368. package/dist/extensions/openclaw-plugin/index.js +1 -2
  369. package/dist/graph/delta.d.ts +3 -2
  370. package/dist/graph/delta.js +9 -23
  371. package/dist/{graph-extract.d.ts → graph/extract.d.ts} +6 -6
  372. package/dist/{graph-extract.js → graph/extract.js} +37 -52
  373. package/dist/{graph-recall.d.ts → graph/recall.d.ts} +2 -2
  374. package/dist/{graph-recall.js → graph/recall.js} +55 -36
  375. package/dist/{graph-stream.d.ts → graph/stream.d.ts} +2 -2
  376. package/dist/{graph-stream.js → graph/stream.js} +9 -7
  377. package/dist/{graph-view.d.ts → graph/view.d.ts} +6 -3
  378. package/dist/{graph-view.js → graph/view.js} +127 -167
  379. package/dist/graph/write.d.ts +4 -76
  380. package/dist/graph/write.js +13 -397
  381. package/dist/hooks/codex-session.js +1 -1
  382. package/dist/hooks/codex-wrapper.js +14 -15
  383. package/dist/hooks/copilot.d.ts +1 -8
  384. package/dist/hooks/copilot.js +14 -15
  385. package/dist/{cli → hooks}/hook-blocks.js +1 -1
  386. package/dist/hooks/json-hooks.d.ts +1 -1
  387. package/dist/hooks/json-hooks.js +31 -122
  388. package/dist/hooks/opencode.js +35 -27
  389. package/dist/hooks/shared.d.ts +0 -4
  390. package/dist/hooks/shared.js +1 -5
  391. package/dist/importers/core.d.ts +2 -6
  392. package/dist/importers/core.js +41 -39
  393. package/dist/importers/markdown-parse.d.ts +1 -10
  394. package/dist/importers/markdown-parse.js +2 -19
  395. package/dist/importers/markdown.js +2 -1
  396. package/dist/importers/sources.js +50 -46
  397. package/dist/importers/vault.js +71 -92
  398. package/dist/index.d.ts +22 -22
  399. package/dist/index.js +21 -21
  400. package/dist/{autolearn.d.ts → learn/autolearn.d.ts} +2 -2
  401. package/dist/{autolearn.js → learn/autolearn.js} +13 -11
  402. package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
  403. package/dist/{churn-git.js → learn/churn-git.js} +6 -4
  404. package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
  405. package/dist/learn/extract.js +125 -0
  406. package/dist/{forward-claim-detector.d.ts → learn/forward-claim-detector.d.ts} +1 -1
  407. package/dist/{forward-claim-detector.js → learn/forward-claim-detector.js} +1 -1
  408. package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +4 -0
  409. package/dist/{invalidation.js → learn/invalidation.js} +83 -99
  410. package/dist/mcp/admin-tools.d.ts +1 -1
  411. package/dist/mcp/admin-tools.js +37 -60
  412. package/dist/mcp/format.d.ts +5 -5
  413. package/dist/mcp/format.js +7 -6
  414. package/dist/mcp/framing.d.ts +6 -0
  415. package/dist/mcp/framing.js +11 -3
  416. package/dist/mcp/memory-tools.js +7 -27
  417. package/dist/mcp/protocol.d.ts +6 -10
  418. package/dist/mcp/protocol.js +8 -14
  419. package/dist/mcp/recall-tools.d.ts +2 -2
  420. package/dist/mcp/recall-tools.js +68 -50
  421. package/dist/mcp/request.js +62 -60
  422. package/dist/mcp/server.js +1 -1
  423. package/dist/mcp/session-state.d.ts +1 -2
  424. package/dist/mcp/session-state.js +2 -2
  425. package/dist/mcp/shared-gate.js +1 -1
  426. package/dist/mcp/stdio.js +69 -31
  427. package/dist/mcp/tool-args.js +2 -1
  428. package/dist/mcp/tools.js +2 -2
  429. package/dist/{customer-notes.d.ts → objects/customer-notes.d.ts} +7 -24
  430. package/dist/objects/customer-notes.js +112 -0
  431. package/dist/{decisions.d.ts → objects/decisions.d.ts} +13 -28
  432. package/dist/objects/decisions.js +101 -0
  433. package/dist/objects/descriptor.d.ts +52 -0
  434. package/dist/objects/descriptor.js +4 -0
  435. package/dist/objects/fields.d.ts +15 -0
  436. package/dist/objects/fields.js +21 -0
  437. package/dist/{incidents.d.ts → objects/incidents.d.ts} +17 -44
  438. package/dist/objects/incidents.js +130 -0
  439. package/dist/objects/lifecycle.d.ts +27 -0
  440. package/dist/objects/lifecycle.js +96 -0
  441. package/dist/{policies.d.ts → objects/policies.d.ts} +14 -27
  442. package/dist/objects/policies.js +189 -0
  443. package/dist/{processes.d.ts → objects/processes.d.ts} +14 -34
  444. package/dist/objects/processes.js +146 -0
  445. package/dist/{project-briefs.d.ts → objects/project-briefs.d.ts} +19 -40
  446. package/dist/objects/project-briefs.js +255 -0
  447. package/dist/{skills.d.ts → objects/skills.d.ts} +11 -26
  448. package/dist/objects/skills.js +156 -0
  449. package/dist/postinstall.js +4 -2
  450. package/dist/predictions/planning-fallacy.d.ts +4 -76
  451. package/dist/predictions/planning-fallacy.js +4 -129
  452. package/dist/rerankers/clef.d.ts +2 -6
  453. package/dist/rerankers/clef.js +27 -47
  454. package/dist/rerankers/cross-encoder.d.ts +0 -7
  455. package/dist/rerankers/cross-encoder.js +15 -23
  456. package/dist/rerankers/index.js +8 -7
  457. package/dist/rerankers/jev.d.ts +1 -4
  458. package/dist/rerankers/jev.js +30 -49
  459. package/dist/rerankers/llm.d.ts +2 -4
  460. package/dist/rerankers/llm.js +33 -50
  461. package/dist/rerankers/outage-warning.d.ts +7 -0
  462. package/dist/rerankers/outage-warning.js +31 -0
  463. package/dist/rerankers/remote.d.ts +3 -0
  464. package/dist/rerankers/remote.js +23 -0
  465. package/dist/rerankers/types.d.ts +1 -1
  466. package/dist/search/as-of.d.ts +1 -1
  467. package/dist/search/bm25-search.d.ts +2 -2
  468. package/dist/search/bm25-search.js +7 -7
  469. package/dist/search/bm25.d.ts +1 -1
  470. package/dist/search/bm25.js +1 -1
  471. package/dist/search/boosts.d.ts +5 -1
  472. package/dist/search/boosts.js +34 -13
  473. package/dist/search/breakdown.d.ts +2 -2
  474. package/dist/search/breakdown.js +2 -1
  475. package/dist/search/explain.d.ts +1 -1
  476. package/dist/search/explain.js +3 -2
  477. package/dist/search/finalize.d.ts +2 -2
  478. package/dist/search/finalize.js +4 -3
  479. package/dist/search/fusion.d.ts +1 -1
  480. package/dist/search/fusion.js +3 -3
  481. package/dist/search/hybrid-score.d.ts +2 -2
  482. package/dist/search/hybrid-score.js +1 -1
  483. package/dist/search/hybrid.d.ts +4 -4
  484. package/dist/search/hybrid.js +11 -8
  485. package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
  486. package/dist/{multihop.js → search/multihop.js} +7 -5
  487. package/dist/{path-context.js → search/path-context.js} +3 -1
  488. package/dist/search/physics-search.d.ts +4 -4
  489. package/dist/search/physics-search.js +15 -15
  490. package/dist/search/rerank.d.ts +3 -3
  491. package/dist/search/rerank.js +4 -3
  492. package/dist/search/temporal.d.ts +1 -1
  493. package/dist/search/temporal.js +5 -2
  494. package/dist/search/vector.d.ts +3 -3
  495. package/dist/search/vector.js +17 -11
  496. package/dist/server/auth.d.ts +1 -1
  497. package/dist/server/auth.js +26 -18
  498. package/dist/server/boot.d.ts +24 -0
  499. package/dist/server/boot.js +465 -0
  500. package/dist/server/client-ip.d.ts +5 -1
  501. package/dist/server/client-ip.js +18 -6
  502. package/dist/server/cursor.d.ts +1 -1
  503. package/dist/server/cursor.js +2 -3
  504. package/dist/server/deadline.d.ts +13 -0
  505. package/dist/server/deadline.js +45 -0
  506. package/dist/server/key-check-bounds.d.ts +8 -0
  507. package/dist/server/key-check-bounds.js +46 -0
  508. package/dist/server/lifecycle.js +1 -1
  509. package/dist/server/mcp-http.d.ts +1 -4
  510. package/dist/server/mcp-http.js +34 -24
  511. package/dist/server/ready.d.ts +7 -0
  512. package/dist/server/ready.js +38 -0
  513. package/dist/server/request.d.ts +10 -4
  514. package/dist/server/request.js +63 -12
  515. package/dist/server/route-table.d.ts +15 -0
  516. package/dist/server/route-table.js +209 -0
  517. package/dist/server/routes/admin.js +13 -8
  518. package/dist/server/routes/customer-notes.d.ts +5 -5
  519. package/dist/server/routes/customer-notes.js +32 -97
  520. package/dist/server/routes/decisions.d.ts +5 -5
  521. package/dist/server/routes/decisions.js +42 -105
  522. package/dist/server/routes/incidents.d.ts +5 -5
  523. package/dist/server/routes/incidents.js +42 -95
  524. package/dist/server/routes/memories.js +12 -14
  525. package/dist/server/routes/object-routes.d.ts +40 -0
  526. package/dist/server/routes/object-routes.js +80 -0
  527. package/dist/server/routes/policies.d.ts +6 -6
  528. package/dist/server/routes/policies.js +40 -124
  529. package/dist/server/routes/predictions.js +29 -45
  530. package/dist/server/routes/processes.d.ts +5 -5
  531. package/dist/server/routes/processes.js +38 -118
  532. package/dist/server/routes/project-briefs.d.ts +6 -6
  533. package/dist/server/routes/project-briefs.js +38 -110
  534. package/dist/server/routes/recall.js +14 -12
  535. package/dist/server/routes/skills.d.ts +6 -6
  536. package/dist/server/routes/skills.js +37 -125
  537. package/dist/{server-detect.js → server/server-detect.js} +1 -1
  538. package/dist/server/sleep-child.d.ts +2 -0
  539. package/dist/server/sleep-child.js +19 -0
  540. package/dist/server/sleep-offload.d.ts +20 -0
  541. package/dist/server/sleep-offload.js +70 -0
  542. package/dist/server/tls.d.ts +6 -0
  543. package/dist/server/tls.js +24 -0
  544. package/dist/server/types.d.ts +27 -8
  545. package/dist/server/validation.d.ts +3 -4
  546. package/dist/server/validation.js +6 -11
  547. package/dist/server.d.ts +39 -61
  548. package/dist/server.js +24 -568
  549. package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +1 -1
  550. package/dist/{project-merge.js → sharing/project-merge.js} +26 -45
  551. package/dist/{scope.js → sharing/scope.js} +1 -1
  552. package/dist/{shared.d.ts → sharing/shared.d.ts} +10 -9
  553. package/dist/{shared.js → sharing/shared.js} +100 -77
  554. package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
  555. package/dist/{ambient-store.js → store/ambient.js} +10 -10
  556. package/dist/store/audit-event.d.ts +11 -5
  557. package/dist/store/audit-event.js +5 -4
  558. package/dist/{audit.d.ts → store/audit.d.ts} +27 -3
  559. package/dist/{audit.js → store/audit.js} +91 -6
  560. package/dist/{auth.d.ts → store/auth.d.ts} +15 -32
  561. package/dist/{auth.js → store/auth.js} +100 -92
  562. package/dist/store/candidates.d.ts +23 -12
  563. package/dist/store/candidates.js +87 -35
  564. package/dist/{card-detail.d.ts → store/card-detail.d.ts} +3 -3
  565. package/dist/{card-detail.js → store/card-detail.js} +1 -1
  566. package/dist/{store-cards.d.ts → store/cards.d.ts} +14 -9
  567. package/dist/{store-cards.js → store/cards.js} +85 -146
  568. package/dist/store/compactions.d.ts +78 -0
  569. package/dist/store/compactions.js +93 -0
  570. package/dist/store/conflicts.d.ts +22 -5
  571. package/dist/store/conflicts.js +160 -109
  572. package/dist/store/connectors/github.d.ts +84 -0
  573. package/dist/store/connectors/github.js +180 -0
  574. package/dist/store/connectors/slack.d.ts +69 -0
  575. package/dist/store/connectors/slack.js +177 -0
  576. package/dist/store/dashboard-reads.d.ts +27 -0
  577. package/dist/store/dashboard-reads.js +92 -0
  578. package/dist/store/delete-and-batch.d.ts +20 -24
  579. package/dist/store/delete-and-batch.js +64 -40
  580. package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +12 -5
  581. package/dist/{delivery-recorder.js → store/delivery-recorder.js} +42 -30
  582. package/dist/store/descendant-page.d.ts +12 -0
  583. package/dist/store/descendant-page.js +99 -0
  584. package/dist/store/diagnostics.d.ts +47 -0
  585. package/dist/store/diagnostics.js +51 -0
  586. package/dist/store/doctor-reads.d.ts +16 -0
  587. package/dist/store/doctor-reads.js +19 -0
  588. package/dist/{dormant.d.ts → store/dormant.d.ts} +46 -12
  589. package/dist/{dormant.js → store/dormant.js} +151 -6
  590. package/dist/{embeddings.d.ts → store/embeddings/index.d.ts} +10 -6
  591. package/dist/{embeddings.js → store/embeddings/index.js} +60 -44
  592. package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
  593. package/dist/{local-embedding.js → store/embeddings/local.js} +68 -57
  594. package/dist/{embedding-provider.d.ts → store/embeddings/provider.d.ts} +2 -2
  595. package/dist/{embedding-provider.js → store/embeddings/provider.js} +47 -32
  596. package/dist/store/entry-reads.d.ts +46 -7
  597. package/dist/store/entry-reads.js +120 -21
  598. package/dist/store/entry-row.d.ts +8 -2
  599. package/dist/store/entry-row.js +28 -8
  600. package/dist/store/entry-writes.d.ts +33 -4
  601. package/dist/store/entry-writes.js +108 -26
  602. package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
  603. package/dist/{failure-log.js → store/failure-log.js} +9 -2
  604. package/dist/{goals.d.ts → store/goals.d.ts} +6 -46
  605. package/dist/{goals.js → store/goals.js} +45 -94
  606. package/dist/store/graph-queue.d.ts +29 -0
  607. package/dist/store/graph-queue.js +101 -0
  608. package/dist/{graph/read.d.ts → store/graph-reads.d.ts} +26 -34
  609. package/dist/{graph/read.js → store/graph-reads.js} +63 -115
  610. package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +68 -8
  611. package/dist/{graph/rows.js → store/graph-rows.js} +14 -3
  612. package/dist/store/graph-view-rows.d.ts +12 -0
  613. package/dist/store/graph-view-rows.js +67 -0
  614. package/dist/store/graph-writes.d.ts +58 -0
  615. package/dist/store/graph-writes.js +256 -0
  616. package/dist/store/half-life.d.ts +34 -0
  617. package/dist/store/half-life.js +77 -0
  618. package/dist/store/handoffs.d.ts +1 -1
  619. package/dist/store/handoffs.js +39 -30
  620. package/dist/store/index-and-stats.d.ts +8 -1
  621. package/dist/store/index-and-stats.js +51 -48
  622. package/dist/store/index.d.ts +4 -0
  623. package/dist/store/index.js +3 -0
  624. package/dist/store/key-audit.d.ts +2 -2
  625. package/dist/store/key-audit.js +4 -4
  626. package/dist/store/key-writes.d.ts +12 -5
  627. package/dist/store/key-writes.js +30 -4
  628. package/dist/store/ledger-turn.d.ts +17 -0
  629. package/dist/store/ledger-turn.js +27 -0
  630. package/dist/store/markdown.d.ts +1 -1
  631. package/dist/store/markdown.js +4 -3
  632. package/dist/store/mirrors.d.ts +5 -7
  633. package/dist/store/mirrors.js +39 -25
  634. package/dist/store/object-types.d.ts +189 -0
  635. package/dist/store/object-types.js +4 -0
  636. package/dist/store/open.d.ts +6 -4
  637. package/dist/store/open.js +24 -23
  638. package/dist/store/planning-fallacy-evidence.d.ts +42 -0
  639. package/dist/store/planning-fallacy-evidence.js +81 -0
  640. package/dist/store/port.d.ts +646 -0
  641. package/dist/store/port.js +17 -0
  642. package/dist/{predictions/store.d.ts → store/predictions.d.ts} +15 -2
  643. package/dist/{predictions/store.js → store/predictions.js} +52 -67
  644. package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
  645. package/dist/{quarantine.js → store/quarantine.js} +64 -22
  646. package/dist/{raw-archive.d.ts → store/raw-archive.d.ts} +3 -1
  647. package/dist/{raw-archive.js → store/raw-archive.js} +6 -2
  648. package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +2 -2
  649. package/dist/{recall-scope.js → store/recall-scope.js} +3 -3
  650. package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -14
  651. package/dist/{recall-trace.js → store/recall-trace.js} +38 -43
  652. package/dist/store/rejected-values.d.ts +55 -0
  653. package/dist/store/rejected-values.js +162 -0
  654. package/dist/{rejection.d.ts → store/rejection.d.ts} +2 -2
  655. package/dist/{rejection.js → store/rejection.js} +3 -2
  656. package/dist/store/rows.d.ts +2 -3
  657. package/dist/store/rows.js +18 -11
  658. package/dist/store/search-rows.d.ts +15 -4
  659. package/dist/store/search-rows.js +41 -28
  660. package/dist/store/sessions.d.ts +13 -2
  661. package/dist/store/sessions.js +79 -45
  662. package/dist/store/sqlite/commit-watch.d.ts +4 -0
  663. package/dist/store/sqlite/commit-watch.js +29 -0
  664. package/dist/store/sqlite/connector-events-group.d.ts +5 -0
  665. package/dist/store/sqlite/connector-events-group.js +50 -0
  666. package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
  667. package/dist/store/sqlite/connector-writes-group.js +65 -0
  668. package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
  669. package/dist/store/sqlite/dag-reads-group.js +45 -0
  670. package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
  671. package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
  672. package/dist/store/sqlite/error-codec.d.ts +17 -0
  673. package/dist/store/sqlite/error-codec.js +59 -0
  674. package/dist/store/sqlite/executor-counts.d.ts +10 -0
  675. package/dist/store/sqlite/executor-counts.js +11 -0
  676. package/dist/store/sqlite/executor.d.ts +28 -0
  677. package/dist/store/sqlite/executor.js +286 -0
  678. package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
  679. package/dist/store/sqlite/graph-reads-group.js +18 -0
  680. package/dist/store/sqlite/local.d.ts +21 -0
  681. package/dist/store/sqlite/local.js +38 -0
  682. package/dist/store/sqlite/object-rows.d.ts +102 -0
  683. package/dist/store/sqlite/object-rows.js +218 -0
  684. package/dist/store/sqlite/objects-group.d.ts +20 -0
  685. package/dist/store/sqlite/objects-group.js +314 -0
  686. package/dist/store/sqlite/predictions-group.d.ts +5 -0
  687. package/dist/store/sqlite/predictions-group.js +28 -0
  688. package/dist/store/sqlite/quarantine-group.d.ts +5 -0
  689. package/dist/store/sqlite/quarantine-group.js +38 -0
  690. package/dist/store/sqlite/store.d.ts +26 -0
  691. package/dist/store/sqlite/store.js +295 -0
  692. package/dist/store/sqlite/vector-pack.d.ts +18 -0
  693. package/dist/store/sqlite/vector-pack.js +46 -0
  694. package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
  695. package/dist/store/sqlite/vector-reads-group.js +23 -0
  696. package/dist/store/sqlite/worker-entry.d.ts +2 -0
  697. package/dist/store/sqlite/worker-entry.js +8 -0
  698. package/dist/store/sqlite/worker-jobs.d.ts +5 -0
  699. package/dist/store/sqlite/worker-jobs.js +116 -0
  700. package/dist/store/sqlite/worker-ops.d.ts +124 -0
  701. package/dist/store/sqlite/worker-ops.js +82 -0
  702. package/dist/store/sqlite/worker-store.d.ts +8 -0
  703. package/dist/store/sqlite/worker-store.js +76 -0
  704. package/dist/store/summaries.d.ts +2 -11
  705. package/dist/store/summaries.js +17 -44
  706. package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
  707. package/dist/store/tenant-lookup.d.ts +1 -1
  708. package/dist/{tenant.d.ts → store/tenant.d.ts} +2 -2
  709. package/dist/{tenant.js → store/tenant.js} +1 -1
  710. package/dist/store/token-ledger-rows.d.ts +61 -0
  711. package/dist/store/token-ledger-rows.js +68 -0
  712. package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +2 -9
  713. package/dist/{token-ledger.js → store/token-ledger.js} +31 -78
  714. package/dist/store/tombstone-checks.d.ts +12 -0
  715. package/dist/store/tombstone-checks.js +31 -0
  716. package/dist/store/usage-reports.d.ts +7 -0
  717. package/dist/store/usage-reports.js +26 -0
  718. package/dist/store/vector-writes.d.ts +10 -3
  719. package/dist/store/vector-writes.js +35 -5
  720. package/dist/{working-memory.d.ts → store/working-memory.d.ts} +5 -1
  721. package/dist/{working-memory.js → store/working-memory.js} +39 -41
  722. package/dist/support-bundle.d.ts +1 -1
  723. package/dist/support-bundle.js +13 -33
  724. package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
  725. package/dist/{gated-write.js → trust/gated-write.js} +6 -6
  726. package/dist/trust/quarantine.d.ts +4 -0
  727. package/dist/trust/quarantine.js +8 -0
  728. package/dist/trust/reject-flow.d.ts +23 -0
  729. package/dist/trust/reject-flow.js +67 -0
  730. package/dist/util/anthropic-messages.d.ts +31 -0
  731. package/dist/util/anthropic-messages.js +46 -0
  732. package/dist/util/atomic-write.d.ts +3 -0
  733. package/dist/util/atomic-write.js +107 -0
  734. package/dist/util/crash-handlers.d.ts +5 -0
  735. package/dist/util/crash-handlers.js +30 -0
  736. package/dist/{env.d.ts → util/env.d.ts} +15 -2
  737. package/dist/{env.js → util/env.js} +20 -2
  738. package/dist/util/home-path.js +67 -0
  739. package/dist/{http-retry.d.ts → util/http-retry.d.ts} +6 -2
  740. package/dist/{http-retry.js → util/http-retry.js} +38 -7
  741. package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
  742. package/dist/{http-util.js → util/http-util.js} +31 -11
  743. package/dist/util/json.d.ts +17 -0
  744. package/dist/util/json.js +25 -0
  745. package/dist/{log.d.ts → util/log.d.ts} +5 -2
  746. package/dist/{log.js → util/log.js} +12 -3
  747. package/dist/util/real-path.d.ts +3 -0
  748. package/dist/util/real-path.js +15 -0
  749. package/dist/util/request-scope.d.ts +27 -0
  750. package/dist/util/request-scope.js +47 -0
  751. package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
  752. package/dist/{secret-detect.js → util/secret-detect.js} +5 -4
  753. package/dist/util/stored-json.d.ts +9 -0
  754. package/dist/util/stored-json.js +8 -0
  755. package/dist/util/time.d.ts +2 -0
  756. package/dist/util/time.js +3 -0
  757. package/dist/util/token-text.d.ts +18 -0
  758. package/dist/util/token-text.js +23 -0
  759. package/dist/{version.d.ts → util/version.d.ts} +1 -1
  760. package/dist/{version.js → util/version.js} +1 -1
  761. package/extensions/openclaw-plugin/index.ts +1 -5
  762. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  763. package/extensions/openclaw-plugin/package.json +1 -1
  764. package/openclaw.plugin.json +1 -1
  765. package/package.json +2 -2
  766. package/dist/api.d.ts +0 -26
  767. package/dist/api.js +0 -29
  768. package/dist/connectors/github/idempotency.d.ts +0 -19
  769. package/dist/connectors/github/idempotency.js +0 -27
  770. package/dist/connectors/slack/idempotency.d.ts +0 -17
  771. package/dist/connectors/slack/idempotency.js +0 -31
  772. package/dist/customer-notes.js +0 -336
  773. package/dist/db.d.ts +0 -9
  774. package/dist/db.js +0 -8
  775. package/dist/decisions.js +0 -326
  776. package/dist/extract.js +0 -133
  777. package/dist/graph/rows.d.ts +0 -45
  778. package/dist/graph/types.js +0 -11
  779. package/dist/half-life-migration.js +0 -182
  780. package/dist/handoff.js +0 -68
  781. package/dist/home-path.js +0 -24
  782. package/dist/incidents.js +0 -349
  783. package/dist/instruction-detect.js +0 -27
  784. package/dist/json.d.ts +0 -7
  785. package/dist/json.js +0 -11
  786. package/dist/ledger-db.d.ts +0 -10
  787. package/dist/ledger-db.js +0 -42
  788. package/dist/policies.js +0 -434
  789. package/dist/processes.js +0 -371
  790. package/dist/project-briefs.js +0 -523
  791. package/dist/reject-flow.d.ts +0 -69
  792. package/dist/reject-flow.js +0 -260
  793. package/dist/session-owners.d.ts +0 -7
  794. package/dist/session-owners.js +0 -54
  795. package/dist/skills.js +0 -367
  796. package/dist/store/entry-writes-group.d.ts +0 -9
  797. package/dist/store-port.d.ts +0 -262
  798. package/dist/store-port.js +0 -178
  799. /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
  800. /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
  801. /package/dist/{recall-history.d.ts → api/recall-history.d.ts} +0 -0
  802. /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
  803. /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
  804. /package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +0 -0
  805. /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
  806. /package/dist/{correction-latency.js → cli/correction-latency.js} +0 -0
  807. /package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +0 -0
  808. /package/dist/{quality-repair.d.ts → cli/quality-repair.d.ts} +0 -0
  809. /package/dist/{stdin.d.ts → cli/stdin.d.ts} +0 -0
  810. /package/dist/{dedupe.d.ts → consolidate/dedupe.d.ts} +0 -0
  811. /package/dist/{memory-value-weights.d.ts → consolidate/memory-value-weights.d.ts} +0 -0
  812. /package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +0 -0
  813. /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
  814. /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
  815. /package/dist/{trace.d.ts → consolidate/trace.d.ts} +0 -0
  816. /package/dist/{ablation.d.ts → core/ablation.d.ts} +0 -0
  817. /package/dist/{ambient.d.ts → core/ambient.d.ts} +0 -0
  818. /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
  819. /package/dist/{api-errors.js → core/api-errors.js} +0 -0
  820. /package/dist/{card.d.ts → core/card.d.ts} +0 -0
  821. /package/dist/{card.js → core/card.js} +0 -0
  822. /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
  823. /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
  824. /package/dist/{physics-config.d.ts → core/physics-config.d.ts} +0 -0
  825. /package/dist/{physics-config.js → core/physics-config.js} +0 -0
  826. /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
  827. /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
  828. /package/dist/{salience.d.ts → core/salience.d.ts} +0 -0
  829. /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
  830. /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
  831. /package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +0 -0
  832. /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
  833. /package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +0 -0
  834. /package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +0 -0
  835. /package/dist/{cli → hooks}/hook-blocks.d.ts +0 -0
  836. /package/dist/{path-context.d.ts → search/path-context.d.ts} +0 -0
  837. /package/dist/{rrf.d.ts → search/rrf.d.ts} +0 -0
  838. /package/dist/{rrf.js → search/rrf.js} +0 -0
  839. /package/dist/{rate-limit.d.ts → server/rate-limit.d.ts} +0 -0
  840. /package/dist/{rate-limit.js → server/rate-limit.js} +0 -0
  841. /package/dist/{server-detect.d.ts → server/server-detect.d.ts} +0 -0
  842. /package/dist/{scope.d.ts → sharing/scope.d.ts} +0 -0
  843. /package/dist/{summary-dirty.js → store/summary-dirty.js} +0 -0
  844. /package/dist/{yaml.d.ts → store/yaml.d.ts} +0 -0
  845. /package/dist/{yaml.js → store/yaml.js} +0 -0
  846. /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
  847. /package/dist/{escape.js → util/escape.js} +0 -0
  848. /package/dist/{home-path.d.ts → util/home-path.d.ts} +0 -0
  849. /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
  850. /package/dist/{keyset.js → util/keyset.js} +0 -0
  851. /package/dist/{same-text.js → util/same-text.js} +0 -0
  852. /package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +0 -0
  853. /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
  854. /package/dist/{db → util}/sqlite-blocked.js +0 -0
  855. /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
  856. /package/dist/{tokenize.js → util/tokenize.js} +0 -0
  857. /package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +0 -0
  858. /package/dist/{transcript-tail.js → util/transcript-tail.js} +0 -0
  859. /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
  860. /package/dist/{write-budget.js → util/write-budget.js} +0 -0
@@ -1,19 +1,5 @@
1
1
  import { tableHasColumn } from '../tables.js';
2
- export const v22 = {
3
- version: 22,
4
- up: (db) => {
5
- // session_events and session_handoffs predate the v16 tenant migration and were
6
- // never added to it: a cross-tenant leak whenever continuity primitives are used.
7
- // Adds tenant_id (NOT NULL DEFAULT 'default') with smart backfill from
8
- // task_snapshots.session_id when unambiguous, plus an optional scope
9
- // column so a private-channel-derived handoff can default-deny via the
10
- // same rule recall already enforces.
11
- //
12
- // Self-heal partial-init stores: re-run the v4/v5 CREATE TABLE IF NOT
13
- // EXISTS bodies before ALTERing. A silent skip would otherwise stamp
14
- // schema_version=22 on a DB missing the underlying tables, leaving
15
- // them permanently absent.
16
- db.exec(`
2
+ const CREATE_TABLE_SESSION_EVENTS_SQL = `
17
3
  CREATE TABLE IF NOT EXISTS session_events (
18
4
  id INTEGER PRIMARY KEY AUTOINCREMENT,
19
5
  session_id TEXT NOT NULL,
@@ -34,7 +20,42 @@ export const v22 = {
34
20
  artifacts_json TEXT NOT NULL DEFAULT '[]',
35
21
  created_at TEXT NOT NULL
36
22
  );
37
- `);
23
+ `;
24
+ const BACKFILL_SESSION_EVENTS_TENANT_SQL = `
25
+ UPDATE session_events
26
+ SET tenant_id = (
27
+ SELECT MAX(t.tenant_id) FROM task_snapshots t
28
+ WHERE t.session_id = session_events.session_id
29
+ )
30
+ WHERE tenant_id = 'default'
31
+ AND (SELECT COUNT(DISTINCT t.tenant_id) FROM task_snapshots t
32
+ WHERE t.session_id = session_events.session_id) = 1
33
+ `;
34
+ const BACKFILL_SESSION_HANDOFFS_TENANT_SQL = `
35
+ UPDATE session_handoffs
36
+ SET tenant_id = (
37
+ SELECT MAX(t.tenant_id) FROM task_snapshots t
38
+ WHERE t.session_id = session_handoffs.session_id
39
+ )
40
+ WHERE tenant_id = 'default'
41
+ AND (SELECT COUNT(DISTINCT t.tenant_id) FROM task_snapshots t
42
+ WHERE t.session_id = session_handoffs.session_id) = 1
43
+ `;
44
+ export const v22 = {
45
+ version: 22,
46
+ up: (db) => {
47
+ // session_events and session_handoffs predate the v16 tenant migration and were
48
+ // never added to it: a cross-tenant leak whenever continuity primitives are used.
49
+ // Adds tenant_id (NOT NULL DEFAULT 'default') with smart backfill from
50
+ // task_snapshots.session_id when unambiguous, plus an optional scope
51
+ // column so a private-channel-derived handoff can default-deny via the
52
+ // same rule recall already enforces.
53
+ //
54
+ // Self-heal partial-init stores: re-run the v4/v5 CREATE TABLE IF NOT
55
+ // EXISTS bodies before ALTERing. A silent skip would otherwise stamp
56
+ // schema_version=22 on a DB missing the underlying tables, leaving
57
+ // them permanently absent.
58
+ db.exec(CREATE_TABLE_SESSION_EVENTS_SQL);
38
59
  if (!tableHasColumn(db, 'session_events', 'tenant_id')) {
39
60
  db.exec(`ALTER TABLE session_events ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default'`);
40
61
  }
@@ -53,26 +74,8 @@ export const v22 = {
53
74
  // tenant boundaries on guesses. The COUNT(DISTINCT) gate is the load-
54
75
  // bearing check; without it, rows with multiple tenants under the same
55
76
  // session_id would silently pick whichever group came first.
56
- db.exec(`
57
- UPDATE session_events
58
- SET tenant_id = (
59
- SELECT MAX(t.tenant_id) FROM task_snapshots t
60
- WHERE t.session_id = session_events.session_id
61
- )
62
- WHERE tenant_id = 'default'
63
- AND (SELECT COUNT(DISTINCT t.tenant_id) FROM task_snapshots t
64
- WHERE t.session_id = session_events.session_id) = 1
65
- `);
66
- db.exec(`
67
- UPDATE session_handoffs
68
- SET tenant_id = (
69
- SELECT MAX(t.tenant_id) FROM task_snapshots t
70
- WHERE t.session_id = session_handoffs.session_id
71
- )
72
- WHERE tenant_id = 'default'
73
- AND (SELECT COUNT(DISTINCT t.tenant_id) FROM task_snapshots t
74
- WHERE t.session_id = session_handoffs.session_id) = 1
75
- `);
77
+ db.exec(BACKFILL_SESSION_EVENTS_TENANT_SQL);
78
+ db.exec(BACKFILL_SESSION_HANDOFFS_TENANT_SQL);
76
79
  db.exec(`CREATE INDEX IF NOT EXISTS idx_session_events_tenant_session ON session_events(tenant_id, session_id, created_at DESC, id DESC)`);
77
80
  db.exec(`CREATE INDEX IF NOT EXISTS idx_session_handoffs_tenant_session ON session_handoffs(tenant_id, session_id, created_at DESC)`);
78
81
  },
@@ -1,9 +1,4 @@
1
- export const v24 = {
2
- version: 24,
3
- up: (db) => {
4
- // GitHub connector schema.
5
- // Six tables + a min_compatible_binary meta row for rollback safety.
6
- db.exec(`
1
+ const CREATE_TABLE_GITHUB_EVENT_LOG_SQL = `
7
2
  CREATE TABLE IF NOT EXISTS github_event_log (
8
3
  idempotency_key TEXT PRIMARY KEY,
9
4
  delivery_id TEXT NOT NULL,
@@ -11,10 +6,8 @@ export const v24 = {
11
6
  ingested_at TEXT NOT NULL,
12
7
  memory_id TEXT
13
8
  )
14
- `);
15
- db.exec(`CREATE INDEX IF NOT EXISTS idx_github_event_log_memory ON github_event_log(memory_id) WHERE memory_id IS NOT NULL`);
16
- db.exec(`CREATE INDEX IF NOT EXISTS idx_github_event_log_delivery ON github_event_log(delivery_id)`);
17
- db.exec(`
9
+ `;
10
+ const CREATE_TABLE_GITHUB_CURSORS_SQL = `
18
11
  CREATE TABLE IF NOT EXISTS github_cursors (
19
12
  tenant_id TEXT NOT NULL,
20
13
  repo_full_name TEXT NOT NULL,
@@ -24,8 +17,8 @@ export const v24 = {
24
17
  updated_at TEXT NOT NULL,
25
18
  PRIMARY KEY (tenant_id, repo_full_name)
26
19
  )
27
- `);
28
- db.exec(`
20
+ `;
21
+ const CREATE_TABLE_GITHUB_DLQ_SQL = `
29
22
  CREATE TABLE IF NOT EXISTS github_dlq (
30
23
  id INTEGER PRIMARY KEY AUTOINCREMENT,
31
24
  tenant_id TEXT NOT NULL,
@@ -41,27 +34,39 @@ export const v24 = {
41
34
  retried_at TEXT,
42
35
  bucket TEXT NOT NULL DEFAULT 'parse_error'
43
36
  )
44
- `);
45
- db.exec(`CREATE INDEX IF NOT EXISTS idx_github_dlq_tenant_received ON github_dlq(tenant_id, received_at)`);
46
- db.exec(`
37
+ `;
38
+ const CREATE_TABLE_GITHUB_INSTALLATIONS_SQL = `
47
39
  CREATE TABLE IF NOT EXISTS github_installations (
48
40
  installation_id TEXT PRIMARY KEY,
49
41
  tenant_id TEXT NOT NULL,
50
42
  added_at TEXT NOT NULL
51
43
  )
52
- `);
53
- // PAT-mode multi-tenant routing. Maps repo_full_name to
54
- // tenant when the webhook envelope has no `installation` field. Composite
55
- // PK so the same repo can intentionally be visible to multiple tenants
56
- // (e.g., shared tooling accounts) — collision is on (repo, tenant) pair.
57
- db.exec(`
44
+ `;
45
+ const CREATE_TABLE_GITHUB_REPOSITORIES_SQL = `
58
46
  CREATE TABLE IF NOT EXISTS github_repositories (
59
47
  repo_full_name TEXT NOT NULL,
60
48
  tenant_id TEXT NOT NULL,
61
49
  added_at TEXT NOT NULL,
62
50
  PRIMARY KEY (repo_full_name, tenant_id)
63
51
  )
64
- `);
52
+ `;
53
+ export const v24 = {
54
+ version: 24,
55
+ up: (db) => {
56
+ // GitHub connector schema.
57
+ // Six tables + a min_compatible_binary meta row for rollback safety.
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`);
60
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_github_event_log_delivery ON github_event_log(delivery_id)`);
61
+ db.exec(CREATE_TABLE_GITHUB_CURSORS_SQL);
62
+ db.exec(CREATE_TABLE_GITHUB_DLQ_SQL);
63
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_github_dlq_tenant_received ON github_dlq(tenant_id, received_at)`);
64
+ db.exec(CREATE_TABLE_GITHUB_INSTALLATIONS_SQL);
65
+ // PAT-mode multi-tenant routing. Maps repo_full_name to
66
+ // tenant when the webhook envelope has no `installation` field. Composite
67
+ // PK so the same repo can intentionally be visible to multiple tenants
68
+ // (e.g., shared tooling accounts) — collision is on (repo, tenant) pair.
69
+ db.exec(CREATE_TABLE_GITHUB_REPOSITORIES_SQL);
65
70
  // Rollback-safety guard: an older binary lacks the *:private:* default-deny and would leak
66
71
  // github:private:* rows; the startup guard refuses a DB whose min_compatible_binary is newer.
67
72
  db.prepare(`INSERT INTO meta(key, value) VALUES('min_compatible_binary', ?) ON CONFLICT(key) DO UPDATE SET value=excluded.value`).run('1.2.1');
@@ -1,24 +1,5 @@
1
1
  import { tableExists } from '../tables.js';
2
- export const v29 = {
3
- version: 29,
4
- up: (db) => {
5
- // Prediction first-class object: a predictions table for the reference-class /
6
- // planning-fallacy detector. Predictions
7
- // duplicate claim_text in the table itself so memory deletion
8
- // (forget/consolidate/archive) does not lose prediction data; FK
9
- // memory_id is NULLABLE with ON DELETE SET NULL.
10
- //
11
- // Cross-tenant safety: BEFORE INSERT + BEFORE UPDATE triggers
12
- // enforce tenant_id match against the referenced memory. SQLite's
13
- // ON DELETE SET NULL is incompatible with composite FK where one
14
- // side is NOT NULL, so the trigger pattern replaces a composite
15
- // FK target. Precedent: v14 memories.kind trigger pair at db.ts:298-322.
16
- //
17
- // CHECK constraint pins closure_state to (open|closed|closed-unknown).
18
- // Accuracy (clean vs regressed) is computed from (estimate_value,
19
- // actual_value) at query time.
20
- if (!tableExists(db, 'predictions')) {
21
- db.exec(`
2
+ const CREATE_TABLE_PREDICTIONS_SQL = `
22
3
  CREATE TABLE predictions (
23
4
  id INTEGER PRIMARY KEY AUTOINCREMENT,
24
5
  memory_id TEXT,
@@ -36,19 +17,16 @@ export const v29 = {
36
17
  created_at TEXT NOT NULL,
37
18
  FOREIGN KEY (memory_id) REFERENCES memories(id) ON DELETE SET NULL
38
19
  )
39
- `);
40
- db.exec(`
20
+ `;
21
+ const CREATE_INDEX_IDX_PREDICTIONS_TENANT_CLASS_SQL = `
41
22
  CREATE INDEX IF NOT EXISTS idx_predictions_tenant_class
42
23
  ON predictions(tenant_id, class_tag, closure_state)
43
- `);
44
- db.exec(`
24
+ `;
25
+ const CREATE_INDEX_IDX_PREDICTIONS_MEMORY_SQL = `
45
26
  CREATE INDEX IF NOT EXISTS idx_predictions_memory
46
27
  ON predictions(memory_id) WHERE memory_id IS NOT NULL
47
- `);
48
- // Cross-tenant safety: tenant_id must match the referenced memory's
49
- // tenant_id when memory_id IS NOT NULL. INSERT + UPDATE pair, mirroring
50
- // v14 memories.kind enforcement (db.ts:298-322).
51
- db.exec(`
28
+ `;
29
+ const CREATE_TRIGGER_TRG_PREDICTIONS_TENANT_MATCH_INSERT_SQL = `
52
30
  CREATE TRIGGER IF NOT EXISTS trg_predictions_tenant_match_insert
53
31
  BEFORE INSERT ON predictions
54
32
  WHEN NEW.memory_id IS NOT NULL
@@ -58,8 +36,8 @@ export const v29 = {
58
36
  THEN RAISE(ABORT, 'predictions.tenant_id must match memories.tenant_id for the referenced memory')
59
37
  END;
60
38
  END
61
- `);
62
- db.exec(`
39
+ `;
40
+ const CREATE_TRIGGER_TRG_PREDICTIONS_TENANT_MATCH_UPDATE_SQL = `
63
41
  CREATE TRIGGER IF NOT EXISTS trg_predictions_tenant_match_update
64
42
  BEFORE UPDATE ON predictions
65
43
  WHEN NEW.memory_id IS NOT NULL
@@ -70,7 +48,34 @@ export const v29 = {
70
48
  THEN RAISE(ABORT, 'predictions.tenant_id must match memories.tenant_id for the referenced memory')
71
49
  END;
72
50
  END
73
- `);
51
+ `;
52
+ export const v29 = {
53
+ version: 29,
54
+ up: (db) => {
55
+ // Prediction first-class object: a predictions table for the reference-class /
56
+ // planning-fallacy detector. Predictions
57
+ // duplicate claim_text in the table itself so memory deletion
58
+ // (forget/consolidate/archive) does not lose prediction data; FK
59
+ // memory_id is NULLABLE with ON DELETE SET NULL.
60
+ //
61
+ // Cross-tenant safety: BEFORE INSERT + BEFORE UPDATE triggers
62
+ // enforce tenant_id match against the referenced memory. SQLite's
63
+ // ON DELETE SET NULL is incompatible with composite FK where one
64
+ // side is NOT NULL, so the trigger pattern replaces a composite
65
+ // FK target. Precedent: v14 memories.kind trigger pair at db.ts:298-322.
66
+ //
67
+ // CHECK constraint pins closure_state to (open|closed|closed-unknown).
68
+ // Accuracy (clean vs regressed) is computed from (estimate_value,
69
+ // actual_value) at query time.
70
+ if (!tableExists(db, 'predictions')) {
71
+ db.exec(CREATE_TABLE_PREDICTIONS_SQL);
72
+ db.exec(CREATE_INDEX_IDX_PREDICTIONS_TENANT_CLASS_SQL);
73
+ db.exec(CREATE_INDEX_IDX_PREDICTIONS_MEMORY_SQL);
74
+ // Cross-tenant safety: tenant_id must match the referenced memory's
75
+ // tenant_id when memory_id IS NOT NULL. INSERT + UPDATE pair, mirroring
76
+ // v14 memories.kind enforcement (db.ts:298-322).
77
+ db.exec(CREATE_TRIGGER_TRG_PREDICTIONS_TENANT_MATCH_INSERT_SQL);
78
+ db.exec(CREATE_TRIGGER_TRG_PREDICTIONS_TENANT_MATCH_UPDATE_SQL);
74
79
  }
75
80
  },
76
81
  };
@@ -1,24 +1,5 @@
1
1
  import { tableExists } from '../tables.js';
2
- export const v31 = {
3
- version: 31,
4
- up: (db) => {
5
- // Incident first-class object.
6
- // Mirrors the v30 decisions block but for an open -> resolved -> closed
7
- // lifecycle (NOT supersede): there is no superseded_by self-FK and no
8
- // supersede trigger. An incident is a postmortem capsule: a recorded
9
- // operational event with a lifecycle and optional linked receipts (the
10
- // memories that are its evidence, stored as a JSON array of ids in
11
- // linked_memory_ids). The memory mirror is kept for recall but is not
12
- // authoritative; memory_id is NULLABLE with ON DELETE SET NULL so
13
- // forget/consolidate/archive does not lose an incident.
14
- //
15
- // status (open|resolved|closed): resolved records a resolution_text +
16
- // resolved_at and stays on record; closed is a terminal retire reachable
17
- // from open or resolved. Cross-tenant safety: BEFORE INSERT + BEFORE
18
- // UPDATE triggers enforce incidents.tenant_id == the referenced memory's
19
- // tenant_id (verbatim mirror of the v30 decisions tenant-match triggers).
20
- if (!tableExists(db, 'incidents')) {
21
- db.exec(`
2
+ const CREATE_TABLE_INCIDENTS_SQL = `
22
3
  CREATE TABLE incidents (
23
4
  id INTEGER PRIMARY KEY AUTOINCREMENT,
24
5
  memory_id TEXT,
@@ -34,18 +15,16 @@ export const v31 = {
34
15
  created_at TEXT NOT NULL,
35
16
  FOREIGN KEY (memory_id) REFERENCES memories(id) ON DELETE SET NULL
36
17
  )
37
- `);
38
- db.exec(`
18
+ `;
19
+ const CREATE_INDEX_IDX_INCIDENTS_TENANT_STATUS_SQL = `
39
20
  CREATE INDEX IF NOT EXISTS idx_incidents_tenant_status
40
21
  ON incidents(tenant_id, status)
41
- `);
42
- db.exec(`
22
+ `;
23
+ const CREATE_INDEX_IDX_INCIDENTS_MEMORY_SQL = `
43
24
  CREATE INDEX IF NOT EXISTS idx_incidents_memory
44
25
  ON incidents(memory_id) WHERE memory_id IS NOT NULL
45
- `);
46
- // Cross-tenant safety vs the referenced memory (verbatim mirror of the
47
- // v30 decisions tenant-match triggers; no supersede trigger).
48
- db.exec(`
26
+ `;
27
+ const CREATE_TRIGGER_TRG_INCIDENTS_TENANT_MATCH_INSERT_SQL = `
49
28
  CREATE TRIGGER IF NOT EXISTS trg_incidents_tenant_match_insert
50
29
  BEFORE INSERT ON incidents
51
30
  WHEN NEW.memory_id IS NOT NULL
@@ -55,8 +34,8 @@ export const v31 = {
55
34
  THEN RAISE(ABORT, 'incidents.tenant_id must match memories.tenant_id for the referenced memory')
56
35
  END;
57
36
  END
58
- `);
59
- db.exec(`
37
+ `;
38
+ const CREATE_TRIGGER_TRG_INCIDENTS_TENANT_MATCH_UPDATE_SQL = `
60
39
  CREATE TRIGGER IF NOT EXISTS trg_incidents_tenant_match_update
61
40
  BEFORE UPDATE ON incidents
62
41
  WHEN NEW.memory_id IS NOT NULL
@@ -67,7 +46,33 @@ export const v31 = {
67
46
  THEN RAISE(ABORT, 'incidents.tenant_id must match memories.tenant_id for the referenced memory')
68
47
  END;
69
48
  END
70
- `);
49
+ `;
50
+ export const v31 = {
51
+ version: 31,
52
+ up: (db) => {
53
+ // Incident first-class object.
54
+ // Mirrors the v30 decisions block but for an open -> resolved -> closed
55
+ // lifecycle (NOT supersede): there is no superseded_by self-FK and no
56
+ // supersede trigger. An incident is a postmortem capsule: a recorded
57
+ // operational event with a lifecycle and optional linked receipts (the
58
+ // memories that are its evidence, stored as a JSON array of ids in
59
+ // linked_memory_ids). The memory mirror is kept for recall but is not
60
+ // authoritative; memory_id is NULLABLE with ON DELETE SET NULL so
61
+ // forget/consolidate/archive does not lose an incident.
62
+ //
63
+ // status (open|resolved|closed): resolved records a resolution_text +
64
+ // resolved_at and stays on record; closed is a terminal retire reachable
65
+ // from open or resolved. Cross-tenant safety: BEFORE INSERT + BEFORE
66
+ // UPDATE triggers enforce incidents.tenant_id == the referenced memory's
67
+ // tenant_id (verbatim mirror of the v30 decisions tenant-match triggers).
68
+ if (!tableExists(db, 'incidents')) {
69
+ db.exec(CREATE_TABLE_INCIDENTS_SQL);
70
+ db.exec(CREATE_INDEX_IDX_INCIDENTS_TENANT_STATUS_SQL);
71
+ db.exec(CREATE_INDEX_IDX_INCIDENTS_MEMORY_SQL);
72
+ // Cross-tenant safety vs the referenced memory (verbatim mirror of the
73
+ // v30 decisions tenant-match triggers; no supersede trigger).
74
+ db.exec(CREATE_TRIGGER_TRG_INCIDENTS_TENANT_MATCH_INSERT_SQL);
75
+ db.exec(CREATE_TRIGGER_TRG_INCIDENTS_TENANT_MATCH_UPDATE_SQL);
71
76
  }
72
77
  },
73
78
  };
@@ -79,7 +79,7 @@ export const v35 = {
79
79
  // change_summary). This table = the v34 skills table with
80
80
  // skill_name/trigger_text replaced by `repo` (the repo-scoping dimension)
81
81
  // PLUS `summary` (the brief body). The distinguishing op (refreshBrief, in
82
- // src/project-briefs.ts) auto-assembles the summary from the repo's receipts
82
+ // src/objects/project-briefs.ts) auto-assembles the summary from the repo's receipts
83
83
  // (memory rows tagged path:<repo>); it needs no schema support beyond `repo`.
84
84
  // All column names were checked against SQLite reserved words:
85
85
  // repo/summary/version/status/etc. are non-reserved.
@@ -1,6 +1,6 @@
1
1
  import * as os from 'os';
2
2
  import * as path from 'path';
3
- import { deriveOriginProject, originFromSource, isGlobalStoreRoot } from '../../project-identity.js';
3
+ import { deriveOriginProject, originFromSource, isGlobalStoreRoot } from '../../core/project-identity.js';
4
4
  import { raiseMinBinary } from '../meta.js';
5
5
  import { tableHasColumn } from '../tables.js';
6
6
  export const v39 = {
@@ -1,16 +1,4 @@
1
- export const v40 = {
2
- version: 40,
3
- up: (db) => {
4
- // Retrieval-trace persistence.
5
- // Follows the v18 goal_recall_log style: one parent trace row per
6
- // recall, a WITHOUT ROWID child table for the ranked results, and a
7
- // separate append-only outcomes table so audit_log pruning can never
8
- // erase training data.
9
- //
10
- // No min_compatible_binary bump, on purpose: an old binary ignores these tables and
11
- // recordTraceOutcome re-validates trace ids, so its stale writes are skipped; a bump
12
- // would lock old binaries out of the whole store for an observability feature.
13
- db.exec(`
1
+ const RECALL_TRACES_SCHEMA_SQL = `
14
2
  CREATE TABLE IF NOT EXISTS recall_traces (
15
3
  id INTEGER PRIMARY KEY AUTOINCREMENT,
16
4
  ts TEXT NOT NULL,
@@ -56,7 +44,20 @@ export const v40 = {
56
44
  memory_ids_json TEXT NOT NULL -- ids actually credited by this outcome event
57
45
  );
58
46
  CREATE INDEX IF NOT EXISTS idx_recall_trace_outcomes_trace ON recall_trace_outcomes(trace_id);
59
- `);
47
+ `;
48
+ export const v40 = {
49
+ version: 40,
50
+ up: (db) => {
51
+ // Retrieval-trace persistence.
52
+ // Follows the v18 goal_recall_log style: one parent trace row per
53
+ // recall, a WITHOUT ROWID child table for the ranked results, and a
54
+ // separate append-only outcomes table so audit_log pruning can never
55
+ // erase training data.
56
+ //
57
+ // No min_compatible_binary bump, on purpose: an old binary ignores these tables and
58
+ // recordTraceOutcome re-validates trace ids, so its stale writes are skipped; a bump
59
+ // would lock old binaries out of the whole store for an observability feature.
60
+ db.exec(RECALL_TRACES_SCHEMA_SQL);
60
61
  },
61
62
  };
62
63
  //# sourceMappingURL=v40.js.map
@@ -1,8 +1,4 @@
1
- export const v43 = {
2
- version: 43,
3
- up: (db) => {
4
- // W2a work-queue cards (trajectories/01M2D5VSYJFK4YXQ0RG2NGCPYJ/plan.md). Additive only, v41 precedent.
5
- db.exec(`
1
+ const CARDS_SCHEMA_SQL = `
6
2
  CREATE TABLE IF NOT EXISTS cards (
7
3
  id TEXT PRIMARY KEY,
8
4
  title TEXT NOT NULL,
@@ -61,7 +57,12 @@ export const v43 = {
61
57
 
62
58
  CREATE INDEX IF NOT EXISTS idx_session_handoffs_tenant_card
63
59
  ON session_handoffs(tenant_id, card_id, created_at DESC);
64
- `);
60
+ `;
61
+ export const v43 = {
62
+ version: 43,
63
+ up: (db) => {
64
+ // W2a work-queue cards (trajectories/01M2D5VSYJFK4YXQ0RG2NGCPYJ/plan.md). Additive only, v41 precedent.
65
+ db.exec(CARDS_SCHEMA_SQL);
65
66
  },
66
67
  };
67
68
  //# sourceMappingURL=v43.js.map
@@ -1,7 +1,7 @@
1
1
  export const v44 = {
2
2
  version: 44,
3
3
  up: (db) => {
4
- // Dormant memories (src/dormant.ts): with `dormant.enabled`, the sleep
4
+ // Dormant memories (src/store/dormant.ts): with `dormant.enabled`, the sleep
5
5
  // decay pass moves a faded memory here instead of deleting it. The row
6
6
  // leaves `memories` in the same transaction, so recall, context and
7
7
  // every sleep pass stop seeing it; entry_json is the full MemoryEntry
@@ -1,7 +1,7 @@
1
1
  export const v45 = {
2
2
  version: 45,
3
3
  up: (db) => {
4
- // Token ledger (src/token-ledger.ts): one row per block of
4
+ // Token ledger (src/store/token-ledger.ts): one row per block of
5
5
  // memory text hippo hands an agent (hook, CLI, MCP, HTTP). `event` is 'inject'
6
6
  // (sent), 'skip' (unchanged since the session's last inject, not sent), 'reset'
7
7
  // (compaction dropped earlier injections, so the next one must be sent) or
@@ -1,7 +1,7 @@
1
1
  export const v46 = {
2
2
  version: 46,
3
3
  up: (db) => {
4
- // Failure log (src/failure-log.ts): hashes only, since failure text can carry paths and secrets.
4
+ // Failure log (src/store/failure-log.ts): hashes only, since failure text can carry paths and secrets.
5
5
  // Additive only: no min_compatible_binary bump.
6
6
  db.exec(`
7
7
  CREATE TABLE IF NOT EXISTS failure_log (
@@ -1,7 +1,7 @@
1
1
  export const v47 = {
2
2
  version: 47,
3
3
  up: (db) => {
4
- // Scope grants (src/auth.ts): a member key reads a
4
+ // Scope grants (src/store/auth.ts): a member key reads a
5
5
  // restricted scope only by an explicit row here. Additive only: no
6
6
  // min_compatible_binary bump.
7
7
  db.exec(`
@@ -2,7 +2,7 @@ import { MEMORY_QUARANTINE_DDL } from '../continuity.js';
2
2
  export const v48 = {
3
3
  version: 48,
4
4
  up: (db) => {
5
- // Quarantine (src/quarantine.ts): a poisoned or suspect memory sits here pending
5
+ // Quarantine (src/trust/quarantine.ts): a poisoned or suspect memory sits here pending
6
6
  // admin review instead of being hidden with no record. Additive only: no min_compatible_binary bump.
7
7
  db.exec(MEMORY_QUARANTINE_DDL);
8
8
  },
@@ -1,7 +1,7 @@
1
1
  export const v49 = {
2
2
  version: 49,
3
3
  up: (db) => {
4
- // Compaction record (src/compaction-record.ts): one row per Claude Code compaction, written before it (started)
4
+ // Compaction record (src/capture/compaction-record.ts): one row per Claude Code compaction, written before it (started)
5
5
  // and after it (summarised, done). Not a memory row. Additive only: no min_compatible_binary bump.
6
6
  db.exec(`
7
7
  CREATE TABLE IF NOT EXISTS compactions (
@@ -1,9 +1,4 @@
1
- export const v50 = {
2
- version: 50,
3
- up: (db) => {
4
- // Per-turn delivery events (src/recall-trace.ts). Additive only: no min_compatible_binary bump; rollback drops both tables
5
- // and sets schema_version back to 49. No CHECK on enum columns since SQLite cannot alter one; delivery-recorder.ts unions are the allowlist.
6
- db.exec(`
1
+ const DELIVERY_EVENTS_SCHEMA_SQL = `
7
2
  CREATE TABLE IF NOT EXISTS delivery_events (
8
3
  id INTEGER PRIMARY KEY AUTOINCREMENT,
9
4
  ts TEXT NOT NULL,
@@ -61,7 +56,13 @@ export const v50 = {
61
56
  tokens INTEGER,
62
57
  PRIMARY KEY (event_id, memory_id)
63
58
  ) WITHOUT ROWID;
64
- `);
59
+ `;
60
+ export const v50 = {
61
+ version: 50,
62
+ up: (db) => {
63
+ // Per-turn delivery events (src/store/recall-trace.ts). Additive only: no min_compatible_binary bump; rollback drops both tables
64
+ // and sets schema_version back to 49. No CHECK on enum columns since SQLite cannot alter one; delivery-recorder.ts unions are the allowlist.
65
+ db.exec(DELIVERY_EVENTS_SCHEMA_SQL);
65
66
  },
66
67
  };
67
68
  //# sourceMappingURL=v50.js.map
@@ -1,4 +1,4 @@
1
- import { MEMORY_VECTORS_DDL } from '../../vector-store.js';
1
+ import { MEMORY_VECTORS_DDL } from '../vector-store.js';
2
2
  export const v52 = {
3
3
  version: 52,
4
4
  // Vectors move out of embeddings.json so hybrid search reads only the rows it ranks. Additive only; the JSON import runs after COMMIT.
package/dist/db/open.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type DatabaseSyncLike } from './sqlite.js';
2
- import { getHippoDbPath } from './connect.js';
2
+ import { getHippoDbPath, type OpenedDb } from './connect.js';
3
3
  export { getHippoDbPath };
4
4
  /** Lock wait for hook commands: under the 5 s prompt-hook budget even after a few skipped writes, and far above a normal write's hold. */
5
5
  export declare const HOOK_DB_WAIT_MS = 1000;
@@ -20,6 +20,10 @@ export declare function scopedBusyWait(): number | undefined;
20
20
  export declare function withSqliteBlocked<T>(storeKind: string, fn: () => T): T;
21
21
  /** Runs `fn` with hippo.db opens allowed again, for a store whose own methods are backed by hippo.db, or a copy that reads the old hippo.db. */
22
22
  export declare function withSqliteAllowed<T>(fn: () => T): T;
23
+ /** Runs `fn` so that a hippo.db open on this thread throws, across awaits; a block of another store, when one is open, already refuses and stays as it is. */
24
+ export declare function withSqliteOffLoop<T>(fn: () => T): T;
25
+ /** Leaves withSqliteOffLoop's block and nothing else: another store's block and the folder marker still refuse, which withSqliteAllowed would waive. */
26
+ export declare function outsideSqliteOffLoop<T>(fn: () => T): T;
23
27
  /** First line of a best-effort catch around a hippo.db open: an unported path must fail closed, not fall back silently. */
24
28
  export declare function rethrowIfSqliteBlocked<E>(err: E): void;
25
29
  /** store init --db, store copy --db and serve --db write this file in the hippo root; its text is the store kind. */
@@ -30,6 +34,10 @@ export declare function assertSqliteAllowed(hippoRoot: string): void;
30
34
  export declare function openHippoDb(hippoRoot: string, opts?: {
31
35
  busyWaitMs?: number;
32
36
  }): DatabaseSyncLike;
37
+ /** openHippoDb, with what the open's probe read when this call made the connection. */
38
+ export declare function openHippoDbWithFacts(hippoRoot: string, opts?: {
39
+ busyWaitMs?: number;
40
+ }): OpenedDb;
33
41
  /** Open an existing store without changing it: no mkdir, WAL switch, migration or mirror cleanup. Throws when hippo.db is missing. */
34
42
  export declare function openHippoDbReadOnly(hippoRoot: string): DatabaseSyncLike;
35
43
  export declare function closeHippoDb(db: DatabaseSyncLike): void;
package/dist/db/open.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { AsyncLocalStorage } from 'node:async_hooks';
2
2
  import { existsSync, readFileSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
- import { errorMessage, log } from '../log.js';
4
+ import { errorMessage, log } from '../util/log.js';
5
5
  import { DatabaseSync } from './sqlite.js';
6
6
  import { tableExists } from './tables.js';
7
7
  import { assertBinaryCompatible } from './migrate.js';
8
- import { connectHippoDb, getHippoDbPath } from './connect.js';
8
+ import { connectWithFacts, getHippoDbPath } from './connect.js';
9
9
  import { currentRequestStores, isScopedHandle, runWithRequestStores } from './request-stores.js';
10
- import { OtherStoreFolderError, SqliteBlockedError } from './sqlite-blocked.js';
10
+ import { OtherStoreFolderError, SqliteBlockedError } from '../util/sqlite-blocked.js';
11
11
  export { getHippoDbPath };
12
12
  /** Lock wait for hook commands: under the 5 s prompt-hook budget even after a few skipped writes, and far above a normal write's hold. */
13
13
  export const HOOK_DB_WAIT_MS = 1000;
@@ -38,6 +38,17 @@ export function withSqliteBlocked(storeKind, fn) {
38
38
  export function withSqliteAllowed(fn) {
39
39
  return sqliteBlockedBy.exit(() => markerWaived.run(true, fn));
40
40
  }
41
+ // Not a store kind: the block of a route whose SQLite work belongs on a worker thread, under the hippo.db store itself.
42
+ const OFF_LOOP = 'sqlite (off the event loop)';
43
+ const OFF_LOOP_MESSAGE = 'hippo.db was opened on the server thread by a route whose SQLite work runs on a worker thread';
44
+ /** Runs `fn` so that a hippo.db open on this thread throws, across awaits; a block of another store, when one is open, already refuses and stays as it is. */
45
+ export function withSqliteOffLoop(fn) {
46
+ return sqliteBlockedBy.getStore() === undefined ? sqliteBlockedBy.run(OFF_LOOP, fn) : fn();
47
+ }
48
+ /** Leaves withSqliteOffLoop's block and nothing else: another store's block and the folder marker still refuse, which withSqliteAllowed would waive. */
49
+ export function outsideSqliteOffLoop(fn) {
50
+ return sqliteBlockedBy.getStore() === OFF_LOOP ? sqliteBlockedBy.exit(fn) : fn();
51
+ }
41
52
  /** First line of a best-effort catch around a hippo.db open: an unported path must fail closed, not fall back silently. */
42
53
  export function rethrowIfSqliteBlocked(err) {
43
54
  if (err instanceof SqliteBlockedError)
@@ -59,6 +70,8 @@ function markerKind(marker) {
59
70
  /** Throws where hippo.db must not open; checked on every open, not cached, since the marker can appear while a process runs. */
60
71
  export function assertSqliteAllowed(hippoRoot) {
61
72
  const storeKind = sqliteBlockedBy.getStore();
73
+ if (storeKind === OFF_LOOP)
74
+ throw new SqliteBlockedError('sqlite', OFF_LOOP_MESSAGE);
62
75
  if (storeKind !== undefined)
63
76
  throw new SqliteBlockedError(storeKind);
64
77
  if (markerWaived.getStore())
@@ -69,9 +82,13 @@ export function assertSqliteAllowed(hippoRoot) {
69
82
  }
70
83
  /** `busyWaitMs` shortens every lock wait of this open, for a hook that must finish inside its own timeout. */
71
84
  export function openHippoDb(hippoRoot, opts) {
85
+ return openHippoDbWithFacts(hippoRoot, opts).db;
86
+ }
87
+ /** openHippoDb, with what the open's probe read when this call made the connection. */
88
+ export function openHippoDbWithFacts(hippoRoot, opts) {
72
89
  assertSqliteAllowed(hippoRoot);
73
90
  const stores = currentRequestStores();
74
- return stores ? stores.get(hippoRoot, opts) : connectHippoDb(hippoRoot, opts?.busyWaitMs);
91
+ return stores ? stores.getWithFacts(hippoRoot, opts) : connectWithFacts(hippoRoot, opts?.busyWaitMs);
75
92
  }
76
93
  /** Open an existing store without changing it: no mkdir, WAL switch, migration or mirror cleanup. Throws when hippo.db is missing. */
77
94
  export function openHippoDbReadOnly(hippoRoot) {