hippo-memory 1.72.0 → 2.1.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 (995) hide show
  1. package/README.md +6 -4
  2. package/dist/agent-memories/apply.d.ts +7 -5
  3. package/dist/agent-memories/apply.js +66 -39
  4. package/dist/agent-memories/claude-code.d.ts +8 -2
  5. package/dist/agent-memories/claude-code.js +26 -7
  6. package/dist/agent-memories/copilot.js +2 -1
  7. package/dist/agent-memories/files.js +2 -1
  8. package/dist/agent-memories/legacy.d.ts +6 -3
  9. package/dist/agent-memories/legacy.js +35 -14
  10. package/dist/agent-memories/markdown.d.ts +3 -1
  11. package/dist/agent-memories/markdown.js +3 -1
  12. package/dist/agent-memories/openclaw.js +5 -2
  13. package/dist/agent-memories/plan.js +11 -1
  14. package/dist/agent-memories/project-folds.js +2 -1
  15. package/dist/agent-memories/report.d.ts +4 -1
  16. package/dist/agent-memories/report.js +43 -9
  17. package/dist/agent-memories/source.d.ts +8 -2
  18. package/dist/agent-memories/source.js +11 -3
  19. package/dist/agent-memories/sync.d.ts +7 -2
  20. package/dist/agent-memories/sync.js +141 -101
  21. package/dist/api/assemble.d.ts +6 -4
  22. package/dist/api/assemble.js +11 -5
  23. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  24. package/dist/api/auth/audit.js +58 -0
  25. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
  26. package/dist/api/{auth.js → auth/auth.js} +66 -54
  27. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  28. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
  29. package/dist/api/auth/session-owners.d.ts +10 -0
  30. package/dist/api/auth/session-owners.js +35 -0
  31. package/dist/api/availability.d.ts +3 -1
  32. package/dist/api/availability.js +3 -1
  33. package/dist/api/busy.d.ts +2 -0
  34. package/dist/api/busy.js +2 -0
  35. package/dist/api/cli-surface.d.ts +6 -0
  36. package/dist/api/cli-surface.js +6 -0
  37. package/dist/api/config-of.d.ts +5 -0
  38. package/dist/api/config-of.js +6 -0
  39. package/dist/api/context-auto.d.ts +4 -1
  40. package/dist/api/context-auto.js +14 -4
  41. package/dist/api/context-render.js +14 -7
  42. package/dist/api/context-select.d.ts +4 -1
  43. package/dist/api/context-select.js +31 -34
  44. package/dist/api/context-types.d.ts +38 -12
  45. package/dist/api/context.d.ts +8 -5
  46. package/dist/api/context.js +120 -63
  47. package/dist/api/continuity.d.ts +24 -21
  48. package/dist/api/continuity.js +18 -20
  49. package/dist/api/correction-latency.d.ts +3 -1
  50. package/dist/api/correction-latency.js +3 -1
  51. package/dist/api/error-reply.d.ts +4 -1
  52. package/dist/api/error-reply.js +12 -3
  53. package/dist/api/index.d.ts +39 -23
  54. package/dist/api/index.js +21 -23
  55. package/dist/api/instruction-detect.d.ts +4 -1
  56. package/dist/api/instruction-detect.js +75 -20
  57. package/dist/api/ledger-db.d.ts +15 -11
  58. package/dist/api/ledger-db.js +21 -23
  59. package/dist/api/memories/conflicts.d.ts +33 -0
  60. package/dist/api/memories/conflicts.js +67 -0
  61. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  62. package/dist/api/{forget.js → memories/forget.js} +23 -17
  63. package/dist/api/memories/memories.d.ts +27 -0
  64. package/dist/api/memories/memories.js +52 -0
  65. package/dist/api/memories/outcome.d.ts +22 -0
  66. package/dist/api/memories/outcome.js +28 -0
  67. package/dist/api/memories/promote.d.ts +40 -0
  68. package/dist/api/memories/promote.js +76 -0
  69. package/dist/api/memories/refine.d.ts +10 -0
  70. package/dist/api/memories/refine.js +12 -0
  71. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
  72. package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
  73. package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
  74. package/dist/api/{remember.js → memories/remember.js} +50 -32
  75. package/dist/api/objects/cards.d.ts +39 -0
  76. package/dist/api/{cards.js → objects/cards.js} +12 -14
  77. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  78. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
  79. package/dist/api/objects/goals.d.ts +18 -0
  80. package/dist/api/{goals.js → objects/goals.js} +12 -12
  81. package/dist/api/objects/graph.d.ts +11 -0
  82. package/dist/api/objects/graph.js +16 -0
  83. package/dist/api/objects/objects.d.ts +9 -0
  84. package/dist/api/{objects.js → objects/objects.js} +2 -3
  85. package/dist/api/objects/predictions.d.ts +11 -0
  86. package/dist/api/{predictions.js → objects/predictions.js} +7 -5
  87. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  88. package/dist/api/{projects.js → objects/projects.js} +8 -4
  89. package/dist/api/pilot-arm.d.ts +8 -4
  90. package/dist/api/pilot-arm.js +5 -4
  91. package/dist/api/prompt-hook.d.ts +35 -20
  92. package/dist/api/prompt-hook.js +66 -44
  93. package/dist/api/provenance-coverage.d.ts +3 -1
  94. package/dist/api/provenance-coverage.js +3 -1
  95. package/dist/api/recall/finish.d.ts +185 -0
  96. package/dist/api/recall/finish.js +301 -0
  97. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  98. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
  99. package/dist/api/recall/recall.d.ts +6 -0
  100. package/dist/api/{recall.js → recall/recall.js} +116 -72
  101. package/dist/api/recall/render.d.ts +39 -0
  102. package/dist/api/recall/render.js +60 -0
  103. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  104. package/dist/api/recall/request.js +261 -0
  105. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  106. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  107. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
  108. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  109. package/dist/api/session-end.d.ts +36 -8
  110. package/dist/api/session-end.js +71 -25
  111. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  112. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  113. package/dist/api/sleep/dormant.d.ts +25 -0
  114. package/dist/api/sleep/dormant.js +64 -0
  115. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  116. package/dist/api/sleep/learn.js +138 -0
  117. package/dist/api/sleep/sleep-run.d.ts +38 -0
  118. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
  119. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  120. package/dist/api/sleep/sleep.js +9 -0
  121. package/dist/api/status.d.ts +3 -1
  122. package/dist/api/status.js +3 -1
  123. package/dist/api/store-init.d.ts +4 -1
  124. package/dist/api/store-init.js +4 -1
  125. package/dist/api/tokens.d.ts +10 -9
  126. package/dist/api/tokens.js +9 -10
  127. package/dist/api/types.d.ts +27 -12
  128. package/dist/api/types.js +13 -4
  129. package/dist/capture/caller-session.d.ts +8 -2
  130. package/dist/capture/caller-session.js +16 -6
  131. package/dist/capture/capture-error.d.ts +3 -1
  132. package/dist/capture/capture-error.js +3 -1
  133. package/dist/capture/codex-patch.js +7 -2
  134. package/dist/capture/command.d.ts +4 -2
  135. package/dist/capture/command.js +34 -15
  136. package/dist/capture/compact-resume-caller.js +15 -8
  137. package/dist/capture/compact.d.ts +8 -5
  138. package/dist/capture/compact.js +34 -23
  139. package/dist/capture/compaction-items-caller.js +9 -3
  140. package/dist/capture/compaction-record.d.ts +4 -3
  141. package/dist/capture/compaction-record.js +20 -12
  142. package/dist/capture/compaction-spool.d.ts +18 -9
  143. package/dist/capture/compaction-spool.js +105 -63
  144. package/dist/capture/copilot-transcript.d.ts +11 -3
  145. package/dist/capture/copilot-transcript.js +16 -6
  146. package/dist/capture/extract.js +20 -8
  147. package/dist/capture/failure-caller.js +23 -12
  148. package/dist/capture/failure-reading.d.ts +10 -3
  149. package/dist/capture/failure-reading.js +24 -7
  150. package/dist/capture/pre-compact-caller.js +11 -4
  151. package/dist/capture/session-digest.d.ts +15 -4
  152. package/dist/capture/session-digest.js +39 -13
  153. package/dist/capture/session-end-caller.d.ts +4 -1
  154. package/dist/capture/session-end-caller.js +20 -8
  155. package/dist/capture/session-texts.d.ts +6 -2
  156. package/dist/capture/session-texts.js +22 -7
  157. package/dist/capture/session-worker.d.ts +4 -2
  158. package/dist/capture/session-worker.js +58 -17
  159. package/dist/capture/transcript.d.ts +13 -4
  160. package/dist/capture/transcript.js +32 -10
  161. package/dist/capture/working-state.d.ts +13 -4
  162. package/dist/capture/working-state.js +50 -56
  163. package/dist/cli/api-context.d.ts +14 -2
  164. package/dist/cli/api-context.js +45 -2
  165. package/dist/cli/audit.js +33 -33
  166. package/dist/cli/auth.js +23 -31
  167. package/dist/cli/briefs.d.ts +1 -1
  168. package/dist/cli/briefs.js +20 -15
  169. package/dist/cli/card.d.ts +1 -1
  170. package/dist/cli/card.js +56 -73
  171. package/dist/cli/client.d.ts +12 -5
  172. package/dist/cli/client.js +53 -23
  173. package/dist/cli/compact-resume-payload.d.ts +4 -1
  174. package/dist/cli/compact-resume-payload.js +12 -5
  175. package/dist/cli/context.js +43 -18
  176. package/dist/cli/continuity.d.ts +5 -5
  177. package/dist/cli/continuity.js +90 -107
  178. package/dist/cli/curate.d.ts +5 -4
  179. package/dist/cli/curate.js +55 -77
  180. package/dist/cli/dag.d.ts +1 -1
  181. package/dist/cli/dag.js +14 -17
  182. package/dist/cli/decisions.js +30 -30
  183. package/dist/cli/eval.js +16 -21
  184. package/dist/cli/exit.d.ts +4 -1
  185. package/dist/cli/exit.js +10 -2
  186. package/dist/cli/explain.js +12 -11
  187. package/dist/cli/flag-values.d.ts +1 -1
  188. package/dist/cli/flag-values.js +9 -18
  189. package/dist/cli/github.d.ts +6 -0
  190. package/dist/cli/github.js +25 -13
  191. package/dist/cli/goals.d.ts +1 -1
  192. package/dist/cli/goals.js +39 -56
  193. package/dist/cli/graph.d.ts +1 -1
  194. package/dist/cli/graph.js +15 -11
  195. package/dist/cli/hook-runtime.d.ts +34 -10
  196. package/dist/cli/hook-runtime.js +41 -16
  197. package/dist/cli/incidents.d.ts +1 -1
  198. package/dist/cli/incidents.js +25 -25
  199. package/dist/cli/init.d.ts +1 -1
  200. package/dist/cli/init.js +35 -20
  201. package/dist/cli/install-steps.d.ts +12 -3
  202. package/dist/cli/install-steps.js +42 -18
  203. package/dist/cli/last-sleep.d.ts +4 -1
  204. package/dist/cli/last-sleep.js +9 -4
  205. package/dist/cli/maintenance.d.ts +1 -1
  206. package/dist/cli/maintenance.js +11 -12
  207. package/dist/cli/notes.d.ts +1 -1
  208. package/dist/cli/notes.js +8 -5
  209. package/dist/cli/object-verbs.d.ts +5 -5
  210. package/dist/cli/object-verbs.js +13 -16
  211. package/dist/cli/open-browser.js +11 -2
  212. package/dist/cli/playbooks.d.ts +3 -3
  213. package/dist/cli/playbooks.js +40 -32
  214. package/dist/cli/predictions.js +17 -22
  215. package/dist/cli/print.js +4 -2
  216. package/dist/cli/projects.js +21 -11
  217. package/dist/cli/quality-repair-once.d.ts +1 -1
  218. package/dist/cli/quality-repair-once.js +7 -6
  219. package/dist/cli/recall.js +129 -93
  220. package/dist/cli/refine-llm.d.ts +15 -4
  221. package/dist/cli/refine-llm.js +17 -7
  222. package/dist/cli/remember.js +51 -55
  223. package/dist/cli/scheduler.d.ts +4 -1
  224. package/dist/cli/scheduler.js +9 -5
  225. package/dist/cli/serve.js +28 -18
  226. package/dist/cli/session-hooks.d.ts +2 -6
  227. package/dist/cli/session-hooks.js +140 -112
  228. package/dist/cli/setup.d.ts +1 -1
  229. package/dist/cli/setup.js +56 -34
  230. package/dist/cli/shared.d.ts +4 -2
  231. package/dist/cli/shared.js +26 -11
  232. package/dist/cli/slack.js +15 -24
  233. package/dist/cli/sleep-render.d.ts +3 -1
  234. package/dist/cli/sleep-render.js +8 -5
  235. package/dist/cli/sleep.js +16 -8
  236. package/dist/cli/status.d.ts +4 -4
  237. package/dist/cli/status.js +32 -27
  238. package/dist/cli/stdin.d.ts +10 -3
  239. package/dist/cli/stdin.js +10 -3
  240. package/dist/cli/transfer.d.ts +4 -4
  241. package/dist/cli/transfer.js +97 -82
  242. package/dist/cli/usage.d.ts +1 -1
  243. package/dist/cli/usage.js +1 -1
  244. package/dist/cli/verb-row.d.ts +2 -0
  245. package/dist/cli/verbs/health.js +2 -0
  246. package/dist/cli/verbs/memory.js +47 -53
  247. package/dist/cli/verbs/objects.js +16 -7
  248. package/dist/cli/verbs/sessions.js +4 -2
  249. package/dist/cli/versioned-verbs.d.ts +8 -7
  250. package/dist/cli/versioned-verbs.js +31 -21
  251. package/dist/cli.js +14 -18
  252. package/dist/connectors/dlq.d.ts +6 -6
  253. package/dist/connectors/dlq.js +12 -7
  254. package/dist/connectors/github/backfill.d.ts +4 -4
  255. package/dist/connectors/github/backfill.js +6 -4
  256. package/dist/connectors/github/deletion.d.ts +6 -4
  257. package/dist/connectors/github/deletion.js +5 -4
  258. package/dist/connectors/github/dlq.d.ts +8 -6
  259. package/dist/connectors/github/dlq.js +11 -5
  260. package/dist/connectors/github/ingest.d.ts +2 -2
  261. package/dist/connectors/github/ingest.js +9 -5
  262. package/dist/connectors/github/octokit-client.d.ts +3 -1
  263. package/dist/connectors/github/octokit-client.js +7 -2
  264. package/dist/connectors/github/ratelimit.d.ts +6 -2
  265. package/dist/connectors/github/ratelimit.js +6 -2
  266. package/dist/connectors/github/signature.d.ts +14 -3
  267. package/dist/connectors/github/signature.js +17 -3
  268. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  269. package/dist/connectors/github/tenant-routing.js +6 -5
  270. package/dist/connectors/github/transform.js +50 -67
  271. package/dist/connectors/github/types.d.ts +10 -3
  272. package/dist/connectors/github/types.js +6 -2
  273. package/dist/connectors/github/webhook.d.ts +5 -5
  274. package/dist/connectors/github/webhook.js +36 -23
  275. package/dist/connectors/ingest.d.ts +5 -3
  276. package/dist/connectors/ingest.js +3 -3
  277. package/dist/connectors/slack/backfill.d.ts +5 -5
  278. package/dist/connectors/slack/backfill.js +3 -3
  279. package/dist/connectors/slack/deletion.d.ts +4 -4
  280. package/dist/connectors/slack/deletion.js +6 -5
  281. package/dist/connectors/slack/dlq.d.ts +4 -4
  282. package/dist/connectors/slack/dlq.js +6 -6
  283. package/dist/connectors/slack/ingest.d.ts +6 -4
  284. package/dist/connectors/slack/ingest.js +5 -4
  285. package/dist/connectors/slack/signature.d.ts +4 -1
  286. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  287. package/dist/connectors/slack/tenant-routing.js +6 -5
  288. package/dist/connectors/slack/transform.d.ts +6 -2
  289. package/dist/connectors/slack/transform.js +6 -2
  290. package/dist/connectors/slack/types.d.ts +3 -1
  291. package/dist/connectors/slack/web-client.js +8 -3
  292. package/dist/connectors/slack/webhook.d.ts +5 -5
  293. package/dist/connectors/slack/webhook.js +19 -11
  294. package/dist/connectors/slack/workspaces.d.ts +7 -3
  295. package/dist/connectors/slack/workspaces.js +7 -3
  296. package/dist/connectors/store.d.ts +8 -0
  297. package/dist/connectors/store.js +2 -0
  298. package/dist/consolidate/conflicts.js +24 -10
  299. package/dist/consolidate/dag-summary.js +2 -1
  300. package/dist/consolidate/dag.d.ts +10 -5
  301. package/dist/consolidate/dag.js +45 -39
  302. package/dist/consolidate/decay.js +19 -6
  303. package/dist/consolidate/dedupe.d.ts +14 -5
  304. package/dist/consolidate/dedupe.js +28 -17
  305. package/dist/consolidate/flush-units.d.ts +4 -1
  306. package/dist/consolidate/flush-units.js +4 -1
  307. package/dist/consolidate/half-life-migration.d.ts +18 -8
  308. package/dist/consolidate/half-life-migration.js +48 -18
  309. package/dist/consolidate/llm-passes.js +27 -11
  310. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  311. package/dist/consolidate/memory-value-weights.js +6 -2
  312. package/dist/consolidate/memory-value.d.ts +30 -10
  313. package/dist/consolidate/memory-value.js +37 -14
  314. package/dist/consolidate/merge.d.ts +4 -1
  315. package/dist/consolidate/merge.js +47 -37
  316. package/dist/consolidate/overlap-index.d.ts +8 -2
  317. package/dist/consolidate/overlap-index.js +11 -4
  318. package/dist/consolidate/physics-pass.d.ts +3 -1
  319. package/dist/consolidate/physics-pass.js +10 -7
  320. package/dist/consolidate/replay.d.ts +11 -4
  321. package/dist/consolidate/replay.js +19 -7
  322. package/dist/consolidate/run.d.ts +13 -5
  323. package/dist/consolidate/run.js +4 -4
  324. package/dist/consolidate/sleep.d.ts +14 -6
  325. package/dist/consolidate/sleep.js +42 -39
  326. package/dist/consolidate/trace.d.ts +7 -2
  327. package/dist/consolidate/trace.js +7 -2
  328. package/dist/consolidate/traces.js +27 -30
  329. package/dist/core/ablation.d.ts +9 -3
  330. package/dist/core/ablation.js +14 -4
  331. package/dist/core/active-scope.d.ts +3 -1
  332. package/dist/core/active-scope.js +3 -1
  333. package/dist/core/agent-memory-tools.d.ts +2 -0
  334. package/dist/core/agent-memory-tools.js +2 -0
  335. package/dist/core/ambient.d.ts +4 -3
  336. package/dist/core/ambient.js +8 -6
  337. package/dist/core/api-errors.d.ts +9 -3
  338. package/dist/core/api-errors.js +9 -3
  339. package/dist/core/capture-contract.d.ts +4 -1
  340. package/dist/core/capture-contract.js +27 -8
  341. package/dist/core/compare.d.ts +24 -8
  342. package/dist/core/compare.js +24 -8
  343. package/dist/core/config.d.ts +18 -9
  344. package/dist/core/config.js +38 -29
  345. package/dist/core/cosine.d.ts +4 -1
  346. package/dist/core/cosine.js +4 -1
  347. package/dist/core/handoff.d.ts +7 -2
  348. package/dist/core/handoff.js +4 -1
  349. package/dist/core/markdown.js +22 -17
  350. package/dist/core/memory-audit.js +14 -3
  351. package/dist/core/memory-quality.d.ts +12 -3
  352. package/dist/core/memory-quality.js +57 -21
  353. package/dist/core/memory.d.ts +87 -30
  354. package/dist/core/memory.js +82 -33
  355. package/dist/core/merged-row.d.ts +8 -2
  356. package/dist/core/merged-row.js +10 -3
  357. package/dist/core/package-root.d.ts +3 -1
  358. package/dist/core/package-root.js +3 -1
  359. package/dist/core/particle-refresh.d.ts +8 -0
  360. package/dist/core/particle-refresh.js +22 -0
  361. package/dist/core/physics-config.d.ts +4 -1
  362. package/dist/core/physics-config.js +6 -2
  363. package/dist/core/physics.d.ts +39 -11
  364. package/dist/core/physics.js +71 -21
  365. package/dist/core/project-identity.d.ts +34 -17
  366. package/dist/core/project-identity.js +35 -18
  367. package/dist/core/project-remote.d.ts +8 -4
  368. package/dist/core/project-remote.js +31 -14
  369. package/dist/core/recall-scope.d.ts +33 -11
  370. package/dist/core/recall-scope.js +42 -15
  371. package/dist/core/rejection-digest.d.ts +7 -0
  372. package/dist/core/rejection-digest.js +13 -0
  373. package/dist/core/salience.d.ts +3 -1
  374. package/dist/core/salience.js +10 -4
  375. package/dist/core/search-types.d.ts +15 -2
  376. package/dist/core/search-types.js +11 -0
  377. package/dist/dashboard/dashboard-actions.d.ts +2 -2
  378. package/dist/dashboard/dashboard-actions.js +18 -7
  379. package/dist/dashboard/dashboard-queries.js +2 -7
  380. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  381. package/dist/dashboard/dashboard-snapshot.js +5 -7
  382. package/dist/dashboard/dashboard.js +22 -8
  383. package/dist/db/backup.js +2 -2
  384. package/dist/db/busy.d.ts +10 -3
  385. package/dist/db/busy.js +27 -5
  386. package/dist/db/connect.d.ts +10 -2
  387. package/dist/db/connect.js +8 -2
  388. package/dist/db/continuity.d.ts +1 -1
  389. package/dist/db/continuity.js +27 -11
  390. package/dist/db/meta.d.ts +4 -1
  391. package/dist/db/meta.js +4 -1
  392. package/dist/db/migrate.d.ts +10 -5
  393. package/dist/db/migrate.js +40 -20
  394. package/dist/db/migrations/index.d.ts +1 -1
  395. package/dist/db/migrations/index.js +3 -1
  396. package/dist/db/migrations/types.d.ts +2 -1
  397. package/dist/db/migrations/v11.js +1 -0
  398. package/dist/db/migrations/v12.js +2 -1
  399. package/dist/db/migrations/v14.js +2 -0
  400. package/dist/db/migrations/v15.js +4 -2
  401. package/dist/db/migrations/v16.js +6 -3
  402. package/dist/db/migrations/v17.js +2 -1
  403. package/dist/db/migrations/v19.js +4 -2
  404. package/dist/db/migrations/v20.js +2 -1
  405. package/dist/db/migrations/v22.js +12 -6
  406. package/dist/db/migrations/v23.js +6 -3
  407. package/dist/db/migrations/v24.js +6 -3
  408. package/dist/db/migrations/v25.js +4 -2
  409. package/dist/db/migrations/v26.js +4 -2
  410. package/dist/db/migrations/v27.js +6 -3
  411. package/dist/db/migrations/v28.js +4 -2
  412. package/dist/db/migrations/v29.js +4 -2
  413. package/dist/db/migrations/v30.js +6 -3
  414. package/dist/db/migrations/v31.js +4 -2
  415. package/dist/db/migrations/v32.js +6 -3
  416. package/dist/db/migrations/v33.js +4 -2
  417. package/dist/db/migrations/v34.js +2 -1
  418. package/dist/db/migrations/v35.js +2 -1
  419. package/dist/db/migrations/v36.js +2 -1
  420. package/dist/db/migrations/v37.js +10 -5
  421. package/dist/db/migrations/v38.js +10 -5
  422. package/dist/db/migrations/v39.js +14 -6
  423. package/dist/db/migrations/v40.js +4 -2
  424. package/dist/db/migrations/v41.js +4 -2
  425. package/dist/db/migrations/v42.js +2 -1
  426. package/dist/db/migrations/v44.js +4 -2
  427. package/dist/db/migrations/v45.js +4 -2
  428. package/dist/db/migrations/v49.js +2 -1
  429. package/dist/db/migrations/v50.js +4 -2
  430. package/dist/db/migrations/v51.js +4 -2
  431. package/dist/db/migrations/v52.js +2 -1
  432. package/dist/db/migrations/v53.js +8 -4
  433. package/dist/db/migrations/v54.js +2 -1
  434. package/dist/db/migrations/v55.js +4 -2
  435. package/dist/db/migrations/v56.d.ts +3 -0
  436. package/dist/db/migrations/v56.js +28 -0
  437. package/dist/db/open.d.ts +24 -12
  438. package/dist/db/open.js +25 -13
  439. package/dist/db/physics-state.d.ts +8 -8
  440. package/dist/db/physics-state.js +17 -50
  441. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  442. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  443. package/dist/db/request-stores.d.ts +20 -5
  444. package/dist/db/request-stores.js +15 -5
  445. package/dist/db/tables.d.ts +2 -1
  446. package/dist/db/tables.js +12 -4
  447. package/dist/db/vector-store.d.ts +13 -4
  448. package/dist/db/vector-store.js +35 -14
  449. package/dist/db/wal-checkpointer.d.ts +2 -1
  450. package/dist/db/wal-checkpointer.js +19 -7
  451. package/dist/doctor.d.ts +7 -1
  452. package/dist/doctor.js +128 -46
  453. package/dist/embeddings/local.d.ts +8 -4
  454. package/dist/embeddings/local.js +11 -7
  455. package/dist/embeddings/provider.d.ts +19 -10
  456. package/dist/embeddings/provider.js +32 -27
  457. package/dist/embeddings/transformers.d.ts +16 -4
  458. package/dist/embeddings/transformers.js +32 -15
  459. package/dist/entry/json-hooks.d.ts +1 -1
  460. package/dist/entry/json-hooks.js +1 -1
  461. package/dist/entry/project-identity.js +2 -1
  462. package/dist/entry/session-text.d.ts +1 -1
  463. package/dist/entry/session-text.js +1 -1
  464. package/dist/entry/sqlite-handles.d.ts +10 -0
  465. package/dist/entry/sqlite-handles.js +9 -0
  466. package/dist/entry/store-kit.d.ts +50 -0
  467. package/dist/entry/store-kit.js +27 -0
  468. package/dist/entry/testing.d.ts +6 -0
  469. package/dist/entry/testing.js +7 -0
  470. package/dist/eval/eval-stats.d.ts +27 -8
  471. package/dist/eval/eval-stats.js +17 -5
  472. package/dist/eval/eval-suite.d.ts +3 -1
  473. package/dist/eval/eval-suite.js +409 -187
  474. package/dist/eval/eval.d.ts +8 -2
  475. package/dist/eval/eval.js +8 -2
  476. package/dist/eval/judgment.js +17 -7
  477. package/dist/graph/delta.d.ts +9 -42
  478. package/dist/graph/delta.js +17 -11
  479. package/dist/graph/extract.d.ts +10 -7
  480. package/dist/graph/extract.js +57 -25
  481. package/dist/graph/recall.d.ts +12 -4
  482. package/dist/graph/recall.js +30 -13
  483. package/dist/graph/stream.d.ts +18 -6
  484. package/dist/graph/stream.js +32 -10
  485. package/dist/graph/view.d.ts +19 -6
  486. package/dist/graph/view.js +42 -17
  487. package/dist/hooks/codex-session.js +2 -2
  488. package/dist/hooks/codex-wrapper.d.ts +3 -1
  489. package/dist/hooks/codex-wrapper.js +9 -4
  490. package/dist/hooks/copilot.d.ts +19 -5
  491. package/dist/hooks/copilot.js +54 -15
  492. package/dist/hooks/hook-blocks.d.ts +4 -1
  493. package/dist/hooks/hook-blocks.js +8 -3
  494. package/dist/hooks/json-hooks.d.ts +9 -5
  495. package/dist/hooks/json-hooks.js +72 -33
  496. package/dist/hooks/opencode.js +15 -5
  497. package/dist/hooks/shared.d.ts +27 -8
  498. package/dist/hooks/shared.js +57 -16
  499. package/dist/importers/core.d.ts +12 -4
  500. package/dist/importers/core.js +11 -10
  501. package/dist/importers/markdown-parse.d.ts +15 -5
  502. package/dist/importers/markdown-parse.js +16 -7
  503. package/dist/importers/markdown.js +6 -9
  504. package/dist/importers/sources.js +10 -23
  505. package/dist/importers/vault.d.ts +3 -3
  506. package/dist/importers/vault.js +61 -45
  507. package/dist/index.d.ts +33 -7
  508. package/dist/index.js +26 -8
  509. package/dist/learn/autolearn.d.ts +21 -6
  510. package/dist/learn/autolearn.js +57 -26
  511. package/dist/learn/churn-git.d.ts +4 -1
  512. package/dist/learn/churn-git.js +29 -5
  513. package/dist/learn/extract.d.ts +4 -1
  514. package/dist/learn/extract.js +17 -10
  515. package/dist/learn/forward-claim-detector.d.ts +17 -5
  516. package/dist/learn/forward-claim-detector.js +34 -15
  517. package/dist/learn/invalidation.d.ts +12 -6
  518. package/dist/learn/invalidation.js +62 -28
  519. package/dist/learn/roots.d.ts +3 -0
  520. package/dist/learn/roots.js +5 -0
  521. package/dist/mcp/admin-tools.d.ts +5 -5
  522. package/dist/mcp/admin-tools.js +28 -23
  523. package/dist/mcp/format.d.ts +1 -1
  524. package/dist/mcp/format.js +4 -2
  525. package/dist/mcp/framing.d.ts +3 -1
  526. package/dist/mcp/framing.js +20 -8
  527. package/dist/mcp/memory-tools.d.ts +3 -3
  528. package/dist/mcp/memory-tools.js +21 -20
  529. package/dist/mcp/protocol.d.ts +32 -16
  530. package/dist/mcp/protocol.js +12 -9
  531. package/dist/mcp/recall-tools.d.ts +3 -3
  532. package/dist/mcp/recall-tools.js +62 -74
  533. package/dist/mcp/request.d.ts +7 -5
  534. package/dist/mcp/request.js +61 -77
  535. package/dist/mcp/server.d.ts +3 -1
  536. package/dist/mcp/server.js +8 -3
  537. package/dist/mcp/session-state.d.ts +1 -1
  538. package/dist/mcp/session-state.js +4 -3
  539. package/dist/mcp/shared-gate.d.ts +3 -2
  540. package/dist/mcp/shared-gate.js +3 -2
  541. package/dist/mcp/stdio.d.ts +6 -3
  542. package/dist/mcp/stdio.js +59 -23
  543. package/dist/mcp/tool-args.d.ts +4 -1
  544. package/dist/mcp/tool-args.js +8 -3
  545. package/dist/mcp/tools.js +76 -32
  546. package/dist/objects/customer-notes.d.ts +12 -10
  547. package/dist/objects/customer-notes.js +21 -15
  548. package/dist/objects/decisions.d.ts +18 -10
  549. package/dist/objects/decisions.js +23 -17
  550. package/dist/objects/descriptor.js +2 -1
  551. package/dist/objects/fields.d.ts +4 -1
  552. package/dist/objects/fields.js +6 -2
  553. package/dist/objects/incidents.d.ts +14 -16
  554. package/dist/objects/incidents.js +29 -30
  555. package/dist/objects/lifecycle.d.ts +0 -4
  556. package/dist/objects/lifecycle.js +21 -24
  557. package/dist/objects/policies.d.ts +12 -16
  558. package/dist/objects/policies.js +17 -21
  559. package/dist/objects/processes.d.ts +16 -10
  560. package/dist/objects/processes.js +20 -15
  561. package/dist/objects/project-briefs.d.ts +13 -14
  562. package/dist/objects/project-briefs.js +33 -39
  563. package/dist/objects/skills.d.ts +10 -12
  564. package/dist/objects/skills.js +17 -22
  565. package/dist/postinstall.js +15 -7
  566. package/dist/predictions/planning-fallacy.d.ts +19 -6
  567. package/dist/predictions/planning-fallacy.js +4 -2
  568. package/dist/rerankers/clef.d.ts +8 -2
  569. package/dist/rerankers/clef.js +14 -9
  570. package/dist/rerankers/cross-encoder.d.ts +2 -1
  571. package/dist/rerankers/cross-encoder.js +19 -9
  572. package/dist/rerankers/index.js +2 -1
  573. package/dist/rerankers/jev.js +2 -1
  574. package/dist/rerankers/llm.d.ts +6 -2
  575. package/dist/rerankers/llm.js +8 -3
  576. package/dist/rerankers/remote.d.ts +3 -1
  577. package/dist/rerankers/remote.js +5 -2
  578. package/dist/rerankers/types.d.ts +6 -2
  579. package/dist/search/bm25-search.d.ts +3 -1
  580. package/dist/search/bm25-search.js +15 -2
  581. package/dist/search/boosts.js +4 -3
  582. package/dist/search/embed-memories.d.ts +12 -4
  583. package/dist/search/embed-memories.js +96 -58
  584. package/dist/search/engine.d.ts +11 -0
  585. package/dist/search/engine.js +14 -0
  586. package/dist/search/goal-boost.d.ts +10 -3
  587. package/dist/search/goal-boost.js +13 -6
  588. package/dist/search/hybrid-score.d.ts +4 -1
  589. package/dist/search/hybrid-score.js +4 -1
  590. package/dist/search/hybrid.d.ts +23 -8
  591. package/dist/search/hybrid.js +12 -7
  592. package/dist/search/multihop.js +14 -13
  593. package/dist/search/path-context.d.ts +10 -3
  594. package/dist/search/path-context.js +10 -3
  595. package/dist/search/physics-search.d.ts +9 -4
  596. package/dist/search/physics-search.js +38 -14
  597. package/dist/search/rerank.d.ts +2 -1
  598. package/dist/search/rerank.js +2 -1
  599. package/dist/search/rrf.d.ts +14 -5
  600. package/dist/search/rrf.js +11 -4
  601. package/dist/search/vector.d.ts +8 -2
  602. package/dist/search/vector.js +14 -8
  603. package/dist/server/auth.d.ts +19 -15
  604. package/dist/server/auth.js +68 -38
  605. package/dist/server/boot.d.ts +4 -1
  606. package/dist/server/boot.js +115 -67
  607. package/dist/server/client-ip.d.ts +17 -5
  608. package/dist/server/client-ip.js +56 -21
  609. package/dist/server/cursor.d.ts +10 -3
  610. package/dist/server/cursor.js +10 -3
  611. package/dist/server/deadline.d.ts +5 -2
  612. package/dist/server/deadline.js +10 -3
  613. package/dist/server/key-check-bounds.js +12 -4
  614. package/dist/server/lifecycle.d.ts +4 -1
  615. package/dist/server/lifecycle.js +10 -4
  616. package/dist/server/mcp-http.d.ts +2 -1
  617. package/dist/server/mcp-http.js +37 -22
  618. package/dist/server/rate-limit.d.ts +17 -5
  619. package/dist/server/rate-limit.js +55 -26
  620. package/dist/server/ready.js +7 -4
  621. package/dist/server/request.d.ts +15 -4
  622. package/dist/server/request.js +42 -15
  623. package/dist/server/route-checks.d.ts +4 -1
  624. package/dist/server/route-checks.js +8 -3
  625. package/dist/server/route-table.d.ts +8 -6
  626. package/dist/server/route-table.js +550 -97
  627. package/dist/server/routes/admin.d.ts +7 -7
  628. package/dist/server/routes/admin.js +36 -15
  629. package/dist/server/routes/customer-notes.d.ts +5 -5
  630. package/dist/server/routes/customer-notes.js +5 -4
  631. package/dist/server/routes/decisions.d.ts +5 -5
  632. package/dist/server/routes/decisions.js +12 -6
  633. package/dist/server/routes/incidents.d.ts +5 -5
  634. package/dist/server/routes/incidents.js +10 -4
  635. package/dist/server/routes/memories.d.ts +8 -8
  636. package/dist/server/routes/memories.js +12 -17
  637. package/dist/server/routes/object-routes.d.ts +8 -5
  638. package/dist/server/routes/object-routes.js +4 -2
  639. package/dist/server/routes/policies.d.ts +6 -6
  640. package/dist/server/routes/policies.js +11 -4
  641. package/dist/server/routes/predictions.d.ts +5 -5
  642. package/dist/server/routes/predictions.js +9 -4
  643. package/dist/server/routes/processes.d.ts +5 -5
  644. package/dist/server/routes/processes.js +15 -6
  645. package/dist/server/routes/project-briefs.d.ts +6 -6
  646. package/dist/server/routes/project-briefs.js +3 -2
  647. package/dist/server/routes/recall.d.ts +3 -3
  648. package/dist/server/routes/recall.js +21 -10
  649. package/dist/server/routes/skills.d.ts +6 -6
  650. package/dist/server/routes/skills.js +12 -4
  651. package/dist/server/server-detect.d.ts +24 -8
  652. package/dist/server/server-detect.js +57 -22
  653. package/dist/server/sleep-child.js +16 -10
  654. package/dist/server/sleep-offload.d.ts +8 -5
  655. package/dist/server/sleep-offload.js +40 -18
  656. package/dist/server/tls.d.ts +10 -2
  657. package/dist/server/tls.js +25 -5
  658. package/dist/server/types.d.ts +41 -24
  659. package/dist/server/validation.d.ts +4 -1
  660. package/dist/server/validation.js +22 -9
  661. package/dist/server.d.ts +17 -49
  662. package/dist/server.js +33 -40
  663. package/dist/sharing/global-store.d.ts +6 -12
  664. package/dist/sharing/global-store.js +8 -48
  665. package/dist/sharing/global-sync.d.ts +3 -1
  666. package/dist/sharing/global-sync.js +17 -7
  667. package/dist/sharing/project-merge.d.ts +25 -7
  668. package/dist/sharing/project-merge.js +49 -17
  669. package/dist/sharing/search-both.d.ts +8 -4
  670. package/dist/sharing/search-both.js +28 -14
  671. package/dist/sharing/share.d.ts +8 -4
  672. package/dist/sharing/share.js +40 -18
  673. package/dist/store/ambient.js +10 -5
  674. package/dist/store/audit-event.d.ts +2 -2
  675. package/dist/store/audit-event.js +8 -3
  676. package/dist/store/audit.d.ts +6 -3
  677. package/dist/store/audit.js +16 -6
  678. package/dist/store/auth.d.ts +4 -2
  679. package/dist/store/auth.js +63 -20
  680. package/dist/store/busy.d.ts +9 -0
  681. package/dist/store/busy.js +16 -0
  682. package/dist/store/candidates.d.ts +12 -5
  683. package/dist/store/candidates.js +90 -41
  684. package/dist/store/capture-write.d.ts +2 -1
  685. package/dist/store/capture-write.js +2 -1
  686. package/dist/store/card-detail.d.ts +4 -4
  687. package/dist/store/card-detail.js +15 -8
  688. package/dist/store/cards.d.ts +24 -10
  689. package/dist/store/cards.js +97 -63
  690. package/dist/store/compaction-caller.d.ts +2 -1
  691. package/dist/store/compaction-caller.js +2 -1
  692. package/dist/store/compactions-record.d.ts +14 -8
  693. package/dist/store/compactions-record.js +101 -37
  694. package/dist/store/compactions.js +35 -15
  695. package/dist/store/conflicts.d.ts +16 -5
  696. package/dist/store/conflicts.js +104 -48
  697. package/dist/store/connectors/dlq.d.ts +17 -5
  698. package/dist/store/connectors/dlq.js +58 -6
  699. package/dist/store/connectors/event-log.d.ts +122 -0
  700. package/dist/store/connectors/event-log.js +25 -0
  701. package/dist/store/connectors/github.d.ts +6 -3
  702. package/dist/store/connectors/github.js +30 -48
  703. package/dist/store/connectors/slack.d.ts +2 -1
  704. package/dist/store/connectors/slack.js +31 -47
  705. package/dist/store/dashboard-reads.d.ts +7 -3
  706. package/dist/store/dashboard-reads.js +32 -10
  707. package/dist/store/delete-and-batch.d.ts +17 -11
  708. package/dist/store/delete-and-batch.js +70 -28
  709. package/dist/store/delivery-recorder.d.ts +10 -7
  710. package/dist/store/delivery-recorder.js +70 -37
  711. package/dist/store/descendant-page.d.ts +2 -1
  712. package/dist/store/descendant-page.js +26 -10
  713. package/dist/store/diagnostics.d.ts +2 -1
  714. package/dist/store/diagnostics.js +2 -1
  715. package/dist/store/doctor-reads.d.ts +2 -1
  716. package/dist/store/doctor-reads.js +13 -5
  717. package/dist/store/dormant.d.ts +19 -11
  718. package/dist/store/dormant.js +45 -19
  719. package/dist/store/embeddings/index.d.ts +13 -9
  720. package/dist/store/embeddings/index.js +19 -12
  721. package/dist/store/entry-reads.d.ts +72 -21
  722. package/dist/store/entry-reads.js +215 -69
  723. package/dist/store/entry-row.d.ts +10 -6
  724. package/dist/store/entry-row.js +26 -14
  725. package/dist/store/entry-writes.d.ts +28 -13
  726. package/dist/store/entry-writes.js +61 -22
  727. package/dist/store/failure-log-at.js +1 -1
  728. package/dist/store/failure-log.d.ts +4 -2
  729. package/dist/store/failure-log.js +13 -6
  730. package/dist/store/gated-write.d.ts +3 -3
  731. package/dist/store/gated-write.js +3 -3
  732. package/dist/store/goals.d.ts +5 -4
  733. package/dist/store/goals.js +11 -12
  734. package/dist/store/graph-apply.d.ts +21 -0
  735. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  736. package/dist/store/graph-queue.d.ts +9 -6
  737. package/dist/store/graph-queue.js +15 -10
  738. package/dist/store/graph-reads.d.ts +16 -11
  739. package/dist/store/graph-reads.js +29 -19
  740. package/dist/store/graph-rows.d.ts +41 -3
  741. package/dist/store/graph-rows.js +10 -7
  742. package/dist/store/graph-view-rows.js +15 -7
  743. package/dist/store/graph-writes.d.ts +16 -10
  744. package/dist/store/graph-writes.js +59 -36
  745. package/dist/store/half-life.js +2 -2
  746. package/dist/store/handoffs.d.ts +13 -7
  747. package/dist/store/handoffs.js +44 -22
  748. package/dist/store/index-and-stats.d.ts +2 -2
  749. package/dist/store/index-and-stats.js +6 -5
  750. package/dist/store/index.d.ts +4 -2
  751. package/dist/store/index.js +2 -1
  752. package/dist/store/key-audit.d.ts +2 -1
  753. package/dist/store/key-audit.js +2 -1
  754. package/dist/store/key-writes.d.ts +2 -1
  755. package/dist/store/key-writes.js +9 -2
  756. package/dist/store/ledger-turn.d.ts +4 -1
  757. package/dist/store/ledger-turn.js +7 -2
  758. package/dist/store/mirrors.d.ts +11 -4
  759. package/dist/store/mirrors.js +96 -19
  760. package/dist/store/narrow.d.ts +6 -0
  761. package/dist/store/narrow.js +11 -0
  762. package/dist/store/open.d.ts +6 -3
  763. package/dist/store/open.js +20 -10
  764. package/dist/store/pilot-arm.d.ts +2 -1
  765. package/dist/store/pilot-arm.js +18 -6
  766. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  767. package/dist/store/planning-fallacy-evidence.js +8 -5
  768. package/dist/store/port/agent-import.d.ts +62 -0
  769. package/dist/store/port/agent-import.js +2 -0
  770. package/dist/store/port/consolidation.d.ts +129 -0
  771. package/dist/store/port/consolidation.js +2 -0
  772. package/dist/store/port/learning.d.ts +19 -0
  773. package/dist/store/port/learning.js +2 -0
  774. package/dist/store/port/local-files.d.ts +18 -0
  775. package/dist/store/port/local-files.js +2 -0
  776. package/dist/store/port/promotion.d.ts +20 -0
  777. package/dist/store/port/promotion.js +3 -0
  778. package/dist/store/port-groups.d.ts +160 -0
  779. package/dist/store/port-groups.js +2 -0
  780. package/dist/store/port.d.ts +261 -219
  781. package/dist/store/port.js +3 -9
  782. package/dist/store/predictions.d.ts +14 -10
  783. package/dist/store/predictions.js +37 -17
  784. package/dist/store/project-tags.d.ts +4 -1
  785. package/dist/store/project-tags.js +16 -5
  786. package/dist/store/quality-repair.d.ts +8 -4
  787. package/dist/store/quality-repair.js +53 -20
  788. package/dist/store/quarantine.d.ts +1 -0
  789. package/dist/store/quarantine.js +23 -9
  790. package/dist/store/raw-archive.d.ts +5 -4
  791. package/dist/store/raw-archive.js +11 -10
  792. package/dist/store/recall-trace.d.ts +22 -17
  793. package/dist/store/recall-trace.js +128 -64
  794. package/dist/store/rejected-values.d.ts +15 -10
  795. package/dist/store/rejected-values.js +46 -20
  796. package/dist/store/rejection.d.ts +12 -11
  797. package/dist/store/rejection.js +18 -19
  798. package/dist/store/report-reads.d.ts +2 -1
  799. package/dist/store/report-reads.js +2 -1
  800. package/dist/store/rows.d.ts +7 -5
  801. package/dist/store/rows.js +20 -13
  802. package/dist/store/rule-sql.d.ts +7 -3
  803. package/dist/store/rule-sql.js +26 -13
  804. package/dist/store/search-rows.d.ts +16 -11
  805. package/dist/store/search-rows.js +54 -32
  806. package/dist/store/sessions.d.ts +12 -10
  807. package/dist/store/sessions.js +40 -21
  808. package/dist/store/set-aside.d.ts +2 -2
  809. package/dist/store/set-aside.js +18 -5
  810. package/dist/store/sqlite/agent-import.d.ts +3 -0
  811. package/dist/store/sqlite/agent-import.js +77 -0
  812. package/dist/store/sqlite/cards-group.d.ts +6 -0
  813. package/dist/store/sqlite/cards-group.js +37 -0
  814. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  815. package/dist/store/sqlite/conflicts-group.js +18 -0
  816. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  817. package/dist/store/sqlite/connector-events-group.js +17 -6
  818. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  819. package/dist/store/sqlite/connector-writes-group.js +12 -5
  820. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  821. package/dist/store/sqlite/consolidation-group.js +64 -0
  822. package/dist/store/sqlite/dag-reads-group.js +1 -1
  823. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  824. package/dist/store/sqlite/dormant-group.js +29 -0
  825. package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
  826. package/dist/store/sqlite/entry-writes-group.js +37 -14
  827. package/dist/store/sqlite/error-codec.d.ts +4 -2
  828. package/dist/store/sqlite/error-codec.js +32 -10
  829. package/dist/store/sqlite/executor-counts.js +2 -1
  830. package/dist/store/sqlite/executor.d.ts +8 -3
  831. package/dist/store/sqlite/executor.js +56 -18
  832. package/dist/store/sqlite/global-promote.d.ts +5 -0
  833. package/dist/store/sqlite/global-promote.js +48 -0
  834. package/dist/store/sqlite/goals-group.d.ts +6 -0
  835. package/dist/store/sqlite/goals-group.js +23 -0
  836. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  837. package/dist/store/sqlite/graph-reads-group.js +2 -1
  838. package/dist/store/sqlite/held-connection.d.ts +8 -0
  839. package/dist/store/sqlite/held-connection.js +34 -7
  840. package/dist/store/sqlite/last-recall-group.d.ts +15 -0
  841. package/dist/store/sqlite/last-recall-group.js +62 -0
  842. package/dist/store/sqlite/learning-group.d.ts +4 -0
  843. package/dist/store/sqlite/learning-group.js +17 -0
  844. package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
  845. package/dist/store/sqlite/maintenance-groups.js +61 -0
  846. package/dist/store/sqlite/object-rows.d.ts +6 -3
  847. package/dist/store/sqlite/object-rows.js +34 -5
  848. package/dist/store/sqlite/objects-group.d.ts +5 -4
  849. package/dist/store/sqlite/objects-group.js +97 -38
  850. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  851. package/dist/store/sqlite/predictions-group.js +4 -2
  852. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  853. package/dist/store/sqlite/promotion-group.js +10 -0
  854. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  855. package/dist/store/sqlite/quarantine-group.js +4 -2
  856. package/dist/store/sqlite/reports-group.d.ts +6 -0
  857. package/dist/store/sqlite/reports-group.js +33 -0
  858. package/dist/store/sqlite/request-scope.d.ts +6 -0
  859. package/dist/store/sqlite/request-scope.js +18 -0
  860. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  861. package/dist/store/sqlite/sessions-group.js +46 -0
  862. package/dist/store/sqlite/store.d.ts +22 -18
  863. package/dist/store/sqlite/store.js +95 -33
  864. package/dist/store/sqlite/vector-pack.js +2 -1
  865. package/dist/store/sqlite/vector-reads-group.js +2 -1
  866. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  867. package/dist/store/sqlite/worker-jobs.js +19 -7
  868. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  869. package/dist/store/sqlite/worker-ops.js +6 -3
  870. package/dist/store/sqlite/worker-store.d.ts +4 -3
  871. package/dist/store/sqlite/worker-store.js +24 -14
  872. package/dist/store/summaries.d.ts +25 -11
  873. package/dist/store/summaries.js +84 -27
  874. package/dist/store/summary-dirty.d.ts +2 -1
  875. package/dist/store/summary-dirty.js +2 -1
  876. package/dist/store/tenant.d.ts +3 -2
  877. package/dist/store/tenant.js +5 -4
  878. package/dist/store/token-ledger-rows.js +8 -4
  879. package/dist/store/token-ledger.d.ts +19 -13
  880. package/dist/store/token-ledger.js +27 -14
  881. package/dist/store/tombstone-checks.d.ts +4 -1
  882. package/dist/store/tombstone-checks.js +10 -1
  883. package/dist/store/usage-reports.js +2 -1
  884. package/dist/store/vector-index.d.ts +8 -5
  885. package/dist/store/vector-index.js +28 -11
  886. package/dist/store/working-memory.d.ts +6 -4
  887. package/dist/store/working-memory.js +14 -9
  888. package/dist/support-bundle.js +10 -5
  889. package/dist/trust/quarantine.d.ts +1 -2
  890. package/dist/trust/quarantine.js +1 -5
  891. package/dist/trust/reject-flow.d.ts +12 -3
  892. package/dist/trust/reject-flow.js +12 -4
  893. package/dist/util/anthropic-messages.d.ts +7 -2
  894. package/dist/util/anthropic-messages.js +18 -7
  895. package/dist/util/atomic-write.d.ts +8 -3
  896. package/dist/util/atomic-write.js +36 -21
  897. package/dist/util/compaction-items.d.ts +4 -1
  898. package/dist/util/compaction-items.js +8 -2
  899. package/dist/util/crash-handlers.d.ts +7 -2
  900. package/dist/util/crash-handlers.js +13 -4
  901. package/dist/util/env.d.ts +26 -5
  902. package/dist/util/env.js +87 -25
  903. package/dist/util/format.d.ts +2 -0
  904. package/dist/util/format.js +4 -0
  905. package/dist/util/home-path.js +12 -6
  906. package/dist/util/hook-payload.d.ts +3 -1
  907. package/dist/util/hook-payload.js +3 -1
  908. package/dist/util/http-retry.d.ts +12 -6
  909. package/dist/util/http-retry.js +16 -6
  910. package/dist/util/http-util.d.ts +20 -5
  911. package/dist/util/http-util.js +28 -9
  912. package/dist/util/json.d.ts +4 -1
  913. package/dist/util/json.js +4 -1
  914. package/dist/util/keyset.js +2 -1
  915. package/dist/util/limits.js +4 -2
  916. package/dist/util/log.d.ts +13 -5
  917. package/dist/util/log.js +29 -6
  918. package/dist/util/net.d.ts +5 -0
  919. package/dist/util/net.js +19 -0
  920. package/dist/util/real-path.d.ts +2 -1
  921. package/dist/util/real-path.js +4 -3
  922. package/dist/util/request-scope.d.ts +16 -4
  923. package/dist/util/request-scope.js +19 -6
  924. package/dist/util/same-text.d.ts +10 -3
  925. package/dist/util/same-text.js +10 -3
  926. package/dist/util/secret-detect.d.ts +24 -7
  927. package/dist/util/secret-detect.js +49 -14
  928. package/dist/util/spawn-argv.d.ts +11 -0
  929. package/dist/util/spawn-argv.js +66 -0
  930. package/dist/util/sql.d.ts +3 -0
  931. package/dist/util/sql.js +6 -0
  932. package/dist/util/sqlite-blocked.d.ts +15 -4
  933. package/dist/util/sqlite-blocked.js +19 -6
  934. package/dist/util/stored-json.d.ts +4 -1
  935. package/dist/util/stored-json.js +6 -2
  936. package/dist/util/stream-tee.d.ts +2 -1
  937. package/dist/util/stream-tee.js +8 -5
  938. package/dist/util/transcript-tail.d.ts +4 -1
  939. package/dist/util/transcript-tail.js +4 -1
  940. package/dist/util/vector-codec.d.ts +4 -0
  941. package/dist/util/vector-codec.js +15 -0
  942. package/dist/util/version.d.ts +8 -3
  943. package/dist/util/version.js +8 -3
  944. package/dist/util/write-budget.d.ts +7 -2
  945. package/dist/util/write-budget.js +5 -2
  946. package/dist/util/yaml.d.ts +4 -1
  947. package/dist/util/yaml.js +4 -1
  948. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  949. package/extensions/openclaw-plugin/package.json +1 -1
  950. package/openclaw.plugin.json +1 -1
  951. package/package.json +4 -1
  952. package/scripts/postinstall.cjs +3 -1
  953. package/dist/api/audit.js +0 -56
  954. package/dist/api/cards.d.ts +0 -42
  955. package/dist/api/conflicts.d.ts +0 -28
  956. package/dist/api/conflicts.js +0 -61
  957. package/dist/api/dormant.d.ts +0 -14
  958. package/dist/api/dormant.js +0 -58
  959. package/dist/api/goals.d.ts +0 -18
  960. package/dist/api/graph.d.ts +0 -8
  961. package/dist/api/graph.js +0 -7
  962. package/dist/api/learn.js +0 -124
  963. package/dist/api/memories.d.ts +0 -23
  964. package/dist/api/memories.js +0 -46
  965. package/dist/api/objects.d.ts +0 -9
  966. package/dist/api/on-store.d.ts +0 -16
  967. package/dist/api/on-store.js +0 -38
  968. package/dist/api/outcome.d.ts +0 -19
  969. package/dist/api/outcome.js +0 -21
  970. package/dist/api/predictions.d.ts +0 -11
  971. package/dist/api/promote.d.ts +0 -36
  972. package/dist/api/promote.js +0 -65
  973. package/dist/api/recall-core.d.ts +0 -4
  974. package/dist/api/recall-core.js +0 -120
  975. package/dist/api/recall-finish.d.ts +0 -53
  976. package/dist/api/recall-finish.js +0 -30
  977. package/dist/api/recall-history.d.ts +0 -64
  978. package/dist/api/recall-history.js +0 -159
  979. package/dist/api/recall-record.d.ts +0 -43
  980. package/dist/api/recall-record.js +0 -78
  981. package/dist/api/recall-request.js +0 -121
  982. package/dist/api/recall.d.ts +0 -6
  983. package/dist/api/refine.d.ts +0 -7
  984. package/dist/api/refine.js +0 -10
  985. package/dist/api/session-owners.d.ts +0 -4
  986. package/dist/api/session-owners.js +0 -17
  987. package/dist/api/sleep-run.d.ts +0 -26
  988. package/dist/api/sleep.js +0 -10
  989. package/dist/cli/lenient-id.d.ts +0 -2
  990. package/dist/cli/lenient-id.js +0 -13
  991. package/dist/graph/write.d.ts +0 -14
  992. package/dist/store/sqlite/busy.d.ts +0 -3
  993. package/dist/store/sqlite/busy.js +0 -8
  994. package/dist/store/sqlite/local.d.ts +0 -21
  995. package/dist/store/sqlite/local.js +0 -39
