hippo-memory 1.71.0 → 1.72.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/README.md +1 -1
  2. package/dist/agent-memories/apply.d.ts +0 -11
  3. package/dist/agent-memories/apply.js +6 -21
  4. package/dist/agent-memories/claude-code.js +1 -1
  5. package/dist/agent-memories/codex.js +1 -1
  6. package/dist/agent-memories/copilot.d.ts +1 -3
  7. package/dist/agent-memories/copilot.js +1 -17
  8. package/dist/agent-memories/project-folds.d.ts +10 -0
  9. package/dist/agent-memories/project-folds.js +34 -0
  10. package/dist/agent-memories/sync.js +8 -6
  11. package/dist/api/assemble.js +1 -1
  12. package/dist/api/audit.d.ts +29 -1
  13. package/dist/api/audit.js +44 -5
  14. package/dist/api/auth.d.ts +7 -4
  15. package/dist/api/auth.js +12 -8
  16. package/dist/api/auto-sleep.d.ts +5 -2
  17. package/dist/api/auto-sleep.js +7 -3
  18. package/dist/api/availability.js +2 -3
  19. package/dist/api/cards.d.ts +42 -0
  20. package/dist/api/cards.js +52 -0
  21. package/dist/api/conflicts.d.ts +28 -0
  22. package/dist/api/conflicts.js +61 -0
  23. package/dist/api/context-render.js +4 -3
  24. package/dist/api/context-select.js +9 -11
  25. package/dist/api/context.js +17 -8
  26. package/dist/api/continuity.d.ts +47 -0
  27. package/dist/api/continuity.js +66 -0
  28. package/dist/api/dormant.js +4 -2
  29. package/dist/api/drill-down.js +1 -1
  30. package/dist/api/embeddings.d.ts +17 -0
  31. package/dist/api/embeddings.js +28 -0
  32. package/dist/api/error-reply.d.ts +8 -0
  33. package/dist/api/error-reply.js +21 -0
  34. package/dist/api/forget.d.ts +6 -2
  35. package/dist/api/forget.js +18 -7
  36. package/dist/api/goals.d.ts +1 -1
  37. package/dist/api/goals.js +5 -9
  38. package/dist/api/index.d.ts +4 -2
  39. package/dist/api/index.js +4 -2
  40. package/dist/api/instruction-detect.js +5 -1
  41. package/dist/api/learn.d.ts +4 -0
  42. package/dist/api/learn.js +53 -27
  43. package/dist/api/ledger-db.d.ts +2 -6
  44. package/dist/api/ledger-db.js +4 -36
  45. package/dist/api/memories.d.ts +19 -1
  46. package/dist/api/memories.js +39 -0
  47. package/dist/api/objects.d.ts +1 -1
  48. package/dist/api/outcome.js +1 -1
  49. package/dist/api/pilot-arm.d.ts +1 -11
  50. package/dist/api/pilot-arm.js +5 -45
  51. package/dist/api/predictions.d.ts +3 -1
  52. package/dist/api/predictions.js +6 -0
  53. package/dist/api/projects.d.ts +21 -0
  54. package/dist/api/projects.js +24 -0
  55. package/dist/api/promote.js +1 -1
  56. package/dist/api/prompt-hook.d.ts +15 -2
  57. package/dist/api/prompt-hook.js +44 -4
  58. package/dist/api/recall-cli.d.ts +3 -0
  59. package/dist/api/recall-cli.js +13 -4
  60. package/dist/api/recall-core.js +3 -3
  61. package/dist/api/recall-pipeline.js +6 -7
  62. package/dist/api/recall-request.js +1 -1
  63. package/dist/api/recall.d.ts +0 -3
  64. package/dist/api/recall.js +19 -44
  65. package/dist/api/remember-local.js +1 -1
  66. package/dist/api/remember.d.ts +2 -1
  67. package/dist/api/remember.js +3 -2
  68. package/dist/api/session-end.d.ts +22 -0
  69. package/dist/api/session-end.js +101 -0
  70. package/dist/api/sleep-run.d.ts +1 -1
  71. package/dist/api/sleep-run.js +13 -9
  72. package/dist/api/status.d.ts +24 -0
  73. package/dist/api/status.js +40 -0
  74. package/dist/api/store-init.d.ts +4 -0
  75. package/dist/api/store-init.js +9 -0
  76. package/dist/api/tokens.js +1 -1
  77. package/dist/api/types.d.ts +2 -0
  78. package/dist/api/types.js +6 -1
  79. package/dist/capture/caller-session.d.ts +0 -3
  80. package/dist/capture/caller-session.js +1 -12
  81. package/dist/capture/capture-error.d.ts +2 -2
  82. package/dist/capture/capture-error.js +23 -18
  83. package/dist/capture/codex-patch.js +3 -1
  84. package/dist/capture/command.js +36 -95
  85. package/dist/capture/compact.js +10 -5
  86. package/dist/capture/compaction-items-caller.js +11 -20
  87. package/dist/capture/compaction-record.d.ts +7 -93
  88. package/dist/capture/compaction-record.js +29 -426
  89. package/dist/capture/compaction-spool.d.ts +4 -2
  90. package/dist/capture/compaction-spool.js +20 -6
  91. package/dist/capture/copilot-transcript.d.ts +2 -1
  92. package/dist/capture/copilot-transcript.js +2 -1
  93. package/dist/capture/extract.d.ts +5 -2
  94. package/dist/capture/extract.js +4 -3
  95. package/dist/capture/failure-caller.d.ts +1 -1
  96. package/dist/capture/failure-caller.js +21 -16
  97. package/dist/capture/failure-reading.d.ts +2 -1
  98. package/dist/capture/failure-reading.js +7 -9
  99. package/dist/capture/pre-compact-caller.js +5 -4
  100. package/dist/capture/session-digest.js +4 -3
  101. package/dist/capture/session-end-caller.js +2 -1
  102. package/dist/capture/session-worker.js +3 -4
  103. package/dist/capture/transcript.d.ts +2 -1
  104. package/dist/capture/transcript.js +6 -3
  105. package/dist/capture/working-state.d.ts +4 -2
  106. package/dist/capture/working-state.js +4 -2
  107. package/dist/cli/audit-prune.d.ts +0 -25
  108. package/dist/cli/audit-prune.js +1 -27
  109. package/dist/cli/audit.js +13 -13
  110. package/dist/cli/auth.d.ts +1 -1
  111. package/dist/cli/auth.js +12 -13
  112. package/dist/cli/briefs.d.ts +1 -4
  113. package/dist/cli/briefs.js +37 -292
  114. package/dist/cli/card.js +41 -33
  115. package/dist/cli/client.d.ts +5 -0
  116. package/dist/cli/client.js +24 -8
  117. package/dist/cli/compact-resume-payload.js +1 -1
  118. package/dist/cli/context.d.ts +1 -1
  119. package/dist/cli/context.js +12 -12
  120. package/dist/cli/continuity.d.ts +1 -1
  121. package/dist/cli/continuity.js +36 -39
  122. package/dist/cli/curate.d.ts +1 -1
  123. package/dist/cli/curate.js +23 -27
  124. package/dist/cli/dag.d.ts +1 -1
  125. package/dist/cli/dag.js +23 -8
  126. package/dist/cli/decisions.d.ts +0 -2
  127. package/dist/cli/decisions.js +4 -281
  128. package/dist/cli/eval.d.ts +1 -1
  129. package/dist/cli/eval.js +12 -13
  130. package/dist/cli/explain.d.ts +1 -1
  131. package/dist/cli/explain.js +21 -25
  132. package/dist/cli/flag-values.js +16 -6
  133. package/dist/cli/flags.d.ts +0 -289
  134. package/dist/cli/flags.js +3 -138
  135. package/dist/cli/graph.d.ts +3 -0
  136. package/dist/cli/graph.js +83 -0
  137. package/dist/cli/hook-runtime.d.ts +3 -5
  138. package/dist/cli/hook-runtime.js +7 -34
  139. package/dist/cli/incidents.d.ts +3 -0
  140. package/dist/cli/incidents.js +112 -0
  141. package/dist/cli/init.d.ts +1 -1
  142. package/dist/cli/init.js +28 -19
  143. package/dist/cli/install-steps.d.ts +2 -1
  144. package/dist/cli/install-steps.js +11 -3
  145. package/dist/cli/last-sleep.js +1 -1
  146. package/dist/cli/lenient-id.d.ts +2 -0
  147. package/dist/cli/lenient-id.js +13 -0
  148. package/dist/cli/maintenance.d.ts +3 -3
  149. package/dist/cli/maintenance.js +29 -30
  150. package/dist/cli/notes.d.ts +2 -0
  151. package/dist/cli/notes.js +41 -0
  152. package/dist/cli/open-browser.d.ts +14 -0
  153. package/dist/cli/open-browser.js +26 -0
  154. package/dist/cli/playbooks.d.ts +3 -4
  155. package/dist/cli/playbooks.js +126 -290
  156. package/dist/cli/predictions.d.ts +3 -0
  157. package/dist/cli/predictions.js +175 -0
  158. package/dist/cli/print.js +2 -1
  159. package/dist/cli/projects.js +30 -22
  160. package/dist/cli/quality-repair-once.d.ts +1 -1
  161. package/dist/cli/quality-repair-once.js +6 -5
  162. package/dist/cli/recall.js +13 -7
  163. package/dist/cli/refine-llm.js +17 -17
  164. package/dist/cli/remember.js +12 -12
  165. package/dist/cli/scheduler.js +2 -1
  166. package/dist/cli/serve.js +3 -3
  167. package/dist/cli/session-hooks.d.ts +1 -1
  168. package/dist/cli/session-hooks.js +45 -115
  169. package/dist/cli/setup.d.ts +1 -1
  170. package/dist/cli/setup.js +17 -10
  171. package/dist/cli/shared.d.ts +2 -6
  172. package/dist/cli/shared.js +9 -29
  173. package/dist/cli/sleep-render.js +6 -3
  174. package/dist/cli/sleep.js +6 -37
  175. package/dist/cli/status.d.ts +3 -3
  176. package/dist/cli/status.js +32 -35
  177. package/dist/cli/transfer.d.ts +1 -1
  178. package/dist/cli/transfer.js +33 -31
  179. package/dist/cli/usage.d.ts +0 -79
  180. package/dist/cli/usage.js +1 -695
  181. package/dist/cli/verb-row.d.ts +32 -0
  182. package/dist/cli/verb-row.js +6 -0
  183. package/dist/cli/verbs/health.d.ts +27 -0
  184. package/dist/cli/verbs/health.js +232 -0
  185. package/dist/cli/verbs/memory.d.ts +16 -0
  186. package/dist/cli/verbs/memory.js +244 -0
  187. package/dist/cli/verbs/objects.d.ts +20 -0
  188. package/dist/cli/verbs/objects.js +254 -0
  189. package/dist/cli/verbs/sessions.d.ts +31 -0
  190. package/dist/cli/verbs/sessions.js +312 -0
  191. package/dist/cli/verbs.d.ts +81 -0
  192. package/dist/cli/verbs.js +7 -0
  193. package/dist/cli/versioned-verbs.d.ts +51 -0
  194. package/dist/cli/versioned-verbs.js +79 -0
  195. package/dist/cli.d.ts +1 -272
  196. package/dist/cli.js +23 -313
  197. package/dist/connectors/dlq.d.ts +39 -3
  198. package/dist/connectors/dlq.js +37 -3
  199. package/dist/connectors/github/backfill.js +12 -3
  200. package/dist/connectors/github/dlq.js +31 -73
  201. package/dist/connectors/github/ingest.d.ts +2 -6
  202. package/dist/connectors/github/ingest.js +3 -28
  203. package/dist/connectors/github/webhook.d.ts +2 -1
  204. package/dist/connectors/github/webhook.js +33 -2
  205. package/dist/connectors/ingest.d.ts +10 -0
  206. package/dist/connectors/ingest.js +28 -0
  207. package/dist/connectors/slack/dlq.js +49 -71
  208. package/dist/connectors/slack/ingest.d.ts +2 -6
  209. package/dist/connectors/slack/ingest.js +2 -27
  210. package/dist/connectors/slack/webhook.d.ts +2 -1
  211. package/dist/connectors/slack/webhook.js +2 -1
  212. package/dist/consolidate/conflicts.js +1 -1
  213. package/dist/consolidate/dag.js +15 -9
  214. package/dist/consolidate/dedupe.d.ts +7 -0
  215. package/dist/consolidate/dedupe.js +5 -3
  216. package/dist/consolidate/llm-passes.js +45 -19
  217. package/dist/consolidate/memory-value.js +2 -1
  218. package/dist/consolidate/merge.js +2 -2
  219. package/dist/consolidate/physics-pass.d.ts +6 -1
  220. package/dist/consolidate/physics-pass.js +26 -6
  221. package/dist/consolidate/replay.js +11 -4
  222. package/dist/consolidate/sleep.js +8 -5
  223. package/dist/consolidate/traces.js +3 -3
  224. package/dist/core/ablation.d.ts +10 -0
  225. package/dist/core/ablation.js +12 -0
  226. package/dist/{sharing/scope.d.ts → core/active-scope.d.ts} +1 -1
  227. package/dist/{sharing/scope.js → core/active-scope.js} +1 -1
  228. package/dist/core/ambient.d.ts +4 -0
  229. package/dist/core/ambient.js +39 -18
  230. package/dist/core/api-errors.d.ts +16 -0
  231. package/dist/core/api-errors.js +20 -0
  232. package/dist/core/card.js +3 -1
  233. package/dist/core/compaction-timing.d.ts +7 -0
  234. package/dist/core/compaction-timing.js +9 -0
  235. package/dist/core/config.d.ts +1 -1
  236. package/dist/core/config.js +7 -2
  237. package/dist/core/cosine.d.ts +3 -0
  238. package/dist/core/cosine.js +19 -0
  239. package/dist/{store → core}/markdown.d.ts +1 -1
  240. package/dist/{store → core}/markdown.js +2 -2
  241. package/dist/core/memory-audit.d.ts +17 -0
  242. package/dist/core/memory-audit.js +54 -0
  243. package/dist/core/memory.d.ts +10 -4
  244. package/dist/core/memory.js +25 -18
  245. package/dist/{consolidate → core}/merged-row.d.ts +1 -1
  246. package/dist/{consolidate → core}/merged-row.js +1 -1
  247. package/dist/core/physics.js +6 -16
  248. package/dist/core/prediction.d.ts +3 -0
  249. package/dist/core/prediction.js +6 -0
  250. package/dist/core/project-identity.d.ts +3 -0
  251. package/dist/core/project-identity.js +10 -1
  252. package/dist/{store → core}/recall-scope.d.ts +1 -10
  253. package/dist/{store → core}/recall-scope.js +2 -19
  254. package/dist/db/busy.d.ts +2 -7
  255. package/dist/db/busy.js +21 -26
  256. package/dist/db/connect.d.ts +0 -1
  257. package/dist/db/connect.js +5 -6
  258. package/dist/db/index.d.ts +3 -3
  259. package/dist/db/index.js +3 -3
  260. package/dist/db/migrations/index.d.ts +1 -1
  261. package/dist/db/migrations/index.js +3 -1
  262. package/dist/db/migrations/v55.d.ts +3 -0
  263. package/dist/db/migrations/v55.js +17 -0
  264. package/dist/db/open.d.ts +0 -2
  265. package/dist/db/open.js +6 -10
  266. package/dist/db/physics-state.js +3 -3
  267. package/dist/db/tables.d.ts +2 -0
  268. package/dist/db/tables.js +6 -2
  269. package/dist/db/vector-store.js +17 -4
  270. package/dist/db/wal-checkpointer.js +2 -1
  271. package/dist/doctor.js +11 -8
  272. package/dist/embeddings/local.d.ts +62 -0
  273. package/dist/embeddings/local.js +146 -0
  274. package/dist/{store/embeddings → embeddings}/provider.d.ts +5 -2
  275. package/dist/{store/embeddings → embeddings}/provider.js +18 -15
  276. package/dist/embeddings/transformers.d.ts +26 -0
  277. package/dist/embeddings/transformers.js +89 -0
  278. package/dist/entry/session-text.d.ts +1 -1
  279. package/dist/entry/session-text.js +1 -1
  280. package/dist/eval/eval-suite.js +17 -11
  281. package/dist/eval/eval.js +1 -1
  282. package/dist/eval/judgment.js +11 -4
  283. package/dist/graph/extract.js +3 -3
  284. package/dist/graph/recall.js +1 -1
  285. package/dist/graph/view.js +13 -5
  286. package/dist/graph/write.d.ts +1 -1
  287. package/dist/graph/write.js +9 -9
  288. package/dist/hooks/codex-session.js +3 -2
  289. package/dist/hooks/codex-wrapper.js +2 -1
  290. package/dist/hooks/json-hooks.js +4 -2
  291. package/dist/hooks/opencode.js +8 -5
  292. package/dist/hooks/shared.d.ts +0 -6
  293. package/dist/hooks/shared.js +4 -15
  294. package/dist/importers/core.js +1 -1
  295. package/dist/importers/sources.js +5 -4
  296. package/dist/importers/vault.js +7 -5
  297. package/dist/index.d.ts +3 -2
  298. package/dist/index.js +3 -2
  299. package/dist/learn/autolearn.d.ts +10 -2
  300. package/dist/learn/autolearn.js +32 -12
  301. package/dist/learn/churn-git.js +13 -4
  302. package/dist/learn/extract.d.ts +3 -2
  303. package/dist/learn/extract.js +6 -4
  304. package/dist/learn/forward-claim-detector.js +4 -2
  305. package/dist/learn/invalidation.js +10 -6
  306. package/dist/mcp/admin-tools.d.ts +2 -2
  307. package/dist/mcp/admin-tools.js +27 -48
  308. package/dist/mcp/format.js +3 -2
  309. package/dist/mcp/framing.d.ts +1 -0
  310. package/dist/mcp/framing.js +1 -1
  311. package/dist/mcp/memory-tools.js +3 -1
  312. package/dist/mcp/protocol.d.ts +11 -7
  313. package/dist/mcp/protocol.js +25 -12
  314. package/dist/mcp/recall-tools.js +12 -9
  315. package/dist/mcp/request.js +2 -1
  316. package/dist/mcp/stdio.js +24 -8
  317. package/dist/mcp/tool-args.js +2 -1
  318. package/dist/mcp/tools.js +44 -21
  319. package/dist/objects/customer-notes.d.ts +2 -2
  320. package/dist/objects/decisions.d.ts +2 -2
  321. package/dist/objects/descriptor.d.ts +1 -1
  322. package/dist/objects/incidents.d.ts +2 -2
  323. package/dist/objects/lifecycle.d.ts +1 -1
  324. package/dist/objects/lifecycle.js +2 -1
  325. package/dist/objects/policies.d.ts +2 -2
  326. package/dist/objects/policies.js +2 -1
  327. package/dist/objects/processes.d.ts +2 -2
  328. package/dist/objects/project-briefs.d.ts +2 -2
  329. package/dist/objects/project-briefs.js +2 -3
  330. package/dist/objects/skills.d.ts +2 -2
  331. package/dist/postinstall.js +1 -1
  332. package/dist/rerankers/clef.js +3 -6
  333. package/dist/rerankers/cross-encoder.d.ts +31 -2
  334. package/dist/rerankers/cross-encoder.js +63 -97
  335. package/dist/rerankers/index.js +5 -4
  336. package/dist/rerankers/jev.js +2 -4
  337. package/dist/rerankers/outage-warning.d.ts +3 -1
  338. package/dist/rerankers/outage-warning.js +5 -3
  339. package/dist/search/bm25-search.js +1 -1
  340. package/dist/search/boosts.js +1 -1
  341. package/dist/search/embed-memories.d.ts +9 -0
  342. package/dist/search/embed-memories.js +377 -0
  343. package/dist/search/goal-boost.d.ts +1 -1
  344. package/dist/search/goal-boost.js +6 -3
  345. package/dist/search/hybrid.d.ts +9 -2
  346. package/dist/search/hybrid.js +9 -4
  347. package/dist/search/physics-search.d.ts +6 -3
  348. package/dist/search/physics-search.js +22 -15
  349. package/dist/search/rerank.js +1 -1
  350. package/dist/search/vector.d.ts +8 -6
  351. package/dist/search/vector.js +10 -13
  352. package/dist/server/auth.d.ts +2 -0
  353. package/dist/server/auth.js +17 -7
  354. package/dist/server/boot.js +7 -66
  355. package/dist/server/client-ip.d.ts +0 -2
  356. package/dist/server/client-ip.js +3 -2
  357. package/dist/server/deadline.d.ts +0 -2
  358. package/dist/server/deadline.js +1 -7
  359. package/dist/server/defaults.d.ts +1 -0
  360. package/dist/server/defaults.js +1 -0
  361. package/dist/server/mcp-http.js +16 -11
  362. package/dist/server/request.js +7 -2
  363. package/dist/server/route-checks.d.ts +7 -0
  364. package/dist/server/route-checks.js +42 -0
  365. package/dist/server/route-table.d.ts +9 -8
  366. package/dist/server/route-table.js +127 -132
  367. package/dist/server/routes/admin.d.ts +8 -8
  368. package/dist/server/routes/admin.js +13 -21
  369. package/dist/server/routes/customer-notes.d.ts +6 -6
  370. package/dist/server/routes/customer-notes.js +1 -2
  371. package/dist/server/routes/decisions.d.ts +6 -6
  372. package/dist/server/routes/decisions.js +2 -4
  373. package/dist/server/routes/incidents.d.ts +6 -6
  374. package/dist/server/routes/incidents.js +2 -5
  375. package/dist/server/routes/memories.d.ts +9 -9
  376. package/dist/server/routes/memories.js +15 -38
  377. package/dist/server/routes/object-routes.d.ts +6 -6
  378. package/dist/server/routes/object-routes.js +4 -7
  379. package/dist/server/routes/policies.d.ts +7 -7
  380. package/dist/server/routes/policies.js +2 -4
  381. package/dist/server/routes/predictions.d.ts +6 -6
  382. package/dist/server/routes/predictions.js +9 -13
  383. package/dist/server/routes/processes.d.ts +6 -6
  384. package/dist/server/routes/processes.js +1 -2
  385. package/dist/server/routes/project-briefs.d.ts +7 -7
  386. package/dist/server/routes/project-briefs.js +2 -4
  387. package/dist/server/routes/recall.d.ts +5 -5
  388. package/dist/server/routes/recall.js +6 -10
  389. package/dist/server/routes/skills.d.ts +7 -7
  390. package/dist/server/routes/skills.js +2 -4
  391. package/dist/server/server-detect.d.ts +7 -1
  392. package/dist/server/server-detect.js +36 -11
  393. package/dist/server/sleep-child.js +26 -7
  394. package/dist/server/sleep-offload.d.ts +11 -5
  395. package/dist/server/sleep-offload.js +17 -11
  396. package/dist/server/types.d.ts +22 -10
  397. package/dist/server/validation.d.ts +1 -2
  398. package/dist/server/validation.js +6 -11
  399. package/dist/server.d.ts +5 -4
  400. package/dist/server.js +5 -4
  401. package/dist/sharing/global-store.js +2 -2
  402. package/dist/sharing/global-sync.js +38 -45
  403. package/dist/sharing/project-merge.d.ts +7 -14
  404. package/dist/sharing/project-merge.js +57 -121
  405. package/dist/sharing/search-both.js +1 -1
  406. package/dist/sharing/share.d.ts +2 -0
  407. package/dist/sharing/share.js +37 -34
  408. package/dist/store/ambient.js +5 -6
  409. package/dist/store/audit-event.d.ts +1 -1
  410. package/dist/store/audit.d.ts +0 -16
  411. package/dist/store/audit.js +4 -55
  412. package/dist/store/auth.d.ts +4 -2
  413. package/dist/store/auth.js +7 -3
  414. package/dist/store/candidates.d.ts +3 -2
  415. package/dist/store/candidates.js +42 -23
  416. package/dist/store/capture-write.d.ts +17 -0
  417. package/dist/store/capture-write.js +35 -0
  418. package/dist/store/cards.js +1 -1
  419. package/dist/store/compaction-caller.d.ts +18 -0
  420. package/dist/store/compaction-caller.js +29 -0
  421. package/dist/store/compactions-record.d.ts +115 -0
  422. package/dist/store/compactions-record.js +417 -0
  423. package/dist/store/compactions.js +6 -4
  424. package/dist/store/conflicts.js +7 -4
  425. package/dist/store/connectors/dlq.d.ts +10 -0
  426. package/dist/store/connectors/dlq.js +32 -0
  427. package/dist/store/connectors/github.d.ts +7 -9
  428. package/dist/store/connectors/github.js +30 -53
  429. package/dist/store/connectors/slack.d.ts +2 -11
  430. package/dist/store/connectors/slack.js +18 -47
  431. package/dist/store/dashboard-reads.js +7 -6
  432. package/dist/store/delete-and-batch.d.ts +6 -0
  433. package/dist/store/delete-and-batch.js +36 -3
  434. package/dist/store/delivery-recorder.d.ts +10 -3
  435. package/dist/store/delivery-recorder.js +12 -5
  436. package/dist/store/descendant-page.js +6 -3
  437. package/dist/store/dormant.d.ts +1 -1
  438. package/dist/store/dormant.js +3 -1
  439. package/dist/store/embeddings/index.d.ts +2 -12
  440. package/dist/store/embeddings/index.js +5 -374
  441. package/dist/store/entry-reads.d.ts +13 -4
  442. package/dist/store/entry-reads.js +47 -11
  443. package/dist/store/entry-writes.d.ts +5 -5
  444. package/dist/store/entry-writes.js +32 -12
  445. package/dist/store/failure-log-at.d.ts +8 -0
  446. package/dist/store/failure-log-at.js +16 -0
  447. package/dist/store/failure-log.d.ts +2 -2
  448. package/dist/store/failure-log.js +5 -3
  449. package/dist/{trust → store}/gated-write.d.ts +3 -1
  450. package/dist/{trust → store}/gated-write.js +7 -5
  451. package/dist/store/goals.js +20 -18
  452. package/dist/store/graph-reads.js +4 -2
  453. package/dist/store/graph-writes.d.ts +6 -6
  454. package/dist/store/graph-writes.js +48 -71
  455. package/dist/store/handoffs.d.ts +1 -1
  456. package/dist/store/handoffs.js +6 -6
  457. package/dist/store/index-and-stats.js +2 -2
  458. package/dist/store/key-writes.js +1 -1
  459. package/dist/store/ledger-turn.d.ts +9 -0
  460. package/dist/store/ledger-turn.js +38 -0
  461. package/dist/store/mirrors.js +10 -6
  462. package/dist/store/open.d.ts +0 -4
  463. package/dist/store/open.js +40 -53
  464. package/dist/store/pilot-arm.d.ts +12 -0
  465. package/dist/store/pilot-arm.js +42 -0
  466. package/dist/store/port.d.ts +9 -3
  467. package/dist/store/port.js +8 -0
  468. package/dist/store/predictions.d.ts +1 -2
  469. package/dist/store/predictions.js +3 -6
  470. package/dist/store/project-tags.d.ts +62 -0
  471. package/dist/store/project-tags.js +67 -0
  472. package/dist/store/quarantine.js +2 -1
  473. package/dist/store/recall-trace.d.ts +2 -0
  474. package/dist/store/recall-trace.js +18 -2
  475. package/dist/store/rejected-values.js +2 -1
  476. package/dist/store/rejection-probe.d.ts +4 -0
  477. package/dist/store/rejection-probe.js +19 -0
  478. package/dist/store/rejection.d.ts +0 -17
  479. package/dist/store/rejection.js +1 -21
  480. package/dist/store/rule-sql.d.ts +9 -0
  481. package/dist/store/rule-sql.js +21 -2
  482. package/dist/store/search-rows.js +9 -4
  483. package/dist/store/sessions.js +4 -2
  484. package/dist/store/set-aside.d.ts +14 -0
  485. package/dist/store/set-aside.js +23 -0
  486. package/dist/store/sqlite/busy.d.ts +3 -0
  487. package/dist/store/sqlite/busy.js +8 -0
  488. package/dist/store/sqlite/connector-events-group.js +4 -7
  489. package/dist/store/sqlite/connector-writes-group.js +3 -3
  490. package/dist/store/sqlite/entry-writes-group.js +2 -2
  491. package/dist/store/sqlite/error-codec.js +4 -3
  492. package/dist/store/sqlite/executor.js +10 -4
  493. package/dist/store/sqlite/graph-reads-group.js +1 -1
  494. package/dist/store/sqlite/held-connection.d.ts +9 -0
  495. package/dist/store/sqlite/held-connection.js +41 -0
  496. package/dist/store/sqlite/object-rows.d.ts +1 -1
  497. package/dist/store/sqlite/objects-group.d.ts +1 -1
  498. package/dist/store/sqlite/objects-group.js +1 -1
  499. package/dist/store/sqlite/store.js +14 -12
  500. package/dist/store/summaries.d.ts +3 -3
  501. package/dist/store/summaries.js +5 -4
  502. package/dist/store/token-ledger.d.ts +0 -7
  503. package/dist/store/token-ledger.js +0 -35
  504. package/dist/store/vector-index.js +3 -2
  505. package/dist/support-bundle.js +2 -3
  506. package/dist/trust/reject-flow.js +2 -2
  507. package/dist/util/agent-homes.d.ts +15 -0
  508. package/dist/util/agent-homes.js +34 -0
  509. package/dist/util/anthropic-messages.d.ts +3 -0
  510. package/dist/util/anthropic-messages.js +22 -5
  511. package/dist/util/chunked.d.ts +3 -0
  512. package/dist/util/chunked.js +10 -0
  513. package/dist/util/ellipsize.d.ts +3 -0
  514. package/dist/util/ellipsize.js +5 -0
  515. package/dist/util/env.d.ts +2 -1
  516. package/dist/util/env.js +2 -1
  517. package/dist/util/format.d.ts +3 -0
  518. package/dist/util/format.js +6 -0
  519. package/dist/util/hook-payload.d.ts +8 -0
  520. package/dist/util/hook-payload.js +37 -0
  521. package/dist/util/http-retry.d.ts +6 -0
  522. package/dist/util/http-retry.js +43 -5
  523. package/dist/util/http-util.d.ts +0 -8
  524. package/dist/util/http-util.js +10 -21
  525. package/dist/util/limits.d.ts +7 -0
  526. package/dist/util/limits.js +14 -0
  527. package/dist/util/log.d.ts +4 -0
  528. package/dist/util/log.js +9 -0
  529. package/dist/util/request-scope.d.ts +3 -1
  530. package/dist/util/request-scope.js +11 -6
  531. package/dist/util/secret-detect.js +6 -1
  532. package/dist/util/sqlite-blocked.d.ts +2 -0
  533. package/dist/util/sqlite-blocked.js +5 -0
  534. package/dist/util/stream-tee.d.ts +3 -0
  535. package/dist/util/stream-tee.js +35 -0
  536. package/dist/util/time.d.ts +4 -0
  537. package/dist/util/time.js +4 -0
  538. package/dist/util/version.d.ts +1 -1
  539. package/dist/util/version.js +1 -1
  540. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  541. package/extensions/openclaw-plugin/package.json +1 -1
  542. package/openclaw.plugin.json +1 -1
  543. package/package.json +2 -2
  544. package/dist/store/embeddings/local.d.ts +0 -15
  545. package/dist/store/embeddings/local.js +0 -175
  546. /package/dist/{cli → api}/correction-latency.d.ts +0 -0
  547. /package/dist/{cli → api}/correction-latency.js +0 -0
  548. /package/dist/{cli → api}/provenance-coverage.d.ts +0 -0
  549. /package/dist/{cli → api}/provenance-coverage.js +0 -0
  550. /package/dist/{store → core}/object-types.d.ts +0 -0
  551. /package/dist/{store → core}/object-types.js +0 -0
  552. /package/dist/{capture → util}/compaction-items.d.ts +0 -0
  553. /package/dist/{capture → util}/compaction-items.js +0 -0
  554. /package/dist/{store → util}/yaml.d.ts +0 -0
  555. /package/dist/{store → util}/yaml.js +0 -0
