@phnx-labs/agents-cli 1.22.39 → 1.22.40

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 (554) hide show
  1. package/CHANGELOG.md +294 -0
  2. package/README.md +111 -70
  3. package/dist/bin/agents +0 -0
  4. package/dist/bootstrap.js +45 -26
  5. package/dist/browser.js +2 -2
  6. package/dist/cli/command-registry.d.ts +135 -0
  7. package/dist/cli/command-registry.js +260 -0
  8. package/dist/commands/accounts.d.ts +20 -0
  9. package/dist/commands/accounts.js +186 -25
  10. package/dist/commands/apply.d.ts +3 -3
  11. package/dist/commands/apply.js +20 -63
  12. package/dist/commands/browser.js +206 -94
  13. package/dist/commands/budget.d.ts +7 -6
  14. package/dist/commands/budget.js +8 -7
  15. package/dist/commands/cloud.js +17 -20
  16. package/dist/commands/commands.js +1 -1
  17. package/dist/commands/computer-actions.d.ts +1 -35
  18. package/dist/commands/computer-actions.js +13 -181
  19. package/dist/commands/computer.d.ts +28 -3
  20. package/dist/commands/computer.js +93 -65
  21. package/dist/commands/config.js +16 -3
  22. package/dist/commands/cost.d.ts +2 -1
  23. package/dist/commands/cost.js +7 -6
  24. package/dist/commands/daemon.js +151 -4
  25. package/dist/commands/detach.js +1 -1
  26. package/dist/commands/doctor.js +19 -11
  27. package/dist/commands/events.js +1 -1
  28. package/dist/commands/exec.d.ts +2 -50
  29. package/dist/commands/exec.js +160 -215
  30. package/dist/commands/factory.js +1 -1
  31. package/dist/commands/feed.d.ts +2 -2
  32. package/dist/commands/feed.js +9 -12
  33. package/dist/commands/fleet-capture.js +25 -27
  34. package/dist/commands/focus.d.ts +2 -3
  35. package/dist/commands/focus.js +34 -9
  36. package/dist/commands/go.js +15 -5
  37. package/dist/commands/harness.d.ts +3 -3
  38. package/dist/commands/harness.js +53 -5
  39. package/dist/commands/hooks.js +1 -1
  40. package/dist/commands/import.js +2 -2
  41. package/dist/commands/insights.d.ts +5 -5
  42. package/dist/commands/insights.js +15 -9
  43. package/dist/commands/inspect.d.ts +2 -3
  44. package/dist/commands/inspect.js +4 -16
  45. package/dist/commands/logs.d.ts +2 -2
  46. package/dist/commands/logs.js +9 -9
  47. package/dist/commands/mcp.js +2 -2
  48. package/dist/commands/memory.js +1 -1
  49. package/dist/commands/message.d.ts +1 -1
  50. package/dist/commands/message.js +7 -7
  51. package/dist/commands/mine.d.ts +11 -8
  52. package/dist/commands/mine.js +11 -10
  53. package/dist/commands/models.js +1 -1
  54. package/dist/commands/modes.js +1 -1
  55. package/dist/commands/monitors.js +23 -6
  56. package/dist/commands/output.d.ts +7 -6
  57. package/dist/commands/output.js +11 -10
  58. package/dist/commands/packages.js +4 -4
  59. package/dist/commands/perf.js +1 -1
  60. package/dist/commands/permissions.js +49 -32
  61. package/dist/commands/plugins.d.ts +1 -1
  62. package/dist/commands/plugins.js +3 -3
  63. package/dist/commands/profiles.d.ts +6 -9
  64. package/dist/commands/profiles.js +8 -321
  65. package/dist/commands/projects.d.ts +9 -0
  66. package/dist/commands/projects.js +140 -8
  67. package/dist/commands/prune.js +5 -13
  68. package/dist/commands/refresh-rules.js +1 -1
  69. package/dist/commands/repo.d.ts +5 -7
  70. package/dist/commands/repo.js +34 -18
  71. package/dist/commands/resource-view.js +4 -0
  72. package/dist/commands/resume.d.ts +11 -7
  73. package/dist/commands/resume.js +82 -98
  74. package/dist/commands/route.d.ts +12 -0
  75. package/dist/commands/route.js +261 -0
  76. package/dist/commands/routines.d.ts +2 -3
  77. package/dist/commands/routines.js +120 -145
  78. package/dist/commands/rules.js +1 -1
  79. package/dist/commands/run-account-picker.d.ts +1 -1
  80. package/dist/commands/run-account-picker.js +2 -2
  81. package/dist/commands/run-broadcast.d.ts +21 -0
  82. package/dist/commands/run-broadcast.js +89 -0
  83. package/dist/commands/run-cloud.js +1 -1
  84. package/dist/commands/secrets-vault.d.ts +10 -0
  85. package/dist/commands/{login.js → secrets-vault.js} +34 -14
  86. package/dist/commands/secrets.d.ts +4 -4
  87. package/dist/commands/secrets.js +72 -63
  88. package/dist/commands/sessions-backfill.js +1 -1
  89. package/dist/commands/sessions-browser.d.ts +1 -1
  90. package/dist/commands/sessions-browser.js +9 -5
  91. package/dist/commands/sessions-export.js +2 -2
  92. package/dist/commands/sessions-inject.js +4 -5
  93. package/dist/commands/sessions-migrate.js +16 -27
  94. package/dist/commands/sessions-picker.d.ts +13 -0
  95. package/dist/commands/sessions-picker.js +182 -8
  96. package/dist/commands/sessions-resume.d.ts +7 -3
  97. package/dist/commands/sessions-resume.js +81 -33
  98. package/dist/commands/sessions-stats.js +2 -2
  99. package/dist/commands/sessions.d.ts +75 -68
  100. package/dist/commands/sessions.js +142 -180
  101. package/dist/commands/setup-computer.js +1 -1
  102. package/dist/commands/setup-fleet.js +3 -0
  103. package/dist/commands/setup-mine.d.ts +7 -3
  104. package/dist/commands/setup-mine.js +13 -8
  105. package/dist/commands/setup-secrets.js +2 -2
  106. package/dist/commands/setup-watchdog.js +2 -2
  107. package/dist/commands/setup.js +7 -2
  108. package/dist/commands/share.d.ts +65 -0
  109. package/dist/commands/share.js +253 -20
  110. package/dist/commands/skills.js +3 -3
  111. package/dist/commands/snapshot.d.ts +2 -2
  112. package/dist/commands/snapshot.js +9 -9
  113. package/dist/commands/ssh.d.ts +1 -1
  114. package/dist/commands/ssh.js +186 -64
  115. package/dist/commands/subagents.js +1 -1
  116. package/dist/commands/sync.js +24 -9
  117. package/dist/commands/teams.d.ts +2 -2
  118. package/dist/commands/teams.js +9 -18
  119. package/dist/commands/tmux.js +5 -1
  120. package/dist/commands/trash.js +1 -1
  121. package/dist/commands/usage.d.ts +1 -1
  122. package/dist/commands/usage.js +2 -2
  123. package/dist/commands/utils.d.ts +4 -14
  124. package/dist/commands/utils.js +6 -27
  125. package/dist/commands/versions.js +2 -2
  126. package/dist/commands/view.d.ts +9 -77
  127. package/dist/commands/view.js +23 -8
  128. package/dist/commands/watchdog.js +1 -1
  129. package/dist/commands/webhook.js +11 -25
  130. package/dist/commands/workflows.js +1 -1
  131. package/dist/index.js +1 -1
  132. package/dist/lib/account-capabilities.d.ts +39 -0
  133. package/dist/lib/account-capabilities.js +59 -0
  134. package/dist/lib/account-catalog.js +1 -1
  135. package/dist/lib/account-registry.d.ts +66 -0
  136. package/dist/lib/account-registry.js +151 -5
  137. package/dist/lib/{rotate.d.ts → accounting/rotate.d.ts} +4 -4
  138. package/dist/lib/{rotate.js → accounting/rotate.js} +8 -8
  139. package/dist/lib/{usage.d.ts → accounting/usage.d.ts} +4 -4
  140. package/dist/lib/{usage.js → accounting/usage.js} +11 -11
  141. package/dist/lib/agent-spec/provider.js +1 -1
  142. package/dist/lib/agents.d.ts +72 -4
  143. package/dist/lib/agents.js +231 -199
  144. package/dist/lib/answer-router.d.ts +2 -2
  145. package/dist/lib/ask-classifier.d.ts +1 -1
  146. package/dist/lib/ask-classifier.js +1 -1
  147. package/dist/lib/audit/log.js +1 -1
  148. package/dist/lib/auth-health.d.ts +1 -1
  149. package/dist/lib/auth-health.js +2 -2
  150. package/dist/lib/brand.js +1 -1
  151. package/dist/lib/browser/caller-identity.d.ts +28 -0
  152. package/dist/lib/browser/caller-identity.js +156 -0
  153. package/dist/lib/browser/cdp.js +1 -1
  154. package/dist/lib/browser/drivers/ssh.d.ts +1 -1
  155. package/dist/lib/browser/drivers/ssh.js +2 -2
  156. package/dist/lib/browser/hygiene.d.ts +10 -2
  157. package/dist/lib/browser/hygiene.js +7 -4
  158. package/dist/lib/browser/ipc.d.ts +22 -2
  159. package/dist/lib/browser/ipc.js +185 -21
  160. package/dist/lib/browser/profiles.d.ts +67 -3
  161. package/dist/lib/browser/profiles.js +129 -7
  162. package/dist/lib/browser/remote-control.d.ts +2 -2
  163. package/dist/lib/browser/remote-control.js +3 -3
  164. package/dist/lib/browser/runtime-state.d.ts +79 -0
  165. package/dist/lib/browser/runtime-state.js +119 -1
  166. package/dist/lib/browser/service.d.ts +113 -1
  167. package/dist/lib/browser/service.js +454 -40
  168. package/dist/lib/browser/sessions-list.d.ts +2 -1
  169. package/dist/lib/browser/sessions-list.js +4 -13
  170. package/dist/lib/browser/types.d.ts +18 -0
  171. package/dist/lib/budget/config.js +1 -1
  172. package/dist/lib/budget/ledger.js +1 -1
  173. package/dist/lib/byok-usage.js +1 -1
  174. package/dist/lib/capabilities.js +3 -15
  175. package/dist/lib/catchup.d.ts +1 -1
  176. package/dist/lib/catchup.js +1 -1
  177. package/dist/lib/cloud/dispatch.js +1 -1
  178. package/dist/lib/cloud/host.d.ts +3 -3
  179. package/dist/lib/cloud/host.js +5 -5
  180. package/dist/lib/cloud/rush.d.ts +9 -21
  181. package/dist/lib/cloud/rush.js +33 -120
  182. package/dist/lib/cloud/types.d.ts +2 -2
  183. package/dist/lib/commands.js +3 -13
  184. package/dist/lib/computer/actions.d.ts +36 -0
  185. package/dist/lib/computer/actions.js +162 -0
  186. package/dist/lib/computer/dispatch.d.ts +2 -2
  187. package/dist/lib/computer/dispatch.js +2 -2
  188. package/dist/lib/computer/sessions-list.d.ts +3 -3
  189. package/dist/lib/computer/sessions-list.js +2 -2
  190. package/dist/lib/config-keys.d.ts +2 -1
  191. package/dist/lib/config-keys.js +8 -4
  192. package/dist/lib/config-machine-keys.d.ts +4 -2
  193. package/dist/lib/config-machine-keys.js +5 -2
  194. package/dist/lib/crabbox/lease.js +9 -1
  195. package/dist/lib/crabbox/runtimes.d.ts +32 -7
  196. package/dist/lib/crabbox/runtimes.js +72 -30
  197. package/dist/lib/{daemon.d.ts → daemon/daemon.d.ts} +59 -1
  198. package/dist/lib/{daemon.js → daemon/daemon.js} +237 -49
  199. package/dist/lib/daemon-services.d.ts +1 -1
  200. package/dist/lib/daemon-services.js +5 -0
  201. package/dist/lib/daemon-ticks.d.ts +25 -0
  202. package/dist/lib/daemon-ticks.js +31 -1
  203. package/dist/lib/daemon-webhooks.d.ts +102 -0
  204. package/dist/lib/daemon-webhooks.js +210 -0
  205. package/dist/lib/device-config.d.ts +85 -75
  206. package/dist/lib/device-config.js +279 -141
  207. package/dist/lib/devices/config-migration.d.ts +29 -34
  208. package/dist/lib/devices/config-migration.js +209 -130
  209. package/dist/lib/devices/connect.d.ts +2 -2
  210. package/dist/lib/devices/connect.js +2 -2
  211. package/dist/lib/devices/discovery-policy.d.ts +30 -0
  212. package/dist/lib/devices/discovery-policy.js +101 -0
  213. package/dist/lib/devices/fleet-inventory.js +8 -3
  214. package/dist/lib/devices/harness-inventory.d.ts +1 -1
  215. package/dist/lib/devices/harness-inventory.js +12 -3
  216. package/dist/lib/devices/known-hosts.js +1 -1
  217. package/dist/lib/devices/pool.d.ts +10 -5
  218. package/dist/lib/devices/pool.js +5 -7
  219. package/dist/lib/devices/registry.d.ts +1 -1
  220. package/dist/lib/devices/registry.js +1 -1
  221. package/dist/lib/devices/resolve-profile.d.ts +2 -2
  222. package/dist/lib/devices/resolve-profile.js +2 -2
  223. package/dist/lib/devices/resolve-target.d.ts +1 -1
  224. package/dist/lib/devices/resolve-target.js +4 -4
  225. package/dist/lib/devices/self-host.d.ts +1 -1
  226. package/dist/lib/devices/self-host.js +3 -3
  227. package/dist/lib/devices/ssh-config.d.ts +1 -1
  228. package/dist/lib/devices/stats-cache.js +1 -1
  229. package/dist/lib/devices/sync.d.ts +3 -1
  230. package/dist/lib/devices/sync.js +3 -3
  231. package/dist/lib/doctor-diff.js +4 -4
  232. package/dist/lib/drift-sync.js +2 -2
  233. package/dist/lib/drift.js +2 -2
  234. package/dist/lib/event-families.d.ts +1 -1
  235. package/dist/lib/event-stream.d.ts +1 -1
  236. package/dist/lib/event-stream.js +2 -2
  237. package/dist/lib/events-ingest.js +2 -2
  238. package/dist/lib/exec.d.ts +4 -4
  239. package/dist/lib/exec.js +11 -11
  240. package/dist/lib/factory/snapshot.d.ts +1 -1
  241. package/dist/lib/factory/snapshot.js +1 -1
  242. package/dist/lib/{activity.d.ts → feed/activity.d.ts} +1 -1
  243. package/dist/lib/{activity.js → feed/activity.js} +7 -7
  244. package/dist/lib/{events.d.ts → feed/events.d.ts} +2 -2
  245. package/dist/lib/{events.js → feed/events.js} +5 -5
  246. package/dist/lib/{feed.js → feed/feed.js} +4 -4
  247. package/dist/lib/feed-outcome.d.ts +1 -1
  248. package/dist/lib/feed-policy.d.ts +1 -1
  249. package/dist/lib/feed-policy.js +1 -1
  250. package/dist/lib/feed-post.d.ts +1 -1
  251. package/dist/lib/feed-post.js +1 -1
  252. package/dist/lib/feed-ranking.d.ts +1 -1
  253. package/dist/lib/fleet/apply.d.ts +0 -6
  254. package/dist/lib/fleet/apply.js +18 -45
  255. package/dist/lib/fleet/auth-sync.d.ts +16 -35
  256. package/dist/lib/fleet/auth-sync.js +16 -75
  257. package/dist/lib/fleet/capture.js +8 -6
  258. package/dist/lib/fleet/manifest.js +23 -11
  259. package/dist/lib/fleet/types.d.ts +19 -7
  260. package/dist/lib/fleet-cache.d.ts +1 -1
  261. package/dist/lib/fleet-cache.js +1 -1
  262. package/dist/lib/format.d.ts +19 -0
  263. package/dist/lib/format.js +44 -1
  264. package/dist/lib/friction-heuristics.d.ts +1 -1
  265. package/dist/lib/git.d.ts +24 -1
  266. package/dist/lib/git.js +82 -38
  267. package/dist/lib/heal.js +3 -3
  268. package/dist/lib/hooks.d.ts +18 -0
  269. package/dist/lib/hooks.js +113 -1
  270. package/dist/lib/hosts/credentials.d.ts +30 -10
  271. package/dist/lib/hosts/credentials.js +38 -26
  272. package/dist/lib/hosts/dispatch.d.ts +3 -3
  273. package/dist/lib/hosts/dispatch.js +3 -3
  274. package/dist/lib/hosts/option.d.ts +3 -3
  275. package/dist/lib/hosts/option.js +7 -8
  276. package/dist/lib/hosts/passthrough.d.ts +17 -17
  277. package/dist/lib/hosts/passthrough.js +67 -50
  278. package/dist/lib/hosts/providers/devices.d.ts +1 -1
  279. package/dist/lib/hosts/providers/devices.js +1 -1
  280. package/dist/lib/hosts/reconcile.d.ts +1 -1
  281. package/dist/lib/hosts/reconcile.js +1 -1
  282. package/dist/lib/hosts/reconnect.d.ts +1 -1
  283. package/dist/lib/hosts/reconnect.js +2 -2
  284. package/dist/lib/hosts/registry.d.ts +5 -5
  285. package/dist/lib/hosts/registry.js +5 -5
  286. package/dist/lib/hosts/remote-cmd.d.ts +10 -10
  287. package/dist/lib/hosts/remote-cmd.js +25 -18
  288. package/dist/lib/hosts/remote-os.d.ts +4 -4
  289. package/dist/lib/hosts/remote-os.js +4 -4
  290. package/dist/lib/hosts/remote-session-id.d.ts +2 -2
  291. package/dist/lib/hosts/remote-session-id.js +2 -2
  292. package/dist/lib/hosts/routing-flag.d.ts +3 -3
  293. package/dist/lib/hosts/routing-flag.js +4 -5
  294. package/dist/lib/hosts/run-target.d.ts +4 -4
  295. package/dist/lib/hosts/run-target.js +4 -4
  296. package/dist/lib/hosts/session-index.d.ts +2 -2
  297. package/dist/lib/hosts/session-index.js +1 -1
  298. package/dist/lib/hosts/session-marker.d.ts +1 -1
  299. package/dist/lib/hosts/session-marker.js +1 -1
  300. package/dist/lib/hosts/types.d.ts +2 -2
  301. package/dist/lib/hosts/types.js +2 -2
  302. package/dist/lib/import.js +1 -1
  303. package/dist/lib/{migrate.d.ts → installations/migrate.d.ts} +13 -1
  304. package/dist/lib/{migrate.js → installations/migrate.js} +160 -40
  305. package/dist/lib/installations/resolve.js +1 -1
  306. package/dist/lib/installations/strategies.js +1 -1
  307. package/dist/lib/installations/update.js +2 -2
  308. package/dist/lib/{versions.d.ts → installations/versions.d.ts} +12 -3
  309. package/dist/lib/{versions.js → installations/versions.js} +51 -31
  310. package/dist/lib/isolation-boundary-report.js +1 -1
  311. package/dist/lib/linear-projects.d.ts +28 -0
  312. package/dist/lib/linear-projects.js +30 -0
  313. package/dist/lib/loop.js +1 -1
  314. package/dist/lib/mailbox-gc.js +1 -1
  315. package/dist/lib/mailbox.js +1 -1
  316. package/dist/lib/mcp-registry.d.ts +62 -0
  317. package/dist/lib/mcp-registry.js +177 -0
  318. package/dist/lib/mcp.d.ts +5 -0
  319. package/dist/lib/mcp.js +124 -307
  320. package/dist/lib/menubar/MenubarHelper.app/Contents/CodeResources +0 -0
  321. package/dist/lib/menubar/MenubarHelper.app/Contents/MacOS/MenubarHelper +0 -0
  322. package/dist/lib/menubar/install-menubar.d.ts +7 -0
  323. package/dist/lib/menubar/install-menubar.js +24 -6
  324. package/dist/lib/menubar/snapshot.d.ts +7 -0
  325. package/dist/lib/menubar/snapshot.js +8 -6
  326. package/dist/lib/models.js +1 -1
  327. package/dist/lib/monitors/config.d.ts +12 -0
  328. package/dist/lib/monitors/config.js +3 -0
  329. package/dist/lib/monitors/dispatch.js +26 -5
  330. package/dist/lib/monitors/engine.js +10 -0
  331. package/dist/lib/monitors/sources/webhook.d.ts +1 -1
  332. package/dist/lib/monitors/state.d.ts +42 -0
  333. package/dist/lib/monitors/state.js +30 -0
  334. package/dist/lib/notify.d.ts +1 -1
  335. package/dist/lib/observe-aliases.d.ts +2 -2
  336. package/dist/lib/observe-aliases.js +2 -11
  337. package/dist/lib/output/git-output.js +2 -2
  338. package/dist/lib/overdue.d.ts +1 -1
  339. package/dist/lib/overdue.js +1 -1
  340. package/dist/lib/permissions-registry.d.ts +65 -0
  341. package/dist/lib/permissions-registry.js +599 -0
  342. package/dist/lib/permissions.d.ts +24 -13
  343. package/dist/lib/permissions.js +52 -271
  344. package/dist/lib/picker.d.ts +16 -0
  345. package/dist/lib/picker.js +33 -3
  346. package/dist/lib/placement.d.ts +1 -1
  347. package/dist/lib/placement.js +4 -4
  348. package/dist/lib/platform/paths.d.ts +8 -0
  349. package/dist/lib/platform/paths.js +11 -0
  350. package/dist/lib/platform/posixpath.js +3 -3
  351. package/dist/lib/{plugin-marketplace.d.ts → plugins/plugin-marketplace.d.ts} +1 -1
  352. package/dist/lib/{plugin-marketplace.js → plugins/plugin-marketplace.js} +2 -2
  353. package/dist/lib/{plugins.d.ts → plugins/plugins.d.ts} +1 -1
  354. package/dist/lib/{plugins.js → plugins/plugins.js} +7 -7
  355. package/dist/lib/{skills.d.ts → plugins/skills.d.ts} +1 -1
  356. package/dist/lib/{skills.js → plugins/skills.js} +7 -7
  357. package/dist/lib/pricing/cost.d.ts +1 -1
  358. package/dist/lib/pricing/cost.js +1 -1
  359. package/dist/lib/profiles-presets.d.ts +1 -1
  360. package/dist/lib/profiles-presets.js +1 -1
  361. package/dist/lib/profiles.js +2 -2
  362. package/dist/lib/project-import.js +4 -1
  363. package/dist/lib/project-launch.d.ts +1 -1
  364. package/dist/lib/project-launch.js +3 -3
  365. package/dist/lib/project-pull.d.ts +128 -0
  366. package/dist/lib/project-pull.js +384 -0
  367. package/dist/lib/project-root.d.ts +2 -2
  368. package/dist/lib/project-root.js +2 -2
  369. package/dist/lib/project-status.js +1 -1
  370. package/dist/lib/projects.d.ts +23 -0
  371. package/dist/lib/projects.js +29 -6
  372. package/dist/lib/refresh.d.ts +12 -1
  373. package/dist/lib/refresh.js +16 -9
  374. package/dist/lib/registry.d.ts +9 -2
  375. package/dist/lib/registry.js +11 -4
  376. package/dist/lib/resources.d.ts +2 -2
  377. package/dist/lib/resources.js +2 -2
  378. package/dist/lib/routers.d.ts +81 -0
  379. package/dist/lib/routers.js +153 -0
  380. package/dist/lib/routine-context.d.ts +1 -0
  381. package/dist/lib/routine-context.js +7 -2
  382. package/dist/lib/routine-notify-owner.d.ts +1 -1
  383. package/dist/lib/routine-notify.d.ts +1 -1
  384. package/dist/lib/routine-notify.js +1 -1
  385. package/dist/lib/routine-process-cleanup.d.ts +1 -1
  386. package/dist/lib/routine-readiness.d.ts +1 -1
  387. package/dist/lib/routine-readiness.js +11 -4
  388. package/dist/lib/routines-placement.d.ts +12 -2
  389. package/dist/lib/routines-placement.js +20 -3
  390. package/dist/lib/routines-project.d.ts +1 -1
  391. package/dist/lib/routines-project.js +1 -1
  392. package/dist/lib/rules/compile.d.ts +1 -0
  393. package/dist/lib/rules/compile.js +10 -2
  394. package/dist/lib/rules/rules.js +1 -1
  395. package/dist/lib/run-notify.js +1 -1
  396. package/dist/lib/runner.d.ts +80 -2
  397. package/dist/lib/runner.js +241 -62
  398. package/dist/lib/sandbox.d.ts +1 -1
  399. package/dist/lib/scheduler.d.ts +1 -1
  400. package/dist/lib/scheduler.js +1 -1
  401. package/dist/lib/{routines.d.ts → scheduling/routines.d.ts} +54 -9
  402. package/dist/lib/{routines.js → scheduling/routines.js} +173 -14
  403. package/dist/lib/secrets/Agents CLI.app/Contents/CodeResources +0 -0
  404. package/dist/lib/secrets/Agents CLI.app/Contents/MacOS/Agents CLI +0 -0
  405. package/dist/lib/secrets/agent.js +2 -2
  406. package/dist/lib/secrets/audit.js +1 -1
  407. package/dist/lib/secrets/bundles.d.ts +3 -3
  408. package/dist/lib/secrets/bundles.js +7 -7
  409. package/dist/lib/secrets/index.js +1 -1
  410. package/dist/lib/secrets/list-filter.d.ts +1 -1
  411. package/dist/lib/secrets/list-filter.js +2 -2
  412. package/dist/lib/secrets/push.d.ts +1 -1
  413. package/dist/lib/secrets/push.js +10 -12
  414. package/dist/lib/secrets/remote.d.ts +12 -10
  415. package/dist/lib/secrets/remote.js +21 -14
  416. package/dist/lib/secrets/vault.js +2 -2
  417. package/dist/lib/self-heal/checks/shadowing.js +1 -1
  418. package/dist/lib/self-heal/checks/shims.js +1 -1
  419. package/dist/lib/self-update.d.ts +39 -4
  420. package/dist/lib/self-update.js +78 -25
  421. package/dist/lib/serve/control.d.ts +1 -1
  422. package/dist/lib/serve/control.js +4 -4
  423. package/dist/lib/serve/data.d.ts +1 -1
  424. package/dist/lib/serve/data.js +1 -1
  425. package/dist/lib/serve/stream.js +1 -1
  426. package/dist/lib/service-manifest.d.ts +29 -0
  427. package/dist/lib/service-manifest.js +80 -0
  428. package/dist/lib/session/active.d.ts +59 -7
  429. package/dist/lib/session/active.js +158 -17
  430. package/dist/lib/session/bash-command.js +1 -1
  431. package/dist/lib/session/claude-accounts.d.ts +1 -1
  432. package/dist/lib/session/claude-accounts.js +1 -1
  433. package/dist/lib/session/db.d.ts +10 -2
  434. package/dist/lib/session/db.js +25 -6
  435. package/dist/lib/session/discover.d.ts +77 -0
  436. package/dist/lib/session/discover.js +130 -25
  437. package/dist/lib/session/fork.js +1 -1
  438. package/dist/lib/session/inject.d.ts +1 -1
  439. package/dist/lib/session/insights.d.ts +1 -1
  440. package/dist/lib/session/insights.js +1 -1
  441. package/dist/lib/session/live-metadata.d.ts +15 -0
  442. package/dist/lib/session/live-metadata.js +76 -0
  443. package/dist/lib/session/migrate-targets.d.ts +1 -1
  444. package/dist/lib/session/recovery.d.ts +1 -1
  445. package/dist/lib/session/recovery.js +2 -2
  446. package/dist/lib/session/remote-active.d.ts +10 -1
  447. package/dist/lib/session/remote-active.js +8 -3
  448. package/dist/lib/session/remote-bundle.d.ts +1 -1
  449. package/dist/lib/session/remote-bundle.js +2 -2
  450. package/dist/lib/session/remote-list.d.ts +15 -4
  451. package/dist/lib/session/remote-list.js +40 -3
  452. package/dist/lib/session/remote.d.ts +5 -5
  453. package/dist/lib/session/remote.js +13 -17
  454. package/dist/lib/session/resume-command.d.ts +3 -2
  455. package/dist/lib/session/resume-command.js +4 -3
  456. package/dist/lib/session/resume-owner.d.ts +3 -3
  457. package/dist/lib/session/resume-owner.js +3 -3
  458. package/dist/lib/session/session-cache.d.ts +12 -0
  459. package/dist/lib/session/session-cache.js +2 -0
  460. package/dist/lib/session/shell-programs.js +1 -1
  461. package/dist/lib/session/state.js +5 -5
  462. package/dist/lib/session/team-filter.d.ts +1 -1
  463. package/dist/lib/session/team-filter.js +1 -1
  464. package/dist/lib/session/types.d.ts +3 -3
  465. package/dist/lib/session/width.d.ts +2 -2
  466. package/dist/lib/session/width.js +2 -2
  467. package/dist/lib/share/delete.d.ts +21 -0
  468. package/dist/lib/share/delete.js +42 -0
  469. package/dist/lib/share/publish.d.ts +82 -0
  470. package/dist/lib/share/publish.js +170 -18
  471. package/dist/lib/share/worker-template.js +172 -9
  472. package/dist/lib/shims.js +35 -7
  473. package/dist/lib/smart-launch.d.ts +4 -4
  474. package/dist/lib/smart-launch.js +6 -4
  475. package/dist/lib/snapshot.d.ts +4 -4
  476. package/dist/lib/snapshot.js +2 -2
  477. package/dist/lib/ssh-exec.d.ts +1 -1
  478. package/dist/lib/ssh-exec.js +2 -2
  479. package/dist/lib/ssh-tunnel.d.ts +10 -10
  480. package/dist/lib/ssh-tunnel.js +12 -12
  481. package/dist/lib/staleness/checkers/hooks.d.ts +1 -1
  482. package/dist/lib/staleness/checkers/hooks.js +1 -1
  483. package/dist/lib/staleness/detectors/permissions.js +0 -23
  484. package/dist/lib/staleness/detectors/plugins.js +1 -1
  485. package/dist/lib/staleness/fingerprint.js +1 -1
  486. package/dist/lib/staleness/layers.d.ts +1 -1
  487. package/dist/lib/staleness/layers.js +1 -1
  488. package/dist/lib/staleness/writers/mcp.js +3 -1
  489. package/dist/lib/staleness/writers/plugins.js +1 -1
  490. package/dist/lib/staleness/writers/types.d.ts +8 -0
  491. package/dist/lib/startup/command-registry.d.ts +5 -147
  492. package/dist/lib/startup/command-registry.js +38 -303
  493. package/dist/lib/startup/dev-build.d.ts +0 -21
  494. package/dist/lib/startup/dev-build.js +29 -8
  495. package/dist/lib/state.d.ts +19 -1
  496. package/dist/lib/state.js +120 -51
  497. package/dist/lib/subagents.js +1 -1
  498. package/dist/lib/sync-status.js +1 -1
  499. package/dist/lib/sync-umbrella.d.ts +6 -1
  500. package/dist/lib/sync-umbrella.js +9 -4
  501. package/dist/lib/teams/agents.js +2 -2
  502. package/dist/lib/teams/registry.js +1 -1
  503. package/dist/lib/terminal/backends/vscodium-agent.js +1 -1
  504. package/dist/lib/terminal/engine.js +1 -1
  505. package/dist/lib/terminal/index.d.ts +4 -0
  506. package/dist/lib/terminal/index.js +3 -0
  507. package/dist/lib/terminal/inject.d.ts +2 -2
  508. package/dist/lib/terminal/inject.js +2 -2
  509. package/dist/lib/terminal/transport.js +1 -1
  510. package/dist/lib/tmux/index.d.ts +1 -1
  511. package/dist/lib/tmux/index.js +1 -1
  512. package/dist/lib/tmux/session.d.ts +21 -5
  513. package/dist/lib/tmux/session.js +76 -22
  514. package/dist/lib/triggers/handlers.d.ts +1 -1
  515. package/dist/lib/triggers/handlers.js +2 -2
  516. package/dist/lib/triggers/webhook.d.ts +36 -2
  517. package/dist/lib/triggers/webhook.js +97 -42
  518. package/dist/lib/types.d.ts +18 -6
  519. package/dist/lib/usage-fleet.d.ts +1 -1
  520. package/dist/lib/usage-fleet.js +1 -1
  521. package/dist/lib/usage-refresh.d.ts +1 -1
  522. package/dist/lib/usage-refresh.js +3 -3
  523. package/dist/lib/version-duplicates.js +2 -2
  524. package/dist/lib/view-types.d.ts +56 -0
  525. package/dist/lib/view-types.js +1 -0
  526. package/dist/lib/watchdog/rotate.d.ts +2 -2
  527. package/dist/lib/watchdog/rotate.js +3 -3
  528. package/dist/lib/watchdog/runner.d.ts +2 -3
  529. package/dist/lib/watchdog/runner.js +3 -4
  530. package/dist/lib/workflows.js +1 -1
  531. package/package.json +2 -1
  532. package/scripts/postinstall.js +2 -2
  533. package/dist/commands/bench.d.ts +0 -2
  534. package/dist/commands/bench.js +0 -101
  535. package/dist/commands/cp.d.ts +0 -84
  536. package/dist/commands/cp.js +0 -231
  537. package/dist/commands/login.d.ts +0 -2
  538. package/dist/lib/resources/commands.d.ts +0 -46
  539. package/dist/lib/resources/commands.js +0 -211
  540. package/dist/lib/resources/hooks.d.ts +0 -16
  541. package/dist/lib/resources/hooks.js +0 -153
  542. package/dist/lib/resources/mcp.d.ts +0 -34
  543. package/dist/lib/resources/mcp.js +0 -250
  544. package/dist/lib/resources/memory.d.ts +0 -15
  545. package/dist/lib/resources/memory.js +0 -46
  546. package/dist/lib/resources/permissions.d.ts +0 -13
  547. package/dist/lib/resources/permissions.js +0 -202
  548. package/dist/lib/resources/rules.d.ts +0 -46
  549. package/dist/lib/resources/rules.js +0 -179
  550. package/dist/lib/resources/skills.d.ts +0 -37
  551. package/dist/lib/resources/skills.js +0 -247
  552. package/dist/lib/resources/subagents.d.ts +0 -46
  553. package/dist/lib/resources/subagents.js +0 -202
  554. /package/dist/lib/{feed.d.ts → feed/feed.d.ts} +0 -0
