hippo-memory 2.0.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 (965) hide show
  1. package/dist/agent-memories/apply.d.ts +7 -5
  2. package/dist/agent-memories/apply.js +66 -39
  3. package/dist/agent-memories/claude-code.d.ts +8 -2
  4. package/dist/agent-memories/claude-code.js +26 -7
  5. package/dist/agent-memories/copilot.js +2 -1
  6. package/dist/agent-memories/files.js +2 -1
  7. package/dist/agent-memories/legacy.d.ts +6 -3
  8. package/dist/agent-memories/legacy.js +35 -14
  9. package/dist/agent-memories/markdown.d.ts +3 -1
  10. package/dist/agent-memories/markdown.js +3 -1
  11. package/dist/agent-memories/openclaw.js +5 -2
  12. package/dist/agent-memories/plan.js +11 -1
  13. package/dist/agent-memories/project-folds.js +2 -1
  14. package/dist/agent-memories/report.d.ts +4 -1
  15. package/dist/agent-memories/report.js +43 -9
  16. package/dist/agent-memories/source.d.ts +8 -2
  17. package/dist/agent-memories/source.js +11 -3
  18. package/dist/agent-memories/sync.d.ts +7 -2
  19. package/dist/agent-memories/sync.js +141 -101
  20. package/dist/api/assemble.d.ts +6 -4
  21. package/dist/api/assemble.js +11 -6
  22. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  23. package/dist/api/{audit.js → auth/audit.js} +11 -11
  24. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
  25. package/dist/api/{auth.js → auth/auth.js} +46 -29
  26. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  27. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
  28. package/dist/api/auth/session-owners.d.ts +10 -0
  29. package/dist/api/auth/session-owners.js +35 -0
  30. package/dist/api/availability.d.ts +3 -1
  31. package/dist/api/availability.js +3 -1
  32. package/dist/api/busy.d.ts +2 -0
  33. package/dist/api/busy.js +2 -0
  34. package/dist/api/cli-surface.d.ts +6 -0
  35. package/dist/api/cli-surface.js +6 -0
  36. package/dist/api/config-of.d.ts +5 -0
  37. package/dist/api/config-of.js +6 -0
  38. package/dist/api/context-auto.d.ts +4 -1
  39. package/dist/api/context-auto.js +10 -2
  40. package/dist/api/context-render.js +14 -7
  41. package/dist/api/context-select.d.ts +4 -1
  42. package/dist/api/context-select.js +23 -14
  43. package/dist/api/context-types.d.ts +38 -12
  44. package/dist/api/context.d.ts +8 -5
  45. package/dist/api/context.js +112 -57
  46. package/dist/api/continuity.d.ts +24 -21
  47. package/dist/api/continuity.js +18 -20
  48. package/dist/api/correction-latency.d.ts +3 -1
  49. package/dist/api/correction-latency.js +3 -1
  50. package/dist/api/error-reply.d.ts +4 -1
  51. package/dist/api/error-reply.js +12 -3
  52. package/dist/api/index.d.ts +39 -23
  53. package/dist/api/index.js +21 -23
  54. package/dist/api/instruction-detect.d.ts +4 -1
  55. package/dist/api/instruction-detect.js +75 -20
  56. package/dist/api/ledger-db.d.ts +15 -11
  57. package/dist/api/ledger-db.js +21 -23
  58. package/dist/api/memories/conflicts.d.ts +33 -0
  59. package/dist/api/memories/conflicts.js +67 -0
  60. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  61. package/dist/api/{forget.js → memories/forget.js} +22 -15
  62. package/dist/api/memories/memories.d.ts +27 -0
  63. package/dist/api/{memories.js → memories/memories.js} +16 -21
  64. package/dist/api/memories/outcome.d.ts +22 -0
  65. package/dist/api/{outcome.js → memories/outcome.js} +14 -8
  66. package/dist/api/memories/promote.d.ts +40 -0
  67. package/dist/api/{promote.js → memories/promote.js} +35 -22
  68. package/dist/api/memories/refine.d.ts +10 -0
  69. package/dist/api/memories/refine.js +12 -0
  70. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
  71. package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
  72. package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
  73. package/dist/api/{remember.js → memories/remember.js} +42 -26
  74. package/dist/api/objects/cards.d.ts +39 -0
  75. package/dist/api/{cards.js → objects/cards.js} +12 -14
  76. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  77. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
  78. package/dist/api/objects/goals.d.ts +18 -0
  79. package/dist/api/{goals.js → objects/goals.js} +12 -12
  80. package/dist/api/objects/graph.d.ts +11 -0
  81. package/dist/api/objects/graph.js +16 -0
  82. package/dist/api/objects/objects.d.ts +9 -0
  83. package/dist/api/{objects.js → objects/objects.js} +2 -4
  84. package/dist/api/objects/predictions.d.ts +11 -0
  85. package/dist/api/{predictions.js → objects/predictions.js} +7 -6
  86. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  87. package/dist/api/{projects.js → objects/projects.js} +8 -4
  88. package/dist/api/pilot-arm.d.ts +8 -4
  89. package/dist/api/pilot-arm.js +5 -4
  90. package/dist/api/prompt-hook.d.ts +32 -19
  91. package/dist/api/prompt-hook.js +65 -44
  92. package/dist/api/provenance-coverage.d.ts +3 -1
  93. package/dist/api/provenance-coverage.js +3 -1
  94. package/dist/api/recall/finish.d.ts +185 -0
  95. package/dist/api/recall/finish.js +301 -0
  96. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  97. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
  98. package/dist/api/recall/recall.d.ts +6 -0
  99. package/dist/api/{recall.js → recall/recall.js} +101 -60
  100. package/dist/api/recall/render.d.ts +39 -0
  101. package/dist/api/recall/render.js +60 -0
  102. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  103. package/dist/api/recall/request.js +261 -0
  104. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  105. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  106. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
  107. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  108. package/dist/api/session-end.d.ts +16 -12
  109. package/dist/api/session-end.js +46 -30
  110. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  111. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  112. package/dist/api/sleep/dormant.d.ts +25 -0
  113. package/dist/api/sleep/dormant.js +64 -0
  114. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  115. package/dist/api/sleep/learn.js +138 -0
  116. package/dist/api/sleep/sleep-run.d.ts +38 -0
  117. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
  118. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  119. package/dist/api/sleep/sleep.js +9 -0
  120. package/dist/api/status.d.ts +3 -1
  121. package/dist/api/status.js +3 -1
  122. package/dist/api/store-init.d.ts +4 -1
  123. package/dist/api/store-init.js +4 -1
  124. package/dist/api/tokens.d.ts +10 -9
  125. package/dist/api/tokens.js +9 -10
  126. package/dist/api/types.d.ts +28 -7
  127. package/dist/api/types.js +13 -4
  128. package/dist/capture/caller-session.d.ts +8 -2
  129. package/dist/capture/caller-session.js +16 -6
  130. package/dist/capture/capture-error.d.ts +3 -1
  131. package/dist/capture/capture-error.js +3 -1
  132. package/dist/capture/codex-patch.js +7 -2
  133. package/dist/capture/command.d.ts +4 -2
  134. package/dist/capture/command.js +33 -14
  135. package/dist/capture/compact-resume-caller.js +15 -8
  136. package/dist/capture/compact.d.ts +8 -5
  137. package/dist/capture/compact.js +34 -23
  138. package/dist/capture/compaction-items-caller.js +9 -3
  139. package/dist/capture/compaction-record.d.ts +4 -3
  140. package/dist/capture/compaction-record.js +20 -12
  141. package/dist/capture/compaction-spool.d.ts +15 -4
  142. package/dist/capture/compaction-spool.js +64 -17
  143. package/dist/capture/copilot-transcript.d.ts +11 -3
  144. package/dist/capture/copilot-transcript.js +16 -6
  145. package/dist/capture/extract.js +20 -8
  146. package/dist/capture/failure-caller.js +23 -12
  147. package/dist/capture/failure-reading.d.ts +10 -3
  148. package/dist/capture/failure-reading.js +24 -7
  149. package/dist/capture/pre-compact-caller.js +11 -4
  150. package/dist/capture/session-digest.d.ts +15 -4
  151. package/dist/capture/session-digest.js +39 -13
  152. package/dist/capture/session-end-caller.d.ts +4 -1
  153. package/dist/capture/session-end-caller.js +20 -8
  154. package/dist/capture/session-texts.d.ts +6 -2
  155. package/dist/capture/session-texts.js +22 -7
  156. package/dist/capture/session-worker.d.ts +4 -2
  157. package/dist/capture/session-worker.js +45 -17
  158. package/dist/capture/transcript.d.ts +13 -4
  159. package/dist/capture/transcript.js +32 -10
  160. package/dist/capture/working-state.d.ts +13 -4
  161. package/dist/capture/working-state.js +50 -56
  162. package/dist/cli/api-context.d.ts +14 -2
  163. package/dist/cli/api-context.js +45 -2
  164. package/dist/cli/audit.js +23 -23
  165. package/dist/cli/auth.js +19 -27
  166. package/dist/cli/briefs.d.ts +1 -1
  167. package/dist/cli/briefs.js +20 -15
  168. package/dist/cli/card.d.ts +1 -1
  169. package/dist/cli/card.js +56 -73
  170. package/dist/cli/client.d.ts +12 -4
  171. package/dist/cli/client.js +43 -13
  172. package/dist/cli/compact-resume-payload.d.ts +4 -1
  173. package/dist/cli/compact-resume-payload.js +12 -5
  174. package/dist/cli/context.js +42 -17
  175. package/dist/cli/continuity.d.ts +5 -5
  176. package/dist/cli/continuity.js +90 -107
  177. package/dist/cli/curate.d.ts +4 -3
  178. package/dist/cli/curate.js +46 -68
  179. package/dist/cli/dag.d.ts +1 -1
  180. package/dist/cli/dag.js +14 -17
  181. package/dist/cli/decisions.js +27 -26
  182. package/dist/cli/eval.js +16 -21
  183. package/dist/cli/exit.d.ts +4 -1
  184. package/dist/cli/exit.js +10 -2
  185. package/dist/cli/explain.js +12 -11
  186. package/dist/cli/flag-values.d.ts +1 -1
  187. package/dist/cli/flag-values.js +9 -18
  188. package/dist/cli/github.d.ts +6 -0
  189. package/dist/cli/github.js +25 -13
  190. package/dist/cli/goals.d.ts +1 -1
  191. package/dist/cli/goals.js +39 -56
  192. package/dist/cli/graph.d.ts +1 -1
  193. package/dist/cli/graph.js +15 -11
  194. package/dist/cli/hook-runtime.d.ts +31 -9
  195. package/dist/cli/hook-runtime.js +40 -15
  196. package/dist/cli/incidents.d.ts +1 -1
  197. package/dist/cli/incidents.js +25 -25
  198. package/dist/cli/init.js +26 -11
  199. package/dist/cli/install-steps.d.ts +12 -3
  200. package/dist/cli/install-steps.js +42 -18
  201. package/dist/cli/last-sleep.d.ts +4 -1
  202. package/dist/cli/last-sleep.js +9 -4
  203. package/dist/cli/maintenance.d.ts +1 -1
  204. package/dist/cli/maintenance.js +11 -12
  205. package/dist/cli/notes.d.ts +1 -1
  206. package/dist/cli/notes.js +8 -5
  207. package/dist/cli/object-verbs.d.ts +4 -4
  208. package/dist/cli/object-verbs.js +10 -13
  209. package/dist/cli/open-browser.js +11 -2
  210. package/dist/cli/playbooks.d.ts +3 -3
  211. package/dist/cli/playbooks.js +40 -32
  212. package/dist/cli/predictions.js +15 -19
  213. package/dist/cli/print.js +4 -2
  214. package/dist/cli/projects.js +21 -11
  215. package/dist/cli/quality-repair-once.js +5 -4
  216. package/dist/cli/recall.js +129 -93
  217. package/dist/cli/refine-llm.d.ts +15 -4
  218. package/dist/cli/refine-llm.js +16 -7
  219. package/dist/cli/remember.js +46 -50
  220. package/dist/cli/scheduler.d.ts +4 -1
  221. package/dist/cli/scheduler.js +9 -5
  222. package/dist/cli/serve.js +22 -17
  223. package/dist/cli/session-hooks.d.ts +2 -2
  224. package/dist/cli/session-hooks.js +87 -50
  225. package/dist/cli/setup.js +54 -32
  226. package/dist/cli/shared.d.ts +3 -1
  227. package/dist/cli/shared.js +24 -9
  228. package/dist/cli/slack.js +15 -24
  229. package/dist/cli/sleep-render.d.ts +3 -1
  230. package/dist/cli/sleep-render.js +8 -5
  231. package/dist/cli/sleep.js +14 -6
  232. package/dist/cli/status.d.ts +4 -4
  233. package/dist/cli/status.js +32 -27
  234. package/dist/cli/stdin.d.ts +10 -3
  235. package/dist/cli/stdin.js +10 -3
  236. package/dist/cli/transfer.d.ts +1 -1
  237. package/dist/cli/transfer.js +71 -75
  238. package/dist/cli/verbs/memory.js +8 -6
  239. package/dist/cli/verbs/objects.js +10 -4
  240. package/dist/cli/versioned-verbs.d.ts +8 -7
  241. package/dist/cli/versioned-verbs.js +31 -21
  242. package/dist/cli.js +13 -16
  243. package/dist/connectors/dlq.d.ts +6 -6
  244. package/dist/connectors/dlq.js +12 -8
  245. package/dist/connectors/github/backfill.d.ts +4 -4
  246. package/dist/connectors/github/backfill.js +6 -4
  247. package/dist/connectors/github/deletion.d.ts +6 -4
  248. package/dist/connectors/github/deletion.js +5 -5
  249. package/dist/connectors/github/dlq.d.ts +8 -6
  250. package/dist/connectors/github/dlq.js +11 -5
  251. package/dist/connectors/github/ingest.d.ts +2 -2
  252. package/dist/connectors/github/ingest.js +9 -6
  253. package/dist/connectors/github/octokit-client.d.ts +3 -1
  254. package/dist/connectors/github/octokit-client.js +7 -2
  255. package/dist/connectors/github/ratelimit.d.ts +6 -2
  256. package/dist/connectors/github/ratelimit.js +6 -2
  257. package/dist/connectors/github/signature.d.ts +14 -3
  258. package/dist/connectors/github/signature.js +17 -3
  259. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  260. package/dist/connectors/github/tenant-routing.js +6 -6
  261. package/dist/connectors/github/transform.js +50 -67
  262. package/dist/connectors/github/types.d.ts +10 -3
  263. package/dist/connectors/github/types.js +6 -2
  264. package/dist/connectors/github/webhook.d.ts +5 -5
  265. package/dist/connectors/github/webhook.js +34 -23
  266. package/dist/connectors/ingest.d.ts +5 -3
  267. package/dist/connectors/ingest.js +3 -4
  268. package/dist/connectors/slack/backfill.d.ts +5 -5
  269. package/dist/connectors/slack/backfill.js +3 -3
  270. package/dist/connectors/slack/deletion.d.ts +4 -4
  271. package/dist/connectors/slack/deletion.js +6 -6
  272. package/dist/connectors/slack/dlq.d.ts +4 -4
  273. package/dist/connectors/slack/dlq.js +6 -6
  274. package/dist/connectors/slack/ingest.d.ts +6 -4
  275. package/dist/connectors/slack/ingest.js +5 -5
  276. package/dist/connectors/slack/signature.d.ts +4 -1
  277. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  278. package/dist/connectors/slack/tenant-routing.js +6 -6
  279. package/dist/connectors/slack/transform.d.ts +6 -2
  280. package/dist/connectors/slack/transform.js +6 -2
  281. package/dist/connectors/slack/types.d.ts +3 -1
  282. package/dist/connectors/slack/web-client.js +8 -3
  283. package/dist/connectors/slack/webhook.d.ts +5 -5
  284. package/dist/connectors/slack/webhook.js +19 -11
  285. package/dist/connectors/slack/workspaces.d.ts +7 -3
  286. package/dist/connectors/slack/workspaces.js +7 -3
  287. package/dist/connectors/store.d.ts +8 -0
  288. package/dist/connectors/store.js +2 -0
  289. package/dist/consolidate/conflicts.js +23 -9
  290. package/dist/consolidate/dag-summary.js +2 -1
  291. package/dist/consolidate/dag.d.ts +10 -5
  292. package/dist/consolidate/dag.js +37 -36
  293. package/dist/consolidate/decay.js +19 -6
  294. package/dist/consolidate/dedupe.d.ts +14 -5
  295. package/dist/consolidate/dedupe.js +27 -16
  296. package/dist/consolidate/flush-units.d.ts +4 -1
  297. package/dist/consolidate/flush-units.js +4 -1
  298. package/dist/consolidate/half-life-migration.d.ts +18 -8
  299. package/dist/consolidate/half-life-migration.js +48 -18
  300. package/dist/consolidate/llm-passes.js +27 -11
  301. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  302. package/dist/consolidate/memory-value-weights.js +6 -2
  303. package/dist/consolidate/memory-value.d.ts +30 -10
  304. package/dist/consolidate/memory-value.js +36 -13
  305. package/dist/consolidate/merge.d.ts +4 -1
  306. package/dist/consolidate/merge.js +42 -32
  307. package/dist/consolidate/overlap-index.d.ts +8 -2
  308. package/dist/consolidate/overlap-index.js +11 -4
  309. package/dist/consolidate/physics-pass.d.ts +3 -1
  310. package/dist/consolidate/physics-pass.js +10 -7
  311. package/dist/consolidate/replay.d.ts +11 -4
  312. package/dist/consolidate/replay.js +19 -7
  313. package/dist/consolidate/run.d.ts +13 -5
  314. package/dist/consolidate/run.js +4 -4
  315. package/dist/consolidate/sleep.d.ts +14 -6
  316. package/dist/consolidate/sleep.js +41 -38
  317. package/dist/consolidate/trace.d.ts +7 -2
  318. package/dist/consolidate/trace.js +7 -2
  319. package/dist/consolidate/traces.js +26 -29
  320. package/dist/core/ablation.d.ts +9 -3
  321. package/dist/core/ablation.js +14 -4
  322. package/dist/core/active-scope.d.ts +3 -1
  323. package/dist/core/active-scope.js +3 -1
  324. package/dist/core/agent-memory-tools.d.ts +2 -0
  325. package/dist/core/agent-memory-tools.js +2 -0
  326. package/dist/core/ambient.d.ts +4 -3
  327. package/dist/core/ambient.js +8 -6
  328. package/dist/core/api-errors.d.ts +9 -3
  329. package/dist/core/api-errors.js +9 -3
  330. package/dist/core/capture-contract.d.ts +4 -1
  331. package/dist/core/capture-contract.js +27 -8
  332. package/dist/core/compare.d.ts +24 -8
  333. package/dist/core/compare.js +24 -8
  334. package/dist/core/config.d.ts +18 -9
  335. package/dist/core/config.js +24 -14
  336. package/dist/core/cosine.d.ts +4 -1
  337. package/dist/core/cosine.js +4 -1
  338. package/dist/core/handoff.d.ts +7 -2
  339. package/dist/core/handoff.js +4 -1
  340. package/dist/core/markdown.js +21 -16
  341. package/dist/core/memory-audit.js +14 -3
  342. package/dist/core/memory-quality.d.ts +12 -3
  343. package/dist/core/memory-quality.js +57 -21
  344. package/dist/core/memory.d.ts +84 -27
  345. package/dist/core/memory.js +73 -29
  346. package/dist/core/merged-row.d.ts +8 -2
  347. package/dist/core/merged-row.js +10 -3
  348. package/dist/core/package-root.d.ts +3 -1
  349. package/dist/core/package-root.js +3 -1
  350. package/dist/core/particle-refresh.d.ts +8 -0
  351. package/dist/core/particle-refresh.js +22 -0
  352. package/dist/core/physics-config.d.ts +4 -1
  353. package/dist/core/physics-config.js +6 -2
  354. package/dist/core/physics.d.ts +37 -11
  355. package/dist/core/physics.js +55 -20
  356. package/dist/core/project-identity.d.ts +34 -17
  357. package/dist/core/project-identity.js +33 -17
  358. package/dist/core/project-remote.d.ts +8 -4
  359. package/dist/core/project-remote.js +31 -14
  360. package/dist/core/recall-scope.d.ts +33 -11
  361. package/dist/core/recall-scope.js +42 -15
  362. package/dist/core/rejection-digest.d.ts +7 -0
  363. package/dist/core/rejection-digest.js +13 -0
  364. package/dist/core/salience.d.ts +3 -1
  365. package/dist/core/salience.js +10 -4
  366. package/dist/core/search-types.d.ts +15 -2
  367. package/dist/core/search-types.js +11 -0
  368. package/dist/dashboard/dashboard-actions.js +13 -2
  369. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  370. package/dist/dashboard/dashboard-snapshot.js +4 -4
  371. package/dist/dashboard/dashboard.js +6 -3
  372. package/dist/db/backup.js +2 -2
  373. package/dist/db/busy.d.ts +10 -3
  374. package/dist/db/busy.js +27 -5
  375. package/dist/db/connect.d.ts +10 -3
  376. package/dist/db/connect.js +8 -3
  377. package/dist/db/continuity.d.ts +1 -1
  378. package/dist/db/continuity.js +27 -11
  379. package/dist/db/meta.d.ts +4 -1
  380. package/dist/db/meta.js +4 -1
  381. package/dist/db/migrate.d.ts +10 -5
  382. package/dist/db/migrate.js +26 -13
  383. package/dist/db/migrations/index.d.ts +1 -1
  384. package/dist/db/migrations/index.js +3 -1
  385. package/dist/db/migrations/types.d.ts +2 -1
  386. package/dist/db/migrations/v12.js +2 -1
  387. package/dist/db/migrations/v14.js +2 -1
  388. package/dist/db/migrations/v15.js +4 -2
  389. package/dist/db/migrations/v16.js +6 -3
  390. package/dist/db/migrations/v17.js +2 -1
  391. package/dist/db/migrations/v19.js +4 -2
  392. package/dist/db/migrations/v20.js +2 -1
  393. package/dist/db/migrations/v22.js +12 -6
  394. package/dist/db/migrations/v23.js +6 -3
  395. package/dist/db/migrations/v24.js +6 -3
  396. package/dist/db/migrations/v25.js +4 -2
  397. package/dist/db/migrations/v26.js +4 -2
  398. package/dist/db/migrations/v27.js +6 -3
  399. package/dist/db/migrations/v28.js +4 -2
  400. package/dist/db/migrations/v29.js +4 -2
  401. package/dist/db/migrations/v30.js +6 -3
  402. package/dist/db/migrations/v31.js +4 -2
  403. package/dist/db/migrations/v32.js +6 -3
  404. package/dist/db/migrations/v33.js +4 -2
  405. package/dist/db/migrations/v34.js +2 -1
  406. package/dist/db/migrations/v35.js +2 -1
  407. package/dist/db/migrations/v36.js +2 -1
  408. package/dist/db/migrations/v37.js +10 -5
  409. package/dist/db/migrations/v38.js +10 -5
  410. package/dist/db/migrations/v39.js +14 -6
  411. package/dist/db/migrations/v40.js +4 -2
  412. package/dist/db/migrations/v41.js +4 -2
  413. package/dist/db/migrations/v42.js +2 -1
  414. package/dist/db/migrations/v44.js +4 -2
  415. package/dist/db/migrations/v45.js +4 -2
  416. package/dist/db/migrations/v49.js +2 -1
  417. package/dist/db/migrations/v50.js +4 -2
  418. package/dist/db/migrations/v51.js +4 -2
  419. package/dist/db/migrations/v52.js +2 -1
  420. package/dist/db/migrations/v53.js +8 -4
  421. package/dist/db/migrations/v54.js +2 -1
  422. package/dist/db/migrations/v55.js +4 -2
  423. package/dist/db/migrations/v56.d.ts +3 -0
  424. package/dist/db/migrations/v56.js +28 -0
  425. package/dist/db/open.d.ts +24 -12
  426. package/dist/db/open.js +25 -13
  427. package/dist/db/physics-state.d.ts +8 -4
  428. package/dist/db/physics-state.js +13 -20
  429. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  430. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  431. package/dist/db/request-stores.d.ts +19 -5
  432. package/dist/db/request-stores.js +14 -5
  433. package/dist/db/tables.d.ts +2 -1
  434. package/dist/db/tables.js +12 -4
  435. package/dist/db/vector-store.d.ts +13 -4
  436. package/dist/db/vector-store.js +34 -14
  437. package/dist/db/wal-checkpointer.d.ts +2 -1
  438. package/dist/db/wal-checkpointer.js +19 -7
  439. package/dist/doctor.d.ts +4 -1
  440. package/dist/doctor.js +121 -39
  441. package/dist/embeddings/local.d.ts +8 -4
  442. package/dist/embeddings/local.js +9 -5
  443. package/dist/embeddings/provider.d.ts +19 -10
  444. package/dist/embeddings/provider.js +31 -17
  445. package/dist/embeddings/transformers.d.ts +16 -4
  446. package/dist/embeddings/transformers.js +32 -15
  447. package/dist/entry/json-hooks.d.ts +1 -1
  448. package/dist/entry/json-hooks.js +1 -1
  449. package/dist/entry/project-identity.js +2 -1
  450. package/dist/entry/session-text.d.ts +1 -1
  451. package/dist/entry/session-text.js +1 -1
  452. package/dist/entry/sqlite-handles.d.ts +10 -0
  453. package/dist/entry/sqlite-handles.js +9 -0
  454. package/dist/entry/store-kit.d.ts +19 -6
  455. package/dist/entry/store-kit.js +6 -4
  456. package/dist/eval/eval-stats.d.ts +27 -8
  457. package/dist/eval/eval-stats.js +17 -5
  458. package/dist/eval/eval-suite.d.ts +3 -1
  459. package/dist/eval/eval-suite.js +409 -187
  460. package/dist/eval/eval.d.ts +8 -2
  461. package/dist/eval/eval.js +8 -2
  462. package/dist/eval/judgment.js +16 -6
  463. package/dist/graph/delta.d.ts +9 -42
  464. package/dist/graph/delta.js +17 -11
  465. package/dist/graph/extract.d.ts +10 -7
  466. package/dist/graph/extract.js +57 -25
  467. package/dist/graph/recall.d.ts +12 -4
  468. package/dist/graph/recall.js +30 -13
  469. package/dist/graph/stream.d.ts +18 -6
  470. package/dist/graph/stream.js +32 -10
  471. package/dist/graph/view.d.ts +19 -6
  472. package/dist/graph/view.js +42 -17
  473. package/dist/hooks/codex-session.js +2 -2
  474. package/dist/hooks/codex-wrapper.d.ts +3 -1
  475. package/dist/hooks/codex-wrapper.js +9 -4
  476. package/dist/hooks/copilot.d.ts +19 -5
  477. package/dist/hooks/copilot.js +54 -15
  478. package/dist/hooks/hook-blocks.d.ts +4 -1
  479. package/dist/hooks/hook-blocks.js +8 -3
  480. package/dist/hooks/json-hooks.d.ts +9 -5
  481. package/dist/hooks/json-hooks.js +69 -34
  482. package/dist/hooks/opencode.js +15 -5
  483. package/dist/hooks/shared.d.ts +27 -8
  484. package/dist/hooks/shared.js +57 -16
  485. package/dist/importers/core.d.ts +12 -4
  486. package/dist/importers/core.js +8 -7
  487. package/dist/importers/markdown-parse.d.ts +15 -5
  488. package/dist/importers/markdown-parse.js +16 -7
  489. package/dist/importers/markdown.js +6 -9
  490. package/dist/importers/sources.js +10 -23
  491. package/dist/importers/vault.d.ts +2 -2
  492. package/dist/importers/vault.js +43 -27
  493. package/dist/index.d.ts +32 -6
  494. package/dist/index.js +25 -7
  495. package/dist/learn/autolearn.d.ts +17 -6
  496. package/dist/learn/autolearn.js +53 -24
  497. package/dist/learn/churn-git.d.ts +4 -1
  498. package/dist/learn/churn-git.js +29 -5
  499. package/dist/learn/extract.d.ts +4 -1
  500. package/dist/learn/extract.js +16 -9
  501. package/dist/learn/forward-claim-detector.d.ts +17 -5
  502. package/dist/learn/forward-claim-detector.js +34 -15
  503. package/dist/learn/invalidation.d.ts +12 -7
  504. package/dist/learn/invalidation.js +56 -27
  505. package/dist/learn/roots.d.ts +3 -0
  506. package/dist/learn/roots.js +5 -0
  507. package/dist/mcp/admin-tools.d.ts +5 -5
  508. package/dist/mcp/admin-tools.js +28 -23
  509. package/dist/mcp/format.d.ts +1 -1
  510. package/dist/mcp/format.js +4 -2
  511. package/dist/mcp/framing.d.ts +3 -1
  512. package/dist/mcp/framing.js +20 -8
  513. package/dist/mcp/memory-tools.d.ts +3 -3
  514. package/dist/mcp/memory-tools.js +18 -14
  515. package/dist/mcp/protocol.d.ts +32 -16
  516. package/dist/mcp/protocol.js +12 -9
  517. package/dist/mcp/recall-tools.d.ts +3 -3
  518. package/dist/mcp/recall-tools.js +62 -74
  519. package/dist/mcp/request.d.ts +7 -5
  520. package/dist/mcp/request.js +57 -74
  521. package/dist/mcp/server.d.ts +3 -1
  522. package/dist/mcp/server.js +8 -3
  523. package/dist/mcp/session-state.d.ts +1 -1
  524. package/dist/mcp/session-state.js +4 -3
  525. package/dist/mcp/shared-gate.d.ts +3 -2
  526. package/dist/mcp/shared-gate.js +3 -2
  527. package/dist/mcp/stdio.d.ts +6 -3
  528. package/dist/mcp/stdio.js +52 -21
  529. package/dist/mcp/tool-args.d.ts +4 -1
  530. package/dist/mcp/tool-args.js +8 -3
  531. package/dist/mcp/tools.js +76 -32
  532. package/dist/objects/customer-notes.d.ts +12 -10
  533. package/dist/objects/customer-notes.js +21 -15
  534. package/dist/objects/decisions.d.ts +18 -10
  535. package/dist/objects/decisions.js +23 -17
  536. package/dist/objects/descriptor.js +2 -1
  537. package/dist/objects/fields.d.ts +4 -1
  538. package/dist/objects/fields.js +6 -2
  539. package/dist/objects/incidents.d.ts +14 -16
  540. package/dist/objects/incidents.js +29 -30
  541. package/dist/objects/lifecycle.d.ts +0 -4
  542. package/dist/objects/lifecycle.js +21 -24
  543. package/dist/objects/policies.d.ts +12 -16
  544. package/dist/objects/policies.js +17 -21
  545. package/dist/objects/processes.d.ts +16 -10
  546. package/dist/objects/processes.js +20 -15
  547. package/dist/objects/project-briefs.d.ts +13 -14
  548. package/dist/objects/project-briefs.js +33 -39
  549. package/dist/objects/skills.d.ts +10 -12
  550. package/dist/objects/skills.js +17 -22
  551. package/dist/postinstall.js +15 -7
  552. package/dist/predictions/planning-fallacy.d.ts +19 -6
  553. package/dist/predictions/planning-fallacy.js +4 -2
  554. package/dist/rerankers/clef.d.ts +8 -2
  555. package/dist/rerankers/clef.js +14 -9
  556. package/dist/rerankers/cross-encoder.d.ts +2 -1
  557. package/dist/rerankers/cross-encoder.js +9 -6
  558. package/dist/rerankers/index.js +2 -1
  559. package/dist/rerankers/jev.js +2 -1
  560. package/dist/rerankers/llm.d.ts +6 -2
  561. package/dist/rerankers/llm.js +8 -3
  562. package/dist/rerankers/remote.d.ts +3 -1
  563. package/dist/rerankers/remote.js +5 -2
  564. package/dist/rerankers/types.d.ts +6 -2
  565. package/dist/search/bm25-search.d.ts +3 -1
  566. package/dist/search/bm25-search.js +15 -2
  567. package/dist/search/boosts.js +4 -3
  568. package/dist/search/embed-memories.d.ts +10 -5
  569. package/dist/search/embed-memories.js +62 -36
  570. package/dist/search/engine.d.ts +4 -1
  571. package/dist/search/engine.js +6 -2
  572. package/dist/search/goal-boost.d.ts +10 -3
  573. package/dist/search/goal-boost.js +13 -6
  574. package/dist/search/hybrid-score.d.ts +4 -1
  575. package/dist/search/hybrid-score.js +4 -1
  576. package/dist/search/hybrid.d.ts +23 -8
  577. package/dist/search/hybrid.js +12 -7
  578. package/dist/search/multihop.js +14 -13
  579. package/dist/search/path-context.d.ts +10 -3
  580. package/dist/search/path-context.js +10 -3
  581. package/dist/search/physics-search.d.ts +9 -4
  582. package/dist/search/physics-search.js +38 -14
  583. package/dist/search/rerank.d.ts +2 -1
  584. package/dist/search/rerank.js +2 -1
  585. package/dist/search/rrf.d.ts +14 -5
  586. package/dist/search/rrf.js +11 -4
  587. package/dist/search/vector.d.ts +8 -2
  588. package/dist/search/vector.js +9 -3
  589. package/dist/server/auth.d.ts +18 -14
  590. package/dist/server/auth.js +69 -38
  591. package/dist/server/boot.d.ts +3 -1
  592. package/dist/server/boot.js +95 -56
  593. package/dist/server/client-ip.d.ts +11 -4
  594. package/dist/server/client-ip.js +27 -10
  595. package/dist/server/cursor.d.ts +10 -3
  596. package/dist/server/cursor.js +10 -3
  597. package/dist/server/deadline.d.ts +5 -2
  598. package/dist/server/deadline.js +10 -3
  599. package/dist/server/key-check-bounds.js +12 -4
  600. package/dist/server/lifecycle.d.ts +4 -1
  601. package/dist/server/lifecycle.js +10 -4
  602. package/dist/server/mcp-http.d.ts +2 -1
  603. package/dist/server/mcp-http.js +37 -22
  604. package/dist/server/rate-limit.d.ts +17 -5
  605. package/dist/server/rate-limit.js +55 -26
  606. package/dist/server/ready.js +7 -4
  607. package/dist/server/request.d.ts +15 -4
  608. package/dist/server/request.js +42 -15
  609. package/dist/server/route-checks.d.ts +4 -1
  610. package/dist/server/route-checks.js +8 -3
  611. package/dist/server/route-table.d.ts +8 -6
  612. package/dist/server/route-table.js +547 -93
  613. package/dist/server/routes/admin.d.ts +7 -7
  614. package/dist/server/routes/admin.js +36 -15
  615. package/dist/server/routes/customer-notes.d.ts +5 -5
  616. package/dist/server/routes/customer-notes.js +5 -4
  617. package/dist/server/routes/decisions.d.ts +5 -5
  618. package/dist/server/routes/decisions.js +12 -6
  619. package/dist/server/routes/incidents.d.ts +5 -5
  620. package/dist/server/routes/incidents.js +10 -4
  621. package/dist/server/routes/memories.d.ts +8 -8
  622. package/dist/server/routes/memories.js +12 -19
  623. package/dist/server/routes/object-routes.d.ts +8 -5
  624. package/dist/server/routes/object-routes.js +4 -2
  625. package/dist/server/routes/policies.d.ts +6 -6
  626. package/dist/server/routes/policies.js +11 -4
  627. package/dist/server/routes/predictions.d.ts +5 -5
  628. package/dist/server/routes/predictions.js +9 -4
  629. package/dist/server/routes/processes.d.ts +5 -5
  630. package/dist/server/routes/processes.js +15 -6
  631. package/dist/server/routes/project-briefs.d.ts +6 -6
  632. package/dist/server/routes/project-briefs.js +3 -2
  633. package/dist/server/routes/recall.d.ts +3 -3
  634. package/dist/server/routes/recall.js +21 -10
  635. package/dist/server/routes/skills.d.ts +6 -6
  636. package/dist/server/routes/skills.js +12 -4
  637. package/dist/server/server-detect.d.ts +24 -8
  638. package/dist/server/server-detect.js +57 -22
  639. package/dist/server/sleep-child.js +16 -10
  640. package/dist/server/sleep-offload.d.ts +8 -5
  641. package/dist/server/sleep-offload.js +41 -19
  642. package/dist/server/tls.d.ts +4 -1
  643. package/dist/server/tls.js +13 -5
  644. package/dist/server/types.d.ts +38 -26
  645. package/dist/server/validation.d.ts +4 -1
  646. package/dist/server/validation.js +22 -9
  647. package/dist/server.d.ts +15 -10
  648. package/dist/server.js +32 -12
  649. package/dist/sharing/global-store.d.ts +5 -10
  650. package/dist/sharing/global-store.js +8 -43
  651. package/dist/sharing/global-sync.d.ts +3 -1
  652. package/dist/sharing/global-sync.js +16 -6
  653. package/dist/sharing/project-merge.d.ts +25 -7
  654. package/dist/sharing/project-merge.js +49 -17
  655. package/dist/sharing/search-both.d.ts +8 -4
  656. package/dist/sharing/search-both.js +19 -12
  657. package/dist/sharing/share.d.ts +8 -4
  658. package/dist/sharing/share.js +39 -15
  659. package/dist/store/ambient.js +9 -5
  660. package/dist/store/audit-event.d.ts +2 -2
  661. package/dist/store/audit-event.js +8 -3
  662. package/dist/store/audit.d.ts +6 -3
  663. package/dist/store/audit.js +16 -6
  664. package/dist/store/auth.d.ts +4 -2
  665. package/dist/store/auth.js +63 -20
  666. package/dist/store/busy.d.ts +9 -0
  667. package/dist/store/busy.js +16 -0
  668. package/dist/store/candidates.d.ts +12 -5
  669. package/dist/store/candidates.js +75 -36
  670. package/dist/store/capture-write.d.ts +2 -1
  671. package/dist/store/capture-write.js +2 -1
  672. package/dist/store/card-detail.d.ts +4 -4
  673. package/dist/store/card-detail.js +15 -8
  674. package/dist/store/cards.d.ts +24 -10
  675. package/dist/store/cards.js +93 -60
  676. package/dist/store/compaction-caller.d.ts +2 -1
  677. package/dist/store/compaction-caller.js +2 -1
  678. package/dist/store/compactions-record.d.ts +14 -8
  679. package/dist/store/compactions-record.js +95 -32
  680. package/dist/store/compactions.js +35 -15
  681. package/dist/store/conflicts.d.ts +9 -4
  682. package/dist/store/conflicts.js +100 -45
  683. package/dist/store/connectors/dlq.d.ts +17 -5
  684. package/dist/store/connectors/dlq.js +56 -5
  685. package/dist/store/connectors/event-log.d.ts +111 -2
  686. package/dist/store/connectors/event-log.js +2 -1
  687. package/dist/store/connectors/github.d.ts +6 -3
  688. package/dist/store/connectors/github.js +24 -40
  689. package/dist/store/connectors/slack.d.ts +2 -1
  690. package/dist/store/connectors/slack.js +25 -37
  691. package/dist/store/dashboard-reads.d.ts +7 -3
  692. package/dist/store/dashboard-reads.js +32 -11
  693. package/dist/store/delete-and-batch.d.ts +17 -11
  694. package/dist/store/delete-and-batch.js +67 -26
  695. package/dist/store/delivery-recorder.d.ts +8 -5
  696. package/dist/store/delivery-recorder.js +70 -32
  697. package/dist/store/descendant-page.d.ts +2 -1
  698. package/dist/store/descendant-page.js +24 -9
  699. package/dist/store/diagnostics.d.ts +2 -1
  700. package/dist/store/diagnostics.js +2 -1
  701. package/dist/store/doctor-reads.d.ts +2 -1
  702. package/dist/store/doctor-reads.js +13 -5
  703. package/dist/store/dormant.d.ts +19 -11
  704. package/dist/store/dormant.js +40 -18
  705. package/dist/store/embeddings/index.d.ts +13 -9
  706. package/dist/store/embeddings/index.js +19 -12
  707. package/dist/store/entry-reads.d.ts +49 -20
  708. package/dist/store/entry-reads.js +181 -66
  709. package/dist/store/entry-row.d.ts +10 -6
  710. package/dist/store/entry-row.js +17 -12
  711. package/dist/store/entry-writes.d.ts +22 -10
  712. package/dist/store/entry-writes.js +41 -14
  713. package/dist/store/failure-log-at.js +1 -1
  714. package/dist/store/failure-log.d.ts +4 -2
  715. package/dist/store/failure-log.js +13 -6
  716. package/dist/store/gated-write.d.ts +3 -3
  717. package/dist/store/gated-write.js +3 -3
  718. package/dist/store/goals.d.ts +5 -4
  719. package/dist/store/goals.js +8 -10
  720. package/dist/store/graph-apply.d.ts +21 -0
  721. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  722. package/dist/store/graph-queue.d.ts +9 -6
  723. package/dist/store/graph-queue.js +15 -10
  724. package/dist/store/graph-reads.d.ts +16 -11
  725. package/dist/store/graph-reads.js +24 -15
  726. package/dist/store/graph-rows.d.ts +41 -3
  727. package/dist/store/graph-rows.js +10 -7
  728. package/dist/store/graph-view-rows.js +14 -7
  729. package/dist/store/graph-writes.d.ts +16 -10
  730. package/dist/store/graph-writes.js +59 -36
  731. package/dist/store/handoffs.d.ts +4 -4
  732. package/dist/store/handoffs.js +40 -19
  733. package/dist/store/index-and-stats.d.ts +2 -2
  734. package/dist/store/index-and-stats.js +6 -5
  735. package/dist/store/index.d.ts +3 -1
  736. package/dist/store/index.js +1 -0
  737. package/dist/store/key-audit.d.ts +2 -1
  738. package/dist/store/key-audit.js +2 -1
  739. package/dist/store/key-writes.d.ts +2 -1
  740. package/dist/store/key-writes.js +9 -2
  741. package/dist/store/ledger-turn.d.ts +4 -1
  742. package/dist/store/ledger-turn.js +7 -2
  743. package/dist/store/mirrors.d.ts +11 -4
  744. package/dist/store/mirrors.js +88 -16
  745. package/dist/store/narrow.d.ts +6 -0
  746. package/dist/store/narrow.js +11 -0
  747. package/dist/store/open.d.ts +4 -2
  748. package/dist/store/open.js +18 -9
  749. package/dist/store/pilot-arm.d.ts +2 -1
  750. package/dist/store/pilot-arm.js +18 -6
  751. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  752. package/dist/store/planning-fallacy-evidence.js +8 -5
  753. package/dist/store/port/agent-import.d.ts +62 -0
  754. package/dist/store/port/agent-import.js +2 -0
  755. package/dist/store/port/consolidation.d.ts +129 -0
  756. package/dist/store/port/consolidation.js +2 -0
  757. package/dist/store/port/learning.d.ts +19 -0
  758. package/dist/store/port/learning.js +2 -0
  759. package/dist/store/port/local-files.d.ts +18 -0
  760. package/dist/store/port/local-files.js +2 -0
  761. package/dist/store/port/promotion.d.ts +20 -0
  762. package/dist/store/port/promotion.js +3 -0
  763. package/dist/store/port-groups.d.ts +160 -0
  764. package/dist/store/port-groups.js +2 -0
  765. package/dist/store/port.d.ts +215 -229
  766. package/dist/store/port.js +3 -9
  767. package/dist/store/predictions.d.ts +14 -10
  768. package/dist/store/predictions.js +37 -17
  769. package/dist/store/project-tags.d.ts +4 -1
  770. package/dist/store/project-tags.js +16 -5
  771. package/dist/store/quality-repair.d.ts +8 -4
  772. package/dist/store/quality-repair.js +53 -20
  773. package/dist/store/quarantine.d.ts +1 -0
  774. package/dist/store/quarantine.js +23 -9
  775. package/dist/store/raw-archive.d.ts +5 -4
  776. package/dist/store/raw-archive.js +11 -10
  777. package/dist/store/recall-trace.d.ts +22 -17
  778. package/dist/store/recall-trace.js +126 -63
  779. package/dist/store/rejected-values.d.ts +15 -10
  780. package/dist/store/rejected-values.js +33 -12
  781. package/dist/store/rejection.d.ts +12 -11
  782. package/dist/store/rejection.js +18 -19
  783. package/dist/store/report-reads.d.ts +2 -1
  784. package/dist/store/report-reads.js +2 -1
  785. package/dist/store/rows.d.ts +7 -5
  786. package/dist/store/rows.js +18 -11
  787. package/dist/store/rule-sql.d.ts +6 -4
  788. package/dist/store/rule-sql.js +16 -9
  789. package/dist/store/search-rows.d.ts +14 -9
  790. package/dist/store/search-rows.js +48 -23
  791. package/dist/store/sessions.d.ts +12 -10
  792. package/dist/store/sessions.js +40 -21
  793. package/dist/store/set-aside.d.ts +2 -2
  794. package/dist/store/set-aside.js +18 -5
  795. package/dist/store/sqlite/agent-import.d.ts +3 -0
  796. package/dist/store/sqlite/agent-import.js +77 -0
  797. package/dist/store/sqlite/cards-group.d.ts +6 -0
  798. package/dist/store/sqlite/cards-group.js +37 -0
  799. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  800. package/dist/store/sqlite/conflicts-group.js +18 -0
  801. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  802. package/dist/store/sqlite/connector-events-group.js +17 -6
  803. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  804. package/dist/store/sqlite/connector-writes-group.js +9 -4
  805. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  806. package/dist/store/sqlite/consolidation-group.js +64 -0
  807. package/dist/store/sqlite/dag-reads-group.js +1 -1
  808. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  809. package/dist/store/sqlite/dormant-group.js +29 -0
  810. package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
  811. package/dist/store/sqlite/entry-writes-group.js +37 -14
  812. package/dist/store/sqlite/error-codec.d.ts +4 -2
  813. package/dist/store/sqlite/error-codec.js +32 -10
  814. package/dist/store/sqlite/executor-counts.js +2 -1
  815. package/dist/store/sqlite/executor.d.ts +8 -3
  816. package/dist/store/sqlite/executor.js +56 -18
  817. package/dist/store/sqlite/global-promote.d.ts +5 -0
  818. package/dist/store/sqlite/global-promote.js +48 -0
  819. package/dist/store/sqlite/goals-group.d.ts +6 -0
  820. package/dist/store/sqlite/goals-group.js +23 -0
  821. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  822. package/dist/store/sqlite/graph-reads-group.js +2 -1
  823. package/dist/store/sqlite/held-connection.d.ts +7 -1
  824. package/dist/store/sqlite/held-connection.js +34 -7
  825. package/dist/store/sqlite/last-recall-group.d.ts +4 -2
  826. package/dist/store/sqlite/last-recall-group.js +9 -4
  827. package/dist/store/sqlite/learning-group.d.ts +4 -0
  828. package/dist/store/sqlite/learning-group.js +17 -0
  829. package/dist/store/sqlite/maintenance-groups.js +2 -1
  830. package/dist/store/sqlite/object-rows.d.ts +6 -3
  831. package/dist/store/sqlite/object-rows.js +34 -5
  832. package/dist/store/sqlite/objects-group.d.ts +5 -4
  833. package/dist/store/sqlite/objects-group.js +84 -33
  834. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  835. package/dist/store/sqlite/predictions-group.js +4 -2
  836. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  837. package/dist/store/sqlite/promotion-group.js +10 -0
  838. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  839. package/dist/store/sqlite/quarantine-group.js +4 -2
  840. package/dist/store/sqlite/reports-group.d.ts +6 -0
  841. package/dist/store/sqlite/reports-group.js +33 -0
  842. package/dist/store/sqlite/request-scope.d.ts +6 -0
  843. package/dist/store/sqlite/request-scope.js +18 -0
  844. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  845. package/dist/store/sqlite/sessions-group.js +46 -0
  846. package/dist/store/sqlite/store.d.ts +22 -11
  847. package/dist/store/sqlite/store.js +84 -11
  848. package/dist/store/sqlite/vector-pack.js +2 -1
  849. package/dist/store/sqlite/vector-reads-group.js +2 -1
  850. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  851. package/dist/store/sqlite/worker-jobs.js +19 -7
  852. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  853. package/dist/store/sqlite/worker-ops.js +6 -3
  854. package/dist/store/sqlite/worker-store.d.ts +4 -3
  855. package/dist/store/sqlite/worker-store.js +24 -14
  856. package/dist/store/summaries.d.ts +19 -12
  857. package/dist/store/summaries.js +36 -21
  858. package/dist/store/summary-dirty.d.ts +2 -1
  859. package/dist/store/summary-dirty.js +2 -1
  860. package/dist/store/tenant.d.ts +3 -2
  861. package/dist/store/tenant.js +5 -4
  862. package/dist/store/token-ledger-rows.js +6 -3
  863. package/dist/store/token-ledger.d.ts +19 -13
  864. package/dist/store/token-ledger.js +27 -14
  865. package/dist/store/tombstone-checks.d.ts +4 -1
  866. package/dist/store/tombstone-checks.js +10 -1
  867. package/dist/store/usage-reports.js +2 -1
  868. package/dist/store/vector-index.d.ts +8 -5
  869. package/dist/store/vector-index.js +24 -10
  870. package/dist/store/working-memory.d.ts +6 -4
  871. package/dist/store/working-memory.js +14 -9
  872. package/dist/support-bundle.js +10 -5
  873. package/dist/trust/quarantine.d.ts +1 -2
  874. package/dist/trust/quarantine.js +1 -5
  875. package/dist/trust/reject-flow.d.ts +12 -3
  876. package/dist/trust/reject-flow.js +12 -4
  877. package/dist/util/anthropic-messages.d.ts +4 -1
  878. package/dist/util/anthropic-messages.js +14 -5
  879. package/dist/util/atomic-write.d.ts +4 -2
  880. package/dist/util/atomic-write.js +25 -14
  881. package/dist/util/compaction-items.d.ts +4 -1
  882. package/dist/util/compaction-items.js +8 -2
  883. package/dist/util/crash-handlers.d.ts +7 -2
  884. package/dist/util/crash-handlers.js +13 -4
  885. package/dist/util/env.d.ts +16 -4
  886. package/dist/util/env.js +78 -25
  887. package/dist/util/home-path.js +12 -6
  888. package/dist/util/hook-payload.d.ts +3 -1
  889. package/dist/util/hook-payload.js +3 -1
  890. package/dist/util/http-retry.d.ts +12 -6
  891. package/dist/util/http-retry.js +16 -6
  892. package/dist/util/http-util.d.ts +20 -5
  893. package/dist/util/http-util.js +28 -9
  894. package/dist/util/json.d.ts +4 -1
  895. package/dist/util/json.js +4 -1
  896. package/dist/util/keyset.js +2 -1
  897. package/dist/util/limits.js +4 -2
  898. package/dist/util/log.d.ts +13 -5
  899. package/dist/util/log.js +29 -6
  900. package/dist/util/net.d.ts +5 -0
  901. package/dist/util/net.js +19 -0
  902. package/dist/util/real-path.d.ts +2 -1
  903. package/dist/util/real-path.js +4 -3
  904. package/dist/util/request-scope.d.ts +11 -3
  905. package/dist/util/request-scope.js +13 -4
  906. package/dist/util/same-text.d.ts +10 -3
  907. package/dist/util/same-text.js +10 -3
  908. package/dist/util/secret-detect.d.ts +24 -7
  909. package/dist/util/secret-detect.js +49 -14
  910. package/dist/util/spawn-argv.d.ts +3 -1
  911. package/dist/util/spawn-argv.js +13 -4
  912. package/dist/util/sqlite-blocked.d.ts +15 -4
  913. package/dist/util/sqlite-blocked.js +19 -6
  914. package/dist/util/stored-json.d.ts +4 -1
  915. package/dist/util/stored-json.js +6 -2
  916. package/dist/util/stream-tee.d.ts +2 -1
  917. package/dist/util/stream-tee.js +8 -5
  918. package/dist/util/transcript-tail.d.ts +4 -1
  919. package/dist/util/transcript-tail.js +4 -1
  920. package/dist/util/version.d.ts +8 -3
  921. package/dist/util/version.js +8 -3
  922. package/dist/util/write-budget.d.ts +7 -2
  923. package/dist/util/write-budget.js +5 -2
  924. package/dist/util/yaml.d.ts +4 -1
  925. package/dist/util/yaml.js +4 -1
  926. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  927. package/extensions/openclaw-plugin/package.json +1 -1
  928. package/openclaw.plugin.json +1 -1
  929. package/package.json +2 -1
  930. package/scripts/postinstall.cjs +3 -1
  931. package/dist/api/cards.d.ts +0 -42
  932. package/dist/api/conflicts.d.ts +0 -28
  933. package/dist/api/conflicts.js +0 -61
  934. package/dist/api/dormant.d.ts +0 -14
  935. package/dist/api/dormant.js +0 -58
  936. package/dist/api/goals.d.ts +0 -18
  937. package/dist/api/graph.d.ts +0 -8
  938. package/dist/api/graph.js +0 -8
  939. package/dist/api/learn.js +0 -125
  940. package/dist/api/memories.d.ts +0 -25
  941. package/dist/api/objects.d.ts +0 -9
  942. package/dist/api/outcome.d.ts +0 -19
  943. package/dist/api/predictions.d.ts +0 -11
  944. package/dist/api/promote.d.ts +0 -36
  945. package/dist/api/recall-core.d.ts +0 -4
  946. package/dist/api/recall-core.js +0 -125
  947. package/dist/api/recall-finish.d.ts +0 -53
  948. package/dist/api/recall-finish.js +0 -30
  949. package/dist/api/recall-history.d.ts +0 -64
  950. package/dist/api/recall-history.js +0 -159
  951. package/dist/api/recall-record.d.ts +0 -43
  952. package/dist/api/recall-record.js +0 -78
  953. package/dist/api/recall-request.js +0 -121
  954. package/dist/api/recall.d.ts +0 -6
  955. package/dist/api/refine.d.ts +0 -7
  956. package/dist/api/refine.js +0 -10
  957. package/dist/api/session-owners.d.ts +0 -4
  958. package/dist/api/session-owners.js +0 -17
  959. package/dist/api/sleep-run.d.ts +0 -26
  960. package/dist/api/sleep.js +0 -11
  961. package/dist/graph/write.d.ts +0 -14
  962. package/dist/store/sqlite/busy.d.ts +0 -3
  963. package/dist/store/sqlite/busy.js +0 -8
  964. package/dist/store/sqlite/local.d.ts +0 -4
  965. package/dist/store/sqlite/local.js +0 -8
