@phnx-labs/agents-cli 1.22.113 → 1.22.114

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 (680) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +10 -11
  3. package/dist/cli/command-registry.d.ts +0 -60
  4. package/dist/cli/command-registry.js +59 -61
  5. package/dist/commands/apply.d.ts +0 -4
  6. package/dist/commands/apply.js +3 -3
  7. package/dist/commands/browser-picker.d.ts +3 -6
  8. package/dist/commands/browser-picker.js +2 -2
  9. package/dist/commands/browser-sessions-picker.d.ts +2 -1
  10. package/dist/commands/computer-sessions-picker.d.ts +2 -1
  11. package/dist/commands/computer.d.ts +14 -19
  12. package/dist/commands/computer.js +65 -10
  13. package/dist/commands/config.js +46 -2
  14. package/dist/commands/daemon.d.ts +0 -23
  15. package/dist/commands/daemon.js +1 -1
  16. package/dist/commands/detach-core.d.ts +2 -1
  17. package/dist/commands/detach.d.ts +0 -3
  18. package/dist/commands/detach.js +3 -3
  19. package/dist/commands/feed.d.ts +3 -3
  20. package/dist/commands/feed.js +1 -1
  21. package/dist/commands/focus.d.ts +4 -4
  22. package/dist/commands/harness-hooks.d.ts +0 -7
  23. package/dist/commands/harness-hooks.js +1 -1
  24. package/dist/commands/harness-wizard.d.ts +2 -2
  25. package/dist/commands/harness.d.ts +3 -8
  26. package/dist/commands/harness.js +1 -1
  27. package/dist/commands/inspect.d.ts +2 -3
  28. package/dist/commands/inspect.js +1 -1
  29. package/dist/commands/message.d.ts +1 -1
  30. package/dist/commands/message.js +3 -3
  31. package/dist/commands/projects.d.ts +2 -18
  32. package/dist/commands/projects.js +89 -3
  33. package/dist/commands/resource-view.d.ts +3 -2
  34. package/dist/commands/resume.d.ts +0 -1
  35. package/dist/commands/resume.js +1 -1
  36. package/dist/commands/routines.d.ts +1 -3
  37. package/dist/commands/routines.js +1 -1
  38. package/dist/commands/run-account-picker.d.ts +2 -1
  39. package/dist/commands/run-broadcast.d.ts +2 -1
  40. package/dist/commands/run-device-picker.d.ts +2 -1
  41. package/dist/commands/secrets-passthrough.d.ts +14 -0
  42. package/dist/commands/secrets-passthrough.js +21 -2
  43. package/dist/commands/sessions-backfill.d.ts +2 -35
  44. package/dist/commands/sessions-backfill.js +1 -1
  45. package/dist/commands/sessions-bookmark.d.ts +0 -10
  46. package/dist/commands/sessions-bookmark.js +1 -1
  47. package/dist/commands/sessions-inject.d.ts +2 -3
  48. package/dist/commands/sessions-inject.js +8 -17
  49. package/dist/commands/sessions-picker-factory.d.ts +4 -14
  50. package/dist/commands/sessions-picker-factory.js +2 -2
  51. package/dist/commands/sessions-picker.d.ts +3 -9
  52. package/dist/commands/sessions-picker.js +2 -2
  53. package/dist/commands/sessions-resume.d.ts +2 -4
  54. package/dist/commands/sessions-resume.js +0 -5
  55. package/dist/commands/sessions-stats.d.ts +2 -1
  56. package/dist/commands/sessions-stop.d.ts +0 -3
  57. package/dist/commands/sessions-stop.js +1 -1
  58. package/dist/commands/sessions-tail.d.ts +2 -1
  59. package/dist/commands/sessions-trace.d.ts +4 -6
  60. package/dist/commands/sessions-trace.js +1 -1
  61. package/dist/commands/sessions.d.ts +13 -104
  62. package/dist/commands/sessions.js +10 -10
  63. package/dist/commands/setup-mine.d.ts +0 -6
  64. package/dist/commands/setup-mine.js +1 -1
  65. package/dist/commands/setup.d.ts +3 -4
  66. package/dist/commands/setup.js +1 -1
  67. package/dist/commands/share.d.ts +8 -8
  68. package/dist/commands/teams-picker.d.ts +2 -5
  69. package/dist/commands/teams-picker.js +2 -2
  70. package/dist/commands/teams.d.ts +1 -7
  71. package/dist/commands/teams.js +1 -1
  72. package/dist/commands/tmux.d.ts +1 -1
  73. package/dist/commands/tmux.js +1 -1
  74. package/dist/commands/upgrade.d.ts +2 -1
  75. package/dist/commands/utils.d.ts +1 -1
  76. package/dist/commands/utils.js +1 -1
  77. package/dist/lib/account-capabilities.d.ts +2 -1
  78. package/dist/lib/account-catalog.d.ts +4 -13
  79. package/dist/lib/account-catalog.js +1 -1
  80. package/dist/lib/account-registry.d.ts +3 -4
  81. package/dist/lib/account-registry.js +1 -1
  82. package/dist/lib/accounting/account-launch.d.ts +4 -3
  83. package/dist/lib/accounting/account-pool.d.ts +2 -1
  84. package/dist/lib/accounting/rotate.d.ts +3 -9
  85. package/dist/lib/accounting/rotate.js +2 -14
  86. package/dist/lib/accounting/usage-sync.d.ts +5 -4
  87. package/dist/lib/accounting/usage.d.ts +7 -31
  88. package/dist/lib/accounting/usage.js +4 -4
  89. package/dist/lib/accounts/migrate.d.ts +8 -8
  90. package/dist/lib/accounts/migrate.js +1 -1
  91. package/dist/lib/acp/client.d.ts +3 -2
  92. package/dist/lib/acp/harnesses.d.ts +2 -2
  93. package/dist/lib/acp/harnesses.js +1 -1
  94. package/dist/lib/acp/run.d.ts +2 -1
  95. package/dist/lib/actor.d.ts +3 -2
  96. package/dist/lib/add-dir.d.ts +2 -17
  97. package/dist/lib/add-dir.js +2 -6
  98. package/dist/lib/address.d.ts +56 -0
  99. package/dist/lib/address.js +143 -0
  100. package/dist/lib/agent-spec/agents.d.ts +12 -28
  101. package/dist/lib/agent-spec/agents.js +2 -6
  102. package/dist/lib/agent-spec/primitives.d.ts +0 -7
  103. package/dist/lib/agent-spec/primitives.js +0 -6
  104. package/dist/lib/agent-spec/types.d.ts +2 -1
  105. package/dist/lib/analytics/dashboard.d.ts +1 -5
  106. package/dist/lib/analytics/dashboard.js +0 -2
  107. package/dist/lib/analytics/mix-commands.d.ts +0 -7
  108. package/dist/lib/analytics/mix-commands.js +3 -3
  109. package/dist/lib/analytics/recipes.d.ts +0 -12
  110. package/dist/lib/analytics/recipes.js +7 -31
  111. package/dist/lib/analytics/usage-db.d.ts +5 -32
  112. package/dist/lib/analytics/usage-db.js +1 -70
  113. package/dist/lib/answer-router.d.ts +7 -6
  114. package/dist/lib/answer-router.js +5 -11
  115. package/dist/lib/artifact-actions.d.ts +0 -4
  116. package/dist/lib/ask-classifier.d.ts +3 -4
  117. package/dist/lib/ask-classifier.js +0 -7
  118. package/dist/lib/auth-health.d.ts +3 -46
  119. package/dist/lib/auth-health.js +3 -3
  120. package/dist/lib/auth-mint.d.ts +6 -6
  121. package/dist/lib/auth-mint.js +5 -5
  122. package/dist/lib/bench/runner.d.ts +2 -2
  123. package/dist/lib/bench/runner.js +1 -1
  124. package/dist/lib/bench/storage.d.ts +0 -1
  125. package/dist/lib/bench/storage.js +1 -1
  126. package/dist/lib/boot-profile.d.ts +0 -2
  127. package/dist/lib/boot-profile.js +0 -4
  128. package/dist/lib/brand.d.ts +0 -6
  129. package/dist/lib/brand.js +1 -1
  130. package/dist/lib/browser/arc-discovery.d.ts +4 -12
  131. package/dist/lib/browser/arc-discovery.js +1 -1
  132. package/dist/lib/browser/cdp.d.ts +1 -1
  133. package/dist/lib/browser/chrome.d.ts +2 -2
  134. package/dist/lib/browser/chrome.js +0 -4
  135. package/dist/lib/browser/chromium-discovery.d.ts +3 -2
  136. package/dist/lib/browser/drivers/arc.d.ts +3 -20
  137. package/dist/lib/browser/drivers/arc.js +2 -7
  138. package/dist/lib/browser/drivers/firefox.d.ts +2 -6
  139. package/dist/lib/browser/drivers/firefox.js +1 -1
  140. package/dist/lib/browser/drivers/local.d.ts +2 -1
  141. package/dist/lib/browser/drivers/ssh.d.ts +2 -3
  142. package/dist/lib/browser/drivers/ssh.js +0 -7
  143. package/dist/lib/browser/firefox-discovery.d.ts +4 -3
  144. package/dist/lib/browser/har.d.ts +8 -7
  145. package/dist/lib/browser/hygiene.d.ts +2 -3
  146. package/dist/lib/browser/hygiene.js +1 -1
  147. package/dist/lib/browser/ipc.d.ts +4 -3
  148. package/dist/lib/browser/ipc.js +1 -1
  149. package/dist/lib/browser/login-detection.d.ts +1 -8
  150. package/dist/lib/browser/registry.d.ts +2 -1
  151. package/dist/lib/browser/remote-control.d.ts +0 -7
  152. package/dist/lib/browser/remote-control.js +2 -2
  153. package/dist/lib/browser/resolve-target.d.ts +2 -6
  154. package/dist/lib/browser/resolve-target.js +3 -3
  155. package/dist/lib/browser/runtime-state.d.ts +4 -4
  156. package/dist/lib/browser/service.d.ts +4 -4
  157. package/dist/lib/browser/sessions-list.d.ts +0 -10
  158. package/dist/lib/browser/sessions-list.js +3 -3
  159. package/dist/lib/browser/stream.d.ts +2 -1
  160. package/dist/lib/browser/task-index.d.ts +4 -4
  161. package/dist/lib/browser/task-index.js +1 -1
  162. package/dist/lib/browser/types.d.ts +0 -20
  163. package/dist/lib/browser/types.js +1 -34
  164. package/dist/lib/browser/upload.d.ts +0 -27
  165. package/dist/lib/budget/ledger.d.ts +0 -2
  166. package/dist/lib/budget/ledger.js +1 -1
  167. package/dist/lib/budget/live-cloud.d.ts +2 -1
  168. package/dist/lib/budget/preflight.d.ts +3 -5
  169. package/dist/lib/budget/preflight.js +1 -1
  170. package/dist/lib/catchup.d.ts +2 -1
  171. package/dist/lib/channels/owner-forward.d.ts +5 -4
  172. package/dist/lib/channels/owner-sink.js +2 -2
  173. package/dist/lib/channels/providers/desktop.js +1 -1
  174. package/dist/lib/channels/providers/rush.d.ts +2 -1
  175. package/dist/lib/channels/registry.d.ts +1 -1
  176. package/dist/lib/channels/registry.js +1 -1
  177. package/dist/lib/channels/resolve.d.ts +3 -2
  178. package/dist/lib/channels/send.d.ts +5 -4
  179. package/dist/lib/cli-resources.d.ts +3 -9
  180. package/dist/lib/cli-resources.js +1 -1
  181. package/dist/lib/cloud/cursor.d.ts +1 -2
  182. package/dist/lib/cloud/cursor.js +1 -1
  183. package/dist/lib/cloud/dispatch.d.ts +2 -1
  184. package/dist/lib/cloud/factory.d.ts +0 -2
  185. package/dist/lib/cloud/factory.js +1 -1
  186. package/dist/lib/cloud/rush.d.ts +3 -11
  187. package/dist/lib/cloud/rush.js +1 -1
  188. package/dist/lib/cloud/session-index.d.ts +2 -1
  189. package/dist/lib/cloud/types.d.ts +2 -1
  190. package/dist/lib/codex-policy.d.ts +2 -1
  191. package/dist/lib/commands.d.ts +7 -7
  192. package/dist/lib/commands.js +1 -1
  193. package/dist/lib/comms-render.d.ts +1 -1
  194. package/dist/lib/computer/context.d.ts +11 -3
  195. package/dist/lib/computer/context.js +2 -2
  196. package/dist/lib/computer/policy.d.ts +0 -12
  197. package/dist/lib/computer/policy.js +1 -1
  198. package/dist/lib/computer-client.d.ts +3 -3
  199. package/dist/lib/computer-client.js +0 -1
  200. package/dist/lib/concurrency.d.ts +2 -1
  201. package/dist/lib/config-keys.d.ts +16 -3
  202. package/dist/lib/config-keys.js +47 -2
  203. package/dist/lib/convert.d.ts +0 -12
  204. package/dist/lib/convert.js +1 -12
  205. package/dist/lib/crabbox/cli.d.ts +6 -24
  206. package/dist/lib/crabbox/cli.js +2 -28
  207. package/dist/lib/crabbox/lease.d.ts +5 -6
  208. package/dist/lib/crabbox/lease.js +1 -1
  209. package/dist/lib/crabbox/progress.d.ts +2 -1
  210. package/dist/lib/crabbox/setup-copy.d.ts +2 -3
  211. package/dist/lib/crabbox/setup-copy.js +1 -1
  212. package/dist/lib/daemon/account-state-daemon-service.d.ts +1 -1
  213. package/dist/lib/daemon/attention-notify-service.d.ts +2 -1
  214. package/dist/lib/daemon/catchup-service.d.ts +2 -1
  215. package/dist/lib/daemon/daemon.d.ts +4 -4
  216. package/dist/lib/daemon/daemon.js +1 -1
  217. package/dist/lib/daemon/harness-update-service.d.ts +2 -19
  218. package/dist/lib/daemon/harness-update-service.js +3 -3
  219. package/dist/lib/daemon/runner.d.ts +3 -3
  220. package/dist/lib/daemon/self-update-service.d.ts +1 -16
  221. package/dist/lib/daemon/self-update-service.js +6 -6
  222. package/dist/lib/daemon/state-dir-check-service.d.ts +2 -1
  223. package/dist/lib/daemon/supervisor.d.ts +3 -2
  224. package/dist/lib/daemon-services.d.ts +2 -1
  225. package/dist/lib/daemon-webhooks.d.ts +1 -1
  226. package/dist/lib/deeplink/register.d.ts +3 -13
  227. package/dist/lib/deeplink/register.js +3 -3
  228. package/dist/lib/deeplink/url.d.ts +3 -2
  229. package/dist/lib/device-config.d.ts +4 -15
  230. package/dist/lib/device-config.js +164 -8
  231. package/dist/lib/devices/connect.d.ts +2 -1
  232. package/dist/lib/devices/discovery-policy.d.ts +3 -2
  233. package/dist/lib/devices/doctor-findings.js +1 -1
  234. package/dist/lib/devices/doctor-overview-cache.d.ts +3 -2
  235. package/dist/lib/devices/fleet-divergence.d.ts +2 -1
  236. package/dist/lib/devices/fleet.d.ts +3 -4
  237. package/dist/lib/devices/fleet.js +1 -1
  238. package/dist/lib/devices/harness-inventory.d.ts +3 -2
  239. package/dist/lib/devices/health-report.d.ts +3 -2
  240. package/dist/lib/devices/health.d.ts +1 -8
  241. package/dist/lib/devices/health.js +1 -1
  242. package/dist/lib/devices/interactive-host.d.ts +0 -2
  243. package/dist/lib/devices/interactive-host.js +1 -1
  244. package/dist/lib/devices/known-hosts.d.ts +2 -20
  245. package/dist/lib/devices/known-hosts.js +2 -2
  246. package/dist/lib/devices/pool.d.ts +2 -1
  247. package/dist/lib/devices/resolve-target.d.ts +2 -2
  248. package/dist/lib/devices/rollout-verify.d.ts +3 -2
  249. package/dist/lib/devices/stats-cache.d.ts +3 -2
  250. package/dist/lib/devices/sync.d.ts +6 -5
  251. package/dist/lib/devices/worker-pick.d.ts +3 -12
  252. package/dist/lib/devices/worker-pick.js +1 -1
  253. package/dist/lib/diff-text.d.ts +2 -1
  254. package/dist/lib/doctor-diff.d.ts +2 -1
  255. package/dist/lib/drift-sync.d.ts +3 -2
  256. package/dist/lib/drift.d.ts +3 -3
  257. package/dist/lib/drift.js +1 -1
  258. package/dist/lib/event-families.d.ts +0 -6
  259. package/dist/lib/event-families.js +3 -3
  260. package/dist/lib/event-provenance.d.ts +2 -1
  261. package/dist/lib/events-ingest.d.ts +4 -3
  262. package/dist/lib/exec-account-home.d.ts +2 -4
  263. package/dist/lib/exec-account-home.js +1 -1
  264. package/dist/lib/exec-bounded.d.ts +3 -4
  265. package/dist/lib/exec-bounded.js +1 -1
  266. package/dist/lib/exec.d.ts +6 -18
  267. package/dist/lib/exec.js +1 -1
  268. package/dist/lib/factory/snapshot.d.ts +2 -2
  269. package/dist/lib/factory/snapshot.js +1 -1
  270. package/dist/lib/feed/activity-stream.d.ts +2 -5
  271. package/dist/lib/feed/activity-stream.js +2 -2
  272. package/dist/lib/feed/activity.d.ts +8 -33
  273. package/dist/lib/feed/activity.js +8 -8
  274. package/dist/lib/feed/answer.d.ts +3 -2
  275. package/dist/lib/feed/attention.js +5 -1
  276. package/dist/lib/feed/events.d.ts +2 -47
  277. package/dist/lib/feed/events.js +1 -141
  278. package/dist/lib/feed/feed.d.ts +9 -42
  279. package/dist/lib/feed/feed.js +1 -60
  280. package/dist/lib/feed/pr-status.d.ts +0 -2
  281. package/dist/lib/feed/pr-status.js +1 -5
  282. package/dist/lib/feed/watch.d.ts +1 -2
  283. package/dist/lib/feed/watch.js +0 -1
  284. package/dist/lib/feed-broadcast.d.ts +5 -47
  285. package/dist/lib/feed-broadcast.js +9 -9
  286. package/dist/lib/feed-outcome.d.ts +3 -6
  287. package/dist/lib/feed-outcome.js +2 -2
  288. package/dist/lib/feed-policy.d.ts +5 -6
  289. package/dist/lib/feed-policy.js +2 -2
  290. package/dist/lib/feed-post.d.ts +3 -4
  291. package/dist/lib/feed-post.js +1 -1
  292. package/dist/lib/feed-ranking.d.ts +2 -2
  293. package/dist/lib/feed-ranking.js +1 -1
  294. package/dist/lib/fleet/apply.d.ts +5 -6
  295. package/dist/lib/fleet/apply.js +4 -4
  296. package/dist/lib/fleet/manifest.d.ts +2 -1
  297. package/dist/lib/fleet/remote-login.d.ts +18 -36
  298. package/dist/lib/fleet/remote-login.js +20 -19
  299. package/dist/lib/fleet/types.d.ts +0 -8
  300. package/dist/lib/fleet-cache.d.ts +1 -18
  301. package/dist/lib/fleet-cache.js +0 -5
  302. package/dist/lib/fleet-shared-repo-sync.d.ts +3 -3
  303. package/dist/lib/fleet-shared-repo-sync.js +1 -1
  304. package/dist/lib/fleet-shared-state.d.ts +3 -2
  305. package/dist/lib/format.d.ts +2 -1
  306. package/dist/lib/friction-heuristics.d.ts +2 -1
  307. package/dist/lib/fs-walk.d.ts +2 -1
  308. package/dist/lib/fuzzy.d.ts +2 -1
  309. package/dist/lib/gemini-settings.d.ts +0 -1
  310. package/dist/lib/gemini-settings.js +1 -1
  311. package/dist/lib/git.d.ts +7 -65
  312. package/dist/lib/git.js +3 -142
  313. package/dist/lib/github/gh-overload.d.ts +0 -4
  314. package/dist/lib/github/gh-overload.js +2 -2
  315. package/dist/lib/github/project-prs.d.ts +118 -0
  316. package/dist/lib/github/project-prs.js +173 -0
  317. package/dist/lib/github/rest.d.ts +2 -1
  318. package/dist/lib/harness/exec-config-version.d.ts +2 -1
  319. package/dist/lib/harness-auth-capabilities.d.ts +5 -4
  320. package/dist/lib/harness-connection-test.d.ts +2 -1
  321. package/dist/lib/heal.d.ts +3 -20
  322. package/dist/lib/heal.js +2 -39
  323. package/dist/lib/help.d.ts +3 -2
  324. package/dist/lib/helper-download.d.ts +0 -12
  325. package/dist/lib/helper-download.js +2 -2
  326. package/dist/lib/helper-versions.d.ts +2 -1
  327. package/dist/lib/helper-versions.js +1 -1
  328. package/dist/lib/hooks/install.d.ts +8 -49
  329. package/dist/lib/hooks/install.js +2 -96
  330. package/dist/lib/hooks/match.d.ts +2 -1
  331. package/dist/lib/hosts/credential-transport.d.ts +0 -2
  332. package/dist/lib/hosts/credential-transport.js +1 -1
  333. package/dist/lib/hosts/dispatch.d.ts +2 -24
  334. package/dist/lib/hosts/dispatch.js +2 -2
  335. package/dist/lib/hosts/logs.d.ts +2 -1
  336. package/dist/lib/hosts/passthrough.d.ts +1 -1
  337. package/dist/lib/hosts/passthrough.js +0 -1
  338. package/dist/lib/hosts/progress.d.ts +0 -5
  339. package/dist/lib/hosts/progress.js +1 -1
  340. package/dist/lib/hosts/ready.d.ts +3 -4
  341. package/dist/lib/hosts/ready.js +0 -8
  342. package/dist/lib/hosts/reconcile.d.ts +2 -8
  343. package/dist/lib/hosts/reconcile.js +1 -1
  344. package/dist/lib/hosts/reconnect.d.ts +4 -11
  345. package/dist/lib/hosts/reconnect.js +2 -2
  346. package/dist/lib/hosts/registry.d.ts +1 -1
  347. package/dist/lib/hosts/remote-cmd.d.ts +4 -3
  348. package/dist/lib/hosts/session-index.d.ts +3 -2
  349. package/dist/lib/hosts/ssh-config.d.ts +2 -3
  350. package/dist/lib/hosts/ssh-config.js +0 -10
  351. package/dist/lib/humans.d.ts +0 -2
  352. package/dist/lib/humans.js +2 -2
  353. package/dist/lib/import.d.ts +4 -3
  354. package/dist/lib/installations/installation-lock.d.ts +0 -2
  355. package/dist/lib/installations/installation-lock.js +2 -2
  356. package/dist/lib/installations/launch-gate.d.ts +0 -9
  357. package/dist/lib/installations/launch-gate.js +1 -1
  358. package/dist/lib/installations/migrate.d.ts +0 -11
  359. package/dist/lib/installations/migrate.js +1 -1
  360. package/dist/lib/installations/shims.d.ts +1 -1
  361. package/dist/lib/installations/shims.js +2 -2
  362. package/dist/lib/installations/update-runtime.js +1 -1
  363. package/dist/lib/linear-cache.d.ts +2 -1
  364. package/dist/lib/linux-userns.d.ts +2 -3
  365. package/dist/lib/linux-userns.js +0 -4
  366. package/dist/lib/loop.d.ts +2 -1
  367. package/dist/lib/mailbox-gc.d.ts +2 -1
  368. package/dist/lib/mailbox-target.d.ts +2 -1
  369. package/dist/lib/mailbox.d.ts +0 -6
  370. package/dist/lib/mailbox.js +1 -1
  371. package/dist/lib/manifest.d.ts +0 -14
  372. package/dist/lib/manifest.js +2 -2
  373. package/dist/lib/mcp-registry.d.ts +2 -1
  374. package/dist/lib/memory.d.ts +2 -13
  375. package/dist/lib/memory.js +4 -4
  376. package/dist/lib/menubar/download-menubar.d.ts +0 -2
  377. package/dist/lib/menubar/download-menubar.js +1 -5
  378. package/dist/lib/menubar/install-menubar.d.ts +3 -14
  379. package/dist/lib/menubar/install-menubar.js +3 -3
  380. package/dist/lib/menubar/migrate-prefs.d.ts +53 -0
  381. package/dist/lib/menubar/migrate-prefs.js +168 -0
  382. package/dist/lib/menubar/resolve-version.d.ts +1 -9
  383. package/dist/lib/menubar/resolve-version.js +4 -4
  384. package/dist/lib/menubar/snapshot.d.ts +24 -2
  385. package/dist/lib/menubar/snapshot.js +26 -0
  386. package/dist/lib/model-tier-overrides.d.ts +3 -2
  387. package/dist/lib/monitors/config.d.ts +0 -2
  388. package/dist/lib/monitors/config.js +0 -4
  389. package/dist/lib/monitors/engine.d.ts +1 -1
  390. package/dist/lib/monitors/remote.d.ts +3 -2
  391. package/dist/lib/monitors/sources/webhook.d.ts +2 -15
  392. package/dist/lib/monitors/sources/webhook.js +1 -38
  393. package/dist/lib/monitors/state.d.ts +4 -7
  394. package/dist/lib/monitors/state.js +2 -2
  395. package/dist/lib/notify.d.ts +1 -1
  396. package/dist/lib/notify.js +1 -1
  397. package/dist/lib/onepassword.d.ts +5 -14
  398. package/dist/lib/onepassword.js +0 -64
  399. package/dist/lib/open-url.d.ts +3 -2
  400. package/dist/lib/openclaw-keychain.d.ts +4 -17
  401. package/dist/lib/openclaw-keychain.js +3 -33
  402. package/dist/lib/operator.d.ts +2 -2
  403. package/dist/lib/operator.js +1 -1
  404. package/dist/lib/output/git-output.d.ts +4 -14
  405. package/dist/lib/output/git-output.js +1 -1
  406. package/dist/lib/owner-message.d.ts +3 -29
  407. package/dist/lib/owner-message.js +3 -3
  408. package/dist/lib/packages/output-home.d.ts +2 -4
  409. package/dist/lib/packages/output-home.js +2 -2
  410. package/dist/lib/perf/db.d.ts +0 -2
  411. package/dist/lib/perf/db.js +2 -7
  412. package/dist/lib/permissions-registry.d.ts +2 -3
  413. package/dist/lib/permissions-registry.js +0 -4
  414. package/dist/lib/permissions.d.ts +6 -16
  415. package/dist/lib/permissions.js +2 -15
  416. package/dist/lib/picker.d.ts +6 -5
  417. package/dist/lib/placement.d.ts +3 -6
  418. package/dist/lib/placement.js +0 -17
  419. package/dist/lib/platform/posixpath.d.ts +2 -1
  420. package/dist/lib/platform/winpath.d.ts +2 -1
  421. package/dist/lib/plugins/plugin-marketplace.d.ts +2 -2
  422. package/dist/lib/plugins/plugin-marketplace.js +1 -1
  423. package/dist/lib/pr-land-detach.d.ts +2 -1
  424. package/dist/lib/profiles-presets.d.ts +2 -1
  425. package/dist/lib/profiles.d.ts +3 -9
  426. package/dist/lib/profiles.js +1 -9
  427. package/dist/lib/project-doctor.d.ts +2 -1
  428. package/dist/lib/project-launch.d.ts +2 -2
  429. package/dist/lib/project-probe.d.ts +4 -3
  430. package/dist/lib/project-pull.d.ts +2 -1
  431. package/dist/lib/project-resources.d.ts +2 -2
  432. package/dist/lib/project-resources.js +1 -1
  433. package/dist/lib/project-root.d.ts +2 -6
  434. package/dist/lib/project-root.js +1 -1
  435. package/dist/lib/project-schedule.d.ts +2 -1
  436. package/dist/lib/project-status.d.ts +2 -16
  437. package/dist/lib/project-status.js +3 -3
  438. package/dist/lib/reconcile-and-repair.d.ts +5 -4
  439. package/dist/lib/redact.d.ts +7 -1
  440. package/dist/lib/redact.js +94 -3
  441. package/dist/lib/refresh-coordinator.d.ts +2 -1
  442. package/dist/lib/refresh.d.ts +3 -2
  443. package/dist/lib/remote-agents-json.d.ts +3 -2
  444. package/dist/lib/reserved-stores.d.ts +0 -2
  445. package/dist/lib/reserved-stores.js +3 -5
  446. package/dist/lib/resource-content-diff.d.ts +0 -2
  447. package/dist/lib/resource-content-diff.js +1 -1
  448. package/dist/lib/resource-patterns.d.ts +2 -1
  449. package/dist/lib/resource-profiles.d.ts +2 -8
  450. package/dist/lib/resource-profiles.js +3 -27
  451. package/dist/lib/resources/workflows.d.ts +1 -1
  452. package/dist/lib/resources.d.ts +4 -9
  453. package/dist/lib/resources.js +1 -1
  454. package/dist/lib/routine-context.d.ts +2 -5
  455. package/dist/lib/routine-context.js +2 -2
  456. package/dist/lib/routine-notify-owner.d.ts +8 -7
  457. package/dist/lib/routine-notify-owner.js +5 -5
  458. package/dist/lib/routine-process-cleanup.d.ts +2 -1
  459. package/dist/lib/routine-readiness.d.ts +0 -2
  460. package/dist/lib/routine-readiness.js +0 -7
  461. package/dist/lib/routines-project.d.ts +3 -4
  462. package/dist/lib/routines-project.js +1 -1
  463. package/dist/lib/rules/compile.d.ts +3 -25
  464. package/dist/lib/rules/compile.js +1 -1
  465. package/dist/lib/rules/compose.d.ts +3 -9
  466. package/dist/lib/rules/rules.d.ts +4 -15
  467. package/dist/lib/rules/rules.js +1 -64
  468. package/dist/lib/run-defaults.d.ts +1 -1
  469. package/dist/lib/run-notify.d.ts +2 -1
  470. package/dist/lib/run-trace-sync.d.ts +1 -1
  471. package/dist/lib/run-trace-sync.js +1 -1
  472. package/dist/lib/scheduler.d.ts +2 -1
  473. package/dist/lib/scheduling/routines.d.ts +9 -21
  474. package/dist/lib/scheduling/routines.js +3 -46
  475. package/dist/lib/secrets-client.d.ts +0 -17
  476. package/dist/lib/secrets-client.js +4 -26
  477. package/dist/lib/secrets-policy.d.ts +12 -17
  478. package/dist/lib/secrets-policy.js +5 -5
  479. package/dist/lib/secrets-types.d.ts +3 -2
  480. package/dist/lib/secrets-types.js +2 -1
  481. package/dist/lib/self-heal/checks/install-staging.js +1 -1
  482. package/dist/lib/self-heal/registry.d.ts +3 -2
  483. package/dist/lib/self-heal/types.d.ts +1 -1
  484. package/dist/lib/self-heal/types.js +1 -1
  485. package/dist/lib/self-update.d.ts +5 -5
  486. package/dist/lib/self-update.js +4 -4
  487. package/dist/lib/session/actor-sidecar.d.ts +3 -2
  488. package/dist/lib/session/artifacts.d.ts +0 -2
  489. package/dist/lib/session/artifacts.js +1 -1
  490. package/dist/lib/session/bash-command.d.ts +2 -7
  491. package/dist/lib/session/bundle.d.ts +4 -6
  492. package/dist/lib/session/bundle.js +1 -5
  493. package/dist/lib/session/cloud.d.ts +0 -4
  494. package/dist/lib/session/cloud.js +2 -15
  495. package/dist/lib/session/detached.d.ts +2 -1
  496. package/dist/lib/session/detached.js +2 -2
  497. package/dist/lib/session/digest.d.ts +2 -2
  498. package/dist/lib/session/digest.js +1 -1
  499. package/dist/lib/session/fork.d.ts +3 -2
  500. package/dist/lib/session/highlights.d.ts +6 -5
  501. package/dist/lib/session/hook-sessions.d.ts +2 -1
  502. package/dist/lib/session/host-link.d.ts +2 -1
  503. package/dist/lib/session/inject.d.ts +1 -1
  504. package/dist/lib/session/inject.js +1 -1
  505. package/dist/lib/session/insights.d.ts +3 -15
  506. package/dist/lib/session/insights.js +2 -2
  507. package/dist/lib/session/local-tmux-attach.d.ts +2 -18
  508. package/dist/lib/session/local-tmux-attach.js +1 -1
  509. package/dist/lib/session/migrations.d.ts +0 -1
  510. package/dist/lib/session/migrations.js +1 -1
  511. package/dist/lib/session/mirror.d.ts +5 -8
  512. package/dist/lib/session/mirror.js +2 -2
  513. package/dist/lib/session/parse.d.ts +1 -32
  514. package/dist/lib/session/parse.js +4 -4
  515. package/dist/lib/session/presence.d.ts +2 -1
  516. package/dist/lib/session/prompt.d.ts +3 -2
  517. package/dist/lib/session/prompt.js +38 -1
  518. package/dist/lib/session/recovery.d.ts +3 -2
  519. package/dist/lib/session/remote/peer-stream.d.ts +2 -5
  520. package/dist/lib/session/remote/peer-stream.js +2 -2
  521. package/dist/lib/session/remote/remote-bundle.d.ts +2 -1
  522. package/dist/lib/session/remote/remote-list.d.ts +5 -5
  523. package/dist/lib/session/remote/remote.d.ts +4 -3
  524. package/dist/lib/session/remote/watch.d.ts +2 -7
  525. package/dist/lib/session/remote/watch.js +3 -3
  526. package/dist/lib/session/remote-active.d.ts +2 -1
  527. package/dist/lib/session/render.d.ts +2 -2
  528. package/dist/lib/session/render.js +1 -1
  529. package/dist/lib/session/resume-owner.d.ts +1 -1
  530. package/dist/lib/session/resume-owner.js +1 -1
  531. package/dist/lib/session/run-names.d.ts +2 -1
  532. package/dist/lib/session/session-cache.d.ts +7 -26
  533. package/dist/lib/session/session-cache.js +2 -8
  534. package/dist/lib/session/share-html.d.ts +1 -21
  535. package/dist/lib/session/share-html.js +1 -1
  536. package/dist/lib/session/shell-programs.d.ts +2 -1
  537. package/dist/lib/session/state.d.ts +41 -8
  538. package/dist/lib/session/state.js +112 -11
  539. package/dist/lib/session/stream-render.d.ts +2 -1
  540. package/dist/lib/session/sync/agents.d.ts +0 -4
  541. package/dist/lib/session/sync/agents.js +0 -0
  542. package/dist/lib/session/sync/backend.d.ts +5 -5
  543. package/dist/lib/session/sync/managed-config.d.ts +0 -8
  544. package/dist/lib/session/sync/managed-key.d.ts +0 -2
  545. package/dist/lib/session/sync/managed-key.js +1 -1
  546. package/dist/lib/session/sync/r2.d.ts +4 -1
  547. package/dist/lib/session/sync/r2.js +4 -7
  548. package/dist/lib/session/sync/transcript-crypto.d.ts +2 -1
  549. package/dist/lib/session/tail.d.ts +2 -1
  550. package/dist/lib/session/team-filter.d.ts +1 -1
  551. package/dist/lib/session/throughput.d.ts +2 -3
  552. package/dist/lib/session/throughput.js +1 -1
  553. package/dist/lib/session/timeline-pass.d.ts +3 -42
  554. package/dist/lib/session/timeline-pass.js +4 -4
  555. package/dist/lib/session/timeline.d.ts +3 -13
  556. package/dist/lib/session/timeline.js +3 -3
  557. package/dist/lib/session/tool-calls.d.ts +2 -2
  558. package/dist/lib/session/tool-calls.js +1 -1
  559. package/dist/lib/session/tool-index.d.ts +0 -8
  560. package/dist/lib/session/tool-index.js +2 -2
  561. package/dist/lib/session/tool-store.d.ts +2 -1
  562. package/dist/lib/session/trajectory-compare.d.ts +2 -1
  563. package/dist/lib/session/trajectory-lineage.d.ts +2 -1
  564. package/dist/lib/session/trajectory-text.d.ts +3 -2
  565. package/dist/lib/session/trajectory.d.ts +2 -1
  566. package/dist/lib/session/viewing-in.d.ts +2 -1
  567. package/dist/lib/settings-manifest.d.ts +2 -1
  568. package/dist/lib/share/delete.d.ts +5 -4
  569. package/dist/lib/share/html.d.ts +0 -2
  570. package/dist/lib/share/html.js +9 -9
  571. package/dist/lib/share/http-error.d.ts +3 -2
  572. package/dist/lib/share/og.d.ts +2 -1
  573. package/dist/lib/share/provision.d.ts +2 -2
  574. package/dist/lib/share/publish.d.ts +4 -13
  575. package/dist/lib/share/publish.js +2 -2
  576. package/dist/lib/shim-heal.d.ts +1 -5
  577. package/dist/lib/shim-heal.js +0 -6
  578. package/dist/lib/smart-launch.d.ts +4 -5
  579. package/dist/lib/smart-launch.js +1 -1
  580. package/dist/lib/snapshot.d.ts +3 -2
  581. package/dist/lib/ssh-exec.d.ts +5 -4
  582. package/dist/lib/ssh-tunnel.d.ts +3 -2
  583. package/dist/lib/staleness/checkers/permissions.d.ts +0 -2
  584. package/dist/lib/staleness/checkers/permissions.js +1 -1
  585. package/dist/lib/staleness/fingerprint.d.ts +0 -7
  586. package/dist/lib/staleness/fingerprint.js +1 -1
  587. package/dist/lib/staleness/prune.d.ts +3 -2
  588. package/dist/lib/staleness/registry.d.ts +1 -1
  589. package/dist/lib/staleness/writers/sources.d.ts +0 -8
  590. package/dist/lib/staleness/writers/sources.js +1 -1
  591. package/dist/lib/startup/command-registry.js +1 -1
  592. package/dist/lib/state.d.ts +1 -3
  593. package/dist/lib/state.js +1 -4
  594. package/dist/lib/subagents-registry.d.ts +4 -3
  595. package/dist/lib/subagents.d.ts +2 -1
  596. package/dist/lib/subagents.js +3 -2
  597. package/dist/lib/summarizer/pass.d.ts +3 -6
  598. package/dist/lib/summarizer/pass.js +2 -2
  599. package/dist/lib/summarizer/summarize.d.ts +4 -3
  600. package/dist/lib/sync-passphrase.d.ts +3 -2
  601. package/dist/lib/sync-status.d.ts +3 -16
  602. package/dist/lib/sync-status.js +2 -2
  603. package/dist/lib/sync-umbrella.d.ts +4 -3
  604. package/dist/lib/system-run-sync.d.ts +2 -1
  605. package/dist/lib/teams/agents.d.ts +2 -4
  606. package/dist/lib/teams/agents.js +1 -1
  607. package/dist/lib/teams/forEach.d.ts +3 -2
  608. package/dist/lib/teams/pr-watch.d.ts +4 -11
  609. package/dist/lib/teams/pr-watch.js +4 -4
  610. package/dist/lib/teams/registry.d.ts +2 -3
  611. package/dist/lib/teams/registry.js +1 -1
  612. package/dist/lib/teams/remoteWorktree.d.ts +0 -16
  613. package/dist/lib/teams/remoteWorktree.js +3 -3
  614. package/dist/lib/teams/scheduler.d.ts +6 -5
  615. package/dist/lib/teams/scheduler.js +1 -1
  616. package/dist/lib/teams/supervisor.d.ts +4 -3
  617. package/dist/lib/teams/worktree.d.ts +0 -9
  618. package/dist/lib/teams/worktree.js +0 -32
  619. package/dist/lib/term-client.d.ts +44 -0
  620. package/dist/lib/term-client.js +117 -0
  621. package/dist/lib/terminal/inject.d.ts +3 -16
  622. package/dist/lib/terminal/inject.js +1 -29
  623. package/dist/lib/terminal/resolve.d.ts +3 -9
  624. package/dist/lib/terminal/resolve.js +3 -7
  625. package/dist/lib/tmux/binary.d.ts +2 -1
  626. package/dist/lib/tmux/orphan-reap.d.ts +6 -7
  627. package/dist/lib/tmux/orphan-reap.js +1 -1
  628. package/dist/lib/tmux/session.d.ts +4 -3
  629. package/dist/lib/traces/classify.d.ts +3 -2
  630. package/dist/lib/traces/config.d.ts +0 -8
  631. package/dist/lib/traces/insights.d.ts +2 -1
  632. package/dist/lib/traces/phenotype.d.ts +3 -3
  633. package/dist/lib/traces/provision.d.ts +1 -3
  634. package/dist/lib/traces/provision.js +1 -1
  635. package/dist/lib/traces/schema2-build.d.ts +1 -1
  636. package/dist/lib/traces/schema2-danger.d.ts +2 -1
  637. package/dist/lib/traces/schema2.d.ts +5 -4
  638. package/dist/lib/traces/segments.d.ts +4 -20
  639. package/dist/lib/traces/segments.js +3 -3
  640. package/dist/lib/traces/sync.d.ts +2 -3
  641. package/dist/lib/traces/sync.js +1 -1
  642. package/dist/lib/triggers/handlers.d.ts +4 -13
  643. package/dist/lib/triggers/handlers.js +1 -1
  644. package/dist/lib/triggers/webhook.d.ts +5 -27
  645. package/dist/lib/triggers/webhook.js +4 -4
  646. package/dist/lib/types.d.ts +3 -3
  647. package/dist/lib/usage-refresh.d.ts +4 -10
  648. package/dist/lib/usage-refresh.js +3 -8
  649. package/dist/lib/verbs.d.ts +2 -1
  650. package/dist/lib/version-duplicates.d.ts +2 -3
  651. package/dist/lib/version-duplicates.js +3 -33
  652. package/dist/lib/version.d.ts +2 -1
  653. package/dist/lib/warn-unpushed.d.ts +2 -1
  654. package/dist/lib/watchdog/history.d.ts +3 -2
  655. package/dist/lib/watchdog/log.d.ts +0 -6
  656. package/dist/lib/watchdog/log.js +1 -1
  657. package/dist/lib/watchdog/rotate.d.ts +2 -26
  658. package/dist/lib/watchdog/rotate.js +4 -12
  659. package/dist/lib/watchdog/runner.d.ts +0 -7
  660. package/dist/lib/watchdog/runner.js +4 -4
  661. package/dist/lib/watchdog/service.d.ts +2 -2
  662. package/dist/lib/watchdog/service.js +1 -1
  663. package/dist/lib/watchdog/watchdog-agent.d.ts +2 -1
  664. package/dist/lib/watchdog/watchdog.d.ts +2 -1
  665. package/dist/lib/watchdog/watchdogTail.d.ts +2 -1
  666. package/dist/lib/workflows-registry.d.ts +3 -2
  667. package/dist/lib/workflows.d.ts +4 -7
  668. package/dist/lib/workflows.js +1 -1
  669. package/dist/lib/worktree/held.d.ts +4 -28
  670. package/dist/lib/worktree/held.js +3 -3
  671. package/package.json +2 -3
  672. package/scripts/postinstall.js +5 -4
  673. package/dist/commands/pty.d.ts +0 -20
  674. package/dist/commands/pty.js +0 -404
  675. package/dist/lib/config-machine-keys.d.ts +0 -14
  676. package/dist/lib/config-machine-keys.js +0 -21
  677. package/dist/lib/pty-client.d.ts +0 -49
  678. package/dist/lib/pty-client.js +0 -315
  679. package/dist/lib/pty-server.d.ts +0 -59
  680. package/dist/lib/pty-server.js +0 -653
