@swarmify/agents-cli 1.13.3 → 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 -1071
  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,724 +0,0 @@
1
- import chalk from 'chalk';
2
- import ora from 'ora';
3
- import * as fs from 'fs';
4
- import * as os from 'os';
5
- import * as path from 'path';
6
- import { confirm, checkbox } from '@inquirer/prompts';
7
- import { AGENTS, resolveAgentName, formatAgentError, agentLabel, } from '../lib/agents.js';
8
- import { cloneRepo } from '../lib/git.js';
9
- import { PERMISSIONS_CAPABLE_AGENTS, listInstalledPermissions, discoverPermissionsFromRepo, installPermissionSet, removePermissionSet, applyPermissionsToVersion, readAgentPermissions, exportPermissionsFromPath, getDefaultPermissionSet, computePermissionsDiff, mergePermissionSets, saveDefaultPermissionSet, } from '../lib/permissions.js';
10
- import { listInstalledVersions, getGlobalDefault, getVersionHomePath, promptAgentVersionSelection, resolveAgentVersionTargets, } from '../lib/versions.js';
11
- import { recordVersionResources } from '../lib/state.js';
12
- import { isPromptCancelled, isInteractiveTerminal, parseCommaSeparatedList, printWithPager, requireInteractiveSelection, } from './utils.js';
13
- /** Register the `agents permissions` command tree (list, add, remove, view). */
14
- export function registerPermissionsCommands(program) {
15
- const permissionsCmd = program
16
- .command('permissions')
17
- .description('Control what agents can access with allow/deny rules for bash, tools, and filesystem')
18
- .addHelpText('after', `
19
- Permissions define the boundary of what an agent can touch. Rules are organized into named sets stored in ~/.agents/permissions/ as YAML files. Apply sets to specific agent versions to reduce permission prompts or lock down behavior.
20
-
21
- Examples:
22
- # List permission sets in central storage
23
- agents permissions list
24
-
25
- # Check active permissions for an agent
26
- agents permissions list claude@2.1.112
27
-
28
- # Import permissions from an existing agent config
29
- agents permissions add ~/.claude/settings.json --agents claude
30
-
31
- # Install a permission set from GitHub
32
- agents permissions add gh:team/permissions --agents codex,claude
33
-
34
- # Apply a stored set to multiple versions
35
- agents permissions add --names default --agents claude@2.1.112,codex@0.116.0
36
-
37
- When to use:
38
- - Reducing prompts: extract your allow list with 'agents permissions add ~/.claude/settings.json'
39
- - Team sync: share permission sets via 'agents permissions add gh:team/perms'
40
- - Version isolation: apply stricter permissions to experimental versions
41
- `);
42
- permissionsCmd
43
- .command('list [agent]')
44
- .description('Show permission sets in storage or active permissions for an agent version')
45
- .option('-s, --scope <scope>', 'user (global) or project (repo-specific)', 'user')
46
- .action(async (agentArg, options) => {
47
- const cwd = process.cwd();
48
- // Helper to render permissions for a specific version
49
- const renderVersionPermissions = (agentId, version, isDefault, home, scope) => {
50
- const agent = AGENTS[agentId];
51
- const defaultLabel = isDefault ? ' default' : '';
52
- const versionStr = chalk.gray(` (${version}${defaultLabel})`);
53
- const perms = readAgentPermissions(agentId, scope, cwd, { home });
54
- if (!perms) {
55
- console.log(` ${chalk.bold(agentLabel(agent.id))}${versionStr}: ${chalk.gray('none')}`);
56
- console.log();
57
- return;
58
- }
59
- console.log(` ${chalk.bold(agentLabel(agent.id))}${versionStr}:`);
60
- if (agentId === 'claude') {
61
- const claudePerms = perms;
62
- if (claudePerms.permissions.allow.length > 0) {
63
- console.log(chalk.green(' Allow:'));
64
- for (const p of claudePerms.permissions.allow) {
65
- console.log(` ${chalk.cyan(p)}`);
66
- }
67
- }
68
- if (claudePerms.permissions.deny.length > 0) {
69
- console.log(chalk.red(' Deny:'));
70
- for (const p of claudePerms.permissions.deny) {
71
- console.log(` ${chalk.yellow(p)}`);
72
- }
73
- }
74
- }
75
- else if (agentId === 'opencode') {
76
- const ocPerms = perms;
77
- console.log(chalk.gray(' Bash commands:'));
78
- for (const [pattern, action] of Object.entries(ocPerms.permission.bash)) {
79
- const color = action === 'allow' ? chalk.green : action === 'deny' ? chalk.red : chalk.yellow;
80
- console.log(` ${chalk.cyan(pattern)}: ${color(action)}`);
81
- }
82
- }
83
- else if (agentId === 'codex') {
84
- const codexPerms = perms;
85
- if (codexPerms.approval_policy) {
86
- console.log(` ${chalk.gray('approval_policy:')} ${chalk.cyan(codexPerms.approval_policy)}`);
87
- }
88
- if (codexPerms.sandbox_mode) {
89
- console.log(` ${chalk.gray('sandbox_mode:')} ${chalk.cyan(codexPerms.sandbox_mode)}`);
90
- }
91
- if (codexPerms.sandbox_workspace_write) {
92
- const sw = codexPerms.sandbox_workspace_write;
93
- if (sw.network_access !== undefined) {
94
- console.log(` ${chalk.gray('network_access:')} ${chalk.cyan(String(sw.network_access))}`);
95
- }
96
- if (sw.writable_roots && sw.writable_roots.length > 0) {
97
- console.log(` ${chalk.gray('writable_roots:')}`);
98
- for (const r of sw.writable_roots) {
99
- console.log(` ${chalk.cyan(r)}`);
100
- }
101
- }
102
- }
103
- }
104
- console.log();
105
- };
106
- if (agentArg) {
107
- // Parse agent@version syntax
108
- const parts = agentArg.split('@');
109
- const agentName = parts[0];
110
- const requestedVersion = parts[1] || null;
111
- const agentId = resolveAgentName(agentName);
112
- if (!agentId) {
113
- console.log(chalk.red(formatAgentError(agentName, PERMISSIONS_CAPABLE_AGENTS)));
114
- process.exit(1);
115
- }
116
- if (!PERMISSIONS_CAPABLE_AGENTS.includes(agentId)) {
117
- console.log(chalk.yellow(`${AGENTS[agentId].name} does not support fine-grained permissions`));
118
- return;
119
- }
120
- const agent = AGENTS[agentId];
121
- const installedVersions = listInstalledVersions(agentId);
122
- const defaultVer = getGlobalDefault(agentId);
123
- console.log(chalk.bold(`Installed Permissions for ${agentLabel(agent.id)} (${options.scope}):\n`));
124
- if (installedVersions.length === 0) {
125
- // Not version-managed - use default home
126
- const perms = readAgentPermissions(agentId, options.scope, cwd);
127
- if (!perms) {
128
- console.log(chalk.gray(` No permissions configured`));
129
- return;
130
- }
131
- console.log(` ${chalk.bold(agentLabel(agent.id))}:`);
132
- if (agentId === 'claude') {
133
- const claudePerms = perms;
134
- if (claudePerms.permissions.allow.length > 0) {
135
- console.log(chalk.green(' Allow:'));
136
- for (const p of claudePerms.permissions.allow) {
137
- console.log(` ${chalk.cyan(p)}`);
138
- }
139
- }
140
- if (claudePerms.permissions.deny.length > 0) {
141
- console.log(chalk.red(' Deny:'));
142
- for (const p of claudePerms.permissions.deny) {
143
- console.log(` ${chalk.yellow(p)}`);
144
- }
145
- }
146
- }
147
- return;
148
- }
149
- // Version-managed: determine which versions to show
150
- let versionsToShow;
151
- if (requestedVersion === 'default') {
152
- if (!defaultVer) {
153
- console.log(chalk.yellow(` No default version set for ${agentLabel(agent.id)}. Run: agents use ${agentId}@<version>`));
154
- return;
155
- }
156
- versionsToShow = [defaultVer];
157
- }
158
- else if (requestedVersion) {
159
- if (!installedVersions.includes(requestedVersion)) {
160
- console.log(chalk.red(` Version ${requestedVersion} not installed for ${agentLabel(agent.id)}.`));
161
- console.log(chalk.gray(` Installed versions: ${installedVersions.join(', ')}`));
162
- return;
163
- }
164
- versionsToShow = [requestedVersion];
165
- }
166
- else {
167
- // Show all versions, default first
168
- versionsToShow = [...installedVersions].sort((a, b) => {
169
- if (a === defaultVer)
170
- return -1;
171
- if (b === defaultVer)
172
- return 1;
173
- return 0;
174
- });
175
- }
176
- for (const version of versionsToShow) {
177
- const home = getVersionHomePath(agentId, version);
178
- renderVersionPermissions(agentId, version, version === defaultVer, home, options.scope);
179
- }
180
- }
181
- else {
182
- // List central permission sets
183
- const sets = listInstalledPermissions();
184
- if (sets.length === 0) {
185
- console.log(chalk.gray('No permission sets installed.'));
186
- console.log(chalk.gray('Use `agents permissions add <source>` to add permission sets.'));
187
- return;
188
- }
189
- console.log(chalk.bold('Installed Permission Sets:\n'));
190
- for (const perm of sets) {
191
- const desc = perm.set.description ? ` - ${chalk.gray(perm.set.description)}` : '';
192
- console.log(` ${chalk.cyan(perm.name)}${desc}`);
193
- console.log(` ${chalk.gray(`${perm.set.allow.length} allow, ${perm.set.deny?.length || 0} deny rules`)}`);
194
- }
195
- }
196
- });
197
- permissionsCmd
198
- .command('add [source]')
199
- .description('Import permissions from an agent config, YAML, or GitHub, then apply to versions')
200
- .option('-a, --agents <list>', 'Targets: claude, codex@0.116.0, or gemini@default')
201
- .option('--names <list>', 'Permission set names from ~/.agents/permissions/ (comma-separated)')
202
- .option('--all', 'Apply to all installed versions instead of just defaults')
203
- .option('--replace', 'Replace managed permission block instead of merging (drops rules no longer in the set)')
204
- .option('-y, --yes', 'Skip all prompts and confirmations')
205
- .addHelpText('after', `
206
- Examples:
207
- # Import from an existing agent config (merges into default.yml)
208
- agents permissions add ~/.claude/settings.json --agents claude
209
-
210
- # Install permission YAML from GitHub
211
- agents permissions add gh:team/permissions --agents codex,claude
212
-
213
- # Apply a stored set to specific versions
214
- agents permissions add --names default --agents claude@2.1.112,codex@0.116.0
215
-
216
- # Apply to all installed versions non-interactively
217
- agents permissions add --names default --all --yes
218
-
219
- # Replace (don't merge) — drop rules no longer in the central set
220
- agents permissions add --names default --agents claude@default --replace --yes
221
- `)
222
- .action(async (source, options) => {
223
- try {
224
- const skipPrompts = options.yes || !isInteractiveTerminal();
225
- // Interactive mode: pick from central storage
226
- if (!source) {
227
- const installedSets = listInstalledPermissions();
228
- if (installedSets.length === 0) {
229
- console.log(chalk.yellow('No permission sets in ~/.agents/permissions/'));
230
- console.log(chalk.gray('\nTo add permissions from a file or repo:'));
231
- console.log(chalk.cyan(' agents permissions add ~/.claude/settings.json'));
232
- console.log(chalk.cyan(' agents permissions add gh:user/repo'));
233
- return;
234
- }
235
- const availableSetNames = installedSets.map((set) => set.name);
236
- const requestedNames = parseCommaSeparatedList(options.names);
237
- let selectedNames;
238
- if (requestedNames.length > 0) {
239
- const missing = requestedNames.filter((name) => !availableSetNames.includes(name));
240
- if (missing.length > 0) {
241
- console.log(chalk.red(`Unknown permission set(s): ${missing.join(', ')}`));
242
- console.log(chalk.gray(`Available: ${availableSetNames.join(', ')}`));
243
- process.exit(1);
244
- }
245
- selectedNames = requestedNames;
246
- }
247
- else {
248
- if (!isInteractiveTerminal()) {
249
- requireInteractiveSelection('Selecting permission sets from ~/.agents/permissions/', [
250
- 'agents permissions add --names default --agents codex',
251
- 'agents permissions add ./permissions/default.yml --agents codex',
252
- ]);
253
- }
254
- const choices = installedSets.map((installed) => ({
255
- value: installed.name,
256
- name: installed.set.description
257
- ? `${installed.name} ${chalk.gray(installed.set.description.slice(0, 40))}`
258
- : `${installed.name} ${chalk.gray(`${installed.set.allow.length} allow, ${installed.set.deny?.length || 0} deny`)}`,
259
- }));
260
- const selected = await checkbox({
261
- message: 'Select permission sets to apply',
262
- choices: [
263
- { value: '__all__', name: chalk.bold('Select All') },
264
- ...choices,
265
- ],
266
- });
267
- if (selected.length === 0) {
268
- console.log(chalk.gray('No permission sets selected.'));
269
- return;
270
- }
271
- selectedNames = selected.includes('__all__')
272
- ? availableSetNames
273
- : selected.filter((s) => s !== '__all__');
274
- }
275
- let selectedAgents;
276
- let versionSelections;
277
- if (options.agents) {
278
- const result = resolveAgentVersionTargets(options.agents, PERMISSIONS_CAPABLE_AGENTS, {
279
- allVersions: options.all,
280
- });
281
- selectedAgents = result.selectedAgents;
282
- versionSelections = result.versionSelections;
283
- }
284
- else if (options.all) {
285
- selectedAgents = [...PERMISSIONS_CAPABLE_AGENTS];
286
- versionSelections = new Map();
287
- for (const agentId of selectedAgents) {
288
- const versions = listInstalledVersions(agentId);
289
- if (versions.length > 0) {
290
- versionSelections.set(agentId, [...versions]);
291
- }
292
- }
293
- }
294
- else {
295
- const result = await promptAgentVersionSelection(PERMISSIONS_CAPABLE_AGENTS, { skipPrompts });
296
- selectedAgents = result.selectedAgents;
297
- versionSelections = result.versionSelections;
298
- }
299
- if (selectedAgents.length === 0) {
300
- console.log(chalk.yellow('\nNo agents selected.'));
301
- return;
302
- }
303
- // Apply selected permission sets
304
- let applied = 0;
305
- for (const setName of selectedNames) {
306
- const installed = installedSets.find((s) => s.name === setName);
307
- if (!installed)
308
- continue;
309
- for (const [agentId, versions] of versionSelections) {
310
- for (const version of versions) {
311
- const versionHome = getVersionHomePath(agentId, version);
312
- const applyResult = applyPermissionsToVersion(agentId, installed.set, versionHome, !options.replace);
313
- if (applyResult.success) {
314
- console.log(chalk.green(` Applied ${setName} to ${agentLabel(agentId)}@${version}`));
315
- recordVersionResources(agentId, version, 'permissions', [setName]);
316
- applied++;
317
- }
318
- else {
319
- console.log(chalk.red(` Failed: ${agentLabel(agentId)}@${version}: ${applyResult.error}`));
320
- }
321
- }
322
- }
323
- }
324
- console.log(chalk.green(`\nApplied permissions to ${applied} version(s).`));
325
- return;
326
- }
327
- const spinner = ora('Fetching permissions...').start();
328
- const isGitRepo = source.startsWith('gh:') || source.startsWith('git:') ||
329
- source.startsWith('ssh:') || source.startsWith('https://') ||
330
- source.startsWith('http://');
331
- let localPath;
332
- if (isGitRepo) {
333
- const result = await cloneRepo(source);
334
- localPath = result.localPath;
335
- spinner.succeed('Repository cloned');
336
- }
337
- else {
338
- localPath = source.startsWith('~')
339
- ? path.join(os.homedir(), source.slice(1))
340
- : path.resolve(source);
341
- if (!fs.existsSync(localPath)) {
342
- spinner.fail(`Path not found: ${localPath}`);
343
- return;
344
- }
345
- spinner.succeed('Using local path');
346
- }
347
- // Check if this is an agent config file
348
- const isAgentConfig = localPath.endsWith('.json') || localPath.endsWith('.jsonc') || localPath.endsWith('.toml');
349
- const looksLikeAgentConfig = localPath.includes('.claude') || localPath.includes('.opencode') || localPath.includes('.codex');
350
- if (isAgentConfig && looksLikeAgentConfig) {
351
- // Handle agent config file - convert, diff, merge into default set
352
- const incoming = exportPermissionsFromPath(localPath);
353
- if (!incoming || (incoming.allow.length === 0 && (!incoming.deny || incoming.deny.length === 0))) {
354
- console.log(chalk.yellow(`\nNo permissions found in ${localPath}`));
355
- return;
356
- }
357
- // Get existing default permission set
358
- const existing = getDefaultPermissionSet();
359
- // Compute diff
360
- const diff = computePermissionsDiff(existing, incoming);
361
- const totalNew = diff.allow.added.length + diff.deny.added.length;
362
- const totalExisting = diff.allow.existing.length + diff.deny.existing.length;
363
- if (totalNew === 0) {
364
- console.log(chalk.gray('\nAll permissions already exist in central storage.'));
365
- return;
366
- }
367
- // Show diff
368
- console.log(chalk.bold('\nPermissions to add:\n'));
369
- if (diff.allow.added.length > 0) {
370
- console.log(chalk.green(' New allow rules:'));
371
- for (const rule of diff.allow.added.slice(0, 20)) {
372
- console.log(chalk.green(` + ${rule}`));
373
- }
374
- if (diff.allow.added.length > 20) {
375
- console.log(chalk.green(` ... and ${diff.allow.added.length - 20} more`));
376
- }
377
- }
378
- if (diff.deny.added.length > 0) {
379
- console.log(chalk.red('\n New deny rules:'));
380
- for (const rule of diff.deny.added) {
381
- console.log(chalk.red(` + ${rule}`));
382
- }
383
- }
384
- if (totalExisting > 0) {
385
- console.log(chalk.gray(`\n (${totalExisting} rules already exist, will be skipped)`));
386
- }
387
- console.log();
388
- // Confirm
389
- if (!skipPrompts) {
390
- const proceed = await confirm({
391
- message: `Add ${totalNew} new permission rule${totalNew === 1 ? '' : 's'}?`,
392
- default: true,
393
- });
394
- if (!proceed) {
395
- console.log(chalk.gray('Cancelled.'));
396
- return;
397
- }
398
- }
399
- // Merge and save
400
- const merged = mergePermissionSets(existing, incoming);
401
- const result = saveDefaultPermissionSet(merged);
402
- if (!result.success) {
403
- console.log(chalk.red(`Failed to save: ${result.error}`));
404
- return;
405
- }
406
- console.log(chalk.green(`Added ${totalNew} permission${totalNew === 1 ? '' : 's'} to ~/.agents/permissions/default.yml`));
407
- // Apply to agent versions
408
- let selectedAgents;
409
- let versionSelections;
410
- if (options.agents) {
411
- const result = resolveAgentVersionTargets(options.agents, PERMISSIONS_CAPABLE_AGENTS, {
412
- allVersions: options.all,
413
- });
414
- selectedAgents = result.selectedAgents;
415
- versionSelections = result.versionSelections;
416
- }
417
- else if (options.all) {
418
- selectedAgents = [...PERMISSIONS_CAPABLE_AGENTS];
419
- versionSelections = new Map();
420
- for (const agentId of selectedAgents) {
421
- const versions = listInstalledVersions(agentId);
422
- if (versions.length > 0) {
423
- versionSelections.set(agentId, [...versions]);
424
- }
425
- }
426
- }
427
- else if (!skipPrompts) {
428
- const applyNow = await confirm({
429
- message: 'Apply permissions to agent versions now?',
430
- default: true,
431
- });
432
- if (applyNow) {
433
- const result = await promptAgentVersionSelection(PERMISSIONS_CAPABLE_AGENTS, { skipPrompts: false });
434
- selectedAgents = result.selectedAgents;
435
- versionSelections = result.versionSelections;
436
- }
437
- else {
438
- selectedAgents = [];
439
- versionSelections = new Map();
440
- }
441
- }
442
- else {
443
- selectedAgents = [];
444
- versionSelections = new Map();
445
- }
446
- if (selectedAgents.length > 0) {
447
- let applied = 0;
448
- for (const [agentId, versions] of versionSelections) {
449
- for (const version of versions) {
450
- const versionHome = getVersionHomePath(agentId, version);
451
- const applyResult = applyPermissionsToVersion(agentId, merged, versionHome, !options.replace);
452
- if (applyResult.success) {
453
- console.log(chalk.green(` Applied to ${agentLabel(agentId)}@${version}`));
454
- recordVersionResources(agentId, version, 'permissions', [merged.name || 'default']);
455
- applied++;
456
- }
457
- else {
458
- console.log(chalk.red(` Failed: ${agentLabel(agentId)}@${version}: ${applyResult.error}`));
459
- }
460
- }
461
- }
462
- console.log(chalk.gray(`\nApplied permissions to ${applied} version(s).`));
463
- }
464
- }
465
- else {
466
- // Handle permission YAML files or repo
467
- let permissions;
468
- if (localPath.endsWith('.yml') || localPath.endsWith('.yaml')) {
469
- const { parsePermissionSet } = await import('../lib/permissions.js');
470
- const set = parsePermissionSet(localPath);
471
- if (set) {
472
- permissions = [{ name: set.name, path: localPath, set }];
473
- }
474
- else {
475
- console.log(chalk.red('Invalid permission file'));
476
- return;
477
- }
478
- }
479
- else {
480
- permissions = discoverPermissionsFromRepo(localPath);
481
- }
482
- if (permissions.length === 0) {
483
- console.log(chalk.yellow('\nNo permission sets found'));
484
- return;
485
- }
486
- console.log(chalk.bold(`\nFound ${permissions.length} permission set(s):`));
487
- for (const perm of permissions) {
488
- const desc = perm.set.description ? ` - ${perm.set.description}` : '';
489
- console.log(` ${chalk.cyan(perm.name)}${desc}`);
490
- console.log(` ${chalk.gray(`${perm.set.allow.length} allow, ${perm.set.deny?.length || 0} deny rules`)}`);
491
- }
492
- // Confirm installation
493
- if (!skipPrompts) {
494
- const proceed = await confirm({
495
- message: 'Install these permission sets?',
496
- default: true,
497
- });
498
- if (!proceed) {
499
- console.log(chalk.gray('Cancelled.'));
500
- return;
501
- }
502
- }
503
- const installSpinner = ora('Installing permission sets...').start();
504
- let installed = 0;
505
- for (const perm of permissions) {
506
- const result = installPermissionSet(perm.path, perm.name);
507
- if (result.success) {
508
- installed++;
509
- }
510
- else {
511
- installSpinner.stop();
512
- console.log(chalk.red(` Failed to install ${perm.name}: ${result.error}`));
513
- installSpinner.start();
514
- }
515
- }
516
- installSpinner.succeed(`Installed ${installed} permission set(s) to ~/.agents/permissions/`);
517
- // Apply to agent versions
518
- let selectedAgents;
519
- let versionSelections;
520
- if (options.agents) {
521
- const result = resolveAgentVersionTargets(options.agents, PERMISSIONS_CAPABLE_AGENTS, {
522
- allVersions: options.all,
523
- });
524
- selectedAgents = result.selectedAgents;
525
- versionSelections = result.versionSelections;
526
- }
527
- else if (options.all) {
528
- selectedAgents = [...PERMISSIONS_CAPABLE_AGENTS];
529
- versionSelections = new Map();
530
- for (const agentId of selectedAgents) {
531
- const versions = listInstalledVersions(agentId);
532
- if (versions.length > 0) {
533
- versionSelections.set(agentId, [...versions]);
534
- }
535
- }
536
- }
537
- else if (!skipPrompts) {
538
- const applyNow = await confirm({
539
- message: 'Apply these permissions to agent versions now?',
540
- default: true,
541
- });
542
- if (applyNow) {
543
- const result = await promptAgentVersionSelection(PERMISSIONS_CAPABLE_AGENTS, { skipPrompts: false });
544
- selectedAgents = result.selectedAgents;
545
- versionSelections = result.versionSelections;
546
- }
547
- else {
548
- selectedAgents = [];
549
- versionSelections = new Map();
550
- }
551
- }
552
- else {
553
- selectedAgents = [];
554
- versionSelections = new Map();
555
- }
556
- if (selectedAgents.length > 0) {
557
- let applied = 0;
558
- for (const perm of permissions) {
559
- for (const [agentId, versions] of versionSelections) {
560
- for (const version of versions) {
561
- const versionHome = getVersionHomePath(agentId, version);
562
- const applyResult = applyPermissionsToVersion(agentId, perm.set, versionHome, !options.replace);
563
- if (applyResult.success) {
564
- console.log(chalk.green(` Applied ${perm.name} to ${agentLabel(agentId)}@${version}`));
565
- recordVersionResources(agentId, version, 'permissions', [perm.name]);
566
- applied++;
567
- }
568
- else {
569
- console.log(chalk.red(` Failed: ${agentLabel(agentId)}@${version}: ${applyResult.error}`));
570
- }
571
- }
572
- }
573
- }
574
- console.log(chalk.gray(`\nApplied permissions to ${applied} version(s).`));
575
- }
576
- }
577
- }
578
- catch (err) {
579
- if (isPromptCancelled(err)) {
580
- console.log(chalk.gray('\nCancelled.'));
581
- return;
582
- }
583
- console.error(chalk.red(`Error: ${err.message}`));
584
- }
585
- });
586
- permissionsCmd
587
- .command('remove [name]')
588
- .description('Delete a permission set from ~/.agents/permissions/ (interactive picker if no name given)')
589
- .addHelpText('after', `
590
- Examples:
591
- # Remove a set by name
592
- agents permissions remove default
593
-
594
- # Interactive picker
595
- agents permissions remove
596
- `)
597
- .action(async (name) => {
598
- let setsToRemove;
599
- if (name) {
600
- setsToRemove = [name];
601
- }
602
- else {
603
- // Interactive picker
604
- const installedSets = listInstalledPermissions();
605
- if (installedSets.length === 0) {
606
- console.log(chalk.yellow('No permission sets installed.'));
607
- return;
608
- }
609
- if (!isInteractiveTerminal()) {
610
- requireInteractiveSelection('Selecting permission sets to remove', [
611
- 'agents permissions remove default',
612
- ]);
613
- }
614
- try {
615
- const selected = await checkbox({
616
- message: 'Select permission sets to remove',
617
- choices: installedSets.map((perm) => ({
618
- value: perm.name,
619
- name: perm.set.description
620
- ? `${perm.name} - ${perm.set.description}`
621
- : perm.name,
622
- })),
623
- });
624
- if (selected.length === 0) {
625
- console.log(chalk.gray('No permission sets selected.'));
626
- return;
627
- }
628
- setsToRemove = selected;
629
- }
630
- catch (err) {
631
- if (isPromptCancelled(err)) {
632
- console.log(chalk.gray('Cancelled'));
633
- return;
634
- }
635
- throw err;
636
- }
637
- }
638
- for (const setName of setsToRemove) {
639
- const result = removePermissionSet(setName);
640
- if (result.success) {
641
- console.log(chalk.green(`Removed permission set '${setName}'`));
642
- }
643
- else {
644
- console.log(chalk.red(result.error));
645
- }
646
- }
647
- });
648
- permissionsCmd
649
- .command('view [name]')
650
- .description('Read the allow and deny rules for a stored permission set')
651
- .addHelpText('after', `
652
- Examples:
653
- # View a specific permission set
654
- agents permissions view default
655
-
656
- # Interactive picker
657
- agents permissions view
658
- `)
659
- .action(async (name) => {
660
- const installedSets = listInstalledPermissions();
661
- if (installedSets.length === 0) {
662
- console.log(chalk.yellow('No permission sets installed'));
663
- return;
664
- }
665
- // If no name provided, show interactive select
666
- if (!name) {
667
- if (!isInteractiveTerminal()) {
668
- requireInteractiveSelection('Selecting a permission set to view', [
669
- 'agents permissions view default',
670
- ]);
671
- }
672
- try {
673
- const { select } = await import('@inquirer/prompts');
674
- name = await select({
675
- message: 'Select a permission set to view',
676
- choices: installedSets.map((perm) => ({
677
- value: perm.name,
678
- name: perm.set.description
679
- ? `${perm.name} - ${perm.set.description}`
680
- : perm.name,
681
- })),
682
- });
683
- }
684
- catch (err) {
685
- if (isPromptCancelled(err)) {
686
- console.log(chalk.gray('Cancelled'));
687
- return;
688
- }
689
- throw err;
690
- }
691
- }
692
- const perm = installedSets.find((p) => p.name === name);
693
- if (!perm) {
694
- console.log(chalk.yellow(`Permission set '${name}' not found`));
695
- return;
696
- }
697
- // Build output
698
- const lines = [];
699
- lines.push(chalk.bold(`\n${perm.name}\n`));
700
- if (perm.set.description) {
701
- lines.push(` ${perm.set.description}`);
702
- }
703
- lines.push('');
704
- if (perm.set.allow.length > 0) {
705
- lines.push(chalk.green(' Allow rules:'));
706
- for (const rule of perm.set.allow) {
707
- lines.push(` ${chalk.cyan(rule)}`);
708
- }
709
- }
710
- if (perm.set.deny && perm.set.deny.length > 0) {
711
- lines.push(chalk.red('\n Deny rules:'));
712
- for (const rule of perm.set.deny) {
713
- lines.push(` ${chalk.yellow(rule)}`);
714
- }
715
- }
716
- lines.push('');
717
- const output = lines.join('\n');
718
- printWithPager(output, lines.length);
719
- });
720
- // Deprecated alias handler for 'perms'
721
- // Note: This needs to be registered at the program level, not as a subcommand
722
- // The actual deprecation message is shown in index.ts
723
- }
724
- //# sourceMappingURL=permissions.js.map