@@ -6,295 +6,6 @@ export interface VerbFlags {
6
6
  readonly numbers?: readonly string[];
7
7
  readonly lists?: readonly string[];
8
8
  }
9
- export declare const VERB_FLAGS: {
10
- init: {
11
- switches: string[];
12
- values: string[];
13
- numbers: string[];
14
- };
15
- remember: {
16
- switches: string[];
17
- values: string[];
18
- lists: string[];
19
- };
20
- recall: {
21
- switches: string[];
22
- values: string[];
23
- numbers: string[];
24
- };
25
- drill: {
26
- switches: string[];
27
- values: string[];
28
- numbers: string[];
29
- };
30
- assemble: {
31
- switches: string[];
32
- values: string[];
33
- };
34
- supersede: {
35
- switches: string[];
36
- values: string[];
37
- lists: string[];
38
- };
39
- explain: {
40
- switches: string[];
41
- values: string[];
42
- numbers: string[];
43
- };
44
- eval: {
45
- switches: string[];
46
- values: string[];
47
- numbers: string[];
48
- };
49
- trace: {
50
- switches: string[];
51
- values: string[];
52
- lists: string[];
53
- };
54
- refine: {
55
- switches: string[];
56
- values: string[];
57
- numbers: string[];
58
- };
59
- sleep: {
60
- switches: string[];
61
- values: string[];
62
- };
63
- 'last-sleep': {
64
- switches: string[];
65
- values: string[];
66
- };
67
- 'session-end': {
68
- switches: string[];
69
- values: string[];
70
- };
71
- '__session-end-worker': {
72
- switches: string[];
73
- values: string[];
74
- };
75
- 'pre-compact': {
76
- values: string[];
77
- };
78
- 'post-compact': {
79
- values: string[];
80
- };
81
- 'capture-error': {
82
- values: string[];
83
- };
84
- 'compact-resume': {};
85
- 'codex-run': {};
86
- '__codex-session-end-worker': {
87
- values: string[];
88
- };
89
- dedup: {
90
- switches: string[];
91
- numbers: string[];
92
- };
93
- dag: {
94
- switches: string[];
95
- };
96
- auth: {
97
- switches: string[];
98
- values: string[];
99
- numbers: string[];
100
- };
101
- goal: {
102
- switches: string[];
103
- values: string[];
104
- };
105
- slack: {
106
- switches: string[];
107
- values: string[];
108
- };
109
- github: {
110
- switches: string[];
111
- values: string[];
112
- };
113
- audit: {
114
- switches: string[];
115
- values: string[];
116
- numbers: string[];
117
- };
118
- 'correction-latency': {
119
- switches: string[];
120
- };
121
- provenance: {
122
- switches: string[];
123
- };
124
- status: {};
125
- outcome: {
126
- switches: string[];
127
- values: string[];
128
- };
129
- conflicts: {
130
- switches: string[];
131
- values: string[];
132
- };
133
- resolve: {
134
- switches: string[];
135
- values: string[];
136
- };
137
- reject: {
138
- switches: string[];
139
- values: string[];
140
- };
141
- rejections: {
142
- switches: string[];
143
- };
144
- unreject: {
145
- switches: string[];
146
- };
147
- dormant: {
148
- switches: string[];
149
- numbers: string[];
150
- };
151
- projects: {
152
- switches: string[];
153
- };
154
- quarantine: {
155
- switches: string[];
156
- };
157
- tokens: {
158
- switches: string[];
159
- numbers: string[];
160
- };
161
- failures: {
162
- switches: string[];
163
- numbers: string[];
164
- };
165
- doctor: {
166
- switches: string[];
167
- };
168
- 'support-bundle': {
169
- switches: string[];
170
- values: string[];
171
- };
172
- snapshot: {
173
- switches: string[];
174
- values: string[];
175
- };
176
- session: {
177
- switches: string[];
178
- values: string[];
179
- numbers: string[];
180
- };
181
- handoff: {
182
- switches: string[];
183
- values: string[];
184
- lists: string[];
185
- };
186
- card: {
187
- switches: string[];
188
- values: string[];
189
- lists: string[];
190
- };
191
- predict: {
192
- values: string[];
193
- numbers: string[];
194
- };
195
- current: {
196
- switches: string[];
197
- };
198
- forget: {
199
- switches: string[];
200
- values: string[];
201
- };
202
- inspect: {};
203
- context: {
204
- switches: string[];
205
- values: string[];
206
- numbers: string[];
207
- };
208
- hook: {};
209
- setup: {
210
- switches: string[];
211
- };
212
- 'daily-runner': {};
213
- embed: {
214
- switches: string[];
215
- };
216
- watch: {};
217
- learn: {
218
- switches: string[];
219
- values: string[];
220
- numbers: string[];
221
- };
222
- promote: {};
223
- sync: {
224
- switches: string[];
225
- };
226
- share: {
227
- switches: string[];
228
- numbers: string[];
229
- };
230
- peers: {
231
- switches: string[];
232
- };
233
- import: {
234
- switches: string[];
235
- values: string[];
236
- lists: string[];
237
- };
238
- export: {
239
- values: string[];
240
- };
241
- capture: {
242
- switches: string[];
243
- values: string[];
244
- };
245
- dashboard: {
246
- numbers: string[];
247
- };
248
- wm: {
249
- switches: string[];
250
- values: string[];
251
- numbers: string[];
252
- };
253
- mcp: {};
254
- serve: {
255
- values: string[];
256
- numbers: string[];
257
- };
258
- invalidate: {
259
- switches: string[];
260
- values: string[];
261
- };
262
- decide: {
263
- values: string[];
264
- numbers: string[];
265
- };
266
- incident: {
267
- values: string[];
268
- numbers: string[];
269
- lists: string[];
270
- };
271
- process: {
272
- values: string[];
273
- numbers: string[];
274
- lists: string[];
275
- };
276
- policy: {
277
- values: string[];
278
- numbers: string[];
279
- };
280
- skill: {
281
- values: string[];
282
- numbers: string[];
283
- };
284
- brief: {
285
- switches: string[];
286
- values: string[];
287
- numbers: string[];
288
- };
289
- note: {
290
- values: string[];
291
- numbers: string[];
292
- };
293
- graph: {
294
- switches: string[];
295
- values: string[];
296
- };
297
- };
298
9
  /** How parseArgs reads `--name` on the verb with these flags; `undefined` is a command the table lacks. */
