hippo-memory 1.68.0 → 1.70.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (864) hide show
  1. package/README.md +6 -3
  2. package/dist/agent-memories/apply.d.ts +3 -3
  3. package/dist/agent-memories/apply.js +16 -31
  4. package/dist/agent-memories/claude-code.d.ts +1 -3
  5. package/dist/agent-memories/claude-code.js +11 -7
  6. package/dist/agent-memories/copilot.d.ts +3 -1
  7. package/dist/agent-memories/copilot.js +5 -4
  8. package/dist/agent-memories/files.js +3 -2
  9. package/dist/agent-memories/gemini.js +6 -5
  10. package/dist/agent-memories/keys.js +3 -2
  11. package/dist/agent-memories/legacy.d.ts +2 -2
  12. package/dist/agent-memories/legacy.js +2 -2
  13. package/dist/agent-memories/report.d.ts +1 -1
  14. package/dist/agent-memories/report.js +1 -1
  15. package/dist/agent-memories/source.d.ts +1 -1
  16. package/dist/agent-memories/source.js +6 -5
  17. package/dist/agent-memories/sync.d.ts +1 -1
  18. package/dist/agent-memories/sync.js +24 -33
  19. package/dist/agent-memories/types.d.ts +1 -1
  20. package/dist/api/assemble.d.ts +2 -2
  21. package/dist/api/assemble.js +42 -32
  22. package/dist/api/audit.d.ts +4 -7
  23. package/dist/api/audit.js +6 -20
  24. package/dist/api/auth.d.ts +5 -18
  25. package/dist/api/auth.js +44 -194
  26. package/dist/api/auto-sleep.d.ts +13 -0
  27. package/dist/api/auto-sleep.js +32 -0
  28. package/dist/{availability.d.ts → api/availability.d.ts} +2 -2
  29. package/dist/{availability.js → api/availability.js} +12 -29
  30. package/dist/{context-auto.js → api/context-auto.js} +2 -1
  31. package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
  32. package/dist/{context-render.js → api/context-render.js} +7 -6
  33. package/dist/api/context-select.d.ts +14 -4
  34. package/dist/api/context-select.js +50 -60
  35. package/dist/api/context-types.d.ts +5 -5
  36. package/dist/api/context.d.ts +2 -4
  37. package/dist/api/context.js +113 -85
  38. package/dist/api/dormant.d.ts +3 -3
  39. package/dist/api/dormant.js +38 -107
  40. package/dist/api/drill-down.d.ts +2 -2
  41. package/dist/api/drill-down.js +37 -65
  42. package/dist/api/forget.d.ts +4 -13
  43. package/dist/api/forget.js +13 -35
  44. package/dist/api/goals.d.ts +1 -1
  45. package/dist/api/goals.js +2 -2
  46. package/dist/api/index.d.ts +26 -0
  47. package/dist/api/index.js +29 -0
  48. package/dist/api/instruction-detect.js +74 -0
  49. package/dist/api/learn.js +63 -55
  50. package/dist/api/ledger-db.d.ts +20 -0
  51. package/dist/api/ledger-db.js +79 -0
  52. package/dist/api/on-store.d.ts +16 -0
  53. package/dist/api/on-store.js +36 -0
  54. package/dist/api/outcome.d.ts +9 -46
  55. package/dist/api/outcome.js +15 -57
  56. package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
  57. package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
  58. package/dist/api/promote.d.ts +7 -18
  59. package/dist/api/promote.js +30 -152
  60. package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +7 -7
  61. package/dist/{prompt-hook.js → api/prompt-hook.js} +34 -53
  62. package/dist/api/quarantine.d.ts +5 -5
  63. package/dist/api/quarantine.js +30 -106
  64. package/dist/api/recall-core.d.ts +4 -0
  65. package/dist/api/recall-core.js +112 -0
  66. package/dist/{recall-history.js → api/recall-history.js} +30 -25
  67. package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +5 -5
  68. package/dist/{recall-pipeline.js → api/recall-pipeline.js} +47 -42
  69. package/dist/api/recall-record.d.ts +10 -13
  70. package/dist/api/recall-record.js +10 -30
  71. package/dist/api/recall-request.d.ts +2 -2
  72. package/dist/api/recall-request.js +3 -3
  73. package/dist/api/recall-types.d.ts +41 -16
  74. package/dist/api/recall.d.ts +1 -1
  75. package/dist/api/recall.js +39 -37
  76. package/dist/api/remember.d.ts +12 -13
  77. package/dist/api/remember.js +38 -27
  78. package/dist/api/session-owners.d.ts +4 -0
  79. package/dist/api/session-owners.js +17 -0
  80. package/dist/api/sleep-run.d.ts +7 -7
  81. package/dist/api/sleep-run.js +63 -75
  82. package/dist/api/sleep.d.ts +1 -1
  83. package/dist/api/tokens.d.ts +2 -2
  84. package/dist/api/tokens.js +9 -21
  85. package/dist/api/types.d.ts +2 -2
  86. package/dist/api/types.js +1 -1
  87. package/dist/capture/caller-session.d.ts +2 -2
  88. package/dist/capture/caller-session.js +8 -8
  89. package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
  90. package/dist/{capture-error.js → capture/capture-error.js} +7 -7
  91. package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
  92. package/dist/capture/command.d.ts +1 -1
  93. package/dist/capture/command.js +54 -41
  94. package/dist/capture/compact-resume-caller.d.ts +1 -1
  95. package/dist/capture/compact-resume-caller.js +7 -7
  96. package/dist/capture/compact.d.ts +4 -1
  97. package/dist/capture/compact.js +59 -22
  98. package/dist/capture/compaction-items-caller.d.ts +1 -1
  99. package/dist/capture/compaction-items-caller.js +7 -5
  100. package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
  101. package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
  102. package/dist/{compaction-record.js → capture/compaction-record.js} +48 -94
  103. package/dist/{compaction-spool.js → capture/compaction-spool.js} +17 -13
  104. package/dist/capture/copilot-transcript.d.ts +3 -0
  105. package/dist/capture/copilot-transcript.js +9 -2
  106. package/dist/capture/extract.js +2 -2
  107. package/dist/capture/failure-caller.d.ts +2 -2
  108. package/dist/capture/failure-caller.js +6 -6
  109. package/dist/capture/failure-reading.d.ts +2 -5
  110. package/dist/capture/failure-reading.js +11 -12
  111. package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
  112. package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
  113. package/dist/capture/pre-compact-caller.d.ts +1 -1
  114. package/dist/capture/pre-compact-caller.js +2 -2
  115. package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +1 -5
  116. package/dist/{session-digest.js → capture/session-digest.js} +17 -23
  117. package/dist/capture/session-end-caller.d.ts +2 -2
  118. package/dist/capture/session-end-caller.js +1 -1
  119. package/dist/capture/session-texts.d.ts +1 -1
  120. package/dist/capture/session-texts.js +5 -5
  121. package/dist/capture/session-worker.d.ts +13 -0
  122. package/dist/capture/session-worker.js +196 -0
  123. package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
  124. package/dist/capture/transcript.js +68 -74
  125. package/dist/capture/working-state.d.ts +0 -3
  126. package/dist/capture/working-state.js +7 -7
  127. package/dist/{audit-prune.d.ts → cli/audit-prune.d.ts} +1 -2
  128. package/dist/{audit-prune.js → cli/audit-prune.js} +5 -39
  129. package/dist/cli/audit.d.ts +2 -2
  130. package/dist/cli/audit.js +77 -72
  131. package/dist/cli/auth.d.ts +2 -1
  132. package/dist/cli/auth.js +18 -20
  133. package/dist/cli/briefs.d.ts +4 -3
  134. package/dist/cli/briefs.js +59 -181
  135. package/dist/cli/card.d.ts +2 -1
  136. package/dist/cli/card.js +25 -23
  137. package/dist/{client.d.ts → cli/client.d.ts} +1 -1
  138. package/dist/{client.js → cli/client.js} +1 -1
  139. package/dist/cli/compact-resume-payload.d.ts +8 -0
  140. package/dist/cli/compact-resume-payload.js +39 -0
  141. package/dist/cli/context.d.ts +2 -13
  142. package/dist/cli/context.js +41 -71
  143. package/dist/cli/continuity.d.ts +6 -5
  144. package/dist/cli/continuity.js +109 -99
  145. package/dist/{correction-latency.d.ts → cli/correction-latency.d.ts} +1 -1
  146. package/dist/cli/curate.d.ts +9 -9
  147. package/dist/cli/curate.js +177 -149
  148. package/dist/cli/dag.d.ts +4 -4
  149. package/dist/cli/dag.js +46 -34
  150. package/dist/cli/decisions.d.ts +4 -3
  151. package/dist/cli/decisions.js +108 -218
  152. package/dist/cli/eval.d.ts +1 -3
  153. package/dist/cli/eval.js +43 -31
  154. package/dist/cli/explain.d.ts +1 -1
  155. package/dist/cli/explain.js +35 -19
  156. package/dist/cli/flag-values.d.ts +25 -0
  157. package/dist/cli/flag-values.js +103 -0
  158. package/dist/cli/flags.d.ts +303 -0
  159. package/dist/cli/flags.js +169 -0
  160. package/dist/cli/goals.d.ts +2 -1
  161. package/dist/cli/goals.js +39 -34
  162. package/dist/cli/hook-runtime.d.ts +49 -0
  163. package/dist/cli/hook-runtime.js +155 -0
  164. package/dist/cli/init.d.ts +2 -1
  165. package/dist/cli/init.js +151 -118
  166. package/dist/cli/install-steps.d.ts +7 -0
  167. package/dist/cli/install-steps.js +110 -0
  168. package/dist/cli/last-sleep.d.ts +2 -1
  169. package/dist/cli/last-sleep.js +9 -7
  170. package/dist/cli/maintenance.d.ts +5 -4
  171. package/dist/cli/maintenance.js +31 -27
  172. package/dist/cli/object-verbs.d.ts +40 -0
  173. package/dist/cli/object-verbs.js +65 -0
  174. package/dist/{owner-validation.d.ts → cli/owner-validation.d.ts} +0 -1
  175. package/dist/{owner-validation.js → cli/owner-validation.js} +2 -2
  176. package/dist/cli/playbooks.d.ts +4 -3
  177. package/dist/cli/playbooks.js +77 -280
  178. package/dist/cli/print.d.ts +18 -0
  179. package/dist/cli/print.js +85 -0
  180. package/dist/cli/projects.d.ts +2 -3
  181. package/dist/cli/projects.js +56 -49
  182. package/dist/{provenance-coverage.d.ts → cli/provenance-coverage.d.ts} +1 -1
  183. package/dist/cli/quality-repair-once.js +4 -4
  184. package/dist/{quality-repair.js → cli/quality-repair.js} +23 -37
  185. package/dist/cli/recall.d.ts +2 -4
  186. package/dist/cli/recall.js +101 -150
  187. package/dist/{refine-llm.d.ts → cli/refine-llm.d.ts} +1 -1
  188. package/dist/{refine-llm.js → cli/refine-llm.js} +70 -82
  189. package/dist/cli/remember.d.ts +1 -3
  190. package/dist/cli/remember.js +124 -103
  191. package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +3 -1
  192. package/dist/{scheduler.js → cli/scheduler.js} +13 -7
  193. package/dist/cli/serve.d.ts +1 -1
  194. package/dist/cli/serve.js +34 -4
  195. package/dist/cli/session-hooks.d.ts +4 -4
  196. package/dist/cli/session-hooks.js +265 -191
  197. package/dist/cli/setup.d.ts +2 -1
  198. package/dist/cli/setup.js +111 -45
  199. package/dist/cli/shared.d.ts +5 -95
  200. package/dist/cli/shared.js +18 -369
  201. package/dist/cli/slack.d.ts +2 -1
  202. package/dist/cli/slack.js +31 -55
  203. package/dist/cli/sleep-render.d.ts +4 -0
  204. package/dist/cli/sleep-render.js +61 -0
  205. package/dist/cli/sleep.d.ts +2 -8
  206. package/dist/cli/sleep.js +20 -76
  207. package/dist/cli/status.d.ts +3 -3
  208. package/dist/cli/status.js +39 -41
  209. package/dist/{stdin.js → cli/stdin.js} +6 -6
  210. package/dist/cli/transfer.d.ts +4 -4
  211. package/dist/cli/transfer.js +68 -42
  212. package/dist/cli/usage.js +8 -3
  213. package/dist/cli.d.ts +289 -5
  214. package/dist/cli.js +184 -117
  215. package/dist/connectors/dlq.d.ts +44 -0
  216. package/dist/connectors/dlq.js +30 -0
  217. package/dist/connectors/github/backfill.d.ts +1 -1
  218. package/dist/connectors/github/backfill.js +29 -66
  219. package/dist/connectors/github/cli-impl.js +59 -74
  220. package/dist/connectors/github/deletion.d.ts +5 -6
  221. package/dist/connectors/github/deletion.js +18 -52
  222. package/dist/connectors/github/dlq.d.ts +7 -61
  223. package/dist/connectors/github/dlq.js +19 -119
  224. package/dist/connectors/github/ingest.d.ts +2 -31
  225. package/dist/connectors/github/ingest.js +20 -82
  226. package/dist/connectors/github/octokit-client.d.ts +1 -1
  227. package/dist/connectors/github/octokit-client.js +2 -1
  228. package/dist/connectors/github/tenant-routing.d.ts +2 -2
  229. package/dist/connectors/github/tenant-routing.js +10 -36
  230. package/dist/connectors/github/transform.d.ts +1 -1
  231. package/dist/connectors/github/types.d.ts +1 -1
  232. package/dist/connectors/github/types.js +15 -18
  233. package/dist/connectors/github/webhook.d.ts +3 -2
  234. package/dist/connectors/github/webhook.js +84 -87
  235. package/dist/connectors/slack/backfill.d.ts +1 -1
  236. package/dist/connectors/slack/backfill.js +5 -29
  237. package/dist/connectors/slack/deletion.d.ts +4 -7
  238. package/dist/connectors/slack/deletion.js +20 -48
  239. package/dist/connectors/slack/dlq.d.ts +7 -49
  240. package/dist/connectors/slack/dlq.js +25 -118
  241. package/dist/connectors/slack/ingest.d.ts +5 -18
  242. package/dist/connectors/slack/ingest.js +27 -90
  243. package/dist/connectors/slack/signature.js +2 -1
  244. package/dist/connectors/slack/tenant-routing.d.ts +4 -1
  245. package/dist/connectors/slack/tenant-routing.js +13 -14
  246. package/dist/connectors/slack/transform.d.ts +1 -1
  247. package/dist/connectors/slack/types.d.ts +1 -1
  248. package/dist/connectors/slack/types.js +3 -12
  249. package/dist/connectors/slack/web-client.js +2 -2
  250. package/dist/connectors/slack/webhook.d.ts +3 -2
  251. package/dist/connectors/slack/webhook.js +75 -82
  252. package/dist/connectors/slack/workspaces.d.ts +4 -17
  253. package/dist/connectors/slack/workspaces.js +4 -34
  254. package/dist/consolidate/conflicts.d.ts +1 -1
  255. package/dist/consolidate/conflicts.js +4 -4
  256. package/dist/{dag.d.ts → consolidate/dag.d.ts} +1 -1
  257. package/dist/{dag.js → consolidate/dag.js} +60 -81
  258. package/dist/consolidate/decay.d.ts +2 -2
  259. package/dist/consolidate/decay.js +28 -22
  260. package/dist/{dedupe.js → consolidate/dedupe.js} +11 -19
  261. package/dist/consolidate/flush-units.d.ts +2 -2
  262. package/dist/{half-life-migration.d.ts → consolidate/half-life-migration.d.ts} +3 -9
  263. package/dist/consolidate/half-life-migration.js +106 -0
  264. package/dist/consolidate/llm-passes.js +8 -8
  265. package/dist/{memory-value.d.ts → consolidate/memory-value.d.ts} +7 -2
  266. package/dist/{memory-value.js → consolidate/memory-value.js} +9 -7
  267. package/dist/consolidate/merge.js +57 -54
  268. package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
  269. package/dist/{merged-row.js → consolidate/merged-row.js} +2 -2
  270. package/dist/consolidate/physics-pass.js +46 -46
  271. package/dist/{replay.d.ts → consolidate/replay.d.ts} +1 -1
  272. package/dist/{replay.js → consolidate/replay.js} +2 -2
  273. package/dist/consolidate/run.d.ts +7 -13
  274. package/dist/consolidate/run.js +6 -37
  275. package/dist/consolidate/sleep.d.ts +1 -1
  276. package/dist/consolidate/sleep.js +64 -134
  277. package/dist/{trace.js → consolidate/trace.js} +4 -6
  278. package/dist/consolidate/traces.js +34 -29
  279. package/dist/{ablation.js → core/ablation.js} +1 -1
  280. package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
  281. package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
  282. package/dist/{ambient.js → core/ambient.js} +12 -10
  283. package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
  284. package/dist/core/capture-contract.js +149 -0
  285. package/dist/{compare.d.ts → core/compare.d.ts} +2 -0
  286. package/dist/{compare.js → core/compare.js} +10 -3
  287. package/dist/{config.d.ts → core/config.d.ts} +6 -6
  288. package/dist/{config.js → core/config.js} +99 -72
  289. package/dist/core/handoff.js +87 -0
  290. package/dist/{memory-quality.js → core/memory-quality.js} +1 -1
  291. package/dist/{memory.d.ts → core/memory.d.ts} +19 -5
  292. package/dist/{memory.js → core/memory.js} +117 -82
  293. package/dist/{physics.d.ts → core/physics.d.ts} +1 -1
  294. package/dist/{physics.js → core/physics.js} +2 -1
  295. package/dist/{project-identity.d.ts → core/project-identity.d.ts} +0 -5
  296. package/dist/{project-identity.js → core/project-identity.js} +5 -17
  297. package/dist/{project-remote.js → core/project-remote.js} +4 -4
  298. package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +5 -0
  299. package/dist/{prompt-recall.js → core/prompt-recall.js} +14 -1
  300. package/dist/{salience.js → core/salience.js} +35 -20
  301. package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
  302. package/dist/{search/types.js → core/search-types.js} +1 -1
  303. package/dist/core/session-digest-row.d.ts +5 -0
  304. package/dist/core/session-digest-row.js +6 -0
  305. package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
  306. package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +5 -5
  307. package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
  308. package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
  309. package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +9 -9
  310. package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +101 -104
  311. package/dist/{dashboard.js → dashboard/dashboard.js} +124 -53
  312. package/dist/db/backup.js +1 -1
  313. package/dist/db/busy.d.ts +18 -1
  314. package/dist/db/busy.js +74 -9
  315. package/dist/db/connect.d.ts +10 -2
  316. package/dist/db/connect.js +43 -10
  317. package/dist/db/index.d.ts +9 -0
  318. package/dist/db/index.js +8 -0
  319. package/dist/db/meta.d.ts +4 -0
  320. package/dist/db/meta.js +11 -1
  321. package/dist/db/migrate.d.ts +8 -1
  322. package/dist/db/migrate.js +25 -30
  323. package/dist/db/migrations/v08.js +1 -1
  324. package/dist/db/migrations/v14.js +39 -35
  325. package/dist/db/migrations/v16.js +29 -26
  326. package/dist/db/migrations/v18.js +6 -5
  327. package/dist/db/migrations/v20.js +4 -2
  328. package/dist/db/migrations/v22.js +39 -36
  329. package/dist/db/migrations/v24.js +27 -22
  330. package/dist/db/migrations/v29.js +37 -32
  331. package/dist/db/migrations/v31.js +36 -31
  332. package/dist/db/migrations/v35.js +1 -1
  333. package/dist/db/migrations/v39.js +1 -1
  334. package/dist/db/migrations/v40.js +15 -14
  335. package/dist/db/migrations/v43.js +7 -6
  336. package/dist/db/migrations/v44.js +1 -1
  337. package/dist/db/migrations/v45.js +1 -1
  338. package/dist/db/migrations/v46.js +1 -1
  339. package/dist/db/migrations/v47.js +1 -1
  340. package/dist/db/migrations/v48.js +1 -1
  341. package/dist/db/migrations/v49.js +1 -1
  342. package/dist/db/migrations/v50.js +8 -7
  343. package/dist/db/migrations/v52.js +1 -1
  344. package/dist/db/open.d.ts +9 -1
  345. package/dist/db/open.js +21 -4
  346. package/dist/{physics-state.d.ts → db/physics-state.d.ts} +3 -3
  347. package/dist/{physics-state.js → db/physics-state.js} +9 -16
  348. package/dist/{raw-archive-mirror-cleanup.d.ts → db/raw-archive-mirror-cleanup.d.ts} +5 -5
  349. package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +11 -6
  350. package/dist/db/request-stores.d.ts +15 -2
  351. package/dist/db/request-stores.js +37 -15
  352. package/dist/db/tables.d.ts +2 -0
  353. package/dist/db/tables.js +6 -0
  354. package/dist/{vector-store.d.ts → db/vector-store.d.ts} +4 -2
  355. package/dist/{vector-store.js → db/vector-store.js} +76 -51
  356. package/dist/db/wal-checkpointer.d.ts +11 -0
  357. package/dist/db/wal-checkpointer.js +92 -0
  358. package/dist/doctor.js +105 -136
  359. package/dist/entry/json-hooks.d.ts +1 -1
  360. package/dist/entry/json-hooks.js +1 -1
  361. package/dist/entry/project-identity.d.ts +1 -1
  362. package/dist/entry/project-identity.js +1 -1
  363. package/dist/entry/session-text.d.ts +3 -3
  364. package/dist/entry/session-text.js +3 -3
  365. package/dist/{eval-stats.js → eval/eval-stats.js} +12 -9
  366. package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +1 -1
  367. package/dist/{eval-suite.js → eval/eval-suite.js} +25 -23
  368. package/dist/{eval.d.ts → eval/eval.d.ts} +1 -1
  369. package/dist/{eval.js → eval/eval.js} +29 -22
  370. package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -3
  371. package/dist/{judgment.js → eval/judgment.js} +4 -9
  372. package/dist/extensions/openclaw-plugin/index.js +1 -2
  373. package/dist/graph/delta.d.ts +3 -2
  374. package/dist/graph/delta.js +9 -23
  375. package/dist/{graph-extract.d.ts → graph/extract.d.ts} +6 -6
  376. package/dist/{graph-extract.js → graph/extract.js} +37 -52
  377. package/dist/{graph-recall.d.ts → graph/recall.d.ts} +2 -2
  378. package/dist/{graph-recall.js → graph/recall.js} +55 -36
  379. package/dist/{graph-stream.d.ts → graph/stream.d.ts} +2 -2
  380. package/dist/{graph-stream.js → graph/stream.js} +9 -7
  381. package/dist/{graph-view.d.ts → graph/view.d.ts} +6 -3
  382. package/dist/{graph-view.js → graph/view.js} +127 -167
  383. package/dist/graph/write.d.ts +4 -76
  384. package/dist/graph/write.js +13 -397
  385. package/dist/hooks/codex-session.js +1 -1
  386. package/dist/hooks/codex-wrapper.js +14 -15
  387. package/dist/hooks/copilot.d.ts +48 -13
  388. package/dist/hooks/copilot.js +124 -39
  389. package/dist/{cli → hooks}/hook-blocks.js +1 -1
  390. package/dist/hooks/json-hooks.d.ts +3 -1
  391. package/dist/hooks/json-hooks.js +40 -122
  392. package/dist/hooks/opencode.js +35 -27
  393. package/dist/hooks/shared.d.ts +7 -5
  394. package/dist/hooks/shared.js +19 -8
  395. package/dist/importers/core.d.ts +2 -6
  396. package/dist/importers/core.js +41 -39
  397. package/dist/importers/markdown-parse.d.ts +1 -10
  398. package/dist/importers/markdown-parse.js +2 -19
  399. package/dist/importers/markdown.js +2 -1
  400. package/dist/importers/sources.js +50 -46
  401. package/dist/importers/vault.js +71 -92
  402. package/dist/index.d.ts +22 -22
  403. package/dist/index.js +21 -21
  404. package/dist/{autolearn.d.ts → learn/autolearn.d.ts} +2 -2
  405. package/dist/{autolearn.js → learn/autolearn.js} +13 -11
  406. package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
  407. package/dist/{churn-git.js → learn/churn-git.js} +6 -4
  408. package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
  409. package/dist/learn/extract.js +125 -0
  410. package/dist/{forward-claim-detector.d.ts → learn/forward-claim-detector.d.ts} +1 -1
  411. package/dist/{forward-claim-detector.js → learn/forward-claim-detector.js} +1 -1
  412. package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +4 -0
  413. package/dist/{invalidation.js → learn/invalidation.js} +83 -99
  414. package/dist/mcp/admin-tools.d.ts +1 -1
  415. package/dist/mcp/admin-tools.js +37 -60
  416. package/dist/mcp/format.d.ts +5 -5
  417. package/dist/mcp/format.js +7 -6
  418. package/dist/mcp/framing.d.ts +6 -0
  419. package/dist/mcp/framing.js +11 -3
  420. package/dist/mcp/memory-tools.d.ts +2 -2
  421. package/dist/mcp/memory-tools.js +12 -31
  422. package/dist/mcp/protocol.d.ts +6 -10
  423. package/dist/mcp/protocol.js +8 -14
  424. package/dist/mcp/recall-tools.d.ts +2 -2
  425. package/dist/mcp/recall-tools.js +68 -50
  426. package/dist/mcp/request.js +65 -63
  427. package/dist/mcp/server.js +1 -1
  428. package/dist/mcp/session-state.d.ts +1 -2
  429. package/dist/mcp/session-state.js +2 -2
  430. package/dist/mcp/shared-gate.js +1 -1
  431. package/dist/mcp/stdio.js +69 -31
  432. package/dist/mcp/tool-args.js +2 -1
  433. package/dist/mcp/tools.js +2 -2
  434. package/dist/{customer-notes.d.ts → objects/customer-notes.d.ts} +7 -24
  435. package/dist/objects/customer-notes.js +112 -0
  436. package/dist/{decisions.d.ts → objects/decisions.d.ts} +13 -28
  437. package/dist/objects/decisions.js +101 -0
  438. package/dist/objects/descriptor.d.ts +52 -0
  439. package/dist/objects/descriptor.js +4 -0
  440. package/dist/objects/fields.d.ts +15 -0
  441. package/dist/objects/fields.js +21 -0
  442. package/dist/{incidents.d.ts → objects/incidents.d.ts} +17 -44
  443. package/dist/objects/incidents.js +130 -0
  444. package/dist/objects/lifecycle.d.ts +27 -0
  445. package/dist/objects/lifecycle.js +96 -0
  446. package/dist/{policies.d.ts → objects/policies.d.ts} +14 -27
  447. package/dist/objects/policies.js +189 -0
  448. package/dist/{processes.d.ts → objects/processes.d.ts} +14 -34
  449. package/dist/objects/processes.js +146 -0
  450. package/dist/{project-briefs.d.ts → objects/project-briefs.d.ts} +19 -40
  451. package/dist/objects/project-briefs.js +255 -0
  452. package/dist/{skills.d.ts → objects/skills.d.ts} +11 -26
  453. package/dist/objects/skills.js +156 -0
  454. package/dist/postinstall.js +4 -2
  455. package/dist/predictions/planning-fallacy.d.ts +4 -76
  456. package/dist/predictions/planning-fallacy.js +4 -129
  457. package/dist/rerankers/clef.d.ts +2 -6
  458. package/dist/rerankers/clef.js +27 -47
  459. package/dist/rerankers/cross-encoder.d.ts +0 -7
  460. package/dist/rerankers/cross-encoder.js +15 -23
  461. package/dist/rerankers/index.js +8 -7
  462. package/dist/rerankers/jev.d.ts +1 -4
  463. package/dist/rerankers/jev.js +30 -49
  464. package/dist/rerankers/llm.d.ts +2 -4
  465. package/dist/rerankers/llm.js +33 -50
  466. package/dist/rerankers/outage-warning.d.ts +7 -0
  467. package/dist/rerankers/outage-warning.js +31 -0
  468. package/dist/rerankers/remote.d.ts +3 -0
  469. package/dist/rerankers/remote.js +23 -0
  470. package/dist/rerankers/types.d.ts +1 -1
  471. package/dist/search/as-of.d.ts +1 -1
  472. package/dist/search/bm25-search.d.ts +2 -2
  473. package/dist/search/bm25-search.js +7 -7
  474. package/dist/search/bm25.d.ts +1 -1
  475. package/dist/search/bm25.js +1 -1
  476. package/dist/search/boosts.d.ts +5 -1
  477. package/dist/search/boosts.js +34 -13
  478. package/dist/search/breakdown.d.ts +2 -2
  479. package/dist/search/breakdown.js +2 -1
  480. package/dist/search/explain.d.ts +1 -1
  481. package/dist/search/explain.js +3 -2
  482. package/dist/search/finalize.d.ts +2 -2
  483. package/dist/search/finalize.js +4 -3
  484. package/dist/search/fusion.d.ts +1 -1
  485. package/dist/search/fusion.js +3 -3
  486. package/dist/search/hybrid-score.d.ts +2 -2
  487. package/dist/search/hybrid-score.js +1 -1
  488. package/dist/search/hybrid.d.ts +4 -4
  489. package/dist/search/hybrid.js +11 -8
  490. package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
  491. package/dist/{multihop.js → search/multihop.js} +7 -5
  492. package/dist/{path-context.js → search/path-context.js} +3 -1
  493. package/dist/search/physics-search.d.ts +4 -4
  494. package/dist/search/physics-search.js +15 -15
  495. package/dist/search/rerank.d.ts +3 -3
  496. package/dist/search/rerank.js +4 -3
  497. package/dist/search/temporal.d.ts +1 -1
  498. package/dist/search/temporal.js +5 -2
  499. package/dist/search/vector.d.ts +3 -3
  500. package/dist/search/vector.js +17 -11
  501. package/dist/server/auth.d.ts +1 -1
  502. package/dist/server/auth.js +26 -18
  503. package/dist/server/boot.d.ts +24 -0
  504. package/dist/server/boot.js +465 -0
  505. package/dist/server/client-ip.d.ts +5 -1
  506. package/dist/server/client-ip.js +18 -6
  507. package/dist/server/cursor.d.ts +1 -1
  508. package/dist/server/cursor.js +2 -3
  509. package/dist/server/deadline.d.ts +13 -0
  510. package/dist/server/deadline.js +45 -0
  511. package/dist/server/key-check-bounds.d.ts +8 -0
  512. package/dist/server/key-check-bounds.js +46 -0
  513. package/dist/server/lifecycle.js +1 -1
  514. package/dist/server/mcp-http.d.ts +1 -4
  515. package/dist/server/mcp-http.js +34 -24
  516. package/dist/server/ready.d.ts +7 -0
  517. package/dist/server/ready.js +38 -0
  518. package/dist/server/request.d.ts +10 -4
  519. package/dist/server/request.js +63 -12
  520. package/dist/server/route-table.d.ts +15 -0
  521. package/dist/server/route-table.js +209 -0
  522. package/dist/server/routes/admin.js +13 -8
  523. package/dist/server/routes/customer-notes.d.ts +5 -5
  524. package/dist/server/routes/customer-notes.js +32 -97
  525. package/dist/server/routes/decisions.d.ts +5 -5
  526. package/dist/server/routes/decisions.js +42 -105
  527. package/dist/server/routes/incidents.d.ts +5 -5
  528. package/dist/server/routes/incidents.js +42 -95
  529. package/dist/server/routes/memories.js +21 -20
  530. package/dist/server/routes/object-routes.d.ts +40 -0
  531. package/dist/server/routes/object-routes.js +80 -0
  532. package/dist/server/routes/policies.d.ts +6 -6
  533. package/dist/server/routes/policies.js +40 -124
  534. package/dist/server/routes/predictions.js +29 -45
  535. package/dist/server/routes/processes.d.ts +5 -5
  536. package/dist/server/routes/processes.js +38 -118
  537. package/dist/server/routes/project-briefs.d.ts +6 -6
  538. package/dist/server/routes/project-briefs.js +38 -110
  539. package/dist/server/routes/recall.js +14 -12
  540. package/dist/server/routes/skills.d.ts +6 -6
  541. package/dist/server/routes/skills.js +37 -125
  542. package/dist/{server-detect.js → server/server-detect.js} +3 -2
  543. package/dist/server/sleep-child.d.ts +2 -0
  544. package/dist/server/sleep-child.js +19 -0
  545. package/dist/server/sleep-offload.d.ts +20 -0
  546. package/dist/server/sleep-offload.js +70 -0
  547. package/dist/server/tls.d.ts +6 -0
  548. package/dist/server/tls.js +24 -0
  549. package/dist/server/types.d.ts +27 -8
  550. package/dist/server/validation.d.ts +3 -4
  551. package/dist/server/validation.js +6 -11
  552. package/dist/server.d.ts +41 -50
  553. package/dist/server.js +26 -560
  554. package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +1 -1
  555. package/dist/{project-merge.js → sharing/project-merge.js} +26 -45
  556. package/dist/{scope.js → sharing/scope.js} +1 -1
  557. package/dist/{shared.d.ts → sharing/shared.d.ts} +10 -9
  558. package/dist/{shared.js → sharing/shared.js} +100 -77
  559. package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
  560. package/dist/{ambient-store.js → store/ambient.js} +10 -10
  561. package/dist/store/audit-event.d.ts +12 -6
  562. package/dist/store/audit-event.js +6 -5
  563. package/dist/{audit.d.ts → store/audit.d.ts} +27 -3
  564. package/dist/{audit.js → store/audit.js} +91 -6
  565. package/dist/{auth.d.ts → store/auth.d.ts} +15 -32
  566. package/dist/{auth.js → store/auth.js} +100 -92
  567. package/dist/store/candidates.d.ts +23 -12
  568. package/dist/store/candidates.js +87 -35
  569. package/dist/{card-detail.d.ts → store/card-detail.d.ts} +3 -3
  570. package/dist/{card-detail.js → store/card-detail.js} +1 -1
  571. package/dist/{store-cards.d.ts → store/cards.d.ts} +14 -9
  572. package/dist/{store-cards.js → store/cards.js} +85 -146
  573. package/dist/store/compactions.d.ts +78 -0
  574. package/dist/store/compactions.js +93 -0
  575. package/dist/store/conflicts.d.ts +22 -5
  576. package/dist/store/conflicts.js +160 -109
  577. package/dist/store/connectors/github.d.ts +84 -0
  578. package/dist/store/connectors/github.js +180 -0
  579. package/dist/store/connectors/slack.d.ts +69 -0
  580. package/dist/store/connectors/slack.js +177 -0
  581. package/dist/store/dashboard-reads.d.ts +27 -0
  582. package/dist/store/dashboard-reads.js +92 -0
  583. package/dist/store/delete-and-batch.d.ts +20 -24
  584. package/dist/store/delete-and-batch.js +64 -40
  585. package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +12 -5
  586. package/dist/{delivery-recorder.js → store/delivery-recorder.js} +42 -30
  587. package/dist/store/descendant-page.d.ts +12 -0
  588. package/dist/store/descendant-page.js +99 -0
  589. package/dist/store/diagnostics.d.ts +47 -0
  590. package/dist/store/diagnostics.js +51 -0
  591. package/dist/store/doctor-reads.d.ts +16 -0
  592. package/dist/store/doctor-reads.js +19 -0
  593. package/dist/{dormant.d.ts → store/dormant.d.ts} +46 -12
  594. package/dist/{dormant.js → store/dormant.js} +151 -6
  595. package/dist/{embeddings.d.ts → store/embeddings/index.d.ts} +10 -6
  596. package/dist/{embeddings.js → store/embeddings/index.js} +60 -44
  597. package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
  598. package/dist/{local-embedding.js → store/embeddings/local.js} +68 -57
  599. package/dist/{embedding-provider.d.ts → store/embeddings/provider.d.ts} +2 -2
  600. package/dist/{embedding-provider.js → store/embeddings/provider.js} +47 -32
  601. package/dist/store/entry-reads.d.ts +46 -7
  602. package/dist/store/entry-reads.js +120 -21
  603. package/dist/store/entry-row.d.ts +8 -2
  604. package/dist/store/entry-row.js +28 -8
  605. package/dist/store/entry-writes.d.ts +33 -4
  606. package/dist/store/entry-writes.js +108 -26
  607. package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
  608. package/dist/{failure-log.js → store/failure-log.js} +9 -2
  609. package/dist/{goals.d.ts → store/goals.d.ts} +6 -46
  610. package/dist/{goals.js → store/goals.js} +45 -94
  611. package/dist/store/graph-queue.d.ts +29 -0
  612. package/dist/store/graph-queue.js +101 -0
  613. package/dist/{graph/read.d.ts → store/graph-reads.d.ts} +26 -34
  614. package/dist/{graph/read.js → store/graph-reads.js} +63 -115
  615. package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +68 -8
  616. package/dist/{graph/rows.js → store/graph-rows.js} +14 -3
  617. package/dist/store/graph-view-rows.d.ts +12 -0
  618. package/dist/store/graph-view-rows.js +67 -0
  619. package/dist/store/graph-writes.d.ts +58 -0
  620. package/dist/store/graph-writes.js +256 -0
  621. package/dist/store/half-life.d.ts +34 -0
  622. package/dist/store/half-life.js +77 -0
  623. package/dist/store/handoffs.d.ts +6 -3
  624. package/dist/store/handoffs.js +70 -31
  625. package/dist/store/index-and-stats.d.ts +8 -1
  626. package/dist/store/index-and-stats.js +51 -48
  627. package/dist/store/index.d.ts +4 -0
  628. package/dist/store/index.js +3 -0
  629. package/dist/store/key-audit.d.ts +2 -2
  630. package/dist/store/key-audit.js +4 -4
  631. package/dist/store/key-writes.d.ts +12 -5
  632. package/dist/store/key-writes.js +30 -4
  633. package/dist/store/ledger-turn.d.ts +17 -0
  634. package/dist/store/ledger-turn.js +27 -0
  635. package/dist/store/markdown.d.ts +1 -1
  636. package/dist/store/markdown.js +4 -3
  637. package/dist/store/mirrors.d.ts +5 -7
  638. package/dist/store/mirrors.js +39 -25
  639. package/dist/store/object-types.d.ts +189 -0
  640. package/dist/store/object-types.js +4 -0
  641. package/dist/store/open.d.ts +8 -4
  642. package/dist/store/open.js +34 -23
  643. package/dist/store/planning-fallacy-evidence.d.ts +42 -0
  644. package/dist/store/planning-fallacy-evidence.js +81 -0
  645. package/dist/store/port.d.ts +646 -0
  646. package/dist/store/port.js +17 -0
  647. package/dist/{predictions/store.d.ts → store/predictions.d.ts} +15 -2
  648. package/dist/{predictions/store.js → store/predictions.js} +52 -67
  649. package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
  650. package/dist/{quarantine.js → store/quarantine.js} +64 -22
  651. package/dist/{raw-archive.d.ts → store/raw-archive.d.ts} +5 -3
  652. package/dist/{raw-archive.js → store/raw-archive.js} +11 -5
  653. package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +4 -7
  654. package/dist/{recall-scope.js → store/recall-scope.js} +8 -9
  655. package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -14
  656. package/dist/{recall-trace.js → store/recall-trace.js} +38 -43
  657. package/dist/store/rejected-values.d.ts +55 -0
  658. package/dist/store/rejected-values.js +162 -0
  659. package/dist/{rejection.d.ts → store/rejection.d.ts} +2 -2
  660. package/dist/{rejection.js → store/rejection.js} +3 -2
  661. package/dist/store/rows.d.ts +2 -3
  662. package/dist/store/rows.js +18 -11
  663. package/dist/store/search-rows.d.ts +15 -4
  664. package/dist/store/search-rows.js +43 -36
  665. package/dist/store/sessions.d.ts +18 -2
  666. package/dist/store/sessions.js +83 -46
  667. package/dist/store/sqlite/commit-watch.d.ts +4 -0
  668. package/dist/store/sqlite/commit-watch.js +29 -0
  669. package/dist/store/sqlite/connector-events-group.d.ts +5 -0
  670. package/dist/store/sqlite/connector-events-group.js +50 -0
  671. package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
  672. package/dist/store/sqlite/connector-writes-group.js +65 -0
  673. package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
  674. package/dist/store/sqlite/dag-reads-group.js +45 -0
  675. package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
  676. package/dist/store/sqlite/entry-writes-group.js +170 -0
  677. package/dist/store/sqlite/error-codec.d.ts +17 -0
  678. package/dist/store/sqlite/error-codec.js +59 -0
  679. package/dist/store/sqlite/executor-counts.d.ts +10 -0
  680. package/dist/store/sqlite/executor-counts.js +11 -0
  681. package/dist/store/sqlite/executor.d.ts +28 -0
  682. package/dist/store/sqlite/executor.js +286 -0
  683. package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
  684. package/dist/store/sqlite/graph-reads-group.js +18 -0
  685. package/dist/store/sqlite/local.d.ts +21 -0
  686. package/dist/store/sqlite/local.js +38 -0
  687. package/dist/store/sqlite/object-rows.d.ts +102 -0
  688. package/dist/store/sqlite/object-rows.js +218 -0
  689. package/dist/store/sqlite/objects-group.d.ts +20 -0
  690. package/dist/store/sqlite/objects-group.js +314 -0
  691. package/dist/store/sqlite/predictions-group.d.ts +5 -0
  692. package/dist/store/sqlite/predictions-group.js +28 -0
  693. package/dist/store/sqlite/quarantine-group.d.ts +5 -0
  694. package/dist/store/sqlite/quarantine-group.js +38 -0
  695. package/dist/store/sqlite/store.d.ts +26 -0
  696. package/dist/store/sqlite/store.js +295 -0
  697. package/dist/store/sqlite/vector-pack.d.ts +18 -0
  698. package/dist/store/sqlite/vector-pack.js +46 -0
  699. package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
  700. package/dist/store/sqlite/vector-reads-group.js +23 -0
  701. package/dist/store/sqlite/worker-entry.d.ts +2 -0
  702. package/dist/store/sqlite/worker-entry.js +8 -0
  703. package/dist/store/sqlite/worker-jobs.d.ts +5 -0
  704. package/dist/store/sqlite/worker-jobs.js +116 -0
  705. package/dist/store/sqlite/worker-ops.d.ts +124 -0
  706. package/dist/store/sqlite/worker-ops.js +82 -0
  707. package/dist/store/sqlite/worker-store.d.ts +8 -0
  708. package/dist/store/sqlite/worker-store.js +76 -0
  709. package/dist/store/summaries.d.ts +2 -11
  710. package/dist/store/summaries.js +17 -44
  711. package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
  712. package/dist/store/tenant-lookup.d.ts +1 -1
  713. package/dist/{tenant.d.ts → store/tenant.d.ts} +2 -2
  714. package/dist/{tenant.js → store/tenant.js} +1 -1
  715. package/dist/store/token-ledger-rows.d.ts +61 -0
  716. package/dist/store/token-ledger-rows.js +68 -0
  717. package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +2 -9
  718. package/dist/{token-ledger.js → store/token-ledger.js} +31 -78
  719. package/dist/store/tombstone-checks.d.ts +12 -0
  720. package/dist/store/tombstone-checks.js +31 -0
  721. package/dist/store/usage-reports.d.ts +7 -0
  722. package/dist/store/usage-reports.js +26 -0
  723. package/dist/store/vector-writes.d.ts +10 -3
  724. package/dist/store/vector-writes.js +35 -5
  725. package/dist/{working-memory.d.ts → store/working-memory.d.ts} +5 -1
  726. package/dist/{working-memory.js → store/working-memory.js} +39 -41
  727. package/dist/support-bundle.d.ts +1 -1
  728. package/dist/support-bundle.js +13 -33
  729. package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
  730. package/dist/{gated-write.js → trust/gated-write.js} +6 -6
  731. package/dist/trust/quarantine.d.ts +4 -0
  732. package/dist/trust/quarantine.js +8 -0
  733. package/dist/trust/reject-flow.d.ts +23 -0
  734. package/dist/trust/reject-flow.js +67 -0
  735. package/dist/util/anthropic-messages.d.ts +31 -0
  736. package/dist/util/anthropic-messages.js +46 -0
  737. package/dist/util/atomic-write.d.ts +3 -0
  738. package/dist/util/atomic-write.js +107 -0
  739. package/dist/util/crash-handlers.d.ts +5 -0
  740. package/dist/util/crash-handlers.js +30 -0
  741. package/dist/{env.d.ts → util/env.d.ts} +17 -2
  742. package/dist/{env.js → util/env.js} +22 -2
  743. package/dist/util/home-path.js +67 -0
  744. package/dist/{http-retry.d.ts → util/http-retry.d.ts} +6 -2
  745. package/dist/{http-retry.js → util/http-retry.js} +38 -7
  746. package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
  747. package/dist/{http-util.js → util/http-util.js} +31 -11
  748. package/dist/util/json.d.ts +17 -0
  749. package/dist/util/json.js +25 -0
  750. package/dist/{log.d.ts → util/log.d.ts} +5 -2
  751. package/dist/{log.js → util/log.js} +12 -3
  752. package/dist/util/real-path.d.ts +3 -0
  753. package/dist/util/real-path.js +15 -0
  754. package/dist/util/request-scope.d.ts +27 -0
  755. package/dist/util/request-scope.js +47 -0
  756. package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
  757. package/dist/{secret-detect.js → util/secret-detect.js} +5 -4
  758. package/dist/util/stored-json.d.ts +9 -0
  759. package/dist/util/stored-json.js +8 -0
  760. package/dist/util/time.d.ts +2 -0
  761. package/dist/util/time.js +3 -0
  762. package/dist/util/token-text.d.ts +18 -0
  763. package/dist/util/token-text.js +23 -0
  764. package/dist/{version.d.ts → util/version.d.ts} +1 -1
  765. package/dist/{version.js → util/version.js} +1 -1
  766. package/extensions/openclaw-plugin/index.ts +1 -5
  767. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  768. package/extensions/openclaw-plugin/package.json +1 -1
  769. package/openclaw.plugin.json +1 -1
  770. package/package.json +2 -2
  771. package/dist/api.d.ts +0 -26
  772. package/dist/api.js +0 -29
  773. package/dist/capture-contract.js +0 -49
  774. package/dist/connectors/github/idempotency.d.ts +0 -19
  775. package/dist/connectors/github/idempotency.js +0 -27
  776. package/dist/connectors/slack/idempotency.d.ts +0 -17
  777. package/dist/connectors/slack/idempotency.js +0 -31
  778. package/dist/customer-notes.js +0 -336
  779. package/dist/db.d.ts +0 -9
  780. package/dist/db.js +0 -8
  781. package/dist/decisions.js +0 -326
  782. package/dist/extract.js +0 -133
  783. package/dist/graph/rows.d.ts +0 -45
  784. package/dist/graph/types.js +0 -11
  785. package/dist/half-life-migration.js +0 -182
  786. package/dist/handoff.js +0 -68
  787. package/dist/home-path.js +0 -24
  788. package/dist/incidents.js +0 -349
  789. package/dist/instruction-detect.js +0 -27
  790. package/dist/json.d.ts +0 -7
  791. package/dist/json.js +0 -11
  792. package/dist/ledger-db.d.ts +0 -10
  793. package/dist/ledger-db.js +0 -42
  794. package/dist/policies.js +0 -434
  795. package/dist/processes.js +0 -371
  796. package/dist/project-briefs.js +0 -523
  797. package/dist/reject-flow.d.ts +0 -69
  798. package/dist/reject-flow.js +0 -260
  799. package/dist/session-owners.d.ts +0 -7
  800. package/dist/session-owners.js +0 -54
  801. package/dist/skills.js +0 -367
  802. package/dist/store-port.d.ts +0 -191
  803. package/dist/store-port.js +0 -166
  804. /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
  805. /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
  806. /package/dist/{recall-history.d.ts → api/recall-history.d.ts} +0 -0
  807. /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
  808. /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
  809. /package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +0 -0
  810. /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
  811. /package/dist/{correction-latency.js → cli/correction-latency.js} +0 -0
  812. /package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +0 -0
  813. /package/dist/{quality-repair.d.ts → cli/quality-repair.d.ts} +0 -0
  814. /package/dist/{stdin.d.ts → cli/stdin.d.ts} +0 -0
  815. /package/dist/{dedupe.d.ts → consolidate/dedupe.d.ts} +0 -0
  816. /package/dist/{memory-value-weights.d.ts → consolidate/memory-value-weights.d.ts} +0 -0
  817. /package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +0 -0
  818. /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
  819. /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
  820. /package/dist/{trace.d.ts → consolidate/trace.d.ts} +0 -0
  821. /package/dist/{ablation.d.ts → core/ablation.d.ts} +0 -0
  822. /package/dist/{ambient.d.ts → core/ambient.d.ts} +0 -0
  823. /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
  824. /package/dist/{api-errors.js → core/api-errors.js} +0 -0
  825. /package/dist/{card.d.ts → core/card.d.ts} +0 -0
  826. /package/dist/{card.js → core/card.js} +0 -0
  827. /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
  828. /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
  829. /package/dist/{physics-config.d.ts → core/physics-config.d.ts} +0 -0
  830. /package/dist/{physics-config.js → core/physics-config.js} +0 -0
  831. /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
  832. /package/dist/{salience.d.ts → core/salience.d.ts} +0 -0
  833. /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
  834. /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
  835. /package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +0 -0
  836. /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
  837. /package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +0 -0
  838. /package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +0 -0
  839. /package/dist/{cli → hooks}/hook-blocks.d.ts +0 -0
  840. /package/dist/{path-context.d.ts → search/path-context.d.ts} +0 -0
  841. /package/dist/{rrf.d.ts → search/rrf.d.ts} +0 -0
  842. /package/dist/{rrf.js → search/rrf.js} +0 -0
  843. /package/dist/{rate-limit.d.ts → server/rate-limit.d.ts} +0 -0
  844. /package/dist/{rate-limit.js → server/rate-limit.js} +0 -0
  845. /package/dist/{server-detect.d.ts → server/server-detect.d.ts} +0 -0
  846. /package/dist/{scope.d.ts → sharing/scope.d.ts} +0 -0
  847. /package/dist/{summary-dirty.js → store/summary-dirty.js} +0 -0
  848. /package/dist/{yaml.d.ts → store/yaml.d.ts} +0 -0
  849. /package/dist/{yaml.js → store/yaml.js} +0 -0
  850. /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
  851. /package/dist/{escape.js → util/escape.js} +0 -0
  852. /package/dist/{home-path.d.ts → util/home-path.d.ts} +0 -0
  853. /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
  854. /package/dist/{keyset.js → util/keyset.js} +0 -0
  855. /package/dist/{same-text.js → util/same-text.js} +0 -0
  856. /package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +0 -0
  857. /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
  858. /package/dist/{db → util}/sqlite-blocked.js +0 -0
  859. /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
  860. /package/dist/{tokenize.js → util/tokenize.js} +0 -0
  861. /package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +0 -0
  862. /package/dist/{transcript-tail.js → util/transcript-tail.js} +0 -0
  863. /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
  864. /package/dist/{write-budget.js → util/write-budget.js} +0 -0
