hippo-memory 1.70.0 → 1.72.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (855) hide show
  1. package/README.md +2 -2
  2. package/dist/agent-memories/apply.d.ts +0 -11
  3. package/dist/agent-memories/apply.js +6 -21
  4. package/dist/agent-memories/claude-code.d.ts +4 -2
  5. package/dist/agent-memories/claude-code.js +15 -6
  6. package/dist/agent-memories/codex.js +1 -1
  7. package/dist/agent-memories/copilot.d.ts +1 -3
  8. package/dist/agent-memories/copilot.js +1 -17
  9. package/dist/agent-memories/files.js +23 -12
  10. package/dist/agent-memories/markdown.d.ts +1 -3
  11. package/dist/agent-memories/markdown.js +1 -3
  12. package/dist/agent-memories/project-folds.d.ts +10 -0
  13. package/dist/agent-memories/project-folds.js +34 -0
  14. package/dist/agent-memories/report.js +2 -1
  15. package/dist/agent-memories/sync.d.ts +4 -2
  16. package/dist/agent-memories/sync.js +18 -11
  17. package/dist/api/assemble.d.ts +7 -44
  18. package/dist/api/assemble.js +3 -23
  19. package/dist/api/audit.d.ts +33 -1
  20. package/dist/api/audit.js +48 -1
  21. package/dist/api/auth.d.ts +20 -26
  22. package/dist/api/auth.js +43 -29
  23. package/dist/api/auto-sleep.d.ts +5 -2
  24. package/dist/api/auto-sleep.js +9 -5
  25. package/dist/api/availability.d.ts +2 -15
  26. package/dist/api/availability.js +4 -18
  27. package/dist/api/cards.d.ts +42 -0
  28. package/dist/api/cards.js +52 -0
  29. package/dist/api/conflicts.d.ts +28 -0
  30. package/dist/api/conflicts.js +61 -0
  31. package/dist/api/context-render.js +4 -3
  32. package/dist/api/context-select.js +12 -15
  33. package/dist/api/context-types.d.ts +10 -35
  34. package/dist/api/context.d.ts +5 -22
  35. package/dist/api/context.js +38 -46
  36. package/dist/api/continuity.d.ts +47 -0
  37. package/dist/api/continuity.js +66 -0
  38. package/dist/{cli → api}/correction-latency.d.ts +2 -14
  39. package/dist/{cli → api}/correction-latency.js +2 -14
  40. package/dist/api/dormant.d.ts +5 -21
  41. package/dist/api/dormant.js +11 -28
  42. package/dist/api/drill-down.d.ts +7 -46
  43. package/dist/api/drill-down.js +6 -27
  44. package/dist/api/embeddings.d.ts +17 -0
  45. package/dist/api/embeddings.js +28 -0
  46. package/dist/api/error-reply.d.ts +8 -0
  47. package/dist/api/error-reply.js +21 -0
  48. package/dist/api/forget.d.ts +11 -26
  49. package/dist/api/forget.js +23 -35
  50. package/dist/api/goals.d.ts +1 -1
  51. package/dist/api/goals.js +5 -9
  52. package/dist/api/graph.d.ts +8 -0
  53. package/dist/api/graph.js +7 -0
  54. package/dist/api/index.d.ts +6 -2
  55. package/dist/api/index.js +6 -2
  56. package/dist/api/instruction-detect.js +21 -6
  57. package/dist/api/learn.d.ts +4 -0
  58. package/dist/api/learn.js +53 -27
  59. package/dist/api/ledger-db.d.ts +2 -5
  60. package/dist/api/ledger-db.js +5 -35
  61. package/dist/api/memories.d.ts +23 -0
  62. package/dist/api/memories.js +46 -0
  63. package/dist/api/objects.d.ts +9 -0
  64. package/dist/api/objects.js +11 -0
  65. package/dist/api/on-store.js +5 -3
  66. package/dist/api/outcome.js +1 -1
  67. package/dist/api/pilot-arm.d.ts +1 -11
  68. package/dist/api/pilot-arm.js +5 -45
  69. package/dist/api/predictions.d.ts +11 -0
  70. package/dist/api/predictions.js +24 -0
  71. package/dist/api/projects.d.ts +21 -0
  72. package/dist/api/projects.js +24 -0
  73. package/dist/api/promote.d.ts +13 -17
  74. package/dist/api/promote.js +12 -20
  75. package/dist/api/prompt-hook.d.ts +19 -6
  76. package/dist/api/prompt-hook.js +54 -13
  77. package/dist/api/provenance-coverage.d.ts +14 -0
  78. package/dist/{cli → api}/provenance-coverage.js +2 -6
  79. package/dist/api/recall-cli.d.ts +58 -0
  80. package/dist/api/recall-cli.js +103 -0
  81. package/dist/api/recall-core.js +17 -9
  82. package/dist/api/recall-finish.d.ts +53 -0
  83. package/dist/api/recall-finish.js +30 -0
  84. package/dist/api/recall-history.d.ts +17 -84
  85. package/dist/api/recall-history.js +15 -88
  86. package/dist/api/recall-pipeline.d.ts +2 -3
  87. package/dist/api/recall-pipeline.js +21 -15
  88. package/dist/api/recall-request.js +1 -1
  89. package/dist/api/recall-types.d.ts +64 -304
  90. package/dist/api/recall.d.ts +3 -34
  91. package/dist/api/recall.js +63 -89
  92. package/dist/api/refine.d.ts +7 -0
  93. package/dist/api/refine.js +10 -0
  94. package/dist/api/remember-local.d.ts +57 -0
  95. package/dist/api/remember-local.js +90 -0
  96. package/dist/api/remember.d.ts +20 -2
  97. package/dist/api/remember.js +16 -3
  98. package/dist/api/session-end.d.ts +22 -0
  99. package/dist/api/session-end.js +101 -0
  100. package/dist/api/sleep-run.d.ts +2 -4
  101. package/dist/api/sleep-run.js +28 -28
  102. package/dist/api/sleep.d.ts +9 -28
  103. package/dist/api/status.d.ts +24 -0
  104. package/dist/api/status.js +40 -0
  105. package/dist/api/store-init.d.ts +4 -0
  106. package/dist/api/store-init.js +9 -0
  107. package/dist/api/tokens.d.ts +3 -10
  108. package/dist/api/tokens.js +4 -11
  109. package/dist/api/types.d.ts +8 -29
  110. package/dist/api/types.js +10 -23
  111. package/dist/capture/caller-session.d.ts +0 -3
  112. package/dist/capture/caller-session.js +1 -12
  113. package/dist/capture/capture-error.d.ts +2 -2
  114. package/dist/capture/capture-error.js +23 -18
  115. package/dist/capture/codex-patch.js +3 -1
  116. package/dist/capture/command.d.ts +4 -12
  117. package/dist/capture/command.js +39 -114
  118. package/dist/capture/compact.d.ts +4 -15
  119. package/dist/capture/compact.js +26 -30
  120. package/dist/capture/compaction-items-caller.js +11 -20
  121. package/dist/capture/compaction-record.d.ts +7 -93
  122. package/dist/capture/compaction-record.js +34 -399
  123. package/dist/capture/compaction-spool.d.ts +5 -3
  124. package/dist/capture/compaction-spool.js +21 -7
  125. package/dist/capture/copilot-transcript.d.ts +2 -1
  126. package/dist/capture/copilot-transcript.js +2 -1
  127. package/dist/capture/extract.d.ts +5 -2
  128. package/dist/capture/extract.js +4 -3
  129. package/dist/capture/failure-caller.d.ts +1 -1
  130. package/dist/capture/failure-caller.js +21 -16
  131. package/dist/capture/failure-reading.d.ts +2 -1
  132. package/dist/capture/failure-reading.js +7 -9
  133. package/dist/capture/pre-compact-caller.js +5 -4
  134. package/dist/capture/session-digest.d.ts +1 -1
  135. package/dist/capture/session-digest.js +17 -10
  136. package/dist/capture/session-end-caller.js +2 -1
  137. package/dist/capture/session-worker.js +3 -4
  138. package/dist/capture/transcript.d.ts +4 -11
  139. package/dist/capture/transcript.js +10 -21
  140. package/dist/capture/working-state.d.ts +4 -2
  141. package/dist/capture/working-state.js +4 -2
  142. package/dist/cli/api-context.d.ts +3 -0
  143. package/dist/cli/api-context.js +6 -0
  144. package/dist/cli/audit-prune.d.ts +1 -59
  145. package/dist/cli/audit-prune.js +2 -61
  146. package/dist/cli/audit.d.ts +1 -1
  147. package/dist/cli/audit.js +42 -43
  148. package/dist/cli/auth.d.ts +2 -2
  149. package/dist/cli/auth.js +61 -44
  150. package/dist/cli/briefs.d.ts +1 -4
  151. package/dist/cli/briefs.js +42 -301
  152. package/dist/cli/card.d.ts +2 -2
  153. package/dist/cli/card.js +63 -56
  154. package/dist/cli/client.d.ts +12 -27
  155. package/dist/cli/client.js +41 -44
  156. package/dist/cli/compact-resume-payload.js +4 -3
  157. package/dist/cli/context.d.ts +2 -3
  158. package/dist/cli/context.js +22 -18
  159. package/dist/cli/continuity.d.ts +6 -6
  160. package/dist/cli/continuity.js +81 -86
  161. package/dist/cli/curate.d.ts +13 -17
  162. package/dist/cli/curate.js +88 -116
  163. package/dist/cli/dag.d.ts +4 -4
  164. package/dist/cli/dag.js +55 -34
  165. package/dist/cli/decisions.d.ts +2 -4
  166. package/dist/cli/decisions.js +18 -309
  167. package/dist/cli/eval.d.ts +1 -1
  168. package/dist/cli/eval.js +27 -26
  169. package/dist/cli/exit.d.ts +6 -0
  170. package/dist/cli/exit.js +11 -0
  171. package/dist/cli/explain.d.ts +2 -3
  172. package/dist/cli/explain.js +25 -27
  173. package/dist/cli/flag-values.d.ts +6 -1
  174. package/dist/cli/flag-values.js +42 -15
  175. package/dist/cli/flags.d.ts +0 -288
  176. package/dist/cli/flags.js +3 -138
  177. package/dist/cli/github.d.ts +14 -0
  178. package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
  179. package/dist/cli/goals.d.ts +2 -2
  180. package/dist/cli/goals.js +46 -50
  181. package/dist/cli/graph.d.ts +3 -0
  182. package/dist/cli/graph.js +83 -0
  183. package/dist/cli/hook-runtime.d.ts +12 -32
  184. package/dist/cli/hook-runtime.js +21 -64
  185. package/dist/cli/incidents.d.ts +3 -0
  186. package/dist/cli/incidents.js +112 -0
  187. package/dist/cli/init.d.ts +2 -2
  188. package/dist/cli/init.js +33 -30
  189. package/dist/cli/install-steps.d.ts +2 -1
  190. package/dist/cli/install-steps.js +13 -14
  191. package/dist/cli/last-sleep.d.ts +2 -1
  192. package/dist/cli/last-sleep.js +4 -1
  193. package/dist/cli/lenient-id.d.ts +2 -0
  194. package/dist/cli/lenient-id.js +13 -0
  195. package/dist/cli/maintenance.d.ts +5 -5
  196. package/dist/cli/maintenance.js +37 -43
  197. package/dist/cli/notes.d.ts +2 -0
  198. package/dist/cli/notes.js +41 -0
  199. package/dist/cli/object-verbs.js +4 -3
  200. package/dist/cli/open-browser.d.ts +14 -0
  201. package/dist/cli/open-browser.js +26 -0
  202. package/dist/cli/owner-validation.d.ts +5 -28
  203. package/dist/cli/owner-validation.js +5 -28
  204. package/dist/cli/playbooks.d.ts +3 -4
  205. package/dist/cli/playbooks.js +131 -300
  206. package/dist/cli/predictions.d.ts +3 -0
  207. package/dist/cli/predictions.js +175 -0
  208. package/dist/cli/print.d.ts +2 -5
  209. package/dist/cli/print.js +3 -5
  210. package/dist/cli/projects.d.ts +2 -2
  211. package/dist/cli/projects.js +31 -25
  212. package/dist/cli/quality-repair-once.d.ts +1 -1
  213. package/dist/cli/quality-repair-once.js +7 -6
  214. package/dist/cli/recall.d.ts +2 -4
  215. package/dist/cli/recall.js +67 -137
  216. package/dist/cli/refine-llm.d.ts +5 -31
  217. package/dist/cli/refine-llm.js +23 -50
  218. package/dist/cli/remember.d.ts +3 -3
  219. package/dist/cli/remember.js +134 -192
  220. package/dist/cli/scheduler.d.ts +2 -17
  221. package/dist/cli/scheduler.js +14 -19
  222. package/dist/cli/serve.js +23 -14
  223. package/dist/cli/session-hooks.d.ts +11 -19
  224. package/dist/cli/session-hooks.js +143 -214
  225. package/dist/cli/setup.d.ts +4 -4
  226. package/dist/cli/setup.js +35 -30
  227. package/dist/cli/shared.d.ts +7 -25
  228. package/dist/cli/shared.js +17 -60
  229. package/dist/cli/slack.d.ts +2 -2
  230. package/dist/cli/slack.js +19 -23
  231. package/dist/cli/sleep-render.js +6 -3
  232. package/dist/cli/sleep.d.ts +3 -2
  233. package/dist/cli/sleep.js +17 -49
  234. package/dist/cli/status.d.ts +11 -14
  235. package/dist/cli/status.js +74 -120
  236. package/dist/cli/stdin.d.ts +4 -6
  237. package/dist/cli/stdin.js +2 -3
  238. package/dist/cli/transfer.d.ts +9 -9
  239. package/dist/cli/transfer.js +87 -108
  240. package/dist/cli/usage.d.ts +0 -79
  241. package/dist/cli/usage.js +1 -689
  242. package/dist/cli/verb-row.d.ts +32 -0
  243. package/dist/cli/verb-row.js +6 -0
  244. package/dist/cli/verbs/health.d.ts +27 -0
  245. package/dist/cli/verbs/health.js +232 -0
  246. package/dist/cli/verbs/memory.d.ts +16 -0
  247. package/dist/cli/verbs/memory.js +244 -0
  248. package/dist/cli/verbs/objects.d.ts +20 -0
  249. package/dist/cli/verbs/objects.js +254 -0
  250. package/dist/cli/verbs/sessions.d.ts +31 -0
  251. package/dist/cli/verbs/sessions.js +312 -0
  252. package/dist/cli/verbs.d.ts +81 -0
  253. package/dist/cli/verbs.js +7 -0
  254. package/dist/cli/versioned-verbs.d.ts +51 -0
  255. package/dist/cli/versioned-verbs.js +79 -0
  256. package/dist/cli.d.ts +1 -654
  257. package/dist/cli.js +44 -510
  258. package/dist/connectors/dlq.d.ts +39 -3
  259. package/dist/connectors/dlq.js +37 -3
  260. package/dist/connectors/github/backfill.d.ts +5 -25
  261. package/dist/connectors/github/backfill.js +26 -52
  262. package/dist/connectors/github/deletion.d.ts +4 -18
  263. package/dist/connectors/github/deletion.js +2 -15
  264. package/dist/connectors/github/dlq.d.ts +8 -33
  265. package/dist/connectors/github/dlq.js +34 -93
  266. package/dist/connectors/github/ingest.d.ts +4 -12
  267. package/dist/connectors/github/ingest.js +5 -36
  268. package/dist/connectors/github/octokit-client.d.ts +4 -16
  269. package/dist/connectors/github/octokit-client.js +27 -24
  270. package/dist/connectors/github/ratelimit.d.ts +3 -14
  271. package/dist/connectors/github/ratelimit.js +3 -14
  272. package/dist/connectors/github/scope.d.ts +3 -5
  273. package/dist/connectors/github/scope.js +3 -5
  274. package/dist/connectors/github/signature.d.ts +4 -26
  275. package/dist/connectors/github/signature.js +4 -26
  276. package/dist/connectors/github/tenant-routing.d.ts +2 -24
  277. package/dist/connectors/github/tenant-routing.js +4 -26
  278. package/dist/connectors/github/transform.js +2 -16
  279. package/dist/connectors/github/types.d.ts +3 -15
  280. package/dist/connectors/github/types.js +2 -9
  281. package/dist/connectors/github/webhook.d.ts +3 -16
  282. package/dist/connectors/github/webhook.js +38 -23
  283. package/dist/connectors/ingest.d.ts +10 -0
  284. package/dist/connectors/ingest.js +28 -0
  285. package/dist/connectors/slack/backfill.d.ts +4 -17
  286. package/dist/connectors/slack/backfill.js +4 -13
  287. package/dist/connectors/slack/dlq.d.ts +2 -19
  288. package/dist/connectors/slack/dlq.js +51 -90
  289. package/dist/connectors/slack/ingest.d.ts +4 -9
  290. package/dist/connectors/slack/ingest.js +4 -30
  291. package/dist/connectors/slack/scope.d.ts +2 -8
  292. package/dist/connectors/slack/scope.js +2 -8
  293. package/dist/connectors/slack/signature.d.ts +1 -6
  294. package/dist/connectors/slack/tenant-routing.d.ts +2 -19
  295. package/dist/connectors/slack/tenant-routing.js +2 -21
  296. package/dist/connectors/slack/transform.d.ts +2 -18
  297. package/dist/connectors/slack/transform.js +2 -18
  298. package/dist/connectors/slack/types.d.ts +3 -9
  299. package/dist/connectors/slack/types.js +2 -4
  300. package/dist/connectors/slack/web-client.js +33 -27
  301. package/dist/connectors/slack/webhook.d.ts +3 -19
  302. package/dist/connectors/slack/webhook.js +6 -26
  303. package/dist/connectors/slack/workspaces.d.ts +4 -24
  304. package/dist/connectors/slack/workspaces.js +4 -24
  305. package/dist/consolidate/conflicts.js +7 -15
  306. package/dist/consolidate/dag-summary.d.ts +8 -0
  307. package/dist/consolidate/dag-summary.js +41 -0
  308. package/dist/consolidate/dag.d.ts +5 -28
  309. package/dist/consolidate/dag.js +29 -84
  310. package/dist/consolidate/decay.js +7 -19
  311. package/dist/consolidate/dedupe.d.ts +13 -52
  312. package/dist/consolidate/dedupe.js +18 -74
  313. package/dist/consolidate/flush-units.d.ts +3 -4
  314. package/dist/consolidate/flush-units.js +3 -3
  315. package/dist/consolidate/half-life-migration.d.ts +3 -26
  316. package/dist/consolidate/half-life-migration.js +11 -28
  317. package/dist/consolidate/llm-passes.js +49 -40
  318. package/dist/consolidate/memory-value-weights.d.ts +2 -13
  319. package/dist/consolidate/memory-value-weights.js +2 -13
  320. package/dist/consolidate/memory-value.d.ts +11 -84
  321. package/dist/consolidate/memory-value.js +18 -105
  322. package/dist/consolidate/merge.js +12 -33
  323. package/dist/consolidate/physics-pass.d.ts +6 -1
  324. package/dist/consolidate/physics-pass.js +27 -9
  325. package/dist/consolidate/replay.d.ts +6 -38
  326. package/dist/consolidate/replay.js +25 -56
  327. package/dist/consolidate/run.js +1 -1
  328. package/dist/consolidate/sleep.d.ts +1 -8
  329. package/dist/consolidate/sleep.js +13 -22
  330. package/dist/consolidate/trace.d.ts +3 -18
  331. package/dist/consolidate/trace.js +3 -18
  332. package/dist/consolidate/traces.js +9 -25
  333. package/dist/core/ablation.d.ts +14 -91
  334. package/dist/core/ablation.js +16 -91
  335. package/dist/core/active-scope.d.ts +7 -0
  336. package/dist/{sharing/scope.js → core/active-scope.js} +5 -12
  337. package/dist/core/ambient.d.ts +5 -8
  338. package/dist/core/ambient.js +40 -26
  339. package/dist/core/api-errors.d.ts +16 -0
  340. package/dist/core/api-errors.js +20 -0
  341. package/dist/core/capture-contract.d.ts +4 -2
  342. package/dist/core/capture-contract.js +4 -2
  343. package/dist/core/card.d.ts +4 -1
  344. package/dist/core/card.js +11 -1
  345. package/dist/core/compaction-timing.d.ts +7 -0
  346. package/dist/core/compaction-timing.js +9 -0
  347. package/dist/core/compare.d.ts +11 -67
  348. package/dist/core/compare.js +9 -63
  349. package/dist/core/config.d.ts +10 -24
  350. package/dist/core/config.js +20 -16
  351. package/dist/core/cosine.d.ts +3 -0
  352. package/dist/core/cosine.js +19 -0
  353. package/dist/core/handoff.d.ts +1 -7
  354. package/dist/core/handoff.js +1 -7
  355. package/dist/core/markdown.d.ts +6 -0
  356. package/dist/{store → core}/markdown.js +23 -22
  357. package/dist/core/memory-audit.d.ts +17 -0
  358. package/dist/core/memory-audit.js +54 -0
  359. package/dist/core/memory-quality.js +1 -1
  360. package/dist/core/memory.d.ts +51 -168
  361. package/dist/core/memory.js +76 -239
  362. package/dist/{consolidate → core}/merged-row.d.ts +1 -1
  363. package/dist/{consolidate → core}/merged-row.js +3 -2
  364. package/dist/core/package-root.d.ts +3 -0
  365. package/dist/core/package-root.js +5 -0
  366. package/dist/core/physics-config.d.ts +1 -4
  367. package/dist/core/physics-config.js +3 -8
  368. package/dist/core/physics.d.ts +15 -61
  369. package/dist/core/physics.js +65 -138
  370. package/dist/core/prediction.d.ts +3 -0
  371. package/dist/core/prediction.js +6 -0
  372. package/dist/core/project-identity.d.ts +20 -58
  373. package/dist/core/project-identity.js +27 -39
  374. package/dist/core/project-remote.js +13 -2
  375. package/dist/core/raw-append-only.d.ts +5 -0
  376. package/dist/core/raw-append-only.js +7 -0
  377. package/dist/core/recall-scope.d.ts +69 -0
  378. package/dist/core/recall-scope.js +138 -0
  379. package/dist/core/salience.d.ts +1 -7
  380. package/dist/core/salience.js +1 -7
  381. package/dist/dashboard/dashboard-actions.js +2 -2
  382. package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
  383. package/dist/dashboard/dashboard-snapshot.js +11 -2
  384. package/dist/dashboard/dashboard-types.d.ts +2 -1
  385. package/dist/dashboard/dashboard.d.ts +1 -0
  386. package/dist/dashboard/dashboard.js +50 -4
  387. package/dist/db/busy.d.ts +3 -8
  388. package/dist/db/busy.js +37 -33
  389. package/dist/db/connect.js +7 -8
  390. package/dist/db/index.d.ts +3 -3
  391. package/dist/db/index.js +3 -3
  392. package/dist/db/migrate.js +3 -3
  393. package/dist/db/migrations/index.d.ts +1 -1
  394. package/dist/db/migrations/index.js +3 -1
  395. package/dist/db/migrations/types.d.ts +2 -5
  396. package/dist/db/migrations/v14.js +2 -3
  397. package/dist/db/migrations/v15.js +2 -8
  398. package/dist/db/migrations/v16.js +2 -3
  399. package/dist/db/migrations/v17.js +2 -3
  400. package/dist/db/migrations/v19.js +2 -5
  401. package/dist/db/migrations/v20.js +2 -7
  402. package/dist/db/migrations/v22.js +4 -17
  403. package/dist/db/migrations/v23.js +3 -14
  404. package/dist/db/migrations/v24.js +2 -4
  405. package/dist/db/migrations/v25.js +3 -8
  406. package/dist/db/migrations/v26.js +2 -13
  407. package/dist/db/migrations/v27.js +3 -11
  408. package/dist/db/migrations/v28.js +2 -14
  409. package/dist/db/migrations/v29.js +4 -18
  410. package/dist/db/migrations/v30.js +4 -16
  411. package/dist/db/migrations/v31.js +2 -15
  412. package/dist/db/migrations/v32.js +4 -22
  413. package/dist/db/migrations/v33.js +2 -15
  414. package/dist/db/migrations/v34.js +2 -11
  415. package/dist/db/migrations/v35.js +2 -11
  416. package/dist/db/migrations/v36.js +2 -11
  417. package/dist/db/migrations/v37.js +8 -33
  418. package/dist/db/migrations/v38.js +5 -38
  419. package/dist/db/migrations/v39.js +9 -20
  420. package/dist/db/migrations/v40.js +2 -9
  421. package/dist/db/migrations/v41.js +2 -24
  422. package/dist/db/migrations/v43.js +1 -1
  423. package/dist/db/migrations/v44.js +2 -8
  424. package/dist/db/migrations/v45.js +2 -7
  425. package/dist/db/migrations/v47.js +2 -3
  426. package/dist/db/migrations/v51.js +1 -1
  427. package/dist/db/migrations/v55.d.ts +3 -0
  428. package/dist/db/migrations/v55.js +17 -0
  429. package/dist/db/open.d.ts +2 -2
  430. package/dist/db/open.js +21 -9
  431. package/dist/db/physics-state.d.ts +6 -22
  432. package/dist/db/physics-state.js +28 -39
  433. package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
  434. package/dist/db/raw-archive-mirror-cleanup.js +2 -17
  435. package/dist/db/tables.d.ts +2 -0
  436. package/dist/db/tables.js +6 -2
  437. package/dist/db/vector-store.d.ts +2 -0
  438. package/dist/db/vector-store.js +25 -5
  439. package/dist/db/wal-checkpointer.js +2 -1
  440. package/dist/doctor.js +85 -27
  441. package/dist/embeddings/local.d.ts +62 -0
  442. package/dist/embeddings/local.js +146 -0
  443. package/dist/embeddings/provider.d.ts +43 -0
  444. package/dist/{store/embeddings → embeddings}/provider.js +58 -83
  445. package/dist/embeddings/transformers.d.ts +26 -0
  446. package/dist/embeddings/transformers.js +89 -0
  447. package/dist/entry/session-text.d.ts +1 -1
  448. package/dist/entry/session-text.js +3 -2
  449. package/dist/eval/eval-stats.d.ts +15 -53
  450. package/dist/eval/eval-stats.js +12 -42
  451. package/dist/eval/eval-suite.d.ts +2 -13
  452. package/dist/eval/eval-suite.js +91 -45
  453. package/dist/eval/eval.d.ts +6 -24
  454. package/dist/eval/eval.js +8 -35
  455. package/dist/eval/judgment.d.ts +0 -3
  456. package/dist/eval/judgment.js +30 -15
  457. package/dist/extensions/openclaw-plugin/index.js +1 -1
  458. package/dist/graph/extract.d.ts +5 -27
  459. package/dist/graph/extract.js +10 -36
  460. package/dist/graph/recall.d.ts +7 -20
  461. package/dist/graph/recall.js +15 -77
  462. package/dist/graph/stream.d.ts +7 -39
  463. package/dist/graph/stream.js +11 -34
  464. package/dist/graph/view.d.ts +9 -35
  465. package/dist/graph/view.js +24 -44
  466. package/dist/graph/write.d.ts +1 -1
  467. package/dist/graph/write.js +9 -9
  468. package/dist/hooks/codex-session.js +3 -2
  469. package/dist/hooks/codex-wrapper.js +4 -3
  470. package/dist/hooks/copilot.js +2 -1
  471. package/dist/hooks/hook-blocks.d.ts +6 -2
  472. package/dist/hooks/hook-blocks.js +37 -124
  473. package/dist/hooks/json-hooks.d.ts +4 -36
  474. package/dist/hooks/json-hooks.js +22 -59
  475. package/dist/hooks/opencode.d.ts +0 -38
  476. package/dist/hooks/opencode.js +17 -81
  477. package/dist/hooks/shared.d.ts +6 -21
  478. package/dist/hooks/shared.js +31 -33
  479. package/dist/importers/core.d.ts +12 -37
  480. package/dist/importers/core.js +10 -28
  481. package/dist/importers/markdown-parse.d.ts +8 -22
  482. package/dist/importers/markdown-parse.js +8 -25
  483. package/dist/importers/markdown.js +3 -12
  484. package/dist/importers/sources.js +12 -39
  485. package/dist/importers/vault.d.ts +2 -8
  486. package/dist/importers/vault.js +31 -85
  487. package/dist/index.d.ts +8 -3
  488. package/dist/index.js +8 -3
  489. package/dist/learn/autolearn.d.ts +23 -42
  490. package/dist/learn/autolearn.js +45 -52
  491. package/dist/learn/churn-git.js +13 -4
  492. package/dist/learn/extract.d.ts +3 -2
  493. package/dist/learn/extract.js +8 -8
  494. package/dist/learn/forward-claim-detector.d.ts +6 -30
  495. package/dist/learn/forward-claim-detector.js +18 -68
  496. package/dist/learn/invalidation.d.ts +6 -18
  497. package/dist/learn/invalidation.js +18 -31
  498. package/dist/mcp/admin-tools.d.ts +2 -2
  499. package/dist/mcp/admin-tools.js +30 -53
  500. package/dist/mcp/format.js +3 -2
  501. package/dist/mcp/framing.d.ts +1 -0
  502. package/dist/mcp/framing.js +1 -1
  503. package/dist/mcp/memory-tools.js +7 -10
  504. package/dist/mcp/protocol.d.ts +15 -29
  505. package/dist/mcp/protocol.js +26 -16
  506. package/dist/mcp/recall-tools.js +14 -11
  507. package/dist/mcp/request.d.ts +3 -11
  508. package/dist/mcp/request.js +12 -27
  509. package/dist/mcp/server.d.ts +3 -9
  510. package/dist/mcp/server.js +5 -16
  511. package/dist/mcp/session-state.d.ts +1 -1
  512. package/dist/mcp/session-state.js +5 -11
  513. package/dist/mcp/stdio.d.ts +2 -6
  514. package/dist/mcp/stdio.js +68 -16
  515. package/dist/mcp/tool-args.js +2 -1
  516. package/dist/mcp/tools.js +47 -22
  517. package/dist/objects/customer-notes.d.ts +9 -44
  518. package/dist/objects/customer-notes.js +7 -48
  519. package/dist/objects/decisions.d.ts +14 -52
  520. package/dist/objects/decisions.js +15 -53
  521. package/dist/objects/descriptor.d.ts +1 -1
  522. package/dist/objects/incidents.d.ts +9 -40
  523. package/dist/objects/incidents.js +7 -41
  524. package/dist/objects/lifecycle.d.ts +1 -1
  525. package/dist/objects/lifecycle.js +2 -1
  526. package/dist/objects/policies.d.ts +13 -91
  527. package/dist/objects/policies.js +13 -99
  528. package/dist/objects/processes.d.ts +9 -54
  529. package/dist/objects/processes.js +7 -61
  530. package/dist/objects/project-briefs.d.ts +13 -57
  531. package/dist/objects/project-briefs.js +16 -78
  532. package/dist/objects/skills.d.ts +9 -44
  533. package/dist/objects/skills.js +8 -54
  534. package/dist/postinstall.js +7 -20
  535. package/dist/predictions/planning-fallacy.d.ts +11 -34
  536. package/dist/rerankers/clef.js +6 -37
  537. package/dist/rerankers/cross-encoder.d.ts +31 -2
  538. package/dist/rerankers/cross-encoder.js +65 -101
  539. package/dist/rerankers/index.js +5 -4
  540. package/dist/rerankers/jev.js +11 -10
  541. package/dist/rerankers/llm.d.ts +2 -11
  542. package/dist/rerankers/llm.js +14 -14
  543. package/dist/rerankers/outage-warning.d.ts +5 -2
  544. package/dist/rerankers/outage-warning.js +7 -4
  545. package/dist/rerankers/remote.d.ts +1 -0
  546. package/dist/rerankers/remote.js +2 -0
  547. package/dist/rerankers/types.d.ts +2 -14
  548. package/dist/search/bm25-search.js +1 -1
  549. package/dist/search/boosts.d.ts +0 -2
  550. package/dist/search/boosts.js +3 -3
  551. package/dist/search/embed-memories.d.ts +9 -0
  552. package/dist/search/embed-memories.js +377 -0
  553. package/dist/search/goal-boost.d.ts +23 -0
  554. package/dist/search/goal-boost.js +93 -0
  555. package/dist/search/hybrid.d.ts +11 -2
  556. package/dist/search/hybrid.js +9 -4
  557. package/dist/search/multihop.js +2 -3
  558. package/dist/search/path-context.d.ts +5 -18
  559. package/dist/search/path-context.js +5 -18
  560. package/dist/search/physics-search.d.ts +6 -3
  561. package/dist/search/physics-search.js +29 -19
  562. package/dist/search/rerank.js +1 -1
  563. package/dist/search/rrf.d.ts +7 -35
  564. package/dist/search/rrf.js +5 -30
  565. package/dist/search/vector.d.ts +13 -4
  566. package/dist/search/vector.js +40 -13
  567. package/dist/server/auth.d.ts +11 -28
  568. package/dist/server/auth.js +49 -32
  569. package/dist/server/boot.d.ts +2 -21
  570. package/dist/server/boot.js +69 -161
  571. package/dist/server/client-ip.d.ts +3 -21
  572. package/dist/server/client-ip.js +8 -30
  573. package/dist/server/deadline.d.ts +0 -2
  574. package/dist/server/deadline.js +1 -7
  575. package/dist/server/defaults.d.ts +4 -0
  576. package/dist/server/defaults.js +5 -0
  577. package/dist/server/key-check-bounds.d.ts +2 -1
  578. package/dist/server/lifecycle.d.ts +5 -4
  579. package/dist/server/lifecycle.js +19 -4
  580. package/dist/server/mcp-http.js +24 -53
  581. package/dist/server/rate-limit.d.ts +5 -18
  582. package/dist/server/rate-limit.js +4 -13
  583. package/dist/server/request.d.ts +4 -8
  584. package/dist/server/request.js +16 -19
  585. package/dist/server/route-checks.d.ts +7 -0
  586. package/dist/server/route-checks.js +42 -0
  587. package/dist/server/route-table.d.ts +9 -8
  588. package/dist/server/route-table.js +127 -139
  589. package/dist/server/routes/admin.d.ts +8 -8
  590. package/dist/server/routes/admin.js +35 -49
  591. package/dist/server/routes/customer-notes.d.ts +6 -6
  592. package/dist/server/routes/customer-notes.js +8 -14
  593. package/dist/server/routes/decisions.d.ts +6 -6
  594. package/dist/server/routes/decisions.js +12 -21
  595. package/dist/server/routes/incidents.d.ts +6 -6
  596. package/dist/server/routes/incidents.js +14 -25
  597. package/dist/server/routes/memories.d.ts +9 -9
  598. package/dist/server/routes/memories.js +20 -63
  599. package/dist/server/routes/object-routes.d.ts +6 -11
  600. package/dist/server/routes/object-routes.js +11 -22
  601. package/dist/server/routes/policies.d.ts +7 -7
  602. package/dist/server/routes/policies.js +12 -22
  603. package/dist/server/routes/predictions.d.ts +6 -6
  604. package/dist/server/routes/predictions.js +22 -38
  605. package/dist/server/routes/processes.d.ts +6 -6
  606. package/dist/server/routes/processes.js +17 -28
  607. package/dist/server/routes/project-briefs.d.ts +7 -7
  608. package/dist/server/routes/project-briefs.js +11 -20
  609. package/dist/server/routes/recall.d.ts +5 -5
  610. package/dist/server/routes/recall.js +16 -45
  611. package/dist/server/routes/skills.d.ts +7 -7
  612. package/dist/server/routes/skills.js +10 -22
  613. package/dist/server/server-detect.d.ts +15 -53
  614. package/dist/server/server-detect.js +55 -96
  615. package/dist/server/sleep-child.js +26 -7
  616. package/dist/server/sleep-offload.d.ts +11 -5
  617. package/dist/server/sleep-offload.js +21 -12
  618. package/dist/server/types.d.ts +32 -18
  619. package/dist/server/validation.d.ts +3 -2
  620. package/dist/server/validation.js +15 -33
  621. package/dist/server.d.ts +7 -6
  622. package/dist/server.js +8 -6
  623. package/dist/sharing/global-store.d.ts +19 -0
  624. package/dist/sharing/global-store.js +75 -0
  625. package/dist/sharing/global-sync.d.ts +6 -0
  626. package/dist/sharing/global-sync.js +73 -0
  627. package/dist/sharing/project-merge.d.ts +11 -19
  628. package/dist/sharing/project-merge.js +63 -125
  629. package/dist/sharing/search-both.d.ts +60 -0
  630. package/dist/sharing/search-both.js +138 -0
  631. package/dist/sharing/share.d.ts +40 -0
  632. package/dist/sharing/share.js +229 -0
  633. package/dist/store/ambient.js +9 -15
  634. package/dist/store/audit-event.d.ts +5 -13
  635. package/dist/store/audit-event.js +4 -12
  636. package/dist/store/audit.d.ts +2 -21
  637. package/dist/store/audit.js +8 -67
  638. package/dist/store/auth.d.ts +10 -8
  639. package/dist/store/auth.js +17 -12
  640. package/dist/store/candidates.d.ts +23 -5
  641. package/dist/store/candidates.js +119 -71
  642. package/dist/store/capture-write.d.ts +17 -0
  643. package/dist/store/capture-write.js +35 -0
  644. package/dist/store/card-detail.d.ts +2 -1
  645. package/dist/store/card-detail.js +2 -1
  646. package/dist/store/cards.d.ts +14 -9
  647. package/dist/store/cards.js +72 -126
  648. package/dist/store/compaction-caller.d.ts +18 -0
  649. package/dist/store/compaction-caller.js +29 -0
  650. package/dist/store/compactions-record.d.ts +115 -0
  651. package/dist/store/compactions-record.js +417 -0
  652. package/dist/store/compactions.js +6 -4
  653. package/dist/store/conflicts.d.ts +4 -21
  654. package/dist/store/conflicts.js +76 -152
  655. package/dist/store/connectors/dlq.d.ts +10 -0
  656. package/dist/store/connectors/dlq.js +32 -0
  657. package/dist/store/connectors/github.d.ts +14 -16
  658. package/dist/store/connectors/github.js +34 -57
  659. package/dist/store/connectors/slack.d.ts +2 -11
  660. package/dist/store/connectors/slack.js +18 -47
  661. package/dist/store/dashboard-reads.js +11 -14
  662. package/dist/store/delete-and-batch.d.ts +17 -31
  663. package/dist/store/delete-and-batch.js +84 -67
  664. package/dist/store/delivery-recorder.d.ts +15 -4
  665. package/dist/store/delivery-recorder.js +34 -17
  666. package/dist/store/descendant-page.js +6 -3
  667. package/dist/store/diagnostics.js +6 -13
  668. package/dist/store/dormant.d.ts +8 -30
  669. package/dist/store/dormant.js +18 -57
  670. package/dist/store/embeddings/index.d.ts +11 -90
  671. package/dist/store/embeddings/index.js +18 -523
  672. package/dist/store/entry-reads.d.ts +34 -61
  673. package/dist/store/entry-reads.js +111 -136
  674. package/dist/store/entry-row.d.ts +6 -35
  675. package/dist/store/entry-row.js +9 -37
  676. package/dist/store/entry-writes.d.ts +12 -18
  677. package/dist/store/entry-writes.js +46 -44
  678. package/dist/store/failure-log-at.d.ts +8 -0
  679. package/dist/store/failure-log-at.js +16 -0
  680. package/dist/store/failure-log.d.ts +2 -2
  681. package/dist/store/failure-log.js +5 -3
  682. package/dist/{trust → store}/gated-write.d.ts +3 -1
  683. package/dist/{trust → store}/gated-write.js +7 -5
  684. package/dist/store/goals.d.ts +3 -40
  685. package/dist/store/goals.js +41 -178
  686. package/dist/store/graph-queue.d.ts +6 -22
  687. package/dist/store/graph-queue.js +14 -45
  688. package/dist/store/graph-reads.d.ts +11 -35
  689. package/dist/store/graph-reads.js +24 -60
  690. package/dist/store/graph-rows.d.ts +3 -6
  691. package/dist/store/graph-rows.js +6 -9
  692. package/dist/store/graph-view-rows.d.ts +2 -1
  693. package/dist/store/graph-view-rows.js +2 -1
  694. package/dist/store/graph-writes.d.ts +10 -35
  695. package/dist/store/graph-writes.js +59 -106
  696. package/dist/store/half-life.d.ts +2 -1
  697. package/dist/store/half-life.js +14 -16
  698. package/dist/store/handoffs.d.ts +6 -12
  699. package/dist/store/handoffs.js +22 -40
  700. package/dist/store/index-and-stats.d.ts +6 -19
  701. package/dist/store/index-and-stats.js +36 -84
  702. package/dist/store/key-writes.js +1 -1
  703. package/dist/store/ledger-turn.d.ts +9 -0
  704. package/dist/store/ledger-turn.js +38 -0
  705. package/dist/store/mirrors.d.ts +2 -6
  706. package/dist/store/mirrors.js +24 -29
  707. package/dist/store/open.d.ts +0 -4
  708. package/dist/store/open.js +42 -62
  709. package/dist/store/pilot-arm.d.ts +12 -0
  710. package/dist/store/pilot-arm.js +42 -0
  711. package/dist/store/planning-fallacy-evidence.d.ts +2 -30
  712. package/dist/store/planning-fallacy-evidence.js +8 -37
  713. package/dist/store/port.d.ts +91 -82
  714. package/dist/store/port.js +8 -0
  715. package/dist/store/predictions.d.ts +12 -53
  716. package/dist/store/predictions.js +41 -125
  717. package/dist/store/project-tags.d.ts +62 -0
  718. package/dist/store/project-tags.js +67 -0
  719. package/dist/{cli → store}/quality-repair.js +15 -31
  720. package/dist/store/quarantine.js +2 -1
  721. package/dist/store/raw-archive.d.ts +4 -16
  722. package/dist/store/raw-archive.js +14 -29
  723. package/dist/store/recall-trace.d.ts +12 -77
  724. package/dist/store/recall-trace.js +37 -97
  725. package/dist/store/rejected-values.js +9 -20
  726. package/dist/store/rejection-probe.d.ts +4 -0
  727. package/dist/store/rejection-probe.js +19 -0
  728. package/dist/store/rejection.d.ts +10 -73
  729. package/dist/store/rejection.js +12 -84
  730. package/dist/store/report-reads.d.ts +6 -0
  731. package/dist/store/report-reads.js +29 -0
  732. package/dist/store/rows.d.ts +9 -19
  733. package/dist/store/rows.js +36 -34
  734. package/dist/store/rule-sql.d.ts +14 -0
  735. package/dist/store/rule-sql.js +56 -0
  736. package/dist/store/search-rows.d.ts +7 -38
  737. package/dist/store/search-rows.js +23 -54
  738. package/dist/store/sessions.d.ts +10 -47
  739. package/dist/store/sessions.js +21 -75
  740. package/dist/store/set-aside.d.ts +14 -0
  741. package/dist/store/set-aside.js +23 -0
  742. package/dist/store/sqlite/busy.d.ts +3 -0
  743. package/dist/store/sqlite/busy.js +8 -0
  744. package/dist/store/sqlite/connector-events-group.js +5 -8
  745. package/dist/store/sqlite/connector-writes-group.js +3 -3
  746. package/dist/store/sqlite/entry-writes-group.js +4 -4
  747. package/dist/store/sqlite/error-codec.js +8 -5
  748. package/dist/store/sqlite/executor.d.ts +2 -1
  749. package/dist/store/sqlite/executor.js +12 -5
  750. package/dist/store/sqlite/graph-reads-group.js +1 -1
  751. package/dist/store/sqlite/held-connection.d.ts +9 -0
  752. package/dist/store/sqlite/held-connection.js +41 -0
  753. package/dist/store/sqlite/local.d.ts +3 -3
  754. package/dist/store/sqlite/local.js +1 -0
  755. package/dist/store/sqlite/object-rows.d.ts +1 -1
  756. package/dist/store/sqlite/object-rows.js +6 -3
  757. package/dist/store/sqlite/objects-group.d.ts +1 -1
  758. package/dist/store/sqlite/objects-group.js +5 -3
  759. package/dist/store/sqlite/quarantine-group.js +2 -2
  760. package/dist/store/sqlite/store.d.ts +1 -4
  761. package/dist/store/sqlite/store.js +16 -15
  762. package/dist/store/sqlite/vector-reads-group.js +2 -2
  763. package/dist/store/sqlite/worker-jobs.js +1 -1
  764. package/dist/store/sqlite/worker-ops.d.ts +13 -2
  765. package/dist/store/sqlite/worker-ops.js +13 -2
  766. package/dist/store/sqlite/worker-store.js +5 -2
  767. package/dist/store/summaries.d.ts +11 -63
  768. package/dist/store/summaries.js +37 -148
  769. package/dist/store/summary-dirty.js +1 -1
  770. package/dist/store/tenant-lookup.d.ts +6 -1
  771. package/dist/store/tenant-lookup.js +7 -0
  772. package/dist/store/tenant.d.ts +2 -16
  773. package/dist/store/tenant.js +4 -19
  774. package/dist/store/token-ledger.d.ts +13 -50
  775. package/dist/store/token-ledger.js +19 -85
  776. package/dist/store/usage-reports.js +5 -13
  777. package/dist/store/vector-index.d.ts +46 -0
  778. package/dist/store/vector-index.js +171 -0
  779. package/dist/store/working-memory.d.ts +6 -25
  780. package/dist/store/working-memory.js +18 -52
  781. package/dist/support-bundle.js +9 -8
  782. package/dist/trust/reject-flow.js +3 -5
  783. package/dist/util/agent-homes.d.ts +15 -0
  784. package/dist/util/agent-homes.js +34 -0
  785. package/dist/util/anthropic-messages.d.ts +3 -0
  786. package/dist/util/anthropic-messages.js +35 -6
  787. package/dist/util/atomic-write.d.ts +2 -1
  788. package/dist/util/atomic-write.js +35 -4
  789. package/dist/util/capped-json.d.ts +6 -0
  790. package/dist/util/capped-json.js +46 -0
  791. package/dist/util/chunked.d.ts +3 -0
  792. package/dist/util/chunked.js +10 -0
  793. package/dist/util/crash-handlers.d.ts +8 -1
  794. package/dist/util/crash-handlers.js +52 -10
  795. package/dist/util/ellipsize.d.ts +3 -0
  796. package/dist/util/ellipsize.js +5 -0
  797. package/dist/util/env.d.ts +14 -6
  798. package/dist/util/env.js +15 -7
  799. package/dist/util/format.d.ts +3 -0
  800. package/dist/util/format.js +6 -0
  801. package/dist/util/home-path.d.ts +2 -1
  802. package/dist/util/home-path.js +4 -2
  803. package/dist/util/hook-payload.d.ts +8 -0
  804. package/dist/util/hook-payload.js +37 -0
  805. package/dist/util/http-retry.d.ts +9 -1
  806. package/dist/util/http-retry.js +67 -8
  807. package/dist/util/http-util.d.ts +0 -8
  808. package/dist/util/http-util.js +10 -21
  809. package/dist/util/limits.d.ts +7 -0
  810. package/dist/util/limits.js +14 -0
  811. package/dist/util/log.d.ts +7 -2
  812. package/dist/util/log.js +34 -9
  813. package/dist/util/request-scope.d.ts +5 -2
  814. package/dist/util/request-scope.js +13 -7
  815. package/dist/util/secret-detect.d.ts +5 -30
  816. package/dist/util/secret-detect.js +19 -40
  817. package/dist/util/sqlite-blocked.d.ts +2 -0
  818. package/dist/util/sqlite-blocked.js +5 -0
  819. package/dist/util/stored-json.d.ts +1 -1
  820. package/dist/util/stored-json.js +1 -1
  821. package/dist/util/stream-tee.d.ts +3 -0
  822. package/dist/util/stream-tee.js +35 -0
  823. package/dist/util/time.d.ts +4 -0
  824. package/dist/util/time.js +4 -0
  825. package/dist/util/token-text.d.ts +1 -4
  826. package/dist/util/token-text.js +1 -4
  827. package/dist/util/transcript-tail.d.ts +2 -0
  828. package/dist/util/transcript-tail.js +24 -23
  829. package/dist/util/version.d.ts +5 -20
  830. package/dist/util/version.js +5 -20
  831. package/dist/{store → util}/yaml.d.ts +1 -5
  832. package/dist/{store → util}/yaml.js +2 -6
  833. package/extensions/openclaw-plugin/index.ts +1 -1
  834. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  835. package/extensions/openclaw-plugin/package.json +1 -1
  836. package/openclaw.plugin.json +1 -1
  837. package/package.json +2 -2
  838. package/dist/cli/provenance-coverage.d.ts +0 -18
  839. package/dist/connectors/github/cli-impl.d.ts +0 -25
  840. package/dist/sharing/scope.d.ts +0 -14
  841. package/dist/sharing/shared.d.ts +0 -187
  842. package/dist/sharing/shared.js +0 -563
  843. package/dist/store/embeddings/local.d.ts +0 -15
  844. package/dist/store/embeddings/local.js +0 -192
  845. package/dist/store/embeddings/provider.d.ts +0 -77
  846. package/dist/store/markdown.d.ts +0 -10
  847. package/dist/store/recall-scope.d.ts +0 -138
  848. package/dist/store/recall-scope.js +0 -216
  849. package/dist/store/vector-writes.d.ts +0 -13
  850. package/dist/store/vector-writes.js +0 -89
  851. /package/dist/{store → core}/object-types.d.ts +0 -0
  852. /package/dist/{store → core}/object-types.js +0 -0
  853. /package/dist/{cli → store}/quality-repair.d.ts +0 -0
  854. /package/dist/{capture → util}/compaction-items.d.ts +0 -0
  855. /package/dist/{capture → util}/compaction-items.js +0 -0
