hippo-memory 1.70.0 → 1.72.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 (855) hide show
  1. package/README.md +2 -2
  2. package/dist/agent-memories/apply.d.ts +0 -11
  3. package/dist/agent-memories/apply.js +6 -21
  4. package/dist/agent-memories/claude-code.d.ts +4 -2
  5. package/dist/agent-memories/claude-code.js +15 -6
  6. package/dist/agent-memories/codex.js +1 -1
  7. package/dist/agent-memories/copilot.d.ts +1 -3
  8. package/dist/agent-memories/copilot.js +1 -17
  9. package/dist/agent-memories/files.js +23 -12
  10. package/dist/agent-memories/markdown.d.ts +1 -3
  11. package/dist/agent-memories/markdown.js +1 -3
  12. package/dist/agent-memories/project-folds.d.ts +10 -0
  13. package/dist/agent-memories/project-folds.js +34 -0
  14. package/dist/agent-memories/report.js +2 -1
  15. package/dist/agent-memories/sync.d.ts +4 -2
  16. package/dist/agent-memories/sync.js +18 -11
  17. package/dist/api/assemble.d.ts +7 -44
  18. package/dist/api/assemble.js +3 -23
  19. package/dist/api/audit.d.ts +33 -1
  20. package/dist/api/audit.js +48 -1
  21. package/dist/api/auth.d.ts +20 -26
  22. package/dist/api/auth.js +43 -29
  23. package/dist/api/auto-sleep.d.ts +5 -2
  24. package/dist/api/auto-sleep.js +9 -5
  25. package/dist/api/availability.d.ts +2 -15
  26. package/dist/api/availability.js +4 -18
  27. package/dist/api/cards.d.ts +42 -0
  28. package/dist/api/cards.js +52 -0
  29. package/dist/api/conflicts.d.ts +28 -0
  30. package/dist/api/conflicts.js +61 -0
  31. package/dist/api/context-render.js +4 -3
  32. package/dist/api/context-select.js +12 -15
  33. package/dist/api/context-types.d.ts +10 -35
  34. package/dist/api/context.d.ts +5 -22
  35. package/dist/api/context.js +38 -46
  36. package/dist/api/continuity.d.ts +47 -0
  37. package/dist/api/continuity.js +66 -0
  38. package/dist/{cli → api}/correction-latency.d.ts +2 -14
  39. package/dist/{cli → api}/correction-latency.js +2 -14
  40. package/dist/api/dormant.d.ts +5 -21
  41. package/dist/api/dormant.js +11 -28
  42. package/dist/api/drill-down.d.ts +7 -46
  43. package/dist/api/drill-down.js +6 -27
  44. package/dist/api/embeddings.d.ts +17 -0
  45. package/dist/api/embeddings.js +28 -0
  46. package/dist/api/error-reply.d.ts +8 -0
  47. package/dist/api/error-reply.js +21 -0
  48. package/dist/api/forget.d.ts +11 -26
  49. package/dist/api/forget.js +23 -35
  50. package/dist/api/goals.d.ts +1 -1
  51. package/dist/api/goals.js +5 -9
  52. package/dist/api/graph.d.ts +8 -0
  53. package/dist/api/graph.js +7 -0
  54. package/dist/api/index.d.ts +6 -2
  55. package/dist/api/index.js +6 -2
  56. package/dist/api/instruction-detect.js +21 -6
  57. package/dist/api/learn.d.ts +4 -0
  58. package/dist/api/learn.js +53 -27
  59. package/dist/api/ledger-db.d.ts +2 -5
  60. package/dist/api/ledger-db.js +5 -35
  61. package/dist/api/memories.d.ts +23 -0
  62. package/dist/api/memories.js +46 -0
  63. package/dist/api/objects.d.ts +9 -0
  64. package/dist/api/objects.js +11 -0
  65. package/dist/api/on-store.js +5 -3
  66. package/dist/api/outcome.js +1 -1
  67. package/dist/api/pilot-arm.d.ts +1 -11
  68. package/dist/api/pilot-arm.js +5 -45
  69. package/dist/api/predictions.d.ts +11 -0
  70. package/dist/api/predictions.js +24 -0
  71. package/dist/api/projects.d.ts +21 -0
  72. package/dist/api/projects.js +24 -0
  73. package/dist/api/promote.d.ts +13 -17
  74. package/dist/api/promote.js +12 -20
  75. package/dist/api/prompt-hook.d.ts +19 -6
  76. package/dist/api/prompt-hook.js +54 -13
  77. package/dist/api/provenance-coverage.d.ts +14 -0
  78. package/dist/{cli → api}/provenance-coverage.js +2 -6
  79. package/dist/api/recall-cli.d.ts +58 -0
  80. package/dist/api/recall-cli.js +103 -0
  81. package/dist/api/recall-core.js +17 -9
  82. package/dist/api/recall-finish.d.ts +53 -0
  83. package/dist/api/recall-finish.js +30 -0
  84. package/dist/api/recall-history.d.ts +17 -84
  85. package/dist/api/recall-history.js +15 -88
  86. package/dist/api/recall-pipeline.d.ts +2 -3
  87. package/dist/api/recall-pipeline.js +21 -15
  88. package/dist/api/recall-request.js +1 -1
  89. package/dist/api/recall-types.d.ts +64 -304
  90. package/dist/api/recall.d.ts +3 -34
  91. package/dist/api/recall.js +63 -89
  92. package/dist/api/refine.d.ts +7 -0
  93. package/dist/api/refine.js +10 -0
  94. package/dist/api/remember-local.d.ts +57 -0
  95. package/dist/api/remember-local.js +90 -0
  96. package/dist/api/remember.d.ts +20 -2
  97. package/dist/api/remember.js +16 -3
  98. package/dist/api/session-end.d.ts +22 -0
  99. package/dist/api/session-end.js +101 -0
  100. package/dist/api/sleep-run.d.ts +2 -4
  101. package/dist/api/sleep-run.js +28 -28
  102. package/dist/api/sleep.d.ts +9 -28
  103. package/dist/api/status.d.ts +24 -0
  104. package/dist/api/status.js +40 -0
  105. package/dist/api/store-init.d.ts +4 -0
  106. package/dist/api/store-init.js +9 -0
  107. package/dist/api/tokens.d.ts +3 -10
  108. package/dist/api/tokens.js +4 -11
  109. package/dist/api/types.d.ts +8 -29
  110. package/dist/api/types.js +10 -23
  111. package/dist/capture/caller-session.d.ts +0 -3
  112. package/dist/capture/caller-session.js +1 -12
  113. package/dist/capture/capture-error.d.ts +2 -2
  114. package/dist/capture/capture-error.js +23 -18
  115. package/dist/capture/codex-patch.js +3 -1
  116. package/dist/capture/command.d.ts +4 -12
  117. package/dist/capture/command.js +39 -114
  118. package/dist/capture/compact.d.ts +4 -15
  119. package/dist/capture/compact.js +26 -30
  120. package/dist/capture/compaction-items-caller.js +11 -20
  121. package/dist/capture/compaction-record.d.ts +7 -93
  122. package/dist/capture/compaction-record.js +34 -399
  123. package/dist/capture/compaction-spool.d.ts +5 -3
  124. package/dist/capture/compaction-spool.js +21 -7
  125. package/dist/capture/copilot-transcript.d.ts +2 -1
  126. package/dist/capture/copilot-transcript.js +2 -1
  127. package/dist/capture/extract.d.ts +5 -2
  128. package/dist/capture/extract.js +4 -3
  129. package/dist/capture/failure-caller.d.ts +1 -1
  130. package/dist/capture/failure-caller.js +21 -16
  131. package/dist/capture/failure-reading.d.ts +2 -1
  132. package/dist/capture/failure-reading.js +7 -9
  133. package/dist/capture/pre-compact-caller.js +5 -4
  134. package/dist/capture/session-digest.d.ts +1 -1
  135. package/dist/capture/session-digest.js +17 -10
  136. package/dist/capture/session-end-caller.js +2 -1
  137. package/dist/capture/session-worker.js +3 -4
  138. package/dist/capture/transcript.d.ts +4 -11
  139. package/dist/capture/transcript.js +10 -21
  140. package/dist/capture/working-state.d.ts +4 -2
  141. package/dist/capture/working-state.js +4 -2
  142. package/dist/cli/api-context.d.ts +3 -0
  143. package/dist/cli/api-context.js +6 -0
  144. package/dist/cli/audit-prune.d.ts +1 -59
  145. package/dist/cli/audit-prune.js +2 -61
  146. package/dist/cli/audit.d.ts +1 -1
  147. package/dist/cli/audit.js +42 -43
  148. package/dist/cli/auth.d.ts +2 -2
  149. package/dist/cli/auth.js +61 -44
  150. package/dist/cli/briefs.d.ts +1 -4
  151. package/dist/cli/briefs.js +42 -301
  152. package/dist/cli/card.d.ts +2 -2
  153. package/dist/cli/card.js +63 -56
  154. package/dist/cli/client.d.ts +12 -27
  155. package/dist/cli/client.js +41 -44
  156. package/dist/cli/compact-resume-payload.js +4 -3
  157. package/dist/cli/context.d.ts +2 -3
  158. package/dist/cli/context.js +22 -18
  159. package/dist/cli/continuity.d.ts +6 -6
  160. package/dist/cli/continuity.js +81 -86
  161. package/dist/cli/curate.d.ts +13 -17
  162. package/dist/cli/curate.js +88 -116
  163. package/dist/cli/dag.d.ts +4 -4
  164. package/dist/cli/dag.js +55 -34
  165. package/dist/cli/decisions.d.ts +2 -4
  166. package/dist/cli/decisions.js +18 -309
  167. package/dist/cli/eval.d.ts +1 -1
  168. package/dist/cli/eval.js +27 -26
  169. package/dist/cli/exit.d.ts +6 -0
  170. package/dist/cli/exit.js +11 -0
  171. package/dist/cli/explain.d.ts +2 -3
  172. package/dist/cli/explain.js +25 -27
  173. package/dist/cli/flag-values.d.ts +6 -1
  174. package/dist/cli/flag-values.js +42 -15
  175. package/dist/cli/flags.d.ts +0 -288
  176. package/dist/cli/flags.js +3 -138
  177. package/dist/cli/github.d.ts +14 -0
  178. package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
  179. package/dist/cli/goals.d.ts +2 -2
  180. package/dist/cli/goals.js +46 -50
  181. package/dist/cli/graph.d.ts +3 -0
  182. package/dist/cli/graph.js +83 -0
  183. package/dist/cli/hook-runtime.d.ts +12 -32
  184. package/dist/cli/hook-runtime.js +21 -64
  185. package/dist/cli/incidents.d.ts +3 -0
  186. package/dist/cli/incidents.js +112 -0
  187. package/dist/cli/init.d.ts +2 -2
  188. package/dist/cli/init.js +33 -30
  189. package/dist/cli/install-steps.d.ts +2 -1
  190. package/dist/cli/install-steps.js +13 -14
  191. package/dist/cli/last-sleep.d.ts +2 -1
  192. package/dist/cli/last-sleep.js +4 -1
  193. package/dist/cli/lenient-id.d.ts +2 -0
  194. package/dist/cli/lenient-id.js +13 -0
  195. package/dist/cli/maintenance.d.ts +5 -5
  196. package/dist/cli/maintenance.js +37 -43
  197. package/dist/cli/notes.d.ts +2 -0
  198. package/dist/cli/notes.js +41 -0
  199. package/dist/cli/object-verbs.js +4 -3
  200. package/dist/cli/open-browser.d.ts +14 -0
  201. package/dist/cli/open-browser.js +26 -0
  202. package/dist/cli/owner-validation.d.ts +5 -28
  203. package/dist/cli/owner-validation.js +5 -28
  204. package/dist/cli/playbooks.d.ts +3 -4
  205. package/dist/cli/playbooks.js +131 -300
  206. package/dist/cli/predictions.d.ts +3 -0
  207. package/dist/cli/predictions.js +175 -0
  208. package/dist/cli/print.d.ts +2 -5
  209. package/dist/cli/print.js +3 -5
  210. package/dist/cli/projects.d.ts +2 -2
  211. package/dist/cli/projects.js +31 -25
  212. package/dist/cli/quality-repair-once.d.ts +1 -1
  213. package/dist/cli/quality-repair-once.js +7 -6
  214. package/dist/cli/recall.d.ts +2 -4
  215. package/dist/cli/recall.js +67 -137
  216. package/dist/cli/refine-llm.d.ts +5 -31
  217. package/dist/cli/refine-llm.js +23 -50
  218. package/dist/cli/remember.d.ts +3 -3
  219. package/dist/cli/remember.js +134 -192
  220. package/dist/cli/scheduler.d.ts +2 -17
  221. package/dist/cli/scheduler.js +14 -19
  222. package/dist/cli/serve.js +23 -14
  223. package/dist/cli/session-hooks.d.ts +11 -19
  224. package/dist/cli/session-hooks.js +143 -214
  225. package/dist/cli/setup.d.ts +4 -4
  226. package/dist/cli/setup.js +35 -30
  227. package/dist/cli/shared.d.ts +7 -25
  228. package/dist/cli/shared.js +17 -60
  229. package/dist/cli/slack.d.ts +2 -2
  230. package/dist/cli/slack.js +19 -23
  231. package/dist/cli/sleep-render.js +6 -3
  232. package/dist/cli/sleep.d.ts +3 -2
  233. package/dist/cli/sleep.js +17 -49
  234. package/dist/cli/status.d.ts +11 -14
  235. package/dist/cli/status.js +74 -120
  236. package/dist/cli/stdin.d.ts +4 -6
  237. package/dist/cli/stdin.js +2 -3
  238. package/dist/cli/transfer.d.ts +9 -9
  239. package/dist/cli/transfer.js +87 -108
  240. package/dist/cli/usage.d.ts +0 -79
  241. package/dist/cli/usage.js +1 -689
  242. package/dist/cli/verb-row.d.ts +32 -0
  243. package/dist/cli/verb-row.js +6 -0
  244. package/dist/cli/verbs/health.d.ts +27 -0
  245. package/dist/cli/verbs/health.js +232 -0
  246. package/dist/cli/verbs/memory.d.ts +16 -0
  247. package/dist/cli/verbs/memory.js +244 -0
  248. package/dist/cli/verbs/objects.d.ts +20 -0
  249. package/dist/cli/verbs/objects.js +254 -0
  250. package/dist/cli/verbs/sessions.d.ts +31 -0
  251. package/dist/cli/verbs/sessions.js +312 -0
  252. package/dist/cli/verbs.d.ts +81 -0
  253. package/dist/cli/verbs.js +7 -0
  254. package/dist/cli/versioned-verbs.d.ts +51 -0
  255. package/dist/cli/versioned-verbs.js +79 -0
  256. package/dist/cli.d.ts +1 -654
  257. package/dist/cli.js +44 -510
  258. package/dist/connectors/dlq.d.ts +39 -3
  259. package/dist/connectors/dlq.js +37 -3
  260. package/dist/connectors/github/backfill.d.ts +5 -25
  261. package/dist/connectors/github/backfill.js +26 -52
  262. package/dist/connectors/github/deletion.d.ts +4 -18
  263. package/dist/connectors/github/deletion.js +2 -15
  264. package/dist/connectors/github/dlq.d.ts +8 -33
  265. package/dist/connectors/github/dlq.js +34 -93
  266. package/dist/connectors/github/ingest.d.ts +4 -12
  267. package/dist/connectors/github/ingest.js +5 -36
  268. package/dist/connectors/github/octokit-client.d.ts +4 -16
  269. package/dist/connectors/github/octokit-client.js +27 -24
  270. package/dist/connectors/github/ratelimit.d.ts +3 -14
  271. package/dist/connectors/github/ratelimit.js +3 -14
  272. package/dist/connectors/github/scope.d.ts +3 -5
  273. package/dist/connectors/github/scope.js +3 -5
  274. package/dist/connectors/github/signature.d.ts +4 -26
  275. package/dist/connectors/github/signature.js +4 -26
  276. package/dist/connectors/github/tenant-routing.d.ts +2 -24
  277. package/dist/connectors/github/tenant-routing.js +4 -26
  278. package/dist/connectors/github/transform.js +2 -16
  279. package/dist/connectors/github/types.d.ts +3 -15
  280. package/dist/connectors/github/types.js +2 -9
  281. package/dist/connectors/github/webhook.d.ts +3 -16
  282. package/dist/connectors/github/webhook.js +38 -23
  283. package/dist/connectors/ingest.d.ts +10 -0
  284. package/dist/connectors/ingest.js +28 -0
  285. package/dist/connectors/slack/backfill.d.ts +4 -17
  286. package/dist/connectors/slack/backfill.js +4 -13
  287. package/dist/connectors/slack/dlq.d.ts +2 -19
  288. package/dist/connectors/slack/dlq.js +51 -90
  289. package/dist/connectors/slack/ingest.d.ts +4 -9
  290. package/dist/connectors/slack/ingest.js +4 -30
  291. package/dist/connectors/slack/scope.d.ts +2 -8
  292. package/dist/connectors/slack/scope.js +2 -8
  293. package/dist/connectors/slack/signature.d.ts +1 -6
  294. package/dist/connectors/slack/tenant-routing.d.ts +2 -19
  295. package/dist/connectors/slack/tenant-routing.js +2 -21
  296. package/dist/connectors/slack/transform.d.ts +2 -18
  297. package/dist/connectors/slack/transform.js +2 -18
  298. package/dist/connectors/slack/types.d.ts +3 -9
  299. package/dist/connectors/slack/types.js +2 -4
  300. package/dist/connectors/slack/web-client.js +33 -27
  301. package/dist/connectors/slack/webhook.d.ts +3 -19
  302. package/dist/connectors/slack/webhook.js +6 -26
  303. package/dist/connectors/slack/workspaces.d.ts +4 -24
  304. package/dist/connectors/slack/workspaces.js +4 -24
  305. package/dist/consolidate/conflicts.js +7 -15
  306. package/dist/consolidate/dag-summary.d.ts +8 -0
  307. package/dist/consolidate/dag-summary.js +41 -0
  308. package/dist/consolidate/dag.d.ts +5 -28
  309. package/dist/consolidate/dag.js +29 -84
  310. package/dist/consolidate/decay.js +7 -19
  311. package/dist/consolidate/dedupe.d.ts +13 -52
  312. package/dist/consolidate/dedupe.js +18 -74
  313. package/dist/consolidate/flush-units.d.ts +3 -4
  314. package/dist/consolidate/flush-units.js +3 -3
  315. package/dist/consolidate/half-life-migration.d.ts +3 -26
  316. package/dist/consolidate/half-life-migration.js +11 -28
  317. package/dist/consolidate/llm-passes.js +49 -40
  318. package/dist/consolidate/memory-value-weights.d.ts +2 -13
  319. package/dist/consolidate/memory-value-weights.js +2 -13
  320. package/dist/consolidate/memory-value.d.ts +11 -84
  321. package/dist/consolidate/memory-value.js +18 -105
  322. package/dist/consolidate/merge.js +12 -33
  323. package/dist/consolidate/physics-pass.d.ts +6 -1
  324. package/dist/consolidate/physics-pass.js +27 -9
  325. package/dist/consolidate/replay.d.ts +6 -38
  326. package/dist/consolidate/replay.js +25 -56
  327. package/dist/consolidate/run.js +1 -1
  328. package/dist/consolidate/sleep.d.ts +1 -8
  329. package/dist/consolidate/sleep.js +13 -22
  330. package/dist/consolidate/trace.d.ts +3 -18
  331. package/dist/consolidate/trace.js +3 -18
  332. package/dist/consolidate/traces.js +9 -25
  333. package/dist/core/ablation.d.ts +14 -91
  334. package/dist/core/ablation.js +16 -91
  335. package/dist/core/active-scope.d.ts +7 -0
  336. package/dist/{sharing/scope.js → core/active-scope.js} +5 -12
  337. package/dist/core/ambient.d.ts +5 -8
  338. package/dist/core/ambient.js +40 -26
  339. package/dist/core/api-errors.d.ts +16 -0
  340. package/dist/core/api-errors.js +20 -0
  341. package/dist/core/capture-contract.d.ts +4 -2
  342. package/dist/core/capture-contract.js +4 -2
  343. package/dist/core/card.d.ts +4 -1
  344. package/dist/core/card.js +11 -1
  345. package/dist/core/compaction-timing.d.ts +7 -0
  346. package/dist/core/compaction-timing.js +9 -0
  347. package/dist/core/compare.d.ts +11 -67
  348. package/dist/core/compare.js +9 -63
  349. package/dist/core/config.d.ts +10 -24
  350. package/dist/core/config.js +20 -16
  351. package/dist/core/cosine.d.ts +3 -0
  352. package/dist/core/cosine.js +19 -0
  353. package/dist/core/handoff.d.ts +1 -7
  354. package/dist/core/handoff.js +1 -7
  355. package/dist/core/markdown.d.ts +6 -0
  356. package/dist/{store → core}/markdown.js +23 -22
  357. package/dist/core/memory-audit.d.ts +17 -0
  358. package/dist/core/memory-audit.js +54 -0
  359. package/dist/core/memory-quality.js +1 -1
  360. package/dist/core/memory.d.ts +51 -168
  361. package/dist/core/memory.js +76 -239
  362. package/dist/{consolidate → core}/merged-row.d.ts +1 -1
  363. package/dist/{consolidate → core}/merged-row.js +3 -2
  364. package/dist/core/package-root.d.ts +3 -0
  365. package/dist/core/package-root.js +5 -0
  366. package/dist/core/physics-config.d.ts +1 -4
  367. package/dist/core/physics-config.js +3 -8
  368. package/dist/core/physics.d.ts +15 -61
  369. package/dist/core/physics.js +65 -138
  370. package/dist/core/prediction.d.ts +3 -0
  371. package/dist/core/prediction.js +6 -0
  372. package/dist/core/project-identity.d.ts +20 -58
  373. package/dist/core/project-identity.js +27 -39
  374. package/dist/core/project-remote.js +13 -2
  375. package/dist/core/raw-append-only.d.ts +5 -0
  376. package/dist/core/raw-append-only.js +7 -0
  377. package/dist/core/recall-scope.d.ts +69 -0
  378. package/dist/core/recall-scope.js +138 -0
  379. package/dist/core/salience.d.ts +1 -7
  380. package/dist/core/salience.js +1 -7
  381. package/dist/dashboard/dashboard-actions.js +2 -2
  382. package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
  383. package/dist/dashboard/dashboard-snapshot.js +11 -2
  384. package/dist/dashboard/dashboard-types.d.ts +2 -1
  385. package/dist/dashboard/dashboard.d.ts +1 -0
  386. package/dist/dashboard/dashboard.js +50 -4
  387. package/dist/db/busy.d.ts +3 -8
  388. package/dist/db/busy.js +37 -33
  389. package/dist/db/connect.js +7 -8
  390. package/dist/db/index.d.ts +3 -3
  391. package/dist/db/index.js +3 -3
  392. package/dist/db/migrate.js +3 -3
  393. package/dist/db/migrations/index.d.ts +1 -1
  394. package/dist/db/migrations/index.js +3 -1
  395. package/dist/db/migrations/types.d.ts +2 -5
  396. package/dist/db/migrations/v14.js +2 -3
  397. package/dist/db/migrations/v15.js +2 -8
  398. package/dist/db/migrations/v16.js +2 -3
  399. package/dist/db/migrations/v17.js +2 -3
  400. package/dist/db/migrations/v19.js +2 -5
  401. package/dist/db/migrations/v20.js +2 -7
  402. package/dist/db/migrations/v22.js +4 -17
  403. package/dist/db/migrations/v23.js +3 -14
  404. package/dist/db/migrations/v24.js +2 -4
  405. package/dist/db/migrations/v25.js +3 -8
  406. package/dist/db/migrations/v26.js +2 -13
  407. package/dist/db/migrations/v27.js +3 -11
  408. package/dist/db/migrations/v28.js +2 -14
  409. package/dist/db/migrations/v29.js +4 -18
  410. package/dist/db/migrations/v30.js +4 -16
  411. package/dist/db/migrations/v31.js +2 -15
  412. package/dist/db/migrations/v32.js +4 -22
  413. package/dist/db/migrations/v33.js +2 -15
  414. package/dist/db/migrations/v34.js +2 -11
  415. package/dist/db/migrations/v35.js +2 -11
  416. package/dist/db/migrations/v36.js +2 -11
  417. package/dist/db/migrations/v37.js +8 -33
  418. package/dist/db/migrations/v38.js +5 -38
  419. package/dist/db/migrations/v39.js +9 -20
  420. package/dist/db/migrations/v40.js +2 -9
  421. package/dist/db/migrations/v41.js +2 -24
  422. package/dist/db/migrations/v43.js +1 -1
  423. package/dist/db/migrations/v44.js +2 -8
  424. package/dist/db/migrations/v45.js +2 -7
  425. package/dist/db/migrations/v47.js +2 -3
  426. package/dist/db/migrations/v51.js +1 -1
  427. package/dist/db/migrations/v55.d.ts +3 -0
  428. package/dist/db/migrations/v55.js +17 -0
  429. package/dist/db/open.d.ts +2 -2
  430. package/dist/db/open.js +21 -9
  431. package/dist/db/physics-state.d.ts +6 -22
  432. package/dist/db/physics-state.js +28 -39
  433. package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
  434. package/dist/db/raw-archive-mirror-cleanup.js +2 -17
  435. package/dist/db/tables.d.ts +2 -0
  436. package/dist/db/tables.js +6 -2
  437. package/dist/db/vector-store.d.ts +2 -0
  438. package/dist/db/vector-store.js +25 -5
  439. package/dist/db/wal-checkpointer.js +2 -1
  440. package/dist/doctor.js +85 -27
  441. package/dist/embeddings/local.d.ts +62 -0
  442. package/dist/embeddings/local.js +146 -0
  443. package/dist/embeddings/provider.d.ts +43 -0
  444. package/dist/{store/embeddings → embeddings}/provider.js +58 -83
  445. package/dist/embeddings/transformers.d.ts +26 -0
  446. package/dist/embeddings/transformers.js +89 -0
  447. package/dist/entry/session-text.d.ts +1 -1
  448. package/dist/entry/session-text.js +3 -2
  449. package/dist/eval/eval-stats.d.ts +15 -53
  450. package/dist/eval/eval-stats.js +12 -42
  451. package/dist/eval/eval-suite.d.ts +2 -13
  452. package/dist/eval/eval-suite.js +91 -45
  453. package/dist/eval/eval.d.ts +6 -24
  454. package/dist/eval/eval.js +8 -35
  455. package/dist/eval/judgment.d.ts +0 -3
  456. package/dist/eval/judgment.js +30 -15
  457. package/dist/extensions/openclaw-plugin/index.js +1 -1
  458. package/dist/graph/extract.d.ts +5 -27
  459. package/dist/graph/extract.js +10 -36
  460. package/dist/graph/recall.d.ts +7 -20
  461. package/dist/graph/recall.js +15 -77
  462. package/dist/graph/stream.d.ts +7 -39
  463. package/dist/graph/stream.js +11 -34
  464. package/dist/graph/view.d.ts +9 -35
  465. package/dist/graph/view.js +24 -44
  466. package/dist/graph/write.d.ts +1 -1
  467. package/dist/graph/write.js +9 -9
  468. package/dist/hooks/codex-session.js +3 -2
  469. package/dist/hooks/codex-wrapper.js +4 -3
  470. package/dist/hooks/copilot.js +2 -1
  471. package/dist/hooks/hook-blocks.d.ts +6 -2
  472. package/dist/hooks/hook-blocks.js +37 -124
  473. package/dist/hooks/json-hooks.d.ts +4 -36
  474. package/dist/hooks/json-hooks.js +22 -59
  475. package/dist/hooks/opencode.d.ts +0 -38
  476. package/dist/hooks/opencode.js +17 -81
  477. package/dist/hooks/shared.d.ts +6 -21
  478. package/dist/hooks/shared.js +31 -33
  479. package/dist/importers/core.d.ts +12 -37
  480. package/dist/importers/core.js +10 -28
  481. package/dist/importers/markdown-parse.d.ts +8 -22
  482. package/dist/importers/markdown-parse.js +8 -25
  483. package/dist/importers/markdown.js +3 -12
  484. package/dist/importers/sources.js +12 -39
  485. package/dist/importers/vault.d.ts +2 -8
  486. package/dist/importers/vault.js +31 -85
  487. package/dist/index.d.ts +8 -3
  488. package/dist/index.js +8 -3
  489. package/dist/learn/autolearn.d.ts +23 -42
  490. package/dist/learn/autolearn.js +45 -52
  491. package/dist/learn/churn-git.js +13 -4
  492. package/dist/learn/extract.d.ts +3 -2
  493. package/dist/learn/extract.js +8 -8
  494. package/dist/learn/forward-claim-detector.d.ts +6 -30
  495. package/dist/learn/forward-claim-detector.js +18 -68
  496. package/dist/learn/invalidation.d.ts +6 -18
  497. package/dist/learn/invalidation.js +18 -31
  498. package/dist/mcp/admin-tools.d.ts +2 -2
  499. package/dist/mcp/admin-tools.js +30 -53
  500. package/dist/mcp/format.js +3 -2
  501. package/dist/mcp/framing.d.ts +1 -0
  502. package/dist/mcp/framing.js +1 -1
  503. package/dist/mcp/memory-tools.js +7 -10
  504. package/dist/mcp/protocol.d.ts +15 -29
  505. package/dist/mcp/protocol.js +26 -16
  506. package/dist/mcp/recall-tools.js +14 -11
  507. package/dist/mcp/request.d.ts +3 -11
  508. package/dist/mcp/request.js +12 -27
  509. package/dist/mcp/server.d.ts +3 -9
  510. package/dist/mcp/server.js +5 -16
  511. package/dist/mcp/session-state.d.ts +1 -1
  512. package/dist/mcp/session-state.js +5 -11
  513. package/dist/mcp/stdio.d.ts +2 -6
  514. package/dist/mcp/stdio.js +68 -16
  515. package/dist/mcp/tool-args.js +2 -1
  516. package/dist/mcp/tools.js +47 -22
  517. package/dist/objects/customer-notes.d.ts +9 -44
  518. package/dist/objects/customer-notes.js +7 -48
  519. package/dist/objects/decisions.d.ts +14 -52
  520. package/dist/objects/decisions.js +15 -53
  521. package/dist/objects/descriptor.d.ts +1 -1
  522. package/dist/objects/incidents.d.ts +9 -40
  523. package/dist/objects/incidents.js +7 -41
  524. package/dist/objects/lifecycle.d.ts +1 -1
  525. package/dist/objects/lifecycle.js +2 -1
  526. package/dist/objects/policies.d.ts +13 -91
  527. package/dist/objects/policies.js +13 -99
  528. package/dist/objects/processes.d.ts +9 -54
  529. package/dist/objects/processes.js +7 -61
  530. package/dist/objects/project-briefs.d.ts +13 -57
  531. package/dist/objects/project-briefs.js +16 -78
  532. package/dist/objects/skills.d.ts +9 -44
  533. package/dist/objects/skills.js +8 -54
  534. package/dist/postinstall.js +7 -20
  535. package/dist/predictions/planning-fallacy.d.ts +11 -34
  536. package/dist/rerankers/clef.js +6 -37
  537. package/dist/rerankers/cross-encoder.d.ts +31 -2
  538. package/dist/rerankers/cross-encoder.js +65 -101
  539. package/dist/rerankers/index.js +5 -4
  540. package/dist/rerankers/jev.js +11 -10
  541. package/dist/rerankers/llm.d.ts +2 -11
  542. package/dist/rerankers/llm.js +14 -14
  543. package/dist/rerankers/outage-warning.d.ts +5 -2
  544. package/dist/rerankers/outage-warning.js +7 -4
  545. package/dist/rerankers/remote.d.ts +1 -0
  546. package/dist/rerankers/remote.js +2 -0
  547. package/dist/rerankers/types.d.ts +2 -14
  548. package/dist/search/bm25-search.js +1 -1
  549. package/dist/search/boosts.d.ts +0 -2
  550. package/dist/search/boosts.js +3 -3
  551. package/dist/search/embed-memories.d.ts +9 -0
  552. package/dist/search/embed-memories.js +377 -0
  553. package/dist/search/goal-boost.d.ts +23 -0
  554. package/dist/search/goal-boost.js +93 -0
  555. package/dist/search/hybrid.d.ts +11 -2
  556. package/dist/search/hybrid.js +9 -4
  557. package/dist/search/multihop.js +2 -3
  558. package/dist/search/path-context.d.ts +5 -18
  559. package/dist/search/path-context.js +5 -18
  560. package/dist/search/physics-search.d.ts +6 -3
  561. package/dist/search/physics-search.js +29 -19
  562. package/dist/search/rerank.js +1 -1
  563. package/dist/search/rrf.d.ts +7 -35
  564. package/dist/search/rrf.js +5 -30
  565. package/dist/search/vector.d.ts +13 -4
  566. package/dist/search/vector.js +40 -13
  567. package/dist/server/auth.d.ts +11 -28
  568. package/dist/server/auth.js +49 -32
  569. package/dist/server/boot.d.ts +2 -21
  570. package/dist/server/boot.js +69 -161
  571. package/dist/server/client-ip.d.ts +3 -21
  572. package/dist/server/client-ip.js +8 -30
  573. package/dist/server/deadline.d.ts +0 -2
  574. package/dist/server/deadline.js +1 -7
  575. package/dist/server/defaults.d.ts +4 -0
  576. package/dist/server/defaults.js +5 -0
  577. package/dist/server/key-check-bounds.d.ts +2 -1
  578. package/dist/server/lifecycle.d.ts +5 -4
  579. package/dist/server/lifecycle.js +19 -4
  580. package/dist/server/mcp-http.js +24 -53
  581. package/dist/server/rate-limit.d.ts +5 -18
  582. package/dist/server/rate-limit.js +4 -13
  583. package/dist/server/request.d.ts +4 -8
  584. package/dist/server/request.js +16 -19
  585. package/dist/server/route-checks.d.ts +7 -0
  586. package/dist/server/route-checks.js +42 -0
  587. package/dist/server/route-table.d.ts +9 -8
  588. package/dist/server/route-table.js +127 -139
  589. package/dist/server/routes/admin.d.ts +8 -8
  590. package/dist/server/routes/admin.js +35 -49
  591. package/dist/server/routes/customer-notes.d.ts +6 -6
  592. package/dist/server/routes/customer-notes.js +8 -14
  593. package/dist/server/routes/decisions.d.ts +6 -6
  594. package/dist/server/routes/decisions.js +12 -21
  595. package/dist/server/routes/incidents.d.ts +6 -6
  596. package/dist/server/routes/incidents.js +14 -25
  597. package/dist/server/routes/memories.d.ts +9 -9
  598. package/dist/server/routes/memories.js +20 -63
  599. package/dist/server/routes/object-routes.d.ts +6 -11
  600. package/dist/server/routes/object-routes.js +11 -22
  601. package/dist/server/routes/policies.d.ts +7 -7
  602. package/dist/server/routes/policies.js +12 -22
  603. package/dist/server/routes/predictions.d.ts +6 -6
  604. package/dist/server/routes/predictions.js +22 -38
  605. package/dist/server/routes/processes.d.ts +6 -6
  606. package/dist/server/routes/processes.js +17 -28
  607. package/dist/server/routes/project-briefs.d.ts +7 -7
  608. package/dist/server/routes/project-briefs.js +11 -20
  609. package/dist/server/routes/recall.d.ts +5 -5
  610. package/dist/server/routes/recall.js +16 -45
  611. package/dist/server/routes/skills.d.ts +7 -7
  612. package/dist/server/routes/skills.js +10 -22
  613. package/dist/server/server-detect.d.ts +15 -53
  614. package/dist/server/server-detect.js +55 -96
  615. package/dist/server/sleep-child.js +26 -7
  616. package/dist/server/sleep-offload.d.ts +11 -5
  617. package/dist/server/sleep-offload.js +21 -12
  618. package/dist/server/types.d.ts +32 -18
  619. package/dist/server/validation.d.ts +3 -2
  620. package/dist/server/validation.js +15 -33
  621. package/dist/server.d.ts +7 -6
  622. package/dist/server.js +8 -6
  623. package/dist/sharing/global-store.d.ts +19 -0
  624. package/dist/sharing/global-store.js +75 -0
  625. package/dist/sharing/global-sync.d.ts +6 -0
  626. package/dist/sharing/global-sync.js +73 -0
  627. package/dist/sharing/project-merge.d.ts +11 -19
  628. package/dist/sharing/project-merge.js +63 -125
  629. package/dist/sharing/search-both.d.ts +60 -0
  630. package/dist/sharing/search-both.js +138 -0
  631. package/dist/sharing/share.d.ts +40 -0
  632. package/dist/sharing/share.js +229 -0
  633. package/dist/store/ambient.js +9 -15
  634. package/dist/store/audit-event.d.ts +5 -13
  635. package/dist/store/audit-event.js +4 -12
  636. package/dist/store/audit.d.ts +2 -21
  637. package/dist/store/audit.js +8 -67
  638. package/dist/store/auth.d.ts +10 -8
  639. package/dist/store/auth.js +17 -12
  640. package/dist/store/candidates.d.ts +23 -5
  641. package/dist/store/candidates.js +119 -71
  642. package/dist/store/capture-write.d.ts +17 -0
  643. package/dist/store/capture-write.js +35 -0
  644. package/dist/store/card-detail.d.ts +2 -1
  645. package/dist/store/card-detail.js +2 -1
  646. package/dist/store/cards.d.ts +14 -9
  647. package/dist/store/cards.js +72 -126
  648. package/dist/store/compaction-caller.d.ts +18 -0
  649. package/dist/store/compaction-caller.js +29 -0
  650. package/dist/store/compactions-record.d.ts +115 -0
  651. package/dist/store/compactions-record.js +417 -0
  652. package/dist/store/compactions.js +6 -4
  653. package/dist/store/conflicts.d.ts +4 -21
  654. package/dist/store/conflicts.js +76 -152
  655. package/dist/store/connectors/dlq.d.ts +10 -0
  656. package/dist/store/connectors/dlq.js +32 -0
  657. package/dist/store/connectors/github.d.ts +14 -16
  658. package/dist/store/connectors/github.js +34 -57
  659. package/dist/store/connectors/slack.d.ts +2 -11
  660. package/dist/store/connectors/slack.js +18 -47
  661. package/dist/store/dashboard-reads.js +11 -14
  662. package/dist/store/delete-and-batch.d.ts +17 -31
  663. package/dist/store/delete-and-batch.js +84 -67
  664. package/dist/store/delivery-recorder.d.ts +15 -4
  665. package/dist/store/delivery-recorder.js +34 -17
  666. package/dist/store/descendant-page.js +6 -3
  667. package/dist/store/diagnostics.js +6 -13
  668. package/dist/store/dormant.d.ts +8 -30
  669. package/dist/store/dormant.js +18 -57
  670. package/dist/store/embeddings/index.d.ts +11 -90
  671. package/dist/store/embeddings/index.js +18 -523
  672. package/dist/store/entry-reads.d.ts +34 -61
  673. package/dist/store/entry-reads.js +111 -136
  674. package/dist/store/entry-row.d.ts +6 -35
  675. package/dist/store/entry-row.js +9 -37
  676. package/dist/store/entry-writes.d.ts +12 -18
  677. package/dist/store/entry-writes.js +46 -44
  678. package/dist/store/failure-log-at.d.ts +8 -0
  679. package/dist/store/failure-log-at.js +16 -0
  680. package/dist/store/failure-log.d.ts +2 -2
  681. package/dist/store/failure-log.js +5 -3
  682. package/dist/{trust → store}/gated-write.d.ts +3 -1
  683. package/dist/{trust → store}/gated-write.js +7 -5
  684. package/dist/store/goals.d.ts +3 -40
  685. package/dist/store/goals.js +41 -178
  686. package/dist/store/graph-queue.d.ts +6 -22
  687. package/dist/store/graph-queue.js +14 -45
  688. package/dist/store/graph-reads.d.ts +11 -35
  689. package/dist/store/graph-reads.js +24 -60
  690. package/dist/store/graph-rows.d.ts +3 -6
  691. package/dist/store/graph-rows.js +6 -9
  692. package/dist/store/graph-view-rows.d.ts +2 -1
  693. package/dist/store/graph-view-rows.js +2 -1
  694. package/dist/store/graph-writes.d.ts +10 -35
  695. package/dist/store/graph-writes.js +59 -106
  696. package/dist/store/half-life.d.ts +2 -1
  697. package/dist/store/half-life.js +14 -16
  698. package/dist/store/handoffs.d.ts +6 -12
  699. package/dist/store/handoffs.js +22 -40
  700. package/dist/store/index-and-stats.d.ts +6 -19
  701. package/dist/store/index-and-stats.js +36 -84
  702. package/dist/store/key-writes.js +1 -1
  703. package/dist/store/ledger-turn.d.ts +9 -0
  704. package/dist/store/ledger-turn.js +38 -0
  705. package/dist/store/mirrors.d.ts +2 -6
  706. package/dist/store/mirrors.js +24 -29
  707. package/dist/store/open.d.ts +0 -4
  708. package/dist/store/open.js +42 -62
  709. package/dist/store/pilot-arm.d.ts +12 -0
  710. package/dist/store/pilot-arm.js +42 -0
  711. package/dist/store/planning-fallacy-evidence.d.ts +2 -30
  712. package/dist/store/planning-fallacy-evidence.js +8 -37
  713. package/dist/store/port.d.ts +91 -82
  714. package/dist/store/port.js +8 -0
  715. package/dist/store/predictions.d.ts +12 -53
  716. package/dist/store/predictions.js +41 -125
  717. package/dist/store/project-tags.d.ts +62 -0
  718. package/dist/store/project-tags.js +67 -0
  719. package/dist/{cli → store}/quality-repair.js +15 -31
  720. package/dist/store/quarantine.js +2 -1
  721. package/dist/store/raw-archive.d.ts +4 -16
  722. package/dist/store/raw-archive.js +14 -29
  723. package/dist/store/recall-trace.d.ts +12 -77
  724. package/dist/store/recall-trace.js +37 -97
  725. package/dist/store/rejected-values.js +9 -20
  726. package/dist/store/rejection-probe.d.ts +4 -0
  727. package/dist/store/rejection-probe.js +19 -0
  728. package/dist/store/rejection.d.ts +10 -73
  729. package/dist/store/rejection.js +12 -84
  730. package/dist/store/report-reads.d.ts +6 -0
  731. package/dist/store/report-reads.js +29 -0
  732. package/dist/store/rows.d.ts +9 -19
  733. package/dist/store/rows.js +36 -34
  734. package/dist/store/rule-sql.d.ts +14 -0
  735. package/dist/store/rule-sql.js +56 -0
  736. package/dist/store/search-rows.d.ts +7 -38
  737. package/dist/store/search-rows.js +23 -54
  738. package/dist/store/sessions.d.ts +10 -47
  739. package/dist/store/sessions.js +21 -75
  740. package/dist/store/set-aside.d.ts +14 -0
  741. package/dist/store/set-aside.js +23 -0
  742. package/dist/store/sqlite/busy.d.ts +3 -0
  743. package/dist/store/sqlite/busy.js +8 -0
  744. package/dist/store/sqlite/connector-events-group.js +5 -8
  745. package/dist/store/sqlite/connector-writes-group.js +3 -3
  746. package/dist/store/sqlite/entry-writes-group.js +4 -4
  747. package/dist/store/sqlite/error-codec.js +8 -5
  748. package/dist/store/sqlite/executor.d.ts +2 -1
  749. package/dist/store/sqlite/executor.js +12 -5
  750. package/dist/store/sqlite/graph-reads-group.js +1 -1
  751. package/dist/store/sqlite/held-connection.d.ts +9 -0
  752. package/dist/store/sqlite/held-connection.js +41 -0
  753. package/dist/store/sqlite/local.d.ts +3 -3
  754. package/dist/store/sqlite/local.js +1 -0
  755. package/dist/store/sqlite/object-rows.d.ts +1 -1
  756. package/dist/store/sqlite/object-rows.js +6 -3
  757. package/dist/store/sqlite/objects-group.d.ts +1 -1
  758. package/dist/store/sqlite/objects-group.js +5 -3
  759. package/dist/store/sqlite/quarantine-group.js +2 -2
  760. package/dist/store/sqlite/store.d.ts +1 -4
  761. package/dist/store/sqlite/store.js +16 -15
  762. package/dist/store/sqlite/vector-reads-group.js +2 -2
  763. package/dist/store/sqlite/worker-jobs.js +1 -1
  764. package/dist/store/sqlite/worker-ops.d.ts +13 -2
  765. package/dist/store/sqlite/worker-ops.js +13 -2
  766. package/dist/store/sqlite/worker-store.js +5 -2
  767. package/dist/store/summaries.d.ts +11 -63
  768. package/dist/store/summaries.js +37 -148
  769. package/dist/store/summary-dirty.js +1 -1
  770. package/dist/store/tenant-lookup.d.ts +6 -1
  771. package/dist/store/tenant-lookup.js +7 -0
  772. package/dist/store/tenant.d.ts +2 -16
  773. package/dist/store/tenant.js +4 -19
  774. package/dist/store/token-ledger.d.ts +13 -50
  775. package/dist/store/token-ledger.js +19 -85
  776. package/dist/store/usage-reports.js +5 -13
  777. package/dist/store/vector-index.d.ts +46 -0
  778. package/dist/store/vector-index.js +171 -0
  779. package/dist/store/working-memory.d.ts +6 -25
  780. package/dist/store/working-memory.js +18 -52
  781. package/dist/support-bundle.js +9 -8
  782. package/dist/trust/reject-flow.js +3 -5
  783. package/dist/util/agent-homes.d.ts +15 -0
  784. package/dist/util/agent-homes.js +34 -0
  785. package/dist/util/anthropic-messages.d.ts +3 -0
  786. package/dist/util/anthropic-messages.js +35 -6
  787. package/dist/util/atomic-write.d.ts +2 -1
  788. package/dist/util/atomic-write.js +35 -4
  789. package/dist/util/capped-json.d.ts +6 -0
  790. package/dist/util/capped-json.js +46 -0
  791. package/dist/util/chunked.d.ts +3 -0
  792. package/dist/util/chunked.js +10 -0
  793. package/dist/util/crash-handlers.d.ts +8 -1
  794. package/dist/util/crash-handlers.js +52 -10
  795. package/dist/util/ellipsize.d.ts +3 -0
  796. package/dist/util/ellipsize.js +5 -0
  797. package/dist/util/env.d.ts +14 -6
  798. package/dist/util/env.js +15 -7
  799. package/dist/util/format.d.ts +3 -0
  800. package/dist/util/format.js +6 -0
  801. package/dist/util/home-path.d.ts +2 -1
  802. package/dist/util/home-path.js +4 -2
  803. package/dist/util/hook-payload.d.ts +8 -0
  804. package/dist/util/hook-payload.js +37 -0
  805. package/dist/util/http-retry.d.ts +9 -1
  806. package/dist/util/http-retry.js +67 -8
  807. package/dist/util/http-util.d.ts +0 -8
  808. package/dist/util/http-util.js +10 -21
  809. package/dist/util/limits.d.ts +7 -0
  810. package/dist/util/limits.js +14 -0
  811. package/dist/util/log.d.ts +7 -2
  812. package/dist/util/log.js +34 -9
  813. package/dist/util/request-scope.d.ts +5 -2
  814. package/dist/util/request-scope.js +13 -7
  815. package/dist/util/secret-detect.d.ts +5 -30
  816. package/dist/util/secret-detect.js +19 -40
  817. package/dist/util/sqlite-blocked.d.ts +2 -0
  818. package/dist/util/sqlite-blocked.js +5 -0
  819. package/dist/util/stored-json.d.ts +1 -1
  820. package/dist/util/stored-json.js +1 -1
  821. package/dist/util/stream-tee.d.ts +3 -0
  822. package/dist/util/stream-tee.js +35 -0
  823. package/dist/util/time.d.ts +4 -0
  824. package/dist/util/time.js +4 -0
  825. package/dist/util/token-text.d.ts +1 -4
  826. package/dist/util/token-text.js +1 -4
  827. package/dist/util/transcript-tail.d.ts +2 -0
  828. package/dist/util/transcript-tail.js +24 -23
  829. package/dist/util/version.d.ts +5 -20
  830. package/dist/util/version.js +5 -20
  831. package/dist/{store → util}/yaml.d.ts +1 -5
  832. package/dist/{store → util}/yaml.js +2 -6
  833. package/extensions/openclaw-plugin/index.ts +1 -1
  834. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  835. package/extensions/openclaw-plugin/package.json +1 -1
  836. package/openclaw.plugin.json +1 -1
  837. package/package.json +2 -2
  838. package/dist/cli/provenance-coverage.d.ts +0 -18
  839. package/dist/connectors/github/cli-impl.d.ts +0 -25
  840. package/dist/sharing/scope.d.ts +0 -14
  841. package/dist/sharing/shared.d.ts +0 -187
  842. package/dist/sharing/shared.js +0 -563
  843. package/dist/store/embeddings/local.d.ts +0 -15
  844. package/dist/store/embeddings/local.js +0 -192
  845. package/dist/store/embeddings/provider.d.ts +0 -77
  846. package/dist/store/markdown.d.ts +0 -10
  847. package/dist/store/recall-scope.d.ts +0 -138
  848. package/dist/store/recall-scope.js +0 -216
  849. package/dist/store/vector-writes.d.ts +0 -13
  850. package/dist/store/vector-writes.js +0 -89
  851. /package/dist/{store → core}/object-types.d.ts +0 -0
  852. /package/dist/{store → core}/object-types.js +0 -0
  853. /package/dist/{cli → store}/quality-repair.d.ts +0 -0
  854. /package/dist/{capture → util}/compaction-items.d.ts +0 -0
  855. /package/dist/{capture → util}/compaction-items.js +0 -0
