hippo-memory 1.69.0 → 1.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1014) hide show
  1. package/README.md +5 -2
  2. package/dist/agent-memories/apply.d.ts +3 -3
  3. package/dist/agent-memories/apply.js +16 -31
  4. package/dist/agent-memories/claude-code.d.ts +5 -5
  5. package/dist/agent-memories/claude-code.js +25 -12
  6. package/dist/agent-memories/copilot.js +3 -2
  7. package/dist/agent-memories/files.js +26 -14
  8. package/dist/agent-memories/gemini.js +6 -5
  9. package/dist/agent-memories/keys.js +3 -2
  10. package/dist/agent-memories/legacy.d.ts +2 -2
  11. package/dist/agent-memories/legacy.js +2 -2
  12. package/dist/agent-memories/markdown.d.ts +1 -3
  13. package/dist/agent-memories/markdown.js +1 -3
  14. package/dist/agent-memories/report.d.ts +1 -1
  15. package/dist/agent-memories/report.js +3 -2
  16. package/dist/agent-memories/source.d.ts +1 -1
  17. package/dist/agent-memories/source.js +6 -5
  18. package/dist/agent-memories/sync.d.ts +5 -3
  19. package/dist/agent-memories/sync.js +34 -38
  20. package/dist/agent-memories/types.d.ts +1 -1
  21. package/dist/api/assemble.d.ts +9 -46
  22. package/dist/api/assemble.js +44 -54
  23. package/dist/api/audit.d.ts +8 -7
  24. package/dist/api/audit.js +15 -21
  25. package/dist/api/auth.d.ts +17 -39
  26. package/dist/api/auth.js +76 -216
  27. package/dist/api/auto-sleep.d.ts +13 -0
  28. package/dist/api/auto-sleep.js +32 -0
  29. package/dist/{availability.d.ts → api/availability.d.ts} +4 -17
  30. package/dist/{availability.js → api/availability.js} +14 -44
  31. package/dist/{context-auto.js → api/context-auto.js} +2 -1
  32. package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
  33. package/dist/{context-render.js → api/context-render.js} +7 -6
  34. package/dist/api/context-select.d.ts +5 -5
  35. package/dist/api/context-select.js +39 -48
  36. package/dist/api/context-types.d.ts +15 -40
  37. package/dist/api/context.d.ts +7 -26
  38. package/dist/api/context.js +67 -97
  39. package/dist/api/dormant.d.ts +7 -23
  40. package/dist/api/dormant.js +40 -128
  41. package/dist/api/drill-down.d.ts +9 -48
  42. package/dist/api/drill-down.js +41 -90
  43. package/dist/api/forget.d.ts +5 -33
  44. package/dist/api/forget.js +17 -73
  45. package/dist/api/goals.d.ts +1 -1
  46. package/dist/api/goals.js +2 -2
  47. package/dist/api/graph.d.ts +8 -0
  48. package/dist/api/graph.js +7 -0
  49. package/dist/api/index.d.ts +28 -0
  50. package/dist/api/index.js +31 -0
  51. package/dist/api/instruction-detect.js +85 -0
  52. package/dist/api/learn.js +63 -55
  53. package/dist/api/ledger-db.d.ts +21 -0
  54. package/dist/api/ledger-db.js +81 -0
  55. package/dist/api/memories.d.ts +5 -0
  56. package/dist/api/memories.js +7 -0
  57. package/dist/api/objects.d.ts +9 -0
  58. package/dist/api/objects.js +11 -0
  59. package/dist/api/on-store.d.ts +16 -0
  60. package/dist/api/on-store.js +38 -0
  61. package/dist/api/outcome.d.ts +5 -42
  62. package/dist/api/outcome.js +15 -80
  63. package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
  64. package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
  65. package/dist/api/predictions.d.ts +9 -0
  66. package/dist/api/predictions.js +18 -0
  67. package/dist/api/promote.d.ts +16 -31
  68. package/dist/api/promote.js +38 -123
  69. package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
  70. package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
  71. package/dist/api/quarantine.d.ts +5 -5
  72. package/dist/api/quarantine.js +30 -106
  73. package/dist/api/recall-cli.d.ts +55 -0
  74. package/dist/api/recall-cli.js +94 -0
  75. package/dist/api/recall-core.d.ts +4 -0
  76. package/dist/api/recall-core.js +120 -0
  77. package/dist/api/recall-finish.d.ts +53 -0
  78. package/dist/api/recall-finish.js +30 -0
  79. package/dist/api/recall-history.d.ts +64 -0
  80. package/dist/api/recall-history.js +159 -0
  81. package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
  82. package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
  83. package/dist/api/recall-record.d.ts +10 -13
  84. package/dist/api/recall-record.js +10 -30
  85. package/dist/api/recall-request.d.ts +2 -2
  86. package/dist/api/recall-request.js +3 -3
  87. package/dist/api/recall-types.d.ts +101 -316
  88. package/dist/api/recall.d.ts +5 -33
  89. package/dist/api/recall.js +92 -91
  90. package/dist/api/refine.d.ts +7 -0
  91. package/dist/api/refine.js +10 -0
  92. package/dist/api/remember-local.d.ts +57 -0
  93. package/dist/api/remember-local.js +90 -0
  94. package/dist/api/remember.d.ts +27 -12
  95. package/dist/api/remember.js +42 -46
  96. package/dist/api/session-owners.d.ts +4 -0
  97. package/dist/api/session-owners.js +17 -0
  98. package/dist/api/sleep-run.d.ts +7 -9
  99. package/dist/api/sleep-run.js +78 -94
  100. package/dist/api/sleep.d.ts +10 -29
  101. package/dist/api/tokens.d.ts +5 -12
  102. package/dist/api/tokens.js +12 -31
  103. package/dist/api/types.d.ts +8 -31
  104. package/dist/api/types.js +5 -23
  105. package/dist/capture/caller-session.d.ts +2 -2
  106. package/dist/capture/caller-session.js +8 -8
  107. package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
  108. package/dist/{capture-error.js → capture/capture-error.js} +7 -7
  109. package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
  110. package/dist/capture/command.d.ts +5 -13
  111. package/dist/capture/command.js +57 -60
  112. package/dist/capture/compact-resume-caller.d.ts +1 -1
  113. package/dist/capture/compact-resume-caller.js +7 -7
  114. package/dist/capture/compact.d.ts +8 -16
  115. package/dist/capture/compact.js +56 -47
  116. package/dist/capture/compaction-items-caller.d.ts +1 -1
  117. package/dist/capture/compaction-items-caller.js +7 -5
  118. package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
  119. package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
  120. package/dist/{compaction-record.js → capture/compaction-record.js} +143 -157
  121. package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
  122. package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
  123. package/dist/capture/copilot-transcript.js +1 -1
  124. package/dist/capture/extract.js +2 -2
  125. package/dist/capture/failure-caller.d.ts +2 -2
  126. package/dist/capture/failure-caller.js +6 -6
  127. package/dist/capture/failure-reading.d.ts +2 -5
  128. package/dist/capture/failure-reading.js +11 -12
  129. package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
  130. package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
  131. package/dist/capture/pre-compact-caller.d.ts +1 -1
  132. package/dist/capture/pre-compact-caller.js +2 -2
  133. package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +2 -6
  134. package/dist/{session-digest.js → capture/session-digest.js} +29 -29
  135. package/dist/capture/session-end-caller.d.ts +2 -2
  136. package/dist/capture/session-end-caller.js +1 -1
  137. package/dist/capture/session-texts.d.ts +1 -1
  138. package/dist/capture/session-texts.js +5 -5
  139. package/dist/capture/session-worker.js +6 -4
  140. package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
  141. package/dist/capture/transcript.d.ts +2 -10
  142. package/dist/capture/transcript.js +72 -92
  143. package/dist/capture/working-state.d.ts +0 -3
  144. package/dist/capture/working-state.js +7 -7
  145. package/dist/cli/api-context.d.ts +3 -0
  146. package/dist/cli/api-context.js +6 -0
  147. package/dist/cli/audit-prune.d.ts +28 -0
  148. package/dist/cli/audit-prune.js +40 -0
  149. package/dist/cli/audit.d.ts +2 -2
  150. package/dist/cli/audit.js +92 -88
  151. package/dist/cli/auth.d.ts +2 -1
  152. package/dist/cli/auth.js +69 -53
  153. package/dist/cli/briefs.d.ts +4 -3
  154. package/dist/cli/briefs.js +76 -202
  155. package/dist/cli/card.d.ts +2 -1
  156. package/dist/cli/card.js +55 -54
  157. package/dist/cli/client.d.ts +28 -0
  158. package/dist/{client.js → cli/client.js} +25 -44
  159. package/dist/cli/compact-resume-payload.d.ts +8 -0
  160. package/dist/cli/compact-resume-payload.js +40 -0
  161. package/dist/cli/context.d.ts +1 -13
  162. package/dist/cli/context.js +51 -77
  163. package/dist/cli/continuity.d.ts +6 -5
  164. package/dist/cli/continuity.js +153 -145
  165. package/dist/cli/correction-latency.d.ts +24 -0
  166. package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
  167. package/dist/cli/curate.d.ts +13 -17
  168. package/dist/cli/curate.js +226 -222
  169. package/dist/cli/dag.d.ts +4 -4
  170. package/dist/cli/dag.js +70 -52
  171. package/dist/cli/decisions.d.ts +4 -3
  172. package/dist/cli/decisions.js +129 -253
  173. package/dist/cli/eval.d.ts +1 -3
  174. package/dist/cli/eval.js +56 -42
  175. package/dist/cli/exit.d.ts +6 -0
  176. package/dist/cli/exit.js +11 -0
  177. package/dist/cli/explain.d.ts +1 -2
  178. package/dist/cli/explain.js +39 -21
  179. package/dist/cli/flag-values.d.ts +30 -0
  180. package/dist/cli/flag-values.js +120 -0
  181. package/dist/cli/flags.d.ts +304 -0
  182. package/dist/cli/flags.js +169 -0
  183. package/dist/cli/github.d.ts +14 -0
  184. package/dist/cli/github.js +184 -0
  185. package/dist/cli/goals.d.ts +2 -1
  186. package/dist/cli/goals.js +76 -75
  187. package/dist/cli/hook-runtime.d.ts +31 -0
  188. package/dist/cli/hook-runtime.js +139 -0
  189. package/dist/cli/init.d.ts +2 -1
  190. package/dist/cli/init.js +153 -126
  191. package/dist/cli/install-steps.d.ts +7 -0
  192. package/dist/cli/install-steps.js +101 -0
  193. package/dist/cli/last-sleep.d.ts +3 -1
  194. package/dist/cli/last-sleep.js +12 -7
  195. package/dist/cli/maintenance.d.ts +5 -4
  196. package/dist/cli/maintenance.js +41 -42
  197. package/dist/cli/object-verbs.d.ts +40 -0
  198. package/dist/cli/object-verbs.js +66 -0
  199. package/dist/cli/owner-validation.d.ts +18 -0
  200. package/dist/cli/owner-validation.js +33 -0
  201. package/dist/cli/playbooks.d.ts +4 -3
  202. package/dist/cli/playbooks.js +98 -306
  203. package/dist/cli/print.d.ts +15 -0
  204. package/dist/cli/print.js +82 -0
  205. package/dist/cli/projects.d.ts +2 -3
  206. package/dist/cli/projects.js +56 -51
  207. package/dist/cli/provenance-coverage.d.ts +14 -0
  208. package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
  209. package/dist/cli/quality-repair-once.js +4 -4
  210. package/dist/cli/recall.d.ts +2 -6
  211. package/dist/cli/recall.js +128 -253
  212. package/dist/cli/refine-llm.d.ts +35 -0
  213. package/dist/cli/refine-llm.js +128 -0
  214. package/dist/cli/remember.d.ts +4 -6
  215. package/dist/cli/remember.js +193 -230
  216. package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
  217. package/dist/{scheduler.js → cli/scheduler.js} +22 -22
  218. package/dist/cli/serve.d.ts +1 -1
  219. package/dist/cli/serve.js +46 -7
  220. package/dist/cli/session-hooks.d.ts +11 -19
  221. package/dist/cli/session-hooks.js +263 -258
  222. package/dist/cli/setup.d.ts +4 -3
  223. package/dist/cli/setup.js +55 -37
  224. package/dist/cli/shared.d.ts +14 -118
  225. package/dist/cli/shared.js +26 -400
  226. package/dist/cli/slack.d.ts +2 -1
  227. package/dist/cli/slack.js +46 -74
  228. package/dist/cli/sleep-render.d.ts +4 -0
  229. package/dist/cli/sleep-render.js +61 -0
  230. package/dist/cli/sleep.d.ts +3 -8
  231. package/dist/cli/sleep.js +34 -91
  232. package/dist/cli/status.d.ts +9 -12
  233. package/dist/cli/status.js +86 -131
  234. package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
  235. package/dist/{stdin.js → cli/stdin.js} +8 -9
  236. package/dist/cli/transfer.d.ts +9 -9
  237. package/dist/cli/transfer.js +125 -122
  238. package/dist/cli/usage.js +13 -5
  239. package/dist/cli.d.ts +69 -167
  240. package/dist/cli.js +187 -296
  241. package/dist/connectors/dlq.d.ts +44 -0
  242. package/dist/connectors/dlq.js +30 -0
  243. package/dist/connectors/github/backfill.d.ts +6 -26
  244. package/dist/connectors/github/backfill.js +42 -114
  245. package/dist/connectors/github/deletion.d.ts +6 -21
  246. package/dist/connectors/github/deletion.js +17 -64
  247. package/dist/connectors/github/dlq.d.ts +12 -91
  248. package/dist/connectors/github/dlq.js +23 -140
  249. package/dist/connectors/github/ingest.d.ts +4 -37
  250. package/dist/connectors/github/ingest.js +24 -93
  251. package/dist/connectors/github/octokit-client.d.ts +5 -17
  252. package/dist/connectors/github/octokit-client.js +29 -25
  253. package/dist/connectors/github/ratelimit.d.ts +3 -14
  254. package/dist/connectors/github/ratelimit.js +3 -14
  255. package/dist/connectors/github/scope.d.ts +3 -5
  256. package/dist/connectors/github/scope.js +3 -5
  257. package/dist/connectors/github/signature.d.ts +4 -26
  258. package/dist/connectors/github/signature.js +4 -26
  259. package/dist/connectors/github/tenant-routing.d.ts +4 -26
  260. package/dist/connectors/github/tenant-routing.js +13 -61
  261. package/dist/connectors/github/transform.d.ts +1 -1
  262. package/dist/connectors/github/transform.js +2 -16
  263. package/dist/connectors/github/types.d.ts +4 -16
  264. package/dist/connectors/github/types.js +17 -27
  265. package/dist/connectors/github/webhook.d.ts +5 -18
  266. package/dist/connectors/github/webhook.js +86 -105
  267. package/dist/connectors/slack/backfill.d.ts +5 -18
  268. package/dist/connectors/slack/backfill.js +9 -42
  269. package/dist/connectors/slack/deletion.d.ts +4 -7
  270. package/dist/connectors/slack/deletion.js +20 -49
  271. package/dist/connectors/slack/dlq.d.ts +9 -68
  272. package/dist/connectors/slack/dlq.js +26 -136
  273. package/dist/connectors/slack/ingest.d.ts +4 -18
  274. package/dist/connectors/slack/ingest.js +26 -91
  275. package/dist/connectors/slack/scope.d.ts +2 -8
  276. package/dist/connectors/slack/scope.js +2 -8
  277. package/dist/connectors/slack/signature.d.ts +1 -6
  278. package/dist/connectors/slack/signature.js +2 -1
  279. package/dist/connectors/slack/tenant-routing.d.ts +4 -18
  280. package/dist/connectors/slack/tenant-routing.js +11 -31
  281. package/dist/connectors/slack/transform.d.ts +3 -19
  282. package/dist/connectors/slack/transform.js +2 -18
  283. package/dist/connectors/slack/types.d.ts +4 -10
  284. package/dist/connectors/slack/types.js +5 -16
  285. package/dist/connectors/slack/web-client.js +34 -28
  286. package/dist/connectors/slack/webhook.d.ts +5 -21
  287. package/dist/connectors/slack/webhook.js +80 -108
  288. package/dist/connectors/slack/workspaces.d.ts +8 -41
  289. package/dist/connectors/slack/workspaces.js +8 -58
  290. package/dist/consolidate/conflicts.d.ts +1 -1
  291. package/dist/consolidate/conflicts.js +10 -18
  292. package/dist/consolidate/dag-summary.d.ts +8 -0
  293. package/dist/consolidate/dag-summary.js +41 -0
  294. package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
  295. package/dist/{dag.js → consolidate/dag.js} +49 -131
  296. package/dist/consolidate/decay.d.ts +2 -2
  297. package/dist/consolidate/decay.js +35 -41
  298. package/dist/consolidate/dedupe.d.ts +29 -0
  299. package/dist/consolidate/dedupe.js +103 -0
  300. package/dist/consolidate/flush-units.d.ts +5 -6
  301. package/dist/consolidate/flush-units.js +3 -3
  302. package/dist/consolidate/half-life-migration.d.ts +34 -0
  303. package/dist/consolidate/half-life-migration.js +89 -0
  304. package/dist/consolidate/llm-passes.js +12 -29
  305. package/dist/consolidate/memory-value-weights.d.ts +8 -0
  306. package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
  307. package/dist/consolidate/memory-value.d.ts +45 -0
  308. package/dist/consolidate/memory-value.js +164 -0
  309. package/dist/consolidate/merge.js +65 -83
  310. package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
  311. package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
  312. package/dist/consolidate/physics-pass.js +46 -48
  313. package/dist/consolidate/replay.d.ts +9 -0
  314. package/dist/consolidate/replay.js +84 -0
  315. package/dist/consolidate/run.d.ts +7 -13
  316. package/dist/consolidate/run.js +6 -37
  317. package/dist/consolidate/sleep.d.ts +2 -9
  318. package/dist/consolidate/sleep.js +69 -151
  319. package/dist/consolidate/trace.d.ts +19 -0
  320. package/dist/{trace.js → consolidate/trace.js} +7 -24
  321. package/dist/consolidate/traces.js +40 -51
  322. package/dist/core/ablation.d.ts +15 -0
  323. package/dist/core/ablation.js +49 -0
  324. package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
  325. package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
  326. package/dist/{ambient.d.ts → core/ambient.d.ts} +1 -8
  327. package/dist/{ambient.js → core/ambient.js} +13 -18
  328. package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
  329. package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
  330. package/dist/{card.d.ts → core/card.d.ts} +4 -1
  331. package/dist/{card.js → core/card.js} +8 -0
  332. package/dist/core/compare.d.ts +32 -0
  333. package/dist/core/compare.js +70 -0
  334. package/dist/{config.d.ts → core/config.d.ts} +14 -28
  335. package/dist/{config.js → core/config.js} +101 -75
  336. package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
  337. package/dist/core/handoff.js +81 -0
  338. package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
  339. package/dist/core/memory.d.ts +183 -0
  340. package/dist/core/memory.js +380 -0
  341. package/dist/core/package-root.d.ts +3 -0
  342. package/dist/core/package-root.js +5 -0
  343. package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
  344. package/dist/{physics-config.js → core/physics-config.js} +3 -8
  345. package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
  346. package/dist/{physics.js → core/physics.js} +60 -122
  347. package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
  348. package/dist/{project-identity.js → core/project-identity.js} +22 -55
  349. package/dist/{project-remote.js → core/project-remote.js} +17 -6
  350. package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
  351. package/dist/core/raw-append-only.d.ts +5 -0
  352. package/dist/core/raw-append-only.js +7 -0
  353. package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
  354. package/dist/{salience.js → core/salience.js} +36 -27
  355. package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
  356. package/dist/{search/types.js → core/search-types.js} +1 -1
  357. package/dist/core/session-digest-row.d.ts +5 -0
  358. package/dist/core/session-digest-row.js +6 -0
  359. package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
  360. package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +7 -7
  361. package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
  362. package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
  363. package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +11 -10
  364. package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
  365. package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
  366. package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
  367. package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
  368. package/dist/db/backup.js +1 -1
  369. package/dist/db/busy.d.ts +19 -2
  370. package/dist/db/busy.js +88 -14
  371. package/dist/db/connect.d.ts +11 -2
  372. package/dist/db/connect.js +43 -10
  373. package/dist/db/index.d.ts +9 -0
  374. package/dist/db/index.js +8 -0
  375. package/dist/db/meta.d.ts +4 -0
  376. package/dist/db/meta.js +11 -1
  377. package/dist/db/migrate.d.ts +8 -1
  378. package/dist/db/migrate.js +28 -33
  379. package/dist/db/migrations/types.d.ts +2 -5
  380. package/dist/db/migrations/v08.js +1 -1
  381. package/dist/db/migrations/v14.js +39 -36
  382. package/dist/db/migrations/v15.js +2 -8
  383. package/dist/db/migrations/v16.js +31 -29
  384. package/dist/db/migrations/v17.js +2 -3
  385. package/dist/db/migrations/v18.js +6 -5
  386. package/dist/db/migrations/v19.js +2 -5
  387. package/dist/db/migrations/v20.js +5 -8
  388. package/dist/db/migrations/v22.js +28 -38
  389. package/dist/db/migrations/v23.js +3 -14
  390. package/dist/db/migrations/v24.js +25 -22
  391. package/dist/db/migrations/v25.js +3 -8
  392. package/dist/db/migrations/v26.js +2 -13
  393. package/dist/db/migrations/v27.js +3 -11
  394. package/dist/db/migrations/v28.js +2 -14
  395. package/dist/db/migrations/v29.js +23 -32
  396. package/dist/db/migrations/v30.js +4 -16
  397. package/dist/db/migrations/v31.js +23 -31
  398. package/dist/db/migrations/v32.js +4 -22
  399. package/dist/db/migrations/v33.js +2 -15
  400. package/dist/db/migrations/v34.js +2 -11
  401. package/dist/db/migrations/v35.js +2 -11
  402. package/dist/db/migrations/v36.js +2 -11
  403. package/dist/db/migrations/v37.js +8 -33
  404. package/dist/db/migrations/v38.js +5 -38
  405. package/dist/db/migrations/v39.js +10 -21
  406. package/dist/db/migrations/v40.js +8 -14
  407. package/dist/db/migrations/v41.js +2 -24
  408. package/dist/db/migrations/v43.js +7 -6
  409. package/dist/db/migrations/v44.js +2 -8
  410. package/dist/db/migrations/v45.js +2 -7
  411. package/dist/db/migrations/v46.js +1 -1
  412. package/dist/db/migrations/v47.js +2 -3
  413. package/dist/db/migrations/v48.js +1 -1
  414. package/dist/db/migrations/v49.js +1 -1
  415. package/dist/db/migrations/v50.js +8 -7
  416. package/dist/db/migrations/v51.js +1 -1
  417. package/dist/db/migrations/v52.js +1 -1
  418. package/dist/db/open.d.ts +11 -1
  419. package/dist/db/open.js +37 -4
  420. package/dist/db/physics-state.d.ts +23 -0
  421. package/dist/{physics-state.js → db/physics-state.js} +34 -52
  422. package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
  423. package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
  424. package/dist/db/request-stores.d.ts +15 -2
  425. package/dist/db/request-stores.js +37 -15
  426. package/dist/db/tables.d.ts +2 -0
  427. package/dist/db/tables.js +6 -0
  428. package/dist/{vector-store.d.ts → db/vector-store.d.ts} +6 -2
  429. package/dist/{vector-store.js → db/vector-store.js} +83 -51
  430. package/dist/db/wal-checkpointer.d.ts +11 -0
  431. package/dist/db/wal-checkpointer.js +92 -0
  432. package/dist/doctor.js +176 -152
  433. package/dist/entry/json-hooks.d.ts +1 -1
  434. package/dist/entry/json-hooks.js +1 -1
  435. package/dist/entry/project-identity.d.ts +1 -1
  436. package/dist/entry/project-identity.js +1 -1
  437. package/dist/entry/session-text.d.ts +3 -3
  438. package/dist/entry/session-text.js +5 -4
  439. package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
  440. package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
  441. package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
  442. package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
  443. package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
  444. package/dist/{eval.js → eval/eval.js} +35 -55
  445. package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
  446. package/dist/{judgment.js → eval/judgment.js} +23 -20
  447. package/dist/extensions/openclaw-plugin/index.js +2 -3
  448. package/dist/graph/delta.d.ts +3 -2
  449. package/dist/graph/delta.js +9 -23
  450. package/dist/{graph-extract.d.ts → graph/extract.d.ts} +10 -32
  451. package/dist/{graph-extract.js → graph/extract.js} +40 -81
  452. package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
  453. package/dist/{graph-recall.js → graph/recall.js} +65 -108
  454. package/dist/graph/stream.d.ts +38 -0
  455. package/dist/{graph-stream.js → graph/stream.js} +20 -41
  456. package/dist/graph/view.d.ts +50 -0
  457. package/dist/graph/view.js +265 -0
  458. package/dist/graph/write.d.ts +4 -76
  459. package/dist/graph/write.js +13 -397
  460. package/dist/hooks/codex-session.js +1 -1
  461. package/dist/hooks/codex-wrapper.js +16 -17
  462. package/dist/hooks/copilot.d.ts +1 -8
  463. package/dist/hooks/copilot.js +16 -16
  464. package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
  465. package/dist/{cli → hooks}/hook-blocks.js +38 -125
  466. package/dist/hooks/json-hooks.d.ts +5 -37
  467. package/dist/hooks/json-hooks.js +49 -179
  468. package/dist/hooks/opencode.d.ts +0 -38
  469. package/dist/hooks/opencode.js +44 -103
  470. package/dist/hooks/shared.d.ts +8 -21
  471. package/dist/hooks/shared.js +30 -25
  472. package/dist/importers/core.d.ts +13 -42
  473. package/dist/importers/core.js +48 -64
  474. package/dist/importers/markdown-parse.d.ts +9 -32
  475. package/dist/importers/markdown-parse.js +10 -44
  476. package/dist/importers/markdown.js +5 -13
  477. package/dist/importers/sources.js +57 -81
  478. package/dist/importers/vault.d.ts +2 -8
  479. package/dist/importers/vault.js +95 -172
  480. package/dist/index.d.ts +26 -22
  481. package/dist/index.js +25 -21
  482. package/dist/learn/autolearn.d.ts +29 -0
  483. package/dist/{autolearn.js → learn/autolearn.js} +26 -51
  484. package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
  485. package/dist/{churn-git.js → learn/churn-git.js} +6 -4
  486. package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
  487. package/dist/learn/extract.js +123 -0
  488. package/dist/learn/forward-claim-detector.d.ts +12 -0
  489. package/dist/learn/forward-claim-detector.js +60 -0
  490. package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
  491. package/dist/{invalidation.js → learn/invalidation.js} +92 -125
  492. package/dist/mcp/admin-tools.d.ts +1 -1
  493. package/dist/mcp/admin-tools.js +39 -64
  494. package/dist/mcp/format.d.ts +5 -5
  495. package/dist/mcp/format.js +7 -6
  496. package/dist/mcp/framing.d.ts +6 -0
  497. package/dist/mcp/framing.js +11 -3
  498. package/dist/mcp/memory-tools.js +10 -35
  499. package/dist/mcp/protocol.d.ts +14 -36
  500. package/dist/mcp/protocol.js +10 -19
  501. package/dist/mcp/recall-tools.d.ts +2 -2
  502. package/dist/mcp/recall-tools.js +70 -52
  503. package/dist/mcp/request.d.ts +3 -11
  504. package/dist/mcp/request.js +71 -85
  505. package/dist/mcp/server.d.ts +3 -9
  506. package/dist/mcp/server.js +6 -17
  507. package/dist/mcp/session-state.d.ts +2 -3
  508. package/dist/mcp/session-state.js +7 -13
  509. package/dist/mcp/shared-gate.js +1 -1
  510. package/dist/mcp/stdio.d.ts +2 -6
  511. package/dist/mcp/stdio.js +112 -38
  512. package/dist/mcp/tool-args.js +2 -1
  513. package/dist/mcp/tools.js +7 -5
  514. package/dist/objects/customer-notes.d.ts +44 -0
  515. package/dist/objects/customer-notes.js +71 -0
  516. package/dist/objects/decisions.d.ts +41 -0
  517. package/dist/objects/decisions.js +63 -0
  518. package/dist/objects/descriptor.d.ts +52 -0
  519. package/dist/objects/descriptor.js +4 -0
  520. package/dist/objects/fields.d.ts +15 -0
  521. package/dist/objects/fields.js +21 -0
  522. package/dist/objects/incidents.d.ts +45 -0
  523. package/dist/objects/incidents.js +96 -0
  524. package/dist/objects/lifecycle.d.ts +27 -0
  525. package/dist/objects/lifecycle.js +96 -0
  526. package/dist/objects/policies.d.ts +60 -0
  527. package/dist/objects/policies.js +102 -0
  528. package/dist/objects/processes.d.ts +43 -0
  529. package/dist/objects/processes.js +92 -0
  530. package/dist/objects/project-briefs.d.ts +63 -0
  531. package/dist/objects/project-briefs.js +194 -0
  532. package/dist/objects/skills.d.ts +51 -0
  533. package/dist/objects/skills.js +110 -0
  534. package/dist/postinstall.js +10 -21
  535. package/dist/predictions/planning-fallacy.d.ts +14 -109
  536. package/dist/predictions/planning-fallacy.js +4 -129
  537. package/dist/rerankers/clef.d.ts +2 -6
  538. package/dist/rerankers/clef.js +28 -76
  539. package/dist/rerankers/cross-encoder.d.ts +0 -7
  540. package/dist/rerankers/cross-encoder.js +18 -28
  541. package/dist/rerankers/index.js +8 -7
  542. package/dist/rerankers/jev.d.ts +1 -4
  543. package/dist/rerankers/jev.js +36 -52
  544. package/dist/rerankers/llm.d.ts +2 -13
  545. package/dist/rerankers/llm.js +42 -59
  546. package/dist/rerankers/outage-warning.d.ts +8 -0
  547. package/dist/rerankers/outage-warning.js +32 -0
  548. package/dist/rerankers/remote.d.ts +4 -0
  549. package/dist/rerankers/remote.js +25 -0
  550. package/dist/rerankers/types.d.ts +3 -15
  551. package/dist/search/as-of.d.ts +1 -1
  552. package/dist/search/bm25-search.d.ts +2 -2
  553. package/dist/search/bm25-search.js +7 -7
  554. package/dist/search/bm25.d.ts +1 -1
  555. package/dist/search/bm25.js +1 -1
  556. package/dist/search/boosts.d.ts +5 -3
  557. package/dist/search/boosts.js +36 -15
  558. package/dist/search/breakdown.d.ts +2 -2
  559. package/dist/search/breakdown.js +2 -1
  560. package/dist/search/explain.d.ts +1 -1
  561. package/dist/search/explain.js +3 -2
  562. package/dist/search/finalize.d.ts +2 -2
  563. package/dist/search/finalize.js +4 -3
  564. package/dist/search/fusion.d.ts +1 -1
  565. package/dist/search/fusion.js +3 -3
  566. package/dist/search/goal-boost.d.ts +23 -0
  567. package/dist/search/goal-boost.js +90 -0
  568. package/dist/search/hybrid-score.d.ts +2 -2
  569. package/dist/search/hybrid-score.js +1 -1
  570. package/dist/search/hybrid.d.ts +6 -4
  571. package/dist/search/hybrid.js +11 -8
  572. package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
  573. package/dist/{multihop.js → search/multihop.js} +9 -8
  574. package/dist/search/path-context.d.ts +11 -0
  575. package/dist/{path-context.js → search/path-context.js} +8 -19
  576. package/dist/search/physics-search.d.ts +4 -4
  577. package/dist/search/physics-search.js +25 -22
  578. package/dist/search/rerank.d.ts +3 -3
  579. package/dist/search/rerank.js +4 -3
  580. package/dist/search/rrf.d.ts +15 -0
  581. package/dist/search/rrf.js +36 -0
  582. package/dist/search/temporal.d.ts +1 -1
  583. package/dist/search/temporal.js +5 -2
  584. package/dist/search/vector.d.ts +10 -3
  585. package/dist/search/vector.js +51 -15
  586. package/dist/server/auth.d.ts +10 -29
  587. package/dist/server/auth.js +57 -42
  588. package/dist/server/boot.d.ts +5 -0
  589. package/dist/server/boot.js +432 -0
  590. package/dist/server/client-ip.d.ts +8 -20
  591. package/dist/server/client-ip.js +23 -34
  592. package/dist/server/cursor.d.ts +1 -1
  593. package/dist/server/cursor.js +2 -3
  594. package/dist/server/deadline.d.ts +13 -0
  595. package/dist/server/deadline.js +45 -0
  596. package/dist/server/defaults.d.ts +3 -0
  597. package/dist/server/defaults.js +4 -0
  598. package/dist/server/key-check-bounds.d.ts +9 -0
  599. package/dist/server/key-check-bounds.js +46 -0
  600. package/dist/server/lifecycle.d.ts +5 -4
  601. package/dist/server/lifecycle.js +20 -5
  602. package/dist/server/mcp-http.d.ts +1 -4
  603. package/dist/server/mcp-http.js +44 -68
  604. package/dist/server/rate-limit.d.ts +21 -0
  605. package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
  606. package/dist/server/ready.d.ts +7 -0
  607. package/dist/server/ready.js +38 -0
  608. package/dist/server/request.d.ts +14 -12
  609. package/dist/server/request.js +71 -28
  610. package/dist/server/route-table.d.ts +15 -0
  611. package/dist/server/route-table.js +202 -0
  612. package/dist/server/routes/admin.js +29 -30
  613. package/dist/server/routes/customer-notes.d.ts +5 -5
  614. package/dist/server/routes/customer-notes.js +35 -105
  615. package/dist/server/routes/decisions.d.ts +5 -5
  616. package/dist/server/routes/decisions.js +45 -115
  617. package/dist/server/routes/incidents.d.ts +5 -5
  618. package/dist/server/routes/incidents.js +44 -105
  619. package/dist/server/routes/memories.js +21 -43
  620. package/dist/server/routes/object-routes.d.ts +35 -0
  621. package/dist/server/routes/object-routes.js +72 -0
  622. package/dist/server/routes/policies.d.ts +6 -6
  623. package/dist/server/routes/policies.js +42 -134
  624. package/dist/server/routes/predictions.js +35 -63
  625. package/dist/server/routes/processes.d.ts +5 -5
  626. package/dist/server/routes/processes.js +44 -134
  627. package/dist/server/routes/project-briefs.d.ts +6 -6
  628. package/dist/server/routes/project-briefs.js +41 -120
  629. package/dist/server/routes/recall.js +21 -44
  630. package/dist/server/routes/skills.d.ts +6 -6
  631. package/dist/server/routes/skills.js +40 -138
  632. package/dist/server/server-detect.d.ts +28 -0
  633. package/dist/server/server-detect.js +156 -0
  634. package/dist/server/sleep-child.d.ts +2 -0
  635. package/dist/server/sleep-child.js +19 -0
  636. package/dist/server/sleep-offload.d.ts +20 -0
  637. package/dist/server/sleep-offload.js +73 -0
  638. package/dist/server/tls.d.ts +6 -0
  639. package/dist/server/tls.js +24 -0
  640. package/dist/server/types.d.ts +35 -14
  641. package/dist/server/validation.d.ts +6 -5
  642. package/dist/server/validation.js +16 -34
  643. package/dist/server.d.ts +39 -61
  644. package/dist/server.js +26 -569
  645. package/dist/sharing/global-store.d.ts +19 -0
  646. package/dist/sharing/global-store.js +75 -0
  647. package/dist/sharing/global-sync.d.ts +6 -0
  648. package/dist/sharing/global-sync.js +80 -0
  649. package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
  650. package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
  651. package/dist/sharing/scope.d.ts +7 -0
  652. package/dist/{scope.js → sharing/scope.js} +5 -12
  653. package/dist/sharing/search-both.d.ts +60 -0
  654. package/dist/sharing/search-both.js +138 -0
  655. package/dist/sharing/share.d.ts +38 -0
  656. package/dist/sharing/share.js +226 -0
  657. package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
  658. package/dist/{ambient-store.js → store/ambient.js} +11 -16
  659. package/dist/store/audit-event.d.ts +15 -17
  660. package/dist/store/audit-event.js +9 -16
  661. package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
  662. package/dist/{audit.js → store/audit.js} +95 -18
  663. package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
  664. package/dist/{auth.js → store/auth.js} +108 -99
  665. package/dist/store/candidates.d.ts +41 -13
  666. package/dist/store/candidates.js +141 -60
  667. package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
  668. package/dist/{card-detail.js → store/card-detail.js} +3 -2
  669. package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
  670. package/dist/{store-cards.js → store/cards.js} +133 -248
  671. package/dist/store/compactions.d.ts +78 -0
  672. package/dist/store/compactions.js +93 -0
  673. package/dist/store/conflicts.d.ts +26 -26
  674. package/dist/store/conflicts.js +194 -222
  675. package/dist/store/connectors/github.d.ts +84 -0
  676. package/dist/store/connectors/github.js +180 -0
  677. package/dist/store/connectors/slack.d.ts +69 -0
  678. package/dist/store/connectors/slack.js +177 -0
  679. package/dist/store/dashboard-reads.d.ts +27 -0
  680. package/dist/store/dashboard-reads.js +88 -0
  681. package/dist/store/delete-and-batch.d.ts +27 -51
  682. package/dist/store/delete-and-batch.js +100 -92
  683. package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
  684. package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
  685. package/dist/store/descendant-page.d.ts +12 -0
  686. package/dist/store/descendant-page.js +99 -0
  687. package/dist/store/diagnostics.d.ts +47 -0
  688. package/dist/store/diagnostics.js +44 -0
  689. package/dist/store/doctor-reads.d.ts +16 -0
  690. package/dist/store/doctor-reads.js +19 -0
  691. package/dist/store/dormant.d.ts +105 -0
  692. package/dist/store/dormant.js +241 -0
  693. package/dist/store/embeddings/index.d.ts +36 -0
  694. package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
  695. package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
  696. package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
  697. package/dist/store/embeddings/provider.d.ts +40 -0
  698. package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
  699. package/dist/store/entry-reads.d.ts +66 -63
  700. package/dist/store/entry-reads.js +159 -121
  701. package/dist/store/entry-row.d.ts +14 -37
  702. package/dist/store/entry-row.js +37 -45
  703. package/dist/store/entry-writes.d.ts +40 -17
  704. package/dist/store/entry-writes.js +105 -41
  705. package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
  706. package/dist/{failure-log.js → store/failure-log.js} +9 -2
  707. package/dist/store/goals.d.ts +96 -0
  708. package/dist/store/goals.js +260 -0
  709. package/dist/store/graph-queue.d.ts +13 -0
  710. package/dist/store/graph-queue.js +70 -0
  711. package/dist/store/graph-reads.d.ts +41 -0
  712. package/dist/{graph/read.js → store/graph-reads.js} +72 -162
  713. package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
  714. package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
  715. package/dist/store/graph-view-rows.d.ts +13 -0
  716. package/dist/store/graph-view-rows.js +68 -0
  717. package/dist/store/graph-writes.d.ts +33 -0
  718. package/dist/store/graph-writes.js +232 -0
  719. package/dist/store/half-life.d.ts +35 -0
  720. package/dist/store/half-life.js +75 -0
  721. package/dist/store/handoffs.d.ts +6 -12
  722. package/dist/store/handoffs.js +54 -63
  723. package/dist/store/index-and-stats.d.ts +14 -20
  724. package/dist/store/index-and-stats.js +74 -119
  725. package/dist/store/index.d.ts +4 -0
  726. package/dist/store/index.js +3 -0
  727. package/dist/store/key-audit.d.ts +2 -2
  728. package/dist/store/key-audit.js +4 -4
  729. package/dist/store/key-writes.d.ts +12 -5
  730. package/dist/store/key-writes.js +30 -4
  731. package/dist/store/ledger-turn.d.ts +17 -0
  732. package/dist/store/ledger-turn.js +27 -0
  733. package/dist/store/markdown.d.ts +3 -7
  734. package/dist/store/markdown.js +25 -23
  735. package/dist/store/mirrors.d.ts +7 -13
  736. package/dist/store/mirrors.js +52 -47
  737. package/dist/store/object-types.d.ts +189 -0
  738. package/dist/store/object-types.js +4 -0
  739. package/dist/store/open.d.ts +6 -4
  740. package/dist/store/open.js +30 -36
  741. package/dist/store/planning-fallacy-evidence.d.ts +14 -0
  742. package/dist/store/planning-fallacy-evidence.js +52 -0
  743. package/dist/store/port.d.ts +649 -0
  744. package/dist/store/port.js +17 -0
  745. package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
  746. package/dist/{predictions/store.js → store/predictions.js} +88 -184
  747. package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
  748. package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
  749. package/dist/{quarantine.js → store/quarantine.js} +64 -22
  750. package/dist/store/raw-archive.d.ts +14 -0
  751. package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
  752. package/dist/store/recall-scope.d.ts +78 -0
  753. package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
  754. package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
  755. package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
  756. package/dist/store/rejected-values.d.ts +55 -0
  757. package/dist/store/rejected-values.js +150 -0
  758. package/dist/store/rejection.d.ts +54 -0
  759. package/dist/{rejection.js → store/rejection.js} +16 -67
  760. package/dist/store/report-reads.d.ts +6 -0
  761. package/dist/store/report-reads.js +29 -0
  762. package/dist/store/rows.d.ts +11 -22
  763. package/dist/store/rows.js +52 -43
  764. package/dist/store/rule-sql.d.ts +5 -0
  765. package/dist/store/rule-sql.js +37 -0
  766. package/dist/store/search-rows.d.ts +22 -42
  767. package/dist/store/search-rows.js +55 -78
  768. package/dist/store/sessions.d.ts +23 -49
  769. package/dist/store/sessions.js +96 -118
  770. package/dist/store/sqlite/commit-watch.d.ts +4 -0
  771. package/dist/store/sqlite/commit-watch.js +29 -0
  772. package/dist/store/sqlite/connector-events-group.d.ts +5 -0
  773. package/dist/store/sqlite/connector-events-group.js +50 -0
  774. package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
  775. package/dist/store/sqlite/connector-writes-group.js +65 -0
  776. package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
  777. package/dist/store/sqlite/dag-reads-group.js +45 -0
  778. package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
  779. package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
  780. package/dist/store/sqlite/error-codec.d.ts +17 -0
  781. package/dist/store/sqlite/error-codec.js +61 -0
  782. package/dist/store/sqlite/executor-counts.d.ts +10 -0
  783. package/dist/store/sqlite/executor-counts.js +11 -0
  784. package/dist/store/sqlite/executor.d.ts +29 -0
  785. package/dist/store/sqlite/executor.js +287 -0
  786. package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
  787. package/dist/store/sqlite/graph-reads-group.js +18 -0
  788. package/dist/store/sqlite/local.d.ts +21 -0
  789. package/dist/store/sqlite/local.js +39 -0
  790. package/dist/store/sqlite/object-rows.d.ts +102 -0
  791. package/dist/store/sqlite/object-rows.js +221 -0
  792. package/dist/store/sqlite/objects-group.d.ts +20 -0
  793. package/dist/store/sqlite/objects-group.js +316 -0
  794. package/dist/store/sqlite/predictions-group.d.ts +5 -0
  795. package/dist/store/sqlite/predictions-group.js +28 -0
  796. package/dist/store/sqlite/quarantine-group.d.ts +5 -0
  797. package/dist/store/sqlite/quarantine-group.js +38 -0
  798. package/dist/store/sqlite/store.d.ts +23 -0
  799. package/dist/store/sqlite/store.js +294 -0
  800. package/dist/store/sqlite/vector-pack.d.ts +18 -0
  801. package/dist/store/sqlite/vector-pack.js +46 -0
  802. package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
  803. package/dist/store/sqlite/vector-reads-group.js +23 -0
  804. package/dist/store/sqlite/worker-entry.d.ts +2 -0
  805. package/dist/store/sqlite/worker-entry.js +8 -0
  806. package/dist/store/sqlite/worker-jobs.d.ts +5 -0
  807. package/dist/store/sqlite/worker-jobs.js +116 -0
  808. package/dist/store/sqlite/worker-ops.d.ts +135 -0
  809. package/dist/store/sqlite/worker-ops.js +93 -0
  810. package/dist/store/sqlite/worker-store.d.ts +8 -0
  811. package/dist/store/sqlite/worker-store.js +79 -0
  812. package/dist/store/summaries.d.ts +11 -72
  813. package/dist/store/summaries.js +47 -186
  814. package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
  815. package/dist/{summary-dirty.js → store/summary-dirty.js} +1 -1
  816. package/dist/store/tenant-lookup.d.ts +6 -1
  817. package/dist/store/tenant-lookup.js +7 -0
  818. package/dist/store/tenant.d.ts +11 -0
  819. package/dist/store/tenant.js +28 -0
  820. package/dist/store/token-ledger-rows.d.ts +61 -0
  821. package/dist/store/token-ledger-rows.js +68 -0
  822. package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +14 -51
  823. package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
  824. package/dist/store/tombstone-checks.d.ts +12 -0
  825. package/dist/store/tombstone-checks.js +31 -0
  826. package/dist/store/usage-reports.d.ts +7 -0
  827. package/dist/store/usage-reports.js +18 -0
  828. package/dist/store/vector-index.d.ts +46 -0
  829. package/dist/store/vector-index.js +170 -0
  830. package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
  831. package/dist/store/working-memory.js +118 -0
  832. package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
  833. package/dist/{yaml.js → store/yaml.js} +2 -6
  834. package/dist/support-bundle.d.ts +1 -1
  835. package/dist/support-bundle.js +19 -37
  836. package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
  837. package/dist/{gated-write.js → trust/gated-write.js} +6 -6
  838. package/dist/trust/quarantine.d.ts +4 -0
  839. package/dist/trust/quarantine.js +8 -0
  840. package/dist/trust/reject-flow.d.ts +23 -0
  841. package/dist/trust/reject-flow.js +65 -0
  842. package/dist/util/anthropic-messages.d.ts +31 -0
  843. package/dist/util/anthropic-messages.js +58 -0
  844. package/dist/util/atomic-write.d.ts +4 -0
  845. package/dist/util/atomic-write.js +138 -0
  846. package/dist/util/capped-json.d.ts +6 -0
  847. package/dist/util/capped-json.js +46 -0
  848. package/dist/util/crash-handlers.d.ts +12 -0
  849. package/dist/util/crash-handlers.js +72 -0
  850. package/dist/{env.d.ts → util/env.d.ts} +27 -7
  851. package/dist/{env.js → util/env.js} +33 -8
  852. package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
  853. package/dist/util/home-path.js +69 -0
  854. package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
  855. package/dist/util/http-retry.js +103 -0
  856. package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
  857. package/dist/{http-util.js → util/http-util.js} +31 -11
  858. package/dist/util/json.d.ts +17 -0
  859. package/dist/util/json.js +25 -0
  860. package/dist/{log.d.ts → util/log.d.ts} +7 -3
  861. package/dist/{log.js → util/log.js} +36 -11
  862. package/dist/util/real-path.d.ts +3 -0
  863. package/dist/util/real-path.js +15 -0
  864. package/dist/util/request-scope.d.ts +28 -0
  865. package/dist/util/request-scope.js +48 -0
  866. package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
  867. package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
  868. package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
  869. package/dist/util/stored-json.d.ts +9 -0
  870. package/dist/util/stored-json.js +8 -0
  871. package/dist/util/time.d.ts +2 -0
  872. package/dist/util/time.js +3 -0
  873. package/dist/util/token-text.d.ts +15 -0
  874. package/dist/util/token-text.js +20 -0
  875. package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
  876. package/dist/util/transcript-tail.js +49 -0
  877. package/dist/util/version.d.ts +11 -0
  878. package/dist/util/version.js +26 -0
  879. package/extensions/openclaw-plugin/index.ts +2 -6
  880. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  881. package/extensions/openclaw-plugin/package.json +1 -1
  882. package/openclaw.plugin.json +1 -1
  883. package/package.json +2 -2
  884. package/dist/ablation.d.ts +0 -102
  885. package/dist/ablation.js +0 -136
  886. package/dist/api.d.ts +0 -26
  887. package/dist/api.js +0 -29
  888. package/dist/audit-prune.d.ts +0 -62
  889. package/dist/audit-prune.js +0 -107
  890. package/dist/autolearn.d.ts +0 -56
  891. package/dist/client.d.ts +0 -48
  892. package/dist/compare.d.ts +0 -86
  893. package/dist/compare.js +0 -117
  894. package/dist/connectors/github/cli-impl.d.ts +0 -25
  895. package/dist/connectors/github/cli-impl.js +0 -227
  896. package/dist/connectors/github/idempotency.d.ts +0 -19
  897. package/dist/connectors/github/idempotency.js +0 -27
  898. package/dist/connectors/slack/idempotency.d.ts +0 -17
  899. package/dist/connectors/slack/idempotency.js +0 -31
  900. package/dist/correction-latency.d.ts +0 -36
  901. package/dist/customer-notes.d.ts +0 -96
  902. package/dist/customer-notes.js +0 -336
  903. package/dist/db.d.ts +0 -9
  904. package/dist/db.js +0 -8
  905. package/dist/decisions.d.ts +0 -94
  906. package/dist/decisions.js +0 -326
  907. package/dist/dedupe.d.ts +0 -75
  908. package/dist/dedupe.js +0 -169
  909. package/dist/dormant.d.ts +0 -93
  910. package/dist/dormant.js +0 -137
  911. package/dist/embedding-provider.d.ts +0 -77
  912. package/dist/embeddings.d.ts +0 -101
  913. package/dist/extract.js +0 -133
  914. package/dist/forward-claim-detector.d.ts +0 -36
  915. package/dist/forward-claim-detector.js +0 -112
  916. package/dist/goals.d.ts +0 -173
  917. package/dist/goals.js +0 -448
  918. package/dist/graph/read.d.ts +0 -73
  919. package/dist/graph/rows.d.ts +0 -45
  920. package/dist/graph/types.js +0 -11
  921. package/dist/graph-stream.d.ts +0 -70
  922. package/dist/graph-view.d.ts +0 -73
  923. package/dist/graph-view.js +0 -333
  924. package/dist/half-life-migration.d.ts +0 -63
  925. package/dist/half-life-migration.js +0 -182
  926. package/dist/handoff.js +0 -68
  927. package/dist/home-path.js +0 -24
  928. package/dist/http-retry.js +0 -51
  929. package/dist/incidents.d.ts +0 -103
  930. package/dist/incidents.js +0 -349
  931. package/dist/instruction-detect.js +0 -27
  932. package/dist/json.d.ts +0 -7
  933. package/dist/json.js +0 -11
  934. package/dist/ledger-db.d.ts +0 -10
  935. package/dist/ledger-db.js +0 -42
  936. package/dist/memory-value-weights.d.ts +0 -19
  937. package/dist/memory-value.d.ts +0 -113
  938. package/dist/memory-value.js +0 -250
  939. package/dist/memory.d.ts +0 -294
  940. package/dist/memory.js +0 -522
  941. package/dist/owner-validation.d.ts +0 -42
  942. package/dist/owner-validation.js +0 -56
  943. package/dist/path-context.d.ts +0 -24
  944. package/dist/physics-state.d.ts +0 -39
  945. package/dist/policies.d.ts +0 -151
  946. package/dist/policies.js +0 -434
  947. package/dist/processes.d.ts +0 -108
  948. package/dist/processes.js +0 -371
  949. package/dist/project-briefs.d.ts +0 -128
  950. package/dist/project-briefs.js +0 -523
  951. package/dist/provenance-coverage.d.ts +0 -18
  952. package/dist/rate-limit.d.ts +0 -34
  953. package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
  954. package/dist/raw-archive.d.ts +0 -24
  955. package/dist/recall-history.d.ts +0 -131
  956. package/dist/recall-history.js +0 -227
  957. package/dist/recall-scope.d.ts +0 -138
  958. package/dist/refine-llm.d.ts +0 -61
  959. package/dist/refine-llm.js +0 -167
  960. package/dist/reject-flow.d.ts +0 -69
  961. package/dist/reject-flow.js +0 -260
  962. package/dist/rejection.d.ts +0 -100
  963. package/dist/replay.d.ts +0 -41
  964. package/dist/replay.js +0 -122
  965. package/dist/rrf.d.ts +0 -43
  966. package/dist/rrf.js +0 -61
  967. package/dist/scope.d.ts +0 -14
  968. package/dist/server-detect.d.ts +0 -72
  969. package/dist/server-detect.js +0 -222
  970. package/dist/session-owners.d.ts +0 -7
  971. package/dist/session-owners.js +0 -54
  972. package/dist/shared.d.ts +0 -186
  973. package/dist/shared.js +0 -540
  974. package/dist/skills.d.ts +0 -101
  975. package/dist/skills.js +0 -367
  976. package/dist/store/entry-writes-group.d.ts +0 -9
  977. package/dist/store/vector-writes.d.ts +0 -6
  978. package/dist/store/vector-writes.js +0 -59
  979. package/dist/store-port.d.ts +0 -262
  980. package/dist/store-port.js +0 -178
  981. package/dist/tenant.d.ts +0 -25
  982. package/dist/tenant.js +0 -43
  983. package/dist/trace.d.ts +0 -34
  984. package/dist/transcript-tail.js +0 -48
  985. package/dist/version.d.ts +0 -26
  986. package/dist/version.js +0 -41
  987. package/dist/working-memory.js +0 -154
  988. /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
  989. /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
  990. /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
  991. /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
  992. /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
  993. /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
  994. /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
  995. /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
  996. /package/dist/{api-errors.js → core/api-errors.js} +0 -0
  997. /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
  998. /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
  999. /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
  1000. /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
  1001. /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
  1002. /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
  1003. /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
  1004. /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
  1005. /package/dist/{escape.js → util/escape.js} +0 -0
  1006. /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
  1007. /package/dist/{keyset.js → util/keyset.js} +0 -0
  1008. /package/dist/{same-text.js → util/same-text.js} +0 -0
  1009. /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
  1010. /package/dist/{db → util}/sqlite-blocked.js +0 -0
  1011. /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
  1012. /package/dist/{tokenize.js → util/tokenize.js} +0 -0
  1013. /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
  1014. /package/dist/{write-budget.js → util/write-budget.js} +0 -0