@@ -1,7 +1,7 @@
1
- import type { RouteRequest } from '../types.js';
2
- export declare function handleCreateDecision(rr: RouteRequest): Promise<void>;
3
- export declare function handleListDecisions(rr: RouteRequest): Promise<void>;
4
- export declare function handleSupersedeDecision(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
5
- export declare function handleCloseDecision(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
6
- export declare function handleGetDecision(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
1
+ import type { AuthedRouteRequest } from '../types.js';
2
+ export declare function handleCreateDecision(rr: AuthedRouteRequest): Promise<void>;
3
+ export declare function handleListDecisions(rr: AuthedRouteRequest): Promise<void>;
4
+ export declare function handleSupersedeDecision(rr: AuthedRouteRequest, match: RegExpMatchArray): Promise<void>;
5
+ export declare function handleCloseDecision(rr: AuthedRouteRequest, match: RegExpMatchArray): Promise<void>;
6
+ export declare function handleGetDecision(rr: AuthedRouteRequest, match: RegExpMatchArray): Promise<void>;
7
7
  //# sourceMappingURL=decisions.d.ts.map
@@ -3,11 +3,11 @@ import { DECISION } from '../../objects/decisions.js';
3
3
  import { HttpError, sendJson } from '../../util/http-util.js';
4
4
  import { NotFoundError } from '../../core/api-errors.js';
5
5
  import { isJsonNumber } from '../../util/json.js';
6
- import { buildContextWithAuth } from '../auth.js';
7
- import { parseJsonBody } from '../validation.js';
8
- import { closeRoute, getRoute, listRoute, optionalString, requiredString, saveFor } from './object-routes.js';
6
+ import { MAX_SHORT_FIELD_LEN, parseJsonBody } from '../validation.js';
7
+ import { saveFor } from '../../api/objects.js';
8
+ import { closeRoute, getRoute, listRoute, optionalString, requiredString } from './object-routes.js';
9
9
  const decisionRoutes = { noun: 'decision', field: 'decision', listField: 'decisions', object: DECISION };
10
- const TEXT = { max: 4096, untrimmed: true };
10
+ const TEXT = { max: MAX_SHORT_FIELD_LEN, untrimmed: true };
11
11
  function supersededId(body) {
12
12
  const raw = body['supersedesDecisionId'];
13
13
  if (raw === undefined || raw === null)
@@ -17,27 +17,18 @@ function supersededId(body) {
17
17
  }
18
18
  return raw;
19
19
  }
20
- // ── decisions (first-class object) ──
21
- //
22
- // 5 routes: POST /v1/decisions (create, optional supersedesDecisionId),
23
- // GET /v1/decisions (list, status filter), GET /v1/decisions/:id (show),
24
- // POST /v1/decisions/:id/supersede (create a successor + supersede :id),
25
- // POST /v1/decisions/:id/close (retire). Bearer-authed + tenant-scoped via
26
- // buildContextWithAuth. status validated against VALID_DECISION_STATES.
27
- // DoS caps: text 4096, context 4096. The HTTP surface is
28
- // new (no legacy --supersedes <memory-id> constraint), so it supersedes by
29
- // table id and never weakens a memory mirror.
20
+ // Routes: /v1/decisions (create, list, show, supersede, close), Bearer-authed and tenant-scoped; status is validated against VALID_DECISION_STATES.
21
+ // The HTTP surface has no legacy --supersedes <memory-id> constraint, so it supersedes by table id and never weakens a memory mirror.
30
22
  export async function handleCreateDecision(rr) {
31
- const { req, res } = rr;
32
- const ctx = await buildContextWithAuth(req, rr.opts);
23
+ const { req, res, ctx } = rr;
33
24
  const body = await parseJsonBody(req, ctx);
34
25
  const write = {
35
26
  decisionText: requiredString(body, 'text', TEXT),
36
- context: optionalString(body, 'context', 4096),
27
+ context: optionalString(body, 'context', MAX_SHORT_FIELD_LEN),
37
28
  supersedesDecisionId: supersededId(body),
38
29
  };
39
30
  try {
40
- const decision = await saveFor(rr, DECISION, ctx.tenantId, ctx.actor.subject, write);
31
+ const decision = await saveFor(ctx, DECISION, write);
41
32
  sendJson(res, 201, { decision });
42
33
  }
43
34
  catch (e) {
@@ -53,11 +44,11 @@ export function handleListDecisions(rr) {
53
44
  // Not on supersedeRoute: this one answers 201 and leaves the missing-row 404 to the store, where the other five answer 200 after their own lookup.
54
45
  export async function handleSupersedeDecision(rr, match) {
55
46
  const oldId = parseInt(match[1], 10);
56
- const ctx = await buildContextWithAuth(rr.req, rr.opts);
47
+ const { ctx } = rr;
57
48
  const body = await parseJsonBody(rr.req, ctx);
58
- const decision = await saveFor(rr, DECISION, ctx.tenantId, ctx.actor.subject, {
49
+ const decision = await saveFor(ctx, DECISION, {
59
50
  decisionText: requiredString(body, 'text', TEXT),
60
- context: optionalString(body, 'context', 4096),
51
+ context: optionalString(body, 'context', MAX_SHORT_FIELD_LEN),
61
52
  supersedesDecisionId: oldId,
62
53
  });
63
54
  sendJson(rr.res, 201, { decision });
@@ -1,7 +1,7 @@
1
- import type { RouteRequest } from '../types.js';
2
- export declare function handleCreateIncident(rr: RouteRequest): Promise<void>;
3
- export declare function handleListIncidents(rr: RouteRequest): Promise<void>;
4
- export declare function handleResolveIncident(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
5
- export declare function handleCloseIncident(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
6
- export declare function handleGetIncident(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
1
+ import type { AuthedRouteRequest } from '../types.js';
2
+ export declare function handleCreateIncident(rr: AuthedRouteRequest): Promise<void>;
3
+ export declare function handleListIncidents(rr: AuthedRouteRequest): Promise<void>;
4
+ export declare function handleResolveIncident(rr: AuthedRouteRequest, match: RegExpMatchArray): Promise<void>;
5
+ export declare function handleCloseIncident(rr: AuthedRouteRequest, match: RegExpMatchArray): Promise<void>;
6
+ export declare function handleGetIncident(rr: AuthedRouteRequest, match: RegExpMatchArray): Promise<void>;
7
7
  //# sourceMappingURL=incidents.d.ts.map
@@ -2,10 +2,10 @@
2
2
  import { INCIDENT, openIncident, resolveOpenIncident } from '../../objects/incidents.js';
3
3
  import { HttpError, sendJson } from '../../util/http-util.js';
4
4
  import { NotFoundError } from '../../core/api-errors.js';
5
- import { buildContextWithAuth } from '../auth.js';
6
- import { parseJsonBody } from '../validation.js';
5
+ import { MAX_SHORT_FIELD_LEN, parseJsonBody } from '../validation.js';
7
6
  import { isJsonString } from '../../util/json.js';
8
- import { closeRoute, getRoute, listRoute, objectsOf, optionalString, requiredString } from './object-routes.js';
7
+ import { objectsOf } from '../../api/objects.js';
8
+ import { closeRoute, getRoute, listRoute, optionalString, requiredString } from './object-routes.js';
9
9
  const MAX_LINKED_MEMORY_IDS = 256;
10
10
  const incidentRoutes = { noun: 'incident', field: 'incident', listField: 'incidents', object: INCIDENT };
11
11
  function linkedMemoryIds(body) {
@@ -18,34 +18,24 @@ function linkedMemoryIds(body) {
18
18
  if (raw.length > MAX_LINKED_MEMORY_IDS) {
19
19
  throw new HttpError(400, `linkedMemoryIds exceeds ${MAX_LINKED_MEMORY_IDS}-item cap`);
20
20
  }
21
- const isValidMemoryId = (item) => isJsonString(item) && item.length > 0 && item.length <= 4096;
21
+ const isValidMemoryId = (item) => isJsonString(item) && item.length > 0 && item.length <= MAX_SHORT_FIELD_LEN;
22
22
  if (!raw.every(isValidMemoryId)) {
23
- throw new HttpError(400, 'each linkedMemoryIds entry must be a non-empty string <= 4096 chars');
23
+ throw new HttpError(400, `each linkedMemoryIds entry must be a non-empty string <= ${MAX_SHORT_FIELD_LEN} chars`);
24
24
  }
25
25
  return raw;
26
26
  }
27
- // ── incidents (first-class object) ──
28
- //
29
- // 5 routes: POST /v1/incidents (open; body text + context + linkedMemoryIds[]),
30
- // GET /v1/incidents (list, status filter), GET /v1/incidents/:id (show),
31
- // POST /v1/incidents/:id/resolve (open -> resolved; body resolutionText),
32
- // POST /v1/incidents/:id/close (open|resolved -> closed). Bearer-authed +
33
- // tenant-scoped via buildContextWithAuth. status validated against
34
- // VALID_INCIDENT_STATES. DoS caps: text 4096, context 4096, resolutionText
35
- // 4096. Mirrors /v1/decisions; lifecycle is
36
- // open->resolved->closed (no supersede), so linkedMemoryIds replaces
37
- // supersedesDecisionId on create.
27
+ // Routes: /v1/incidents (open, list, show, resolve, close), mirroring /v1/decisions; status is validated against VALID_INCIDENT_STATES.
28
+ // Lifecycle is open->resolved->closed (no supersede), so linkedMemoryIds replaces supersedesDecisionId on create.
38
29
  export async function handleCreateIncident(rr) {
39
- const { req, res, opts } = rr;
40
- const ctx = await buildContextWithAuth(req, opts);
30
+ const { req, res, opts, ctx } = rr;
41
31
  const body = await parseJsonBody(req, ctx);
42
32
  const write = {
43
- incidentText: requiredString(body, 'text', { max: 4096, untrimmed: true }),
44
- context: optionalString(body, 'context', 4096),
33
+ incidentText: requiredString(body, 'text', { max: MAX_SHORT_FIELD_LEN, untrimmed: true }),
34
+ context: optionalString(body, 'context', MAX_SHORT_FIELD_LEN),
45
35
  linkedMemoryIds: linkedMemoryIds(body),
46
36
  };
47
37
  try {
48
- const incident = await openIncident(objectsOf(rr), opts.hippoRoot, ctx.tenantId, write, ctx.actor.subject);
38
+ const incident = await openIncident(objectsOf(ctx), opts.hippoRoot, ctx.tenantId, write, ctx.actor.subject);
49
39
  sendJson(res, 201, { incident });
50
40
  }
51
41
  catch (e) {
@@ -59,11 +49,10 @@ export function handleListIncidents(rr) {
59
49
  return listRoute(incidentRoutes, rr);
60
50
  }
61
51
  export async function handleResolveIncident(rr, match) {
62
- const { req, res, opts } = rr;
52
+ const { req, res, ctx } = rr;
63
53
  const id = parseInt(match[1], 10);
64
- const ctx = await buildContextWithAuth(req, opts);
65
- const resolutionText = requiredString(await parseJsonBody(req, ctx), 'resolutionText', { max: 4096 });
66
- const incident = await resolveOpenIncident(objectsOf(rr), ctx.tenantId, id, resolutionText, ctx.actor.subject);
54
+ const resolutionText = requiredString(await parseJsonBody(req, ctx), 'resolutionText', { max: MAX_SHORT_FIELD_LEN });
55
+ const incident = await resolveOpenIncident(objectsOf(ctx), ctx.tenantId, id, resolutionText, ctx.actor.subject);
67
56
  sendJson(res, 200, { incident });
68
57
  }
69
58
  export function handleCloseIncident(rr, match) {
@@ -1,10 +1,10 @@
1
- import type { RouteRequest } from '../types.js';
2
- export declare function handleCreateMemory({ req, res, opts }: RouteRequest): Promise<void>;
3
- export declare function handleGetGraph({ req, res, opts, query }: RouteRequest): Promise<void>;
4
- export declare function handleArchiveMemory({ req, res, opts }: RouteRequest, archiveMatch: Record<string, string>): Promise<void>;
5
- export declare function handleSupersedeMemory({ req, res, opts }: RouteRequest, supersedeMatch: Record<string, string>): Promise<void>;
6
- export declare function handlePromoteMemory({ req, res, opts }: RouteRequest, promoteMatch: Record<string, string>): Promise<void>;
7
- export declare function handleForgetMemory({ req, res, opts }: RouteRequest, idMatch: Record<string, string>): Promise<void>;
8
- export declare function handleApplyOutcome({ req, res, opts }: RouteRequest): Promise<void>;
9
- export declare function handleSleep({ req, res, opts }: RouteRequest): Promise<void>;
1
+ import type { AuthedRouteRequest } from '../types.js';
2
+ export declare function handleCreateMemory({ req, res, ctx }: AuthedRouteRequest): Promise<void>;
3
+ export declare function handleGetGraph({ res, ctx, query }: AuthedRouteRequest): Promise<void>;
4
+ export declare function handleArchiveMemory({ req, res, ctx }: AuthedRouteRequest, archiveMatch: Record<string, string>): Promise<void>;
5
+ export declare function handleSupersedeMemory({ req, res, ctx }: AuthedRouteRequest, supersedeMatch: Record<string, string>): Promise<void>;
6
+ export declare function handlePromoteMemory({ res, ctx }: AuthedRouteRequest, promoteMatch: Record<string, string>): Promise<void>;
7
+ export declare function handleForgetMemory({ res, ctx }: AuthedRouteRequest, idMatch: Record<string, string>): Promise<void>;
8
+ export declare function handleApplyOutcome({ req, res, ctx }: AuthedRouteRequest): Promise<void>;
9
+ export declare function handleSleep({ req, res, ctx }: AuthedRouteRequest): Promise<void>;
10
10
  //# sourceMappingURL=memories.d.ts.map
@@ -1,22 +1,16 @@
1
1
  // Memory write routes: create, graph, archive, supersede, promote, forget, outcome, sleep.
2
+ import { graphRows } from '../../api/graph.js';
2
3
  import { archiveRaw, forget, outcome, outcomeForLastRecall, promote, remember, supersede } from '../../api/index.js';
4
+ import { MEMORY_KINDS } from '../../core/memory.js';
3
5
  import { graphModelOf } from '../../graph/view.js';
4
6
  import { MAX_ENTITY_NAME_LEN } from '../../store/graph-rows.js';
5
7
  import { HttpError, sendJson } from '../../util/http-util.js';
6
- import { requireGroup } from '../../store/port.js';
7
- import { assertCrossTenantAdmin, buildContextWithAuth, isLoopback } from '../auth.js';
8
8
  import { sleepInChild } from '../sleep-offload.js';
9
9
  import { getCallerProject, getString, getStringArray, isSetMember, parseJsonBody, parseListLimit, validateIdSegment } from '../validation.js';
10
10
  import { isJsonString, isJsonBoolean } from '../../util/json.js';
11
- const VALID_KINDS = new Set([
12
- 'raw',
13
- 'distilled',
14
- 'superseded',
15
- 'archived',
16
- ]);
11
+ const VALID_KINDS = new Set(MEMORY_KINDS);
17
12
  // POST /v1/memories
18
- export async function handleCreateMemory({ req, res, opts }) {
19
- const ctx = await buildContextWithAuth(req, opts);
13
+ export async function handleCreateMemory({ req, res, ctx }) {
20
14
  const body = await parseJsonBody(req, ctx);
21
15
  const content = getString(body, 'content');
22
16
  if (!content) {
@@ -44,7 +38,7 @@ export async function handleCreateMemory({ req, res, opts }) {
44
38
  return;
45
39
  }
46
40
  // GET /v1/graph?entity=NAME&limit=N — read-only entity/relation graph (tenant-scoped)
47
- export async function handleGetGraph({ req, res, opts, query }) {
41
+ export async function handleGetGraph({ res, ctx, query }) {
48
42
  const entityRaw = query.get('entity');
49
43
  // Cap at the graph entity-name cap (512), not the id-shaped 256, so a valid
50
44
  // long decision/policy name remains focusable over HTTP.
@@ -52,16 +46,13 @@ export async function handleGetGraph({ req, res, opts, query }) {
52
46
  throw new HttpError(400, `entity exceeds the ${MAX_ENTITY_NAME_LEN}-character cap`);
53
47
  }
54
48
  const limit = parseListLimit(query.get('limit'));
55
- const ctx = await buildContextWithAuth(req, opts);
56
- const { role, scopes, owner } = ctx.actor;
57
- const rows = await requireGroup(opts.store, 'graphReads').graphRows(ctx.tenantId, { entity: entityRaw ?? undefined, limit, reader: { role, scopes, owner } });
49
+ const rows = await graphRows(ctx, { entity: entityRaw ?? undefined, limit });
58
50
  sendJson(res, 200, graphModelOf(rows));
59
51
  return;
60
52
  }
61
53
  // /v1/memories/:id/* and DELETE /v1/memories/:id
62
- export async function handleArchiveMemory({ req, res, opts }, archiveMatch) {
54
+ export async function handleArchiveMemory({ req, res, ctx }, archiveMatch) {
63
55
  validateIdSegment(archiveMatch.id, 'memory id');
64
- const ctx = await buildContextWithAuth(req, opts);
65
56
  const body = await parseJsonBody(req, ctx);
66
57
  const reason = getString(body, 'reason');
67
58
  if (!reason) {
@@ -71,9 +62,8 @@ export async function handleArchiveMemory({ req, res, opts }, archiveMatch) {
71
62
  sendJson(res, 200, result);
72
63
  return;
73
64
  }
74
- export async function handleSupersedeMemory({ req, res, opts }, supersedeMatch) {
65
+ export async function handleSupersedeMemory({ req, res, ctx }, supersedeMatch) {
75
66
  validateIdSegment(supersedeMatch.id, 'memory id');
76
- const ctx = await buildContextWithAuth(req, opts);
77
67
  const body = await parseJsonBody(req, ctx);
78
68
  const content = getString(body, 'content');
79
69
  if (!content) {
@@ -83,28 +73,21 @@ export async function handleSupersedeMemory({ req, res, opts }, supersedeMatch)
83
73
  sendJson(res, 200, result);
84
74
  return;
85
75
  }
86
- export async function handlePromoteMemory({ req, res, opts }, promoteMatch) {
76
+ export async function handlePromoteMemory({ res, ctx }, promoteMatch) {
87
77
  validateIdSegment(promoteMatch.id, 'memory id');
88
- const ctx = await buildContextWithAuth(req, opts);
89
78
  const result = promote(ctx, promoteMatch.id);
90
79
  sendJson(res, 200, result);
91
80
  return;
92
81
  }
93
- export async function handleForgetMemory({ req, res, opts }, idMatch) {
82
+ export async function handleForgetMemory({ res, ctx }, idMatch) {
94
83
  validateIdSegment(idMatch.id, 'memory id');
95
- const ctx = await buildContextWithAuth(req, opts);
96
84
  const result = await forget(ctx, idMatch.id);
97
85
  sendJson(res, 200, result);
98
86
  return;
99
87
  }
100
- // POST /v1/outcome — apply a positive/negative outcome to memory ids.
101
- // Body: {ids?: string[], good: boolean}. If ids omitted, falls back to
102
- // the last-recall path (api.outcomeForLastRecall); returned shape is
103
- // {applied, ids} in that case so callers can disambiguate "no recent
104
- // recall" from "all ids skipped". Each applied id writes one audit_log
105
- // row (op='outcome', actor from Bearer).
106
- export async function handleApplyOutcome({ req, res, opts }) {
107
- const ctx = await buildContextWithAuth(req, opts);
88
+ // POST /v1/outcome: applies a positive/negative outcome to memory ids; without ids it falls back to the last-recall path (api.outcomeForLastRecall)
89
+ // and returns {applied, ids}, so callers can tell "no recent recall" from "all ids skipped". Each applied id writes one audit_log row (op='outcome').
90
+ export async function handleApplyOutcome({ req, res, ctx }) {
108
91
  const body = await parseJsonBody(req, ctx);
109
92
  const good = body['good'];
110
93
  if (!isJsonBoolean(good)) {
@@ -120,10 +103,8 @@ export async function handleApplyOutcome({ req, res, opts }) {
120
103
  if (!idsRaw.every(isNonEmptyId)) {
121
104
  throw new HttpError(400, 'ids must be an array of non-empty strings');
122
105
  }
123
- // DoS cap on ids.length. Each id triggers ~3 DB ops (readEntry +
124
- // writeEntry + appendAuditEvent). N=1000 keeps per-request work bounded
125
- // to sub-second wall time on SQLite hot path. Cap BEFORE buildContextWithAuth
126
- // so attack traffic doesn't pay the api-key lookup cost.
106
+ // DoS cap on ids.length (each id costs ~3 DB ops): N=1000 keeps per-request work sub-second on SQLite. Auth runs first, so only a caller with a key
107
+ // reaches it.
127
108
  if (idsRaw.length > 1000) {
128
109
  throw new HttpError(400, 'ids exceeds 1000-id cap');
129
110
  }
@@ -142,33 +123,10 @@ export async function handleApplyOutcome({ req, res, opts }) {
142
123
  }
143
124
  return;
144
125
  }
145
- // POST /v1/sleep — host-wide consolidation pipeline (consolidate + dedup +
146
- // audit + share + ambient). serve() refuses non-loopback hosts at boot, AND
147
- // this per-request loopback assertion makes the host-wide semantic fail-
148
- // closed regardless of any future serve() boot-config change. Body:
149
- // {dry_run?, no_share?}. Returns SleepResult JSON.
150
- //
151
- // Tenant scope (Episode A follow-up tracked in TODOS.md): api.sleep operates
152
- // on the WHOLE hippoRoot (cross-tenant by design, matching CLI cmdSleep).
153
- // The loopback-only guard is the trust boundary today. Future non-loopback
154
- // serving must also zero the cross-tenant counters for other tenants.
155
- export async function handleSleep({ req, res, opts }) {
156
- // Defensive per-request loopback guard. Uses the canonical isLoopback()
157
- // helper above so any future extension (additional mapped/IPv6 forms,
158
- // NAT64 prefixes) flows through without drift. serve()'s boot-time host
159
- // check is the primary trust boundary; this is belt-and-suspenders.
160
- if (!isLoopback(req.socket.remoteAddress)) {
161
- throw new HttpError(403, '/v1/sleep is loopback-only (host-wide consolidation; see CHANGELOG v1.11.4)');
162
- }
163
- // Admin-role gate. Forward-defensive: exists today
164
- // under loopback-only enforcement (loopback fallback is admin by default;
165
- // any Bearer-authed caller now carries an explicit role from the api_keys
166
- // row). When non-loopback serving lands, this gate is the actual auth
167
- // boundary on host-wide sleep.
168
- const sleepCtx = await buildContextWithAuth(req, opts);
169
- // Sleep consolidates every tenant under hippoRoot, so it is a cross-tenant action.
170
- assertCrossTenantAdmin(sleepCtx, '/v1/sleep');
171
- const body = await parseJsonBody(req, sleepCtx);
126
+ // POST /v1/sleep: host-wide consolidation (consolidate, dedup, audit, share, ambient); api.sleep spans the WHOLE hippoRoot, cross-tenant by design, so the
127
+ // row's host-admin-local gate is the trust boundary. Body {dry_run?, no_share?}; returns SleepResult JSON.
128
+ export async function handleSleep({ req, res, ctx }) {
129
+ const body = await parseJsonBody(req, ctx);
172
130
  const dryRunRaw = body['dry_run'];
173
131
  if (dryRunRaw !== undefined && !isJsonBoolean(dryRunRaw)) {
174
132
  throw new HttpError(400, 'dry_run must be a boolean');
@@ -177,8 +135,7 @@ export async function handleSleep({ req, res, opts }) {
177
135
  if (noShareRaw !== undefined && !isJsonBoolean(noShareRaw)) {
178
136
  throw new HttpError(400, 'no_share must be a boolean');
179
137
  }
180
- // sleepCtx already built above for the admin-role gate; reuse.
181
- const result = await sleepInChild(sleepCtx, {
138
+ const result = await sleepInChild(ctx, {
182
139
  dryRun: dryRunRaw === true,
183
140
  noShare: noShareRaw === true,
184
141
  });
@@ -1,8 +1,7 @@
1
1
  import { type JsonValue } from '../../util/json.js';
2
2
  import type { ObjectDescriptor, SavableDescriptor } from '../../objects/descriptor.js';
3
- import type { ObjectByKind, ObjectKind, SavableKind } from '../../store/object-types.js';
4
- import { type Objects } from '../../store/port.js';
5
- import type { RouteRequest } from '../types.js';
3
+ import type { ObjectByKind, ObjectKind, SavableKind } from '../../core/object-types.js';
4
+ import type { AuthedRouteRequest } from '../types.js';
6
5
  export interface ObjectRouteConfig<K extends ObjectKind> {
7
6
  /** Names the object in the 404 text, e.g. "customer note". */
8
7
  readonly noun: string;
@@ -29,12 +28,8 @@ export interface RequiredStringRule {
29
28
  }
30
29
  export declare function requiredString(body: Record<string, JsonValue>, key: string, rule: RequiredStringRule): string;
31
30
  export declare function optionalString(body: Record<string, JsonValue>, key: string, max: number): string | undefined;
32
- /** The request store's object group; the dispatcher has already answered 501 for a store without it. */
33
- export declare function objectsOf({ opts }: RouteRequest): Objects;
34
- /** Saves through the request's store as the authenticated caller. */
35
- export declare function saveFor<K extends SavableKind, W>(rr: RouteRequest, d: SavableDescriptor<K, W>, tenantId: string, actor: string, write: W): Promise<ObjectByKind[K]>;
36
- export declare function listRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: RouteRequest): Promise<void>;
37
- export declare function getRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
38
- export declare function closeRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
39
- export declare function supersedeRoute<K extends SavableKind, W>(cfg: VersionedRouteConfig<K, W>, rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
31
+ export declare function listRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: AuthedRouteRequest): Promise<void>;
32
+ export declare function getRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: AuthedRouteRequest, match: RegExpMatchArray): Promise<void>;
33
+ export declare function closeRoute<K extends ObjectKind>(cfg: ObjectRouteConfig<K>, rr: AuthedRouteRequest, match: RegExpMatchArray): Promise<void>;
34
+ export declare function supersedeRoute<K extends SavableKind, W>(cfg: VersionedRouteConfig<K, W>, rr: AuthedRouteRequest, match: RegExpMatchArray): Promise<void>;
40
35
  //# sourceMappingURL=object-routes.d.ts.map
@@ -1,9 +1,8 @@
1
1
  // List, get, close and supersede handlers shared by the typed-object routes; each route file passes one config.
2
2
  import { HttpError, sendJson } from '../../util/http-util.js';
3
3
  import { isJsonString } from '../../util/json.js';
4
- import { closeObject, listObjects, objectById, saveObject } from '../../objects/lifecycle.js';
5
- import { requireGroup } from '../../store/port.js';
6
- import { buildContextWithAuth } from '../auth.js';
4
+ import { objectsOf, saveFor } from '../../api/objects.js';
5
+ import { closeObject, listObjects, objectById } from '../../objects/lifecycle.js';
7
6
  import { byCreatedAt, pageOf, parseCursor } from '../cursor.js';
8
7
  import { isSetMember, parseJsonBody, parseListLimit } from '../validation.js';
9
8
  export function requiredString(body, key, rule) {
@@ -26,28 +25,18 @@ export function optionalString(body, key, max) {
26
25
  throw new HttpError(400, `${key} exceeds ${max}-character cap`);
27
26
  return value;
28
27
  }
29
- /** The request store's object group; the dispatcher has already answered 501 for a store without it. */
30
- export function objectsOf({ opts }) {
31
- return requireGroup(opts.store, 'objects');
32
- }
33
- /** Saves through the request's store as the authenticated caller. */
34
- export function saveFor(rr, d, tenantId, actor, write) {
35
- return saveObject(objectsOf(rr), d, { hippoRoot: rr.opts.hippoRoot, tenantId, actor }, write);
36
- }
37
28
  async function found(cfg, objects, tenantId, id) {
38
29
  const row = await objectById(objects, cfg.object, tenantId, id);
39
30
  if (!row)
40
31
  throw new HttpError(404, `${cfg.noun} ${id} not found`);
41
32
  return row;
42
33
  }
43
- // Limit and cursor are checked before auth and status after it, so a keyless caller gets 400 for the first two and 401 for a bad status.
44
34
  export async function listRoute(cfg, rr) {
45
- const { req, res, opts, query } = rr;
35
+ const { res, query, ctx } = rr;
46
36
  const status = query.get('status') ?? 'all';
47
37
  const filter = cfg.filterParam === undefined ? null : query.get(cfg.filterParam);
48
38
  const limit = parseListLimit(query.get('limit'));
49
39
  const after = parseCursor(query.get('cursor'), 'string', 'integer');
50
- const ctx = await buildContextWithAuth(req, opts);
51
40
  const listOpts = { limit: limit + 1, after, filter: filter?.trim() || undefined };
52
41
  if (status !== 'all') {
53
42
  const states = cfg.object.states;
@@ -56,25 +45,25 @@ export async function listRoute(cfg, rr) {
56
45
  }
57
46
  listOpts.status = status;
58
47
  }
59
- const page = pageOf(await listObjects(objectsOf(rr), cfg.object, ctx.tenantId, listOpts), limit, byCreatedAt);
48
+ const page = pageOf(await listObjects(objectsOf(ctx), cfg.object, ctx.tenantId, listOpts), limit, byCreatedAt);
60
49
  sendJson(res, 200, { [cfg.listField]: page.items, next_cursor: page.nextCursor });
61
50
  }
62
51
  export async function getRoute(cfg, rr, match) {
63
52
  const id = parseInt(match[1], 10);
64
- const ctx = await buildContextWithAuth(rr.req, rr.opts);
65
- sendJson(rr.res, 200, { [cfg.field]: await found(cfg, objectsOf(rr), ctx.tenantId, id) });
53
+ const { ctx } = rr;
54
+ sendJson(rr.res, 200, { [cfg.field]: await found(cfg, objectsOf(ctx), ctx.tenantId, id) });
66
55
  }
67
56
  export async function closeRoute(cfg, rr, match) {
68
57
  const id = parseInt(match[1], 10);
69
- const ctx = await buildContextWithAuth(rr.req, rr.opts);
70
- sendJson(rr.res, 200, { [cfg.field]: await closeObject(objectsOf(rr), cfg.object, ctx.tenantId, id, ctx.actor.subject) });
58
+ const { ctx } = rr;
59
+ sendJson(rr.res, 200, { [cfg.field]: await closeObject(objectsOf(ctx), cfg.object, ctx.tenantId, id, ctx.actor.subject) });
71
60
  }
72
61
  export async function supersedeRoute(cfg, rr, match) {
73
62
  const id = parseInt(match[1], 10);
74
- const ctx = await buildContextWithAuth(rr.req, rr.opts);
63
+ const { ctx } = rr;
75
64
  const successor = cfg.revise(await parseJsonBody(rr.req, ctx));
76
- const existing = await found(cfg, objectsOf(rr), ctx.tenantId, id);
77
- const saved = await saveFor(rr, cfg.object, ctx.tenantId, ctx.actor.subject, successor(existing, id));
65
+ const existing = await found(cfg, objectsOf(ctx), ctx.tenantId, id);
66
+ const saved = await saveFor(ctx, cfg.object, successor(existing, id));
78
67
  sendJson(rr.res, 200, { [cfg.field]: saved });
79
68
  }
80
69
  //# sourceMappingURL=object-routes.js.map
@@ -1,8 +1,8 @@
1
- import type { RouteRequest } from '../types.js';
2
- export declare function handleCreatePolicy(rr: RouteRequest): Promise<void>;
3
- export declare function handleListPolicies(rr: RouteRequest): Promise<void>;
4
- export declare function handlePoliciesAsOf(rr: RouteRequest): Promise<void>;
5
- export declare function handleSupersedePolicy(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
6
- export declare function handleClosePolicy(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
7
- export declare function handleGetPolicy(rr: RouteRequest, match: RegExpMatchArray): Promise<void>;
1
+ import type { AuthedRouteRequest } from '../types.js';
2
+ export declare function handleCreatePolicy(rr: AuthedRouteRequest): Promise<void>;
3
+ export declare function handleListPolicies(rr: AuthedRouteRequest): Promise<void>;
4
+ export declare function handlePoliciesAsOf(rr: AuthedRouteRequest): Promise<void>;
5
+ export declare function handleSupersedePolicy(rr: AuthedRouteRequest, match: RegExpMatchArray): Promise<void>;
6
+ export declare function handleClosePolicy(rr: AuthedRouteRequest, match: RegExpMatchArray): Promise<void>;
7
+ export declare function handleGetPolicy(rr: AuthedRouteRequest, match: RegExpMatchArray): Promise<void>;
8
8
  //# sourceMappingURL=policies.d.ts.map
@@ -1,9 +1,9 @@
1
1
  // /v1/policies routes.
2
2
  import { policiesAsOf, POLICY } from '../../objects/policies.js';
3
3
  import { HttpError, sendJson } from '../../util/http-util.js';
4
- import { buildContextWithAuth } from '../auth.js';
5
- import { parseJsonBody } from '../validation.js';
6
- import { closeRoute, getRoute, listRoute, objectsOf, optionalString, requiredString, saveFor, supersedeRoute } from './object-routes.js';
4
+ import { MAX_SHORT_FIELD_LEN, parseJsonBody } from '../validation.js';
5
+ import { objectsOf, saveFor } from '../../api/objects.js';
6
+ import { closeRoute, getRoute, listRoute, optionalString, requiredString, supersedeRoute, } from './object-routes.js';
7
7
  // The date fields get a type and length check only: the store parses the date, and the cap bounds a junk string before it reaches the Date parser.
8
8
  const MAX_DATE_LEN = 64;
9
9
  const policyRoutes = {
@@ -12,28 +12,20 @@ const policyRoutes = {
12
12
  listField: 'policies',
13
13
  object: POLICY,
14
14
  revise: (body) => {
15
- const policyText = requiredString(body, 'policyText', { max: 4096 });
15
+ const policyText = requiredString(body, 'policyText', { max: MAX_SHORT_FIELD_LEN });
16
16
  const validFrom = optionalString(body, 'validFrom', MAX_DATE_LEN);
17
17
  const validTo = optionalString(body, 'validTo', MAX_DATE_LEN);
18
- const changeSummary = optionalString(body, 'changeSummary', 4096);
18
+ const changeSummary = optionalString(body, 'changeSummary', MAX_SHORT_FIELD_LEN);
19
19
  return (existing, id) => ({ policyName: existing.policyName, policyText, validFrom, validTo, changeSummary, supersedesPolicyId: id });
20
20
  },
21
21
  };
22
- // ── policies (first-class object, bi-temporal-first) ──
23
- //
24
- // 6 routes: POST /v1/policies (new; processName-style body policyName +
25
- // policyText + validFrom? + validTo?), GET /v1/policies (list, status filter),
26
- // GET /v1/policies/asof (date + optional name; the bi-temporal as-of query;
27
- // placed BEFORE the /:id GET so the literal 'asof' is matched first), GET
28
- // /v1/policies/:id, POST /v1/policies/:id/supersede, POST /v1/policies/:id/close.
29
- // Date inputs are normalized + range-validated in the store; an invalid/inverted
30
- // date throws -> 400. DoS caps: policyName/policyText/changeSummary 4096.
22
+ // The as-of route is registered BEFORE /:id so the literal 'asof' is matched first; date errors surface as 400.
31
23
  export async function handleCreatePolicy(rr) {
32
- const ctx = await buildContextWithAuth(rr.req, rr.opts);
24
+ const { ctx } = rr;
33
25
  const body = await parseJsonBody(rr.req, ctx);
34
- const policy = await saveFor(rr, POLICY, ctx.tenantId, ctx.actor.subject, {
35
- policyName: requiredString(body, 'policyName', { max: 4096 }),
36
- policyText: requiredString(body, 'policyText', { max: 4096 }),
26
+ const policy = await saveFor(ctx, POLICY, {
27
+ policyName: requiredString(body, 'policyName', { max: MAX_SHORT_FIELD_LEN }),
28
+ policyText: requiredString(body, 'policyText', { max: MAX_SHORT_FIELD_LEN }),
37
29
  validFrom: optionalString(body, 'validFrom', MAX_DATE_LEN),
38
30
  validTo: optionalString(body, 'validTo', MAX_DATE_LEN),
39
31
  });
@@ -45,16 +37,14 @@ export function handleListPolicies(rr) {
45
37
  // The as-of query: must precede the /:id GET (literal 'asof' is non-numeric so
46
38
  // the /(\d+)/ route would not match it, but order it first for clarity).
47
39
  export async function handlePoliciesAsOf(rr) {
48
- const { req, res, opts, query } = rr;
40
+ const { res, query, ctx } = rr;
49
41
  const date = query.get('date');
50
42
  if (date === null || date.length === 0) {
51
43
  throw new HttpError(400, 'date is required (ISO-8601 valid-time)');
52
44
  }
53
45
  const name = query.get('name') ?? undefined;
54
- const ctx = await buildContextWithAuth(req, opts);
55
- const policies = await policiesAsOf(objectsOf(rr), ctx.tenantId, date, { name });
46
+ const policies = await policiesAsOf(objectsOf(ctx), ctx.tenantId, date, { name });
56
47
  sendJson(res, 200, { policies });
57
- return;
58
48
  }
59
49
  export function handleSupersedePolicy(rr, match) {
60
50
  return supersedeRoute(policyRoutes, rr, match);
@@ -1,7 +1,7 @@
1
- import type { RouteRequest } from '../types.js';
2
- export declare function handleCreatePrediction({ req, res, opts }: RouteRequest): Promise<void>;
3
- export declare function handleListPredictions({ req, res, opts, query }: RouteRequest): Promise<void>;
4
- export declare function handlePredictionStats({ req, res, opts, query }: RouteRequest): Promise<void>;
5
- export declare function handleGetPrediction({ req, res, opts }: RouteRequest, predictionByIdMatch: RegExpMatchArray): Promise<void>;
6
- export declare function handleClosePrediction({ req, res, opts }: RouteRequest, predictionCloseMatch: RegExpMatchArray): Promise<void>;
1
+ import type { AuthedRouteRequest } from '../types.js';
2
+ export declare function handleCreatePrediction({ req, res, ctx, opts }: AuthedRouteRequest): Promise<void>;
3
+ export declare function handleListPredictions({ res, ctx, query }: AuthedRouteRequest): Promise<void>;
4
+ export declare function handlePredictionStats({ res, ctx, query }: AuthedRouteRequest): Promise<void>;
5
+ export declare function handleGetPrediction({ res, ctx }: AuthedRouteRequest, predictionByIdMatch: RegExpMatchArray): Promise<void>;
6
+ export declare function handleClosePrediction({ req, res, ctx }: AuthedRouteRequest, predictionCloseMatch: RegExpMatchArray): Promise<void>;
7
7
  //# sourceMappingURL=predictions.d.ts.map