@phnx-labs/agents-cli 1.22.38 → 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 +302 -0
  2. package/README.md +111 -70
  3. package/dist/bin/agents +0 -0
  4. package/dist/bootstrap.js +46 -27
  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 +47 -4
  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 +161 -216
  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 +318 -48
  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 +12 -3
  191. package/dist/lib/config-keys.js +29 -6
  192. package/dist/lib/config-machine-keys.d.ts +4 -2
  193. package/dist/lib/config-machine-keys.js +6 -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 +116 -72
  206. package/dist/lib/device-config.js +366 -132
  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 +61 -0
  218. package/dist/lib/devices/pool.js +83 -0
  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 +8 -5
  239. package/dist/lib/exec.js +19 -13
  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} +49 -1
  304. package/dist/lib/{migrate.js → installations/migrate.js} +265 -38
  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 +36 -6
  474. package/dist/lib/smart-launch.js +65 -8
  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,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>;
@@ -1,283 +1,26 @@
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
- import { readFileSync } from 'node:fs';
23
- import { fileURLToPath } from 'node:url';
24
- import { configureRootCommand } from './root-command.js';
25
- // One loader per command module. Each dynamically imports the module and hands
26
- // back its register function. Kept as named consts so src/index.ts can compose
27
- // them into the exact main-branch registration order for the slow path.
28
- export const loadView = async () => (await import('../../commands/view.js')).registerViewCommand;
29
- export const loadInspect = async () => (await import('../../commands/inspect.js')).registerInspectCommand;
30
- export const loadFeedback = async () => (await import('../../commands/feedback.js')).registerFeedbackCommand;
31
- export const loadCommands = async () => (await import('../../commands/commands.js')).registerCommandsCommands;
32
- export const loadHooks = async () => (await import('../../commands/hooks.js')).registerHooksCommands;
33
- export const loadSkills = async () => (await import('../../commands/skills.js')).registerSkillsCommands;
34
- export const loadRules = async () => (await import('../../commands/rules.js')).registerRulesCommands;
35
- export const loadMemory = async () => (await import('../../commands/memory.js')).registerMemoryCommands;
36
- export const loadPermissions = async () => (await import('../../commands/permissions.js')).registerPermissionsCommands;
37
- export const loadMcp = async () => (await import('../../commands/mcp.js')).registerMcpCommands;
38
- export const loadCli = async () => (await import('../../commands/cli.js')).registerCliCommands;
39
- export const loadSubagents = async () => (await import('../../commands/subagents.js')).registerSubagentsCommands;
40
- export const loadPlugins = async () => (await import('../../commands/plugins.js')).registerPluginsCommands;
41
- export const loadWorkflows = async () => (await import('../../commands/workflows.js')).registerWorkflowsCommands;
42
- export const loadVersions = async () => (await import('../../commands/versions.js')).registerVersionsCommands;
43
- export const loadUpdate = async () => (await import('../../commands/update.js')).registerUpdateCommand;
44
- export const loadImport = async () => (await import('../../commands/import.js')).registerImportCommand;
45
- export const loadPackages = async () => (await import('../../commands/packages.js')).registerPackagesCommands;
46
- export const loadRoutines = async () => (await import('../../commands/routines.js')).registerRoutinesCommands;
47
- export const loadMonitors = async () => (await import('../../commands/monitors.js')).registerMonitorsCommands;
48
- export const loadProjects = async () => (await import('../../commands/projects.js')).registerProjectsCommands;
49
- export const loadRun = async () => (await import('../../commands/exec.js')).registerRunCommand;
50
- export const loadResume = async () => (await import('../../commands/resume.js')).registerResumeCommand;
51
- export const loadOpen = async () => (await import('../../commands/open.js')).registerOpenCommand;
52
- export const loadReconnect = async () => (await import('../../commands/reconnect.js')).registerReconnectCommand;
53
- export const loadFork = async () => (await import('../../commands/fork.js')).registerForkCommand;
54
- export const loadConfig = async () => (await import('../../commands/config.js')).registerConfigCommand;
55
- export const loadModels = async () => (await import('../../commands/models.js')).registerModelsCommand;
56
- export const loadModes = async () => (await import('../../commands/modes.js')).registerModesCommand;
57
- export const loadPrune = async () => (await import('../../commands/prune.js')).registerPruneCommand;
58
- export const loadTrash = async () => (await import('../../commands/trash.js')).registerTrashCommands;
59
- export const loadRestore = async () => (await import('../../commands/trash.js')).registerRestoreCommand;
60
- export const loadDoctor = async () => (await import('../../commands/doctor.js')).registerDoctorCommand;
61
- export const loadApply = async () => (await import('../../commands/apply.js')).registerApplyCommand;
62
- export const loadStatus = async () => (await import('../../commands/status.js')).registerStatusCommand;
63
- export const loadSnapshot = async () => (await import('../../commands/snapshot.js')).registerSnapshotCommand;
64
- export const loadProfiles = async () => (await import('../../commands/profiles.js')).registerProfilesCommands;
65
- export const loadHarness = async () => (await import('../../commands/harness.js')).registerHarnessCommands;
66
- export const loadSecrets = async () => (await import('../../commands/secrets.js')).registerSecretsCommands;
67
- export const loadLogin = async () => (await import('../../commands/login.js')).registerLoginCommands;
68
- export const loadMenubar = async () => (await import('../../commands/menubar.js')).registerMenubarCommands;
69
- export const loadBeta = async () => (await import('../../commands/beta.js')).registerBetaCommands;
70
- export const loadSync = async () => (await import('../../commands/sync.js')).registerSyncCommand;
71
- export const loadRefreshRules = async () => (await import('../../commands/refresh-rules.js')).registerRefreshRulesCommand;
72
- export const loadFactory = async () => (await import('../../commands/factory.js')).registerFactoryCommands;
73
- export const loadUsage = async () => (await import('../../commands/usage.js')).registerUsageCommand;
74
- export const loadCost = async () => (await import('../../commands/cost.js')).registerCostCommand;
75
- export const loadInsights = async () => (await import('../../commands/insights.js')).registerInsightsCommand;
76
- export const loadPerf = async () => (await import('../../commands/perf.js')).registerPerfCommand;
77
- export const loadBench = async () => (await import('../../commands/bench.js')).registerBenchCommand;
78
- // Thin deprecated alias of `agents insights mix` — no second mix implementation.
79
- export const loadTrends = async () => (await import('../../commands/trends.js')).registerTrendsCommand;
80
- export const loadOutput = async () => (await import('../../commands/output.js')).registerOutputCommand;
81
- export const loadBudget = async () => (await import('../../commands/budget.js')).registerBudgetCommand;
82
- export const loadAlias = async () => (await import('../../commands/alias.js')).registerAliasCommand;
83
- export const loadMine = async () => (await import('../../commands/mine.js')).registerMineCommand;
84
- export const loadPty = async () => (await import('../../commands/pty.js')).registerPtyCommands;
85
- export const loadTmux = async () => (await import('../../commands/tmux.js')).registerTmuxCommands;
86
- export const loadWatchdog = async () => (await import('../../commands/watchdog.js')).registerWatchdogCommand;
87
- export const loadBrowser = async () => (await import('../../commands/browser.js')).registerBrowserCommand;
88
- export const loadComputer = async () => (await import('../../commands/computer.js')).registerComputerCommand;
89
- export const loadLogs = async () => (await import('../../commands/logs.js')).registerLogsCommand;
90
- export const loadEvents = async () => (await import('../../commands/events.js')).registerEventsCommand;
91
- export const loadSsh = async () => (await import('../../commands/ssh.js')).registerSshCommands;
92
- export const loadRepo = async () => (await import('../../commands/repo.js')).registerRepoCommands;
93
- export const loadSetup = async () => (await import('../../commands/setup.js')).registerSetupCommand;
94
- export const loadUninstall = async () => (await import('../../commands/uninstall.js')).registerUninstallCommands;
95
- export const loadUpgrade = async () => (await import('../../commands/upgrade.js')).registerUpgradeCommand;
96
- export const loadSessions = async () => (await import('../../commands/sessions.js')).registerSessionsCommands;
97
- export const loadTeams = async () => (await import('../../commands/teams.js')).registerTeamsCommands;
98
- export const loadTickets = async () => (await import('../../commands/tickets.js')).registerTicketsCommand;
99
- export const loadCloud = async () => (await import('../../commands/cloud.js')).registerCloudCommands;
100
- export const loadMessage = async () => (await import('../../commands/message.js')).registerMessageCommand;
101
- export const loadSend = async () => (await import('../../commands/send.js')).registerSendCommand;
102
- export const loadFeed = async () => (await import('../../commands/feed.js')).registerFeedCommand;
103
- export const loadMailboxes = async () => (await import('../../commands/mailboxes.js')).registerMailboxesCommand;
104
- export const loadServe = async () => (await import('../../commands/serve.js')).registerServeCommand;
105
- // Registers the `artifacts` group (with `share` + `setup` under it) AND the
106
- // top-level `unshare` alias — see commands/artifacts.ts.
107
- export const loadArtifacts = async () => (await import('../../commands/artifacts.js')).registerArtifactsCommands;
108
- export const loadAudit = async () => (await import('../../commands/audit.js')).registerAuditCommands;
109
- export const loadWebhooks = async () => (await import('../../commands/webhook.js')).registerWebhooksCommand;
110
- export const loadHumans = async () => (await import('../../commands/humans.js')).registerHumansCommands;
111
- export const loadAccounts = async () => (await import('../../commands/accounts.js')).registerAccountsCommand;
112
- export const loadDaemon = async () => (await import('../../commands/daemon.js')).registerDaemonCommand;
113
- export const loadCp = async () => (await import('../../commands/cp.js')).registerCpCommand;
114
- /**
115
- * Commands whose modules pull in the SQLite-backed session/cloud stack. They are
116
- * registered AFTER `applyGlobalHelpConventions` (mirroring main's order: help
117
- * conventions at module top-level, lazy registration just before parse), so they
118
- * inherit the root's custom help formatter rather than getting the per-command
119
- * recursive pass. Keeping that ordering preserves their `--help` output exactly.
120
- */
121
- // `roster` is an observe-umbrella alias of `sessions --active` — same module,
122
- // same SQLite stack, same post-help registration order as sessions.
123
- export const LAZY_COMMAND_NAMES = new Set([
124
- 'sessions',
125
- 'resume',
126
- 'reconnect',
127
- 'roster',
128
- 'teams',
129
- 'cloud',
130
- 'message',
131
- 'serve',
132
- ]);
133
- /**
134
- * User-typed top-level command name -> ordered list of module loaders to run.
135
- *
136
- * Most names map to a single loader. The exceptions encode real coupling on main:
137
- * - `add`/`use`/`list`/`remove`/`rm`/`purge` all come from the versions module.
138
- * - `registry`/`search`/`install` all come from the packages module.
139
- * - `trash` and `restore` are separate registrars in the trash module.
140
- * - `prune` needs versions FIRST (it creates `prune <specs...>`) then prune.js
141
- * (which finds that command and attaches the `cleanup` subcommand).
142
- *
143
- * Inline deprecated aliases (memory/perms/exec/jobs/cron) and the inline
144
- * `upgrade` command are NOT here — they are closures over entry-point state and
145
- * are handled directly in src/index.ts.
146
- */
147
- export const COMMAND_LOADERS = {
148
- accounts: [loadAccounts],
149
- view: [loadView],
150
- inspect: [loadInspect],
151
- feedback: [loadFeedback],
152
- commands: [loadCommands],
153
- hooks: [loadHooks],
154
- skills: [loadSkills],
155
- rules: [loadRules],
156
- memory: [loadMemory],
157
- permissions: [loadPermissions],
158
- mcp: [loadMcp],
159
- clis: [loadCli],
160
- subagents: [loadSubagents],
161
- plugins: [loadPlugins],
162
- workflows: [loadWorkflows],
163
- add: [loadVersions],
164
- use: [loadVersions],
165
- list: [loadVersions],
166
- remove: [loadVersions],
167
- rm: [loadVersions],
168
- purge: [loadVersions],
169
- update: [loadUpdate],
170
- prune: [loadVersions, loadPrune],
171
- import: [loadImport],
172
- registry: [loadPackages],
173
- search: [loadPackages],
174
- install: [loadPackages],
175
- routines: [loadRoutines],
176
- monitors: [loadMonitors],
177
- projects: [loadProjects],
178
- run: [loadRun],
179
- resume: [loadResume],
180
- open: [loadOpen],
181
- reconnect: [loadReconnect],
182
- fork: [loadFork],
183
- config: [loadConfig],
184
- models: [loadModels],
185
- modes: [loadModes],
186
- trash: [loadTrash],
187
- restore: [loadRestore],
188
- doctor: [loadDoctor],
189
- apply: [loadApply],
190
- status: [loadStatus],
191
- snapshot: [loadSnapshot],
192
- profiles: [loadProfiles],
193
- harness: [loadHarness],
194
- harnesses: [loadHarness],
195
- secrets: [loadSecrets],
196
- login: [loadLogin],
197
- logout: [loadLogin],
198
- menubar: [loadMenubar],
199
- beta: [loadBeta],
200
- sync: [loadSync],
201
- 'refresh-rules': [loadRefreshRules],
202
- factory: [loadFactory],
203
- usage: [loadUsage],
204
- cost: [loadCost],
205
- insights: [loadInsights],
206
- perf: [loadPerf],
207
- bench: [loadBench],
208
- trends: [loadTrends],
209
- output: [loadOutput],
210
- budget: [loadBudget],
211
- alias: [loadAlias],
212
- mine: [loadMine],
213
- pty: [loadPty],
214
- tmux: [loadTmux],
215
- watchdog: [loadWatchdog],
216
- browser: [loadBrowser],
217
- computer: [loadComputer],
218
- logs: [loadLogs],
219
- events: [loadEvents],
220
- ssh: [loadSsh],
221
- devices: [loadSsh],
222
- // `fleet` is a commander alias of `devices` (see commands/ssh.ts); list it so
223
- // lazy registration loads the devices tree when the user types `agents fleet`.
224
- fleet: [loadSsh],
225
- // `repos` is the canonical command name; `repo` remains a convenience alias
226
- // (see commands/repo.ts). List both so lazy registration loads the tree
227
- // whichever the user types.
228
- repos: [loadRepo],
229
- repo: [loadRepo],
230
- setup: [loadSetup],
231
- uninstall: [loadUninstall],
232
- upgrade: [loadUpgrade],
233
- sessions: [loadSessions],
234
- // Observe-umbrella alias of sessions --active (same lazy module).
235
- roster: [loadSessions],
236
- teams: [loadTeams],
237
- tickets: [loadTickets],
238
- cloud: [loadCloud],
239
- message: [loadMessage],
240
- send: [loadSend],
241
- notify: [loadSend],
242
- feed: [loadFeed],
243
- // Observe-umbrella aliases of feed / feed --filter updates.
244
- inbox: [loadFeed],
245
- timeline: [loadFeed],
246
- mailboxes: [loadMailboxes],
247
- mailbox: [loadMailboxes],
248
- serve: [loadServe],
249
- artifacts: [loadArtifacts],
250
- // `unshare` is a top-level convenience alias of `artifacts share delete` (see
251
- // commands/share.ts) — same module, registered as its own program.command().
252
- unshare: [loadArtifacts],
253
- audit: [loadAudit],
254
- webhooks: [loadWebhooks],
255
- humans: [loadHumans],
256
- daemon: [loadDaemon],
257
- cp: [loadCp],
258
- };
259
- /**
260
- * Top-level names that {@link COMMAND_LOADERS} does not carry because they are
261
- * registered inline in src/index.ts — closures over entry-point state (the
262
- * deprecated aliases and tombstones) plus the internal command. They are
263
- * real commands, so anything that asks "does this command exist?" must count them.
264
- */
1
+ const LOADED_COMMAND_NAMES = [
2
+ 'accounts', 'view', 'inspect', 'feedback', 'commands', 'hooks', 'skills', 'rules', 'memory',
3
+ 'permissions', 'mcp', 'clis', 'subagents', 'plugins', 'workflows', 'add', 'use', 'list',
4
+ 'remove', 'rm', 'purge', 'update', 'prune', 'import', 'registry', 'search', 'install',
5
+ 'routines', 'monitors', 'projects', 'run', 'open', 'reconnect', 'fork', 'config',
6
+ 'models', 'modes', 'trash', 'restore', 'doctor', 'apply', 'status',
7
+ 'route', 'harness', 'harnesses', 'secrets', 'menubar', 'beta', 'sync',
8
+ 'refresh-rules', 'factory', 'usage', 'insights', 'perf', 'trends',
9
+ 'alias', 'pty', 'tmux', 'watchdog', 'browser', 'computer', 'logs', 'events',
10
+ 'ssh', 'devices', 'fleet', 'repos', 'repo', 'setup', 'uninstall', 'upgrade', 'sessions',
11
+ 'teams', 'tickets', 'cloud', 'message', 'send', 'notify', 'feed', 'inbox',
12
+ 'timeline', 'mailboxes', 'mailbox', 'serve', 'artifacts', 'unshare', 'audit', 'webhooks',
13
+ 'humans', 'daemon',
14
+ ];
265
15
  const INLINE_COMMAND_NAMES = [
266
- 'perms', // deprecated alias -> permissions
267
- 'exec', // deprecated alias -> run
268
- 'jobs', // deprecated alias -> routines
269
- 'cron', // deprecated alias -> routines
270
- 'check', // tombstone -> doctor --check
271
- 'resources', // tombstone -> view --merged
272
- 'hq', // tombstone
273
- '_internal',
16
+ 'perms', 'exec', 'jobs', 'cron', 'check', 'resources', 'hq', '_internal',
274
17
  ];
