hippo-memory 1.72.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (995) hide show
  1. package/README.md +6 -4
  2. package/dist/agent-memories/apply.d.ts +7 -5
  3. package/dist/agent-memories/apply.js +66 -39
  4. package/dist/agent-memories/claude-code.d.ts +8 -2
  5. package/dist/agent-memories/claude-code.js +26 -7
  6. package/dist/agent-memories/copilot.js +2 -1
  7. package/dist/agent-memories/files.js +2 -1
  8. package/dist/agent-memories/legacy.d.ts +6 -3
  9. package/dist/agent-memories/legacy.js +35 -14
  10. package/dist/agent-memories/markdown.d.ts +3 -1
  11. package/dist/agent-memories/markdown.js +3 -1
  12. package/dist/agent-memories/openclaw.js +5 -2
  13. package/dist/agent-memories/plan.js +11 -1
  14. package/dist/agent-memories/project-folds.js +2 -1
  15. package/dist/agent-memories/report.d.ts +4 -1
  16. package/dist/agent-memories/report.js +43 -9
  17. package/dist/agent-memories/source.d.ts +8 -2
  18. package/dist/agent-memories/source.js +11 -3
  19. package/dist/agent-memories/sync.d.ts +7 -2
  20. package/dist/agent-memories/sync.js +141 -101
  21. package/dist/api/assemble.d.ts +6 -4
  22. package/dist/api/assemble.js +11 -5
  23. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  24. package/dist/api/auth/audit.js +58 -0
  25. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
  26. package/dist/api/{auth.js → auth/auth.js} +66 -54
  27. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  28. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
  29. package/dist/api/auth/session-owners.d.ts +10 -0
  30. package/dist/api/auth/session-owners.js +35 -0
  31. package/dist/api/availability.d.ts +3 -1
  32. package/dist/api/availability.js +3 -1
  33. package/dist/api/busy.d.ts +2 -0
  34. package/dist/api/busy.js +2 -0
  35. package/dist/api/cli-surface.d.ts +6 -0
  36. package/dist/api/cli-surface.js +6 -0
  37. package/dist/api/config-of.d.ts +5 -0
  38. package/dist/api/config-of.js +6 -0
  39. package/dist/api/context-auto.d.ts +4 -1
  40. package/dist/api/context-auto.js +14 -4
  41. package/dist/api/context-render.js +14 -7
  42. package/dist/api/context-select.d.ts +4 -1
  43. package/dist/api/context-select.js +31 -34
  44. package/dist/api/context-types.d.ts +38 -12
  45. package/dist/api/context.d.ts +8 -5
  46. package/dist/api/context.js +120 -63
  47. package/dist/api/continuity.d.ts +24 -21
  48. package/dist/api/continuity.js +18 -20
  49. package/dist/api/correction-latency.d.ts +3 -1
  50. package/dist/api/correction-latency.js +3 -1
  51. package/dist/api/error-reply.d.ts +4 -1
  52. package/dist/api/error-reply.js +12 -3
  53. package/dist/api/index.d.ts +39 -23
  54. package/dist/api/index.js +21 -23
  55. package/dist/api/instruction-detect.d.ts +4 -1
  56. package/dist/api/instruction-detect.js +75 -20
  57. package/dist/api/ledger-db.d.ts +15 -11
  58. package/dist/api/ledger-db.js +21 -23
  59. package/dist/api/memories/conflicts.d.ts +33 -0
  60. package/dist/api/memories/conflicts.js +67 -0
  61. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  62. package/dist/api/{forget.js → memories/forget.js} +23 -17
  63. package/dist/api/memories/memories.d.ts +27 -0
  64. package/dist/api/memories/memories.js +52 -0
  65. package/dist/api/memories/outcome.d.ts +22 -0
  66. package/dist/api/memories/outcome.js +28 -0
  67. package/dist/api/memories/promote.d.ts +40 -0
  68. package/dist/api/memories/promote.js +76 -0
  69. package/dist/api/memories/refine.d.ts +10 -0
  70. package/dist/api/memories/refine.js +12 -0
  71. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
  72. package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
  73. package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
  74. package/dist/api/{remember.js → memories/remember.js} +50 -32
  75. package/dist/api/objects/cards.d.ts +39 -0
  76. package/dist/api/{cards.js → objects/cards.js} +12 -14
  77. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  78. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
  79. package/dist/api/objects/goals.d.ts +18 -0
  80. package/dist/api/{goals.js → objects/goals.js} +12 -12
  81. package/dist/api/objects/graph.d.ts +11 -0
  82. package/dist/api/objects/graph.js +16 -0
  83. package/dist/api/objects/objects.d.ts +9 -0
  84. package/dist/api/{objects.js → objects/objects.js} +2 -3
  85. package/dist/api/objects/predictions.d.ts +11 -0
  86. package/dist/api/{predictions.js → objects/predictions.js} +7 -5
  87. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  88. package/dist/api/{projects.js → objects/projects.js} +8 -4
  89. package/dist/api/pilot-arm.d.ts +8 -4
  90. package/dist/api/pilot-arm.js +5 -4
  91. package/dist/api/prompt-hook.d.ts +35 -20
  92. package/dist/api/prompt-hook.js +66 -44
  93. package/dist/api/provenance-coverage.d.ts +3 -1
  94. package/dist/api/provenance-coverage.js +3 -1
  95. package/dist/api/recall/finish.d.ts +185 -0
  96. package/dist/api/recall/finish.js +301 -0
  97. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  98. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
  99. package/dist/api/recall/recall.d.ts +6 -0
  100. package/dist/api/{recall.js → recall/recall.js} +116 -72
  101. package/dist/api/recall/render.d.ts +39 -0
  102. package/dist/api/recall/render.js +60 -0
  103. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  104. package/dist/api/recall/request.js +261 -0
  105. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  106. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  107. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
  108. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  109. package/dist/api/session-end.d.ts +36 -8
  110. package/dist/api/session-end.js +71 -25
  111. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  112. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  113. package/dist/api/sleep/dormant.d.ts +25 -0
  114. package/dist/api/sleep/dormant.js +64 -0
  115. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  116. package/dist/api/sleep/learn.js +138 -0
  117. package/dist/api/sleep/sleep-run.d.ts +38 -0
  118. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
  119. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  120. package/dist/api/sleep/sleep.js +9 -0
  121. package/dist/api/status.d.ts +3 -1
  122. package/dist/api/status.js +3 -1
  123. package/dist/api/store-init.d.ts +4 -1
  124. package/dist/api/store-init.js +4 -1
  125. package/dist/api/tokens.d.ts +10 -9
  126. package/dist/api/tokens.js +9 -10
  127. package/dist/api/types.d.ts +27 -12
  128. package/dist/api/types.js +13 -4
  129. package/dist/capture/caller-session.d.ts +8 -2
  130. package/dist/capture/caller-session.js +16 -6
  131. package/dist/capture/capture-error.d.ts +3 -1
  132. package/dist/capture/capture-error.js +3 -1
  133. package/dist/capture/codex-patch.js +7 -2
  134. package/dist/capture/command.d.ts +4 -2
  135. package/dist/capture/command.js +34 -15
  136. package/dist/capture/compact-resume-caller.js +15 -8
  137. package/dist/capture/compact.d.ts +8 -5
  138. package/dist/capture/compact.js +34 -23
  139. package/dist/capture/compaction-items-caller.js +9 -3
  140. package/dist/capture/compaction-record.d.ts +4 -3
  141. package/dist/capture/compaction-record.js +20 -12
  142. package/dist/capture/compaction-spool.d.ts +18 -9
  143. package/dist/capture/compaction-spool.js +105 -63
  144. package/dist/capture/copilot-transcript.d.ts +11 -3
  145. package/dist/capture/copilot-transcript.js +16 -6
  146. package/dist/capture/extract.js +20 -8
  147. package/dist/capture/failure-caller.js +23 -12
  148. package/dist/capture/failure-reading.d.ts +10 -3
  149. package/dist/capture/failure-reading.js +24 -7
  150. package/dist/capture/pre-compact-caller.js +11 -4
  151. package/dist/capture/session-digest.d.ts +15 -4
  152. package/dist/capture/session-digest.js +39 -13
  153. package/dist/capture/session-end-caller.d.ts +4 -1
  154. package/dist/capture/session-end-caller.js +20 -8
  155. package/dist/capture/session-texts.d.ts +6 -2
  156. package/dist/capture/session-texts.js +22 -7
  157. package/dist/capture/session-worker.d.ts +4 -2
  158. package/dist/capture/session-worker.js +58 -17
  159. package/dist/capture/transcript.d.ts +13 -4
  160. package/dist/capture/transcript.js +32 -10
  161. package/dist/capture/working-state.d.ts +13 -4
  162. package/dist/capture/working-state.js +50 -56
  163. package/dist/cli/api-context.d.ts +14 -2
  164. package/dist/cli/api-context.js +45 -2
  165. package/dist/cli/audit.js +33 -33
  166. package/dist/cli/auth.js +23 -31
  167. package/dist/cli/briefs.d.ts +1 -1
  168. package/dist/cli/briefs.js +20 -15
  169. package/dist/cli/card.d.ts +1 -1
  170. package/dist/cli/card.js +56 -73
  171. package/dist/cli/client.d.ts +12 -5
  172. package/dist/cli/client.js +53 -23
  173. package/dist/cli/compact-resume-payload.d.ts +4 -1
  174. package/dist/cli/compact-resume-payload.js +12 -5
  175. package/dist/cli/context.js +43 -18
  176. package/dist/cli/continuity.d.ts +5 -5
  177. package/dist/cli/continuity.js +90 -107
  178. package/dist/cli/curate.d.ts +5 -4
  179. package/dist/cli/curate.js +55 -77
  180. package/dist/cli/dag.d.ts +1 -1
  181. package/dist/cli/dag.js +14 -17
  182. package/dist/cli/decisions.js +30 -30
  183. package/dist/cli/eval.js +16 -21
  184. package/dist/cli/exit.d.ts +4 -1
  185. package/dist/cli/exit.js +10 -2
  186. package/dist/cli/explain.js +12 -11
  187. package/dist/cli/flag-values.d.ts +1 -1
  188. package/dist/cli/flag-values.js +9 -18
  189. package/dist/cli/github.d.ts +6 -0
  190. package/dist/cli/github.js +25 -13
  191. package/dist/cli/goals.d.ts +1 -1
  192. package/dist/cli/goals.js +39 -56
  193. package/dist/cli/graph.d.ts +1 -1
  194. package/dist/cli/graph.js +15 -11
  195. package/dist/cli/hook-runtime.d.ts +34 -10
  196. package/dist/cli/hook-runtime.js +41 -16
  197. package/dist/cli/incidents.d.ts +1 -1
  198. package/dist/cli/incidents.js +25 -25
  199. package/dist/cli/init.d.ts +1 -1
  200. package/dist/cli/init.js +35 -20
  201. package/dist/cli/install-steps.d.ts +12 -3
  202. package/dist/cli/install-steps.js +42 -18
  203. package/dist/cli/last-sleep.d.ts +4 -1
  204. package/dist/cli/last-sleep.js +9 -4
  205. package/dist/cli/maintenance.d.ts +1 -1
  206. package/dist/cli/maintenance.js +11 -12
  207. package/dist/cli/notes.d.ts +1 -1
  208. package/dist/cli/notes.js +8 -5
  209. package/dist/cli/object-verbs.d.ts +5 -5
  210. package/dist/cli/object-verbs.js +13 -16
  211. package/dist/cli/open-browser.js +11 -2
  212. package/dist/cli/playbooks.d.ts +3 -3
  213. package/dist/cli/playbooks.js +40 -32
  214. package/dist/cli/predictions.js +17 -22
  215. package/dist/cli/print.js +4 -2
  216. package/dist/cli/projects.js +21 -11
  217. package/dist/cli/quality-repair-once.d.ts +1 -1
  218. package/dist/cli/quality-repair-once.js +7 -6
  219. package/dist/cli/recall.js +129 -93
  220. package/dist/cli/refine-llm.d.ts +15 -4
  221. package/dist/cli/refine-llm.js +17 -7
  222. package/dist/cli/remember.js +51 -55
  223. package/dist/cli/scheduler.d.ts +4 -1
  224. package/dist/cli/scheduler.js +9 -5
  225. package/dist/cli/serve.js +28 -18
  226. package/dist/cli/session-hooks.d.ts +2 -6
  227. package/dist/cli/session-hooks.js +140 -112
  228. package/dist/cli/setup.d.ts +1 -1
  229. package/dist/cli/setup.js +56 -34
  230. package/dist/cli/shared.d.ts +4 -2
  231. package/dist/cli/shared.js +26 -11
  232. package/dist/cli/slack.js +15 -24
  233. package/dist/cli/sleep-render.d.ts +3 -1
  234. package/dist/cli/sleep-render.js +8 -5
  235. package/dist/cli/sleep.js +16 -8
  236. package/dist/cli/status.d.ts +4 -4
  237. package/dist/cli/status.js +32 -27
  238. package/dist/cli/stdin.d.ts +10 -3
  239. package/dist/cli/stdin.js +10 -3
  240. package/dist/cli/transfer.d.ts +4 -4
  241. package/dist/cli/transfer.js +97 -82
  242. package/dist/cli/usage.d.ts +1 -1
  243. package/dist/cli/usage.js +1 -1
  244. package/dist/cli/verb-row.d.ts +2 -0
  245. package/dist/cli/verbs/health.js +2 -0
  246. package/dist/cli/verbs/memory.js +47 -53
  247. package/dist/cli/verbs/objects.js +16 -7
  248. package/dist/cli/verbs/sessions.js +4 -2
  249. package/dist/cli/versioned-verbs.d.ts +8 -7
  250. package/dist/cli/versioned-verbs.js +31 -21
  251. package/dist/cli.js +14 -18
  252. package/dist/connectors/dlq.d.ts +6 -6
  253. package/dist/connectors/dlq.js +12 -7
  254. package/dist/connectors/github/backfill.d.ts +4 -4
  255. package/dist/connectors/github/backfill.js +6 -4
  256. package/dist/connectors/github/deletion.d.ts +6 -4
  257. package/dist/connectors/github/deletion.js +5 -4
  258. package/dist/connectors/github/dlq.d.ts +8 -6
  259. package/dist/connectors/github/dlq.js +11 -5
  260. package/dist/connectors/github/ingest.d.ts +2 -2
  261. package/dist/connectors/github/ingest.js +9 -5
  262. package/dist/connectors/github/octokit-client.d.ts +3 -1
  263. package/dist/connectors/github/octokit-client.js +7 -2
  264. package/dist/connectors/github/ratelimit.d.ts +6 -2
  265. package/dist/connectors/github/ratelimit.js +6 -2
  266. package/dist/connectors/github/signature.d.ts +14 -3
  267. package/dist/connectors/github/signature.js +17 -3
  268. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  269. package/dist/connectors/github/tenant-routing.js +6 -5
  270. package/dist/connectors/github/transform.js +50 -67
  271. package/dist/connectors/github/types.d.ts +10 -3
  272. package/dist/connectors/github/types.js +6 -2
  273. package/dist/connectors/github/webhook.d.ts +5 -5
  274. package/dist/connectors/github/webhook.js +36 -23
  275. package/dist/connectors/ingest.d.ts +5 -3
  276. package/dist/connectors/ingest.js +3 -3
  277. package/dist/connectors/slack/backfill.d.ts +5 -5
  278. package/dist/connectors/slack/backfill.js +3 -3
  279. package/dist/connectors/slack/deletion.d.ts +4 -4
  280. package/dist/connectors/slack/deletion.js +6 -5
  281. package/dist/connectors/slack/dlq.d.ts +4 -4
  282. package/dist/connectors/slack/dlq.js +6 -6
  283. package/dist/connectors/slack/ingest.d.ts +6 -4
  284. package/dist/connectors/slack/ingest.js +5 -4
  285. package/dist/connectors/slack/signature.d.ts +4 -1
  286. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  287. package/dist/connectors/slack/tenant-routing.js +6 -5
  288. package/dist/connectors/slack/transform.d.ts +6 -2
  289. package/dist/connectors/slack/transform.js +6 -2
  290. package/dist/connectors/slack/types.d.ts +3 -1
  291. package/dist/connectors/slack/web-client.js +8 -3
  292. package/dist/connectors/slack/webhook.d.ts +5 -5
  293. package/dist/connectors/slack/webhook.js +19 -11
  294. package/dist/connectors/slack/workspaces.d.ts +7 -3
  295. package/dist/connectors/slack/workspaces.js +7 -3
  296. package/dist/connectors/store.d.ts +8 -0
  297. package/dist/connectors/store.js +2 -0
  298. package/dist/consolidate/conflicts.js +24 -10
  299. package/dist/consolidate/dag-summary.js +2 -1
  300. package/dist/consolidate/dag.d.ts +10 -5
  301. package/dist/consolidate/dag.js +45 -39
  302. package/dist/consolidate/decay.js +19 -6
  303. package/dist/consolidate/dedupe.d.ts +14 -5
  304. package/dist/consolidate/dedupe.js +28 -17
  305. package/dist/consolidate/flush-units.d.ts +4 -1
  306. package/dist/consolidate/flush-units.js +4 -1
  307. package/dist/consolidate/half-life-migration.d.ts +18 -8
  308. package/dist/consolidate/half-life-migration.js +48 -18
  309. package/dist/consolidate/llm-passes.js +27 -11
  310. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  311. package/dist/consolidate/memory-value-weights.js +6 -2
  312. package/dist/consolidate/memory-value.d.ts +30 -10
  313. package/dist/consolidate/memory-value.js +37 -14
  314. package/dist/consolidate/merge.d.ts +4 -1
  315. package/dist/consolidate/merge.js +47 -37
  316. package/dist/consolidate/overlap-index.d.ts +8 -2
  317. package/dist/consolidate/overlap-index.js +11 -4
  318. package/dist/consolidate/physics-pass.d.ts +3 -1
  319. package/dist/consolidate/physics-pass.js +10 -7
  320. package/dist/consolidate/replay.d.ts +11 -4
  321. package/dist/consolidate/replay.js +19 -7
  322. package/dist/consolidate/run.d.ts +13 -5
  323. package/dist/consolidate/run.js +4 -4
  324. package/dist/consolidate/sleep.d.ts +14 -6
  325. package/dist/consolidate/sleep.js +42 -39
  326. package/dist/consolidate/trace.d.ts +7 -2
  327. package/dist/consolidate/trace.js +7 -2
  328. package/dist/consolidate/traces.js +27 -30
  329. package/dist/core/ablation.d.ts +9 -3
  330. package/dist/core/ablation.js +14 -4
  331. package/dist/core/active-scope.d.ts +3 -1
  332. package/dist/core/active-scope.js +3 -1
  333. package/dist/core/agent-memory-tools.d.ts +2 -0
  334. package/dist/core/agent-memory-tools.js +2 -0
  335. package/dist/core/ambient.d.ts +4 -3
  336. package/dist/core/ambient.js +8 -6
  337. package/dist/core/api-errors.d.ts +9 -3
  338. package/dist/core/api-errors.js +9 -3
  339. package/dist/core/capture-contract.d.ts +4 -1
  340. package/dist/core/capture-contract.js +27 -8
  341. package/dist/core/compare.d.ts +24 -8
  342. package/dist/core/compare.js +24 -8
  343. package/dist/core/config.d.ts +18 -9
  344. package/dist/core/config.js +38 -29
  345. package/dist/core/cosine.d.ts +4 -1
  346. package/dist/core/cosine.js +4 -1
  347. package/dist/core/handoff.d.ts +7 -2
  348. package/dist/core/handoff.js +4 -1
  349. package/dist/core/markdown.js +22 -17
  350. package/dist/core/memory-audit.js +14 -3
  351. package/dist/core/memory-quality.d.ts +12 -3
  352. package/dist/core/memory-quality.js +57 -21
  353. package/dist/core/memory.d.ts +87 -30
  354. package/dist/core/memory.js +82 -33
  355. package/dist/core/merged-row.d.ts +8 -2
  356. package/dist/core/merged-row.js +10 -3
  357. package/dist/core/package-root.d.ts +3 -1
  358. package/dist/core/package-root.js +3 -1
  359. package/dist/core/particle-refresh.d.ts +8 -0
  360. package/dist/core/particle-refresh.js +22 -0
  361. package/dist/core/physics-config.d.ts +4 -1
  362. package/dist/core/physics-config.js +6 -2
  363. package/dist/core/physics.d.ts +39 -11
  364. package/dist/core/physics.js +71 -21
  365. package/dist/core/project-identity.d.ts +34 -17
  366. package/dist/core/project-identity.js +35 -18
  367. package/dist/core/project-remote.d.ts +8 -4
  368. package/dist/core/project-remote.js +31 -14
  369. package/dist/core/recall-scope.d.ts +33 -11
  370. package/dist/core/recall-scope.js +42 -15
  371. package/dist/core/rejection-digest.d.ts +7 -0
  372. package/dist/core/rejection-digest.js +13 -0
  373. package/dist/core/salience.d.ts +3 -1
  374. package/dist/core/salience.js +10 -4
  375. package/dist/core/search-types.d.ts +15 -2
  376. package/dist/core/search-types.js +11 -0
  377. package/dist/dashboard/dashboard-actions.d.ts +2 -2
  378. package/dist/dashboard/dashboard-actions.js +18 -7
  379. package/dist/dashboard/dashboard-queries.js +2 -7
  380. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  381. package/dist/dashboard/dashboard-snapshot.js +5 -7
  382. package/dist/dashboard/dashboard.js +22 -8
  383. package/dist/db/backup.js +2 -2
  384. package/dist/db/busy.d.ts +10 -3
  385. package/dist/db/busy.js +27 -5
  386. package/dist/db/connect.d.ts +10 -2
  387. package/dist/db/connect.js +8 -2
  388. package/dist/db/continuity.d.ts +1 -1
  389. package/dist/db/continuity.js +27 -11
  390. package/dist/db/meta.d.ts +4 -1
  391. package/dist/db/meta.js +4 -1
  392. package/dist/db/migrate.d.ts +10 -5
  393. package/dist/db/migrate.js +40 -20
  394. package/dist/db/migrations/index.d.ts +1 -1
  395. package/dist/db/migrations/index.js +3 -1
  396. package/dist/db/migrations/types.d.ts +2 -1
  397. package/dist/db/migrations/v11.js +1 -0
  398. package/dist/db/migrations/v12.js +2 -1
  399. package/dist/db/migrations/v14.js +2 -0
  400. package/dist/db/migrations/v15.js +4 -2
  401. package/dist/db/migrations/v16.js +6 -3
  402. package/dist/db/migrations/v17.js +2 -1
  403. package/dist/db/migrations/v19.js +4 -2
  404. package/dist/db/migrations/v20.js +2 -1
  405. package/dist/db/migrations/v22.js +12 -6
  406. package/dist/db/migrations/v23.js +6 -3
  407. package/dist/db/migrations/v24.js +6 -3
  408. package/dist/db/migrations/v25.js +4 -2
  409. package/dist/db/migrations/v26.js +4 -2
  410. package/dist/db/migrations/v27.js +6 -3
  411. package/dist/db/migrations/v28.js +4 -2
  412. package/dist/db/migrations/v29.js +4 -2
  413. package/dist/db/migrations/v30.js +6 -3
  414. package/dist/db/migrations/v31.js +4 -2
  415. package/dist/db/migrations/v32.js +6 -3
  416. package/dist/db/migrations/v33.js +4 -2
  417. package/dist/db/migrations/v34.js +2 -1
  418. package/dist/db/migrations/v35.js +2 -1
  419. package/dist/db/migrations/v36.js +2 -1
  420. package/dist/db/migrations/v37.js +10 -5
  421. package/dist/db/migrations/v38.js +10 -5
  422. package/dist/db/migrations/v39.js +14 -6
  423. package/dist/db/migrations/v40.js +4 -2
  424. package/dist/db/migrations/v41.js +4 -2
  425. package/dist/db/migrations/v42.js +2 -1
  426. package/dist/db/migrations/v44.js +4 -2
  427. package/dist/db/migrations/v45.js +4 -2
  428. package/dist/db/migrations/v49.js +2 -1
  429. package/dist/db/migrations/v50.js +4 -2
  430. package/dist/db/migrations/v51.js +4 -2
  431. package/dist/db/migrations/v52.js +2 -1
  432. package/dist/db/migrations/v53.js +8 -4
  433. package/dist/db/migrations/v54.js +2 -1
  434. package/dist/db/migrations/v55.js +4 -2
  435. package/dist/db/migrations/v56.d.ts +3 -0
  436. package/dist/db/migrations/v56.js +28 -0
  437. package/dist/db/open.d.ts +24 -12
  438. package/dist/db/open.js +25 -13
  439. package/dist/db/physics-state.d.ts +8 -8
  440. package/dist/db/physics-state.js +17 -50
  441. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  442. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  443. package/dist/db/request-stores.d.ts +20 -5
  444. package/dist/db/request-stores.js +15 -5
  445. package/dist/db/tables.d.ts +2 -1
  446. package/dist/db/tables.js +12 -4
  447. package/dist/db/vector-store.d.ts +13 -4
  448. package/dist/db/vector-store.js +35 -14
  449. package/dist/db/wal-checkpointer.d.ts +2 -1
  450. package/dist/db/wal-checkpointer.js +19 -7
  451. package/dist/doctor.d.ts +7 -1
  452. package/dist/doctor.js +128 -46
  453. package/dist/embeddings/local.d.ts +8 -4
  454. package/dist/embeddings/local.js +11 -7
  455. package/dist/embeddings/provider.d.ts +19 -10
  456. package/dist/embeddings/provider.js +32 -27
  457. package/dist/embeddings/transformers.d.ts +16 -4
  458. package/dist/embeddings/transformers.js +32 -15
  459. package/dist/entry/json-hooks.d.ts +1 -1
  460. package/dist/entry/json-hooks.js +1 -1
  461. package/dist/entry/project-identity.js +2 -1
  462. package/dist/entry/session-text.d.ts +1 -1
  463. package/dist/entry/session-text.js +1 -1
  464. package/dist/entry/sqlite-handles.d.ts +10 -0
  465. package/dist/entry/sqlite-handles.js +9 -0
  466. package/dist/entry/store-kit.d.ts +50 -0
  467. package/dist/entry/store-kit.js +27 -0
  468. package/dist/entry/testing.d.ts +6 -0
  469. package/dist/entry/testing.js +7 -0
  470. package/dist/eval/eval-stats.d.ts +27 -8
  471. package/dist/eval/eval-stats.js +17 -5
  472. package/dist/eval/eval-suite.d.ts +3 -1
  473. package/dist/eval/eval-suite.js +409 -187
  474. package/dist/eval/eval.d.ts +8 -2
  475. package/dist/eval/eval.js +8 -2
  476. package/dist/eval/judgment.js +17 -7
  477. package/dist/graph/delta.d.ts +9 -42
  478. package/dist/graph/delta.js +17 -11
  479. package/dist/graph/extract.d.ts +10 -7
  480. package/dist/graph/extract.js +57 -25
  481. package/dist/graph/recall.d.ts +12 -4
  482. package/dist/graph/recall.js +30 -13
  483. package/dist/graph/stream.d.ts +18 -6
  484. package/dist/graph/stream.js +32 -10
  485. package/dist/graph/view.d.ts +19 -6
  486. package/dist/graph/view.js +42 -17
  487. package/dist/hooks/codex-session.js +2 -2
  488. package/dist/hooks/codex-wrapper.d.ts +3 -1
  489. package/dist/hooks/codex-wrapper.js +9 -4
  490. package/dist/hooks/copilot.d.ts +19 -5
  491. package/dist/hooks/copilot.js +54 -15
  492. package/dist/hooks/hook-blocks.d.ts +4 -1
  493. package/dist/hooks/hook-blocks.js +8 -3
  494. package/dist/hooks/json-hooks.d.ts +9 -5
  495. package/dist/hooks/json-hooks.js +72 -33
  496. package/dist/hooks/opencode.js +15 -5
  497. package/dist/hooks/shared.d.ts +27 -8
  498. package/dist/hooks/shared.js +57 -16
  499. package/dist/importers/core.d.ts +12 -4
  500. package/dist/importers/core.js +11 -10
  501. package/dist/importers/markdown-parse.d.ts +15 -5
  502. package/dist/importers/markdown-parse.js +16 -7
  503. package/dist/importers/markdown.js +6 -9
  504. package/dist/importers/sources.js +10 -23
  505. package/dist/importers/vault.d.ts +3 -3
  506. package/dist/importers/vault.js +61 -45
  507. package/dist/index.d.ts +33 -7
  508. package/dist/index.js +26 -8
  509. package/dist/learn/autolearn.d.ts +21 -6
  510. package/dist/learn/autolearn.js +57 -26
  511. package/dist/learn/churn-git.d.ts +4 -1
  512. package/dist/learn/churn-git.js +29 -5
  513. package/dist/learn/extract.d.ts +4 -1
  514. package/dist/learn/extract.js +17 -10
  515. package/dist/learn/forward-claim-detector.d.ts +17 -5
  516. package/dist/learn/forward-claim-detector.js +34 -15
  517. package/dist/learn/invalidation.d.ts +12 -6
  518. package/dist/learn/invalidation.js +62 -28
  519. package/dist/learn/roots.d.ts +3 -0
  520. package/dist/learn/roots.js +5 -0
  521. package/dist/mcp/admin-tools.d.ts +5 -5
  522. package/dist/mcp/admin-tools.js +28 -23
  523. package/dist/mcp/format.d.ts +1 -1
  524. package/dist/mcp/format.js +4 -2
  525. package/dist/mcp/framing.d.ts +3 -1
  526. package/dist/mcp/framing.js +20 -8
  527. package/dist/mcp/memory-tools.d.ts +3 -3
  528. package/dist/mcp/memory-tools.js +21 -20
  529. package/dist/mcp/protocol.d.ts +32 -16
  530. package/dist/mcp/protocol.js +12 -9
  531. package/dist/mcp/recall-tools.d.ts +3 -3
  532. package/dist/mcp/recall-tools.js +62 -74
  533. package/dist/mcp/request.d.ts +7 -5
  534. package/dist/mcp/request.js +61 -77
  535. package/dist/mcp/server.d.ts +3 -1
  536. package/dist/mcp/server.js +8 -3
  537. package/dist/mcp/session-state.d.ts +1 -1
  538. package/dist/mcp/session-state.js +4 -3
  539. package/dist/mcp/shared-gate.d.ts +3 -2
  540. package/dist/mcp/shared-gate.js +3 -2
  541. package/dist/mcp/stdio.d.ts +6 -3
  542. package/dist/mcp/stdio.js +59 -23
  543. package/dist/mcp/tool-args.d.ts +4 -1
  544. package/dist/mcp/tool-args.js +8 -3
  545. package/dist/mcp/tools.js +76 -32
  546. package/dist/objects/customer-notes.d.ts +12 -10
  547. package/dist/objects/customer-notes.js +21 -15
  548. package/dist/objects/decisions.d.ts +18 -10
  549. package/dist/objects/decisions.js +23 -17
  550. package/dist/objects/descriptor.js +2 -1
  551. package/dist/objects/fields.d.ts +4 -1
  552. package/dist/objects/fields.js +6 -2
  553. package/dist/objects/incidents.d.ts +14 -16
  554. package/dist/objects/incidents.js +29 -30
  555. package/dist/objects/lifecycle.d.ts +0 -4
  556. package/dist/objects/lifecycle.js +21 -24
  557. package/dist/objects/policies.d.ts +12 -16
  558. package/dist/objects/policies.js +17 -21
  559. package/dist/objects/processes.d.ts +16 -10
  560. package/dist/objects/processes.js +20 -15
  561. package/dist/objects/project-briefs.d.ts +13 -14
  562. package/dist/objects/project-briefs.js +33 -39
  563. package/dist/objects/skills.d.ts +10 -12
  564. package/dist/objects/skills.js +17 -22
  565. package/dist/postinstall.js +15 -7
  566. package/dist/predictions/planning-fallacy.d.ts +19 -6
  567. package/dist/predictions/planning-fallacy.js +4 -2
  568. package/dist/rerankers/clef.d.ts +8 -2
  569. package/dist/rerankers/clef.js +14 -9
  570. package/dist/rerankers/cross-encoder.d.ts +2 -1
  571. package/dist/rerankers/cross-encoder.js +19 -9
  572. package/dist/rerankers/index.js +2 -1
  573. package/dist/rerankers/jev.js +2 -1
  574. package/dist/rerankers/llm.d.ts +6 -2
  575. package/dist/rerankers/llm.js +8 -3
  576. package/dist/rerankers/remote.d.ts +3 -1
  577. package/dist/rerankers/remote.js +5 -2
  578. package/dist/rerankers/types.d.ts +6 -2
  579. package/dist/search/bm25-search.d.ts +3 -1
  580. package/dist/search/bm25-search.js +15 -2
  581. package/dist/search/boosts.js +4 -3
  582. package/dist/search/embed-memories.d.ts +12 -4
  583. package/dist/search/embed-memories.js +96 -58
  584. package/dist/search/engine.d.ts +11 -0
  585. package/dist/search/engine.js +14 -0
  586. package/dist/search/goal-boost.d.ts +10 -3
  587. package/dist/search/goal-boost.js +13 -6
  588. package/dist/search/hybrid-score.d.ts +4 -1
  589. package/dist/search/hybrid-score.js +4 -1
  590. package/dist/search/hybrid.d.ts +23 -8
  591. package/dist/search/hybrid.js +12 -7
  592. package/dist/search/multihop.js +14 -13
  593. package/dist/search/path-context.d.ts +10 -3
  594. package/dist/search/path-context.js +10 -3
  595. package/dist/search/physics-search.d.ts +9 -4
  596. package/dist/search/physics-search.js +38 -14
  597. package/dist/search/rerank.d.ts +2 -1
  598. package/dist/search/rerank.js +2 -1
  599. package/dist/search/rrf.d.ts +14 -5
  600. package/dist/search/rrf.js +11 -4
  601. package/dist/search/vector.d.ts +8 -2
  602. package/dist/search/vector.js +14 -8
  603. package/dist/server/auth.d.ts +19 -15
  604. package/dist/server/auth.js +68 -38
  605. package/dist/server/boot.d.ts +4 -1
  606. package/dist/server/boot.js +115 -67
  607. package/dist/server/client-ip.d.ts +17 -5
  608. package/dist/server/client-ip.js +56 -21
  609. package/dist/server/cursor.d.ts +10 -3
  610. package/dist/server/cursor.js +10 -3
  611. package/dist/server/deadline.d.ts +5 -2
  612. package/dist/server/deadline.js +10 -3
  613. package/dist/server/key-check-bounds.js +12 -4
  614. package/dist/server/lifecycle.d.ts +4 -1
  615. package/dist/server/lifecycle.js +10 -4
  616. package/dist/server/mcp-http.d.ts +2 -1
  617. package/dist/server/mcp-http.js +37 -22
  618. package/dist/server/rate-limit.d.ts +17 -5
  619. package/dist/server/rate-limit.js +55 -26
  620. package/dist/server/ready.js +7 -4
  621. package/dist/server/request.d.ts +15 -4
  622. package/dist/server/request.js +42 -15
  623. package/dist/server/route-checks.d.ts +4 -1
  624. package/dist/server/route-checks.js +8 -3
  625. package/dist/server/route-table.d.ts +8 -6
  626. package/dist/server/route-table.js +550 -97
  627. package/dist/server/routes/admin.d.ts +7 -7
  628. package/dist/server/routes/admin.js +36 -15
  629. package/dist/server/routes/customer-notes.d.ts +5 -5
  630. package/dist/server/routes/customer-notes.js +5 -4
  631. package/dist/server/routes/decisions.d.ts +5 -5
  632. package/dist/server/routes/decisions.js +12 -6
  633. package/dist/server/routes/incidents.d.ts +5 -5
  634. package/dist/server/routes/incidents.js +10 -4
  635. package/dist/server/routes/memories.d.ts +8 -8
  636. package/dist/server/routes/memories.js +12 -17
  637. package/dist/server/routes/object-routes.d.ts +8 -5
  638. package/dist/server/routes/object-routes.js +4 -2
  639. package/dist/server/routes/policies.d.ts +6 -6
  640. package/dist/server/routes/policies.js +11 -4
  641. package/dist/server/routes/predictions.d.ts +5 -5
  642. package/dist/server/routes/predictions.js +9 -4
  643. package/dist/server/routes/processes.d.ts +5 -5
  644. package/dist/server/routes/processes.js +15 -6
  645. package/dist/server/routes/project-briefs.d.ts +6 -6
  646. package/dist/server/routes/project-briefs.js +3 -2
  647. package/dist/server/routes/recall.d.ts +3 -3
  648. package/dist/server/routes/recall.js +21 -10
  649. package/dist/server/routes/skills.d.ts +6 -6
  650. package/dist/server/routes/skills.js +12 -4
  651. package/dist/server/server-detect.d.ts +24 -8
  652. package/dist/server/server-detect.js +57 -22
  653. package/dist/server/sleep-child.js +16 -10
  654. package/dist/server/sleep-offload.d.ts +8 -5
  655. package/dist/server/sleep-offload.js +40 -18
  656. package/dist/server/tls.d.ts +10 -2
  657. package/dist/server/tls.js +25 -5
  658. package/dist/server/types.d.ts +41 -24
  659. package/dist/server/validation.d.ts +4 -1
  660. package/dist/server/validation.js +22 -9
  661. package/dist/server.d.ts +17 -49
  662. package/dist/server.js +33 -40
  663. package/dist/sharing/global-store.d.ts +6 -12
  664. package/dist/sharing/global-store.js +8 -48
  665. package/dist/sharing/global-sync.d.ts +3 -1
  666. package/dist/sharing/global-sync.js +17 -7
  667. package/dist/sharing/project-merge.d.ts +25 -7
  668. package/dist/sharing/project-merge.js +49 -17
  669. package/dist/sharing/search-both.d.ts +8 -4
  670. package/dist/sharing/search-both.js +28 -14
  671. package/dist/sharing/share.d.ts +8 -4
  672. package/dist/sharing/share.js +40 -18
  673. package/dist/store/ambient.js +10 -5
  674. package/dist/store/audit-event.d.ts +2 -2
  675. package/dist/store/audit-event.js +8 -3
  676. package/dist/store/audit.d.ts +6 -3
  677. package/dist/store/audit.js +16 -6
  678. package/dist/store/auth.d.ts +4 -2
  679. package/dist/store/auth.js +63 -20
  680. package/dist/store/busy.d.ts +9 -0
  681. package/dist/store/busy.js +16 -0
  682. package/dist/store/candidates.d.ts +12 -5
  683. package/dist/store/candidates.js +90 -41
  684. package/dist/store/capture-write.d.ts +2 -1
  685. package/dist/store/capture-write.js +2 -1
  686. package/dist/store/card-detail.d.ts +4 -4
  687. package/dist/store/card-detail.js +15 -8
  688. package/dist/store/cards.d.ts +24 -10
  689. package/dist/store/cards.js +97 -63
  690. package/dist/store/compaction-caller.d.ts +2 -1
  691. package/dist/store/compaction-caller.js +2 -1
  692. package/dist/store/compactions-record.d.ts +14 -8
  693. package/dist/store/compactions-record.js +101 -37
  694. package/dist/store/compactions.js +35 -15
  695. package/dist/store/conflicts.d.ts +16 -5
  696. package/dist/store/conflicts.js +104 -48
  697. package/dist/store/connectors/dlq.d.ts +17 -5
  698. package/dist/store/connectors/dlq.js +58 -6
  699. package/dist/store/connectors/event-log.d.ts +122 -0
  700. package/dist/store/connectors/event-log.js +25 -0
  701. package/dist/store/connectors/github.d.ts +6 -3
  702. package/dist/store/connectors/github.js +30 -48
  703. package/dist/store/connectors/slack.d.ts +2 -1
  704. package/dist/store/connectors/slack.js +31 -47
  705. package/dist/store/dashboard-reads.d.ts +7 -3
  706. package/dist/store/dashboard-reads.js +32 -10
  707. package/dist/store/delete-and-batch.d.ts +17 -11
  708. package/dist/store/delete-and-batch.js +70 -28
  709. package/dist/store/delivery-recorder.d.ts +10 -7
  710. package/dist/store/delivery-recorder.js +70 -37
  711. package/dist/store/descendant-page.d.ts +2 -1
  712. package/dist/store/descendant-page.js +26 -10
  713. package/dist/store/diagnostics.d.ts +2 -1
  714. package/dist/store/diagnostics.js +2 -1
  715. package/dist/store/doctor-reads.d.ts +2 -1
  716. package/dist/store/doctor-reads.js +13 -5
  717. package/dist/store/dormant.d.ts +19 -11
  718. package/dist/store/dormant.js +45 -19
  719. package/dist/store/embeddings/index.d.ts +13 -9
  720. package/dist/store/embeddings/index.js +19 -12
  721. package/dist/store/entry-reads.d.ts +72 -21
  722. package/dist/store/entry-reads.js +215 -69
  723. package/dist/store/entry-row.d.ts +10 -6
  724. package/dist/store/entry-row.js +26 -14
  725. package/dist/store/entry-writes.d.ts +28 -13
  726. package/dist/store/entry-writes.js +61 -22
  727. package/dist/store/failure-log-at.js +1 -1
  728. package/dist/store/failure-log.d.ts +4 -2
  729. package/dist/store/failure-log.js +13 -6
  730. package/dist/store/gated-write.d.ts +3 -3
  731. package/dist/store/gated-write.js +3 -3
  732. package/dist/store/goals.d.ts +5 -4
  733. package/dist/store/goals.js +11 -12
  734. package/dist/store/graph-apply.d.ts +21 -0
  735. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  736. package/dist/store/graph-queue.d.ts +9 -6
  737. package/dist/store/graph-queue.js +15 -10
  738. package/dist/store/graph-reads.d.ts +16 -11
  739. package/dist/store/graph-reads.js +29 -19
  740. package/dist/store/graph-rows.d.ts +41 -3
  741. package/dist/store/graph-rows.js +10 -7
  742. package/dist/store/graph-view-rows.js +15 -7
  743. package/dist/store/graph-writes.d.ts +16 -10
  744. package/dist/store/graph-writes.js +59 -36
  745. package/dist/store/half-life.js +2 -2
  746. package/dist/store/handoffs.d.ts +13 -7
  747. package/dist/store/handoffs.js +44 -22
  748. package/dist/store/index-and-stats.d.ts +2 -2
  749. package/dist/store/index-and-stats.js +6 -5
  750. package/dist/store/index.d.ts +4 -2
  751. package/dist/store/index.js +2 -1
  752. package/dist/store/key-audit.d.ts +2 -1
  753. package/dist/store/key-audit.js +2 -1
  754. package/dist/store/key-writes.d.ts +2 -1
  755. package/dist/store/key-writes.js +9 -2
  756. package/dist/store/ledger-turn.d.ts +4 -1
  757. package/dist/store/ledger-turn.js +7 -2
  758. package/dist/store/mirrors.d.ts +11 -4
  759. package/dist/store/mirrors.js +96 -19
  760. package/dist/store/narrow.d.ts +6 -0
  761. package/dist/store/narrow.js +11 -0
  762. package/dist/store/open.d.ts +6 -3
  763. package/dist/store/open.js +20 -10
  764. package/dist/store/pilot-arm.d.ts +2 -1
  765. package/dist/store/pilot-arm.js +18 -6
  766. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  767. package/dist/store/planning-fallacy-evidence.js +8 -5
  768. package/dist/store/port/agent-import.d.ts +62 -0
  769. package/dist/store/port/agent-import.js +2 -0
  770. package/dist/store/port/consolidation.d.ts +129 -0
  771. package/dist/store/port/consolidation.js +2 -0
  772. package/dist/store/port/learning.d.ts +19 -0
  773. package/dist/store/port/learning.js +2 -0
  774. package/dist/store/port/local-files.d.ts +18 -0
  775. package/dist/store/port/local-files.js +2 -0
  776. package/dist/store/port/promotion.d.ts +20 -0
  777. package/dist/store/port/promotion.js +3 -0
  778. package/dist/store/port-groups.d.ts +160 -0
  779. package/dist/store/port-groups.js +2 -0
  780. package/dist/store/port.d.ts +261 -219
  781. package/dist/store/port.js +3 -9
  782. package/dist/store/predictions.d.ts +14 -10
  783. package/dist/store/predictions.js +37 -17
  784. package/dist/store/project-tags.d.ts +4 -1
  785. package/dist/store/project-tags.js +16 -5
  786. package/dist/store/quality-repair.d.ts +8 -4
  787. package/dist/store/quality-repair.js +53 -20
  788. package/dist/store/quarantine.d.ts +1 -0
  789. package/dist/store/quarantine.js +23 -9
  790. package/dist/store/raw-archive.d.ts +5 -4
  791. package/dist/store/raw-archive.js +11 -10
  792. package/dist/store/recall-trace.d.ts +22 -17
  793. package/dist/store/recall-trace.js +128 -64
  794. package/dist/store/rejected-values.d.ts +15 -10
  795. package/dist/store/rejected-values.js +46 -20
  796. package/dist/store/rejection.d.ts +12 -11
  797. package/dist/store/rejection.js +18 -19
  798. package/dist/store/report-reads.d.ts +2 -1
  799. package/dist/store/report-reads.js +2 -1
  800. package/dist/store/rows.d.ts +7 -5
  801. package/dist/store/rows.js +20 -13
  802. package/dist/store/rule-sql.d.ts +7 -3
  803. package/dist/store/rule-sql.js +26 -13
  804. package/dist/store/search-rows.d.ts +16 -11
  805. package/dist/store/search-rows.js +54 -32
  806. package/dist/store/sessions.d.ts +12 -10
  807. package/dist/store/sessions.js +40 -21
  808. package/dist/store/set-aside.d.ts +2 -2
  809. package/dist/store/set-aside.js +18 -5
  810. package/dist/store/sqlite/agent-import.d.ts +3 -0
  811. package/dist/store/sqlite/agent-import.js +77 -0
  812. package/dist/store/sqlite/cards-group.d.ts +6 -0
  813. package/dist/store/sqlite/cards-group.js +37 -0
  814. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  815. package/dist/store/sqlite/conflicts-group.js +18 -0
  816. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  817. package/dist/store/sqlite/connector-events-group.js +17 -6
  818. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  819. package/dist/store/sqlite/connector-writes-group.js +12 -5
  820. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  821. package/dist/store/sqlite/consolidation-group.js +64 -0
  822. package/dist/store/sqlite/dag-reads-group.js +1 -1
  823. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  824. package/dist/store/sqlite/dormant-group.js +29 -0
  825. package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
  826. package/dist/store/sqlite/entry-writes-group.js +37 -14
  827. package/dist/store/sqlite/error-codec.d.ts +4 -2
  828. package/dist/store/sqlite/error-codec.js +32 -10
  829. package/dist/store/sqlite/executor-counts.js +2 -1
  830. package/dist/store/sqlite/executor.d.ts +8 -3
  831. package/dist/store/sqlite/executor.js +56 -18
  832. package/dist/store/sqlite/global-promote.d.ts +5 -0
  833. package/dist/store/sqlite/global-promote.js +48 -0
  834. package/dist/store/sqlite/goals-group.d.ts +6 -0
  835. package/dist/store/sqlite/goals-group.js +23 -0
  836. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  837. package/dist/store/sqlite/graph-reads-group.js +2 -1
  838. package/dist/store/sqlite/held-connection.d.ts +8 -0
  839. package/dist/store/sqlite/held-connection.js +34 -7
  840. package/dist/store/sqlite/last-recall-group.d.ts +15 -0
  841. package/dist/store/sqlite/last-recall-group.js +62 -0
  842. package/dist/store/sqlite/learning-group.d.ts +4 -0
  843. package/dist/store/sqlite/learning-group.js +17 -0
  844. package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
  845. package/dist/store/sqlite/maintenance-groups.js +61 -0
  846. package/dist/store/sqlite/object-rows.d.ts +6 -3
  847. package/dist/store/sqlite/object-rows.js +34 -5
  848. package/dist/store/sqlite/objects-group.d.ts +5 -4
  849. package/dist/store/sqlite/objects-group.js +97 -38
  850. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  851. package/dist/store/sqlite/predictions-group.js +4 -2
  852. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  853. package/dist/store/sqlite/promotion-group.js +10 -0
  854. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  855. package/dist/store/sqlite/quarantine-group.js +4 -2
  856. package/dist/store/sqlite/reports-group.d.ts +6 -0
  857. package/dist/store/sqlite/reports-group.js +33 -0
  858. package/dist/store/sqlite/request-scope.d.ts +6 -0
  859. package/dist/store/sqlite/request-scope.js +18 -0
  860. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  861. package/dist/store/sqlite/sessions-group.js +46 -0
  862. package/dist/store/sqlite/store.d.ts +22 -18
  863. package/dist/store/sqlite/store.js +95 -33
  864. package/dist/store/sqlite/vector-pack.js +2 -1
  865. package/dist/store/sqlite/vector-reads-group.js +2 -1
  866. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  867. package/dist/store/sqlite/worker-jobs.js +19 -7
  868. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  869. package/dist/store/sqlite/worker-ops.js +6 -3
  870. package/dist/store/sqlite/worker-store.d.ts +4 -3
  871. package/dist/store/sqlite/worker-store.js +24 -14
  872. package/dist/store/summaries.d.ts +25 -11
  873. package/dist/store/summaries.js +84 -27
  874. package/dist/store/summary-dirty.d.ts +2 -1
  875. package/dist/store/summary-dirty.js +2 -1
  876. package/dist/store/tenant.d.ts +3 -2
  877. package/dist/store/tenant.js +5 -4
  878. package/dist/store/token-ledger-rows.js +8 -4
  879. package/dist/store/token-ledger.d.ts +19 -13
  880. package/dist/store/token-ledger.js +27 -14
  881. package/dist/store/tombstone-checks.d.ts +4 -1
  882. package/dist/store/tombstone-checks.js +10 -1
  883. package/dist/store/usage-reports.js +2 -1
  884. package/dist/store/vector-index.d.ts +8 -5
  885. package/dist/store/vector-index.js +28 -11
  886. package/dist/store/working-memory.d.ts +6 -4
  887. package/dist/store/working-memory.js +14 -9
  888. package/dist/support-bundle.js +10 -5
  889. package/dist/trust/quarantine.d.ts +1 -2
  890. package/dist/trust/quarantine.js +1 -5
  891. package/dist/trust/reject-flow.d.ts +12 -3
  892. package/dist/trust/reject-flow.js +12 -4
  893. package/dist/util/anthropic-messages.d.ts +7 -2
  894. package/dist/util/anthropic-messages.js +18 -7
  895. package/dist/util/atomic-write.d.ts +8 -3
  896. package/dist/util/atomic-write.js +36 -21
  897. package/dist/util/compaction-items.d.ts +4 -1
  898. package/dist/util/compaction-items.js +8 -2
  899. package/dist/util/crash-handlers.d.ts +7 -2
  900. package/dist/util/crash-handlers.js +13 -4
  901. package/dist/util/env.d.ts +26 -5
  902. package/dist/util/env.js +87 -25
  903. package/dist/util/format.d.ts +2 -0
  904. package/dist/util/format.js +4 -0
  905. package/dist/util/home-path.js +12 -6
  906. package/dist/util/hook-payload.d.ts +3 -1
  907. package/dist/util/hook-payload.js +3 -1
  908. package/dist/util/http-retry.d.ts +12 -6
  909. package/dist/util/http-retry.js +16 -6
  910. package/dist/util/http-util.d.ts +20 -5
  911. package/dist/util/http-util.js +28 -9
  912. package/dist/util/json.d.ts +4 -1
  913. package/dist/util/json.js +4 -1
  914. package/dist/util/keyset.js +2 -1
  915. package/dist/util/limits.js +4 -2
  916. package/dist/util/log.d.ts +13 -5
  917. package/dist/util/log.js +29 -6
  918. package/dist/util/net.d.ts +5 -0
  919. package/dist/util/net.js +19 -0
  920. package/dist/util/real-path.d.ts +2 -1
  921. package/dist/util/real-path.js +4 -3
  922. package/dist/util/request-scope.d.ts +16 -4
  923. package/dist/util/request-scope.js +19 -6
  924. package/dist/util/same-text.d.ts +10 -3
  925. package/dist/util/same-text.js +10 -3
  926. package/dist/util/secret-detect.d.ts +24 -7
  927. package/dist/util/secret-detect.js +49 -14
  928. package/dist/util/spawn-argv.d.ts +11 -0
  929. package/dist/util/spawn-argv.js +66 -0
  930. package/dist/util/sql.d.ts +3 -0
  931. package/dist/util/sql.js +6 -0
  932. package/dist/util/sqlite-blocked.d.ts +15 -4
  933. package/dist/util/sqlite-blocked.js +19 -6
  934. package/dist/util/stored-json.d.ts +4 -1
  935. package/dist/util/stored-json.js +6 -2
  936. package/dist/util/stream-tee.d.ts +2 -1
  937. package/dist/util/stream-tee.js +8 -5
  938. package/dist/util/transcript-tail.d.ts +4 -1
  939. package/dist/util/transcript-tail.js +4 -1
  940. package/dist/util/vector-codec.d.ts +4 -0
  941. package/dist/util/vector-codec.js +15 -0
  942. package/dist/util/version.d.ts +8 -3
  943. package/dist/util/version.js +8 -3
  944. package/dist/util/write-budget.d.ts +7 -2
  945. package/dist/util/write-budget.js +5 -2
  946. package/dist/util/yaml.d.ts +4 -1
  947. package/dist/util/yaml.js +4 -1
  948. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  949. package/extensions/openclaw-plugin/package.json +1 -1
  950. package/openclaw.plugin.json +1 -1
  951. package/package.json +4 -1
  952. package/scripts/postinstall.cjs +3 -1
  953. package/dist/api/audit.js +0 -56
  954. package/dist/api/cards.d.ts +0 -42
  955. package/dist/api/conflicts.d.ts +0 -28
  956. package/dist/api/conflicts.js +0 -61
  957. package/dist/api/dormant.d.ts +0 -14
  958. package/dist/api/dormant.js +0 -58
  959. package/dist/api/goals.d.ts +0 -18
  960. package/dist/api/graph.d.ts +0 -8
  961. package/dist/api/graph.js +0 -7
  962. package/dist/api/learn.js +0 -124
  963. package/dist/api/memories.d.ts +0 -23
  964. package/dist/api/memories.js +0 -46
  965. package/dist/api/objects.d.ts +0 -9
  966. package/dist/api/on-store.d.ts +0 -16
  967. package/dist/api/on-store.js +0 -38
  968. package/dist/api/outcome.d.ts +0 -19
  969. package/dist/api/outcome.js +0 -21
  970. package/dist/api/predictions.d.ts +0 -11
  971. package/dist/api/promote.d.ts +0 -36
  972. package/dist/api/promote.js +0 -65
  973. package/dist/api/recall-core.d.ts +0 -4
  974. package/dist/api/recall-core.js +0 -120
  975. package/dist/api/recall-finish.d.ts +0 -53
  976. package/dist/api/recall-finish.js +0 -30
  977. package/dist/api/recall-history.d.ts +0 -64
  978. package/dist/api/recall-history.js +0 -159
  979. package/dist/api/recall-record.d.ts +0 -43
  980. package/dist/api/recall-record.js +0 -78
  981. package/dist/api/recall-request.js +0 -121
  982. package/dist/api/recall.d.ts +0 -6
  983. package/dist/api/refine.d.ts +0 -7
  984. package/dist/api/refine.js +0 -10
  985. package/dist/api/session-owners.d.ts +0 -4
  986. package/dist/api/session-owners.js +0 -17
  987. package/dist/api/sleep-run.d.ts +0 -26
  988. package/dist/api/sleep.js +0 -10
  989. package/dist/cli/lenient-id.d.ts +0 -2
  990. package/dist/cli/lenient-id.js +0 -13
  991. package/dist/graph/write.d.ts +0 -14
  992. package/dist/store/sqlite/busy.d.ts +0 -3
  993. package/dist/store/sqlite/busy.js +0 -8
  994. package/dist/store/sqlite/local.d.ts +0 -21
  995. package/dist/store/sqlite/local.js +0 -39