@@ -17,7 +17,7 @@ import * as fs from 'fs';
17
17
  import * as os from 'os';
18
18
  import * as path from 'path';
19
19
  import chalk from 'chalk';
20
- import { truncate, termLink } from '../lib/format.js';
20
+ import { truncate, termLink, formatBytes } from '../lib/format.js';
21
21
  import * as yaml from 'yaml';
22
22
  import { AGENTS, getCliState, resolveAgentName } from '../lib/agents.js';
23
23
  import { supports } from '../lib/capabilities.js';
@@ -25,13 +25,13 @@ import { resolveConfiguredModel } from '../lib/models.js';
25
25
  import { getAgentModesCatalog } from '../lib/agent-modes.js';
26
26
  import { resolveSingleAgentTarget, AgentSpecError } from '../lib/agent-spec/index.js';
27
27
  import { readMeta, getUserAgentsDir, getSystemAgentsDir, getProjectAgentsDir, getEnabledExtraRepos, } from '../lib/state.js';
28
- import { getVersionHomePath, isVersionIsolated, getIsolatedDefault, } from '../lib/versions.js';
28
+ import { getVersionHomePath, isVersionIsolated, getIsolatedDefault, } from '../lib/installations/versions.js';
29
29
  import { getShimsDir, getVersionedAliasPath } from '../lib/shims.js';