275
18
  /**
276
19
  * Every top-level command name the CLI answers to — the loader table plus the
277
20
  * inline aliases/tombstones above. This is the "does this command exist?"
278
21
  * predicate for code that runs BEFORE commander parses, most importantly the
279
- * `--host`/`--device` router (lib/hosts/passthrough.ts): without it a typo'd
280
- * command carrying `--host` reported a flag-support error instead of
22
+ * `--device` router (lib/hosts/passthrough.ts): without it a typo'd
23
+ * command carrying `--device` reported a flag-support error instead of
281
24
  * `unknown command` (RUSH-2022).
282
25
  *
283
26
  * Commander sub-aliases (`sessions ls`, `teams rm`, …) are deliberately absent —
@@ -285,7 +28,7 @@ const INLINE_COMMAND_NAMES = [
285
28
  * registered command tree so a new command can never drift out of it.
286
29
  */
287
30
  export const KNOWN_TOP_LEVEL_COMMANDS = new Set([
288
- ...Object.keys(COMMAND_LOADERS),
31
+ ...LOADED_COMMAND_NAMES,
289
32
  ...INLINE_COMMAND_NAMES,
290
33
  ]);
291
34
  /**
@@ -295,35 +38,27 @@ export const KNOWN_TOP_LEVEL_COMMANDS = new Set([
295
38
  * the user never asked for instead of saying the command is gone.
296
39
  *
297
40
  * `set` moved under `agents models`/`agents config` (RUSH-2579); `share` moved
298
- * under `agents artifacts share` (RUSH-2580).
41
+ * under `agents artifacts share` (RUSH-2580). login/logout/budget/bench/mine/
42
+ * cost/output/profiles/snapshot/cp/resume/roster moved under nested homes
43
+ * (cli-surface-consolidate).
299
44
  */
