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
@@ -1,5 +1,5 @@
1
- import { type CliFlags } from './flag-values.js';
2
- export declare function cmdHook(args: string[]): void;
3
- export declare function cmdSetup(flags: CliFlags): void;
4
- export declare function cmdDailyRunner(): void;
1
+ import { type CommandContext } from './flag-values.js';
2
+ export declare function handleHook({ args }: CommandContext): void;
3
+ export declare function handleSetup({ flags }: CommandContext): void;
4
+ export declare function handleDailyRunner({ tenantId }: CommandContext): void;
5
5
  //# sourceMappingURL=setup.d.ts.map
package/dist/cli/setup.js CHANGED
@@ -1,4 +1,5 @@
1
1
  // `hippo hook`, `hippo setup` and `hippo daily-runner`: install and run the agent and machine integrations.
2
+ import { MINUTE_MS } from '../util/time.js';
2
3
  import * as path from 'path';
3
4
  import * as fs from 'fs';
4
5
  import { execFileSync } from 'child_process';
@@ -7,12 +8,12 @@ import { detectInstalledTools } from '../hooks/shared.js';
7
8
  import { ensureCodexWrapperInstalled, installCodexWrapper, detectRealCodexPath, uninstallCodexWrapper, } from '../hooks/codex-wrapper.js';
8
9
  import { installOpencodePlugin, uninstallOpencodePlugin, resolveOpencodePluginPath } from '../hooks/opencode.js';
9
10
  import { COPILOT_CLI_MCP, VSCODE_MCP, copilotMcpSnippet, copilotPaths, installCopilot, isCopilotCliPresent, isMcpFailure, uninstallCopilot, } from '../hooks/copilot.js';
10
- import { isInitialized } from '../store/open.js';
11
+ import { isInitialized } from '../core/project-identity.js';
11
12
  import { currentMachine, importUserMemories } from '../agent-memories/sync.js';
12
- import { getGlobalRoot } from '../sharing/shared.js';
13
+ import { getGlobalRoot } from '../sharing/global-store.js';
13
14
  import { listRegisteredWorkspaces, runDailyMaintenance } from './scheduler.js';
14
15
  import { replayCompactionsAt } from '../capture/compaction-record.js';
15
- import { errorMessage, log } from '../util/log.js';
16
+ import { errorFields, errorMessage, log } from '../util/log.js';
16
17
  import { envDailyStepTimeoutMs } from '../util/env.js';
17
18
  import { writeFileAtomic } from '../util/atomic-write.js';
18
19
  import { printError } from './output.js';