30
30
  import { getAgentResources, isDirectoryDoc, listResources, } from '../lib/resources.js';
31
31
  import { listHookEntriesFromDir } from '../lib/hooks.js';
32
32
  import { getResourceInventory } from '../lib/resource-inventory.js';
33
33
  import { listMcpServerConfigs, discoverMcpConfigsFromRepo } from '../lib/mcp.js';
34
- import { discoverPlugins, discoverPluginsInDir, pluginResourceGroups, inspectPluginCapabilities, pluginCapabilityLabels } from '../lib/plugins.js';
34
+ import { discoverPlugins, discoverPluginsInDir, pluginResourceGroups, inspectPluginCapabilities, pluginCapabilityLabels } from '../lib/plugins/plugins.js';
35
35
  import { showResourceList } from './resource-view.js';
36
36
  import { PLUGIN_GROUP_COLORS } from './plugins.js';
37
37
  import { isInteractiveTerminal } from './utils.js';
@@ -39,7 +39,7 @@ import { countSessionsInScope } from '../lib/session/discover.js';
39
39
  import { isSessionTrackedAgent } from '../lib/session/types.js';
40
40
  import { damerauLevenshtein } from '../lib/fuzzy.js';
41
41
  import { terminalWidth, truncateToWidth, stringWidth, stripAnsi } from '../lib/session/width.js';