@@ -1,22 +1,22 @@
1
1
  // Ranking core shared by `hippo recall` and `hippo explain`: load, search, expand, re-rank and filter, with no
2
2
  // writes and no direct output. Callers own flag parsing, printing, budget fitting and persistence.
3
- import { evalNow } from './ablation.js';
4
- import { oneCopyPerMemory } from './api.js';
5
- import { compareEntryIdentity } from './compare.js';
6
- import { closeHippoDb, openHippoDb } from './db.js';
7
- import { isEmbeddingAvailable } from './local-embedding.js';
8
- import { computeGoalStackBoost } from './goals.js';
9
- import { graphExpandRecall } from './graph-recall.js';
10
- import { DEFAULT_GRAPH_STREAM_WEIGHT } from './graph-stream.js';
11
- import { Layer } from './memory.js';
12
- import { multihopSearch } from './multihop.js';
13
- import { passesCliRecallScopeFilter } from './recall-scope.js';
14
- import { currentEntries } from './search/as-of.js';
15
- import { hybridSearch } from './search/hybrid.js';
16
- import { physicsSearch } from './search/physics-search.js';
17
- import { searchBothHybrid } from './shared.js';
18
- import { loadRecallSearchEntries, recallScopeFilter } from './store/search-rows.js';
19
- import { textOverlap, tokenize as tokenizeQuery } from './tokenize.js';
3
+ import { evalNow } from '../core/ablation.js';
4
+ import { oneCopyPerMemory } from './context-select.js';
5
+ import { compareEntryIdentity, compareScoresDesc } from '../core/compare.js';
6
+ import { isEmbeddingAvailable } from '../store/embeddings/local.js';
7
+ import { activeGoalsWithPolicies, boostByGoals } from '../store/goals.js';
8
+ import { graphExpandRecall } from '../graph/recall.js';
9
+ import { DEFAULT_GRAPH_STREAM_WEIGHT } from '../graph/stream.js';
10
+ import { Layer } from '../core/memory.js';
11
+ import { multihopSearch } from '../search/multihop.js';
12
+ import { passesCliRecallScopeFilter } from '../store/recall-scope.js';
13
+ import { currentEntries } from '../search/as-of.js';
14
+ import { STRENGTH_RANK_FLOOR, STRENGTH_RANK_SPAN } from '../search/boosts.js';
15
+ import { hybridSearch } from '../search/hybrid.js';
16
+ import { physicsSearch } from '../search/physics-search.js';
17
+ import { searchBothHybrid } from '../sharing/shared.js';
18
+ import { loadRecallSearchEntries, recallScopeFilter } from '../store/search-rows.js';
19
+ import { textOverlap, tokenize as tokenizeQuery } from '../util/tokenize.js';
20
20
  /** Ranks memories for a query as `hippo recall` does, through the `limit` slice. Reads stores, embeddings and
21
21
  * physics state; writes nothing and prints nothing (notes go to `ctx.note`). The caller supplies the cost
22
22
  * function and reranker in `opts`, and persists the returned goal-log rows. */
