@phnx-labs/agents-cli 0.1.0 → 1.14.1

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 +7 -1
  2. package/README.md +283 -372
  3. package/dist/commands/alias.d.ts +11 -0
  4. package/dist/commands/alias.js +117 -0
  5. package/dist/commands/beta.d.ts +2 -0
  6. package/dist/commands/beta.js +53 -0
  7. package/dist/commands/cloud.d.ts +8 -1
  8. package/dist/commands/cloud.js +108 -22
  9. package/dist/commands/commands.d.ts +9 -1
  10. package/dist/commands/commands.js +24 -172
  11. package/dist/commands/daemon.d.ts +8 -1
  12. package/dist/commands/daemon.js +13 -5
  13. package/dist/commands/doctor.d.ts +15 -0
  14. package/dist/commands/doctor.js +132 -0
  15. package/dist/commands/drive.d.ts +8 -1
  16. package/dist/commands/drive.js +20 -3
  17. package/dist/commands/exec.d.ts +8 -1
  18. package/dist/commands/exec.js +96 -27
  19. package/dist/commands/factory.d.ts +19 -0
  20. package/dist/commands/factory.js +71 -0
  21. package/dist/commands/fork.d.ts +8 -1
  22. package/dist/commands/fork.js +11 -4
  23. package/dist/commands/hooks.d.ts +9 -1
  24. package/dist/commands/hooks.js +30 -182
  25. package/dist/commands/init.d.ts +15 -1
  26. package/dist/commands/init.js +168 -74
  27. package/dist/commands/mcp.d.ts +9 -1
  28. package/dist/commands/mcp.js +11 -7
  29. package/dist/commands/models.d.ts +8 -1
  30. package/dist/commands/models.js +16 -4
  31. package/dist/commands/packages.d.ts +8 -1
  32. package/dist/commands/packages.js +13 -7
  33. package/dist/commands/permissions.d.ts +9 -1
  34. package/dist/commands/permissions.js +3 -3
  35. package/dist/commands/plugins.d.ts +8 -1
  36. package/dist/commands/plugins.js +13 -2
  37. package/dist/commands/profiles.d.ts +9 -1
  38. package/dist/commands/profiles.js +56 -7
  39. package/dist/commands/prune.d.ts +22 -0
  40. package/dist/commands/prune.js +191 -0
  41. package/dist/commands/pty.d.ts +1 -1
  42. package/dist/commands/pty.js +2 -1
  43. package/dist/commands/pull.d.ts +8 -1
  44. package/dist/commands/pull.js +58 -128
  45. package/dist/commands/refresh-memory.d.ts +7 -1
  46. package/dist/commands/refresh-memory.js +7 -1
  47. package/dist/commands/repo.d.ts +15 -0
  48. package/dist/commands/repo.js +570 -0
  49. package/dist/commands/resource-view.d.ts +10 -3
  50. package/dist/commands/resource-view.js +18 -5
  51. package/dist/commands/routines.d.ts +8 -1
  52. package/dist/commands/routines.js +17 -4
  53. package/dist/commands/rules.d.ts +9 -1
  54. package/dist/commands/rules.js +16 -11
  55. package/dist/commands/secrets.d.ts +8 -1
  56. package/dist/commands/secrets.js +235 -63
  57. package/dist/commands/sessions-picker.d.ts +2 -1
  58. package/dist/commands/sessions-picker.js +88 -11
  59. package/dist/commands/sessions-tail.d.ts +19 -0
  60. package/dist/commands/sessions-tail.js +235 -0
  61. package/dist/commands/sessions.d.ts +2 -1
  62. package/dist/commands/sessions.js +188 -7
  63. package/dist/commands/skills.d.ts +9 -1
  64. package/dist/commands/skills.js +28 -178
  65. package/dist/commands/status.d.ts +7 -1
  66. package/dist/commands/status.js +7 -1
  67. package/dist/commands/subagents.d.ts +8 -1
  68. package/dist/commands/subagents.js +11 -1
  69. package/dist/commands/sync.d.ts +8 -1
  70. package/dist/commands/sync.js +8 -1
  71. package/dist/commands/teams-picker.d.ts +4 -1
  72. package/dist/commands/teams-picker.js +55 -3
  73. package/dist/commands/teams.d.ts +15 -1
  74. package/dist/commands/teams.js +323 -69
  75. package/dist/commands/usage.d.ts +11 -0
  76. package/dist/commands/usage.js +60 -0
  77. package/dist/commands/utils.d.ts +6 -1
  78. package/dist/commands/utils.js +6 -1
  79. package/dist/commands/versions.d.ts +8 -1
  80. package/dist/commands/versions.js +4 -3
  81. package/dist/commands/view.d.ts +47 -2
  82. package/dist/commands/view.js +317 -24
  83. package/dist/index.d.ts +7 -2
  84. package/dist/index.js +172 -34
  85. package/dist/lib/acp/client.d.ts +31 -0
  86. package/dist/lib/acp/client.js +117 -0
  87. package/dist/lib/acp/harnesses.d.ts +26 -0
  88. package/dist/lib/acp/harnesses.js +65 -0
  89. package/dist/lib/acp/run.d.ts +18 -0
  90. package/dist/lib/acp/run.js +39 -0
  91. package/dist/lib/agents.d.ts +74 -2
  92. package/dist/lib/agents.js +197 -21
  93. package/dist/lib/artifact-actions.d.ts +8 -4
  94. package/dist/lib/artifact-actions.js +8 -6
  95. package/dist/lib/auto-pull-worker.d.ts +11 -0
  96. package/dist/lib/auto-pull-worker.js +121 -0
  97. package/dist/lib/auto-pull.d.ts +31 -0
  98. package/dist/lib/auto-pull.js +97 -0
  99. package/dist/lib/beta.d.ts +23 -0
  100. package/dist/lib/beta.js +90 -0
  101. package/dist/lib/capabilities.d.ts +29 -0
  102. package/dist/lib/capabilities.js +74 -0
  103. package/dist/lib/cloud/codex.d.ts +9 -3
  104. package/dist/lib/cloud/codex.js +53 -13
  105. package/dist/lib/cloud/factory.d.ts +8 -3
  106. package/dist/lib/cloud/factory.js +19 -3
  107. package/dist/lib/cloud/registry.d.ts +10 -1
  108. package/dist/lib/cloud/registry.js +14 -3
  109. package/dist/lib/cloud/rush.d.ts +63 -3
  110. package/dist/lib/cloud/rush.js +273 -20
  111. package/dist/lib/cloud/store.d.ts +13 -1
  112. package/dist/lib/cloud/store.js +23 -4
  113. package/dist/lib/cloud/stream.d.ts +6 -1
  114. package/dist/lib/cloud/stream.js +95 -39
  115. package/dist/lib/cloud/types.d.ts +153 -8
  116. package/dist/lib/cloud/types.js +34 -2
  117. package/dist/lib/command-skills.d.ts +20 -0
  118. package/dist/lib/command-skills.js +142 -0
  119. package/dist/lib/commands.d.ts +22 -2
  120. package/dist/lib/commands.js +51 -11
  121. package/dist/lib/convert.d.ts +10 -1
  122. package/dist/lib/convert.js +9 -1
  123. package/dist/lib/daemon.d.ts +21 -1
  124. package/dist/lib/daemon.js +97 -4
  125. package/dist/lib/drive-sync.d.ts +18 -1
  126. package/dist/lib/drive-sync.js +57 -15
  127. package/dist/lib/exec.d.ts +23 -6
  128. package/dist/lib/exec.js +53 -17
  129. package/dist/lib/fs-walk.d.ts +2 -0
  130. package/dist/lib/fs-walk.js +40 -0
  131. package/dist/lib/fuzzy.d.ts +53 -0
  132. package/dist/lib/fuzzy.js +72 -0
  133. package/dist/lib/gemini-settings.d.ts +4 -0
  134. package/dist/lib/gemini-settings.js +33 -0
  135. package/dist/lib/git.d.ts +12 -2
  136. package/dist/lib/git.js +17 -6
  137. package/dist/lib/help.d.ts +20 -1
  138. package/dist/lib/help.js +45 -6
  139. package/dist/lib/hooks/match.d.ts +32 -0
  140. package/dist/lib/hooks/match.js +120 -0
  141. package/dist/lib/hooks.d.ts +17 -4
  142. package/dist/lib/hooks.js +119 -101
  143. package/dist/lib/manifest.d.ts +6 -1
  144. package/dist/lib/manifest.js +15 -4
  145. package/dist/lib/markdown.d.ts +0 -1
  146. package/dist/lib/markdown.js +6 -1
  147. package/dist/lib/mcp.d.ts +0 -1
  148. package/dist/lib/mcp.js +29 -33
  149. package/dist/lib/memory-compile.d.ts +13 -3
  150. package/dist/lib/memory-compile.js +31 -9
  151. package/dist/lib/memory.d.ts +14 -7
  152. package/dist/lib/memory.js +67 -38
  153. package/dist/lib/migrate.d.ts +8 -0
  154. package/dist/lib/migrate.js +85 -0
  155. package/dist/lib/models.d.ts +10 -4
  156. package/dist/lib/models.js +36 -15
  157. package/dist/lib/onepassword.d.ts +63 -0
  158. package/dist/lib/onepassword.js +186 -0
  159. package/dist/lib/paths.d.ts +8 -0
  160. package/dist/lib/paths.js +20 -0
  161. package/dist/lib/permissions.d.ts +24 -2
  162. package/dist/lib/permissions.js +117 -48
  163. package/dist/lib/picker.d.ts +10 -1
  164. package/dist/lib/picker.js +15 -1
  165. package/dist/lib/plugins.d.ts +7 -1
  166. package/dist/lib/plugins.js +10 -1
  167. package/dist/lib/profiles-presets.d.ts +10 -1
  168. package/dist/lib/profiles-presets.js +9 -1
  169. package/dist/lib/profiles.d.ts +35 -1
  170. package/dist/lib/profiles.js +36 -15
  171. package/dist/lib/pty-client.d.ts +1 -1
  172. package/dist/lib/pty-client.js +0 -1
  173. package/dist/lib/pty-server.d.ts +16 -2
  174. package/dist/lib/pty-server.js +92 -3
  175. package/dist/lib/registry.d.ts +23 -3
  176. package/dist/lib/registry.js +153 -8
  177. package/dist/lib/resources.d.ts +28 -1
  178. package/dist/lib/resources.js +79 -1
  179. package/dist/lib/rotate.d.ts +40 -13
  180. package/dist/lib/rotate.js +238 -40
  181. package/dist/lib/routines.d.ts +29 -1
  182. package/dist/lib/routines.js +32 -5
  183. package/dist/lib/runner.d.ts +14 -1
  184. package/dist/lib/runner.js +22 -3
  185. package/dist/lib/sandbox.d.ts +16 -1
  186. package/dist/lib/sandbox.js +39 -16
  187. package/dist/lib/scheduler.d.ts +8 -1
  188. package/dist/lib/scheduler.js +8 -1
  189. package/dist/lib/secrets/AgentsKeychain.app/Contents/CodeResources +0 -0
  190. package/dist/lib/secrets/AgentsKeychain.app/Contents/Info.plist +22 -0
  191. package/dist/lib/secrets/AgentsKeychain.app/Contents/MacOS/AgentsKeychain +0 -0
  192. package/dist/lib/secrets/AgentsKeychain.app/Contents/_CodeSignature/CodeResources +123 -0
  193. package/dist/lib/secrets/AgentsKeychain.app/Contents/embedded.provisionprofile +0 -0
  194. package/dist/lib/{secrets-bundles.d.ts → secrets/bundles.d.ts} +12 -2
  195. package/dist/lib/{secrets-bundles.js → secrets/bundles.js} +38 -17
  196. package/dist/lib/secrets/index.d.ts +55 -0
  197. package/dist/lib/secrets/index.js +211 -0
  198. package/dist/lib/secrets/profiles.d.ts +10 -0
  199. package/dist/lib/secrets/profiles.js +13 -0
  200. package/dist/lib/session/active.d.ts +43 -0
  201. package/dist/lib/session/active.js +392 -0
  202. package/dist/lib/session/artifacts.d.ts +12 -1
  203. package/dist/lib/session/artifacts.js +25 -5
  204. package/dist/lib/session/cloud.d.ts +30 -0
  205. package/dist/lib/session/cloud.js +121 -0
  206. package/dist/lib/session/db.d.ts +23 -2
  207. package/dist/lib/session/db.js +76 -12
  208. package/dist/lib/session/discover.d.ts +19 -4
  209. package/dist/lib/session/discover.js +344 -48
  210. package/dist/lib/session/parse.d.ts +28 -1
  211. package/dist/lib/session/parse.js +267 -9
  212. package/dist/lib/session/prompt.d.ts +9 -1
  213. package/dist/lib/session/prompt.js +17 -3
  214. package/dist/lib/session/render.d.ts +13 -1
  215. package/dist/lib/session/render.js +20 -1
  216. package/dist/lib/session/team-filter.d.ts +9 -1
  217. package/dist/lib/session/team-filter.js +11 -2
  218. package/dist/lib/session/types.d.ts +16 -2
  219. package/dist/lib/session/types.js +10 -2
  220. package/dist/lib/shims.d.ts +64 -5
  221. package/dist/lib/shims.js +309 -47
  222. package/dist/lib/skills.d.ts +27 -2
  223. package/dist/lib/skills.js +127 -65
  224. package/dist/lib/sqlite.d.ts +43 -0
  225. package/dist/lib/sqlite.js +94 -0
  226. package/dist/lib/state.d.ts +112 -27
  227. package/dist/lib/state.js +320 -148
  228. package/dist/lib/subagents.d.ts +9 -1
  229. package/dist/lib/subagents.js +70 -63
  230. package/dist/lib/sync-manifest.d.ts +81 -0
  231. package/dist/lib/sync-manifest.js +450 -0
  232. package/dist/lib/teams/agents.d.ts +103 -5
  233. package/dist/lib/teams/agents.js +414 -91
  234. package/dist/lib/teams/api.d.ts +26 -3
  235. package/dist/lib/teams/api.js +63 -3
  236. package/dist/lib/teams/debug.d.ts +6 -1
  237. package/dist/lib/teams/debug.js +6 -1
  238. package/dist/lib/teams/file_ops.d.ts +7 -1
  239. package/dist/lib/teams/file_ops.js +7 -1
  240. package/dist/lib/teams/index.d.ts +15 -0
  241. package/dist/lib/teams/index.js +14 -0
  242. package/dist/lib/teams/parsers.d.ts +4 -1
  243. package/dist/lib/teams/parsers.js +11 -1
  244. package/dist/lib/teams/persistence.d.ts +15 -1
  245. package/dist/lib/teams/persistence.js +102 -20
  246. package/dist/lib/teams/registry.d.ts +12 -1
  247. package/dist/lib/teams/registry.js +116 -33
  248. package/dist/lib/teams/summarizer.d.ts +15 -1
  249. package/dist/lib/teams/summarizer.js +14 -1
  250. package/dist/lib/teams/supervisor.d.ts +48 -0
  251. package/dist/lib/teams/supervisor.js +73 -0
  252. package/dist/lib/template.d.ts +8 -6
  253. package/dist/lib/template.js +8 -6
  254. package/dist/lib/types.d.ts +147 -8
  255. package/dist/lib/types.js +26 -3
  256. package/dist/lib/usage.d.ts +32 -1
  257. package/dist/lib/usage.js +70 -6
  258. package/dist/lib/version-duplicates.d.ts +21 -0
  259. package/dist/lib/version-duplicates.js +90 -0
  260. package/dist/lib/versions.d.ts +33 -4
  261. package/dist/lib/versions.js +376 -108
  262. package/package.json +32 -17
  263. package/scripts/postinstall.js +126 -30
  264. package/dist/commands/__tests__/sessions.test.d.ts +0 -2
  265. package/dist/commands/__tests__/sessions.test.d.ts.map +0 -1
  266. package/dist/commands/__tests__/sessions.test.js +0 -636
  267. package/dist/commands/__tests__/sessions.test.js.map +0 -1
  268. package/dist/commands/cloud.d.ts.map +0 -1
  269. package/dist/commands/cloud.js.map +0 -1
  270. package/dist/commands/commands.d.ts.map +0 -1
  271. package/dist/commands/commands.js.map +0 -1
  272. package/dist/commands/daemon.d.ts.map +0 -1
  273. package/dist/commands/daemon.js.map +0 -1
  274. package/dist/commands/drive.d.ts.map +0 -1
  275. package/dist/commands/drive.js.map +0 -1
  276. package/dist/commands/exec.d.ts.map +0 -1
  277. package/dist/commands/exec.js.map +0 -1
  278. package/dist/commands/fork.d.ts.map +0 -1
  279. package/dist/commands/fork.js.map +0 -1
  280. package/dist/commands/hooks.d.ts.map +0 -1
  281. package/dist/commands/hooks.js.map +0 -1
  282. package/dist/commands/init.d.ts.map +0 -1
  283. package/dist/commands/init.js.map +0 -1
  284. package/dist/commands/mcp.d.ts.map +0 -1
  285. package/dist/commands/mcp.js.map +0 -1
  286. package/dist/commands/models.d.ts.map +0 -1
  287. package/dist/commands/models.js.map +0 -1
  288. package/dist/commands/packages.d.ts.map +0 -1
  289. package/dist/commands/packages.js.map +0 -1
  290. package/dist/commands/permissions.d.ts.map +0 -1
  291. package/dist/commands/permissions.js.map +0 -1
  292. package/dist/commands/plugins.d.ts.map +0 -1
  293. package/dist/commands/plugins.js.map +0 -1
  294. package/dist/commands/profiles.d.ts.map +0 -1
  295. package/dist/commands/profiles.js.map +0 -1
  296. package/dist/commands/pty.d.ts.map +0 -1
  297. package/dist/commands/pty.js.map +0 -1
  298. package/dist/commands/pull.d.ts.map +0 -1
  299. package/dist/commands/pull.js.map +0 -1
  300. package/dist/commands/push.d.ts +0 -3
  301. package/dist/commands/push.d.ts.map +0 -1
  302. package/dist/commands/push.js +0 -180
  303. package/dist/commands/push.js.map +0 -1
  304. package/dist/commands/refresh-memory.d.ts.map +0 -1
  305. package/dist/commands/refresh-memory.js.map +0 -1
  306. package/dist/commands/resource-view.d.ts.map +0 -1
  307. package/dist/commands/resource-view.js.map +0 -1
  308. package/dist/commands/routines.d.ts.map +0 -1
  309. package/dist/commands/routines.js.map +0 -1
  310. package/dist/commands/rules.d.ts.map +0 -1
  311. package/dist/commands/rules.js.map +0 -1
  312. package/dist/commands/secrets.d.ts.map +0 -1
  313. package/dist/commands/secrets.js.map +0 -1
  314. package/dist/commands/sessions-picker.d.ts.map +0 -1
  315. package/dist/commands/sessions-picker.js.map +0 -1
  316. package/dist/commands/sessions.d.ts.map +0 -1
  317. package/dist/commands/sessions.js.map +0 -1
  318. package/dist/commands/skills.d.ts.map +0 -1
  319. package/dist/commands/skills.js.map +0 -1
  320. package/dist/commands/status.d.ts.map +0 -1
  321. package/dist/commands/status.js.map +0 -1
  322. package/dist/commands/subagents.d.ts.map +0 -1
  323. package/dist/commands/subagents.js.map +0 -1
  324. package/dist/commands/sync.d.ts.map +0 -1
  325. package/dist/commands/sync.js.map +0 -1
  326. package/dist/commands/teams-picker.d.ts.map +0 -1
  327. package/dist/commands/teams-picker.js.map +0 -1
  328. package/dist/commands/teams.d.ts.map +0 -1
  329. package/dist/commands/teams.js.map +0 -1
  330. package/dist/commands/utils.d.ts.map +0 -1
  331. package/dist/commands/utils.js.map +0 -1
  332. package/dist/commands/versions.d.ts.map +0 -1
  333. package/dist/commands/versions.js.map +0 -1
  334. package/dist/commands/view.d.ts.map +0 -1
  335. package/dist/commands/view.js.map +0 -1
  336. package/dist/index.d.ts.map +0 -1
  337. package/dist/index.js.map +0 -1
  338. package/dist/lib/__tests__/bugfixes.test.d.ts +0 -2
  339. package/dist/lib/__tests__/bugfixes.test.d.ts.map +0 -1
  340. package/dist/lib/__tests__/bugfixes.test.js +0 -192
  341. package/dist/lib/__tests__/bugfixes.test.js.map +0 -1
  342. package/dist/lib/__tests__/exec.test.d.ts +0 -2
  343. package/dist/lib/__tests__/exec.test.d.ts.map +0 -1
  344. package/dist/lib/__tests__/exec.test.js +0 -446
  345. package/dist/lib/__tests__/exec.test.js.map +0 -1
  346. package/dist/lib/__tests__/git-sync.test.d.ts +0 -2
  347. package/dist/lib/__tests__/git-sync.test.d.ts.map +0 -1
  348. package/dist/lib/__tests__/git-sync.test.js +0 -138
  349. package/dist/lib/__tests__/git-sync.test.js.map +0 -1
  350. package/dist/lib/__tests__/hooks.test.d.ts +0 -2
  351. package/dist/lib/__tests__/hooks.test.d.ts.map +0 -1
  352. package/dist/lib/__tests__/hooks.test.js +0 -203
  353. package/dist/lib/__tests__/hooks.test.js.map +0 -1
  354. package/dist/lib/__tests__/memory-compile.test.d.ts +0 -2
  355. package/dist/lib/__tests__/memory-compile.test.d.ts.map +0 -1
  356. package/dist/lib/__tests__/memory-compile.test.js +0 -95
  357. package/dist/lib/__tests__/memory-compile.test.js.map +0 -1
  358. package/dist/lib/__tests__/models.test.d.ts +0 -2
  359. package/dist/lib/__tests__/models.test.d.ts.map +0 -1
  360. package/dist/lib/__tests__/models.test.js +0 -239
  361. package/dist/lib/__tests__/models.test.js.map +0 -1
  362. package/dist/lib/__tests__/rotate.test.d.ts +0 -2
  363. package/dist/lib/__tests__/rotate.test.d.ts.map +0 -1
  364. package/dist/lib/__tests__/rotate.test.js +0 -80
  365. package/dist/lib/__tests__/rotate.test.js.map +0 -1
  366. package/dist/lib/__tests__/secrets-bundles.test.d.ts +0 -2
  367. package/dist/lib/__tests__/secrets-bundles.test.d.ts.map +0 -1
  368. package/dist/lib/__tests__/secrets-bundles.test.js +0 -104
  369. package/dist/lib/__tests__/secrets-bundles.test.js.map +0 -1
  370. package/dist/lib/__tests__/secrets.test.d.ts +0 -2
  371. package/dist/lib/__tests__/secrets.test.d.ts.map +0 -1
  372. package/dist/lib/__tests__/secrets.test.js +0 -90
  373. package/dist/lib/__tests__/secrets.test.js.map +0 -1
  374. package/dist/lib/__tests__/shims.test.d.ts +0 -2
  375. package/dist/lib/__tests__/shims.test.d.ts.map +0 -1
  376. package/dist/lib/__tests__/shims.test.js +0 -39
  377. package/dist/lib/__tests__/shims.test.js.map +0 -1
  378. package/dist/lib/__tests__/usage.test.d.ts +0 -2
  379. package/dist/lib/__tests__/usage.test.d.ts.map +0 -1
  380. package/dist/lib/__tests__/usage.test.js +0 -220
  381. package/dist/lib/__tests__/usage.test.js.map +0 -1
  382. package/dist/lib/__tests__/versions.test.d.ts +0 -2
  383. package/dist/lib/__tests__/versions.test.d.ts.map +0 -1
  384. package/dist/lib/__tests__/versions.test.js +0 -63
  385. package/dist/lib/__tests__/versions.test.js.map +0 -1
  386. package/dist/lib/agents.d.ts.map +0 -1
  387. package/dist/lib/agents.js.map +0 -1
  388. package/dist/lib/artifact-actions.d.ts.map +0 -1
  389. package/dist/lib/artifact-actions.js.map +0 -1
  390. package/dist/lib/cloud/codex.d.ts.map +0 -1
  391. package/dist/lib/cloud/codex.js.map +0 -1
  392. package/dist/lib/cloud/factory.d.ts.map +0 -1
  393. package/dist/lib/cloud/factory.js.map +0 -1
  394. package/dist/lib/cloud/registry.d.ts.map +0 -1
  395. package/dist/lib/cloud/registry.js.map +0 -1
  396. package/dist/lib/cloud/rush.d.ts.map +0 -1
  397. package/dist/lib/cloud/rush.js.map +0 -1
  398. package/dist/lib/cloud/store.d.ts.map +0 -1
  399. package/dist/lib/cloud/store.js.map +0 -1
  400. package/dist/lib/cloud/stream.d.ts.map +0 -1
  401. package/dist/lib/cloud/stream.js.map +0 -1
  402. package/dist/lib/cloud/types.d.ts.map +0 -1
  403. package/dist/lib/cloud/types.js.map +0 -1
  404. package/dist/lib/commands.d.ts.map +0 -1
  405. package/dist/lib/commands.js.map +0 -1
  406. package/dist/lib/convert.d.ts.map +0 -1
  407. package/dist/lib/convert.js.map +0 -1
  408. package/dist/lib/daemon.d.ts.map +0 -1
  409. package/dist/lib/daemon.js.map +0 -1
  410. package/dist/lib/drive-sync.d.ts.map +0 -1
  411. package/dist/lib/drive-sync.js.map +0 -1
  412. package/dist/lib/exec.d.ts.map +0 -1
  413. package/dist/lib/exec.js.map +0 -1
  414. package/dist/lib/factory.d.ts +0 -57
  415. package/dist/lib/factory.d.ts.map +0 -1
  416. package/dist/lib/factory.js +0 -110
  417. package/dist/lib/factory.js.map +0 -1
  418. package/dist/lib/git.d.ts.map +0 -1
  419. package/dist/lib/git.js.map +0 -1
  420. package/dist/lib/help.d.ts.map +0 -1
  421. package/dist/lib/help.js.map +0 -1
  422. package/dist/lib/hooks.d.ts.map +0 -1
  423. package/dist/lib/hooks.js.map +0 -1
  424. package/dist/lib/manifest.d.ts.map +0 -1
  425. package/dist/lib/manifest.js.map +0 -1
  426. package/dist/lib/markdown.d.ts.map +0 -1
  427. package/dist/lib/markdown.js.map +0 -1
  428. package/dist/lib/mcp.d.ts.map +0 -1
  429. package/dist/lib/mcp.js.map +0 -1
  430. package/dist/lib/memory-compile.d.ts.map +0 -1
  431. package/dist/lib/memory-compile.js.map +0 -1
  432. package/dist/lib/memory.d.ts.map +0 -1
  433. package/dist/lib/memory.js.map +0 -1
  434. package/dist/lib/models.d.ts.map +0 -1
  435. package/dist/lib/models.js.map +0 -1
  436. package/dist/lib/permissions.d.ts.map +0 -1
  437. package/dist/lib/permissions.js.map +0 -1
  438. package/dist/lib/picker.d.ts.map +0 -1
  439. package/dist/lib/picker.js.map +0 -1
  440. package/dist/lib/plugins.d.ts.map +0 -1
  441. package/dist/lib/plugins.js.map +0 -1
  442. package/dist/lib/profiles-keychain.d.ts +0 -3
  443. package/dist/lib/profiles-keychain.d.ts.map +0 -1
  444. package/dist/lib/profiles-keychain.js +0 -10
  445. package/dist/lib/profiles-keychain.js.map +0 -1
  446. package/dist/lib/profiles-presets.d.ts.map +0 -1
  447. package/dist/lib/profiles-presets.js.map +0 -1
  448. package/dist/lib/profiles.d.ts.map +0 -1
  449. package/dist/lib/profiles.js.map +0 -1
  450. package/dist/lib/pty-client.d.ts.map +0 -1
  451. package/dist/lib/pty-client.js.map +0 -1
  452. package/dist/lib/pty-server.d.ts.map +0 -1
  453. package/dist/lib/pty-server.js.map +0 -1
  454. package/dist/lib/registry.d.ts.map +0 -1
  455. package/dist/lib/registry.js.map +0 -1
  456. package/dist/lib/resources.d.ts.map +0 -1
  457. package/dist/lib/resources.js.map +0 -1
  458. package/dist/lib/rotate.d.ts.map +0 -1
  459. package/dist/lib/rotate.js.map +0 -1
  460. package/dist/lib/routines.d.ts.map +0 -1
  461. package/dist/lib/routines.js.map +0 -1
  462. package/dist/lib/runner.d.ts.map +0 -1
  463. package/dist/lib/runner.js.map +0 -1
  464. package/dist/lib/sandbox.d.ts.map +0 -1
  465. package/dist/lib/sandbox.js.map +0 -1
  466. package/dist/lib/scheduler.d.ts.map +0 -1
  467. package/dist/lib/scheduler.js.map +0 -1
  468. package/dist/lib/secrets-bundles.d.ts.map +0 -1
  469. package/dist/lib/secrets-bundles.js.map +0 -1
  470. package/dist/lib/secrets.d.ts +0 -27
  471. package/dist/lib/secrets.d.ts.map +0 -1
  472. package/dist/lib/secrets.js +0 -127
  473. package/dist/lib/secrets.js.map +0 -1
  474. package/dist/lib/session/__tests__/db.test.d.ts +0 -2
  475. package/dist/lib/session/__tests__/db.test.d.ts.map +0 -1
  476. package/dist/lib/session/__tests__/db.test.js +0 -54
  477. package/dist/lib/session/__tests__/db.test.js.map +0 -1
  478. package/dist/lib/session/__tests__/discover.test.d.ts +0 -2
  479. package/dist/lib/session/__tests__/discover.test.d.ts.map +0 -1
  480. package/dist/lib/session/__tests__/discover.test.js +0 -63
  481. package/dist/lib/session/__tests__/discover.test.js.map +0 -1
  482. package/dist/lib/session/__tests__/prompt.test.d.ts +0 -2
  483. package/dist/lib/session/__tests__/prompt.test.d.ts.map +0 -1
  484. package/dist/lib/session/__tests__/prompt.test.js +0 -44
  485. package/dist/lib/session/__tests__/prompt.test.js.map +0 -1
  486. package/dist/lib/session/__tests__/render.test.d.ts +0 -2
  487. package/dist/lib/session/__tests__/render.test.d.ts.map +0 -1
  488. package/dist/lib/session/__tests__/render.test.js +0 -602
  489. package/dist/lib/session/__tests__/render.test.js.map +0 -1
  490. package/dist/lib/session/artifacts.d.ts.map +0 -1
  491. package/dist/lib/session/artifacts.js.map +0 -1
  492. package/dist/lib/session/db.d.ts.map +0 -1
  493. package/dist/lib/session/db.js.map +0 -1
  494. package/dist/lib/session/discover.d.ts.map +0 -1
  495. package/dist/lib/session/discover.js.map +0 -1
  496. package/dist/lib/session/parse.d.ts.map +0 -1
  497. package/dist/lib/session/parse.js.map +0 -1
  498. package/dist/lib/session/prompt.d.ts.map +0 -1
  499. package/dist/lib/session/prompt.js.map +0 -1
  500. package/dist/lib/session/prompt.test.d.ts +0 -2
  501. package/dist/lib/session/prompt.test.d.ts.map +0 -1
  502. package/dist/lib/session/prompt.test.js +0 -57
  503. package/dist/lib/session/prompt.test.js.map +0 -1
  504. package/dist/lib/session/render.d.ts.map +0 -1
  505. package/dist/lib/session/render.js.map +0 -1
  506. package/dist/lib/session/team-filter.d.ts.map +0 -1
  507. package/dist/lib/session/team-filter.js.map +0 -1
  508. package/dist/lib/session/team-filter.test.d.ts +0 -2
  509. package/dist/lib/session/team-filter.test.d.ts.map +0 -1
  510. package/dist/lib/session/team-filter.test.js +0 -157
  511. package/dist/lib/session/team-filter.test.js.map +0 -1
  512. package/dist/lib/session/types.d.ts.map +0 -1
  513. package/dist/lib/session/types.js.map +0 -1
  514. package/dist/lib/shims.d.ts.map +0 -1
  515. package/dist/lib/shims.js.map +0 -1
  516. package/dist/lib/skills.d.ts.map +0 -1
  517. package/dist/lib/skills.js.map +0 -1
  518. package/dist/lib/state.d.ts.map +0 -1
  519. package/dist/lib/state.js.map +0 -1
  520. package/dist/lib/subagents.d.ts.map +0 -1
  521. package/dist/lib/subagents.js.map +0 -1
  522. package/dist/lib/teams/agents.d.ts.map +0 -1
  523. package/dist/lib/teams/agents.js.map +0 -1
  524. package/dist/lib/teams/api.d.ts.map +0 -1
  525. package/dist/lib/teams/api.js.map +0 -1
  526. package/dist/lib/teams/cloud.d.ts +0 -11
  527. package/dist/lib/teams/cloud.d.ts.map +0 -1
  528. package/dist/lib/teams/cloud.js +0 -169
  529. package/dist/lib/teams/cloud.js.map +0 -1
  530. package/dist/lib/teams/debug.d.ts.map +0 -1
  531. package/dist/lib/teams/debug.js.map +0 -1
  532. package/dist/lib/teams/file_ops.d.ts.map +0 -1
  533. package/dist/lib/teams/file_ops.js.map +0 -1
  534. package/dist/lib/teams/parsers.d.ts.map +0 -1
  535. package/dist/lib/teams/parsers.js.map +0 -1
  536. package/dist/lib/teams/persistence.d.ts.map +0 -1
  537. package/dist/lib/teams/persistence.js.map +0 -1
  538. package/dist/lib/teams/ralph.d.ts +0 -8
  539. package/dist/lib/teams/ralph.d.ts.map +0 -1
  540. package/dist/lib/teams/ralph.js +0 -59
  541. package/dist/lib/teams/ralph.js.map +0 -1
  542. package/dist/lib/teams/registry.d.ts.map +0 -1
  543. package/dist/lib/teams/registry.js.map +0 -1
  544. package/dist/lib/teams/summarizer.d.ts.map +0 -1
  545. package/dist/lib/teams/summarizer.js.map +0 -1
  546. package/dist/lib/template.d.ts.map +0 -1
  547. package/dist/lib/template.js.map +0 -1
  548. package/dist/lib/types.d.ts.map +0 -1
  549. package/dist/lib/types.js.map +0 -1
  550. package/dist/lib/usage.d.ts.map +0 -1
  551. package/dist/lib/usage.js.map +0 -1
  552. package/dist/lib/versions.d.ts.map +0 -1
  553. package/dist/lib/versions.js.map +0 -1
  554. package/scripts/rebuild-sqlite.sh +0 -46
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Alias command -- create top-level shim binaries that expand to `agents <subcommand>`.
3
+ *
4
+ * Generates executable scripts in ~/.agents/shims/ (already on PATH from the
5
+ * standard agents-cli install). Running `teams` becomes equivalent to
6
+ * `agents teams`. Aliases are tracked in ~/.agents/aliases.json so we can
7
+ * list, regenerate, or remove them without scanning the shims directory
8
+ * (which also holds agent CLI shims like claude/codex/gemini).
9
+ */
10
+ import type { Command } from 'commander';
11
+ export declare function registerAliasCommand(program: Command): void;
@@ -0,0 +1,117 @@
1
+ import chalk from 'chalk';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import { getAgentsDir } from '../lib/state.js';
5
+ import { getShimsDir } from '../lib/shims.js';
6
+ import { ALL_AGENT_IDS, AGENTS } from '../lib/agents.js';
7
+ const ALIASES_FILE = path.join(getAgentsDir(), 'aliases.json');
8
+ /** Names that would clobber an agent CLI shim or the `agents` binary itself. */
9
+ function reservedNames() {
10
+ const reserved = new Set(['agents']);
11
+ for (const id of ALL_AGENT_IDS)
12
+ reserved.add(AGENTS[id].cliCommand);
13
+ return reserved;
14
+ }
15
+ function readAliases() {
16
+ if (!fs.existsSync(ALIASES_FILE))
17
+ return {};
18
+ try {
19
+ const parsed = JSON.parse(fs.readFileSync(ALIASES_FILE, 'utf-8'));
20
+ return parsed && typeof parsed === 'object' ? parsed : {};
21
+ }
22
+ catch {
23
+ return {};
24
+ }
25
+ }
26
+ function writeAliases(map) {
27
+ fs.mkdirSync(path.dirname(ALIASES_FILE), { recursive: true });
28
+ fs.writeFileSync(ALIASES_FILE, JSON.stringify(map, null, 2) + '\n', 'utf-8');
29
+ }
30
+ function shimPath(name) {
31
+ return path.join(getShimsDir(), name);
32
+ }
33
+ function generateAliasShim(name, expansion) {
34
+ return `#!/bin/bash
35
+ # Auto-generated by agents-cli - do not edit
36
+ # Alias shim: ${name} -> agents ${expansion}
37
+ exec agents ${expansion} "$@"
38
+ `;
39
+ }
40
+ function isAliasShim(filePath) {
41
+ try {
42
+ const head = fs.readFileSync(filePath, 'utf-8').slice(0, 200);
43
+ return head.includes('# Alias shim:');
44
+ }
45
+ catch {
46
+ return false;
47
+ }
48
+ }
49
+ export function registerAliasCommand(program) {
50
+ const cmd = program
51
+ .command('alias')
52
+ .description('Create shorthand binaries that expand to `agents <subcommand>`');
53
+ cmd
54
+ .command('add <name> [expansion...]')
55
+ .description('Create an alias shim. If expansion is omitted, defaults to <name>.')
56
+ .action((name, expansion) => {
57
+ const expanded = expansion.length > 0 ? expansion.join(' ') : name;
58
+ if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(name)) {
59
+ console.error(chalk.red(`Invalid alias name "${name}". Use letters, digits, _ or -.`));
60
+ process.exit(1);
61
+ }
62
+ if (reservedNames().has(name)) {
63
+ console.error(chalk.red(`"${name}" is reserved (collides with an agent CLI or the agents binary).`));
64
+ process.exit(1);
65
+ }
66
+ const target = shimPath(name);
67
+ if (fs.existsSync(target) && !isAliasShim(target)) {
68
+ console.error(chalk.red(`Refusing to overwrite ${target} -- not an agents-cli alias shim.`));
69
+ process.exit(1);
70
+ }
71
+ fs.mkdirSync(getShimsDir(), { recursive: true });
72
+ fs.writeFileSync(target, generateAliasShim(name, expanded), 'utf-8');
73
+ fs.chmodSync(target, 0o755);
74
+ const map = readAliases();
75
+ map[name] = expanded;
76
+ writeAliases(map);
77
+ console.log(`${chalk.green('Created')} alias ${chalk.bold(name)} -> ${chalk.dim(`agents ${expanded}`)}`);
78
+ });
79
+ cmd
80
+ .command('remove <name>')
81
+ .alias('rm')
82
+ .description('Delete an alias shim')
83
+ .action((name) => {
84
+ const map = readAliases();
85
+ const target = shimPath(name);
86
+ if (!(name in map) && !fs.existsSync(target)) {
87
+ console.error(chalk.red(`No alias named "${name}".`));
88
+ process.exit(1);
89
+ }
90
+ if (fs.existsSync(target)) {
91
+ if (!isAliasShim(target)) {
92
+ console.error(chalk.red(`Refusing to delete ${target} -- not an agents-cli alias shim.`));
93
+ process.exit(1);
94
+ }
95
+ fs.unlinkSync(target);
96
+ }
97
+ delete map[name];
98
+ writeAliases(map);
99
+ console.log(`${chalk.yellow('Removed')} alias ${chalk.bold(name)}`);
100
+ });
101
+ cmd
102
+ .command('list')
103
+ .alias('ls')
104
+ .description('Show installed aliases')
105
+ .action(() => {
106
+ const map = readAliases();
107
+ const entries = Object.entries(map);
108
+ if (entries.length === 0) {
109
+ console.log(chalk.gray('No aliases. Try: agents alias add teams'));
110
+ return;
111
+ }
112
+ const width = entries.reduce((max, [n]) => Math.max(max, n.length), 0);
113
+ for (const [name, expansion] of entries) {
114
+ console.log(` ${chalk.bold(name.padEnd(width))} ${chalk.dim('->')} agents ${expansion}`);
115
+ }
116
+ });
117
+ }
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerBetaCommands(program: Command): void;
@@ -0,0 +1,53 @@
1
+ import chalk from 'chalk';
2
+ import { ALL_BETA_FEATURES, getBetaConfigLocation, getEnabledBetaFeatures, setBetaEnabled, } from '../lib/beta.js';
3
+ function parseFeatures(values) {
4
+ const valid = new Set(ALL_BETA_FEATURES);
5
+ const invalid = values.filter((value) => !valid.has(value));
6
+ if (invalid.length > 0) {
7
+ console.error(chalk.red(`Unknown beta feature: ${invalid.join(', ')}`));
8
+ console.error(chalk.gray(`Valid features: ${ALL_BETA_FEATURES.join(', ')}`));
9
+ process.exit(1);
10
+ }
11
+ return values;
12
+ }
13
+ export function registerBetaCommands(program) {
14
+ const beta = program
15
+ .command('beta')
16
+ .description('Enable or disable preview features like drive and factory.')
17
+ .addHelpText('after', `
18
+ Examples:
19
+ agents beta list
20
+ agents beta enable drive factory
21
+ agents beta disable drive
22
+ `);
23
+ beta
24
+ .command('list')
25
+ .description('Show available beta features and whether they are enabled.')
26
+ .action(() => {
27
+ const enabled = new Set(getEnabledBetaFeatures());
28
+ const location = getBetaConfigLocation();
29
+ console.log(chalk.bold('Beta Features'));
30
+ for (const feature of ALL_BETA_FEATURES) {
31
+ const state = enabled.has(feature) ? chalk.green('enabled') : chalk.gray('disabled');
32
+ console.log(` ${feature.padEnd(8)} ${state}`);
33
+ }
34
+ console.log('');
35
+ console.log(chalk.gray(`Config: ${location.path}`));
36
+ });
37
+ beta
38
+ .command('enable <features...>')
39
+ .description('Enable one or more beta features.')
40
+ .action((features) => {
41
+ const result = setBetaEnabled(parseFeatures(features), true);
42
+ console.log(chalk.green(`Enabled: ${features.join(', ')}`));
43
+ console.log(chalk.gray(`Saved to ${result.path}`));
44
+ });
45
+ beta
46
+ .command('disable <features...>')
47
+ .description('Disable one or more beta features.')
48
+ .action((features) => {
49
+ const result = setBetaEnabled(parseFeatures(features), false);
50
+ console.log(chalk.green(`Disabled: ${features.join(', ')}`));
51
+ console.log(chalk.gray(`Saved to ${result.path}`));
52
+ });
53
+ }
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Cloud dispatch commands for running agent tasks on remote infrastructure.
3
+ *
4
+ * Provides a unified CLI for dispatching, monitoring, and managing tasks
5
+ * across multiple cloud providers (Rush Cloud, Codex Cloud, Factory/Droid).
6
+ * All tasks are tracked locally in a SQLite database for cross-provider listing.
7
+ */
1
8
  import type { Command } from 'commander';