42
- import { readJobFileResult, getJobRunsDir, readRunMeta, isOneShotRoutine, isPastOneShotRoutine, listJobs, } from '../lib/routines.js';
42
+ import { readJobFileResult, getJobRunsDir, readRunMeta, isOneShotRoutine, isPastOneShotRoutine, listJobs, } from '../lib/scheduling/routines.js';
43
43
  import { routineDeviceIndex, currentRoutineDevice, routineEnabledOnThisDevice, } from '../lib/routine-activation.js';
44
44
  import { humanizeCron } from '../lib/routines-format.js';
45
45
  /** Resource kinds the inspect command can drill into. */
@@ -764,18 +764,6 @@ function itemsSize(items) {
764
764
  }
765
765
  return { bytes, files };
766
766
  }
767
- /** Human byte size: "84 KB", "3.1 MB". */
768
- export function formatBytes(n) {
769
- if (n < 1024)
770
- return `${n} B`;
771
- const units = ['KB', 'MB', 'GB', 'TB'];
772
- let v = n / 1024, i = 0;
773
- while (v >= 1024 && i < units.length - 1) {
774
- v /= 1024;
775
- i++;
776
- }
777
- return `${v >= 10 ? Math.round(v) : v.toFixed(1)} ${units[i]}`;
778
- }
779
767
  /** Parse the repo's own agents.yaml into the version pins + run strategies it declares. */