@@ -155,7 +155,7 @@ function traced(opts, prev, next, step) {
155
155
  }
156
156
  /** Re-sort after a score change. Plain and stable on purpose: ties keep the prior rank, not a content order. */
157
157
  function byScore(results) {
158
- return results.sort((a, b) => b.score - a.score);
158
+ return results.sort((a, b) => compareScoresDesc(a.score, b.score));
159
159
  }
160
160
  function applyPfcRerankers(opts, state) {
161
161
  if (opts.evcAdaptive && state.results.length >= 2)
@@ -168,8 +168,8 @@ function applyPfcRerankers(opts, state) {
168
168
  const hasPeerInResults = (r.entry.conflicts_with || []).some((peerId) => presentIds.has(peerId));
169
169
  if (!hasPeerInResults)
170
170
  return r;
171
- const next = { ...r, score: r.score * 0.3 };
172
- return traced(opts, r, next, { stage: 'interference', multiplier: 0.3, scoreBefore: r.score, scoreAfter: next.score });
171
+ const next = { ...r, score: r.score * CONFLICT_PEER_MULTIPLIER };
172
+ return traced(opts, r, next, { stage: 'interference', multiplier: CONFLICT_PEER_MULTIPLIER, scoreBefore: r.score, scoreAfter: next.score });
173
173
  }));
