hippo-memory 1.70.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 (855) hide show
  1. package/README.md +2 -2
  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.d.ts +4 -2
  5. package/dist/agent-memories/claude-code.js +15 -6
  6. package/dist/agent-memories/codex.js +1 -1
  7. package/dist/agent-memories/copilot.d.ts +1 -3
  8. package/dist/agent-memories/copilot.js +1 -17
  9. package/dist/agent-memories/files.js +23 -12
  10. package/dist/agent-memories/markdown.d.ts +1 -3
  11. package/dist/agent-memories/markdown.js +1 -3
  12. package/dist/agent-memories/project-folds.d.ts +10 -0
  13. package/dist/agent-memories/project-folds.js +34 -0
  14. package/dist/agent-memories/report.js +2 -1
  15. package/dist/agent-memories/sync.d.ts +4 -2
  16. package/dist/agent-memories/sync.js +18 -11
  17. package/dist/api/assemble.d.ts +7 -44
  18. package/dist/api/assemble.js +3 -23
  19. package/dist/api/audit.d.ts +33 -1
  20. package/dist/api/audit.js +48 -1
  21. package/dist/api/auth.d.ts +20 -26
  22. package/dist/api/auth.js +43 -29
  23. package/dist/api/auto-sleep.d.ts +5 -2
  24. package/dist/api/auto-sleep.js +9 -5
  25. package/dist/api/availability.d.ts +2 -15
  26. package/dist/api/availability.js +4 -18
  27. package/dist/api/cards.d.ts +42 -0
  28. package/dist/api/cards.js +52 -0
  29. package/dist/api/conflicts.d.ts +28 -0
  30. package/dist/api/conflicts.js +61 -0
  31. package/dist/api/context-render.js +4 -3
  32. package/dist/api/context-select.js +12 -15
  33. package/dist/api/context-types.d.ts +10 -35
  34. package/dist/api/context.d.ts +5 -22
  35. package/dist/api/context.js +38 -46
  36. package/dist/api/continuity.d.ts +47 -0
  37. package/dist/api/continuity.js +66 -0
  38. package/dist/{cli → api}/correction-latency.d.ts +2 -14
  39. package/dist/{cli → api}/correction-latency.js +2 -14
  40. package/dist/api/dormant.d.ts +5 -21
  41. package/dist/api/dormant.js +11 -28
  42. package/dist/api/drill-down.d.ts +7 -46
  43. package/dist/api/drill-down.js +6 -27
  44. package/dist/api/embeddings.d.ts +17 -0
  45. package/dist/api/embeddings.js +28 -0
  46. package/dist/api/error-reply.d.ts +8 -0
  47. package/dist/api/error-reply.js +21 -0
  48. package/dist/api/forget.d.ts +11 -26
  49. package/dist/api/forget.js +23 -35
  50. package/dist/api/goals.d.ts +1 -1
  51. package/dist/api/goals.js +5 -9
  52. package/dist/api/graph.d.ts +8 -0
  53. package/dist/api/graph.js +7 -0
  54. package/dist/api/index.d.ts +6 -2
  55. package/dist/api/index.js +6 -2
  56. package/dist/api/instruction-detect.js +21 -6
  57. package/dist/api/learn.d.ts +4 -0
  58. package/dist/api/learn.js +53 -27
  59. package/dist/api/ledger-db.d.ts +2 -5
  60. package/dist/api/ledger-db.js +5 -35
  61. package/dist/api/memories.d.ts +23 -0
  62. package/dist/api/memories.js +46 -0
  63. package/dist/api/objects.d.ts +9 -0
  64. package/dist/api/objects.js +11 -0
  65. package/dist/api/on-store.js +5 -3
  66. package/dist/api/outcome.js +1 -1
  67. package/dist/api/pilot-arm.d.ts +1 -11
  68. package/dist/api/pilot-arm.js +5 -45
  69. package/dist/api/predictions.d.ts +11 -0
  70. package/dist/api/predictions.js +24 -0
  71. package/dist/api/projects.d.ts +21 -0
  72. package/dist/api/projects.js +24 -0
  73. package/dist/api/promote.d.ts +13 -17
  74. package/dist/api/promote.js +12 -20
  75. package/dist/api/prompt-hook.d.ts +19 -6
  76. package/dist/api/prompt-hook.js +54 -13
  77. package/dist/api/provenance-coverage.d.ts +14 -0
  78. package/dist/{cli → api}/provenance-coverage.js +2 -6
  79. package/dist/api/recall-cli.d.ts +58 -0
  80. package/dist/api/recall-cli.js +103 -0
  81. package/dist/api/recall-core.js +17 -9
  82. package/dist/api/recall-finish.d.ts +53 -0
  83. package/dist/api/recall-finish.js +30 -0
  84. package/dist/api/recall-history.d.ts +17 -84
  85. package/dist/api/recall-history.js +15 -88
  86. package/dist/api/recall-pipeline.d.ts +2 -3
  87. package/dist/api/recall-pipeline.js +21 -15
  88. package/dist/api/recall-request.js +1 -1
  89. package/dist/api/recall-types.d.ts +64 -304
  90. package/dist/api/recall.d.ts +3 -34
  91. package/dist/api/recall.js +63 -89
  92. package/dist/api/refine.d.ts +7 -0
  93. package/dist/api/refine.js +10 -0
  94. package/dist/api/remember-local.d.ts +57 -0
  95. package/dist/api/remember-local.js +90 -0
  96. package/dist/api/remember.d.ts +20 -2
  97. package/dist/api/remember.js +16 -3
  98. package/dist/api/session-end.d.ts +22 -0
  99. package/dist/api/session-end.js +101 -0
  100. package/dist/api/sleep-run.d.ts +2 -4
  101. package/dist/api/sleep-run.js +28 -28
  102. package/dist/api/sleep.d.ts +9 -28
  103. package/dist/api/status.d.ts +24 -0
  104. package/dist/api/status.js +40 -0
  105. package/dist/api/store-init.d.ts +4 -0
  106. package/dist/api/store-init.js +9 -0
  107. package/dist/api/tokens.d.ts +3 -10
  108. package/dist/api/tokens.js +4 -11
  109. package/dist/api/types.d.ts +8 -29
  110. package/dist/api/types.js +10 -23
  111. package/dist/capture/caller-session.d.ts +0 -3
  112. package/dist/capture/caller-session.js +1 -12
  113. package/dist/capture/capture-error.d.ts +2 -2
  114. package/dist/capture/capture-error.js +23 -18
  115. package/dist/capture/codex-patch.js +3 -1
  116. package/dist/capture/command.d.ts +4 -12
  117. package/dist/capture/command.js +39 -114
  118. package/dist/capture/compact.d.ts +4 -15
  119. package/dist/capture/compact.js +26 -30
  120. package/dist/capture/compaction-items-caller.js +11 -20
  121. package/dist/capture/compaction-record.d.ts +7 -93
  122. package/dist/capture/compaction-record.js +34 -399
  123. package/dist/capture/compaction-spool.d.ts +5 -3
  124. package/dist/capture/compaction-spool.js +21 -7
  125. package/dist/capture/copilot-transcript.d.ts +2 -1
  126. package/dist/capture/copilot-transcript.js +2 -1
  127. package/dist/capture/extract.d.ts +5 -2
  128. package/dist/capture/extract.js +4 -3
  129. package/dist/capture/failure-caller.d.ts +1 -1
  130. package/dist/capture/failure-caller.js +21 -16
  131. package/dist/capture/failure-reading.d.ts +2 -1
  132. package/dist/capture/failure-reading.js +7 -9
  133. package/dist/capture/pre-compact-caller.js +5 -4
  134. package/dist/capture/session-digest.d.ts +1 -1
  135. package/dist/capture/session-digest.js +17 -10
  136. package/dist/capture/session-end-caller.js +2 -1
  137. package/dist/capture/session-worker.js +3 -4
  138. package/dist/capture/transcript.d.ts +4 -11
  139. package/dist/capture/transcript.js +10 -21
  140. package/dist/capture/working-state.d.ts +4 -2
  141. package/dist/capture/working-state.js +4 -2
  142. package/dist/cli/api-context.d.ts +3 -0
  143. package/dist/cli/api-context.js +6 -0
  144. package/dist/cli/audit-prune.d.ts +1 -59
  145. package/dist/cli/audit-prune.js +2 -61
  146. package/dist/cli/audit.d.ts +1 -1
  147. package/dist/cli/audit.js +42 -43
  148. package/dist/cli/auth.d.ts +2 -2
  149. package/dist/cli/auth.js +61 -44
  150. package/dist/cli/briefs.d.ts +1 -4
  151. package/dist/cli/briefs.js +42 -301
  152. package/dist/cli/card.d.ts +2 -2
  153. package/dist/cli/card.js +63 -56
  154. package/dist/cli/client.d.ts +12 -27
  155. package/dist/cli/client.js +41 -44
  156. package/dist/cli/compact-resume-payload.js +4 -3
  157. package/dist/cli/context.d.ts +2 -3
  158. package/dist/cli/context.js +22 -18
  159. package/dist/cli/continuity.d.ts +6 -6
  160. package/dist/cli/continuity.js +81 -86
  161. package/dist/cli/curate.d.ts +13 -17
  162. package/dist/cli/curate.js +88 -116
  163. package/dist/cli/dag.d.ts +4 -4
  164. package/dist/cli/dag.js +55 -34
  165. package/dist/cli/decisions.d.ts +2 -4
  166. package/dist/cli/decisions.js +18 -309
  167. package/dist/cli/eval.d.ts +1 -1
  168. package/dist/cli/eval.js +27 -26
  169. package/dist/cli/exit.d.ts +6 -0
  170. package/dist/cli/exit.js +11 -0
  171. package/dist/cli/explain.d.ts +2 -3
  172. package/dist/cli/explain.js +25 -27
  173. package/dist/cli/flag-values.d.ts +6 -1
  174. package/dist/cli/flag-values.js +42 -15
  175. package/dist/cli/flags.d.ts +0 -288
  176. package/dist/cli/flags.js +3 -138
  177. package/dist/cli/github.d.ts +14 -0
  178. package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
  179. package/dist/cli/goals.d.ts +2 -2
  180. package/dist/cli/goals.js +46 -50
  181. package/dist/cli/graph.d.ts +3 -0
  182. package/dist/cli/graph.js +83 -0
  183. package/dist/cli/hook-runtime.d.ts +12 -32
  184. package/dist/cli/hook-runtime.js +21 -64
  185. package/dist/cli/incidents.d.ts +3 -0
  186. package/dist/cli/incidents.js +112 -0
  187. package/dist/cli/init.d.ts +2 -2
  188. package/dist/cli/init.js +33 -30
  189. package/dist/cli/install-steps.d.ts +2 -1
  190. package/dist/cli/install-steps.js +13 -14
  191. package/dist/cli/last-sleep.d.ts +2 -1
  192. package/dist/cli/last-sleep.js +4 -1
  193. package/dist/cli/lenient-id.d.ts +2 -0
  194. package/dist/cli/lenient-id.js +13 -0
  195. package/dist/cli/maintenance.d.ts +5 -5
  196. package/dist/cli/maintenance.js +37 -43
  197. package/dist/cli/notes.d.ts +2 -0
  198. package/dist/cli/notes.js +41 -0
  199. package/dist/cli/object-verbs.js +4 -3
  200. package/dist/cli/open-browser.d.ts +14 -0
  201. package/dist/cli/open-browser.js +26 -0
  202. package/dist/cli/owner-validation.d.ts +5 -28
  203. package/dist/cli/owner-validation.js +5 -28
  204. package/dist/cli/playbooks.d.ts +3 -4
  205. package/dist/cli/playbooks.js +131 -300
  206. package/dist/cli/predictions.d.ts +3 -0
  207. package/dist/cli/predictions.js +175 -0
  208. package/dist/cli/print.d.ts +2 -5
  209. package/dist/cli/print.js +3 -5
  210. package/dist/cli/projects.d.ts +2 -2
  211. package/dist/cli/projects.js +31 -25
  212. package/dist/cli/quality-repair-once.d.ts +1 -1
  213. package/dist/cli/quality-repair-once.js +7 -6
  214. package/dist/cli/recall.d.ts +2 -4
  215. package/dist/cli/recall.js +67 -137
  216. package/dist/cli/refine-llm.d.ts +5 -31
  217. package/dist/cli/refine-llm.js +23 -50
  218. package/dist/cli/remember.d.ts +3 -3
  219. package/dist/cli/remember.js +134 -192
  220. package/dist/cli/scheduler.d.ts +2 -17
  221. package/dist/cli/scheduler.js +14 -19
  222. package/dist/cli/serve.js +23 -14
  223. package/dist/cli/session-hooks.d.ts +11 -19
  224. package/dist/cli/session-hooks.js +143 -214
  225. package/dist/cli/setup.d.ts +4 -4
  226. package/dist/cli/setup.js +35 -30
  227. package/dist/cli/shared.d.ts +7 -25
  228. package/dist/cli/shared.js +17 -60
  229. package/dist/cli/slack.d.ts +2 -2
  230. package/dist/cli/slack.js +19 -23
  231. package/dist/cli/sleep-render.js +6 -3
  232. package/dist/cli/sleep.d.ts +3 -2
  233. package/dist/cli/sleep.js +17 -49
  234. package/dist/cli/status.d.ts +11 -14
  235. package/dist/cli/status.js +74 -120
  236. package/dist/cli/stdin.d.ts +4 -6
  237. package/dist/cli/stdin.js +2 -3
  238. package/dist/cli/transfer.d.ts +9 -9
  239. package/dist/cli/transfer.js +87 -108
  240. package/dist/cli/usage.d.ts +0 -79
  241. package/dist/cli/usage.js +1 -689
  242. package/dist/cli/verb-row.d.ts +32 -0
  243. package/dist/cli/verb-row.js +6 -0
  244. package/dist/cli/verbs/health.d.ts +27 -0
  245. package/dist/cli/verbs/health.js +232 -0
  246. package/dist/cli/verbs/memory.d.ts +16 -0
  247. package/dist/cli/verbs/memory.js +244 -0
  248. package/dist/cli/verbs/objects.d.ts +20 -0
  249. package/dist/cli/verbs/objects.js +254 -0
  250. package/dist/cli/verbs/sessions.d.ts +31 -0
  251. package/dist/cli/verbs/sessions.js +312 -0
  252. package/dist/cli/verbs.d.ts +81 -0
  253. package/dist/cli/verbs.js +7 -0
  254. package/dist/cli/versioned-verbs.d.ts +51 -0
  255. package/dist/cli/versioned-verbs.js +79 -0
  256. package/dist/cli.d.ts +1 -654
  257. package/dist/cli.js +44 -510
  258. package/dist/connectors/dlq.d.ts +39 -3
  259. package/dist/connectors/dlq.js +37 -3
  260. package/dist/connectors/github/backfill.d.ts +5 -25
  261. package/dist/connectors/github/backfill.js +26 -52
  262. package/dist/connectors/github/deletion.d.ts +4 -18
  263. package/dist/connectors/github/deletion.js +2 -15
  264. package/dist/connectors/github/dlq.d.ts +8 -33
  265. package/dist/connectors/github/dlq.js +34 -93
  266. package/dist/connectors/github/ingest.d.ts +4 -12
  267. package/dist/connectors/github/ingest.js +5 -36
  268. package/dist/connectors/github/octokit-client.d.ts +4 -16
  269. package/dist/connectors/github/octokit-client.js +27 -24
  270. package/dist/connectors/github/ratelimit.d.ts +3 -14
  271. package/dist/connectors/github/ratelimit.js +3 -14
  272. package/dist/connectors/github/scope.d.ts +3 -5
  273. package/dist/connectors/github/scope.js +3 -5
  274. package/dist/connectors/github/signature.d.ts +4 -26
  275. package/dist/connectors/github/signature.js +4 -26
  276. package/dist/connectors/github/tenant-routing.d.ts +2 -24
  277. package/dist/connectors/github/tenant-routing.js +4 -26
  278. package/dist/connectors/github/transform.js +2 -16
  279. package/dist/connectors/github/types.d.ts +3 -15
  280. package/dist/connectors/github/types.js +2 -9
  281. package/dist/connectors/github/webhook.d.ts +3 -16
  282. package/dist/connectors/github/webhook.js +38 -23
  283. package/dist/connectors/ingest.d.ts +10 -0
  284. package/dist/connectors/ingest.js +28 -0
  285. package/dist/connectors/slack/backfill.d.ts +4 -17
  286. package/dist/connectors/slack/backfill.js +4 -13
  287. package/dist/connectors/slack/dlq.d.ts +2 -19
  288. package/dist/connectors/slack/dlq.js +51 -90
  289. package/dist/connectors/slack/ingest.d.ts +4 -9
  290. package/dist/connectors/slack/ingest.js +4 -30
  291. package/dist/connectors/slack/scope.d.ts +2 -8
  292. package/dist/connectors/slack/scope.js +2 -8
  293. package/dist/connectors/slack/signature.d.ts +1 -6
  294. package/dist/connectors/slack/tenant-routing.d.ts +2 -19
  295. package/dist/connectors/slack/tenant-routing.js +2 -21
  296. package/dist/connectors/slack/transform.d.ts +2 -18
  297. package/dist/connectors/slack/transform.js +2 -18
  298. package/dist/connectors/slack/types.d.ts +3 -9
  299. package/dist/connectors/slack/types.js +2 -4
  300. package/dist/connectors/slack/web-client.js +33 -27
  301. package/dist/connectors/slack/webhook.d.ts +3 -19
  302. package/dist/connectors/slack/webhook.js +6 -26
  303. package/dist/connectors/slack/workspaces.d.ts +4 -24
  304. package/dist/connectors/slack/workspaces.js +4 -24
  305. package/dist/consolidate/conflicts.js +7 -15
  306. package/dist/consolidate/dag-summary.d.ts +8 -0
  307. package/dist/consolidate/dag-summary.js +41 -0
  308. package/dist/consolidate/dag.d.ts +5 -28
  309. package/dist/consolidate/dag.js +29 -84
  310. package/dist/consolidate/decay.js +7 -19
  311. package/dist/consolidate/dedupe.d.ts +13 -52
  312. package/dist/consolidate/dedupe.js +18 -74
  313. package/dist/consolidate/flush-units.d.ts +3 -4
  314. package/dist/consolidate/flush-units.js +3 -3
  315. package/dist/consolidate/half-life-migration.d.ts +3 -26
  316. package/dist/consolidate/half-life-migration.js +11 -28
  317. package/dist/consolidate/llm-passes.js +49 -40
  318. package/dist/consolidate/memory-value-weights.d.ts +2 -13
  319. package/dist/consolidate/memory-value-weights.js +2 -13
  320. package/dist/consolidate/memory-value.d.ts +11 -84
  321. package/dist/consolidate/memory-value.js +18 -105
  322. package/dist/consolidate/merge.js +12 -33
  323. package/dist/consolidate/physics-pass.d.ts +6 -1
  324. package/dist/consolidate/physics-pass.js +27 -9
  325. package/dist/consolidate/replay.d.ts +6 -38
  326. package/dist/consolidate/replay.js +25 -56
  327. package/dist/consolidate/run.js +1 -1
  328. package/dist/consolidate/sleep.d.ts +1 -8
  329. package/dist/consolidate/sleep.js +13 -22
  330. package/dist/consolidate/trace.d.ts +3 -18
  331. package/dist/consolidate/trace.js +3 -18
  332. package/dist/consolidate/traces.js +9 -25
  333. package/dist/core/ablation.d.ts +14 -91
  334. package/dist/core/ablation.js +16 -91
  335. package/dist/core/active-scope.d.ts +7 -0
  336. package/dist/{sharing/scope.js → core/active-scope.js} +5 -12
  337. package/dist/core/ambient.d.ts +5 -8
  338. package/dist/core/ambient.js +40 -26
  339. package/dist/core/api-errors.d.ts +16 -0
  340. package/dist/core/api-errors.js +20 -0
  341. package/dist/core/capture-contract.d.ts +4 -2
  342. package/dist/core/capture-contract.js +4 -2
  343. package/dist/core/card.d.ts +4 -1
  344. package/dist/core/card.js +11 -1
  345. package/dist/core/compaction-timing.d.ts +7 -0
  346. package/dist/core/compaction-timing.js +9 -0
  347. package/dist/core/compare.d.ts +11 -67
  348. package/dist/core/compare.js +9 -63
  349. package/dist/core/config.d.ts +10 -24
  350. package/dist/core/config.js +20 -16
  351. package/dist/core/cosine.d.ts +3 -0
  352. package/dist/core/cosine.js +19 -0
  353. package/dist/core/handoff.d.ts +1 -7
  354. package/dist/core/handoff.js +1 -7
  355. package/dist/core/markdown.d.ts +6 -0
  356. package/dist/{store → core}/markdown.js +23 -22
  357. package/dist/core/memory-audit.d.ts +17 -0
  358. package/dist/core/memory-audit.js +54 -0
  359. package/dist/core/memory-quality.js +1 -1
  360. package/dist/core/memory.d.ts +51 -168
  361. package/dist/core/memory.js +76 -239
  362. package/dist/{consolidate → core}/merged-row.d.ts +1 -1
  363. package/dist/{consolidate → core}/merged-row.js +3 -2
  364. package/dist/core/package-root.d.ts +3 -0
  365. package/dist/core/package-root.js +5 -0
  366. package/dist/core/physics-config.d.ts +1 -4
  367. package/dist/core/physics-config.js +3 -8
  368. package/dist/core/physics.d.ts +15 -61
  369. package/dist/core/physics.js +65 -138
  370. package/dist/core/prediction.d.ts +3 -0
  371. package/dist/core/prediction.js +6 -0
  372. package/dist/core/project-identity.d.ts +20 -58
  373. package/dist/core/project-identity.js +27 -39
  374. package/dist/core/project-remote.js +13 -2
  375. package/dist/core/raw-append-only.d.ts +5 -0
  376. package/dist/core/raw-append-only.js +7 -0
  377. package/dist/core/recall-scope.d.ts +69 -0
  378. package/dist/core/recall-scope.js +138 -0
  379. package/dist/core/salience.d.ts +1 -7
  380. package/dist/core/salience.js +1 -7
  381. package/dist/dashboard/dashboard-actions.js +2 -2
  382. package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
  383. package/dist/dashboard/dashboard-snapshot.js +11 -2
  384. package/dist/dashboard/dashboard-types.d.ts +2 -1
  385. package/dist/dashboard/dashboard.d.ts +1 -0
  386. package/dist/dashboard/dashboard.js +50 -4
  387. package/dist/db/busy.d.ts +3 -8
  388. package/dist/db/busy.js +37 -33
  389. package/dist/db/connect.js +7 -8
  390. package/dist/db/index.d.ts +3 -3
  391. package/dist/db/index.js +3 -3
  392. package/dist/db/migrate.js +3 -3
  393. package/dist/db/migrations/index.d.ts +1 -1
  394. package/dist/db/migrations/index.js +3 -1
  395. package/dist/db/migrations/types.d.ts +2 -5
  396. package/dist/db/migrations/v14.js +2 -3
  397. package/dist/db/migrations/v15.js +2 -8
  398. package/dist/db/migrations/v16.js +2 -3
  399. package/dist/db/migrations/v17.js +2 -3
  400. package/dist/db/migrations/v19.js +2 -5
  401. package/dist/db/migrations/v20.js +2 -7
  402. package/dist/db/migrations/v22.js +4 -17
  403. package/dist/db/migrations/v23.js +3 -14
  404. package/dist/db/migrations/v24.js +2 -4
  405. package/dist/db/migrations/v25.js +3 -8
  406. package/dist/db/migrations/v26.js +2 -13
  407. package/dist/db/migrations/v27.js +3 -11
  408. package/dist/db/migrations/v28.js +2 -14
  409. package/dist/db/migrations/v29.js +4 -18
  410. package/dist/db/migrations/v30.js +4 -16
  411. package/dist/db/migrations/v31.js +2 -15
  412. package/dist/db/migrations/v32.js +4 -22
  413. package/dist/db/migrations/v33.js +2 -15
  414. package/dist/db/migrations/v34.js +2 -11
  415. package/dist/db/migrations/v35.js +2 -11
  416. package/dist/db/migrations/v36.js +2 -11
  417. package/dist/db/migrations/v37.js +8 -33
  418. package/dist/db/migrations/v38.js +5 -38
  419. package/dist/db/migrations/v39.js +9 -20
  420. package/dist/db/migrations/v40.js +2 -9
  421. package/dist/db/migrations/v41.js +2 -24
  422. package/dist/db/migrations/v43.js +1 -1
  423. package/dist/db/migrations/v44.js +2 -8
  424. package/dist/db/migrations/v45.js +2 -7
  425. package/dist/db/migrations/v47.js +2 -3
  426. package/dist/db/migrations/v51.js +1 -1
  427. package/dist/db/migrations/v55.d.ts +3 -0
  428. package/dist/db/migrations/v55.js +17 -0
  429. package/dist/db/open.d.ts +2 -2
  430. package/dist/db/open.js +21 -9
  431. package/dist/db/physics-state.d.ts +6 -22
  432. package/dist/db/physics-state.js +28 -39
  433. package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
  434. package/dist/db/raw-archive-mirror-cleanup.js +2 -17
  435. package/dist/db/tables.d.ts +2 -0
  436. package/dist/db/tables.js +6 -2
  437. package/dist/db/vector-store.d.ts +2 -0
  438. package/dist/db/vector-store.js +25 -5
  439. package/dist/db/wal-checkpointer.js +2 -1
  440. package/dist/doctor.js +85 -27
  441. package/dist/embeddings/local.d.ts +62 -0
  442. package/dist/embeddings/local.js +146 -0
  443. package/dist/embeddings/provider.d.ts +43 -0
  444. package/dist/{store/embeddings → embeddings}/provider.js +58 -83
  445. package/dist/embeddings/transformers.d.ts +26 -0
  446. package/dist/embeddings/transformers.js +89 -0
  447. package/dist/entry/session-text.d.ts +1 -1
  448. package/dist/entry/session-text.js +3 -2
  449. package/dist/eval/eval-stats.d.ts +15 -53
  450. package/dist/eval/eval-stats.js +12 -42
  451. package/dist/eval/eval-suite.d.ts +2 -13
  452. package/dist/eval/eval-suite.js +91 -45
  453. package/dist/eval/eval.d.ts +6 -24
  454. package/dist/eval/eval.js +8 -35
  455. package/dist/eval/judgment.d.ts +0 -3
  456. package/dist/eval/judgment.js +30 -15
  457. package/dist/extensions/openclaw-plugin/index.js +1 -1
  458. package/dist/graph/extract.d.ts +5 -27
  459. package/dist/graph/extract.js +10 -36
  460. package/dist/graph/recall.d.ts +7 -20
  461. package/dist/graph/recall.js +15 -77
  462. package/dist/graph/stream.d.ts +7 -39
  463. package/dist/graph/stream.js +11 -34
  464. package/dist/graph/view.d.ts +9 -35
  465. package/dist/graph/view.js +24 -44
  466. package/dist/graph/write.d.ts +1 -1
  467. package/dist/graph/write.js +9 -9
  468. package/dist/hooks/codex-session.js +3 -2
  469. package/dist/hooks/codex-wrapper.js +4 -3
  470. package/dist/hooks/copilot.js +2 -1
  471. package/dist/hooks/hook-blocks.d.ts +6 -2
  472. package/dist/hooks/hook-blocks.js +37 -124
  473. package/dist/hooks/json-hooks.d.ts +4 -36
  474. package/dist/hooks/json-hooks.js +22 -59
  475. package/dist/hooks/opencode.d.ts +0 -38
  476. package/dist/hooks/opencode.js +17 -81
  477. package/dist/hooks/shared.d.ts +6 -21
  478. package/dist/hooks/shared.js +31 -33
  479. package/dist/importers/core.d.ts +12 -37
  480. package/dist/importers/core.js +10 -28
  481. package/dist/importers/markdown-parse.d.ts +8 -22
  482. package/dist/importers/markdown-parse.js +8 -25
  483. package/dist/importers/markdown.js +3 -12
  484. package/dist/importers/sources.js +12 -39
  485. package/dist/importers/vault.d.ts +2 -8
  486. package/dist/importers/vault.js +31 -85
  487. package/dist/index.d.ts +8 -3
  488. package/dist/index.js +8 -3
  489. package/dist/learn/autolearn.d.ts +23 -42
  490. package/dist/learn/autolearn.js +45 -52
  491. package/dist/learn/churn-git.js +13 -4
  492. package/dist/learn/extract.d.ts +3 -2
  493. package/dist/learn/extract.js +8 -8
  494. package/dist/learn/forward-claim-detector.d.ts +6 -30
  495. package/dist/learn/forward-claim-detector.js +18 -68
  496. package/dist/learn/invalidation.d.ts +6 -18
  497. package/dist/learn/invalidation.js +18 -31
  498. package/dist/mcp/admin-tools.d.ts +2 -2
  499. package/dist/mcp/admin-tools.js +30 -53
  500. package/dist/mcp/format.js +3 -2
  501. package/dist/mcp/framing.d.ts +1 -0
  502. package/dist/mcp/framing.js +1 -1
  503. package/dist/mcp/memory-tools.js +7 -10
  504. package/dist/mcp/protocol.d.ts +15 -29
  505. package/dist/mcp/protocol.js +26 -16
  506. package/dist/mcp/recall-tools.js +14 -11
  507. package/dist/mcp/request.d.ts +3 -11
  508. package/dist/mcp/request.js +12 -27
  509. package/dist/mcp/server.d.ts +3 -9
  510. package/dist/mcp/server.js +5 -16
  511. package/dist/mcp/session-state.d.ts +1 -1
  512. package/dist/mcp/session-state.js +5 -11
  513. package/dist/mcp/stdio.d.ts +2 -6
  514. package/dist/mcp/stdio.js +68 -16
  515. package/dist/mcp/tool-args.js +2 -1
  516. package/dist/mcp/tools.js +47 -22
  517. package/dist/objects/customer-notes.d.ts +9 -44
  518. package/dist/objects/customer-notes.js +7 -48
  519. package/dist/objects/decisions.d.ts +14 -52
  520. package/dist/objects/decisions.js +15 -53
  521. package/dist/objects/descriptor.d.ts +1 -1
  522. package/dist/objects/incidents.d.ts +9 -40
  523. package/dist/objects/incidents.js +7 -41
  524. package/dist/objects/lifecycle.d.ts +1 -1
  525. package/dist/objects/lifecycle.js +2 -1
  526. package/dist/objects/policies.d.ts +13 -91
  527. package/dist/objects/policies.js +13 -99
  528. package/dist/objects/processes.d.ts +9 -54
  529. package/dist/objects/processes.js +7 -61
  530. package/dist/objects/project-briefs.d.ts +13 -57
  531. package/dist/objects/project-briefs.js +16 -78
  532. package/dist/objects/skills.d.ts +9 -44
  533. package/dist/objects/skills.js +8 -54
  534. package/dist/postinstall.js +7 -20
  535. package/dist/predictions/planning-fallacy.d.ts +11 -34
  536. package/dist/rerankers/clef.js +6 -37
  537. package/dist/rerankers/cross-encoder.d.ts +31 -2
  538. package/dist/rerankers/cross-encoder.js +65 -101
  539. package/dist/rerankers/index.js +5 -4
  540. package/dist/rerankers/jev.js +11 -10
  541. package/dist/rerankers/llm.d.ts +2 -11
  542. package/dist/rerankers/llm.js +14 -14
  543. package/dist/rerankers/outage-warning.d.ts +5 -2
  544. package/dist/rerankers/outage-warning.js +7 -4
  545. package/dist/rerankers/remote.d.ts +1 -0
  546. package/dist/rerankers/remote.js +2 -0
  547. package/dist/rerankers/types.d.ts +2 -14
  548. package/dist/search/bm25-search.js +1 -1
  549. package/dist/search/boosts.d.ts +0 -2
  550. package/dist/search/boosts.js +3 -3
  551. package/dist/search/embed-memories.d.ts +9 -0
  552. package/dist/search/embed-memories.js +377 -0
  553. package/dist/search/goal-boost.d.ts +23 -0
  554. package/dist/search/goal-boost.js +93 -0
  555. package/dist/search/hybrid.d.ts +11 -2
  556. package/dist/search/hybrid.js +9 -4
  557. package/dist/search/multihop.js +2 -3
  558. package/dist/search/path-context.d.ts +5 -18
  559. package/dist/search/path-context.js +5 -18
  560. package/dist/search/physics-search.d.ts +6 -3
  561. package/dist/search/physics-search.js +29 -19
  562. package/dist/search/rerank.js +1 -1
  563. package/dist/search/rrf.d.ts +7 -35
  564. package/dist/search/rrf.js +5 -30
  565. package/dist/search/vector.d.ts +13 -4
  566. package/dist/search/vector.js +40 -13
  567. package/dist/server/auth.d.ts +11 -28
  568. package/dist/server/auth.js +49 -32
  569. package/dist/server/boot.d.ts +2 -21
  570. package/dist/server/boot.js +69 -161
  571. package/dist/server/client-ip.d.ts +3 -21
  572. package/dist/server/client-ip.js +8 -30
  573. package/dist/server/deadline.d.ts +0 -2
  574. package/dist/server/deadline.js +1 -7
  575. package/dist/server/defaults.d.ts +4 -0
  576. package/dist/server/defaults.js +5 -0
  577. package/dist/server/key-check-bounds.d.ts +2 -1
  578. package/dist/server/lifecycle.d.ts +5 -4
  579. package/dist/server/lifecycle.js +19 -4
  580. package/dist/server/mcp-http.js +24 -53
  581. package/dist/server/rate-limit.d.ts +5 -18
  582. package/dist/server/rate-limit.js +4 -13
  583. package/dist/server/request.d.ts +4 -8
  584. package/dist/server/request.js +16 -19
  585. package/dist/server/route-checks.d.ts +7 -0
  586. package/dist/server/route-checks.js +42 -0
  587. package/dist/server/route-table.d.ts +9 -8
  588. package/dist/server/route-table.js +127 -139
  589. package/dist/server/routes/admin.d.ts +8 -8
  590. package/dist/server/routes/admin.js +35 -49
  591. package/dist/server/routes/customer-notes.d.ts +6 -6
  592. package/dist/server/routes/customer-notes.js +8 -14
  593. package/dist/server/routes/decisions.d.ts +6 -6
  594. package/dist/server/routes/decisions.js +12 -21
  595. package/dist/server/routes/incidents.d.ts +6 -6
  596. package/dist/server/routes/incidents.js +14 -25
  597. package/dist/server/routes/memories.d.ts +9 -9
  598. package/dist/server/routes/memories.js +20 -63
  599. package/dist/server/routes/object-routes.d.ts +6 -11
  600. package/dist/server/routes/object-routes.js +11 -22
  601. package/dist/server/routes/policies.d.ts +7 -7
  602. package/dist/server/routes/policies.js +12 -22
  603. package/dist/server/routes/predictions.d.ts +6 -6
  604. package/dist/server/routes/predictions.js +22 -38
  605. package/dist/server/routes/processes.d.ts +6 -6
  606. package/dist/server/routes/processes.js +17 -28
  607. package/dist/server/routes/project-briefs.d.ts +7 -7
  608. package/dist/server/routes/project-briefs.js +11 -20
  609. package/dist/server/routes/recall.d.ts +5 -5
  610. package/dist/server/routes/recall.js +16 -45
  611. package/dist/server/routes/skills.d.ts +7 -7
  612. package/dist/server/routes/skills.js +10 -22
  613. package/dist/server/server-detect.d.ts +15 -53
  614. package/dist/server/server-detect.js +55 -96
  615. package/dist/server/sleep-child.js +26 -7
  616. package/dist/server/sleep-offload.d.ts +11 -5
  617. package/dist/server/sleep-offload.js +21 -12
  618. package/dist/server/types.d.ts +32 -18
  619. package/dist/server/validation.d.ts +3 -2
  620. package/dist/server/validation.js +15 -33
  621. package/dist/server.d.ts +7 -6
  622. package/dist/server.js +8 -6
  623. package/dist/sharing/global-store.d.ts +19 -0
  624. package/dist/sharing/global-store.js +75 -0
  625. package/dist/sharing/global-sync.d.ts +6 -0
  626. package/dist/sharing/global-sync.js +73 -0
  627. package/dist/sharing/project-merge.d.ts +11 -19
  628. package/dist/sharing/project-merge.js +63 -125
  629. package/dist/sharing/search-both.d.ts +60 -0
  630. package/dist/sharing/search-both.js +138 -0
  631. package/dist/sharing/share.d.ts +40 -0
  632. package/dist/sharing/share.js +229 -0
  633. package/dist/store/ambient.js +9 -15
  634. package/dist/store/audit-event.d.ts +5 -13
  635. package/dist/store/audit-event.js +4 -12
  636. package/dist/store/audit.d.ts +2 -21
  637. package/dist/store/audit.js +8 -67
  638. package/dist/store/auth.d.ts +10 -8
  639. package/dist/store/auth.js +17 -12
  640. package/dist/store/candidates.d.ts +23 -5
  641. package/dist/store/candidates.js +119 -71
  642. package/dist/store/capture-write.d.ts +17 -0
  643. package/dist/store/capture-write.js +35 -0
  644. package/dist/store/card-detail.d.ts +2 -1
  645. package/dist/store/card-detail.js +2 -1
  646. package/dist/store/cards.d.ts +14 -9
  647. package/dist/store/cards.js +72 -126
  648. package/dist/store/compaction-caller.d.ts +18 -0
  649. package/dist/store/compaction-caller.js +29 -0
  650. package/dist/store/compactions-record.d.ts +115 -0
  651. package/dist/store/compactions-record.js +417 -0
  652. package/dist/store/compactions.js +6 -4
  653. package/dist/store/conflicts.d.ts +4 -21
  654. package/dist/store/conflicts.js +76 -152
  655. package/dist/store/connectors/dlq.d.ts +10 -0
  656. package/dist/store/connectors/dlq.js +32 -0
  657. package/dist/store/connectors/github.d.ts +14 -16
  658. package/dist/store/connectors/github.js +34 -57
  659. package/dist/store/connectors/slack.d.ts +2 -11
  660. package/dist/store/connectors/slack.js +18 -47
  661. package/dist/store/dashboard-reads.js +11 -14
  662. package/dist/store/delete-and-batch.d.ts +17 -31
  663. package/dist/store/delete-and-batch.js +84 -67
  664. package/dist/store/delivery-recorder.d.ts +15 -4
  665. package/dist/store/delivery-recorder.js +34 -17
  666. package/dist/store/descendant-page.js +6 -3
  667. package/dist/store/diagnostics.js +6 -13
  668. package/dist/store/dormant.d.ts +8 -30
  669. package/dist/store/dormant.js +18 -57
  670. package/dist/store/embeddings/index.d.ts +11 -90
  671. package/dist/store/embeddings/index.js +18 -523
  672. package/dist/store/entry-reads.d.ts +34 -61
  673. package/dist/store/entry-reads.js +111 -136
  674. package/dist/store/entry-row.d.ts +6 -35
  675. package/dist/store/entry-row.js +9 -37
  676. package/dist/store/entry-writes.d.ts +12 -18
  677. package/dist/store/entry-writes.js +46 -44
  678. package/dist/store/failure-log-at.d.ts +8 -0
  679. package/dist/store/failure-log-at.js +16 -0
  680. package/dist/store/failure-log.d.ts +2 -2
  681. package/dist/store/failure-log.js +5 -3
  682. package/dist/{trust → store}/gated-write.d.ts +3 -1
  683. package/dist/{trust → store}/gated-write.js +7 -5
  684. package/dist/store/goals.d.ts +3 -40
  685. package/dist/store/goals.js +41 -178
  686. package/dist/store/graph-queue.d.ts +6 -22
  687. package/dist/store/graph-queue.js +14 -45
  688. package/dist/store/graph-reads.d.ts +11 -35
  689. package/dist/store/graph-reads.js +24 -60
  690. package/dist/store/graph-rows.d.ts +3 -6
  691. package/dist/store/graph-rows.js +6 -9
  692. package/dist/store/graph-view-rows.d.ts +2 -1
  693. package/dist/store/graph-view-rows.js +2 -1
  694. package/dist/store/graph-writes.d.ts +10 -35
  695. package/dist/store/graph-writes.js +59 -106
  696. package/dist/store/half-life.d.ts +2 -1
  697. package/dist/store/half-life.js +14 -16
  698. package/dist/store/handoffs.d.ts +6 -12
  699. package/dist/store/handoffs.js +22 -40
  700. package/dist/store/index-and-stats.d.ts +6 -19
  701. package/dist/store/index-and-stats.js +36 -84
  702. package/dist/store/key-writes.js +1 -1
  703. package/dist/store/ledger-turn.d.ts +9 -0
  704. package/dist/store/ledger-turn.js +38 -0
  705. package/dist/store/mirrors.d.ts +2 -6
  706. package/dist/store/mirrors.js +24 -29
  707. package/dist/store/open.d.ts +0 -4
  708. package/dist/store/open.js +42 -62
  709. package/dist/store/pilot-arm.d.ts +12 -0
  710. package/dist/store/pilot-arm.js +42 -0
  711. package/dist/store/planning-fallacy-evidence.d.ts +2 -30
  712. package/dist/store/planning-fallacy-evidence.js +8 -37
  713. package/dist/store/port.d.ts +91 -82
  714. package/dist/store/port.js +8 -0
  715. package/dist/store/predictions.d.ts +12 -53
  716. package/dist/store/predictions.js +41 -125
  717. package/dist/store/project-tags.d.ts +62 -0
  718. package/dist/store/project-tags.js +67 -0
  719. package/dist/{cli → store}/quality-repair.js +15 -31
  720. package/dist/store/quarantine.js +2 -1
  721. package/dist/store/raw-archive.d.ts +4 -16
  722. package/dist/store/raw-archive.js +14 -29
  723. package/dist/store/recall-trace.d.ts +12 -77
  724. package/dist/store/recall-trace.js +37 -97
  725. package/dist/store/rejected-values.js +9 -20
  726. package/dist/store/rejection-probe.d.ts +4 -0
  727. package/dist/store/rejection-probe.js +19 -0
  728. package/dist/store/rejection.d.ts +10 -73
  729. package/dist/store/rejection.js +12 -84
  730. package/dist/store/report-reads.d.ts +6 -0
  731. package/dist/store/report-reads.js +29 -0
  732. package/dist/store/rows.d.ts +9 -19
  733. package/dist/store/rows.js +36 -34
  734. package/dist/store/rule-sql.d.ts +14 -0
  735. package/dist/store/rule-sql.js +56 -0
  736. package/dist/store/search-rows.d.ts +7 -38
  737. package/dist/store/search-rows.js +23 -54
  738. package/dist/store/sessions.d.ts +10 -47
  739. package/dist/store/sessions.js +21 -75
  740. package/dist/store/set-aside.d.ts +14 -0
  741. package/dist/store/set-aside.js +23 -0
  742. package/dist/store/sqlite/busy.d.ts +3 -0
  743. package/dist/store/sqlite/busy.js +8 -0
  744. package/dist/store/sqlite/connector-events-group.js +5 -8
  745. package/dist/store/sqlite/connector-writes-group.js +3 -3
  746. package/dist/store/sqlite/entry-writes-group.js +4 -4
  747. package/dist/store/sqlite/error-codec.js +8 -5
  748. package/dist/store/sqlite/executor.d.ts +2 -1
  749. package/dist/store/sqlite/executor.js +12 -5
  750. package/dist/store/sqlite/graph-reads-group.js +1 -1
  751. package/dist/store/sqlite/held-connection.d.ts +9 -0
  752. package/dist/store/sqlite/held-connection.js +41 -0
  753. package/dist/store/sqlite/local.d.ts +3 -3
  754. package/dist/store/sqlite/local.js +1 -0
  755. package/dist/store/sqlite/object-rows.d.ts +1 -1
  756. package/dist/store/sqlite/object-rows.js +6 -3
  757. package/dist/store/sqlite/objects-group.d.ts +1 -1
  758. package/dist/store/sqlite/objects-group.js +5 -3
  759. package/dist/store/sqlite/quarantine-group.js +2 -2
  760. package/dist/store/sqlite/store.d.ts +1 -4
  761. package/dist/store/sqlite/store.js +16 -15
  762. package/dist/store/sqlite/vector-reads-group.js +2 -2
  763. package/dist/store/sqlite/worker-jobs.js +1 -1
  764. package/dist/store/sqlite/worker-ops.d.ts +13 -2
  765. package/dist/store/sqlite/worker-ops.js +13 -2
  766. package/dist/store/sqlite/worker-store.js +5 -2
  767. package/dist/store/summaries.d.ts +11 -63
  768. package/dist/store/summaries.js +37 -148
  769. package/dist/store/summary-dirty.js +1 -1
  770. package/dist/store/tenant-lookup.d.ts +6 -1
  771. package/dist/store/tenant-lookup.js +7 -0
  772. package/dist/store/tenant.d.ts +2 -16
  773. package/dist/store/tenant.js +4 -19
  774. package/dist/store/token-ledger.d.ts +13 -50
  775. package/dist/store/token-ledger.js +19 -85
  776. package/dist/store/usage-reports.js +5 -13
  777. package/dist/store/vector-index.d.ts +46 -0
  778. package/dist/store/vector-index.js +171 -0
  779. package/dist/store/working-memory.d.ts +6 -25
  780. package/dist/store/working-memory.js +18 -52
  781. package/dist/support-bundle.js +9 -8
  782. package/dist/trust/reject-flow.js +3 -5
  783. package/dist/util/agent-homes.d.ts +15 -0
  784. package/dist/util/agent-homes.js +34 -0
  785. package/dist/util/anthropic-messages.d.ts +3 -0
  786. package/dist/util/anthropic-messages.js +35 -6
  787. package/dist/util/atomic-write.d.ts +2 -1
  788. package/dist/util/atomic-write.js +35 -4
  789. package/dist/util/capped-json.d.ts +6 -0
  790. package/dist/util/capped-json.js +46 -0
  791. package/dist/util/chunked.d.ts +3 -0
  792. package/dist/util/chunked.js +10 -0
  793. package/dist/util/crash-handlers.d.ts +8 -1
  794. package/dist/util/crash-handlers.js +52 -10
  795. package/dist/util/ellipsize.d.ts +3 -0
  796. package/dist/util/ellipsize.js +5 -0
  797. package/dist/util/env.d.ts +14 -6
  798. package/dist/util/env.js +15 -7
  799. package/dist/util/format.d.ts +3 -0
  800. package/dist/util/format.js +6 -0
  801. package/dist/util/home-path.d.ts +2 -1
  802. package/dist/util/home-path.js +4 -2
  803. package/dist/util/hook-payload.d.ts +8 -0
  804. package/dist/util/hook-payload.js +37 -0
  805. package/dist/util/http-retry.d.ts +9 -1
  806. package/dist/util/http-retry.js +67 -8
  807. package/dist/util/http-util.d.ts +0 -8
  808. package/dist/util/http-util.js +10 -21
  809. package/dist/util/limits.d.ts +7 -0
  810. package/dist/util/limits.js +14 -0
  811. package/dist/util/log.d.ts +7 -2
  812. package/dist/util/log.js +34 -9
  813. package/dist/util/request-scope.d.ts +5 -2
  814. package/dist/util/request-scope.js +13 -7
  815. package/dist/util/secret-detect.d.ts +5 -30
  816. package/dist/util/secret-detect.js +19 -40
  817. package/dist/util/sqlite-blocked.d.ts +2 -0
  818. package/dist/util/sqlite-blocked.js +5 -0
  819. package/dist/util/stored-json.d.ts +1 -1
  820. package/dist/util/stored-json.js +1 -1
  821. package/dist/util/stream-tee.d.ts +3 -0
  822. package/dist/util/stream-tee.js +35 -0
  823. package/dist/util/time.d.ts +4 -0
  824. package/dist/util/time.js +4 -0
  825. package/dist/util/token-text.d.ts +1 -4
  826. package/dist/util/token-text.js +1 -4
  827. package/dist/util/transcript-tail.d.ts +2 -0
  828. package/dist/util/transcript-tail.js +24 -23
  829. package/dist/util/version.d.ts +5 -20
  830. package/dist/util/version.js +5 -20
  831. package/dist/{store → util}/yaml.d.ts +1 -5
  832. package/dist/{store → util}/yaml.js +2 -6
  833. package/extensions/openclaw-plugin/index.ts +1 -1
  834. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  835. package/extensions/openclaw-plugin/package.json +1 -1
  836. package/openclaw.plugin.json +1 -1
  837. package/package.json +2 -2
  838. package/dist/cli/provenance-coverage.d.ts +0 -18
  839. package/dist/connectors/github/cli-impl.d.ts +0 -25
  840. package/dist/sharing/scope.d.ts +0 -14
  841. package/dist/sharing/shared.d.ts +0 -187
  842. package/dist/sharing/shared.js +0 -563
  843. package/dist/store/embeddings/local.d.ts +0 -15
  844. package/dist/store/embeddings/local.js +0 -192
  845. package/dist/store/embeddings/provider.d.ts +0 -77
  846. package/dist/store/markdown.d.ts +0 -10
  847. package/dist/store/recall-scope.d.ts +0 -138
  848. package/dist/store/recall-scope.js +0 -216
  849. package/dist/store/vector-writes.d.ts +0 -13
  850. package/dist/store/vector-writes.js +0 -89
  851. /package/dist/{store → core}/object-types.d.ts +0 -0
  852. /package/dist/{store → core}/object-types.js +0 -0
  853. /package/dist/{cli → store}/quality-repair.d.ts +0 -0
  854. /package/dist/{capture → util}/compaction-items.d.ts +0 -0
  855. /package/dist/{capture → util}/compaction-items.js +0 -0