300
- export const RETIRED_TOP_LEVEL_COMMANDS = new Set(['webhook', 'set', 'share']);
301
- /** Whether `name` is a top-level command this CLI registers. See {@link KNOWN_TOP_LEVEL_COMMANDS}. */
45
+ export const RETIRED_TOP_LEVEL_COMMANDS = new Set([
46
+ 'webhook',
47
+ 'login',
48
+ 'logout',
49
+ 'budget',
50
+ 'bench',
51
+ 'mine',
52
+ 'cost',
53
+ 'output',
54
+ 'profiles',
55
+ 'snapshot',
56
+ 'cp',
57
+ 'resume',
58
+ 'roster',
59
+ 'set',
60
+ 'share',
61
+ ]);
302
62
  export function isKnownTopLevelCommand(name) {
303
63
  return KNOWN_TOP_LEVEL_COMMANDS.has(name);
304
64
  }
305
- /**
306
- * Register every module in {@link COMMAND_LOADERS} onto one fresh program and
307
- * return it — the full public command tree, deduped by loader identity so a
308
- * loader mapped to several names (e.g. `add`/`use`/`list` -> versions) runs once.
309
- *
310
- * Off the hot path only: the command-index generator (`scripts/gen-command-index.ts`)
311
- * and the tests build the tree from this. Startup never calls it — src/index.ts
312
- * registers just the one requested command via `registerEagerForRequest`. The
313
- * inline aliases/tombstones ({@link INLINE_COMMAND_NAMES}) are NOT included: they
314
- * are closures over entry-point state that src/index.ts registers directly.
315
- */
316
- export async function buildFullCommandTree() {
317
- const packageJson = JSON.parse(readFileSync(fileURLToPath(new URL('../../../package.json', import.meta.url)), 'utf8'));
318
- const program = configureRootCommand(new Command(), 'agents', packageJson.version);
319
- const done = new Set();
320
- for (const loaders of Object.values(COMMAND_LOADERS)) {
321
- for (const loader of loaders) {
322
- if (done.has(loader))
323
- continue;
324
- done.add(loader);
325
- (await loader())(program);
326
- }
327
- }
328
- return program;
329
- }
@@ -1,24 +1,3 @@
1
- /**
2
- * Decide whether the CLI is running from a source checkout (a "dev build") vs an
3
- * installed package. Dev builds suppress autopull / migrations / auto-update so
4
- * iterating on the repo never mutates the user's real setup.
5
- *
6
- * Two signals:
7
- * 1. A `0.0.0-dev*` version stamp (scripts/install.sh dev installs).
8
- * 2. Running out of an actual agents-cli git checkout.
9
- *
10
- * Signal 2 must be precise. The naive check —
11
- * `existsSync(dirname(dirname(argv[1])) + '/.git')` — false-positives badly:
12
- * - npm-global bins are symlinks. `/opt/homebrew/bin/agents` →
13
- * `…/node_modules/@phnx-labs/agents-cli/dist/index.js`. Without resolving the
14
- * symlink, `dirname(dirname())` walks to `/opt/homebrew`, which is **itself a
15
- * git repo** (Homebrew). So every Homebrew-node user looked like a dev build
16
- * and had migrations + the menu-bar self-heal silently disabled.
17
- *
18
- * Fix: resolve the symlink with realpath, then require the `.git`'s repo root to
19
- * actually be the agents-cli package (its package.json `name`), not some
20
- * unrelated ancestor that happens to be version-controlled.
21
- */
22
1
  /**
23
2
  * Whether a version string is the `0.0.0-dev.<sha>[-dirty]` stamp
24
3
  * `scripts/install.sh` writes for a side-by-side dev install (`install.sh:61`).
@@ -17,10 +17,22 @@ import * as path from 'path';
17
17
  * git repo** (Homebrew). So every Homebrew-node user looked like a dev build
18
18
  * and had migrations + the menu-bar self-heal silently disabled.
19
19
  *
20
- * Fix: resolve the symlink with realpath, then require the `.git`'s repo root to
21
- * actually be the agents-cli package (its package.json `name`), not some
22
- * unrelated ancestor that happens to be version-controlled.
20
+ * Fix: resolve the symlink with realpath and require the resolved package root's
21
+ * own package.json `name` to actually be the agents-cli package, before ever
22
+ * looking for `.git`.
23
+ *
24
+ * That package root does not always hold `.git` itself, though — this repo is a
25
+ * monorepo where the package lives at `apps/cli` and `.git` sits one level
26
+ * higher, at the true repo root. `.git` is therefore searched for in a SMALL,
27
+ * bounded set of ancestors above the package root (see
28
+ * `DEV_BUILD_GIT_ANCESTOR_DEPTH`), not just the package root itself — a source
29
+ * checkout run via tsx/ts-node from `apps/cli/src/` or built to
30
+ * `apps/cli/dist/` must still be recognized. The bound keeps this well short of
31
+ * an unrelated ancestor repo: a real Homebrew npm-global install's package root
32
+ * sits 3 directories below `/opt/homebrew` (`lib/node_modules/@phnx-labs/…`),
33
+ * so a depth of 2 finds this repo's `.git` while staying short of Homebrew's.
23
34
  */