174
174
  }
175
175
  if (opts.valueAware && state.results.length >= 1) {
@@ -179,7 +179,7 @@ function applyPfcRerankers(opts, state) {
179
179
  const neg = r.entry.outcome_negative ?? 0;
180
180
  if (pos === 0 && neg === 0)
181
181
  return r;
182
- const valueMult = Math.max(0.7, Math.min(1.3, 1 + 0.3 * Math.tanh(pos - neg)));
182
+ const valueMult = Math.max(VALUE_MULT_MIN, Math.min(VALUE_MULT_MAX, 1 + VALUE_MULT_SLOPE * Math.tanh(pos - neg)));
183
183
  const next = { ...r, score: r.score * valueMult };
184
184
  return traced(opts, r, next, { stage: 'value', multiplier: valueMult, scoreBefore: r.score, scoreAfter: next.score });
185
185
  }));
@@ -188,12 +188,26 @@ function applyPfcRerankers(opts, state) {
188
188
  // utility = score * (0.5 + 0.5 * strength) * (1 - min(0.3, tokens / 10000)); long evidence-rich rows pay for length.
189
189
  state.results = byScore(state.results.map((r) => {
190
190
  const strength = typeof r.entry.strength === 'number' ? r.entry.strength : 1.0;
191
- const utilityMult = (0.5 + 0.5 * strength) * (1 - Math.min(0.3, (r.tokens || 0) / 10000));
191
+ const utilityMult = (STRENGTH_RANK_FLOOR + STRENGTH_RANK_SPAN * strength) * (1 - Math.min(UTILITY_LENGTH_PENALTY_CAP, (r.tokens || 0) / UTILITY_LENGTH_TOKENS));
192
192
  const utility = r.score * utilityMult;
193
193
  return traced(opts, r, { ...r, score: utility }, { stage: 'utility', multiplier: utilityMult, scoreBefore: r.score, scoreAfter: utility });
194
194
  }));
195
195
  }