package/dist/cli/goals.js CHANGED
@@ -1,46 +1,48 @@
1
1
  // `hippo goal`: the per-session goal stack that recall boosts.
2
- import { envHippoSessionId } from '../util/env.js';
2
+ import { DEFAULT_TENANT_ID, envHippoSessionId } from '../util/env.js';
3
3
  import * as api from '../api/index.js';
4
- import { resolveTenantId } from '../store/tenant.js';
4
+ import { cliApiContext } from './api-context.js';
5
5
  import { printError } from './output.js';
6
- import { boolFlag, flagIsTrue, stringFlag } from './flag-values.js';
7
- // ---------------------------------------------------------------------------
6
+ import { boolFlag, flagIsTrue, isStringFlag, stringFlag } from './flag-values.js';
7
+ import { CliExit } from './exit.js';
8
8
  // `hippo goal <push|list|complete|suspend|resume>`
9
- // ---------------------------------------------------------------------------
10
9
  const GOAL_POLICY_TYPES = [
11
10
  'schema-fit-biased',
12
11
  'error-prioritized',
13
12
  'recency-first',
14
13
  'hybrid',
15
14
  ];
15
+ function isGoalPolicyType(value) {
16
+ return GOAL_POLICY_TYPES.some((type) => type === value);
17
+ }
16
18
  function sanitizeGoalName(s) {
17
19
  // Strip C0 control chars + DEL to prevent terminal escape injection.
18
- return s.replace(/[\x00-\x1f\x7f]/g, '?');
20
+ return s.replace(/[^\x20-\x7e\u0080-\uffff]/g, '?');
19
21
  }
