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
@@ -1,5 +1,5 @@
1
1
  import type { IncomingMessage, ServerResponse } from 'node:http';
2
- import type { Context } from '../api/index.js';
2
+ import type { ContextWith, StoreContext } from '../api/index.js';
3
3
  import type { JsonValue } from '../util/json.js';
4
4
  import type { RateLimiter } from './rate-limit.js';
5
5
  import type { HippoStore, StoreGroup } from '../store/index.js';
@@ -7,8 +7,8 @@ export interface ServerHandle {
7
7
  port: number;
8
8
  url: string;
9
9
  stop: () => Promise<void>;
10
- /** Introspection-only: the underlying node:http Server, so tests can assert keep-alive/headers timeout hardening without reaching into serve()'s closure.
11
- * Do not use for control flow. */
10
+ /** Introspection-only: the underlying node:http Server, so tests can assert keep-alive/headers timeout hardening
11
+ * without reaching into serve()'s closure. Do not use for control flow. */
12
12
  server?: import('node:http').Server;
13
13
  }
14
14
  /** Identity an {@link AuthResolver} vouches for. The core sanitises it before use. */
@@ -20,11 +20,12 @@ export interface ResolvedBearer {
20
20
  role: 'admin' | 'member';
21
21
  scopes?: readonly string[];
22
22
  }
23
- /** Sole judge of non-`hk_` bearer tokens: null is a 401; a throw or missed deadline is a 503, so throw only when upstream is down. */
23
+ /** Sole judge of non-`hk_` bearer tokens: null is a 401; a throw or missed deadline is a 503, so throw only when
24
+ * upstream is down. */
24
25
  export type AuthResolver = (token: string) => ResolvedBearer | null | Promise<ResolvedBearer | null>;
25
26
  /** What an add-on route's handler gets: the caller core authenticated and the parsed JSON body. */
26
27
  export interface AddonCall {
27
- readonly ctx: Context;
28
+ readonly ctx: StoreContext;
28
29
  readonly body: Readonly<Record<string, JsonValue>>;
29
30
  }
30
31
  /** A POST /v1 route an add-on mounts through serve(): core authenticates and parses first, then sends the
@@ -46,14 +47,16 @@ export interface ServeOpts {
46
47
  authResolverTimeoutMs?: number;
47
48
  port?: number;
48
49
  host?: string;
49
- /** Stop and exit on SIGINT/SIGTERM, and drain then exit 1 on an uncaught exception or unhandled rejection. A stop still running
50
- * 10 s past `shutdownDrainMs` ends the process with a failure exit. Only `hippo serve` owns the process, so only it sets this. */
50
+ /** Stop and exit on SIGINT/SIGTERM, and drain then exit 1 on an uncaught exception or unhandled rejection. A stop
51
+ * still running 10 s past `shutdownDrainMs` ends the process with a failure exit. Only `hippo serve` sets this. */
51
52
  handleSignals?: boolean;
52
53
  /** How long stop() lets in-flight requests finish before closing their sockets; defaults to 5000 ms. */
53
54
  shutdownDrainMs?: number;
54
- /** How long a request may stay unanswered before one warn names it; the request itself is left alone. Defaults to 60000 ms. */
55
+ /** How long a request may stay unanswered before one warn names it; the request itself is left alone. Defaults to
56
+ * 60000 ms. */
55
57
  slowRequestWarnMs?: number;
56
- /** Defaults to hippo.db under `hippoRoot`. A store of another kind runs only the routes ported to it; its caller closes it. */
58
+ /** Defaults to hippo.db under `hippoRoot`. A store of another
59
+ * kind runs only the routes ported to it; its caller closes it. */
57
60
  store?: HippoStore;
58
61
  autoSleep?: false;
59
62
  routes?: readonly AddonRoute[];
@@ -66,17 +69,27 @@ export interface ServeOpts {
66
69
  cert: string | Buffer;
67
70
  key: string | Buffer;
68
71
  };
69
- /** Static JSON served to anyone at GET <path>; built once at boot and never authenticated, so it must hold nothing secret. */
72
+ /** Lets a non-loopback bind start without `tls`, for TLS that ends at a
73
+ * proxy in front; else serve() refuses it. Also HIPPO_ALLOW_CLEARTEXT=1. */
74
+ allowCleartext?: boolean;
75
+ /** The role a keyless local request (HIPPO_ALLOW_KEYLESS_LOCAL=1) gets; defaults to HIPPO_KEYLESS_LOCAL_ROLE, else
76
+ * 'member'. Only 'admin' is host admin. */
77
+ keylessLocalRole?: 'member' | 'admin';
78
+ /** Static JSON served to anyone at GET <path>; built once at
79
+ * boot and never authenticated, so it must hold nothing secret. */
70
80
  publicJson?: Readonly<Record<string, JsonValue>>;
71
- /** Request limits: perCaller after auth; perAddress replaces HIPPO_V1_RPS when set, 'off' disables it; failedAuthPerAddress guards scrypt. */
81
+ /** Request limits: perCaller after auth, on by default (HIPPO_CALLER_RPS, else 20 per second, burst 40); perAddress
82
+ * replaces HIPPO_V1_RPS when set; 'off' disables either; failedAuthPerAddress guards scrypt. */
72
83
  rateLimits?: {
73
- perCaller?: RateLimitSpec;
84
+ perCaller?: RateLimitSpec | 'off';
74
85
  perAddress?: RateLimitSpec | 'off';
75
86
  failedAuthPerAddress?: RateLimitSpec;
76
87
  };
77
88
  }
