hippo-memory 1.68.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 (864) hide show
  1. package/README.md +6 -3
  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.d.ts +3 -1
  7. package/dist/agent-memories/copilot.js +5 -4
  8. package/dist/agent-memories/files.js +3 -2
  9. package/dist/agent-memories/gemini.js +6 -5
  10. package/dist/agent-memories/keys.js +3 -2
  11. package/dist/agent-memories/legacy.d.ts +2 -2
  12. package/dist/agent-memories/legacy.js +2 -2
  13. package/dist/agent-memories/report.d.ts +1 -1
  14. package/dist/agent-memories/report.js +1 -1
  15. package/dist/agent-memories/source.d.ts +1 -1
  16. package/dist/agent-memories/source.js +6 -5
  17. package/dist/agent-memories/sync.d.ts +1 -1
  18. package/dist/agent-memories/sync.js +24 -33
  19. package/dist/agent-memories/types.d.ts +1 -1
  20. package/dist/api/assemble.d.ts +2 -2
  21. package/dist/api/assemble.js +42 -32
  22. package/dist/api/audit.d.ts +4 -7
  23. package/dist/api/audit.js +6 -20
  24. package/dist/api/auth.d.ts +5 -18
  25. package/dist/api/auth.js +44 -194
  26. package/dist/api/auto-sleep.d.ts +13 -0
  27. package/dist/api/auto-sleep.js +32 -0
  28. package/dist/{availability.d.ts → api/availability.d.ts} +2 -2
  29. package/dist/{availability.js → api/availability.js} +12 -29
  30. package/dist/{context-auto.js → api/context-auto.js} +2 -1
  31. package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
  32. package/dist/{context-render.js → api/context-render.js} +7 -6
  33. package/dist/api/context-select.d.ts +14 -4
  34. package/dist/api/context-select.js +50 -60
  35. package/dist/api/context-types.d.ts +5 -5
  36. package/dist/api/context.d.ts +2 -4
  37. package/dist/api/context.js +113 -85
  38. package/dist/api/dormant.d.ts +3 -3
  39. package/dist/api/dormant.js +38 -107
  40. package/dist/api/drill-down.d.ts +2 -2
  41. package/dist/api/drill-down.js +37 -65
  42. package/dist/api/forget.d.ts +4 -13
  43. package/dist/api/forget.js +13 -35
  44. package/dist/api/goals.d.ts +1 -1
  45. package/dist/api/goals.js +2 -2
  46. package/dist/api/index.d.ts +26 -0
  47. package/dist/api/index.js +29 -0
  48. package/dist/api/instruction-detect.js +74 -0
  49. package/dist/api/learn.js +63 -55
  50. package/dist/api/ledger-db.d.ts +20 -0
  51. package/dist/api/ledger-db.js +79 -0
  52. package/dist/api/on-store.d.ts +16 -0
  53. package/dist/api/on-store.js +36 -0
  54. package/dist/api/outcome.d.ts +9 -46
  55. package/dist/api/outcome.js +15 -57
  56. package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
  57. package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
  58. package/dist/api/promote.d.ts +7 -18
  59. package/dist/api/promote.js +30 -152
  60. package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +7 -7
  61. package/dist/{prompt-hook.js → api/prompt-hook.js} +34 -53
  62. package/dist/api/quarantine.d.ts +5 -5
  63. package/dist/api/quarantine.js +30 -106
  64. package/dist/api/recall-core.d.ts +4 -0
  65. package/dist/api/recall-core.js +112 -0
  66. package/dist/{recall-history.js → api/recall-history.js} +30 -25
  67. package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +5 -5
  68. package/dist/{recall-pipeline.js → api/recall-pipeline.js} +47 -42
  69. package/dist/api/recall-record.d.ts +10 -13
  70. package/dist/api/recall-record.js +10 -30
  71. package/dist/api/recall-request.d.ts +2 -2
  72. package/dist/api/recall-request.js +3 -3
  73. package/dist/api/recall-types.d.ts +41 -16
  74. package/dist/api/recall.d.ts +1 -1
  75. package/dist/api/recall.js +39 -37
  76. package/dist/api/remember.d.ts +12 -13
  77. package/dist/api/remember.js +38 -27
  78. package/dist/api/session-owners.d.ts +4 -0
  79. package/dist/api/session-owners.js +17 -0
  80. package/dist/api/sleep-run.d.ts +7 -7
  81. package/dist/api/sleep-run.js +63 -75
  82. package/dist/api/sleep.d.ts +1 -1
  83. package/dist/api/tokens.d.ts +2 -2
  84. package/dist/api/tokens.js +9 -21
  85. package/dist/api/types.d.ts +2 -2
  86. package/dist/api/types.js +1 -1
  87. package/dist/capture/caller-session.d.ts +2 -2
  88. package/dist/capture/caller-session.js +8 -8
  89. package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
  90. package/dist/{capture-error.js → capture/capture-error.js} +7 -7
  91. package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
  92. package/dist/capture/command.d.ts +1 -1
  93. package/dist/capture/command.js +54 -41
  94. package/dist/capture/compact-resume-caller.d.ts +1 -1
  95. package/dist/capture/compact-resume-caller.js +7 -7
  96. package/dist/capture/compact.d.ts +4 -1
  97. package/dist/capture/compact.js +59 -22
  98. package/dist/capture/compaction-items-caller.d.ts +1 -1
  99. package/dist/capture/compaction-items-caller.js +7 -5
  100. package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
  101. package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
  102. package/dist/{compaction-record.js → capture/compaction-record.js} +48 -94
  103. package/dist/{compaction-spool.js → capture/compaction-spool.js} +17 -13
  104. package/dist/capture/copilot-transcript.d.ts +3 -0
  105. package/dist/capture/copilot-transcript.js +9 -2
  106. package/dist/capture/extract.js +2 -2
  107. package/dist/capture/failure-caller.d.ts +2 -2
  108. package/dist/capture/failure-caller.js +6 -6
  109. package/dist/capture/failure-reading.d.ts +2 -5
  110. package/dist/capture/failure-reading.js +11 -12
  111. package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
  112. package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
  113. package/dist/capture/pre-compact-caller.d.ts +1 -1
  114. package/dist/capture/pre-compact-caller.js +2 -2
  115. package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +1 -5
  116. package/dist/{session-digest.js → capture/session-digest.js} +17 -23
  117. package/dist/capture/session-end-caller.d.ts +2 -2
  118. package/dist/capture/session-end-caller.js +1 -1
  119. package/dist/capture/session-texts.d.ts +1 -1
  120. package/dist/capture/session-texts.js +5 -5
  121. package/dist/capture/session-worker.d.ts +13 -0
  122. package/dist/capture/session-worker.js +196 -0
  123. package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
  124. package/dist/capture/transcript.js +68 -74
  125. package/dist/capture/working-state.d.ts +0 -3
  126. package/dist/capture/working-state.js +7 -7
  127. package/dist/{audit-prune.d.ts → cli/audit-prune.d.ts} +1 -2
  128. package/dist/{audit-prune.js → cli/audit-prune.js} +5 -39
  129. package/dist/cli/audit.d.ts +2 -2
  130. package/dist/cli/audit.js +77 -72
  131. package/dist/cli/auth.d.ts +2 -1
  132. package/dist/cli/auth.js +18 -20
  133. package/dist/cli/briefs.d.ts +4 -3
  134. package/dist/cli/briefs.js +59 -181
  135. package/dist/cli/card.d.ts +2 -1
  136. package/dist/cli/card.js +25 -23
  137. package/dist/{client.d.ts → cli/client.d.ts} +1 -1
  138. package/dist/{client.js → cli/client.js} +1 -1
  139. package/dist/cli/compact-resume-payload.d.ts +8 -0
  140. package/dist/cli/compact-resume-payload.js +39 -0
  141. package/dist/cli/context.d.ts +2 -13
  142. package/dist/cli/context.js +41 -71
  143. package/dist/cli/continuity.d.ts +6 -5
  144. package/dist/cli/continuity.js +109 -99
  145. package/dist/{correction-latency.d.ts → cli/correction-latency.d.ts} +1 -1
  146. package/dist/cli/curate.d.ts +9 -9
  147. package/dist/cli/curate.js +177 -149
  148. package/dist/cli/dag.d.ts +4 -4
  149. package/dist/cli/dag.js +46 -34
  150. package/dist/cli/decisions.d.ts +4 -3
  151. package/dist/cli/decisions.js +108 -218
  152. package/dist/cli/eval.d.ts +1 -3
  153. package/dist/cli/eval.js +43 -31
  154. package/dist/cli/explain.d.ts +1 -1
  155. package/dist/cli/explain.js +35 -19
  156. package/dist/cli/flag-values.d.ts +25 -0
  157. package/dist/cli/flag-values.js +103 -0
  158. package/dist/cli/flags.d.ts +303 -0
  159. package/dist/cli/flags.js +169 -0
  160. package/dist/cli/goals.d.ts +2 -1
  161. package/dist/cli/goals.js +39 -34
  162. package/dist/cli/hook-runtime.d.ts +49 -0
  163. package/dist/cli/hook-runtime.js +155 -0
  164. package/dist/cli/init.d.ts +2 -1
  165. package/dist/cli/init.js +151 -118
  166. package/dist/cli/install-steps.d.ts +7 -0
  167. package/dist/cli/install-steps.js +110 -0
  168. package/dist/cli/last-sleep.d.ts +2 -1
  169. package/dist/cli/last-sleep.js +9 -7
  170. package/dist/cli/maintenance.d.ts +5 -4
  171. package/dist/cli/maintenance.js +31 -27
  172. package/dist/cli/object-verbs.d.ts +40 -0
  173. package/dist/cli/object-verbs.js +65 -0
  174. package/dist/{owner-validation.d.ts → cli/owner-validation.d.ts} +0 -1
  175. package/dist/{owner-validation.js → cli/owner-validation.js} +2 -2
  176. package/dist/cli/playbooks.d.ts +4 -3
  177. package/dist/cli/playbooks.js +77 -280
  178. package/dist/cli/print.d.ts +18 -0
  179. package/dist/cli/print.js +85 -0
  180. package/dist/cli/projects.d.ts +2 -3
  181. package/dist/cli/projects.js +56 -49
  182. package/dist/{provenance-coverage.d.ts → cli/provenance-coverage.d.ts} +1 -1
  183. package/dist/cli/quality-repair-once.js +4 -4
  184. package/dist/{quality-repair.js → cli/quality-repair.js} +23 -37
  185. package/dist/cli/recall.d.ts +2 -4
  186. package/dist/cli/recall.js +101 -150
  187. package/dist/{refine-llm.d.ts → cli/refine-llm.d.ts} +1 -1
  188. package/dist/{refine-llm.js → cli/refine-llm.js} +70 -82
  189. package/dist/cli/remember.d.ts +1 -3
  190. package/dist/cli/remember.js +124 -103
  191. package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +3 -1
  192. package/dist/{scheduler.js → cli/scheduler.js} +13 -7
  193. package/dist/cli/serve.d.ts +1 -1
  194. package/dist/cli/serve.js +34 -4
  195. package/dist/cli/session-hooks.d.ts +4 -4
  196. package/dist/cli/session-hooks.js +265 -191
  197. package/dist/cli/setup.d.ts +2 -1
  198. package/dist/cli/setup.js +111 -45
  199. package/dist/cli/shared.d.ts +5 -95
  200. package/dist/cli/shared.js +18 -369
  201. package/dist/cli/slack.d.ts +2 -1
  202. package/dist/cli/slack.js +31 -55
  203. package/dist/cli/sleep-render.d.ts +4 -0
  204. package/dist/cli/sleep-render.js +61 -0
  205. package/dist/cli/sleep.d.ts +2 -8
  206. package/dist/cli/sleep.js +20 -76
  207. package/dist/cli/status.d.ts +3 -3
  208. package/dist/cli/status.js +39 -41
  209. package/dist/{stdin.js → cli/stdin.js} +6 -6
  210. package/dist/cli/transfer.d.ts +4 -4
  211. package/dist/cli/transfer.js +68 -42
  212. package/dist/cli/usage.js +8 -3
  213. package/dist/cli.d.ts +289 -5
  214. package/dist/cli.js +184 -117
  215. package/dist/connectors/dlq.d.ts +44 -0
  216. package/dist/connectors/dlq.js +30 -0
  217. package/dist/connectors/github/backfill.d.ts +1 -1
  218. package/dist/connectors/github/backfill.js +29 -66
  219. package/dist/connectors/github/cli-impl.js +59 -74
  220. package/dist/connectors/github/deletion.d.ts +5 -6
  221. package/dist/connectors/github/deletion.js +18 -52
  222. package/dist/connectors/github/dlq.d.ts +7 -61
  223. package/dist/connectors/github/dlq.js +19 -119
  224. package/dist/connectors/github/ingest.d.ts +2 -31
  225. package/dist/connectors/github/ingest.js +20 -82
  226. package/dist/connectors/github/octokit-client.d.ts +1 -1
  227. package/dist/connectors/github/octokit-client.js +2 -1
  228. package/dist/connectors/github/tenant-routing.d.ts +2 -2
  229. package/dist/connectors/github/tenant-routing.js +10 -36
  230. package/dist/connectors/github/transform.d.ts +1 -1
  231. package/dist/connectors/github/types.d.ts +1 -1
  232. package/dist/connectors/github/types.js +15 -18
  233. package/dist/connectors/github/webhook.d.ts +3 -2
  234. package/dist/connectors/github/webhook.js +84 -87
  235. package/dist/connectors/slack/backfill.d.ts +1 -1
  236. package/dist/connectors/slack/backfill.js +5 -29
  237. package/dist/connectors/slack/deletion.d.ts +4 -7
  238. package/dist/connectors/slack/deletion.js +20 -48
  239. package/dist/connectors/slack/dlq.d.ts +7 -49
  240. package/dist/connectors/slack/dlq.js +25 -118
  241. package/dist/connectors/slack/ingest.d.ts +5 -18
  242. package/dist/connectors/slack/ingest.js +27 -90
  243. package/dist/connectors/slack/signature.js +2 -1
  244. package/dist/connectors/slack/tenant-routing.d.ts +4 -1
  245. package/dist/connectors/slack/tenant-routing.js +13 -14
  246. package/dist/connectors/slack/transform.d.ts +1 -1
  247. package/dist/connectors/slack/types.d.ts +1 -1
  248. package/dist/connectors/slack/types.js +3 -12
  249. package/dist/connectors/slack/web-client.js +2 -2
  250. package/dist/connectors/slack/webhook.d.ts +3 -2
  251. package/dist/connectors/slack/webhook.js +75 -82
  252. package/dist/connectors/slack/workspaces.d.ts +4 -17
  253. package/dist/connectors/slack/workspaces.js +4 -34
  254. package/dist/consolidate/conflicts.d.ts +1 -1
  255. package/dist/consolidate/conflicts.js +4 -4
  256. package/dist/{dag.d.ts → consolidate/dag.d.ts} +1 -1
  257. package/dist/{dag.js → consolidate/dag.js} +60 -81
  258. package/dist/consolidate/decay.d.ts +2 -2
  259. package/dist/consolidate/decay.js +28 -22
  260. package/dist/{dedupe.js → consolidate/dedupe.js} +11 -19
  261. package/dist/consolidate/flush-units.d.ts +2 -2
  262. package/dist/{half-life-migration.d.ts → consolidate/half-life-migration.d.ts} +3 -9
  263. package/dist/consolidate/half-life-migration.js +106 -0
  264. package/dist/consolidate/llm-passes.js +8 -8
  265. package/dist/{memory-value.d.ts → consolidate/memory-value.d.ts} +7 -2
  266. package/dist/{memory-value.js → consolidate/memory-value.js} +9 -7
  267. package/dist/consolidate/merge.js +57 -54
  268. package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
  269. package/dist/{merged-row.js → consolidate/merged-row.js} +2 -2
  270. package/dist/consolidate/physics-pass.js +46 -46
  271. package/dist/{replay.d.ts → consolidate/replay.d.ts} +1 -1
  272. package/dist/{replay.js → consolidate/replay.js} +2 -2
  273. package/dist/consolidate/run.d.ts +7 -13
  274. package/dist/consolidate/run.js +6 -37
  275. package/dist/consolidate/sleep.d.ts +1 -1
  276. package/dist/consolidate/sleep.js +64 -134
  277. package/dist/{trace.js → consolidate/trace.js} +4 -6
  278. package/dist/consolidate/traces.js +34 -29
  279. package/dist/{ablation.js → core/ablation.js} +1 -1
  280. package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
  281. package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
  282. package/dist/{ambient.js → core/ambient.js} +12 -10
  283. package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
  284. package/dist/core/capture-contract.js +149 -0
  285. package/dist/{compare.d.ts → core/compare.d.ts} +2 -0
  286. package/dist/{compare.js → core/compare.js} +10 -3
  287. package/dist/{config.d.ts → core/config.d.ts} +6 -6
  288. package/dist/{config.js → core/config.js} +99 -72
  289. package/dist/core/handoff.js +87 -0
  290. package/dist/{memory-quality.js → core/memory-quality.js} +1 -1
  291. package/dist/{memory.d.ts → core/memory.d.ts} +19 -5
  292. package/dist/{memory.js → core/memory.js} +117 -82
  293. package/dist/{physics.d.ts → core/physics.d.ts} +1 -1
  294. package/dist/{physics.js → core/physics.js} +2 -1
  295. package/dist/{project-identity.d.ts → core/project-identity.d.ts} +0 -5
  296. package/dist/{project-identity.js → core/project-identity.js} +5 -17
  297. package/dist/{project-remote.js → core/project-remote.js} +4 -4
  298. package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +5 -0
  299. package/dist/{prompt-recall.js → core/prompt-recall.js} +14 -1
  300. package/dist/{salience.js → core/salience.js} +35 -20
  301. package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
  302. package/dist/{search/types.js → core/search-types.js} +1 -1
  303. package/dist/core/session-digest-row.d.ts +5 -0
  304. package/dist/core/session-digest-row.js +6 -0
  305. package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
  306. package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +5 -5
  307. package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
  308. package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
  309. package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +9 -9
  310. package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +101 -104
  311. package/dist/{dashboard.js → dashboard/dashboard.js} +124 -53
  312. package/dist/db/backup.js +1 -1
  313. package/dist/db/busy.d.ts +18 -1
  314. package/dist/db/busy.js +74 -9
  315. package/dist/db/connect.d.ts +10 -2
  316. package/dist/db/connect.js +43 -10
  317. package/dist/db/index.d.ts +9 -0
  318. package/dist/db/index.js +8 -0
  319. package/dist/db/meta.d.ts +4 -0
  320. package/dist/db/meta.js +11 -1
  321. package/dist/db/migrate.d.ts +8 -1
  322. package/dist/db/migrate.js +25 -30
  323. package/dist/db/migrations/v08.js +1 -1
  324. package/dist/db/migrations/v14.js +39 -35
  325. package/dist/db/migrations/v16.js +29 -26
  326. package/dist/db/migrations/v18.js +6 -5
  327. package/dist/db/migrations/v20.js +4 -2
  328. package/dist/db/migrations/v22.js +39 -36
  329. package/dist/db/migrations/v24.js +27 -22
  330. package/dist/db/migrations/v29.js +37 -32
  331. package/dist/db/migrations/v31.js +36 -31
  332. package/dist/db/migrations/v35.js +1 -1
  333. package/dist/db/migrations/v39.js +1 -1
  334. package/dist/db/migrations/v40.js +15 -14
  335. package/dist/db/migrations/v43.js +7 -6
  336. package/dist/db/migrations/v44.js +1 -1
  337. package/dist/db/migrations/v45.js +1 -1
  338. package/dist/db/migrations/v46.js +1 -1
  339. package/dist/db/migrations/v47.js +1 -1
  340. package/dist/db/migrations/v48.js +1 -1
  341. package/dist/db/migrations/v49.js +1 -1
  342. package/dist/db/migrations/v50.js +8 -7
  343. package/dist/db/migrations/v52.js +1 -1
  344. package/dist/db/open.d.ts +9 -1
  345. package/dist/db/open.js +21 -4
  346. package/dist/{physics-state.d.ts → db/physics-state.d.ts} +3 -3
  347. package/dist/{physics-state.js → db/physics-state.js} +9 -16
  348. package/dist/{raw-archive-mirror-cleanup.d.ts → db/raw-archive-mirror-cleanup.d.ts} +5 -5
  349. package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +11 -6
  350. package/dist/db/request-stores.d.ts +15 -2
  351. package/dist/db/request-stores.js +37 -15
  352. package/dist/db/tables.d.ts +2 -0
  353. package/dist/db/tables.js +6 -0
  354. package/dist/{vector-store.d.ts → db/vector-store.d.ts} +4 -2
  355. package/dist/{vector-store.js → db/vector-store.js} +76 -51
  356. package/dist/db/wal-checkpointer.d.ts +11 -0
  357. package/dist/db/wal-checkpointer.js +92 -0
  358. package/dist/doctor.js +105 -136
  359. package/dist/entry/json-hooks.d.ts +1 -1
  360. package/dist/entry/json-hooks.js +1 -1
  361. package/dist/entry/project-identity.d.ts +1 -1
  362. package/dist/entry/project-identity.js +1 -1
  363. package/dist/entry/session-text.d.ts +3 -3
  364. package/dist/entry/session-text.js +3 -3
  365. package/dist/{eval-stats.js → eval/eval-stats.js} +12 -9
  366. package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +1 -1
  367. package/dist/{eval-suite.js → eval/eval-suite.js} +25 -23
  368. package/dist/{eval.d.ts → eval/eval.d.ts} +1 -1
  369. package/dist/{eval.js → eval/eval.js} +29 -22
  370. package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -3
  371. package/dist/{judgment.js → eval/judgment.js} +4 -9
  372. package/dist/extensions/openclaw-plugin/index.js +1 -2
  373. package/dist/graph/delta.d.ts +3 -2
  374. package/dist/graph/delta.js +9 -23
  375. package/dist/{graph-extract.d.ts → graph/extract.d.ts} +6 -6
  376. package/dist/{graph-extract.js → graph/extract.js} +37 -52
  377. package/dist/{graph-recall.d.ts → graph/recall.d.ts} +2 -2
  378. package/dist/{graph-recall.js → graph/recall.js} +55 -36
  379. package/dist/{graph-stream.d.ts → graph/stream.d.ts} +2 -2
  380. package/dist/{graph-stream.js → graph/stream.js} +9 -7
  381. package/dist/{graph-view.d.ts → graph/view.d.ts} +6 -3
  382. package/dist/{graph-view.js → graph/view.js} +127 -167
  383. package/dist/graph/write.d.ts +4 -76
  384. package/dist/graph/write.js +13 -397
  385. package/dist/hooks/codex-session.js +1 -1
  386. package/dist/hooks/codex-wrapper.js +14 -15
  387. package/dist/hooks/copilot.d.ts +48 -13
  388. package/dist/hooks/copilot.js +124 -39
  389. package/dist/{cli → hooks}/hook-blocks.js +1 -1
  390. package/dist/hooks/json-hooks.d.ts +3 -1
  391. package/dist/hooks/json-hooks.js +40 -122
  392. package/dist/hooks/opencode.js +35 -27
  393. package/dist/hooks/shared.d.ts +7 -5
  394. package/dist/hooks/shared.js +19 -8
  395. package/dist/importers/core.d.ts +2 -6
  396. package/dist/importers/core.js +41 -39
  397. package/dist/importers/markdown-parse.d.ts +1 -10
  398. package/dist/importers/markdown-parse.js +2 -19
  399. package/dist/importers/markdown.js +2 -1
  400. package/dist/importers/sources.js +50 -46
  401. package/dist/importers/vault.js +71 -92
  402. package/dist/index.d.ts +22 -22
  403. package/dist/index.js +21 -21
  404. package/dist/{autolearn.d.ts → learn/autolearn.d.ts} +2 -2
  405. package/dist/{autolearn.js → learn/autolearn.js} +13 -11
  406. package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
  407. package/dist/{churn-git.js → learn/churn-git.js} +6 -4
  408. package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
  409. package/dist/learn/extract.js +125 -0
  410. package/dist/{forward-claim-detector.d.ts → learn/forward-claim-detector.d.ts} +1 -1
  411. package/dist/{forward-claim-detector.js → learn/forward-claim-detector.js} +1 -1
  412. package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +4 -0
  413. package/dist/{invalidation.js → learn/invalidation.js} +83 -99
  414. package/dist/mcp/admin-tools.d.ts +1 -1
  415. package/dist/mcp/admin-tools.js +37 -60
  416. package/dist/mcp/format.d.ts +5 -5
  417. package/dist/mcp/format.js +7 -6
  418. package/dist/mcp/framing.d.ts +6 -0
  419. package/dist/mcp/framing.js +11 -3
  420. package/dist/mcp/memory-tools.d.ts +2 -2
  421. package/dist/mcp/memory-tools.js +12 -31
  422. package/dist/mcp/protocol.d.ts +6 -10
  423. package/dist/mcp/protocol.js +8 -14
  424. package/dist/mcp/recall-tools.d.ts +2 -2
  425. package/dist/mcp/recall-tools.js +68 -50
  426. package/dist/mcp/request.js +65 -63
  427. package/dist/mcp/server.js +1 -1
  428. package/dist/mcp/session-state.d.ts +1 -2
  429. package/dist/mcp/session-state.js +2 -2
  430. package/dist/mcp/shared-gate.js +1 -1
  431. package/dist/mcp/stdio.js +69 -31
  432. package/dist/mcp/tool-args.js +2 -1
  433. package/dist/mcp/tools.js +2 -2
  434. package/dist/{customer-notes.d.ts → objects/customer-notes.d.ts} +7 -24
  435. package/dist/objects/customer-notes.js +112 -0
  436. package/dist/{decisions.d.ts → objects/decisions.d.ts} +13 -28
  437. package/dist/objects/decisions.js +101 -0
  438. package/dist/objects/descriptor.d.ts +52 -0
  439. package/dist/objects/descriptor.js +4 -0
  440. package/dist/objects/fields.d.ts +15 -0
  441. package/dist/objects/fields.js +21 -0
  442. package/dist/{incidents.d.ts → objects/incidents.d.ts} +17 -44
  443. package/dist/objects/incidents.js +130 -0
  444. package/dist/objects/lifecycle.d.ts +27 -0
  445. package/dist/objects/lifecycle.js +96 -0
  446. package/dist/{policies.d.ts → objects/policies.d.ts} +14 -27
  447. package/dist/objects/policies.js +189 -0
  448. package/dist/{processes.d.ts → objects/processes.d.ts} +14 -34
  449. package/dist/objects/processes.js +146 -0
  450. package/dist/{project-briefs.d.ts → objects/project-briefs.d.ts} +19 -40
  451. package/dist/objects/project-briefs.js +255 -0
  452. package/dist/{skills.d.ts → objects/skills.d.ts} +11 -26
  453. package/dist/objects/skills.js +156 -0
  454. package/dist/postinstall.js +4 -2
  455. package/dist/predictions/planning-fallacy.d.ts +4 -76
  456. package/dist/predictions/planning-fallacy.js +4 -129
  457. package/dist/rerankers/clef.d.ts +2 -6
  458. package/dist/rerankers/clef.js +27 -47
  459. package/dist/rerankers/cross-encoder.d.ts +0 -7
  460. package/dist/rerankers/cross-encoder.js +15 -23
  461. package/dist/rerankers/index.js +8 -7
  462. package/dist/rerankers/jev.d.ts +1 -4
  463. package/dist/rerankers/jev.js +30 -49
  464. package/dist/rerankers/llm.d.ts +2 -4
  465. package/dist/rerankers/llm.js +33 -50
  466. package/dist/rerankers/outage-warning.d.ts +7 -0
  467. package/dist/rerankers/outage-warning.js +31 -0
  468. package/dist/rerankers/remote.d.ts +3 -0
  469. package/dist/rerankers/remote.js +23 -0
  470. package/dist/rerankers/types.d.ts +1 -1
  471. package/dist/search/as-of.d.ts +1 -1
  472. package/dist/search/bm25-search.d.ts +2 -2
  473. package/dist/search/bm25-search.js +7 -7
  474. package/dist/search/bm25.d.ts +1 -1
  475. package/dist/search/bm25.js +1 -1
  476. package/dist/search/boosts.d.ts +5 -1
  477. package/dist/search/boosts.js +34 -13
  478. package/dist/search/breakdown.d.ts +2 -2
  479. package/dist/search/breakdown.js +2 -1
  480. package/dist/search/explain.d.ts +1 -1
  481. package/dist/search/explain.js +3 -2
  482. package/dist/search/finalize.d.ts +2 -2
  483. package/dist/search/finalize.js +4 -3
  484. package/dist/search/fusion.d.ts +1 -1
  485. package/dist/search/fusion.js +3 -3
  486. package/dist/search/hybrid-score.d.ts +2 -2
  487. package/dist/search/hybrid-score.js +1 -1
  488. package/dist/search/hybrid.d.ts +4 -4
  489. package/dist/search/hybrid.js +11 -8
  490. package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
  491. package/dist/{multihop.js → search/multihop.js} +7 -5
  492. package/dist/{path-context.js → search/path-context.js} +3 -1
  493. package/dist/search/physics-search.d.ts +4 -4
  494. package/dist/search/physics-search.js +15 -15
  495. package/dist/search/rerank.d.ts +3 -3
  496. package/dist/search/rerank.js +4 -3
  497. package/dist/search/temporal.d.ts +1 -1
  498. package/dist/search/temporal.js +5 -2
  499. package/dist/search/vector.d.ts +3 -3
  500. package/dist/search/vector.js +17 -11
  501. package/dist/server/auth.d.ts +1 -1
  502. package/dist/server/auth.js +26 -18
  503. package/dist/server/boot.d.ts +24 -0
  504. package/dist/server/boot.js +465 -0
  505. package/dist/server/client-ip.d.ts +5 -1
  506. package/dist/server/client-ip.js +18 -6
  507. package/dist/server/cursor.d.ts +1 -1
  508. package/dist/server/cursor.js +2 -3
  509. package/dist/server/deadline.d.ts +13 -0
  510. package/dist/server/deadline.js +45 -0
  511. package/dist/server/key-check-bounds.d.ts +8 -0
  512. package/dist/server/key-check-bounds.js +46 -0
  513. package/dist/server/lifecycle.js +1 -1
  514. package/dist/server/mcp-http.d.ts +1 -4
  515. package/dist/server/mcp-http.js +34 -24
  516. package/dist/server/ready.d.ts +7 -0
  517. package/dist/server/ready.js +38 -0
  518. package/dist/server/request.d.ts +10 -4
  519. package/dist/server/request.js +63 -12
  520. package/dist/server/route-table.d.ts +15 -0
  521. package/dist/server/route-table.js +209 -0
  522. package/dist/server/routes/admin.js +13 -8
  523. package/dist/server/routes/customer-notes.d.ts +5 -5
  524. package/dist/server/routes/customer-notes.js +32 -97
  525. package/dist/server/routes/decisions.d.ts +5 -5
  526. package/dist/server/routes/decisions.js +42 -105
  527. package/dist/server/routes/incidents.d.ts +5 -5
  528. package/dist/server/routes/incidents.js +42 -95
  529. package/dist/server/routes/memories.js +21 -20
  530. package/dist/server/routes/object-routes.d.ts +40 -0
  531. package/dist/server/routes/object-routes.js +80 -0
  532. package/dist/server/routes/policies.d.ts +6 -6
  533. package/dist/server/routes/policies.js +40 -124
  534. package/dist/server/routes/predictions.js +29 -45
  535. package/dist/server/routes/processes.d.ts +5 -5
  536. package/dist/server/routes/processes.js +38 -118
  537. package/dist/server/routes/project-briefs.d.ts +6 -6
  538. package/dist/server/routes/project-briefs.js +38 -110
  539. package/dist/server/routes/recall.js +14 -12
  540. package/dist/server/routes/skills.d.ts +6 -6
  541. package/dist/server/routes/skills.js +37 -125
  542. package/dist/{server-detect.js → server/server-detect.js} +3 -2
  543. package/dist/server/sleep-child.d.ts +2 -0
  544. package/dist/server/sleep-child.js +19 -0
  545. package/dist/server/sleep-offload.d.ts +20 -0
  546. package/dist/server/sleep-offload.js +70 -0
  547. package/dist/server/tls.d.ts +6 -0
  548. package/dist/server/tls.js +24 -0
  549. package/dist/server/types.d.ts +27 -8
  550. package/dist/server/validation.d.ts +3 -4
  551. package/dist/server/validation.js +6 -11
  552. package/dist/server.d.ts +41 -50
  553. package/dist/server.js +26 -560
  554. package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +1 -1
  555. package/dist/{project-merge.js → sharing/project-merge.js} +26 -45
  556. package/dist/{scope.js → sharing/scope.js} +1 -1
  557. package/dist/{shared.d.ts → sharing/shared.d.ts} +10 -9
  558. package/dist/{shared.js → sharing/shared.js} +100 -77
  559. package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
  560. package/dist/{ambient-store.js → store/ambient.js} +10 -10
  561. package/dist/store/audit-event.d.ts +12 -6
  562. package/dist/store/audit-event.js +6 -5
  563. package/dist/{audit.d.ts → store/audit.d.ts} +27 -3
  564. package/dist/{audit.js → store/audit.js} +91 -6
  565. package/dist/{auth.d.ts → store/auth.d.ts} +15 -32
  566. package/dist/{auth.js → store/auth.js} +100 -92
  567. package/dist/store/candidates.d.ts +23 -12
  568. package/dist/store/candidates.js +87 -35
  569. package/dist/{card-detail.d.ts → store/card-detail.d.ts} +3 -3
  570. package/dist/{card-detail.js → store/card-detail.js} +1 -1
  571. package/dist/{store-cards.d.ts → store/cards.d.ts} +14 -9
  572. package/dist/{store-cards.js → store/cards.js} +85 -146
  573. package/dist/store/compactions.d.ts +78 -0
  574. package/dist/store/compactions.js +93 -0
  575. package/dist/store/conflicts.d.ts +22 -5
  576. package/dist/store/conflicts.js +160 -109
  577. package/dist/store/connectors/github.d.ts +84 -0
  578. package/dist/store/connectors/github.js +180 -0
  579. package/dist/store/connectors/slack.d.ts +69 -0
  580. package/dist/store/connectors/slack.js +177 -0
  581. package/dist/store/dashboard-reads.d.ts +27 -0
  582. package/dist/store/dashboard-reads.js +92 -0
  583. package/dist/store/delete-and-batch.d.ts +20 -24
  584. package/dist/store/delete-and-batch.js +64 -40
  585. package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +12 -5
  586. package/dist/{delivery-recorder.js → store/delivery-recorder.js} +42 -30
  587. package/dist/store/descendant-page.d.ts +12 -0
  588. package/dist/store/descendant-page.js +99 -0
  589. package/dist/store/diagnostics.d.ts +47 -0
  590. package/dist/store/diagnostics.js +51 -0
  591. package/dist/store/doctor-reads.d.ts +16 -0
  592. package/dist/store/doctor-reads.js +19 -0
  593. package/dist/{dormant.d.ts → store/dormant.d.ts} +46 -12
  594. package/dist/{dormant.js → store/dormant.js} +151 -6
  595. package/dist/{embeddings.d.ts → store/embeddings/index.d.ts} +10 -6
  596. package/dist/{embeddings.js → store/embeddings/index.js} +60 -44
  597. package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
  598. package/dist/{local-embedding.js → store/embeddings/local.js} +68 -57
  599. package/dist/{embedding-provider.d.ts → store/embeddings/provider.d.ts} +2 -2
  600. package/dist/{embedding-provider.js → store/embeddings/provider.js} +47 -32
  601. package/dist/store/entry-reads.d.ts +46 -7
  602. package/dist/store/entry-reads.js +120 -21
  603. package/dist/store/entry-row.d.ts +8 -2
  604. package/dist/store/entry-row.js +28 -8
  605. package/dist/store/entry-writes.d.ts +33 -4
  606. package/dist/store/entry-writes.js +108 -26
  607. package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
  608. package/dist/{failure-log.js → store/failure-log.js} +9 -2
  609. package/dist/{goals.d.ts → store/goals.d.ts} +6 -46
  610. package/dist/{goals.js → store/goals.js} +45 -94
  611. package/dist/store/graph-queue.d.ts +29 -0
  612. package/dist/store/graph-queue.js +101 -0
  613. package/dist/{graph/read.d.ts → store/graph-reads.d.ts} +26 -34
  614. package/dist/{graph/read.js → store/graph-reads.js} +63 -115
  615. package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +68 -8
  616. package/dist/{graph/rows.js → store/graph-rows.js} +14 -3
  617. package/dist/store/graph-view-rows.d.ts +12 -0
  618. package/dist/store/graph-view-rows.js +67 -0
  619. package/dist/store/graph-writes.d.ts +58 -0
  620. package/dist/store/graph-writes.js +256 -0
  621. package/dist/store/half-life.d.ts +34 -0
  622. package/dist/store/half-life.js +77 -0
  623. package/dist/store/handoffs.d.ts +6 -3
  624. package/dist/store/handoffs.js +70 -31
  625. package/dist/store/index-and-stats.d.ts +8 -1
  626. package/dist/store/index-and-stats.js +51 -48
  627. package/dist/store/index.d.ts +4 -0
  628. package/dist/store/index.js +3 -0
  629. package/dist/store/key-audit.d.ts +2 -2
  630. package/dist/store/key-audit.js +4 -4
  631. package/dist/store/key-writes.d.ts +12 -5
  632. package/dist/store/key-writes.js +30 -4
  633. package/dist/store/ledger-turn.d.ts +17 -0
  634. package/dist/store/ledger-turn.js +27 -0
  635. package/dist/store/markdown.d.ts +1 -1
  636. package/dist/store/markdown.js +4 -3
  637. package/dist/store/mirrors.d.ts +5 -7
  638. package/dist/store/mirrors.js +39 -25
  639. package/dist/store/object-types.d.ts +189 -0
  640. package/dist/store/object-types.js +4 -0
  641. package/dist/store/open.d.ts +8 -4
  642. package/dist/store/open.js +34 -23
  643. package/dist/store/planning-fallacy-evidence.d.ts +42 -0
  644. package/dist/store/planning-fallacy-evidence.js +81 -0
  645. package/dist/store/port.d.ts +646 -0
  646. package/dist/store/port.js +17 -0
  647. package/dist/{predictions/store.d.ts → store/predictions.d.ts} +15 -2
  648. package/dist/{predictions/store.js → store/predictions.js} +52 -67
  649. package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
  650. package/dist/{quarantine.js → store/quarantine.js} +64 -22
  651. package/dist/{raw-archive.d.ts → store/raw-archive.d.ts} +5 -3
  652. package/dist/{raw-archive.js → store/raw-archive.js} +11 -5
  653. package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +4 -7
  654. package/dist/{recall-scope.js → store/recall-scope.js} +8 -9
  655. package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -14
  656. package/dist/{recall-trace.js → store/recall-trace.js} +38 -43
  657. package/dist/store/rejected-values.d.ts +55 -0
  658. package/dist/store/rejected-values.js +162 -0
  659. package/dist/{rejection.d.ts → store/rejection.d.ts} +2 -2
  660. package/dist/{rejection.js → store/rejection.js} +3 -2
  661. package/dist/store/rows.d.ts +2 -3
  662. package/dist/store/rows.js +18 -11
  663. package/dist/store/search-rows.d.ts +15 -4
  664. package/dist/store/search-rows.js +43 -36
  665. package/dist/store/sessions.d.ts +18 -2
  666. package/dist/store/sessions.js +83 -46
  667. package/dist/store/sqlite/commit-watch.d.ts +4 -0
  668. package/dist/store/sqlite/commit-watch.js +29 -0
  669. package/dist/store/sqlite/connector-events-group.d.ts +5 -0
  670. package/dist/store/sqlite/connector-events-group.js +50 -0
  671. package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
  672. package/dist/store/sqlite/connector-writes-group.js +65 -0
  673. package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
  674. package/dist/store/sqlite/dag-reads-group.js +45 -0
  675. package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
  676. package/dist/store/sqlite/entry-writes-group.js +170 -0
  677. package/dist/store/sqlite/error-codec.d.ts +17 -0
  678. package/dist/store/sqlite/error-codec.js +59 -0
  679. package/dist/store/sqlite/executor-counts.d.ts +10 -0
  680. package/dist/store/sqlite/executor-counts.js +11 -0
  681. package/dist/store/sqlite/executor.d.ts +28 -0
  682. package/dist/store/sqlite/executor.js +286 -0
  683. package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
  684. package/dist/store/sqlite/graph-reads-group.js +18 -0
  685. package/dist/store/sqlite/local.d.ts +21 -0
  686. package/dist/store/sqlite/local.js +38 -0
  687. package/dist/store/sqlite/object-rows.d.ts +102 -0
  688. package/dist/store/sqlite/object-rows.js +218 -0
  689. package/dist/store/sqlite/objects-group.d.ts +20 -0
  690. package/dist/store/sqlite/objects-group.js +314 -0
  691. package/dist/store/sqlite/predictions-group.d.ts +5 -0
  692. package/dist/store/sqlite/predictions-group.js +28 -0
  693. package/dist/store/sqlite/quarantine-group.d.ts +5 -0
  694. package/dist/store/sqlite/quarantine-group.js +38 -0
  695. package/dist/store/sqlite/store.d.ts +26 -0
  696. package/dist/store/sqlite/store.js +295 -0
  697. package/dist/store/sqlite/vector-pack.d.ts +18 -0
  698. package/dist/store/sqlite/vector-pack.js +46 -0
  699. package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
  700. package/dist/store/sqlite/vector-reads-group.js +23 -0
  701. package/dist/store/sqlite/worker-entry.d.ts +2 -0
  702. package/dist/store/sqlite/worker-entry.js +8 -0
  703. package/dist/store/sqlite/worker-jobs.d.ts +5 -0
  704. package/dist/store/sqlite/worker-jobs.js +116 -0
  705. package/dist/store/sqlite/worker-ops.d.ts +124 -0
  706. package/dist/store/sqlite/worker-ops.js +82 -0
  707. package/dist/store/sqlite/worker-store.d.ts +8 -0
  708. package/dist/store/sqlite/worker-store.js +76 -0
  709. package/dist/store/summaries.d.ts +2 -11
  710. package/dist/store/summaries.js +17 -44
  711. package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
  712. package/dist/store/tenant-lookup.d.ts +1 -1
  713. package/dist/{tenant.d.ts → store/tenant.d.ts} +2 -2
  714. package/dist/{tenant.js → store/tenant.js} +1 -1
  715. package/dist/store/token-ledger-rows.d.ts +61 -0
  716. package/dist/store/token-ledger-rows.js +68 -0
  717. package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +2 -9
  718. package/dist/{token-ledger.js → store/token-ledger.js} +31 -78
  719. package/dist/store/tombstone-checks.d.ts +12 -0
  720. package/dist/store/tombstone-checks.js +31 -0
  721. package/dist/store/usage-reports.d.ts +7 -0
  722. package/dist/store/usage-reports.js +26 -0
  723. package/dist/store/vector-writes.d.ts +10 -3
  724. package/dist/store/vector-writes.js +35 -5
  725. package/dist/{working-memory.d.ts → store/working-memory.d.ts} +5 -1
  726. package/dist/{working-memory.js → store/working-memory.js} +39 -41
  727. package/dist/support-bundle.d.ts +1 -1
  728. package/dist/support-bundle.js +13 -33
  729. package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
  730. package/dist/{gated-write.js → trust/gated-write.js} +6 -6
  731. package/dist/trust/quarantine.d.ts +4 -0
  732. package/dist/trust/quarantine.js +8 -0
  733. package/dist/trust/reject-flow.d.ts +23 -0
  734. package/dist/trust/reject-flow.js +67 -0
  735. package/dist/util/anthropic-messages.d.ts +31 -0
  736. package/dist/util/anthropic-messages.js +46 -0
  737. package/dist/util/atomic-write.d.ts +3 -0
  738. package/dist/util/atomic-write.js +107 -0
  739. package/dist/util/crash-handlers.d.ts +5 -0
  740. package/dist/util/crash-handlers.js +30 -0
  741. package/dist/{env.d.ts → util/env.d.ts} +17 -2
  742. package/dist/{env.js → util/env.js} +22 -2
  743. package/dist/util/home-path.js +67 -0
  744. package/dist/{http-retry.d.ts → util/http-retry.d.ts} +6 -2
  745. package/dist/{http-retry.js → util/http-retry.js} +38 -7
  746. package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
  747. package/dist/{http-util.js → util/http-util.js} +31 -11
  748. package/dist/util/json.d.ts +17 -0
  749. package/dist/util/json.js +25 -0
  750. package/dist/{log.d.ts → util/log.d.ts} +5 -2
  751. package/dist/{log.js → util/log.js} +12 -3
  752. package/dist/util/real-path.d.ts +3 -0
  753. package/dist/util/real-path.js +15 -0
  754. package/dist/util/request-scope.d.ts +27 -0
  755. package/dist/util/request-scope.js +47 -0
  756. package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
  757. package/dist/{secret-detect.js → util/secret-detect.js} +5 -4
  758. package/dist/util/stored-json.d.ts +9 -0
  759. package/dist/util/stored-json.js +8 -0
  760. package/dist/util/time.d.ts +2 -0
  761. package/dist/util/time.js +3 -0
  762. package/dist/util/token-text.d.ts +18 -0
  763. package/dist/util/token-text.js +23 -0
  764. package/dist/{version.d.ts → util/version.d.ts} +1 -1
  765. package/dist/{version.js → util/version.js} +1 -1
  766. package/extensions/openclaw-plugin/index.ts +1 -5
  767. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  768. package/extensions/openclaw-plugin/package.json +1 -1
  769. package/openclaw.plugin.json +1 -1
  770. package/package.json +2 -2
  771. package/dist/api.d.ts +0 -26
  772. package/dist/api.js +0 -29
  773. package/dist/capture-contract.js +0 -49
  774. package/dist/connectors/github/idempotency.d.ts +0 -19
  775. package/dist/connectors/github/idempotency.js +0 -27
  776. package/dist/connectors/slack/idempotency.d.ts +0 -17
  777. package/dist/connectors/slack/idempotency.js +0 -31
  778. package/dist/customer-notes.js +0 -336
  779. package/dist/db.d.ts +0 -9
  780. package/dist/db.js +0 -8
  781. package/dist/decisions.js +0 -326
  782. package/dist/extract.js +0 -133
  783. package/dist/graph/rows.d.ts +0 -45
  784. package/dist/graph/types.js +0 -11
  785. package/dist/half-life-migration.js +0 -182
  786. package/dist/handoff.js +0 -68
  787. package/dist/home-path.js +0 -24
  788. package/dist/incidents.js +0 -349
  789. package/dist/instruction-detect.js +0 -27
  790. package/dist/json.d.ts +0 -7
  791. package/dist/json.js +0 -11
  792. package/dist/ledger-db.d.ts +0 -10
  793. package/dist/ledger-db.js +0 -42
  794. package/dist/policies.js +0 -434
  795. package/dist/processes.js +0 -371
  796. package/dist/project-briefs.js +0 -523
  797. package/dist/reject-flow.d.ts +0 -69
  798. package/dist/reject-flow.js +0 -260
  799. package/dist/session-owners.d.ts +0 -7
  800. package/dist/session-owners.js +0 -54
  801. package/dist/skills.js +0 -367
  802. package/dist/store-port.d.ts +0 -191
  803. package/dist/store-port.js +0 -166
  804. /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
  805. /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
  806. /package/dist/{recall-history.d.ts → api/recall-history.d.ts} +0 -0
  807. /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
  808. /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
  809. /package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +0 -0
  810. /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
  811. /package/dist/{correction-latency.js → cli/correction-latency.js} +0 -0
  812. /package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +0 -0
  813. /package/dist/{quality-repair.d.ts → cli/quality-repair.d.ts} +0 -0
  814. /package/dist/{stdin.d.ts → cli/stdin.d.ts} +0 -0
  815. /package/dist/{dedupe.d.ts → consolidate/dedupe.d.ts} +0 -0
  816. /package/dist/{memory-value-weights.d.ts → consolidate/memory-value-weights.d.ts} +0 -0
  817. /package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +0 -0
  818. /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
  819. /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
  820. /package/dist/{trace.d.ts → consolidate/trace.d.ts} +0 -0
  821. /package/dist/{ablation.d.ts → core/ablation.d.ts} +0 -0
  822. /package/dist/{ambient.d.ts → core/ambient.d.ts} +0 -0
  823. /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
  824. /package/dist/{api-errors.js → core/api-errors.js} +0 -0
  825. /package/dist/{card.d.ts → core/card.d.ts} +0 -0
  826. /package/dist/{card.js → core/card.js} +0 -0
  827. /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
  828. /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
  829. /package/dist/{physics-config.d.ts → core/physics-config.d.ts} +0 -0
  830. /package/dist/{physics-config.js → core/physics-config.js} +0 -0
  831. /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
  832. /package/dist/{salience.d.ts → core/salience.d.ts} +0 -0
  833. /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
  834. /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
  835. /package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +0 -0
  836. /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
  837. /package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +0 -0
  838. /package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +0 -0
  839. /package/dist/{cli → hooks}/hook-blocks.d.ts +0 -0
  840. /package/dist/{path-context.d.ts → search/path-context.d.ts} +0 -0
  841. /package/dist/{rrf.d.ts → search/rrf.d.ts} +0 -0
  842. /package/dist/{rrf.js → search/rrf.js} +0 -0
  843. /package/dist/{rate-limit.d.ts → server/rate-limit.d.ts} +0 -0
  844. /package/dist/{rate-limit.js → server/rate-limit.js} +0 -0
  845. /package/dist/{server-detect.d.ts → server/server-detect.d.ts} +0 -0
  846. /package/dist/{scope.d.ts → sharing/scope.d.ts} +0 -0
  847. /package/dist/{summary-dirty.js → store/summary-dirty.js} +0 -0
  848. /package/dist/{yaml.d.ts → store/yaml.d.ts} +0 -0
  849. /package/dist/{yaml.js → store/yaml.js} +0 -0
  850. /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
  851. /package/dist/{escape.js → util/escape.js} +0 -0
  852. /package/dist/{home-path.d.ts → util/home-path.d.ts} +0 -0
  853. /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
  854. /package/dist/{keyset.js → util/keyset.js} +0 -0
  855. /package/dist/{same-text.js → util/same-text.js} +0 -0
  856. /package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +0 -0
  857. /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
  858. /package/dist/{db → util}/sqlite-blocked.js +0 -0
  859. /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
  860. /package/dist/{tokenize.js → util/tokenize.js} +0 -0
  861. /package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +0 -0
  862. /package/dist/{transcript-tail.js → util/transcript-tail.js} +0 -0
  863. /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
  864. /package/dist/{write-budget.js → util/write-budget.js} +0 -0