196
196
  }
197
+ // A recorded conflict peer in the same result list is cut to this share of its score.
198
+ const CONFLICT_PEER_MULTIPLIER = 0.3;
199
+ // The value-aware clamp is wider than the always-on outcome nudge, so outcome history can decide the order.
200
+ const VALUE_MULT_SLOPE = 0.3;
201
+ const VALUE_MULT_MIN = 0.7;
202
+ const VALUE_MULT_MAX = 1.3;
203
+ const UTILITY_LENGTH_PENALTY_CAP = 0.3;
204
+ const UTILITY_LENGTH_TOKENS = 10000;
205
+ // evcAdaptive acts when the top hits overlap this much; it keeps rows near the best score or covering the query.
206
+ const NEAR_DUPLICATE_OVERLAP_MIN = 0.4;
207
+ const SCORE_FLOOR_FRACTION = 0.5;
208
+ const QUERY_COVERAGE_MIN = 0.6;
209
+ const GOAL_TAG_BOOST = 1.5;
210
+ const SALIENCE_MIN_MULTIPLIER = 0.5;
197
211
  /** When the top hits are near-duplicates (same topic, different facts), surface the newest on-topic row first. */
198
212
  function evcAdaptive(query, results) {
199
213
  const slice = results.slice(0, Math.min(3, results.length));
@@ -205,11 +219,11 @@ function evcAdaptive(query, results) {
205
219
  pairs++;
206
220
  }
207
221
  }