9
+ /** Register the `agents cloud` command tree (run, list, status, logs, cancel, message, providers). */
2
10
  export declare function registerCloudCommands(program: Command): void;
3
- //# sourceMappingURL=cloud.d.ts.map
@@ -2,12 +2,14 @@ import chalk from 'chalk';
2
2
  import * as fs from 'fs';
3
3
  import ora from 'ora';
4
4
  import { resolveProvider, getAllProviders, getDefaultProviderId } from '../lib/cloud/registry.js';
5
- import { insertTask, updateTaskStatus, getTaskById, listTasks as listStoredTasks } from '../lib/cloud/store.js';
5
+ import { insertTask, updateTaskStatus, getTaskById, listTasks as listStoredTasks, listActiveTasks } from '../lib/cloud/store.js';
6
6
  import { renderStream } from '../lib/cloud/stream.js';
7
+ /** Print an error message to stderr and exit. */
7
8
  function die(msg, code = 1) {
8
9
  console.error(chalk.red(msg));
9
10
  process.exit(code);
10
11
  }
12
+ /** Format an ISO timestamp as a human-readable relative time string. */
11
13
  function relTime(iso) {
12
14
  const secs = Math.floor((Date.now() - new Date(iso).getTime()) / 1000);
13
15
  if (secs < 10)
@@ -25,6 +27,7 @@ function truncate(s, n) {
25
27
  return s;
26
28
  return s.slice(0, n - 1) + '...';
27
29
  }
30
+ /** Return a chalk color function appropriate for the given task status. */
28
31
  function statusColor(status) {
29
32
  switch (status) {
30
33
  case 'queued':
@@ -40,17 +43,62 @@ function statusColor(status) {
40
43
  function isJsonMode(opts) {
41
44
  return Boolean(opts.json) || !process.stdout.isTTY;
42
45
  }
46
+ /** Register the `agents cloud` command tree (run, list, status, logs, cancel, message, providers). */
43
47
  export function registerCloudCommands(program) {
44
48
  const cloud = program
45
- .command('cloud')
46
- .description('Dispatch and manage cloud agent tasks across providers (Rush Cloud, Codex Cloud, Factory).');
49
+ .command('cloud', { hidden: true })
50
+ .description('Dispatch and manage cloud agent tasks across providers (Rush Cloud, Codex Cloud, Factory).')
51
+ .addHelpText('after', `
52
+ Providers:
53
+ rush Rush Cloud — dispatches against a GitHub repo + branch
54
+ codex Codex Cloud — runs in a pre-built Codex environment
55
+ factory Factory pods — Droid + computer-use targets
56
+
57
+ Examples:
58
+ # Dispatch a quick fix to Rush Cloud and stream the output
59
+ agents cloud run "fix the flaky e2e in apps/web/tests/checkout.spec.ts" --provider rush --repo getrush/rush --branch main
60
+
61
+ # Fire-and-forget (returns the task id, no streaming)
62
+ agents cloud run "bump tailwind to v4 and fix the breaks" --provider rush --repo getrush/rush --no-follow
63
+
64
+ # Multi-repo dispatch: touch both rush and rush-extension in one task
65
+ agents cloud run "rename POST /v1/charge -> /v2/charge across server + extension" --provider rush --repo getrush/rush --repo getrush/rush-extension
66
+
67
+ # Codex Cloud against a saved environment
68
+ agents cloud run "add pytest fixtures for the new billing module" --provider codex --env env_a1b2c3 --agent codex --timeout 30m
69
+
70
+ # Factory pod targeting a specific computer (Droid)
71
+ agents cloud run "QA the new onboarding flow end-to-end" --provider factory --computer mac-mini-1 --agent droid
72
+
73
+ # See every cloud task you've dispatched (most recent first)
74
+ agents cloud list
75
+
76
+ # Inspect a specific task
77
+ agents cloud status tsk_4f2a91
78
+
79
+ # Live-tail logs for a running task
80
+ agents cloud logs tsk_4f2a91
81
+
82
+ # Send a follow-up while the task is in needs-review
83
+ agents cloud message tsk_4f2a91 "Looks good — also update the OpenAPI spec"
84
+
85
+ # Cancel a runaway task
86
+ agents cloud cancel tsk_4f2a91
87
+
88
+ # See which providers are signed in and ready
89
+ agents cloud providers
90
+ `);
47
91
  // ── agents cloud run ──────────────────────────────────────────────────
48
92
  cloud
49
93
  .command('run [prompt]')
50
94
  .description('Dispatch a task to a cloud agent.')
51
95
  .option('--provider <id>', 'Cloud backend: rush, codex, factory')
52
96
  .option('--agent <name>', 'Agent to run: claude, codex, droid')
53
- .option('--repo <owner/repo>', 'GitHub repository (required for Rush Cloud)')
97
+ .option('--repo <owner/repo>', 'GitHub repository. Repeatable for multi-repo dispatch (Rush Cloud only).', (value, previous) => {
98
+ const acc = Array.isArray(previous) ? previous : [];
99
+ acc.push(value);
100
+ return acc;
101
+ })
54
102
  .option('--branch <name>', 'Target git branch')
55
103
  .option('-p, --prompt <text>', 'Inline prompt (alternative to positional argument)')
56
104
  .option('--timeout <duration>', 'Kill after duration (e.g., 30m, 2h)')
@@ -66,10 +114,13 @@ Examples:
66
114
  agents cloud run "fix the flaky test" --provider rush --repo user/repo
67
115
  agents cloud run task.md --provider rush --repo org/project --agent codex
68
116
 
117
+ # Rush Cloud — multi-repo (clones each into /workspace/<owner>/<name>/)
118
+ agents cloud run "refactor shared logger" --provider rush --repo user/rush --repo user/agents
119
+
69
120
  # Codex Cloud
70
121
  agents cloud run "add auth tests" --provider codex --env env_abc123
71
122
 
72
- # Default provider (set in ~/.agents/agents.yaml)
123
+ # Default provider (set in ~/.agents-system/agents.yaml)
73
124
  agents cloud run "refactor auth module" --repo user/repo
74
125
  `)
75
126
  .action(async (positionalPrompt, options) => {
@@ -78,15 +129,31 @@ Examples:
78
129
  let prompt = options.prompt || positionalPrompt;
79
130
  if (!prompt)
80
131
  die('Prompt is required. Pass it as an argument or with --prompt.');
81
- // If prompt is a file path, read it
132
+ // If prompt is a file path, read it and tell the user
82
133
  if (fs.existsSync(prompt) && fs.statSync(prompt).isFile()) {
83
- prompt = fs.readFileSync(prompt, 'utf-8').trim();
134
+ const filePath = prompt;
135
+ const stat = fs.statSync(filePath);
136
+ const sizeKB = (stat.size / 1024).toFixed(1);
137
+ prompt = fs.readFileSync(filePath, 'utf-8').trim();
138
+ if (process.stderr.isTTY) {
139
+ process.stderr.write(chalk.dim(`Reading prompt from ${filePath} (${sizeKB} KB)\n`));
140
+ }
84
141
  }
85
142
  const provider = resolveProvider(options.provider);
143
+ // --repo is repeatable: commander gives us an array via our collector.
144
+ // A single --repo value arrives as a one-element array; keep the legacy
145
+ // singular `repo` field in sync so providers that only know that field
146
+ // still dispatch correctly.
147
+ const repoValues = Array.isArray(options.repo)
148
+ ? options.repo
149
+ : options.repo
150
+ ? [options.repo]
151
+ : [];
86
152
  const dispatchOptions = {
87
153
  prompt,
88
154
  agent: options.agent,
89
- repo: options.repo,
155
+ repo: repoValues[0],
156
+ repos: repoValues.length > 0 ? repoValues : undefined,
90
157
  branch: options.branch,
91
158
  timeout: options.timeout,
92
159
  model: options.model,
@@ -137,23 +204,43 @@ Examples:
137
204
  .option('--provider <id>', 'Filter by provider')
138
205
  .option('--status <status>', 'Filter by status')
139
206
  .option('--limit <n>', 'Max results', '20')
140
- .option('--refresh', 'Fetch latest status from provider before displaying')
141
207
  .option('--json', 'JSON output')
142
208
  .action(async (options) => {
143
209
  const json = isJsonMode(options);
144
210
  const providerId = options.provider;
145
211
  const status = options.status;
146
212
  const limit = parseInt(options.limit, 10) || 20;
147
- // If --refresh and a specific provider, fetch from remote
148
- if (options.refresh && providerId) {
149
- const provider = resolveProvider(providerId);
150
- try {
151
- const remoteTasks = await provider.list({ status });
152
- for (const t of remoteTasks)
153
- insertTask(t);
213
+ // Auto-refresh tasks still in transient states (queued, allocating, running, input_required).
214
+ // Groups by provider to minimise resolver calls, refreshes each via provider.status().
215
+ const activeTasks = listActiveTasks();
216
+ if (activeTasks.length > 0) {
217
+ const byProvider = new Map();
218
+ for (const t of activeTasks) {
219
+ if (providerId && t.provider !== providerId)
220
+ continue;
221
+ let ids = byProvider.get(t.provider);
222
+ if (!ids) {
223
+ ids = [];
224
+ byProvider.set(t.provider, ids);
225
+ }
226
+ ids.push(t.id);
227
+ }
228
+ const refreshJobs = [];
229
+ for (const [pid, ids] of byProvider) {
230
+ try {
231
+ const provider = resolveProvider(pid);
232
+ for (const id of ids) {
233
+ refreshJobs.push(provider.status(id)
234
+ .then((fresh) => { insertTask(fresh); })
235
+ .catch(() => { }));
236
+ }
237
+ }
238
+ catch {
239
+ // provider not configured — skip
240
+ }
154
241
  }
155
- catch (err) {
156
- process.stderr.write(chalk.yellow(`Could not refresh from ${provider.name}: ${err.message}\n`));
242
+ if (refreshJobs.length > 0) {
243
+ await Promise.allSettled(refreshJobs);
157
244
  }
158
245
  }
159
246
  const tasks = listStoredTasks({ provider: providerId, status, limit });
@@ -241,7 +328,7 @@ Examples:
241
328
  const json = isJsonMode(options);
242
329
  const task = getTaskById(id);
243
330
  if (!task)
244
- die(`Task ${id} not found locally. Run 'agents cloud list --refresh' first.`);
331
+ die(`Task ${id} not found locally. Run 'agents cloud list' first.`);
245
332
  const provider = resolveProvider(task.provider);
246
333
  try {
247
334
  const result = await renderStream(provider.stream(id), { json });
@@ -303,7 +390,7 @@ Examples:
303
390
  const data = providers.map((p) => ({
304
391
  id: p.id,
305
392
  name: p.name,
306
- available: p.supports({}),
393
+ available: p.capabilities().available,
307
394
  default: p.id === defaultId,
308
395
  }));
309
396
  process.stdout.write(JSON.stringify(data, null, 2) + '\n');
@@ -311,7 +398,7 @@ Examples:
311
398
  }
312
399
  console.log(chalk.bold('Cloud Providers\n'));
313
400
  for (const p of providers) {
314
- const available = p.supports({});
401
+ const available = p.capabilities().available;
315
402
  const isDefault = p.id === defaultId;
316
403
  const status = available ? chalk.green('ready') : chalk.dim('not configured');
317
404
  const defaultTag = isDefault ? chalk.cyan(' (default)') : '';
@@ -319,4 +406,3 @@ Examples:
319
406
  }
320
407
  });
321
408
  }
322
- //# sourceMappingURL=cloud.js.map
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Slash command management for extending agents with custom markdown commands.
3
+ *
4
+ * Implements `agents commands` -- list, add, remove, sync, prune, and view
5
+ * markdown files that agents invoke mid-session as slash commands. Central
6
+ * storage lives in ~/.agents/commands/ and commands are synced to individual
7
+ * version homes (with TOML conversion for Gemini).
8
+ */
1
9
  import type { Command } from 'commander';
10
+ /** Register the `agents commands` command tree (list, add, remove, sync, prune, view). */
2
11
  export declare function registerCommandsCommands(program: Command): void;
3
- //# sourceMappingURL=commands.d.ts.map
@@ -3,15 +3,16 @@ import ora from 'ora';
3
3
  import * as fs from 'fs';
4
4
  import * as os from 'os';
5
5
  import * as path from 'path';
6
- import { checkbox, confirm } from '@inquirer/prompts';
7
- import { ALL_AGENT_IDS, COMMANDS_CAPABLE_AGENTS, resolveAgentName, formatAgentError, agentLabel, } from '../lib/agents.js';
6
+ import { checkbox } from '@inquirer/prompts';
7
+ import { ALL_AGENT_IDS, resolveAgentName, formatAgentError, agentLabel, } from '../lib/agents.js';
8
8
  import { cloneRepo } from '../lib/git.js';
9
- import { discoverCommands, resolveCommandSource, installCommandCentrally, uninstallCommand, listCentralCommands, getCommandInfo, diffVersionCommands, installCommandToVersion, removeCommandFromVersion, iterCommandsCapableVersions, } from '../lib/commands.js';
9
+ import { discoverCommands, resolveCommandSource, installCommandCentrally, uninstallCommand, listCentralCommands, getCommandInfo, diffVersionCommands, iterCommandsCapableVersions, } from '../lib/commands.js';
10
10
  import { getCommandsDir } from '../lib/state.js';
11
11
  import { showResourceList, buildTargetsSection, } from './resource-view.js';
12
- import { getGlobalDefault, syncResourcesToVersion, promptAgentVersionSelection, resolveAgentVersionTargets, } from '../lib/versions.js';
12
+ import { getGlobalDefault, resolveVersionAlias, syncResourcesToVersion, promptAgentVersionSelection, resolveAgentVersionTargets, } from '../lib/versions.js';
13
13
  import { recordVersionResources } from '../lib/state.js';
14
14
  import { isPromptCancelled, isInteractiveTerminal, parseCommaSeparatedList, printWithPager, requireInteractiveSelection, } from './utils.js';
15
+ /** Register the `agents commands` command tree (list, add, remove, sync, prune, view). */
15
16
  export function registerCommandsCommands(program) {
16
17
  const commandsCmd = program
17
18
  .command('commands')
@@ -58,7 +59,7 @@ When to use:
58
59
  process.exit(1);
59
60
  }
60
61
  filterAgent = resolved;
61
- filterVersion = parts[1] || undefined;
62
+ filterVersion = resolveVersionAlias(resolved, parts[1]);
62
63
  }
63
64
  const rows = buildCommandRows({ filterAgent, filterVersion });
64
65
  spinner.stop();
@@ -127,7 +128,7 @@ Examples:
127
128
  }
128
129
  // Build choices with descriptions
129
130
  const choices = centralCommands.map((name) => {
130
- const cmdPath = path.join(os.homedir(), '.agents', 'commands', `${name}.md`);
131
+ const cmdPath = path.join(getCommandsDir(), `${name}.md`);
131
132
  let description = '';
132
133
  if (fs.existsSync(cmdPath)) {
133
134
  const content = fs.readFileSync(cmdPath, 'utf-8');
@@ -324,174 +325,26 @@ Examples:
324
325
  }
325
326
  }
326
327
  });
328
+ // `commands sync` is gone — sync runs automatically when the agent launches.
327
329
  commandsCmd
328
- .command('sync')
329
- .description('Reconcile version-home commands against central ~/.agents/commands/ (add + update, never delete)')
330
- .option('-a, --agent <agent>', 'Scope to a specific agent or agent@version')
331
- .option('-m, --method <method>', 'Install method: copy (default) or symlink (markdown-format agents only)', 'copy')
332
- .addHelpText('after', `
333
- Examples:
334
- # Sync every installed version
335
- agents commands sync
336
-
337
- # Scope to one agent or version
338
- agents commands sync --agent claude
339
- agents commands sync --agent claude@2.1.113
340
-
341
- # Symlink into version homes (propagates central edits automatically, markdown agents only)
342
- agents commands sync --method symlink
343
-
344
- Note: Gemini uses TOML — symlink is ignored and a fresh conversion is written
345
- on every sync. Sync is additive: to remove orphans, use 'agents commands prune'.
346
- `)
347
- .action(async (options) => {
348
- const method = (options.method === 'symlink' ? 'symlink' : 'copy');
349
- let filter;
350
- if (options.agent) {
351
- const [name, version] = String(options.agent).split('@');
352
- const agentId = resolveAgentName(name);
353
- if (!agentId) {
354
- console.log(chalk.red(formatAgentError(name, COMMANDS_CAPABLE_AGENTS)));
355
- process.exit(1);
356
- }
357
- filter = { agent: agentId, version: version || undefined };
358
- }
359
- const pairs = iterCommandsCapableVersions(filter);
360
- if (pairs.length === 0) {
361
- console.log(chalk.gray('No matching installed versions.'));
362
- return;
363
- }
364
- const diffs = pairs.map(({ agent, version }) => diffVersionCommands(agent, version));
365
- const plan = diffs.filter((d) => d.toAdd.length > 0 || d.toUpdate.length > 0);
366
- if (plan.length === 0) {
367
- console.log(chalk.green('All version homes are up to date with central.'));
368
- if (diffs.some((d) => d.orphans.length > 0)) {
369
- console.log(chalk.gray('Orphan commands present. Run \'agents commands prune --dry-run\' to review.'));
370
- }
371
- return;
372
- }
373
- console.log(chalk.bold(`Syncing commands (method: ${method})\n`));
374
- let adds = 0, updates = 0, failures = 0;
375
- for (const diff of plan) {
376
- const label = `${diff.agent}@${diff.version}`;
377
- if (diff.toAdd.length > 0) {
378
- console.log(` ${chalk.cyan(label)} ${chalk.gray('add:')} ${diff.toAdd.join(', ')}`);
379
- for (const name of diff.toAdd) {
380
- const r = installCommandToVersion(diff.agent, diff.version, name, method);
381
- if (r.success)
382
- adds++;
383
- else {
384
- failures++;
385
- console.log(chalk.red(` ! ${name}: ${r.error}`));
386
- }
387
- }
388
- }
389
- if (diff.toUpdate.length > 0) {
390
- console.log(` ${chalk.cyan(label)} ${chalk.gray('update:')} ${diff.toUpdate.join(', ')}`);
391
- for (const name of diff.toUpdate) {
392
- const r = installCommandToVersion(diff.agent, diff.version, name, method);
393
- if (r.success)
394
- updates++;
395
- else {
396
- failures++;
397
- console.log(chalk.red(` ! ${name}: ${r.error}`));
398
- }
399
- }
400
- }
401
- }
402
- console.log();
403
- console.log(chalk.green(`Synced: ${adds} added, ${updates} updated${failures > 0 ? chalk.red(`, ${failures} failed`) : ''}.`));
404
- const totalOrphans = diffs.reduce((n, d) => n + d.orphans.length, 0);
405
- if (totalOrphans > 0) {
406
- console.log(chalk.gray(`${totalOrphans} orphan(s) remain. Run 'agents commands prune --dry-run' to review.`));
407
- }
330
+ .command('sync', { hidden: true })
331
+ .allowUnknownOption()
332
+ .allowExcessArguments()
333
+ .action(() => {
334
+ console.error(chalk.red('"agents commands sync" is gone.'));
335
+ console.error(chalk.gray('Sync runs automatically when you launch the agent.'));
336
+ console.error(chalk.gray('To remove orphans, use: agents prune commands'));
337
+ process.exit(1);
408
338
  });
339
+ // `commands prune` moved to the top-level `agents prune` command.
409
340
  commandsCmd
410
- .command('prune')
411
- .description('Remove orphan commands from version homes (commands present locally but not in central)')
412
- .option('-a, --agent <agent>', 'Scope to a specific agent or agent@version')
413
- .option('--dry-run', 'Show orphans without deleting')
414
- .option('-y, --yes', 'Skip confirmation prompt')
415
- .addHelpText('after', `
416
- Examples:
417
- # See what would be pruned
418
- agents commands prune --dry-run
419
-
420
- # Prune across every installed version (prompts for confirmation)
421
- agents commands prune
422
-
423
- # Scope to one agent or version
424
- agents commands prune --agent claude@2.0.65
425
-
426
- # Skip confirmation (for scripts)
427
- agents commands prune -y
428
- `)
429
- .action(async (options) => {
430
- let filter;
431
- if (options.agent) {
432
- const [name, version] = String(options.agent).split('@');
433
- const agentId = resolveAgentName(name);
434
- if (!agentId) {
435
- console.log(chalk.red(formatAgentError(name, COMMANDS_CAPABLE_AGENTS)));
436
- process.exit(1);
437
- }
438
- filter = { agent: agentId, version: version || undefined };
439
- }
440
- const pairs = iterCommandsCapableVersions(filter);
441
- const diffs = pairs
442
- .map(({ agent, version }) => diffVersionCommands(agent, version))
443
- .filter((d) => d.orphans.length > 0);
444
- if (diffs.length === 0) {
445
- console.log(chalk.green('No orphan commands.'));
446
- return;
447
- }
448
- const total = diffs.reduce((n, d) => n + d.orphans.length, 0);
449
- console.log(chalk.bold(`Orphans (in version home, not in central)\n`));
450
- for (const d of diffs) {
451
- console.log(` ${chalk.cyan(`${d.agent}@${d.version}`)} ${d.orphans.join(', ')}`);
452
- }
453
- console.log();
454
- if (options.dryRun) {
455
- console.log(chalk.gray(`${total} orphan(s). Run without --dry-run to delete.`));
456
- return;
457
- }
458
- if (!options.yes) {
459
- if (!isInteractiveTerminal()) {
460
- console.log(chalk.yellow('Non-interactive shell: pass -y to confirm, or --dry-run to preview.'));
461
- process.exit(1);
462
- }
463
- let ok = false;
464
- try {
465
- ok = await confirm({
466
- message: `Delete ${total} orphan command${total === 1 ? '' : 's'}?`,
467
- default: false,
468
- });
469
- }
470
- catch (err) {
471
- if (isPromptCancelled(err)) {
472
- console.log(chalk.gray('Cancelled'));
473
- return;
474
- }
475
- throw err;
476
- }
477
- if (!ok) {
478
- console.log(chalk.gray('Cancelled'));
479
- return;
480
- }
481
- }
482
- let removed = 0, failures = 0;
483
- for (const d of diffs) {
484
- for (const name of d.orphans) {
485
- const r = removeCommandFromVersion(d.agent, d.version, name);
486
- if (r.success)
487
- removed++;
488
- else {
489
- failures++;
490
- console.log(chalk.red(` ! ${d.agent}@${d.version} ${name}: ${r.error}`));
491
- }
492
- }
493
- }
494
- console.log(chalk.green(`Pruned ${removed} orphan(s)${failures > 0 ? chalk.red(`, ${failures} failed`) : ''}.`));
341
+ .command('prune', { hidden: true })
342
+ .allowUnknownOption()
343
+ .allowExcessArguments()
344
+ .action(() => {
345
+ console.error(chalk.red('"agents commands prune" moved.'));
346
+ console.error(chalk.gray('Use: agents prune commands (or `agents prune` for everything)'));
347
+ process.exit(1);
495
348
  });
496
349
  commandsCmd
497
350
  .command('view [name]')
@@ -625,4 +478,3 @@ function formatCommandDetail(name, info, targets) {
625
478
  lines.push(buildTargetsSection(targets));
626
479
  return lines.join('\n');
627
480
  }
628
- //# sourceMappingURL=commands.js.map