78
89
  export type ResolvedServeOpts = ServeOpts & {
79
90
  store: HippoStore;
91
+ /** Fences a loop-off route's work from hippo.db on the server thread when the store has workers. */
92
+ offLoop: <T>(run: () => T) => T;
80
93
  publicJsonBodies: ReadonlyMap<string, string>;
81
94
  callerLimiter?: RateLimiter;
82
95
  failedAuthLimiter: RateLimiter;
@@ -89,19 +102,20 @@ export interface RouteRequest {
89
102
  query: URLSearchParams;
90
103
  }
91
104
  /** A request past the dispatch gate, carrying the caller the gate authenticated. */
92
- export interface AuthedRouteRequest extends RouteRequest {
93
- ctx: Context;
105
+ export interface AuthedRouteRequest<G extends StoreGroup = 'base'> extends RouteRequest {
106
+ ctx: ContextWith<G>;
94
107
  }
95
- /** A route's store status: a `storeReady` group, a `sqliteOnly` reason, or neither while it waits for a group; never both. */
96
- type StoreStatus = {
97
- storeReady?: StoreGroup;
108
+ /** A route's store status: a `storeReady` group, a `sqliteOnly`
109
+ * reason, or neither while it waits for a group; never both. */
110
+ type StoreStatus<S extends StoreGroup> = {
111
+ storeReady?: S;
98
112
  sqliteOnly?: never;
99
113
  } | {
100
114
  sqliteOnly: string;
101
115
  storeReady?: never;
102
116
  };
103
- /** What the dispatch gate proves before a handler runs: any caller, an admin, a host admin on loopback, or nothing, for a route
104
- * whose handler checks the sender's signature itself. */
117
+ /** What the dispatch gate proves before a handler runs: any caller, an admin, a host admin on loopback, or nothing, for
118
+ * a route whose handler checks the sender's signature itself. */
105
119
  export type RouteAuth = 'caller' | 'admin' | 'host-admin-local' | 'webhook-signature';
106
120
  export type RouteEndpoint<R> = {
107
121
  path: string;
@@ -113,15 +127,18 @@ export type RouteEndpoint<R> = {
113
127
  regex: RegExp;
114
128
  handler: (r: R, match: RegExpMatchArray) => Promise<void>;
115
129
  };
116
- /** One /v1 route: an exact path, a matchPath pattern, or a regex, each paired with one method's handler. Under another store it runs only with its
117
- * store's `storeReady` group; `loop: 'off'` runs its SQLite work on a worker thread, so the handler opens no hippo.db on the server thread. */
118
- export type Route = {
130
+ /** One /v1 route: an exact path, a matchPath pattern, or a regex, each paired with one method's handler. Under another
131
+ * store it runs only with its store's `storeReady` group; `loop: 'off'` runs its SQLite work on a worker thread. */
132
+ export type RouteOf<G extends StoreGroup, S extends StoreGroup = G> = {
119
133
  method: string;
120
134
  loop?: 'off';
121
- } & StoreStatus & (({
135
+ } & StoreStatus<S> & (({
122
136
  auth: Exclude<RouteAuth, 'webhook-signature'>;
123
- } & RouteEndpoint<AuthedRouteRequest>) | ({
137
+ } & RouteEndpoint<AuthedRouteRequest<G>>) | ({
124
138
  auth: 'webhook-signature';
125
139
  } & RouteEndpoint<RouteRequest>));
140
+ /** A route as the table holds it, its handler's group erased: `defineRoute` is where a handler's group meets the
141
+ * row's `storeReady`. */
142
+ export type Route = RouteOf<'base', StoreGroup>;
126
143
  export {};
127
144
  //# sourceMappingURL=types.d.ts.map
@@ -8,9 +8,12 @@ export declare function parseListLimit(limitRaw: string | null, defaultLimit?: n
8
8
  * an authenticated caller; the key mint reads under its own small cap. */
9
9
  export declare function parseJsonBody(req: IncomingMessage, _authed: Context): Promise<Record<string, JsonValue>>;
10
10
  export declare function parseJsonObjectText(raw: string): Record<string, JsonValue>;
11
+ /** Absent (undefined or null) is undefined; a present value of the wrong type is a 400, never a silent default. */
11
12
  export declare function getString(obj: Record<string, JsonValue>, key: string): string | undefined;
12
13
  export declare function getStringArray(obj: Record<string, JsonValue>, key: string): string[] | undefined;
13
- /** Keeps only `name` and `aliases`: a client's `legacy_name` is a folder name, which must never become a row's origin. */
14
+ /**
15
+ * Keeps only `name` and `aliases`: a client's `legacy_name` is a folder name, which must never become a row's origin.
16
+ */
14
17
  export declare function getCallerProject(body: Record<string, JsonValue>): RememberOpts['project'];
15
18
  export declare function validateIdSegment(id: string, fieldName: string): void;
16
19
  //# sourceMappingURL=validation.d.ts.map
@@ -1,10 +1,12 @@
1
1
  import { HttpError, readBody } from '../util/http-util.js';
2
2
  import { DEFAULT_LIST_LIMIT, MAX_ID_LEN, MAX_LIST_LIMIT, resolveListLimit } from '../util/limits.js';
3
3
  import { isJsonString, isJsonObject } from '../util/json.js';
4
- // Runtime membership check for a `ReadonlySet<T>` of string-literal members: Set<T>.has gives no narrowing, so this is the one place the `as T` assertion lives
4
+ // Runtime membership check for a `ReadonlySet<T>` of string-literal members: Set<T>.has gives no narrowing, so this is
5
+ // the one place the `as T` assertion lives
5
6
  // and callers narrow via the `value is T` return.
6
7
  export function isSetMember(set, value) {
7
- // SAFETY: `value as T` is discarded unless `set.has` (the real runtime check) confirms membership; the `value is T` return type does the narrowing.
8
+ // SAFETY: `value as T` is discarded unless `set.has` (the real runtime check) confirms membership; the `value is T`
9
+ // return type does the narrowing.
8
10
  return set.has(value);
9
11
  }
10
12
  // Cap for short free-text HTTP fields (names, text, context, change summaries) on the object routes.
@@ -36,19 +38,26 @@ export function parseJsonObjectText(raw) {
36
38
  throw new HttpError(400, 'invalid JSON body');
37
39
  }
38
40
  }
41
+ /** Absent (undefined or null) is undefined; a present value of the wrong type is a 400, never a silent default. */
39
42
  export function getString(obj, key) {
40
43
  const v = obj[key];
41
- return isJsonString(v) ? v : undefined;
44
+ if (v === undefined || v === null)
45
+ return undefined;
46
+ if (!isJsonString(v))
47
+ throw new HttpError(400, `${key} must be a string`);
48
+ return v;
42
49
  }
43
50
  export function getStringArray(obj, key) {
44
51
  const v = obj[key];
45
- if (!Array.isArray(v))
46
- return undefined;
47
- if (!v.every(isJsonString))
52
+ if (v === undefined || v === null)
48
53
  return undefined;
54
+ if (!Array.isArray(v) || !v.every(isJsonString))
55
+ throw new HttpError(400, `${key} must be an array of strings`);
49
56
  return v;
50
57
  }
51
- /** Keeps only `name` and `aliases`: a client's `legacy_name` is a folder name, which must never become a row's origin. */
58
+ /**
59
+ * Keeps only `name` and `aliases`: a client's `legacy_name` is a folder name, which must never become a row's origin.
60
+ */
52
61
  export function getCallerProject(body) {
53
62
  const v = body.project;
54
63
  if (v === undefined || v === null)
@@ -63,8 +72,12 @@ export function getCallerProject(body) {
63
72
  }
64
73
  return { name: v.name, aliases: v.aliases };
65
74
  }
66
- /** Charset + length validation for `:id` captures, called right after `matchPath` so empty/overlong/illegal ids get a 400, not "not found".
67
- * Allows every production id shape (`mem_<hex>`, `sess-<id>`, Slack ids) plus `:` and `.`; no `/`, since `rejectEncodedSlash` stops `%2F` smuggling. */
75
+ /**
76
+ * Charset + length validation for `:id` captures, called right after `matchPath` so empty/overlong/illegal ids get a
77
+ * 400, not "not found".
78
+ * Allows every production id shape (`mem_<hex>`, `sess-<id>`, Slack ids) plus `:` and `.`; no `/`, since
79
+ * `rejectEncodedSlash` stops `%2F` smuggling.
80
+ */
68
81
  const ID_SEGMENT_RE = /^[A-Za-z0-9_:.-]+$/;
69
82
  export function validateIdSegment(id, fieldName) {
70
83
  if (id.length === 0)
package/dist/server.d.ts CHANGED
@@ -1,60 +1,28 @@
1
- import { type Actor, authCreateSelf, type AuthCreateSelfOpts, type AuthCreateSelfResult, authRevoke, type AuthRevokeReply, type AuthRevokeResult, type Context } from './api/index.js';
2
- import { ForbiddenError, NotFoundError } from './core/api-errors.js';
1
+ import { type Actor, type AuthCreateOpts, type AuthCreateResult, type AuthCreateSelfOpts, type AuthCreateSelfResult, type AuthRevokeResult, type Context } from './api/index.js';
2
+ import { promptHookContext as renderPromptHook, type PromptHookOpts, type PromptHookRequest } from './api/prompt-hook.js';
3
+ import { BadRequestError, ConflictError, ForbiddenError, NotFoundError } from './core/api-errors.js';
3
4
  export { serve } from './server/boot.js';
4
- export { authCreateSelf, authRevoke, ForbiddenError, NotFoundError, type AuthCreateSelfOpts, type AuthCreateSelfResult, type AuthRevokeReply, type AuthRevokeResult, type Context, type Actor, };
5
+ declare function authCreate(ctx: Context, opts: AuthCreateOpts): Promise<AuthCreateResult>;
6
+ declare function authCreateSelf(ctx: Context, opts: AuthCreateSelfOpts): Promise<AuthCreateSelfResult>;
7
+ declare function authRevoke(ctx: Context, keyId: string): Promise<AuthRevokeResult>;
8
+ declare function promptHookContext(ctx: Context, req: PromptHookRequest, opts?: PromptHookOpts): ReturnType<typeof renderPromptHook>;
9
+ export { authCreate, authCreateSelf, authRevoke, BadRequestError, ConflictError, ForbiddenError, NotFoundError, promptHookContext, type AuthCreateSelfOpts, type AuthCreateSelfResult, type AuthRevokeResult, type Context, type Actor, };
5
10
  export { isCrossSite, LOOPBACK_HOST_HEADER } from './util/http-util.js';
6
- export { __resetSessionRecallHistoryHttp } from './server/routes/recall.js';
7
11
  export { clientIpForRateLimit } from './server/client-ip.js';
8
12
  export { isLoopback, isReservedActor } from './server/auth.js';
9
- export type { AddonCall, AddonRoute, AuthResolver, RateLimitSpec, ResolvedBearer, ServeOpts, ServerHandle } from './server/types.js';
13
+ export type { AddonCall, AddonRoute, AuthResolver, RateLimitSpec, ResolvedBearer, ServeOpts, ServerHandle, } from './server/types.js';
14
+ export type { HippoStore } from './store/index.js';
10
15
  export { HttpError } from './util/http-util.js';
11
- export { promptHookContext, type CallerProject } from './api/prompt-hook.js';
16
+ export type { CallerProject } from './api/prompt-hook.js';
12
17
  export type { JsonValue } from './util/json.js';
13
18
  export { captureSessionTexts, type SessionCaptureRequest, type SessionCaptureResult } from './capture/session-texts.js';
14
- export { hasGroup, sqliteStore, type AmbientCandidateRequest, type ContextReads, type EntryRemoval, type EntryTarget, type EntryWrite, type EntryWrites, type HippoStore, type KeyAudit, type KeyListQuery, type KeyMint, type KeyRevoke, type KeyWrites, type OutcomeWrite, type RawArchive, type RecallSearchArgs, type RecallWrites, type SelfKeyMint, type StoreGroup, type StoreGroups, type SupersedeWrite, type VectorReads, type VectorBackfillQuery, type VectorRowWrite, type VectorWrite, type VectorWriteResult, type VectorWrites, } from './store/index.js';
15
- export { entryAfterOutcome } from './core/memory.js';
16
- export { rejectionDigest } from './store/rejection.js';
17
- export { RejectedValueError } from './core/api-errors.js';
18
- export { ownScopeTouches } from './core/recall-scope.js';
19
- export { BadRequestError, ConflictError } from './core/api-errors.js';
20
- export type { HippoDbContext, StoreReply } from './api/types.js';
21
- export type { ApiKeyListItem, ApiKeyListRow, ApiKeyRecord, ListApiKeysOpts, NewApiKey } from './store/auth.js';
22
- export type { KeysetPosition } from './util/keyset.js';
23
- export type { AppendAuditOpts, AuditEvent, ListAuditAfterOpts } from './store/audit.js';
24
- export type { ContinuityBlock } from './api/recall-types.js';
25
- export type { ActiveGoals, GetActiveGoalsOpts, Goal, GoalRecallLogRow, RetrievalPolicy } from './store/goals.js';
26
- export type { MemoryEntry } from './core/memory.js';
27
- export type { ClassResolution, PlanningFallacyEvidence } from './store/planning-fallacy-evidence.js';
28
- export type { PredictionBaserate } from './store/predictions.js';
29
- export type { RecallTraceInput } from './store/recall-trace.js';
30
- export type { StrengthenOptions } from './store/entry-writes.js';
31
- export type { OriginFilter, RecallScopeFilter, VectorCandidateSpec } from './store/search-rows.js';
32
- export type { ContinuityKey } from './store/sessions.js';
33
- export type { SessionEvent, TaskSnapshot } from './store/rows.js';
34
- export type { SessionHandoff } from './core/handoff.js';
35
- export type { AmbientLoadResult, AmbientRecallRequest, ContextCandidateFilter, RecentOrigins } from './store/candidates.js';
36
- export type { AmbientStoreFilter } from './store/ambient.js';
37
- export type { AmbientTallies } from './core/ambient.js';
38
- export type { TokenUse } from './store/token-ledger.js';
39
- export type { EmbeddingIndexState } from './store/vector-index.js';
40
- export type { PhysicsParticle } from './core/physics.js';
41
- export { StoreBusyError } from './store/port.js';
42
- export { decodeVector, EMBEDDING_MODEL_META_KEY, encodeVector, rankVectorRows, type VectorMatch, type VectorRow } from './db/vector-store.js';
43
- export { bufferToFloat32, float32ToBuffer } from './db/physics-state.js';
44
- export { replacesIndex } from './store/vector-index.js';
45
- export { passesScopeFilterForRecall, RECALL_DEFAULT_DENY_SCOPES } from './core/recall-scope.js';
46
- export { SECRET_TAGS } from './util/secret-detect.js';
47
- export { tallyAmbientEntries } from './core/ambient.js';
48
- export { ftsTermParts, rarestFtsQuery } from './core/prompt-recall.js';
49
- export { OTHER_STORE_MARKER, OtherStoreFolderError, withSqliteAllowed } from './db/index.js';
50
- export { authCreate, type AuthCreateOpts, type AuthCreateResult } from './api/index.js';
51
- export { isSharedStore } from './core/config.js';
19
+ export type { AuthCreateOpts, AuthCreateResult };
52
20
  export { ownerOrSubject } from './api/index.js';
53
- export { bindSessionOwner } from './api/session-owners.js';
54
- export { preCompactForCaller, type CallerHookOutput, type CallerPreCompactRequest } from './capture/pre-compact-caller.js';
21
+ export { bindSessionOwner, bindSessionOwnerOn } from './api/auth/session-owners.js';
22
+ export { preCompactForCaller, type CallerHookOutput, type CallerPreCompactRequest, } from './capture/pre-compact-caller.js';
55
23
  export { compactResumeForCaller, type CallerCompactResumeRequest } from './capture/compact-resume-caller.js';
56
- export { saveCompactionItemsForCaller, type CallerItemsRequest, type CallerItemsResult } from './capture/compaction-items-caller.js';
57
- export { captureFailureForCaller, type CallerFailureRequest, type CallerFailureResult } from './capture/failure-caller.js';
58
- export { sessionEndHandoffForCaller, type CallerEvidence, type CallerSessionEndRequest, type CallerSessionEndResult } from './capture/session-end-caller.js';
24
+ export { saveCompactionItemsForCaller, type CallerItemsRequest, type CallerItemsResult, } from './capture/compaction-items-caller.js';
25
+ export { captureFailureForCaller, type CallerFailureRequest, type CallerFailureResult, } from './capture/failure-caller.js';
26
+ export { sessionEndHandoffForCaller, type CallerEvidence, type CallerSessionEndRequest, type CallerSessionEndResult, } from './capture/session-end-caller.js';
59
27
  export type { WorkingState } from './capture/working-state.js';
60
28
  //# sourceMappingURL=server.d.ts.map
package/dist/server.js CHANGED
@@ -1,52 +1,45 @@
1
- import { authCreateSelf, authRevoke, } from './api/index.js';
2
- import { ForbiddenError, NotFoundError } from './core/api-errors.js';
1
+ import { authCreate as createKey, authCreateSelf as createSelfKey, authRevoke as revokeKey, } from './api/index.js';
2
+ import { promptHookContext as renderPromptHook, } from './api/prompt-hook.js';
3
+ import { BadRequestError, ConflictError, ForbiddenError, NotFoundError } from './core/api-errors.js';
4
+ import { hasGroup } from './store/port.js';
5
+ import { sqliteReach, withStoreGroups } from './store/sqlite/store.js';
3
6
  export { serve } from './server/boot.js';
7
+ // An add-on hands in a Context with no store, so each entry that
8
+ // needs one fills it with hippo.db under the Context's root.
9
+ async function authCreate(ctx, opts) {
10
+ return createKey(withStoreGroups(ctx, 'keyWrites'), opts);
11
+ }
12
+ async function authCreateSelf(ctx, opts) {
13
+ return createSelfKey(withStoreGroups(ctx, 'keyWrites'), opts);
14
+ }
15
+ async function authRevoke(ctx, keyId) {
16
+ return revokeKey(withStoreGroups(ctx, 'keyAudit'), keyId);
17
+ }
18
+ async function promptHookContext(ctx, req, opts) {
19
+ const filled = withStoreGroups(ctx, 'contextReads');
20
+ // Only hippo.db has a global store beside it; an add-on's own store reads as one project.
21
+ const sqliteBacked = ctx.store === undefined || hasGroup(ctx.store, 'localFiles');
22
+ const reach = ctx.reach ?? (sqliteBacked ? sqliteReach(ctx.hippoRoot, filled.store, opts?.sharedStore) : undefined);
23
+ return renderPromptHook({ ...filled, reach }, req, opts);
24
+ }
4
25
  // Add-on packages mint and revoke keys through these without importing the whole api surface.
5
- export { authCreateSelf, authRevoke, ForbiddenError, NotFoundError, };
6
- // Published on the hippo-memory/server subpath before they moved to http-util.ts, so they stay exported here.
26
+ export { authCreate, authCreateSelf, authRevoke, BadRequestError, ConflictError, ForbiddenError, NotFoundError, promptHookContext, };
7
27
  export { isCrossSite, LOOPBACK_HOST_HEADER } from './util/http-util.js';
8
- // The code behind these lives in src/server/; this subpath keeps exporting them.
9
- export { __resetSessionRecallHistoryHttp } from './server/routes/recall.js';
10
28
  export { clientIpForRateLimit } from './server/client-ip.js';
11
29
  export { isLoopback, isReservedActor } from './server/auth.js';
12
- // What an add-on route handler needs: HttpError for its 4xx replies, promptHookContext
13
- // for a caller that renders the prompt hook elsewhere, JsonValue for its body.
30
+ // An add-on route replies 4xx with HttpError, renders the prompt hook elsewhere with promptHookContext, and types its
31
+ // body as JsonValue.
14
32
  export { HttpError } from './util/http-util.js';
15
- export { promptHookContext } from './api/prompt-hook.js';
16
33
  // A session-end route stores the turns its caller read from a transcript on the caller's own machine.
17
34
  export { captureSessionTexts } from './capture/session-texts.js';
18
- // An add-on serves from another database by passing serve() its own HippoStore.
19
- export { hasGroup, sqliteStore, } from './store/index.js';
20
- // An add-on store's entry writes apply an outcome, guard tombstones and check reach exactly as hippo.db does.
21
- export { entryAfterOutcome } from './core/memory.js';
22
- export { rejectionDigest } from './store/rejection.js';
23
- export { RejectedValueError } from './core/api-errors.js';
24
- export { ownScopeTouches } from './core/recall-scope.js';
25
- export { BadRequestError, ConflictError } from './core/api-errors.js';
26
- export { StoreBusyError } from './store/port.js';
27
- // An add-on store encodes, decodes and ranks vectors and particles with hippo.db's own code, and drops the index by its rule,
28
- // so both stores keep the same bytes and return the same ids in the same order.
29
- export { decodeVector, EMBEDDING_MODEL_META_KEY, encodeVector, rankVectorRows } from './db/vector-store.js';
30
- export { bufferToFloat32, float32ToBuffer } from './db/physics-state.js';
31
- export { replacesIndex } from './store/vector-index.js';
32
- // An add-on's ContextReads applies hippo.db's scope, secret, tally and rarest-term rules with the same code.
33
- export { passesScopeFilterForRecall, RECALL_DEFAULT_DENY_SCOPES } from './core/recall-scope.js';
34
- export { SECRET_TAGS } from './util/secret-detect.js';
35
- export { tallyAmbientEntries } from './core/ambient.js';
36
- export { ftsTermParts, rarestFtsQuery } from './core/prompt-recall.js';
37
- // store copy --db writes the marker and reads the old hippo.db under the waiver.
38
- export { OTHER_STORE_MARKER, OtherStoreFolderError, withSqliteAllowed } from './db/index.js';
39
- // An add-on's install step mints the first admin key into a store folder it names, which `hippo auth create` cannot reach.
40
- export { authCreate } from './api/index.js';
41
- // An add-on that serves a team store checks the flag before it starts.
42
- export { isSharedStore } from './core/config.js';
43
35
  export { ownerOrSubject } from './api/index.js';
44
36
  // A route that writes for a session binds it to the caller's owner first.
45
- export { bindSessionOwner } from './api/session-owners.js';
46
- // A hook route for a caller on another machine: each call binds the session, then writes under the caller's owner and project.
47
- export { preCompactForCaller } from './capture/pre-compact-caller.js';
37
+ export { bindSessionOwner, bindSessionOwnerOn } from './api/auth/session-owners.js';
38
+ // A hook route for a caller on another machine: each call binds
39
+ // the session, then writes under the caller's owner and project.
40
+ export { preCompactForCaller, } from './capture/pre-compact-caller.js';
48
41
  export { compactResumeForCaller } from './capture/compact-resume-caller.js';
49
- export { saveCompactionItemsForCaller } from './capture/compaction-items-caller.js';
50
- export { captureFailureForCaller } from './capture/failure-caller.js';
51
- export { sessionEndHandoffForCaller } from './capture/session-end-caller.js';
42
+ export { saveCompactionItemsForCaller, } from './capture/compaction-items-caller.js';
43
+ export { captureFailureForCaller, } from './capture/failure-caller.js';
44
+ export { sessionEndHandoffForCaller, } from './capture/session-end-caller.js';
52
45
  //# sourceMappingURL=server.js.map
@@ -1,19 +1,13 @@
1
- import { MemoryEntry } from '../core/memory.js';
2
- import type { DatabaseSyncLike } from '../db/index.js';
1
+ import type { MemoryEntry } from '../core/memory.js';
2
+ import type { PromoteOptions } from '../store/port/promotion.js';
3
3
  /** Returns the path to the global Hippo store.
4
4
  * Resolution order: $HIPPO_HOME > $XDG_DATA_HOME/hippo > ~/.hippo/ */
5
5
  export declare function getGlobalRoot(): string;
6
6
  /** Ensure the global store exists. */
7
7
  export declare function initGlobal(): void;
8
+ export type { PromoteOptions };
8
9
  /** Copies a local memory to the global store and returns the copy, which gets a new `g_` id so it cannot collide. */
9
- export declare function promoteToGlobal(localRoot: string, id: string, opts?: {
10
- actor?: string;
11
- tenantId?: string;
12
- afterWrite?: (db: DatabaseSyncLike, globalId: string) => void;
13
- /** Also writes one `promote` audit row for the copy ({sourceId}), in the copy's own transaction. */
14
- auditAs?: {
15
- tenantId: string;
16
- actor: string;
17
- };
18
- }): MemoryEntry;
10
+ export declare function promoteToGlobal(localRoot: string, id: string, opts?: PromoteOptions): MemoryEntry;
11
+ /** Fire-and-forget: embedMemory gates on availability and never rejects. */
12
+ export declare function embedGlobalCopy(globalEntry: MemoryEntry): void;
19
13
  //# sourceMappingURL=global-store.d.ts.map
@@ -1,17 +1,9 @@
1
1
  // The global store: where it lives, creating it, and copying a local memory into it.
2
- import { BadRequestError, NotFoundError } from '../core/api-errors.js';
3
2
  import * as fs from 'fs';
4
- import { generateId } from '../core/memory.js';
3
+ import { resolveGlobalRootDir } from '../core/project-identity.js';
5
4
  import { initStore } from '../store/open.js';
6
- import { writeEntry } from '../store/entry-writes.js';
7
- import { readEntry } from '../store/entry-reads.js';
8
- import { isPersonalScope } from '../core/recall-scope.js';
9
- import { fallbackOrigin, resolveGlobalRootDir } from '../core/project-identity.js';
10
- import { isSharedStore } from '../core/config.js';
11
- import { detectSecret } from '../util/secret-detect.js';
12
- import { isQuarantineScope } from '../trust/quarantine.js';
5
+ import { copyToGlobal } from '../store/sqlite/global-promote.js';
13
6
  import { embedMemory } from '../search/embed-memories.js';
14
- import { appendAuditEvent } from '../store/audit.js';
15
7
  /** Returns the path to the global Hippo store.
16
8
  * Resolution order: $HIPPO_HOME > $XDG_DATA_HOME/hippo > ~/.hippo/ */
17
9
  export function getGlobalRoot() {
@@ -30,46 +22,14 @@ export function initGlobal() {
30
22
  initStore(globalRoot);
31
23
  }
32
24
  }
33
- /** The copy's write hook: the `promote` row when asked for, then the caller's own hook, both in the copy's transaction. */
34
- function promoteHook(sourceId, auditAs, afterWrite) {
35
- if (!auditAs)
36
- return afterWrite;
37
- return (db, globalId) => {
38
- appendAuditEvent(db, { tenantId: auditAs.tenantId, actor: auditAs.actor, op: 'promote', targetId: globalId, metadata: { sourceId } });
39
- afterWrite?.(db, globalId);
40
- };
41
- }
42
25
  /** Copies a local memory to the global store and returns the copy, which gets a new `g_` id so it cannot collide. */
43
26
  export function promoteToGlobal(localRoot, id, opts) {
44
- const entry = readEntry(localRoot, id, opts?.tenantId);
45
- if (!entry)
46
- throw new NotFoundError(`Memory not found: ${id}`);
47
- // Same quarantine veto as shareMemory; a promoted copy would have no quarantine record to review.
48
- if (isQuarantineScope(entry.scope)) {
49
- throw new BadRequestError(`Refusing to promote ${id}: it is quarantined pending review. Approve it first via 'hippo quarantine approve ${id}'.`);
50
- }
51
- if (isPersonalScope(entry.scope ?? null)) {
52
- throw new BadRequestError(`Refusing to promote ${id}: it is a personal memory and stays with its owner on this server.`);
53
- }
54
- // Secret producer veto: promote is a producer path to the global store
55
- // exactly like shareMemory - same hard rule.
56
- const promoteSecret = detectSecret(entry);
57
- if (promoteSecret.flagged) {
58
- throw new BadRequestError(`Refusing to promote ${id} to the global store: content matches secret material (${promoteSecret.reason}). ` +
59
- `Secrets stay in their owning project's store.`);
60
- }
61
- initGlobal();
62
- const globalRoot = getGlobalRoot();
63
- // A project store's NULL row gets its folder back; a shared store's folder is no caller's project, so NULL stays and the label names no path.
64
- const globalEntry = {
65
- ...entry,
66
- id: generateId('g'),
67
- source: isSharedStore(localRoot) ? `shared::${new Date().toISOString()}` : `promoted:${localRoot}`,
68
- origin_project: entry.origin_project ?? fallbackOrigin(localRoot),
69
- };
70
- writeEntry(globalRoot, globalEntry, { actor: opts?.actor, afterWrite: promoteHook(id, opts?.auditAs, opts?.afterWrite) });
71
- // Fire-and-forget: embedMemory gates on availability and never rejects.
72
- void embedMemory(globalRoot, globalEntry);
27
+ const globalEntry = copyToGlobal(localRoot, id, opts);
28
+ embedGlobalCopy(globalEntry);
73
29
  return globalEntry;
74
30
  }
31
+ /** Fire-and-forget: embedMemory gates on availability and never rejects. */
32
+ export function embedGlobalCopy(globalEntry) {
33
+ void embedMemory(getGlobalRoot(), globalEntry);
34
+ }
75
35
  //# sourceMappingURL=global-store.js.map
@@ -1,4 +1,6 @@
1
- /** Copy all global memories into the local store, skipping entries that already exist locally by ID or text (promote and share copy under a new ID).
1
+ /**
2
+ * Copy all global memories into the local store, skipping entries that already exist locally by ID or text (promote and
3
+ * share copy under a new ID).
2
4
  * Returns the count of newly copied entries. */
3
5
  export declare function syncGlobalToLocal(localRoot: string, globalRoot: string, opts?: {
4
6
  includeCrossProject?: boolean;
@@ -13,7 +13,9 @@ import { detectSecret } from '../util/secret-detect.js';
13
13
  import { embedAll } from '../search/embed-memories.js';
14
14
  import { log } from '../util/log.js';
15
15
  import { logEmbedAllFailure } from './search-both.js';
16
- /** Copy all global memories into the local store, skipping entries that already exist locally by ID or text (promote and share copy under a new ID).
16
+ /**
17
+ * Copy all global memories into the local store, skipping entries that already exist locally by ID or text (promote and
18
+ * share copy under a new ID).
17
19
  * Returns the count of newly copied entries. */
18
20
  export function syncGlobalToLocal(localRoot, globalRoot, opts = {}) {
19
21
  if (isSharedStore(localRoot)) {
@@ -24,8 +26,11 @@ export function syncGlobalToLocal(localRoot, globalRoot, opts = {}) {
24
26
  return 0;
25
27
  return withRequestStoresSync(() => copyMissingRows(localRoot, globalRoot, opts.includeCrossProject === true));
26
28
  }
27
- const textKey = (e) => `${e.tenantId}\n${e.content}`;
28
- /** One open per store and one transaction: id, tenant and text decide which rows to read whole, and the copies commit together. */
29
+ const textKey = (e) => `${e.tenant_id}\n${e.content}`;
30
+ /**
31
+ * One open per store and one transaction: id, tenant and text decide which rows to read whole, and the copies commit
32
+ * together.
33
+ */
29
34
  function copyMissingRows(localRoot, globalRoot, includeCrossProject) {
30
35
  // Host-wide read: the global union is copied into a tenant-scoped local store, and each copy keeps its own tenant.
31
36
  const localKeys = loadEntryTextKeys(localRoot);
@@ -35,8 +40,11 @@ function copyMissingRows(localRoot, globalRoot, includeCrossProject) {
35
40
  const candidates = loadEntryTextKeys(globalRoot).filter((k) => !localIds.has(k.id) && !k.source.startsWith(AGENT_MEMORY_SOURCE_PREFIX) && !localText.has(textKey(k)));
36
41
  if (candidates.length === 0)
37
42
  return 0;
38
- const byId = new Map(chunked(candidates.map((k) => k.id)).flatMap((ids) => loadEntriesByIds(globalRoot, ids)).map((e) => [e.id, e]));
39
- // Syncing down must not re-import what ambient context excludes: other-project rows are skipped by default and secret rows never copied.
43
+ const byId = new Map(chunked(candidates.map((k) => k.id))
44
+ .flatMap((ids) => loadEntriesByIds(globalRoot, ids))
45
+ .map((e) => [e.id, e]));
46
+ // Syncing down must not re-import what ambient context excludes: other-project rows are skipped by default and secret
47
+ // rows never copied.
40
48
  // origin_project is preserved on the copy (the write stamps it only when missing).
41
49
  const currentProject = resolveProjectIdentity(path.dirname(path.resolve(localRoot)));
42
50
  // A locally rejected value must not come back through sync down: skipped per item, printed as one line.
@@ -44,13 +52,15 @@ function copyMissingRows(localRoot, globalRoot, includeCrossProject) {
44
52
  const count = writeEntriesSkippingRejected(localRoot, (put) => {
45
53
  for (const { id } of candidates) {
46
54
  const entry = byId.get(id);
47
- // A row the global store dropped between the two reads, or a text an earlier copy in this batch already brought down.
55
+ // A row the global store dropped between the two reads, or a text an earlier copy in this batch already brought
56
+ // down.
48
57
  if (!entry || localText.has(textKey(entry)))
49
58
  continue;
50
59
  if (detectSecret(entry).flagged)
51
60
  continue;
52
- if (!includeCrossProject && classifyOriginProject(entry.origin_project, currentProject) === 'cross-project')
61
+ if (!includeCrossProject && classifyOriginProject(entry.origin_project, currentProject) === 'cross-project') {
53
62
  continue;
63
+ }
54
64
  if (put(entry))
55
65
  localText.add(textKey(entry));
56
66
  else
@@ -6,13 +6,18 @@ export interface ProjectSummary {
6
6
  readonly live: number;
7
7
  readonly imported: number;
8
8
  readonly newest: string;
9
- /** Imported notes whose text another project name also holds: evidence of a duplicate import, never a merge target. */
9
+ /**
10
+ * Imported notes whose text another project name also holds: evidence of a duplicate import, never a merge target.
11
+ */
10
12
  readonly copiesElsewhere: number;
11
13
  }
12
14
  export interface MergeResult {
13
15
  readonly from: string;
14
16
  readonly into: string;
15
- /** Imports `into` already holds for the same note, moved to dormant storage; the rest are re-tagged and the next sync files them under `into`. */
17
+ /**
18
+ * Imports `into` already holds for the same note, moved to dormant storage; the rest are re-tagged and the next sync
19
+ * files them under `into`.
20
+ */
16
21
  readonly setAside: readonly string[];
17
22
  readonly restamped: readonly string[];
18
23
  readonly dormantRestamped: readonly string[];
@@ -25,11 +30,17 @@ export interface ProjectCollision {
25
30
  readonly ids: readonly string[];
26
31
  }
27
32
  export interface RepairResult {
28
- /** Imported notes filed under the wrong project, or under a project name when a user-global import holds the same text: set aside. */
33
+ /**
34
+ * Imported notes filed under the wrong project, or under a project name when a user-global import holds the same
35
+ * text: set aside.
36
+ */
29
37
  readonly copies: readonly string[];
30
38
  /** Names whose recorded session folders all resolve to one other project today, folded as `merge` would. */
31
39
  readonly folds: readonly ProjectFold[];
32
- /** Names left unfolded because their folders now resolve to more than one project; only `merge` by hand can split them. */
40
+ /**
41
+ * Names left unfolded because their folders now resolve to more than one project; only `merge` by hand can split
42
+ * them.
43
+ */
33
44
  readonly collisions: readonly ProjectCollision[];
34
45
  readonly toProject: ReadonlyArray<{
35
46
  readonly id: string;
@@ -45,13 +56,19 @@ export interface RepairResult {
45
56
  export declare function listProjects(store: ProjectTagReads): ProjectSummary[];
46
57
  /** Refuses user-global and unknown: they are not projects, and folding them would leak or hide every row. */
47
58
  export declare function validateMergeNames(from: string, into: string): string | null;
48
- /** Folds project `from` into `into` for one tenant in one transaction; a dry run rolls back and writes nothing, mirrors included. */
59
+ /**
60
+ * Folds project `from` into `into` for one tenant in one transaction; a dry run rolls back and writes nothing, mirrors
61
+ * included.
62
+ */
49
63
  export declare function mergeProjects(store: ProjectTagStore, opts: {
50
64
  from: string;
51
65
  into: string;
52
66
  dryRun: boolean;
53
67
  }): MergeResult;
54
- /** Reads only, so doctor and a dry run take no write lock; merged rows are planned before any fold, so a few may re-tag differently once folds apply. */
68
+ /**
69
+ * Reads only, so doctor and a dry run take no write lock; merged rows are planned before any fold, so a few may re-tag
70
+ * differently once folds apply.
71
+ */
55
72
  export declare function planProjectRepair(store: ProjectTagReads, hippoRoot: string, globalFolds?: boolean): Omit<RepairResult, 'backup'>;
56
73
  /** Sets aside stray imports, folds the names the resolver now maps elsewhere, then
57
74
  * re-tags sleep's user-global merges by their parents; a dry run only plans. */
@@ -60,6 +77,7 @@ export declare function repairProjects(store: ProjectTagStore, opts: {
60
77
  globalFolds?: boolean;
61
78
  }): RepairResult;
62
79
  /** Sleep runs repair once per store, so an upgrade needs no command. Global-store folds stay
63
- * with `hippo projects repair`: their evidence is compaction folders, blind to a same-named repo that never compacted. */
80
+ * with `hippo projects repair`: their evidence is compaction folders, blind to a same-named repo that never compacted.
81
+ */
64
82
  export declare function repairOnceOnSleep(store: ProjectTagStore): RepairResult | null;
65
83
  //# sourceMappingURL=project-merge.d.ts.map