package/dist/goals.d.ts DELETED
@@ -1,173 +0,0 @@
1
- import { type DatabaseSyncLike } from './db.js';
2
- import type { MemoryEntry } from './memory.js';
3
- import type { RerankStep } from './search/types.js';
4
- export type GoalStatus = 'active' | 'suspended' | 'completed';
5
- export type PolicyType = 'schema-fit-biased' | 'error-prioritized' | 'recency-first' | 'hybrid';
6
- export interface GoalRow {
7
- id: string;
8
- session_id: string;
9
- tenant_id: string;
10
- goal_name: string;
11
- level: number;
12
- parent_goal_id: string | null;
13
- status: GoalStatus;
14
- success_condition: string | null;
15
- retrieval_policy_id: string | null;
16
- created_at: string;
17
- completed_at: string | null;
18
- outcome_score: number | null;
19
- }
20
- export interface Goal {
21
- id: string;
22
- sessionId: string;
23
- tenantId: string;
24
- goalName: string;
25
- level: number;
26
- parentGoalId?: string;
27
- status: GoalStatus;
28
- successCondition?: string;
29
- retrievalPolicyId?: string;
30
- createdAt: string;
31
- completedAt?: string;
32
- outcomeScore?: number;
33
- }
34
- export interface RetrievalPolicy {
35
- id: string;
36
- goalId: string;
37
- policyType: PolicyType;
38
- weightSchemaFit: number;
39
- weightRecency: number;
40
- weightOutcome: number;
41
- errorPriority: number;
42
- }
43
- export declare const MAX_ACTIVE_GOAL_DEPTH = 3;
44
- export declare const MAX_FINAL_MULTIPLIER = 3;
45
- export declare function rowToGoal(row: GoalRow): Goal;
46
- export interface PushGoalOpts {
47
- sessionId: string;
48
- tenantId: string;
49
- goalName: string;
50
- level?: number;
51
- parentGoalId?: string;
52
- successCondition?: string;
53
- policy?: {
54
- policyType: PolicyType;
55
- weightSchemaFit?: number;
56
- weightRecency?: number;
57
- weightOutcome?: number;
58
- errorPriority?: number;
59
- };
60
- }
61
- export declare function pushGoal(hippoRoot: string, opts: PushGoalOpts): Goal;
62
- /**
63
- * Depth-cap enforcer shared by pushGoalWithDb and resumeGoal.
64
- * If the (tenant, session) has >= MAX_ACTIVE_GOAL_DEPTH active goals,
65
- * suspend the oldest `overflow` ones.
66
- *
67
- * **Precondition: caller MUST already be inside a `BEGIN IMMEDIATE`
68
- * transaction.** Helper does not open or commit -- name reflects this so it
69
- * is impossible to misread the contract at a call site. Both existing call
70
- * sites (pushGoalWithDb, resumeGoal) wrap in `BEGIN IMMEDIATE` already.
71
- *
72
- * @internal Internal goal-stack invariant. Subject to change.
73
- */
74
- export declare function enforceDepthCapWithinTx(db: DatabaseSyncLike, tenantId: string, sessionId: string): void;
75
- export declare function pushGoalWithDb(db: DatabaseSyncLike, opts: PushGoalOpts): Goal;
76
- export interface GetActiveGoalsOpts {
77
- sessionId: string;
78
- tenantId: string;
79
- }
80
- export declare function getActiveGoals(hippoRoot: string, opts: GetActiveGoalsOpts): Goal[];
81
- /** A session's active goals, oldest first, and the retrieval policy of each goal that names one. */
82
- export interface ActiveGoals {
83
- readonly goals: Goal[];
84
- readonly policies: ReadonlyMap<string, RetrievalPolicy>;
85
- }
86
- /** The active goals and their policies on one handle, so a goal and its policy never disagree. */
87
- export declare function activeGoalsWithPolicies(hippoRoot: string, opts: GetActiveGoalsOpts): ActiveGoals;
88
- /** Every goal of a (tenant, session), whatever its status, oldest first. */
89
- export declare function getSessionGoals(hippoRoot: string, opts: GetActiveGoalsOpts): Goal[];
90
- export declare function getActiveGoalsWithDb(db: DatabaseSyncLike, opts: GetActiveGoalsOpts): Goal[];
91
- /** One `goal_recall_log` row: a boosted local memory recalled while its goal was active. */
92
- export interface GoalRecallLogRow {
93
- goalId: string;
94
- memoryId: string;
95
- tenantId: string;
96
- sessionId: string;
97
- recalledAt: string;
98
- score: number;
99
- }
100
- /** Options shared by {@link computeGoalStackBoost} and {@link boostByGoals}. */
101
- export interface GoalStackBoostOpts {
102
- sessionId: string;
103
- tenantId: string;
104
- limit: number;
105
- /**
106
- * Optional side-channel: one goal-boost `RerankStep` per boosted row, keyed by
107
- * `entry.id`. A map rather than a row field because the helper re-spreads rows.
108
- * Only populated when passed, so the default path allocates nothing.
109
- */
110
- trace?: Map<string, RerankStep>;
111
- }
112
- /** The boosted, re-sorted rows and the `goal_recall_log` rows they earn. */
113
- export interface GoalStackBoost<R> {
114
- results: R[];
115
- log: GoalRecallLogRow[];
116
- }
117
- export declare function loadGoalPolicies(db: DatabaseSyncLike, active: readonly Goal[]): Map<string, RetrievalPolicy>;
118
- /** The rows whose memory lives in this store: goal_recall_log.memory_id references memories, so a global row would fail
119
- * the insert. A global result keeps its boost; it only earns no log row, so no outcome propagation. */
120
- export declare function localGoalRecallRows(db: DatabaseSyncLike, rows: readonly GoalRecallLogRow[]): GoalRecallLogRow[];
121
- /**
122
- * dlPFC goal-stack boost. Applies the multi-goal boost to entry-backed scored
123
- * rows when (tenant, session) has active goals and returns the log rows to
124
- * write, without writing them; {@link writeGoalRecallLog} persists them.
125
- *
126
- * Caller responsibilities:
127
- * - Do NOT call when an explicit `goalTag` is set (caller's gate)
128
- * - Pass entry-backed rows (with `entry.tags`, `entry.id`, optional
129
- * `entry.schema_fit`)
130
- * - Manage the db handle lifecycle (helper neither opens nor closes)
131
- * - Recompute `tokens` after if returned rows are projected to a budgeted
132
- * shape
133
- *
134
- * Log rows cover the top `limit` boosted rows that live in this store's
135
- * `memories` table (global-only ids are skipped to keep the FK on
136
- * goal_recall_log.memory_id valid).
137
- *
138
- * @internal Recall ranking helper. Subject to change.
139
- */
140
- export declare function computeGoalStackBoost<R extends {
141
- entry: MemoryEntry;
142
- score: number;
143
- }>(db: DatabaseSyncLike, results: R[], opts: GoalStackBoostOpts): GoalStackBoost<R>;
144
- /** {@link computeGoalStackBoost} over goals already read, touching no store. Its log keeps rows whose memory is global,
145
- * since only the store can tell them apart; {@link localGoalRecallRows} drops those before the write. */
146
- export declare function boostByGoals<R extends {
147
- entry: MemoryEntry;
148
- score: number;
149
- }>(results: R[], active: ActiveGoals, opts: GoalStackBoostOpts): GoalStackBoost<R>;
150
- /**
151
- * Writes goal-boost log rows. INSERT OR IGNORE because UNIQUE(memory_id, goal_id)
152
- * makes a re-recall during the same goal life a no-op for outcome attribution.
153
- */
154
- export declare function writeGoalRecallLog(db: DatabaseSyncLike, rows: readonly GoalRecallLogRow[]): void;
155
- export interface CompleteGoalOpts {
156
- outcomeScore?: number;
157
- /**
158
- * When true, skip the strength-multiplier propagation block.
159
- * Default false (propagate). The goal's status still transitions to
160
- * 'completed' and `outcome_score` is still recorded; only the side-effect
161
- * on recalled memories' strength is suppressed.
162
- *
163
- * Note: the status-check idempotency guard short-circuits a second
164
- * `completeGoal` call BEFORE this flag is read, so a noPropagate=true
165
- * second call after a propagating first call is a true no-op (propagation
166
- * already happened on call 1; call 2 returns early regardless).
167
- */
168
- noPropagate?: boolean;
169
- }
170
- export declare function completeGoal(hippoRoot: string, goalId: string, opts: CompleteGoalOpts): void;
171
- export declare function suspendGoal(hippoRoot: string, goalId: string): void;
172
- export declare function resumeGoal(hippoRoot: string, goalId: string): void;
173
- //# sourceMappingURL=goals.d.ts.map
package/dist/goals.js DELETED
@@ -1,448 +0,0 @@
1
- // src/goals.ts
2
- import { randomUUID } from 'node:crypto';
3
- import { openHippoDb, closeHippoDb } from './db.js';
4
- export const MAX_ACTIVE_GOAL_DEPTH = 3;
5
- export const MAX_FINAL_MULTIPLIER = 3.0;
6
- export function rowToGoal(row) {
7
- return {
8
- id: row.id,
9
- sessionId: row.session_id,
10
- tenantId: row.tenant_id,
11
- goalName: row.goal_name,
12
- level: row.level,
13
- parentGoalId: row.parent_goal_id ?? undefined,
14
- status: row.status,
15
- successCondition: row.success_condition ?? undefined,
16
- retrievalPolicyId: row.retrieval_policy_id ?? undefined,
17
- createdAt: row.created_at,
18
- completedAt: row.completed_at ?? undefined,
19
- outcomeScore: row.outcome_score ?? undefined,
20
- };
21
- }
22
- export function pushGoal(hippoRoot, opts) {
23
- const db = openHippoDb(hippoRoot);
24
- try {
25
- return pushGoalWithDb(db, opts);
26
- }
27
- finally {
28
- closeHippoDb(db);
29
- }
30
- }
31
- /**
32
- * Depth-cap enforcer shared by pushGoalWithDb and resumeGoal.
33
- * If the (tenant, session) has >= MAX_ACTIVE_GOAL_DEPTH active goals,
34
- * suspend the oldest `overflow` ones.
35
- *
36
- * **Precondition: caller MUST already be inside a `BEGIN IMMEDIATE`
37
- * transaction.** Helper does not open or commit -- name reflects this so it
38
- * is impossible to misread the contract at a call site. Both existing call
39
- * sites (pushGoalWithDb, resumeGoal) wrap in `BEGIN IMMEDIATE` already.
40
- *
41
- * @internal Internal goal-stack invariant. Subject to change.
42
- */
43
- export function enforceDepthCapWithinTx(db, tenantId, sessionId) {
44
- // SAFETY: the row comes from the SELECT above, which projects exactly one
45
- // column, `c`, as a COUNT(*).
46
- const activeCount = db.prepare(`
47
- SELECT COUNT(*) AS c
48
- FROM goal_stack
49
- WHERE tenant_id = ? AND session_id = ? AND status = 'active'
50
- `).get(tenantId, sessionId).c;
51
- if (activeCount >= MAX_ACTIVE_GOAL_DEPTH) {
52
- const overflow = activeCount - MAX_ACTIVE_GOAL_DEPTH + 1;
53
- db.prepare(`
54
- UPDATE goal_stack
55
- SET status = 'suspended'
56
- WHERE id IN (
57
- SELECT id FROM goal_stack
58
- WHERE tenant_id = ? AND session_id = ? AND status = 'active'
59
- ORDER BY created_at ASC
60
- LIMIT ?
61
- )
62
- `).run(tenantId, sessionId, overflow);
63
- }
64
- }
65
- export function pushGoalWithDb(db, opts) {
66
- const id = `g_${randomUUID().replace(/-/g, '').slice(0, 16)}`;
67
- const createdAt = new Date().toISOString();
68
- let policyId = null;
69
- db.exec('BEGIN IMMEDIATE');
70
- try {
71
- // Depth cap: count active for (tenant, session); suspend oldest if at cap.
72
- enforceDepthCapWithinTx(db, opts.tenantId, opts.sessionId);
73
- if (opts.parentGoalId) {
74
- // SAFETY: the row comes from the SELECT above, which projects exactly
75
- // the tenant_id and session_id columns of goal_stack.
76
- const parent = db.prepare(`SELECT tenant_id, session_id FROM goal_stack WHERE id = ?`).get(opts.parentGoalId);
77
- if (!parent) {
78
- throw new Error(`parent goal not found: ${opts.parentGoalId}`);
79
- }
80
- if (parent.tenant_id !== opts.tenantId || parent.session_id !== opts.sessionId) {
81
- throw new Error(`parent goal ${opts.parentGoalId} belongs to a different (tenant, session)`);
82
- }
83
- }
84
- // Parent goal_stack row first (FK target).
85
- db.prepare(`
86
- INSERT INTO goal_stack
87
- (id, session_id, tenant_id, goal_name, level, parent_goal_id, status,
88
- success_condition, retrieval_policy_id, created_at)
89
- VALUES (?, ?, ?, ?, ?, ?, 'active', ?, NULL, ?)
90
- `).run(id, opts.sessionId, opts.tenantId, opts.goalName, opts.level ?? 0, opts.parentGoalId ?? null, opts.successCondition ?? null, createdAt);
91
- // Optional policy row, then point goal_stack.retrieval_policy_id at it.
92
- if (opts.policy) {
93
- policyId = `rp_${randomUUID().replace(/-/g, '').slice(0, 16)}`;
94
- db.prepare(`
95
- INSERT INTO retrieval_policy
96
- (id, goal_id, policy_type, weight_schema_fit, weight_recency, weight_outcome, error_priority)
97
- VALUES (?, ?, ?, ?, ?, ?, ?)
98
- `).run(policyId, id, opts.policy.policyType, opts.policy.weightSchemaFit ?? 1.0, opts.policy.weightRecency ?? 1.0, opts.policy.weightOutcome ?? 1.0, opts.policy.errorPriority ?? 1.0);
99
- db.prepare(`UPDATE goal_stack SET retrieval_policy_id = ? WHERE id = ?`).run(policyId, id);
100
- }
101
- db.exec('COMMIT');
102
- }
103
- catch (err) {
104
- try {
105
- db.exec('ROLLBACK');
106
- }
107
- catch { /* already rolled back; keep the original error */ }
108
- throw err;
109
- }
110
- return {
111
- id,
112
- sessionId: opts.sessionId,
113
- tenantId: opts.tenantId,
114
- goalName: opts.goalName,
115
- level: opts.level ?? 0,
116
- parentGoalId: opts.parentGoalId,
117
- status: 'active',
118
- successCondition: opts.successCondition,
119
- retrievalPolicyId: policyId ?? undefined,
120
- createdAt,
121
- };
122
- }
123
- export function getActiveGoals(hippoRoot, opts) {
124
- const db = openHippoDb(hippoRoot);
125
- try {
126
- return getActiveGoalsWithDb(db, opts);
127
- }
128
- finally {
129
- closeHippoDb(db);
130
- }
131
- }
132
- /** The active goals and their policies on one handle, so a goal and its policy never disagree. */
133
- export function activeGoalsWithPolicies(hippoRoot, opts) {
134
- const db = openHippoDb(hippoRoot);
135
- try {
136
- const goals = getActiveGoalsWithDb(db, opts);
137
- return { goals, policies: loadGoalPolicies(db, goals) };
138
- }
139
- finally {
140
- closeHippoDb(db);
141
- }
142
- }
143
- /** Every goal of a (tenant, session), whatever its status, oldest first. */
144
- export function getSessionGoals(hippoRoot, opts) {
145
- const db = openHippoDb(hippoRoot);
146
- try {
147
- // SAFETY: rows come from the SELECT below, which projects exactly GoalRow's columns.
148
- const rows = db.prepare(`
149
- SELECT id, session_id, tenant_id, goal_name, level, parent_goal_id, status,
150
- success_condition, retrieval_policy_id, created_at, completed_at, outcome_score
151
- FROM goal_stack
152
- WHERE tenant_id = ? AND session_id = ?
153
- ORDER BY created_at ASC
154
- `).all(opts.tenantId, opts.sessionId);
155
- return rows.map(rowToGoal);
156
- }
157
- finally {
158
- closeHippoDb(db);
159
- }
160
- }
161
- export function getActiveGoalsWithDb(db, opts) {
162
- // SAFETY: rows come from the SELECT above, which projects exactly
163
- // GoalRow's columns (in the same order goal_stack defines them).
164
- const rows = db.prepare(`
165
- SELECT id, session_id, tenant_id, goal_name, level, parent_goal_id, status,
166
- success_condition, retrieval_policy_id, created_at, completed_at, outcome_score
167
- FROM goal_stack
168
- WHERE tenant_id = ? AND session_id = ? AND status = 'active'
169
- ORDER BY created_at ASC
170
- `).all(opts.tenantId, opts.sessionId);
171
- return rows.map(rowToGoal);
172
- }
173
- // Load retrieval_policy rows for active goals so per-policy multipliers
174
- // can compose onto the base goal-tag boost. Composed result is hard-capped
175
- // at MAX_FINAL_MULTIPLIER (3.0x) BEFORE applying to score -- even an
176
- // `errorPriority: 9.0` policy cannot exceed 3.0x.
177
- export function loadGoalPolicies(db, active) {
178
- const policiesByGoalId = new Map();
179
- for (const g of active) {
180
- if (!g.retrievalPolicyId)
181
- continue;
182
- // SAFETY: the row comes from the SELECT above, which projects exactly
183
- // these seven retrieval_policy columns.
184
- const row = db.prepare(`
185
- SELECT id, goal_id, policy_type, weight_schema_fit, weight_recency, weight_outcome, error_priority
186
- FROM retrieval_policy WHERE id = ?
187
- `).get(g.retrievalPolicyId);
188
- if (row) {
189
- policiesByGoalId.set(g.id, {
190
- id: row.id,
191
- goalId: row.goal_id,
192
- policyType: row.policy_type,
193
- weightSchemaFit: row.weight_schema_fit,
194
- weightRecency: row.weight_recency,
195
- weightOutcome: row.weight_outcome,
196
- errorPriority: row.error_priority,
197
- });
198
- }
199
- }
200
- return policiesByGoalId;
201
- }
202
- /** The capped boost for one row whose tags match `matches` active goals. */
203
- function goalBoostMultiplier(entry, tags, matches, goalsByTag, policiesByGoalId) {
204
- // Base 2.0x for first match, +0.5x per additional, capped at 3.0x.
205
- let multiplier = Math.min(2.0 + 0.5 * (matches.length - 1), MAX_FINAL_MULTIPLIER);
206
- // Compose per-policy multipliers per matched tag.
207
- for (const tag of matches) {
208
- const goal = goalsByTag.get(tag);
209
- const policy = policiesByGoalId.get(goal.id);
210
- if (!policy)
211
- continue;
212
- if (policy.policyType === 'error-prioritized' && tags.includes('error')) {
213
- multiplier *= policy.errorPriority;
214
- }
215
- else if (policy.policyType === 'schema-fit-biased') {
216
- // Linearly weight schema_fit in [0,1] up to (weightSchemaFit)x.
217
- // Default 1.0 is a no-op.
218
- multiplier *=
219
- 1.0 +
220
- Math.max(0, policy.weightSchemaFit - 1.0) *
221
- (entry.schema_fit ?? 0.5);
222
- }
223
- else if (policy.policyType === 'recency-first') {
224
- multiplier *= policy.weightRecency;
225
- }
226
- else if (policy.policyType === 'hybrid') {
227
- multiplier *= policy.weightOutcome;
228
- }
229
- }
230
- // Hard cap AFTER all composition.
231
- return Math.min(multiplier, MAX_FINAL_MULTIPLIER);
232
- }
233
- /** Log rows for the top `limit` boosted rows, one per matched goal. */
234
- function buildGoalRecallLog(boosted, matchesByEntryId, goalsByTag, opts) {
235
- const { sessionId, tenantId, limit } = opts;
236
- const recalledAt = new Date().toISOString();
237
- const log = [];
238
- for (const r of boosted.slice(0, limit)) {
239
- const matches = matchesByEntryId.get(r.entry.id);
240
- if (!matches || matches.length === 0)
241
- continue;
242
- for (const tag of matches) {
243
- const goal = goalsByTag.get(tag);
244
- if (!goal)
245
- continue;
246
- log.push({ goalId: goal.id, memoryId: r.entry.id, tenantId, sessionId, recalledAt, score: r.score });
247
- }
248
- }
249
- return log;
250
- }
251
- /** The rows whose memory lives in this store: goal_recall_log.memory_id references memories, so a global row would fail
252
- * the insert. A global result keeps its boost; it only earns no log row, so no outcome propagation. */
253
- export function localGoalRecallRows(db, rows) {
254
- if (rows.length === 0)
255
- return [];
256
- const ids = [...new Set(rows.map((r) => r.memoryId))];
257
- // SAFETY: the SELECT projects exactly one column, `id`, from memories.
258
- const local = db.prepare(`SELECT id FROM memories WHERE id IN (${ids.map(() => '?').join(',')})`).all(...ids);
259
- const localIds = new Set(local.map((r) => r.id));
260
- return rows.filter((r) => localIds.has(r.memoryId));
261
- }
262
- /**
263
- * dlPFC goal-stack boost. Applies the multi-goal boost to entry-backed scored
264
- * rows when (tenant, session) has active goals and returns the log rows to
265
- * write, without writing them; {@link writeGoalRecallLog} persists them.
266
- *
267
- * Caller responsibilities:
268
- * - Do NOT call when an explicit `goalTag` is set (caller's gate)
269
- * - Pass entry-backed rows (with `entry.tags`, `entry.id`, optional
270
- * `entry.schema_fit`)
271
- * - Manage the db handle lifecycle (helper neither opens nor closes)
272
- * - Recompute `tokens` after if returned rows are projected to a budgeted
273
- * shape
274
- *
275
- * Log rows cover the top `limit` boosted rows that live in this store's
276
- * `memories` table (global-only ids are skipped to keep the FK on
277
- * goal_recall_log.memory_id valid).
278
- *
279
- * @internal Recall ranking helper. Subject to change.
280
- */
281
- export function computeGoalStackBoost(db, results, opts) {
282
- const goals = getActiveGoalsWithDb(db, { sessionId: opts.sessionId, tenantId: opts.tenantId });
283
- if (goals.length === 0)
284
- return { results, log: [] };
285
- const boost = boostByGoals(results, { goals, policies: loadGoalPolicies(db, goals) }, opts);
286
- return { results: boost.results, log: localGoalRecallRows(db, boost.log) };
287
- }
288
- /** {@link computeGoalStackBoost} over goals already read, touching no store. Its log keeps rows whose memory is global,
289
- * since only the store can tell them apart; {@link localGoalRecallRows} drops those before the write. */
290
- export function boostByGoals(results, active, opts) {
291
- const { trace } = opts;
292
- if (active.goals.length === 0)
293
- return { results, log: [] };
294
- const goalsByTag = new Map(active.goals.map((g) => [g.goalName, g]));
295
- const policiesByGoalId = active.policies;
296
- // Goal-tag matches per boosted row, keyed by entry id. Kept as a side table
297
- // (rather than a spread-on `_goalMatches` marker property) so `boosted`
298
- // stays exactly R[] end to end, with no cast-tag-then-strip round trip.
299
- const matchesByEntryId = new Map();
300
- const boosted = results
301
- .map((r) => {
302
- const tags = r.entry.tags ?? [];
303
- const matches = tags.filter((t) => goalsByTag.has(t));
304
- if (matches.length === 0)
305
- return r;
306
- const multiplier = goalBoostMultiplier(r.entry, tags, matches, goalsByTag, policiesByGoalId);
307
- // Recall-trace side-channel: record the goal-boost step BEFORE the
308
- // score is mutated, keyed by entry id; a pure read of r.score.
309
- if (trace) {
310
- trace.set(r.entry.id, {
311
- stage: 'goal-boost',
312
- multiplier,
313
- scoreBefore: r.score,
314
- scoreAfter: r.score * multiplier,
315
- note: matches.join(', '),
316
- });
317
- }
318
- matchesByEntryId.set(r.entry.id, matches);
319
- // SAFETY: spreading a generic-constrained `r: R` widens the result to
320
- // the spread's plain object type; only `score` changes, so the value
321
- // still satisfies R's shape exactly.
322
- return { ...r, score: r.score * multiplier };
323
- })
324
- // Deliberately a PLAIN stable score sort, no compareEntryIdentity
325
- // tail -- a re-sort of an already deterministically-ordered ranking
326
- // inherits its determinism via sort stability, and ties preserve the
327
- // prior (meaningful) rank instead of reordering by content.
328
- .sort((a, b) => b.score - a.score);
329
- return { results: boosted, log: buildGoalRecallLog(boosted, matchesByEntryId, goalsByTag, opts) };
330
- }
331
- /**
332
- * Writes goal-boost log rows. INSERT OR IGNORE because UNIQUE(memory_id, goal_id)
333
- * makes a re-recall during the same goal life a no-op for outcome attribution.
334
- */
335
- export function writeGoalRecallLog(db, rows) {
336
- if (rows.length === 0)
337
- return;
338
- const insertLog = db.prepare(`
339
- INSERT OR IGNORE INTO goal_recall_log
340
- (goal_id, memory_id, tenant_id, session_id, recalled_at, score)
341
- VALUES (?, ?, ?, ?, ?, ?)
342
- `);
343
- for (const row of rows) {
344
- insertLog.run(row.goalId, row.memoryId, row.tenantId, row.sessionId, row.recalledAt, row.score);
345
- }
346
- }
347
- const POSITIVE_OUTCOME_THRESHOLD = 0.7;
348
- const NEGATIVE_OUTCOME_THRESHOLD = 0.3;
349
- const STRENGTH_BOOST = 1.10;
350
- const STRENGTH_DECAY = 0.85;
351
- export function completeGoal(hippoRoot, goalId, opts) {
352
- const db = openHippoDb(hippoRoot);
353
- try {
354
- const completedAt = new Date().toISOString();
355
- const score = opts.outcomeScore ?? null;
356
- db.exec('BEGIN IMMEDIATE');
357
- try {
358
- // SAFETY: the row comes from the SELECT above, which projects exactly
359
- // the created_at and status columns of goal_stack.
360
- const goalRow = db.prepare(`SELECT created_at, status FROM goal_stack WHERE id = ?`).get(goalId);
361
- if (!goalRow) {
362
- db.exec('COMMIT');
363
- return;
364
- }
365
- if (goalRow.status === 'completed') {
366
- // Already completed -- second call is a no-op for idempotency.
367
- db.exec('COMMIT');
368
- return;
369
- }
370
- db.prepare(`
371
- UPDATE goal_stack
372
- SET status = 'completed', completed_at = ?, outcome_score = ?
373
- WHERE id = ?
374
- `).run(completedAt, score, goalId);
375
- if (score !== null && !opts.noPropagate) {
376
- let multiplier = 1;
377
- if (score >= POSITIVE_OUTCOME_THRESHOLD)
378
- multiplier = STRENGTH_BOOST;
379
- else if (score < NEGATIVE_OUTCOME_THRESHOLD)
380
- multiplier = STRENGTH_DECAY;
381
- if (multiplier !== 1) {
382
- // Lifespan window: only memories whose recall happened during this
383
- // goal's active life. UNIQUE(memory_id, goal_id) guarantees one
384
- // adjustment per (memory, goal) pair.
385
- db.prepare(`
386
- UPDATE memories
387
- SET strength = MIN(1.0, MAX(0.0, strength * ?))
388
- WHERE id IN (
389
- SELECT memory_id FROM goal_recall_log
390
- WHERE goal_id = ?
391
- AND recalled_at >= ?
392
- AND recalled_at <= ?
393
- )
394
- `).run(multiplier, goalId, goalRow.created_at, completedAt);
395
- }
396
- }
397
- db.exec('COMMIT');
398
- }
399
- catch (err) {
400
- try {
401
- db.exec('ROLLBACK');
402
- }
403
- catch { /* already rolled back; keep the original error */ }
404
- throw err;
405
- }
406
- }
407
- finally {
408
- closeHippoDb(db);
409
- }
410
- }
411
- export function suspendGoal(hippoRoot, goalId) {
412
- const db = openHippoDb(hippoRoot);
413
- try {
414
- db.prepare(`UPDATE goal_stack SET status = 'suspended' WHERE id = ? AND status = 'active'`).run(goalId);
415
- }
416
- finally {
417
- closeHippoDb(db);
418
- }
419
- }
420
- export function resumeGoal(hippoRoot, goalId) {
421
- const db = openHippoDb(hippoRoot);
422
- try {
423
- db.exec('BEGIN IMMEDIATE');
424
- try {
425
- // SAFETY: the row comes from the SELECT above, which projects exactly
426
- // the session_id, tenant_id, and status columns of goal_stack.
427
- const row = db.prepare(`SELECT session_id, tenant_id, status FROM goal_stack WHERE id = ?`).get(goalId);
428
- if (!row || row.status !== 'suspended') {
429
- db.exec('COMMIT');
430
- return;
431
- }
432
- enforceDepthCapWithinTx(db, row.tenant_id, row.session_id);
433
- db.prepare(`UPDATE goal_stack SET status = 'active' WHERE id = ?`).run(goalId);
434
- db.exec('COMMIT');
435
- }
436
- catch (err) {
437
- try {
438
- db.exec('ROLLBACK');
439
- }
440
- catch { /* already rolled back; keep the original error */ }
441
- throw err;
442
- }
443
- }
444
- finally {
445
- closeHippoDb(db);
446
- }
447
- }
448
- //# sourceMappingURL=goals.js.map
@@ -1,73 +0,0 @@
1
- import { type GraphTxDb, type EntityType, type GraphQueueStatus, type Entity, type Relation, type GraphQueueItem } from './types.js';
2
- export declare function loadEntityById(hippoRoot: string, tenantId: string, id: number): Entity | null;
3
- /** Entities with an exact `name` (read), bounded by `limit` in SQL with a
4
- * deterministic order. Lets the graph-view focus query find the `--entity NAME`
5
- * entity DIRECTLY (not from a globally-capped list) WITHOUT materializing every
6
- * same-name row when a name maps to many entities. */
7
- export declare function loadEntitiesByName(hippoRoot: string, tenantId: string, name: string, opts?: {
8
- limit?: number;
9
- }, txDb?: GraphTxDb): Entity[];
10
- export declare function loadEntities(hippoRoot: string, tenantId: string, opts?: {
11
- entityType?: EntityType;
12
- limit?: number;
13
- }, txDb?: GraphTxDb): Entity[];
14
- export declare function loadRelations(hippoRoot: string, tenantId: string, opts?: {
15
- fromEntityId?: number;
16
- limit?: number;
17
- }, txDb?: GraphTxDb): Relation[];
18
- /**
19
- * Map consolidated source memory ids -> their graph entities. The SEED step of
20
- * multi-hop recall (recall result memory ids -> entities to traverse from). Tenant-
21
- * scoped, read-only; chunks the IN-list under the SQLite variable cap.
22
- */
23
- export declare function loadEntitiesByMemoryId(hippoRoot: string, tenantId: string, memoryIds: string[]): Entity[];
24
- /**
25
- * Load entities by their primary ids. Resolves the entity rows reached during the BFS
26
- * (whose `memory_id` maps back to a recall result). Tenant-scoped, read-only.
27
- */
28
- export declare function loadEntitiesByIds(hippoRoot: string, tenantId: string, ids: number[], txDb?: GraphTxDb): Entity[];
29
- /**
30
- * All relations touching ANY of `entityIds` in EITHER direction (from OR to) — the
31
- * per-hop neighbour query for multi-hop traversal. ONE query for the whole frontier
32
- * (not one per node): this is the bidirectional read `loadRelations` (from-only) lacks,
33
- * and avoids an N+1 across BFS frontier nodes. `limit` caps rows for the frontier and
34
- * must be a non-negative integer (the raw `LIMIT ?` rejects a fractional value).
35
- */
36
- export declare function loadNeighborRelations(hippoRoot: string, tenantId: string, entityIds: number[], opts?: {
37
- limit?: number;
38
- }, txDb?: GraphTxDb): Relation[];
39
- /**
40
- * Relations with BOTH endpoints in `entityIds` (edges AMONG the set, not merely
41
- * touching it). Read. Used by the graph-view focus subgraph so the displayed
42
- * edges are exactly the intra-union edges: the `LIMIT` only caps genuinely-many
43
- * intra-union edges — no out-of-union row can evict a valid in-set edge. The
44
- * caller bounds `entityIds` (<= the view limit), so a single query is safe.
45
- */
46
- export declare function loadRelationsAmong(hippoRoot: string, tenantId: string, entityIds: number[], opts?: {
47
- limit?: number;
48
- }, txDb?: GraphTxDb): Relation[];
49
- /**
50
- * Run `fn` inside ONE read transaction (a single WAL snapshot) so every graph read
51
- * it performs — pass the supplied `txDb` to the `load*` functions — sees a consistent
52
- * view, even if a `graph extract` / sleep-drain rebuild commits concurrently between
53
- * reads (the rebuild clears + reinserts entities, so separate reads could otherwise
54
- * mix old entity ids with new relation ids). Reads only; the connection is opened
55
- * once and closed after.
56
- */
57
- export declare function withGraphReadSnapshot<T>(hippoRoot: string, fn: (txDb: GraphTxDb) => T): T;
58
- export declare function loadExtractionQueue(hippoRoot: string, tenantId: string, opts?: {
59
- status?: GraphQueueStatus;
60
- limit?: number;
61
- }): GraphQueueItem[];
62
- /**
63
- * The dirty tenants awaiting graph re-extraction, each with the MAX pending
64
- * queue id at read time (a watermark). The sleep drain rebuilds each tenant's
65
- * graph, then marks only items at or below the watermark processed, so items
66
- * enqueued DURING the rebuild stay pending for the next sleep (no lost-update
67
- * race). Host-wide read (the queue is per-tenant but sleep is cross-tenant).
68
- */
69
- export declare function loadPendingExtractionTenants(hippoRoot: string): {
70
- tenantId: string;
71
- maxPendingId: number;
72
- }[];
73
- //# sourceMappingURL=read.d.ts.map