@phnx-labs/agents-cli 1.22.34 → 1.22.37

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 (493) hide show
  1. package/CHANGELOG.md +672 -2
  2. package/README.md +82 -35
  3. package/dist/bin/agents +0 -0
  4. package/dist/bootstrap.d.ts +15 -0
  5. package/dist/bootstrap.js +1211 -0
  6. package/dist/commands/accounts.d.ts +4 -11
  7. package/dist/commands/accounts.js +159 -27
  8. package/dist/commands/attach.js +17 -4
  9. package/dist/commands/audit.d.ts +8 -8
  10. package/dist/commands/audit.js +57 -47
  11. package/dist/commands/browser.js +15 -11
  12. package/dist/commands/cloud.js +1 -1
  13. package/dist/commands/commands.js +0 -11
  14. package/dist/commands/computer-actions.js +33 -0
  15. package/dist/commands/computer-sessions-picker.d.ts +21 -0
  16. package/dist/commands/computer-sessions-picker.js +141 -0
  17. package/dist/commands/computer.d.ts +16 -0
  18. package/dist/commands/computer.js +37 -0
  19. package/dist/commands/config.d.ts +17 -0
  20. package/dist/commands/config.js +401 -0
  21. package/dist/commands/cp.d.ts +84 -0
  22. package/dist/commands/cp.js +231 -0
  23. package/dist/commands/daemon.js +243 -14
  24. package/dist/commands/detach-core.d.ts +1 -1
  25. package/dist/commands/detach-core.js +12 -2
  26. package/dist/commands/detach.js +1 -1
  27. package/dist/commands/doctor.js +64 -5
  28. package/dist/commands/events.d.ts +24 -12
  29. package/dist/commands/events.js +144 -28
  30. package/dist/commands/exec.js +85 -41
  31. package/dist/commands/feed.d.ts +1 -1
  32. package/dist/commands/feed.js +16 -8
  33. package/dist/commands/focus.d.ts +33 -1
  34. package/dist/commands/focus.js +177 -17
  35. package/dist/commands/funnel.d.ts +1 -1
  36. package/dist/commands/go.js +9 -8
  37. package/dist/commands/harness-wizard.d.ts +1 -0
  38. package/dist/commands/harness-wizard.js +18 -20
  39. package/dist/commands/harness.d.ts +2 -0
  40. package/dist/commands/harness.js +59 -26
  41. package/dist/commands/hooks.js +0 -11
  42. package/dist/commands/inspect.d.ts +94 -1
  43. package/dist/commands/inspect.js +866 -40
  44. package/dist/commands/lease.d.ts +4 -4
  45. package/dist/commands/lease.js +6 -6
  46. package/dist/commands/login.js +0 -13
  47. package/dist/commands/logs.d.ts +2 -2
  48. package/dist/commands/logs.js +2 -2
  49. package/dist/commands/mcp.js +7 -2
  50. package/dist/commands/memory.js +7 -2
  51. package/dist/commands/message.d.ts +1 -1
  52. package/dist/commands/message.js +37 -6
  53. package/dist/commands/models.js +4 -0
  54. package/dist/commands/monitors.d.ts +0 -1
  55. package/dist/commands/monitors.js +199 -16
  56. package/dist/commands/open.d.ts +18 -0
  57. package/dist/commands/open.js +57 -0
  58. package/dist/commands/packages.js +2 -107
  59. package/dist/commands/plugins.js +6 -3
  60. package/dist/commands/profiles.d.ts +1 -0
  61. package/dist/commands/profiles.js +16 -160
  62. package/dist/commands/projects.d.ts +28 -0
  63. package/dist/commands/projects.js +125 -5
  64. package/dist/commands/reconnect.js +9 -3
  65. package/dist/commands/repo.js +42 -1
  66. package/dist/commands/resource-view.d.ts +17 -0
  67. package/dist/commands/resource-view.js +36 -14
  68. package/dist/commands/resume.js +9 -2
  69. package/dist/commands/routines.d.ts +0 -2
  70. package/dist/commands/routines.js +473 -289
  71. package/dist/commands/secrets.js +52 -9
  72. package/dist/commands/sessions-export.d.ts +47 -0
  73. package/dist/commands/sessions-export.js +116 -6
  74. package/dist/commands/sessions-import.d.ts +17 -0
  75. package/dist/commands/sessions-import.js +114 -6
  76. package/dist/commands/sessions-migrate.d.ts +27 -0
  77. package/dist/commands/sessions-migrate.js +50 -9
  78. package/dist/commands/sessions-picker.js +23 -4
  79. package/dist/commands/sessions-resume.d.ts +5 -3
  80. package/dist/commands/sessions-resume.js +30 -8
  81. package/dist/commands/sessions-watch.d.ts +2 -0
  82. package/dist/commands/sessions-watch.js +53 -0
  83. package/dist/commands/sessions.d.ts +66 -3
  84. package/dist/commands/sessions.js +298 -47
  85. package/dist/commands/set.d.ts +1 -1
  86. package/dist/commands/set.js +2 -2
  87. package/dist/commands/setup-browser.js +2 -2
  88. package/dist/commands/setup-mine.js +0 -1
  89. package/dist/commands/setup-preferences.js +1 -1
  90. package/dist/commands/setup-share.js +34 -4
  91. package/dist/commands/setup.d.ts +5 -0
  92. package/dist/commands/setup.js +26 -0
  93. package/dist/commands/share.d.ts +85 -0
  94. package/dist/commands/share.js +379 -8
  95. package/dist/commands/skills.js +0 -11
  96. package/dist/commands/snapshot.js +1 -1
  97. package/dist/commands/ssh.d.ts +18 -0
  98. package/dist/commands/ssh.js +549 -210
  99. package/dist/commands/sync.d.ts +5 -0
  100. package/dist/commands/sync.js +212 -32
  101. package/dist/commands/teams.d.ts +13 -0
  102. package/dist/commands/teams.js +187 -30
  103. package/dist/commands/tickets.d.ts +2 -0
  104. package/dist/commands/tickets.js +43 -0
  105. package/dist/commands/update.js +2 -4
  106. package/dist/commands/usage.js +5 -3
  107. package/dist/commands/versions.js +11 -5
  108. package/dist/commands/view.js +15 -7
  109. package/dist/commands/webhook.d.ts +2 -2
  110. package/dist/commands/webhook.js +7 -7
  111. package/dist/index.d.ts +18 -2
  112. package/dist/index.js +53 -1264
  113. package/dist/lib/account-catalog.d.ts +18 -0
  114. package/dist/lib/account-catalog.js +38 -0
  115. package/dist/lib/account-provider-registry.d.ts +18 -0
  116. package/dist/lib/account-provider-registry.js +59 -0
  117. package/dist/lib/account-registry.d.ts +40 -0
  118. package/dist/lib/account-registry.js +239 -0
  119. package/dist/lib/account-schema.d.ts +44 -0
  120. package/dist/lib/account-schema.js +91 -0
  121. package/dist/lib/account-state-service.d.ts +21 -0
  122. package/dist/lib/account-state-service.js +60 -0
  123. package/dist/lib/activity.d.ts +1 -1
  124. package/dist/lib/activity.js +8 -1
  125. package/dist/lib/add-dir.d.ts +80 -0
  126. package/dist/lib/add-dir.js +241 -0
  127. package/dist/lib/agent-cli-commands.d.ts +11 -0
  128. package/dist/lib/agent-cli-commands.js +30 -0
  129. package/dist/lib/agents.js +44 -36
  130. package/dist/lib/answer-router.js +1 -1
  131. package/dist/lib/audit/log.d.ts +10 -27
  132. package/dist/lib/audit/log.js +20 -33
  133. package/dist/lib/auth-health.d.ts +9 -2
  134. package/dist/lib/auth-health.js +42 -9
  135. package/dist/lib/auto-pull-worker.js +7 -3
  136. package/dist/lib/auto-pull.d.ts +44 -3
  137. package/dist/lib/auto-pull.js +88 -5
  138. package/dist/lib/binary-shadow.d.ts +28 -0
  139. package/dist/lib/binary-shadow.js +121 -0
  140. package/dist/lib/brand.js +9 -3
  141. package/dist/lib/browser/ipc.d.ts +30 -0
  142. package/dist/lib/browser/ipc.js +81 -4
  143. package/dist/lib/browser/profiles.d.ts +3 -2
  144. package/dist/lib/browser/profiles.js +65 -22
  145. package/dist/lib/browser/service.d.ts +4 -0
  146. package/dist/lib/browser/service.js +30 -3
  147. package/dist/lib/browser/sessions-list.d.ts +22 -2
  148. package/dist/lib/browser/sessions-list.js +54 -6
  149. package/dist/lib/browser/stream.d.ts +2 -0
  150. package/dist/lib/browser/stream.js +1 -0
  151. package/dist/lib/browser/types.d.ts +19 -0
  152. package/dist/lib/byok-usage.d.ts +9 -2
  153. package/dist/lib/byok-usage.js +133 -31
  154. package/dist/lib/cli-entry.d.ts +11 -0
  155. package/dist/lib/cli-entry.js +46 -0
  156. package/dist/lib/cloud/host.d.ts +1 -1
  157. package/dist/lib/cloud/host.js +2 -2
  158. package/dist/lib/cloud/registry.js +1 -1
  159. package/dist/lib/cloud/types.d.ts +1 -1
  160. package/dist/lib/codex-policy.d.ts +9 -1
  161. package/dist/lib/codex-policy.js +17 -2
  162. package/dist/lib/commands.d.ts +2 -0
  163. package/dist/lib/commands.js +2 -0
  164. package/dist/lib/computer/sessions-list.d.ts +150 -0
  165. package/dist/lib/computer/sessions-list.js +363 -0
  166. package/dist/lib/config-keys.d.ts +86 -0
  167. package/dist/lib/config-keys.js +193 -0
  168. package/dist/lib/config-machine-keys.d.ts +12 -0
  169. package/dist/lib/config-machine-keys.js +17 -0
  170. package/dist/lib/config-transfer.js +3 -4
  171. package/dist/lib/crabbox/cli.d.ts +2 -2
  172. package/dist/lib/crabbox/cli.js +3 -3
  173. package/dist/lib/daemon-health.d.ts +22 -0
  174. package/dist/lib/daemon-health.js +33 -3
  175. package/dist/lib/daemon-services.d.ts +50 -0
  176. package/dist/lib/daemon-services.js +147 -0
  177. package/dist/lib/daemon-ticks.d.ts +35 -66
  178. package/dist/lib/daemon-ticks.js +77 -159
  179. package/dist/lib/daemon.d.ts +72 -4
  180. package/dist/lib/daemon.js +792 -202
  181. package/dist/lib/deeplink/register.d.ts +49 -0
  182. package/dist/lib/deeplink/register.js +253 -0
  183. package/dist/lib/deeplink/url.d.ts +34 -0
  184. package/dist/lib/deeplink/url.js +78 -0
  185. package/dist/lib/device-config.d.ts +124 -29
  186. package/dist/lib/device-config.js +346 -141
  187. package/dist/lib/devices/config-migration.d.ts +42 -0
  188. package/dist/lib/devices/config-migration.js +203 -0
  189. package/dist/lib/devices/connect.js +14 -7
  190. package/dist/lib/devices/doctor-findings.d.ts +4 -1
  191. package/dist/lib/devices/doctor-findings.js +20 -1
  192. package/dist/lib/devices/harness-inventory.d.ts +11 -2
  193. package/dist/lib/devices/harness-inventory.js +0 -0
  194. package/dist/lib/devices/health.d.ts +1 -1
  195. package/dist/lib/devices/health.js +1 -1
  196. package/dist/lib/devices/pending.d.ts +22 -1
  197. package/dist/lib/devices/pending.js +67 -2
  198. package/dist/lib/devices/registry.d.ts +0 -25
  199. package/dist/lib/devices/registry.js +2 -83
  200. package/dist/lib/devices/resolve-profile.d.ts +20 -0
  201. package/dist/lib/devices/resolve-profile.js +44 -0
  202. package/dist/lib/devices/rollout-verify.d.ts +101 -0
  203. package/dist/lib/devices/rollout-verify.js +193 -0
  204. package/dist/lib/devices/ssh-config.js +10 -6
  205. package/dist/lib/event-families.d.ts +28 -0
  206. package/dist/lib/event-families.js +159 -0
  207. package/dist/lib/event-stream.d.ts +9 -1
  208. package/dist/lib/event-stream.js +26 -9
  209. package/dist/lib/events.d.ts +9 -1
  210. package/dist/lib/events.js +21 -6
  211. package/dist/lib/exec.d.ts +30 -0
  212. package/dist/lib/exec.js +220 -122
  213. package/dist/lib/feed-broadcast.d.ts +25 -0
  214. package/dist/lib/feed-broadcast.js +33 -0
  215. package/dist/lib/feed.d.ts +1 -1
  216. package/dist/lib/feed.js +12 -2
  217. package/dist/lib/fleet/capture.js +15 -0
  218. package/dist/lib/fleet/manifest.js +9 -0
  219. package/dist/lib/fleet/types.d.ts +9 -0
  220. package/dist/lib/fleet-status.js +10 -8
  221. package/dist/lib/git.d.ts +20 -6
  222. package/dist/lib/git.js +121 -17
  223. package/dist/lib/hosts/dispatch.d.ts +8 -3
  224. package/dist/lib/hosts/dispatch.js +29 -3
  225. package/dist/lib/hosts/logs.d.ts +2 -2
  226. package/dist/lib/hosts/logs.js +2 -2
  227. package/dist/lib/hosts/option.js +1 -1
  228. package/dist/lib/hosts/passthrough.d.ts +2 -3
  229. package/dist/lib/hosts/passthrough.js +10 -24
  230. package/dist/lib/hosts/progress.js +2 -2
  231. package/dist/lib/hosts/providers/devices.d.ts +3 -3
  232. package/dist/lib/hosts/providers/devices.js +18 -12
  233. package/dist/lib/hosts/ready.d.ts +5 -1
  234. package/dist/lib/hosts/ready.js +9 -3
  235. package/dist/lib/hosts/reconcile.d.ts +2 -2
  236. package/dist/lib/hosts/reconcile.js +2 -2
  237. package/dist/lib/hosts/registry.js +14 -9
  238. package/dist/lib/hosts/remote-cmd.js +1 -1
  239. package/dist/lib/hosts/remote-os.d.ts +9 -6
  240. package/dist/lib/hosts/remote-os.js +13 -6
  241. package/dist/lib/hosts/routing-flag.d.ts +23 -0
  242. package/dist/lib/hosts/routing-flag.js +41 -0
  243. package/dist/lib/hosts/run-target.js +1 -1
  244. package/dist/lib/hosts/session-index.js +1 -1
  245. package/dist/lib/hosts/tasks.d.ts +6 -6
  246. package/dist/lib/hosts/tasks.js +4 -4
  247. package/dist/lib/hosts/types.js +1 -2
  248. package/dist/lib/installations/resolve.js +2 -8
  249. package/dist/lib/isolation-boundary-report.js +0 -1
  250. package/dist/lib/linear-cache.d.ts +7 -0
  251. package/dist/lib/linear-cache.js +31 -4
  252. package/dist/lib/linear-project-counts.d.ts +1 -1
  253. package/dist/lib/linear-project-counts.js +2 -3
  254. package/dist/lib/linear-projects.js +1 -1
  255. package/dist/lib/loop.d.ts +2 -2
  256. package/dist/lib/loop.js +1 -1
  257. package/dist/lib/mailbox-target.d.ts +1 -1
  258. package/dist/lib/mailbox-target.js +1 -1
  259. package/dist/lib/manifest.js +7 -4
  260. package/dist/lib/menubar/MenubarHelper.app/Contents/CodeResources +0 -0
  261. package/dist/lib/menubar/MenubarHelper.app/Contents/MacOS/MenubarHelper +0 -0
  262. package/dist/lib/menubar/snapshot.d.ts +3 -2
  263. package/dist/lib/menubar/snapshot.js +6 -2
  264. package/dist/lib/migrate-fold.d.ts +33 -0
  265. package/dist/lib/migrate-fold.js +130 -0
  266. package/dist/lib/migrate.d.ts +34 -34
  267. package/dist/lib/migrate.js +106 -128
  268. package/dist/lib/model-tier-overrides.d.ts +1 -1
  269. package/dist/lib/model-tier-overrides.js +15 -2
  270. package/dist/lib/monitors/config.d.ts +17 -3
  271. package/dist/lib/monitors/config.js +52 -18
  272. package/dist/lib/monitors/engine.d.ts +32 -1
  273. package/dist/lib/monitors/engine.js +94 -11
  274. package/dist/lib/monitors/fingerprint.d.ts +46 -0
  275. package/dist/lib/monitors/fingerprint.js +100 -0
  276. package/dist/lib/monitors/remote.d.ts +47 -0
  277. package/dist/lib/monitors/remote.js +81 -0
  278. package/dist/lib/monitors/state.d.ts +39 -0
  279. package/dist/lib/monitors/state.js +56 -0
  280. package/dist/lib/onepassword.d.ts +17 -0
  281. package/dist/lib/onepassword.js +52 -22
  282. package/dist/lib/open-url.js +1 -1
  283. package/dist/lib/picker.d.ts +14 -2
  284. package/dist/lib/picker.js +35 -13
  285. package/dist/lib/placement.d.ts +1 -1
  286. package/dist/lib/placement.js +1 -1
  287. package/dist/lib/pr-land-detach.d.ts +32 -0
  288. package/dist/lib/pr-land-detach.js +79 -0
  289. package/dist/lib/profiles-presets.js +13 -0
  290. package/dist/lib/profiles.d.ts +2 -0
  291. package/dist/lib/profiles.js +44 -1
  292. package/dist/lib/project-focus.d.ts +1 -1
  293. package/dist/lib/project-focus.js +1 -1
  294. package/dist/lib/project-key.d.ts +17 -0
  295. package/dist/lib/project-key.js +26 -0
  296. package/dist/lib/project-probe.d.ts +4 -1
  297. package/dist/lib/project-probe.js +5 -4
  298. package/dist/lib/project-resources.js +2 -18
  299. package/dist/lib/project-root.d.ts +16 -0
  300. package/dist/lib/project-root.js +20 -2
  301. package/dist/lib/projects.d.ts +20 -1
  302. package/dist/lib/projects.js +78 -1
  303. package/dist/lib/refresh-coordinator.d.ts +24 -0
  304. package/dist/lib/refresh-coordinator.js +52 -0
  305. package/dist/lib/registry.d.ts +2 -2
  306. package/dist/lib/registry.js +1 -1
  307. package/dist/lib/resource-aliases.d.ts +13 -0
  308. package/dist/lib/resource-aliases.js +26 -0
  309. package/dist/lib/resources/types.d.ts +1 -1
  310. package/dist/lib/resources.d.ts +16 -0
  311. package/dist/lib/resources.js +66 -10
  312. package/dist/lib/rotate.d.ts +3 -4
  313. package/dist/lib/rotate.js +4 -5
  314. package/dist/lib/routine-activation.d.ts +22 -2
  315. package/dist/lib/routine-activation.js +63 -16
  316. package/dist/lib/routine-context.d.ts +9 -2
  317. package/dist/lib/routine-context.js +21 -6
  318. package/dist/lib/routines-project.d.ts +58 -48
  319. package/dist/lib/routines-project.js +190 -159
  320. package/dist/lib/routines.d.ts +41 -6
  321. package/dist/lib/routines.js +92 -34
  322. package/dist/lib/run-defaults.d.ts +5 -0
  323. package/dist/lib/run-defaults.js +11 -1
  324. package/dist/lib/runner.d.ts +10 -8
  325. package/dist/lib/runner.js +122 -39
  326. package/dist/lib/secrets/Agents CLI.app/Contents/CodeResources +0 -0
  327. package/dist/lib/secrets/Agents CLI.app/Contents/MacOS/Agents CLI +0 -0
  328. package/dist/lib/secrets/agent.d.ts +10 -3
  329. package/dist/lib/secrets/agent.js +43 -8
  330. package/dist/lib/secrets/bundles.d.ts +1 -0
  331. package/dist/lib/secrets/bundles.js +92 -80
  332. package/dist/lib/secrets/index.js +32 -9
  333. package/dist/lib/secrets/install-helper.d.ts +4 -4
  334. package/dist/lib/secrets/install-helper.js +4 -4
  335. package/dist/lib/secrets/push.d.ts +40 -6
  336. package/dist/lib/secrets/push.js +58 -11
  337. package/dist/lib/secrets/read-backoff.d.ts +1 -1
  338. package/dist/lib/secrets/read-backoff.js +1 -1
  339. package/dist/lib/secrets/remote.d.ts +24 -0
  340. package/dist/lib/secrets/remote.js +54 -4
  341. package/dist/lib/self-update.d.ts +108 -0
  342. package/dist/lib/self-update.js +276 -1
  343. package/dist/lib/session/active.d.ts +89 -5
  344. package/dist/lib/session/active.js +165 -10
  345. package/dist/lib/session/actor-sidecar.d.ts +1 -1
  346. package/dist/lib/session/actor-sidecar.js +2 -1
  347. package/dist/lib/session/db.d.ts +176 -2
  348. package/dist/lib/session/db.js +484 -17
  349. package/dist/lib/session/discover.js +27 -4
  350. package/dist/lib/session/hook-sessions.js +2 -2
  351. package/dist/lib/session/host-link.d.ts +2 -2
  352. package/dist/lib/session/host-link.js +2 -2
  353. package/dist/lib/session/pid-registry.d.ts +21 -0
  354. package/dist/lib/session/pid-registry.js +57 -0
  355. package/dist/lib/session/remote-active.js +15 -1
  356. package/dist/lib/session/remote.js +2 -2
  357. package/dist/lib/session/session-cache.d.ts +14 -7
  358. package/dist/lib/session/session-cache.js +51 -9
  359. package/dist/lib/session/state.d.ts +2 -2
  360. package/dist/lib/session/state.js +1 -1
  361. package/dist/lib/session/sync/config.d.ts +10 -10
  362. package/dist/lib/session/sync/config.js +10 -10
  363. package/dist/lib/session/sync/r2.d.ts +34 -0
  364. package/dist/lib/session/sync/r2.js +123 -0
  365. package/dist/lib/session/throughput.d.ts +1 -1
  366. package/dist/lib/session/throughput.js +1 -1
  367. package/dist/lib/session/types.d.ts +23 -1
  368. package/dist/lib/session/types.js +15 -0
  369. package/dist/lib/session/viewing-in.d.ts +1 -1
  370. package/dist/lib/session/viewing-in.js +1 -1
  371. package/dist/lib/session/watch.d.ts +101 -0
  372. package/dist/lib/session/watch.js +242 -0
  373. package/dist/lib/share/config.d.ts +4 -0
  374. package/dist/lib/share/config.js +1 -0
  375. package/dist/lib/share/delete.d.ts +93 -0
  376. package/dist/lib/share/delete.js +127 -0
  377. package/dist/lib/share/provision.d.ts +38 -0
  378. package/dist/lib/share/provision.js +50 -0
  379. package/dist/lib/share/publish.d.ts +40 -1
  380. package/dist/lib/share/publish.js +116 -3
  381. package/dist/lib/share/worker-template.js +71 -6
  382. package/dist/lib/shims.d.ts +17 -3
  383. package/dist/lib/shims.js +136 -27
  384. package/dist/lib/signin-badge.js +3 -2
  385. package/dist/lib/skills.js +2 -0
  386. package/dist/lib/smart-launch.d.ts +8 -8
  387. package/dist/lib/smart-launch.js +80 -59
  388. package/dist/lib/ssh-exec.d.ts +1 -1
  389. package/dist/lib/ssh-exec.js +1 -1
  390. package/dist/lib/staleness/prune.d.ts +88 -0
  391. package/dist/lib/staleness/prune.js +69 -0
  392. package/dist/lib/staleness/registry.d.ts +1 -1
  393. package/dist/lib/staleness/writers/commands.js +34 -2
  394. package/dist/lib/staleness/writers/hooks.js +16 -0
  395. package/dist/lib/staleness/writers/kinds.d.ts +6 -0
  396. package/dist/lib/staleness/writers/skills.js +19 -0
  397. package/dist/lib/staleness/writers/subagents.d.ts +2 -3
  398. package/dist/lib/staleness/writers/subagents.js +0 -4
  399. package/dist/lib/staleness/writers/types.d.ts +32 -0
  400. package/dist/lib/startup/command-registry.d.ts +6 -12
  401. package/dist/lib/startup/command-registry.js +14 -31
  402. package/dist/lib/startup/dev-build.d.ts +10 -0
  403. package/dist/lib/startup/dev-build.js +13 -1
  404. package/dist/lib/startup/spellcheck.d.ts +18 -0
  405. package/dist/lib/startup/spellcheck.js +45 -0
  406. package/dist/lib/state.d.ts +36 -9
  407. package/dist/lib/state.js +96 -46
  408. package/dist/lib/subagents-registry.d.ts +0 -7
  409. package/dist/lib/subagents-registry.js +38 -65
  410. package/dist/lib/subagents.d.ts +0 -33
  411. package/dist/lib/subagents.js +0 -75
  412. package/dist/lib/sync-umbrella.js +1 -1
  413. package/dist/lib/teams/agents.d.ts +41 -1
  414. package/dist/lib/teams/agents.js +187 -9
  415. package/dist/lib/teams/api.d.ts +11 -1
  416. package/dist/lib/teams/api.js +11 -2
  417. package/dist/lib/teams/delivery.d.ts +41 -0
  418. package/dist/lib/teams/delivery.js +60 -0
  419. package/dist/lib/teams/registry.d.ts +14 -0
  420. package/dist/lib/teams/registry.js +51 -1
  421. package/dist/lib/teams/remoteWorktree.d.ts +19 -0
  422. package/dist/lib/teams/remoteWorktree.js +29 -0
  423. package/dist/lib/teams/scheduler.d.ts +1 -1
  424. package/dist/lib/teams/scheduler.js +1 -1
  425. package/dist/lib/teams/worktree.d.ts +24 -0
  426. package/dist/lib/teams/worktree.js +42 -0
  427. package/dist/lib/terminal/backends/vscodium-agent.d.ts +10 -1
  428. package/dist/lib/terminal/backends/vscodium-agent.js +16 -5
  429. package/dist/lib/terminal/engine.d.ts +4 -0
  430. package/dist/lib/terminal/engine.js +8 -2
  431. package/dist/lib/terminal/types.d.ts +21 -2
  432. package/dist/lib/testdata/refresh-coordinator-worker.d.ts +1 -0
  433. package/dist/lib/testdata/refresh-coordinator-worker.js +23 -0
  434. package/dist/lib/tickets/list.d.ts +53 -0
  435. package/dist/lib/tickets/list.js +153 -0
  436. package/dist/lib/tmux/orphan-reap.d.ts +320 -0
  437. package/dist/lib/tmux/orphan-reap.js +644 -0
  438. package/dist/lib/tmux/session.d.ts +68 -3
  439. package/dist/lib/tmux/session.js +95 -5
  440. package/dist/lib/triggers/handlers.d.ts +20 -0
  441. package/dist/lib/triggers/handlers.js +6 -1
  442. package/dist/lib/types.d.ts +46 -34
  443. package/dist/lib/usage-fleet.d.ts +32 -0
  444. package/dist/lib/usage-fleet.js +125 -0
  445. package/dist/lib/usage-refresh.d.ts +3 -3
  446. package/dist/lib/usage-refresh.js +19 -16
  447. package/dist/lib/usage.d.ts +51 -47
  448. package/dist/lib/usage.js +145 -153
  449. package/dist/lib/version-duplicates.js +2 -2
  450. package/dist/lib/versions.d.ts +56 -13
  451. package/dist/lib/versions.js +195 -45
  452. package/dist/lib/watchdog/log.d.ts +1 -1
  453. package/dist/lib/watchdog/log.js +3 -3
  454. package/dist/lib/watchdog/rotate.d.ts +6 -6
  455. package/dist/lib/watchdog/rotate.js +6 -6
  456. package/dist/lib/workflows.d.ts +1 -1
  457. package/dist/lib/yaml-io.d.ts +47 -0
  458. package/dist/lib/yaml-io.js +55 -0
  459. package/package.json +2 -1
  460. package/scripts/install-helper.js +2 -2
  461. package/scripts/postinstall.js +23 -20
  462. package/dist/commands/defaults.d.ts +0 -7
  463. package/dist/commands/defaults.js +0 -107
  464. package/dist/commands/export.d.ts +0 -11
  465. package/dist/commands/export.js +0 -215
  466. package/dist/commands/helper.d.ts +0 -12
  467. package/dist/commands/helper.js +0 -87
  468. package/dist/commands/hosts.d.ts +0 -11
  469. package/dist/commands/hosts.js +0 -330
  470. package/dist/commands/lock.d.ts +0 -12
  471. package/dist/commands/lock.js +0 -70
  472. package/dist/commands/pull.d.ts +0 -17
  473. package/dist/commands/pull.js +0 -39
  474. package/dist/commands/push.d.ts +0 -14
  475. package/dist/commands/push.js +0 -30
  476. package/dist/commands/wallet.d.ts +0 -20
  477. package/dist/commands/wallet.js +0 -216
  478. package/dist/commands/worktree.d.ts +0 -19
  479. package/dist/commands/worktree.js +0 -272
  480. package/dist/lib/account-labels.d.ts +0 -24
  481. package/dist/lib/account-labels.js +0 -72
  482. package/dist/lib/auto-dispatch-linear.d.ts +0 -18
  483. package/dist/lib/auto-dispatch-linear.js +0 -107
  484. package/dist/lib/auto-dispatch-provider.d.ts +0 -10
  485. package/dist/lib/auto-dispatch-provider.js +0 -30
  486. package/dist/lib/auto-dispatch.d.ts +0 -93
  487. package/dist/lib/auto-dispatch.js +0 -128
  488. package/dist/lib/export.d.ts +0 -72
  489. package/dist/lib/export.js +0 -269
  490. package/dist/lib/lock.d.ts +0 -93
  491. package/dist/lib/lock.js +0 -207
  492. package/dist/lib/wallet/index.d.ts +0 -78
  493. package/dist/lib/wallet/index.js +0 -253