@@ -1,14 +1,7 @@
1
- /**
2
- * Consolidation engine ("Sleep") for Hippo.
3
- *
4
- * Steps:
5
- * 1. Decay pass - remove entries below strength threshold
6
- * 2. Merge pass - find episodic entries with high text overlap, create semantic summaries
7
- * 3. Stats tracking
8
- */
9
- import { evalNow } from '../core/ablation.js';
1
+ /** Consolidation engine ("Sleep"): decay pass (drop entries below the strength threshold), merge pass (semantic summaries of overlapping episodics), stats. */
2
+ import { evalNow, strengthAblation } from '../core/ablation.js';
10
3
  import { canAutoDelete } from '../core/memory.js';
11
- import { loadAllEntries } from '../store/entry-reads.js';
4
+ import { loadAllEntriesWithBase } from '../store/entry-reads.js';
12
5
  import { commitInChunks, memoriesBackingObjects } from '../store/delete-and-batch.js';
13
6
  import { appendConsolidationRun, loadSessionDecayContext, incrementSleepCount } from '../store/index-and-stats.js';
14
7
  import { replaceDetectedConflicts } from '../store/conflicts.js';
@@ -18,7 +11,7 @@ import { loadConfig } from '../core/config.js';
18
11
  import { recordAuditEventsRowByRow, reportAuditWriteFailure } from '../store/audit.js';