35
+ const DEV_BUILD_GIT_ANCESTOR_DEPTH = 2;
24
36
  /**
25
37
  * Whether a version string is the `0.0.0-dev.<sha>[-dirty]` stamp
26
38
  * `scripts/install.sh` writes for a side-by-side dev install (`install.sh:61`).
@@ -38,14 +50,23 @@ export function detectDevBuild(argv1, version) {
38
50
  return true;
39
51
  try {
40
52
  const cliPath = fs.realpathSync(argv1 || '');
41
- const repoRoot = path.dirname(path.dirname(cliPath));
42
- if (!fs.existsSync(path.join(repoRoot, '.git')))
43
- return false;
44
- const pkgPath = path.join(repoRoot, 'package.json');
53
+ const packageRoot = path.dirname(path.dirname(cliPath));
54
+ const pkgPath = path.join(packageRoot, 'package.json');
45
55
  if (!fs.existsSync(pkgPath))
46
56
  return false;
47
57
  const name = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'))?.name;
48
- return name === '@phnx-labs/agents-cli';
58
+ if (name !== '@phnx-labs/agents-cli')
59
+ return false;
60
+ let dir = packageRoot;
61
+ for (let depth = 0; depth <= DEV_BUILD_GIT_ANCESTOR_DEPTH; depth++) {
62
+ if (fs.existsSync(path.join(dir, '.git')))
63
+ return true;
64
+ const parent = path.dirname(dir);
65
+ if (parent === dir)
66
+ return false; // reached the filesystem root
67
+ dir = parent;
68
+ }
69
+ return false;
49
70
  }
50
71
  catch {
51
72
  return false;