@@ -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) {
@@ -3,9 +3,9 @@
3
3
  * Stores and loads particle state (position, velocity, mass, charge, temperature)
4
4
  * in SQLite using BLOB columns for 384-dim vectors.
5
5
  */
6
- import type { DatabaseSyncLike } from './db.js';
7
- import type { MemoryEntry } from './memory.js';
8
- import type { PhysicsParticle } from './physics.js';
6
+ import type { DatabaseSyncLike } from './index.js';
7
+ import type { MemoryEntry } from '../core/memory.js';
8
+ import type { PhysicsParticle } from '../core/physics.js';
9
9
  export declare function float32ToBuffer(arr: number[]): Buffer;
10
10
  export declare function bufferToFloat32(buf: Buffer | Uint8Array): number[];
11
11
  /**
@@ -3,9 +3,11 @@
3
3
  * Stores and loads particle state (position, velocity, mass, charge, temperature)
4
4
  * in SQLite using BLOB columns for 384-dim vectors.
5
5
  */
6
- import { evalNow } from './ablation.js';
7
- import { computeMass, computeCharge, computeTemperature, vecZero } from './physics.js';
8
- import { calculateStrength } from './memory.js';
6
+ import { evalNow } from '../core/ablation.js';
7
+ import { withWriteScope } from './busy.js';
8
+ import { computeMass, computeCharge, computeTemperature, vecZero } from '../core/physics.js';
9
+ import { calculateStrength } from '../core/memory.js';
10
+ import { DAY_MS } from '../util/time.js';
9
11
  // ---------------------------------------------------------------------------
10
12
  // Float32Array <-> Buffer serialization
11
13
  // ---------------------------------------------------------------------------
@@ -100,20 +102,11 @@ export function savePhysicsState(db, particles) {
100
102
  last_simulation = excluded.last_simulation,
101
103
  updated_at = datetime('now')
102
104
  `);
103
- db.exec('BEGIN IMMEDIATE');
104
- try {
105
+ withWriteScope(db, 'save_particles', () => {
105
106
  for (const p of particles) {
106
107
  stmt.run(p.memoryId, float32ToBuffer(p.position), float32ToBuffer(p.velocity), p.mass, p.charge, p.temperature, p.lastSimulation);
107
108
  }
108
- db.exec('COMMIT');
109
- }
110
- catch (error) {
111
- try {
112
- db.exec('ROLLBACK');
113
- }
114
- catch { /* already rolled back; keep the original error */ }
115
- throw error;
116
- }
109
+ });
117
110
  }
118
111
  /**
119
112
  * Initialize physics state for a memory from its embedding vector.
@@ -121,7 +114,7 @@ export function savePhysicsState(db, particles) {
121
114
  */
122
115
  export function initializeParticle(entry, embedding, now = evalNow()) {
123
116
  const strength = calculateStrength(entry, now);
124
- const ageDays = (now.getTime() - new Date(entry.created).getTime()) / (1000 * 60 * 60 * 24);
117
+ const ageDays = (now.getTime() - new Date(entry.created).getTime()) / DAY_MS;
125
118
  return {
126
119
  memoryId: entry.id,
127
120
  position: [...embedding], // copy — position will diverge from original embedding
@@ -160,7 +153,7 @@ export function refreshParticleProperties(particles, entries, now = evalNow()) {
160
153
  if (!entry)
161
154
  continue;
162
155
  const strength = calculateStrength(entry, now);
163
- const ageDays = (now.getTime() - new Date(entry.created).getTime()) / (1000 * 60 * 60 * 24);
156
+ const ageDays = (now.getTime() - new Date(entry.created).getTime()) / DAY_MS;
164
157
  p.mass = computeMass(strength, entry.retrieval_count);
165
158
  p.charge = computeCharge(entry.emotional_valence);
166
159
  p.temperature = computeTemperature(ageDays, 1.0);
@@ -1,4 +1,4 @@
1
- import type { DatabaseSyncLike } from './db.js';
1
+ import type { DatabaseSyncLike } from './index.js';
2
2
  /**
3
3
  * Path A backfill cleanup: existing raw_archive rows that were archived BEFORE
4
4
  * commit 70180b5 left their markdown mirrors at <hippoRoot>/<layer>/<id>.md
@@ -11,10 +11,10 @@ import type { DatabaseSyncLike } from './db.js';
11
11
  * - On success (every layer either deleted or didn't exist), UPDATE the row
12
12
  * with the cleanup timestamp.
13
13
  * - On any unlink failure, leave mirror_cleaned_at NULL so the next
14
- * openHippoDb call retries. Warn (capped at MAX_WARN_LOGS rows per call).
14
+ * connection retries. Warn (capped at MAX_WARN_LOGS rows per call).
15
15
  *
16
- * Steady-state cost is one SELECT returning empty after every row has been
17
- * cleaned successfully.
16
+ * Returns whether every pending row was cleaned; the SELECT has no index to
17
+ * use, so a connection runs it only when the archive has changed since.
18
18
  */
19
- export declare function cleanupArchivedMirrors(hippoRoot: string, db: DatabaseSyncLike): void;
19
+ export declare function cleanupArchivedMirrors(hippoRoot: string, db: DatabaseSyncLike): boolean;
20
20
  //# sourceMappingURL=raw-archive-mirror-cleanup.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
- import { log } from './log.js';
3
+ import { errorMessage, log } from '../util/log.js';
4
4
  const LAYERS = ['episodic', 'buffer', 'semantic'];
5
5
  const MAX_WARN_LOGS = 5;
6
6
  /**
@@ -15,10 +15,10 @@ const MAX_WARN_LOGS = 5;
15
15
  * - On success (every layer either deleted or didn't exist), UPDATE the row
16
16
  * with the cleanup timestamp.
17
17
  * - On any unlink failure, leave mirror_cleaned_at NULL so the next
18
- * openHippoDb call retries. Warn (capped at MAX_WARN_LOGS rows per call).
18
+ * connection retries. Warn (capped at MAX_WARN_LOGS rows per call).
19
19
  *
20
- * Steady-state cost is one SELECT returning empty after every row has been
21
- * cleaned successfully.
20
+ * Returns whether every pending row was cleaned; the SELECT has no index to
21
+ * use, so a connection runs it only when the archive has changed since.
22
22
  */
23
23
  export function cleanupArchivedMirrors(hippoRoot, db) {
24
24
  // SAFETY: the SELECT above names exactly one column, memory_id (raw_archive.memory_id
@@ -27,10 +27,11 @@ export function cleanupArchivedMirrors(hippoRoot, db) {
27
27
  .prepare(`SELECT memory_id FROM raw_archive WHERE mirror_cleaned_at IS NULL`)
28
28
  .all();
29
29
  if (rows.length === 0)
30
- return;
30
+ return true;
31
31
  const update = db.prepare(`UPDATE raw_archive SET mirror_cleaned_at = ? WHERE memory_id = ?`);
32
32
  const now = new Date().toISOString();
33
33
  let warnCount = 0;
34
+ let everyRowCleaned = true;
34
35
  for (const row of rows) {
35
36
  let allOk = true;
36
37
  for (const layer of LAYERS) {
@@ -43,7 +44,7 @@ export function cleanupArchivedMirrors(hippoRoot, db) {
43
44
  catch (err) {
44
45
  allOk = false;
45
46
  if (warnCount < MAX_WARN_LOGS) {
46
- log.warn(`cleanupArchivedMirrors: unlink failed for ${filePath} (will retry on next DB open): ${err instanceof Error ? err.message : String(err)}`);
47
+ log.warn(`cleanupArchivedMirrors: unlink failed for ${filePath} (will retry on next DB open): ${errorMessage(err)}`);
47
48
  warnCount += 1;
48
49
  }
49
50
  }
@@ -51,6 +52,10 @@ export function cleanupArchivedMirrors(hippoRoot, db) {
51
52
  if (allOk) {
52
53
  update.run(now, row.memory_id);
53
54
  }
55
+ else {
56
+ everyRowCleaned = false;
57
+ }
54
58
  }
59
+ return everyRowCleaned;
55
60
  }
56
61
  //# sourceMappingURL=raw-archive-mirror-cleanup.js.map
@@ -1,29 +1,42 @@
1
1
  import type { DatabaseSyncLike } from './sqlite.js';
2
+ import { type OpenedDb } from './connect.js';
3
+ import { type RequestScope } from '../util/request-scope.js';
2
4
  export interface RequestStoresOptions {
3
5
  /** Lock wait of every open in the scope that does not pass its own. */
4
6
  readonly busyWaitMs?: number;
5
7
  /** Set for hook scopes: after one lock wait runs out, {@link RequestStores.noteBusy} makes the scope's later writes skip at once. */
6
8
  readonly failFastWhenBusy?: boolean;
9
+ /** The store whose open-time setup another connection has already run, so an open in this scope skips it: a store worker's reader, which cannot write it. */
10
+ readonly setupDoneFor?: string;
7
11
  }
8
12
  /** The handles one request opened, keyed by resolved store path and lock wait. */
9
- export declare class RequestStores {
13
+ export declare class RequestStores implements RequestScope {
10
14
  #private;
11
15
  readonly busyWaitMs: number | undefined;
16
+ readonly requestId: string | undefined;
17
+ readonly deadline: import("../util/request-scope.js").RequestDeadline | undefined;
18
+ readonly setupDoneFor: string | undefined;
12
19
  constructor(opts?: RequestStoresOptions);
13
20
  get closed(): boolean;
14
21
  /** The scope's handle on `hippoRoot`, opened on first use. `opts.busyWaitMs` overrides the scope's lock wait. */
15
22
  get(hippoRoot: string, opts?: {
16
23
  busyWaitMs?: number;
17
24
  }): DatabaseSyncLike;
25
+ /** `get`, with the facts of the open's probe when this call made the connection and null for a cached handle. */
26
+ getWithFacts(hippoRoot: string, opts?: {
27
+ busyWaitMs?: number;
28
+ }): OpenedDb;
18
29
  /** A lock held past one full wait belongs to a long transaction, so a hook scope's later writes skip at once. */
19
30
  noteBusy(): void;
20
31
  close(): void;
21
32
  }
22
33
  /** Runs `fn` in a request scope whose handles close when `fn` settles; inside an open scope `fn` joins it and `opts` is ignored. */
23
34
  export declare function runWithRequestStores<T>(fn: () => T | Promise<T>, opts?: RequestStoresOptions): Promise<T>;
35
+ /** runWithRequestStores for a synchronous `fn`, so a batch called from outside any request still opens each store once. */
36
+ export declare function withRequestStoresSync<T>(fn: () => T): T;
24
37
  /** The scope this code runs in, if any. A closed scope still answers: its `get` falls through to a plain open. */
25
38
  export declare function currentRequestStores(): RequestStores | undefined;
26
- /** Runs `fn` outside every scope, for a connection that must outlive the request that happens to open it. */
39
+ /** Runs `fn` outside every store scope, for a connection that must outlive the request that happens to open it; its log lines keep the request's id. */
27
40
  export declare function outsideRequestStores<T>(fn: () => T): T;
28
41
  /** Whether a scope owns `db` and will close it itself. */
29
42
  export declare function isScopedHandle(db: DatabaseSyncLike): boolean;