@phnx-labs/agents-cli 1.12.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 (496) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/README.md +293 -300
  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 +10 -0
  8. package/dist/commands/cloud.js +408 -0
  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 +207 -20
  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 +45 -6
  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 +11 -0
  38. package/dist/commands/profiles.js +291 -0
  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 +93 -129
  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 +10 -0
  56. package/dist/commands/secrets.js +511 -0
  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 +288 -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 +353 -20
  83. package/dist/index.d.ts +7 -2
  84. package/dist/index.js +205 -38
  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 +207 -23
  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 +25 -0
  104. package/dist/lib/cloud/codex.js +250 -0
  105. package/dist/lib/cloud/factory.d.ts +31 -0
  106. package/dist/lib/cloud/factory.js +53 -0
  107. package/dist/lib/cloud/registry.d.ts +15 -0
  108. package/dist/lib/cloud/registry.js +67 -0
  109. package/dist/lib/cloud/rush.d.ts +75 -0
  110. package/dist/lib/cloud/rush.js +438 -0
  111. package/dist/lib/cloud/store.d.ts +22 -0
  112. package/dist/lib/cloud/store.js +115 -0
  113. package/dist/lib/cloud/stream.d.ts +23 -0
  114. package/dist/lib/cloud/stream.js +194 -0
  115. package/dist/lib/cloud/types.d.ts +205 -0
  116. package/dist/lib/cloud/types.js +34 -0
  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 +25 -5
  128. package/dist/lib/exec.js +72 -27
  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 +191 -21
  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 +25 -11
  156. package/dist/lib/models.js +405 -16
  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 +24 -0
  168. package/dist/lib/profiles-presets.js +103 -0
  169. package/dist/lib/profiles.d.ts +69 -0
  170. package/dist/lib/profiles.js +144 -0
  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 +79 -0
  180. package/dist/lib/rotate.js +285 -0
  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 +39 -0
  195. package/dist/lib/secrets/bundles.js +189 -0
  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 +16 -0
  203. package/dist/lib/session/artifacts.js +95 -0
  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 +24 -2
  219. package/dist/lib/session/types.js +10 -2
  220. package/dist/lib/shims.d.ts +93 -5
  221. package/dist/lib/shims.js +380 -67
  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 +114 -22
  227. package/dist/lib/state.js +323 -138
  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 +48 -1
  257. package/dist/lib/usage.js +97 -16
  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 +39 -4
  261. package/dist/lib/versions.js +401 -111
  262. package/package.json +33 -18
  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/commands.d.ts.map +0 -1
  269. package/dist/commands/commands.js.map +0 -1
  270. package/dist/commands/daemon.d.ts.map +0 -1
  271. package/dist/commands/daemon.js.map +0 -1
  272. package/dist/commands/drive.d.ts.map +0 -1
  273. package/dist/commands/drive.js.map +0 -1
  274. package/dist/commands/exec.d.ts.map +0 -1
  275. package/dist/commands/exec.js.map +0 -1
  276. package/dist/commands/fork.d.ts.map +0 -1
  277. package/dist/commands/fork.js.map +0 -1
  278. package/dist/commands/hooks.d.ts.map +0 -1
  279. package/dist/commands/hooks.js.map +0 -1
  280. package/dist/commands/init.d.ts.map +0 -1
  281. package/dist/commands/init.js.map +0 -1
  282. package/dist/commands/mcp.d.ts.map +0 -1
  283. package/dist/commands/mcp.js.map +0 -1
  284. package/dist/commands/models.d.ts.map +0 -1
  285. package/dist/commands/models.js.map +0 -1
  286. package/dist/commands/packages.d.ts.map +0 -1
  287. package/dist/commands/packages.js.map +0 -1
  288. package/dist/commands/permissions.d.ts.map +0 -1
  289. package/dist/commands/permissions.js.map +0 -1
  290. package/dist/commands/plugins.d.ts.map +0 -1
  291. package/dist/commands/plugins.js.map +0 -1
  292. package/dist/commands/pty.d.ts.map +0 -1
  293. package/dist/commands/pty.js.map +0 -1
  294. package/dist/commands/pull.d.ts.map +0 -1
  295. package/dist/commands/pull.js.map +0 -1
  296. package/dist/commands/push.d.ts +0 -3
  297. package/dist/commands/push.d.ts.map +0 -1
  298. package/dist/commands/push.js +0 -180
  299. package/dist/commands/push.js.map +0 -1
  300. package/dist/commands/refresh-memory.d.ts.map +0 -1
  301. package/dist/commands/refresh-memory.js.map +0 -1
  302. package/dist/commands/resource-view.d.ts.map +0 -1
  303. package/dist/commands/resource-view.js.map +0 -1
  304. package/dist/commands/routines.d.ts.map +0 -1
  305. package/dist/commands/routines.js.map +0 -1
  306. package/dist/commands/rules.d.ts.map +0 -1
  307. package/dist/commands/rules.js.map +0 -1
  308. package/dist/commands/sessions-picker.d.ts.map +0 -1
  309. package/dist/commands/sessions-picker.js.map +0 -1
  310. package/dist/commands/sessions.d.ts.map +0 -1
  311. package/dist/commands/sessions.js.map +0 -1
  312. package/dist/commands/skills.d.ts.map +0 -1
  313. package/dist/commands/skills.js.map +0 -1
  314. package/dist/commands/status.d.ts.map +0 -1
  315. package/dist/commands/status.js.map +0 -1
  316. package/dist/commands/subagents.d.ts.map +0 -1
  317. package/dist/commands/subagents.js.map +0 -1
  318. package/dist/commands/sync.d.ts.map +0 -1
  319. package/dist/commands/sync.js.map +0 -1
  320. package/dist/commands/teams-picker.d.ts.map +0 -1
  321. package/dist/commands/teams-picker.js.map +0 -1
  322. package/dist/commands/teams.d.ts.map +0 -1
  323. package/dist/commands/teams.js.map +0 -1
  324. package/dist/commands/utils.d.ts.map +0 -1
  325. package/dist/commands/utils.js.map +0 -1
  326. package/dist/commands/versions.d.ts.map +0 -1
  327. package/dist/commands/versions.js.map +0 -1
  328. package/dist/commands/view.d.ts.map +0 -1
  329. package/dist/commands/view.js.map +0 -1
  330. package/dist/index.d.ts.map +0 -1
  331. package/dist/index.js.map +0 -1
  332. package/dist/lib/__tests__/bugfixes.test.d.ts +0 -2
  333. package/dist/lib/__tests__/bugfixes.test.d.ts.map +0 -1
  334. package/dist/lib/__tests__/bugfixes.test.js +0 -192
  335. package/dist/lib/__tests__/bugfixes.test.js.map +0 -1
  336. package/dist/lib/__tests__/exec.test.d.ts +0 -2
  337. package/dist/lib/__tests__/exec.test.d.ts.map +0 -1
  338. package/dist/lib/__tests__/exec.test.js +0 -446
  339. package/dist/lib/__tests__/exec.test.js.map +0 -1
  340. package/dist/lib/__tests__/git-sync.test.d.ts +0 -2
  341. package/dist/lib/__tests__/git-sync.test.d.ts.map +0 -1
  342. package/dist/lib/__tests__/git-sync.test.js +0 -138
  343. package/dist/lib/__tests__/git-sync.test.js.map +0 -1
  344. package/dist/lib/__tests__/hooks.test.d.ts +0 -2
  345. package/dist/lib/__tests__/hooks.test.d.ts.map +0 -1
  346. package/dist/lib/__tests__/hooks.test.js +0 -203
  347. package/dist/lib/__tests__/hooks.test.js.map +0 -1
  348. package/dist/lib/__tests__/memory-compile.test.d.ts +0 -2
  349. package/dist/lib/__tests__/memory-compile.test.d.ts.map +0 -1
  350. package/dist/lib/__tests__/memory-compile.test.js +0 -95
  351. package/dist/lib/__tests__/memory-compile.test.js.map +0 -1
  352. package/dist/lib/__tests__/models.test.d.ts +0 -2
  353. package/dist/lib/__tests__/models.test.d.ts.map +0 -1
  354. package/dist/lib/__tests__/models.test.js +0 -184
  355. package/dist/lib/__tests__/models.test.js.map +0 -1
  356. package/dist/lib/__tests__/usage.test.d.ts +0 -2
  357. package/dist/lib/__tests__/usage.test.d.ts.map +0 -1
  358. package/dist/lib/__tests__/usage.test.js +0 -218
  359. package/dist/lib/__tests__/usage.test.js.map +0 -1
  360. package/dist/lib/agents.d.ts.map +0 -1
  361. package/dist/lib/agents.js.map +0 -1
  362. package/dist/lib/artifact-actions.d.ts.map +0 -1
  363. package/dist/lib/artifact-actions.js.map +0 -1
  364. package/dist/lib/commands.d.ts.map +0 -1
  365. package/dist/lib/commands.js.map +0 -1
  366. package/dist/lib/convert.d.ts.map +0 -1
  367. package/dist/lib/convert.js.map +0 -1
  368. package/dist/lib/daemon.d.ts.map +0 -1
  369. package/dist/lib/daemon.js.map +0 -1
  370. package/dist/lib/drive-sync.d.ts.map +0 -1
  371. package/dist/lib/drive-sync.js.map +0 -1
  372. package/dist/lib/exec.d.ts.map +0 -1
  373. package/dist/lib/exec.js.map +0 -1
  374. package/dist/lib/factory.d.ts +0 -57
  375. package/dist/lib/factory.d.ts.map +0 -1
  376. package/dist/lib/factory.js +0 -110
  377. package/dist/lib/factory.js.map +0 -1
  378. package/dist/lib/git.d.ts.map +0 -1
  379. package/dist/lib/git.js.map +0 -1
  380. package/dist/lib/help.d.ts.map +0 -1
  381. package/dist/lib/help.js.map +0 -1
  382. package/dist/lib/hooks.d.ts.map +0 -1
  383. package/dist/lib/hooks.js.map +0 -1
  384. package/dist/lib/manifest.d.ts.map +0 -1
  385. package/dist/lib/manifest.js.map +0 -1
  386. package/dist/lib/markdown.d.ts.map +0 -1
  387. package/dist/lib/markdown.js.map +0 -1
  388. package/dist/lib/mcp.d.ts.map +0 -1
  389. package/dist/lib/mcp.js.map +0 -1
  390. package/dist/lib/memory-compile.d.ts.map +0 -1
  391. package/dist/lib/memory-compile.js.map +0 -1
  392. package/dist/lib/memory.d.ts.map +0 -1
  393. package/dist/lib/memory.js.map +0 -1
  394. package/dist/lib/models.d.ts.map +0 -1
  395. package/dist/lib/models.js.map +0 -1
  396. package/dist/lib/permissions.d.ts.map +0 -1
  397. package/dist/lib/permissions.js.map +0 -1
  398. package/dist/lib/picker.d.ts.map +0 -1
  399. package/dist/lib/picker.js.map +0 -1
  400. package/dist/lib/plugins.d.ts.map +0 -1
  401. package/dist/lib/plugins.js.map +0 -1
  402. package/dist/lib/pty-client.d.ts.map +0 -1
  403. package/dist/lib/pty-client.js.map +0 -1
  404. package/dist/lib/pty-server.d.ts.map +0 -1
  405. package/dist/lib/pty-server.js.map +0 -1
  406. package/dist/lib/registry.d.ts.map +0 -1
  407. package/dist/lib/registry.js.map +0 -1
  408. package/dist/lib/resources.d.ts.map +0 -1
  409. package/dist/lib/resources.js.map +0 -1
  410. package/dist/lib/routines.d.ts.map +0 -1
  411. package/dist/lib/routines.js.map +0 -1
  412. package/dist/lib/runner.d.ts.map +0 -1
  413. package/dist/lib/runner.js.map +0 -1
  414. package/dist/lib/sandbox.d.ts.map +0 -1
  415. package/dist/lib/sandbox.js.map +0 -1
  416. package/dist/lib/scheduler.d.ts.map +0 -1
  417. package/dist/lib/scheduler.js.map +0 -1
  418. package/dist/lib/session/__tests__/db.test.d.ts +0 -2
  419. package/dist/lib/session/__tests__/db.test.d.ts.map +0 -1
  420. package/dist/lib/session/__tests__/db.test.js +0 -54
  421. package/dist/lib/session/__tests__/db.test.js.map +0 -1
  422. package/dist/lib/session/__tests__/discover.test.d.ts +0 -2
  423. package/dist/lib/session/__tests__/discover.test.d.ts.map +0 -1
  424. package/dist/lib/session/__tests__/discover.test.js +0 -63
  425. package/dist/lib/session/__tests__/discover.test.js.map +0 -1
  426. package/dist/lib/session/__tests__/prompt.test.d.ts +0 -2
  427. package/dist/lib/session/__tests__/prompt.test.d.ts.map +0 -1
  428. package/dist/lib/session/__tests__/prompt.test.js +0 -44
  429. package/dist/lib/session/__tests__/prompt.test.js.map +0 -1
  430. package/dist/lib/session/__tests__/render.test.d.ts +0 -2
  431. package/dist/lib/session/__tests__/render.test.d.ts.map +0 -1
  432. package/dist/lib/session/__tests__/render.test.js +0 -602
  433. package/dist/lib/session/__tests__/render.test.js.map +0 -1
  434. package/dist/lib/session/db.d.ts.map +0 -1
  435. package/dist/lib/session/db.js.map +0 -1
  436. package/dist/lib/session/discover.d.ts.map +0 -1
  437. package/dist/lib/session/discover.js.map +0 -1
  438. package/dist/lib/session/parse.d.ts.map +0 -1
  439. package/dist/lib/session/parse.js.map +0 -1
  440. package/dist/lib/session/prompt.d.ts.map +0 -1
  441. package/dist/lib/session/prompt.js.map +0 -1
  442. package/dist/lib/session/prompt.test.d.ts +0 -2
  443. package/dist/lib/session/prompt.test.d.ts.map +0 -1
  444. package/dist/lib/session/prompt.test.js +0 -57
  445. package/dist/lib/session/prompt.test.js.map +0 -1
  446. package/dist/lib/session/render.d.ts.map +0 -1
  447. package/dist/lib/session/render.js.map +0 -1
  448. package/dist/lib/session/team-filter.d.ts.map +0 -1
  449. package/dist/lib/session/team-filter.js.map +0 -1
  450. package/dist/lib/session/team-filter.test.d.ts +0 -2
  451. package/dist/lib/session/team-filter.test.d.ts.map +0 -1
  452. package/dist/lib/session/team-filter.test.js +0 -157
  453. package/dist/lib/session/team-filter.test.js.map +0 -1
  454. package/dist/lib/session/types.d.ts.map +0 -1
  455. package/dist/lib/session/types.js.map +0 -1
  456. package/dist/lib/shims.d.ts.map +0 -1
  457. package/dist/lib/shims.js.map +0 -1
  458. package/dist/lib/skills.d.ts.map +0 -1
  459. package/dist/lib/skills.js.map +0 -1
  460. package/dist/lib/state.d.ts.map +0 -1
  461. package/dist/lib/state.js.map +0 -1
  462. package/dist/lib/subagents.d.ts.map +0 -1
  463. package/dist/lib/subagents.js.map +0 -1
  464. package/dist/lib/teams/agents.d.ts.map +0 -1
  465. package/dist/lib/teams/agents.js.map +0 -1
  466. package/dist/lib/teams/api.d.ts.map +0 -1
  467. package/dist/lib/teams/api.js.map +0 -1
  468. package/dist/lib/teams/cloud.d.ts +0 -11
  469. package/dist/lib/teams/cloud.d.ts.map +0 -1
  470. package/dist/lib/teams/cloud.js +0 -169
  471. package/dist/lib/teams/cloud.js.map +0 -1
  472. package/dist/lib/teams/debug.d.ts.map +0 -1
  473. package/dist/lib/teams/debug.js.map +0 -1
  474. package/dist/lib/teams/file_ops.d.ts.map +0 -1
  475. package/dist/lib/teams/file_ops.js.map +0 -1
  476. package/dist/lib/teams/parsers.d.ts.map +0 -1
  477. package/dist/lib/teams/parsers.js.map +0 -1
  478. package/dist/lib/teams/persistence.d.ts.map +0 -1
  479. package/dist/lib/teams/persistence.js.map +0 -1
  480. package/dist/lib/teams/ralph.d.ts +0 -8
  481. package/dist/lib/teams/ralph.d.ts.map +0 -1
  482. package/dist/lib/teams/ralph.js +0 -59
  483. package/dist/lib/teams/ralph.js.map +0 -1
  484. package/dist/lib/teams/registry.d.ts.map +0 -1
  485. package/dist/lib/teams/registry.js.map +0 -1
  486. package/dist/lib/teams/summarizer.d.ts.map +0 -1
  487. package/dist/lib/teams/summarizer.js.map +0 -1
  488. package/dist/lib/template.d.ts.map +0 -1
  489. package/dist/lib/template.js.map +0 -1
  490. package/dist/lib/types.d.ts.map +0 -1
  491. package/dist/lib/types.js.map +0 -1
  492. package/dist/lib/usage.d.ts.map +0 -1
  493. package/dist/lib/usage.js.map +0 -1
  494. package/dist/lib/versions.d.ts.map +0 -1
  495. package/dist/lib/versions.js.map +0 -1
  496. 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
