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
@@ -4,7 +4,7 @@ import * as fs from 'fs';
4
4
  import { isInitialized } from '../core/project-identity.js';
5
5
  import { RejectedValueError } from '../core/api-errors.js';
6
6
  import { embedCoverage, embedMissingMemories } from '../api/embeddings.js';
7
- import { captureError, runWatched } from '../learn/autolearn.js';
7
+ import { captureError, runWatched, runWatchedLine } from '../learn/autolearn.js';
8
8
  import { currentMachine, importAtSessionEnd, importForStore } from '../agent-memories/sync.js';
9
9
  import { detailLines } from '../agent-memories/report.js';
10
10
  import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
@@ -14,16 +14,16 @@ import { importChatGPT, importClaude, importCursor, importGenericFile, } from '.
14
14
  import { importMarkdown } from '../importers/markdown.js';
15
15
  import { importVault } from '../importers/vault.js';
16
16
  import * as api from '../api/index.js';
17
- import { getMemory, listMemories } from '../api/memories.js';
17
+ import { getMemory, listMemories } from '../api/memories/memories.js';
18
18
  import * as client from './client.js';
19
19
  import { cliApiContext } from './api-context.js';
20
20
  import { printError } from './output.js';
21
21
  import { errorMessage, log } from '../util/log.js';
22
22
  import { requireInit, runViaServerIfAvailable, learnFromRepo } from './shared.js';
23
23
  import { fmt } from './print.js';
24
- import { boolFlag, flagIsTrue, isStringFlag, nonEmptyStringFlag, numberFlag } from './flag-values.js';
24
+ import { boolFlag, flagIsTrue, isStringFlag, nonEmptyStringFlag, numberFlag, stringFlagOrExit, stringListFlag, } from './flag-values.js';
25
25
  import { CONTENT_PREVIEW_CHARS, DATE_PREFIX_CHARS } from '../util/token-text.js';
26
- import { CliExit } from './exit.js';
26
+ import { CliExit, fail } from './exit.js';
27
27
  const STDERR_PREVIEW_CHARS = 80;
28
28
  const MAX_ENTRIES_SHOWN = 10;
29
29
  // Watch command
@@ -33,25 +33,25 @@ function watchedCommand(args, flags) {
33
33
  if (flags['shell'] !== undefined) {
34
34
  const line = nonEmptyStringFlag(flags, 'shell');
35
35
  if (line === undefined) {
36
- printError(WATCH_USAGE);
37
- throw new CliExit(1);
36
+ fail(WATCH_USAGE);
38
37
  }
38
+ // The shell is the feature here: the user's own command line, pipes and && included, opted into by name; argv runs
39
+ // with no shell.
39
40
  return { argv: [line], shell: true };
40
41
  }
41
42
  if (args.length === 0) {
42
- printError(WATCH_USAGE);
43
- throw new CliExit(1);
43
+ fail(WATCH_USAGE);
44
44
  }
45
45
  // A quoted 1.x command line would now run as one program name, so it is refused rather than guessed at.
46
46
  if (args.length === 1 && /\s/.test(args[0])) {
47
- printError(`hippo watch: "${args[0]}" is one argument with spaces. Use \`hippo watch -- cmd args\` or \`hippo watch --shell "<command line>"\`.`);
48
- throw new CliExit(1);
47
+ fail(`hippo watch: "${args[0]}" is one argument with spaces. Use \`hippo watch -- cmd args\` ` +
48
+ `or \`hippo watch --shell "<command line>"\`.`);
49
49
  }
50
50
  return { argv: [...args], shell: false };
51
51
  }