package/dist/cli/eval.js CHANGED
@@ -1,34 +1,35 @@
1
1
  // The `hippo eval` verb; main() loads it lazily from the command table.
2
2
  import * as path from 'path';
3
3
  import * as fs from 'fs';
4
- import { listMemories } from '../api/memories.js';
4
+ import { listMemories } from '../api/memories/memories.js';
5
5
  import { cliApiContext } from './api-context.js';
6
6
  import { loadConfig } from '../core/config.js';
7
7
  import { getGlobalRoot } from '../sharing/global-store.js';
8
8
  import { runEval, bootstrapCorpus, compareSummaries } from '../eval/eval.js';
9
- import { runFeatureEval, formatResult, resultToBaseline, detectRegressions } from '../eval/eval-suite.js';
9
+ import { runFeatureEval, formatResult, resultToBaseline, detectRegressions, } from '../eval/eval-suite.js';
10
10
  import { PACKAGE_VERSION } from '../util/version.js';
11
11
  import { printError } from './output.js';
12
12
  import { requireInit } from './shared.js';
13
13
  import { fmt } from './print.js';
14
- import { boolFlag, numberFlag } from './flag-values.js';
14
+ import { boolFlag, numberFlag, stringFlagOrExit } from './flag-values.js';
15
15
  import { errorMessage } from '../util/log.js';