20
- function resolveGoalSession(flags) {
22
+ function resolveGoalSession(flags, defaultTenantId) {
21
23
  const sessionId = (flags['session-id'] !== undefined
22
24
  ? String(flags['session-id'])
23
25
  : envHippoSessionId() ?? '').trim();
24
26
  if (!sessionId) {
25
27
  printError('session id required (set HIPPO_SESSION_ID or pass --session-id)');
26
- process.exit(1);
28
+ throw new CliExit(1);
27
29
  }
28
30
  const tenantId = (flags['tenant-id'] !== undefined
29
31
  ? String(flags['tenant-id'])
30
- : resolveTenantId({})).trim() || 'default';
32
+ : defaultTenantId).trim() || DEFAULT_TENANT_ID;
31
33
  return { sessionId, tenantId };
32
34
  }
33
35
  function readGoalPolicy(flags) {
34
36
  const policyRaw = flags['policy'];
35
37
  if (policyRaw === true) {
36
38
  printError('--policy requires a value (e.g., --policy error-prioritized)');
37
- process.exit(1);
39
+ throw new CliExit(1);
38
40
  }
39
- if (typeof policyRaw !== 'string')
41
+ if (!isStringFlag(policyRaw))
40
42
  return undefined;
41
- if (!GOAL_POLICY_TYPES.includes(policyRaw)) {
43
+ if (!isGoalPolicyType(policyRaw)) {
42
44
  printError(`Unknown --policy '${policyRaw}'. Expected one of: ${GOAL_POLICY_TYPES.join(' | ')}.`);
43
- process.exit(1);
45
+ throw new CliExit(1);
44
46
  }
45
47
  return { policyType: policyRaw };
46
48
  }
@@ -48,44 +50,44 @@ function readGoalLevel(flags) {
48
50
  const levelRaw = flags['level'];
49
51
  if (levelRaw === true) {
50
52
  printError('--level requires a value (e.g., --level 1)');
51
- process.exit(1);
53
+ throw new CliExit(1);
52
54
  }
53
55
  if (levelRaw === undefined)
54
56
  return undefined;
55
57
  const parsed = Number(levelRaw);
56
58
  if (!Number.isFinite(parsed) || parsed < 0 || parsed > 2 || !Number.isInteger(parsed)) {
57
59
  printError('--level must be an integer in [0, 2]');
58
- process.exit(1);
60
+ throw new CliExit(1);
59
61
  }
60
62
  return parsed;
61
63
  }
62
- function cmdGoalPush(hippoRoot, args, flags) {
64
+ function cmdGoalPush(hippoRoot, defaultTenantId, args, flags) {
63
65
  const rawName = args.join(' ').trim();
64
66
  if (!rawName) {
65
67
  printError('Usage: hippo goal push <name> [--policy <type>] [--success "<condition>"] [--level N] [--parent <goalId>]');
66
- process.exit(1);
68
+ throw new CliExit(1);
67
69
  }
68
70
  // Sanitize at WRITE time so corrupt names never enter the DB.
69
71
  const name = sanitizeGoalName(rawName);
70
72
  if (name !== rawName) {
71
73
  printError('note: stripped control characters from goal name');
72
74
  }
73
- const { sessionId, tenantId } = resolveGoalSession(flags);
75
+ const { sessionId, tenantId } = resolveGoalSession(flags, defaultTenantId);
74
76
  const policy = readGoalPolicy(flags);
75
77
  const successRaw = flags['success'];
76
78
  if (successRaw === true) {
77
79
  printError('--success requires a value (e.g., --success "<condition>")');
78
- process.exit(1);
80
+ throw new CliExit(1);
79
81
  }
80
82
  const successCondition = stringFlag(flags, 'success');
81
83
  const level = readGoalLevel(flags);
82
84
  const parentRaw = flags['parent'];
83
85
  if (parentRaw === true) {
84
86
  printError('--parent requires a value (e.g., --parent <goalId>)');
85
- process.exit(1);
87
+ throw new CliExit(1);
86
88
  }
87
89
  const parentGoalId = stringFlag(flags, 'parent');
88
- const goal = api.goalPush(goalContext(hippoRoot, tenantId), {
90
+ const goal = api.goalPush(cliApiContext(hippoRoot, tenantId), {
89
91
  sessionId,
90
92
  goalName: name,
91
93
  level,
@@ -95,21 +97,15 @@ function cmdGoalPush(hippoRoot, args, flags) {
95
97
  });
96
98
  console.log(goal.id);
97
99
  }
98
- function goalContext(hippoRoot, tenantId = resolveTenantId({})) {
99
- return { hippoRoot, tenantId, actor: api.adminActor('cli') };
100
- }
101
- function cmdGoalList(hippoRoot, flags) {
102
- const { sessionId, tenantId } = resolveGoalSession(flags);
100
+ function cmdGoalList(hippoRoot, defaultTenantId, flags) {
101
+ const { sessionId, tenantId } = resolveGoalSession(flags, defaultTenantId);
103
102
  const showAll = boolFlag(flags, 'all');
104
- const goals = api.goalList(goalContext(hippoRoot, tenantId), { sessionId, all: showAll });
103
+ const goals = api.goalList(cliApiContext(hippoRoot, tenantId), { sessionId, all: showAll });
105
104
  if (goals.length === 0) {
106
105
  console.log('(no goals)');
107
106
  return;
108
107
  }
109
- // 4-column table: id, status, goal_name, outcome. Plan calls it a "2-column"
110
- // table but the assertion list (id, status, goal_name, outcome) needs four;
111
- // tests check for substrings ('active', '0.9', name) so column count is
112
- // observably four but not asserted.
108
+ // Four columns (id, status, goal_name, outcome); tests only check substrings, so the count is not asserted.
113
109
  const rows = goals.map(g => ({
114
110
  id: g.id,
115
111
  status: g.status,
@@ -128,74 +124,74 @@ function cmdGoalList(hippoRoot, flags) {
128
124
  console.log(`${pad(r.id, widths.id)} ${pad(r.status, widths.status)} ${pad(r.name, widths.name)} ${pad(r.outcome, widths.outcome)}`);
129
125
  }
130
126
  }
131
- function cmdGoalComplete(hippoRoot, args, flags) {
127
+ function cmdGoalComplete(hippoRoot, tenantId, args, flags) {
132
128
  const id = args[0];
133
129
  if (!id) {
134
130
  printError('Usage: hippo goal complete <id> [--outcome <0..1>] [--no-propagate]');
135
- process.exit(1);
131
+ throw new CliExit(1);
136
132
  }
137
133
  let outcomeScore;
138
134
  const outcomeRaw = flags['outcome'];
139
135
  if (outcomeRaw === true) {
140
136
  printError('--outcome requires a value (e.g., --outcome 0.9)');
141
- process.exit(1);
137
+ throw new CliExit(1);
142
138
  }
143
139
  if (outcomeRaw !== undefined) {
144
140
  const parsed = Number(outcomeRaw);
145
141
  if (!Number.isFinite(parsed) || parsed < 0 || parsed > 1) {
146
142
  printError('--outcome must be a number in [0, 1]');
147
- process.exit(1);
143
+ throw new CliExit(1);
148
144
  }
149
145
  outcomeScore = parsed;
150
146
  }
151
147
  const noPropagate = flagIsTrue(flags, 'no-propagate');
152
- api.goalComplete(goalContext(hippoRoot), id, { outcomeScore, noPropagate });
148
+ api.goalComplete(cliApiContext(hippoRoot, tenantId), id, { outcomeScore, noPropagate });
153
149
  console.log('ok');
154
150
  }
155
- function cmdGoalSuspend(hippoRoot, args) {
151
+ function cmdGoalSuspend(hippoRoot, tenantId, args) {
156
152
  const id = args[0];
157
153
  if (!id) {
158
154
  printError('Usage: hippo goal suspend <id>');
159
- process.exit(1);
155
+ throw new CliExit(1);
160
156
  }
161
- api.goalSuspend(goalContext(hippoRoot), id);
157
+ api.goalSuspend(cliApiContext(hippoRoot, tenantId), id);
162
158
  console.log('ok');
163
159
  }
164
- function cmdGoalResume(hippoRoot, args) {
160
+ function cmdGoalResume(hippoRoot, tenantId, args) {
165
161
  const id = args[0];
166
162
  if (!id) {
167
163
  printError('Usage: hippo goal resume <id>');
168
- process.exit(1);
164
+ throw new CliExit(1);
169
165
  }
170
- api.goalResume(goalContext(hippoRoot), id);
166
+ api.goalResume(cliApiContext(hippoRoot, tenantId), id);
171
167
  console.log('ok');
172
168
  }
173
- export function cmdGoal(hippoRoot, args, flags) {
169
+ export function handleGoal({ hippoRoot, tenantId, args, flags }) {
174
170
  const sub = args[0];
175
171
  if (!sub) {
176
172
  printError('Usage: hippo goal <push|list|complete|suspend|resume> [args]');
177
- process.exit(1);
173
+ throw new CliExit(1);
178
174
  }
179
175
  const subArgs = args.slice(1);
180
176
  switch (sub) {
181
177
  case 'push':
182
- cmdGoalPush(hippoRoot, subArgs, flags);
178
+ cmdGoalPush(hippoRoot, tenantId, subArgs, flags);
183
179
  return;
184
180
  case 'list':
185
- cmdGoalList(hippoRoot, flags);
181
+ cmdGoalList(hippoRoot, tenantId, flags);
186
182
  return;
187
183
  case 'complete':
188
- cmdGoalComplete(hippoRoot, subArgs, flags);
184
+ cmdGoalComplete(hippoRoot, tenantId, subArgs, flags);
189
185
  return;
190
186
  case 'suspend':
191
- cmdGoalSuspend(hippoRoot, subArgs);
187
+ cmdGoalSuspend(hippoRoot, tenantId, subArgs);
192
188
  return;
193
189
  case 'resume':
194
- cmdGoalResume(hippoRoot, subArgs);
190
+ cmdGoalResume(hippoRoot, tenantId, subArgs);
195
191
  return;
196
192
  default:
197
193
  printError(`Unknown goal subcommand: ${sub}. Expected: push | list | complete | suspend | resume.`);
198
- process.exit(1);
194
+ throw new CliExit(1);
199
195
  }
200
196
  }
201
197
  //# sourceMappingURL=goals.js.map
@@ -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,48 +1,28 @@
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
- /**
5
- * Detached worker that counts re-reads, runs sleep, then capture. Invoked via the internal
6
- * `__session-end-worker` subcommand (not user-facing). Failures in one stage
7
- * do not block the other.
8
- */
3
+ /** Detached worker (internal `__session-end-worker`): counts re-reads, runs sleep, then capture; one stage failing does not block the other. */
9
4
  /** A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here. */
10
5
  export declare function logSessionEndImport(logFile: string | null, transcriptPath: string | undefined): void;
11
- /**
12
- * Best-effort log line for the snapshot-close step in
13
- * `cmdSessionEndWorker`. `cmdSleep`/`cmdCapture` each tee console output to
14
- * `logFile` only for their own duration (the tee is restored before this
15
- * runs), so a plain `console.log` here would be silently discarded under
16
- * the detached worker's `stdio: 'ignore'` — write straight to the file
17
- * instead, matching capture.ts's `appendPreCompactLog` convention.
18
- */
6
+ /** Best-effort log line for the cmdSessionEndWorker snapshot-close step: cmdSleep/cmdCapture restore their console tee before this runs,
7
+ * so console.log would be lost under the worker's `stdio: 'ignore'`; write to the file directly. */
19
8
  export declare function appendSessionEndCloseLog(logFile: string | null, message: string, opts?: {
20
9
  startFresh?: boolean;
21
10
  }): void;
11
+ /** A session-end step that failed: one warn line, and the same text in the session log, the only place a detached worker's output survives. */
12
+ export declare function reportSessionEndFailure<E>(logFile: string | null, step: string, err: E): void;
22
13
  export declare function hostSessionId(): string | undefined;
23
- /**
24
- * Compaction drops the pinned blocks the per-prompt hook injected
25
- * earlier, so record a `reset` for the payload's session and the next prompt
26
- * injects again even if nothing changed. `requiredSource` limits it to hook
27
- * payloads with that `source` (SessionStart fires for other reasons too).
28
- * Best-effort and silent: a malformed payload records nothing.
29
- */
30
- export declare function resetHookInjection(hippoRoot: string, stdinText: string | undefined, requiredSource: string | null): void;
31
- /**
32
- * The store a Claude Code hook writes to: the project store when there is
33
- * one, else an existing global store, else the project path (which the hook
34
- * then skips, since hooks fire in every directory and must not create one).
35
- * Pre-compact and compact-resume must agree, or a snapshot saved to one store
36
- * is looked for in the other.
37
- */
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.
15
+ * `requiredSource` limits it to payloads with that `source`; best-effort and silent on a malformed payload. */
16
+ export declare function resetHookInjection(hippoRoot: string, tenantId: string, stdinText: string | undefined, requiredSource: string | null): void;
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).
18
+ * Pre-compact and compact-resume must agree, or a snapshot is looked for in the other store. */
38
19
  export declare function hookStoreRoot(hippoRoot: string): string;
39
20
  /** `--runtime copilot`, or `--format copilot` on `hippo context`, marks a Copilot hook: the flag decides, never the payload. */
40
21
  export declare function hookRuntime(flags: CliFlags): HookRuntime;
41
- /** A delivery recorder when the ledger store enables one, else null; never throws. */
42
- export declare function startDeliveryRecorder(hippoRoot: string, stdinText: string | undefined, runtime: HookRuntime, eventType?: DeliveryEventType): DeliveryRecorder | null;
43
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`. */
44
23
  export declare function payloadCwdRoot(hippoRoot: string, stdinText: string | undefined, runtime: HookRuntime): string;
45
- /** 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. */
46
26
  export declare function runHookWithStores<T>(fn: () => T | Promise<T>): Promise<T | undefined>;
47
27
  /** Whether this session sits in the pilot's holdout arm; off at rate 0 and with no session id. */
48
28
  export declare function inPilotHoldout(hippoRoot: string, tenantId: string, sessionId: string | undefined, write: boolean): boolean;
@@ -2,27 +2,17 @@
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';
16
- import { getGlobalRoot } from '../sharing/shared.js';
11
+ import { getHippoRoot, isInitialized } from '../core/project-identity.js';
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
- import { printError } from './output.js';
21
- /**
22
- * Detached worker that counts re-reads, runs sleep, then capture. Invoked via the internal
23
- * `__session-end-worker` subcommand (not user-facing). Failures in one stage
24
- * do not block the other.
25
- */
15
+ /** Detached worker (internal `__session-end-worker`): counts re-reads, runs sleep, then capture; one stage failing does not block the other. */
26
16
  /** A folder without its own store never sleeps at session end, so its project's agent notes go to the global store here. */
27
17
  export function logSessionEndImport(logFile, transcriptPath) {
28
18
  try {
@@ -37,14 +27,8 @@ export function logSessionEndImport(logFile, transcriptPath) {
37
27
  appendSessionEndCloseLog(logFile, `agent memory import failed: ${errorMessage(err)}`);
38
28
  }
39
29
  }
40
- /**
41
- * Best-effort log line for the snapshot-close step in
42
- * `cmdSessionEndWorker`. `cmdSleep`/`cmdCapture` each tee console output to
43
- * `logFile` only for their own duration (the tee is restored before this
44
- * runs), so a plain `console.log` here would be silently discarded under
45
- * the detached worker's `stdio: 'ignore'` — write straight to the file
46
- * instead, matching capture.ts's `appendPreCompactLog` convention.
47
- */
30
+ /** Best-effort log line for the cmdSessionEndWorker snapshot-close step: cmdSleep/cmdCapture restore their console tee before this runs,
31
+ * so console.log would be lost under the worker's `stdio: 'ignore'`; write to the file directly. */
48
32
  export function appendSessionEndCloseLog(logFile, message, opts = {}) {
49
33
  if (!logFile)
50
34
  return;
@@ -60,33 +44,29 @@ export function appendSessionEndCloseLog(logFile, message, opts = {}) {
60
44
  log.debug(`session-end log not written: ${errorMessage(err)}`);
61
45
  }
62
46
  }
47
+ /** A session-end step that failed: one warn line, and the same text in the session log, the only place a detached worker's output survives. */
48
+ export function reportSessionEndFailure(logFile, step, err) {
49
+ const line = `${step} failed: ${errorMessage(err)}`;
50
+ log.warn(line);
51
+ appendSessionEndCloseLog(logFile, line);
52
+ }
63
53
  // Claude Code exports its own session var, not ours; without the fallback agent-run recalls trace with no session.
64
54
  export function hostSessionId() {
65
55
  return envHippoSessionId() ?? envClaudeCodeSessionId();
66
56
  }
67
- /**
68
- * Compaction drops the pinned blocks the per-prompt hook injected
69
- * earlier, so record a `reset` for the payload's session and the next prompt
70
- * injects again even if nothing changed. `requiredSource` limits it to hook
71
- * payloads with that `source` (SessionStart fires for other reasons too).
72
- * Best-effort and silent: a malformed payload records nothing.
73
- */
74
- export function resetHookInjection(hippoRoot, stdinText, requiredSource) {
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.
58
+ * `requiredSource` limits it to payloads with that `source`; best-effort and silent on a malformed payload. */
59
+ export function resetHookInjection(hippoRoot, tenantId, stdinText, requiredSource) {
75
60
  const sessionId = hookPayloadSessionId(stdinText, requiredSource);
76
61
  // A sub-agent's compaction leaves its parent's context, and the blocks in it, as they were.
77
62
  if (sessionId === null || isSubagentPayload(stdinText))
78
63
  return;
79
64
  bookTokenUse(hippoRoot, {
80
- tenantId: resolveTenantId({}), sessionId, surface: 'hook', event: 'reset', items: 0, tokens: 0,
65
+ tenantId, sessionId, surface: 'hook', event: 'reset', items: 0, tokens: 0,
81
66
  });
82
67
  }
83
- /**
84
- * The store a Claude Code hook writes to: the project store when there is
85
- * one, else an existing global store, else the project path (which the hook
86
- * then skips, since hooks fire in every directory and must not create one).
87
- * Pre-compact and compact-resume must agree, or a snapshot saved to one store
88
- * is looked for in the other.
89
- */
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).
69
+ * Pre-compact and compact-resume must agree, or a snapshot is looked for in the other store. */
90
70
  export function hookStoreRoot(hippoRoot) {
91
71
  if (isInitialized(hippoRoot))
92
72
  return hippoRoot;
@@ -97,30 +77,6 @@ export function hookStoreRoot(hippoRoot) {
97
77
  export function hookRuntime(flags) {
98
78
  return flags['runtime'] === 'copilot' || flags['format'] === 'copilot' ? 'copilot' : 'claude-code';
99
79
  }
100
- /** A delivery recorder when the ledger store enables one, else null; never throws. */
101
- export function startDeliveryRecorder(hippoRoot, stdinText, runtime, eventType) {
102
- try {
103
- // The same store withLedgerDb writes the token ledger to, so its config governs both.
104
- const root = ledgerRoot(hippoRoot);
105
- if (root === null || !loadConfig(root).deliveryLedger.enabled)
106
- return null;
107
- return createDeliveryRecorder({
108
- root,
109
- storeHash: blockHash(path.resolve(root)),
110
- writeStore: isGlobalStoreRoot(root) ? 'global' : 'local',
111
- tenantId: resolveTenantId({}),
112
- stdinText,
113
- envSessionId: hostSessionId(),
114
- runtime: runtime === 'copilot' ? 'copilot' : undefined,
115
- eventType,
116
- });
117
- }
118
- catch (error) {
119
- // The hook's one-line stderr contract pins this exact text, so it bypasses the leveled logger.
120
- printError(`[hippo] delivery ledger skipped:${errorMessage(error)}`);
121
- return null;
122
- }
123
- }
124
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`. */
125
81
  export function payloadCwdRoot(hippoRoot, stdinText, runtime) {
126
82
  const cwd = runtime === 'copilot' ? hookPayloadString(stdinText, 'cwd') : null;
@@ -136,7 +92,8 @@ export function payloadCwdRoot(hippoRoot, stdinText, runtime) {
136
92
  }
137
93
  return getHippoRoot(process.cwd());
138
94
  }
139
- /** 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. */
140
97
  export async function runHookWithStores(fn) {
141
98
  try {
142
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
@@ -0,0 +1,112 @@
1
+ // First-class object verbs for incidents: open one, resolve it, close it.
2
+ import { extractPathTags } from '../search/path-context.js';
3
+ import * as incidentsModule from '../objects/incidents.js';
4
+ import { printError } from './output.js';
5
+ import { nonEmptyStringFlag, isStringFlag, stringFlag } from './flag-values.js';
6
+ import { requireInit } from './shared.js';
7
+ import { closeObject, foundOrExit, idArgOrExit, listObjects } from './object-verbs.js';
8
+ import { CliExit } from './exit.js';
9
+ const INCIDENT = { cmd: 'incident', noun: 'Incident', idLabel: 'incident' };
10
+ function printIncidentRow(inc) {
11
+ const linkPart = inc.linkedMemoryIds.length > 0 ? ` links=${inc.linkedMemoryIds.length}` : '';
12
+ console.log(`#${inc.id} [${inc.status}]${linkPart} memory=${inc.memoryId ?? '-'}`);
13
+ console.log(` ${inc.incidentText}`);
14
+ if (inc.context)
15
+ console.log(` context: ${inc.context}`);
16
+ }
17
+ function incidentList(hippoRoot, tenantId, flags) {
18
+ listObjects(flags, {
19
+ plural: 'incidents',
20
+ states: incidentsModule.VALID_INCIDENT_STATES,
21
+ load: (opts) => incidentsModule.loadIncidents(hippoRoot, tenantId, opts),
22
+ printRow: printIncidentRow,
23
+ });
24
+ }
25
+ function incidentGet(hippoRoot, tenantId, args) {
26
+ const id = idArgOrExit(args, 'Usage: hippo incident get <id>', INCIDENT.idLabel);
27
+ const incident = foundOrExit(incidentsModule.loadIncidentById(hippoRoot, tenantId, id), INCIDENT.noun, id);
28
+ console.log(`Incident #${incident.id}`);
29
+ console.log(` status: ${incident.status}`);
30
+ console.log(` text: ${incident.incidentText}`);
31
+ if (incident.context)
32
+ console.log(` context: ${incident.context}`);
33
+ if (incident.resolutionText)
34
+ console.log(` resolution: ${incident.resolutionText}`);
35
+ if (incident.resolvedAt)
36
+ console.log(` resolved_at: ${incident.resolvedAt}`);
37
+ if (incident.closedAt)
38
+ console.log(` closed_at: ${incident.closedAt}`);
39
+ if (incident.linkedMemoryIds.length > 0) {
40
+ console.log(` linked memories: ${incident.linkedMemoryIds.join(', ')}`);
41
+ }
42
+ if (incident.memoryId)
43
+ console.log(` memory: ${incident.memoryId}`);
44
+ console.log(` created: ${incident.createdAt}`);
45
+ }
46
+ function incidentResolve(hippoRoot, tenantId, args, flags) {
47
+ const id = idArgOrExit(args, 'Usage: hippo incident resolve <id> --resolution "<text>"', INCIDENT.idLabel);
48
+ const resolutionRaw = stringFlag(flags, 'resolution');
49
+ if (!resolutionRaw?.trim()) {
50
+ printError('--resolution requires a non-empty value, e.g. hippo incident resolve <id> --resolution "root cause fixed".');
51
+ throw new CliExit(1);
52
+ }
53
+ const resolved = incidentsModule.resolveIncident(hippoRoot, tenantId, id, resolutionRaw);
54
+ console.log(`Incident #${resolved.id} resolved.`);
55
+ }
56
+ function incidentClose(hippoRoot, tenantId, args) {
57
+ closeObject(args, INCIDENT, (id) => incidentsModule.closeIncident(hippoRoot, tenantId, id));
58
+ }
59
+ export function handleIncident({ hippoRoot, tenantId, args, flags }) {
60
+ requireInit(hippoRoot);
61
+ const subcommand = args[0] ?? '';
62
+ if (subcommand === 'list')
63
+ return incidentList(hippoRoot, tenantId, flags);
64
+ if (subcommand === 'get')
65
+ return incidentGet(hippoRoot, tenantId, args);
66
+ if (subcommand === 'resolve')
67
+ return incidentResolve(hippoRoot, tenantId, args, flags);
68
+ if (subcommand === 'close')
69
+ return incidentClose(hippoRoot, tenantId, args);
70
+ // Default subcommand is open (create): accept both `incident open "<text>"` and bare `incident "<text>"`;
71
+ // for the `open` keyword the text is args[1], otherwise args[0] is the text.
72
+ incidentCreate(hippoRoot, tenantId, subcommand === 'open' ? (args[1] ?? '') : subcommand, flags);
73
+ }
74
+ function incidentCreate(hippoRoot, tenantId, incidentText, flags) {
75
+ if (!incidentText) {
76
+ printError('Usage: hippo incident "<incident>" [--context "<details>"] [--link <memory-id>]...');
77
+ printError(' hippo incident list [--status open|resolved|closed|all] [--limit N]');
78
+ printError(' hippo incident get <id>');
79
+ printError(' hippo incident resolve <id> --resolution "<text>"');
80
+ printError(' hippo incident close <id>');
81
+ throw new CliExit(1);
82
+ }
83
+ const context = nonEmptyStringFlag(flags, 'context');
84
+ // --link is a repeatable flag (collected into an array by parseArgs). A
85
+ // single --link <id> yields a string; normalize both to string[].
86
+ const linkRaw = flags['link'];
87
+ let linkedMemoryIds;
88
+ if (Array.isArray(linkRaw)) {
89
+ linkedMemoryIds = linkRaw;
90
+ }
91
+ else if (isStringFlag(linkRaw)) {
92
+ linkedMemoryIds = [linkRaw];
93
+ }
94
+ else if (linkRaw === true) {
95
+ printError('--link requires a memory id, e.g. hippo incident "<text>" --link mem_abc123.');
96
+ throw new CliExit(1);
97
+ }
98
+ const incidentPathTags = extractPathTags(process.cwd());
99
+ const created = incidentsModule.saveIncident(hippoRoot, tenantId, {
100
+ incidentText,
101
+ context,
102
+ linkedMemoryIds,
103
+ extraTags: incidentPathTags,
104
+ });
105
+ console.log(`Incident recorded: #${created.id}`);
106
+ if (created.memoryId)
107
+ console.log(` memory: ${created.memoryId}`);
108
+ if (created.linkedMemoryIds.length > 0) {
109
+ console.log(` linked memories: ${created.linkedMemoryIds.join(', ')}`);
110
+ }
111
+ }
112
+ //# sourceMappingURL=incidents.js.map
@@ -1,3 +1,3 @@
1
- import { type CliFlags } from './flag-values.js';
2
- export declare function cmdInit(hippoRoot: string, flags: CliFlags): void;
1
+ import { type CommandContext } from './flag-values.js';
2
+ export declare function handleInit({ hippoRoot, tenantId, flags }: CommandContext): void;
3
3
  //# sourceMappingURL=init.d.ts.map