@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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `agents snapshot` — one-process fleet consumer snapshot.
2
+ * `agents devices snapshot` — one-process fleet consumer snapshot.
3
3
  *
4
4
  * Consumers (Factory watchdog, menubar, fleet scripts) used to fork:
5
5
  * agents view <agent> --json × N harnesses
@@ -13,11 +13,11 @@
13
13
  * Stores are not merged — inventory still comes from view, active rows from
14
14
  * sessions, blocks from feed. Only the reader is consolidated.
15
15
  */
16
- import { type OpenBlock } from './feed.js';
16
+ import { type OpenBlock } from './feed/feed.js';
17
17
  import { type FleetAgentCounts } from './fleet-status.js';
18
18
  import type { AgentId } from './types.js';
19
19
  import type { UnifiedSyncStatus } from './sync-status.js';
20
- import type { ViewJsonAgent } from '../commands/view.js';
20
+ import type { ViewJsonAgent } from './view-types.js';
21
21
  /** One open-block row in the optional feed summary (no full question bodies). */
22
22
  export interface SnapshotFeedBlock {
23
23
  blockId: string;
@@ -44,7 +44,7 @@ export type SnapshotSessionRow = {
44
44
  [key: string]: unknown;
45
45
  };
46
46
  /**
47
- * Stable machine-readable contract for `agents snapshot --json`.
47
+ * Stable machine-readable contract for `agents devices snapshot --json`.
48
48
  * Bump `version` only on breaking shape changes.
49
49
  */
50
50
  export interface FleetSnapshot {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `agents snapshot` — one-process fleet consumer snapshot.
2
+ * `agents devices snapshot` — one-process fleet consumer snapshot.
3
3
  *
4
4
  * Consumers (Factory watchdog, menubar, fleet scripts) used to fork:
5
5
  * agents view <agent> --json × N harnesses
@@ -14,7 +14,7 @@
14
14
  * sessions, blocks from feed. Only the reader is consolidated.
15
15
  */
16
16
  import { machineId } from './machine-id.js';
17
- import { listBlocks } from './feed.js';
17
+ import { listBlocks } from './feed/feed.js';
18
18
  import { computeAgentCounts } from './fleet-status.js';
19
19
  /** Summarize open blocks for the snapshot feed slice. Pure / unit-testable. */
20
20
  export function summarizeFeedBlocks(blocks, limit = 50) {
@@ -2,7 +2,7 @@
2
2
  * Shared SSH exec primitive — the single hardened choke point for running a
3
3
  * command on a remote host over the system `ssh`.
4
4
  *
5
- * `agents run --host` dispatch and the browser driver both go through here so the
5
+ * `agents run --device` dispatch and the browser driver both go through here so the
6
6
  * connection hardening (`BatchMode`, `accept-new`, `ConnectTimeout`) and the
7
7
  * target-injection guard live in exactly one place. Target validation is the
8
8
  * canonical definition; `commands/secrets.ts` re-exports it.
@@ -2,7 +2,7 @@
2
2
  * Shared SSH exec primitive — the single hardened choke point for running a
3
3
  * command on a remote host over the system `ssh`.
4
4
  *
5
- * `agents run --host` dispatch and the browser driver both go through here so the
5
+ * `agents run --device` dispatch and the browser driver both go through here so the
6
6
  * connection hardening (`BatchMode`, `accept-new`, `ConnectTimeout`) and the
7
7
  * target-injection guard live in exactly one place. Target validation is the
8
8
  * canonical definition; `commands/secrets.ts` re-exports it.
@@ -83,7 +83,7 @@ export class RemoteUtf8Accumulator {
83
83
  * OpenSSH connection-multiplexing options. The first connection to a host opens
84
84
  * a control socket; subsequent connections (even from a *separate* `agents`
85
85
  * invocation) reuse it, skipping the TCP+auth handshake — so repeated
86
- * `--host <name>` calls to the same box feel local instead of paying ~100-300ms
86
+ * `--device <name>` calls to the same box feel local instead of paying ~100-300ms
87
87
  * each. `ControlPersist=60s` keeps the master alive briefly after the last
88
88
  * client exits. `%C` (a short fixed-length hash of local-host/remote/port/user)
89
89
  * keeps the socket path well under macOS's 104-char `sun_path` limit.
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * 1. `startSSHTunnel` — the generic `ssh -L localPort:127.0.0.1:remotePort -N`
7
7
  * spawn, extracted verbatim from the browser CDP driver so both the browser
8
- * and `agents computer --host` reach a remote loopback service through one
8
+ * and `agents computer --device` reach a remote loopback service through one
9
9
  * hardened tunnel. Behavior for the browser caller is unchanged (default,
10
10
  * foreground, stderr-captured).
11
11
  *
@@ -21,8 +21,8 @@ import { type DeviceProfile } from './devices/registry.js';
21
21
  export interface StartTunnelOptions {
22
22
  /**
23
23
  * Detach the tunnel so it OUTLIVES this CLI process. Used by
24
- * `agents computer start --host` — the tunnel must persist across separate
25
- * verb invocations (`apps`, `click`, …) until `stop --host` tears it down.
24
+ * `agents computer start --device` — the tunnel must persist across separate
25
+ * verb invocations (`apps`, `click`, …) until `stop --device` tears it down.
26
26
  * The browser driver leaves this false: it holds the tunnel for the lifetime
27
27
  * of one CDP session and kills it on cleanup.
28
28
  */
@@ -83,12 +83,12 @@ export declare function sha256File(file: string): Promise<string>;
83
83
  */
84
84
  export declare function downloadWinHelperExe(version: string): Promise<string>;
85
85
  /**
86
- * Resolve the helper exe for `setup --host`: local build outputs first (repo
86
+ * Resolve the helper exe for `setup --device`: local build outputs first (repo
87
87
  * checkout / bundled), then the checksum-verified release-asset download for
88
88
  * the running CLI version. Throws with the tag it checked when neither exists.
89
89
  */
90
90
  export declare function ensureWinHelperExe(version?: string): Promise<string>;
91
- /** Persisted per-device tunnel state so verbs can reconnect after `start --host`. */
91
+ /** Persisted per-device tunnel state so verbs can reconnect after `start --device`. */
92
92
  export interface RemoteTunnelState {
93
93
  device: string;
94
94
  target: string;
@@ -106,7 +106,7 @@ export declare function writeRemoteState(state: RemoteTunnelState): void;
106
106
  export declare function clearRemoteState(device: string): void;
107
107
  /**
108
108
  * Local file holding the shared-secret token for a device's helper daemon.
109
- * Written at `setup --host` (0600), read at `start --host` so the RPC client
109
+ * Written at `setup --device` (0600), read at `start --device` so the RPC client
110
110
  * authenticates. The remote daemon reads the same value from its own
111
111
  * `--token-file`; the CLI is the source of truth and never round-trips it back.
112
112
  */
@@ -154,7 +154,7 @@ export declare function scpRemotePath(remotePath: string): string;
154
154
  */
155
155
  export declare function buildScpArgs(target: string, remotePath: string, filePath: string, extraSshArgs?: string[]): string[];
156
156
  /**
157
- * `setup --host`: push the exe, then register + start the LOGON task. Remote
157
+ * `setup --device`: push the exe, then register + start the LOGON task. Remote
158
158
  * PowerShell hops go through `sshExec` (BatchMode key auth — the same hardening
159
159
  * the browser driver and `agents ssh` use), and the large exe rides a binary
160
160
  * scp transfer. Throws with the remote stderr on any failure.
@@ -166,13 +166,13 @@ export declare function setupRemoteHelper(name: string): Promise<{
166
166
  /** Reserve a free local TCP port by binding :0 and reading the assigned port. */
167
167
  export declare function pickFreePort(): Promise<number>;
168
168
  /**
169
- * `start --host`: open a detached ssh -L tunnel to the remote daemon, verify it
169
+ * `start --device`: open a detached ssh -L tunnel to the remote daemon, verify it
170
170
  * answers over TCP, and persist the tunnel state so verbs can reconnect. Returns
171
171
  * the state (and leaves the tunnel running in the background).
172
172
  */
173
173
  export declare function startRemoteTunnel(name: string): Promise<RemoteTunnelState>;
174
174
  /**
175
- * `stop --host`: kill the local tunnel, unregister the remote task (best-effort
175
+ * `stop --device`: kill the local tunnel, unregister the remote task (best-effort
176
176
  * — the box may be offline), and clear the persisted state.
177
177
  */
178
178
  export declare function stopRemoteHelper(name: string): Promise<{
@@ -182,7 +182,7 @@ export declare function stopRemoteHelper(name: string): Promise<{
182
182
  /**
183
183
  * Point this process's RPC client at a device's live tunnel by setting
184
184
  * COMPUTER_HELPER_TCP / COMPUTER_HELPER_TOKEN from persisted state. Called for
185
- * remote verbs (`apps --host`, `click --host`, …) so the shared
185
+ * remote verbs (`apps --device`, `click --device`, …) so the shared
186
186
  * openComputerClient() transparently selects the TcpClient transport — no
187
187
  * per-verb wiring. Exits with guidance when there is no active tunnel.
188
188
  */
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * 1. `startSSHTunnel` — the generic `ssh -L localPort:127.0.0.1:remotePort -N`
7
7
  * spawn, extracted verbatim from the browser CDP driver so both the browser
8
- * and `agents computer --host` reach a remote loopback service through one
8
+ * and `agents computer --device` reach a remote loopback service through one
9
9
  * hardened tunnel. Behavior for the browser caller is unchanged (default,
10
10
  * foreground, stderr-captured).
11
11
  *
@@ -199,7 +199,7 @@ export async function downloadWinHelperExe(version) {
199
199
  return cached;
200
200
  }
201
201
  /**
202
- * Resolve the helper exe for `setup --host`: local build outputs first (repo
202
+ * Resolve the helper exe for `setup --device`: local build outputs first (repo
203
203
  * checkout / bundled), then the checksum-verified release-asset download for
204
204
  * the running CLI version. Throws with the tag it checked when neither exists.
205
205
  */
@@ -239,7 +239,7 @@ export function clearRemoteState(device) {
239
239
  }
240
240
  /**
241
241
  * Local file holding the shared-secret token for a device's helper daemon.
242
- * Written at `setup --host` (0600), read at `start --host` so the RPC client
242
+ * Written at `setup --device` (0600), read at `start --device` so the RPC client
243
243
  * authenticates. The remote daemon reads the same value from its own
244
244
  * `--token-file`; the CLI is the source of truth and never round-trips it back.
245
245
  */
@@ -275,7 +275,7 @@ export async function resolveRemoteDevice(name) {
275
275
  throw new Error(`Unknown device '${name}'. Register it with \`agents devices add\` / \`agents devices sync\`, then retry.`);
276
276
  }
277
277
  if (device.platform !== 'windows') {
278
- throw new Error(`Device '${name}' is ${device.platform}, not windows. \`agents computer --host\` drives the Windows computer-helper daemon.`);
278
+ throw new Error(`Device '${name}' is ${device.platform}, not windows. \`agents computer --device\` drives the Windows computer-helper daemon.`);
279
279
  }
280
280
  const target = sshTargetFor(device); // validates address + injection guard
281
281
  const host = hostNameFor(device); // sshTargetFor already threw if absent
@@ -392,7 +392,7 @@ function copyFileOverScp(target, remotePath, filePath, extraSshArgs = [], timeou
392
392
  });
393
393
  }
394
394
  /**
395
- * `setup --host`: push the exe, then register + start the LOGON task. Remote
395
+ * `setup --device`: push the exe, then register + start the LOGON task. Remote
396
396
  * PowerShell hops go through `sshExec` (BatchMode key auth — the same hardening
397
397
  * the browser driver and `agents ssh` use), and the large exe rides a binary
398
398
  * scp transfer. Throws with the remote stderr on any failure.
@@ -441,7 +441,7 @@ export async function setupRemoteHelper(name) {
441
441
  if (reg.code !== 0) {
442
442
  throw new Error(`registering scheduled task on '${name}' failed (exit ${reg.code ?? 'null'}): ${reg.stderr.trim() || reg.stdout.trim()}`);
443
443
  }
444
- // Persist the token locally so `start --host` authenticates to the daemon.
444
+ // Persist the token locally so `start --device` authenticates to the daemon.
445
445
  writeHelperToken(name, token);
446
446
  return { target, taskName: REMOTE_TASK_NAME };
447
447
  }
@@ -458,7 +458,7 @@ export function pickFreePort() {
458
458
  });
459
459
  }
460
460
  /**
461
- * `start --host`: open a detached ssh -L tunnel to the remote daemon, verify it
461
+ * `start --device`: open a detached ssh -L tunnel to the remote daemon, verify it
462
462
  * answers over TCP, and persist the tunnel state so verbs can reconnect. Returns
463
463
  * the state (and leaves the tunnel running in the background).
464
464
  */
@@ -514,8 +514,8 @@ export async function startRemoteTunnel(name) {
514
514
  }
515
515
  catch { /* gone */ }
516
516
  const hint = token
517
- ? `Is it installed? Run: agents computer setup --host ${name}`
518
- : `No auth token on record for '${name}' — re-run: agents computer setup --host ${name}`;
517
+ ? `Is it installed? Run: agents computer setup --device ${name}`
518
+ : `No auth token on record for '${name}' — re-run: agents computer setup --device ${name}`;
519
519
  throw new Error(`tunnel to '${name}' opened but the daemon did not answer (${probeErr}). ${hint}`);
520
520
  }
521
521
  const state = {
@@ -532,7 +532,7 @@ export async function startRemoteTunnel(name) {
532
532
  return state;
533
533
  }
534
534
  /**
535
- * `stop --host`: kill the local tunnel, unregister the remote task (best-effort
535
+ * `stop --device`: kill the local tunnel, unregister the remote task (best-effort
536
536
  * — the box may be offline), and clear the persisted state.
537
537
  */
538
538
  export async function stopRemoteHelper(name) {
@@ -566,7 +566,7 @@ export async function stopRemoteHelper(name) {
566
566
  /**
567
567
  * Point this process's RPC client at a device's live tunnel by setting
568
568
  * COMPUTER_HELPER_TCP / COMPUTER_HELPER_TOKEN from persisted state. Called for
569
- * remote verbs (`apps --host`, `click --host`, …) so the shared
569
+ * remote verbs (`apps --device`, `click --device`, …) so the shared
570
570
  * openComputerClient() transparently selects the TcpClient transport — no
571
571
  * per-verb wiring. Exits with guidance when there is no active tunnel.
572
572
  */
@@ -574,7 +574,7 @@ export function hydrateRemoteEnvFromState(name) {
574
574
  const state = readRemoteState(name);
575
575
  if (!state) {
576
576
  console.error(`No active remote tunnel for '${name}'.`);
577
- console.error(`Run: agents computer start --host ${name}`);
577
+ console.error(`Run: agents computer start --device ${name}`);
578
578
  process.exit(1);
579
579
  }
580
580
  process.env.COMPUTER_HELPER_TCP = `127.0.0.1:${state.localPort}`;
@@ -2,7 +2,7 @@
2
2
  * Hooks staleness — one executable file per hook. Project layer is EXCLUDED
3
3
  * by design: a cloned public repo with `.agents/hooks/foo` must not plant a
4
4
  * hook that fires next time the user runs an agent inside it (see
5
- * `src/lib/versions.ts:1832-1836`). Only user + system + extras count.
5
+ * `src/lib/installations/versions.ts:1832-1836`). Only user + system + extras count.
6
6
  *
7
7
  * Auxiliary files (README.md, promptcuts.yaml) live in hooks/ but are not
8
8
  * hooks — the executable bit on the source distinguishes them. This matches
@@ -2,7 +2,7 @@
2
2
  * Hooks staleness — one executable file per hook. Project layer is EXCLUDED
3
3
  * by design: a cloned public repo with `.agents/hooks/foo` must not plant a
4
4
  * hook that fires next time the user runs an agent inside it (see
5
- * `src/lib/versions.ts:1832-1836`). Only user + system + extras count.
5
+ * `src/lib/installations/versions.ts:1832-1836`). Only user + system + extras count.
6
6
  *
7
7
  * Auxiliary files (README.md, promptcuts.yaml) live in hooks/ but are not
8
8
  * hooks — the executable bit on the source distinguishes them. This matches
@@ -142,28 +142,6 @@ function buildGrokDetector() {
142
142
  },
143
143
  };
144
144
  }
145
- function buildGooseDetector() {
146
- return {
147
- kind: 'permissions',
148
- agent: 'goose',
149
- list({ versionHome }) {
150
- const permissionsPath = path.join(versionHome, '.config', 'goose', 'permission.yaml');
151
- if (!fs.existsSync(permissionsPath))
152
- return [];
153
- try {
154
- const config = yaml.parse(fs.readFileSync(permissionsPath, 'utf-8'));
155
- const user = config?.user;
156
- const count = (Array.isArray(user?.always_allow) ? user.always_allow.length : 0) +
157
- (Array.isArray(user?.ask_before) ? user.ask_before.length : 0) +
158
- (Array.isArray(user?.never_allow) ? user.never_allow.length : 0);
159
- if (count > 0)
160
- return discoverPermissionGroups().map(g => g.name);
161
- }
162
- catch { /* parse fail */ }
163
- return [];
164
- },
165
- };
166
- }
167
145
  function buildKimiDetector() {
168
146
  return {
169
147
  kind: 'permissions',
@@ -315,7 +293,6 @@ const handlers = {
315
293
  opencode: buildOpenCodeDetector,
316
294
  antigravity: buildAntigravityDetector,
317
295
  grok: buildGrokDetector,
318
- goose: buildGooseDetector,
319
296
  kimi: buildKimiDetector,
320
297
  cursor: buildCursorDetector,
321
298
  droid: buildDroidDetector,
@@ -1,5 +1,5 @@
1
1
  import { capableAgents } from '../../capabilities.js';
2
- import { discoverPlugins, isPluginSynced } from '../../plugins.js';
2
+ import { discoverPlugins, isPluginSynced } from '../../plugins/plugins.js';
3
3
  import { lazyAgentMap } from '../writers/lazy-map.js';
4
4
  function buildPluginsDetector(agent) {
5
5
  return {
@@ -23,7 +23,7 @@ export function fingerprintFile(filePath) {
23
23
  /**
24
24
  * Names we never fingerprint: OS metadata, VCS bookkeeping, dep caches,
25
25
  * build outputs. Matches the SKILL_COPY_IGNORE set used by the sync writer
26
- * in `src/lib/versions.ts`.
26
+ * in `src/lib/installations/versions.ts`.
27
27
  *
28
28
  * Important: this is an allowlist of noise, NOT a blanket "skip every
29
29
  * dot-prefixed entry". Plugins keep their manifest at
@@ -7,7 +7,7 @@
7
7
  * - "first-wins" (commands, skills, mcp, subagents, workflows, plugins):
8
8
  * project > user > system > extras. Same-named entries shadow.
9
9
  * - "first-wins, no project" (hooks): security exclusion — see
10
- * `src/lib/versions.ts:1832-1836` for the rationale. User > system > extras.
10
+ * `src/lib/installations/versions.ts:1832-1836` for the rationale. User > system > extras.
11
11
  * - "merged" (permissions): every layer contributes; first-wins on name.
12
12
  * - "composed" (rules): preset + subrules resolved per-name across layers.
13
13
  */
@@ -7,7 +7,7 @@
7
7
  * - "first-wins" (commands, skills, mcp, subagents, workflows, plugins):
8
8
  * project > user > system > extras. Same-named entries shadow.
9
9
  * - "first-wins, no project" (hooks): security exclusion — see
10
- * `src/lib/versions.ts:1832-1836` for the rationale. User > system > extras.
10
+ * `src/lib/installations/versions.ts:1832-1836` for the rationale. User > system > extras.
11
11
  * - "merged" (permissions): every layer contributes; first-wins on name.
12
12
  * - "composed" (rules): preset + subrules resolved per-name across layers.
13
13
  */
@@ -7,7 +7,9 @@ function buildMcpWriter(agent) {
7
7
  agent,
8
8
  write({ version, versionHome, selection, cwd }) {
9
9
  const r = installMcpServers(agent, version, versionHome, selection, { cwd });
10
- return { synced: r.applied };
10
+ // Forward r.errors: dropping them is what let a harness with no config
11
+ // writer report a clean sync while writing nothing (RUSH-2677).
12
+ return { synced: r.applied, ...(r.errors.length ? { errors: r.errors } : {}) };
11
13
  },
12
14
  };
13
15
  }
@@ -1,5 +1,5 @@
1
1
  import { capableAgents } from '../../capabilities.js';
2
- import { discoverPlugins, syncPluginToVersion, pluginSupportsAgent, cleanOrphanedPluginSkills } from '../../plugins.js';
2
+ import { discoverPlugins, syncPluginToVersion, pluginSupportsAgent, cleanOrphanedPluginSkills } from '../../plugins/plugins.js';
3
3
  import { lazyAgentMap } from './lazy-map.js';
4
4
  function buildPluginsWriter(agent) {
5
5
  return {
@@ -28,6 +28,14 @@ export interface WriteArgs<Sel> {
28
28
  export interface WriteResult {
29
29
  /** Names actually written. Empty array = write produced nothing (not an error). */
30
30
  synced: string[];
31
+ /**
32
+ * Per-item failures the writer could not complete, as user-facing sentences.
33
+ *
34
+ * `synced: []` alone cannot distinguish "nothing to do" from "refused to
35
+ * write and said why", which is how an unwritable harness reported success
36
+ * for its whole life (RUSH-2677). A writer that declines MUST say so here.
37
+ */
38
+ errors?: string[];
31
39
  }
32
40
  /**
33
41
  * Inverse of a write: locate and delete the materialized artifact for one
@@ -1,140 +1,9 @@
1
- /**
2
- * Lazy command registry.
3
- *
4
- * The CLI entry point (src/index.ts) used to statically import every command
5
- * module and call its `registerXCommand(program)` on every invocation. That
6
- * loaded the entire command tree (~50 modules) before the first line of output,
7
- * dominating cold-start latency.
8
- *
9
- * This module maps each user-typed top-level command name to a thunk that
10
- * dynamically imports ONLY the module(s) that command needs. Fast commands
11
- * (`--version`, `view`, ...) now pay for just the one module they use; the full
12
- * tree is loaded only on the rare slow paths (unknown-command spellcheck, bare
13
- * help) via `registerAllEagerCommands` in src/index.ts.
14
- *
15
- * Parity is non-negotiable: the name -> loader map below mirrors exactly which
16
- * module registers which top-level command on `main`. Multi-command modules
17
- * (versions, packages) map several names to the same loader; `prune` needs BOTH
18
- * versions (which creates `prune <specs...>`) and prune.js (which attaches the
19
- * `cleanup` subcommand to it), in that order — see commands/prune.ts.
20
- */
21
- import { Command } from 'commander';
22
- /** A function that registers one or more commands onto the root program. */
23
- export type Registrar = (program: Command) => void;
24
- /** A thunk that dynamically imports a command module and returns its registrar. */
25
- export type ModuleLoader = () => Promise<Registrar>;
26
- export declare const loadView: ModuleLoader;
27
- export declare const loadInspect: ModuleLoader;
28
- export declare const loadFeedback: ModuleLoader;
29
- export declare const loadCommands: ModuleLoader;
30
- export declare const loadHooks: ModuleLoader;
31
- export declare const loadSkills: ModuleLoader;
32
- export declare const loadRules: ModuleLoader;
33
- export declare const loadMemory: ModuleLoader;
34
- export declare const loadPermissions: ModuleLoader;
35
- export declare const loadMcp: ModuleLoader;
36
- export declare const loadCli: ModuleLoader;
37
- export declare const loadSubagents: ModuleLoader;
38
- export declare const loadPlugins: ModuleLoader;
39
- export declare const loadWorkflows: ModuleLoader;
40
- export declare const loadVersions: ModuleLoader;
41
- export declare const loadUpdate: ModuleLoader;
42
- export declare const loadImport: ModuleLoader;
43
- export declare const loadPackages: ModuleLoader;
44
- export declare const loadRoutines: ModuleLoader;
45
- export declare const loadMonitors: ModuleLoader;
46
- export declare const loadProjects: ModuleLoader;
47
- export declare const loadRun: ModuleLoader;
48
- export declare const loadResume: ModuleLoader;
49
- export declare const loadOpen: ModuleLoader;
50
- export declare const loadReconnect: ModuleLoader;
51
- export declare const loadFork: ModuleLoader;
52
- export declare const loadConfig: ModuleLoader;
53
- export declare const loadModels: ModuleLoader;
54
- export declare const loadModes: ModuleLoader;
55
- export declare const loadPrune: ModuleLoader;
56
- export declare const loadTrash: ModuleLoader;
57
- export declare const loadRestore: ModuleLoader;
58
- export declare const loadDoctor: ModuleLoader;
59
- export declare const loadApply: ModuleLoader;
60
- export declare const loadStatus: ModuleLoader;
61
- export declare const loadSnapshot: ModuleLoader;
62
- export declare const loadProfiles: ModuleLoader;
63
- export declare const loadHarness: ModuleLoader;
64
- export declare const loadSecrets: ModuleLoader;
65
- export declare const loadLogin: ModuleLoader;
66
- export declare const loadMenubar: ModuleLoader;
67
- export declare const loadBeta: ModuleLoader;
68
- export declare const loadSync: ModuleLoader;
69
- export declare const loadRefreshRules: ModuleLoader;
70
- export declare const loadFactory: ModuleLoader;
71
- export declare const loadUsage: ModuleLoader;
72
- export declare const loadCost: ModuleLoader;
73
- export declare const loadInsights: ModuleLoader;
74
- export declare const loadPerf: ModuleLoader;
75
- export declare const loadBench: ModuleLoader;
76
- export declare const loadTrends: ModuleLoader;
77
- export declare const loadOutput: ModuleLoader;
78
- export declare const loadBudget: ModuleLoader;
79
- export declare const loadAlias: ModuleLoader;
80
- export declare const loadMine: ModuleLoader;
81
- export declare const loadPty: ModuleLoader;
82
- export declare const loadTmux: ModuleLoader;
83
- export declare const loadWatchdog: ModuleLoader;
84
- export declare const loadBrowser: ModuleLoader;
85
- export declare const loadComputer: ModuleLoader;
86
- export declare const loadLogs: ModuleLoader;
87
- export declare const loadEvents: ModuleLoader;
88
- export declare const loadSsh: ModuleLoader;
89
- export declare const loadRepo: ModuleLoader;
90
- export declare const loadSetup: ModuleLoader;
91
- export declare const loadUninstall: ModuleLoader;
92
- export declare const loadUpgrade: ModuleLoader;
93
- export declare const loadSessions: ModuleLoader;
94
- export declare const loadTeams: ModuleLoader;
95
- export declare const loadTickets: ModuleLoader;
96
- export declare const loadCloud: ModuleLoader;
97
- export declare const loadMessage: ModuleLoader;
98
- export declare const loadSend: ModuleLoader;
99
- export declare const loadFeed: ModuleLoader;
100
- export declare const loadMailboxes: ModuleLoader;
101
- export declare const loadServe: ModuleLoader;
102
- export declare const loadArtifacts: ModuleLoader;
103
- export declare const loadAudit: ModuleLoader;
104
- export declare const loadWebhooks: ModuleLoader;
105
- export declare const loadHumans: ModuleLoader;
106
- export declare const loadAccounts: ModuleLoader;
107
- export declare const loadDaemon: ModuleLoader;
108
- export declare const loadCp: ModuleLoader;
109
- /**
110
- * Commands whose modules pull in the SQLite-backed session/cloud stack. They are
111
- * registered AFTER `applyGlobalHelpConventions` (mirroring main's order: help
112
- * conventions at module top-level, lazy registration just before parse), so they
113
- * inherit the root's custom help formatter rather than getting the per-command
114
- * recursive pass. Keeping that ordering preserves their `--help` output exactly.
115
- */
116
- export declare const LAZY_COMMAND_NAMES: ReadonlySet<string>;
117
- /**
118
- * User-typed top-level command name -> ordered list of module loaders to run.
119
- *
120
- * Most names map to a single loader. The exceptions encode real coupling on main:
121
- * - `add`/`use`/`list`/`remove`/`rm`/`purge` all come from the versions module.
122
- * - `registry`/`search`/`install` all come from the packages module.
123
- * - `trash` and `restore` are separate registrars in the trash module.
124
- * - `prune` needs versions FIRST (it creates `prune <specs...>`) then prune.js
125
- * (which finds that command and attaches the `cleanup` subcommand).
126
- *
127
- * Inline deprecated aliases (memory/perms/exec/jobs/cron) and the inline
128
- * `upgrade` command are NOT here — they are closures over entry-point state and
129
- * are handled directly in src/index.ts.
130
- */
131
- export declare const COMMAND_LOADERS: Record<string, ModuleLoader[]>;
132
1
  /**
133
2
  * Every top-level command name the CLI answers to — the loader table plus the
134
3
  * inline aliases/tombstones above. This is the "does this command exist?"
135
4
  * predicate for code that runs BEFORE commander parses, most importantly the
136
- * `--host`/`--device` router (lib/hosts/passthrough.ts): without it a typo'd
137
- * command carrying `--host` reported a flag-support error instead of
5
+ * `--device` router (lib/hosts/passthrough.ts): without it a typo'd
6
+ * command carrying `--device` reported a flag-support error instead of
138
7
  * `unknown command` (RUSH-2022).
139
8
  *
140
9
  * Commander sub-aliases (`sessions ls`, `teams rm`, …) are deliberately absent —
@@ -149,20 +18,9 @@ export declare const KNOWN_TOP_LEVEL_COMMANDS: ReadonlySet<string>;
149
18
  * the user never asked for instead of saying the command is gone.
150
19
  *
151
20
  * `set` moved under `agents models`/`agents config` (RUSH-2579); `share` moved
152
- * under `agents artifacts share` (RUSH-2580).
21
+ * under `agents artifacts share` (RUSH-2580). login/logout/budget/bench/mine/
22
+ * cost/output/profiles/snapshot/cp/resume/roster moved under nested homes
23
+ * (cli-surface-consolidate).
153
24
  */
154
25
  export declare const RETIRED_TOP_LEVEL_COMMANDS: ReadonlySet<string>;
155
- /** Whether `name` is a top-level command this CLI registers. See {@link KNOWN_TOP_LEVEL_COMMANDS}. */
156
26
  export declare function isKnownTopLevelCommand(name: string): boolean;
157
- /**
158
- * Register every module in {@link COMMAND_LOADERS} onto one fresh program and
159
- * return it — the full public command tree, deduped by loader identity so a
160
- * loader mapped to several names (e.g. `add`/`use`/`list` -> versions) runs once.
161
- *
162
- * Off the hot path only: the command-index generator (`scripts/gen-command-index.ts`)
163
- * and the tests build the tree from this. Startup never calls it — src/index.ts
164
- * registers just the one requested command via `registerEagerForRequest`. The
165
- * inline aliases/tombstones ({@link INLINE_COMMAND_NAMES}) are NOT included: they
166
- * are closures over entry-point state that src/index.ts registers directly.
167
- */
168
- export declare function buildFullCommandTree(): Promise<Command>;