@@ -8,9 +8,10 @@ const OFF_ON_SHARED = new Map([
8
8
  ['hippo_peers', "lists the server's own global store, not the repos that share this one"],
9
9
  ]);
10
10
  const OPEN_WITHOUT_PROJECT = new Set(['hippo_predict_baserate']);
11
- /** The refusal text for this call, or undefined when it may run; stdio passes no context and is never gated. */
11
+ /** The refusal text for this call, or undefined when it may run; the stdio host is the operator's own process and is
12
+ * never gated. */
12
13
  export function sharedStoreRefusal(name, ctx) {
13
- if (ctx === undefined || !isSharedStore(ctx.hippoRoot))
14
+ if (ctx.stdio === true || !isSharedStore(ctx.hippoRoot))
14
15
  return undefined;
15
16
  const off = OFF_ON_SHARED.get(name);
16
17
  if (off !== undefined)
@@ -1,4 +1,7 @@
1
- /** Wires stdin/stdout to the dispatcher; idempotent. Only the entrypoint (cli.ts `hippo mcp`, or this file run directly) should call it, so the HTTP daemon
2
- * (which imports `handleMcpRequest`) does not steal stdin or exit when its parent closes a pipe. */
3
- export declare function startStdioLoop(): void;
1
+ import { type McpHost } from './protocol.js';
2
+ /** Wires stdin/stdout to the dispatcher; idempotent. Only the entrypoint (cli.ts `hippo mcp`, or this file run
3
+ * directly) should call it, so the HTTP daemon
4
+ * (which imports `handleMcpRequest`) does not steal stdin or exit when its parent closes a pipe. The caller picks
5
+ * the host, so src/mcp names no store adapter and no scope plumbing. */
6
+ export declare function startStdioLoop(host: McpHost): void;
4
7
  //# sourceMappingURL=stdio.d.ts.map
package/dist/mcp/stdio.js CHANGED
@@ -4,13 +4,15 @@ import { errorFields, errorMessage, log } from '../util/log.js';
4
4
  import { requestDeadlineMs } from '../util/request-scope.js';
5
5
  import { MAX_BODY_BYTES } from '../util/http-util.js';
6
6
  import { parseFrame } from './framing.js';
7
- import { mcpErrorResponse } from './protocol.js';
7
+ import { findHippoRoot, mcpErrorResponse } from './protocol.js';
8
+ import { resolveTenantId } from '../store/tenant.js';
9
+ import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
8
10
  import { handleMcpRequest } from './request.js';
9
11
  import { isJsonNumber, isJsonString, isJsonObject } from '../util/json.js';
10
12
  import { randomUUID } from 'node:crypto';
11
13
  import { currentRequestId, runWithRequestId } from '../util/request-scope.js';
12
- // MCP stdio transport spec: messages are newline-delimited JSON-RPC, no embedded newlines.
13
- // https://modelcontextprotocol.io/specification/.../basic/transports#stdio
14
+ // MCP stdio transport spec: messages are newline-delimited JSON-RPC, no embedded
15
+ // newlines. https://modelcontextprotocol.io/specification/.../basic/transports#stdio
14
16
  function send(msg) {
15
17
  process.stdout.write(JSON.stringify(msg) + '\n');
16
18
  }
@@ -37,7 +39,8 @@ function withoutRefused(chunk) {
37
39
  function isRoutableRequest(v) {
38
40
  return isJsonObject(v) && isJsonString(v.method);
39
41
  }
40
- /** A frame that parsed but names no method: with an id it is a request owed an answer; without one it is a notification, which JSON-RPC forbids answering. */
42
+ /** A frame that parsed but names no method: with an id it is a request owed an answer; without one it is a
43
+ * notification, which JSON-RPC forbids answering. */
41
44
  function answerUnroutable(frame) {
42
45
  const id = isJsonObject(frame) ? frame.id : undefined;
43
46
  if (isJsonString(id) || isJsonNumber(id)) {
@@ -46,7 +49,8 @@ function answerUnroutable(frame) {
46
49
  }
47
50
  log.warn('mcp: dropped a frame with no method and no id; it cannot be routed or answered');
48
51
  }
49
- /** How long stdin's end waits for calls still running, so a client that closes right after its last request still gets the reply. */
52
+ /** How long stdin's end waits for calls still running, so a client that closes right after its last request still
53
+ * gets the reply. */
50
54
  const STDIN_END_DRAIN_MS = 5000;
51
55
  // Calls dispatched and not yet answered, each with the method the drain names if it is still running at the bound.
52
56
  const inFlight = new Map();
@@ -73,8 +77,8 @@ function callName(req) {
73
77
  const tool = req.params?.name;
74
78
  return isJsonString(tool) ? `${req.method} ${tool.slice(0, 128)}` : req.method;
75
79
  }
76
- /** Answers `req` with one timeout error at the deadline a served request has. The returned function stops the timer and says whether that
77
- * answer went out, so a later reply is dropped. */
80
+ /** Answers `req` with one timeout error at the deadline a served request has. The returned function stops the timer and
81
+ * says whether that answer went out, so a later reply is dropped. */
78
82
  function watchDeadline(req, owedReply, abort) {
79
83
  const ms = requestDeadlineMs();
80
84
  if (ms === 0)
@@ -83,7 +87,9 @@ function watchDeadline(req, owedReply, abort) {
83
87
  const timer = setTimeout(() => {
84
88
  expired = true;
85
89
  const name = callName(req);
86
- log.warn(`mcp: ${name} did not answer within ${ms} ms; its next step is cancelled and its reply will be dropped`, { method: req.method });
90
+ log.warn(`mcp: ${name} did not answer within ${ms} ms; its next step is cancelled and its reply will be dropped`, {
91
+ method: req.method,
92
+ });
87
93
  abort.abort(new DOMException(`${name} did not finish within ${ms} ms`, 'TimeoutError'));
88
94
  if (!owedReply)
89
95
  return;
@@ -101,13 +107,30 @@ function watchDeadline(req, owedReply, abort) {
101
107
  return expired;
102
108
  };
103
109
  }
104
- function dispatch(body, abort) {
110
+ /** Zero-install first run (`npx -y hippo-memory mcp`, no store anywhere): create the global store instead of failing
111
+ * every tool call, and say so on stderr (stdout carries the protocol). A later `hippo init` project store wins. */
112
+ function createGlobalStoreOnFirstRun() {
113
+ initGlobal();
114
+ const root = getGlobalRoot();
115
+ log.warn(`no memory store found; created the global store at ${root}. Run \`hippo init\` in a project for a project store.`);
116
+ return root;
117
+ }
118
+ /** Runs one frame in the host's scope; only a tool call builds a context, so tools/list never creates a store. */
119
+ function handleFrame(req, host) {
120
+ return host.runRequest(() => {
121
+ if (req.method !== 'tools/call')
122
+ return handleMcpRequest(req, undefined);
123
+ const root = findHippoRoot() ?? createGlobalStoreOnFirstRun();
124
+ return handleMcpRequest(req, host.contextFor(root, resolveTenantId({})));
125
+ });
126
+ }
127
+ function dispatch(body, abort, host) {
105
128
  let parsed;
106
129
  try {
107
130
  parsed = JSON.parse(body);
108
131
  }
109
- catch {
110
- log.debug('mcp: answered a frame that is not valid JSON with a parse error');
132
+ catch (err) {
133
+ log.debug('mcp: answered a frame that is not valid JSON with a parse error', errorFields(err));
111
134
  send({ jsonrpc: '2.0', id: null, error: { code: -32700, message: 'Parse error' } });
112
135
  return;
113
136
  }
@@ -118,26 +141,34 @@ function dispatch(body, abort) {
118
141
  const req = parsed;
119
142
  if (req.method.startsWith('notifications/')) {
120
143
  const stopWatching = watchDeadline(req, false, abort);
121
- track(req.method, handleMcpRequest(req).then(() => { }).catch((err) => {
144
+ track(req.method, handleFrame(req, host).then(() => { }).catch((err) => {
122
145
  log.error(`mcp notification ${req.method} failed: ${errorMessage(err)}`, errorFields(err));
123
146
  }).finally(stopWatching));
124
147
  return;
125
148
  }
126
149
  // A frame with no id is a notification under any method name, and JSON-RPC forbids answering one.
127
150
  const timedOut = watchDeadline(req, isJsonString(req.id) || isJsonNumber(req.id), abort);
128
- track(req.method, handleMcpRequest(req).then((resp) => { if (!timedOut() && resp)
129
- send(resp); }).catch((err) => {
130
- if (timedOut() && err instanceof DOMException && err.name === 'TimeoutError')
131
- log.debug(`mcp: ${callName(req)} stopped at its deadline`);
132
- else if (timedOut())
151
+ track(req.method, handleFrame(req, host)
152
+ .then((resp) => {
153
+ if (!timedOut() && resp)
154
+ send(resp);
155
+ })
156
+ .catch((err) => {
157
+ if (timedOut() && err instanceof DOMException && err.name === 'TimeoutError') {
158
+ log.debug(`mcp: ${callName(req)} stopped at its deadline`, errorFields(err));
159
+ }
160
+ else if (timedOut()) {
133
161
  log.error(`mcp: ${callName(req)} failed after its timeout reply: ${errorMessage(err)}`, errorFields(err));
162
+ }
134
163
  else
135
164
  send(mcpErrorResponse(req.id, err, undefined, callName(req)));
136
165
  }));
137
166
  }
138
- /** Wires stdin/stdout to the dispatcher; idempotent. Only the entrypoint (cli.ts `hippo mcp`, or this file run directly) should call it, so the HTTP daemon
139
- * (which imports `handleMcpRequest`) does not steal stdin or exit when its parent closes a pipe. */
140
- export function startStdioLoop() {
167
+ /** Wires stdin/stdout to the dispatcher; idempotent. Only the entrypoint (cli.ts `hippo mcp`, or this file run
168
+ * directly) should call it, so the HTTP daemon
169
+ * (which imports `handleMcpRequest`) does not steal stdin or exit when its parent closes a pipe. The caller picks
170
+ * the host, so src/mcp names no store adapter and no scope plumbing. */
171
+ export function startStdioLoop(host) {
141
172
  process.stdin.on('data', (raw) => {
142
173
  const chunk = withoutRefused(raw);
143
174
  pending.push(chunk);
@@ -163,7 +194,7 @@ export function startStdioLoop() {
163
194
  // One id per frame, so the error reply and every line logged for the call name the same request.
164
195
  if (result.kind === 'message') {
165
196
  const abort = new AbortController();
166
- runWithRequestId(randomUUID(), () => dispatch(result.body, abort), undefined, abort.signal);
197
+ runWithRequestId(randomUUID(), () => dispatch(result.body, abort, host), undefined, abort.signal);
167
198
  }
168
199
  }
169
200
  pending = buffer.length > 0 ? [buffer] : [];
@@ -16,6 +16,9 @@ export interface ToolInputSchema {
16
16
  readonly properties: Readonly<Record<string, ToolPropertySchema>>;
17
17
  readonly required?: readonly string[];
18
18
  }
19
- /** One message per violation; undeclared properties pass, and `checkedDownstream` names keep the API layer's own error contract. */
19
+ /**
20
+ * One message per violation; undeclared properties pass, and `checkedDownstream` names keep the API layer's own error
21
+ * contract.
22
+ */
20
23
  export declare function validateToolArgs(schema: ToolInputSchema, args: Readonly<Record<string, ToolArgValue>>, checkedDownstream?: ReadonlySet<string>): string[];
21
24
  //# sourceMappingURL=tool-args.d.ts.map
@@ -1,4 +1,5 @@
1
- // Hand-written for the JSON Schema subset the hippo tool definitions use, so the MCP server needs no validator dependency.
1
+ // Hand-written for the JSON Schema subset the hippo tool definitions use, so the MCP server needs no validator
2
+ // dependency.
2
3
  import { truncateWithEllipsis } from '../util/ellipsize.js';
3
4
  const ARG_PREVIEW_CHARS = 40;
4
5
  function isArgString(v) {
@@ -11,7 +12,8 @@ function isArgNumber(v) {
11
12
  return typeof v === 'number' && Number.isFinite(v);
12
13
  }
13
14
  const NUMERIC_STRING = /^-?\d+(\.\d+)?$/;
14
- // LLM clients often send numbers as strings, and the handlers Number-coerce, so "4000" counts as 4000 while "12abc" does not.
15
+ // LLM clients often send numbers as strings, and the handlers Number-coerce, so "4000" counts as 4000 while "12abc"
16
+ // does not.
15
17
  function asNumber(v) {
16
18
  if (isArgNumber(v))
17
19
  return v;
@@ -63,7 +65,10 @@ function checkProperty(name, schema, raw) {
63
65
  }
64
66
  return null;
65
67
  }
66
- /** One message per violation; undeclared properties pass, and `checkedDownstream` names keep the API layer's own error contract. */
68
+ /**
69
+ * One message per violation; undeclared properties pass, and `checkedDownstream` names keep the API layer's own error
70
+ * contract.
71
+ */
67
72
  export function validateToolArgs(schema, args, checkedDownstream = new Set()) {
68
73
  const problems = [];
69
74
  for (const name of schema.required ?? []) {
package/dist/mcp/tools.js CHANGED
@@ -10,8 +10,10 @@ const MAX_BUDGET_TOKENS = 25 * DEFAULT_RECALL_BUDGET;
10
10
  export const TOOLS = [
11
11
  {
12
12
  name: 'hippo_recall',
13
- description: 'Retrieve relevant memories from the project memory store. Returns memories ranked by relevance, strength, and recency within the token budget. Use ' +
14
- 'at session start or when you need context about a topic. Pass include_continuity=true to also surface the active task snapshot, latest matching ' +
13
+ description: 'Retrieve relevant memories from the project memory store. Returns memories ranked by relevance, strength, and ' +
14
+ 'recency within the token budget. Use ' +
15
+ 'at session start or when you need context about a topic. Pass include_continuity=true to also surface the ' +
16
+ 'active task snapshot, latest matching ' +
15
17
  'session handoff, and recent session events as a "## Continuity" appendix.',
16
18
  inputSchema: {
17
19
  type: 'object',
@@ -21,35 +23,44 @@ export const TOOLS = [
21
23
  type: 'number',
22
24
  minimum: 0,
23
25
  maximum: MAX_BUDGET_TOKENS,
24
- description: `Max tokens to return (default: config.defaultBudget, ${DEFAULT_RECALL_BUDGET}; max ${MAX_BUDGET_TOKENS})`,
26
+ description: `Max tokens to return (default: config.defaultBudget, ${DEFAULT_RECALL_BUDGET}; max ` +
27
+ `${MAX_BUDGET_TOKENS})`,
25
28
  },
26
29
  include_continuity: {
27
30
  type: 'boolean',
28
- description: 'Append continuity context (active snapshot + handoff + last 5 session events) below the memory results. Useful at session boot.',
31
+ description: 'Append continuity context (active snapshot + handoff + last 5 session events) below the memory results. ' +
32
+ 'Useful at session boot.',
29
33
  },
30
34
  scope: {
31
35
  type: 'string',
32
- description: 'Restrict results and continuity to memories/rows matching this scope exactly. When omitted, default-deny applies to ANY ' +
36
+ description: 'Restrict results and continuity to memories/rows matching this scope exactly. When omitted, ' +
37
+ 'default-deny ' +
38
+ 'applies to ANY ' +
33
39
  '<source>:private:* (slack, github, ...) and unknown-legacy rows.',
34
40
  },
35
41
  fresh_tail_count: {
36
42
  type: 'number',
37
- description: 'When > 0, surface the last N kind=raw rows tagged isFreshTail=true regardless of query match. Useful for "what did I just see" ' +
43
+ description: 'When > 0, surface the last N kind=raw rows tagged isFreshTail=true regardless of query match. Useful ' +
44
+ 'for ' +
45
+ '"what did I just see" ' +
38
46
  'continuity. Capped at 200.',
39
47
  },
40
48
  fresh_tail_session_id: {
41
49
  type: 'string',
42
- description: 'Restrict the fresh-tail window to a specific session. Without this, fresh-tail is tenant-wide (legacy v1.5.2 behaviour, pre-v1.6.3 ' +
50
+ description: 'Restrict the fresh-tail window to a specific session. Without this, fresh-tail is tenant-wide (legacy ' +
51
+ 'v1.5.2 behaviour, pre-v1.6.3 ' +
43
52
  'default).',
44
53
  },
45
54
  summarize_overflow: {
46
55
  type: 'boolean',
47
- description: 'When true (default), entries that overflow the limit and share a level-2 parent summary cause that summary to be appended in their ' +
56
+ description: 'When true (default), entries that overflow the limit and share a level-2 parent summary cause that ' +
57
+ 'summary to be appended in their ' +
48
58
  'place. Set false for strict-limit behaviour.',
49
59
  },
50
60
  scorer_window: {
51
61
  type: 'number',
52
- description: `How many of the top-ranked memories the fresh-tail and summarize-overflow appendix is worked out against. ` +
62
+ description: `How many of the top-ranked memories the fresh-tail and summarize-overflow appendix is worked out ` +
63
+ `against. ` +
53
64
  `The main list ranks the whole tenant store, so scorer_window does not narrow it. ` +
54
65
  `Default ${DEFAULT_SEARCH_CANDIDATE_LIMIT}. ` +
55
66
  `Rejected as RecallContractError code=invalid_scorer_window if 0/negative/non-finite/non-numeric.`,
@@ -67,8 +78,10 @@ export const TOOLS = [
67
78
  },
68
79
  {
69
80
  name: 'hippo_assemble',
70
- description: 'Build a chronologically-ordered context window for a session. Returns ordered items: fresh-tail raw rows + level-2 summary substitutions for older ' +
71
- 'rows + budget-fit. Hippo-additive vs lossless-claw: eviction picks lowest-strength non-fresh-tail items first instead of oldest-first. ' +
81
+ description: 'Build a chronologically-ordered context window for a session. Returns ordered items: fresh-tail raw rows + ' +
82
+ 'level-2 summary substitutions for older ' +
83
+ 'rows + budget-fit. Hippo-additive vs lossless-claw: eviction picks lowest-strength non-fresh-tail items first ' +
84
+ 'instead of oldest-first. ' +
72
85
  'Tenant-scoped; default-deny on private scopes.',
73
86
  inputSchema: {
74
87
  type: 'object',
@@ -81,7 +94,8 @@ export const TOOLS = [
81
94
  type: 'number',
82
95
  minimum: 0,
83
96
  maximum: MAX_BUDGET_TOKENS,
84
- description: `Token budget for the assembled context (default ${DEFAULT_ASSEMBLE_BUDGET}; max ${MAX_BUDGET_TOKENS}). Eviction kicks in over budget.`,
97
+ description: `Token budget for the assembled context (default ${DEFAULT_ASSEMBLE_BUDGET}; max ` +
98
+ `${MAX_BUDGET_TOKENS}). Eviction kicks in over budget.`,
85
99
  },
86
100
  fresh_tail_count: {
87
101
  type: 'number',
@@ -89,11 +103,13 @@ export const TOOLS = [
89
103
  },
90
104
  summarize_older: {
91
105
  type: 'boolean',
92
- description: 'When true (default), older raws sharing a level-2 parent summary get substituted. Set false to keep every older raw as-is.',
106
+ description: 'When true (default), older raws sharing a level-2 parent summary get substituted. Set false to keep ' +
107
+ 'every older raw as-is.',
93
108
  },
94
109
  scope: {
95
110
  type: 'string',
96
- description: 'Restrict to memories whose scope matches exactly. When omitted, default-deny applies to ANY <source>:private:* scope and ' +
111
+ description: 'Restrict to memories whose scope matches exactly. When omitted, default-deny applies to ANY ' +
112
+ '<source>:private:* scope and ' +
97
113
  'unknown:legacy rows. Pass an explicit scope to assemble a private session with consent.',
98
114
  },
99
115
  },
@@ -102,14 +118,17 @@ export const TOOLS = [
102
118
  },
103
119
  {
104
120
  name: 'hippo_drill',
105
- description: 'Walk one step down the DAG from a level-2+ topic summary to its direct children. Companion to hippo_recall: when recall returns an item with ' +
106
- 'isSummary=true and substitutedFor=[ids], pass the summary id here to recover the original detail. Tenant-scoped; default-deny on private scopes.',
121
+ description: 'Walk one step down the DAG from a level-2+ topic summary to its direct children. Companion to hippo_recall: ' +
122
+ 'when recall returns an item with ' +
123
+ 'isSummary=true and substitutedFor=[ids], pass the summary id here to recover the original detail. ' +
124
+ 'Tenant-scoped; default-deny on private scopes.',
107
125
  inputSchema: {
108
126
  type: 'object',
109
127
  properties: {
110
128
  summary_id: {
111
129
  type: 'string',
112
- description: 'ID of the level-2 (or higher) summary to drill into. Must be a summary, not a leaf — leaves are not drillable.',
130
+ description: 'ID of the level-2 (or higher) summary to drill into. Must be a summary, not a leaf — leaves are not ' +
131
+ 'drillable.',
113
132
  },
114
133
  limit: {
115
134
  type: 'number',
@@ -121,13 +140,15 @@ export const TOOLS = [
121
140
  type: 'number',
122
141
  minimum: 0,
123
142
  maximum: MAX_BUDGET_TOKENS,
124
- description: `Max total token cost (~ chars/4) of returned children (max ${MAX_BUDGET_TOKENS}). Truncates chronologically.`,
143
+ description: `Max total token cost (~ chars/4) of returned children (max ${MAX_BUDGET_TOKENS}). Truncates ` +
144
+ `chronologically.`,
125
145
  },
126
146
  depth: {
127
147
  type: 'integer',
128
148
  minimum: 1,
129
149
  maximum: 10,
130
- description: 'v0.30 / E5: walk N levels down (default 1 = direct children only). Higher values include children of children. Token budget remains ' +
150
+ description: 'v0.30 / E5: walk N levels down (default 1 = direct children only). Higher values include children of ' +
151
+ 'children. Token budget remains ' +
131
152
  'GLOBAL across levels. Hard cap 10.',
132
153
  },
133
154
  },
@@ -136,7 +157,8 @@ export const TOOLS = [
136
157
  },
137
158
  {
138
159
  name: 'hippo_remember',
139
- description: 'Store a new memory. Use when you learn something non-obvious, hit an error, or discover a useful pattern. Memories decay over time unless retrieved. ' +
160
+ description: 'Store a new memory. Use when you learn something non-obvious, hit an error, or discover a useful pattern. ' +
161
+ 'Memories decay over time unless retrieved. ' +
140
162
  'Errors get 2x half-life.',
141
163
  inputSchema: {
142
164
  type: 'object',
@@ -148,15 +170,22 @@ export const TOOLS = [
148
170
  error: { type: 'boolean', description: 'Mark as error memory (doubles half-life)' },
149
171
  pin: { type: 'boolean', description: 'Pin memory (never decays)' },
150
172
  tag: { type: 'string', description: 'Optional tag for categorization' },
151
- personal: { type: 'boolean', description: 'Store it as your own private memory: only you can recall it, in every project. Needs a key you minted or ' +
152
- 'a sign-in.' },
173
+ personal: {
174
+ type: 'boolean',
175
+ description: 'Store it as your own private memory: only you can recall it, in every project. Needs a key you minted ' +
176
+ 'or ' +
177
+ '' +
178
+ 'a sign-in.',
179
+ },
153
180
  },
154
181
  required: ['text'],
155
182
  },
156
183
  },
157
184
  {
158
185
  name: 'hippo_outcome',
159
- description: "Report whether recalled memories were useful. Good outcomes slow a memory's decay and bad ones speed it up, in proportion to its record. Call after " +
186
+ description: "Report whether recalled memories were useful. Good outcomes slow a memory's decay and bad ones speed it up, " +
187
+ "in " +
188
+ "proportion to its record. Call after " +
160
189
  "completing work.",
161
190
  inputSchema: {
162
191
  type: 'object',
@@ -171,8 +200,11 @@ export const TOOLS = [
171
200
  },
172
201
  {
173
202
  name: 'hippo_context',
174
- description: 'Smart context injection: auto-detects current task from git state and returns relevant memories plus the active task snapshot, session handoff and ' +
175
- 'recent session trail (the same bundle as GET /v1/context). Use at the start of any session. Memories and those sections are scope-filtered: a ' +
203
+ description: 'Smart context injection: auto-detects current task from git state and returns relevant memories plus the ' +
204
+ 'active task snapshot, session handoff and ' +
205
+ 'recent session trail (the same bundle as GET /v1/context). Use at the start of any session. Memories and ' +
206
+ 'those ' +
207
+ 'sections are scope-filtered: a ' +
176
208
  'no-scope caller does NOT see ANY <source>:private:* (slack, github, ...) or legacy-quarantine rows.',
177
209
  inputSchema: {
178
210
  type: 'object',
@@ -181,11 +213,14 @@ export const TOOLS = [
181
213
  type: 'number',
182
214
  minimum: 0,
183
215
  maximum: MAX_BUDGET_TOKENS,
184
- description: `Max tokens (default: config.defaultContextBudget, ${DEFAULT_CONFIG.defaultContextBudget}; max ${MAX_BUDGET_TOKENS})`,
216
+ description: `Max tokens (default: config.defaultContextBudget, ${DEFAULT_CONFIG.defaultContextBudget}; ` +
217
+ `max ${MAX_BUDGET_TOKENS})`,
185
218
  },
186
219
  scope: {
187
220
  type: 'string',
188
- description: 'Restrict memories, snapshot, handoff and trail to this scope exactly. When omitted, default-deny applies to ANY <source>:private:* ' +
221
+ description: 'Restrict memories, snapshot, handoff and trail to this scope exactly. When omitted, default-deny ' +
222
+ 'applies ' +
223
+ 'to ANY <source>:private:* ' +
189
224
  '(slack, github, ...) and unknown-legacy rows.',
190
225
  },
191
226
  },
@@ -226,8 +261,14 @@ export const TOOLS = [
226
261
  conflict_id: { type: 'number', description: 'The conflict ID to resolve' },
227
262
  keep: { type: 'string', description: 'ID of the memory to keep' },
228
263
  forget: { type: 'boolean', description: 'Delete the loser instead of weakening (default: false)' },
229
- rejectLoser: { type: 'boolean', description: 'Tombstone the loser\'s value too, so it refuses re-ingestion (implies removal; default: false)' },
230
- reason: { type: 'string', description: 'Reason recorded on the tombstone when rejectLoser is set (default: a conflict-context string)' },
264
+ rejectLoser: {
265
+ type: 'boolean',
266
+ description: "Tombstone the loser's value too, so it refuses re-ingestion (implies removal; default: false)",
267
+ },
268
+ reason: {
269
+ type: 'string',
270
+ description: 'Reason recorded on the tombstone when rejectLoser is set (default: a conflict-context string)',
271
+ },
231
272
  },
232
273
  required: ['conflict_id', 'keep'],
233
274
  },
@@ -254,15 +295,18 @@ export const TOOLS = [
254
295
  },
255
296
  {
256
297
  name: 'hippo_predict_baserate',
257
- description: 'J3 reference-class / planning-fallacy detector. Get base-rate stats for closed predictions in a class. Call this when you make a forward-looking ' +
258
- 'claim (effort estimate, rollout risk, deadline) to anchor on the past track record rather than the inside view. Returns count + mean estimate + ' +
298
+ description: 'J3 reference-class / planning-fallacy detector. Get base-rate stats for closed predictions in a class. Call ' +
299
+ 'this when you make a forward-looking ' +
300
+ 'claim (effort estimate, rollout risk, deadline) to anchor on the past track record rather than the inside ' +
301
+ 'view. Returns count + mean estimate + ' +
259
302
  'mean actual + mean ratio + median ratio + MAE + a human-readable summary. Tenant-scoped.',
260
303
  inputSchema: {
261
304
  type: 'object',
262
305
  properties: {
263
306
  class_tag: {
264
307
  type: 'string',
265
- description: 'Cohort label, e.g. "migration-effort", "rollout-risk", "deadline-week". Must match the class_tag used when the predictions were ' +
308
+ description: 'Cohort label, e.g. "migration-effort", "rollout-risk", "deadline-week". Must match the class_tag used ' +
309
+ 'when the predictions were ' +
266
310
  'created via hippo_predict (or `hippo predict ...`).',
267
311
  },
268
312
  },
@@ -1,6 +1,8 @@
1
- /** customer_note object: many discrete notes per free-form `customer` column (no entities FK yet), each with its own supersede chain.
2
- * The `customer_notes` table is the source of truth; the memory mirror (memory_id NULLABLE, ON DELETE SET NULL) is for recall. */
1
+ /** customer_note object: many discrete notes per free-form `customer` column (no entities FK yet), each with its
2
+ * own supersede chain. The `customer_notes` table is the source of truth; the memory mirror (memory_id NULLABLE,
3
+ * ON DELETE SET NULL) is for recall. */
3
4
  import type { KeysetPosition } from '../util/keyset.js';
5
+ import type { Objects } from '../store/port.js';
4
6
  import type { SavableDescriptor } from './descriptor.js';
5
7
  import type { CustomerNote, NoteStatus } from '../core/object-types.js';
6
8
  export type { CustomerNote, NoteStatus } from '../core/object-types.js';
@@ -29,16 +31,16 @@ export interface ListCustomerNotesOpts {
29
31
  after?: KeysetPosition;
30
32
  }
31
33
  export declare const CUSTOMER_NOTE: SavableDescriptor<'customer_note', SaveCustomerNoteOpts>;
32
- /** Create a customer_note, or a new version superseding an existing one, in the `objects` store group's one transaction.
33
- * The mirror carries a `customer:<lc>` tag so scope-aware recall treats the note as entity-local. */
34
- export declare function saveCustomerNote(hippoRoot: string, tenantId: string, opts: SaveCustomerNoteOpts, actor?: string): CustomerNote;
34
+ /** Create a customer_note, or a new version superseding an existing one, in the `objects` store group's one
35
+ * transaction. The mirror carries a `customer:<lc>` tag so scope-aware recall treats the note as entity-local. */
36
+ export declare function saveCustomerNote(objects: Objects, hippoRoot: string, tenantId: string, opts: SaveCustomerNoteOpts, actor?: string): Promise<CustomerNote>;
35
37
  /** Close (retire) an active note; CAS on status='active', 0 changes means not-found or not-active. */
36
- export declare function closeCustomerNote(hippoRoot: string, tenantId: string, id: number, actor?: string): CustomerNote;
37
- export declare function loadCustomerNoteById(hippoRoot: string, tenantId: string, id: number): CustomerNote | null;
38
- export declare function loadCustomerNotes(hippoRoot: string, tenantId: string, opts?: ListCustomerNotesOpts): CustomerNote[];
38
+ export declare function closeCustomerNote(objects: Objects, tenantId: string, id: number, actor?: string): Promise<CustomerNote>;
39
+ export declare function loadCustomerNoteById(objects: Objects, tenantId: string, id: number): Promise<CustomerNote | null>;
40
+ export declare function loadCustomerNotes(objects: Objects, tenantId: string, opts?: ListCustomerNotesOpts): Promise<CustomerNote[]>;
39
41
  /** All ACTIVE notes for a customer, newest first. Returns a LIST, unlike project_brief's single-or-null
40
42
  * loadActiveBriefForRepo: a customer accrues many notes. */
41
- export declare function loadActiveNotesForCustomer(hippoRoot: string, tenantId: string, customer: string, opts?: {
43
+ export declare function loadActiveNotesForCustomer(objects: Objects, tenantId: string, customer: string, opts?: {
42
44
  limit?: number;
43
- }): CustomerNote[];
45
+ }): Promise<CustomerNote[]>;
44
46
  //# sourceMappingURL=customer-notes.d.ts.map
@@ -1,7 +1,8 @@
1
- /** customer_note object: many discrete notes per free-form `customer` column (no entities FK yet), each with its own supersede chain.
2
- * The `customer_notes` table is the source of truth; the memory mirror (memory_id NULLABLE, ON DELETE SET NULL) is for recall. */
1
+ /** customer_note object: many discrete notes per free-form `customer` column (no entities FK yet), each with its
2
+ * own supersede chain. The `customer_notes` table is the source of truth; the memory mirror (memory_id NULLABLE,
3
+ * ON DELETE SET NULL) is for recall. */
3
4
  import { checkText, requireLine } from './fields.js';
4
- import { closeObjectAt, listObjectsAt, objectByIdAt, saveObjectAt } from './lifecycle.js';
5
+ import { closeObject, listObjects, objectById, saveObject } from './lifecycle.js';
5
6
  export const VALID_NOTE_STATES = new Set([
6
7
  'active',
7
8
  'superseded',
@@ -48,24 +49,29 @@ export const CUSTOMER_NOTE = {
48
49
  };
49
50
  },
50
51
  };
51
- /** Create a customer_note, or a new version superseding an existing one, in the `objects` store group's one transaction.
52
- * The mirror carries a `customer:<lc>` tag so scope-aware recall treats the note as entity-local. */
53
- export function saveCustomerNote(hippoRoot, tenantId, opts, actor = 'cli') {
54
- return saveObjectAt(CUSTOMER_NOTE, { hippoRoot, tenantId, actor }, opts);
52
+ /** Create a customer_note, or a new version superseding an existing one, in the `objects` store group's one
53
+ * transaction. The mirror carries a `customer:<lc>` tag so scope-aware recall treats the note as entity-local. */
54
+ export function saveCustomerNote(objects, hippoRoot, tenantId, opts, actor = 'cli') {
55
+ return saveObject(objects, CUSTOMER_NOTE, { hippoRoot, tenantId, actor }, opts);
55
56
  }
56
57
  /** Close (retire) an active note; CAS on status='active', 0 changes means not-found or not-active. */
57
- export function closeCustomerNote(hippoRoot, tenantId, id, actor = 'cli') {
58
- return closeObjectAt(hippoRoot, CUSTOMER_NOTE, tenantId, id, actor);
58
+ export function closeCustomerNote(objects, tenantId, id, actor = 'cli') {
59
+ return closeObject(objects, CUSTOMER_NOTE, tenantId, id, actor);
59
60
  }
60
- export function loadCustomerNoteById(hippoRoot, tenantId, id) {
61
- return objectByIdAt(hippoRoot, CUSTOMER_NOTE, tenantId, id);
61
+ export function loadCustomerNoteById(objects, tenantId, id) {
62
+ return objectById(objects, CUSTOMER_NOTE, tenantId, id);
62
63
  }
63
- export function loadCustomerNotes(hippoRoot, tenantId, opts = {}) {
64
- return listObjectsAt(hippoRoot, CUSTOMER_NOTE, tenantId, { status: opts.status, filter: opts.customer, limit: opts.limit, after: opts.after });
64
+ export function loadCustomerNotes(objects, tenantId, opts = {}) {
65
+ return listObjects(objects, CUSTOMER_NOTE, tenantId, {
66
+ status: opts.status,
67
+ filter: opts.customer,
68
+ limit: opts.limit,
69
+ after: opts.after,
70
+ });
65
71
  }
66
72
  /** All ACTIVE notes for a customer, newest first. Returns a LIST, unlike project_brief's single-or-null
67
73
  * loadActiveBriefForRepo: a customer accrues many notes. */
68
- export function loadActiveNotesForCustomer(hippoRoot, tenantId, customer, opts = {}) {
69
- return loadCustomerNotes(hippoRoot, tenantId, { customer, status: 'active', limit: opts.limit });
74
+ export function loadActiveNotesForCustomer(objects, tenantId, customer, opts = {}) {
75
+ return loadCustomerNotes(objects, tenantId, { customer, status: 'active', limit: opts.limit });
70
76
  }
71
77
  //# sourceMappingURL=customer-notes.js.map
@@ -1,7 +1,12 @@
1
- /** Decision object: the `decisions` table is the source of truth, so an in-force decision stays `active` despite memory decay.
2
- * The memory mirror (memory_id NULLABLE, ON DELETE SET NULL) is for recall only; saveDecision commits both in one `objects` transaction. */
1
+ /**
2
+ * Decision object: the `decisions` table is the source of truth, so an
3
+ * in-force decision stays `active` despite memory decay. The memory
4
+ * mirror (memory_id NULLABLE, ON DELETE SET NULL) is for recall only;
5
+ * saveDecision commits both in one `objects` transaction.
6
+ */
3
7
  import type { MemoryEntry } from '../core/memory.js';
4
8
  import type { KeysetPosition } from '../util/keyset.js';
9
+ import type { Objects } from '../store/port.js';
5
10
  import type { SavableDescriptor } from './descriptor.js';
6
11
  import type { Decision, DecisionStatus } from '../core/object-types.js';
7
12
  export type { Decision, DecisionStatus } from '../core/object-types.js';
@@ -25,17 +30,20 @@ export interface ListDecisionsOpts {
25
30
  export declare const DECISION: SavableDescriptor<'decision', SaveDecisionOpts>;
26
31
  /** Create a decision; the memory mirror and the row commit in one transaction.
27
32
  * Superseding CASes the old row (WHERE status='active'), so a duplicate supersede aborts the whole write. */
28
- export declare function saveDecision(hippoRoot: string, tenantId: string, opts: SaveDecisionOpts, actor?: string): Decision;
29
- /** Weaken the memory a new decision replaces, once the save has committed: half-life halved to a day at least, marked stale, tagged `superseded`. */
33
+ export declare function saveDecision(objects: Objects, hippoRoot: string, tenantId: string, opts: SaveDecisionOpts, actor?: string): Promise<Decision>;
34
+ /**
35
+ * Weaken the memory a new decision replaces, once the save has committed: half-life halved to a day at least, marked
36
+ * stale, tagged `superseded`.
37
+ */
30
38
  export declare function weakenSupersededMemory(hippoRoot: string, entry: MemoryEntry, actor?: string): void;
31
39
  /** Close (retire) an active decision with no successor; the memory mirror is not mutated. */
32
- export declare function closeDecision(hippoRoot: string, tenantId: string, id: number, actor?: string): Decision;
33
- export declare function loadDecisionById(hippoRoot: string, tenantId: string, id: number): Decision | null;
34
- export declare function loadDecisions(hippoRoot: string, tenantId: string, opts?: ListDecisionsOpts): Decision[];
35
- export declare function loadActiveDecisions(hippoRoot: string, tenantId: string, opts?: {
40
+ export declare function closeDecision(objects: Objects, tenantId: string, id: number, actor?: string): Promise<Decision>;
41
+ export declare function loadDecisionById(objects: Objects, tenantId: string, id: number): Promise<Decision | null>;
42
+ export declare function loadDecisions(objects: Objects, tenantId: string, opts?: ListDecisionsOpts): Promise<Decision[]>;
43
+ export declare function loadActiveDecisions(objects: Objects, tenantId: string, opts?: {
36
44
  limit?: number;
37
- }): Decision[];
45
+ }): Promise<Decision[]>;
38
46
  /** Resolve a `--supersedes <memory-id>` to the table id of the ACTIVE decision backed by that memory, or null.
39
47
  * Exported so the CLI's backward-compat path is testable at the store layer. */
40
- export declare function resolveActiveDecisionIdByMemory(hippoRoot: string, tenantId: string, memoryId: string): number | null;
48
+ export declare function resolveActiveDecisionIdByMemory(objects: Objects, tenantId: string, memoryId: string): Promise<number | null>;
41
49
  //# sourceMappingURL=decisions.d.ts.map