780
768
  export function repoManifestSummary(root) {
781
769
  let parsed;
@@ -2,7 +2,7 @@
2
2
  * `agents logs` — unified, discoverable run-log viewer + audit trail.
3
3
  *
4
4
  * Resolves a run across two substrates and shows (or `-f` follows) its log:
5
- * - host-dispatch tasks (`agents run --host`) → combined-stdout log, offset-tailed
5
+ * - host-dispatch tasks (`agents run --device`) → combined-stdout log, offset-tailed
6
6
  * - sessions (the local index) → transcript, tailed via the sessions tailer
7
7
  *
8
8
  * Subcommands:
@@ -14,7 +14,7 @@
14
14
  * transcript / raw stdout is opt-in behind `--full` (alias `-m/--markdown`).
15
15
  *
16
16
  * `[id]`/`--session` load directly (host task tried first, then session). With no
17
- * id, `--host`/`--agent`/`--version` filter a merged candidate list; one match is
17
+ * id, `--device`/`--agent`/`--version` filter a merged candidate list; one match is
18
18
  * shown, several open the fuzzy picker (or, non-TTY, print the list).
19
19
  *
20
20
  * Additive: `agents devices ps`/`stop` and `agents sessions tail` are unchanged and
@@ -2,7 +2,7 @@
2
2
  * `agents logs` — unified, discoverable run-log viewer + audit trail.
3
3
  *
4
4
  * Resolves a run across two substrates and shows (or `-f` follows) its log:
5
- * - host-dispatch tasks (`agents run --host`) → combined-stdout log, offset-tailed
5
+ * - host-dispatch tasks (`agents run --device`) → combined-stdout log, offset-tailed
6
6
  * - sessions (the local index) → transcript, tailed via the sessions tailer
7
7
  *
8
8
  * Subcommands:
@@ -14,7 +14,7 @@
14
14
  * transcript / raw stdout is opt-in behind `--full` (alias `-m/--markdown`).
15
15
  *
16
16
  * `[id]`/`--session` load directly (host task tried first, then session). With no
17
- * id, `--host`/`--agent`/`--version` filter a merged candidate list; one match is
17
+ * id, `--device`/`--agent`/`--version` filter a merged candidate list; one match is
18
18
  * shown, several open the fuzzy picker (or, non-TTY, print the list).
19
19
  *
20
20
  * Additive: `agents devices ps`/`stop` and `agents sessions tail` are unchanged and
@@ -27,7 +27,7 @@ import { streamSessionTail, isTailable } from './sessions-tail.js';
27
27
  import { showHostTaskLog, hostTaskLogJson } from '../lib/hosts/logs.js';
28
28
  import { listTasks } from '../lib/hosts/tasks.js';
29
29
  import { itemPicker } from '../lib/picker.js';
30
- import { stats, getLogsPath, rotate, } from '../lib/events.js';
30
+ import { stats, getLogsPath, rotate, } from '../lib/feed/events.js';
31
31
  import { addEventsReadOptions, runEventsCommand } from './events.js';
32
32
  /** Compact one-line label used by both the picker and the non-TTY list. */
33
33
  function candidateLabel(c) {
@@ -119,22 +119,22 @@ async function runLogs(id, opts) {
119
119
  const { agent, version } = parseAgentFilter(opts.agent);
120
120
  const wantVersion = opts.version ?? version;
121
121
  // Host tasks carry no session-index metadata; sessions carry no host tag.
122
- // So --host scopes to dispatched tasks, and --version to sessions.
122
+ // So --device scopes to dispatched tasks, and --version to sessions.
123
123
  const candidates = [];
124
124
  let tasks = listTasks();
125
- if (opts.host)
126
- tasks = tasks.filter((t) => t.host === opts.host);
125
+ if (opts.device)
126
+ tasks = tasks.filter((t) => t.host === opts.device);
127
127
  if (agent)
128
128
  tasks = tasks.filter((t) => t.agent === agent);
129
129
  for (const t of tasks)
130
130
  candidates.push({ kind: 'task', task: t });
131
- if (!opts.host) {
131
+ if (!opts.device) {
132
132
  const sessions = await discoverSessions({ agent, version: wantVersion, limit: 50 });
133
133
  for (const s of sessions)
134
134
  candidates.push({ kind: 'session', session: s });
135
135
  }
136
136
  if (candidates.length === 0) {
137
- console.error(chalk.yellow('No matching runs. Dispatch one: agents run <agent> "<task>" [--host <name>]'));
137
+ console.error(chalk.yellow('No matching runs. Dispatch one: agents run <agent> "<task>" [--device <name>]'));
138
138
  process.exit(1);
139
139
  }
140
140
  if (candidates.length === 1) {
@@ -252,7 +252,7 @@ export function registerLogsCommand(program) {
252
252
  const logsCmd = program
253
253
  .command('logs [id]')
254
254
  .description('Show a run log, audit trail, or stats. Subcommands: audit, stats, rotate.')
255
- .option('--host <name>', 'Scope to runs dispatched to a host')
255
+ .option('--device <name>', 'Scope to runs dispatched to a device')
256
256
  .option('-a, --agent <agent>', 'Filter by agent (e.g. claude, codex@0.116.0)')
257
257
  .option('--version <version>', 'Filter by agent version')
258
258
  .option('--session <id>', 'Select a session/run by id (same as the positional id)')
@@ -3,13 +3,13 @@ import { truncate } from '../lib/format.js';
3
3
  import ora from 'ora';
4
4
  import { checkbox } from '@inquirer/prompts';
5
5
  import { capableAgents, isCapable } from '../lib/capabilities.js';
6
- import { emit } from '../lib/events.js';
6
+ import { emit } from '../lib/feed/events.js';
7
7
  import { AGENTS, getAllCliStates, resolveAgentName, formatAgentError, registerMcpToTargets, unregisterMcpFromTargets, listInstalledMcpsWithScope, parseMcpConfig, getMcpConfigPathForHome, agentLabel, } from '../lib/agents.js';
8
8
  import { readManifest, writeManifest, createDefaultManifest } from '../lib/manifest.js';
9
9
  import { listMcpServerConfigs, discoverMcpConfigsFromRepo, installMcpConfigCentrally, isProjectMcpTrusted, trustProjectMcp, untrustProjectMcp, getMcpTrustStorePath, } from '../lib/mcp.js';
10
10
  import { cloneRepo } from '../lib/git.js';
11
11
  import { getMcpDir, getProjectAgentsDir } from '../lib/state.js';
12
- import { getEffectiveHome, getGlobalDefault, listInstalledVersions, getVersionHomePath, resolveInstalledAgentTargets, resolveConfiguredAgentTargets, syncResourcesToVersion, } from '../lib/versions.js';
12
+ import { getEffectiveHome, getGlobalDefault, listInstalledVersions, getVersionHomePath, resolveInstalledAgentTargets, resolveConfiguredAgentTargets, syncResourcesToVersion, } from '../lib/installations/versions.js';
13
13
  import { getUserAgentsDir } from '../lib/state.js';
14
14
  import { isPromptCancelled, isInteractiveTerminal, requireInteractiveSelection, promptRemovalTargets, parseCommaSeparatedList, ensureAgentVersionsInstalled, resolveAgentTargetsAutoInstalling, resolveInstalledAgentTargetsAutoInstalling, VersionNotInstalledError, resolveListFilterOrExit, } from './utils.js';
15
15
  import { showResourceList, buildTargetsSection, } from './resource-view.js';
@@ -9,7 +9,7 @@ import * as fs from 'fs';
9
9
  import { listMemoryFacts, addMemoryFact, removeMemoryFact, readMemoryFact, ensureUserMemoryDir, getUserMemoryDir, syncMemoryToVersionHome, } from '../lib/memory.js';
10
10
  import { capableAgents } from '../lib/capabilities.js';
11
11
  import { resolveAgentName, formatAgentError, agentLabel, ALL_AGENT_IDS } from '../lib/agents.js';
12
- import { listInstalledVersions, getVersionHomePath, } from '../lib/versions.js';
12
+ import { listInstalledVersions, getVersionHomePath, } from '../lib/installations/versions.js';
13
13
  import { supports } from '../lib/capabilities.js';
14
14
  import { setHelpSections } from '../lib/help.js';
15
15
  /** Register the `agents memory` command tree. */
@@ -7,7 +7,7 @@
7
7
  * - parked headless (no rail) → `agents run --resume <id> -- <answer>`
8
8
  * - cloud task → provider.message()
9
9
  *
10
- * Cross-host is handled one layer up: `--host <h>` routes the whole command over
10
+ * Cross-host is handled one layer up: `--device <h>` routes the whole command over
11
11
  * ssh via `REMOTE_PASSTHROUGH` (see src/lib/hosts/passthrough.ts), so the box is
12
12
  * written on the host that actually owns the agent. A caller who doesn't already
13
13
  * know the host (a detached `agents run --device <h> --no-follow` dispatch) is
@@ -6,14 +6,14 @@ import { getActiveSessions, isSessionIdLiveOnProcessTable } from '../lib/session
6
6
  import { getTaskById, updateTaskStatus } from '../lib/cloud/store.js';
7
7
  import { resolveProvider } from '../lib/cloud/registry.js';
8
8
  import { mailboxDir, enqueue } from '../lib/mailbox.js';
9
- import { getAgentsInvocation } from '../lib/daemon.js';
9
+ import { getAgentsInvocation } from '../lib/daemon/daemon.js';
10
10
  import { resolveTaskRef } from '../lib/hosts/tasks.js';
11
11
  import { reconcileRunningTasks } from '../lib/hosts/reconcile.js';
12
12
  import { resolveMessageTarget, mailboxIdForActiveSession, decideHostTaskRoute, } from '../lib/mailbox-target.js';
13
- import { blockIdForSession, listBlocks, readBlock, recordAnswer, recordMessageReceipt, } from '../lib/feed.js';
13
+ import { blockIdForSession, listBlocks, readBlock, recordAnswer, recordMessageReceipt, } from '../lib/feed/feed.js';
14
14
  import { verifyOperatorIdentity } from '../lib/operator.js';
15
15
  import { resolveAnswerRoute, resumeArgv, } from '../lib/answer-router.js';
16
- import { injectIntoTerminal } from '../lib/terminal/inject.js';
16
+ import { injectIntoTerminal } from '../lib/terminal/index.js';
17
17
  import { setHelpSections } from '../lib/help.js';
18
18
  /** Find the still-open block addressed to `mailboxId`, if any. */
19
19
  function findOpenBlockForMailbox(mailboxId) {
@@ -122,13 +122,13 @@ async function deliverViaResume(route, mailboxId) {
122
122
  * while `agents devices ps` shows the same dispatch running with a live remote
123
123
  * pid — the only recovery was kill-and-redispatch, losing all context.
124
124
  *
125
- * Re-spawns `agents message <remoteRef> <text> --host <host>` through
126
- * `getAgentsInvocation`, so it re-enters via the SAME `--host` REMOTE_PASSTHROUGH
127
- * choke point (`lib/hosts/passthrough.ts`) any explicit `--host` caller uses,
125
+ * Re-spawns `agents message <remoteRef> <text> --device <host>` through
126
+ * `getAgentsInvocation`, so it re-enters via the SAME `--device` REMOTE_PASSTHROUGH
127
+ * choke point (`lib/hosts/passthrough.ts`) any explicit `--device` caller uses,
128
128
  * and resolves against the remote box's own active sessions.
129
129
  */
130
130
  async function deliverViaHostReroute(route, text, opts) {
131
- const argv = ['message', route.remoteRef, text, '--host', route.host];
131
+ const argv = ['message', route.remoteRef, text, '--device', route.host];
132
132
  if (opts.from)
133
133
  argv.push('--from', opts.from);
134
134
  if (opts.as)
@@ -1,13 +1,12 @@
1
1
  /**
2
- * `agents mine` — white-label the CLI under your own name.
2
+ * `agents mine` helpers — white-label the CLI under your own name.
3
3
  *
4
- * `agents mine init <name>` mints a personally-named binary (e.g. `jack`) that
4
+ * `agents setup mine init <name>` mints a personally-named binary (e.g. `jack`) that
5
5
  * IS agents-cli: a pure pass-through shim on PATH that runs every `agents` verb
6
6
  * under the brand's name, with the brand's disabled commands and curated
7
- * resource profile applied. `list` / `toggle` / `remove` manage brands.
8
- *
9
- * The discoverable entry point is the `agents setup mine` wizard
10
- * (see setup-mine.ts), which delegates to `initBrand` here.
7
+ * resource profile applied. Manage verbs live under `agents setup mine`
8
+ * (`list` / `toggle` / `remove`); the bare `agents setup mine` wizard is the
9
+ * discoverable entry point (see setup-mine.ts).
11
10
  *
12
11
  * Storage: brand config in `meta.brands` (agents.yaml); the curated resource set
13
12
  * reuses the resource-profile engine — each brand owns a preset named
@@ -15,7 +14,7 @@
15
14
  */
16
15
  import type { Command } from 'commander';
17
16
  /**
18
- * Create (or re-mint) a brand. Shared by `mine init` and the `setup mine`
17
+ * Create (or re-mint) a brand. Shared by `setup mine init` and the `setup mine`
19
18
  * wizard. Writes the shim, the brand config, and an empty resource preset.
20
19
  */
21
20
  export declare function initBrand(name: string, opts?: {
@@ -24,4 +23,8 @@ export declare function initBrand(name: string, opts?: {
24
23
  }): {
25
24
  pathWarning: boolean;
26
25
  };
27
- export declare function registerMineCommand(program: Command): void;
26
+ /**
27
+ * Register brand manage verbs (`init`/`list`/`toggle`/`remove`) under a parent
28
+ * Command — used by `agents setup mine`.
29
+ */
30
+ export declare function registerMineManageCommands(cmd: Command): void;
@@ -2,10 +2,10 @@ import chalk from 'chalk';
2
2
  import { validateBrandName, listBrands, getBrandConfig, upsertBrand, removeBrand, brandPresetName, } from '../lib/brand.js';
3
3
  import { createBrandShim, removeBrandShim, isShimsInPath } from '../lib/shims.js';
4
4
  import { updateMeta } from '../lib/state.js';
5
- import { COMMAND_LOADERS } from '../lib/startup/command-registry.js';
5
+ import { KNOWN_TOP_LEVEL_COMMANDS } from '../lib/startup/command-registry.js';
6
6
  /** Built-in top-level command names, for validating `--disable <cmd>`. */
7
7
  function knownCommandNames() {
8
- const names = new Set(Object.keys(COMMAND_LOADERS));
8
+ const names = new Set(KNOWN_TOP_LEVEL_COMMANDS);
9
9
  // Inline aliases registered outside COMMAND_LOADERS (see src/index.ts).
10
10
  for (const n of ['perms', 'exec', 'jobs', 'cron', 'upgrade'])
11
11
  names.add(n);
@@ -63,7 +63,7 @@ function editPreset(name, fn) {
63
63
  });
64
64
  }
65
65
  /**
66
- * Create (or re-mint) a brand. Shared by `mine init` and the `setup mine`
66
+ * Create (or re-mint) a brand. Shared by `setup mine init` and the `setup mine`
67
67
  * wizard. Writes the shim, the brand config, and an empty resource preset.
68
68
  */
69
69
  export function initBrand(name, opts = {}) {
@@ -73,7 +73,7 @@ export function initBrand(name, opts = {}) {
73
73
  process.exit(1);
74
74
  }
75
75
  if (getBrandConfig(name) && !opts.force) {
76
- console.error(chalk.red(`Brand "${name}" already exists. Use --force to re-mint, or 'agents mine toggle ${name}'.`));
76
+ console.error(chalk.red(`Brand "${name}" already exists. Use --force to re-mint, or 'agents setup mine toggle ${name}'.`));
77
77
  process.exit(1);
78
78
  }
79
79
  ensurePresetExists(name);
@@ -101,10 +101,11 @@ function printMinted(name, pathWarning) {
101
101
  console.log(chalk.yellow(` note: the shims dir isn't on your PATH yet — run 'agents setup' or open a new shell.`));
102
102
  }
103
103
  }
104
- export function registerMineCommand(program) {
105
- const cmd = program
106
- .command('mine')
107
- .description('White-label the CLI: your own personally-named binary (e.g. `jack`)');
104
+ /**
105
+ * Register brand manage verbs (`init`/`list`/`toggle`/`remove`) under a parent
106
+ * Command — used by `agents setup mine`.
107
+ */
108
+ export function registerMineManageCommands(cmd) {
108
109
  cmd
109
110
  .command('init <name>')
110
111
  .description('Mint your own branded CLI that runs every agents verb under <name>')
@@ -125,7 +126,7 @@ export function registerMineCommand(program) {
125
126
  const brands = listBrands();
126
127
  const entries = Object.entries(brands);
127
128
  if (entries.length === 0) {
128
- console.log(chalk.gray("No brands yet. Try: agents setup mine (or: agents mine init jack)"));
129
+ console.log(chalk.gray("No brands yet. Try: agents setup mine (or: agents setup mine init jack)"));
129
130
  return;
130
131
  }
131
132
  const width = entries.reduce((m, [n]) => Math.max(m, n.length), 0);
@@ -147,7 +148,7 @@ export function registerMineCommand(program) {
147
148
  .action((name, options) => {
148
149
  const cfg = getBrandConfig(name);
149
150
  if (!cfg) {
150
- console.error(chalk.red(`No brand named "${name}". Create it with 'agents mine init ${name}'.`));
151
+ console.error(chalk.red(`No brand named "${name}". Create it with 'agents setup mine init ${name}'.`));
151
152
  process.exit(1);
152
153
  }
153
154
  // Built-in command toggles → brand.disabledCommands.
@@ -9,7 +9,7 @@ import chalk from 'chalk';
9
9
  import * as fs from 'fs';
10
10
  import { homeDir } from '../lib/platform/index.js';
11
11
  import { resolveAgentName, formatAgentError, agentLabel, } from '../lib/agents.js';
12
- import { listInstalledVersions, getGlobalDefault, resolveVersion, resolveVersionAlias } from '../lib/versions.js';
12
+ import { listInstalledVersions, getGlobalDefault, resolveVersion, resolveVersionAlias } from '../lib/installations/versions.js';
13
13
  import { getModelCatalog, locateModelSource } from '../lib/models.js';
14
14
  import { resolveTierMap, MODEL_TIERS } from '../lib/model-tiers.js';
15
15
  import { setTierOverride, clearTierOverride, listTierOverrides } from '../lib/model-tier-overrides.js';
@@ -11,7 +11,7 @@ import chalk from 'chalk';
11
11
  import { AGENTS, ALL_AGENT_IDS, agentLabel, formatAgentError, resolveAgentName, } from '../lib/agents.js';
12
12
  import { formatModeFlags, getAgentModesCatalog, } from '../lib/agent-modes.js';
13
13
  import { setHelpSections } from '../lib/help.js';
14
- import { getGlobalDefault, listInstalledVersions, resolveVersion, resolveVersionAlias } from '../lib/versions.js';
14
+ import { getGlobalDefault, listInstalledVersions, resolveVersion, resolveVersionAlias } from '../lib/installations/versions.js';
15
15
  /** Agents that show in the no-arg overview (skip hard-deprecated). */
16
16
  const MODE_AGENTS = ALL_AGENT_IDS.filter((id) => !AGENTS[id].deprecated?.hard);
17
17
  /** Register `agents modes [agent[@version]]`. */
@@ -11,14 +11,14 @@ import chalk from 'chalk';
11
11
  import * as fs from 'fs';
12
12
  import * as path from 'path';
13
13
  import * as yaml from 'yaml';
14
- import { isDaemonRunning, signalDaemonReload, startDaemon, } from '../lib/daemon.js';
14
+ import { isDaemonRunning, signalDaemonReload, startDaemon, } from '../lib/daemon/daemon.js';
15
15
  import { findDuplicateMonitor, monitorFingerprint } from '../lib/monitors/fingerprint.js';
16
16
  import { gatherFleetMonitors, NO_MONITOR_FANOUT_ENV } from '../lib/monitors/remote.js';
17
17
  import { listMonitors, readMonitor, writeMonitor, deleteMonitor, setMonitorEnabled, getMonitorPath, validateMonitor, monitorRunsOnThisDevice, parseInterval, } from '../lib/monitors/config.js';
18
18
  import { formatRelativeTime } from '../lib/session/relative-time.js';
19
19
  import { evaluateMonitorOnce, POLL_SOURCE_TYPES } from '../lib/monitors/engine.js';
20
- import { listFires, readState, readLiveness } from '../lib/monitors/state.js';
21
- import { listRuns, getLatestRun, getRunDir } from '../lib/routines.js';
20
+ import { listFires, readState, readLiveness, resolveFireOutcome } from '../lib/monitors/state.js';
21
+ import { listRuns, getLatestRun, getRunDir } from '../lib/scheduling/routines.js';
22
22
  import { getMonitorsDir } from '../lib/state.js';
23
23
  import { IS_WINDOWS } from '../lib/platform/index.js';
24
24
  import { safeJoin } from '../lib/paths.js';
@@ -452,6 +452,7 @@ export function registerMonitorsCommands(program) {
452
452
  .option('--device <name>', 'OWNER (not body placement) — the single machine that evaluates + fires (exactly-once). See docs/concepts.md#placement.')
453
453
  .option('--devices <list>', 'Allowlist (comma-separated): each device fires independently')
454
454
  .option('--run-on <host>', 'BODY placement — execute the ACTION on this machine over SSH (same idea as run --where device:<host>)')
455
+ .option('--cwd <path>', "Working directory for --run, home-relative or ~/… (default: the execution target's home)")
455
456
  .option('--rate-limit <spec>', 'Auto-pause if it fires more than N/<interval> (e.g. 5/1m)')
456
457
  .option('--disabled', 'Create the monitor paused (enable later with resume)')
457
458
  .option('--force', 'Overwrite a same-named monitor, or add one that duplicates an existing watcher')
@@ -536,6 +537,7 @@ export function registerMonitorsCommands(program) {
536
537
  ...(device ? { device } : {}),
537
538
  ...(devices ? { devices } : {}),
538
539
  ...(options.runOn ? { runOn: options.runOn } : {}),
540
+ ...(options.cwd ? { cwd: options.cwd } : {}),
539
541
  ...(rateLimit ? { rateLimit } : {}),
540
542
  };
541
543
  const errors = validateMonitor(config);
@@ -669,7 +671,9 @@ export function registerMonitorsCommands(program) {
669
671
  if (recentFires.length > 0) {
670
672
  console.log(chalk.bold('\nRecent fires'));
671
673
  for (const f of recentFires) {
672
- console.log(` ${chalk.gray(f.firedAt)} ${f.action ?? '?'} ${f.ok === false ? chalk.red('failed') : chalk.green('ok')}`);
674
+ // Reconciled against the run's real status see `runs`, above (RUSH-2690).
675
+ const { ok } = resolveFireOutcome(name, f);
676
+ console.log(` ${chalk.gray(f.firedAt)} ${f.action ?? '?'} ${ok ? chalk.green('ok') : chalk.red('failed')}`);
673
677
  }
674
678
  }
675
679
  });
@@ -843,9 +847,22 @@ export function registerMonitorsCommands(program) {
843
847
  }
844
848
  console.log(chalk.bold(`Fire history: ${name}\n`));
845
849
  for (const f of fires.slice(-20)) {
846
- const outcome = f.ok === false ? chalk.red('failed') : chalk.green('ok');
850
+ // Reconcile against the run's REAL, current status (RUSH-2690) rather
851
+ // than trusting the frozen `ok` written at fire time — `dispatchAction`
852
+ // only sees a synchronous 'running' snapshot before the run has
853
+ // actually settled, so a run that later fails/times out/never produces
854
+ // output would otherwise read `ok` here forever while `agents monitors
855
+ // logs` (which reads the run record fresh) already shows the truth.
856
+ const { ok, runStatus } = resolveFireOutcome(name, f);
857
+ const outcome = ok ? chalk.green('ok') : chalk.red('failed');
858
+ // Surface the divergence explicitly when the frozen write disagreed
859
+ // with the reconciled read — the exact "fire says ok, run says
860
+ // otherwise" symptom RUSH-2690 reported.
861
+ const corrected = f.ok !== false && !ok && runStatus
862
+ ? chalk.yellow(` (run ${runStatus})`)
863
+ : '';
847
864
  const runRef = f.runId ? chalk.gray(` run ${f.runId}`) : '';
848
- console.log(` ${f.firedAt} ${(f.action ?? '?').padEnd(12)} ${outcome}${runRef}`);
865
+ console.log(` ${f.firedAt} ${(f.action ?? '?').padEnd(12)} ${outcome}${corrected}${runRef}`);
849
866
  console.log(chalk.gray(` ${f.summary.slice(0, 100)}`));
850
867
  }
851
868
  });
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Output command — productivity: token *burn* vs shipped *output*.
3
3
  *
4
- * `agents cost` answers "what did we burn?" (dollars + duration). This joins that
5
- * burn to what actually shipped real generated (output) tokens plus PRs and
6
- * commits across every git identity so you can see burn-vs-output and ratios
7
- * like $/PR and output-tokens/$. Pure SQLite + local git/gh, no server, no
8
- * telemetry — the same offline spirit as `cost`.
4
+ * Nested as `agents insights output`. `agents insights cost` answers "what did
5
+ * we burn?" (dollars + duration). This joins that burn to what actually shipped
6
+ * real generated (output) tokens plus PRs and commits across every git identity
7
+ * so you can see burn-vs-output and ratios like $/PR and output-tokens/$. Pure
8
+ * SQLite + local git/gh, no server, no telemetry — the same offline spirit as cost.
9
9
  *
10
10
  * Why not just show `token_count`? Because that number sums cache-read/-write
11
11
  * context re-counted every turn and is dominated by cheap re-reads (often ~100x
@@ -16,4 +16,5 @@
16
16
  * over SSH and merges — one fleet-wide burn-vs-output view.
17
17
  */
18
18
  import type { Command } from 'commander';
19
- export declare function registerOutputCommand(program: Command): void;
19
+ /** Register `agents insights output` under the insights parent. */
20
+ export declare function registerOutputCommand(insightsCmd: Command): void;
@@ -14,8 +14,9 @@ import { loadDevices, isControlDevice } from '../lib/devices/registry.js';
14
14
  import { machineId } from '../lib/session/sync/config.js';
15
15
  import { stripClixml } from '../lib/hosts/remote-cmd.js';
16
16
  const execFileAsync = promisify(execFile);
17
- export function registerOutputCommand(program) {
18
- addHostOption(program.command('output'))
17
+ /** Register `agents insights output` under the insights parent. */
18
+ export function registerOutputCommand(insightsCmd) {
19
+ addHostOption(insightsCmd.command('output'))
19
20
  .description('Productivity rollup — token burn vs shipped output (PRs, commits) across agents')
20
21
  .option('--json', 'Output the rollup as JSON')
21
22
  .option('--since <time>', 'Only sessions/commits newer than this: 1h, 24h, 7d, 4w, 1mo, 1y, or ISO date (default 7d)')
@@ -28,12 +29,12 @@ export function registerOutputCommand(program) {
28
29
  .option('--pricing <scenario>', 'Cost scenario: actual (default, cache-discounted) or no-cache (cache read/write billed at the full input rate)')
29
30
  .addHelpText('after', `
30
31
  Examples:
31
- agents output Last 7 days: burn, output tokens, PRs, commits, ratios
32
- agents output --since 24h Last 24 hours
33
- agents output --since 1mo Last month (units: 1h 24h 7d 4w 1mo 1y, or ISO date)
34
- agents output --pricing no-cache Model the burn as if prompt caching were off
35
- agents output --all-hosts Fleet-wide, folding in every online machine
36
- agents output --by day --json Machine-readable daily burn/output rollup
32
+ agents insights output Last 7 days: burn, output tokens, PRs, commits, ratios
33
+ agents insights output --since 24h Last 24 hours
34
+ agents insights output --since 1mo Last month (units: 1h 24h 7d 4w 1mo 1y, or ISO date)
35
+ agents insights output --pricing no-cache Model the burn as if prompt caching were off
36
+ agents insights output --all-hosts Fleet-wide, folding in every online machine
37
+ agents insights output --by day --json Machine-readable daily burn/output rollup
37
38
 
38
39
  Burn (cost) is computed offline from a versioned per-model price table (${PRICING_VERSION}).
39
40
  Output tokens are the real generated tokens — NOT the cache-inflated total token count.
@@ -136,9 +137,9 @@ async function computeLocalPayload(options, includePrs) {
136
137
  uncostedAgents: groupBy === 'agent' ? breakdown.filter(r => r.costUsd === 0).map(r => r.key) : [],
137
138
  };
138
139
  }
139
- /** Fetch one remote device's payload by re-invoking `agents output --json --host <name>`. */
140
+ /** Fetch one remote device's payload by re-invoking `agents insights output --json --device <name>`. */
140
141
  async function fetchRemotePayload(device, options) {
141
- const args = ['output', '--json', '--no-prs', '--host', device, '--since', options.since ?? '7d'];
142
+ const args = ['insights', 'output', '--json', '--no-prs', '--device', device, '--since', options.since ?? '7d'];
142
143
  if (options.by)
143
144
  args.push('--by', options.by);
144
145
  if (options.reposDir)
@@ -14,12 +14,12 @@ import { DEFAULT_REGISTRIES } from '../lib/types.js';
14
14
  import { getRegistries, setRegistry, removeRegistry, search as searchRegistries, resolvePackage, validatedNpmSpec, validatedPyPISpec, verifySkillIntegrity, } from '../lib/registry.js';
15
15
  import { cloneRepo } from '../lib/git.js';
16
16
  import { discoverCommands, resolveCommandSource, installCommand, installCommandCentrally, } from '../lib/commands.js';
17
- import { discoverSkillsFromRepo, installSkill, installSkillCentrally, } from '../lib/skills.js';
17
+ import { discoverSkillsFromRepo, installSkill, installSkillCentrally, } from '../lib/plugins/skills.js';
18
18
  import { discoverHooksFromRepo, installHooks, installHooksCentrally, } from '../lib/hooks.js';
19
19
  import { discoverWorkflowsFromRepo, installWorkflowCentrally, } from '../lib/workflows.js';
20
20
  import { discoverSubagentsFromRepo, installSubagentCentrally, } from '../lib/subagents.js';
21
21
  import { discoverPermissionsFromRepo, installPermissionSet, } from '../lib/permissions.js';
22
- import { listInstalledVersions, resolveConfiguredAgentTargets, syncResourcesToVersion, } from '../lib/versions.js';
22
+ import { listInstalledVersions, resolveConfiguredAgentTargets, syncResourcesToVersion, } from '../lib/installations/versions.js';
23
23
  import { formatPath, isInteractiveTerminal, isPromptCancelled, parseCommaSeparatedList, requireDestructiveArg, requireInteractiveSelection, resolveInstalledAgentTargetsAutoInstalling, } from './utils.js';
24
24
  import { itemPicker } from '../lib/picker.js';
25
25
  import { registerMcpCommandToTargets, discoverMcpConfigsFromRepo, installMcpConfigCentrally, } from '../lib/mcp.js';
@@ -369,8 +369,8 @@ delegate to the same underlying installers.
369
369
  spinner.stop();
370
370
  const spec = resolved.pluginSpec ?? resolved.source;
371
371
  console.log(chalk.gray(`Installing plugin from: ${spec}`));
372
- const { installPlugin, getPlugin, inspectPluginCapabilities, pluginCapabilityLabels, parseInstallSpec, checkPluginDependencies, hasPluginExecSurfaces, pluginSupportsAgent, syncPluginToVersion, pluginResourceGroups, } = await import('../lib/plugins.js');
373
- const { listInstalledVersions, getGlobalDefault, getVersionHomePath, syncResourcesToVersion } = await import('../lib/versions.js');
372
+ const { installPlugin, getPlugin, inspectPluginCapabilities, pluginCapabilityLabels, parseInstallSpec, checkPluginDependencies, hasPluginExecSurfaces, pluginSupportsAgent, syncPluginToVersion, pluginResourceGroups, } = await import('../lib/plugins/plugins.js');
373
+ const { listInstalledVersions, getGlobalDefault, getVersionHomePath, syncResourcesToVersion } = await import('../lib/installations/versions.js');
374
374
  const { agentLabel } = await import('../lib/agents.js');
375
375
  let name;
376
376
  let root;
@@ -14,7 +14,7 @@
14
14
  import chalk from 'chalk';
15
15
  import { aggregateSamples, perfDbPath, } from '../lib/perf/db.js';
16
16
  import { formatMs, formatCacheColumn, DEFAULT_SLOW_HOOK_WARN_MS, loadHookFireEvents, aggregateHookProfile, } from '../lib/hooks/profile.js';
17
- import { query } from '../lib/events.js';
17
+ import { query } from '../lib/feed/events.js';
18
18
  import { detectRepeatedGuardBlocks } from '../lib/friction-heuristics.js';
19
19
  function parseDays(raw) {
20
20
  const n = parseInt(raw ?? '7', 10);