299
10
  export declare function flagKind(verb: VerbFlags | undefined, name: string): FlagKind;
300
11
  /** Whether any verb, or the entry point, reads `--name`. */
package/dist/cli/flags.js CHANGED
@@ -1,144 +1,9 @@
1
- // Each verb's flags as data, keyed like the command table: parseArgs needs a flag's kind before the verb's module loads.
1
+ // Each flag's kind, read from the verb table's flags: parseArgs needs a flag's kind before the verb's module loads.
2
+ import { COMMANDS } from './verbs.js';
2
3
  // The entry point reads these for every verb, so no verb declares them.
3
4
  const GLOBAL_FLAGS = { switches: ['help', 'version'] };
4
- export const VERB_FLAGS = {
5
- init: { switches: ['global', 'no-hooks', 'no-learn', 'no-schedule'], values: ['scan'], numbers: ['days'] },
6
- remember: {
7
- switches: ['error', 'extract', 'force', 'global', 'inferred', 'observed', 'pin', 'verified'],
8
- values: ['artifact-ref', 'kind', 'layer', 'owner', 'scope'],
9
- lists: ['tag'],
10
- },
11
- recall: {
12
- switches: ['classic', 'continuity', 'equal-sources', 'evc-adaptive', 'filter-conflicts', 'graph-stream',
13
- 'include-superseded', 'json', 'multihop', 'no-mmr', 'physics', 'rerank-utility', 'value-aware', 'why'],
14
- values: ['as-of', 'budget', 'goal', 'graph-hops', 'graph-seeds', 'hops', 'layer', 'max-neighbors', 'outcome',
15
- 'reranker', 'salience-threshold', 'scope', 'session-id'],
16
- numbers: ['limit', 'local-bump', 'min-results', 'mmr-lambda', 'reranker-top-k'],
17
- },
18
- drill: { switches: ['json'], values: ['budget', 'depth'], numbers: ['limit'] },
19
- assemble: { switches: ['json', 'no-summarize-older'], values: ['budget', 'fresh-tail', 'scope', 'session'] },
20
- supersede: { switches: ['pin'], values: ['layer'], lists: ['tag'] },
21
- explain: {
22
- switches: ['classic', 'equal-sources', 'include-superseded', 'json', 'no-mmr', 'physics'],
23
- values: ['as-of', 'budget', 'scope'],
24
- numbers: ['limit', 'local-bump', 'mmr-lambda'],
25
- },
26
- eval: {
27
- switches: ['bootstrap', 'equal-sources', 'json', 'no-mmr', 'save-baseline', 'show-cases', 'suite'],
28
- values: ['baseline', 'compare', 'out'],
29
- numbers: ['embedding-weight', 'local-bump', 'max-cases', 'min-mrr', 'mmr-lambda'],
30
- },
31
- trace: { switches: ['json'], values: ['outcome', 'session', 'source', 'steps', 'task'], lists: ['tag'] },
32
- refine: { switches: ['all', 'dry-run', 'json'], values: ['model'], numbers: ['limit'] },
33
- sleep: { switches: ['dry-run', 'no-learn', 'no-share'], values: ['log-file'] },
34
- 'last-sleep': { switches: ['keep'], values: ['path'] },
35
- 'session-end': {
36
- switches: ['dry-run', 'no-learn', 'no-share', 'turn'],
37
- values: ['format', 'log-file', 'runtime', 'session-id', 'transcript'],
38
- },
39
- '__session-end-worker': {
40
- switches: ['dry-run', 'no-learn', 'no-share', 'turn'],
41
- values: ['log-file', 'session-id', 'transcript'],
42
- },
43
- 'pre-compact': { values: ['format', 'log-file', 'runtime'] },
44
- 'post-compact': { values: ['log-file'] },
45
- 'capture-error': { values: ['format', 'runtime'] },
46
- 'compact-resume': {},
47
- 'codex-run': {},
48
- '__codex-session-end-worker': { values: ['codex-home', 'history-path', 'log-file', 'start-offset', 'started-at'] },
49
- dedup: { switches: ['dry-run'], numbers: ['threshold'] },
50
- dag: { switches: ['stats'] },
51
- auth: { switches: ['all', 'global', 'json', 'no-expiry'], values: ['label', 'role', 'tenant'], numbers: ['ttl-days'] },
52
- goal: {
53
- switches: ['all', 'no-propagate'],
54
- values: ['level', 'outcome', 'parent', 'policy', 'session-id', 'success', 'tenant-id'],
55
- },
56
- slack: { switches: ['force'], values: ['channel', 'since', 'team', 'tenant'] },
57
- github: { switches: ['force'], values: ['max', 'repo', 'since'] },
58
- audit: {
59
- switches: ['apply', 'dry-run', 'fix', 'global', 'json'],
60
- values: ['older-than', 'op', 'since', 'tenant'],
61
- numbers: ['limit'],
62
- },
63
- 'correction-latency': { switches: ['json'] },
64
- provenance: { switches: ['json', 'strict'] },
65
- status: {},
66
- outcome: { switches: ['bad', 'good'], values: ['id'] },
67
- conflicts: { switches: ['json'], values: ['status'] },
68
- resolve: { switches: ['forget', 'reject-loser'], values: ['keep', 'reason'] },
69
- reject: { switches: ['global'], values: ['reason', 'value'] },
70
- rejections: { switches: ['global', 'json'] },
71
- unreject: { switches: ['global'] },
72
- dormant: { switches: ['global', 'json'], numbers: ['limit'] },
73
- projects: { switches: ['apply', 'global', 'json'] },
74
- quarantine: { switches: ['all', 'global', 'json'] },
75
- tokens: { switches: ['global', 'json'], numbers: ['days'] },
76
- failures: { switches: ['global', 'json'], numbers: ['days'] },
77
- doctor: { switches: ['json'] },
78
- 'support-bundle': { switches: ['include-logs'], values: ['out'] },
79
- snapshot: { switches: ['json'], values: ['id', 'next-step', 'session', 'source', 'status', 'summary', 'task'] },
80
- session: {
81
- switches: ['json'],
82
- values: ['content', 'id', 'outcome', 'session', 'source', 'summary', 'task', 'type'],
83
- numbers: ['limit'],
84
- },
85
- handoff: {
86
- switches: ['json'],
87
- values: ['card-id', 'id', 'next', 'outcome', 'session', 'summary', 'target-runtime', 'task', 'tests'],
88
- lists: ['artifact', 'constraint'],
89
- },
90
- // Every card subcommand's flags together; card.ts then refuses the ones its subcommand does not read.
91
- card: {
92
- switches: ['json'],
93
- values: ['author', 'body', 'budget', 'contract', 'outcome', 'reason', 'repo', 'run', 'runtime', 'session',
94
- 'status', 'title'],
95
- lists: ['depends-on'],
96
- },
97
- predict: {
98
- values: ['actual', 'class', 'estimate', 'note', 'state', 'status', 'target', 'unit'],
99
- numbers: ['limit'],
100
- },
101
- current: { switches: ['json'] },
102
- forget: { switches: ['archive', 'dry-run'], values: ['reason'] },
103
- inspect: {},
104
- context: {
105
- switches: ['auto', 'cross-project', 'pinned-only'],
106
- values: ['budget', 'format', 'framing', 'include-recent', 'runtime', 'scope'],
107
- numbers: ['limit'],
108
- },
109
- hook: {},
110
- setup: { switches: ['all', 'dry-run', 'no-learn', 'no-schedule'] },
111
- 'daily-runner': {},
112
- embed: { switches: ['global', 'reset-physics', 'status'] },
113
- watch: {},
114
- learn: { switches: ['git'], values: ['repos'], numbers: ['days'] },
115
- promote: {},
116
- sync: { switches: ['cross-project'] },
117
- share: { switches: ['auto', 'dry-run', 'force'], numbers: ['min-score'] },
118
- peers: { switches: ['all-tenants'] },
119
- import: {
120
- switches: ['agents', 'dry-run', 'global'],
121
- values: ['chatgpt', 'claude', 'cursor', 'file', 'markdown', 'name', 'scope', 'vault'],
122
- lists: ['tag'],
123
- },
124
- export: { values: ['format'] },
125
- capture: { switches: ['dry-run', 'global', 'last-session', 'stdin'], values: ['file', 'log-file', 'transcript'] },
126
- dashboard: { numbers: ['port'] },
127
- wm: { switches: ['json'], values: ['content', 'importance', 'scope', 'session', 'task'], numbers: ['limit'] },
128
- mcp: {},
129
- serve: { values: ['host', 'tls-cert', 'tls-key'], numbers: ['port'] },
130
- invalidate: { switches: ['churn', 'dry-run'], values: ['id', 'reason'] },
131
- decide: { values: ['context', 'status', 'supersedes'], numbers: ['limit'] },
132
- incident: { values: ['context', 'resolution', 'status'], numbers: ['limit'], lists: ['link'] },
133
- process: { values: ['change', 'description', 'status'], numbers: ['limit'], lists: ['step'] },
134
- policy: { values: ['change', 'from', 'name', 'status', 'text', 'to'], numbers: ['limit'] },
135
- skill: { values: ['change', 'instructions', 'status', 'trigger'], numbers: ['limit'] },
136
- brief: { switches: ['dry-run'], values: ['change', 'repo', 'status', 'summary'], numbers: ['limit'] },
137
- note: { values: ['change', 'customer', 'status', 'text'], numbers: ['limit'] },
138
- graph: { switches: ['json', 'open'], values: ['entity', 'format', 'out'] },
139
- };
140
5
  const FIELD_KINDS = [['switches', 'switch'], ['values', 'value'], ['numbers', 'number'], ['lists', 'list']];
