@apralabs/apra-fleet 0.2.2

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 (482) hide show
  1. package/LICENSE +182 -0
  2. package/README.md +324 -0
  3. package/dist/cli/auth.d.ts +2 -0
  4. package/dist/cli/auth.d.ts.map +1 -0
  5. package/dist/cli/auth.js +210 -0
  6. package/dist/cli/auth.js.map +1 -0
  7. package/dist/cli/config.d.ts +30 -0
  8. package/dist/cli/config.d.ts.map +1 -0
  9. package/dist/cli/config.js +157 -0
  10. package/dist/cli/config.js.map +1 -0
  11. package/dist/cli/install.d.ts +37 -0
  12. package/dist/cli/install.d.ts.map +1 -0
  13. package/dist/cli/install.js +630 -0
  14. package/dist/cli/install.js.map +1 -0
  15. package/dist/cli/secret.d.ts +2 -0
  16. package/dist/cli/secret.d.ts.map +1 -0
  17. package/dist/cli/secret.js +366 -0
  18. package/dist/cli/secret.js.map +1 -0
  19. package/dist/cli/uninstall.d.ts +2 -0
  20. package/dist/cli/uninstall.d.ts.map +1 -0
  21. package/dist/cli/uninstall.js +312 -0
  22. package/dist/cli/uninstall.js.map +1 -0
  23. package/dist/cli/update.d.ts +2 -0
  24. package/dist/cli/update.d.ts.map +1 -0
  25. package/dist/cli/update.js +105 -0
  26. package/dist/cli/update.js.map +1 -0
  27. package/dist/delivery-mode.d.ts +19 -0
  28. package/dist/delivery-mode.d.ts.map +1 -0
  29. package/dist/delivery-mode.js +26 -0
  30. package/dist/delivery-mode.js.map +1 -0
  31. package/dist/index.d.ts +3 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +272 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/onboarding/text.d.ts +83 -0
  36. package/dist/onboarding/text.d.ts.map +1 -0
  37. package/dist/onboarding/text.js +126 -0
  38. package/dist/onboarding/text.js.map +1 -0
  39. package/dist/os/index.d.ts +9 -0
  40. package/dist/os/index.d.ts.map +1 -0
  41. package/dist/os/index.js +16 -0
  42. package/dist/os/index.js.map +1 -0
  43. package/dist/os/linux.d.ts +50 -0
  44. package/dist/os/linux.d.ts.map +1 -0
  45. package/dist/os/linux.js +244 -0
  46. package/dist/os/linux.js.map +1 -0
  47. package/dist/os/macos.d.ts +12 -0
  48. package/dist/os/macos.d.ts.map +1 -0
  49. package/dist/os/macos.js +41 -0
  50. package/dist/os/macos.js.map +1 -0
  51. package/dist/os/os-commands.d.ts +47 -0
  52. package/dist/os/os-commands.d.ts.map +1 -0
  53. package/dist/os/os-commands.js +3 -0
  54. package/dist/os/os-commands.js.map +1 -0
  55. package/dist/os/windows-wrapper.d.ts +6 -0
  56. package/dist/os/windows-wrapper.d.ts.map +1 -0
  57. package/dist/os/windows-wrapper.js +9 -0
  58. package/dist/os/windows-wrapper.js.map +1 -0
  59. package/dist/os/windows.d.ts +44 -0
  60. package/dist/os/windows.d.ts.map +1 -0
  61. package/dist/os/windows.js +269 -0
  62. package/dist/os/windows.js.map +1 -0
  63. package/dist/paths.d.ts +2 -0
  64. package/dist/paths.d.ts.map +1 -0
  65. package/dist/paths.js +4 -0
  66. package/dist/paths.js.map +1 -0
  67. package/dist/providers/agy.d.ts +41 -0
  68. package/dist/providers/agy.d.ts.map +1 -0
  69. package/dist/providers/agy.js +208 -0
  70. package/dist/providers/agy.js.map +1 -0
  71. package/dist/providers/claude.d.ts +40 -0
  72. package/dist/providers/claude.d.ts.map +1 -0
  73. package/dist/providers/claude.js +178 -0
  74. package/dist/providers/claude.js.map +1 -0
  75. package/dist/providers/codex.d.ts +44 -0
  76. package/dist/providers/codex.d.ts.map +1 -0
  77. package/dist/providers/codex.js +173 -0
  78. package/dist/providers/codex.js.map +1 -0
  79. package/dist/providers/copilot.d.ts +40 -0
  80. package/dist/providers/copilot.d.ts.map +1 -0
  81. package/dist/providers/copilot.js +172 -0
  82. package/dist/providers/copilot.js.map +1 -0
  83. package/dist/providers/gemini.d.ts +41 -0
  84. package/dist/providers/gemini.d.ts.map +1 -0
  85. package/dist/providers/gemini.js +192 -0
  86. package/dist/providers/gemini.js.map +1 -0
  87. package/dist/providers/index.d.ts +10 -0
  88. package/dist/providers/index.d.ts.map +1 -0
  89. package/dist/providers/index.js +27 -0
  90. package/dist/providers/index.js.map +1 -0
  91. package/dist/providers/provider.d.ts +85 -0
  92. package/dist/providers/provider.d.ts.map +1 -0
  93. package/dist/providers/provider.js +21 -0
  94. package/dist/providers/provider.js.map +1 -0
  95. package/dist/services/auth-socket.d.ts +87 -0
  96. package/dist/services/auth-socket.d.ts.map +1 -0
  97. package/dist/services/auth-socket.js +684 -0
  98. package/dist/services/auth-socket.js.map +1 -0
  99. package/dist/services/auth-web.d.ts +31 -0
  100. package/dist/services/auth-web.d.ts.map +1 -0
  101. package/dist/services/auth-web.js +202 -0
  102. package/dist/services/auth-web.js.map +1 -0
  103. package/dist/services/cloud/activity.d.ts +16 -0
  104. package/dist/services/cloud/activity.d.ts.map +1 -0
  105. package/dist/services/cloud/activity.js +61 -0
  106. package/dist/services/cloud/activity.js.map +1 -0
  107. package/dist/services/cloud/aws.d.ts +24 -0
  108. package/dist/services/cloud/aws.d.ts.map +1 -0
  109. package/dist/services/cloud/aws.js +114 -0
  110. package/dist/services/cloud/aws.js.map +1 -0
  111. package/dist/services/cloud/cost.d.ts +46 -0
  112. package/dist/services/cloud/cost.d.ts.map +1 -0
  113. package/dist/services/cloud/cost.js +161 -0
  114. package/dist/services/cloud/cost.js.map +1 -0
  115. package/dist/services/cloud/idle-manager.d.ts +20 -0
  116. package/dist/services/cloud/idle-manager.d.ts.map +1 -0
  117. package/dist/services/cloud/idle-manager.js +103 -0
  118. package/dist/services/cloud/idle-manager.js.map +1 -0
  119. package/dist/services/cloud/lifecycle.d.ts +14 -0
  120. package/dist/services/cloud/lifecycle.d.ts.map +1 -0
  121. package/dist/services/cloud/lifecycle.js +128 -0
  122. package/dist/services/cloud/lifecycle.js.map +1 -0
  123. package/dist/services/cloud/task-wrapper.d.ts +30 -0
  124. package/dist/services/cloud/task-wrapper.d.ts.map +1 -0
  125. package/dist/services/cloud/task-wrapper.js +116 -0
  126. package/dist/services/cloud/task-wrapper.js.map +1 -0
  127. package/dist/services/cloud/types.d.ts +26 -0
  128. package/dist/services/cloud/types.d.ts.map +1 -0
  129. package/dist/services/cloud/types.js +2 -0
  130. package/dist/services/cloud/types.js.map +1 -0
  131. package/dist/services/credential-cleanup.d.ts +4 -0
  132. package/dist/services/credential-cleanup.d.ts.map +1 -0
  133. package/dist/services/credential-cleanup.js +61 -0
  134. package/dist/services/credential-cleanup.js.map +1 -0
  135. package/dist/services/credential-store.d.ts +56 -0
  136. package/dist/services/credential-store.d.ts.map +1 -0
  137. package/dist/services/credential-store.js +280 -0
  138. package/dist/services/credential-store.js.map +1 -0
  139. package/dist/services/file-transfer.d.ts +22 -0
  140. package/dist/services/file-transfer.d.ts.map +1 -0
  141. package/dist/services/file-transfer.js +14 -0
  142. package/dist/services/file-transfer.js.map +1 -0
  143. package/dist/services/git-config.d.ts +6 -0
  144. package/dist/services/git-config.d.ts.map +1 -0
  145. package/dist/services/git-config.js +31 -0
  146. package/dist/services/git-config.js.map +1 -0
  147. package/dist/services/github-app.d.ts +30 -0
  148. package/dist/services/github-app.d.ts.map +1 -0
  149. package/dist/services/github-app.js +96 -0
  150. package/dist/services/github-app.js.map +1 -0
  151. package/dist/services/icons.d.ts +16 -0
  152. package/dist/services/icons.d.ts.map +1 -0
  153. package/dist/services/icons.js +67 -0
  154. package/dist/services/icons.js.map +1 -0
  155. package/dist/services/known-hosts.d.ts +23 -0
  156. package/dist/services/known-hosts.d.ts.map +1 -0
  157. package/dist/services/known-hosts.js +86 -0
  158. package/dist/services/known-hosts.js.map +1 -0
  159. package/dist/services/onboarding.d.ts +68 -0
  160. package/dist/services/onboarding.d.ts.map +1 -0
  161. package/dist/services/onboarding.js +205 -0
  162. package/dist/services/onboarding.js.map +1 -0
  163. package/dist/services/registry.d.ts +16 -0
  164. package/dist/services/registry.d.ts.map +1 -0
  165. package/dist/services/registry.js +156 -0
  166. package/dist/services/registry.js.map +1 -0
  167. package/dist/services/sftp.d.ts +16 -0
  168. package/dist/services/sftp.d.ts.map +1 -0
  169. package/dist/services/sftp.js +104 -0
  170. package/dist/services/sftp.js.map +1 -0
  171. package/dist/services/ssh.d.ts +29 -0
  172. package/dist/services/ssh.d.ts.map +1 -0
  173. package/dist/services/ssh.js +297 -0
  174. package/dist/services/ssh.js.map +1 -0
  175. package/dist/services/stall/find-log-file.d.ts +2 -0
  176. package/dist/services/stall/find-log-file.d.ts.map +1 -0
  177. package/dist/services/stall/find-log-file.js +153 -0
  178. package/dist/services/stall/find-log-file.js.map +1 -0
  179. package/dist/services/stall/index.d.ts +4 -0
  180. package/dist/services/stall/index.d.ts.map +1 -0
  181. package/dist/services/stall/index.js +4 -0
  182. package/dist/services/stall/index.js.map +1 -0
  183. package/dist/services/stall/log-path-resolver.d.ts +4 -0
  184. package/dist/services/stall/log-path-resolver.d.ts.map +1 -0
  185. package/dist/services/stall/log-path-resolver.js +32 -0
  186. package/dist/services/stall/log-path-resolver.js.map +1 -0
  187. package/dist/services/stall/log-path-resolver.test.d.ts +2 -0
  188. package/dist/services/stall/log-path-resolver.test.d.ts.map +1 -0
  189. package/dist/services/stall/log-path-resolver.test.js +76 -0
  190. package/dist/services/stall/log-path-resolver.test.js.map +1 -0
  191. package/dist/services/stall/read-log-tail.d.ts +6 -0
  192. package/dist/services/stall/read-log-tail.d.ts.map +1 -0
  193. package/dist/services/stall/read-log-tail.js +44 -0
  194. package/dist/services/stall/read-log-tail.js.map +1 -0
  195. package/dist/services/stall/stall-detector.d.ts +25 -0
  196. package/dist/services/stall/stall-detector.d.ts.map +1 -0
  197. package/dist/services/stall/stall-detector.js +153 -0
  198. package/dist/services/stall/stall-detector.js.map +1 -0
  199. package/dist/services/stall/stall-poller.d.ts +6 -0
  200. package/dist/services/stall/stall-poller.d.ts.map +1 -0
  201. package/dist/services/stall/stall-poller.js +75 -0
  202. package/dist/services/stall/stall-poller.js.map +1 -0
  203. package/dist/services/stall/time-utils.d.ts +4 -0
  204. package/dist/services/stall/time-utils.d.ts.map +1 -0
  205. package/dist/services/stall/time-utils.js +22 -0
  206. package/dist/services/stall/time-utils.js.map +1 -0
  207. package/dist/services/statusline.d.ts +10 -0
  208. package/dist/services/statusline.d.ts.map +1 -0
  209. package/dist/services/statusline.js +84 -0
  210. package/dist/services/statusline.js.map +1 -0
  211. package/dist/services/strategy.d.ts +16 -0
  212. package/dist/services/strategy.d.ts.map +1 -0
  213. package/dist/services/strategy.js +241 -0
  214. package/dist/services/strategy.js.map +1 -0
  215. package/dist/services/task-cleanup.d.ts +3 -0
  216. package/dist/services/task-cleanup.d.ts.map +1 -0
  217. package/dist/services/task-cleanup.js +81 -0
  218. package/dist/services/task-cleanup.js.map +1 -0
  219. package/dist/services/update-check.d.ts +15 -0
  220. package/dist/services/update-check.d.ts.map +1 -0
  221. package/dist/services/update-check.js +67 -0
  222. package/dist/services/update-check.js.map +1 -0
  223. package/dist/services/user-config.d.ts +12 -0
  224. package/dist/services/user-config.d.ts.map +1 -0
  225. package/dist/services/user-config.js +73 -0
  226. package/dist/services/user-config.js.map +1 -0
  227. package/dist/services/vcs/azure-devops.d.ts +7 -0
  228. package/dist/services/vcs/azure-devops.d.ts.map +1 -0
  229. package/dist/services/vcs/azure-devops.js +38 -0
  230. package/dist/services/vcs/azure-devops.js.map +1 -0
  231. package/dist/services/vcs/bitbucket.d.ts +6 -0
  232. package/dist/services/vcs/bitbucket.d.ts.map +1 -0
  233. package/dist/services/vcs/bitbucket.js +31 -0
  234. package/dist/services/vcs/bitbucket.js.map +1 -0
  235. package/dist/services/vcs/constants.d.ts +2 -0
  236. package/dist/services/vcs/constants.d.ts.map +1 -0
  237. package/dist/services/vcs/constants.js +6 -0
  238. package/dist/services/vcs/constants.js.map +1 -0
  239. package/dist/services/vcs/github.d.ts +6 -0
  240. package/dist/services/vcs/github.d.ts.map +1 -0
  241. package/dist/services/vcs/github.js +81 -0
  242. package/dist/services/vcs/github.js.map +1 -0
  243. package/dist/services/vcs/types.d.ts +52 -0
  244. package/dist/services/vcs/types.d.ts.map +1 -0
  245. package/dist/services/vcs/types.js +8 -0
  246. package/dist/services/vcs/types.js.map +1 -0
  247. package/dist/smoke-test.d.ts +10 -0
  248. package/dist/smoke-test.d.ts.map +1 -0
  249. package/dist/smoke-test.js +102 -0
  250. package/dist/smoke-test.js.map +1 -0
  251. package/dist/tools/check-status.d.ts +11 -0
  252. package/dist/tools/check-status.d.ts.map +1 -0
  253. package/dist/tools/check-status.js +247 -0
  254. package/dist/tools/check-status.js.map +1 -0
  255. package/dist/tools/cloud-control.d.ts +17 -0
  256. package/dist/tools/cloud-control.d.ts.map +1 -0
  257. package/dist/tools/cloud-control.js +102 -0
  258. package/dist/tools/cloud-control.js.map +1 -0
  259. package/dist/tools/compose-permissions.d.ts +26 -0
  260. package/dist/tools/compose-permissions.d.ts.map +1 -0
  261. package/dist/tools/compose-permissions.js +217 -0
  262. package/dist/tools/compose-permissions.js.map +1 -0
  263. package/dist/tools/credential-store-delete.d.ts +11 -0
  264. package/dist/tools/credential-store-delete.d.ts.map +1 -0
  265. package/dist/tools/credential-store-delete.js +15 -0
  266. package/dist/tools/credential-store-delete.js.map +1 -0
  267. package/dist/tools/credential-store-list.d.ts +4 -0
  268. package/dist/tools/credential-store-list.d.ts.map +1 -0
  269. package/dist/tools/credential-store-list.js +30 -0
  270. package/dist/tools/credential-store-list.js.map +1 -0
  271. package/dist/tools/credential-store-set.d.ts +26 -0
  272. package/dist/tools/credential-store-set.d.ts.map +1 -0
  273. package/dist/tools/credential-store-set.js +28 -0
  274. package/dist/tools/credential-store-set.js.map +1 -0
  275. package/dist/tools/credential-store-update.d.ts +20 -0
  276. package/dist/tools/credential-store-update.d.ts.map +1 -0
  277. package/dist/tools/credential-store-update.js +38 -0
  278. package/dist/tools/credential-store-update.js.map +1 -0
  279. package/dist/tools/execute-command.d.ts +33 -0
  280. package/dist/tools/execute-command.d.ts.map +1 -0
  281. package/dist/tools/execute-command.js +231 -0
  282. package/dist/tools/execute-command.js.map +1 -0
  283. package/dist/tools/execute-prompt.d.ts +36 -0
  284. package/dist/tools/execute-prompt.d.ts.map +1 -0
  285. package/dist/tools/execute-prompt.js +310 -0
  286. package/dist/tools/execute-prompt.js.map +1 -0
  287. package/dist/tools/list-members.d.ts +11 -0
  288. package/dist/tools/list-members.d.ts.map +1 -0
  289. package/dist/tools/list-members.js +108 -0
  290. package/dist/tools/list-members.js.map +1 -0
  291. package/dist/tools/member-detail.d.ts +17 -0
  292. package/dist/tools/member-detail.d.ts.map +1 -0
  293. package/dist/tools/member-detail.js +263 -0
  294. package/dist/tools/member-detail.js.map +1 -0
  295. package/dist/tools/monitor-task.d.ts +20 -0
  296. package/dist/tools/monitor-task.d.ts.map +1 -0
  297. package/dist/tools/monitor-task.js +89 -0
  298. package/dist/tools/monitor-task.js.map +1 -0
  299. package/dist/tools/provision-auth.d.ts +17 -0
  300. package/dist/tools/provision-auth.d.ts.map +1 -0
  301. package/dist/tools/provision-auth.js +256 -0
  302. package/dist/tools/provision-auth.js.map +1 -0
  303. package/dist/tools/provision-vcs-auth.d.ts +50 -0
  304. package/dist/tools/provision-vcs-auth.d.ts.map +1 -0
  305. package/dist/tools/provision-vcs-auth.js +187 -0
  306. package/dist/tools/provision-vcs-auth.js.map +1 -0
  307. package/dist/tools/receive-files.d.ts +20 -0
  308. package/dist/tools/receive-files.d.ts.map +1 -0
  309. package/dist/tools/receive-files.js +82 -0
  310. package/dist/tools/receive-files.js.map +1 -0
  311. package/dist/tools/register-member.d.ts +74 -0
  312. package/dist/tools/register-member.d.ts.map +1 -0
  313. package/dist/tools/register-member.js +310 -0
  314. package/dist/tools/register-member.js.map +1 -0
  315. package/dist/tools/remove-member.d.ts +17 -0
  316. package/dist/tools/remove-member.d.ts.map +1 -0
  317. package/dist/tools/remove-member.js +126 -0
  318. package/dist/tools/remove-member.js.map +1 -0
  319. package/dist/tools/revoke-vcs-auth.d.ts +23 -0
  320. package/dist/tools/revoke-vcs-auth.d.ts.map +1 -0
  321. package/dist/tools/revoke-vcs-auth.js +55 -0
  322. package/dist/tools/revoke-vcs-auth.js.map +1 -0
  323. package/dist/tools/send-files.d.ts +20 -0
  324. package/dist/tools/send-files.d.ts.map +1 -0
  325. package/dist/tools/send-files.js +103 -0
  326. package/dist/tools/send-files.js.map +1 -0
  327. package/dist/tools/setup-git-app.d.ts +17 -0
  328. package/dist/tools/setup-git-app.d.ts.map +1 -0
  329. package/dist/tools/setup-git-app.js +89 -0
  330. package/dist/tools/setup-git-app.js.map +1 -0
  331. package/dist/tools/setup-ssh-key.d.ts +14 -0
  332. package/dist/tools/setup-ssh-key.d.ts.map +1 -0
  333. package/dist/tools/setup-ssh-key.js +119 -0
  334. package/dist/tools/setup-ssh-key.js.map +1 -0
  335. package/dist/tools/shutdown-server.d.ts +4 -0
  336. package/dist/tools/shutdown-server.d.ts.map +1 -0
  337. package/dist/tools/shutdown-server.js +9 -0
  338. package/dist/tools/shutdown-server.js.map +1 -0
  339. package/dist/tools/stop-prompt.d.ts +14 -0
  340. package/dist/tools/stop-prompt.d.ts.map +1 -0
  341. package/dist/tools/stop-prompt.js +44 -0
  342. package/dist/tools/stop-prompt.js.map +1 -0
  343. package/dist/tools/update-agent-cli.d.ts +17 -0
  344. package/dist/tools/update-agent-cli.d.ts.map +1 -0
  345. package/dist/tools/update-agent-cli.js +110 -0
  346. package/dist/tools/update-agent-cli.js.map +1 -0
  347. package/dist/tools/update-member.d.ts +77 -0
  348. package/dist/tools/update-member.d.ts.map +1 -0
  349. package/dist/tools/update-member.js +202 -0
  350. package/dist/tools/update-member.js.map +1 -0
  351. package/dist/tools/version.d.ts +4 -0
  352. package/dist/tools/version.d.ts.map +1 -0
  353. package/dist/tools/version.js +7 -0
  354. package/dist/tools/version.js.map +1 -0
  355. package/dist/types.d.ts +70 -0
  356. package/dist/types.d.ts.map +1 -0
  357. package/dist/types.js +2 -0
  358. package/dist/types.js.map +1 -0
  359. package/dist/utils/agent-helpers.d.ts +41 -0
  360. package/dist/utils/agent-helpers.d.ts.map +1 -0
  361. package/dist/utils/agent-helpers.js +84 -0
  362. package/dist/utils/agent-helpers.js.map +1 -0
  363. package/dist/utils/ansi.d.ts +6 -0
  364. package/dist/utils/ansi.d.ts.map +1 -0
  365. package/dist/utils/ansi.js +20 -0
  366. package/dist/utils/ansi.js.map +1 -0
  367. package/dist/utils/auth-env.d.ts +8 -0
  368. package/dist/utils/auth-env.d.ts.map +1 -0
  369. package/dist/utils/auth-env.js +30 -0
  370. package/dist/utils/auth-env.js.map +1 -0
  371. package/dist/utils/collect-secret.d.ts +2 -0
  372. package/dist/utils/collect-secret.d.ts.map +1 -0
  373. package/dist/utils/collect-secret.js +80 -0
  374. package/dist/utils/collect-secret.js.map +1 -0
  375. package/dist/utils/credential-validation.d.ts +13 -0
  376. package/dist/utils/credential-validation.d.ts.map +1 -0
  377. package/dist/utils/credential-validation.js +35 -0
  378. package/dist/utils/credential-validation.js.map +1 -0
  379. package/dist/utils/crypto.d.ts +3 -0
  380. package/dist/utils/crypto.d.ts.map +1 -0
  381. package/dist/utils/crypto.js +61 -0
  382. package/dist/utils/crypto.js.map +1 -0
  383. package/dist/utils/deep-merge.d.ts +3 -0
  384. package/dist/utils/deep-merge.d.ts.map +1 -0
  385. package/dist/utils/deep-merge.js +23 -0
  386. package/dist/utils/deep-merge.js.map +1 -0
  387. package/dist/utils/file-permissions.d.ts +8 -0
  388. package/dist/utils/file-permissions.d.ts.map +1 -0
  389. package/dist/utils/file-permissions.js +13 -0
  390. package/dist/utils/file-permissions.js.map +1 -0
  391. package/dist/utils/gpu-parser.d.ts +6 -0
  392. package/dist/utils/gpu-parser.d.ts.map +1 -0
  393. package/dist/utils/gpu-parser.js +15 -0
  394. package/dist/utils/gpu-parser.js.map +1 -0
  395. package/dist/utils/log-helpers.d.ts +29 -0
  396. package/dist/utils/log-helpers.d.ts.map +1 -0
  397. package/dist/utils/log-helpers.js +128 -0
  398. package/dist/utils/log-helpers.js.map +1 -0
  399. package/dist/utils/oob-timeout.d.ts +2 -0
  400. package/dist/utils/oob-timeout.d.ts.map +1 -0
  401. package/dist/utils/oob-timeout.js +2 -0
  402. package/dist/utils/oob-timeout.js.map +1 -0
  403. package/dist/utils/pid-helpers.d.ts +11 -0
  404. package/dist/utils/pid-helpers.d.ts.map +1 -0
  405. package/dist/utils/pid-helpers.js +21 -0
  406. package/dist/utils/pid-helpers.js.map +1 -0
  407. package/dist/utils/platform.d.ts +13 -0
  408. package/dist/utils/platform.d.ts.map +1 -0
  409. package/dist/utils/platform.js +60 -0
  410. package/dist/utils/platform.js.map +1 -0
  411. package/dist/utils/prompt-errors.d.ts +5 -0
  412. package/dist/utils/prompt-errors.d.ts.map +1 -0
  413. package/dist/utils/prompt-errors.js +15 -0
  414. package/dist/utils/prompt-errors.js.map +1 -0
  415. package/dist/utils/resolve-member.d.ts +18 -0
  416. package/dist/utils/resolve-member.d.ts.map +1 -0
  417. package/dist/utils/resolve-member.js +23 -0
  418. package/dist/utils/resolve-member.js.map +1 -0
  419. package/dist/utils/secure-input.d.ts +6 -0
  420. package/dist/utils/secure-input.d.ts.map +1 -0
  421. package/dist/utils/secure-input.js +60 -0
  422. package/dist/utils/secure-input.js.map +1 -0
  423. package/dist/utils/shell-escape.d.ts +43 -0
  424. package/dist/utils/shell-escape.d.ts.map +1 -0
  425. package/dist/utils/shell-escape.js +67 -0
  426. package/dist/utils/shell-escape.js.map +1 -0
  427. package/dist/utils/ssh-error-messages.d.ts +5 -0
  428. package/dist/utils/ssh-error-messages.d.ts.map +1 -0
  429. package/dist/utils/ssh-error-messages.js +20 -0
  430. package/dist/utils/ssh-error-messages.js.map +1 -0
  431. package/dist/version.d.ts +18 -0
  432. package/dist/version.d.ts.map +1 -0
  433. package/dist/version.js +101 -0
  434. package/dist/version.js.map +1 -0
  435. package/hooks/hooks-config.json +15 -0
  436. package/hooks/post-register-member.sh +10 -0
  437. package/package.json +82 -0
  438. package/scripts/agy-settings-merge.js +27 -0
  439. package/scripts/agy-transcript-reader.js +62 -0
  440. package/scripts/fleet-statusline.sh +43 -0
  441. package/skills/fleet/SKILL.md +262 -0
  442. package/skills/fleet/auth-azdevops.md +72 -0
  443. package/skills/fleet/auth-bitbucket.md +65 -0
  444. package/skills/fleet/auth-github.md +86 -0
  445. package/skills/fleet/beads.md +90 -0
  446. package/skills/fleet/onboarding.md +92 -0
  447. package/skills/fleet/permissions.md +23 -0
  448. package/skills/fleet/profiles/base-dev.json +18 -0
  449. package/skills/fleet/profiles/base-reviewer.json +14 -0
  450. package/skills/fleet/profiles/cpp.json +4 -0
  451. package/skills/fleet/profiles/dotnet.json +4 -0
  452. package/skills/fleet/profiles/go.json +4 -0
  453. package/skills/fleet/profiles/jvm.json +4 -0
  454. package/skills/fleet/profiles/node.json +4 -0
  455. package/skills/fleet/profiles/python.json +4 -0
  456. package/skills/fleet/profiles/rust.json +4 -0
  457. package/skills/fleet/profiles/tpl-permissions.json +5 -0
  458. package/skills/fleet/skill-matrix.md +34 -0
  459. package/skills/fleet/troubleshooting.md +13 -0
  460. package/skills/pm/SKILL.md +110 -0
  461. package/skills/pm/backlog-item.md +65 -0
  462. package/skills/pm/beads.md +192 -0
  463. package/skills/pm/cleanup.md +15 -0
  464. package/skills/pm/context-file.md +40 -0
  465. package/skills/pm/doer-reviewer.md +123 -0
  466. package/skills/pm/init.md +25 -0
  467. package/skills/pm/multi-pair-sprint.md +64 -0
  468. package/skills/pm/plan-prompt.md +94 -0
  469. package/skills/pm/simple-sprint.md +42 -0
  470. package/skills/pm/single-pair-sprint.md +178 -0
  471. package/skills/pm/tpl-deploy.md +24 -0
  472. package/skills/pm/tpl-design.md +29 -0
  473. package/skills/pm/tpl-doer.md +43 -0
  474. package/skills/pm/tpl-plan.md +72 -0
  475. package/skills/pm/tpl-pm.md +2 -0
  476. package/skills/pm/tpl-progress.json +28 -0
  477. package/skills/pm/tpl-projects.md +4 -0
  478. package/skills/pm/tpl-requirements.md +21 -0
  479. package/skills/pm/tpl-reviewer-plan.md +53 -0
  480. package/skills/pm/tpl-reviewer.md +72 -0
  481. package/skills/pm/tpl-status.md +29 -0
  482. package/version.json +3 -0