@@ -4,27 +4,43 @@ export { passesCliRecallScopeFilter, ScopeForbiddenError } from '../core/recall-
4
4
  export type { TokenSummary, TokenSurface, TokenSurfaceSummary } from '../store/token-ledger.js';
5
5
  export type { FailureSummary } from '../store/failure-log.js';
6
6
  export { classifyOriginProject } from '../core/project-identity.js';
7
- export * from './types.js';
8
- export * from './remember.js';
9
- export * from './remember-local.js';
10
- export * from './recall-types.js';
11
- export * from './recall.js';
12
- export * from './assemble.js';
13
- export * from './drill-down.js';
14
- export * from './outcome.js';
15
- export * from './forget.js';
16
- export * from './conflicts.js';
17
- export * from './projects.js';
18
- export * from './promote.js';
19
- export * from './auth.js';
20
- export * from './audit.js';
21
- export * from './context-types.js';
22
- export * from './context.js';
23
- export * from './tokens.js';
24
- export * from './dormant.js';
25
- export * from './quarantine.js';
26
- export * from './sleep.js';
27
- export * from './goals.js';
28
- export * from './learn.js';
29
- export * from './refine.js';
7
+ export { RecallContractError, adminActor, narrowContext, ownerOrSubject, requireHostAdmin } from './types.js';
8
+ export type { Actor, Context, ContextWith, HippoDbContext, StoreContext } from './types.js';
9
+ export { remember } from './memories/remember.js';
10
+ export type { RememberLocal, RememberOpts, RememberResult } from './memories/remember.js';
11
+ export { extractRememberedFacts, rememberLocally } from './memories/remember-local.js';
12
+ export type { FactExtraction, FactExtractionRequest, LocalRememberInput, LocalRememberOutcome, StartedWeak, } from './memories/remember-local.js';
13
+ export type { CliCoreInspection, CliCoreRanker, CliCoreRecall, ContinuityBlock, RecallOpts, RecallResult, RecallResultItem, RecallSuppressionSummary, ShownCliCore, ShownRanking, StoreRanking, } from './recall/types.js';
14
+ export { retrieve } from './recall/recall.js';
15
+ export { DEFAULT_ASSEMBLE_BUDGET, assemble } from './assemble.js';
16
+ export type { AssembleCost, AssembleOpts, AssembleResult, AssembledContextItem } from './assemble.js';
17
+ export { drillDown } from './objects/drill-down.js';
18
+ export type { DrillDownChild, DrillDownCost, DrillDownFailure, DrillDownOpts, DrillDownOutcome, DrillDownResult, DrillDownSummary, } from './objects/drill-down.js';
19
+ export { outcome, outcomeForLastRecall } from './memories/outcome.js';
20
+ export type { OutcomeForLastRecallResult, OutcomeResult } from './memories/outcome.js';
21
+ export { forget, reject, rejectOnHost, unreject } from './memories/forget.js';
22
+ export type { ForgetResult, RejectOpts, RejectResult } from './memories/forget.js';
23
+ export { listConflicts, listOpenConflicts, resolveMemoryConflict } from './memories/conflicts.js';
24
+ export type { ResolveMemoryConflictOpts, ResolveMemoryConflictResult } from './memories/conflicts.js';
25
+ export { listProjectNames, mergeProjectNames, repairProjectNames, repairProjectNamesOnce } from './objects/projects.js';
26
+ export type { MergeProjectNamesOpts, MergeResult, ProjectCollision, ProjectFold, ProjectSummary, RepairResult, } from './objects/projects.js';
27
+ export { archiveRaw, promote, supersede } from './memories/promote.js';
28
+ export type { ArchiveRawOpts, ArchiveRawResult, PromoteResult, SupersedeOverrides, SupersedeResult, } from './memories/promote.js';
29
+ export { DEFAULT_KEY_TTL_DAYS, MAX_TTL_DAYS, authCreate, authCreateSelf, authGrant, authKeyTenant, authListAllTenants, authListRows, authRevoke, authUngrant, } from './auth/auth.js';
30
+ export type { AuthCreateOpts, AuthCreateResult, AuthCreateSelfOpts, AuthCreateSelfResult, AuthGrantResult, AuthRevokeResult, } from './auth/auth.js';
31
+ export { auditList, auditMemoryQuality, computeCutoff, pruneAuditLog, removeAuditErrors, repairMemoryQuality, repairMemoryQualityOnce, } from './auth/audit.js';
32
+ export type { AuditListOpts, AuditPass, PruneAuditOpts, PruneAuditResult } from './auth/audit.js';
33
+ export type { ContextCost, ContextOpts, ContextResult, ContextResultEntry } from './context-types.js';
34
+ export { DEFAULT_CONTEXT_BUDGET, NO_QUERY, ambientSecretAdmit, getContext, oneCopyPerMemory } from './context.js';
35
+ export { failureSummary, recordTokens, tokenSummary } from './tokens.js';
36
+ export { forgetDormant, isDormant, listDormant, restoreDormant } from './sleep/dormant.js';
37
+ export { quarantineApprove, quarantineList, quarantineReject } from './auth/quarantine.js';
38
+ export type { QuarantineListItem } from './auth/quarantine.js';
39
+ export { sleep } from './sleep/sleep.js';
40
+ export type { SleepOpts, SleepResult } from './sleep/sleep.js';
41
+ export { goalComplete, goalList, goalPush, goalResume, goalSuspend } from './objects/goals.js';
42
+ export type { GoalPushOpts } from './objects/goals.js';
43
+ export { CLI_LEARN, MCP_LEARN, invalidateMemories, learn } from './sleep/learn.js';
44
+ export type { InvalidationOptions, InvalidationResult, InvalidationTarget, LearnOpts, LearnProfile, LearnResult, } from './sleep/learn.js';
45
+ export { REFINED_TAG, storeRefinement } from './memories/refine.js';
30
46
  //# sourceMappingURL=index.d.ts.map