141
- const DECLARED = new Map([GLOBAL_FLAGS, ...Object.values(VERB_FLAGS)].map((verb) => [
6
+ const DECLARED = new Map([GLOBAL_FLAGS, ...Object.values(COMMANDS).map((row) => row.flags)].map((verb) => [
142
7
  verb,
143
8
  new Map(FIELD_KINDS.flatMap(([field, kind]) => (verb[field] ?? []).map((name) => [name, kind]))),
144
9
  ]));
@@ -0,0 +1,3 @@
1
+ import { type CommandContext } from './flag-values.js';
2
+ export declare function handleGraph({ hippoRoot, tenantId, args, flags }: CommandContext): void;
3
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1,83 @@
1
+ // The entity graph verbs: rebuild it from the consolidated objects, print it, or write it out as a diagram.
2
+ import * as fs from 'fs';
3
+ import { extractGraph } from '../graph/extract.js';
4
+ import { buildGraphModel, renderGraphHtml, renderGraphCanvas, DEFAULT_VIEW_LIMIT } from '../graph/view.js';
5
+ import { printError } from './output.js';
6
+ import { stringFlag } from './flag-values.js';
7
+ import { requireInit } from './shared.js';
8
+ import { CliExit } from './exit.js';
9
+ import { openInBrowser } from './open-browser.js';
10
+ function graphExtract(hippoRoot, tenantId) {
11
+ const result = extractGraph(hippoRoot, tenantId);
12
+ const byType = Object.entries(result.byType)
13
+ .map(([t, n]) => `${t} ${n}`)
14
+ .join(', ');
15
+ const supersedes = result.relations - result.references;
16
+ const relations = `${result.relations} relations (${supersedes} supersedes, ${result.references} references)`;
17
+ console.log(`Graph extracted: ${result.entities} entities (${byType}) + ${relations}.`);
18
+ if (result.truncated.length > 0) {
19
+ printError(`WARNING: under-extracted (hit the per-type cap): ${result.truncated.join(', ')}. The graph is incomplete for those types.`);
20
+ }
21
+ }
22
+ function graphShow(hippoRoot, tenantId, entity, flags) {
23
+ const model = buildGraphModel(hippoRoot, tenantId, { entity, limit: DEFAULT_VIEW_LIMIT });
24
+ if (flags['json']) {
25
+ console.log(JSON.stringify(model, null, 2));
26
+ return;
27
+ }
28
+ if (model.nodes.length === 0) {
29
+ console.log(entity ? `No entity named "${entity}".` : 'Graph is empty. Run `hippo graph extract` first.');
30
+ return;
31
+ }
32
+ console.log(`Graph: ${model.nodes.length} entities, ${model.edges.length} relations${model.truncated ? ' (truncated)' : ''}`);
33
+ const byType = new Map();
34
+ for (const n of model.nodes) {
35
+ const arr = byType.get(n.type) ?? [];
36
+ arr.push({ id: n.id, name: n.name });
37
+ byType.set(n.type, arr);
38
+ }
39
+ for (const [type, ns] of byType) {
40
+ console.log(`\n${type} (${ns.length}):`);
41
+ for (const n of ns)
42
+ console.log(` [${n.id}] ${n.name}`);
43
+ }
44
+ if (model.edges.length > 0) {
45
+ const nameById = new Map(model.nodes.map((n) => [n.id, n.name]));
46
+ console.log('\nrelations:');
47
+ for (const e of model.edges) {
48
+ console.log(` ${nameById.get(e.from)} --${e.relType}--> ${nameById.get(e.to)}`);
49
+ }
50
+ }
51
+ }
52
+ function graphView(hippoRoot, tenantId, entity, flags) {
53
+ const format = stringFlag(flags, 'format') ?? 'html';
54
+ if (format !== 'html' && format !== 'canvas') {
55
+ printError("graph view: --format must be 'html' or 'canvas'");
56
+ throw new CliExit(1);
57
+ }
58
+ const model = buildGraphModel(hippoRoot, tenantId, { entity, limit: DEFAULT_VIEW_LIMIT });
59
+ const content = format === 'canvas' ? renderGraphCanvas(model) : renderGraphHtml(model);
60
+ const defaultOut = format === 'canvas' ? 'hippo-graph.canvas' : 'hippo-graph.html';
61
+ const out = stringFlag(flags, 'out') ?? defaultOut;
62
+ fs.writeFileSync(out, content, 'utf8');
63
+ console.log(`Wrote ${model.nodes.length} entities + ${model.edges.length} relations to ${out}${model.truncated ? ' (truncated)' : ''}`);
64
+ if (flags['open'] && format === 'html')
65
+ openInBrowser(out);
66
+ }
67
+ export function handleGraph({ hippoRoot, tenantId, args, flags }) {
68
+ requireInit(hippoRoot);
69
+ const subcommand = args[0] ?? '';
70
+ if (subcommand === 'extract')
71
+ return graphExtract(hippoRoot, tenantId);
72
+ const entity = stringFlag(flags, 'entity');
73
+ if (subcommand === 'show')
74
+ return graphShow(hippoRoot, tenantId, entity, flags);
75
+ if (subcommand === 'view')
76
+ return graphView(hippoRoot, tenantId, entity, flags);
77
+ printError('Usage:\n' +
78
+ ' hippo graph extract Rebuild the entity/relation graph from consolidated objects\n' +
79
+ ' hippo graph show [--entity NAME] [--json] Inspect entities + their edges (text or JSON)\n' +
80
+ ' hippo graph view [--out FILE] [--open] [--format html|canvas] [--entity NAME] Generate an interactive node-link diagram');
81
+ throw new CliExit(1);
82
+ }
83
+ //# sourceMappingURL=graph.js.map
@@ -1,5 +1,4 @@
1
1
  import type { HookRuntime } from '../core/capture-contract.js';
2
- import { type DeliveryEventType, type DeliveryRecorder } from '../store/delivery-recorder.js';
3
2
  import type { CliFlags } from './flag-values.js';
4
3
  /** Detached worker (internal `__session-end-worker`): counts re-reads, runs sleep, then capture; one stage failing does not block the other. */
5
4
  /** A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here. */
@@ -14,17 +13,16 @@ export declare function reportSessionEndFailure<E>(logFile: string | null, step:
14
13
  export declare function hostSessionId(): string | undefined;
15
14
  /** Compaction drops the pinned blocks the per-prompt hook injected, so record a `reset` for the payload's session and the next prompt injects again.
16
15
  * `requiredSource` limits it to payloads with that `source`; best-effort and silent on a malformed payload. */
17
- export declare function resetHookInjection(hippoRoot: string, stdinText: string | undefined, requiredSource: string | null): void;
16
+ export declare function resetHookInjection(hippoRoot: string, tenantId: string, stdinText: string | undefined, requiredSource: string | null): void;
18
17
  /** Store a hook writes to: the project store, else an existing global one, else the project path (skipped: hooks must not create a store).
19
18
  * Pre-compact and compact-resume must agree, or a snapshot is looked for in the other store. */
20
19
  export declare function hookStoreRoot(hippoRoot: string): string;
21
20
  /** `--runtime copilot`, or `--format copilot` on `hippo context`, marks a Copilot hook: the flag decides, never the payload. */
22
21
  export declare function hookRuntime(flags: CliFlags): HookRuntime;
23
- /** A delivery recorder when the ledger store enables one, else null; never throws. */
24
- export declare function startDeliveryRecorder(hippoRoot: string, stdinText: string | undefined, runtime: HookRuntime, eventType?: DeliveryEventType): DeliveryRecorder | null;
25
22
  /** A Copilot hook's project root, from the payload's `cwd`, since VS Code runs user-level hooks in the home folder; other runtimes keep `hippoRoot`. */
26
23
  export declare function payloadCwdRoot(hippoRoot: string, stdinText: string | undefined, runtime: HookRuntime): string;
27
- /** Hook commands share one handle per store and wait at most HOOK_DB_WAIT_MS for a lock; a store still busy after that skips the hook's work with one warning, exit 0. */
24
+ /** Hook commands share one handle per store and wait at most HOOK_DB_WAIT_MS for a lock; a store still busy after that skips the hook's
25
+ * work with one warning, exit 0. */
28
26
  export declare function runHookWithStores<T>(fn: () => T | Promise<T>): Promise<T | undefined>;
29
27
  /** Whether this session sits in the pilot's holdout arm; off at rate 0 and with no session id. */
30
28
  export declare function inPilotHoldout(hippoRoot: string, tenantId: string, sessionId: string | undefined, write: boolean): boolean;
@@ -2,20 +2,15 @@
2
2
  import { envClaudeCodeSessionId, envHippoSessionId } from '../util/env.js';
3
3
  import * as path from 'path';
4
4
  import * as fs from 'fs';
5
- import { getHippoRoot, isInitialized } from '../store/open.js';
6
- import { loadConfig } from '../core/config.js';
7
- import { createDeliveryRecorder } from '../store/delivery-recorder.js';
8
5
  import { isSqliteBusy, noteStoreBusy, runWithRequestStores, HOOK_DB_WAIT_MS } from '../db/index.js';
9
- import { bookTokenUse, ledgerRoot } from '../api/ledger-db.js';
6
+ import { bookTokenUse } from '../api/ledger-db.js';
10
7
  import { sessionPilotArm } from '../api/pilot-arm.js';
11
- import { hookPayloadSessionId, hookPayloadString, isSubagentPayload } from '../store/token-ledger.js';
12
- import { blockHash } from '../util/token-text.js';
8
+ import { hookPayloadSessionId, hookPayloadString, isSubagentPayload } from '../util/hook-payload.js';
13
9
  import { importAtSessionEnd, currentMachine } from '../agent-memories/sync.js';
14
10
  import { summaryLine } from '../agent-memories/report.js';
15
- import { isGlobalStoreRoot } from '../core/project-identity.js';
11
+ import { getHippoRoot, isInitialized } from '../core/project-identity.js';
16
12
  import { getGlobalRoot } from '../sharing/global-store.js';
17
13
  import { sanitizeLogMessage } from '../capture/compact.js';
18
- import { resolveTenantId } from '../store/tenant.js';
19
14
  import { errorMessage, log } from '../util/log.js';
20
15
  /** Detached worker (internal `__session-end-worker`): counts re-reads, runs sleep, then capture; one stage failing does not block the other. */
21
16
  /** A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here. */
@@ -61,13 +56,13 @@ export function hostSessionId() {
61
56
  }
62
57
  /** Compaction drops the pinned blocks the per-prompt hook injected, so record a `reset` for the payload's session and the next prompt injects again.
63
58
  * `requiredSource` limits it to payloads with that `source`; best-effort and silent on a malformed payload. */
64
- export function resetHookInjection(hippoRoot, stdinText, requiredSource) {
59
+ export function resetHookInjection(hippoRoot, tenantId, stdinText, requiredSource) {
65
60
  const sessionId = hookPayloadSessionId(stdinText, requiredSource);
66
61
  // A sub-agent's compaction leaves its parent's context, and the blocks in it, as they were.
67
62
  if (sessionId === null || isSubagentPayload(stdinText))
68
63
  return;
69
64
  bookTokenUse(hippoRoot, {
70
- tenantId: resolveTenantId({}), sessionId, surface: 'hook', event: 'reset', items: 0, tokens: 0,
65
+ tenantId, sessionId, surface: 'hook', event: 'reset', items: 0, tokens: 0,
71
66
  });
72
67
  }
73
68
  /** Store a hook writes to: the project store, else an existing global one, else the project path (skipped: hooks must not create a store).
@@ -82,29 +77,6 @@ export function hookStoreRoot(hippoRoot) {
82
77
  export function hookRuntime(flags) {
83
78
  return flags['runtime'] === 'copilot' || flags['format'] === 'copilot' ? 'copilot' : 'claude-code';
84
79
  }
85
- /** A delivery recorder when the ledger store enables one, else null; never throws. */
86
- export function startDeliveryRecorder(hippoRoot, stdinText, runtime, eventType) {
87
- try {
88
- // The same store withLedgerDb writes the token ledger to, so its config governs both.
89
- const root = ledgerRoot(hippoRoot);
90
- if (root === null || !loadConfig(root).deliveryLedger.enabled)
91
- return null;
92
- return createDeliveryRecorder({
93
- root,
94
- storeHash: blockHash(path.resolve(root)),
95
- writeStore: isGlobalStoreRoot(root) ? 'global' : 'local',
96
- tenantId: resolveTenantId({}),
97
- stdinText,
98
- envSessionId: hostSessionId(),
99
- runtime: runtime === 'copilot' ? 'copilot' : undefined,
100
- eventType,
101
- });
102
- }
103
- catch (error) {
104
- log.warn(`delivery ledger skipped: ${errorMessage(error)}`);
105
- return null;
106
- }
107
- }
108
80
  /** A Copilot hook's project root, from the payload's `cwd`, since VS Code runs user-level hooks in the home folder; other runtimes keep `hippoRoot`. */
109
81
  export function payloadCwdRoot(hippoRoot, stdinText, runtime) {
110
82
  const cwd = runtime === 'copilot' ? hookPayloadString(stdinText, 'cwd') : null;
@@ -120,7 +92,8 @@ export function payloadCwdRoot(hippoRoot, stdinText, runtime) {
120
92
  }
121
93
  return getHippoRoot(process.cwd());
122
94
  }
123
- /** Hook commands share one handle per store and wait at most HOOK_DB_WAIT_MS for a lock; a store still busy after that skips the hook's work with one warning, exit 0. */
95
+ /** Hook commands share one handle per store and wait at most HOOK_DB_WAIT_MS for a lock; a store still busy after that skips the hook's
96
+ * work with one warning, exit 0. */
124
97
  export async function runHookWithStores(fn) {
125
98
  try {
126
99
  return await runWithRequestStores(fn, { busyWaitMs: HOOK_DB_WAIT_MS, failFastWhenBusy: true });
@@ -0,0 +1,3 @@
1
+ import { type CommandContext } from './flag-values.js';
2
+ export declare function handleIncident({ hippoRoot, tenantId, args, flags }: CommandContext): void;
3
+ //# sourceMappingURL=incidents.d.ts.map