@@ -2,10 +2,9 @@
2
2
  * Primitives for moving an agent config directory across the agents-cli boundary.
3
3
  *
4
4
  * Both helpers were part of {@link ./uninstall.ts} and are unchanged — teardown was
5
- * simply the first caller. `agents export` needs the same two operations (relocate a
6
- * directory that may sit on another volume; copy one without dragging `~/.agents`
7
- * symlinks along), so they live here rather than being duplicated or imported out of
8
- * a module named for teardown.
5
+ * simply the first caller. Other config-transfer paths need the same operations, so
6
+ * they live here rather than being duplicated or imported out of a module named for
7
+ * teardown.
9
8
  */
10
9
  import * as fs from 'fs';
11
10
  import * as path from 'path';
@@ -5,7 +5,7 @@
5
5
  * checkout, and runs commands on them. We use it as the transport for
6
6
  * `agents run --lease`: warm a box → run the agent on it via `crabbox run` →
7
7
  * stop it. crabbox owns the SSH connection, so agents-cli never needs a direct
8
- * ssh target (unlike the `agents hosts` model).
8
+ * ssh target (unlike the host-dispatch model).
9
9
  *
10
10
  * crabbox talks to its cloud provider's API for list/status/warmup/stop, which
11
11
  * needs a provider token (e.g. HCLOUD_TOKEN) in the environment. We inject it