52
52
  async function cmdWatch(argv, shell, hippoRoot, tenantId) {
53
53
  const command = argv.join(' ');
54
- const { exitCode, stderr } = await runWatched(argv, undefined, { shell });
54
+ const { exitCode, stderr } = await (shell ? runWatchedLine(argv[0]) : runWatched(argv));
55
55
  if (exitCode === 0) {
56
56
  // Success: no noise
57
57
  return;
@@ -91,8 +91,7 @@ async function cmdWatch(argv, shell, hippoRoot, tenantId) {
91
91
  export async function handleLearn({ hippoRoot, tenantId, flags }) {
92
92
  requireInit(hippoRoot);
93
93
  if (!flags['git']) {
94
- printError('Usage: hippo learn --git [--days <n>] [--repos <paths>]');
95
- throw new CliExit(1);
94
+ fail('Usage: hippo learn --git [--days <n>] [--repos <paths>]');
96
95
  }
97
96
  const days = numberFlag(flags, 'days') ?? 7;
98
97
  console.log(`Scanning git log for the last ${days} days...`);
@@ -107,7 +106,8 @@ export async function handleLearn({ hippoRoot, tenantId, flags }) {
107
106
  totalAdded += added;
108
107
  totalSkipped += skipped;
109
108
  }
110
- console.log(`Git learn complete: ${totalAdded} new lessons added, ${totalSkipped} duplicates skipped across ${repos.length} repos.`);
109
+ console.log(`Git learn complete: ${totalAdded} new lessons added, ` +
110
+ `${totalSkipped} duplicates skipped across ${repos.length} repos.`);
111
111
  }
112
112
  else {
113
113
  const { added, skipped } = await learnFromRepo(hippoRoot, tenantId, process.cwd(), days);
@@ -115,7 +115,8 @@ export async function handleLearn({ hippoRoot, tenantId, flags }) {
115
115
  }
116
116
  }
117
117
  // Import command
118
- /** The rows are saved either way; a failed backfill only delays vectors, so it warns with how many wait and the command that finishes them. */
118
+ /** The rows are saved either way; a failed backfill only delays vectors, so it warns with how many wait and the command
119
+ * that finishes them. */
119
120
  function warnBackfillFailed(ctx, embedCommand, err) {
120
121
  let waiting;
121
122
  try {
@@ -126,25 +127,24 @@ function warnBackfillFailed(ctx, embedCommand, err) {
126
127
  catch (countErr) {
127
128
  waiting = `an unknown number of (count failed: ${errorMessage(countErr)})`;
128
129
  }
129
- log.warn(`import: embedding backfill failed (${errorMessage(err)}); ${waiting} rows have no vector; run '${embedCommand}' to backfill`);
130
+ log.warn(`import: embedding backfill failed (${errorMessage(err)}); ${waiting} rows have no vector; ` +
131
+ `run '${embedCommand}' to backfill`);
130
132
  }
131
- /** Batch-embed freshly imported rows. The floating promise is deliberate: libuv keeps the process alive until it settles, and awaiting
132
- * would block the CLI on model load; `hippo embed` is the backstop if interrupted. */
133
+ /** Batch-embed freshly imported rows. The floating promise is deliberate: libuv keeps the process alive until it
134
+ * settles, and awaiting would block the CLI on model load; `hippo embed` is the backstop if interrupted. */
133
135
  function backfillVectors(ctx, embedCommand) {
134
136
  void embedMissingMemories(ctx).catch((err) => warnBackfillFailed(ctx, embedCommand, err));
135
137
  }
136
138
  function warnRedacted(count) {
137
- if (count)
138
- printError(`Warning: secret-shaped text was redacted from ${count} imported ${count === 1 ? 'entry' : 'entries'} before storing`);
139
+ if (count) {
140
+ const noun = count === 1 ? 'entry' : 'entries';
141
+ printError(`Warning: secret-shaped text was redacted from ${count} imported ${noun} before storing`);
142
+ }
139
143
  }
140
144
  export async function handleImport({ hippoRoot, tenantId, args, flags }) {
141
145
  const useGlobal = boolFlag(flags, 'global');
142
146
  const dryRun = boolFlag(flags, 'dry-run');
143
- const extraTags = Array.isArray(flags['tag'])
144
- ? flags['tag']
145
- : flags['tag']
146
- ? [String(flags['tag'])]
147
- : [];
147
+ const extraTags = stringListFlag(flags, 'tag') ?? [];
148
148
  const targetRoot = useGlobal ? getGlobalRoot() : hippoRoot;
149
149
  if (flags['agents'])
150
150
  return importAgentMemories(hippoRoot, useGlobal, dryRun);
@@ -160,24 +160,31 @@ export async function handleImport({ hippoRoot, tenantId, args, flags }) {
160
160
  extraTags,
161
161
  hippoRoot,
162
162
  };
163
- // Vault import is a FOLDER importer that dispatches apart from the single-file slot below; it writes through tenant-scoped api calls,
164
- // so the tenant is resolved and passed through. --global is unsupported (the connector raw-archive path is tenant-local).
165
- if (flags['vault'])
166
- return await importVaultFolder(hippoRoot, tenantId, flags, importOptions, useGlobal, dryRun);
163
+ // Vault import is a FOLDER importer that dispatches apart from the single-file slot below; it writes through
164
+ // tenant-scoped api calls, so the tenant is resolved and passed through. --global is unsupported (the connector
165
+ // raw-archive path is tenant-local).
166
+ const vault = stringFlagOrExit(flags, 'vault');
167
+ if (vault)
168
+ return await importVaultFolder(hippoRoot, tenantId, vault, flags, importOptions, useGlobal, dryRun);
167
169
  importFromFile(targetRoot, args, flags, { importOptions, useGlobal, dryRun, tenantId });
168
170
  }
169
171
  // Determine which importer to use based on flag
170
172
  function pickImporter(args, flags) {
171
- if (flags['chatgpt'])
172
- return { filePath: String(flags['chatgpt']), importer: importChatGPT, importerName: 'ChatGPT' };
173
- if (flags['claude'])
174
- return { filePath: String(flags['claude']), importer: importClaude, importerName: 'Claude' };
175
- if (flags['cursor'])
176
- return { filePath: String(flags['cursor']), importer: importCursor, importerName: 'Cursor' };
177
- if (flags['file'])
178
- return { filePath: String(flags['file']), importer: importGenericFile, importerName: 'File' };
179
- if (flags['markdown'])
180
- return { filePath: String(flags['markdown']), importer: importMarkdown, importerName: 'Markdown' };
173
+ if (flags['chatgpt']) {
174
+ return { filePath: stringFlagOrExit(flags, 'chatgpt'), importer: importChatGPT, importerName: 'ChatGPT' };
175
+ }
176
+ if (flags['claude']) {
177
+ return { filePath: stringFlagOrExit(flags, 'claude'), importer: importClaude, importerName: 'Claude' };
178
+ }
179
+ if (flags['cursor']) {
180
+ return { filePath: stringFlagOrExit(flags, 'cursor'), importer: importCursor, importerName: 'Cursor' };
181
+ }
182
+ if (flags['file']) {
183
+ return { filePath: stringFlagOrExit(flags, 'file'), importer: importGenericFile, importerName: 'File' };
184
+ }
185
+ if (flags['markdown']) {
186
+ return { filePath: stringFlagOrExit(flags, 'markdown'), importer: importMarkdown, importerName: 'Markdown' };
187
+ }
181
188
  // Positional: try to auto-detect from extension
182
189
  if (args[0])
183
190
  return { filePath: args[0], importer: importGenericFile, importerName: 'File' };
@@ -187,12 +194,11 @@ function importFromFile(targetRoot, args, flags, options) {
187
194
  const { importOptions, useGlobal, dryRun, tenantId } = options;
188
195
  const { filePath, importer, importerName } = pickImporter(args, flags);
189
196
  if (!filePath || !importer) {
190
- printError('Usage: hippo import <--chatgpt|--claude|--cursor|--file|--markdown|--vault> <path>, or hippo import --agents [--dry-run]');
191
- throw new CliExit(1);
197
+ fail('Usage: hippo import <--chatgpt|--claude|--cursor|--file|--markdown|--vault> <path>, ' +
198
+ 'or hippo import --agents [--dry-run]');
192
199
  }
193
200
  if (!fs.existsSync(filePath)) {
194
- printError(`File not found: ${filePath}`);
195
- throw new CliExit(1);
201
+ fail(`File not found: ${filePath}`);
196
202
  }
197
203
  const result = importer(filePath, importOptions);
198
204
  // The importers' writeEntry sites don't embed, so the new rows are embedded here in one pass.
@@ -238,38 +244,33 @@ function importAgentMemories(hippoRoot, useGlobal, dryRun) {
238
244
  for (const warning of report.warnings)
239
245
  printError(`hippo: agent memories: ${warning}`);
240
246
  }
241
- async function importVaultFolder(hippoRoot, tenantId, flags, importOptions, useGlobal, dryRun) {
242
- const folderPath = String(flags['vault']);
247
+ async function importVaultFolder(hippoRoot, tenantId, folderPath, flags, importOptions, useGlobal, dryRun) {
243
248
  checkVaultArgs(folderPath, flags, useGlobal);
244
249
  const vaultOptions = {
245
250
  ...importOptions,
246
251
  tenantId,
247
- name: flags['name'] ? String(flags['name']) : undefined,
248
- scope: flags['scope'] ? String(flags['scope']) : undefined,
252
+ name: nonEmptyStringFlag(flags, 'name'),
253
+ scope: nonEmptyStringFlag(flags, 'scope'),
249
254
  };
250
255
  const vaultResult = await importVault(folderPath, vaultOptions);
251
256
  printVaultSummary(vaultResult, folderPath, cliApiContext(hippoRoot, tenantId), dryRun);
252
257
  }
253
258
  function checkVaultArgs(folderPath, flags, useGlobal) {
254
259
  if (!fs.existsSync(folderPath) || !fs.statSync(folderPath).isDirectory()) {
255
- printError(`Vault folder not found (or not a directory): ${folderPath}`);
256
- throw new CliExit(1);
260
+ fail(`Vault folder not found (or not a directory): ${folderPath}`);
257
261
  }
258
262
  if (useGlobal) {
259
- printError('hippo import --vault does not support --global (raw rows are tenant-local).');
260
- throw new CliExit(1);
263
+ fail('hippo import --vault does not support --global (raw rows are tenant-local).');
261
264
  }
262
265
  if (!isStringFlag(flags['name']) || !flags['name'].trim()) {
263
266
  // --name keys the destructive source-deletion sync; a folder-basename default lets same-basename vaults clobber
264
267
  // each other, and a valueless `--name` (boolean true) would silently import under vault:true:*.
265
- printError('hippo import --vault requires --name <vault> (a non-empty identity key for source-deletion sync).');
266
- throw new CliExit(1);
268
+ fail('hippo import --vault requires --name <vault> (a non-empty identity key for source-deletion sync).');
267
269
  }
268
270
  if (flags['scope'] !== undefined && (!isStringFlag(flags['scope']) || !flags['scope'].trim())) {
269
- // Same valueless-flag trap: a bare `--scope` must not become scope "true". The example uses the source-prefixed private form,
270
- // since a bare `private` scope is not treated as private by recall and importVault rejects it.
271
- printError('hippo import --vault: --scope requires a value (e.g. --scope vault:private:notes).');
272
- throw new CliExit(1);
271
+ // Same valueless-flag trap: a bare `--scope` must not become scope "true". The example uses the source-prefixed
272
+ // private form, since a bare `private` scope is not treated as private by recall and importVault rejects it.
273
+ fail('hippo import --vault: --scope requires a value (e.g. --scope vault:private:notes).');
273
274
  }
274
275
  }
275
276
  function printVaultSummary(vaultResult, folderPath, ctx, dryRun) {
@@ -291,8 +292,7 @@ function printVaultSummary(vaultResult, folderPath, ctx, dryRun) {
291
292
  function cmdPromote(hippoRoot, tenantId, id) {
292
293
  requireInit(hippoRoot);
293
294
  if (!id) {
294
- printError('Usage: hippo promote <id>');
295
- throw new CliExit(1);
295
+ fail('Usage: hippo promote <id>');
296
296
  }
297
297
  const ctx = cliApiContext(hippoRoot, tenantId);
298
298
  try {
@@ -301,8 +301,7 @@ function cmdPromote(hippoRoot, tenantId, id) {
301
301
  console.log(` Global store: ${getGlobalRoot()}`);
302
302
  }
303
303
  catch (err) {
304
- printError(`Failed to promote: ${errorMessage(err)}`);
305
- throw new CliExit(1);
304
+ fail(`Failed to promote: ${errorMessage(err)}`);
306
305
  }
307
306
  }
308
307
  // Sync command
@@ -316,8 +315,8 @@ export function handleSync({ hippoRoot, flags }) {
316
315
  // v39: other-project rows are skipped by default; secrets always are.
317
316
  const includeCrossProject = flagIsTrue(flags, 'cross-project');
318
317
  const count = syncGlobalToLocal(hippoRoot, globalRoot, { includeCrossProject });
319
- console.log(`Synced ${count} global memories into local project.${includeCrossProject ? '' : ' (other-project rows skipped; use --cross-project to ' +
320
- 'include them)'}`);
318
+ const skipNote = includeCrossProject ? '' : ' (other-project rows skipped; use --cross-project to include them)';
319
+ console.log(`Synced ${count} global memories into local project.${skipNote}`);
321
320
  }
322
321
  export async function handleWatch({ hippoRoot, tenantId, args, flags }) {
323
322
  const { argv, shell } = watchedCommand(args, flags);
@@ -326,8 +325,7 @@ export async function handleWatch({ hippoRoot, tenantId, args, flags }) {
326
325
  export async function handlePromote({ hippoRoot, tenantId, args }) {
327
326
  const id = args[0];
328
327
  if (!id) {
329
- printError('Please provide a memory ID.');
330
- throw new CliExit(1);
328
+ fail('Please provide a memory ID.');
331
329
  }
332
330
  const promoted = await runViaServerIfAvailable(hippoRoot, async (info, apiKey) => {
333
331
  try {
@@ -335,8 +333,7 @@ export async function handlePromote({ hippoRoot, tenantId, args }) {
335
333
  console.log(`Promoted ${id} to global store as ${result.globalId}`);
336
334
  }
337
335
  catch (err) {
338
- printError(`Failed to promote: ${errorMessage(err)}`);
339
- throw new CliExit(1);
336
+ fail(`Failed to promote: ${errorMessage(err)}`);
340
337
  }
341
338
  });
342
339
  if (promoted)
@@ -384,14 +381,12 @@ export async function handleShare({ hippoRoot, tenantId, args, flags }) {
384
381
  console.log('Use --force to share anyway.');
385
382
  }
386
383
  else {
387
- printError(`Memory not found: ${shareId}`);
388
- throw new CliExit(1);
384
+ fail(`Memory not found: ${shareId}`);
389
385
  }
390
386
  }
391
387
  }
392
388
  else {
393
- printError('Usage: hippo share <memory_id> [--force] or hippo share --auto [--dry-run]');
394
- throw new CliExit(1);
389
+ fail('Usage: hippo share <memory_id> [--force] or hippo share --auto [--dry-run]');
395
390
  }
396
391
  }
397
392
  export function handlePeers({ tenantId, flags }) {
@@ -406,15 +401,16 @@ export function handlePeers({ tenantId, flags }) {
406
401
  const scopeLabel = allTenants ? 'global store (all tenants)' : `global store (tenant "${tenantScope}")`;
407
402
  console.log(`${peers.length} project${peers.length === 1 ? '' : 's'} contributing to ${scopeLabel}:\n`);
408
403
  for (const p of peers) {
409
- console.log(` ${p.project.padEnd(25)} ${String(p.count).padStart(4)} memories (latest: ${p.latest.slice(0, DATE_PREFIX_CHARS)})`);
404
+ console.log(` ${p.project.padEnd(25)} ${String(p.count).padStart(4)} memories ` +
405
+ `(latest: ${p.latest.slice(0, DATE_PREFIX_CHARS)})`);
410
406
  }
411
407
  }
412
408
  }
413
- export function handleExport({ hippoRoot, tenantId, args, flags }) {
409
+ export async function handleExport({ hippoRoot, tenantId, args, flags }) {
414
410
  requireInit(hippoRoot);
415
- const format = String(flags['format'] || 'json');
411
+ const format = stringFlagOrExit(flags, 'format') || 'json';
416
412
  const outputPath = args[0] || null;
417
- const entries = listMemories(cliApiContext(hippoRoot, tenantId));
413
+ const entries = await listMemories(cliApiContext(hippoRoot, tenantId));
418
414
  let output;
419
415
  if (format === 'markdown' || format === 'md') {
420
416
  output = entries.map(e => {
@@ -1,11 +1,13 @@
1
1
  // Store, recall and maintenance verbs; every verbs/ file keeps its rows in the order `hippo help` lists them.
2
- import { DEFAULT_LOCAL_BUMP, DEFAULT_RECALL_BUDGET } from '../../core/search-types.js';
3
- import { DEFAULT_EMBEDDING_WEIGHT, DEFAULT_MMR_LAMBDA } from '../../search/hybrid.js';
2
+ import { CONFLICT_PEER_MULTIPLIER, DEFAULT_LOCAL_BUMP, DEFAULT_MMR_LAMBDA, DEFAULT_RECALL_BUDGET, SALIENCE_MIN_MULTIPLIER, UTILITY_LENGTH_PENALTY_CAP, UTILITY_LENGTH_TOKENS, VALUE_MULT_MAX, VALUE_MULT_MIN, VALUE_MULT_SLOPE, } from '../../core/search-types.js';
3
+ import { DEFAULT_EMBEDDING_WEIGHT } from '../../search/hybrid.js';
4
4
  import { DEFAULT_GRAPH_HOPS, DEFAULT_GRAPH_SEED_COUNT } from '../../graph/stream.js';
5
5
  import { verb } from '../verb-row.js';
6
+ const VALUE_CLIP = `clip(1 + ${VALUE_MULT_SLOPE}*tanh(pos - neg), ${VALUE_MULT_MIN}, ${VALUE_MULT_MAX})`;
6
7
  export const MEMORY_VERBS = {
7
8
  init: verb(() => import('../init.js'), 'handleInit', {
8
9
  repairsCodexWrapper: true,
10
+ scoped: true,
9
11
  flags: { switches: ['global', 'no-hooks', 'no-learn', 'no-schedule'], values: ['scan'], numbers: ['days'] },
10
12
  usage: [`
11
13
  init Create .hippo/ structure in current directory
@@ -84,17 +86,17 @@ export const MEMORY_VERBS = {
84
86
  --evc-adaptive When the top results overlap heavily (a conflict
85
87
  cluster), widen the pool and re-rank by recency.
86
88
  Default off.
87
- --filter-conflicts Drop superseded entries and down-weight by 0.3x any
89
+ --filter-conflicts Drop superseded entries and down-weight by ${CONFLICT_PEER_MULTIPLIER}x any
88
90
  entry in an open conflict with another result.
89
91
  Uses recorded supersession and conflicts only, never
90
92
  lexical inference. Default off.
91
93
  --value-aware Boost memories with positive cumulative outcomes and
92
94
  demote those with negative ones during ranking:
93
- multiplier clip(1 + 0.3*tanh(pos - neg), 0.7, 1.3).
95
+ multiplier ${VALUE_CLIP}.
94
96
  Reads outcome_positive and outcome_negative. Default off.
95
97
  --rerank-utility Re-sort results by utility = score * (0.5 + 0.5 * strength)
96
98
  * (1 - cost_factor), where cost_factor =
97
- min(0.3, tokens / 10000). Default off.
99
+ min(${UTILITY_LENGTH_PENALTY_CAP}, tokens / ${UTILITY_LENGTH_TOKENS}). Default off.
98
100
  --reranker <name> Apply a reranker pass after retrieval
99
101
  (cross-encoder|jev|clef-flash|clef|llm) to re-order the
100
102
  top-K candidates. Default unset (no reranker).
@@ -119,7 +121,7 @@ export const MEMORY_VERBS = {
119
121
  on top of base BM25 score, capped at 3.0x.
120
122
  --salience-threshold <n>
121
123
  Down-weight memories retrieved fewer than n times:
122
- score *= max(0.5, retrieval_count / n) for entries
124
+ score *= max(${SALIENCE_MIN_MULTIPLIER}, retrieval_count / n) for entries
123
125
  with count < n; entries at or above n are unchanged.
124
126
  Salience comes from use, not from lexical overlap.
125
127
  Default off.
@@ -1,5 +1,5 @@
1
1
  // First-class object, server, goal and auth verbs, in `hippo help` order.
2
- import { DEFAULT_KEY_TTL_DAYS, MAX_TTL_DAYS } from '../../api/auth.js';
2
+ import { DEFAULT_KEY_TTL_DAYS, MAX_TTL_DAYS } from '../../api/auth/auth.js';
3
3
  import { DEFAULT_SERVER_HOST, DEFAULT_SERVER_PORT } from '../../server/defaults.js';
4
4
  import { verb } from '../verb-row.js';
5
5
  export const OBJECT_VERBS = {
@@ -228,8 +228,13 @@ export const OBJECT_VERBS = {
228
228
  }),
229
229
  auth: verb(() => import('../auth.js'), 'handleAuth', {
230
230
  scoped: true,
231
- flags: { switches: ['all', 'global', 'json', 'no-expiry'], values: ['label', 'role', 'tenant'], numbers: ['ttl-days'] },
232
- usage: [`
231
+ flags: {
232
+ switches: ['all', 'global', 'json', 'no-expiry'],
233
+ values: ['label', 'role', 'tenant'],
234
+ numbers: ['ttl-days'],
235
+ },
236
+ usage: [
237
+ `
233
238
  auth <sub> Manage API keys (A5 stub auth)
234
239
  auth create Mint a new API key (plaintext shown ONCE)
235
240
  --label <s> Optional human label
@@ -251,7 +256,8 @@ export const OBJECT_VERBS = {
251
256
  --global Operate on the global store
252
257
  auth ungrant <key_id> <scope> Remove a scope grant
253
258
  --json Output as JSON
254
- --global Operate on the global store`],
259
+ --global Operate on the global store`
260
+ ],
255
261
  }),
256
262
  };
257
263
  //# sourceMappingURL=objects.js.map
@@ -1,4 +1,5 @@
1
1
  import { type CliFlags, type CommandContext } from './flag-values.js';
2
+ import type { Objects } from '../store/port.js';
2
3
  import { printLifecycleTail, type ObjectNames } from './object-verbs.js';
3
4
  type VersionedRow = Parameters<typeof printLifecycleTail>[0] & {
4
5
  readonly id: number;
@@ -23,29 +24,29 @@ export interface VersionedKind<O extends VersionedRow, S extends string, B> {
23
24
  readonly body: (flags: CliFlags, verb: 'new' | 'supersede') => B | undefined;
24
25
  /** What a new version keeps from the one it supersedes: the repo, customer or name. */
25
26
  readonly keyOf: (o: O) => string;
26
- readonly save: (key: string, body: B, extraTags: string[], from?: Succession) => O;
27
+ readonly save: (key: string, body: B, extraTags: string[], from?: Succession) => Promise<O>;
27
28
  /** The first line `new` prints. */
28
29
  readonly recorded: (o: O) => string;
29
30
  readonly list: (opts: {
30
31
  status?: S;
31
32
  limit: number;
32
- }, flags: CliFlags) => readonly O[];
33
- readonly loadById: (id: number) => O | null;
34
- readonly close: (id: number) => {
33
+ }, flags: CliFlags) => Promise<readonly O[]>;
34
+ readonly loadById: (id: number) => Promise<O | null>;
35
+ readonly close: (id: number) => Promise<{
35
36
  id: number;
36
- };
37
+ }>;
37
38
  readonly printRow: (o: O) => void;
38
39
  /** The `get` lines between the header and the lifecycle tail. */
39
40
  readonly printDetail: (o: O) => void;
40
41
  /** A subcommand only this kind has. */
41
42
  readonly extra?: {
42
43
  readonly sub: string;
43
- readonly run: (args: string[], flags: CliFlags) => void;
44
+ readonly run: (args: string[], flags: CliFlags) => Promise<void>;
44
45
  };
45
46
  }
46
47
  /** A flag that must carry text: its raw value, or undefined when absent or blank. */
47
48
  export declare function requiredText(flags: CliFlags, name: string): string | undefined;
48
49
  /** The `hippo <cmd>` handler for a kind; `kindAt` binds the descriptor to the store the command runs against. */
49
- export declare function versionedVerbs<O extends VersionedRow, S extends string, B>(kindAt: (hippoRoot: string, tenantId: string) => VersionedKind<O, S, B>): (ctx: CommandContext) => void;
50
+ export declare function versionedVerbs<O extends VersionedRow, S extends string, B>(kindAt: (objects: Objects, hippoRoot: string, tenantId: string) => VersionedKind<O, S, B>): (ctx: CommandContext) => Promise<void>;
50
51
  export {};
51
52
  //# sourceMappingURL=versioned-verbs.d.ts.map
@@ -1,11 +1,14 @@
1
- // One handler set for the kinds that evolve by supersession (brief, note, policy, process, skill), each driven by a descriptor.
1
+ // One handler set for the kinds that evolve by supersession (brief, note, policy, process, skill),
2
+ // each driven by a descriptor.
2
3
  import { extractPathTags } from '../search/path-context.js';
3
4
  import { errorMessage } from '../util/log.js';
4
5
  import { printError } from './output.js';
5
6
  import { nonEmptyStringFlag, stringFlag } from './flag-values.js';
6
7
  import { requireInit } from './shared.js';
7
- import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail } from './object-verbs.js';
8
- import { CliExit } from './exit.js';
8
+ import { objectsOf } from '../api/objects/objects.js';
9
+ import { cliApiContext } from './api-context.js';
10
+ import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail, } from './object-verbs.js';
11
+ import { CliExit, fail } from './exit.js';
9
12
  /** A flag that must carry text: its raw value, or undefined when absent or blank. */
10
13
  export function requiredText(flags, name) {
11
14
  const raw = stringFlag(flags, name);
@@ -13,14 +16,19 @@ export function requiredText(flags, name) {
13
16
  }
14
17
  /** The `hippo <cmd>` handler for a kind; `kindAt` binds the descriptor to the store the command runs against. */
15
18
  export function versionedVerbs(kindAt) {
16
- return ({ hippoRoot, tenantId, args, flags }) => {
19
+ return async ({ hippoRoot, tenantId, args, flags }) => {
17
20
  requireInit(hippoRoot);
18
- const kind = kindAt(hippoRoot, tenantId);
21
+ const kind = kindAt(objectsOf(cliApiContext(hippoRoot, tenantId)), hippoRoot, tenantId);
19
22
  const sub = args[0] ?? '';
20
23
  if (sub === kind.extra?.sub)
21
24
  return kind.extra.run(args, flags);
22
25
  if (sub === 'list') {
23
- return listObjects(flags, { plural: kind.plural, states: kind.states, load: (opts) => kind.list(opts, flags), printRow: kind.printRow });
26
+ return listObjects(flags, {
27
+ plural: kind.plural,
28
+ states: kind.states,
29
+ load: (opts) => kind.list(opts, flags),
30
+ printRow: kind.printRow,
31
+ });
24
32
  }
25
33
  if (sub === 'get')
26
34
  return getVersion(kind, args);
@@ -29,46 +37,48 @@ export function versionedVerbs(kindAt) {
29
37
  if (sub === 'close')
30
38
  return closeObject(args, kind.names, kind.close);
31
39
  // Both `<cmd> new "<key>"` and the bare `<cmd> "<key>"` create.
32
- createVersion(kind, sub === 'new' ? (args[1] ?? '') : sub, flags);
40
+ await createVersion(kind, sub === 'new' ? (args[1] ?? '') : sub, flags);
33
41
  };
34
42
  }
35
- function getVersion(kind, args) {
43
+ async function getVersion(kind, args) {
36
44
  const id = idArgOrExit(args, `Usage: hippo ${kind.names.cmd} get <id>`, kind.names.idLabel);
37
- const o = foundOrExit(kind.loadById(id), kind.names.noun, id);
45
+ const o = foundOrExit(await kind.loadById(id), kind.names.noun, id);
38
46
  console.log(`${kind.names.noun} #${o.id}`);
39
47
  kind.printDetail(o);
40
48
  printLifecycleTail(o);
41
49
  }
42
- function createVersion(kind, key, flags) {
50
+ async function createVersion(kind, key, flags) {
43
51
  const body = key ? kind.body(flags, 'new') : undefined;
44
52
  if (body === undefined) {
45
53
  for (const line of kind.usage)
46
54
  printError(line);
47
55
  throw new CliExit(1);
48
56
  }
49
- const created = saveVersion(kind, key, body);
57
+ const created = await saveVersion(kind, key, body);
50
58
  printSaved(kind.recorded(created), created);
51
59
  }
52
- function supersedeVersion(kind, args, flags) {
60
+ async function supersedeVersion(kind, args, flags) {
53
61
  const id = idArgOrExit(args, kind.supersedeUsage, kind.names.idLabel);
54
62
  const body = kind.body(flags, 'supersede');
55
63
  if (body === undefined) {
56
- printError(`hippo ${kind.names.cmd} supersede requires ${kind.bodyRequired} for the new version.`);
57
- throw new CliExit(1);
64
+ fail(`hippo ${kind.names.cmd} supersede requires ${kind.bodyRequired} for the new version.`);
58
65
  }
59
- // The lookup only gives a missing id its not-found line; the save's own preflight is the authoritative active-state check.
60
- const existing = foundOrExit(kind.loadById(id), kind.names.noun, id);
61
- const created = saveVersion(kind, kind.keyOf(existing), body, { id, changeSummary: nonEmptyStringFlag(flags, 'change') });
66
+ // The lookup only gives a missing id its not-found line; the save's own preflight is the
67
+ // authoritative active-state check.
68
+ const existing = foundOrExit(await kind.loadById(id), kind.names.noun, id);
69
+ const created = await saveVersion(kind, kind.keyOf(existing), body, {
70
+ id,
71
+ changeSummary: nonEmptyStringFlag(flags, 'change'),
72
+ });
62
73
  printSaved(`${kind.names.noun} #${created.id} recorded (v${created.version}), superseding #${id}.`, created);
63
74
  }
64
75
  /** Every kind's save goes through here, so a refused write always prints the store's message and exits 1. */
65
- function saveVersion(kind, key, body, from) {
76
+ async function saveVersion(kind, key, body, from) {
66
77
  try {
67
- return kind.save(key, body, extractPathTags(process.cwd()), from);
78
+ return await kind.save(key, body, extractPathTags(process.cwd()), from);
68
79
  }
69
80
  catch (e) {
70
- printError(errorMessage(e));
71
- throw new CliExit(1);
81
+ fail(errorMessage(e));
72
82
  }
73
83
  }
74
84
  function printSaved(line, o) {