19
12
  import { lazyTombstoneChecks } from '../store/tombstone-checks.js';
20
13
  import { migrateDefaultHalfLife, LEGACY_TYPED_HALF_LIFE } from './half-life-migration.js';
21
- import { errorMessage, log } from '../util/log.js';
14
+ import { errorFields, errorMessage, log } from '../util/log.js';
22
15
  import { WRITE_BUDGET } from '../util/write-budget.js';
23
16
  import { decayPass } from './decay.js';
24
17
  import { familyUnits, groupFlush } from './flush-units.js';
@@ -40,14 +33,13 @@ export async function consolidate(hippoRoot, options = {}) {
40
33
  syncFtsIndex(hippoRoot, dryRun, result);
41
34
  // Host-wide by design: per-tenant filtering would mean N runs per host and no cross-tenant dedup.
42
35
  // The api.sleep audit row tags this with the admin synthetic actor.
43
- const all = loadAllEntries(hippoRoot);
36
+ const { entries: all, base: snapshot } = loadAllEntriesWithBase(hippoRoot);
44
37
  if (dryRun)
45
38
  for (const e of all)
46
39
  e.half_life_days = halfLife.halfLives.get(e.id) ?? e.half_life_days;
47
40
  const backingObjects = memoriesBackingObjects(hippoRoot);
48
41
  // Retirable: auto-deletable (never pinned, raw or kept for good) and not backing a first-class object.
49
42
  const retirable = (entry) => canAutoDelete(entry) && !backingObjects.has(entry.id);
50
- const snapshot = new Map(structuredClone(all).map((e) => [e.id, e]));
51
43
  const config = loadConfig(hippoRoot);
52
44
  const decayOpts = sessionDecayOptions(hippoRoot, config);
53
45
  const run = {
@@ -76,6 +68,7 @@ function sessionDecayOptions(hippoRoot, config) {
76
68
  decayBasis: config.decayBasis,
77
69
  avgSessionIntervalDays: sessionCtx.avgSessionIntervalDays,
78
70
  sleepCount: sessionCtx.sleepCount,
71
+ ablation: strengthAblation(),
79
72
  };
80
73
  }
81
74
  /** Every pass between decay and the flush; the tombstone-check handle closes whichever of them throws. */
@@ -104,7 +97,8 @@ function migrateHalfLives(hippoRoot, dryRun, result) {
104
97
  result.details.push(` ⏳ ${dryRun ? 'would move' : 'moved'} ${halfLife.rescaled} memories from the ${halfLife.from}-day to the ${halfLife.to}-day half-life`);
105
98
  }
106
99
  if (halfLife.typed > 0) {
107
- result.details.push(` ⏳ ${dryRun ? 'would move' : 'moved'} ${halfLife.typed} memories of decisions, incidents and other objects from the ${LEGACY_TYPED_HALF_LIFE}-day to the ${halfLife.to}-day half-life`);
100
+ result.details.push(` ⏳ ${dryRun ? 'would move' : 'moved'} ${halfLife.typed} memories of decisions, incidents and other objects ` +
101
+ `from the ${LEGACY_TYPED_HALF_LIFE}-day to the ${halfLife.to}-day half-life`);
108
102
  }
109
103
  return halfLife;
110
104
  }