@@ -242,7 +242,7 @@ export declare function reapSafeOrphans(boxes: CrabboxBox[], nowSecs: number): C
242
242
  /**
243
243
  * List reap-safe orphans and (unless `dryRun`) stop them. Returns the candidates
244
244
  * considered and the slugs actually stopped. Best-effort per box — a stop failure
245
- * is skipped, never thrown. Backs `agents lease gc` and the 403 auto-reap opt-in.
245
+ * is skipped, never thrown. Backs `agents devices lease gc` and the 403 auto-reap opt-in.
246
246
  */
247
247
  export declare function reapOrphans(opts?: CrabboxOptions & {
248
248
  nowSecs?: number;
@@ -5,7 +5,7 @@
5
5
  * checkout, and runs commands on them. We use it as the transport for
6
6
  * `agents run --lease`: warm a box → run the agent on it via `crabbox run` →
7
7
  * stop it. crabbox owns the SSH connection, so agents-cli never needs a direct
8
- * ssh target (unlike the `agents hosts` model).
8
+ * ssh target (unlike the host-dispatch model).
9
9
  *
10
10
  * crabbox talks to its cloud provider's API for list/status/warmup/stop, which
11
11
  * needs a provider token (e.g. HCLOUD_TOKEN) in the environment. We inject it
@@ -394,7 +394,7 @@ export async function crabboxWarmup(opts = {}) {
394
394
  if (orphans.length) {
395
395
  hint =
396
396
  ` ${orphans.length} expired, idle box(es) are holding the quota — free them with ` +
397
- `\`agents lease gc\` (or \`crabbox stop ${orphans[0].slug}\`).`;
397
+ `\`agents devices lease gc\` (or \`crabbox stop ${orphans[0].slug}\`).`;
398
398
  }
399
399
  }
400
400
  catch {
@@ -586,7 +586,7 @@ export function reapSafeOrphans(boxes, nowSecs) {
586
586
  /**
587
587
  * List reap-safe orphans and (unless `dryRun`) stop them. Returns the candidates
588
588
  * considered and the slugs actually stopped. Best-effort per box — a stop failure
589
- * is skipped, never thrown. Backs `agents lease gc` and the 403 auto-reap opt-in.
589
+ * is skipped, never thrown. Backs `agents devices lease gc` and the 403 auto-reap opt-in.
590
590
  */
591
591
  export function reapOrphans(opts = {}) {
592
592
  const nowSecs = opts.nowSecs ?? Math.floor(Date.now() / 1000);
@@ -1,6 +1,15 @@
1
1
  /** Stable subsystem identifiers shared by the daemon (writer) and `agents daemon` (reader). */
2
2
  export declare const SUBSYSTEM_SECRETS_BROKER = "secrets-broker";
3
3
  export declare const SUBSYSTEM_BROWSER_IPC = "browser-ipc";
4
+ /**
5
+ * Daemon startup itself (RUSH-2418). Unlike the two above, this record is
6
+ * written from BOTH sides: the launching CLI records a start that produced no
7
+ * live daemon, and the daemon records its own successful claim. Its
8
+ * `consecutiveFailures` is what `ensureDaemonStarted` reads to open the
9
+ * auto-start circuit breaker, so a daemon dying on boot stops being relaunched
10
+ * by every foreground command that happens to want one.
11
+ */
12
+ export declare const SUBSYSTEM_DAEMON_START = "daemon-start";
4
13
  /** One subsystem's health as of the last time it reported in. */
5
14
  export interface SubsystemHealth {
6
15
  /** Stable identifier, e.g. 'secrets-broker', 'browser-ipc'. */
@@ -18,6 +27,19 @@ export interface SubsystemHealth {
18
27
  export declare function recordSubsystemOk(subsystem: string, at?: string): void;
19
28
  /** Record a subsystem failure — bumps the consecutive-failure streak. */
20
29
  export declare function recordSubsystemError(subsystem: string, error: string, at?: string): void;
30
+ /**
31
+ * Refine the reason on an already-counted failure, without bumping the streak.
32
+ *
33
+ * Exists because a start is counted BEFORE its outcome is known (RUSH-2418):
34
+ * the launcher marks the attempt, then replaces the provisional reason with the
35
+ * real one if it fails outright. Calling `recordSubsystemError` a second time
36
+ * would count one failed start as two.
37
+ *
38
+ * Describing a failure that was never counted would be a lie in the other
39
+ * direction — a `lastError` with `consecutiveFailures: 0` — so an unreported
40
+ * subsystem is left alone rather than given a blank record to decorate.
41
+ */
42
+ export declare function recordSubsystemErrorReason(subsystem: string, error: string, at?: string): void;
21
43
  /** Read one subsystem's health record, or null if it has never reported in. */
22
44
  export declare function readSubsystemHealth(subsystem: string): SubsystemHealth | null;
23
45
  /** Read every subsystem's health record, sorted by subsystem name. */
@@ -11,9 +11,10 @@
11
11
  *
12
12
  * Scheduled routines get this for free once migrated onto `agents routines`
13
13
  * (their run history already carries success/failure — `agents routines
14
- * stats`). This module exists for the two subsystems that predate routines
15
- * and have no run history of their own: the secrets broker and the browser
16
- * IPC server.
14
+ * stats`). This module exists for the subsystems that predate routines and have
15
+ * no run history of their own: the secrets broker and the browser IPC server,
16
+ * plus the daemon's own startup (`SUBSYSTEM_DAEMON_START`, RUSH-2418) — which
17
+ * is the one record that also GATES behaviour rather than only reporting it.
17
18
  *
18
19
  * File-backed (one JSON object keyed by subsystem name) rather than in-memory
19
20
  * because `agents daemon status` runs as a SEPARATE process from the daemon —
@@ -26,6 +27,15 @@ const HEALTH_FILE = 'health.json';
26
27
  /** Stable subsystem identifiers shared by the daemon (writer) and `agents daemon` (reader). */
27
28
  export const SUBSYSTEM_SECRETS_BROKER = 'secrets-broker';
28
29
  export const SUBSYSTEM_BROWSER_IPC = 'browser-ipc';
30
+ /**
31
+ * Daemon startup itself (RUSH-2418). Unlike the two above, this record is
32
+ * written from BOTH sides: the launching CLI records a start that produced no
33
+ * live daemon, and the daemon records its own successful claim. Its
34
+ * `consecutiveFailures` is what `ensureDaemonStarted` reads to open the
35
+ * auto-start circuit breaker, so a daemon dying on boot stops being relaunched
36
+ * by every foreground command that happens to want one.
37
+ */
38
+ export const SUBSYSTEM_DAEMON_START = 'daemon-start';
29
39
  function getHealthPath() {
30
40
  return path.join(getDaemonDir(), HEALTH_FILE);
31
41
  }
@@ -74,6 +84,26 @@ export function recordSubsystemError(subsystem, error, at = new Date().toISOStri
74
84
  };
75
85
  writeAll(all);
76
86
  }
87
+ /**
88
+ * Refine the reason on an already-counted failure, without bumping the streak.
89
+ *
90
+ * Exists because a start is counted BEFORE its outcome is known (RUSH-2418):
91
+ * the launcher marks the attempt, then replaces the provisional reason with the
92
+ * real one if it fails outright. Calling `recordSubsystemError` a second time
93
+ * would count one failed start as two.
94
+ *
95
+ * Describing a failure that was never counted would be a lie in the other
96
+ * direction — a `lastError` with `consecutiveFailures: 0` — so an unreported
97
+ * subsystem is left alone rather than given a blank record to decorate.
98
+ */
99
+ export function recordSubsystemErrorReason(subsystem, error, at = new Date().toISOString()) {
100
+ const all = readAll();
101
+ const existing = all[subsystem];
102
+ if (!existing)
103
+ return;
104
+ all[subsystem] = { ...existing, lastError: error, lastErrorAt: at };
105
+ writeAll(all);
106
+ }
77
107
  /** Read one subsystem's health record, or null if it has never reported in. */
78
108
  export function readSubsystemHealth(subsystem) {
79
109
  return readAll()[subsystem] ?? null;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Daemon service catalog + persistent toggle config.
3
+ *
4
+ * Defines the services the daemon hosts, loads their on/off state from
5
+ * ~/.agents/daemon/services.yaml, and exposes lightweight helpers so both the
6
+ * daemon and service clients (e.g. secrets) can check whether a service is
7
+ * enabled without pulling in the whole daemon lifecycle.
8
+ */
9
+ /** Every service the daemon can host. IDs are kebab-case and stable. */
10
+ export type DaemonServiceId = 'secrets-broker' | 'scheduler' | 'monitors' | 'browser-ipc' | 'self-heal' | 'keychain-reap' | 'account-state' | 'watchdog' | 'device-probe' | 'state-dir-check';
11
+ /** Human-readable metadata for each service. */
12
+ export interface DaemonServiceDef {
13
+ id: DaemonServiceId;
14
+ title: string;
15
+ description: string;
16
+ }
17
+ export declare const DAEMON_SERVICES: DaemonServiceDef[];
18
+ /** Stable order of service IDs. */
19
+ export declare const DAEMON_SERVICE_IDS: DaemonServiceId[];
20
+ /** Persistent service toggles. */
21
+ export interface DaemonServicesConfig {
22
+ services: Record<DaemonServiceId, boolean>;
23
+ }
24
+ /** Path to ~/.agents/daemon/services.yaml. */
25
+ export declare function getDaemonServicesConfigPath(): string;
26
+ /**
27
+ * Read the services config from disk. Missing or malformed files return the
28
+ * default (all services enabled). Never throws.
29
+ */
30
+ export declare function readDaemonServicesConfig(): DaemonServicesConfig;
31
+ /**
32
+ * Write the services config to disk, creating the daemon config dir if needed.
33
+ * Preserves unknown keys/ordering in the existing file when possible.
34
+ */
35
+ export declare function writeDaemonServicesConfig(cfg: DaemonServicesConfig): void;
36
+ /**
37
+ * Check whether a single service is enabled. Returns true (enabled) when the
38
+ * config file is missing or the ID is unknown, so disabling must be explicit.
39
+ */
40
+ export declare function isDaemonServiceEnabled(id: DaemonServiceId): boolean;
41
+ /**
42
+ * Toggle one service and persist. Returns the new config.
43
+ */
44
+ export declare function setDaemonServiceEnabled(id: DaemonServiceId, enabled: boolean): DaemonServicesConfig;
45
+ /**
46
+ * List every known service with its current enabled state and metadata.
47
+ */
48
+ export declare function listDaemonServiceStates(): Array<DaemonServiceDef & {
49
+ enabled: boolean;
50
+ }>;
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Daemon service catalog + persistent toggle config.
3
+ *
4
+ * Defines the services the daemon hosts, loads their on/off state from
5
+ * ~/.agents/daemon/services.yaml, and exposes lightweight helpers so both the
6
+ * daemon and service clients (e.g. secrets) can check whether a service is
7
+ * enabled without pulling in the whole daemon lifecycle.
8
+ */
9
+ import * as fs from 'fs';
10
+ import * as path from 'path';
11
+ import * as yaml from 'yaml';
12
+ import { getDaemonConfigDir } from './state.js';
13
+ import { atomicWriteFileSync } from './fs-atomic.js';
14
+ export const DAEMON_SERVICES = [
15
+ {
16
+ id: 'secrets-broker',
17
+ title: 'Secrets broker',
18
+ description: 'Hosts the keychain-backed secrets broker socket so unlocked bundles stay warm across agent runs.',
19
+ },
20
+ {
21
+ id: 'scheduler',
22
+ title: 'Routine scheduler',
23
+ description: 'Fires cron-scheduled routines and catches up missed fires.',
24
+ },
25
+ {
26
+ id: 'monitors',
27
+ title: 'Monitor engine',
28
+ description: 'Watches event sources and triggers monitor-driven routines.',
29
+ },
30
+ {
31
+ id: 'browser-ipc',
32
+ title: 'Browser IPC',
33
+ description: 'Keeps a supervised browser automation IPC socket available for sessions.',
34
+ },
35
+ {
36
+ id: 'self-heal',
37
+ title: 'Self-heal registry',
38
+ description: 'Repairs shims, PATH, shadowing, and resource drift on a schedule.',
39
+ },
40
+ {
41
+ id: 'keychain-reap',
42
+ title: 'Keychain reap',
43
+ description: 'Reaps orphaned keychain helpers and stuck agents processes.',
44
+ },
45
+ {
46
+ id: 'account-state',
47
+ title: 'Account state',
48
+ description: 'Refreshes account quota/usage and publishes the local fleet-status row.',
49
+ },
50
+ {
51
+ id: 'watchdog',
52
+ title: 'Watchdog',
53
+ description: 'Nudges stalled agent sessions on this host when opted in via watchdog.enabled.',
54
+ },
55
+ {
56
+ id: 'device-probe',
57
+ title: 'Device probe',
58
+ description: 'Discovers Tailscale devices and surfaces pending ones for registration.',
59
+ },
60
+ {
61
+ id: 'state-dir-check',
62
+ title: 'State-dir self-check',
63
+ description: 'Self-terminates the daemon if its state directory is removed.',
64
+ },
65
+ ];
66
+ /** Stable order of service IDs. */
67
+ export const DAEMON_SERVICE_IDS = DAEMON_SERVICES.map((s) => s.id);
68
+ function defaultServicesConfig() {
69
+ const services = {};
70
+ for (const id of DAEMON_SERVICE_IDS)
71
+ services[id] = true;
72
+ return { services };
73
+ }
74
+ /** Path to ~/.agents/daemon/services.yaml. */
75
+ export function getDaemonServicesConfigPath() {
76
+ return path.join(getDaemonConfigDir(), 'services.yaml');
77
+ }
78
+ /**
79
+ * Read the services config from disk. Missing or malformed files return the
80
+ * default (all services enabled). Never throws.
81
+ */
82
+ export function readDaemonServicesConfig() {
83
+ const cfg = defaultServicesConfig();
84
+ try {
85
+ const raw = fs.readFileSync(getDaemonServicesConfigPath(), 'utf-8');
86
+ const parsed = yaml.parse(raw);
87
+ if (parsed && typeof parsed === 'object' && parsed.services && typeof parsed.services === 'object') {
88
+ for (const id of DAEMON_SERVICE_IDS) {
89
+ const value = parsed.services[id];
90
+ if (typeof value === 'boolean')
91
+ cfg.services[id] = value;
92
+ }
93
+ }
94
+ }
95
+ catch {
96
+ // Missing or corrupt -> defaults.
97
+ }
98
+ return cfg;
99
+ }
100
+ /**
101
+ * Write the services config to disk, creating the daemon config dir if needed.
102
+ * Preserves unknown keys/ordering in the existing file when possible.
103
+ */
104
+ export function writeDaemonServicesConfig(cfg) {
105
+ const dir = getDaemonConfigDir();
106
+ fs.mkdirSync(dir, { recursive: true });
107
+ const filePath = getDaemonServicesConfigPath();
108
+ // Preserve any extra top-level fields the user may have added.
109
+ let preserved = {};
110
+ try {
111
+ const raw = fs.readFileSync(filePath, 'utf-8');
112
+ const parsed = yaml.parse(raw);
113
+ if (parsed && typeof parsed === 'object')
114
+ preserved = parsed;
115
+ }
116
+ catch {
117
+ // ignore
118
+ }
119
+ const services = {};
120
+ for (const id of DAEMON_SERVICE_IDS)
121
+ services[id] = cfg.services[id] ?? true;
122
+ const out = yaml.stringify({ ...preserved, services }, { sortMapEntries: false });
123
+ atomicWriteFileSync(filePath, out, 'utf-8');
124
+ }
125
+ /**
126
+ * Check whether a single service is enabled. Returns true (enabled) when the
127
+ * config file is missing or the ID is unknown, so disabling must be explicit.
128
+ */
129
+ export function isDaemonServiceEnabled(id) {
130
+ return readDaemonServicesConfig().services[id] !== false;
131
+ }
132
+ /**
133
+ * Toggle one service and persist. Returns the new config.
134
+ */
135
+ export function setDaemonServiceEnabled(id, enabled) {
136
+ const cfg = readDaemonServicesConfig();
137
+ cfg.services[id] = enabled;
138
+ writeDaemonServicesConfig(cfg);
139
+ return cfg;
140
+ }
141
+ /**
142
+ * List every known service with its current enabled state and metadata.
143
+ */
144
+ export function listDaemonServiceStates() {
145
+ const cfg = readDaemonServicesConfig();
146
+ return DAEMON_SERVICES.map((s) => ({ ...s, enabled: cfg.services[s.id] !== false }));
147
+ }
@@ -1,81 +1,50 @@
1
1
  /**
2
- * Daemon housekeeping ticks — one-shot bodies invoked by system routines.
2
+ * Daemon account-state tick bodies.
3
3
  *
4
- * RUSH-2353: these were ~15 hardcoded `setInterval` timers inside
5
- * `runDaemon()` (daemon.ts) a parallel, inferior reimplementation of the
6
- * routines system (no declaration, no run history, no pause/disable, no
7
- * device pin). Each function here is one migrated tick's *body*, unchanged in
8
- * behavior, now invoked as a detached one-shot process by a system routine's
9
- * `command:` (via the `agents __daemon-tick <name>` entrypoint in index.ts)
10
- * instead of an in-process interval closure.
4
+ * These two bodies are the `refreshUsage` / `refreshAuth` implementations the
5
+ * daemon's `account-state-service.ts` timers call directly, in-process, on a
6
+ * plain `setInterval` (usage every 60s, auth every ~3 min). They are NOT
7
+ * routines and are never fired through the scheduler the daemon owns usage and
8
+ * authentication health as first-party device state (RUSH-2451).
11
9
  *
12
- * Overlap protection that used to live in daemon.ts as a per-tick boolean
13
- * flag (`watchdogInFlight`, `probingDevices`, ...) is now provided by the
14
- * routine runner's launch claim (`withRoutineLaunchClaim` in runner.ts) two
15
- * fires of the same routine name never run concurrently.
16
- *
17
- * Output goes to `console.log`/`console.error`: each tick runs as a spawned
18
- * child of `executeCommandJobDetached`, which redirects the child's stdout to
19
- * the run's `stdout.log` — so this doubles as the run's log, readable via
20
- * `agents routines runs <name>`.
21
- */
22
- /** ~every 3 min. Mirrors the old WATCHDOG_TICK_MS. */
23
- export declare function runWatchdogTick(): Promise<void>;
24
- /**
25
- * Device probe: refresh registered devices' reachability and detect newly
26
- * appeared tailnet nodes, dropping a sentinel per pending device so the
27
- * menu-bar helper can surface "NEW DEVICES -> Register / Ignore". Refresh
28
- * mode never auto-registers a newcomer. A machine without tailscale is a
29
- * clean no-op. ~every 3 min.
30
- */
31
- export declare function runDeviceProbeTick(): Promise<void>;
32
- /**
33
- * tmux hook reconcile: retrofit the guarded `pane-died` hook onto managed
34
- * `agents run` sessions a pre-fix binary left with the old unconditional
35
- * hook. Non-destructive: set-hook only, never a kill or detach. ~every 5 min.
36
- */
37
- export declare function runTmuxReconcileTick(): Promise<void>;
38
- /**
39
- * Launch-health self-heal: probe that each agent's DEFAULT version actually
40
- * LAUNCHES, and repair a gutted install. Never repoints the global default
41
- * (allowDefaultSwitch: false) — a background default switch would be a
42
- * silent logout. ~every 6h.
43
- */
44
- export declare function runLaunchHealthTick(): Promise<void>;
10
+ * `refreshLocalFleetAuthState` is also called by `agents fleet`/`ssh` surfaces
11
+ * that need a fresh local auth snapshot on demand; provider-level work is guarded
12
+ * by the cross-process refresh lease so an explicit CLI refresh and the daemon
13
+ * timer converge on the same published result.
14
+ */
15
+ import type { FleetStatusRow } from './fleet-status.js';
16
+ import type { AuthProbeRow } from './auth-health.js';
17
+ export declare function isFreshFleetAuthSnapshot(value: {
18
+ row: FleetStatusRow;
19
+ authRows: AuthProbeRow[];
20
+ }, minimumCapturedAt: number): boolean;
45
21
  /**
46
22
  * Fleet cache warm: publish THIS host's row for the caches `agents fleet
47
23
  * status` / `agents devices list` read (PUBLISH-OWN / READ-UNION, RUSH-2061).
48
- * ~every 3 min.
49
24
  */
25
+ export declare function refreshLocalFleetAuthState(): Promise<{
26
+ row: FleetStatusRow;
27
+ authRows: import('./auth-health.js').AuthProbeRow[];
28
+ }>;
50
29
  export declare function runFleetCacheWarmTick(): Promise<void>;
51
- /**
52
- * Session-status cache warm (RUSH-2062): publish THIS host's local active
53
- * sessions so menubar / Factory / watchdog / CLI share one warm snapshot.
54
- * Publish-own only (no cross-host SSH). ~every 3 min.
55
- */
56
- export declare function runSessionCacheWarmTick(): Promise<void>;
57
30
  /**
58
31
  * Usage refresh: keep the usage cache the `agents run` router reads
59
32
  * (RUSH-2061, readOnly hot path) fresh, WITHOUT the hot path ever fetching.
60
- * This host is the sole writer for its own local accounts. ~every 60s
61
- * (USAGE_REFRESH_TICK_MS in usage-refresh.ts keep in sync).
33
+ * The configured primary host is the fleet's sole provider-facing writer;
34
+ * subscribers import its token-free derived cache.
62
35
  */
63
36
  export declare function runUsageRefreshTick(): Promise<void>;
64
37
  /**
65
- * Auto-dispatch: for any managed project that has opted in (autoDispatch:true
66
- * + maxAgents>0 in ~/.agents/factory/projects.json), pick up Linear tickets
67
- * delegated to an agent and still in Todo, and dispatch each through
68
- * agents-cli's own cloud-provider layer. OFF unless a project opts in; no
69
- * opted-in project or no LINEAR_API_KEY is a clean no-op. ~every 3 min.
38
+ * Active-sessions warm (RUSH-2062 / RUSH-2484): publish THIS host's live session
39
+ * rows so `agents sessions watch` (and the extension that tails it) receive
40
+ * journal deltas. Publish-own only no cross-host SSH.
70
41
  *
71
- * Migrated to a routine (RUSH-2353) so it inherits the `devices:` allowlist —
72
- * pin with `agents routines devices auto-dispatch --set <one>` to fix the
73
- * shared-input double-fire problem this job had hardcoded (every daemon on
74
- * the fleet polled the same Linear queue with no coordination).
75
- */
76
- export declare function runAutoDispatchTick(): Promise<void>;
77
- /** Registry: routine-facing name -> tick body. Keys match the shipped routine YAML names. */
78
- export declare const DAEMON_TICKS: Record<string, () => Promise<void>>;
79
- export declare const DAEMON_TICK_ROUTINE_NAMES: readonly string[];
80
- /** Run one named tick, or throw for an unknown name (fails the routine run loud). */
81
- export declare function runDaemonTick(name: string): Promise<void>;
42
+ * Cadence matches {@link DEFAULT_ACTIVE_CACHE_MAX_AGE_MS} so one-shot readers and
43
+ * long-lived watchers share one writer. Without this tick the journal has no
44
+ * continuous producer and Factory freezes after the initial cache snapshot.
45
+ */
46
+ export declare function runActiveSessionsWarmTick(opts?: {
47
+ gather?: () => Promise<import('./session/active.js').ActiveSession[]>;
48
+ }): Promise<{
49
+ sessions: number;
50
+ }>;