+ }
@@ -0,0 +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
+ */
8
+ import type { Command } from 'commander';
9
+ /** Register the `agents cloud` command tree (run, list, status, logs, cancel, message, providers). */
10
+ export declare function registerCloudCommands(program: Command): void;
@@ -0,0 +1,408 @@
1
+ import chalk from 'chalk';
2
+ import * as fs from 'fs';
3
+ import ora from 'ora';
4
+ import { resolveProvider, getAllProviders, getDefaultProviderId } from '../lib/cloud/registry.js';
5
+ import { insertTask, updateTaskStatus, getTaskById, listTasks as listStoredTasks, listActiveTasks } from '../lib/cloud/store.js';
6
+ import { renderStream } from '../lib/cloud/stream.js';
7
+ /** Print an error message to stderr and exit. */
8
+ function die(msg, code = 1) {
9
+ console.error(chalk.red(msg));
10
+ process.exit(code);
11
+ }
12
+ /** Format an ISO timestamp as a human-readable relative time string. */
13
+ function relTime(iso) {
14
+ const secs = Math.floor((Date.now() - new Date(iso).getTime()) / 1000);
15
+ if (secs < 10)
16
+ return 'just now';
17
+ if (secs < 60)
18
+ return `${secs}s ago`;
19
+ if (secs < 3600)
20
+ return `${Math.floor(secs / 60)} minutes ago`;
21
+ if (secs < 86400)
22
+ return `${Math.floor(secs / 3600)} hours ago`;
23
+ return `${Math.floor(secs / 86400)} days ago`;
24
+ }
25
+ function truncate(s, n) {
26
+ if (s.length <= n)
27
+ return s;
28
+ return s.slice(0, n - 1) + '...';
29
+ }
30
+ /** Return a chalk color function appropriate for the given task status. */
31
+ function statusColor(status) {
32
+ switch (status) {
33
+ case 'queued':
34
+ case 'allocating': return chalk.blue;
35
+ case 'running': return chalk.yellow;
36
+ case 'completed': return chalk.green;
37
+ case 'input_required': return chalk.magenta;
38
+ case 'failed': return chalk.red;
39
+ case 'cancelled': return chalk.gray;
40
+ default: return chalk.white;
41
+ }
42
+ }
43
+ function isJsonMode(opts) {
44
+ return Boolean(opts.json) || !process.stdout.isTTY;
45
+ }
46
+ /** Register the `agents cloud` command tree (run, list, status, logs, cancel, message, providers). */
47
+ export function registerCloudCommands(program) {
48
+ const cloud = program
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
+ `);
91
+ // ── agents cloud run ──────────────────────────────────────────────────
92
+ cloud
93
+ .command('run [prompt]')
94
+ .description('Dispatch a task to a cloud agent.')
95
+ .option('--provider <id>', 'Cloud backend: rush, codex, factory')
96
+ .option('--agent <name>', 'Agent to run: claude, codex, droid')
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
+ })
102
+ .option('--branch <name>', 'Target git branch')
103
+ .option('-p, --prompt <text>', 'Inline prompt (alternative to positional argument)')
104
+ .option('--timeout <duration>', 'Kill after duration (e.g., 30m, 2h)')
105
+ .option('--model <model>', 'Model override')
106
+ .option('--env <id>', 'Codex Cloud environment ID')
107
+ .option('--computer <name>', 'Factory/Droid computer target')
108
+ .option('--mode <mode>', 'Execution mode (e.g., plan, edit, full)')
109
+ .option('--json', 'Structured JSON output')
110
+ .option('--no-follow', 'Dispatch and exit without streaming output')
111
+ .addHelpText('after', `
112
+ Examples:
113
+ # Rush Cloud
114
+ agents cloud run "fix the flaky test" --provider rush --repo user/repo
115
+ agents cloud run task.md --provider rush --repo org/project --agent codex
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
+
120
+ # Codex Cloud
121
+ agents cloud run "add auth tests" --provider codex --env env_abc123
122
+
123
+ # Default provider (set in ~/.agents-system/agents.yaml)
124
+ agents cloud run "refactor auth module" --repo user/repo
125
+ `)
126
+ .action(async (positionalPrompt, options) => {
127
+ const json = isJsonMode(options);
128
+ // Resolve prompt: --prompt flag, positional arg, or file
129
+ let prompt = options.prompt || positionalPrompt;
130
+ if (!prompt)
131
+ die('Prompt is required. Pass it as an argument or with --prompt.');
132
+ // If prompt is a file path, read it and tell the user
133
+ if (fs.existsSync(prompt) && fs.statSync(prompt).isFile()) {
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
+ }
141
+ }
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
+ : [];
152
+ const dispatchOptions = {
153
+ prompt,
154
+ agent: options.agent,
155
+ repo: repoValues[0],
156
+ repos: repoValues.length > 0 ? repoValues : undefined,
157
+ branch: options.branch,
158
+ timeout: options.timeout,
159
+ model: options.model,
160
+ providerOptions: {},
161
+ };
162
+ if (options.env)
163
+ dispatchOptions.providerOptions.env = options.env;
164
+ if (options.computer)
165
+ dispatchOptions.providerOptions.computer = options.computer;
166
+ if (options.mode)
167
+ dispatchOptions.providerOptions.mode = options.mode;
168
+ // Dispatch
169
+ const spinner = ora({ text: `Dispatching to ${provider.name}...`, stream: process.stderr }).start();
170
+ let task;
171
+ try {
172
+ task = await provider.dispatch(dispatchOptions);
173
+ spinner.succeed(`Task ${task.id} dispatched to ${provider.name}`);
174
+ }
175
+ catch (err) {
176
+ spinner.fail('Dispatch failed');
177
+ die(err.message);
178
+ }
179
+ // Persist locally
180
+ insertTask(task);
181
+ if (json) {
182
+ process.stdout.write(JSON.stringify(task) + '\n');
183
+ }
184
+ // Stream output unless --no-follow
185
+ if (options.follow === false)
186
+ return;
187
+ try {
188
+ const result = await renderStream(provider.stream(task.id), { json });
189
+ updateTaskStatus(task.id, result.status, {
190
+ summary: result.summary,
191
+ prUrl: result.prUrl,
192
+ });
193
+ }
194
+ catch (err) {
195
+ // Stream disconnect is OK — task keeps running
196
+ process.stderr.write(chalk.dim(`\nStream disconnected. Task ${task.id} continues running.\n`));
197
+ process.stderr.write(chalk.dim(`Check status: agents cloud status ${task.id}\n`));
198
+ }
199
+ });
200
+ // ── agents cloud list ─────────────────────────────────────────────────
201
+ cloud
202
+ .command('list')
203
+ .description('List cloud tasks.')
204
+ .option('--provider <id>', 'Filter by provider')
205
+ .option('--status <status>', 'Filter by status')
206
+ .option('--limit <n>', 'Max results', '20')
207
+ .option('--json', 'JSON output')
208
+ .action(async (options) => {
209
+ const json = isJsonMode(options);
210
+ const providerId = options.provider;
211
+ const status = options.status;
212
+ const limit = parseInt(options.limit, 10) || 20;
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
+ }
241
+ }
242
+ if (refreshJobs.length > 0) {
243
+ await Promise.allSettled(refreshJobs);
244
+ }
245
+ }
246
+ const tasks = listStoredTasks({ provider: providerId, status, limit });
247
+ if (json) {
248
+ process.stdout.write(JSON.stringify(tasks, null, 2) + '\n');
249
+ return;
250
+ }
251
+ if (tasks.length === 0) {
252
+ console.log(chalk.dim('No cloud tasks found.'));
253
+ return;
254
+ }
255
+ // Table header
256
+ const header = [
257
+ chalk.dim('ID'.padEnd(14)),
258
+ chalk.dim('Provider'.padEnd(10)),
259
+ chalk.dim('Status'.padEnd(16)),
260
+ chalk.dim('Agent'.padEnd(8)),
261
+ chalk.dim('Prompt'.padEnd(40)),
262
+ chalk.dim('When'),
263
+ ].join(' ');
264
+ console.log(header);
265
+ console.log(chalk.dim('-'.repeat(100)));
266
+ for (const t of tasks) {
267
+ const row = [
268
+ t.id.slice(0, 12).padEnd(14),
269
+ t.provider.padEnd(10),
270
+ statusColor(t.status)(t.status.padEnd(16)),
271
+ (t.agent ?? '-').padEnd(8),
272
+ truncate(t.prompt.replace(/\n/g, ' '), 40).padEnd(40),
273
+ chalk.dim(relTime(t.createdAt)),
274
+ ].join(' ');
275
+ console.log(row);
276
+ }
277
+ });
278
+ // ── agents cloud status ───────────────────────────────────────────────
279
+ cloud
280
+ .command('status <id>')
281
+ .description('Show task detail and latest status.')
282
+ .option('--json', 'JSON output')
283
+ .action(async (id, options) => {
284
+ const json = isJsonMode(options);
285
+ // Try local first, then remote
286
+ let task = getTaskById(id);
287
+ const providerId = task?.provider;
288
+ if (providerId) {
289
+ try {
290
+ const provider = resolveProvider(providerId);
291
+ task = await provider.status(id);
292
+ insertTask(task);
293
+ }
294
+ catch {
295
+ // Fall back to local cache
296
+ }
297
+ }
298
+ if (!task)
299
+ die(`Task ${id} not found.`);
300
+ if (json) {
301
+ process.stdout.write(JSON.stringify(task, null, 2) + '\n');
302
+ return;
303
+ }
304
+ console.log(`${chalk.bold('Task')} ${task.id}`);
305
+ console.log(` ${chalk.dim('Provider:')} ${task.provider}`);
306
+ console.log(` ${chalk.dim('Status:')} ${statusColor(task.status)(task.status)}`);
307
+ if (task.agent)
308
+ console.log(` ${chalk.dim('Agent:')} ${task.agent}`);
309
+ if (task.repo)
310
+ console.log(` ${chalk.dim('Repo:')} ${task.repo}`);
311
+ if (task.branch)
312
+ console.log(` ${chalk.dim('Branch:')} ${task.branch}`);
313
+ if (task.prUrl)
314
+ console.log(` ${chalk.dim('PR:')} ${task.prUrl}`);
315
+ console.log(` ${chalk.dim('Prompt:')} ${truncate(task.prompt.replace(/\n/g, ' '), 80)}`);
316
+ console.log(` ${chalk.dim('Created:')} ${relTime(task.createdAt)}`);
317
+ if (task.summary) {
318
+ console.log(` ${chalk.dim('Summary:')} ${truncate(task.summary.replace(/\n/g, ' '), 120)}`);
319
+ }
320
+ });
321
+ // ── agents cloud logs ─────────────────────────────────────────────────
322
+ cloud
323
+ .command('logs <id>')
324
+ .description('Stream live output from a cloud task.')
325
+ .option('-f, --follow', 'Follow output (default for running tasks)', true)
326
+ .option('--json', 'JSON event stream')
327
+ .action(async (id, options) => {
328
+ const json = isJsonMode(options);
329
+ const task = getTaskById(id);
330
+ if (!task)
331
+ die(`Task ${id} not found locally. Run 'agents cloud list' first.`);
332
+ const provider = resolveProvider(task.provider);
333
+ try {
334
+ const result = await renderStream(provider.stream(id), { json });
335
+ updateTaskStatus(id, result.status, {
336
+ summary: result.summary,
337
+ prUrl: result.prUrl,
338
+ });
339
+ }
340
+ catch (err) {
341
+ process.stderr.write(chalk.dim(`\nStream ended. ${err.message}\n`));
342
+ }
343
+ });
344
+ // ── agents cloud cancel ───────────────────────────────────────────────
345
+ cloud
346
+ .command('cancel <id>')
347
+ .description('Cancel a running cloud task.')
348
+ .action(async (id) => {
349
+ const task = getTaskById(id);
350
+ if (!task)
351
+ die(`Task ${id} not found.`);
352
+ const provider = resolveProvider(task.provider);
353
+ try {
354
+ await provider.cancel(id);
355
+ updateTaskStatus(id, 'cancelled');
356
+ console.log(chalk.green(`Task ${id} cancelled.`));
357
+ }
358
+ catch (err) {
359
+ die(err.message);
360
+ }
361
+ });
362
+ // ── agents cloud message ──────────────────────────────────────────────
363
+ cloud
364
+ .command('message <id> <text>')
365
+ .description('Send a follow-up message to a finished or needs-review task.')
366
+ .action(async (id, text) => {
367
+ const task = getTaskById(id);
368
+ if (!task)
369
+ die(`Task ${id} not found.`);
370
+ const provider = resolveProvider(task.provider);
371
+ try {
372
+ await provider.message(id, text);
373
+ updateTaskStatus(id, 'running');
374
+ console.log(chalk.green(`Message sent to task ${id}. Agent is continuing.`));
375
+ }
376
+ catch (err) {
377
+ die(err.message);
378
+ }
379
+ });
380
+ // ── agents cloud providers ────────────────────────────────────────────
381
+ cloud
382
+ .command('providers')
383
+ .description('List available cloud providers and their status.')
384
+ .option('--json', 'JSON output')
385
+ .action((options) => {
386
+ const json = isJsonMode(options);
387
+ const providers = getAllProviders();
388
+ const defaultId = getDefaultProviderId();
389
+ if (json) {
390
+ const data = providers.map((p) => ({
391
+ id: p.id,
392
+ name: p.name,
393
+ available: p.capabilities().available,
394
+ default: p.id === defaultId,
395
+ }));
396
+ process.stdout.write(JSON.stringify(data, null, 2) + '\n');
397
+ return;
398
+ }
399
+ console.log(chalk.bold('Cloud Providers\n'));
400
+ for (const p of providers) {
401
+ const available = p.capabilities().available;
402
+ const isDefault = p.id === defaultId;
403
+ const status = available ? chalk.green('ready') : chalk.dim('not configured');
404
+ const defaultTag = isDefault ? chalk.cyan(' (default)') : '';
405
+ console.log(` ${p.id.padEnd(12)} ${p.name.padEnd(20)} ${status}${defaultTag}`);
406
+ }
407
+ });
408
+ }
@@ -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