@@ -125,10 +119,8 @@ async function flushPending(run, snapshot, budget) {
125
119
  result.removed = result.removedIds.length;
126
120
  result.dormant = pendingDormant.filter((m) => left.has(m.entry.id)).length;
127
121
  }
128
- // Dormant retention: a dormant memory nobody restored within
129
- // dormant.retentionDays is deleted for good (0 keeps them forever). Runs
130
- // even when dormant.enabled is off, so turning it off still ages out what
131
- // earlier sleeps kept.
122
+ // Dormant retention: a dormant memory nobody restored within dormant.retentionDays is deleted for good (0 keeps forever);
123
+ // runs even when dormant.enabled is off, so turning it off still ages out what earlier sleeps kept.
132
124
  async function expireDormant(run, budget) {
133
125
  const { config, result, dryRun } = run;
134
126
  if (!(config.dormant.retentionDays > 0))
@@ -136,12 +128,11 @@ async function expireDormant(run, budget) {
136
128
  const cutoff = new Date(run.now.getTime() - config.dormant.retentionDays * DAY_MS).toISOString();
137
129
  result.dormantExpired = await expireDormantBefore(run.hippoRoot, cutoff, { dryRun, budget, busyWaitMs: SLEEP_DB_WAIT_MS });
138
130
  if (result.dormantExpired > 0) {
139
- result.details.push(` ⌛ ${dryRun ? 'would expire' : 'expired'} ${result.dormantExpired} dormant memor${result.dormantExpired === 1 ? 'y' : 'ies'} older than ${config.dormant.retentionDays} days`);
131
+ result.details.push(` ⌛ ${dryRun ? 'would expire' : 'expired'} ${result.dormantExpired} dormant memor${result.dormantExpired === 1 ? 'y' : 'ies'} ` +
132
+ `older than ${config.dormant.retentionDays} days`);
140
133
  }
141
134
  }
142
- // -------------------------------------------------------------------------
143
135
  // 4. Log run
144
- // -------------------------------------------------------------------------
145
136
  function logRun(run, decay) {
146
137
  const { hippoRoot, now, result } = run;
147
138
  const detectedConflicts = detectConflicts(run.survivors, now, run.decayOpts, decay.rescuedIds);
@@ -187,7 +178,7 @@ function auditRescues(run, { rescuedEntries, rankById }) {
187
178
  }
188
179
  catch (err) {
189
180
  // An audit store that will not open must never crash the mutation it records.
190
- log.debug(`mv_rescue audit unavailable: ${errorMessage(err)}`);
181
+ log.warn(`mv_rescue audit unavailable: ${errorMessage(err)}`, { errorClass: errorFields(err).errorClass });
191
182
  result.details.push(` ⚠️ memory-value: mv_rescue audit unavailable this cycle ` +
192
183
  `(${rescuedEntries.length} rescue${rescuedEntries.length === 1 ? '' : 's'} not audited)`);
193
184
  }
@@ -1,10 +1,5 @@
1
- /**
2
- * Trace-layer helpers.
3
- *
4
- * A trace is a `MemoryEntry` with `layer === 'trace'` that captures an ordered
5
- * sequence of agent actions and their final outcome. v1 stores steps as
6
- * markdown in `content`; `renderTraceContent` is the canonical formatter.
7
- */
1
+ /** Trace-layer helpers. A trace is a `MemoryEntry` with `layer === 'trace'`: ordered agent actions and their outcome, stored as markdown in `content`
2
+ * (`renderTraceContent` formats it). */
8
3
  export interface TraceStep {
9
4
  action: string;
10
5
  observation: string;
@@ -15,17 +10,7 @@ export interface TraceRecord {
15
10
  steps: TraceStep[];
16
11
  outcome: 'success' | 'failure' | 'partial';
17
12
  }
18
- /**
19
- * Render a trace record as agent-readable markdown.
20
- *
21
- * Format:
22
- * Task: <task>
23
- * Outcome: <outcome>
24
- * Steps:
25
- * 1. <action>
26
- * → <observation> (omitted if observation is empty)
27
- * 2. ...
28
- */
13
+ /** Render a trace record as agent-readable markdown: `Task:`, `Outcome:`, then numbered `Steps:` with each observation on an arrow line (omitted if empty). */
29
14
  export declare function renderTraceContent(rec: TraceRecord): string;
30
15
  /**
31
16
  * Parse a JSON string into an array of TraceStep. Throws on invalid shape.
@@ -1,23 +1,8 @@
1
- /**
2
- * Trace-layer helpers.
3
- *
4
- * A trace is a `MemoryEntry` with `layer === 'trace'` that captures an ordered
5
- * sequence of agent actions and their final outcome. v1 stores steps as
6
- * markdown in `content`; `renderTraceContent` is the canonical formatter.
7
- */
1
+ /** Trace-layer helpers. A trace is a `MemoryEntry` with `layer === 'trace'`: ordered agent actions and their outcome, stored as markdown in `content`
2
+ * (`renderTraceContent` formats it). */
8
3
  import { isJsonString, isJsonObject } from '../util/json.js';
9
4
  import { errorMessage } from '../util/log.js';
10
- /**
11
- * Render a trace record as agent-readable markdown.
12
- *
13
- * Format:
14
- * Task: <task>
15
- * Outcome: <outcome>
16
- * Steps:
17
- * 1. <action>
18
- * → <observation> (omitted if observation is empty)
19
- * 2. ...
20
- */
5
+ /** Render a trace record as agent-readable markdown: `Task:`, `Outcome:`, then numbered `Steps:` with each observation on an arrow line (omitted if empty). */
21
6
  export function renderTraceContent(rec) {
22
7
  const lines = [];
23
8
  lines.push(`Task: ${rec.task}`);
@@ -1,4 +1,4 @@
1
- import { isRecallBoostAblated } from '../core/ablation.js';
1
+ import { isRecallBoostAblated, strengthAblation } from '../core/ablation.js';
2
2
  import { Layer, createMemory, markRetrieved } from '../core/memory.js';
3
3
  import { findPromotableSessions, traceExistsForSession, listSessionEvents } from '../store/sessions.js';
4
4
  import { rejectionDigest } from '../store/rejection.js';
@@ -6,19 +6,13 @@ import { sampleForReplay } from './replay.js';
6
6
  import { renderTraceContent } from './trace.js';
7
7
  import { resolveTenantId } from '../store/tenant.js';
8
8
  import { reportAuditWriteFailure } from '../store/audit.js';
9
- import { commonDerivationScope } from '../store/recall-scope.js';
9
+ import { commonDerivationScope } from '../core/recall-scope.js';
10
10
  import { log } from '../util/log.js';
11
11
  import { REPLAY_COUNT_DEFAULT } from './run.js';
12
12
  import { isJsonString } from '../util/json.js';
13
13
  import { DAY_MS } from '../util/time.js';
14
- // -------------------------------------------------------------------------
15
- // 1.4. Auto-promote complete sessions to traces
16
- // -------------------------------------------------------------------------
17
- //
18
- // For each session within the configured window that has a `session_complete`
19
- // event and no existing trace (idempotency via the source_session_id column),
20
- // render the action sequence as markdown and persist a Layer.Trace memory.
21
- // Traces inherit decay, search, replay, and physics from the base MemoryEntry.
14
+ // 1.4. Auto-promote complete sessions to traces: each session in the window with a `session_complete` event and no trace (idempotent via source_session_id)
15
+ // is rendered as markdown and persisted as a Layer.Trace memory, which inherits decay, search, replay and physics.
22
16
  export function promoteSessionTraces(run) {
23
17
  const { result } = run;
24
18
  if (run.dryRun || run.config.autoTraceCapture === false)
@@ -129,30 +123,20 @@ function traceRejected(run, trace, sessionId) {
129
123
  }
130
124
  return true;
131
125
  }
132
- // -------------------------------------------------------------------------
133
- // 1.5. Replay pass — rehearse high-value survivors
134
- // -------------------------------------------------------------------------
135
- //
136
- // Biologically-inspired counterpart to hippocampal replay during slow-wave
137
- // sleep: sample N memories weighted by outcome + valence + under-rehearsal
138
- // + idle time, then apply the same retrieval-strengthening `markRetrieved`
139
- // applies to real queries. Distinct from decay (removal), physics (motion),
140
- // and merge (compression) — this is the "rehearse the important stuff so
141
- // it doesn't fade" pass.
126
+ // 1.5. Replay pass: rehearse high-value survivors by sampling N memories weighted by outcome, valence, under-rehearsal and idle time,
127
+ // then applying the `markRetrieved` strengthening, so important memories don't fade.
142
128
  export function replayPass(run) {
143
129
  const { survivors, now } = run;
144
130
  const replayCount = run.config.replay?.count ?? REPLAY_COUNT_DEFAULT;
145
- // EVAL-ONLY ablation (see ablation.ts): replay rehearsal IS recall
146
- // strengthening (same markRetrieved dynamics), so the strengthen-off arm
147
- // silences the whole pass - markRetrieved would return unmutated entries
148
- // and persisting them anyway would still refresh updated_at / mirrors.
131
+ // EVAL-ONLY ablation (see ablation.ts): replay rehearsal is recall strengthening, so the strengthen-off arm silences the whole pass;
132
+ // persisting unmutated entries anyway would still refresh updated_at and mirrors.
149
133
  if (!(replayCount > 0 && survivors.length > 0 && !isRecallBoostAblated()))
150
134
  return;
151
135
  const seed = Math.floor(now.getTime() / 1000) & 0xffffffff;
152
136
  const picked = sampleForReplay(survivors, replayCount, now, seed);
153
137
  if (picked.length === 0)
154
138
  return;
155
- const rehearsed = markRetrieved(picked, now);
139
+ const rehearsed = markRetrieved(picked, now, { ablation: strengthAblation() });
156
140
  const rehearsedById = new Map(rehearsed.map((e) => [e.id, e]));
157
141
  // Update survivors in place so downstream passes see rehearsed state.
158
142
  for (let i = 0; i < survivors.length; i++) {
@@ -1,89 +1,16 @@
1
- /**
2
- * EVAL-ONLY lifecycle ablation switches.
3
- *
4
- * These env flags exist for controlled experiments on hippo's memory-lifecycle
5
- * mechanisms (the "lifecycle, ablated" paper protocol): each switch neutralizes
6
- * exactly ONE mechanism so its causal contribution can be measured in isolation.
7
- *
8
- * They are NOT a production configuration surface:
9
- * - no config-file equivalents, deliberately (config implies support);
10
- * - undocumented in user-facing help;
11
- * - semantics may change with the experiment design.
12
- * Production behavior with all flags unset is byte-identical to before this
13
- * module existed.
14
- *
15
- * Flags (set to '1' or 'true'):
16
- * HIPPO_ABLATE_DECAY time-decay term := 1 in calculateStrength.
17
- * HIPPO_ABLATE_RECALL_BOOST full recall-strengthening ablation:
18
- * - markRetrieved returns entries UNMUTATED (no
19
- * clock reset / count / half-life increment);
20
- * ids stay available so `hippo outcome`
21
- * attribution keeps working in this arm;
22
- * - persisting callers (CLI recall, api context,
23
- * MCP recall/context, consolidation replay)
24
- * skip their writeEntry loops (identical-row
25
- * writes still refresh updated_at / mirrors /
26
- * DAG dirty flags);
27
- * - the retrieval-count READ boost := 1;
28
- * - decay anchors at `created` instead of
29
- * `last_retrieved` (prior-run clock resets
30
- * cannot leak in);
31
- * - physics: computeMass ignores the count, and
32
- * physicsSearch recomputes loaded masses LIVE
33
- * under ablated strength rules (persisted
34
- * masses embed recall history in their frozen
35
- * strength component);
36
- * - replay rehearsal is silenced entirely (it IS
37
- * strengthening; use config replay.count=0 to
38
- * separate replay in unflagged arms).
39
- * CAVEAT: half_life increments persisted by
40
- * prior unflagged runs are NOT reconstructed
41
- * (consolidation legitimately writes half_life
42
- * too) - ablation arms run on FRESH stores, as
43
- * the experiment protocol mandates.
44
- * HIPPO_ABLATE_OUTCOME both outcome channels := neutral
45
- * (= _SLOW + _FAST together). The slow side also
46
- * silences replay's outcome reward bias
47
- * (replayPriority). NOT gated: the opt-in
48
- * `recall --value-aware` rerank (an explicit CLI
49
- * flag that also reads outcome counts) - ablated
50
- * arms must not pass it.
51
- * HIPPO_ABLATE_OUTCOME_SLOW rewardFactor := 1 (no half-life modulation).
52
- * HIPPO_ABLATE_OUTCOME_FAST hybridSearch outcomeBoost := 1.
53
- * HIPPO_ABLATE_RECENCY search recency factor := 1 (the creation-age
54
- * multiplier 0.8 + 0.2*exp(-age/30d)); decay,
55
- * strengthening and outcomes stay live.
56
- * HIPPO_EVAL_RECENCY_DAYS a positive number replaces the 30-day scale of
57
- * that recency factor (tuning grids only). Unset,
58
- * zero, negative or junk values keep 30.
59
- * HIPPO_FAKE_NOW timestamp injected as the default `now` for
60
- * strength computation and retrieval stamping
61
- * (simulated-time protocols). MUST be the exact
62
- * Date.toISOString() form
63
- * (YYYY-MM-DDTHH:mm:ss.sssZ); validated by
64
- * round-trip, so junk, locale dates, non-UTC
65
- * offsets, and rolled-over dates (2026-02-31)
66
- * all fall back to the real clock.
67
- *
68
- * Formula notes (load-bearing for the experiments) - ablating decay has TWO
69
- * intrinsic co-effects, because the unified formula routes other mechanisms
70
- * THROUGH the decay term. Both are real properties of the architecture, not
71
- * implementation accidents; experiment analysis must attribute accordingly
72
- * (the decay-off arm is "decay + its dependents off", see prereg amendment A1):
73
- * 1. Read-side strengthening flattens: raw = retrievalBoost * emotionalMult
74
- * >= 1, and the [0,1] clamp caps it at 1.0 - the recall boost can only
75
- * offset decay, never exceed baseline. (Write-side still runs.)
76
- * 2. Outcome-slow goes inert: rewardFactor only acts by scaling the
77
- * effective half-life INSIDE the decay exponent; with decay := 1 there
78
- * is no exponent for it to modulate. Outcome-slow is decay-rate
79
- * modulation BY DESIGN, so "no decay" necessarily means "no slow
80
- * channel" (the fast channel in hybridSearch is unaffected).
81
- *
82
- * Env caching follows the house pattern (see getLossAversionRatio in
83
- * memory.ts): read once per process, with a test-only reset helper. Tests
84
- * that mutate these env vars MUST call _resetAblationCacheForTests() in BOTH
85
- * beforeEach AND afterEach.
86
- */
1
+ /** EVAL-ONLY ablation switches (HIPPO_ABLATE_*, HIPPO_EVAL_RECENCY_DAYS, HIPPO_FAKE_NOW): each cuts ONE mechanism (outcome also replayPriority bias).
2
+ * Not a production surface. Env is read once per process; tests that mutate these vars MUST call _resetAblationCacheForTests() in beforeEach AND afterEach. See
3
+ * docs/ARCHITECTURE.md#srccoreablationts. */
4
+ /** The three switches strength scoring honours, resolved by the entry layer and handed to core in DecayOptions. */
5
+ export interface StrengthAblation {
6
+ readonly decay: boolean;
7
+ readonly recallBoost: boolean;
8
+ readonly outcomeSlow: boolean;
9
+ }
10
+ /** Production scoring: nothing ablated. Core falls back to this, so it never reads the environment. */
11
+ export declare const NO_STRENGTH_ABLATION: StrengthAblation;
12
+ /** The frozen strength switches for this process; entry-layer callers pass them as `DecayOptions.ablation`. */
13
+ export declare function strengthAblation(): StrengthAblation;
87
14
  export declare function isDecayAblated(): boolean;
88
15
  export declare function isRecallBoostAblated(): boolean;
89
16
  export declare function isOutcomeSlowAblated(): boolean;
@@ -91,11 +18,7 @@ export declare function isOutcomeFastAblated(): boolean;
91
18
  export declare function isRecencyAblated(): boolean;
92
19
  /** HIPPO_EVAL_RECENCY_DAYS when it is a positive number, else null (callers keep their default). */
93
20
  export declare function evalRecencyScaleDays(): number | null;
94
- /**
95
- * The default `now` for lifecycle computations: HIPPO_FAKE_NOW when set and
96
- * parseable, else the real clock. Callers that already take an explicit `now`
97
- * parameter are unaffected (explicit always wins).
98
- */
21
+ /** The default `now` for lifecycle computations: HIPPO_FAKE_NOW when set and parseable, else the real clock; an explicit `now` parameter always wins. */
99
22
  export declare function evalNow(): Date;
100
23
  /** Test-only. See module JSDoc: call in BOTH beforeEach AND afterEach. */
101
24
  export declare function _resetAblationCacheForTests(): void;
@@ -1,91 +1,11 @@
1
- /**
2
- * EVAL-ONLY lifecycle ablation switches.
3
- *
4
- * These env flags exist for controlled experiments on hippo's memory-lifecycle
5
- * mechanisms (the "lifecycle, ablated" paper protocol): each switch neutralizes
6
- * exactly ONE mechanism so its causal contribution can be measured in isolation.
7
- *
8
- * They are NOT a production configuration surface:
9
- * - no config-file equivalents, deliberately (config implies support);
10
- * - undocumented in user-facing help;
11
- * - semantics may change with the experiment design.
12
- * Production behavior with all flags unset is byte-identical to before this
13
- * module existed.
14
- *
15
- * Flags (set to '1' or 'true'):
16
- * HIPPO_ABLATE_DECAY time-decay term := 1 in calculateStrength.
17
- * HIPPO_ABLATE_RECALL_BOOST full recall-strengthening ablation:
18
- * - markRetrieved returns entries UNMUTATED (no
19
- * clock reset / count / half-life increment);
20
- * ids stay available so `hippo outcome`
21
- * attribution keeps working in this arm;
22
- * - persisting callers (CLI recall, api context,
23
- * MCP recall/context, consolidation replay)
24
- * skip their writeEntry loops (identical-row
25
- * writes still refresh updated_at / mirrors /
26
- * DAG dirty flags);
27
- * - the retrieval-count READ boost := 1;
28
- * - decay anchors at `created` instead of
29
- * `last_retrieved` (prior-run clock resets
30
- * cannot leak in);
31
- * - physics: computeMass ignores the count, and
32
- * physicsSearch recomputes loaded masses LIVE
33
- * under ablated strength rules (persisted
34
- * masses embed recall history in their frozen
35
- * strength component);
36
- * - replay rehearsal is silenced entirely (it IS
37
- * strengthening; use config replay.count=0 to
38
- * separate replay in unflagged arms).
39
- * CAVEAT: half_life increments persisted by
40
- * prior unflagged runs are NOT reconstructed
41
- * (consolidation legitimately writes half_life
42
- * too) - ablation arms run on FRESH stores, as
43
- * the experiment protocol mandates.
44
- * HIPPO_ABLATE_OUTCOME both outcome channels := neutral
45
- * (= _SLOW + _FAST together). The slow side also
46
- * silences replay's outcome reward bias
47
- * (replayPriority). NOT gated: the opt-in
48
- * `recall --value-aware` rerank (an explicit CLI
49
- * flag that also reads outcome counts) - ablated
50
- * arms must not pass it.
51
- * HIPPO_ABLATE_OUTCOME_SLOW rewardFactor := 1 (no half-life modulation).
52
- * HIPPO_ABLATE_OUTCOME_FAST hybridSearch outcomeBoost := 1.
53
- * HIPPO_ABLATE_RECENCY search recency factor := 1 (the creation-age
54
- * multiplier 0.8 + 0.2*exp(-age/30d)); decay,
55
- * strengthening and outcomes stay live.
56
- * HIPPO_EVAL_RECENCY_DAYS a positive number replaces the 30-day scale of
57
- * that recency factor (tuning grids only). Unset,
58
- * zero, negative or junk values keep 30.
59
- * HIPPO_FAKE_NOW timestamp injected as the default `now` for
60
- * strength computation and retrieval stamping
61
- * (simulated-time protocols). MUST be the exact
62
- * Date.toISOString() form
63
- * (YYYY-MM-DDTHH:mm:ss.sssZ); validated by
64
- * round-trip, so junk, locale dates, non-UTC
65
- * offsets, and rolled-over dates (2026-02-31)
66
- * all fall back to the real clock.
67
- *
68
- * Formula notes (load-bearing for the experiments) - ablating decay has TWO
69
- * intrinsic co-effects, because the unified formula routes other mechanisms
70
- * THROUGH the decay term. Both are real properties of the architecture, not
71
- * implementation accidents; experiment analysis must attribute accordingly
72
- * (the decay-off arm is "decay + its dependents off", see prereg amendment A1):
73
- * 1. Read-side strengthening flattens: raw = retrievalBoost * emotionalMult
74
- * >= 1, and the [0,1] clamp caps it at 1.0 - the recall boost can only
75
- * offset decay, never exceed baseline. (Write-side still runs.)
76
- * 2. Outcome-slow goes inert: rewardFactor only acts by scaling the
77
- * effective half-life INSIDE the decay exponent; with decay := 1 there
78
- * is no exponent for it to modulate. Outcome-slow is decay-rate
79
- * modulation BY DESIGN, so "no decay" necessarily means "no slow
80
- * channel" (the fast channel in hybridSearch is unaffected).
81
- *
82
- * Env caching follows the house pattern (see getLossAversionRatio in
83
- * memory.ts): read once per process, with a test-only reset helper. Tests
84
- * that mutate these env vars MUST call _resetAblationCacheForTests() in BOTH
85
- * beforeEach AND afterEach.
86
- */
1
+ /** EVAL-ONLY ablation switches (HIPPO_ABLATE_*, HIPPO_EVAL_RECENCY_DAYS, HIPPO_FAKE_NOW): each cuts ONE mechanism (outcome also replayPriority bias).
2
+ * Not a production surface. Env is read once per process; tests that mutate these vars MUST call _resetAblationCacheForTests() in beforeEach AND afterEach. See
3
+ * docs/ARCHITECTURE.md#srccoreablationts. */
87
4
  import { envAblateDecay, envAblateOutcome, envAblateOutcomeFast, envAblateOutcomeSlow, envAblateRecallBoost, envAblateRecency, envEvalRecencyDays, envFakeNowMs, } from '../util/env.js';
5
+ /** Production scoring: nothing ablated. Core falls back to this, so it never reads the environment. */
6
+ export const NO_STRENGTH_ABLATION = Object.freeze({ decay: false, recallBoost: false, outcomeSlow: false });
88
7
  let _cache;
8
+ let _strengthCache;
89
9
  function readFlags() {
90
10
  if (_cache !== undefined)
91
11
  return _cache;
@@ -101,6 +21,14 @@ function readFlags() {
101
21
  };
102
22
  return _cache;
103
23
  }
24
+ /** The frozen strength switches for this process; entry-layer callers pass them as `DecayOptions.ablation`. */
25
+ export function strengthAblation() {
26
+ if (_strengthCache === undefined) {
27
+ const f = readFlags();
28
+ _strengthCache = Object.freeze({ decay: f.decay, recallBoost: f.recallBoost, outcomeSlow: f.outcomeSlow });
29
+ }
30
+ return _strengthCache;
31
+ }
104
32
  export function isDecayAblated() {
105
33
  return readFlags().decay;
106
34
  }
@@ -120,11 +48,7 @@ export function isRecencyAblated() {
120
48
  export function evalRecencyScaleDays() {
121
49
  return readFlags().recencyDays;
122
50
  }
123
- /**
124
- * The default `now` for lifecycle computations: HIPPO_FAKE_NOW when set and
125
- * parseable, else the real clock. Callers that already take an explicit `now`
126
- * parameter are unaffected (explicit always wins).
127
- */
51
+ /** The default `now` for lifecycle computations: HIPPO_FAKE_NOW when set and parseable, else the real clock; an explicit `now` parameter always wins. */
128
52
  export function evalNow() {
129
53
  const ms = readFlags().fakeNowMs;
130
54
  return ms === null ? new Date() : new Date(ms);
@@ -132,5 +56,6 @@ export function evalNow() {
132
56
  /** Test-only. See module JSDoc: call in BOTH beforeEach AND afterEach. */
133
57
  export function _resetAblationCacheForTests() {
134
58
  _cache = undefined;
59
+ _strengthCache = undefined;
135
60
  }
136
61
  //# sourceMappingURL=ablation.js.map
@@ -0,0 +1,7 @@
1
+ /** Detect the current operational scope from env (HIPPO_SCOPE > GSTACK_SKILL > OPENCLAW_SKILL); returns the name without prefix, or null.
2
+ * Pure env reads, no I/O, so it is safe on hot paths such as the UserPromptSubmit hook. */
3
+ export declare function detectScope(): string | null;
4
+ /** Compute scope match between a memory's scope tags and the active scope.
5
+ * Returns: 1 if matching scope, -1 if mismatching scope, 0 if neutral (no scope on either side). */
6
+ export declare function scopeMatch(memoryTags: string[], activeScope: string | null): -1 | 0 | 1;
7
+ //# sourceMappingURL=active-scope.d.ts.map
@@ -1,11 +1,6 @@
1
1
  import { envGstackSkill, envOpenclawSkill, envScope } from '../util/env.js';
2
- /**
3
- * Detect the current operational scope from environment signals.
4
- * Returns a scope name string (no prefix), or null if no scope detected.
5
- * Priority: HIPPO_SCOPE > GSTACK_SKILL > OPENCLAW_SKILL.
6
- *
7
- * Pure env var reads: no I/O, safe to call from hot paths (e.g. UserPromptSubmit hook).
8
- */
2
+ /** Detect the current operational scope from env (HIPPO_SCOPE > GSTACK_SKILL > OPENCLAW_SKILL); returns the name without prefix, or null.
3
+ * Pure env reads, no I/O, so it is safe on hot paths such as the UserPromptSubmit hook. */
9
4
  export function detectScope() {
10
5
  const explicit = envScope();
11
6
  if (explicit && explicit.trim())
@@ -18,10 +13,8 @@ export function detectScope() {
18
13
  return openclawSkill.trim();
19
14
  return null;
20
15
  }
21
- /**
22
- * Compute scope match between a memory's scope tags and the active scope.
23
- * Returns: 1 if matching scope, -1 if mismatching scope, 0 if neutral (no scope on either side).
24
- */
16
+ /** Compute scope match between a memory's scope tags and the active scope.
17
+ * Returns: 1 if matching scope, -1 if mismatching scope, 0 if neutral (no scope on either side). */
25
18
  export function scopeMatch(memoryTags, activeScope) {
26
19
  const scopeTags = memoryTags.filter(t => t.startsWith('scope:'));
27
20
  if (scopeTags.length === 0)
@@ -33,4 +26,4 @@ export function scopeMatch(memoryTags, activeScope) {
33
26
  return 1; // match
34
27
  return -1; // mismatch
35
28
  }
36
- //# sourceMappingURL=scope.js.map
29
+ //# sourceMappingURL=active-scope.js.map
@@ -1,11 +1,4 @@
1
- /**
2
- * Ambient state vector — a compact representation of the agent's memory
3
- * landscape, computed in O(N) from the current corpus.
4
- *
5
- * Inspired by the biological ambient neural state: a continuous background
6
- * representation that tells the agent "where it is" in knowledge-space
7
- * without retrieving specific memories.
8
- */
1
+ /** Ambient state vector: a compact O(N) summary of the corpus telling the agent "where it is" in knowledge-space without retrieving specific memories. */
9
2
  import type { MemoryEntry } from './memory.js';
10
3
  export interface AmbientState {
11
4
  tagEntropy: number;
@@ -20,6 +13,10 @@ export interface AmbientState {
20
13
  dagDepth: number;
21
14
  totalMemories: number;
22
15
  }
16
+ /** A memory is fresh when created within this window. */
17
+ export declare const AMBIENT_FRESH_WINDOW_MS: number;
18
+ /** A memory counts as high schema fit strictly above this. */
19
+ export declare const HIGH_SCHEMA_FIT_ABOVE = 0.7;
23
20
  /** Row counts and sums an AmbientState is derived from; two stores' tallies add with addAmbientTallies. */
24
21
  export interface AmbientTallies {
25
22
  total: number;