@@ -337,7 +337,7 @@ export declare function ensureVendorHomeDir(agent: AgentId, versionHome: string)
337
337
  * with AGENTS[agent].capabilities.modes — resolveMode() routes a request to a
338
338
  * supported mode (or throws), then buildExecCommand looks up the flags here.
339
339
  */
340
- export interface AgentCommandTemplate {
340
+ interface AgentCommandTemplate {
341
341
  base: string[];
342
342
  promptFlag: 'positional' | string;
343
343
  modeFlags: Partial<Record<Mode, string[]>>;
@@ -533,7 +533,7 @@ export interface TmuxWrapContext {
533
533
  * "spawn bare" — it is a launch that should not happen, because a bare remote
534
534
  * spawn looks fine right up until the link blinks and the agent dies with it.
535
535
  */
536
- export type TmuxWrapDecision =
536
+ type TmuxWrapDecision =
537
537
  /** Run the agent in a detached tmux session and attach this TTY. */
538
538
  {
539
539
  kind: 'wrap';
@@ -606,7 +606,7 @@ export declare function formatPaneTail(raw: string, maxLines?: number): string;
606
606
  * unbuffered.
607
607
  */
608
608
  /** Inputs the pre-launch `run.launch` payload is built from. */
609
- export interface RunLaunchInput {
609
+ interface RunLaunchInput {
610
610
  agent: AgentId;
611
611
  harnessName?: string;
612
612
  /** The version being launched, or undefined when none could be resolved. */
@@ -662,7 +662,7 @@ export declare function detectOutOfCredits(text: string): boolean;
662
662
  * clock), then a clock-less billing exhaustion, then a clean success clears any
663
663
  * stale marker; anything else leaves the marker untouched.
664
664
  */
665
- export type ClaudeRefusalAction = {
665
+ type ClaudeRefusalAction = {
666
666
  action: 'note_session';
667
667
  resetsAt: Date;
668
668
  } | {
@@ -712,19 +712,6 @@ export declare function parseCodexUsageLimitReset(text: string, nowMs?: number):
712
712
  * cascades via detectRateLimit) rather than persisting an unexpirable marker.
713
713
  */
714
714
  export declare function classifyCodexRunRefusal(output: string, exitCode: number, nowMs?: number): ClaudeRefusalAction;
715
- /**
716
- * Patterns that indicate an authentication failure — the agent is logged out,
717
- * its token was revoked, or the session expired. These are the user-visible
718
- * strings a logged-out agent surfaces (observed across the routine-run corpus).
719
- * Unlike a rate limit, an auth failure is NOT self-healing by failover — every
720
- * chain entry on the same account fails identically — so it is classified
721
- * separately and never triggers a fallback attempt.
722
- *
723
- * The bare `401` is deliberately paired with an auth keyword: a plain "401" can
724
- * appear in legitimate output (an HTTP-status table, a log line), so it only
725
- * counts when it co-occurs with OAuth/authentication/credentials/Unauthorized.
726
- */
727
- export declare const AUTH_FAILURE_PATTERNS: RegExp[];
728
715
  /**
729
716
  * Return true if the text contains any known authentication-failure indicator.
730
717
  * Agent-agnostic: matches the user-visible error string wherever it surfaces
@@ -782,7 +769,7 @@ export interface FallbackEntry {
782
769
  envOverride?: Record<string, string>;
783
770
  }
784
771
  /** ExecOptions extended with a fallback chain for rate-limit cascading. */
785
- export interface FallbackOptions extends ExecOptions {
772
+ interface FallbackOptions extends ExecOptions {
786
773
  /** Ordered list of agents to try if the primary (options.agent) hits a rate limit. */
787
774
  fallback: FallbackEntry[];
788
775
  /** Fallback requires a prompt -- chain handoff doesn't apply to interactive sessions. */
@@ -825,3 +812,4 @@ export declare function buildFallbackPrompt(prevAgent: AgentId, prevSessionId: s
825
812
  * instead of an opaque "all agents failed" message.
826
813
  */
827
814
  export declare function runWithFallback(options: FallbackOptions): Promise<number>;
815
+ export {};
package/dist/lib/exec.js CHANGED
@@ -2413,7 +2413,7 @@ export function classifyCodexRunRefusal(output, exitCode, nowMs = Date.now()) {
2413
2413
  * appear in legitimate output (an HTTP-status table, a log line), so it only
2414
2414
  * counts when it co-occurs with OAuth/authentication/credentials/Unauthorized.
2415
2415
  */
2416
- export const AUTH_FAILURE_PATTERNS = [
2416
+ const AUTH_FAILURE_PATTERNS = [
2417
2417
  /OAuth (?:access token has been revoked|session expired)/i,
2418
2418
  /(?:Please run|run) \/login/i,
2419
2419
  /Please run 'agent login' first/i,
@@ -62,7 +62,7 @@ export interface FactorySnapshot {
62
62
  };
63
63
  config: FactoryConfig;
64
64
  }
65
- export interface SnapshotDependencies {
65
+ interface SnapshotDependencies {
66
66
  home: string;
67
67
  now: () => Date;
68
68
  activeSessions: () => Promise<ActiveSession[]>;
@@ -74,5 +74,5 @@ export declare function readFactoryConfig(home: string): FactoryConfig;
74
74
  export declare function queueCounts(todoPayload: unknown, openPayload: unknown): FactorySnapshot['queues'][string];
75
75
  export declare function parsePullRequests(repo: string, payload: unknown): FactorySnapshot['prs'];
76
76
  export declare function parseDevices(payload: unknown, cached?: ReturnType<typeof readStatsCache>): FactorySnapshot['devices'];
77
- export declare function readRecentRuns(home: string, limit?: number): FactorySnapshot['recentRuns'];
78
77
  export declare function buildFactorySnapshot(overrides?: Partial<SnapshotDependencies>): Promise<FactorySnapshot>;
78
+ export {};
@@ -138,7 +138,7 @@ export function parseDevices(payload, cached = {}) {
138
138
  return { name, load, idle: row.idle === true || (load !== null && load < 20) };
139
139
  }).filter((row) => row.name.length > 0);
140
140
  }
141
- export function readRecentRuns(home, limit = 3) {
141
+ function readRecentRuns(home, limit = 3) {
142
142
  const root = path.join(home, '.agents', '.history', 'runs');
143
143
  if (!fs.existsSync(root))
144
144
  return [];
@@ -1,9 +1,5 @@
1
1
  import { type ActivityEvent } from './activity.js';
2
- /** How often the stream falls back to a full directory stat sweep. */
3
- export declare const ACTIVITY_SWEEP_MS = 5000;
4
- /** Bytes behind the cursor re-verified before appended bytes are trusted. */
5
- export declare const ACTIVITY_ANCHOR_BYTES = 64;
6
- export interface ActivityStreamOptions {
2
+ interface ActivityStreamOptions {
7
3
  /** Override the activity dir (tests). */
8
4
  root?: string;
9
5
  /**
@@ -58,3 +54,4 @@ export declare class ActivityStream {
58
54
  private readRange;
59
55
  private armWatcher;
60
56
  }
57
+ export {};
@@ -22,9 +22,9 @@ import * as path from 'node:path';
22
22
  import { getActivityDir } from '../state.js';
23
23
  import { ACTIVITY_TAIL_BYTES, parseActivityLine } from './activity.js';
24
24
  /** How often the stream falls back to a full directory stat sweep. */
25
- export const ACTIVITY_SWEEP_MS = 5_000;
25
+ const ACTIVITY_SWEEP_MS = 5_000;
26
26
  /** Bytes behind the cursor re-verified before appended bytes are trusted. */
27
- export const ACTIVITY_ANCHOR_BYTES = 64;
27
+ const ACTIVITY_ANCHOR_BYTES = 64;
28
28
  const NEWLINE = 0x0a;
29
29
  const EMPTY = Buffer.alloc(0);
30
30
  /** Could this file have changed since its cursor last looked? */
@@ -1,7 +1,7 @@
1
1
  import type { ActorKind } from '../actor.js';
2
2
  import type { EventRecord } from './events.js';
3
3
  /** Recognizable milestone events, ordered first in any activity lane. */
4
- export type MilestoneEvent = 'plan.created' | 'pr.opened' | 'pr.merged' | 'worktree.created' | 'worktree.removed' | 'commit.created' | 'pushed' | 'subagent.spawned' | 'artifact.created' | 'task.completed' | 'checklist.created'
4
+ type MilestoneEvent = 'plan.created' | 'pr.opened' | 'pr.merged' | 'worktree.created' | 'worktree.removed' | 'commit.created' | 'pushed' | 'subagent.spawned' | 'artifact.created' | 'task.completed' | 'checklist.created'
5
5
  /** Bash-driven deliverables detected by command parsing. */
6
6
  | 'video.rendered' | 'video.converted' | 'image.upscaled' | 'metadata.edited'
7
7
  /** Deliberate agent-authored progress post (`agents feed post`). */
@@ -146,9 +146,7 @@ export declare function getActivityCacheStats(): {
146
146
  };
147
147
  /** Read all events for one session (bounded tail). */
148
148
  export declare function readSessionActivity(sessionId: string, root?: string, maxBytes?: number): ActivityEvent[];
149
- /** List session ids that have an activity log. */
150
- export declare function listActivitySessions(root?: string): string[];
151
- export interface RecentActivityOptions {
149
+ interface RecentActivityOptions {
152
150
  /** Only include events at or after this epoch-ms. */
153
151
  sinceMs?: number;
154
152
  /** Cap the number of returned events (most recent first). */
@@ -171,7 +169,7 @@ export interface RecentActivityOptions {
171
169
  * tail of each file, so cost scales with active sessions, not transcript size.
172
170
  */
173
171
  export declare function readRecentActivity(opts?: RecentActivityOptions): ActivityEvent[];
174
- export interface CollapsedActivity {
172
+ interface CollapsedActivity {
175
173
  /** Milestone events, individually preserved, newest first. */
176
174
  milestones: ActivityEvent[];
177
175
  /** Routine events rolled up to counts, e.g. { 'file.edited': 12 }. */
@@ -185,32 +183,12 @@ export interface CollapsedActivity {
185
183
  * deliverables in full and collapses the noise.
186
184
  */
187
185
  export declare function collapseActivity(events: ActivityEvent[]): CollapsedActivity;
188
- /**
189
- * Normalize one activity event into the shared {@link EventRecord} shape so the
190
- * agent-semantic stream reads through the same reader as operational events.
191
- * `module` is stamped `activity` so `--module` filters partition the two cleanly.
192
- */
193
- export declare function activityEventToRecord(ev: ActivityEvent): EventRecord;
194
186
  /** Read recent activity across sessions as unified {@link EventRecord}s. */
195
187
  export declare function readActivityAsEventRecords(opts?: RecentActivityOptions): EventRecord[];
196
- /** Glyph + color + human label per event, so the lane reads at a glance. */
197
- export declare const EVENT_STYLE: Record<string, {
198
- glyph: string;
199
- color: (s: string) => string;
200
- label: string;
201
- }>;
202
- export declare function styleForEvent(event: string): {
203
- glyph: string;
204
- color: (s: string) => string;
205
- label: string;
206
- };
207
188
  /** One rendered activity line: ` <rel> [host] <glyph label> detail url`. */
208
189
  export declare function formatActivityLine(ev: ActivityEvent, opts?: {
209
190
  showHost?: boolean;
210
191
  }): string;
211
- /** Glyph per attachment kind, so an artifact row reads at a glance. */
212
- export declare const ATTACHMENT_GLYPH: Record<string, string>;
213
- export declare function attachmentGlyph(kind: string): string;
214
192
  /** Display name for an attachment: its `name`, else the basename of its href. */
215
193
  export declare function attachmentName(att: Attachment): string;
216
194
  /**
@@ -219,7 +197,7 @@ export declare function attachmentName(att: Attachment): string;
219
197
  */
220
198
  export declare function shortSessionId(sessionId: string): string;
221
199
  /** Extra identity resolved at display time by joining the session index. */
222
- export interface ProgressJoin {
200
+ interface ProgressJoin {
223
201
  ticketId?: string;
224
202
  prUrl?: string;
225
203
  label?: string;
@@ -255,7 +233,7 @@ export interface EnrichedActivityEvent extends ActivityEvent {
255
233
  * Facts pulled off a live session to enrich its activity events. Keyed by
256
234
  * `sessionId`; every field optional so callers pass whatever they resolved.
257
235
  */
258
- export interface ActivitySessionHint {
236
+ interface ActivitySessionHint {
259
237
  sessionId?: string | null;
260
238
  /** Tracker ticket id (from `ActiveSession.ticket`). */
261
239
  ticket?: string | null;
@@ -319,9 +297,9 @@ export declare function mergeActivityEvents(...groups: EnrichedActivityEvent[][]
319
297
  export declare function capActivityEvents(events: EnrichedActivityEvent[], limit: number, opts?: {
320
298
  all?: boolean;
321
299
  }): EnrichedActivityEvent[];
322
- export type ActivityGroupBy = 'project' | 'device' | 'agent';
300
+ type ActivityGroupBy = 'project' | 'device' | 'agent';
323
301
  /** One bucket of the grouped view. */
324
- export interface ActivityGroup {
302
+ interface ActivityGroup {
325
303
  /** Grouping value; empty string for the "unknown" bucket. */
326
304
  key: string;
327
305
  /** Display label. */
@@ -358,8 +336,6 @@ export declare function formatEnrichedActivityLine(ev: EnrichedActivityEvent, op
358
336
  showProject?: boolean;
359
337
  indent?: string;
360
338
  }): string;
361
- /** Max device names named in a group header before the rest collapse to `+N`. */
362
- export declare const GROUP_HEADER_DEVICE_LIMIT = 3;
363
339
  /**
364
340
  * The distinct machines a group's events ran on, most-active first then
365
341
  * alphabetical — so a project header can say WHERE the work happened without
@@ -389,8 +365,6 @@ export declare function formatActivityGroupMeta(group: ActivityGroup, opts?: {
389
365
  * a logging hiccup never blocks a tool call.
390
366
  */
391
367
  export declare const ACTIVITY_LOG_HOOK_SCRIPT: string;
392
- /** Hook manifest entries (agents.yaml shape) for the activity-log hook. */
393
- export declare const ACTIVITY_HOOK_DEFINITIONS: Record<string, Record<string, unknown>>;
394
368
  /**
395
369
  * Install the activity-log hook script into the user hooks dir and add its
396
370
  * manifest entries to the user agents.yaml. Mirrors {@link ensureFeedPublishHook}
@@ -400,3 +374,4 @@ export declare function ensureActivityLogHook(userAgentsDir?: string): {
400
374
  installed: boolean;
401
375
  error?: string;
402
376
  };
377
+ export {};
@@ -331,7 +331,7 @@ export function readSessionActivity(sessionId, root, maxBytes = ACTIVITY_TAIL_BY
331
331
  return structuredClone(readActivityTail(activityPath(dir, sessionId), maxBytes).events ?? []);
332
332
  }
333
333
  /** List session ids that have an activity log. */
334
- export function listActivitySessions(root) {
334
+ function listActivitySessions(root) {
335
335
  const dir = root ?? getActivityDir();
336
336
  try {
337
337
  return fs.readdirSync(dir).filter(n => n.endsWith('.jsonl')).map(n => n.slice(0, -'.jsonl'.length));
@@ -395,7 +395,7 @@ export function collapseActivity(events) {
395
395
  * agent-semantic stream reads through the same reader as operational events.
396
396
  * `module` is stamped `activity` so `--module` filters partition the two cleanly.
397
397
  */
398
- export function activityEventToRecord(ev) {
398
+ function activityEventToRecord(ev) {
399
399
  return {
400
400
  ts: ev.ts,
401
401
  tz: '',
@@ -438,7 +438,7 @@ export function readActivityAsEventRecords(opts = {}) {
438
438
  // Rendering (shared by the feed activity lane and `agents feed --filter updates`)
439
439
  // ---------------------------------------------------------------------------
440
440
  /** Glyph + color + human label per event, so the lane reads at a glance. */
441
- export const EVENT_STYLE = {
441
+ const EVENT_STYLE = {
442
442
  'plan.created': { glyph: '◆', color: chalk.cyan, label: 'plan created' },
443
443
  'pr.opened': { glyph: '⇡', color: chalk.green, label: 'PR opened' },
444
444
  'pr.merged': { glyph: '✔', color: chalk.green, label: 'PR merged' },
@@ -455,7 +455,7 @@ export const EVENT_STYLE = {
455
455
  'factory.launch': { glyph: '⌁', color: chalk.cyan, label: 'factory launch' },
456
456
  'bash.executed': { glyph: '$', color: chalk.gray, label: 'command run' },
457
457
  };
458
- export function styleForEvent(event) {
458
+ function styleForEvent(event) {
459
459
  return EVENT_STYLE[event] ?? { glyph: '•', color: chalk.white, label: event };
460
460
  }
461
461
  /** One rendered activity line: ` <rel> [host] <glyph label> detail url`. */
@@ -478,14 +478,14 @@ export function formatActivityLine(ev, opts = {}) {
478
478
  // chips (agent · session · host · project) and any attached artifacts.
479
479
  // ---------------------------------------------------------------------------
480
480
  /** Glyph per attachment kind, so an artifact row reads at a glance. */
481
- export const ATTACHMENT_GLYPH = {
481
+ const ATTACHMENT_GLYPH = {
482
482
  image: '🖼',
483
483
  audio: '♪',
484
484
  video: '▶',
485
485
  file: '📎',
486
486
  link: '↗',
487
487
  };
488
- export function attachmentGlyph(kind) {
488
+ function attachmentGlyph(kind) {
489
489
  return ATTACHMENT_GLYPH[kind] ?? '📎';
490
490
  }
491
491
  /** Display name for an attachment: its `name`, else the basename of its href. */
@@ -746,7 +746,7 @@ export function formatEnrichedActivityLine(ev, opts = {}) {
746
746
  return `${opts.indent ?? ''}${base}${suffix}`;
747
747
  }
748
748
  /** Max device names named in a group header before the rest collapse to `+N`. */
749
- export const GROUP_HEADER_DEVICE_LIMIT = 3;
749
+ const GROUP_HEADER_DEVICE_LIMIT = 3;
750
750
  /**
751
751
  * The distinct machines a group's events ran on, most-active first then
752
752
  * alphabetical — so a project header can say WHERE the work happened without
@@ -1647,7 +1647,7 @@ if __name__ == "__main__":
1647
1647
  pass # fail open
1648
1648
  `;
1649
1649
  /** Hook manifest entries (agents.yaml shape) for the activity-log hook. */
1650
- export const ACTIVITY_HOOK_DEFINITIONS = {
1650
+ const ACTIVITY_HOOK_DEFINITIONS = {
1651
1651
  'activity-log-intent': {
1652
1652
  agents: ['claude'],
1653
1653
  events: ['PreToolUse'],
@@ -1,11 +1,11 @@
1
1
  import { type ActiveSession } from '../session/active.js';
2
2
  import { type MessageReceipt } from './feed.js';
3
- export interface VerifiedOperator {
3
+ interface VerifiedOperator {
4
4
  id?: string;
5
5
  verified: boolean;
6
6
  label?: string;
7
7
  }
8
- export interface FeedAnswerResult {
8
+ interface FeedAnswerResult {
9
9
  status: 'delivered' | 'already_answered';
10
10
  receipt: MessageReceipt;
11
11
  }
@@ -27,3 +27,4 @@ export declare function forwardFeedAnswer(input: {
27
27
  text?: string;
28
28
  operatorId?: string;
29
29
  }): Promise<FeedAnswerResult>;
30
+ export {};
@@ -50,7 +50,11 @@ function structuredToBlockQuestion(sq) {
50
50
  const options = sq.options?.length
51
51
  ? sq.options.map((o) => ({ label: o.label, ...(o.description ? { description: o.description } : {}) }))
52
52
  : undefined;
53
- return { text: sq.text, ...(options ? { options } : {}) };
53
+ return {
54
+ text: sq.text,
55
+ ...(options ? { options } : {}),
56
+ ...(sq.context ? { context: sq.context } : {}),
57
+ };
54
58
  }
55
59
  /** A label slugged to the `[a-z0-9-]+` id shape the notify argv and UIs echo back. */
56
60
  function slugId(label) {
@@ -75,17 +75,6 @@ export interface EventPayload {
75
75
  [key: string]: unknown;
76
76
  }
77
77
  export type EventRecord = EventMeta & EventPayload;
78
- /**
79
- * Move root-level and interim flat-history event families into dated directories.
80
- *
81
- * The common case is a whole-family rename into an empty destination. A
82
- * Each segment is assigned to the local calendar day of its filesystem mtime;
83
- * new writes are split by day at source. A partially completed migration keeps
84
- * the destination active file authoritative and assigns a fresh archive number,
85
- * so no record is overwritten or silently discarded. The legacy active-file
86
- * lock serializes this with older installed processes that still append there.
87
- */
88
- export declare function migrateLegacyEventLogs(userDir?: string): number;
89
78
  /**
90
79
  * Replace a prompt string with length + short SHA so we can correlate runs
91
80
  * without persisting the raw text. Returns the fields to spread into a payload.
@@ -158,14 +147,6 @@ export declare function emitRoutineEndAsync(meta: RoutineEndMeta): Promise<void>
158
147
  * const result = time('parse-config', () => parseConfig(path));
159
148
  */
160
149
  export declare function time<T>(label: string, fn: () => T, payload?: EventPayload): T;
161
- /**
162
- * Measure execution time of an async function.
163
- * Emits a perf.timing event with the duration.
164
- *
165
- * @example
166
- * const result = await timeAsync('fetch-data', () => fetchData(url));
167
- */
168
- export declare function timeAsync<T>(label: string, fn: () => Promise<T>, payload?: EventPayload): Promise<T>;
169
150
  /**
170
151
  * Create a timing context for measuring multiple phases of an operation.
171
152
  * Useful for tracking startup time vs execution time.
@@ -182,15 +163,6 @@ export declare function createTimer(label: string, payload?: EventPayload): {
182
163
  end: (endPayload?: EventPayload) => void;
183
164
  elapsed: () => number;
184
165
  };
185
- /**
186
- * Higher-order function that wraps an async function with timing.
187
- * The wrapper emits start/end events automatically.
188
- *
189
- * @example
190
- * const timedFetch = withTiming('fetch', fetchData, { service: 'api' });
191
- * const result = await timedFetch(url);
192
- */
193
- export declare function withTiming<Args extends unknown[], R>(label: string, fn: (...args: Args) => Promise<R>, basePayload?: EventPayload): (...args: Args) => Promise<R>;
194
166
  /**
195
167
  * Emit a command.start event with CLI args.
196
168
  * Returns a done() function to emit command.end with duration.
@@ -202,10 +174,6 @@ export declare function withTiming<Args extends unknown[], R>(label: string, fn:
202
174
  * done({ exitCode: 0 });
203
175
  */
204
176
  export declare function emitCommand(command: string, args?: string[], payload?: EventPayload): (endPayload?: EventPayload) => void;
205
- /**
206
- * Emit an error event with full details.
207
- */
208
- export declare function emitError(err: Error | string, payload?: EventPayload): void;
209
177
  /**
210
178
  * Emit a friction event — a structured, point-of-use record of a failure or
211
179
  * block the CLI just hit. `surface` is the subsystem (teams, browser, secrets,
@@ -213,7 +181,7 @@ export declare function emitError(err: Error | string, payload?: EventPayload):
213
181
  * the same failure across sessions (e.g. 'remote-cwd-on-add', 'not-installed').
214
182
  */
215
183
  export declare function emitFriction(surface: string, failureId: string, payload?: EventPayload): void;
216
- export interface RotationResult {
184
+ interface RotationResult {
217
185
  removedByAge: number;
218
186
  removedBySize: number;
219
187
  bytesReclaimed: number;
@@ -250,20 +218,7 @@ export declare function queryToolUsageForSessions(sessionIds: ReadonlySet<string
250
218
  usedBrowser: boolean;
251
219
  usedComputer: boolean;
252
220
  }>;
253
- /**
254
- * Get performance stats for a specific label.
255
- */
256
- export declare function getTimingStats(label: string, options?: {
257
- days?: number;
258
- }): {
259
- count: number;
260
- avgMs: number;
261
- minMs: number;
262
- maxMs: number;
263
- p50Ms: number;
264
- p95Ms: number;
265
- } | null;
266
- export interface EventStats {
221
+ interface EventStats {
267
222
  totalEvents: number;
268
223
  byLevel: Record<string, number>;
269
224
  byEvent: Record<string, number>;
@@ -233,7 +233,7 @@ function ensureLogsDir() {
233
233
  * so no record is overwritten or silently discarded. The legacy active-file
234
234
  * lock serializes this with older installed processes that still append there.
235
235
  */
236
- export function migrateLegacyEventLogs(userDir = userAgentsDir()) {
236
+ function migrateLegacyEventLogs(userDir = userAgentsDir()) {
237
237
  if (_eventsPathOverride || _legacyMigrationChecked)
238
238
  return 0;
239
239
  _legacyMigrationChecked = true;
@@ -660,56 +660,6 @@ export function time(label, fn, payload = {}) {
660
660
  throw err;
661
661
  }
662
662
  }
663
- /**
664
- * Measure execution time of an async function.
665
- * Emits a perf.timing event with the duration.
666
- *
667
- * @example
668
- * const result = await timeAsync('fetch-data', () => fetchData(url));
669
- */
670
- export async function timeAsync(label, fn, payload = {}) {
671
- const start = Date.now();
672
- try {
673
- const result = await fn();
674
- const durationMs = Date.now() - start;
675
- emit('perf.timing', {
676
- ...payload,
677
- label,
678
- durationMs,
679
- status: 'success',
680
- });
681
- recordPerfTiming({
682
- label,
683
- durationMs,
684
- status: 'success',
685
- agent: payload.agent,
686
- version: payload.version,
687
- sessionId: payload.sessionId,
688
- cwd: payload.cwd,
689
- });
690
- return result;
691
- }
692
- catch (err) {
693
- const durationMs = Date.now() - start;
694
- emit('perf.timing', {
695
- ...payload,
696
- label,
697
- durationMs,
698
- status: 'error',
699
- error: err instanceof Error ? err.message : String(err),
700
- });
701
- recordPerfTiming({
702
- label,
703
- durationMs,
704
- status: 'error',
705
- agent: payload.agent,
706
- version: payload.version,
707
- sessionId: payload.sessionId,
708
- cwd: payload.cwd,
709
- });
710
- throw err;
711
- }
712
- }
713
663
  /**
714
664
  * Create a timing context for measuring multiple phases of an operation.
715
665
  * Useful for tracking startup time vs execution time.
@@ -755,59 +705,6 @@ export function createTimer(label, payload = {}) {
755
705
  },
756
706
  };
757
707
  }
758
- /**
759
- * Higher-order function that wraps an async function with timing.
760
- * The wrapper emits start/end events automatically.
761
- *
762
- * @example
763
- * const timedFetch = withTiming('fetch', fetchData, { service: 'api' });
764
- * const result = await timedFetch(url);
765
- */
766
- export function withTiming(label, fn, basePayload = {}) {
767
- return async (...args) => {
768
- const start = Date.now();
769
- try {
770
- const result = await fn(...args);
771
- const durationMs = Date.now() - start;
772
- emit('perf.timing', {
773
- ...basePayload,
774
- label,
775
- durationMs,
776
- status: 'success',
777
- });
778
- recordPerfTiming({
779
- label,
780
- durationMs,
781
- status: 'success',
782
- agent: basePayload.agent,
783
- version: basePayload.version,
784
- sessionId: basePayload.sessionId,
785
- cwd: basePayload.cwd,
786
- });
787
- return result;
788
- }
789
- catch (err) {
790
- const durationMs = Date.now() - start;
791
- emit('perf.timing', {
792
- ...basePayload,
793
- label,
794
- durationMs,
795
- status: 'error',
796
- error: err instanceof Error ? err.message : String(err),
797
- });
798
- recordPerfTiming({
799
- label,
800
- durationMs,
801
- status: 'error',
802
- agent: basePayload.agent,
803
- version: basePayload.version,
804
- sessionId: basePayload.sessionId,
805
- cwd: basePayload.cwd,
806
- });
807
- throw err;
808
- }
809
- };
810
- }
811
708
  // ─── Command Tracking ─────────────────────────────────────────────────────────
812
709
  /**
813
710
  * Emit a command.start event with CLI args.
@@ -827,18 +724,6 @@ export function emitCommand(command, args = [], payload = {}) {
827
724
  cwd: process.cwd(),
828
725
  });
829
726
  }
830
- // ─── Error Tracking ───────────────────────────────────────────────────────────
831
- /**
832
- * Emit an error event with full details.
833
- */
834
- export function emitError(err, payload = {}) {
835
- const error = err instanceof Error ? err : new Error(err);
836
- emit('error', {
837
- ...payload,
838
- error: error.message,
839
- errorStack: truncate(error.stack, 1000),
840
- });
841
- }
842
727
  /**
843
728
  * Emit a friction event — a structured, point-of-use record of a failure or
844
729
  * block the CLI just hit. `surface` is the subsystem (teams, browser, secrets,
@@ -1183,31 +1068,6 @@ export function queryToolUsageForSessions(sessionIds) {
1183
1068
  }
1184
1069
  return result;
1185
1070
  }
1186
- // ─── Stats ────────────────────────────────────────────────────────────────────
1187
- /**
1188
- * Get performance stats for a specific label.
1189
- */
1190
- export function getTimingStats(label, options = {}) {
1191
- const days = options.days ?? 7;
1192
- const startDate = new Date();
1193
- startDate.setDate(startDate.getDate() - days);
1194
- const events = query({
1195
- startDate,
1196
- eventTypes: ['perf.timing'],
1197
- }).filter(e => e.label === label && typeof e.durationMs === 'number');
1198
- if (events.length === 0)
1199
- return null;
1200
- const durations = events.map(e => e.durationMs).sort((a, b) => a - b);
1201
- const sum = durations.reduce((a, b) => a + b, 0);
1202
- return {
1203
- count: durations.length,
1204
- avgMs: Math.round(sum / durations.length),
1205
- minMs: durations[0],
1206
- maxMs: durations[durations.length - 1],
1207
- p50Ms: durations[Math.floor(durations.length * 0.5)],
1208
- p95Ms: durations[Math.floor(durations.length * 0.95)],
1209
- };
1210
- }
1211
1071
  export function stats(options = {}) {
1212
1072
  const days = options.days ?? 7;
1213
1073
  const startDate = new Date();