208
- if ((pairs > 0 ? overlapSum / pairs : 0) < 0.4)
222
+ if ((pairs > 0 ? overlapSum / pairs : 0) < NEAR_DUPLICATE_OVERLAP_MIN)
209
223
  return results;
210
224
  const poolSize = Math.min(results.length, Math.max(slice.length * 3, 9));
211
225
  const pool = results.slice(0, poolSize);
212
- const scoreFloor = pool.reduce((m, r) => Math.max(m, r.score), 0) * 0.5;
226
+ const scoreFloor = pool.reduce((m, r) => Math.max(m, r.score), 0) * SCORE_FLOOR_FRACTION;
213
227
  // Query coverage catches the differently phrased update a score floor alone would miss.
214
228
  const queryTokens = new Set(tokenizeQuery(query));
215
229
  const onTopic = [];
@@ -223,7 +237,7 @@ function evcAdaptive(query, results) {
223
237
  hits++;
224
238
  }
225
239
  const queryCoverage = queryTokens.size > 0 ? hits / queryTokens.size : 0;
226
- (r.score >= scoreFloor || queryCoverage >= 0.6 ? onTopic : offTopic).push(r);
240
+ (r.score >= scoreFloor || queryCoverage >= QUERY_COVERAGE_MIN ? onTopic : offTopic).push(r);
227
241
  }
228
242
  // Recency is the primary key; identity only breaks exact-timestamp ties.