@@ -22,10 +23,9 @@ import { installCodexMemoryHooks, setupDailySchedule, warnClaudeSettingsUnusable
22
23
  import { repairQualityOnceAt } from './quality-repair-once.js';
23
24
  import { HOOK_MARKERS, HOOKS, hippoBlock, withoutHookBlock } from '../hooks/hook-blocks.js';
24
25
  import { escapeRegex } from '../util/escape.js';
25
- // ---------------------------------------------------------------------------
26
+ import { CliExit } from './exit.js';
26
27
  // Hook install/uninstall
27
- // ---------------------------------------------------------------------------
28
- export function cmdHook(args) {
28
+ export function handleHook({ args }) {
29
29
  const subcommand = args[0];
30
30
  const target = args[1];
31
31
  if (subcommand === 'list')
@@ -35,7 +35,7 @@ export function cmdHook(args) {
35
35
  if (subcommand === 'uninstall')
36
36
  return hookUninstall(target);
37
37
  printError('Usage: hippo hook <install|uninstall|list> [target]');
38
- process.exit(1);
38
+ throw new CliExit(1);
39
39
  }
40
40
  // Cursor has no init row, so the AGENTS.md block is usually another agent's, and Cursor reads that one as it is.
41
41
  function othersBlock(target, text) {
@@ -57,7 +57,7 @@ function hookInstall(target) {
57
57
  if (!target || !HOOKS[target]) {
58
58
  printError(`Unknown hook target: ${target ?? '(none)'}`);
59
59
  printError(` Available: ${[...Object.keys(HOOKS), 'copilot'].join(', ')}`);
60
- process.exit(1);
60
+ throw new CliExit(1);
61
61
  }
62
62
  const hook = HOOKS[target];
63
63
  patchAgentFile(hook, target);
@@ -103,9 +103,8 @@ function patchAgentFile(hook, target) {
103
103
  }
104
104
  }
105
105
  else {
106
- // Do not create a new agent-instructions file (CLAUDE.md, AGENTS.md, etc.) in directories that don't already have one —
107
- // avoids polluting cwd with files the user didn't ask for. The settings.json hook below is still installed for
108
- // claude-code, so the consolidation hook still runs.
106
+ // Do not create an agent-instructions file (CLAUDE.md, AGENTS.md, etc.) in directories without one, to avoid polluting cwd;
107
+ // the settings.json hook below is still installed for claude-code.
109
108
  console.log(`${hook.file} not found in ${process.cwd()} — skipping agent-instructions patch.`);
110
109
  console.log(` Create ${hook.file} and re-run \`hippo hook install ${target}\` if you want the agent prompt.`);
111
110
  }
@@ -144,7 +143,7 @@ function printClaudeHookInstall(result) {
144
143
  }
145
144
  }
146
145
  function installOpencodeHook() {
147
- // opencode uses a TS plugin, not JSON hooks. See src/hooks.ts.
146
+ // opencode uses a TS plugin, not JSON hooks. See src/hooks/opencode.ts.
148
147
  const result = installOpencodePlugin();
149
148
  if (result.installed) {
150
149
  console.log(`Installed hippo opencode plugin at ${result.pluginPath}`);
@@ -190,7 +189,8 @@ const VSCODE_INSTRUCTIONS_REMOVE_LINES = {
190
189
  absent: () => '',
191
190
  kept: (file) => `Left ${file}: it is not the text hippo wrote. Delete it by hand if no agent needs it.`,
192
191
  };
193
- const VSCODE_HOOKS_LINE = 'VS Code: hooks need VS Code 1.109.3 or later with chat.useHooks on (the default); older versions get the MCP server and the instructions file only.';
192
+ const VSCODE_HOOKS_LINE = 'VS Code: hooks need VS Code 1.109.3 or later with chat.useHooks on (the default); older versions get the MCP server and the ' +
193
+ 'instructions file only.';
194
194
  function mcpInstallLine(file, mcp, host) {
195
195
  return isMcpFailure(mcp) ? mcpFailureLine(file, mcp, addByHand(host)) : MCP_MERGE_LINES[mcp](file, host);
196
196
  }
@@ -200,7 +200,8 @@ function printVscodeInstall(result, indent) {
200
200
  console.log(`${indent}${VSCODE_INSTRUCTIONS_INSTALL_LINES[result.instructions](paths.instructions)}`);
201
201
  if (paths.profiles.length > 0) {
202
202
  const names = paths.profiles.map((dir) => path.basename(dir)).join(', ');
203
- console.log(`${indent}Found VS Code profiles (${names}) under ${path.join(paths.userDir, 'profiles')}: hippo set up the default profile only; copy the "hippo" server and prompts/hippo.instructions.md into a profile to use hippo there.`);
203
+ console.log(`${indent}Found VS Code profiles (${names}) under ${path.join(paths.userDir, 'profiles')}: ` +
204
+ 'hippo set up the default profile only; copy the "hippo" server and prompts/hippo.instructions.md into a profile to use hippo there.');
204
205
  }
205
206
  }
206
207
  function printCopilotInstall(result, indent) {
@@ -208,7 +209,8 @@ function printCopilotInstall(result, indent) {
208
209
  const hooks = result.hooks ? `Installed hippo's Copilot hooks (${copilotHookEvents().join(', ')}) ->` : "hippo's Copilot hooks are already in";
209
210
  console.log(`${indent}${hooks} ${paths.hooks}`);
210
211
  if (result.mcp === null || result.instructions === null) {
211
- console.log(`${indent}No Copilot CLI files in ${path.dirname(paths.mcpConfig)}, so hippo skipped mcp-config.json and copilot-instructions.md, which only the Copilot CLI reads`);
212
+ console.log(`${indent}No Copilot CLI files in ${path.dirname(paths.mcpConfig)}, ` +
213
+ 'so hippo skipped mcp-config.json and copilot-instructions.md, which only the Copilot CLI reads');
212
214
  }
213
215
  else {
214
216
  console.log(`${indent}${mcpInstallLine(paths.mcpConfig, result.mcp, COPILOT_CLI_MCP)}`);
@@ -228,8 +230,10 @@ function mcpRemoveLines(file, mcp) {
228
230
  return [`Removed the "hippo" MCP server from ${file}`];
229
231
  if (mcp === 'user-owned')
230
232
  return [`Left the "hippo" MCP server in ${file}: hippo did not write it`];
231
- if (mcp === 'unreadable')
232
- return [`WARNING: ${file} has comments or is not a JSON object hippo can edit, so it was left unchanged; remove the "hippo" server by hand if hippo added it`];
233
+ if (mcp === 'unreadable') {
234
+ return [`WARNING: ${file} has comments or is not a JSON object hippo can edit, so it was left unchanged; ` +
235
+ 'remove the "hippo" server by hand if hippo added it'];
236
+ }
233
237
  return [];
234
238
  }
235
239
  function printCopilotUninstall(result) {
@@ -254,7 +258,7 @@ function hookUninstall(target) {
254
258
  return printCopilotUninstall(uninstallCopilot());
255
259
  if (!target || !HOOKS[target]) {
256
260
  printError(`Unknown hook target: ${target ?? '(none)'}`);
257
- process.exit(1);
261
+ throw new CliExit(1);
258
262
  }
259
263
  unpatchAgentFile(HOOKS[target], target);
260
264
  // For Claude Code, also strip its SessionEnd/SessionStart entries.
@@ -267,9 +271,7 @@ function hookUninstall(target) {
267
271
  }
268
272
  }
269
273
  else if (target === 'opencode') {
270
- // opencode uses a TS plugin; uninstall removes the plugin file AND
271
- // also runs the legacy-hooks migration so the downgrade/remove path
272
- // leaves opencode launchable.
274
+ // opencode uses a TS plugin; uninstall removes the plugin file and also runs the legacy-hooks migration, so remove leaves opencode launchable.
273
275
  if (uninstallOpencodePlugin()) {
274
276
  console.log(`Removed hippo opencode plugin (and any legacy hooks block from opencode.json)`);
275
277
  }
@@ -351,8 +353,8 @@ function setupDetectedTools(tools, forceAll, dryRun) {
351
353
  }
352
354
  }
353
355
  // `hippo setup` -- one-shot configuration for every AI coding tool on the box.
354
- // Detection and install logic live in ./hooks.ts.
355
- export function cmdSetup(flags) {
356
+ // Detection and install logic live in src/hooks/.
357
+ export function handleSetup({ flags }) {
356
358
  const dryRun = boolFlag(flags, 'dry-run');
357
359
  const forceAll = boolFlag(flags, 'all');
358
360
  const tools = detectInstalledTools();
@@ -389,14 +391,16 @@ function setupCopilot(dryRun) {
389
391
  function setupJsonTool(tool, dryRun) {
390
392
  if (tool.name === 'copilot')
391
393
  return setupCopilot(dryRun);
394
+ // SAFETY: detectInstalledTools gives kind 'json-hook' only to claude-code and copilot (hooks/shared.ts), and copilot returned above.
395
+ const target = tool.name;
392
396
  if (dryRun) {
393
397
  // Resolve the real settings path so the filename is right for each tool
394
398
  // (claude-code -> settings.json, opencode -> opencode.json).
395
- const { settings } = resolveJsonHookPaths(tool.name);
399
+ const { settings } = resolveJsonHookPaths(target);
396
400
  console.log(`[dry-run] would install hooks in ${settings}`);
397
401
  return;
398
402
  }
399
- const result = installJsonHooks(tool.name);
403
+ const result = installJsonHooks(target);
400
404
  if (warnClaudeSettingsUnusable(result, ` ${tool.name.padEnd(14)} `))
401
405
  return;
402
406
  const bits = [];
@@ -475,21 +479,21 @@ function setupPluginTool(tool, dryRun) {
475
479
  }
476
480
  }
477
481
  // Three times the 10 minutes POST /v1/sleep allows a consolidation, so a slow real sleep fits and a hung child cannot stall every later workspace.
478
- const DAILY_STEP_TIMEOUT_MS = 30 * 60_000;
482
+ const DAILY_STEP_TIMEOUT_MS = 30 * MINUTE_MS;
479
483
  /** Why a child step failed; a child killed at the deadline says so, since its own message is only the spawn error code. */
480
484
  function dailyStepFailure(err, timeoutMs) {
481
485
  if (err instanceof Error && 'code' in err && err.code === 'ETIMEDOUT')
482
486
  return `timed out after ${timeoutMs} ms and was stopped`;
483
487
  return errorMessage(err);
484
488
  }
485
- export function cmdDailyRunner() {
489
+ export function handleDailyRunner({ tenantId }) {
486
490
  const globalRoot = getGlobalRoot();
487
491
  // No workspace sleep ever opens the global store, yet hooks in folders without a store compact into it.
488
492
  if (isInitialized(globalRoot)) {
489
493
  const finished = replayCompactionsAt(globalRoot, (message) => log.warn(`compaction replay: ${message}`));
490
494
  if (finished > 0)
491
495
  console.log(`Finished saving ${finished} compaction${finished === 1 ? '' : 's'} left over in the global store.`);
492
- repairQualityOnceAt(globalRoot);
496
+ repairQualityOnceAt(globalRoot, tenantId);
493
497
  }
494
498
  printAgentImport(importUserMemories(globalRoot, { machine: currentMachine() }), '');
495
499
  const workspaces = listRegisteredWorkspaces(globalRoot);
@@ -515,10 +519,11 @@ export function cmdDailyRunner() {
515
519
  catch (err) {
516
520
  failed++;
517
521
  const action = args.join(' ');
518
- log.error(`daily-runner failed in ${cwd} during \`${action}\`: ${dailyStepFailure(err, timeout)}`, { workspace: cwd });
522
+ log.error(`daily-runner failed in ${cwd} during \`${action}\`: ${dailyStepFailure(err, timeout)}`, { workspace: cwd, ...errorFields(err) });
519
523
  }
520
524
  });
521
- console.log(`Daily maintenance complete: ${processed} workspace${processed === 1 ? '' : 's'} processed, ${failed} command failure${failed === 1 ? '' : 's'}.`);
525
+ console.log(`Daily maintenance complete: ${processed} workspace${processed === 1 ? '' : 's'} processed, ` +
526
+ `${failed} command failure${failed === 1 ? '' : 's'}.`);
522
527
  // The scheduler that runs this only sees the exit code, so a failed workspace must not read as a clean run.
523
528
  if (failed > 0)
524
529
  process.exitCode = 1;
@@ -1,41 +1,23 @@
1
1
  import { type ChurnStaleResult } from '../learn/invalidation.js';
2
- import { type AuditOp } from '../store/audit.js';
3
2
  import { type ServerInfo } from '../server/server-detect.js';
4
3
  import type { CliFlags } from './flag-values.js';
5
- /**
6
- * Emit an audit event against `hippoRoot`'s db. Opens its own short-lived
7
- * connection so callers don't have to thread a db handle. Swallows all errors
8
- * — audit must never crash a CLI command.
9
- */
10
- export declare function emitCliAudit(hippoRoot: string, op: AuditOp, targetId?: string, metadata?: Record<string, unknown>): void;
11
4
  export declare function requireInit(hippoRoot: string): void;
12
5
  /** Runs detectChurnStale against every store this repo's memories can live in. */
13
- export declare function runChurnStaleForRepo(hippoRoot: string, dryRun: boolean): {
6
+ export declare function runChurnStaleForRepo(hippoRoot: string, tenantId: string, dryRun: boolean): {
14
7
  root: string;
15
8
  result: ChurnStaleResult;
16
9
  }[];
17
- /**
18
- * Run an HTTP-routed command if a `hippo serve` instance is detected for
19
- * `hippoRoot`. Returns:
20
- * - true if the HTTP path ran (success OR a structured server error that
21
- * was already surfaced to stdout/stderr by `httpFn`),
22
- * - false if no server was detected, or if the detected pidfile turned out
23
- * to be stale (connection refused). On stale, the pidfile is removed
24
- * if it still names that dead server (a newer one may have replaced
25
- * it) and the caller should fall back to the direct path.
26
- *
27
- * Stale pidfiles must self-heal, not crash.
28
- * When HIPPO_REQUIRE_SERVER is set, both fallback paths throw instead of
29
- * returning false, so a missing server fails loudly rather than silently
30
- * degrading to direct mode.
31
- */
10
+ /** Run an HTTP-routed command if a `hippo serve` is detected: true if it ran, false on no server or a stale pidfile (removed if it names the dead server).
11
+ * With HIPPO_REQUIRE_SERVER set both fallbacks throw; a stale pidfile must self-heal, not crash. */
32
12
  export declare function runViaServerIfAvailable(hippoRoot: string, httpFn: (info: ServerInfo, apiKey: string | undefined) => Promise<void>): Promise<boolean>;
33
13
  /** True, after one line, on a shared store: this account's commits and agent notes are not its members' memories. */
34
14
  export declare function skipLearnOnSharedStore(hippoRoot: string): boolean;
35
- export declare function learnFromRepo(hippoRoot: string, repoPath: string, days: number, label?: string): {
15
+ interface LearnFromRepoResult {
36
16
  added: number;
37
17
  skipped: number;
38
18
  lowInfo: number;
39
- };
19
+ }
20
+ export declare function learnFromRepo(hippoRoot: string, tenantId: string, repoPath: string, days: number, label?: string): LearnFromRepoResult;
40
21
  export declare function resolveAuthRoot(hippoRoot: string, flags: CliFlags): string;
22
+ export {};
41
23
  //# sourceMappingURL=shared.d.ts.map
@@ -1,40 +1,17 @@
1
- // Store and server helpers the CLI verbs share: audit events, init checks, server routing, git learning and the auth root.
1
+ // Store and server helpers the CLI verbs share: init checks, server routing, git learning and the auth root.
2
2
  // This module must never import cli.ts.
3
3
  import { envApiKey, envRequireServer } from '../util/env.js';
4
4
  import { execFileSync } from 'child_process';
5
5
  import { isSharedStore } from '../core/config.js';
6
- import { isInitialized } from '../store/open.js';
7
6
  import { detectChurnStale } from '../learn/invalidation.js';
8
- import { resolveProjectIdentity } from '../core/project-identity.js';
9
- import { getGlobalRoot, initGlobal } from '../sharing/shared.js';
10
- import { reportAuditWriteFailure } from '../store/audit.js';
11
- import { sqliteSyncStore } from '../store/sqlite/store.js';
7
+ import { resolveProjectIdentity, isInitialized } from '../core/project-identity.js';
8
+ import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
12
9
  import * as client from './client.js';
13
10
  import { detectServer, removePidfileIfOwned } from '../server/server-detect.js';
14
- import { resolveTenantId } from '../store/tenant.js';
15
- import { adminActor, learn, CLI_LEARN } from '../api/index.js';
11
+ import { learn, CLI_LEARN } from '../api/index.js';
12
+ import { cliApiContext } from './api-context.js';
16
13
  import { errorMessage, log } from '../util/log.js';
17
14
  import { printError } from './output.js';
18
- /**
19
- * Emit an audit event against `hippoRoot`'s db. Opens its own short-lived
20
- * connection so callers don't have to thread a db handle. Swallows all errors
21
- * — audit must never crash a CLI command.
22
- */
23
- export function emitCliAudit(hippoRoot, op, targetId, metadata) {
24
- try {
25
- sqliteSyncStore(hippoRoot).appendAuditEvents([{
26
- tenantId: resolveTenantId({}),
27
- actor: 'cli',
28
- op,
29
- targetId,
30
- metadata,
31
- }]);
32
- }
33
- catch (error) {
34
- // Best effort: the command already did its work.
35
- reportAuditWriteFailure(op, String(error), targetId);
36
- }
37
- }
38
15
  export function requireInit(hippoRoot) {
39
16
  if (!isInitialized(hippoRoot)) {
40
17
  printError(`No hippo store at ${hippoRoot} (searched ${process.cwd()} and its parents up to your home directory). Run \`hippo init\` first.`);
@@ -42,12 +19,11 @@ export function requireInit(hippoRoot) {
42
19
  }
43
20
  }
44
21
  /** Runs detectChurnStale against every store this repo's memories can live in. */
45
- export function runChurnStaleForRepo(hippoRoot, dryRun) {
22
+ export function runChurnStaleForRepo(hippoRoot, tenantId, dryRun) {
46
23
  const repoRoot = execFileSync('git', ['rev-parse', '--show-toplevel'], { cwd: process.cwd(), encoding: 'utf8', timeout: 10_000, windowsHide: true }).trim();
47
24
  const { name: projectName, legacyName } = resolveProjectIdentity(process.cwd());
48
25
  const globalRoot = getGlobalRoot();
49
26
  const roots = globalRoot !== hippoRoot && isInitialized(globalRoot) ? [hippoRoot, globalRoot] : [hippoRoot];
50
- const tenantId = resolveTenantId({});
51
27
  return roots.map((root) => {
52
28
  // One store failing must not abort sleep's later phases or skip the other store.
53
29
  try {
@@ -59,34 +35,16 @@ export function runChurnStaleForRepo(hippoRoot, dryRun) {
59
35
  }
60
36
  });
61
37
  }
62
- /**
63
- * When HIPPO_REQUIRE_SERVER is set, the CLI must not silently fall back to
64
- * direct DB mode — a missing server then masks a real misconfiguration (the
65
- * configured HIPPO_API_KEY is also silently discarded on fallback). Throws a
66
- * clear error then. It guards only the routed writes (remember, forget, archive,
67
- * promote); every other command opens the store directly, knob or not.
68
- */
38
+ /** With HIPPO_REQUIRE_SERVER set, throw rather than fall back to direct DB mode, which would mask a misconfiguration and discard HIPPO_API_KEY.
39
+ * Guards only the routed writes (remember, forget, archive, promote). */
69
40
  function failIfServerRequired(reason) {
70
41
  if (envRequireServer()) {
71
42
  throw new Error(`hippo: HIPPO_REQUIRE_SERVER is set but ${reason}. ` +
72
43
  `Start \`hippo serve\`, or unset HIPPO_REQUIRE_SERVER to allow direct-mode fallback.`);
73
44
  }
74
45
  }
75
- /**
76
- * Run an HTTP-routed command if a `hippo serve` instance is detected for
77
- * `hippoRoot`. Returns:
78
- * - true if the HTTP path ran (success OR a structured server error that
79
- * was already surfaced to stdout/stderr by `httpFn`),
80
- * - false if no server was detected, or if the detected pidfile turned out
81
- * to be stale (connection refused). On stale, the pidfile is removed
82
- * if it still names that dead server (a newer one may have replaced
83
- * it) and the caller should fall back to the direct path.
84
- *
85
- * Stale pidfiles must self-heal, not crash.
86
- * When HIPPO_REQUIRE_SERVER is set, both fallback paths throw instead of
87
- * returning false, so a missing server fails loudly rather than silently
88
- * degrading to direct mode.
89
- */
46
+ /** Run an HTTP-routed command if a `hippo serve` is detected: true if it ran, false on no server or a stale pidfile (removed if it names the dead server).
47
+ * With HIPPO_REQUIRE_SERVER set both fallbacks throw; a stale pidfile must self-heal, not crash. */
90
48
  export async function runViaServerIfAvailable(hippoRoot, httpFn) {
91
49
  const info = await detectServer(hippoRoot);
92
50
  if (!info) {
@@ -99,7 +57,7 @@ export async function runViaServerIfAvailable(hippoRoot, httpFn) {
99
57
  return true;
100
58
  }
101
59
  catch (err) {
102
- const failure = client.classifyTransportFailure(err);
60
+ const failure = err instanceof Error ? client.classifyTransportFailure(err) : 'none';
103
61
  if (failure === 'never-sent') {
104
62
  failIfServerRequired('the server pidfile was stale (connection refused)');
105
63
  log.warn('stale server pidfile detected, falling back to direct mode');
@@ -109,10 +67,10 @@ export async function runViaServerIfAvailable(hippoRoot, httpFn) {
109
67
  return false;
110
68
  }
111
69
  if (failure === 'delivery-unknown') {
112
- // Every caller of this helper is a non-idempotent write, so replaying on
113
- // the direct path would store a row the server may already have committed.
114
- // Leave the pidfile alone: the next command's connect-phase failure heals it.
115
- printError(`hippo: the connection to ${info.url} dropped or timed out mid-request, so the write may already have been applied. Not retrying locally. Check with \`hippo recall\` before running this again.`);
70
+ // Every caller is a non-idempotent write, so replaying on the direct path would store a row the server may already have committed;
71
+ // leave the pidfile alone: the next command's connect-phase failure heals it.
72
+ printError(`hippo: the connection to ${info.url} dropped or timed out mid-request, so the write may already have been applied. ` +
73
+ 'Not retrying locally. Check with `hippo recall` before running this again.');
116
74
  process.exit(1);
117
75
  }
118
76
  throw err;
@@ -125,10 +83,9 @@ export function skipLearnOnSharedStore(hippoRoot) {
125
83
  console.log("Shared store: skipped learning from this account's git commits and coding agents' own memories.");
126
84
  return true;
127
85
  }
128
- export function learnFromRepo(hippoRoot, repoPath, days, label) {
86
+ export function learnFromRepo(hippoRoot, tenantId, repoPath, days, label) {
129
87
  const prefix = label ? `[${label}] ` : '';
130
- const ctx = { hippoRoot, tenantId: resolveTenantId({}), actor: adminActor('cli') };
131
- const result = learn(ctx, { repoPath, days, profile: CLI_LEARN });
88
+ const result = learn(cliApiContext(hippoRoot, tenantId), { repoPath, days, profile: CLI_LEARN });
132
89
  if (result.status === 'not-a-repo') {
133
90
  console.log(`${prefix}No git history found (or not a git repository).`);
134
91
  return { added: 0, skipped: 0, lowInfo: 0 };
@@ -1,3 +1,3 @@
1
- import { type CliFlags } from './flag-values.js';
2
- export declare function cmdSlack(hippoRoot: string, args: string[], flags: CliFlags): Promise<void>;
1
+ import { type CommandContext } from './flag-values.js';
2
+ export declare function handleSlack({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
3
3
  //# sourceMappingURL=slack.d.ts.map
package/dist/cli/slack.js CHANGED
@@ -1,7 +1,6 @@
1
1
  // `hippo slack`: backfill, dead-letter queue and workspace registry for the Slack connector.
2
2
  import { envSlackBotToken, envSlackSigningSecret, envSlackTeamId } from '../util/env.js';
3
3
  import * as api from '../api/index.js';
4
- import { resolveTenantId } from '../store/tenant.js';
5
4
  import { listDlq } from '../connectors/dlq.js';
6
5
  import { replayDlqEntry, slackDlq } from '../connectors/slack/dlq.js';
7
6
  import { backfillChannel } from '../connectors/slack/backfill.js';
@@ -10,30 +9,27 @@ import { addWorkspace as addSlackWorkspace, listWorkspaces as listSlackWorkspace
10
9
  import { printError } from './output.js';
11
10
  import { printSlackBackfillUsage, printSlackWorkspacesUsage } from './usage.js';
12
11
  import { stringFlag } from './flag-values.js';
13
- // ---------------------------------------------------------------------------
12
+ import { CliExit } from './exit.js';
14
13
  // Slack subcommands (`hippo slack backfill` / `hippo slack dlq list`)
15
- // ---------------------------------------------------------------------------
16
- function cmdSlackBackfill(hippoRoot, flags) {
14
+ function cmdSlackBackfill(hippoRoot, tenantId, flags) {
17
15
  const channel = stringFlag(flags, 'channel');
18
16
  if (!channel) {
19
17
  printSlackBackfillUsage();
20
- process.exit(1);
18
+ throw new CliExit(1);
21
19
  }
22
20
  // Real fetcher requires SLACK_BOT_TOKEN with channels:history scope.
23
21
  const token = envSlackBotToken();
24
22
  if (!token) {
25
23
  printError('SLACK_BOT_TOKEN is not set. Backfill requires a Slack bot token with channels:history scope.');
26
- process.exit(2);
24
+ throw new CliExit(2);
27
25
  }
28
- // --since is advisory in V1: the slack_cursors row drives resume, so the
29
- // backfill loop always picks up where it last left off. Honoured-by-cursor
30
- // semantics keep idempotency clean.
26
+ // --since is advisory in V1: the slack_cursors row drives resume, so the backfill loop always continues where it left off (keeps idempotency clean).
31
27
  const sinceIso = stringFlag(flags, 'since');
32
28
  void sinceIso;
33
29
  const fetcher = slackHistoryFetcher(token);
34
30
  const ctx = {
35
31
  hippoRoot,
36
- tenantId: resolveTenantId({}),
32
+ tenantId,
37
33
  actor: api.adminActor('cli:slack-backfill'),
38
34
  };
39
35
  backfillChannel(ctx, {
@@ -49,8 +45,8 @@ function cmdSlackBackfill(hippoRoot, flags) {
49
45
  process.exit(3);
50
46
  });
51
47
  }
52
- function cmdSlackDlqList(hippoRoot, _flags) {
53
- const items = listDlq(slackDlq, hippoRoot, { tenantId: resolveTenantId({}) });
48
+ function cmdSlackDlqList(hippoRoot, tenantId, _flags) {
49
+ const items = listDlq(slackDlq, hippoRoot, { tenantId });
54
50
  for (const it of items) {
55
51
  console.log(`${it.id}\t${it.receivedAt}\t${it.error}`);
56
52
  }
@@ -59,12 +55,12 @@ async function cmdSlackDlqReplay(hippoRoot, args, flags) {
59
55
  const idArg = args[2];
60
56
  if (!idArg) {
61
57
  printError('Usage: hippo slack dlq replay <id> [--force]');
62
- process.exit(1);
58
+ throw new CliExit(1);
63
59
  }
64
60
  const id = Number(idArg);
65
61
  if (!Number.isFinite(id) || !Number.isInteger(id) || id < 1) {
66
62
  printError(`replay: invalid id ${idArg}`);
67
- process.exit(1);
63
+ throw new CliExit(1);
68
64
  }
69
65
  const force = flags.force === true;
70
66
  const result = await replayDlqEntry({ hippoRoot }, id, {
@@ -73,7 +69,7 @@ async function cmdSlackDlqReplay(hippoRoot, args, flags) {
73
69
  });
74
70
  if (!result.ok) {
75
71
  printError(`replay failed: status=${result.status} retry_count=${result.retryCount}${result.reason ? ` reason=${result.reason}` : ''}`);
76
- process.exit(1);
72
+ throw new CliExit(1);
77
73
  }
78
74
  console.log(`replay ok: status=${result.status} memory_id=${result.memoryId ?? '(none)'} retry_count=${result.retryCount}`);
79
75
  }
@@ -82,7 +78,7 @@ function cmdSlackWorkspacesAdd(hippoRoot, flags) {
82
78
  const tenantId = (stringFlag(flags, 'tenant') ?? '').trim();
83
79
  if (!teamId || !tenantId) {
84
80
  printError('Usage: hippo slack workspaces add --team <T> --tenant <t>');
85
- process.exit(1);
81
+ throw new CliExit(1);
86
82
  }
87
83
  const ws = addSlackWorkspace(hippoRoot, { teamId, tenantId });
88
84
  console.log(`added: ${ws.teamId} -> ${ws.tenantId} (${ws.addedAt})`);
@@ -101,23 +97,23 @@ function cmdSlackWorkspacesRemove(hippoRoot, flags) {
101
97
  const teamId = (stringFlag(flags, 'team') ?? '').trim();
102
98
  if (!teamId) {
103
99
  printError('Usage: hippo slack workspaces remove --team <T>');
104
- process.exit(1);
100
+ throw new CliExit(1);
105
101
  }
106
102
  const removed = removeSlackWorkspace(hippoRoot, teamId);
107
103
  if (!removed) {
108
104
  printError(`no workspace registered for team ${teamId}`);
109
- process.exit(1);
105
+ throw new CliExit(1);
110
106
  }
111
107
  console.log(`removed: ${teamId}`);
112
108
  }
113
- export async function cmdSlack(hippoRoot, args, flags) {
109
+ export async function handleSlack({ hippoRoot, tenantId, args, flags }) {
114
110
  const sub = args[0];
115
111
  if (sub === 'backfill') {
116
- cmdSlackBackfill(hippoRoot, flags);
112
+ cmdSlackBackfill(hippoRoot, tenantId, flags);
117
113
  return;
118
114
  }
119
115
  if (sub === 'dlq' && args[1] === 'list') {
120
- cmdSlackDlqList(hippoRoot, flags);
116
+ cmdSlackDlqList(hippoRoot, tenantId, flags);
121
117
  return;
122
118
  }
123
119
  if (sub === 'dlq' && args[1] === 'replay') {
@@ -139,9 +135,9 @@ export async function cmdSlack(hippoRoot, args, flags) {
139
135
  return;
140
136
  }
141
137
  printSlackWorkspacesUsage();
142
- process.exit(1);
138
+ throw new CliExit(1);
143
139
  }
144
140
  printError('Usage: hippo slack <backfill|dlq list|dlq replay <id> [--force]|workspaces add|workspaces list|workspaces remove> [...]');
145
- process.exit(1);
141
+ throw new CliExit(1);
146
142
  }
147
143
  //# sourceMappingURL=slack.js.map
@@ -2,10 +2,12 @@
2
2
  import { renderAmbientSummary } from '../core/ambient.js';
3
3
  /** The lines `hippo sleep` prints for an api.sleep result; pure, so the snapshot tests read them without a console spy. */
4
4
  export function sleepResultLines(result) {
5
- return [...sleepCountLines(result), ...(result.dryRun ? ['\n(dry run - nothing written)'] : []), ...sleepDedupeAndAuditLines(result), ...sleepShareAndGraphLines(result)];
5
+ return [...sleepCountLines(result), ...(result.dryRun ? ['\n(dry run - nothing ' +
6
+ 'written)'] : []), ...sleepDedupeAndAuditLines(result), ...sleepShareAndGraphLines(result)];
6
7
  }
7
8
  function sleepCountLines(result) {
8
- const lines = [`Running consolidation${result.dryRun ? ' (dry run)' : ''}...`, `\nResults:`, ` Active memories: ${result.active}`, ` Removed (decayed): ${result.removed}`];
9
+ const lines = [`Running consolidation${result.dryRun ? ' (dry ' +
10
+ 'run)' : ''}...`, `\nResults:`, ` Active memories: ${result.active}`, ` Removed (decayed): ${result.removed}`];
9
11
  // Only when dormant.enabled moved something, so every other render stays byte-identical.
10
12
  if (result.dormant !== undefined && result.dormant > 0) {
11
13
  lines.push(` Kept dormant: ${result.dormant} (hippo dormant to list)`);
@@ -29,7 +31,8 @@ function sleepDedupeAndAuditLines(result) {
29
31
  parts.push(`${epiDups} duplicate episodic lessons`);
30
32
  if (crossDups > 0)
31
33
  parts.push(`${crossDups} cross-layer duplicates`);
32
- lines.push(`\n${result.dryRun ? 'Would dedupe' : 'Deduped'} ${removed} duplicates (${parts.join(', ')}). ${result.dryRun ? 'Would keep' : 'Kept'} stronger copies.`);
34
+ lines.push(`\n${result.dryRun ? 'Would ' +
35
+ 'dedupe' : 'Deduped'} ${removed} duplicates (${parts.join(', ')}). ${result.dryRun ? 'Would keep' : 'Kept'} stronger copies.`);
33
36
  }
34
37
  if (result.audit) {
35
38
  if (result.audit.errorsRemoved > 0) {
@@ -1,4 +1,5 @@
1
- import { type CliFlags } from './flag-values.js';
1
+ import { type CliFlags, type CommandContext } from './flag-values.js';
2
2
  /** Runs `hippo sleep`; with `--log-file` it also tees its output to that file. */
3
- export declare function cmdSleep(hippoRoot: string, flags: CliFlags): Promise<void>;
3
+ export declare function cmdSleep(hippoRoot: string, tenantId: string, flags: CliFlags): Promise<void>;
4
+ export declare function handleSleep({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
4
5
  //# sourceMappingURL=sleep.d.ts.map