package/dist/api/index.js CHANGED
@@ -7,27 +7,25 @@ export { isPrivateScope, passesScopeFilterForRecall } from '../core/recall-scope
7
7
  export { passesCliRecallScopeFilter, ScopeForbiddenError } from '../core/recall-scope.js';
8
8
  // classifyOriginProject lives in project-identity.ts (leaf) for the same reason.
9
9
  export { classifyOriginProject } from '../core/project-identity.js';
10
- export * from './types.js';
11
- export * from './remember.js';
12
- export * from './remember-local.js';
13
- export * from './recall-types.js';
14
- export * from './recall.js';
15
- export * from './assemble.js';
16
- export * from './drill-down.js';
17
- export * from './outcome.js';
18
- export * from './forget.js';
19
- export * from './conflicts.js';
20
- export * from './projects.js';
21
- export * from './promote.js';
22
- export * from './auth.js';
23
- export * from './audit.js';
24
- export * from './context-types.js';
25
- export * from './context.js';
26
- export * from './tokens.js';
27
- export * from './dormant.js';
28
- export * from './quarantine.js';
29
- export * from './sleep.js';
30
- export * from './goals.js';
31
- export * from './learn.js';
32
- export * from './refine.js';
10
+ export { RecallContractError, adminActor, narrowContext, ownerOrSubject, requireHostAdmin } from './types.js';
11
+ export { remember } from './memories/remember.js';
12
+ export { extractRememberedFacts, rememberLocally } from './memories/remember-local.js';
13
+ export { retrieve } from './recall/recall.js';
14
+ export { DEFAULT_ASSEMBLE_BUDGET, assemble } from './assemble.js';
15
+ export { drillDown } from './objects/drill-down.js';
16
+ export { outcome, outcomeForLastRecall } from './memories/outcome.js';
17
+ export { forget, reject, rejectOnHost, unreject } from './memories/forget.js';
18
+ export { listConflicts, listOpenConflicts, resolveMemoryConflict } from './memories/conflicts.js';
19
+ export { listProjectNames, mergeProjectNames, repairProjectNames, repairProjectNamesOnce } from './objects/projects.js';
20
+ export { archiveRaw, promote, supersede } from './memories/promote.js';
21
+ export { DEFAULT_KEY_TTL_DAYS, MAX_TTL_DAYS, authCreate, authCreateSelf, authGrant, authKeyTenant, authListAllTenants, authListRows, authRevoke, authUngrant, } from './auth/auth.js';
22
+ export { auditList, auditMemoryQuality, computeCutoff, pruneAuditLog, removeAuditErrors, repairMemoryQuality, repairMemoryQualityOnce, } from './auth/audit.js';
23
+ export { DEFAULT_CONTEXT_BUDGET, NO_QUERY, ambientSecretAdmit, getContext, oneCopyPerMemory } from './context.js';
24
+ export { failureSummary, recordTokens, tokenSummary } from './tokens.js';
25
+ export { forgetDormant, isDormant, listDormant, restoreDormant } from './sleep/dormant.js';
26
+ export { quarantineApprove, quarantineList, quarantineReject } from './auth/quarantine.js';
27
+ export { sleep } from './sleep/sleep.js';
28
+ export { goalComplete, goalList, goalPush, goalResume, goalSuspend } from './objects/goals.js';
29
+ export { CLI_LEARN, MCP_LEARN, invalidateMemories, learn } from './sleep/learn.js';
30
+ export { REFINED_TAG, storeRefinement } from './memories/refine.js';
33
31
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,7 @@
1
- /** Prompt-injection detection for untrusted memory content. Same shape as secret-detect.ts; leaf module, no store/api/shared imports. */
1
+ /**
2
+ * Prompt-injection detection for untrusted memory content. Same shape
3
+ * as secret-detect.ts; leaf module, no store/api/shared imports.
4
+ */
2
5
  export interface InstructionDetection {
3
6
  flagged: boolean;
4
7
  reason: string | null;
@@ -1,7 +1,16 @@
1
- /** Prompt-injection detection for untrusted memory content. Same shape as secret-detect.ts; leaf module, no store/api/shared imports. */
1
+ /**
2
+ * Prompt-injection detection for untrusted memory content. Same shape
3
+ * as secret-detect.ts; leaf module, no store/api/shared imports.
4
+ */
2
5
  const INSTRUCTION_PATTERNS = [
3
- { name: 'override-instructions', re: /\b(?:ignore|disregard|forget)\b[^.\n]{0,40}\b(?:previous|prior|above)\b[^.\n]{0,40}\binstructions?\b/i },
4
- { name: 'role-reassignment', re: /\b(?:you are now|act as|pretend to be)\b[^.\n]{0,40}\b(?:an?\s+)?(?:ai|assistant|agent|system)\b/i },
6
+ {
7
+ name: 'override-instructions',
8
+ re: /\b(?:ignore|disregard|forget)\b[^.\n]{0,40}\b(?:previous|prior|above)\b[^.\n]{0,40}\binstructions?\b/i,
9
+ },
10
+ {
11
+ name: 'role-reassignment',
12
+ re: /\b(?:you are now|act as|pretend to be)\b[^.\n]{0,40}\b(?:an?\s+)?(?:ai|assistant|agent|system)\b/i,
13
+ },
5
14
  { name: 'chat-role-markup', re: /<\|im_start\|>|<\|system\|>|\[INST\]|<\/?system>|###\s*system\s*:/i },
6
15
  {
7
16
  name: 'system-prompt-reference',
@@ -11,16 +20,22 @@ const INSTRUCTION_PATTERNS = [
11
20
  // "always"/"never" alone (ordinary PR prose) doesn't flag without an agent-facing target nearby too.
12
21
  {
13
22
  name: 'standing-order',
14
- re: /\b(?:from now on|whenever you|always|never)\b[^.\n]{0,50}\b(?:you must|(?:the ai|the assistant|the agent|claude|copilot)\s+(?:must|should|will)\b)/i
23
+ re: new RegExp(String.raw `\b(?:from now on|whenever you|always|never)\b[^.\n]{0,50}\b(?:you must|` +
24
+ String.raw `(?:the ai|the assistant|the agent|claude|copilot)\s+(?:must|should|will)\b)`, 'i'),
25
+ },
26
+ {
27
+ name: 'concealment',
28
+ re: /\b(?:do not|never|don't)\b[^.\n]{0,40}\b(?:tell|mention|reveal)\b[^.\n]{0,40}\bthe user\b/i,
15
29
  },
16
- { name: 'concealment', re: /\b(?:do not|never|don't)\b[^.\n]{0,40}\b(?:tell|mention|reveal)\b[^.\n]{0,40}\bthe user\b/i },
17
30
  {
18
31
  name: 'remote-script-exec',
19
- re: /\b(?:curl|wget)\b[^\n|]{0,80}\|\s*(?:sudo\s+)?(?:sh|bash|zsh)\b|\biex\s*\(\s*(?:iwr|invoke-webrequest|new-object\s+net\.webclient)/i
32
+ re: new RegExp(String.raw `\b(?:curl|wget)\b[^\n|]{0,80}\|\s*(?:sudo\s+)?(?:sh|bash|zsh)\b|` +
33
+ String.raw `\biex\s*\(\s*(?:iwr|invoke-webrequest|new-object\s+net\.webclient)`, 'i'),
20
34
  },
21
35
  {
22
36
  name: 'exfiltration',
23
- re: /\b(?:send|post|upload|exfiltrate)\b[^.\n]{0,40}\b(?:secrets?|tokens?|api[- ]?keys?|credentials?|env(?:ironment)? variables?)\b/i
37
+ re: new RegExp(String.raw `\b(?:send|post|upload|exfiltrate)\b[^.\n]{0,40}\b` +
38
+ String.raw `(?:secrets?|tokens?|api[- ]?keys?|credentials?|env(?:ironment)? variables?)\b`, 'i'),
24
39
  },
25
40
  { name: 'unicode-tag-chars', re: /[\u{E0000}-\u{E007F}]/u },
26
41
  ];
@@ -30,20 +45,59 @@ const ZERO_WIDTH_RUN_RE = /[\u200B-\u200F\u2060-\u2064]{3,}/;
30
45
  const BIDI_CONTROL_RE = /[\u202A-\u202E\u2066-\u2069]/;
31
46
  // A renderer draws a reference as the character it names: decimal, hex, or one of the five names XML defines.
32
47
  const CHARACTER_REFERENCE_RE = /&(?:#(\d{1,7})|#[xX]([0-9a-fA-F]{1,6})|(amp|lt|gt|quot|apos));/g;
33
- const NAMED_REFERENCES = new Map([['amp', '&'], ['lt', '<'], ['gt', '>'], ['quot', '"'], ['apos', "'"]]);
34
- // Drawn with no width, so one inside a word splits it for a pattern and not for a reader: soft hyphen, joiners, zero-width and bidi format characters.
48
+ const NAMED_REFERENCES = new Map([
49
+ ['amp', '&'],
50
+ ['lt', '<'],
51
+ ['gt', '>'],
52
+ ['quot', '"'],
53
+ ['apos', "'"],
54
+ ]);
55
+ // Drawn with no width, so one inside a word splits it for a pattern and not for a reader: soft hyphen, joiners,
56
+ // zero-width and bidi format characters.
35
57
  const INVISIBLE_RE = /[\u034F\u00AD\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u2069\uFEFF]/g;
36
- // Cyrillic, then Greek, letters drawn like a c e i j o p s x y; closed at those, so Russian or Greek prose folds into no phrase a pattern names.
58
+ // Cyrillic, then Greek, letters drawn like a c e i j o p s x y; closed at those, so Russian or Greek prose folds into
59
+ // no phrase a pattern names.
37
60
  const LOOKALIKES = new Map([
38
- ['\u0430', 'a'], ['\u0441', 'c'], ['\u0435', 'e'], ['\u0456', 'i'], ['\u0458', 'j'], ['\u043E', 'o'], ['\u0440', 'p'], ['\u0455', 's'],
39
- ['\u0445', 'x'], ['\u0443', 'y'],
40
- ['\u0410', 'A'], ['\u0421', 'C'], ['\u0415', 'E'], ['\u0406', 'I'], ['\u0408', 'J'], ['\u041E', 'O'], ['\u0420', 'P'], ['\u0405', 'S'],
41
- ['\u0425', 'X'], ['\u0423', 'Y'],
42
- ['\u03B1', 'a'], ['\u03B5', 'e'], ['\u03B9', 'i'], ['\u03F3', 'j'], ['\u03BF', 'o'], ['\u03C1', 'p'], ['\u03C7', 'x'], ['\u03B3', 'y'],
43
- ['\u0391', 'A'], ['\u0395', 'E'], ['\u0399', 'I'], ['\u037F', 'J'], ['\u039F', 'O'], ['\u03A1', 'P'], ['\u03A7', 'X'], ['\u03A5', 'Y'],
61
+ ['\u0430', 'a'],
62
+ ['\u0441', 'c'],
63
+ ['\u0435', 'e'],
64
+ ['\u0456', 'i'],
65
+ ['\u0458', 'j'],
66
+ ['\u043E', 'o'],
67
+ ['\u0440', 'p'],
68
+ ['\u0455', 's'],
69
+ ['\u0445', 'x'],
70
+ ['\u0443', 'y'],
71
+ ['\u0410', 'A'],
72
+ ['\u0421', 'C'],
73
+ ['\u0415', 'E'],
74
+ ['\u0406', 'I'],
75
+ ['\u0408', 'J'],
76
+ ['\u041E', 'O'],
77
+ ['\u0420', 'P'],
78
+ ['\u0405', 'S'],
79
+ ['\u0425', 'X'],
80
+ ['\u0423', 'Y'],
81
+ ['\u03B1', 'a'],
82
+ ['\u03B5', 'e'],
83
+ ['\u03B9', 'i'],
84
+ ['\u03F3', 'j'],
85
+ ['\u03BF', 'o'],
86
+ ['\u03C1', 'p'],
87
+ ['\u03C7', 'x'],
88
+ ['\u03B3', 'y'],
89
+ ['\u0391', 'A'],
90
+ ['\u0395', 'E'],
91
+ ['\u0399', 'I'],
92
+ ['\u037F', 'J'],
93
+ ['\u039F', 'O'],
94
+ ['\u03A1', 'P'],
95
+ ['\u03A7', 'X'],
96
+ ['\u03A5', 'Y'],
44
97
  ]);
45
98
  const GREEK_OR_CYRILLIC_RE = /[\u0370-\u03FF\u0400-\u04FF]/g;
46
- // A line break stays: it is the sentence bound the patterns rely on where a list or a chat message ends a line with no full stop.
99
+ // A line break stays: it is the sentence bound the patterns rely
100
+ // on where a list or a chat message ends a line with no full stop.
47
101
  const SPACE_RUN_RE = /[^\S\n]+/g;
48
102
  function referencedCharacter(reference, decimal, hex, name) {
49
103
  if (name !== undefined)
@@ -55,13 +109,13 @@ function referencedCharacter(reference, decimal, hex, name) {
55
109
  }
56
110
  /** `content` as a reader or a model takes it in. For matching only: what is stored is never this. */
57
111
  function screeningForm(content) {
58
- return content
112
+ return (content
59
113
  .replace(CHARACTER_REFERENCE_RE, referencedCharacter)
60
114
  // Full-width, mathematical and enclosed letters become the plain ones, and every space character a U+0020.
61
115
  .normalize('NFKC')
62
116
  .replace(INVISIBLE_RE, '')
63
117
  .replace(GREEK_OR_CYRILLIC_RE, (letter) => LOOKALIKES.get(letter) ?? letter)
64
- .replace(SPACE_RUN_RE, ' ');
118
+ .replace(SPACE_RUN_RE, ' '));
65
119
  }
66
120
  function matchedPattern(text) {
67
121
  for (const { name, re } of INSTRUCTION_PATTERNS) {
@@ -71,7 +125,8 @@ function matchedPattern(text) {
71
125
  return null;
72
126
  }
73
127
  export function detectInstruction(content) {
74
- // The text as written goes first: a phrase in plain sight is named before any smuggling rule, and the screening form only adds flags.
128
+ // The text as written goes first: a phrase in plain sight is named before any smuggling rule, and the screening form
129
+ // only adds flags.
75
130
  const plain = matchedPattern(content);
76
131
  if (plain !== null)
77
132
  return { flagged: true, reason: plain };
@@ -1,17 +1,21 @@
1
1
  import { type LedgerTurn } from '../store/ledger-turn.js';
2
+ import { type HippoStore, type StoreReach } from '../store/port.js';
2
3
  import type { LastSent, TokenSurface, TokenUse } from '../store/token-ledger.js';
3
- export interface LedgerRootOpts {
4
- /** The store serves many people, so the global store of the user running it belongs to none of them. */
5
- readonly sharedStore?: boolean;
6
- }
7
- /** `hippoRoot` when it holds a store, else the global store (the prompt hook fires where no local one exists), else null. */
8
- export declare function ledgerRoot(hippoRoot: string, opts?: LedgerRootOpts): string | null;
9
- /** Runs `call` on ledgerRoot's store root. Best-effort: undefined on any failure, because a ledger failure must not break context or recall. */
10
- export declare function onLedgerRoot<T>(hippoRoot: string, opts: LedgerRootOpts | undefined, call: (root: string) => T): T | undefined;
4
+ /** The slice of a call's store reach that picks the ledger; a shared store has no `global`. */
5
+ export type LedgerReach = Pick<StoreReach, 'hasLocal' | 'global'>;
6
+ /** The ledger is SQLite-only: a local store needs a reach that says so and a SQLite store; no reach books nowhere. */
7
+ export declare function ledgerReachOf(ctx: {
8
+ readonly reach?: StoreReach;
9
+ readonly store?: HippoStore;
10
+ }, shared?: boolean): LedgerReach;
11
+ /** `hippoRoot` when the call has a store of its own, else the global store (the prompt hook fires where none is). */
12
+ export declare function ledgerRoot(hippoRoot: string, reach: LedgerReach): string | null;
13
+ /** Runs `call` on ledgerRoot's store root; undefined on any failure, since a ledger failure must not break recall. */
14
+ export declare function onLedgerRoot<T>(hippoRoot: string, reach: LedgerReach, call: (root: string) => T): T | undefined;
11
15
  /** Books one row in ledgerRoot's store, best-effort. */
12
- export declare function bookTokenUse(hippoRoot: string, use: TokenUse, opts?: LedgerRootOpts): void;
16
+ export declare function bookTokenUse(hippoRoot: string, use: TokenUse, reach: LedgerReach): void;
13
17
  /** Books a turn's rows and then its delivery event on one connection of ledgerRoot's store, best-effort. */
14
- export declare function bookLedgerTurn(hippoRoot: string, turn: LedgerTurn, opts?: LedgerRootOpts): void;
18
+ export declare function bookLedgerTurn(hippoRoot: string, turn: LedgerTurn, reach: LedgerReach): void;
15
19
  /** What the session last sent on `surface` in ledgerRoot's store; undefined with no ledger or a failed read. */
16
- export declare function ledgerLastSent(hippoRoot: string, tenantId: string, sessionId: string | null | undefined, surface: TokenSurface, opts?: LedgerRootOpts): LastSent | null | undefined;
20
+ export declare function ledgerLastSent(hippoRoot: string, tenantId: string, sessionId: string | null | undefined, surface: TokenSurface, reach: LedgerReach): LastSent | null | undefined;
17
21
  //# sourceMappingURL=ledger-db.d.ts.map
@@ -1,27 +1,25 @@
1
1
  // The store the token ledger writes to for a caller's root; context, recall and the session hooks share it.
2
- import { errorMessage, log } from '../util/log.js';
3
- import { getGlobalRoot } from '../sharing/global-store.js';
4
- import { lastSentOnSurface, noteLedgerRowSkipped, recordLedgerTurn } from '../store/ledger-turn.js';
5
- import { isInitialized } from '../core/project-identity.js';
6
- import { sqliteSyncStore } from '../store/sqlite/store.js';
7
- /** `hippoRoot` when it holds a store, else the global store (the prompt hook fires where no local one exists), else null. */
8
- export function ledgerRoot(hippoRoot, opts) {
9
- if (isInitialized(hippoRoot))
10
- return hippoRoot;
11
- if (opts?.sharedStore)
12
- return null;
13
- const globalRoot = getGlobalRoot();
14
- return isInitialized(globalRoot) ? globalRoot : null;
2
+ import { errorMessage, log, errorFields } from '../util/log.js';
3
+ import { lastSentOnSurface, noteLedgerRowSkipped, recordLedgerTurn, recordTokensAt, } from '../store/ledger-turn.js';
4
+ import { hasGroup } from '../store/port.js';
5
+ /** The ledger is SQLite-only: a local store needs a reach that says so and a SQLite store; no reach books nowhere. */
6
+ export function ledgerReachOf(ctx, shared) {
7
+ const hasLocal = ctx.reach?.hasLocal === true && (ctx.store === undefined || hasGroup(ctx.store, 'localFiles'));
8
+ return shared === true ? { hasLocal } : { hasLocal, global: ctx.reach?.global };
15
9
  }
16
- /** Runs `call` on ledgerRoot's store root. Best-effort: undefined on any failure, because a ledger failure must not break context or recall. */
17
- export function onLedgerRoot(hippoRoot, opts, call) {
10
+ /** `hippoRoot` when the call has a store of its own, else the global store (the prompt hook fires where none is). */
11
+ export function ledgerRoot(hippoRoot, reach) {
12
+ return reach.hasLocal ? hippoRoot : (reach.global?.root ?? null);
13
+ }
14
+ /** Runs `call` on ledgerRoot's store root; undefined on any failure, since a ledger failure must not break recall. */
15
+ export function onLedgerRoot(hippoRoot, reach, call) {
18
16
  let root = null;
19
17
  try {
20
- root = ledgerRoot(hippoRoot, opts);
18
+ root = ledgerRoot(hippoRoot, reach);
21
19
  }
22
20
  catch (error) {
23
21
  // An unreadable store root means no ledger write; the ledger must never break context or recall.
24
- log.debug(`token ledger skipped, store root unreadable: ${errorMessage(error)}`);
22
+ log.debug(`token ledger skipped, store root unreadable: ${errorMessage(error)}`, errorFields(error));
25
23
  return undefined;
26
24
  }
27
25
  if (root === null)
@@ -35,15 +33,15 @@ export function onLedgerRoot(hippoRoot, opts, call) {
35
33
  }
36
34
  }
37
35
  /** Books one row in ledgerRoot's store, best-effort. */
38
- export function bookTokenUse(hippoRoot, use, opts) {
39
- onLedgerRoot(hippoRoot, opts, (root) => sqliteSyncStore(root).recordTokens(use));
36
+ export function bookTokenUse(hippoRoot, use, reach) {
37
+ onLedgerRoot(hippoRoot, reach, (root) => recordTokensAt(root, use));
40
38
  }
41
39
  /** Books a turn's rows and then its delivery event on one connection of ledgerRoot's store, best-effort. */
42
- export function bookLedgerTurn(hippoRoot, turn, opts) {
43
- onLedgerRoot(hippoRoot, opts, (root) => recordLedgerTurn(root, turn));
40
+ export function bookLedgerTurn(hippoRoot, turn, reach) {
41
+ onLedgerRoot(hippoRoot, reach, (root) => recordLedgerTurn(root, turn));
44
42
  }
45
43
  /** What the session last sent on `surface` in ledgerRoot's store; undefined with no ledger or a failed read. */
46
- export function ledgerLastSent(hippoRoot, tenantId, sessionId, surface, opts) {
47
- return onLedgerRoot(hippoRoot, opts, (root) => lastSentOnSurface(root, tenantId, sessionId, surface));
44
+ export function ledgerLastSent(hippoRoot, tenantId, sessionId, surface, reach) {
45
+ return onLedgerRoot(hippoRoot, reach, (root) => lastSentOnSurface(root, tenantId, sessionId, surface));
48
46
  }
49
47
  //# sourceMappingURL=ledger-db.js.map
@@ -0,0 +1,33 @@
1
+ import type { MemoryConflict } from '../../store/rows.js';
2
+ import type { CallerProject } from '../prompt-hook.js';
3
+ import { type ContextWith } from '../types.js';
4
+ import type { TenantReach } from './memories.js';
5
+ export interface ResolveMemoryConflictOpts {
6
+ /** One of the conflict's two memories; the other is the loser. */
7
+ keepId: string;
8
+ /** Delete the loser instead of halving its half-life. */
9
+ forget?: boolean;
10
+ /** Tombstone the loser's value as well, which removes it whatever `forget` says. */
11
+ rejectLoser?: boolean;
12
+ /** Kept on the tombstone; a conflict-context reason when unset. */
13
+ reason?: string;
14
+ }
15
+ export interface ResolveMemoryConflictResult {
16
+ conflictId: number;
17
+ keptId: string;
18
+ loserId: string;
19
+ }
20
+ /**
21
+ * Keeps `keepId` and weakens, deletes or rejects the other side of an open conflict in the caller's tenant, auditing as
22
+ * `ctx.actor`.
23
+ * NotFound: missing, untouchable or no longer live. Conflict: already resolved. BadRequest: `keepId` outside the pair.
24
+ */
25
+ export declare function resolveMemoryConflict(ctx: ContextWith<'conflicts'>, conflictId: number, opts: ResolveMemoryConflictOpts): Promise<ResolveMemoryConflictResult>;
26
+ /** Open conflicts whose two rows the caller may touch; with `project`, only pairs it could also recall:
27
+ * its repo or user-global, and no scope it was not asked for. */
28
+ export declare function listOpenConflicts(ctx: ContextWith<'conflicts'>, project?: CallerProject): Promise<MemoryConflict[]>;
29
+ /**
30
+ * Conflicts with `status` ('*' for any) in reach, with no scope filter: the host's own view, so the host admin only.
31
+ */
32
+ export declare function listConflicts(ctx: ContextWith<'conflicts'>, status: string, reach?: TenantReach): Promise<MemoryConflict[]>;
33
+ //# sourceMappingURL=conflicts.d.ts.map
@@ -0,0 +1,67 @@
1
+ // Conflict resolution for every front end, so the reach, status, pair and liveness checks live in one place.
2
+ import { BadRequestError, ConflictError, NotFoundError } from '../../core/api-errors.js';
3
+ import { chunked } from '../../util/chunked.js';
4
+ import { passesScopeFilterForRecall, personalScopeOf } from '../../core/recall-scope.js';
5
+ import { classifyOriginProject } from '../../core/project-identity.js';
6
+ import { isQuarantineScope } from '../../trust/quarantine.js';
7
+ import { requireHostAdmin } from '../types.js';
8
+ function isLive(entry) {
9
+ return (!entry.superseded_by && (entry.kind === 'raw' || entry.kind === 'distilled') && !isQuarantineScope(entry.scope));
10
+ }
11
+ /**
12
+ * Keeps `keepId` and weakens, deletes or rejects the other side of an open conflict in the caller's tenant, auditing as
13
+ * `ctx.actor`.
14
+ * NotFound: missing, untouchable or no longer live. Conflict: already resolved. BadRequest: `keepId` outside the pair.
15
+ */
16
+ export async function resolveMemoryConflict(ctx, conflictId, opts) {
17
+ // Read with every status, so a resolved conflict answers 409 while one holding another person's personal row stays a
18
+ // 404.
19
+ const touchable = await ctx.store.conflicts.listTouchable(ctx.tenantId, '*', ctx.actor);
20
+ const conflict = touchable.find((c) => c.id === conflictId);
21
+ if (!conflict)
22
+ throw new NotFoundError(`conflict not found: ${conflictId}`);
23
+ if (conflict.status !== 'open')
24
+ throw new ConflictError(`conflict ${conflictId} is already resolved`);
25
+ const pair = [conflict.memory_a_id, conflict.memory_b_id];
26
+ if (!pair.includes(opts.keepId)) {
27
+ throw new BadRequestError(`keep must be one of the two memories in conflict ${conflictId}: ${pair.join(', ')}`);
28
+ }
29
+ if ((await ctx.store.entriesByIds(pair, ctx.tenantId)).filter(isLive).length < pair.length) {
30
+ throw new NotFoundError(`conflict ${conflictId} names a memory that is superseded, archived or quarantined`);
31
+ }
32
+ const resolved = await ctx.store.conflicts.resolve(ctx.tenantId, { conflictId, keepId: opts.keepId, forgetLoser: opts.forget === true }, {
33
+ rejectLoserValue: opts.rejectLoser === true,
34
+ reason: opts.reason,
35
+ rejectedBy: ctx.actor.subject,
36
+ });
37
+ // Every check passed above, so null here is another resolver getting there first.
38
+ if (resolved === null)
39
+ throw new ConflictError(`conflict ${conflictId} is already resolved`);
40
+ return { conflictId, keptId: opts.keepId, loserId: resolved.loserId };
41
+ }
42
+ /** Open conflicts whose two rows the caller may touch; with `project`, only pairs it could also recall:
43
+ * its repo or user-global, and no scope it was not asked for. */
44
+ export async function listOpenConflicts(ctx, project) {
45
+ const touchable = await ctx.store.conflicts.listTouchable(ctx.tenantId, 'open', ctx.actor);
46
+ if (!project)
47
+ return touchable;
48
+ const own = personalScopeOf(ctx.actor);
49
+ const ids = [...new Set(touchable.flatMap((c) => [c.memory_a_id, c.memory_b_id]))];
50
+ // entriesByIds reads at most one chunk of ids per call.
51
+ const chunks = await Promise.all(chunked(ids).map((chunk) => ctx.store.entriesByIds(chunk, ctx.tenantId)));
52
+ const rows = new Map(chunks.flat().map((row) => [row.id, row]));
53
+ const shown = (id) => {
54
+ const row = rows.get(id);
55
+ return row !== undefined && classifyOriginProject(row.origin_project, project) !== 'cross-project'
56
+ && passesScopeFilterForRecall(row.scope ?? null, undefined, own);
57
+ };
58
+ return touchable.filter((c) => shown(c.memory_a_id) && shown(c.memory_b_id));
59
+ }
60
+ /**
61
+ * Conflicts with `status` ('*' for any) in reach, with no scope filter: the host's own view, so the host admin only.
62
+ */
63
+ export async function listConflicts(ctx, status, reach = {}) {
64
+ requireHostAdmin(ctx, 'Listing conflicts past the scope check');
65
+ return ctx.store.conflicts.list(reach.everyTenant ? null : ctx.tenantId, status);
66
+ }
67
+ //# sourceMappingURL=conflicts.js.map
@@ -1,12 +1,12 @@
1
- import { type RejectFlowResult } from '../trust/reject-flow.js';
2
- import { type Context, type StoreReply } from './types.js';
1
+ import { type RejectFlowResult } from '../../trust/reject-flow.js';
2
+ import { type Context, type ContextWith, type StoreContext } from '../types.js';
3
3
  /** Delete a memory by id. Reach is checked inside the delete's write scope, and a
4
4
  * row out of reach answers as not found, so a caller learns nothing about it. */
5
5
  export interface ForgetResult {
6
6
  ok: true;
7
7
  id: string;
8
8
  }
9
- export declare function forget<C extends Context>(ctx: C, id: string): StoreReply<C, ForgetResult>;
9
+ export declare function forget(ctx: ContextWith<'entryWrites'>, id: string): Promise<ForgetResult>;
10
10
  export interface RejectOpts {
11
11
  /** By-id form: reject the CURRENT content of an existing memory. */
12
12
  memoryId?: string;
@@ -19,13 +19,15 @@ export interface RejectResult {
19
19
  digest: string;
20
20
  removedIds: string[];
21
21
  }
22
- /** Tombstones a value's normalized digest so a matching write is refused everywhere until `unreject`; pass exactly one of `memoryId` or `value`.
23
- * `memoryId` also removes every live tenant row with that digest (not others' personal rows); `reason` is required. Throws on an unknown id or both/neither. */
24
- export declare function reject(ctx: Context, opts: RejectOpts): Promise<RejectResult>;
25
- /** `hippo reject` on the host: every row it removed and the rows that kept their other texts. A personal row by id answers with the
26
- * personal refusal rather than reject's not-found, as the operator can see that row. */
22
+ /** Tombstones a value's normalized digest so a matching write is refused everywhere until `unreject`; pass exactly one
23
+ * of `memoryId` or `value`. `memoryId` also removes every live tenant row with that digest (not others' personal rows);
24
+ * `reason` is required. Throws on an unknown id or both/neither. */
25
+ export declare function reject(ctx: StoreContext, opts: RejectOpts): Promise<RejectResult>;
26
+ /** `hippo reject` on the host: every row it removed and the rows that kept their other texts. A personal row by id
27
+ * answers with the personal refusal rather than reject's not-found, as the operator can see that row. */
27
28
  export declare function rejectOnHost(ctx: Context, opts: RejectOpts): RejectFlowResult;
28
- /** Deletes a tombstone by exact digest or unambiguous prefix, restoring writability (the only v1 escape hatch); throws on blank, no match or several. */
29
+ /** Deletes a tombstone by exact digest or unambiguous prefix, restoring writability (the only v1 escape hatch); throws
30
+ * on blank, no match or several. */
29
31
  export declare function unreject(ctx: Context, digestOrPrefix: string): {
30
32
  ok: boolean;
31
33
  digest: string;
@@ -1,22 +1,26 @@
1
1
  // Forget a memory, and reject or unreject a value so it cannot be stored again.
2
- import { BadRequestError, NotFoundError } from '../core/api-errors.js';
3
- import { rejectValue, unrejectValue } from '../trust/reject-flow.js';
4
- import { andThen, notPorted, onStore } from './on-store.js';
5
- import { requireHostAdmin } from './types.js';
2
+ import { BadRequestError, NotFoundError } from '../../core/api-errors.js';
3
+ import { rejectValue, unrejectValue } from '../../trust/reject-flow.js';
4
+ import { requireHostAdmin } from '../types.js';
6
5
  import { getMemory } from './memories.js';
7
- import { canTouchScope, personalScopeOf } from '../core/recall-scope.js';
8
- export function forget(ctx, id) {
9
- return onStore(ctx, (port) => {
10
- const entryWrites = port.entryWrites ?? notPorted(port, 'entryWrites');
11
- const removal = { tenantId: ctx.tenantId, actor: ctx.actor.subject, ownScope: personalScopeOf(ctx.actor), id };
12
- return andThen(entryWrites.forget(removal), () => ({ ok: true, id }));
6
+ import { canTouchScope, personalScopeOf } from '../../core/recall-scope.js';
7
+ export async function forget(ctx, id) {
8
+ const entryWrites = ctx.store.entryWrites;
9
+ await entryWrites.forget({
10
+ tenantId: ctx.tenantId,
11
+ actor: ctx.actor.subject,
12
+ ownScope: personalScopeOf(ctx.actor),
13
+ id,
13
14
  });
15
+ return { ok: true, id };
14
16
  }
15
- /** Tombstones a value's normalized digest so a matching write is refused everywhere until `unreject`; pass exactly one of `memoryId` or `value`.
16
- * `memoryId` also removes every live tenant row with that digest (not others' personal rows); `reason` is required. Throws on an unknown id or both/neither. */
17
+ /** Tombstones a value's normalized digest so a matching write is refused everywhere until `unreject`; pass exactly one
18
+ * of `memoryId` or `value`. `memoryId` also removes every live tenant row with that digest (not others' personal rows);
19
+ * `reason` is required. Throws on an unknown id or both/neither. */
17
20
  export async function reject(ctx, opts) {
18
21
  if (opts.memoryId !== undefined) {
19
- // Tenant scope: same not-found-shaped denial as forget/promote; rejectValue tenant-checks too, but pre-checking keeps the error message consistent.
22
+ // Tenant scope: same not-found-shaped denial as forget/promote; rejectValue tenant-checks too, but pre-checking
23
+ // keeps the error message consistent.
20
24
  const entry = await getMemory(ctx, opts.memoryId);
21
25
  if (entry === null || !canTouchScope(ctx.actor, entry.scope)) {
22
26
  throw new NotFoundError(`memory not found: ${opts.memoryId}`);
@@ -25,14 +29,15 @@ export async function reject(ctx, opts) {
25
29
  const result = applyReject(ctx, opts);
26
30
  return { digest: result.digest, removedIds: result.removedIds };
27
31
  }
28
- /** `hippo reject` on the host: every row it removed and the rows that kept their other texts. A personal row by id answers with the
29
- * personal refusal rather than reject's not-found, as the operator can see that row. */
32
+ /** `hippo reject` on the host: every row it removed and the rows that kept their other texts. A personal row by id
33
+ * answers with the personal refusal rather than reject's not-found, as the operator can see that row. */
30
34
  export function rejectOnHost(ctx, opts) {
31
35
  requireHostAdmin(ctx, 'Rejecting with the removal report');
32
36
  return applyReject(ctx, opts);
33
37
  }
34
38
  function applyReject(ctx, opts) {
35
- // SHORTCUT: the tombstone write is hippo.db only, as the port has no rejection group; one when a served store needs reject.
39
+ // SHORTCUT: the tombstone write is hippo.db only, as the port has no rejection group; one when a served store needs
40
+ // reject.
36
41
  return rejectValue({
37
42
  hippoRoot: ctx.hippoRoot,
38
43
  tenantId: ctx.tenantId,
@@ -43,7 +48,8 @@ function applyReject(ctx, opts) {
43
48
  ownScope: personalScopeOf(ctx.actor) ?? undefined,
44
49
  });
45
50
  }
46
- /** Deletes a tombstone by exact digest or unambiguous prefix, restoring writability (the only v1 escape hatch); throws on blank, no match or several. */
51
+ /** Deletes a tombstone by exact digest or unambiguous prefix, restoring writability (the only v1 escape hatch); throws
52
+ * on blank, no match or several. */
47
53
  export function unreject(ctx, digestOrPrefix) {
48
54
  const outcome = unrejectValue(ctx.hippoRoot, ctx.tenantId, digestOrPrefix, ctx.actor.subject);
49
55
  if (outcome.status === 'not_found') {
@@ -0,0 +1,27 @@
1
+ import type { MemoryEntry } from '../../core/memory.js';
2
+ import type { StrengthTallies } from '../../store/candidates.js';
3
+ import { type ContextWith, type StoreContext } from '../types.js';
4
+ /** The row `id` in the caller's tenant, or null when it is missing or another tenant's. */
5
+ export declare function getMemory(ctx: StoreContext, id: string): Promise<MemoryEntry | null>;
6
+ /** getMemory, but NotFound when the row is another person's
7
+ * personal one, so the reply does not reveal that the id exists. */
8
+ export declare function getTouchableMemory(ctx: StoreContext, id: string): Promise<MemoryEntry | null>;
9
+ export interface MemoryStatus extends StrengthTallies {
10
+ openConflicts: number;
11
+ }
12
+ /** Tenant-wide counts behind the status verbs: strength tallies
13
+ * at `now` (at risk is under `atRiskBelow`) and open conflicts. */
14
+ export declare function getMemoryStatus(ctx: ContextWith<'reports'>, now: Date, atRiskBelow: number): Promise<MemoryStatus>;
15
+ /** Which rows a read covers: the caller's tenant, or with `everyTenant` the whole store. */
16
+ export interface TenantReach {
17
+ everyTenant?: boolean;
18
+ }
19
+ /** Every memory row in reach, oldest first, read `pageSize` rows per query so no single read grows with the store. */
20
+ export declare function listMemories(ctx: ContextWith<'reports'>, reach?: TenantReach, opts?: {
21
+ pageSize?: number;
22
+ }): Promise<MemoryEntry[]>;
23
+ /** How many memory rows the whole store holds, counted in SQL. */
24
+ export declare function countAllMemories(ctx: ContextWith<'reports'>): Promise<number>;
25
+ /** The rows in reach among `ids`; a missing id or one out of reach is absent. */
26
+ export declare function listMemoriesByIds(ctx: StoreContext, ids: readonly string[], reach?: TenantReach): Promise<MemoryEntry[]>;
27
+ //# sourceMappingURL=memories.d.ts.map