@swarmify/agents-cli 1.13.4 → 1.14.0

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 (567) hide show
  1. package/README.md +2 -319
  2. package/bin/agents.js +2 -0
  3. package/package.json +13 -79
  4. package/scripts/postinstall.js +4 -71
  5. package/CHANGELOG.md +0 -316
  6. package/LICENSE +0 -21
  7. package/dist/commands/__tests__/sessions-tail.test.d.ts +0 -2
  8. package/dist/commands/__tests__/sessions-tail.test.d.ts.map +0 -1
  9. package/dist/commands/__tests__/sessions-tail.test.js +0 -108
  10. package/dist/commands/__tests__/sessions-tail.test.js.map +0 -1
  11. package/dist/commands/__tests__/sessions.test.d.ts +0 -2
  12. package/dist/commands/__tests__/sessions.test.d.ts.map +0 -1
  13. package/dist/commands/__tests__/sessions.test.js +0 -636
  14. package/dist/commands/__tests__/sessions.test.js.map +0 -1
  15. package/dist/commands/cloud.d.ts +0 -11
  16. package/dist/commands/cloud.d.ts.map +0 -1
  17. package/dist/commands/cloud.js +0 -363
  18. package/dist/commands/cloud.js.map +0 -1
  19. package/dist/commands/commands.d.ts +0 -12
  20. package/dist/commands/commands.d.ts.map +0 -1
  21. package/dist/commands/commands.js +0 -629
  22. package/dist/commands/commands.js.map +0 -1
  23. package/dist/commands/daemon.d.ts +0 -11
  24. package/dist/commands/daemon.d.ts.map +0 -1
  25. package/dist/commands/daemon.js +0 -119
  26. package/dist/commands/daemon.js.map +0 -1
  27. package/dist/commands/drive.d.ts +0 -11
  28. package/dist/commands/drive.d.ts.map +0 -1
  29. package/dist/commands/drive.js +0 -175
  30. package/dist/commands/drive.js.map +0 -1
  31. package/dist/commands/exec.d.ts +0 -11
  32. package/dist/commands/exec.d.ts.map +0 -1
  33. package/dist/commands/exec.js +0 -251
  34. package/dist/commands/exec.js.map +0 -1
  35. package/dist/commands/factory.d.ts +0 -11
  36. package/dist/commands/factory.d.ts.map +0 -1
  37. package/dist/commands/factory.js +0 -445
  38. package/dist/commands/factory.js.map +0 -1
  39. package/dist/commands/fork.d.ts +0 -11
  40. package/dist/commands/fork.d.ts.map +0 -1
  41. package/dist/commands/fork.js +0 -147
  42. package/dist/commands/fork.js.map +0 -1
  43. package/dist/commands/hooks.d.ts +0 -12
  44. package/dist/commands/hooks.d.ts.map +0 -1
  45. package/dist/commands/hooks.js +0 -690
  46. package/dist/commands/hooks.js.map +0 -1
  47. package/dist/commands/init.d.ts +0 -15
  48. package/dist/commands/init.d.ts.map +0 -1
  49. package/dist/commands/init.js +0 -137
  50. package/dist/commands/init.js.map +0 -1
  51. package/dist/commands/mcp.d.ts +0 -12
  52. package/dist/commands/mcp.d.ts.map +0 -1
  53. package/dist/commands/mcp.js +0 -583
  54. package/dist/commands/mcp.js.map +0 -1
  55. package/dist/commands/models.d.ts +0 -11
  56. package/dist/commands/models.d.ts.map +0 -1
  57. package/dist/commands/models.js +0 -170
  58. package/dist/commands/models.js.map +0 -1
  59. package/dist/commands/packages.d.ts +0 -11
  60. package/dist/commands/packages.d.ts.map +0 -1
  61. package/dist/commands/packages.js +0 -551
  62. package/dist/commands/packages.js.map +0 -1
  63. package/dist/commands/permissions.d.ts +0 -12
  64. package/dist/commands/permissions.d.ts.map +0 -1
  65. package/dist/commands/permissions.js +0 -724
  66. package/dist/commands/permissions.js.map +0 -1
  67. package/dist/commands/plugins.d.ts +0 -11
  68. package/dist/commands/plugins.d.ts.map +0 -1
  69. package/dist/commands/plugins.js +0 -393
  70. package/dist/commands/plugins.js.map +0 -1
  71. package/dist/commands/profiles.d.ts +0 -12
  72. package/dist/commands/profiles.d.ts.map +0 -1
  73. package/dist/commands/profiles.js +0 -255
  74. package/dist/commands/profiles.js.map +0 -1
  75. package/dist/commands/pty.d.ts +0 -21
  76. package/dist/commands/pty.d.ts.map +0 -1
  77. package/dist/commands/pty.js +0 -391
  78. package/dist/commands/pty.js.map +0 -1
  79. package/dist/commands/pull.d.ts +0 -11
  80. package/dist/commands/pull.d.ts.map +0 -1
  81. package/dist/commands/pull.js +0 -456
  82. package/dist/commands/pull.js.map +0 -1
  83. package/dist/commands/push.d.ts +0 -11
  84. package/dist/commands/push.d.ts.map +0 -1
  85. package/dist/commands/push.js +0 -188
  86. package/dist/commands/push.js.map +0 -1
  87. package/dist/commands/refresh-memory.d.ts +0 -16
  88. package/dist/commands/refresh-memory.d.ts.map +0 -1
  89. package/dist/commands/refresh-memory.js +0 -52
  90. package/dist/commands/refresh-memory.js.map +0 -1
  91. package/dist/commands/resource-view.d.ts +0 -39
  92. package/dist/commands/resource-view.d.ts.map +0 -1
  93. package/dist/commands/resource-view.js +0 -197
  94. package/dist/commands/resource-view.js.map +0 -1
  95. package/dist/commands/routines.d.ts +0 -11
  96. package/dist/commands/routines.d.ts.map +0 -1
  97. package/dist/commands/routines.js +0 -590
  98. package/dist/commands/routines.js.map +0 -1
  99. package/dist/commands/rules.d.ts +0 -12
  100. package/dist/commands/rules.d.ts.map +0 -1
  101. package/dist/commands/rules.js +0 -489
  102. package/dist/commands/rules.js.map +0 -1
  103. package/dist/commands/secrets.d.ts +0 -11
  104. package/dist/commands/secrets.d.ts.map +0 -1
  105. package/dist/commands/secrets.js +0 -352
  106. package/dist/commands/secrets.js.map +0 -1
  107. package/dist/commands/sessions-picker.d.ts +0 -18
  108. package/dist/commands/sessions-picker.d.ts.map +0 -1
  109. package/dist/commands/sessions-picker.js +0 -265
  110. package/dist/commands/sessions-picker.js.map +0 -1
  111. package/dist/commands/sessions-tail.d.ts +0 -20
  112. package/dist/commands/sessions-tail.d.ts.map +0 -1
  113. package/dist/commands/sessions-tail.js +0 -236
  114. package/dist/commands/sessions-tail.js.map +0 -1
  115. package/dist/commands/sessions.d.ts +0 -18
  116. package/dist/commands/sessions.d.ts.map +0 -1
  117. package/dist/commands/sessions.js +0 -1173
  118. package/dist/commands/sessions.js.map +0 -1
  119. package/dist/commands/skills.d.ts +0 -12
  120. package/dist/commands/skills.d.ts.map +0 -1
  121. package/dist/commands/skills.js +0 -717
  122. package/dist/commands/skills.js.map +0 -1
  123. package/dist/commands/status.d.ts +0 -10
  124. package/dist/commands/status.d.ts.map +0 -1
  125. package/dist/commands/status.js +0 -26
  126. package/dist/commands/status.js.map +0 -1
  127. package/dist/commands/subagents.d.ts +0 -11
  128. package/dist/commands/subagents.d.ts.map +0 -1
  129. package/dist/commands/subagents.js +0 -361
  130. package/dist/commands/subagents.js.map +0 -1
  131. package/dist/commands/sync.d.ts +0 -11
  132. package/dist/commands/sync.d.ts.map +0 -1
  133. package/dist/commands/sync.js +0 -70
  134. package/dist/commands/sync.js.map +0 -1
  135. package/dist/commands/teams-picker.d.ts +0 -18
  136. package/dist/commands/teams-picker.d.ts.map +0 -1
  137. package/dist/commands/teams-picker.js +0 -290
  138. package/dist/commands/teams-picker.js.map +0 -1
  139. package/dist/commands/teams.d.ts +0 -18
  140. package/dist/commands/teams.d.ts.map +0 -1
  141. package/dist/commands/teams.js +0 -1144
  142. package/dist/commands/teams.js.map +0 -1
  143. package/dist/commands/utils.d.ts +0 -45
  144. package/dist/commands/utils.d.ts.map +0 -1
  145. package/dist/commands/utils.js +0 -106
  146. package/dist/commands/utils.js.map +0 -1
  147. package/dist/commands/versions.d.ts +0 -11
  148. package/dist/commands/versions.d.ts.map +0 -1
  149. package/dist/commands/versions.js +0 -701
  150. package/dist/commands/versions.js.map +0 -1
  151. package/dist/commands/view.d.ts +0 -43
  152. package/dist/commands/view.d.ts.map +0 -1
  153. package/dist/commands/view.js +0 -894
  154. package/dist/commands/view.js.map +0 -1
  155. package/dist/index.d.ts +0 -9
  156. package/dist/index.d.ts.map +0 -1
  157. package/dist/index.js +0 -496
  158. package/dist/index.js.map +0 -1
  159. package/dist/lib/__tests__/bugfixes.test.d.ts +0 -2
  160. package/dist/lib/__tests__/bugfixes.test.d.ts.map +0 -1
  161. package/dist/lib/__tests__/bugfixes.test.js +0 -192
  162. package/dist/lib/__tests__/bugfixes.test.js.map +0 -1
  163. package/dist/lib/__tests__/exec.test.d.ts +0 -2
  164. package/dist/lib/__tests__/exec.test.d.ts.map +0 -1
  165. package/dist/lib/__tests__/exec.test.js +0 -446
  166. package/dist/lib/__tests__/exec.test.js.map +0 -1
  167. package/dist/lib/__tests__/git-sync.test.d.ts +0 -2
  168. package/dist/lib/__tests__/git-sync.test.d.ts.map +0 -1
  169. package/dist/lib/__tests__/git-sync.test.js +0 -138
  170. package/dist/lib/__tests__/git-sync.test.js.map +0 -1
  171. package/dist/lib/__tests__/hooks.test.d.ts +0 -2
  172. package/dist/lib/__tests__/hooks.test.d.ts.map +0 -1
  173. package/dist/lib/__tests__/hooks.test.js +0 -203
  174. package/dist/lib/__tests__/hooks.test.js.map +0 -1
  175. package/dist/lib/__tests__/memory-compile.test.d.ts +0 -2
  176. package/dist/lib/__tests__/memory-compile.test.d.ts.map +0 -1
  177. package/dist/lib/__tests__/memory-compile.test.js +0 -95
  178. package/dist/lib/__tests__/memory-compile.test.js.map +0 -1
  179. package/dist/lib/__tests__/models.test.d.ts +0 -2
  180. package/dist/lib/__tests__/models.test.d.ts.map +0 -1
  181. package/dist/lib/__tests__/models.test.js +0 -239
  182. package/dist/lib/__tests__/models.test.js.map +0 -1
  183. package/dist/lib/__tests__/rotate.test.d.ts +0 -2
  184. package/dist/lib/__tests__/rotate.test.d.ts.map +0 -1
  185. package/dist/lib/__tests__/rotate.test.js +0 -80
  186. package/dist/lib/__tests__/rotate.test.js.map +0 -1
  187. package/dist/lib/__tests__/secrets-bundles.test.d.ts +0 -2
  188. package/dist/lib/__tests__/secrets-bundles.test.d.ts.map +0 -1
  189. package/dist/lib/__tests__/secrets-bundles.test.js +0 -104
  190. package/dist/lib/__tests__/secrets-bundles.test.js.map +0 -1
  191. package/dist/lib/__tests__/secrets.test.d.ts +0 -2
  192. package/dist/lib/__tests__/secrets.test.d.ts.map +0 -1
  193. package/dist/lib/__tests__/secrets.test.js +0 -90
  194. package/dist/lib/__tests__/secrets.test.js.map +0 -1
  195. package/dist/lib/__tests__/shims.test.d.ts +0 -2
  196. package/dist/lib/__tests__/shims.test.d.ts.map +0 -1
  197. package/dist/lib/__tests__/shims.test.js +0 -57
  198. package/dist/lib/__tests__/shims.test.js.map +0 -1
  199. package/dist/lib/__tests__/usage.test.d.ts +0 -2
  200. package/dist/lib/__tests__/usage.test.d.ts.map +0 -1
  201. package/dist/lib/__tests__/usage.test.js +0 -220
  202. package/dist/lib/__tests__/usage.test.js.map +0 -1
  203. package/dist/lib/__tests__/versions.test.d.ts +0 -2
  204. package/dist/lib/__tests__/versions.test.d.ts.map +0 -1
  205. package/dist/lib/__tests__/versions.test.js +0 -63
  206. package/dist/lib/__tests__/versions.test.js.map +0 -1
  207. package/dist/lib/agents.d.ts +0 -158
  208. package/dist/lib/agents.d.ts.map +0 -1
  209. package/dist/lib/agents.js +0 -1159
  210. package/dist/lib/agents.js.map +0 -1
  211. package/dist/lib/artifact-actions.d.ts +0 -27
  212. package/dist/lib/artifact-actions.d.ts.map +0 -1
  213. package/dist/lib/artifact-actions.js +0 -58
  214. package/dist/lib/artifact-actions.js.map +0 -1
  215. package/dist/lib/cloud/codex.d.ts +0 -26
  216. package/dist/lib/cloud/codex.d.ts.map +0 -1
  217. package/dist/lib/cloud/codex.js +0 -237
  218. package/dist/lib/cloud/codex.js.map +0 -1
  219. package/dist/lib/cloud/factory.d.ts +0 -32
  220. package/dist/lib/cloud/factory.d.ts.map +0 -1
  221. package/dist/lib/cloud/factory.js +0 -43
  222. package/dist/lib/cloud/factory.js.map +0 -1
  223. package/dist/lib/cloud/registry.d.ts +0 -16
  224. package/dist/lib/cloud/registry.d.ts.map +0 -1
  225. package/dist/lib/cloud/registry.js +0 -68
  226. package/dist/lib/cloud/registry.js.map +0 -1
  227. package/dist/lib/cloud/rush.d.ts +0 -37
  228. package/dist/lib/cloud/rush.d.ts.map +0 -1
  229. package/dist/lib/cloud/rush.js +0 -230
  230. package/dist/lib/cloud/rush.js.map +0 -1
  231. package/dist/lib/cloud/rush.test.d.ts +0 -2
  232. package/dist/lib/cloud/rush.test.d.ts.map +0 -1
  233. package/dist/lib/cloud/rush.test.js +0 -63
  234. package/dist/lib/cloud/rush.test.js.map +0 -1
  235. package/dist/lib/cloud/store.d.ts +0 -23
  236. package/dist/lib/cloud/store.d.ts.map +0 -1
  237. package/dist/lib/cloud/store.js +0 -116
  238. package/dist/lib/cloud/store.js.map +0 -1
  239. package/dist/lib/cloud/stream.d.ts +0 -24
  240. package/dist/lib/cloud/stream.d.ts.map +0 -1
  241. package/dist/lib/cloud/stream.js +0 -145
  242. package/dist/lib/cloud/stream.js.map +0 -1
  243. package/dist/lib/cloud/types.d.ts +0 -109
  244. package/dist/lib/cloud/types.d.ts.map +0 -1
  245. package/dist/lib/cloud/types.js +0 -33
  246. package/dist/lib/cloud/types.js.map +0 -1
  247. package/dist/lib/cloud/types.test.d.ts +0 -2
  248. package/dist/lib/cloud/types.test.d.ts.map +0 -1
  249. package/dist/lib/cloud/types.test.js +0 -41
  250. package/dist/lib/cloud/types.test.js.map +0 -1
  251. package/dist/lib/commands.d.ts +0 -141
  252. package/dist/lib/commands.d.ts.map +0 -1
  253. package/dist/lib/commands.js +0 -514
  254. package/dist/lib/commands.js.map +0 -1
  255. package/dist/lib/convert.d.ts +0 -21
  256. package/dist/lib/convert.d.ts.map +0 -1
  257. package/dist/lib/convert.js +0 -54
  258. package/dist/lib/convert.js.map +0 -1
  259. package/dist/lib/daemon.d.ts +0 -43
  260. package/dist/lib/daemon.d.ts.map +0 -1
  261. package/dist/lib/daemon.js +0 -332
  262. package/dist/lib/daemon.js.map +0 -1
  263. package/dist/lib/drive-sync.d.ts +0 -46
  264. package/dist/lib/drive-sync.d.ts.map +0 -1
  265. package/dist/lib/drive-sync.js +0 -209
  266. package/dist/lib/drive-sync.js.map +0 -1
  267. package/dist/lib/exec.d.ts +0 -101
  268. package/dist/lib/exec.d.ts.map +0 -1
  269. package/dist/lib/exec.js +0 -450
  270. package/dist/lib/exec.js.map +0 -1
  271. package/dist/lib/factory/__tests__/config.test.d.ts +0 -2
  272. package/dist/lib/factory/__tests__/config.test.d.ts.map +0 -1
  273. package/dist/lib/factory/__tests__/config.test.js +0 -128
  274. package/dist/lib/factory/__tests__/config.test.js.map +0 -1
  275. package/dist/lib/factory/config.d.ts +0 -49
  276. package/dist/lib/factory/config.d.ts.map +0 -1
  277. package/dist/lib/factory/config.js +0 -127
  278. package/dist/lib/factory/config.js.map +0 -1
  279. package/dist/lib/factory.d.ts +0 -57
  280. package/dist/lib/factory.d.ts.map +0 -1
  281. package/dist/lib/factory.js +0 -107
  282. package/dist/lib/factory.js.map +0 -1
  283. package/dist/lib/git.d.ts +0 -157
  284. package/dist/lib/git.d.ts.map +0 -1
  285. package/dist/lib/git.js +0 -647
  286. package/dist/lib/git.js.map +0 -1
  287. package/dist/lib/help.d.ts +0 -10
  288. package/dist/lib/help.d.ts.map +0 -1
  289. package/dist/lib/help.js +0 -66
  290. package/dist/lib/help.js.map +0 -1
  291. package/dist/lib/hooks.d.ts +0 -125
  292. package/dist/lib/hooks.d.ts.map +0 -1
  293. package/dist/lib/hooks.js +0 -846
  294. package/dist/lib/hooks.js.map +0 -1
  295. package/dist/lib/ledger/__tests__/local.test.d.ts +0 -2
  296. package/dist/lib/ledger/__tests__/local.test.d.ts.map +0 -1
  297. package/dist/lib/ledger/__tests__/local.test.js +0 -177
  298. package/dist/lib/ledger/__tests__/local.test.js.map +0 -1
  299. package/dist/lib/ledger/__tests__/sync.test.d.ts +0 -2
  300. package/dist/lib/ledger/__tests__/sync.test.d.ts.map +0 -1
  301. package/dist/lib/ledger/__tests__/sync.test.js +0 -117
  302. package/dist/lib/ledger/__tests__/sync.test.js.map +0 -1
  303. package/dist/lib/ledger/index.d.ts +0 -18
  304. package/dist/lib/ledger/index.d.ts.map +0 -1
  305. package/dist/lib/ledger/index.js +0 -32
  306. package/dist/lib/ledger/index.js.map +0 -1
  307. package/dist/lib/ledger/local.d.ts +0 -22
  308. package/dist/lib/ledger/local.d.ts.map +0 -1
  309. package/dist/lib/ledger/local.js +0 -333
  310. package/dist/lib/ledger/local.js.map +0 -1
  311. package/dist/lib/ledger/r2.d.ts +0 -41
  312. package/dist/lib/ledger/r2.d.ts.map +0 -1
  313. package/dist/lib/ledger/r2.js +0 -335
  314. package/dist/lib/ledger/r2.js.map +0 -1
  315. package/dist/lib/ledger/sync.d.ts +0 -33
  316. package/dist/lib/ledger/sync.d.ts.map +0 -1
  317. package/dist/lib/ledger/sync.js +0 -106
  318. package/dist/lib/ledger/sync.js.map +0 -1
  319. package/dist/lib/ledger/types.d.ts +0 -100
  320. package/dist/lib/ledger/types.d.ts.map +0 -1
  321. package/dist/lib/ledger/types.js +0 -21
  322. package/dist/lib/ledger/types.js.map +0 -1
  323. package/dist/lib/manifest.d.ts +0 -14
  324. package/dist/lib/manifest.d.ts.map +0 -1
  325. package/dist/lib/manifest.js +0 -48
  326. package/dist/lib/manifest.js.map +0 -1
  327. package/dist/lib/markdown.d.ts +0 -5
  328. package/dist/lib/markdown.d.ts.map +0 -1
  329. package/dist/lib/markdown.js +0 -17
  330. package/dist/lib/markdown.js.map +0 -1
  331. package/dist/lib/mcp.d.ts +0 -64
  332. package/dist/lib/mcp.d.ts.map +0 -1
  333. package/dist/lib/mcp.js +0 -327
  334. package/dist/lib/mcp.js.map +0 -1
  335. package/dist/lib/memory-compile.d.ts +0 -65
  336. package/dist/lib/memory-compile.d.ts.map +0 -1
  337. package/dist/lib/memory-compile.js +0 -174
  338. package/dist/lib/memory-compile.js.map +0 -1
  339. package/dist/lib/memory.d.ts +0 -64
  340. package/dist/lib/memory.d.ts.map +0 -1
  341. package/dist/lib/memory.js +0 -275
  342. package/dist/lib/memory.js.map +0 -1
  343. package/dist/lib/models.d.ts +0 -98
  344. package/dist/lib/models.d.ts.map +0 -1
  345. package/dist/lib/models.js +0 -728
  346. package/dist/lib/models.js.map +0 -1
  347. package/dist/lib/permissions.d.ts +0 -227
  348. package/dist/lib/permissions.d.ts.map +0 -1
  349. package/dist/lib/permissions.js +0 -1085
  350. package/dist/lib/permissions.js.map +0 -1
  351. package/dist/lib/picker.d.ts +0 -27
  352. package/dist/lib/picker.d.ts.map +0 -1
  353. package/dist/lib/picker.js +0 -110
  354. package/dist/lib/picker.js.map +0 -1
  355. package/dist/lib/plugins.d.ts +0 -80
  356. package/dist/lib/plugins.d.ts.map +0 -1
  357. package/dist/lib/plugins.js +0 -556
  358. package/dist/lib/plugins.js.map +0 -1
  359. package/dist/lib/profiles-keychain.d.ts +0 -11
  360. package/dist/lib/profiles-keychain.d.ts.map +0 -1
  361. package/dist/lib/profiles-keychain.js +0 -14
  362. package/dist/lib/profiles-keychain.js.map +0 -1
  363. package/dist/lib/profiles-presets.d.ts +0 -25
  364. package/dist/lib/profiles-presets.d.ts.map +0 -1
  365. package/dist/lib/profiles-presets.js +0 -104
  366. package/dist/lib/profiles-presets.js.map +0 -1
  367. package/dist/lib/profiles.d.ts +0 -70
  368. package/dist/lib/profiles.d.ts.map +0 -1
  369. package/dist/lib/profiles.js +0 -145
  370. package/dist/lib/profiles.js.map +0 -1
  371. package/dist/lib/pty-client.d.ts +0 -23
  372. package/dist/lib/pty-client.d.ts.map +0 -1
  373. package/dist/lib/pty-client.js +0 -181
  374. package/dist/lib/pty-client.js.map +0 -1
  375. package/dist/lib/pty-server.d.ts +0 -21
  376. package/dist/lib/pty-server.d.ts.map +0 -1
  377. package/dist/lib/pty-server.js +0 -427
  378. package/dist/lib/pty-server.js.map +0 -1
  379. package/dist/lib/registry.d.ts +0 -45
  380. package/dist/lib/registry.d.ts.map +0 -1
  381. package/dist/lib/registry.js +0 -220
  382. package/dist/lib/registry.js.map +0 -1
  383. package/dist/lib/resources.d.ts +0 -55
  384. package/dist/lib/resources.d.ts.map +0 -1
  385. package/dist/lib/resources.js +0 -103
  386. package/dist/lib/resources.js.map +0 -1
  387. package/dist/lib/rotate.d.ts +0 -58
  388. package/dist/lib/rotate.d.ts.map +0 -1
  389. package/dist/lib/rotate.js +0 -93
  390. package/dist/lib/rotate.js.map +0 -1
  391. package/dist/lib/routines.d.ts +0 -99
  392. package/dist/lib/routines.d.ts.map +0 -1
  393. package/dist/lib/routines.js +0 -352
  394. package/dist/lib/routines.js.map +0 -1
  395. package/dist/lib/runner.d.ts +0 -26
  396. package/dist/lib/runner.d.ts.map +0 -1
  397. package/dist/lib/runner.js +0 -325
  398. package/dist/lib/runner.js.map +0 -1
  399. package/dist/lib/sandbox.d.ts +0 -26
  400. package/dist/lib/sandbox.d.ts.map +0 -1
  401. package/dist/lib/sandbox.js +0 -218
  402. package/dist/lib/sandbox.js.map +0 -1
  403. package/dist/lib/scheduler.d.ts +0 -26
  404. package/dist/lib/scheduler.d.ts.map +0 -1
  405. package/dist/lib/scheduler.js +0 -77
  406. package/dist/lib/scheduler.js.map +0 -1
  407. package/dist/lib/secrets-bundles.d.ts +0 -38
  408. package/dist/lib/secrets-bundles.d.ts.map +0 -1
  409. package/dist/lib/secrets-bundles.js +0 -176
  410. package/dist/lib/secrets-bundles.js.map +0 -1
  411. package/dist/lib/secrets.d.ts +0 -53
  412. package/dist/lib/secrets.d.ts.map +0 -1
  413. package/dist/lib/secrets.js +0 -140
  414. package/dist/lib/secrets.js.map +0 -1
  415. package/dist/lib/session/__tests__/db.test.d.ts +0 -2
  416. package/dist/lib/session/__tests__/db.test.d.ts.map +0 -1
  417. package/dist/lib/session/__tests__/db.test.js +0 -54
  418. package/dist/lib/session/__tests__/db.test.js.map +0 -1
  419. package/dist/lib/session/__tests__/discover.test.d.ts +0 -2
  420. package/dist/lib/session/__tests__/discover.test.d.ts.map +0 -1
  421. package/dist/lib/session/__tests__/discover.test.js +0 -63
  422. package/dist/lib/session/__tests__/discover.test.js.map +0 -1
  423. package/dist/lib/session/__tests__/prompt.test.d.ts +0 -2
  424. package/dist/lib/session/__tests__/prompt.test.d.ts.map +0 -1
  425. package/dist/lib/session/__tests__/prompt.test.js +0 -44
  426. package/dist/lib/session/__tests__/prompt.test.js.map +0 -1
  427. package/dist/lib/session/__tests__/render.test.d.ts +0 -2
  428. package/dist/lib/session/__tests__/render.test.d.ts.map +0 -1
  429. package/dist/lib/session/__tests__/render.test.js +0 -602
  430. package/dist/lib/session/__tests__/render.test.js.map +0 -1
  431. package/dist/lib/session/active.d.ts +0 -44
  432. package/dist/lib/session/active.d.ts.map +0 -1
  433. package/dist/lib/session/active.js +0 -379
  434. package/dist/lib/session/active.js.map +0 -1
  435. package/dist/lib/session/artifacts.d.ts +0 -15
  436. package/dist/lib/session/artifacts.d.ts.map +0 -1
  437. package/dist/lib/session/artifacts.js +0 -86
  438. package/dist/lib/session/artifacts.js.map +0 -1
  439. package/dist/lib/session/db.d.ts +0 -140
  440. package/dist/lib/session/db.d.ts.map +0 -1
  441. package/dist/lib/session/db.js +0 -599
  442. package/dist/lib/session/db.js.map +0 -1
  443. package/dist/lib/session/discover.d.ts +0 -72
  444. package/dist/lib/session/discover.d.ts.map +0 -1
  445. package/dist/lib/session/discover.js +0 -1315
  446. package/dist/lib/session/discover.js.map +0 -1
  447. package/dist/lib/session/parse.d.ts +0 -34
  448. package/dist/lib/session/parse.d.ts.map +0 -1
  449. package/dist/lib/session/parse.js +0 -663
  450. package/dist/lib/session/parse.js.map +0 -1
  451. package/dist/lib/session/prompt.d.ts +0 -13
  452. package/dist/lib/session/prompt.d.ts.map +0 -1
  453. package/dist/lib/session/prompt.js +0 -79
  454. package/dist/lib/session/prompt.js.map +0 -1
  455. package/dist/lib/session/prompt.test.d.ts +0 -2
  456. package/dist/lib/session/prompt.test.d.ts.map +0 -1
  457. package/dist/lib/session/prompt.test.js +0 -57
  458. package/dist/lib/session/prompt.test.js.map +0 -1
  459. package/dist/lib/session/render.d.ts +0 -103
  460. package/dist/lib/session/render.d.ts.map +0 -1
  461. package/dist/lib/session/render.js +0 -798
  462. package/dist/lib/session/render.js.map +0 -1
  463. package/dist/lib/session/team-filter.d.ts +0 -35
  464. package/dist/lib/session/team-filter.d.ts.map +0 -1
  465. package/dist/lib/session/team-filter.js +0 -75
  466. package/dist/lib/session/team-filter.js.map +0 -1
  467. package/dist/lib/session/team-filter.test.d.ts +0 -2
  468. package/dist/lib/session/team-filter.test.d.ts.map +0 -1
  469. package/dist/lib/session/team-filter.test.js +0 -157
  470. package/dist/lib/session/team-filter.test.js.map +0 -1
  471. package/dist/lib/session/types.d.ts +0 -84
  472. package/dist/lib/session/types.d.ts.map +0 -1
  473. package/dist/lib/session/types.js +0 -11
  474. package/dist/lib/session/types.js.map +0 -1
  475. package/dist/lib/shims.d.ts +0 -272
  476. package/dist/lib/shims.d.ts.map +0 -1
  477. package/dist/lib/shims.js +0 -1322
  478. package/dist/lib/shims.js.map +0 -1
  479. package/dist/lib/skills.d.ts +0 -142
  480. package/dist/lib/skills.d.ts.map +0 -1
  481. package/dist/lib/skills.js +0 -791
  482. package/dist/lib/skills.js.map +0 -1
  483. package/dist/lib/state.d.ts +0 -87
  484. package/dist/lib/state.d.ts.map +0 -1
  485. package/dist/lib/state.js +0 -333
  486. package/dist/lib/state.js.map +0 -1
  487. package/dist/lib/subagents.d.ts +0 -84
  488. package/dist/lib/subagents.d.ts.map +0 -1
  489. package/dist/lib/subagents.js +0 -410
  490. package/dist/lib/subagents.js.map +0 -1
  491. package/dist/lib/teams/__tests__/oracle.test.d.ts +0 -2
  492. package/dist/lib/teams/__tests__/oracle.test.d.ts.map +0 -1
  493. package/dist/lib/teams/__tests__/oracle.test.js +0 -89
  494. package/dist/lib/teams/__tests__/oracle.test.js.map +0 -1
  495. package/dist/lib/teams/__tests__/supervisor.test.d.ts +0 -2
  496. package/dist/lib/teams/__tests__/supervisor.test.d.ts.map +0 -1
  497. package/dist/lib/teams/__tests__/supervisor.test.js +0 -179
  498. package/dist/lib/teams/__tests__/supervisor.test.js.map +0 -1
  499. package/dist/lib/teams/agents.d.ts +0 -247
  500. package/dist/lib/teams/agents.d.ts.map +0 -1
  501. package/dist/lib/teams/agents.js +0 -1244
  502. package/dist/lib/teams/agents.js.map +0 -1
  503. package/dist/lib/teams/api.d.ts +0 -91
  504. package/dist/lib/teams/api.d.ts.map +0 -1
  505. package/dist/lib/teams/api.js +0 -239
  506. package/dist/lib/teams/api.js.map +0 -1
  507. package/dist/lib/teams/cloud.d.ts +0 -11
  508. package/dist/lib/teams/cloud.d.ts.map +0 -1
  509. package/dist/lib/teams/cloud.js +0 -169
  510. package/dist/lib/teams/cloud.js.map +0 -1
  511. package/dist/lib/teams/debug.d.ts +0 -8
  512. package/dist/lib/teams/debug.d.ts.map +0 -1
  513. package/dist/lib/teams/debug.js +0 -12
  514. package/dist/lib/teams/debug.js.map +0 -1
  515. package/dist/lib/teams/file_ops.d.ts +0 -13
  516. package/dist/lib/teams/file_ops.d.ts.map +0 -1
  517. package/dist/lib/teams/file_ops.js +0 -66
  518. package/dist/lib/teams/file_ops.js.map +0 -1
  519. package/dist/lib/teams/index.d.ts +0 -16
  520. package/dist/lib/teams/index.d.ts.map +0 -1
  521. package/dist/lib/teams/index.js +0 -15
  522. package/dist/lib/teams/index.js.map +0 -1
  523. package/dist/lib/teams/oracle.d.ts +0 -20
  524. package/dist/lib/teams/oracle.d.ts.map +0 -1
  525. package/dist/lib/teams/oracle.js +0 -59
  526. package/dist/lib/teams/oracle.js.map +0 -1
  527. package/dist/lib/teams/parsers.d.ts +0 -9
  528. package/dist/lib/teams/parsers.d.ts.map +0 -1
  529. package/dist/lib/teams/parsers.js +0 -837
  530. package/dist/lib/teams/parsers.js.map +0 -1
  531. package/dist/lib/teams/persistence.d.ts +0 -43
  532. package/dist/lib/teams/persistence.d.ts.map +0 -1
  533. package/dist/lib/teams/persistence.js +0 -299
  534. package/dist/lib/teams/persistence.js.map +0 -1
  535. package/dist/lib/teams/ralph.d.ts +0 -8
  536. package/dist/lib/teams/ralph.d.ts.map +0 -1
  537. package/dist/lib/teams/ralph.js +0 -59
  538. package/dist/lib/teams/ralph.js.map +0 -1
  539. package/dist/lib/teams/registry.d.ts +0 -18
  540. package/dist/lib/teams/registry.d.ts.map +0 -1
  541. package/dist/lib/teams/registry.js +0 -68
  542. package/dist/lib/teams/registry.js.map +0 -1
  543. package/dist/lib/teams/summarizer.d.ts +0 -73
  544. package/dist/lib/teams/summarizer.d.ts.map +0 -1
  545. package/dist/lib/teams/summarizer.js +0 -780
  546. package/dist/lib/teams/summarizer.js.map +0 -1
  547. package/dist/lib/teams/supervisor.d.ts +0 -49
  548. package/dist/lib/teams/supervisor.d.ts.map +0 -1
  549. package/dist/lib/teams/supervisor.js +0 -74
  550. package/dist/lib/teams/supervisor.js.map +0 -1
  551. package/dist/lib/template.d.ts +0 -27
  552. package/dist/lib/template.d.ts.map +0 -1
  553. package/dist/lib/template.js +0 -60
  554. package/dist/lib/template.js.map +0 -1
  555. package/dist/lib/types.d.ts +0 -331
  556. package/dist/lib/types.d.ts.map +0 -1
  557. package/dist/lib/types.js +0 -29
  558. package/dist/lib/types.js.map +0 -1
  559. package/dist/lib/usage.d.ts +0 -105
  560. package/dist/lib/usage.d.ts.map +0 -1
  561. package/dist/lib/usage.js +0 -686
  562. package/dist/lib/usage.js.map +0 -1
  563. package/dist/lib/versions.d.ts +0 -253
  564. package/dist/lib/versions.d.ts.map +0 -1
  565. package/dist/lib/versions.js +0 -1796
  566. package/dist/lib/versions.js.map +0 -1
  567. package/scripts/rebuild-sqlite.sh +0 -46
