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
@@ -1,167 +0,0 @@
1
- /**
2
- * LLM-powered refinement of consolidated semantic memories.
3
- *
4
- * The rule-based `mergeContents` in consolidate.ts produces functional but
5
- * ugly semantic memories — typically "[Consolidated from N related memories]"
6
- * prepended to the longest source, or a bulleted list. `hippo refine` takes
7
- * those and asks Claude to synthesize a clean, generalized principle.
8
- *
9
- * Design choices:
10
- * - Separate command (not baked into `hippo sleep`) so API-key users opt in.
11
- * - Idempotent via the `llm-refined` tag — re-running skips already-refined.
12
- * - Uses fetch directly so no SDK dependency.
13
- * - On failure (API error, bad response), the original memory is untouched.
14
- */
15
- import { Layer } from './memory.js';
16
- import { writeEntry } from './store/entry-writes.js';
17
- import { loadAllEntries, readEntry } from './store/entry-reads.js';
18
- import { redactSecretsStrict } from './secret-detect.js';
19
- import { fetchWithRetry, llmTimeoutMs } from './http-retry.js';
20
- import { log } from './log.js';
21
- const REFINED_TAG = 'llm-refined';
22
- const CONSOLIDATED_MARKERS = [
23
- '[Consolidated from',
24
- '[Consolidated pattern from',
25
- ];
26
- /**
27
- * Ask Claude to synthesize a clean semantic memory from the merged content
28
- * plus the original source memories. Returns the refined content string or
29
- * `null` when the API call failed.
30
- */
31
- export async function refineSemanticMemory(merged, sources, opts) {
32
- const model = opts.model ?? 'claude-sonnet-4-6';
33
- const fetchFn = opts.fetcher ?? fetch;
34
- const sourceBlock = sources
35
- .slice(0, 8)
36
- .map((s, i) => `[source ${i + 1}] ${redactSecretsStrict(s.content).slice(0, 400)}`)
37
- .join('\n\n');
38
- const prompt = `You are refining a semantic memory in an agent's memory store. The rule-based consolidator merged several related episodic memories into one, but the output is clumsy. Produce a single coherent semantic memory that captures the underlying principle.
39
-
40
- Rules:
41
- - Output ONLY the refined content — no preamble, no quote marks, no "Here is...".
42
- - Keep it concise: one paragraph, no headers, no bullet lists unless the sources are inherently a list.
43
- - Preserve specific facts (names, numbers, paths, IDs) from the sources.
44
- - Generalize: state the pattern, not each instance.
45
- - Do NOT include the "[Consolidated from N ...]" marker.
46
-
47
- Current merged content:
48
- ${redactSecretsStrict(merged)}
49
-
50
- Source memories (up to 8 shown):
51
- ${sourceBlock}`;
52
- let res;
53
- try {
54
- res = await fetchWithRetry('https://api.anthropic.com/v1/messages', {
55
- method: 'POST',
56
- headers: {
57
- 'content-type': 'application/json',
58
- 'x-api-key': opts.apiKey,
59
- 'anthropic-version': '2023-06-01',
60
- },
61
- body: JSON.stringify({
62
- model,
63
- max_tokens: 800,
64
- messages: [{ role: 'user', content: prompt }],
65
- }),
66
- }, { timeoutMs: llmTimeoutMs(), fetchFn });
67
- }
68
- catch (err) {
69
- log.warn(`refine: request failed: ${err instanceof Error ? err.message : String(err)}`);
70
- return null;
71
- }
72
- if (!res.ok) {
73
- log.warn(`refine: API answered HTTP ${res.status}`);
74
- return null;
75
- }
76
- let text;
77
- try {
78
- // SAFETY: data is the Anthropic Messages API response body; the
79
- // documented response shape is `{ content: [{ type, text, ... }] }`
80
- // for a text-generating request like this one.
81
- const data = await res.json();
82
- text = data.content?.[0]?.text?.trim() ?? '';
83
- }
84
- catch (err) {
85
- log.warn(`refine: unreadable response: ${err instanceof Error ? err.message : String(err)}`);
86
- return null;
87
- }
88
- if (text.length < 10) {
89
- log.warn('refine: response was empty or too short to use');
90
- return null;
91
- }
92
- return text;
93
- }
94
- function isConsolidated(entry) {
95
- if (entry.layer !== Layer.Semantic)
96
- return false;
97
- return CONSOLIDATED_MARKERS.some((m) => entry.content.startsWith(m));
98
- }
99
- /**
100
- * Scan the store for consolidated semantic memories, refine each with the
101
- * LLM, and write the refined content back. Tags with `llm-refined` so
102
- * repeated runs are idempotent (unless `all` is set).
103
- */
104
- export async function refineStore(hippoRoot, opts) {
105
- const result = {
106
- scanned: 0,
107
- refined: 0,
108
- skipped: 0,
109
- failed: 0,
110
- details: [],
111
- };
112
- // When opts.tenantId is provided, scope the top-level scan to this
113
- // tenant's consolidated entries.
114
- const entries = loadAllEntries(hippoRoot, opts.tenantId);
115
- let processed = 0;
116
- for (const entry of entries) {
117
- if (!isConsolidated(entry))
118
- continue;
119
- result.scanned++;
120
- if (!opts.all && entry.tags.includes(REFINED_TAG)) {
121
- result.skipped++;
122
- result.details.push({ id: entry.id, status: 'skipped', reason: 'already refined' });
123
- continue;
124
- }
125
- if (opts.limit !== undefined && processed >= opts.limit)
126
- break;
127
- processed++;
128
- // Best-effort: walk parents_json (schema v9) to fetch originals. When
129
- // parents aren't recorded we still refine using just the merged content.
130
- const sources = [];
131
- const parentIds = Array.isArray(entry.parents) ? entry.parents : [];
132
- for (const pid of parentIds) {
133
- // Parent lookup scoped by opts.tenantId when provided.
134
- // Cross-tenant parents return null and are silently skipped — refine
135
- // still produces output from the merged content alone (graceful
136
- // degradation rather than refuse-to-refine).
137
- const p = readEntry(hippoRoot, pid, opts.tenantId);
138
- if (p)
139
- sources.push(p);
140
- }
141
- const refined = await refineSemanticMemory(entry.content, sources, {
142
- apiKey: opts.apiKey,
143
- model: opts.model,
144
- fetcher: opts.fetcher,
145
- });
146
- if (refined === null) {
147
- result.failed++;
148
- result.details.push({ id: entry.id, status: 'failed', reason: 'api error or empty response' });
149
- continue;
150
- }
151
- if (opts.dryRun) {
152
- result.refined++;
153
- result.details.push({ id: entry.id, status: 'refined', reason: 'dry-run (no write)' });
154
- continue;
155
- }
156
- const updated = {
157
- ...entry,
158
- content: refined,
159
- tags: entry.tags.includes(REFINED_TAG) ? entry.tags : [...entry.tags, REFINED_TAG],
160
- };
161
- writeEntry(hippoRoot, updated);
162
- result.refined++;
163
- result.details.push({ id: entry.id, status: 'refined' });
164
- }
165
- return result;
166
- }
167
- //# sourceMappingURL=refine-llm.js.map
@@ -1,69 +0,0 @@
1
- /**
2
- * Rejected-value tombstone: shared reject/unreject/list flow.
3
- *
4
- * The CLI (`hippo reject`/`rejections`/`unreject`) and the Context-based
5
- * `api.reject`/`api.unreject`/`api.listRejections` surfaces both need the
6
- * SAME multi-step transaction + post-commit mirror-purge flow. Extracted
7
- * here (leaf module) so neither duplicates it.
8
- *
9
- * Module direction: this file imports from store.ts, rejection.ts, raw-archive.ts,
10
- * dormant.ts, same-text.ts and merged-row.ts. Nothing imports FROM this file except
11
- * cli.ts and api.ts, so it introduces no cycle.
12
- */
13
- import { type RejectedValueRow } from './rejection.js';
14
- export interface RejectFlowOpts {
15
- hippoRoot: string;
16
- tenantId: string;
17
- actor: string;
18
- reason: string;
19
- /** By-id form: reject the CURRENT content of an existing memory. */
20
- memoryId?: string;
21
- /** Pre-emptive form: reject a value not currently stored (or already gone). */
22
- value?: string;
23
- /** The caller's own personal scope: the only personal rows the sweep may remove. Unset (the CLI) skips every personal row. */
24
- ownScope?: string;
25
- }
26
- export interface RejectFlowResult {
27
- digest: string;
28
- /** The rejected content, for the CLI's at-reject-time echo (the
29
- * tombstone itself stores no content — this is the only place it's seen
30
- * again after this call returns). */
31
- content: string;
32
- /** Every row removed this call, live or dormant: all whose normalized digest matched (not just the id
33
- * passed, since duplicates share a digest), and each sleep-merged row holding the value, whose other
34
- * texts move to a new row: listed in successorIds when it was live, dormantSuccessorIds when dormant. */
35
- removedIds: string[];
36
- /** Subset of removedIds that were kind='raw' (archived, not deleted). */
37
- removedRawIds: string[];
38
- successorIds: string[];
39
- dormantSuccessorIds: string[];
40
- }
41
- /**
42
- * `hippo reject` / `api.reject` core flow. ONE connection, one transaction:
43
- * insert the tombstone, enumerate + remove every live tenant row whose
44
- * normalized digest matches (kind-aware), one aggregate `reject_value`
45
- * audit, COMMIT. Then post-commit (mirrors the existing purge+reaper
46
- * pattern verbatim from api.archiveRaw, api.ts:1913-1938): best-effort
47
- * mirror purge per removed id, `mirror_cleaned_at` stamps for raw ids.
48
- * index.json itself is only refreshed by `rebuildIndex()`.
49
- */
50
- export declare function rejectValue(opts: RejectFlowOpts): RejectFlowResult;
51
- export type UnrejectOutcome = {
52
- status: 'ok';
53
- digest: string;
54
- reason: string | null;
55
- } | {
56
- status: 'not_found';
57
- } | {
58
- status: 'ambiguous';
59
- candidates: RejectedValueRow[];
60
- };
61
- /**
62
- * `hippo unreject` / `api.unreject` — resolve a unique tombstone by digest
63
- * (or prefix), delete it, audit `unreject_value`. The only v1 escape hatch
64
- * (plan §4): no per-write force flag.
65
- */
66
- export declare function unrejectValue(hippoRoot: string, tenantId: string, digestOrPrefix: string, actor: string): UnrejectOutcome;
67
- /** `hippo rejections` / `api.listRejections` — list tombstones for a tenant. */
68
- export declare function listRejectionsForTenant(hippoRoot: string, tenantId: string): RejectedValueRow[];
69
- //# sourceMappingURL=reject-flow.d.ts.map
@@ -1,260 +0,0 @@
1
- /**
2
- * Rejected-value tombstone: shared reject/unreject/list flow.
3
- *
4
- * The CLI (`hippo reject`/`rejections`/`unreject`) and the Context-based
5
- * `api.reject`/`api.unreject`/`api.listRejections` surfaces both need the
6
- * SAME multi-step transaction + post-commit mirror-purge flow. Extracted
7
- * here (leaf module) so neither duplicates it.
8
- *
9
- * Module direction: this file imports from store.ts, rejection.ts, raw-archive.ts,
10
- * dormant.ts, same-text.ts and merged-row.ts. Nothing imports FROM this file except
11
- * cli.ts and api.ts, so it introduces no cycle.
12
- */
13
- import { closeHippoDb } from './db.js';
14
- import { BadRequestError } from './api-errors.js';
15
- import { appendAuditEvent, reportAuditWriteFailure } from './audit.js';
16
- import { isPersonalScope } from './recall-scope.js';
17
- import { archiveRawMemory } from './raw-archive.js';
18
- import { deleteDormantRow, listDormantSnapshots, purgeDormantByDigest, replaceDormantEntry } from './dormant.js';
19
- import { stampOriginProject } from './store/entry-row.js';
20
- import { purgeMirrorBestEffort } from './store/mirrors.js';
21
- import { openStore } from './store/open.js';
22
- import { writeEntryDbOnly, writeEntryMirrors } from './store/entry-writes.js';
23
- import { selectAllEntries } from './store/entry-reads.js';
24
- import { deleteEntryCore } from './store/delete-and-batch.js';
25
- import { heldTexts } from './same-text.js';
26
- import { mergedSuccessor } from './merged-row.js';
27
- import { rejectionDigest, normalizeValueForRejection, insertRejectedValue, deleteRejectedValue, listRejectedValues, } from './rejection.js';
28
- function assertRejectOpts(opts) {
29
- if (!opts.reason.trim()) {
30
- throw new Error('reject requires a non-empty --reason (the tombstone stores no content; reason is its only identity).');
31
- }
32
- if (opts.memoryId === undefined && opts.value === undefined) {
33
- throw new Error('reject requires either a memory id or --value.');
34
- }
35
- if (opts.memoryId !== undefined && opts.value !== undefined) {
36
- // Enforced here, not only in the CLI parser, so a direct api caller passing both
37
- // is refused instead of silently getting the memoryId path with `value` ignored.
38
- throw new Error('reject accepts either a memory id or --value, not both.');
39
- }
40
- if (opts.value !== undefined && normalizeValueForRejection(opts.value).length === 0) {
41
- // Direct api callers can pass strings the CLI flag parser would have
42
- // refused; an empty-normalized tombstone would refuse nothing meaningful
43
- // and pollute the listing.
44
- throw new Error('reject --value requires non-empty content.');
45
- }
46
- }
47
- function contentToReject(db, opts) {
48
- if (opts.memoryId === undefined)
49
- return opts.value;
50
- // SAFETY: row's shape matches the three columns named in the SELECT above.
51
- const row = db
52
- .prepare(`SELECT content, tenant_id, scope FROM memories WHERE id = ?`)
53
- .get(opts.memoryId);
54
- if (!row || row.tenant_id !== opts.tenantId) {
55
- throw new Error(`memory not found: ${opts.memoryId}`);
56
- }
57
- // A tombstone is tenant-wide, so one made from personal text would show its reason to everyone.
58
- if (isPersonalScope(row.scope))
59
- throw new BadRequestError("Personal memories can't be rejected. Use forget to remove it.");
60
- return row.content;
61
- }
62
- /** Every row but another person's personal one, which is outside the caller's recall and so outside its reject. */
63
- function inReach(opts, scope) {
64
- return !isPersonalScope(scope) || scope === opts.ownScope;
65
- }
66
- function removeLiveRows(db, opts, holdsValue, removal) {
67
- const { removedIds, removedRawIds, successors } = removal;
68
- const merged = [];
69
- for (const row of selectAllEntries(db, opts.tenantId)) {
70
- if (!inReach(opts, row.scope))
71
- continue;
72
- if (!holdsValue(row.content)) {
73
- if (heldTexts(row).some(holdsValue))
74
- merged.push(row);
75
- continue;
76
- }
77
- if (row.kind === 'raw') {
78
- // Append-only trigger respected — archiveRawMemory is the only
79
- // legitimate removal path for kind='raw', and its inner SAVEPOINT
80
- // composes safely inside this BEGIN/COMMIT.
81
- archiveRawMemory(db, row.id, { reason: opts.reason, who: opts.actor });
82
- removedRawIds.push(row.id);
83
- }
84
- else {
85
- // suppressForgetAudit: the aggregate reject_value row below is the
86
- // trail for these removals, not N individual forget rows.
87
- deleteEntryCore(db, row.id, { actor: opts.actor, suppressForgetAudit: true });
88
- }
89
- removedIds.push(row.id);
90
- }
91
- for (const row of merged) {
92
- const successor = mergedSuccessor(row, holdsValue, new Set(removedIds));
93
- deleteEntryCore(db, row.id, { actor: opts.actor, suppressForgetAudit: true });
94
- removedIds.push(row.id);
95
- if (!successor)
96
- continue;
97
- const kept = stampOriginProject(opts.hippoRoot, successor);
98
- writeEntryDbOnly(db, kept, { actor: opts.actor });
99
- successors.push(kept);
100
- }
101
- }
102
- // Dormant copies (src/dormant.ts), whole or inside a merged row, go too, in the same transaction: a
103
- // rejected value may not linger where `hippo dormant restore` could
104
- // bring it back. They have no markdown mirror, so the post-commit
105
- // mirror purge below is a no-op for them; they join removedIds for the
106
- // audit trail and the caller's report.
107
- function removeDormantCopies(db, opts, digest, holdsValue, removal) {
108
- const { tenantId } = opts;
109
- const { removedIds, dormantSuccessorIds } = removal;
110
- removedIds.push(...purgeDormantByDigest(db, tenantId, digest, (scope) => inReach(opts, scope)));
111
- for (const dormant of listDormantSnapshots(db, tenantId)) {
112
- if (!inReach(opts, dormant.entry.scope))
113
- continue;
114
- const successor = mergedSuccessor(dormant.entry, holdsValue, new Set(removedIds));
115
- if (successor === undefined)
116
- continue;
117
- removedIds.push(dormant.entry.id);
118
- if (!successor) {
119
- deleteDormantRow(db, tenantId, dormant.entry.id);
120
- continue;
121
- }
122
- replaceDormantEntry(db, tenantId, dormant.entry.id, successor);
123
- dormantSuccessorIds.push(successor.id);
124
- }
125
- }
126
- function auditRejectValue(db, opts, digest, removedIds) {
127
- try {
128
- appendAuditEvent(db, {
129
- tenantId: opts.tenantId,
130
- actor: opts.actor,
131
- op: 'reject_value',
132
- targetId: opts.memoryId,
133
- metadata: { digest, removedIds, count: removedIds.length },
134
- });
135
- }
136
- catch (error) {
137
- // Inside the open transaction: the reject commits without its trail row rather than rolling back over bookkeeping.
138
- reportAuditWriteFailure('reject_value', String(error), opts.memoryId);
139
- }
140
- }
141
- // Post-commit, db handle still open (same pattern as api.archiveRaw):
142
- // best-effort mirror purge per removed id, reaper-backstop stamp for
143
- // raw ids.
144
- function purgeRemovedMirrors(db, hippoRoot, removal) {
145
- for (const id of removal.removedIds) {
146
- // purgeMirrorBestEffort retries once, then for non-raw ids (which the
147
- // reaper never scans) reports the EXPLICIT leftover path(s). See its own doc comment (store.ts, near
148
- // removeEntryMirrors) for the full rationale.
149
- const mirrorOk = purgeMirrorBestEffort(hippoRoot, id, removal.removedRawIds.includes(id), 'hippo reject');
150
- if (mirrorOk && removal.removedRawIds.includes(id)) {
151
- db.prepare(`UPDATE raw_archive SET mirror_cleaned_at = ? WHERE memory_id = ?`).run(new Date().toISOString(), id);
152
- }
153
- }
154
- for (const successor of removal.successors)
155
- writeEntryMirrors(hippoRoot, successor);
156
- }
157
- /**
158
- * `hippo reject` / `api.reject` core flow. ONE connection, one transaction:
159
- * insert the tombstone, enumerate + remove every live tenant row whose
160
- * normalized digest matches (kind-aware), one aggregate `reject_value`
161
- * audit, COMMIT. Then post-commit (mirrors the existing purge+reaper
162
- * pattern verbatim from api.archiveRaw, api.ts:1913-1938): best-effort
163
- * mirror purge per removed id, `mirror_cleaned_at` stamps for raw ids.
164
- * index.json itself is only refreshed by `rebuildIndex()`.
165
- */
166
- export function rejectValue(opts) {
167
- assertRejectOpts(opts);
168
- const db = openStore(opts.hippoRoot);
169
- try {
170
- const content = contentToReject(db, opts);
171
- const digest = rejectionDigest(content);
172
- const now = new Date().toISOString();
173
- const removal = { removedIds: [], removedRawIds: [], successors: [], dormantSuccessorIds: [] };
174
- db.exec('BEGIN IMMEDIATE');
175
- try {
176
- insertRejectedValue(db, {
177
- tenantId: opts.tenantId,
178
- digest,
179
- reason: opts.reason,
180
- rejectedBy: opts.actor,
181
- rejectedAt: now,
182
- sourceMemoryId: opts.memoryId ?? null,
183
- normalizedChars: normalizeValueForRejection(content).length,
184
- });
185
- // O(N) scan over the tenant's rows (plan §4): human-triggered command
186
- // on ~1-5k-row stores — acceptable, documented. A digest column on
187
- // memories is the escape if stores grow 100x; not needed now.
188
- const holdsValue = (text) => rejectionDigest(text) === digest;
189
- removeLiveRows(db, opts, holdsValue, removal);
190
- removeDormantCopies(db, opts, digest, holdsValue, removal);
191
- auditRejectValue(db, opts, digest, removal.removedIds);
192
- db.exec('COMMIT');
193
- }
194
- catch (err) {
195
- try {
196
- db.exec('ROLLBACK');
197
- }
198
- catch {
199
- // already rolled back
200
- }
201
- throw err;
202
- }
203
- purgeRemovedMirrors(db, opts.hippoRoot, removal);
204
- const { removedIds, removedRawIds, successors, dormantSuccessorIds } = removal;
205
- return { digest, content, removedIds, removedRawIds, successorIds: successors.map((s) => s.id), dormantSuccessorIds };
206
- }
207
- finally {
208
- closeHippoDb(db);
209
- }
210
- }
211
- /**
212
- * `hippo unreject` / `api.unreject` — resolve a unique tombstone by digest
213
- * (or prefix), delete it, audit `unreject_value`. The only v1 escape hatch
214
- * (plan §4): no per-write force flag.
215
- */
216
- export function unrejectValue(hippoRoot, tenantId, digestOrPrefix, actor) {
217
- // An empty/blank prefix startsWith-matches EVERY digest and would list the whole
218
- // tombstone set as ambiguous, so reject it before the DB round trip.
219
- if (digestOrPrefix.trim().length === 0) {
220
- return { status: 'not_found' };
221
- }
222
- const db = openStore(hippoRoot);
223
- try {
224
- const all = listRejectedValues(db, tenantId);
225
- const matches = all.filter((r) => r.digest.startsWith(digestOrPrefix));
226
- if (matches.length === 0)
227
- return { status: 'not_found' };
228
- if (matches.length > 1)
229
- return { status: 'ambiguous', candidates: matches };
230
- const target = matches[0];
231
- deleteRejectedValue(db, tenantId, target.digest);
232
- try {
233
- appendAuditEvent(db, {
234
- tenantId,
235
- actor,
236
- op: 'unreject_value',
237
- targetId: target.sourceMemoryId ?? undefined,
238
- metadata: { digest: target.digest, reason: target.reason },
239
- });
240
- }
241
- catch (error) {
242
- reportAuditWriteFailure('unreject_value', String(error), target.sourceMemoryId);
243
- }
244
- return { status: 'ok', digest: target.digest, reason: target.reason };
245
- }
246
- finally {
247
- closeHippoDb(db);
248
- }
249
- }
250
- /** `hippo rejections` / `api.listRejections` — list tombstones for a tenant. */
251
- export function listRejectionsForTenant(hippoRoot, tenantId) {
252
- const db = openStore(hippoRoot);
253
- try {
254
- return listRejectedValues(db, tenantId);
255
- }
256
- finally {
257
- closeHippoDb(db);
258
- }
259
- }
260
- //# sourceMappingURL=reject-flow.js.map
@@ -1,100 +0,0 @@
1
- /**
2
- * Rejected-value tombstone: core invariant.
3
- *
4
- * Exact-normalized-value semantics: a human who rejects a fact can refuse
5
- * byte-stable re-ingestion of the same value across remember/capture/import/
6
- * sync surfaces. Paraphrase/semantic matching is explicitly out of scope
7
- * (documented limitation, plan "Design").
8
- *
9
- * Kept db-agnostic (helpers take a `DatabaseSyncLike` handle) and does NOT
10
- * import from store.ts — store.ts imports from here, and the reverse would
11
- * be a cycle.
12
- */
13
- import type { DatabaseSyncLike } from './db.js';
14
- import { BadRequestError } from './api-errors.js';
15
- /**
16
- * Normalize content for rejection-digest comparisons: Unicode NFC →
17
- * lowercase → collapse whitespace runs to a single space → trim. No
18
- * punctuation stripping — over-normalization creates false refusals, which
19
- * are worse than misses (plan §1).
20
- */
21
- export declare function normalizeValueForRejection(content: string): string;
22
- /**
23
- * Full sha256 hex (64 chars) of the normalized content. Reuses the strong-
24
- * identity convention (importers.ts:814 content-hash tag), NOT the privacy-
25
- * lossy 16-char convention (recall-trace query hashing) — a tombstone lookup
26
- * key needs collision resistance, not redaction (plan §1).
27
- */
28
- export declare function rejectionDigest(content: string): string;
29
- /**
30
- * Thrown by the write-path guard (checkRejectionGuard, called from
31
- * upsertEntryRow) when an incoming write would introduce a value matching a
32
- * tombstoned digest. Carries enough context for the transaction-owner catch
33
- * blocks (writeEntry, api.supersede) to write a post-rollback
34
- * `reject_refusal` audit row via `auditRejectionRefusal` (plan §3).
35
- */
36
- export declare class RejectedValueError extends BadRequestError {
37
- readonly digest: string;
38
- readonly tenantId: string;
39
- readonly entryId: string;
40
- readonly reason: string | null;
41
- readonly rejectedAt: string;
42
- constructor(opts: {
43
- digest: string;
44
- tenantId: string;
45
- entryId: string;
46
- reason: string | null;
47
- rejectedAt: string;
48
- });
49
- }
50
- export interface RejectedValueRow {
51
- tenantId: string;
52
- digest: string;
53
- reason: string | null;
54
- rejectedBy: string | null;
55
- rejectedAt: string;
56
- sourceMemoryId: string | null;
57
- normalizedChars: number | null;
58
- }
59
- /**
60
- * Look up a tombstone by tenant + digest. One indexed point query — the
61
- * guard's common-case cost, a miss ends the guard (plan §3).
62
- */
63
- export declare function findRejectedValue(db: DatabaseSyncLike, tenantId: string, digest: string): RejectedValueRow | null;
64
- /**
65
- * Insert (or refresh) a tombstone row. Caller owns the transaction — used by
66
- * the `reject` verb and `resolveConflict`'s `rejectLoserValue` path.
67
- */
68
- export declare function insertRejectedValue(db: DatabaseSyncLike, opts: {
69
- tenantId: string;
70
- digest: string;
71
- reason: string;
72
- rejectedBy: string;
73
- rejectedAt: string;
74
- sourceMemoryId?: string | null;
75
- normalizedChars: number;
76
- }): void;
77
- /**
78
- * Delete a tombstone by tenant + exact digest: the `unreject` verb, the
79
- * only escape hatch.
80
- */
81
- export declare function deleteRejectedValue(db: DatabaseSyncLike, tenantId: string, digest: string): boolean;
82
- /** List tombstones for a tenant, newest first: the `rejections` verb. */
83
- export declare function listRejectedValues(db: DatabaseSyncLike, tenantId: string): RejectedValueRow[];
84
- /**
85
- * The write-path guard's check helper, called from `upsertEntryRow`
86
- * (store.ts). Fires when the incoming content's digest matches a tombstone
87
- * AND the write *introduces* that content: the row is new, OR the stored
88
- * row's content digest differs from the incoming one — an UPSERT editing a
89
- * same-id row TO a rejected value is a content introduction and must be
90
- * refused. Unchanged same-id re-persists (recall boost, decay, star toggle)
91
- * are exempt by construction (plan §3).
92
- *
93
- * Ordering minimizes queries on the common (miss) path: (a) caller has
94
- * already computed nothing yet — this does the digest + point lookup first;
95
- * (b) a miss returns immediately (ONE indexed point query); (c) only on a
96
- * tombstone hit does it SELECT the stored row's content to classify
97
- * new-row vs content-introduction (+1 query, rare path).
98
- */
99
- export declare function checkRejectionGuard(db: DatabaseSyncLike, tenantId: string, entryId: string, content: string): void;
100
- //# sourceMappingURL=rejection.d.ts.map
package/dist/replay.d.ts DELETED
@@ -1,41 +0,0 @@
1
- /**
2
- * Replay — biologically-inspired rehearsal during consolidation.
3
- *
4
- * Hippocampal replay is internally-driven reactivation of memories during
5
- * slow-wave sleep: the brain picks important recent experiences and "plays
6
- * them back" without external input, strengthening them before they decay.
7
- * In McClelland's complementary-learning-systems framing, replay is also
8
- * how episodic memories train the neocortex (interleaved rehearsal); in
9
- * reward-modulated STDP, replay is gated by dopamine so rewarded
10
- * experiences get preferentially consolidated.
11
- *
12
- * This module implements a lightweight, deterministic analog. During each
13
- * `hippo sleep`, we sample N surviving memories by a priority score that
14
- * weighs reward feedback, emotional valence, under-rehearsal, and age —
15
- * then apply the same retrieval-strengthening dynamics `markRetrieved`
16
- * applies to real queries. The effect is that important memories stay
17
- * strong even when the user hasn't explicitly queried them recently.
18
- *
19
- * Distinct from the other consolidation passes:
20
- * - decay: removes what's too weak
21
- * - physics: moves particles in embedding space
22
- * - merge: collapses near-duplicate episodics into semantics
23
- * - REPLAY: picks winners and rehearses them (this file)
24
- */
25
- import { type MemoryEntry } from './memory.js';
26
- /**
27
- * Priority score used to rank survivors for replay. Higher = more likely
28
- * to be sampled. Pure function of the entry and current time.
29
- */
30
- export declare function replayPriority(entry: MemoryEntry, now: Date): number;
31
- /**
32
- * Pick `count` memories for replay, weighted by `replayPriority`, without
33
- * replacement. Deterministic given the same seed.
34
- *
35
- * The sampler is weighted but not greedy — picking by priority alone would
36
- * always pick the top-N, which overfits. Biological replay shows both
37
- * preferential-for-reward AND stochastic-exploration characteristics; we
38
- * keep the stochastic element so adjacent survivors aren't always ignored.
39
- */
40
- export declare function sampleForReplay(survivors: MemoryEntry[], count: number, now: Date, seed?: number): MemoryEntry[];
41
- //# sourceMappingURL=replay.d.ts.map