16
- import { CliExit } from './exit.js';
16
+ import { CliExit, fail } from './exit.js';
17
17
  const HIT_TOP_K = 10;
18
18
  const MAX_FAILING_SHOWN = 10;
19
19
  const TOP_IDS_SHOWN = 3;
20
20
  const MAX_MISSED_SHOWN = 4;
21
21
  const QUERY_PREVIEW_CHARS = 60;
22
22
  const MAX_DELTAS_SHOWN = 5;
23
- /** Runs `hippo eval`: --bootstrap writes a corpus, --suite runs the built-in feature eval, else it scores a corpus file. */
23
+ /** Runs `hippo eval`: --bootstrap writes a corpus, --suite runs the built-in feature eval, else it scores a corpus
24
+ * file. */
24
25
  async function cmdEval(hippoRoot, tenantId, corpusPath, flags) {
25
26
  const asJson = boolFlag(flags, 'json');
26
27
  const minMrr = numberFlag(flags, 'min-mrr') ?? null;
27
- const comparePath = flags['compare'] ? String(flags['compare']) : null;
28
+ const comparePath = stringFlagOrExit(flags, 'compare') || null;
28
29
  // Suite mode doesn't need an initialized store
29
30
  if (!flags['suite'])
30
31
  requireInit(hippoRoot);
31
- const entries = flags['suite'] ? [] : listMemories(cliApiContext(hippoRoot, tenantId), { everyTenant: true });
32
+ const entries = flags['suite'] ? [] : await listMemories(cliApiContext(hippoRoot, tenantId), { everyTenant: true });
32
33
  if (flags['bootstrap']) {
33
34
  writeBootstrapCorpus(entries, flags);
34
35
  return;
@@ -45,8 +46,7 @@ async function cmdEval(hippoRoot, tenantId, corpusPath, flags) {
45
46
  printEvalSummary(summary, boolFlag(flags, 'show-cases'));
46
47
  }
47
48
  if (minMrr !== null && summary.meanMrr < minMrr) {
48
- printError(`MRR ${fmt(summary.meanMrr, 4)} below threshold ${minMrr}`);
49
- throw new CliExit(1);
49
+ fail(`MRR ${fmt(summary.meanMrr, 4)} below threshold ${minMrr}`);
50
50
  }
51
51
  if (comparePath)
52
52
  printEvalCompare(summary, comparePath, asJson);
@@ -68,7 +68,7 @@ async function runCorpusEval(hippoRoot, corpusPath, entries, flags) {
68
68
  }
69
69
  /** Bootstrap mode: emit a synthetic corpus built from the store's own memories. */
70
70
  function writeBootstrapCorpus(entries, flags) {
71
- const outPath = flags['out'] ? String(flags['out']) : null;
71
+ const outPath = stringFlagOrExit(flags, 'out') || null;
72
72
  const max = numberFlag(flags, 'max-cases') ?? 50;
73
73
  const corpus = bootstrapCorpus(entries, max);
74
74
  const payload = JSON.stringify({ cases: corpus }, null, 2);
@@ -83,7 +83,7 @@ function writeBootstrapCorpus(entries, flags) {
83
83
  }
84
84
  /** Suite mode: run the built-in feature eval (no corpus file needed, no init needed). */
85
85
  async function runEvalSuite(hippoRoot, flags, asJson, minMrr) {
86
- const baselinePath = flags['baseline'] ? String(flags['baseline']) : path.join(hippoRoot, 'eval-baseline.json');
86
+ const baselinePath = stringFlagOrExit(flags, 'baseline') || path.join(hippoRoot, 'eval-baseline.json');
87
87
  let baseline;
88
88
  try {
89
89
  baseline = JSON.parse(fs.readFileSync(baselinePath, 'utf8'));
@@ -117,12 +117,10 @@ async function runEvalSuite(hippoRoot, flags, asJson, minMrr) {
117
117
  /** Loads the corpus file, exiting with the usage line or the read error when there is none to score. */
118
118
  function readCorpus(corpusPath) {
119
119
  if (!corpusPath) {
120
- printError('Usage: hippo eval <corpus.json> OR hippo eval --suite [--save-baseline] OR hippo eval --bootstrap');
121
- throw new CliExit(1);
120
+ fail('Usage: hippo eval <corpus.json> OR hippo eval --suite [--save-baseline] OR hippo eval --bootstrap');
122
121
  }
123
122
  if (!fs.existsSync(corpusPath)) {
124
- printError(`Corpus file not found: ${corpusPath}`);
125
- throw new CliExit(1);
123
+ fail(`Corpus file not found: ${corpusPath}`);
126
124
  }
127
125
  let cases;
128
126
  try {
@@ -132,8 +130,7 @@ function readCorpus(corpusPath) {
132
130
  throw new Error('Corpus JSON must be an array or { cases: [...] }');
133
131
  }
134
132
  catch (err) {
135
- printError(`Failed to read corpus: ${errorMessage(err)}`);
136
- throw new CliExit(1);
133
+ fail(`Failed to read corpus: ${errorMessage(err)}`);
137
134
  }
138
135
  return cases;
139
136
  }
@@ -176,16 +173,14 @@ function printEvalSummary(summary, showCases) {
176
173
  }
177
174
  function printEvalCompare(summary, comparePath, asJson) {
178
175
  if (!fs.existsSync(comparePath)) {
179
- printError(`Baseline file not found: ${comparePath}`);
180
- throw new CliExit(1);
176
+ fail(`Baseline file not found: ${comparePath}`);
181
177
  }
182
178
  let baseline;
183
179
  try {
184
180
  baseline = JSON.parse(fs.readFileSync(comparePath, 'utf8'));
185
181
  }
186
182
  catch (err) {
187
- printError(`Failed to parse baseline: ${errorMessage(err)}`);
188
- throw new CliExit(1);
183
+ fail(`Failed to parse baseline: ${errorMessage(err)}`);
189
184
  }
190
185
  const cmp = compareSummaries(baseline, summary);
191
186
  if (asJson) {
@@ -1,6 +1,9 @@
1
- /** Thrown after the verb has printed its own message, so it carries the exit code and nothing for the entry to print. */
1
+ /** Thrown after the verb has printed its own message, so it carries the exit code and nothing for the entry to
2
+ * print. */
2
3
  export declare class CliExit extends Error {
3
4
  readonly code: number;
4
5
  constructor(code: number);
5
6
  }
7
+ /** Stops the verb with a message the user must act on: one call, so the text and the exit code 1 cannot drift apart. */
8
+ export declare function fail(...args: unknown[]): never;
6
9
  //# sourceMappingURL=exit.d.ts.map
package/dist/cli/exit.js CHANGED
@@ -1,5 +1,8 @@
1
- // The one error a CLI verb throws to stop its command; runCli is the one place that turns it into the process exit code.
2
- /** Thrown after the verb has printed its own message, so it carries the exit code and nothing for the entry to print. */
1
+ // The one error a CLI verb throws to stop its command; runCli is the one place that turns it into the process exit
2
+ // code.
3
+ import { printError } from './output.js';
4
+ /** Thrown after the verb has printed its own message, so it carries the exit code and nothing for the entry to
5
+ * print. */
3
6
  export class CliExit extends Error {
4
7
  code;
5
8
  constructor(code) {
@@ -8,4 +11,9 @@ export class CliExit extends Error {
8
11
  this.code = code;
9
12
  }
10
13
  }
14
+ /** Stops the verb with a message the user must act on: one call, so the text and the exit code 1 cannot drift apart. */
15
+ export function fail(...args) {
16
+ printError(...args);
17
+ throw new CliExit(1);
18
+ }
11
19
  //# sourceMappingURL=exit.js.map
@@ -6,14 +6,14 @@ import { dropHeldCopies } from '../util/same-text.js';
6
6
  import { detectScope } from '../core/active-scope.js';
7
7
  import { getGlobalRoot } from '../sharing/global-store.js';
8
8
  import * as api from '../api/index.js';
9
- import { cliRecallOrigin, scopeHiddenCount } from '../api/recall-cli.js';
9
+ import { cliRecallOrigin, scopeHiddenCount } from '../api/recall/rows.js';
10
10
  import { cliApiContext } from './api-context.js';
11
11
  import { printedTokens } from '../api/context-render.js';
12
12
  import { printError } from './output.js';
13
- import { parseLimitFlag, parseBudgetFlag, parseAsOfFlag, engineFlags, boolFlag } from './flag-values.js';
13
+ import { parseLimitFlag, parseBudgetFlag, parseAsOfFlag, engineFlags, boolFlag, stringFlagOrExit, } from './flag-values.js';
14
14
  import { requireInit } from './shared.js';
15
15
  import { fmt, recallEntryText, recallHeading } from './print.js';
16
- import { CliExit } from './exit.js';
16
+ import { fail } from './exit.js';
17
17
  const EXPLAIN_PREVIEW_CHARS = 48;
18
18
  /** The SQL predicate drops denied rows before the window, so an unscoped probe counts what the policy hides. */
19
19
  function noteScopeHidden(ctx, globalRoot, query, requested) {
@@ -32,7 +32,7 @@ async function cmdExplain(hippoRoot, tenantId, query, flags) {
32
32
  const globalRoot = getGlobalRoot();
33
33
  const ctx = cliApiContext(hippoRoot, tenantId);
34
34
  // Explain shows what recall would see, so it applies the same scope rule.
35
- const explicitScope = flags['scope'] !== undefined ? String(flags['scope']).trim() : null;
35
+ const explicitScope = stringFlagOrExit(flags, 'scope') ?? null;
36
36
  const activeScope = explicitScope || detectScope();
37
37
  // Unlike recall, explain reads the global store whenever it exists, even when it is the local root.
38
38
  const origin = cliRecallOrigin(ctx, { globalRoot, primaryIsGlobal: false, activeScope });
@@ -52,7 +52,7 @@ async function cmdExplain(hippoRoot, tenantId, query, flags) {
52
52
  explicitScope, activeScope,
53
53
  search: { ...engine, multihop: false, explain: true },
54
54
  },
55
- sources: { globalRoot: explainGlobalOn ? globalRoot : undefined },
55
+ sources: explainGlobalOn ? { globalRoot, globalStore: cliApiContext(globalRoot, tenantId).store } : undefined,
56
56
  inspect: (ranking) => { slot.rank = ranking; },
57
57
  },
58
58
  });
@@ -112,8 +112,8 @@ function printExplainTable(results, query, modeUsed, candidates) {
112
112
  const b = r.breakdown;
113
113
  const preview = r.entry.content.replace(/\s+/g, ' ').slice(0, EXPLAIN_PREVIEW_CHARS);
114
114
  const ageStr = b ? `${b.ageDays}d` : '?';
115
- console.log(`${String(i + 1).padEnd(5)} ${fmt(r.score, 3).padEnd(7)} ${fmt(r.entry.strength).padEnd(9)} ${ageStr.padEnd(6)} ` +
116
- `${r.entry.layer.padEnd(10)} ${r.entry.id.padEnd(17)} ${preview}`);
115
+ console.log(`${String(i + 1).padEnd(5)} ${fmt(r.score, 3).padEnd(7)} ${fmt(r.entry.strength).padEnd(9)} ` +
116
+ `${ageStr.padEnd(6)} ${r.entry.layer.padEnd(10)} ${r.entry.id.padEnd(17)} ${preview}`);
117
117
  }
118
118
  console.log();
119
119
  }
@@ -140,8 +140,9 @@ function printExplainBreakdown(r, i) {
140
140
  console.log(` recency: x${fmt(b.recencyMultiplier, 3)} (age=${b.ageDays}d)`);
141
141
  if (b.decisionBoost !== 1)
142
142
  console.log(` decision: x${fmt(b.decisionBoost, 2)} (tagged 'decision')`);
143
- if (b.scopeBoost !== 1)
143
+ if (b.scopeBoost !== 1) {
144
144
  console.log(` scope: x${fmt(b.scopeBoost, 2)} (scope tag ${b.scopeBoost > 1 ? 'match' : 'mismatch'})`);
145
+ }
145
146
  if (b.pathBoost !== 1)
146
147
  console.log(` path: x${fmt(b.pathBoost, 3)} (cwd path tag overlap)`);
147
148
  if (b.sourceBump !== 1)
@@ -150,8 +151,9 @@ function printExplainBreakdown(r, i) {
150
151
  console.log(` outcome: x${fmt(b.outcomeBoost, 3)} ` +
151
152
  `(user feedback: pos-neg = ${(r.entry.outcome_positive ?? 0) - (r.entry.outcome_negative ?? 0)})`);
152
153
  }
153
- if (b.churnStaleMultiplier !== 1)
154
+ if (b.churnStaleMultiplier !== 1) {
154
155
  console.log(` churn: x${fmt(b.churnStaleMultiplier, 2)} (tagged 'churn-stale')`);
156
+ }
155
157
  if (b.preMmrRank !== undefined && b.postMmrRank !== undefined && b.preMmrRank !== b.postMmrRank) {
156
158
  const arrow = b.postMmrRank < b.preMmrRank ? 'up' : 'down';
157
159
  console.log(` mmr: rank ${b.preMmrRank} -> ${b.postMmrRank} (diversity ${arrow})`);
@@ -163,8 +165,7 @@ function printExplainBreakdown(r, i) {
163
165
  export async function handleExplain({ hippoRoot, tenantId, args, flags }) {
164
166
  const query = args.join(' ').trim();
165
167
  if (!query) {
166
- printError('Please provide a search query.');
167
- throw new CliExit(1);
168
+ fail('Please provide a search query.');
168
169
  }
169
170
  await cmdExplain(hippoRoot, tenantId, query, flags);
170
171
  }
@@ -1,4 +1,4 @@
1
- import type { RecallSearchOpts } from '../api/recall-pipeline.js';
1
+ import type { RecallSearchOpts } from '../api/recall/pipeline.js';
2
2
  import type { HippoConfig } from '../core/config.js';
3
3
  export declare function isBooleanFlag(value: string | boolean | string[] | undefined): value is boolean;
4
4
  export declare function isStringFlag(value: string | boolean | string[] | undefined): value is string;
@@ -1,7 +1,6 @@
1
1
  // Readers that turn parsed CLI flags into typed values, and the flag types they share.
2
2
  import { resolveListLimit } from '../util/limits.js';
3
- import { printError } from './output.js';
4
- import { CliExit } from './exit.js';
3
+ import { fail } from './exit.js';
5
4
  export function isBooleanFlag(value) {
6
5
  return typeof value === 'boolean';
7
6
  }
@@ -25,14 +24,12 @@ export function parseBudgetFlag(value, fallback) {
25
24
  return fallback;
26
25
  // A value-less flag and a junk value are different typos; the --hops guard already splits them.
27
26
  if (!isStringFlag(value)) {
28
- printError('--budget requires an integer value (e.g. --budget 1500).');
29
- throw new CliExit(1);
27
+ fail('--budget requires an integer value (e.g. --budget 1500).');
30
28
  }
31
29
  // Number(), like the --hops guard: parseInt('12abc') is 12, silently accepting what this message rejects.
32
30
  const parsed = Number(value);
33
31
  if (!Number.isInteger(parsed) || parsed < 0) {
34
- printError(`Invalid --budget: "${value}". Must be a non-negative integer.`);
35
- throw new CliExit(1);
32
+ fail(`Invalid --budget: "${value}". Must be a non-negative integer.`);
36
33
  }
37
34
  return parsed;
38
35
  }
@@ -42,8 +39,7 @@ export function parsePositiveId(idRaw, label) {
42
39
  const s = String(idRaw ?? '').trim();
43
40
  const id = parseInt(s, 10);
44
41
  if (!/^\d+$/.test(s) || id <= 0 || !Number.isSafeInteger(id)) {
45
- printError(`Invalid ${label} id: "${idRaw}" (expected a positive integer).`);
46
- throw new CliExit(1);
42
+ fail(`Invalid ${label} id: "${idRaw}" (expected a positive integer).`);
47
43
  }
48
44
  return id;
49
45
  }
@@ -51,8 +47,7 @@ export function parseListLimit(flags) {
51
47
  const limitRaw = flags['limit'];
52
48
  const limit = resolveListLimit(limitRaw !== undefined ? parseInt(String(limitRaw), 10) : undefined);
53
49
  if (limit === undefined) {
54
- printError(`Invalid --limit: "${limitRaw}". Must be a positive integer.`);
55
- throw new CliExit(1);
50
+ fail(`Invalid --limit: "${limitRaw}". Must be a positive integer.`);
56
51
  }
57
52
  return limit;
58
53
  }
@@ -82,8 +77,7 @@ export function numberFlag(flags, name) {
82
77
  return undefined;
83
78
  const parsed = Number(v);
84
79
  if (v.trim() === '' || !Number.isFinite(parsed)) {
85
- printError(`Invalid --${name}: "${v}". Must be a number.`);
86
- throw new CliExit(1);
80
+ fail(`Invalid --${name}: "${v}". Must be a number.`);
87
81
  }
88
82
  return parsed;
89
83
  }
@@ -98,8 +92,7 @@ export function flagIsTrue(flags, name) {
98
92
  export function parseAsOfFlag(flags) {
99
93
  const asOf = stringFlag(flags, 'as-of');
100
94
  if (asOf !== undefined && Number.isNaN(new Date(asOf).getTime())) {
101
- printError(`Error: --as-of value "${asOf}" is not a valid ISO date (e.g. 2026-04-22 or 2026-04-22T12:00:00Z).`);
102
- throw new CliExit(1);
95
+ fail(`Error: --as-of value "${asOf}" is not a valid ISO date (e.g. 2026-04-22 or 2026-04-22T12:00:00Z).`);
103
96
  }
104
97
  return asOf;
105
98
  }
@@ -121,10 +114,8 @@ export function stringFlagOrExit(flags, key) {
121
114
  const v = flags[key];
122
115
  if (v === undefined)
123
116
  return undefined;
124
- if (v === true || v === false || Array.isArray(v)) {
125
- printError(`--${key} requires a value`);
126
- throw new CliExit(1);
127
- }
117
+ if (v === true || v === false || Array.isArray(v))
118
+ fail(`--${key} requires a value`);
128
119
  return v.trim();
129
120
  }
130
121
  //# sourceMappingURL=flag-values.js.map
@@ -1,6 +1,7 @@
1
1
  /** `hippo github` subcommands, split out of cli.ts so tests can import them without triggering main().
2
2
  * The dispatcher in cli.ts re-exports handleGitHub. */
3
3
  import { type GitHubFetcher } from '../connectors/github/octokit-client.js';
4
+ import type { JsonValue } from '../util/json.js';
4
5
  import type { CommandContext } from './flag-values.js';
5
6
  type FlagValue = string | boolean | string[];
6
7
  type Flags = Record<string, FlagValue>;
@@ -8,6 +9,11 @@ export declare function printGitHubBackfillUsage(): void;
8
9
  /** `hippo github backfill`; the fetcher is injectable so tests avoid the network (default `realGitHubFetcher`). */
9
10
  export declare function cmdGitHubBackfill(hippoRoot: string, tenantId: string, flags: Flags, fetcher?: GitHubFetcher): Promise<void>;
10
11
  export declare function cmdGitHubDlqList(hippoRoot: string, tenantId: string, _flags: Flags): void;
12
+ /** A parked payload that is not JSON, naming the command and the start of the text so the operator can find the row. */
13
+ export declare class GitHubPayloadParseError extends Error {
14
+ constructor(command: string, rawPayload: string, cause: unknown);
15
+ }
16
+ export declare function parseParkedPayload(rawPayload: string): JsonValue;
11
17
  export declare function cmdGitHubDlqReplay(hippoRoot: string, tenantId: string, args: string[], flags: Flags): Promise<void>;
12
18
  export declare function handleGitHub({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
13
19
  export {};
@@ -10,19 +10,22 @@ import { ingestEvent } from '../connectors/github/ingest.js';
10
10
  import { handleCommentDeleted } from '../connectors/github/deletion.js';
11
11
  import { computeDeletionKey } from '../connectors/github/signature.js';
12
12
  import { isGitHubIssueEvent, isGitHubIssueCommentEvent, isGitHubPullRequestEvent, isGitHubPullRequestReviewCommentEvent, } from '../connectors/github/types.js';
13
+ import { cliApiContext } from './api-context.js';
13
14
  import { CliExit } from './exit.js';
14
15
  import { errorMessage } from '../util/log.js';
15
16
  function isFlagString(value) {
16
17
  return typeof value === 'string';
17
18
  }
18
- // FlagValue never includes `number`, so a `value is number` predicate on it would not type-check; the generic wrapper narrows any type T instead.
19
+ // FlagValue never includes `number`, so a `value is number` predicate on it would not type-check; the generic wrapper
20
+ // narrows any type T instead.
19
21
  function isNumberLike(value) {
20
22
  return typeof value === 'number';
21
23
  }
22
24
  function isFlagValueNumberLike(value) {
23
25
  return isNumberLike(value);
24
26
  }
25
- /** Map a parsed envelope + eventName header to an IngestEvent; null for unknown event types or shapes failing the type guards. */
27
+ /** Map a parsed envelope + eventName header to an IngestEvent;
28
+ * null for unknown event types or shapes failing the type guards. */
26
29
  function parsedToIngestEvent(parsed, eventName) {
27
30
  if (eventName === 'issues' && isGitHubIssueEvent(parsed, eventName)) {
28
31
  return { eventName: 'issues', payload: parsed };
@@ -72,11 +75,7 @@ export async function cmdGitHubBackfill(hippoRoot, tenantId, flags, fetcher = re
72
75
  const maxPerStream = maxPerStreamFlag(flags['max']);
73
76
  const sinceFlag = flags['since'];
74
77
  const sinceIso = isFlagString(sinceFlag) ? sinceFlag : undefined;
75
- const ctx = {
76
- hippoRoot,
77
- tenantId,
78
- actor: adminActor('cli:github-backfill'),
79
- };
78
+ const ctx = { ...cliApiContext(hippoRoot, tenantId), actor: adminActor('cli:github-backfill') };
80
79
  try {
81
80
  const result = await backfillRepo(ctx, {
82
81
  repoFullName: repo,
@@ -102,8 +101,25 @@ export function cmdGitHubDlqList(hippoRoot, tenantId, _flags) {
102
101
  console.log(`${it.id}\t${it.bucket}\t${it.tenantId}\t${it.eventName ?? '-'}\t${it.receivedAt}\t${it.error}`);
103
102
  }
104
103
  }
104
+ const PAYLOAD_PREVIEW_CHARS = 200;
105
+ /** A parked payload that is not JSON, naming the command and the start of the text so the operator can find the row. */
106
+ export class GitHubPayloadParseError extends Error {
107
+ constructor(command, rawPayload, cause) {
108
+ const start = JSON.stringify(rawPayload.slice(0, PAYLOAD_PREVIEW_CHARS));
109
+ super(`${command}: payload is not valid JSON (${errorMessage(cause)}); starts with ${start}`, { cause });
110
+ this.name = 'GitHubPayloadParseError';
111
+ }
112
+ }
113
+ export function parseParkedPayload(rawPayload) {
114
+ try {
115
+ return JSON.parse(rawPayload);
116
+ }
117
+ catch (err) {
118
+ throw new GitHubPayloadParseError('hippo github dlq replay', rawPayload, err);
119
+ }
120
+ }
105
121
  const reingestParkedDelivery = async (innerCtx, args) => {
106
- const parsed = JSON.parse(args.rawPayload);
122
+ const parsed = parseParkedPayload(args.rawPayload);
107
123
  const event = parsedToIngestEvent(parsed, args.eventName);
108
124
  if (!event) {
109
125
  return { memoryId: null };
@@ -146,11 +162,7 @@ export async function cmdGitHubDlqReplay(hippoRoot, tenantId, args, flags) {
146
162
  throw new CliExit(1);
147
163
  }
148
164
  const force = flags['force'] === true;
149
- const ctx = {
150
- hippoRoot,
151
- tenantId,
152
- actor: adminActor('cli:github-dlq-replay'),
153
- };
165
+ const ctx = { ...cliApiContext(hippoRoot, tenantId), actor: adminActor('cli:github-dlq-replay') };
154
166
  // Without an ingestHook replay only bumps retry_count while printing "replay ok"; the real hook re-runs ingest.
155
167
  const result = await replayDlqEntry(ctx, id, {
156
168
  force,
@@ -1,3 +1,3 @@
1
1
  import { type CommandContext } from './flag-values.js';
2
- export declare function handleGoal({ hippoRoot, tenantId, args, flags }: CommandContext): void;
2
+ export declare function handleGoal({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
3
3
  //# sourceMappingURL=goals.d.ts.map
package/dist/cli/goals.js CHANGED
@@ -3,8 +3,8 @@ import { DEFAULT_TENANT_ID, envHippoSessionId } from '../util/env.js';
3
3
  import * as api from '../api/index.js';
4
4
  import { cliApiContext } from './api-context.js';
5
5
  import { printError } from './output.js';
6
- import { boolFlag, flagIsTrue, isStringFlag, stringFlag } from './flag-values.js';
7
- import { CliExit } from './exit.js';
6
+ import { boolFlag, flagIsTrue, isStringFlag, stringFlag, stringFlagOrExit, } from './flag-values.js';
7
+ import { fail } from './exit.js';
8
8
  // `hippo goal <push|list|complete|suspend|resume>`
9
9
  const GOAL_POLICY_TYPES = [
10
10
  'schema-fit-biased',
@@ -20,52 +20,42 @@ function sanitizeGoalName(s) {
20
20
  return s.replace(/[^\x20-\x7e\u0080-\uffff]/g, '?');
21
21
  }
22
22
  function resolveGoalSession(flags, defaultTenantId) {
23
- const sessionId = (flags['session-id'] !== undefined
24
- ? String(flags['session-id'])
25
- : envHippoSessionId() ?? '').trim();
23
+ const sessionId = (stringFlagOrExit(flags, 'session-id') ?? envHippoSessionId() ?? '').trim();
26
24
  if (!sessionId) {
27
- printError('session id required (set HIPPO_SESSION_ID or pass --session-id)');
28
- throw new CliExit(1);
25
+ fail('session id required (set HIPPO_SESSION_ID or pass --session-id)');
29
26
  }
30
- const tenantId = (flags['tenant-id'] !== undefined
31
- ? String(flags['tenant-id'])
32
- : defaultTenantId).trim() || DEFAULT_TENANT_ID;
27
+ const tenantId = (stringFlagOrExit(flags, 'tenant-id') ?? defaultTenantId).trim() || DEFAULT_TENANT_ID;
33
28
  return { sessionId, tenantId };
34
29
  }
35
30
  function readGoalPolicy(flags) {
36
31
  const policyRaw = flags['policy'];
37
32
  if (policyRaw === true) {
38
- printError('--policy requires a value (e.g., --policy error-prioritized)');
39
- throw new CliExit(1);
33
+ fail('--policy requires a value (e.g., --policy error-prioritized)');
40
34
  }
41
35
  if (!isStringFlag(policyRaw))
42
36
  return undefined;
43
37
  if (!isGoalPolicyType(policyRaw)) {
44
- printError(`Unknown --policy '${policyRaw}'. Expected one of: ${GOAL_POLICY_TYPES.join(' | ')}.`);
45
- throw new CliExit(1);
38
+ fail(`Unknown --policy '${policyRaw}'. Expected one of: ${GOAL_POLICY_TYPES.join(' | ')}.`);
46
39
  }
47
40
  return { policyType: policyRaw };
48
41
  }
49
42
  function readGoalLevel(flags) {
50
43
  const levelRaw = flags['level'];
51
44
  if (levelRaw === true) {
52
- printError('--level requires a value (e.g., --level 1)');
53
- throw new CliExit(1);
45
+ fail('--level requires a value (e.g., --level 1)');
54
46
  }
55
47
  if (levelRaw === undefined)
56
48
  return undefined;
57
49
  const parsed = Number(levelRaw);
58
50
  if (!Number.isFinite(parsed) || parsed < 0 || parsed > 2 || !Number.isInteger(parsed)) {
59
- printError('--level must be an integer in [0, 2]');
60
- throw new CliExit(1);
51
+ fail('--level must be an integer in [0, 2]');
61
52
  }
62
53
  return parsed;
63
54
  }
64
- function cmdGoalPush(hippoRoot, defaultTenantId, args, flags) {
55
+ async function cmdGoalPush(hippoRoot, defaultTenantId, args, flags) {
65
56
  const rawName = args.join(' ').trim();
66
57
  if (!rawName) {
67
- printError('Usage: hippo goal push <name> [--policy <type>] [--success "<condition>"] [--level N] [--parent <goalId>]');
68
- throw new CliExit(1);
58
+ fail('Usage: hippo goal push <name> [--policy <type>] [--success "<condition>"] [--level N] [--parent <goalId>]');
69
59
  }
70
60
  // Sanitize at WRITE time so corrupt names never enter the DB.
71
61
  const name = sanitizeGoalName(rawName);
@@ -76,18 +66,16 @@ function cmdGoalPush(hippoRoot, defaultTenantId, args, flags) {
76
66
  const policy = readGoalPolicy(flags);
77
67
  const successRaw = flags['success'];
78
68
  if (successRaw === true) {
79
- printError('--success requires a value (e.g., --success "<condition>")');
80
- throw new CliExit(1);
69
+ fail('--success requires a value (e.g., --success "<condition>")');
81
70
  }
82
71
  const successCondition = stringFlag(flags, 'success');
83
72
  const level = readGoalLevel(flags);
84
73
  const parentRaw = flags['parent'];
85
74
  if (parentRaw === true) {
86
- printError('--parent requires a value (e.g., --parent <goalId>)');
87
- throw new CliExit(1);
75
+ fail('--parent requires a value (e.g., --parent <goalId>)');
88
76
  }
89
77
  const parentGoalId = stringFlag(flags, 'parent');
90
- const goal = api.goalPush(cliApiContext(hippoRoot, tenantId), {
78
+ const goal = await api.goalPush(cliApiContext(hippoRoot, tenantId), {
91
79
  sessionId,
92
80
  goalName: name,
93
81
  level,
@@ -97,10 +85,10 @@ function cmdGoalPush(hippoRoot, defaultTenantId, args, flags) {
97
85
  });
98
86
  console.log(goal.id);
99
87
  }
100
- function cmdGoalList(hippoRoot, defaultTenantId, flags) {
88
+ async function cmdGoalList(hippoRoot, defaultTenantId, flags) {
101
89
  const { sessionId, tenantId } = resolveGoalSession(flags, defaultTenantId);
102
90
  const showAll = boolFlag(flags, 'all');
103
- const goals = api.goalList(cliApiContext(hippoRoot, tenantId), { sessionId, all: showAll });
91
+ const goals = await api.goalList(cliApiContext(hippoRoot, tenantId), { sessionId, all: showAll });
104
92
  if (goals.length === 0) {
105
93
  console.log('(no goals)');
106
94
  return;
@@ -119,79 +107,74 @@ function cmdGoalList(hippoRoot, defaultTenantId, flags) {
119
107
  outcome: Math.max(7, ...rows.map(r => r.outcome.length)),
120
108
  };
121
109
  const pad = (s, w) => s + ' '.repeat(Math.max(0, w - s.length));
122
- console.log(`${pad('id', widths.id)} ${pad('status', widths.status)} ${pad('name', widths.name)} ${pad('outcome', widths.outcome)}`);
110
+ console.log(`${pad('id', widths.id)} ${pad('status', widths.status)} ${pad('name', widths.name)} ` +
111
+ pad('outcome', widths.outcome));
123
112
  for (const r of rows) {
124
- console.log(`${pad(r.id, widths.id)} ${pad(r.status, widths.status)} ${pad(r.name, widths.name)} ${pad(r.outcome, widths.outcome)}`);
113
+ console.log(`${pad(r.id, widths.id)} ${pad(r.status, widths.status)} ${pad(r.name, widths.name)} ` +
114
+ pad(r.outcome, widths.outcome));
125
115
  }
126
116
  }
127
- function cmdGoalComplete(hippoRoot, tenantId, args, flags) {
117
+ async function cmdGoalComplete(hippoRoot, tenantId, args, flags) {
128
118
  const id = args[0];
129
119
  if (!id) {
130
- printError('Usage: hippo goal complete <id> [--outcome <0..1>] [--no-propagate]');
131
- throw new CliExit(1);
120
+ fail('Usage: hippo goal complete <id> [--outcome <0..1>] [--no-propagate]');
132
121
  }
133
122
  let outcomeScore;
134
123
  const outcomeRaw = flags['outcome'];
135
124
  if (outcomeRaw === true) {
136
- printError('--outcome requires a value (e.g., --outcome 0.9)');
137
- throw new CliExit(1);
125
+ fail('--outcome requires a value (e.g., --outcome 0.9)');
138
126
  }
139
127
  if (outcomeRaw !== undefined) {
140
128
  const parsed = Number(outcomeRaw);
141
129
  if (!Number.isFinite(parsed) || parsed < 0 || parsed > 1) {
142
- printError('--outcome must be a number in [0, 1]');
143
- throw new CliExit(1);
130
+ fail('--outcome must be a number in [0, 1]');
144
131
  }
145
132
  outcomeScore = parsed;
146
133
  }
147
134
  const noPropagate = flagIsTrue(flags, 'no-propagate');
148
- api.goalComplete(cliApiContext(hippoRoot, tenantId), id, { outcomeScore, noPropagate });
135
+ await api.goalComplete(cliApiContext(hippoRoot, tenantId), id, { outcomeScore, noPropagate });
149
136
  console.log('ok');
150
137
  }
151
- function cmdGoalSuspend(hippoRoot, tenantId, args) {
138
+ async function cmdGoalSuspend(hippoRoot, tenantId, args) {
152
139
  const id = args[0];
153
140
  if (!id) {
154
- printError('Usage: hippo goal suspend <id>');
155
- throw new CliExit(1);
141
+ fail('Usage: hippo goal suspend <id>');
156
142
  }
157
- api.goalSuspend(cliApiContext(hippoRoot, tenantId), id);
143
+ await api.goalSuspend(cliApiContext(hippoRoot, tenantId), id);
158
144
  console.log('ok');
159
145
  }
160
- function cmdGoalResume(hippoRoot, tenantId, args) {
146
+ async function cmdGoalResume(hippoRoot, tenantId, args) {
161
147
  const id = args[0];
162
148
  if (!id) {
163
- printError('Usage: hippo goal resume <id>');
164
- throw new CliExit(1);
149
+ fail('Usage: hippo goal resume <id>');
165
150
  }
166
- api.goalResume(cliApiContext(hippoRoot, tenantId), id);
151
+ await api.goalResume(cliApiContext(hippoRoot, tenantId), id);
167
152
  console.log('ok');
168
153
  }
169
- export function handleGoal({ hippoRoot, tenantId, args, flags }) {
154
+ export async function handleGoal({ hippoRoot, tenantId, args, flags }) {
170
155
  const sub = args[0];
171
156
  if (!sub) {
172
- printError('Usage: hippo goal <push|list|complete|suspend|resume> [args]');
173
- throw new CliExit(1);
157
+ fail('Usage: hippo goal <push|list|complete|suspend|resume> [args]');
174
158
  }
175
159
  const subArgs = args.slice(1);
176
160
  switch (sub) {
177
161
  case 'push':
178
- cmdGoalPush(hippoRoot, tenantId, subArgs, flags);
162
+ await cmdGoalPush(hippoRoot, tenantId, subArgs, flags);
179
163
  return;
180
164
  case 'list':
181
- cmdGoalList(hippoRoot, tenantId, flags);
165
+ await cmdGoalList(hippoRoot, tenantId, flags);
182
166
  return;
183
167
  case 'complete':
184
- cmdGoalComplete(hippoRoot, tenantId, subArgs, flags);
168
+ await cmdGoalComplete(hippoRoot, tenantId, subArgs, flags);
185
169
  return;
186
170
  case 'suspend':
187
- cmdGoalSuspend(hippoRoot, tenantId, subArgs);
171
+ await cmdGoalSuspend(hippoRoot, tenantId, subArgs);
188
172
  return;
189
173
  case 'resume':
190
- cmdGoalResume(hippoRoot, tenantId, subArgs);
174
+ await cmdGoalResume(hippoRoot, tenantId, subArgs);
191
175
  return;
192
176
  default:
193
- printError(`Unknown goal subcommand: ${sub}. Expected: push | list | complete | suspend | resume.`);
194
- throw new CliExit(1);
177
+ fail(`Unknown goal subcommand: ${sub}. Expected: push | list | complete | suspend | resume.`);
195
178
  }
196
179
  }
197
180
  //# sourceMappingURL=goals.js.map
@@ -1,3 +1,3 @@
1
1
  import { type CommandContext } from './flag-values.js';
2
- export declare function handleGraph({ hippoRoot, tenantId, args, flags }: CommandContext): void;
2
+ export declare function handleGraph({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
3
3
  //# sourceMappingURL=graph.d.ts.map