@@ -1,445 +0,0 @@
1
- import chalk from 'chalk';
2
- import { spawn } from 'child_process';
3
- import * as fs from 'fs';
4
- import * as path from 'path';
5
- import { homedir } from 'os';
6
- import { AgentManager } from '../lib/teams/agents.js';
7
- import { resolveLedger, syncOnEviction, syncTeammate } from '../lib/ledger/index.js';
8
- import { handleSpawn, handleStatus } from '../lib/teams/api.js';
9
- import { ensureTeam } from '../lib/teams/registry.js';
10
- import { resolveProvider } from '../lib/cloud/registry.js';
11
- import { runSupervisor } from '../lib/teams/supervisor.js';
12
- import { maybeFileBugfix } from '../lib/teams/oracle.js';
13
- import { readFactoryConfig, writeFactoryConfig, resolveDispatch, } from '../lib/factory/config.js';
14
- function die(msg, code = 1) {
15
- console.error(chalk.red(msg));
16
- process.exit(code);
17
- }
18
- /** Per-team file where a detached supervisor streams its wave output. */
19
- function supervisorLogPath(team) {
20
- const safe = team.replace(/[/\\]/g, '_');
21
- return path.join(homedir(), '.agents', 'factory', `${safe}.supervisor.log`);
22
- }
23
- function supervisorPidPath(team) {
24
- const safe = team.replace(/[/\\]/g, '_');
25
- return path.join(homedir(), '.agents', 'factory', `${safe}.supervisor.pid`);
26
- }
27
- /**
28
- * Fork a detached `agents factory run <team>` child that survives this
29
- * parent process. Writes pid + log path to disk so `factory watch` and
30
- * `factory stop` can find it.
31
- */
32
- function startDetachedSupervisor(team) {
33
- const log = supervisorLogPath(team);
34
- fs.mkdirSync(path.dirname(log), { recursive: true });
35
- const logFd = fs.openSync(log, 'a');
36
- // Re-launch ourselves with `factory run <team>`. argv[0] is the node
37
- // binary and argv[1] is this CLI entry point — that pair reconstructs
38
- // the exact command the parent is running.
39
- const child = spawn(process.argv[0], [process.argv[1], 'factory', 'run', team], {
40
- detached: true,
41
- stdio: ['ignore', logFd, logFd],
42
- env: { ...process.env },
43
- });
44
- child.unref();
45
- const pid = child.pid ?? -1;
46
- if (pid > 0) {
47
- fs.writeFileSync(supervisorPidPath(team), String(pid), 'utf-8');
48
- }
49
- return { pid, log };
50
- }
51
- /**
52
- * Run the supervisor in-process for the foreground case. Thin wrapper that
53
- * defers to the exact same code the `factory run` subcommand uses.
54
- */
55
- async function runForegroundSupervisor(team) {
56
- const ledger = resolveLedger();
57
- const mgr = new AgentManager();
58
- mgr.setCompletionHook(async (a) => {
59
- const snap = await a.toSnapshot();
60
- await syncTeammate(snap, ledger);
61
- await maybeFileBugfix(a, mgr);
62
- });
63
- mgr.setCloudDispatcher(async (a) => {
64
- if (!a.cloudProvider)
65
- throw new Error(`Teammate ${a.agentId} missing cloudProvider`);
66
- const prov = resolveProvider(a.cloudProvider);
67
- const ct = await prov.dispatch({
68
- prompt: a.prompt, agent: a.agentType,
69
- repo: a.cloudRepo ?? undefined, branch: a.cloudBranch ?? undefined,
70
- model: a.model ?? undefined,
71
- });
72
- return { cloudSessionId: ct.id };
73
- });
74
- await runSupervisor(mgr, {
75
- team,
76
- intervalMs: 8000,
77
- maxWaves: 1000,
78
- onWave: (s) => {
79
- const ts = s.timestamp.slice(11, 19);
80
- const taskTypes = s.launched.map((l) => l.taskType ?? '?').join(',') || '-';
81
- console.log(`[${ts}] wave ${s.wave} launched=${s.launched.length} (${taskTypes}) ` +
82
- `running=${s.running} pending=${s.pending} done=${s.completed} failed=${s.failed}`);
83
- },
84
- });
85
- }
86
- export function registerFactoryCommands(program) {
87
- const factory = program
88
- .command('factory')
89
- .description('Software Factory — planner/worker DAG with a shared team Ledger.');
90
- // `agents factory start <brief>` — seed a team with a Planner teammate.
91
- factory
92
- .command('start <brief>')
93
- .description('Start a new Software Factory run: spawns a Planner teammate who emits the DAG.')
94
- .option('-t, --team <name>', 'Team name (defaults to factory-<timestamp>)')
95
- .option('-a, --agent <type>', 'Agent type for the planner (defaults to factory config default_planner_agent)')
96
- .option('--cwd <dir>', 'Working directory for all teammates', process.cwd())
97
- .option('--cloud <provider>', 'Dispatch planner to cloud: rush | codex | factory. Defaults to your factory config priority (typically `rush`).')
98
- .option('--local', 'Force-run the planner locally instead of dispatching to cloud. Escape hatch for debugging.')
99
- .option('--repo <owner/repo>', 'GitHub repository (required with --cloud rush; auto-detected from git remote otherwise).')
100
- .option('--detach', 'Also start the supervisor loop in the background; tail with `agents factory watch <team>`')
101
- .option('--foreground', 'Also start the supervisor loop in the foreground (blocks until drained)')
102
- .option('--json', 'Output machine-readable JSON')
103
- .action(async (brief, opts) => {
104
- const teamId = opts.team || `factory-${Date.now()}`;
105
- await ensureTeam(teamId);
106
- const ledger = resolveLedger();
107
- const mgr = new AgentManager();
108
- mgr.setCompletionHook(async (a) => {
109
- const snap = await a.toSnapshot();
110
- await syncTeammate(snap, ledger);
111
- });
112
- const plannerPrompt = `You are the Planner teammate in a Software Factory team.
113
-
114
- Team id: ${teamId}
115
- Working directory: ${opts.cwd}
116
- Brief: ${brief}
117
-
118
- YOUR JOB: Seed an initial DAG of worker tasks by EXECUTING \`agents teams add\` commands via the Bash tool. You must actually run them — do not print them in a code block and stop.
119
-
120
- For each slice (narrow, file-scoped ask), run three Bash commands:
121
- agents teams add ${teamId} codex "implement <slice>" --name impl-<slug> --task-type implement --cwd ${opts.cwd}
122
- agents teams add ${teamId} codex "write tests for <slice>; run them; last line: TESTS: N passed, M failed" --name test-<slug> --task-type test --after impl-<slug> --cwd ${opts.cwd}
123
- agents teams add ${teamId} codex "review diff from impl-<slug>; file bugs via LedgerNote" --name review-<slug> --task-type review --after impl-<slug>,test-<slug> --cwd ${opts.cwd}
124
-
125
- Use the agent type that matches your own type for workers (cheapest-and-adequate). Use --agent claude only where you need top capability.
126
-
127
- Rules:
128
- 1. Plant the FIRST LAYER ONLY. Workers can add more tasks via \`agents teams add\` as they discover work; a background supervisor will pick them up.
129
- 2. Split slices by file ownership — two implementers must not touch the same files in parallel.
130
- 3. Names must be unique within the team (--name alice, --name bob). Dependencies reference the name via --after.
131
- 4. Before exiting, print a one-paragraph strategy narrative. Do NOT spawn a separate process to do this — just print it as your final message.
132
-
133
- After you have run the teams-add commands and printed your strategy, STOP. The supervisor will drive the DAG from here.`;
134
- // Resolve dispatch against the factory config priority. --cloud and
135
- // --local are CLI overrides; otherwise we use the user's configured
136
- // order (default: rush > codex > local).
137
- const dispatch = await resolveDispatch(opts.cwd, opts.cloud, opts.local, opts.repo);
138
- const plannerAgent = (opts.agent ?? (await readFactoryConfig()).default_planner_agent);
139
- let cloudSessionId = null;
140
- let cloudProvider = null;
141
- let cloudRepo = null;
142
- if (dispatch.provider !== 'local') {
143
- if (dispatch.provider === 'rush' && !dispatch.repo) {
144
- die(`--cloud rush requires --repo (auto-detect from git remote failed). Pass --repo <owner/repo> or run in a git repo with an origin remote.`);
145
- }
146
- cloudProvider = dispatch.provider;
147
- cloudRepo = dispatch.repo ?? null;
148
- try {
149
- const prov = resolveProvider(dispatch.provider);
150
- const task = await prov.dispatch({
151
- prompt: plannerPrompt,
152
- agent: plannerAgent,
153
- repo: dispatch.repo,
154
- });
155
- cloudSessionId = task.id;
156
- }
157
- catch (err) {
158
- die(`Cloud dispatch to ${dispatch.provider} failed: ${err.message}`);
159
- }
160
- }
161
- const result = await handleSpawn(mgr, teamId, plannerAgent, plannerPrompt, opts.cwd, 'edit', 'medium', null, opts.cwd, null, 'planner', [], null, null, 'plan', cloudProvider, cloudSessionId, cloudRepo, null);
162
- // Auto-launch the supervisor unless the user explicitly opts out by
163
- // passing neither --detach nor --foreground. Default is --detach: the
164
- // factory is meant to be dynamic, so it'd be weird to leave the DAG
165
- // stalled after the planner emits tasks.
166
- const mode = opts.foreground ? 'foreground' : 'detach';
167
- const supervisorInfo = mode === 'foreground' ? null : startDetachedSupervisor(teamId);
168
- if (opts.json) {
169
- console.log(JSON.stringify({
170
- team_id: teamId,
171
- planner_id: result.agent_id,
172
- planner_agent: plannerAgent,
173
- status: result.status,
174
- dispatch: { provider: dispatch.provider, repo: dispatch.repo ?? null, considered: dispatch.considered },
175
- supervisor: supervisorInfo,
176
- }, null, 2));
177
- if (mode === 'foreground')
178
- await runForegroundSupervisor(teamId);
179
- return;
180
- }
181
- console.log(chalk.green(`Factory started: team ${chalk.cyan(teamId)}`));
182
- console.log(` ${chalk.gray('planner ')} ${result.name} (${result.agent_id.slice(0, 8)}) ${plannerAgent}`);
183
- const dispatchLabel = dispatch.provider === 'local'
184
- ? chalk.gray('local')
185
- : `${chalk.magenta(dispatch.provider)}${dispatch.repo ? chalk.gray(` repo=${dispatch.repo}`) : ''}`;
186
- console.log(` ${chalk.gray('dispatch ')} ${dispatchLabel}`);
187
- if (supervisorInfo) {
188
- console.log(` ${chalk.gray('supervisor ')} pid ${supervisorInfo.pid}, log ${supervisorInfo.log}`);
189
- }
190
- else {
191
- console.log(chalk.gray(` supervisor foreground`));
192
- }
193
- console.log();
194
- console.log(chalk.gray(`Watch live: agents factory watch ${teamId}`));
195
- console.log(chalk.gray(`Check status: agents factory status ${teamId}`));
196
- console.log(chalk.gray(`Q&A modal: shows up in the Factory Floor pane when a teammate needs input`));
197
- if (mode === 'foreground')
198
- await runForegroundSupervisor(teamId);
199
- });
200
- // `agents factory status <team>` — rolled-up view of teammates + DAG state.
201
- factory
202
- .command('status <team>')
203
- .description('Show roll-up status for a Factory team: DAG state, blocked teammates, recent tasks.')
204
- .option('--json', 'Output machine-readable JSON')
205
- .action(async (team, opts) => {
206
- const mgr = new AgentManager();
207
- const result = await handleStatus(mgr, team, 'all');
208
- const byType = {};
209
- for (const a of result.agents) {
210
- const t = a.task_type ?? 'other';
211
- byType[t] = (byType[t] ?? 0) + 1;
212
- }
213
- const input_required = result.agents.filter((a) => a.status === 'pending' && a.after?.length === 0).length;
214
- if (opts.json) {
215
- console.log(JSON.stringify({
216
- team_id: team,
217
- counts: result.summary,
218
- by_task_type: byType,
219
- input_required_count: input_required,
220
- agents: result.agents,
221
- }, null, 2));
222
- return;
223
- }
224
- console.log(chalk.bold(`Factory ${chalk.cyan(team)}`));
225
- console.log(` ${chalk.gray('running ')} ${result.summary.running}`);
226
- console.log(` ${chalk.gray('pending ')} ${result.summary.pending}`);
227
- console.log(` ${chalk.gray('completed')} ${result.summary.completed}`);
228
- console.log(` ${chalk.gray('failed ')} ${result.summary.failed}`);
229
- if (Object.keys(byType).length > 0) {
230
- console.log(` ${chalk.gray('by type ')} ` +
231
- Object.entries(byType).map(([k, v]) => `${k}:${v}`).join(' · '));
232
- }
233
- if (input_required > 0) {
234
- console.log(chalk.yellow(`\n${input_required} teammate(s) waiting on user input — answer with: agents factory answer ${team} <text>`));
235
- }
236
- });
237
- // `agents factory run <team>` — run the continuous DAG supervisor in the
238
- // foreground. Drives the team dynamically: as teammates add more tasks via
239
- // `agents teams add`, those tasks get picked up in the next wave.
240
- factory
241
- .command('run <team>')
242
- .description('Drive a team dynamically: keep dispatching ready teammates until the DAG drains. Workers can add more tasks mid-flight and this loop picks them up.')
243
- .option('--interval <seconds>', 'Seconds between waves', '8')
244
- .option('--max-waves <n>', 'Safety cap on waves', '1000')
245
- .option('--json', 'Emit one JSON object per wave')
246
- .action(async (team, opts) => {
247
- const ledger = resolveLedger();
248
- const mgr = new AgentManager();
249
- // Wire the same completion hook as `teams start` so failed tests
250
- // auto-file bugfix teammates and outputs land in the Ledger.
251
- mgr.setCompletionHook(async (a) => {
252
- const snap = await a.toSnapshot();
253
- await syncTeammate(snap, ledger);
254
- await maybeFileBugfix(a, mgr);
255
- });
256
- mgr.setCloudDispatcher(async (a) => {
257
- if (!a.cloudProvider)
258
- throw new Error(`Teammate ${a.agentId} missing cloudProvider`);
259
- const prov = resolveProvider(a.cloudProvider);
260
- const ct = await prov.dispatch({
261
- prompt: a.prompt, agent: a.agentType,
262
- repo: a.cloudRepo ?? undefined, branch: a.cloudBranch ?? undefined,
263
- model: a.model ?? undefined,
264
- });
265
- return { cloudSessionId: ct.id };
266
- });
267
- const intervalMs = Math.max(1000, Number.parseInt(opts.interval, 10) * 1000 || 8000);
268
- const maxWaves = Math.max(1, Number.parseInt(opts.maxWaves, 10) || 1000);
269
- const result = await runSupervisor(mgr, {
270
- team, intervalMs, maxWaves,
271
- onWave: (s) => {
272
- const ts = s.timestamp.slice(11, 19);
273
- if (opts.json) {
274
- console.log(JSON.stringify({
275
- wave: s.wave, ts, team: s.team,
276
- launched: s.launched.map((l) => ({ agent_id: l.agentId, name: l.name, task_type: l.taskType })),
277
- pending: s.pending, running: s.running, completed: s.completed, failed: s.failed,
278
- }));
279
- return;
280
- }
281
- const taskTypes = s.launched.map((l) => l.taskType ?? '?').join(',') || '-';
282
- console.log(`[${ts}] wave ${s.wave} ${chalk.cyan(s.team)} ` +
283
- `launched=${chalk.green(s.launched.length)} (${taskTypes}) ` +
284
- `running=${chalk.yellow(s.running)} pending=${chalk.blue(s.pending)} ` +
285
- `done=${chalk.green(s.completed)} failed=${s.failed > 0 ? chalk.red(s.failed) : '0'}`);
286
- },
287
- });
288
- const elapsed = Math.floor(result.elapsed_ms / 1000);
289
- if (result.stoppedBy === 'drained') {
290
- console.log(chalk.green(`\nFactory drained in ${elapsed}s (${result.waves} waves).`));
291
- }
292
- else if (result.stoppedBy === 'max-waves') {
293
- console.error(chalk.yellow(`\nHit --max-waves=${maxWaves}; stopping.`));
294
- }
295
- else if (result.stoppedBy === 'signal') {
296
- console.error(chalk.yellow(`\nStopped by signal after ${result.waves} waves.`));
297
- }
298
- });
299
- // `agents factory watch <team>` — tail the supervisor's log file written
300
- // by a background `factory start`. Non-blocking view of a running factory.
301
- factory
302
- .command('watch <team>')
303
- .description('Tail the supervisor log for a team started in the background. Press Ctrl-C to stop watching; the factory keeps running.')
304
- .action(async (team) => {
305
- const logPath = supervisorLogPath(team);
306
- if (!fs.existsSync(logPath)) {
307
- die(`No supervisor log at ${logPath}. Start one with: agents factory start "<brief>" --team ${team} --detach`);
308
- }
309
- // Use tail -F so we survive log rotation and missing files.
310
- const tailProc = spawn('tail', ['-F', '-n', '200', logPath], { stdio: 'inherit' });
311
- const onSig = () => tailProc.kill('SIGTERM');
312
- process.once('SIGINT', onSig);
313
- process.once('SIGTERM', onSig);
314
- });
315
- // `agents factory config` — show or edit the factory config file.
316
- // Thin CLI shim over readFactoryConfig/writeFactoryConfig; the settings
317
- // panel uses the same API for visual editing.
318
- factory
319
- .command('config')
320
- .description('Show or edit ~/.agents/factory/config.json (cloud provider priority, auto-detect repo, default planner agent).')
321
- .option('--set-priority <providers>', 'Comma-separated priority list, e.g. "rush,codex,local"')
322
- .option('--set-planner <agent>', 'Default planner agent: claude|codex|gemini|cursor|opencode')
323
- .option('--set-auto-detect-repo <bool>', '"true" or "false" — whether rush auto-detects --repo from git remote')
324
- .option('--set-interval <seconds>', 'Seconds between supervisor waves')
325
- .option('--json', 'Output machine-readable JSON')
326
- .action(async (opts) => {
327
- const update = {};
328
- if (opts.setPriority) {
329
- update.cloud_priority = opts.setPriority.split(',').map((s) => s.trim());
330
- }
331
- if (opts.setPlanner) {
332
- update.default_planner_agent = opts.setPlanner;
333
- }
334
- if (opts.setAutoDetectRepo !== undefined) {
335
- update.auto_detect_repo = opts.setAutoDetectRepo === 'true';
336
- }
337
- if (opts.setInterval) {
338
- const n = Number.parseInt(opts.setInterval, 10);
339
- if (Number.isFinite(n) && n >= 1)
340
- update.supervisor_interval_seconds = n;
341
- }
342
- const final = Object.keys(update).length > 0
343
- ? await writeFactoryConfig(update)
344
- : await readFactoryConfig();
345
- if (opts.json) {
346
- console.log(JSON.stringify(final, null, 2));
347
- return;
348
- }
349
- console.log(chalk.bold('Factory config'));
350
- console.log(` ${chalk.gray('cloud_priority ')} ${final.cloud_priority.join(' > ')}`);
351
- console.log(` ${chalk.gray('default_planner_agent ')} ${final.default_planner_agent}`);
352
- console.log(` ${chalk.gray('auto_detect_repo ')} ${final.auto_detect_repo}`);
353
- console.log(` ${chalk.gray('supervisor_interval_s ')} ${final.supervisor_interval_seconds}`);
354
- });
355
- // `agents factory stop <team>` — kill the detached supervisor for this team.
356
- // Teammate processes keep running; this only stops the wave dispatcher.
357
- factory
358
- .command('stop <team>')
359
- .description("Stop a team's background supervisor loop. Running teammates keep running; new waves stop firing.")
360
- .action((team) => {
361
- const pidFile = supervisorPidPath(team);
362
- if (!fs.existsSync(pidFile))
363
- die(`No supervisor pid file for team '${team}'.`);
364
- const pid = Number.parseInt(fs.readFileSync(pidFile, 'utf-8').trim(), 10);
365
- if (!Number.isFinite(pid) || pid <= 0)
366
- die(`Invalid pid in ${pidFile}.`);
367
- try {
368
- process.kill(pid, 'SIGTERM');
369
- console.log(chalk.green(`Sent SIGTERM to supervisor pid ${pid} for team ${team}.`));
370
- fs.rmSync(pidFile, { force: true });
371
- }
372
- catch (err) {
373
- if (err?.code === 'ESRCH') {
374
- console.log(chalk.gray(`Supervisor pid ${pid} already gone; cleaning up pidfile.`));
375
- fs.rmSync(pidFile, { force: true });
376
- }
377
- else {
378
- die(`Failed to stop supervisor: ${err.message}`);
379
- }
380
- }
381
- });
382
- // `agents factory answer <team> <text>` — reply to the oldest input_required teammate.
383
- factory
384
- .command('answer <team> <text>')
385
- .description("Answer an open question from a teammate — forwards the text to the oldest 'input_required' cloud task.")
386
- .option('--json', 'Output machine-readable JSON')
387
- .action(async (team, text, opts) => {
388
- const mgr = new AgentManager();
389
- const teammates = await mgr.listByTask(team);
390
- // input_required is a cloud-task status, not a local AgentStatus. Detect
391
- // via status string so we still work for non-cloud teams (if someone ever
392
- // plumbs the same status through).
393
- const waiting = teammates.filter((t) => t.status === 'input_required');
394
- if (waiting.length === 0) {
395
- die(`No teammates waiting on input in team '${team}'.`);
396
- }
397
- waiting.sort((a, b) => a.startedAt.getTime() - b.startedAt.getTime());
398
- const target = waiting[0];
399
- if (!target.cloudProvider || !target.cloudSessionId) {
400
- die(`Teammate '${target.name ?? target.agentId}' is waiting on input but has no cloud session to message.`);
401
- }
402
- try {
403
- const prov = resolveProvider(target.cloudProvider);
404
- await prov.message(target.cloudSessionId, text);
405
- }
406
- catch (err) {
407
- die(`Provider rejected the message: ${err.message}`);
408
- }
409
- if (opts.json) {
410
- console.log(JSON.stringify({ ok: true, teammate: target.name ?? target.agentId }, null, 2));
411
- return;
412
- }
413
- console.log(chalk.green(`Replied to ${target.name ?? target.agentId.slice(0, 8)} on ${target.cloudProvider}.`));
414
- });
415
- // `agents factory evict <agent_id>`
416
- //
417
- // Designed to run from a Kubernetes pod's preStop hook. Flushes the local
418
- // teammate state (session log, git diff, registry entry, note) to the
419
- // configured Ledger backend so it survives SIGTERM.
420
- factory
421
- .command('evict <agent_id>')
422
- .description("Pre-SIGTERM: flush this teammate's state to the Team Ledger so other teammates can still read it.")
423
- .option('--reason <text>', 'Short note describing why eviction happened', 'pod eviction')
424
- .option('--json', 'Output machine-readable JSON')
425
- .action(async (agentId, opts) => {
426
- const mgr = new AgentManager();
427
- const agent = await mgr.get(agentId);
428
- if (!agent)
429
- die(`No teammate with id '${agentId}'`);
430
- const ledger = resolveLedger();
431
- const snap = await agent.toSnapshot();
432
- try {
433
- await syncOnEviction(snap, ledger);
434
- }
435
- catch (err) {
436
- die(`Eviction sync failed: ${err.message}`);
437
- }
438
- if (opts.json) {
439
- console.log(JSON.stringify({ ok: true, agent_id: agentId, ledger: ledger.kind, reason: opts.reason }, null, 2));
440
- return;
441
- }
442
- console.log(chalk.green(`Flushed ${agentId.slice(0, 8)} to ${ledger.kind} ledger (${opts.reason}).`));
443
- });
444
- }
445
- //# sourceMappingURL=factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/commands/factory.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Repository fork command.
3
- *
4
- * Registers the `agents fork` command which forks the default system
5
- * config repo to the user's GitHub account, reconfigures remotes
6
- * (origin -> user fork, upstream -> system repo), and pushes.
7
- */
8
- import type { Command } from 'commander';
9
- /** Register the `agents fork` command. */
10
- export declare function registerForkCommand(program: Command): void;
11
- //# sourceMappingURL=fork.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fork.d.ts","sourceRoot":"","sources":["../../src/commands/fork.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC,0CAA0C;AAC1C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4I1D"}
@@ -1,147 +0,0 @@
1
- /**
2
- * Repository fork command.
3
- *
4
- * Registers the `agents fork` command which forks the default system
5
- * config repo to the user's GitHub account, reconfigures remotes
6
- * (origin -> user fork, upstream -> system repo), and pushes.
7
- */
8
- import chalk from 'chalk';
9
- import ora from 'ora';
10
- import { getAgentsDir, ensureAgentsDir } from '../lib/state.js';
11
- import { isGitRepo, isSystemRepoOrigin, getGitHubUsername, hasLocalChanges, setUpstreamRemote, setRemoteUrl, getRemoteUrl, } from '../lib/git.js';
12
- import { DEFAULT_SYSTEM_REPO, systemRepoSlug } from '../lib/types.js';
13
- import { isPromptCancelled } from './utils.js';
14
- /** Register the `agents fork` command. */
15
- export function registerForkCommand(program) {
16
- program
17
- .command('fork')
18
- .description('Copy the default config repo to your own GitHub so you can push changes. Runs once after init.')
19
- .addHelpText('after', `
20
- Examples:
21
- # Fork the default repo to your GitHub account
22
- agents fork
23
-
24
- When to use:
25
- - You initialized with 'agents init' using the default config
26
- - You've customized commands, skills, or settings
27
- - You want to save your changes to your own GitHub repo
28
-
29
- What it does:
30
- 1. Creates a fork of the default repo under your GitHub account (gh:yourname/.agents)
31
- 2. Reconfigures remotes: origin -> your fork, upstream -> default repo
32
- 3. Commits any local changes you've made
33
- 4. Pushes everything to your new fork
34
-
35
- After forking:
36
- - 'agents push' sends your changes to your fork
37
- - 'agents pull --upstream' pulls updates from the default repo
38
-
39
- Requirements:
40
- - GitHub CLI authenticated (run 'gh auth login' if needed)
41
- - ~/.agents/ must be tracking the default repo (not already forked)
42
- `)
43
- .action(async () => {
44
- try {
45
- const agentsDir = getAgentsDir();
46
- ensureAgentsDir();
47
- // Check if ~/.agents/ is a git repo
48
- if (!isGitRepo(agentsDir)) {
49
- console.log(chalk.yellow('~/.agents/ is not a git repository.'));
50
- console.log(chalk.gray('\nInitialize first:'));
51
- console.log(chalk.cyan(' agents pull'));
52
- return;
53
- }
54
- // Check if already forked (origin is not system repo)
55
- if (!await isSystemRepoOrigin(agentsDir)) {
56
- const currentOrigin = await getRemoteUrl(agentsDir);
57
- console.log(chalk.green('Already forked!'));
58
- console.log(chalk.gray(`\nOrigin: ${currentOrigin}`));
59
- console.log(chalk.gray('\nTo push your changes:'));
60
- console.log(chalk.cyan(' agents push'));
61
- console.log(chalk.gray('\nTo pull updates from system repo:'));
62
- console.log(chalk.cyan(' agents pull --upstream'));
63
- return;
64
- }
65
- // Get GitHub username
66
- const spinner = ora('Checking GitHub...').start();
67
- const username = await getGitHubUsername();
68
- if (!username) {
69
- spinner.fail('GitHub CLI not authenticated');
70
- console.log(chalk.gray('\nTo authenticate:'));
71
- console.log(chalk.cyan(' gh auth login'));
72
- return;
73
- }
74
- spinner.succeed(`Logged in as ${username}`);
75
- // Fork the system repo
76
- const forkSpinner = ora('Forking system repo...').start();
77
- const { exec } = await import('child_process');
78
- const { promisify } = await import('util');
79
- const execAsync = promisify(exec);
80
- const repoSlug = systemRepoSlug(DEFAULT_SYSTEM_REPO);
81
- try {
82
- // gh repo fork creates a fork and optionally clones it
83
- // We just want to create the fork on GitHub, not clone
84
- await execAsync(`gh repo fork ${repoSlug} --clone=false`);
85
- forkSpinner.succeed(`Forked to ${username}/.agents`);
86
- }
87
- catch (err) {
88
- const errorMsg = err.message;
89
- // Check if fork already exists
90
- if (errorMsg.includes('already exists') || errorMsg.includes('409')) {
91
- forkSpinner.info(`Fork ${username}/.agents already exists`);
92
- }
93
- else {
94
- forkSpinner.fail(`Failed to fork: ${errorMsg}`);
95
- return;
96
- }
97
- }
98
- // Reconfigure remotes
99
- const remoteSpinner = ora('Reconfiguring remotes...').start();
100
- // Set current origin as upstream
101
- await setUpstreamRemote(agentsDir, `https://github.com/${repoSlug}.git`);
102
- // Set user's fork as new origin
103
- await setRemoteUrl(agentsDir, `https://github.com/${username}/.agents.git`);
104
- remoteSpinner.succeed('Reconfigured remotes');
105
- console.log(chalk.gray(` origin -> ${username}/.agents`));
106
- console.log(chalk.gray(` upstream -> ${repoSlug}`));
107
- // Commit any local changes
108
- if (await hasLocalChanges(agentsDir)) {
109
- const commitSpinner = ora('Committing local changes...').start();
110
- const simpleGit = (await import('simple-git')).default;
111
- const git = simpleGit(agentsDir);
112
- await git.add('-A');
113
- await git.commit('Local changes before fork');
114
- commitSpinner.succeed('Committed local changes');
115
- }
116
- // Push to new origin
117
- const pushSpinner = ora('Pushing to your fork...').start();
118
- try {
119
- const simpleGit = (await import('simple-git')).default;
120
- const git = simpleGit(agentsDir);
121
- await git.push('origin', 'main', ['--set-upstream']);
122
- pushSpinner.succeed('Pushed to your fork');
123
- }
124
- catch (err) {
125
- pushSpinner.fail(`Push failed: ${err.message}`);
126
- console.log(chalk.yellow('\nYou can push manually later:'));
127
- console.log(chalk.cyan(' agents push'));
128
- return;
129
- }
130
- console.log(chalk.green('\nFork complete!'));
131
- console.log(chalk.gray(`\nView: https://github.com/${username}/.agents`));
132
- console.log(chalk.gray('\nTo push future changes:'));
133
- console.log(chalk.cyan(' agents push'));
134
- console.log(chalk.gray('\nTo pull updates from system repo:'));
135
- console.log(chalk.cyan(' agents pull --upstream'));
136
- }
137
- catch (err) {
138
- if (isPromptCancelled(err)) {
139
- console.log(chalk.yellow('\nCancelled'));
140
- process.exit(0);
141
- }
142
- console.error(chalk.red(err.message));
143
- process.exit(1);
144
- }
145
- });
146
- }
147
- //# sourceMappingURL=fork.js.map