@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,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;
@@ -47,6 +47,16 @@ export declare function getUserAgentsDir(): string;
47
47
  * @deprecated Use getUserAgentsDir() directly.
48
48
  */
49
49
  export declare function getOptionalUserAgentsDir(): string | null;
50
+ /**
51
+ * True when `agentsPath` is a reserved `.agents` root that must never be
52
+ * treated as a project layer: the user repo (~/.agents), the system repo
53
+ * (~/.agents/.system), or a git checkout of either canonical DotAgents repo.
54
+ * `getProjectAgentsDir` skips these while walking up; direct-cwd callers
55
+ * (`compileRulesForProject`) consult the same predicate so `$HOME` — whose
56
+ * `.agents/rules` is the user layer itself — can never compile as a
57
+ * "project" (RUSH-2725).
58
+ */
59
+ export declare function isReservedAgentsDir(agentsPath: string): boolean;
50
60
  /** Walk up from startPath to find a project-scoped .agents/ directory (skipping both roots). */
51
61
  export declare function getProjectAgentsDir(startPath?: string): string | null;
52
62
  /** Return all .agents/ directories in scope: project, user, then system. */
@@ -250,8 +260,15 @@ export declare function getTeamsRegistryPath(): string;
250
260
  export declare function getDevicesRegistryPath(): string;
251
261
  /** Path to the device ignore-list — tailscale node names the user dismissed, so auto-discovery never re-suggests them. Per-machine, same dir as the registry. */
252
262
  export declare function getDevicesIgnoredPath(): string;
253
- /** Path to the LEGACY device auto-launch preference file — which registered devices are eligible/preferred for the ext's auto-host selection. Superseded by the central `fleet.devices.<name>.config` block; only lib/devices/config-migration.ts still reads it (to fold + remove it). */
263
+ /** Path to the LEGACY device auto-launch preference file — which registered devices are eligible/preferred for the ext's auto-host selection. Superseded by the per-device doc `config:` block; only lib/devices/config-migration.ts still reads it (to fold + remove it). */
254
264
  export declare function getDevicesAutoLaunchPath(): string;
265
+ /** Path to THIS machine's agent pins — the `agents:` global defaults and
266
+ * `isolatedAgents:` pointers. Each pin names a version installed on THIS
267
+ * machine, so it is machine-local runtime state and lives beside the device
268
+ * registry under `.history/devices/` (untracked) — NOT in the tracked
269
+ * per-device doc, where auto-written pins caused commit churn on every
270
+ * `agents use` / install. Read at call time like the other devices-dir paths. */
271
+ export declare function getDevicePinsPath(): string;
255
272
  /** Dir of "pending device" sentinels (~/.agents/.cache/state/devices-pending/) — one empty-ish file per newly-discovered, not-yet-approved tailnet node. Written by the daemon probe, read by the menu-bar helper (mirrors the attention sentinel dir). */
256
273
  export declare function getDevicesPendingDir(): string;
257
274
  /** Path to cloud dispatch cache (~/.agents/.cache/cloud/). */
@@ -373,6 +390,7 @@ export declare function getDeviceMetaPath(): string;
373
390
  * Gitignored (under .history/) and regenerable; never synced.
374
391
  */
375
392
  export declare function getVersionResourcesPath(): string;
393
+ export declare function withMetaLock<T>(fn: () => T): T;
376
394
  /**
377
395
  * Read and cache ~/.agents/agents.yaml, migrating from legacy locations if needed.
378
396
  *