229
243
  onTopic.sort((a, b) => {
@@ -248,29 +262,20 @@ function applyGoalBoosts(ctx, opts, state) {
248
262
  state.results = byScore(state.results.map((r) => {
249
263
  if (!r.entry.tags?.includes(goalTag))
250
264
  return r;
251
- const boosted = { ...r, score: r.score * 1.5 };
252
- return traced(opts, r, boosted, { stage: 'goal', multiplier: 1.5, scoreBefore: r.score, scoreAfter: r.score * 1.5, note: `--goal ${goalTag}` });
265
+ const boosted = { ...r, score: r.score * GOAL_TAG_BOOST };
266
+ return traced(opts, r, boosted, { stage: 'goal', multiplier: GOAL_TAG_BOOST, scoreBefore: r.score, scoreAfter: r.score * GOAL_TAG_BOOST, note: `--goal ${goalTag}` });
253
267
  }));
254
268
  return;
255
269
  }
256
270
  if (!opts.sessionId)
257
271
  return;
258
- const db = openHippoDb(ctx.hippoRoot);
259
272
  // The helper re-spreads rows, so its steps come back in a map keyed by entry id.
260
273
  const goalBoostTrace = opts.why ? new Map() : undefined;
261
- try {
262
- const boost = computeGoalStackBoost(db, state.results, {
263
- sessionId: opts.sessionId,
264
- tenantId: ctx.tenantId,
265
- limit: opts.limit,
266
- trace: goalBoostTrace,
267
- });
268
- state.results = boost.results;
269
- state.goalRecallLog = boost.log;
270
- }
271
- finally {
272
- closeHippoDb(db);
273
- }
274
+ const session = { sessionId: opts.sessionId, tenantId: ctx.tenantId };
275
+ // The log may name global rows; the store drops those when it writes, as it does for api.recall.
276
+ const boost = boostByGoals(state.results, activeGoalsWithPolicies(ctx.hippoRoot, session), { ...session, limit: opts.limit, trace: goalBoostTrace });
277
+ state.results = boost.results;
278
+ state.goalRecallLog = boost.log;
274
279
  if (goalBoostTrace && goalBoostTrace.size > 0) {
275
280
  state.results = state.results.map((r) => {
276
281
  const step = goalBoostTrace.get(r.entry.id);
@@ -284,7 +289,7 @@ function applySalience(opts, threshold, results) {
284
289
  const count = r.entry.retrieval_count ?? 0;
285
290
  if (count >= threshold)
286
291
  return r;
287
- const mult = Math.max(0.5, count / threshold);
292
+ const mult = Math.max(SALIENCE_MIN_MULTIPLIER, count / threshold);
288
293
  const next = { ...r, score: r.score * mult };
289
294
  return traced(opts, r, next, { stage: 'retrieval-count-downweight', multiplier: mult, scoreBefore: r.score, scoreAfter: next.score });
290
295
  }));
@@ -1,6 +1,8 @@
1
- import { type AppendAuditOpts, type AuditOp } from '../audit.js';
2
- import type { AvailabilityHint } from '../availability.js';
3
- import { RingBuffer, type AnchoringHint, type RecallHistorySnapshot } from '../recall-history.js';
1
+ import { type AppendAuditOpts, type AuditOp } from '../store/audit.js';
2
+ import type { AvailabilityHint } from './availability.js';
3
+ import { RingBuffer, type AnchoringHint, type RecallHistorySnapshot } from './recall-history.js';
4
+ import type { RecallWrites } from '../store/index.js';
5
+ import type { Context } from './types.js';
4
6
  export type RecallSurface = 'cli' | 'mcp' | 'http';
5
7
  /** The session's ring, created on first use; null when anchoring is off or the call has no session. */
6
8
  export declare function sessionRing(surface: RecallSurface, tenantId: string, sessionId: string | undefined): RingBuffer | null;
@@ -9,19 +11,16 @@ export declare function peekSessionRing(surface: RecallSurface, tenantId: string
9
11
  /** Records this recall's top row and hint, which the next recall's cooldown reads. */
10
12
  export declare function noteRecall(ring: RingBuffer, query: string, topId: string | null, anchoredOn: string | undefined): void;
11
13
  export declare function resetSessionRings(surface: RecallSurface): void;
12
- export interface RecallAuditor {
13
- readonly hippoRoot: string;
14
+ /** Whom a recall audit row names. */
15
+ export interface RecallAuditCaller {
14
16
  readonly tenantId: string;
15
17
  readonly actor: string;
16
- /** Log and count a failed write instead of throwing, for a CLI command that has already done its work. */
17
- readonly bestEffort?: boolean;
18
18
  }
19
- /** Whom a recall audit row names; a surface that writes through the store port needs no root. */
20
- export type RecallAuditCaller = Pick<RecallAuditor, 'tenantId' | 'actor'>;
19
+ export declare function callerOf(ctx: Context): RecallAuditCaller;
20
+ /** The strengthen every ranker of `retrieve` hands to the recall's write: the shown ids, in the caller's tenant. */
21
+ export declare function strengthenOf(ctx: Context, ids: readonly string[]): NonNullable<RecallWrites['strengthen']>;
21
22
  type RecallAuditMetadata = Readonly<Record<string, string | number | null>>;
22
23
  export declare function recallAuditRow(who: RecallAuditCaller, op: AuditOp, targetId?: string, metadata?: RecallAuditMetadata): AppendAuditOpts;
23
- /** One audit row on its own short-lived handle. */
24
- export declare function appendRecallAudit(who: RecallAuditor, op: AuditOp, targetId?: string, metadata?: RecallAuditMetadata): void;
25
24
  export declare function recallAuditMetadata(query: string, results: number): {
26
25
  results: number;
27
26
  query_hash: string;
@@ -40,7 +39,5 @@ export interface ShownRecall {
40
39
  }
41
40
  /** The hint rows for a list a surface showed, so a surface on the store port can hand them to the recall's one write. */
42
41
  export declare function shownRecallRows(who: RecallAuditCaller, shown: ShownRecall): AppendAuditOpts[];
43
- /** For a surface that computes its hints over the list it shows: feeds the ring after the final detect, then audits the hints. */
44
- export declare function recordShownRecall(who: RecallAuditor, shown: ShownRecall): void;
45
42
  export {};
46
43
  //# sourceMappingURL=recall-record.d.ts.map
@@ -1,7 +1,7 @@
1
1
  // The recall session rings and the recall audit rows, in one place for the CLI, MCP and HTTP surfaces.
2
- import { appendAuditEvent, auditQueryFields, reportAuditWriteFailure } from '../audit.js';
3
- import { closeHippoDb, openHippoDb } from '../db.js';
4
- import { appendRecall, biasHintEnabled, buildSessionKey, getOrCreateRing, hashQueryText, snapshotRing, } from '../recall-history.js';
2
+ import { isRecallBoostAblated } from '../core/ablation.js';
3
+ import { auditQueryFields } from '../store/audit.js';
4
+ import { appendRecall, biasHintEnabled, buildSessionKey, getOrCreateRing, hashQueryText, snapshotRing, } from './recall-history.js';
5
5
  // One map per surface, each with its own LRU cap, so a repeat on one surface is a first recall on another.
6
6
  const rings = {
7
7
  cli: new Map(),
@@ -26,28 +26,15 @@ export function noteRecall(ring, query, topId, anchoredOn) {
26
26
  export function resetSessionRings(surface) {
27
27
  rings[surface].clear();
28
28
  }
29
- export function recallAuditRow(who, op, targetId, metadata) {
30
- return { tenantId: who.tenantId, actor: who.actor, op, targetId, metadata };
29
+ export function callerOf(ctx) {
30
+ return { tenantId: ctx.tenantId, actor: ctx.actor.subject };
31
31
  }
32
- function writeRecallAudit(who, row) {
33
- try {
34
- const db = openHippoDb(who.hippoRoot);
35
- try {
36
- appendAuditEvent(db, row);
37
- }
38
- finally {
39
- closeHippoDb(db);
40
- }
41
- }
42
- catch (err) {
43
- if (!who.bestEffort)
44
- throw err;
45
- reportAuditWriteFailure(row.op, String(err), row.targetId);
46
- }
32
+ /** The strengthen every ranker of `retrieve` hands to the recall's write: the shown ids, in the caller's tenant. */
33
+ export function strengthenOf(ctx, ids) {
34
+ return { ids, opts: { tenantId: ctx.tenantId, recallBoostAblated: isRecallBoostAblated() } };
47
35
  }
48
- /** One audit row on its own short-lived handle. */
49
- export function appendRecallAudit(who, op, targetId, metadata) {
50
- writeRecallAudit(who, recallAuditRow(who, op, targetId, metadata));
36
+ export function recallAuditRow(who, op, targetId, metadata) {
37
+ return { tenantId: who.tenantId, actor: who.actor, op, targetId, metadata };
51
38
  }
52
39
  // The row stores a hash of the query, never its text, so an archived memory's words cannot persist there.
53
40
  export function recallAuditMetadata(query, results) {
@@ -88,11 +75,4 @@ export function shownRecallRows(who, shown) {
88
75
  ...availabilityRows(who, shown.availability),
89
76
  ];
90
77
  }
91
- /** For a surface that computes its hints over the list it shows: feeds the ring after the final detect, then audits the hints. */
92
- export function recordShownRecall(who, shown) {
93
- if (shown.ring)
94
- noteRecall(shown.ring, shown.query, shown.topId, shown.anchoring?.memoryId);
95
- for (const row of shownRecallRows(who, shown))
96
- writeRecallAudit(who, row);
97
- }
98
78
  //# sourceMappingURL=recall-record.js.map
@@ -1,5 +1,5 @@
1
- import { BadRequestError } from '../api-errors.js';
2
- import { type JsonValue } from '../json.js';
1
+ import { BadRequestError } from '../core/api-errors.js';
2
+ import { type JsonValue } from '../util/json.js';
3
3
  import type { ContextOpts } from './context-types.js';
4
4
  import type { RecallOpts } from './recall-types.js';
5
5
  /** A recall or context input the caller must fix; MCP answers it with an isError result, HTTP with a 400. */
@@ -1,7 +1,7 @@
1
1
  // The recall and context input rules in one copy, so MCP and HTTP reject the same inputs with the same messages.
2
- import { BadRequestError } from '../api-errors.js';
3
- import { MAX_ID_LEN } from '../http-util.js';
4
- import { isJsonString } from '../json.js';
2
+ import { BadRequestError } from '../core/api-errors.js';
3
+ import { MAX_ID_LEN } from '../util/http-util.js';
4
+ import { isJsonString } from '../util/json.js';
5
5
  const MAX_RECALL_LIMIT = 1000;
6
6
  // recall() owns the shape rule for scorer_window (invalid_scorer_window); this cap bounds remote cost.
7
7
  const MAX_SCORER_WINDOW = 1000;
@@ -1,12 +1,12 @@
1
- import type { TaskSnapshot, SessionEvent } from '../store/rows.js';
2
- import type { SessionHandoff } from '../handoff.js';
3
- import type { MemoryEntry } from '../memory.js';
4
- import type { RerankStep, SearchResult } from '../search/types.js';
5
- import type { PlanningFallacyHint, PlanningFallacyWatching } from '../predictions/planning-fallacy.js';
6
- import type { AnchoringHint, RecallHistorySnapshot } from '../recall-history.js';
7
- import type { AvailabilityHint } from '../availability.js';
8
- import type { AppendAuditOpts } from '../audit.js';
9
- import type { CallerProject } from '../prompt-hook.js';
1
+ import type { ContinuityBlock } from '../store/port.js';
2
+ import type { MemoryEntry } from '../core/memory.js';
3
+ import type { RerankStep, SearchResult } from '../core/search-types.js';
4
+ import type { PlanningFallacyHint, PlanningFallacyOutput, PlanningFallacyWatching } from '../predictions/planning-fallacy.js';
5
+ import type { AnchoringHint, RecallHistorySnapshot } from './recall-history.js';
6
+ import type { AvailabilityHint } from './availability.js';
7
+ import type { AppendAuditOpts } from '../store/audit.js';
8
+ import type { CallerProject } from './prompt-hook.js';
9
+ import type { RankRecallOpts, RankRecallResult } from './recall-pipeline.js';
10
10
  export interface RecallOpts {
11
11
  query: string;
12
12
  limit?: number;
@@ -155,6 +155,35 @@ export interface RecallOpts {
155
155
  leadingAudit?: readonly AppendAuditOpts[];
156
156
  /** MCP recall only: `retrieve` ranks the whole scoped store and strengthens and traces (pipeline 'mcp') just the ids this returns; `results` stays the window band. */
157
157
  showRanked?: (ranking: StoreRanking, result: RecallResult) => ShownRanking;
158
+ /** Named ranker: `retrieve` ranks with the CLI ranking core. Unset, it ranks the SQL BM25 band, or the wide hybrid list under `showRanked`. */
159
+ cliCore?: CliCoreRanker;
160
+ }
161
+ interface CliCoreRanking {
162
+ rank: Omit<RankRecallOpts, 'query' | 'sessionId' | 'goalTag'>;
163
+ /** A second store searched beside `ctx.hippoRoot`. */
164
+ sources?: {
165
+ globalRoot?: string;
166
+ };
167
+ /** Receives each operator note when ranking reaches it. */
168
+ note?: (line: string) => void;
169
+ }
170
+ /** A recall the caller prints. `show` runs once ranking ends, unless it halted; `retrieve` then records the list it returns. */
171
+ export interface CliCoreRecall extends CliCoreRanking {
172
+ /** The host agent's session: it stamps the token ledger row, and the trace when the recall names no session. */
173
+ hostSessionId?: string;
174
+ show: (ranking: RankRecallResult, planning: PlanningFallacyOutput) => ShownCliCore;
175
+ }
176
+ /** A read-only look at the ranking (`hippo explain`): no hint is evaluated and nothing is written. */
177
+ export interface CliCoreInspection extends CliCoreRanking {
178
+ inspect: (ranking: RankRecallResult) => void;
179
+ }
180
+ /** The CLI ranking core (`rankRecall`) as a ranker of `retrieve`: host admin only, on hippo.db. Of the other RecallOpts it reads `query`, `sessionId` and `goalTag`. */
181
+ export type CliCoreRanker = CliCoreRecall | CliCoreInspection;
182
+ /** `results`: the rows the caller shows, best first; `audit`: its hint rows, written ahead of the 'recall' row; `tokens`: the text it prints, for the ledger. */
183
+ export interface ShownCliCore {
184
+ results: readonly SearchResult[];
185
+ audit: readonly AppendAuditOpts[];
186
+ tokens: number;
158
187
  }
159
188
  /** `ids`: what the caller showed; `audit`: its own rows, written after the recall's and in the same transaction, so all land or none. */
160
189
  export interface ShownRanking {
@@ -167,11 +196,7 @@ export interface StoreRanking {
167
196
  pool: MemoryEntry[];
168
197
  droppedByScope: number;
169
198
  }
170
- export interface ContinuityBlock {
171
- activeSnapshot: TaskSnapshot | null;
172
- sessionHandoff: SessionHandoff | null;
173
- recentSessionEvents: SessionEvent[];
174
- }
199
+ export type { ContinuityBlock } from '../store/port.js';
175
200
  export interface RecallResultItem {
176
201
  id: string;
177
202
  content: string;
@@ -263,7 +288,7 @@ export interface RecallResult {
263
288
  * the calling agent sees its track record at the moment of forecasting
264
289
  * (Lovallo-Kahneman 2003 inside-vs-outside view).
265
290
  *
266
- * Populated by `api.recall` itself via `computePlanningFallacyOutput`.
291
+ * Populated by `api.recall` itself via `decidePlanningFallacy`.
267
292
  * Pipeline-invariant: the value depends only on (queryText, tenantId,
268
293
  * predictions table state) — all three are identical regardless of
269
294
  * which downstream search pipeline produces the memory list, so MCP
@@ -372,7 +397,7 @@ export interface RecallSuppressionSummary {
372
397
  /** Counter of memories suppressed by detected interference patterns.
373
398
  * Incremented by 1 PER PIPELINE when that
374
399
  * pipeline's own memory_dominance verdict fires (via the
375
- * anchoring detector, see `detectAnchoring()` in src/recall-history.ts).
400
+ * anchoring detector, see `detectAnchoring()` in src/api/recall-history.ts).
376
401
  * Each pipeline (api.recall, cmdRecall, MCP physics/hybrid) bumps its
377
402
  * OWN suppressionSummary independently because each runs its own
378
403
  * detector against its own top-1 + its own per-(tenant, session) ring
@@ -32,6 +32,6 @@ export declare function buildSuppressionSummary(counts: {
32
32
  * `tests/api-recall-no-side-effects.test.ts`.
33
33
  */
34
34
  export declare function recall(ctx: Context, opts: RecallOpts): RecallResult;
35
- /** Mode-aware recall through the served store that strengthens each returned row; never writes last_retrieval_ids (contract lock). */
35
+ /** The one recall entry: ranks with the ranker `opts` names, then writes the recall. Only the CLI core ranker writes last_retrieval_ids (contract lock). */
36
36
  export declare function retrieve(ctx: Context, opts: RecallOpts): Promise<RecallResult>;
37
37
  //# sourceMappingURL=recall.d.ts.map
@@ -1,26 +1,28 @@
1
1
  // Read path: recall (sync) and retrieve (async, adds the vector arm).
2
- import { envRequireSessionScopedFreshTail } from '../env.js';
2
+ import { envRequireSessionScopedFreshTail } from '../util/env.js';
3
3
  import { DEFAULT_SEARCH_CANDIDATE_LIMIT } from '../store/rows.js';
4
- import { isRecallBoostAblated } from '../ablation.js';
5
4
  import { loadEntriesByIds, loadFreshRawMemories } from '../store/entry-reads.js';
6
5
  import { loadRecallSearchEntries, recallScopeFilter } from '../store/search-rows.js';
7
- import { estimateTokens } from '../token-ledger.js';
8
- import { formatHandoffEvidenceLine } from '../handoff.js';
9
- import { activeGoalsWithPolicies, boostByGoals } from '../goals.js';
10
- import { continuityAt, finishRecallAt, storeFor } from '../store-port.js';
6
+ import { estimateTokens } from '../util/token-text.js';
7
+ import { formatHandoffEvidenceLine } from '../core/handoff.js';
8
+ import { activeGoalsWithPolicies, boostByGoals } from '../store/goals.js';
9
+ import { continuityAt, finishRecallAt, storeFor } from '../store/index.js';
11
10
  import { hybridSearch } from '../search/hybrid.js';
12
11
  import { physicsSearch } from '../search/physics-search.js';
13
12
  import { churnStaleFactor } from '../search/boosts.js';
14
- import { compareEntryIdentity } from '../compare.js';
15
- import { dropHeldCopies, duplicateKey, storedTextKeys } from '../same-text.js';
16
- import { isSharedStore, loadConfig } from '../config.js';
17
- import { classifyOriginProject, projectNames } from '../project-identity.js';
18
- import { decidePlanningFallacy, detectPlanningClaim, planningFallacyEvidenceAt } from '../predictions/planning-fallacy.js';
19
- import { detectAnchoring, hashQueryText, biasHintEnabled } from '../recall-history.js';
20
- import { detectAvailabilityBias } from '../availability.js';
21
- import { passesScopeFilterForRecall, assertScopeRequestAllowed, personalScopeOf } from '../recall-scope.js';
13
+ import { compareEntryIdentity } from '../core/compare.js';
14
+ import { dropHeldCopies, duplicateKey, storedTextKeys } from '../util/same-text.js';
15
+ import { isSharedStore, loadConfig } from '../core/config.js';
16
+ import { classifyOriginProject, projectNames } from '../core/project-identity.js';
17
+ import { decidePlanningFallacy, detectPlanningClaim } from '../predictions/planning-fallacy.js';
18
+ import { planningFallacyEvidenceAt } from '../store/planning-fallacy-evidence.js';
19
+ import { detectAnchoring, hashQueryText, biasHintEnabled } from './recall-history.js';
20
+ import { detectAvailabilityBias } from './availability.js';
21
+ import { passesScopeFilterForRecall, assertScopeRequestAllowed, personalScopeOf } from '../store/recall-scope.js';
22
22
  import { ownerOrSubject, RecallContractError } from './types.js';
23
- import { anchoringRows, availabilityRows, recallAuditMetadata, recallAuditRow } from './recall-record.js';
23
+ import { anchoringRows, availabilityRows, callerOf, recallAuditMetadata, recallAuditRow, strengthenOf } from './recall-record.js';
24
+ import { retrieveWithCliCore } from './recall-core.js';
25
+ const DEFAULT_RECALL_LIMIT = 10;
24
26
  /**
25
27
  * Shared construction helper for `RecallSuppressionSummary`. Used by
26
28
  * `api.recall`, `cmdRecall`, and the MCP `hippo_recall` handler so all three
@@ -61,7 +63,7 @@ export function recall(ctx, opts) {
61
63
  const own = personalScopeOf(ctx.actor) ?? undefined;
62
64
  const all = loadRecallSearchEntries(ctx.hippoRoot, opts.query, windowSize, ctx.tenantId, opts.scope, 'exact', false, recallOrigin(opts), own);
63
65
  const plan = planRecall(ctx, opts, all, own);
64
- const { result, writes } = composeRecall(ctx, opts, windowSize, all, plan, readRecallSync(ctx, opts, plan));
66
+ const { result, writes } = composeRecall(ctx, opts, { windowSize, all, plan, reads: readRecallSync(ctx, opts, plan) });
65
67
  finishRecallAt(ctx.hippoRoot, { ...writes, audit: [...(opts.leadingAudit ?? []), ...writes.audit] });
66
68
  return result;
67
69
  }
@@ -71,9 +73,11 @@ function recallOrigin(opts) {
71
73
  function inCallerProject(entry, opts) {
72
74
  return !opts.project || classifyOriginProject(entry.origin_project, opts.project) !== 'cross-project';
73
75
  }
74
- /** Mode-aware recall through the served store that strengthens each returned row; never writes last_retrieval_ids (contract lock). */
76
+ /** The one recall entry: ranks with the ranker `opts` names, then writes the recall. Only the CLI core ranker writes last_retrieval_ids (contract lock). */
75
77
  export async function retrieve(ctx, opts) {
76
78
  assertScopeRequestAllowed(ctx.actor, opts.scope);
79
+ if (opts.cliCore)
80
+ return retrieveWithCliCore(ctx, opts, opts.cliCore);
77
81
  const windowSize = recallWindowSize(opts);
78
82
  // From the authenticated actor, never from RecallOpts, which a caller fills in.
79
83
  const own = personalScopeOf(ctx.actor) ?? undefined;
@@ -90,7 +94,7 @@ export async function retrieve(ctx, opts) {
90
94
  candidates = [...ranked.map((r) => r.entry), ...candidates.filter((e) => !rankedIds.has(e.id))];
91
95
  }
92
96
  const plan = planRecall(ctx, opts, candidates, own);
93
- const { result, writes } = composeRecall(ctx, opts, windowSize, candidates, plan, await readRecall(store, ctx, opts, plan));
97
+ const { result, writes } = composeRecall(ctx, opts, { windowSize, all: candidates, plan, reads: await readRecall(store, ctx, opts, plan) });
94
98
  await store.finishRecall({ ...writes, audit: [...(opts.leadingAudit ?? []), ...writes.audit], strengthen: strengthenOf(ctx, result.results.map((r) => r.id)) });
95
99
  return result;
96
100
  }
@@ -106,9 +110,6 @@ function recallSearchArgs(ctx, opts, limit, own) {
106
110
  ownScope: own,
107
111
  };
108
112
  }
109
- function strengthenOf(ctx, ids) {
110
- return { ids, opts: { tenantId: ctx.tenantId, recallBoostAblated: isRecallBoostAblated() } };
111
- }
112
113
  /** api.retrieve's vector arm: the recall load's exact-scope rule, current rows only. */
113
114
  function recallVectorSpec(ctx, opts, own) {
114
115
  return {
@@ -142,7 +143,7 @@ async function retrieveFromStore(ctx, opts, windowSize, show, own) {
142
143
  const window = ranked.slice(0, windowSize).map((r) => r.entry);
143
144
  const bandOpts = { ...opts, suppressRecallTrace: true };
144
145
  const plan = planRecall(ctx, bandOpts, window, own);
145
- const { result, writes } = composeRecall(ctx, bandOpts, windowSize, window, plan, await readRecall(store, ctx, bandOpts, plan, goals), false);
146
+ const { result, writes } = composeRecall(ctx, bandOpts, { windowSize, all: window, plan, reads: await readRecall(store, ctx, bandOpts, plan, goals), auditBand: false });
146
147
  // Rows the vector arm added count as candidates too.
147
148
  const inPool = new Set(pool.map((e) => e.id));
148
149
  const candidates = [...pool, ...ranked.map((r) => r.entry).filter((e) => !inPool.has(e.id))];
@@ -187,7 +188,7 @@ function recallWindowSize(opts) {
187
188
  }
188
189
  const CONTINUITY_EVENT_LIMIT = 5;
189
190
  function planRecall(ctx, opts, all, own) {
190
- const limit = opts.limit ?? 10;
191
+ const limit = opts.limit ?? DEFAULT_RECALL_LIMIT;
191
192
  const window = admitCandidates(opts, all, limit, own);
192
193
  return {
193
194
  limit,
@@ -228,9 +229,8 @@ function continuityKey(ctx, opts) {
228
229
  return null;
229
230
  return { owner: ownerOrSubject(ctx.actor), project: opts.project ? projectNames(opts.project) : [] };
230
231
  }
231
- /** The reply and the rows it writes, from the candidates and the plan's reads; touches no store.
232
- * `auditBand` false: the caller shows a cut of the band and audits the rows it shows. */
233
- function composeRecall(ctx, opts, windowSize, all, plan, reads, auditBand = true) {
232
+ function composeRecall(ctx, opts, options) {
233
+ const { windowSize, all, plan, reads, auditBand = true } = options;
234
234
  const { window } = plan;
235
235
  const bands = rankBands(opts, plan, reads);
236
236
  const rankedOut = bands.rankedOut;
@@ -319,7 +319,9 @@ function rankBands(opts, plan, reads) {
319
319
  const baseRanked = baseScored.map((r) => baseItem(r, opts, explainTrace));
320
320
  const summaryRanked = substituted.map((s) => summaryItem(s, opts));
321
321
  const freshRanked = (opts.freshTailCount ?? 0) > 0
322
- ? freshTailBand(opts, reads.freshRaws, baseRanked, summaryRanked, opts.keepHeldCopies ? [] : [...baseSlice, ...substituted.map((s) => s.entry)], own)
322
+ ? freshTailBand(opts, {
323
+ recent: reads.freshRaws, baseRanked, summaryRanked, shownEntries: opts.keepHeldCopies ? [] : [...baseSlice, ...substituted.map((s) => s.entry)], own,
324
+ })
323
325
  : [];
324
326
  return {
325
327
  rankedOut: [...freshRanked, ...baseRanked, ...summaryRanked],
@@ -334,7 +336,7 @@ function rankBands(opts, plan, reads) {
334
336
  // `limit`. Each one is tenant-scoped and re-checked against the scope filter; drillDown recovers the children.
335
337
  function substituteOverflow(opts, overflowByParent, parents, limit, own) {
336
338
  const eligibleParents = parents.filter((p) => (p.dag_level ?? 0) === 2 && !p.superseded_by && passesScopeFilterForRecall(p.scope ?? null, opts.scope, own) && inCallerProject(p, opts));
337
- const maxSub = Math.max(1, Math.ceil(limit * 0.3));
339
+ const maxSub = Math.max(1, Math.ceil(limit * SUMMARY_SUB_FRACTION));
338
340
  // Most overflowed children first; compareEntryIdentity only breaks a tie, which used to fall to scan order.
339
341
  eligibleParents.sort((a, b) => {
340
342
  const ac = overflowByParent.get(a.id)?.length ?? 0;
@@ -380,12 +382,16 @@ function baseItem(r, opts, explainTrace) {
380
382
  }
381
383
  return item;
382
384
  }
383
- // Score 0.5 keeps a summary below the strong top-N matches but above the weakest leaves.
385
+ // A summary scores below the strong top-N matches but above the weakest leaves.
386
+ const SUMMARY_ITEM_SCORE = 0.5;
387
+ const FRESH_TAIL_ITEM_SCORE = 1.0;
388
+ // Summaries may take this share of the limit.
389
+ const SUMMARY_SUB_FRACTION = 0.3;
384
390
  function summaryItem(s, opts) {
385
391
  const item = {
386
392
  id: s.entry.id,
387
393
  content: s.entry.content,
388
- score: 0.5,
394
+ score: SUMMARY_ITEM_SCORE,
389
395
  layer: s.entry.layer,
390
396
  strength: s.entry.strength,
391
397
  isSummary: true,
@@ -396,9 +402,8 @@ function summaryItem(s, opts) {
396
402
  item.rerankPipeline = 'api';
397
403
  return item;
398
404
  }
399
- // The last N raw rows, so "what did I just see" always covers the recent window. A recent row already in the BM25
400
- // band is only tagged isFreshTail; new ones are prepended, so every recent row appears exactly once.
401
- function freshTailBand(opts, recent, baseRanked, summaryRanked, shownEntries, own) {
405
+ function freshTailBand(opts, options) {
406
+ const { recent, baseRanked, summaryRanked, shownEntries, own } = options;
402
407
  const recentScoped = recent.filter((m) => passesScopeFilterForRecall(m.scope ?? null, opts.scope, own) && inCallerProject(m, opts));
403
408
  const recentIdSet = new Set(recentScoped.map((m) => m.id));
404
409
  for (const r of baseRanked) {
@@ -415,7 +420,7 @@ function freshTailBand(opts, recent, baseRanked, summaryRanked, shownEntries, ow
415
420
  const item = {
416
421
  id: m.id,
417
422
  content: m.content,
418
- score: 1.0,
423
+ score: FRESH_TAIL_ITEM_SCORE,
419
424
  layer: m.layer,
420
425
  strength: m.strength,
421
426
  isFreshTail: true,
@@ -471,9 +476,6 @@ function continuityTokensOf(c) {
471
476
  tokenize(filteredHandoff?.cardId) +
472
477
  c.recentSessionEvents.reduce((acc, e) => acc + tokenize(e.content), 0);
473
478
  }
474
- function callerOf(ctx) {
475
- return { tenantId: ctx.tenantId, actor: ctx.actor.subject };
476
- }
477
479
  // A pure read of the caller's recallHistory snapshot against this top-1. HIPPO_ANCHORING=off skips even the detect
478
480
  // call; CLI paths pass no history (cmdRecall computes its own hint), so the hint stays absent there.
479
481
  function detectRecallAnchoring(opts, topMemoryId) {
@@ -1,6 +1,6 @@
1
- import type { DatabaseSyncLike } from '../db.js';
2
- import { type MemoryKind } from '../memory.js';
3
- import type { Context } from './types.js';
1
+ import type { ConnectorEvent } from '../store/port.js';
2
+ import { type MemoryKind } from '../core/memory.js';
3
+ import type { Context, StoreReply } from './types.js';
4
4
  export interface RememberOpts {
5
5
  content: string;
6
6
  kind?: MemoryKind;
@@ -8,15 +8,8 @@ export interface RememberOpts {
8
8
  owner?: string;
9
9
  artifactRef?: string;
10
10
  tags?: string[];
11
- /**
12
- * Optional hook invoked inside the same transaction as the underlying
13
- * memories INSERT. Used by ingestion connectors to stamp
14
- * idempotency / cursor rows atomically with the memory row, so a crash
15
- * mid-write cannot produce a memory without its corresponding side-effect
16
- * log row (or vice versa). If the callback throws, the INSERT is rolled
17
- * back and the error is rethrown.
18
- */
19
- afterWrite?: (db: DatabaseSyncLike, memoryId: string) => void;
11
+ /** The connector event this write answers. The store logs it in the memory's own transaction; an event logged before stores nothing and answers `duplicate`. */
12
+ event?: ConnectorEvent;
20
13
  /** Connector-ingested content an agent doesn't control; gates detectInstruction. CLI/HTTP/MCP never set this. */
21
14
  untrusted?: boolean;
22
15
  /** The caller's project: its name becomes the row's origin. Without it the store's fallback applies (NULL on a shared store). */
@@ -37,6 +30,12 @@ export interface RememberResult {
37
30
  };
38
31
  /** Set only when the content held secret material: untrusted text had it redacted, typed text was stored as sent. */
39
32
  warnings?: string[];
33
+ /** Set only when the write's event was logged before: nothing was stored, so `id` names no row; `memoryId` is the id the first write logged. */
34
+ duplicate?: {
35
+ memoryId: string | null;
36
+ };
40
37
  }
41
- export declare function remember(ctx: Context, opts: RememberOpts): RememberResult;
38
+ /** Store one memory: the store's entryWrites group writes the row and its one remember audit row, under the caller's subject.
39
+ * A write that carries a connector event or untrusted content goes through connectorWrites, which commits its companion rows with it. */
40
+ export declare function remember<C extends Context>(ctx: C, opts: RememberOpts): StoreReply<C, RememberResult>;
42
41
  //# sourceMappingURL=remember.d.ts.map