@@ -0,0 +1,74 @@
1
+ import { z } from 'zod';
2
+ export declare const registerMemberSchema: z.ZodObject<{
3
+ friendly_name: z.ZodString;
4
+ member_type: z.ZodDefault<z.ZodEnum<["local", "remote"]>>;
5
+ host: z.ZodOptional<z.ZodString>;
6
+ port: z.ZodDefault<z.ZodNumber>;
7
+ username: z.ZodOptional<z.ZodString>;
8
+ auth_type: z.ZodOptional<z.ZodEnum<["password", "key"]>>;
9
+ password: z.ZodOptional<z.ZodString>;
10
+ key_path: z.ZodOptional<z.ZodString>;
11
+ work_folder: z.ZodString;
12
+ git_access: z.ZodOptional<z.ZodEnum<["read", "push", "admin", "issues", "full"]>>;
13
+ git_repos: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
14
+ cloud_provider: z.ZodOptional<z.ZodEnum<["aws"]>>;
15
+ cloud_instance_id: z.ZodOptional<z.ZodString>;
16
+ cloud_region: z.ZodDefault<z.ZodOptional<z.ZodString>>;
17
+ cloud_profile: z.ZodOptional<z.ZodString>;
18
+ cloud_idle_timeout_min: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
19
+ cloud_activity_command: z.ZodOptional<z.ZodString>;
20
+ llm_provider: z.ZodDefault<z.ZodOptional<z.ZodEnum<["claude", "gemini", "codex", "copilot", "agy"]>>>;
21
+ model_cheap: z.ZodOptional<z.ZodEnum<["gpt-oss-120b", "gpt-120", "gemini-3.5-flash-lite", "gemini-3.1-flash-lite-preview", "claude-haiku-4-5", "gpt-5.4-mini"]>>;
22
+ model_standard: z.ZodOptional<z.ZodEnum<["gemini-3.5-flash", "gpt-oss-120b", "gpt-120", "claude-sonnet-4.6", "claude-sonnet-4-5", "gemini-3-flash-preview", "gpt-5.4"]>>;
23
+ model_premium: z.ZodOptional<z.ZodEnum<["claude-sonnet-4.6", "claude-opus-4.6", "claude-opus-4-6", "claude-opus-4-7", "gpt-oss-120b", "gemini-3.1-pro-preview"]>>;
24
+ unattended: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodLiteral<"auto">, z.ZodLiteral<"dangerous">]>>;
25
+ }, "strip", z.ZodTypeAny, {
26
+ port: number;
27
+ friendly_name: string;
28
+ member_type: "local" | "remote";
29
+ work_folder: string;
30
+ cloud_region: string;
31
+ cloud_idle_timeout_min: number;
32
+ llm_provider: "claude" | "gemini" | "codex" | "copilot" | "agy";
33
+ password?: string | undefined;
34
+ host?: string | undefined;
35
+ username?: string | undefined;
36
+ unattended?: false | "auto" | "dangerous" | undefined;
37
+ auth_type?: "password" | "key" | undefined;
38
+ key_path?: string | undefined;
39
+ git_access?: "read" | "push" | "admin" | "issues" | "full" | undefined;
40
+ git_repos?: string[] | undefined;
41
+ cloud_provider?: "aws" | undefined;
42
+ cloud_instance_id?: string | undefined;
43
+ cloud_profile?: string | undefined;
44
+ cloud_activity_command?: string | undefined;
45
+ model_cheap?: "gpt-oss-120b" | "gpt-120" | "gemini-3.5-flash-lite" | "gemini-3.1-flash-lite-preview" | "claude-haiku-4-5" | "gpt-5.4-mini" | undefined;
46
+ model_standard?: "gpt-oss-120b" | "gpt-120" | "gemini-3.5-flash" | "claude-sonnet-4.6" | "claude-sonnet-4-5" | "gemini-3-flash-preview" | "gpt-5.4" | undefined;
47
+ model_premium?: "gpt-oss-120b" | "claude-sonnet-4.6" | "claude-opus-4.6" | "claude-opus-4-6" | "claude-opus-4-7" | "gemini-3.1-pro-preview" | undefined;
48
+ }, {
49
+ friendly_name: string;
50
+ work_folder: string;
51
+ password?: string | undefined;
52
+ host?: string | undefined;
53
+ port?: number | undefined;
54
+ username?: string | undefined;
55
+ unattended?: false | "auto" | "dangerous" | undefined;
56
+ member_type?: "local" | "remote" | undefined;
57
+ auth_type?: "password" | "key" | undefined;
58
+ key_path?: string | undefined;
59
+ git_access?: "read" | "push" | "admin" | "issues" | "full" | undefined;
60
+ git_repos?: string[] | undefined;
61
+ cloud_provider?: "aws" | undefined;
62
+ cloud_instance_id?: string | undefined;
63
+ cloud_region?: string | undefined;
64
+ cloud_profile?: string | undefined;
65
+ cloud_idle_timeout_min?: number | undefined;
66
+ cloud_activity_command?: string | undefined;
67
+ llm_provider?: "claude" | "gemini" | "codex" | "copilot" | "agy" | undefined;
68
+ model_cheap?: "gpt-oss-120b" | "gpt-120" | "gemini-3.5-flash-lite" | "gemini-3.1-flash-lite-preview" | "claude-haiku-4-5" | "gpt-5.4-mini" | undefined;
69
+ model_standard?: "gpt-oss-120b" | "gpt-120" | "gemini-3.5-flash" | "claude-sonnet-4.6" | "claude-sonnet-4-5" | "gemini-3-flash-preview" | "gpt-5.4" | undefined;
70
+ model_premium?: "gpt-oss-120b" | "claude-sonnet-4.6" | "claude-opus-4.6" | "claude-opus-4-6" | "claude-opus-4-7" | "gemini-3.1-pro-preview" | undefined;
71
+ }>;
72
+ export type RegisterMemberInput = z.infer<typeof registerMemberSchema>;
73
+ export declare function registerMember(input: RegisterMemberInput): Promise<string>;
74
+ //# sourceMappingURL=register-member.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-member.d.ts","sourceRoot":"","sources":["../../src/tools/register-member.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6B/B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuQhF"}
@@ -0,0 +1,310 @@
1
+ import { z } from 'zod';
2
+ import { v4 as uuid } from 'uuid';
3
+ import { encryptPassword, decryptPassword } from '../utils/crypto.js';
4
+ import { detectOS } from '../utils/platform.js';
5
+ import { getOsCommands } from '../os/index.js';
6
+ import { getProvider } from '../providers/index.js';
7
+ import { addAgent, getAllAgents, hasDuplicateFolder } from '../services/registry.js';
8
+ import { credentialResolve, credentialSet } from '../services/credential-store.js';
9
+ import { getStrategy } from '../services/strategy.js';
10
+ import { assignIcon } from '../services/icons.js';
11
+ import { writeStatusline } from '../services/statusline.js';
12
+ import { awsProvider } from '../services/cloud/aws.js';
13
+ import { collectOobPassword, collectOobApiKey } from '../services/auth-socket.js';
14
+ import { classifySshError } from '../utils/ssh-error-messages.js';
15
+ import { logLine } from '../utils/log-helpers.js';
16
+ import { CURATED_CHEAP_MODELS, CURATED_STANDARD_MODELS, CURATED_PREMIUM_MODELS } from '../cli/config.js';
17
+ import { writeAgyWorkspaceOverlays } from '../cli/install.js';
18
+ export const registerMemberSchema = z.object({
19
+ friendly_name: z.string()
20
+ .min(1).max(64)
21
+ .regex(/^[a-zA-Z0-9._-]+$/, 'Only letters, numbers, dots, dashes, and underscores')
22
+ .describe('Human-friendly name for this member (worker) (e.g. "web-server")'),
23
+ member_type: z.enum(['local', 'remote']).default('remote').describe('Member type: "local" for same machine, "remote" for SSH (default: "remote")'),
24
+ host: z.string().regex(/^[^<>\n\r]+$/, 'host must not contain angle brackets or newlines').optional().describe('IP address or hostname of the remote machine (required for non-cloud remote members; optional for cloud members — auto-resolved from AWS when running)'),
25
+ port: z.number().default(22).describe('SSH port (default: 22, remote members only)'),
26
+ username: z.string().optional().describe('SSH username (required for remote members). Spaces are allowed (e.g. "tester tester" on Windows) — passed directly to SSH, never shell-interpolated.'),
27
+ auth_type: z.enum(['password', 'key']).optional().describe('Authentication method (required for non-cloud remote members; cloud members default to "key")'),
28
+ password: z.string().optional().describe('SSH password. Omit for secure out-of-band entry — a password prompt will open in a separate terminal window. Supports {{secure.NAME}} token — value is resolved from the credential store before use.'),
29
+ key_path: z.string().optional().describe('Path to SSH private key. Used for both regular SSH connections and cloud instance lifecycle.'),
30
+ work_folder: z.string().regex(/^[^<>\n\r]+$/, 'work_folder must not contain angle brackets or newlines').describe('Working directory on the target machine'),
31
+ git_access: z.enum(['read', 'push', 'admin', 'issues', 'full']).optional().describe('Git access level for this member'),
32
+ git_repos: z.array(z.string()).optional().describe('Git repositories this member can access (e.g. ["Apra-Labs/ApraPipes"])'),
33
+ // Cloud fields
34
+ cloud_provider: z.enum(['aws'], {
35
+ errorMap: () => ({ message: "Only 'aws' is supported as a cloud provider. GCP and Azure support is planned." }),
36
+ }).optional().describe('Cloud provider (e.g. "aws"). When set, cloud_instance_id and key_path are required.'),
37
+ cloud_instance_id: z.string().regex(/^i-[0-9a-f]{8,17}$/, 'cloud_instance_id must match pattern i-[0-9a-f]{8,17} (e.g. "i-0abc123def456789a")').optional().describe('EC2 instance ID (e.g. "i-0abc123def456789a"). Required when cloud_provider is set.'),
38
+ cloud_region: z.string().regex(/^[a-z]{2}-[a-z]+-\d+$/, 'cloud_region must be a valid AWS region (e.g. "us-east-1")').optional().default('us-east-1').describe('AWS region (default: "us-east-1")'),
39
+ cloud_profile: z.string().optional().describe('AWS CLI profile name (e.g. "apra")'),
40
+ cloud_idle_timeout_min: z.number().min(1, 'cloud_idle_timeout_min must be at least 1 minute').max(1440, 'cloud_idle_timeout_min must be at most 1440 minutes (24 hours)').optional().default(30).describe('Minutes of inactivity before auto-stop (default: 30)'),
41
+ cloud_activity_command: z.string().min(1).optional().describe('Custom shell command for workload detection. Must output "busy" or "idle" on stdout. Checked after GPU, before process check. Useful for CPU-intensive tasks, downloads, or any non-GPU workload.'),
42
+ llm_provider: z.enum(['claude', 'gemini', 'codex', 'copilot', 'agy']).optional().default('claude').describe('LLM provider for this member (default: "claude"). Determines which CLI is used for execute_prompt, provision_llm_auth, and update_llm_cli.'),
43
+ model_cheap: z.enum(CURATED_CHEAP_MODELS).optional().describe('Custom cheap model choice from a curated list'),
44
+ model_standard: z.enum(CURATED_STANDARD_MODELS).optional().describe('Custom standard model choice from a curated list'),
45
+ model_premium: z.enum(CURATED_PREMIUM_MODELS).optional().describe('Custom premium model choice from a curated list'),
46
+ unattended: z.union([z.literal(false), z.literal('auto'), z.literal('dangerous')]).optional().describe('Permission mode for unattended execution. false (default) = interactive prompts; "auto" = auto-approve safe operations; "dangerous" = skip all permission checks.'),
47
+ });
48
+ export async function registerMember(input) {
49
+ const warnings = [];
50
+ const isLocal = input.member_type === 'local';
51
+ const isCloud = !!input.cloud_provider;
52
+ // --- Validate required fields ---
53
+ if (isCloud) {
54
+ if (!input.cloud_instance_id)
55
+ return '❌ "cloud_instance_id" is required when cloud_provider is set. Member was NOT registered.';
56
+ if (!input.key_path)
57
+ return '❌ "key_path" is required when cloud_provider is set. Member was NOT registered.';
58
+ if (!input.username)
59
+ return '❌ "username" is required for cloud members. Member was NOT registered.';
60
+ }
61
+ else if (!isLocal) {
62
+ if (!input.host)
63
+ return '❌ "host" is required for remote members. Member was NOT registered.';
64
+ if (!input.username)
65
+ return '❌ "username" is required for remote members. Member was NOT registered.';
66
+ if (!input.auth_type)
67
+ return '❌ "auth_type" is required for remote members. Member was NOT registered.';
68
+ }
69
+ // Resolve {{secure.NAME}} tokens in password field
70
+ let resolvedPassword = input.password;
71
+ if (resolvedPassword) {
72
+ const TOKEN_RE = /\{\{secure\.([a-zA-Z0-9_-]{1,64})\}\}/g;
73
+ let match;
74
+ let resolved = resolvedPassword;
75
+ const tokenNames = new Set();
76
+ while ((match = TOKEN_RE.exec(resolvedPassword)) !== null) {
77
+ tokenNames.add(match[1]);
78
+ }
79
+ for (const name of tokenNames) {
80
+ const entry = credentialResolve(name, input.friendly_name);
81
+ if (entry && 'denied' in entry)
82
+ return `❌ ${entry.denied} Member was NOT registered.`;
83
+ if (entry && 'expired' in entry)
84
+ return `❌ ${entry.expired} Member was NOT registered.`;
85
+ if (entry) {
86
+ resolved = resolved.replaceAll(`{{secure.${name}}}`, entry.plaintext);
87
+ continue;
88
+ }
89
+ // Credential not found — auto-create via OOB
90
+ const oob = await collectOobApiKey(name, 'register_member', { askPersist: true });
91
+ if ('fallback' in oob)
92
+ return oob.fallback ?? 'Error: OOB operation cancelled.';
93
+ if (!oob.password)
94
+ return `❌ No credential received for "${name}". Member was NOT registered.`;
95
+ const plaintext = decryptPassword(oob.password);
96
+ credentialSet(name, plaintext, !!oob.persist, 'deny');
97
+ resolved = resolved.replaceAll(`{{secure.${name}}}`, plaintext);
98
+ }
99
+ resolvedPassword = resolved;
100
+ }
101
+ // Out-of-band password collection for remote password auth without inline password
102
+ let preEncryptedPassword;
103
+ if (!isLocal && input.auth_type === 'password' && !input.password) {
104
+ const oob = await collectOobPassword(input.friendly_name, 'register_member', {
105
+ prompt: ` Enter SSH password for ${input.username}@${input.host}: `,
106
+ });
107
+ if ('fallback' in oob)
108
+ return oob.fallback ?? 'Error: OOB operation cancelled.';
109
+ preEncryptedPassword = oob.password;
110
+ }
111
+ // --- Duplicate folder check ---
112
+ if (hasDuplicateFolder(input.member_type, input.work_folder, input.host, input.port)) {
113
+ const scope = isLocal ? 'this machine' : `host ${input.host}:${input.port}`;
114
+ return `❌ Another member already uses folder "${input.work_folder}" on ${scope}. Member was NOT registered.`;
115
+ }
116
+ // --- Cloud: get instance state and resolve host ---
117
+ let resolvedHost = input.host;
118
+ let skipSshOps = false;
119
+ if (isCloud) {
120
+ const cloudConfigForCheck = {
121
+ provider: 'aws',
122
+ instanceId: input.cloud_instance_id,
123
+ region: input.cloud_region ?? 'us-east-1',
124
+ profile: input.cloud_profile,
125
+ idleTimeoutMin: input.cloud_idle_timeout_min ?? 30,
126
+ };
127
+ try {
128
+ const instanceState = await awsProvider.getInstanceState(cloudConfigForCheck);
129
+ if (instanceState === 'terminated') {
130
+ return `❌ EC2 instance ${cloudConfigForCheck.instanceId} is terminated and cannot be used. Member was NOT registered.`;
131
+ }
132
+ if (instanceState === 'running') {
133
+ // Auto-resolve host from AWS if not provided
134
+ if (!resolvedHost) {
135
+ try {
136
+ resolvedHost = await awsProvider.getPublicIp(cloudConfigForCheck);
137
+ }
138
+ catch {
139
+ warnings.push('Instance is running but could not get public IP — provide host manually via update_member after registration.');
140
+ }
141
+ }
142
+ }
143
+ else {
144
+ // stopped / stopping / pending — skip SSH ops
145
+ skipSshOps = true;
146
+ warnings.push(`Instance is "${instanceState}" — skipping connectivity check. Run execute_command after the instance starts to verify SSH access.`);
147
+ }
148
+ }
149
+ catch (e) {
150
+ const msg = e.message;
151
+ warnings.push(`Could not verify instance state: ${msg}. Proceeding with registration.`);
152
+ skipSshOps = true;
153
+ }
154
+ }
155
+ // --- Build cloud config ---
156
+ const cloudConfig = isCloud ? {
157
+ provider: 'aws',
158
+ instanceId: input.cloud_instance_id,
159
+ region: input.cloud_region ?? 'us-east-1',
160
+ profile: input.cloud_profile,
161
+ idleTimeoutMin: input.cloud_idle_timeout_min ?? 30,
162
+ ...(input.cloud_activity_command ? { activityCommand: input.cloud_activity_command } : {}),
163
+ } : undefined;
164
+ // --- Build tempAgent ---
165
+ const tempAgent = {
166
+ id: uuid(),
167
+ friendlyName: input.friendly_name,
168
+ agentType: input.member_type,
169
+ host: isLocal ? undefined : (resolvedHost ?? ''),
170
+ port: isLocal ? undefined : input.port,
171
+ username: isLocal ? undefined : input.username,
172
+ authType: isLocal ? undefined : (input.auth_type ?? (isCloud ? 'key' : undefined)),
173
+ encryptedPassword: preEncryptedPassword ?? ((!isLocal && resolvedPassword) ? encryptPassword(resolvedPassword) : undefined),
174
+ keyPath: isLocal ? undefined : input.key_path,
175
+ workFolder: input.work_folder,
176
+ createdAt: new Date().toISOString(),
177
+ gitAccess: input.git_access,
178
+ gitRepos: input.git_repos,
179
+ cloud: cloudConfig,
180
+ llmProvider: input.llm_provider ?? 'claude',
181
+ modelCheap: input.model_cheap,
182
+ modelStandard: input.model_standard,
183
+ modelPremium: input.model_premium,
184
+ unattended: input.unattended ?? false,
185
+ };
186
+ // --- SSH-dependent steps (skipped for stopped cloud instances) ---
187
+ let detectedOS = isCloud ? 'linux' : undefined;
188
+ let claudeVersion;
189
+ let connResult = { ok: true };
190
+ if (!skipSshOps) {
191
+ const strategy = getStrategy(tempAgent);
192
+ // Step 1: Test connectivity
193
+ connResult = await strategy.testConnection();
194
+ if (!connResult.ok) {
195
+ const target = isLocal ? 'local machine' : `${resolvedHost}:${input.port}`;
196
+ if (isCloud) {
197
+ warnings.push(`SSH connectivity check failed: ${connResult.error}. Update host via update_member when the instance starts.`);
198
+ }
199
+ else {
200
+ return `❌ Failed to connect to ${target} — ${classifySshError(connResult.error ?? '')}\nMember was NOT registered.`;
201
+ }
202
+ }
203
+ // Step 2: Detect OS
204
+ if (isLocal) {
205
+ const p = process.platform;
206
+ detectedOS = p === 'win32' ? 'windows' : p === 'darwin' ? 'macos' : 'linux';
207
+ }
208
+ else if (!isCloud) {
209
+ detectedOS = 'linux';
210
+ try {
211
+ const noop = { stdout: '', stderr: '', code: 1 };
212
+ const [unameResult, verResult, psResult] = await Promise.all([
213
+ strategy.execCommand('uname -s', 10000).catch(() => noop),
214
+ strategy.execCommand('ver', 10000).catch(() => noop),
215
+ strategy.execCommand('echo $env:OS', 10000).catch(() => noop),
216
+ ]);
217
+ detectedOS = detectOS(unameResult.stdout, verResult.stdout + ' ' + psResult.stdout);
218
+ }
219
+ catch {
220
+ warnings.push('Could not detect OS — defaulting to Linux');
221
+ }
222
+ }
223
+ else {
224
+ // Cloud + running: assume linux (GPU instances are Linux)
225
+ detectedOS = 'linux';
226
+ }
227
+ tempAgent.os = detectedOS;
228
+ const cmds = getOsCommands(detectedOS);
229
+ const provider = getProvider(input.llm_provider ?? 'claude');
230
+ const providerName = provider.name;
231
+ const versionCheck = strategy.execCommand(cmds.agentVersion(provider), 15000)
232
+ .then(r => {
233
+ r.code === 0
234
+ ? (claudeVersion = r.stdout.trim())
235
+ : warnings.push(`${providerName} CLI not found on ${isLocal ? 'this machine' : 'remote machine'} — install it before using execute_prompt`);
236
+ })
237
+ .catch(() => { warnings.push(`Could not verify ${providerName} CLI availability`); });
238
+ const authCheck = !isLocal
239
+ ? strategy.execCommand(cmds.agentVersion(provider), 60000)
240
+ .then(r => { r.code !== 0 && warnings.push(`${providerName} CLI not available — you may need to run provision_llm_auth`); })
241
+ .catch(() => { warnings.push(`${providerName} CLI check timed out or failed — run provision_llm_auth to set up authentication`); })
242
+ : Promise.resolve();
243
+ const mkdirCheck = isLocal
244
+ ? import('node:fs').then(({ mkdirSync }) => {
245
+ mkdirSync(input.work_folder, { recursive: true });
246
+ }).catch(() => { warnings.push(`Could not create folder "${input.work_folder}"`); })
247
+ : strategy.execCommand(cmds.mkdir(input.work_folder), 10000)
248
+ .catch(() => { warnings.push(`Could not create folder "${input.work_folder}"`); });
249
+ await Promise.all([versionCheck, authCheck, mkdirCheck]);
250
+ }
251
+ else {
252
+ tempAgent.os = detectedOS;
253
+ if (isCloud) {
254
+ warnings.push(`${input.llm_provider ?? 'claude'} CLI and auth not verified — run provision_llm_auth after the instance starts.`);
255
+ }
256
+ }
257
+ // OS support warning for cloud members: cloud features are designed for Linux
258
+ if (isCloud && tempAgent.os !== 'linux') {
259
+ const osLabel = tempAgent.os ?? 'unknown';
260
+ warnings.push(`Cloud features (GPU detection, task wrapper, activity monitoring) are designed for Linux. Some features may not work on ${osLabel}.`);
261
+ }
262
+ // Auto-assign icon
263
+ tempAgent.icon = assignIcon(getAllAgents().map(a => a.icon).filter(Boolean));
264
+ // Persist
265
+ addAgent(tempAgent);
266
+ logLine('register_member', `id=${tempAgent.id} name=${tempAgent.friendlyName} type=${tempAgent.agentType}`, tempAgent);
267
+ writeStatusline();
268
+ // Block global apra-fleet MCP + skills inside local agy member workspaces
269
+ if (isLocal && (input.llm_provider ?? 'claude') === 'agy') {
270
+ writeAgyWorkspaceOverlays(input.work_folder);
271
+ }
272
+ let result = `✅ Member registered successfully!\n\n`;
273
+ result += ` Icon: ${tempAgent.icon}\n`;
274
+ result += ` ID: ${tempAgent.id}\n`;
275
+ result += ` Name: ${tempAgent.friendlyName}\n`;
276
+ result += ` Type: ${tempAgent.agentType}${isCloud ? ' (cloud)' : ''}\n`;
277
+ if (!isLocal) {
278
+ result += ` Host: ${tempAgent.host || '(pending — set when instance starts)'}:${tempAgent.port}\n`;
279
+ }
280
+ result += ` OS: ${detectedOS}\n`;
281
+ result += ` Folder: ${tempAgent.workFolder}\n`;
282
+ result += ` Provider: ${tempAgent.llmProvider ?? 'claude'}\n`;
283
+ if (tempAgent.modelCheap)
284
+ result += ` Model Cheap: ${tempAgent.modelCheap}\n`;
285
+ if (tempAgent.modelStandard)
286
+ result += ` Model Standard: ${tempAgent.modelStandard}\n`;
287
+ if (tempAgent.modelPremium)
288
+ result += ` Model Premium: ${tempAgent.modelPremium}\n`;
289
+ if (claudeVersion) {
290
+ result += ` CLI: ${claudeVersion}\n`;
291
+ }
292
+ if (!isLocal) {
293
+ result += ` Auth: ${tempAgent.authType}\n`;
294
+ if (connResult.latencyMs !== undefined) {
295
+ result += ` Latency: ${connResult.latencyMs}ms\n`;
296
+ }
297
+ }
298
+ if (isCloud && cloudConfig) {
299
+ result += ` Cloud: ${cloudConfig.provider} / ${cloudConfig.instanceId} / ${cloudConfig.region}\n`;
300
+ result += ` Idle: ${cloudConfig.idleTimeoutMin}min\n`;
301
+ }
302
+ if (warnings.length > 0) {
303
+ result += `\n⚠️ Warnings:\n`;
304
+ for (const w of warnings) {
305
+ result += ` - ${w}\n`;
306
+ }
307
+ }
308
+ return result;
309
+ }
310
+ //# sourceMappingURL=register-member.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-member.js","sourceRoot":"","sources":["../../src/tools/register-member.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAGlC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AACzG,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;SACtB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;SACd,KAAK,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;SAClF,QAAQ,CAAC,kEAAkE,CAAC;IAC/E,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,6EAA6E,CAAC;IAClJ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,kDAAkD,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wJAAwJ,CAAC;IACxQ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACpF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sJAAsJ,CAAC;IAChM,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+FAA+F,CAAC;IAC3J,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uMAAuM,CAAC;IACjP,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8FAA8F,CAAC;IACxI,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,yDAAyD,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC5J,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACvH,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;IAC5H,eAAe;IACf,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;QAC9B,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,gFAAgF,EAAE,CAAC;KAChH,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC;IAC7G,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,EAAE,oFAAoF,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;IACzP,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,EAAE,4DAA4D,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACnM,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IACnF,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,kDAAkD,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,gEAAgE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IACjQ,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mMAAmM,CAAC;IAClQ,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,4IAA4I,CAAC;IACzP,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IAC9G,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IACvH,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACpH,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mKAAmK,CAAC;CAC5Q,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAA0B;IAC7D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC;IAC9C,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IAEvC,mCAAmC;IACnC,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,CAAC,iBAAiB;YAAE,OAAO,0FAA0F,CAAC;QAChI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,iFAAiF,CAAC;QAC9G,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,wEAAwE,CAAC;IACvG,CAAC;SAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAO,qEAAqE,CAAC;QAC9F,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,yEAAyE,CAAC;QACtG,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,OAAO,0EAA0E,CAAC;IAC1G,CAAC;IAED,mDAAmD;IACnD,IAAI,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC;IACtC,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,wCAAwC,CAAC;QAC1D,IAAI,KAA6B,CAAC;QAClC,IAAI,QAAQ,GAAG,gBAAgB,CAAC;QAChC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1D,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;YAC3D,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK;gBAAE,OAAO,KAAK,KAAK,CAAC,MAAM,6BAA6B,CAAC;YACtF,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK;gBAAE,OAAO,KAAK,KAAK,CAAC,OAAO,6BAA6B,CAAC;YACxF,IAAI,KAAK,EAAE,CAAC;gBACV,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,IAAI,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBACtE,SAAS;YACX,CAAC;YACD,6CAA6C;YAC7C,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAClF,IAAI,UAAU,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC,QAAQ,IAAI,iCAAiC,CAAC;YAChF,IAAI,CAAC,GAAG,CAAC,QAAQ;gBAAE,OAAO,iCAAiC,IAAI,+BAA+B,CAAC;YAC/F,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChD,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACtD,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,IAAI,IAAI,EAAE,SAAS,CAAC,CAAC;QAClE,CAAC;QACD,gBAAgB,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAED,mFAAmF;IACnF,IAAI,oBAAwC,CAAC;IAC7C,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAClE,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE,iBAAiB,EAAE;YAC3E,MAAM,EAAE,4BAA4B,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI;SACrE,CAAC,CAAC;QACH,IAAI,UAAU,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC,QAAQ,IAAI,iCAAiC,CAAC;QAChF,oBAAoB,GAAG,GAAG,CAAC,QAAQ,CAAC;IACtC,CAAC;IAED,iCAAiC;IACjC,IAAI,kBAAkB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrF,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5E,OAAO,yCAAyC,KAAK,CAAC,WAAW,QAAQ,KAAK,8BAA8B,CAAC;IAC/G,CAAC;IAED,qDAAqD;IACrD,IAAI,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;IAC9B,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,mBAAmB,GAAgB;YACvC,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK,CAAC,iBAAkB;YACpC,MAAM,EAAE,KAAK,CAAC,YAAY,IAAI,WAAW;YACzC,OAAO,EAAE,KAAK,CAAC,aAAa;YAC5B,cAAc,EAAE,KAAK,CAAC,sBAAsB,IAAI,EAAE;SACnD,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YAC9E,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;gBACnC,OAAO,kBAAkB,mBAAmB,CAAC,UAAU,+DAA+D,CAAC;YACzH,CAAC;YACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,6CAA6C;gBAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,IAAI,CAAC;wBACH,YAAY,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;oBACpE,CAAC;oBAAC,MAAM,CAAC;wBACP,QAAQ,CAAC,IAAI,CAAC,+GAA+G,CAAC,CAAC;oBACjI,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,8CAA8C;gBAC9C,UAAU,GAAG,IAAI,CAAC;gBAClB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,aAAa,sGAAsG,CAAC,CAAC;YACrJ,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAI,CAAW,CAAC,OAAO,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC,oCAAoC,GAAG,iCAAiC,CAAC,CAAC;YACxF,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,WAAW,GAA4B,OAAO,CAAC,CAAC,CAAC;QACrD,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,KAAK,CAAC,iBAAkB;QACpC,MAAM,EAAE,KAAK,CAAC,YAAY,IAAI,WAAW;QACzC,OAAO,EAAE,KAAK,CAAC,aAAa;QAC5B,cAAc,EAAE,KAAK,CAAC,sBAAsB,IAAI,EAAE;QAClD,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3F,CAAC,CAAC,CAAC,SAAS,CAAC;IAEd,0BAA0B;IAC1B,MAAM,SAAS,GAAU;QACvB,EAAE,EAAE,IAAI,EAAE;QACV,YAAY,EAAE,KAAK,CAAC,aAAa;QACjC,SAAS,EAAE,KAAK,CAAC,WAAW;QAC5B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;QAChD,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;QACtC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;QAC9C,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAClF,iBAAiB,EAAE,oBAAoB,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3H,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;QAC7C,UAAU,EAAE,KAAK,CAAC,WAAW;QAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,KAAK,CAAC,UAAU;QAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS;QACzB,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,KAAK,CAAC,YAAY,IAAI,QAAQ;QAC3C,UAAU,EAAE,KAAK,CAAC,WAAW;QAC7B,aAAa,EAAE,KAAK,CAAC,cAAc;QACnC,YAAY,EAAE,KAAK,CAAC,aAAa;QACjC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK;KACtC,CAAC;IAEF,oEAAoE;IACpE,IAAI,UAAU,GAAgB,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,IAAI,aAAiC,CAAC;IACtC,IAAI,UAAU,GAAwD,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAEnF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QAExC,4BAA4B;QAC5B,UAAU,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC3E,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,kCAAkC,UAAU,CAAC,KAAK,2DAA2D,CAAC,CAAC;YAC/H,CAAC;iBAAM,CAAC;gBACN,OAAO,0BAA0B,MAAM,MAAM,gBAAgB,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,8BAA8B,CAAC;YACtH,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;YAC3B,UAAU,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9E,CAAC;aAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,UAAU,GAAG,OAAO,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBACjD,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBAC3D,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;oBACzD,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;oBACpD,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;iBAC9D,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtF,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,0DAA0D;YAC1D,UAAU,GAAG,OAAO,CAAC;QACvB,CAAC;QACD,SAAS,CAAC,EAAE,GAAG,UAAU,CAAC;QAE1B,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;QAEnC,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;aAC1E,IAAI,CAAC,CAAC,CAAC,EAAE;YACR,CAAC,CAAC,IAAI,KAAK,CAAC;gBACV,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACnC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,qBAAqB,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,2CAA2C,CAAC,CAAC;QAChJ,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,YAAY,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAExF,MAAM,SAAS,GAAG,CAAC,OAAO;YACxB,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;iBACrD,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,6DAA6D,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3H,KAAK,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,kFAAkF,CAAC,CAAC,CAAC,CAAC,CAAC;YACvI,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAEtB,MAAM,UAAU,GAAG,OAAO;YACxB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;gBACvC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,4BAA4B,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;iBACvD,KAAK,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,4BAA4B,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzF,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,EAAE,GAAG,UAAU,CAAC;QAC1B,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,IAAI,QAAQ,gFAAgF,CAAC,CAAC;QACnI,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,IAAI,OAAO,IAAI,SAAS,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,IAAI,SAAS,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,2HAA2H,OAAO,GAAG,CAAC,CAAC;IACvJ,CAAC;IAED,mBAAmB;IACnB,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC,CAAC;IAEzF,UAAU;IACV,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpB,OAAO,CAAC,iBAAiB,EAAE,MAAM,SAAS,CAAC,EAAE,SAAS,SAAS,CAAC,YAAY,SAAS,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC;IACvH,eAAe,EAAE,CAAC;IAElB,0EAA0E;IAC1E,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;QAC1D,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,MAAM,GAAG,uCAAuC,CAAC;IACrD,MAAM,IAAI,cAAc,SAAS,CAAC,IAAI,IAAI,CAAC;IAC3C,MAAM,IAAI,cAAc,SAAS,CAAC,EAAE,IAAI,CAAC;IACzC,MAAM,IAAI,cAAc,SAAS,CAAC,YAAY,IAAI,CAAC;IACnD,MAAM,IAAI,cAAc,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAC5E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,cAAc,SAAS,CAAC,IAAI,IAAI,sCAAsC,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC;IACzG,CAAC;IACD,MAAM,IAAI,cAAc,UAAU,IAAI,CAAC;IACvC,MAAM,IAAI,cAAc,SAAS,CAAC,UAAU,IAAI,CAAC;IACjD,MAAM,IAAI,eAAe,SAAS,CAAC,WAAW,IAAI,QAAQ,IAAI,CAAC;IAC/D,IAAI,SAAS,CAAC,UAAU;QAAE,MAAM,IAAI,kBAAkB,SAAS,CAAC,UAAU,IAAI,CAAC;IAC/E,IAAI,SAAS,CAAC,aAAa;QAAE,MAAM,IAAI,qBAAqB,SAAS,CAAC,aAAa,IAAI,CAAC;IACxF,IAAI,SAAS,CAAC,YAAY;QAAE,MAAM,IAAI,oBAAoB,SAAS,CAAC,YAAY,IAAI,CAAC;IACrF,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,IAAI,cAAc,aAAa,IAAI,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,cAAc,SAAS,CAAC,QAAQ,IAAI,CAAC;QAC/C,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,cAAc,UAAU,CAAC,SAAS,MAAM,CAAC;QACrD,CAAC;IACH,CAAC;IACD,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;QAC3B,MAAM,IAAI,cAAc,WAAW,CAAC,QAAQ,MAAM,WAAW,CAAC,UAAU,MAAM,WAAW,CAAC,MAAM,IAAI,CAAC;QACrG,MAAM,IAAI,cAAc,WAAW,CAAC,cAAc,OAAO,CAAC;IAC5D,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,kBAAkB,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ export declare const removeMemberSchema: z.ZodObject<{
3
+ force: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
4
+ member_id: z.ZodOptional<z.ZodString>;
5
+ member_name: z.ZodOptional<z.ZodString>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ force: boolean;
8
+ member_id?: string | undefined;
9
+ member_name?: string | undefined;
10
+ }, {
11
+ force?: boolean | undefined;
12
+ member_id?: string | undefined;
13
+ member_name?: string | undefined;
14
+ }>;
15
+ export type RemoveMemberInput = z.infer<typeof removeMemberSchema>;
16
+ export declare function removeMember(input: RemoveMemberInput): Promise<string>;
17
+ //# sourceMappingURL=remove-member.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-member.d.ts","sourceRoot":"","sources":["../../src/tools/remove-member.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyBxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAG7B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyG5E"}
@@ -0,0 +1,126 @@
1
+ import { z } from 'zod';
2
+ import fs from 'node:fs';
3
+ import { removeAgent as removeFromRegistry, getAllAgents } from '../services/registry.js';
4
+ import { getStrategy } from '../services/strategy.js';
5
+ import { getOsCommands } from '../os/index.js';
6
+ import { getProvider } from '../providers/index.js';
7
+ import { getAgentOS } from '../utils/agent-helpers.js';
8
+ import { memberIdentifier, resolveMember } from '../utils/resolve-member.js';
9
+ import { removeKnownHost } from '../services/known-hosts.js';
10
+ import { writeStatusline, readMemberStatus } from '../services/statusline.js';
11
+ import { cancelCredentialCleanup } from '../services/credential-cleanup.js';
12
+ import { getStallDetector } from '../services/stall/index.js';
13
+ import { githubProvider } from '../services/vcs/github.js';
14
+ import { bitbucketProvider } from '../services/vcs/bitbucket.js';
15
+ import { azureDevOpsProvider } from '../services/vcs/azure-devops.js';
16
+ import { logLine } from '../utils/log-helpers.js';
17
+ const vcsProviders = {
18
+ github: githubProvider,
19
+ bitbucket: bitbucketProvider,
20
+ 'azure-devops': azureDevOpsProvider,
21
+ };
22
+ export const removeMemberSchema = z.object({
23
+ ...memberIdentifier,
24
+ force: z.boolean().optional().default(false).describe('Remove even if the member is currently busy'),
25
+ });
26
+ export async function removeMember(input) {
27
+ const agentOrError = resolveMember(input.member_id, input.member_name);
28
+ if (typeof agentOrError === 'string')
29
+ return agentOrError;
30
+ const agent = agentOrError;
31
+ // Idle check: block if the member is currently running a task
32
+ const currentStatus = readMemberStatus(agent.id);
33
+ if (currentStatus === 'busy' && !input.force) {
34
+ return `⛔ Member "${agent.friendlyName}" is currently busy. Wait for the task to complete or set force=true to remove anyway.`;
35
+ }
36
+ const strategy = getStrategy(agent);
37
+ const warnings = [];
38
+ // Cancel any pending credential cleanup timer
39
+ cancelCredentialCleanup(agent.id);
40
+ // Best-effort: clear auth credentials from the member before removing
41
+ // Skip for local members — their credentials belong to the host machine
42
+ if (agent.agentType === 'remote') {
43
+ try {
44
+ const conn = await strategy.testConnection();
45
+ if (conn.ok) {
46
+ const cmds = getOsCommands(getAgentOS(agent));
47
+ const exec = async (cmd) => {
48
+ const r = await strategy.execCommand(cmd, 15000);
49
+ return r.stdout;
50
+ };
51
+ const provider = getProvider(agent.llmProvider);
52
+ // Remove credentials files for any provider that uses them
53
+ const credentialFiles = provider.oauthCredentialFiles() ?? [];
54
+ for (const file of credentialFiles) {
55
+ await strategy.execCommand(cmds.credentialFileRemove(file.remotePath), 10000).catch(() => { });
56
+ }
57
+ // Remove the provider's API key env var from shell profiles
58
+ for (const cmd of cmds.unsetEnv(provider.authEnvVar)) {
59
+ await strategy.execCommand(cmd, 10000).catch(() => { });
60
+ }
61
+ // VCS auth revoke: remove git credential helper if a VCS provider is configured
62
+ if (agent.vcsProvider) {
63
+ const vcsService = vcsProviders[agent.vcsProvider];
64
+ if (vcsService) {
65
+ await vcsService.revoke(agent, cmds, exec).catch(() => { });
66
+ }
67
+ }
68
+ // SSH key removal: remove fleet public key from remote authorized_keys
69
+ if (agent.keyPath) {
70
+ const pubKeyPath = `${agent.keyPath}.pub`;
71
+ try {
72
+ const pubKey = fs.readFileSync(pubKeyPath, 'utf-8').trim();
73
+ // Use the key type + base64 portion to match (ignore trailing comment)
74
+ const parts = pubKey.split(/\s+/);
75
+ const keyMatch = parts.slice(0, 2).join(' ');
76
+ // Escape forward slashes for sed delimiter
77
+ const escapedKey = keyMatch.replace(/\//g, '\\/');
78
+ await strategy.execCommand(`sed -i '/${escapedKey}/d' ~/.ssh/authorized_keys`, 10000).catch(() => { });
79
+ }
80
+ catch { /* pub key file not found — skip */ }
81
+ }
82
+ }
83
+ else {
84
+ warnings.push('Member was offline — could not clear auth credentials');
85
+ }
86
+ }
87
+ catch {
88
+ warnings.push('Could not connect to member — auth credentials may still be present');
89
+ }
90
+ }
91
+ strategy.close();
92
+ // Clean up local key files only if no other member shares this key
93
+ if (agent.keyPath) {
94
+ const sharedKey = getAllAgents().some(a => a.id !== agent.id && a.keyPath === agent.keyPath);
95
+ if (!sharedKey) {
96
+ try {
97
+ fs.unlinkSync(agent.keyPath);
98
+ }
99
+ catch { }
100
+ try {
101
+ fs.unlinkSync(`${agent.keyPath}.pub`);
102
+ }
103
+ catch { }
104
+ }
105
+ }
106
+ // Clean up known_hosts entry
107
+ if (agent.host && agent.port) {
108
+ removeKnownHost(agent.host, agent.port);
109
+ }
110
+ const removed = removeFromRegistry(agent.id);
111
+ getStallDetector().remove(agent.id);
112
+ writeStatusline();
113
+ if (removed) {
114
+ logLine('remove_member', `id=${agent.id} name=${agent.friendlyName}`, agent);
115
+ let result = `✅ Member "${agent.friendlyName}" (${agent.id}) has been removed.\n\nTo refresh the member list in your UI, run /mcp and select Reconnect.`;
116
+ if (warnings.length > 0) {
117
+ result += `\n\n⚠️ Warnings:\n`;
118
+ for (const w of warnings) {
119
+ result += ` - ${w}\n`;
120
+ }
121
+ }
122
+ return result;
123
+ }
124
+ return `Failed to remove member "${agent.id}".`;
125
+ }
126
+ //# sourceMappingURL=remove-member.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-member.js","sourceRoot":"","sources":["../../src/tools/remove-member.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAGtE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,MAAM,YAAY,GAAuC;IACvD,MAAM,EAAE,cAAc;IACtB,SAAS,EAAE,iBAAiB;IAC5B,cAAc,EAAE,mBAAmB;CACpC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,GAAG,gBAAgB;IACnB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;CACrG,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAwB;IACzD,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACvE,IAAI,OAAO,YAAY,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC;IAC1D,MAAM,KAAK,GAAG,YAAqB,CAAC;IAEpC,8DAA8D;IAC9D,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjD,IAAI,aAAa,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,aAAa,KAAK,CAAC,YAAY,wFAAwF,CAAC;IACjI,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,8CAA8C;IAC9C,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAElC,sEAAsE;IACtE,wEAAwE;IACxE,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;oBACjC,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBACjD,OAAO,CAAC,CAAC,MAAM,CAAC;gBAClB,CAAC,CAAC;gBACF,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAEhD,2DAA2D;gBAC3D,MAAM,eAAe,GAAG,QAAQ,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;gBAC9D,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;oBACnC,MAAM,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAChG,CAAC;gBAED,4DAA4D;gBAC5D,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBACrD,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACzD,CAAC;gBAED,gFAAgF;gBAChF,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACnD,IAAI,UAAU,EAAE,CAAC;wBACf,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAC7D,CAAC;gBACH,CAAC;gBAED,uEAAuE;gBACvE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,MAAM,UAAU,GAAG,GAAG,KAAK,CAAC,OAAO,MAAM,CAAC;oBAC1C,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;wBAC3D,uEAAuE;wBACvE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC7C,2CAA2C;wBAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;wBAClD,MAAM,QAAQ,CAAC,WAAW,CACxB,YAAY,UAAU,4BAA4B,EAClD,KAAK,CACN,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBACpB,CAAC;oBAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,KAAK,EAAE,CAAC;IAEjB,mEAAmE;IACnE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7F,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC;gBAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YAC9C,IAAI,CAAC;gBAAC,EAAE,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACzD,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7C,gBAAgB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpC,eAAe,EAAE,CAAC;IAElB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,eAAe,EAAE,MAAM,KAAK,CAAC,EAAE,SAAS,KAAK,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7E,IAAI,MAAM,GAAG,aAAa,KAAK,CAAC,YAAY,MAAM,KAAK,CAAC,EAAE,8FAA8F,CAAC;QACzJ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,oBAAoB,CAAC;YAC/B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,4BAA4B,KAAK,CAAC,EAAE,IAAI,CAAC;AAClD,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ export declare const revokeVcsAuthSchema: z.ZodObject<{
3
+ provider: z.ZodEnum<["github", "bitbucket", "azure-devops"]>;
4
+ label: z.ZodOptional<z.ZodString>;
5
+ scope_url: z.ZodOptional<z.ZodString>;
6
+ member_id: z.ZodOptional<z.ZodString>;
7
+ member_name: z.ZodOptional<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ provider: "github" | "bitbucket" | "azure-devops";
10
+ member_id?: string | undefined;
11
+ member_name?: string | undefined;
12
+ label?: string | undefined;
13
+ scope_url?: string | undefined;
14
+ }, {
15
+ provider: "github" | "bitbucket" | "azure-devops";
16
+ member_id?: string | undefined;
17
+ member_name?: string | undefined;
18
+ label?: string | undefined;
19
+ scope_url?: string | undefined;
20
+ }>;
21
+ export type RevokeVcsAuthInput = z.infer<typeof revokeVcsAuthSchema>;
22
+ export declare function revokeVcsAuth(input: RevokeVcsAuthInput): Promise<string>;
23
+ //# sourceMappingURL=revoke-vcs-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revoke-vcs-auth.d.ts","sourceRoot":"","sources":["../../src/tools/revoke-vcs-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC9E"}