@paradigma-inc/flywheel 0.1.35 → 0.1.52

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 (551) hide show
  1. package/README.md +117 -60
  2. package/bin/flywheel.js +10 -3
  3. package/package.json +5 -1
  4. package/skills/flywheel/SKILL.md +13 -1
  5. package/skills/flywheel/campaigns/participating-in-a-campaign.md +2 -2
  6. package/skills/flywheel/compute/managed-compute.md +26 -7
  7. package/skills/flywheel/getting-started/flywheel-tutorial-overview.md +2 -1
  8. package/skills/flywheel/references/INTERFACES.md +2 -0
  9. package/skills/flywheel/references/flywheel-cli-tool-map.md +244 -0
  10. package/skills/flywheel/references/flywheel-mcp-tool-map.md +39 -5
  11. package/skills/flywheel/setting-up-flywheel/claude-code-cli-installation.md +1 -1
  12. package/skills/flywheel/setting-up-flywheel/codex-cli-installation.md +1 -1
  13. package/skills/flywheel/setting-up-flywheel/how-can-i-get-an-authorized-client_id-for-the-oauth-flow.md +3 -3
  14. package/skills/flywheel/setting-up-flywheel/installation-overview.md +19 -4
  15. package/skills/flywheel/setting-up-flywheel/other-hosts-installation.md +1 -1
  16. package/skills/flywheel/usage-and-workflows/what-to-do-with-flywheel.md +28 -1
  17. package/skills/flywheel/web-ui/the-flywheel-web-ui.md +1 -1
  18. package/skills/flywheel-auto/SKILL.md +23 -12
  19. package/skills/flywheel-auto/references/INTERFACES.md +2 -0
  20. package/skills/flywheel-auto/references/flywheel-cli-tool-map.md +244 -0
  21. package/skills/flywheel-auto/references/flywheel-mcp-tool-map.md +6 -5
  22. package/skills/flywheel-lookahead/SKILL.md +22 -11
  23. package/skills/flywheel-lookahead/references/INTERFACES.md +2 -0
  24. package/skills/flywheel-lookahead/references/flywheel-cli-tool-map.md +244 -0
  25. package/skills/flywheel-lookahead/references/flywheel-mcp-tool-map.md +6 -5
  26. package/skills/flywheel-prove/SKILL.md +9 -0
  27. package/skills/flywheel-reproduce/SKILL.md +23 -12
  28. package/skills/flywheel-reproduce/references/INTERFACES.md +2 -0
  29. package/skills/flywheel-reproduce/references/flywheel-cli-tool-map.md +244 -0
  30. package/skills/flywheel-reproduce/references/flywheel-mcp-tool-map.md +6 -5
  31. package/skills/flywheel-to-graph/SKILL.md +20 -9
  32. package/skills/flywheel-to-graph/references/INTERFACES.md +2 -0
  33. package/skills/flywheel-to-graph/references/flywheel-cli-tool-map.md +244 -0
  34. package/skills/flywheel-to-graph/references/flywheel-mcp-tool-map.md +6 -5
  35. package/skills/flywheel-tree/SKILL.md +9 -0
  36. package/src/cli.mjs +284 -598
  37. package/src/mcp-writer.mjs +2 -2
  38. package/src/runtime/delegate.mjs +21 -0
  39. package/src/runtime/required-runtime-commands.json +117 -0
  40. package/src/runtime/runtime-config.mjs +84 -0
  41. package/src/runtime/vendor/.gitkeep +1 -0
  42. package/src/runtime/vendor/flywheel-cli-dist/auth/active-key-id.d.ts +1 -0
  43. package/src/runtime/vendor/flywheel-cli-dist/auth/active-key-id.js +22 -0
  44. package/src/runtime/vendor/flywheel-cli-dist/auth/active-key-id.js.map +1 -0
  45. package/src/runtime/vendor/flywheel-cli-dist/auth/baseurl.d.ts +35 -0
  46. package/src/runtime/vendor/flywheel-cli-dist/auth/baseurl.js +64 -0
  47. package/src/runtime/vendor/flywheel-cli-dist/auth/baseurl.js.map +1 -0
  48. package/src/runtime/vendor/flywheel-cli-dist/auth/config.d.ts +34 -0
  49. package/src/runtime/vendor/flywheel-cli-dist/auth/config.js +92 -0
  50. package/src/runtime/vendor/flywheel-cli-dist/auth/config.js.map +1 -0
  51. package/src/runtime/vendor/flywheel-cli-dist/auth/fingerprint.d.ts +5 -0
  52. package/src/runtime/vendor/flywheel-cli-dist/auth/fingerprint.js +12 -0
  53. package/src/runtime/vendor/flywheel-cli-dist/auth/fingerprint.js.map +1 -0
  54. package/src/runtime/vendor/flywheel-cli-dist/auth/keychain.d.ts +4 -0
  55. package/src/runtime/vendor/flywheel-cli-dist/auth/keychain.js +31 -0
  56. package/src/runtime/vendor/flywheel-cli-dist/auth/keychain.js.map +1 -0
  57. package/src/runtime/vendor/flywheel-cli-dist/auth/login.d.ts +23 -0
  58. package/src/runtime/vendor/flywheel-cli-dist/auth/login.js +387 -0
  59. package/src/runtime/vendor/flywheel-cli-dist/auth/login.js.map +1 -0
  60. package/src/runtime/vendor/flywheel-cli-dist/auth/profile.d.ts +15 -0
  61. package/src/runtime/vendor/flywheel-cli-dist/auth/profile.js +150 -0
  62. package/src/runtime/vendor/flywheel-cli-dist/auth/profile.js.map +1 -0
  63. package/src/runtime/vendor/flywheel-cli-dist/auth/profiles.d.ts +26 -0
  64. package/src/runtime/vendor/flywheel-cli-dist/auth/profiles.js +27 -0
  65. package/src/runtime/vendor/flywheel-cli-dist/auth/profiles.js.map +1 -0
  66. package/src/runtime/vendor/flywheel-cli-dist/commands/_artifacts-upload-helpers.d.ts +32 -0
  67. package/src/runtime/vendor/flywheel-cli-dist/commands/_artifacts-upload-helpers.js +171 -0
  68. package/src/runtime/vendor/flywheel-cli-dist/commands/_artifacts-upload-helpers.js.map +1 -0
  69. package/src/runtime/vendor/flywheel-cli-dist/commands/_open-url.d.ts +2 -0
  70. package/src/runtime/vendor/flywheel-cli-dist/commands/_open-url.js +26 -0
  71. package/src/runtime/vendor/flywheel-cli-dist/commands/_open-url.js.map +1 -0
  72. package/src/runtime/vendor/flywheel-cli-dist/commands/_stream-writer.d.ts +34 -0
  73. package/src/runtime/vendor/flywheel-cli-dist/commands/_stream-writer.js +63 -0
  74. package/src/runtime/vendor/flywheel-cli-dist/commands/_stream-writer.js.map +1 -0
  75. package/src/runtime/vendor/flywheel-cli-dist/commands/_wait-polling.d.ts +29 -0
  76. package/src/runtime/vendor/flywheel-cli-dist/commands/_wait-polling.js +75 -0
  77. package/src/runtime/vendor/flywheel-cli-dist/commands/_wait-polling.js.map +1 -0
  78. package/src/runtime/vendor/flywheel-cli-dist/commands/account-detach.d.ts +2 -0
  79. package/src/runtime/vendor/flywheel-cli-dist/commands/account-detach.js +13 -0
  80. package/src/runtime/vendor/flywheel-cli-dist/commands/account-detach.js.map +1 -0
  81. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-add.d.ts +2 -0
  82. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-add.js +6 -0
  83. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-add.js.map +1 -0
  84. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-remove.d.ts +2 -0
  85. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-remove.js +6 -0
  86. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-remove.js.map +1 -0
  87. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-set-primary.d.ts +2 -0
  88. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-set-primary.js +6 -0
  89. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-set-primary.js.map +1 -0
  90. package/src/runtime/vendor/flywheel-cli-dist/commands/account-get.d.ts +1 -0
  91. package/src/runtime/vendor/flywheel-cli-dist/commands/account-get.js +6 -0
  92. package/src/runtime/vendor/flywheel-cli-dist/commands/account-get.js.map +1 -0
  93. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-preview.d.ts +2 -0
  94. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-preview.js +6 -0
  95. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-preview.js.map +1 -0
  96. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-proof.d.ts +2 -0
  97. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-proof.js +8 -0
  98. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-proof.js.map +1 -0
  99. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge.d.ts +2 -0
  100. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge.js +11 -0
  101. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge.js.map +1 -0
  102. package/src/runtime/vendor/flywheel-cli-dist/commands/aliases.d.ts +13 -0
  103. package/src/runtime/vendor/flywheel-cli-dist/commands/aliases.js +13 -0
  104. package/src/runtime/vendor/flywheel-cli-dist/commands/aliases.js.map +1 -0
  105. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-create.d.ts +2 -0
  106. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-create.js +12 -0
  107. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-create.js.map +1 -0
  108. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-delete.d.ts +2 -0
  109. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-delete.js +20 -0
  110. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-delete.js.map +1 -0
  111. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-list.d.ts +1 -0
  112. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-list.js +6 -0
  113. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-list.js.map +1 -0
  114. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-rotate.d.ts +2 -0
  115. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-rotate.js +21 -0
  116. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-rotate.js.map +1 -0
  117. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-expire.d.ts +2 -0
  118. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-expire.js +8 -0
  119. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-expire.js.map +1 -0
  120. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-heartbeat.d.ts +2 -0
  121. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-heartbeat.js +29 -0
  122. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-heartbeat.js.map +1 -0
  123. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-list.d.ts +2 -0
  124. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-list.js +10 -0
  125. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-list.js.map +1 -0
  126. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-delete.d.ts +2 -0
  127. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-delete.js +8 -0
  128. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-delete.js.map +1 -0
  129. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-get.d.ts +2 -0
  130. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-get.js +7 -0
  131. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-get.js.map +1 -0
  132. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-list.d.ts +2 -0
  133. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-list.js +8 -0
  134. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-list.js.map +1 -0
  135. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-note-set.d.ts +2 -0
  136. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-note-set.js +9 -0
  137. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-note-set.js.map +1 -0
  138. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-finalize.d.ts +2 -0
  139. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-finalize.js +7 -0
  140. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-finalize.js.map +1 -0
  141. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-prepare.d.ts +2 -0
  142. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-prepare.js +15 -0
  143. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-prepare.js.map +1 -0
  144. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload.d.ts +2 -0
  145. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload.js +5 -0
  146. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload.js.map +1 -0
  147. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-clear.d.ts +2 -0
  148. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-clear.js +8 -0
  149. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-clear.js.map +1 -0
  150. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-set.d.ts +2 -0
  151. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-set.js +30 -0
  152. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-set.js.map +1 -0
  153. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-login.d.ts +2 -0
  154. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-login.js +34 -0
  155. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-login.js.map +1 -0
  156. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-status.d.ts +2 -0
  157. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-status.js +4 -0
  158. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-status.js.map +1 -0
  159. package/src/runtime/vendor/flywheel-cli-dist/commands/blobs-get.d.ts +2 -0
  160. package/src/runtime/vendor/flywheel-cli-dist/commands/blobs-get.js +18 -0
  161. package/src/runtime/vendor/flywheel-cli-dist/commands/blobs-get.js.map +1 -0
  162. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-create.d.ts +2 -0
  163. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-create.js +11 -0
  164. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-create.js.map +1 -0
  165. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-list.d.ts +1 -0
  166. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-list.js +6 -0
  167. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-list.js.map +1 -0
  168. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-revoke.d.ts +1 -0
  169. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-revoke.js +6 -0
  170. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-revoke.js.map +1 -0
  171. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-update.d.ts +2 -0
  172. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-update.js +22 -0
  173. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-update.js.map +1 -0
  174. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-snapshot.d.ts +1 -0
  175. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-snapshot.js +6 -0
  176. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-snapshot.js.map +1 -0
  177. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-acquire.d.ts +2 -0
  178. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-acquire.js +39 -0
  179. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-acquire.js.map +1 -0
  180. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-budgets.d.ts +2 -0
  181. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-budgets.js +14 -0
  182. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-budgets.js.map +1 -0
  183. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-connection.d.ts +2 -0
  184. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-connection.js +13 -0
  185. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-connection.js.map +1 -0
  186. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-funding.d.ts +2 -0
  187. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-funding.js +10 -0
  188. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-funding.js.map +1 -0
  189. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-list.d.ts +2 -0
  190. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-list.js +13 -0
  191. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-list.js.map +1 -0
  192. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-request-approval.d.ts +2 -0
  193. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-request-approval.js +53 -0
  194. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-request-approval.js.map +1 -0
  195. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-options.d.ts +2 -0
  196. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-options.js +17 -0
  197. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-options.js.map +1 -0
  198. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-get.d.ts +1 -0
  199. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-get.js +6 -0
  200. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-get.js.map +1 -0
  201. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-set.d.ts +2 -0
  202. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-set.js +19 -0
  203. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-set.js.map +1 -0
  204. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release-all.d.ts +2 -0
  205. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release-all.js +39 -0
  206. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release-all.js.map +1 -0
  207. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release.d.ts +2 -0
  208. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release.js +28 -0
  209. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release.js.map +1 -0
  210. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-status.d.ts +2 -0
  211. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-status.js +8 -0
  212. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-status.js.map +1 -0
  213. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-balance.d.ts +1 -0
  214. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-balance.js +6 -0
  215. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-balance.js.map +1 -0
  216. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-billing-portal.d.ts +2 -0
  217. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-billing-portal.js +8 -0
  218. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-billing-portal.js.map +1 -0
  219. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-purchase.d.ts +2 -0
  220. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-purchase.js +10 -0
  221. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-purchase.js.map +1 -0
  222. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral-claim.d.ts +2 -0
  223. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral-claim.js +6 -0
  224. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral-claim.js.map +1 -0
  225. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral.d.ts +1 -0
  226. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral.js +6 -0
  227. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral.js.map +1 -0
  228. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscribe.d.ts +2 -0
  229. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscribe.js +14 -0
  230. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscribe.js.map +1 -0
  231. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscription.d.ts +1 -0
  232. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscription.js +6 -0
  233. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscription.js.map +1 -0
  234. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-transactions.d.ts +2 -0
  235. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-transactions.js +12 -0
  236. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-transactions.js.map +1 -0
  237. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-usage.d.ts +2 -0
  238. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-usage.js +9 -0
  239. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-usage.js.map +1 -0
  240. package/src/runtime/vendor/flywheel-cli-dist/commands/enums.d.ts +16 -0
  241. package/src/runtime/vendor/flywheel-cli-dist/commands/enums.js +12 -0
  242. package/src/runtime/vendor/flywheel-cli-dist/commands/enums.js.map +1 -0
  243. package/src/runtime/vendor/flywheel-cli-dist/commands/env.d.ts +12 -0
  244. package/src/runtime/vendor/flywheel-cli-dist/commands/env.js +65 -0
  245. package/src/runtime/vendor/flywheel-cli-dist/commands/env.js.map +1 -0
  246. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-launch.d.ts +2 -0
  247. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-launch.js +11 -0
  248. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-launch.js.map +1 -0
  249. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-list.d.ts +1 -0
  250. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-list.js +6 -0
  251. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-list.js.map +1 -0
  252. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-terminate.d.ts +2 -0
  253. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-terminate.js +8 -0
  254. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-terminate.js.map +1 -0
  255. package/src/runtime/vendor/flywheel-cli-dist/commands/export-history.d.ts +2 -0
  256. package/src/runtime/vendor/flywheel-cli-dist/commands/export-history.js +82 -0
  257. package/src/runtime/vendor/flywheel-cli-dist/commands/export-history.js.map +1 -0
  258. package/src/runtime/vendor/flywheel-cli-dist/commands/export-subgraph.d.ts +2 -0
  259. package/src/runtime/vendor/flywheel-cli-dist/commands/export-subgraph.js +18 -0
  260. package/src/runtime/vendor/flywheel-cli-dist/commands/export-subgraph.js.map +1 -0
  261. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-pdf.d.ts +2 -0
  262. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-pdf.js +19 -0
  263. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-pdf.js.map +1 -0
  264. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-render-pdf.d.ts +2 -0
  265. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-render-pdf.js +65 -0
  266. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-render-pdf.js.map +1 -0
  267. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-stream.d.ts +2 -0
  268. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-stream.js +174 -0
  269. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-stream.js.map +1 -0
  270. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary.d.ts +2 -0
  271. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary.js +9 -0
  272. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary.js.map +1 -0
  273. package/src/runtime/vendor/flywheel-cli-dist/commands/files-list.d.ts +2 -0
  274. package/src/runtime/vendor/flywheel-cli-dist/commands/files-list.js +12 -0
  275. package/src/runtime/vendor/flywheel-cli-dist/commands/files-list.js.map +1 -0
  276. package/src/runtime/vendor/flywheel-cli-dist/commands/github-disconnect.d.ts +1 -0
  277. package/src/runtime/vendor/flywheel-cli-dist/commands/github-disconnect.js +6 -0
  278. package/src/runtime/vendor/flywheel-cli-dist/commands/github-disconnect.js.map +1 -0
  279. package/src/runtime/vendor/flywheel-cli-dist/commands/github-link.d.ts +2 -0
  280. package/src/runtime/vendor/flywheel-cli-dist/commands/github-link.js +17 -0
  281. package/src/runtime/vendor/flywheel-cli-dist/commands/github-link.js.map +1 -0
  282. package/src/runtime/vendor/flywheel-cli-dist/commands/github-refresh-repos.d.ts +1 -0
  283. package/src/runtime/vendor/flywheel-cli-dist/commands/github-refresh-repos.js +6 -0
  284. package/src/runtime/vendor/flywheel-cli-dist/commands/github-refresh-repos.js.map +1 -0
  285. package/src/runtime/vendor/flywheel-cli-dist/commands/github-status.d.ts +1 -0
  286. package/src/runtime/vendor/flywheel-cli-dist/commands/github-status.js +6 -0
  287. package/src/runtime/vendor/flywheel-cli-dist/commands/github-status.js.map +1 -0
  288. package/src/runtime/vendor/flywheel-cli-dist/commands/graph-get.d.ts +2 -0
  289. package/src/runtime/vendor/flywheel-cli-dist/commands/graph-get.js +15 -0
  290. package/src/runtime/vendor/flywheel-cli-dist/commands/graph-get.js.map +1 -0
  291. package/src/runtime/vendor/flywheel-cli-dist/commands/handler-factory.d.ts +22 -0
  292. package/src/runtime/vendor/flywheel-cli-dist/commands/handler-factory.js +51 -0
  293. package/src/runtime/vendor/flywheel-cli-dist/commands/handler-factory.js.map +1 -0
  294. package/src/runtime/vendor/flywheel-cli-dist/commands/help.d.ts +23 -0
  295. package/src/runtime/vendor/flywheel-cli-dist/commands/help.js +258 -0
  296. package/src/runtime/vendor/flywheel-cli-dist/commands/help.js.map +1 -0
  297. package/src/runtime/vendor/flywheel-cli-dist/commands/import-subgraph.d.ts +2 -0
  298. package/src/runtime/vendor/flywheel-cli-dist/commands/import-subgraph.js +6 -0
  299. package/src/runtime/vendor/flywheel-cli-dist/commands/import-subgraph.js.map +1 -0
  300. package/src/runtime/vendor/flywheel-cli-dist/commands/index.d.ts +20 -0
  301. package/src/runtime/vendor/flywheel-cli-dist/commands/index.js +238 -0
  302. package/src/runtime/vendor/flywheel-cli-dist/commands/index.js.map +1 -0
  303. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-remove.d.ts +1 -0
  304. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-remove.js +6 -0
  305. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-remove.js.map +1 -0
  306. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-set.d.ts +2 -0
  307. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-set.js +6 -0
  308. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-set.js.map +1 -0
  309. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-status.d.ts +1 -0
  310. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-status.js +6 -0
  311. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-status.js.map +1 -0
  312. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-remove.d.ts +1 -0
  313. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-remove.js +6 -0
  314. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-remove.js.map +1 -0
  315. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-set.d.ts +2 -0
  316. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-set.js +6 -0
  317. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-set.js.map +1 -0
  318. package/src/runtime/vendor/flywheel-cli-dist/commands/machines-list.d.ts +1 -0
  319. package/src/runtime/vendor/flywheel-cli-dist/commands/machines-list.js +6 -0
  320. package/src/runtime/vendor/flywheel-cli-dist/commands/machines-list.js.map +1 -0
  321. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-add-parent.d.ts +2 -0
  322. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-add-parent.js +10 -0
  323. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-add-parent.js.map +1 -0
  324. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-audit-list.d.ts +2 -0
  325. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-audit-list.js +7 -0
  326. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-audit-list.js.map +1 -0
  327. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-branch.d.ts +2 -0
  328. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-branch.js +10 -0
  329. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-branch.js.map +1 -0
  330. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit-new.d.ts +2 -0
  331. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit-new.js +6 -0
  332. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit-new.js.map +1 -0
  333. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit.d.ts +2 -0
  334. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit.js +7 -0
  335. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit.js.map +1 -0
  336. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-create.d.ts +2 -0
  337. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-create.js +6 -0
  338. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-create.js.map +1 -0
  339. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete-bulk.d.ts +2 -0
  340. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete-bulk.js +14 -0
  341. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete-bulk.js.map +1 -0
  342. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete.d.ts +2 -0
  343. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete.js +9 -0
  344. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete.js.map +1 -0
  345. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-files.d.ts +1 -0
  346. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-files.js +6 -0
  347. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-files.js.map +1 -0
  348. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-get.d.ts +2 -0
  349. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-get.js +8 -0
  350. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-get.js.map +1 -0
  351. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-list.d.ts +2 -0
  352. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-list.js +7 -0
  353. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-list.js.map +1 -0
  354. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-merge.d.ts +2 -0
  355. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-merge.js +33 -0
  356. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-merge.js.map +1 -0
  357. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-remove-parent.d.ts +2 -0
  358. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-remove-parent.js +8 -0
  359. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-remove-parent.js.map +1 -0
  360. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-ancestry.d.ts +2 -0
  361. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-ancestry.js +10 -0
  362. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-ancestry.js.map +1 -0
  363. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-summary.d.ts +2 -0
  364. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-summary.js +10 -0
  365. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-summary.js.map +1 -0
  366. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-tree.d.ts +2 -0
  367. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-tree.js +8 -0
  368. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-tree.js.map +1 -0
  369. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-resolve-slug.d.ts +2 -0
  370. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-resolve-slug.js +13 -0
  371. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-resolve-slug.js.map +1 -0
  372. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-get.d.ts +1 -0
  373. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-get.js +6 -0
  374. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-get.js.map +1 -0
  375. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set-bulk.d.ts +2 -0
  376. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set-bulk.js +20 -0
  377. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set-bulk.js.map +1 -0
  378. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set.d.ts +2 -0
  379. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set.js +10 -0
  380. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set.js.map +1 -0
  381. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-summaries.d.ts +2 -0
  382. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-summaries.js +11 -0
  383. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-summaries.js.map +1 -0
  384. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-hypothesis.d.ts +2 -0
  385. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-hypothesis.js +7 -0
  386. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-hypothesis.js.map +1 -0
  387. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-insights.d.ts +2 -0
  388. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-insights.js +7 -0
  389. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-insights.js.map +1 -0
  390. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-acquire.d.ts +2 -0
  391. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-acquire.js +13 -0
  392. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-acquire.js.map +1 -0
  393. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-heartbeat.d.ts +2 -0
  394. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-heartbeat.js +7 -0
  395. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-heartbeat.js.map +1 -0
  396. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-release.d.ts +2 -0
  397. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-release.js +7 -0
  398. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-release.js.map +1 -0
  399. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-list.d.ts +2 -0
  400. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-list.js +6 -0
  401. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-list.js.map +1 -0
  402. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-set.d.ts +2 -0
  403. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-set.js +56 -0
  404. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-set.js.map +1 -0
  405. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-show.d.ts +2 -0
  406. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-show.js +12 -0
  407. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-show.js.map +1 -0
  408. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-unset.d.ts +2 -0
  409. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-unset.js +12 -0
  410. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-unset.js.map +1 -0
  411. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/account.d.ts +2 -0
  412. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/account.js +124 -0
  413. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/account.js.map +1 -0
  414. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/api-keys.d.ts +2 -0
  415. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/api-keys.js +103 -0
  416. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/api-keys.js.map +1 -0
  417. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/approval.d.ts +2 -0
  418. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/approval.js +101 -0
  419. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/approval.js.map +1 -0
  420. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/artifacts.d.ts +2 -0
  421. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/artifacts.js +104 -0
  422. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/artifacts.js.map +1 -0
  423. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/auth.d.ts +2 -0
  424. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/auth.js +37 -0
  425. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/auth.js.map +1 -0
  426. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/budgets.d.ts +2 -0
  427. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/budgets.js +72 -0
  428. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/budgets.js.map +1 -0
  429. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/compute.d.ts +2 -0
  430. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/compute.js +128 -0
  431. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/compute.js.map +1 -0
  432. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/credits.d.ts +2 -0
  433. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/credits.js +134 -0
  434. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/credits.js.map +1 -0
  435. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/env.d.ts +2 -0
  436. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/env.js +39 -0
  437. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/env.js.map +1 -0
  438. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/executions.d.ts +2 -0
  439. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/executions.js +55 -0
  440. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/executions.js.map +1 -0
  441. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/export.d.ts +2 -0
  442. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/export.js +88 -0
  443. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/export.js.map +1 -0
  444. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/github.d.ts +2 -0
  445. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/github.js +60 -0
  446. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/github.js.map +1 -0
  447. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/graph.d.ts +2 -0
  448. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/graph.js +22 -0
  449. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/graph.js.map +1 -0
  450. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/integrations.d.ts +2 -0
  451. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/integrations.js +69 -0
  452. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/integrations.js.map +1 -0
  453. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/lifecycle.d.ts +2 -0
  454. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/lifecycle.js +284 -0
  455. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/lifecycle.js.map +1 -0
  456. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/profile.d.ts +2 -0
  457. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/profile.js +82 -0
  458. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/profile.js.map +1 -0
  459. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/resources.d.ts +2 -0
  460. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/resources.js +108 -0
  461. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/resources.js.map +1 -0
  462. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/sharing.d.ts +2 -0
  463. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/sharing.js +69 -0
  464. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/sharing.js.map +1 -0
  465. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/tagging.d.ts +2 -0
  466. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/tagging.js +98 -0
  467. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/tagging.js.map +1 -0
  468. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/updates.d.ts +2 -0
  469. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/updates.js +70 -0
  470. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/updates.js.map +1 -0
  471. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.d.ts +25 -0
  472. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.js +441 -0
  473. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.js.map +1 -0
  474. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-assign.d.ts +2 -0
  475. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-assign.js +25 -0
  476. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-assign.js.map +1 -0
  477. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-create.d.ts +2 -0
  478. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-create.js +25 -0
  479. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-create.js.map +1 -0
  480. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-delete.d.ts +2 -0
  481. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-delete.js +11 -0
  482. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-delete.js.map +1 -0
  483. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-update.d.ts +2 -0
  484. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-update.js +28 -0
  485. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-update.js.map +1 -0
  486. package/src/runtime/vendor/flywheel-cli-dist/commands/types.d.ts +30 -0
  487. package/src/runtime/vendor/flywheel-cli-dist/commands/types.js +6 -0
  488. package/src/runtime/vendor/flywheel-cli-dist/commands/types.js.map +1 -0
  489. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide-all-active.d.ts +1 -0
  490. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide-all-active.js +6 -0
  491. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide-all-active.js.map +1 -0
  492. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide.d.ts +2 -0
  493. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide.js +10 -0
  494. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide.js.map +1 -0
  495. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-list.d.ts +2 -0
  496. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-list.js +12 -0
  497. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-list.js.map +1 -0
  498. package/src/runtime/vendor/flywheel-cli-dist/commands/utils.d.ts +10 -0
  499. package/src/runtime/vendor/flywheel-cli-dist/commands/utils.js +171 -0
  500. package/src/runtime/vendor/flywheel-cli-dist/commands/utils.js.map +1 -0
  501. package/src/runtime/vendor/flywheel-cli-dist/errors.d.ts +55 -0
  502. package/src/runtime/vendor/flywheel-cli-dist/errors.js +51 -0
  503. package/src/runtime/vendor/flywheel-cli-dist/errors.js.map +1 -0
  504. package/src/runtime/vendor/flywheel-cli-dist/exit-codes.d.ts +8 -0
  505. package/src/runtime/vendor/flywheel-cli-dist/exit-codes.js +8 -0
  506. package/src/runtime/vendor/flywheel-cli-dist/exit-codes.js.map +1 -0
  507. package/src/runtime/vendor/flywheel-cli-dist/grammar/globals.d.ts +26 -0
  508. package/src/runtime/vendor/flywheel-cli-dist/grammar/globals.js +117 -0
  509. package/src/runtime/vendor/flywheel-cli-dist/grammar/globals.js.map +1 -0
  510. package/src/runtime/vendor/flywheel-cli-dist/grammar/parse.d.ts +17 -0
  511. package/src/runtime/vendor/flywheel-cli-dist/grammar/parse.js +102 -0
  512. package/src/runtime/vendor/flywheel-cli-dist/grammar/parse.js.map +1 -0
  513. package/src/runtime/vendor/flywheel-cli-dist/http/client.d.ts +75 -0
  514. package/src/runtime/vendor/flywheel-cli-dist/http/client.js +369 -0
  515. package/src/runtime/vendor/flywheel-cli-dist/http/client.js.map +1 -0
  516. package/src/runtime/vendor/flywheel-cli-dist/http/debug.d.ts +2 -0
  517. package/src/runtime/vendor/flywheel-cli-dist/http/debug.js +68 -0
  518. package/src/runtime/vendor/flywheel-cli-dist/http/debug.js.map +1 -0
  519. package/src/runtime/vendor/flywheel-cli-dist/http/poll.d.ts +18 -0
  520. package/src/runtime/vendor/flywheel-cli-dist/http/poll.js +57 -0
  521. package/src/runtime/vendor/flywheel-cli-dist/http/poll.js.map +1 -0
  522. package/src/runtime/vendor/flywheel-cli-dist/http/retry.d.ts +30 -0
  523. package/src/runtime/vendor/flywheel-cli-dist/http/retry.js +127 -0
  524. package/src/runtime/vendor/flywheel-cli-dist/http/retry.js.map +1 -0
  525. package/src/runtime/vendor/flywheel-cli-dist/main.d.ts +31 -0
  526. package/src/runtime/vendor/flywheel-cli-dist/main.js +763 -0
  527. package/src/runtime/vendor/flywheel-cli-dist/main.js.map +1 -0
  528. package/src/runtime/vendor/flywheel-cli-dist/output/format.d.ts +9 -0
  529. package/src/runtime/vendor/flywheel-cli-dist/output/format.js +129 -0
  530. package/src/runtime/vendor/flywheel-cli-dist/output/format.js.map +1 -0
  531. package/src/runtime/vendor/flywheel-cli-dist/runtime-entry.d.ts +1 -0
  532. package/src/runtime/vendor/flywheel-cli-dist/runtime-entry.js +2 -0
  533. package/src/runtime/vendor/flywheel-cli-dist/runtime-entry.js.map +1 -0
  534. package/src/runtime/vendor/flywheel-cli-dist/version.d.ts +3 -0
  535. package/src/runtime/vendor/flywheel-cli-dist/version.js +31 -0
  536. package/src/runtime/vendor/flywheel-cli-dist/version.js.map +1 -0
  537. package/src/runtime/vendor/manifest.json +500 -0
  538. package/src/setup/command.mjs +24 -0
  539. package/src/setup/io/patchers/json.mjs +33 -0
  540. package/src/setup/io/patchers/toml.mjs +15 -0
  541. package/src/setup/io/patchers/yaml.mjs +33 -0
  542. package/src/setup/mode.mjs +113 -0
  543. package/src/setup/modes/cli.mjs +317 -0
  544. package/src/setup/modes/mcp-command.mjs +850 -0
  545. package/src/setup/modes/mcp.mjs +176 -0
  546. package/src/setup/preflight.mjs +54 -0
  547. package/src/setup/shared/prior-mode-detect.mjs +412 -0
  548. package/src/setup/shared/skill.mjs +12 -0
  549. package/src/setup/shared/summary.mjs +80 -0
  550. package/src/setup-auth.mjs +293 -178
  551. package/src/unified-cli.mjs +161 -0
package/src/cli.mjs CHANGED
@@ -1,10 +1,9 @@
1
1
  import { Command } from "commander";
2
- import { checkbox, confirm, select } from "@inquirer/prompts";
2
+ import { checkbox, select } from "@inquirer/prompts";
3
3
  import ora from "ora";
4
4
  import pc from "picocolors";
5
- import { readFile, rm } from "node:fs/promises";
5
+ import { readFile } from "node:fs/promises";
6
6
  import path from "node:path";
7
- import { randomBytes } from "node:crypto";
8
7
 
9
8
  import {
10
9
  ALL_HOST_NAMES,
@@ -15,8 +14,6 @@ import {
15
14
  normalizeHosts,
16
15
  } from "./agents.mjs";
17
16
  import {
18
- appendTomlServer,
19
- mergeServerEntry,
20
17
  readNamedConfigEntry,
21
18
  readJsonConfig,
22
19
  readTomlServerEntry,
@@ -28,35 +25,28 @@ import {
28
25
  writeYamlConfig,
29
26
  } from "./mcp-writer.mjs";
30
27
  import {
31
- acquireApiKeyViaBrowserBridge,
32
- acquireApiKeyViaDeviceFlow,
33
- resolveSetupAuthMode,
34
- } from "./setup-auth.mjs";
35
- import {
36
- cleanupInstalledSkillArtifactsForHosts,
37
- formatSupportedInstallSkillHosts,
38
- inspectInstalledSkillArtifactsForHosts,
39
- installBundledSkillForHosts,
40
28
  listBundledSkills,
41
29
  partitionInstallSkillHosts,
42
30
  removeInstalledSkillsForHosts,
43
- resolveSkillsAgentName,
44
31
  SUPPORTED_INSTALL_SKILL_HOSTS,
45
- resolveInstalledSkillDir,
46
32
  resolvePackageRoot,
47
33
  } from "./skill-installer.mjs";
34
+ import { normalizeSetupAuthMode } from "./setup-auth.mjs";
35
+ import { runSetupRouter } from "./setup/command.mjs";
36
+ import { SetupModeUsageError } from "./setup/mode.mjs";
37
+ import { runCliSetupMode } from "./setup/modes/cli.mjs";
38
+ import {
39
+ buildGuidedSkillInstallPrompt,
40
+ runMcpModeCommand,
41
+ } from "./setup/modes/mcp-command.mjs";
42
+ import { findFlywheelMcpEntryNames } from "./setup/shared/prior-mode-detect.mjs";
43
+ import { renderSetupSummary } from "./setup/shared/summary.mjs";
44
+
45
+ export { buildGuidedSkillInstallPrompt };
48
46
 
49
47
  const INSTALL_SKILL_BASE_URL = "https://flywheel.paradigma.inc";
50
48
  const DEFAULT_BASE_URL =
51
49
  process.env.FLYWHEEL_PUBLIC_BASE_URL || INSTALL_SKILL_BASE_URL;
52
- const NON_INTERACTIVE_SKILL_DECISION_ERROR =
53
- "Non-interactive setup requires one of --install-skill or --skip-skill.";
54
- const MUTUALLY_EXCLUSIVE_SKILL_FLAGS_ERROR =
55
- "--install-skill and --skip-skill cannot be used together.";
56
- const GUIDED_SKILL_DECISION_TEST_ENV =
57
- "FLYWHEEL_GUIDED_SKILL_DECISION_FOR_TESTS";
58
- const ENABLE_TEST_SEAMS_ENV = "FLYWHEEL_ENABLE_TEST_SEAMS";
59
-
60
50
  const log = {
61
51
  info: (message) => console.log(pc.cyan(message)),
62
52
  warn: (message) => console.log(pc.yellow(`⚠ ${message}`)),
@@ -99,17 +89,7 @@ function normalizeServerName(value) {
99
89
  }
100
90
 
101
91
  function normalizeAuthMode(value) {
102
- const normalized = String(value || "auto")
103
- .trim()
104
- .toLowerCase();
105
- if (
106
- normalized === "auto" ||
107
- normalized === "loopback" ||
108
- normalized === "device"
109
- ) {
110
- return normalized;
111
- }
112
- throw new Error("Auth mode must be one of: auto, loopback, device.");
92
+ return normalizeSetupAuthMode(value);
113
93
  }
114
94
 
115
95
  function selectedHostsFromOptions(options) {
@@ -124,6 +104,37 @@ function selectedHostsFromOptions(options) {
124
104
  return hosts;
125
105
  }
126
106
 
107
+ const UNINSTALL_OPTION_KEY_BY_HOST = Object.freeze({
108
+ claude: "claude",
109
+ codex: "codex",
110
+ opencode: "opencode",
111
+ cursor: "cursor",
112
+ "pi-mono": "piMono",
113
+ "hermes-agent": "hermesAgent",
114
+ openclaw: "openclaw",
115
+ });
116
+
117
+ function buildUninstallOptionsForHosts({
118
+ hostNames = [],
119
+ scope = "project",
120
+ serverName = SERVER_NAME,
121
+ } = {}) {
122
+ const options = {
123
+ yes: true,
124
+ scope,
125
+ name: serverName,
126
+ };
127
+
128
+ for (const hostName of hostNames) {
129
+ const optionKey = UNINSTALL_OPTION_KEY_BY_HOST[hostName];
130
+ if (optionKey) {
131
+ options[optionKey] = true;
132
+ }
133
+ }
134
+
135
+ return options;
136
+ }
137
+
127
138
  function parseHostsList(value) {
128
139
  if (!value) return [];
129
140
  return normalizeHosts(
@@ -134,6 +145,10 @@ function parseHostsList(value) {
134
145
  );
135
146
  }
136
147
 
148
+ function collectModeValues(value, previousValues = []) {
149
+ return [...previousValues, value];
150
+ }
151
+
137
152
  function mcpCandidatesForScope(host, scope) {
138
153
  if (scope === "global") return host.mcp.globalPaths;
139
154
  return host.mcp.projectPaths.map((candidate) =>
@@ -171,95 +186,12 @@ async function readExistingServerState(hostName, scope, serverName) {
171
186
  };
172
187
  }
173
188
 
174
- async function inspectInstallSkillHosts({
175
- hostNames,
176
- scope,
177
- serverName,
178
- serverUrl,
179
- }) {
180
- const hostStates = new Map();
181
- const needsSetupHosts = [];
182
- const driftHosts = [];
183
-
184
- for (const hostName of hostNames) {
185
- // eslint-disable-next-line no-await-in-loop
186
- const existingState = await readExistingServerState(
187
- hostName,
188
- scope,
189
- serverName,
190
- );
191
- if (!existingState.exists) {
192
- needsSetupHosts.push(hostName);
193
- hostStates.set(hostName, {
194
- classification: "needs-setup",
195
- mcpPath: existingState.mcpPath,
196
- });
197
- continue;
198
- }
199
-
200
- if (existingState.url === serverUrl) {
201
- hostStates.set(hostName, {
202
- classification: "matching",
203
- mcpPath: existingState.mcpPath,
204
- });
205
- continue;
206
- }
207
-
208
- driftHosts.push({
209
- hostName,
210
- mcpPath: existingState.mcpPath,
211
- existingUrl: existingState.url ?? "(missing URL)",
212
- });
213
- hostStates.set(hostName, {
214
- classification: "drift",
215
- mcpPath: existingState.mcpPath,
216
- });
217
- }
218
-
219
- return { hostStates, needsSetupHosts, driftHosts };
220
- }
221
-
222
- function formatInstallSkillDriftError({
223
- hostName,
189
+ async function promptHosts(
224
190
  scope,
191
+ detected,
225
192
  serverName,
226
- existingUrl,
227
- requestedUrl,
228
- }) {
229
- const host = getHost(hostName);
230
- const scopeFlag = scope === "project" ? "--scope project" : "--scope global";
231
- return `Flywheel MCP entry '${serverName}' for ${host.displayName} already points to ${existingUrl}, not ${requestedUrl}. Run 'flywheel uninstall ${scopeFlag} --${hostName} --name ${serverName}' first or choose a different --name.`;
232
- }
233
-
234
- function getGuidedSkillDecisionOverrideForTests() {
235
- const testSeamsEnabled =
236
- String(process.env[ENABLE_TEST_SEAMS_ENV] || "").trim() === "1";
237
- if (!testSeamsEnabled) {
238
- return "";
239
- }
240
-
241
- const normalizedGuidedDecisionOverride = String(
242
- process.env[GUIDED_SKILL_DECISION_TEST_ENV] || "",
243
- )
244
- .trim()
245
- .toLowerCase();
246
- if (normalizedGuidedDecisionOverride.length === 0) {
247
- return "";
248
- }
249
- if (
250
- normalizedGuidedDecisionOverride === "accept" ||
251
- normalizedGuidedDecisionOverride === "decline" ||
252
- normalizedGuidedDecisionOverride === "abort"
253
- ) {
254
- return normalizedGuidedDecisionOverride;
255
- }
256
-
257
- throw new Error(
258
- `${GUIDED_SKILL_DECISION_TEST_ENV} must be one of: accept, decline, abort.`,
259
- );
260
- }
261
-
262
- async function promptHosts(scope, detected, serverName) {
193
+ { disableAlreadyConfigured = true } = {},
194
+ ) {
263
195
  const choices = await Promise.all(
264
196
  ALL_HOST_NAMES.map(async (hostName) => {
265
197
  const configured = await isAlreadyConfigured(
@@ -271,12 +203,18 @@ async function promptHosts(scope, detected, serverName) {
271
203
  name: SETUP_HOST_NAMES[hostName],
272
204
  value: hostName,
273
205
  checked: detected.includes(hostName),
274
- disabled: configured ? "(already configured)" : false,
206
+ disabled:
207
+ disableAlreadyConfigured && configured
208
+ ? "(already configured)"
209
+ : false,
275
210
  };
276
211
  }),
277
212
  );
278
213
 
279
- if (choices.every((choice) => Boolean(choice.disabled))) {
214
+ if (
215
+ disableAlreadyConfigured &&
216
+ choices.every((choice) => Boolean(choice.disabled))
217
+ ) {
280
218
  log.info("Flywheel is already configured for all detected hosts.");
281
219
  return null;
282
220
  }
@@ -295,7 +233,12 @@ async function promptHosts(scope, detected, serverName) {
295
233
  }
296
234
  }
297
235
 
298
- async function resolveHosts(options, scope, serverName, allowPrompt = true) {
236
+ async function resolveHosts(
237
+ options,
238
+ scope,
239
+ serverName,
240
+ { allowPrompt = true, disableAlreadyConfigured = true } = {},
241
+ ) {
299
242
  const explicit = selectedHostsFromOptions(options);
300
243
  if (explicit.length > 0) return explicit;
301
244
 
@@ -314,7 +257,9 @@ async function resolveHosts(options, scope, serverName, allowPrompt = true) {
314
257
  }
315
258
 
316
259
  log.blank();
317
- const selected = await promptHosts(scope, detected, serverName);
260
+ const selected = await promptHosts(scope, detected, serverName, {
261
+ disableAlreadyConfigured,
262
+ });
318
263
  if (!selected) {
319
264
  log.warn("Setup cancelled");
320
265
  return [];
@@ -322,483 +267,152 @@ async function resolveHosts(options, scope, serverName, allowPrompt = true) {
322
267
  return selected;
323
268
  }
324
269
 
325
- async function resolveApiKey(options, baseUrl) {
326
- if (Object.hasOwn(options, "apiKey")) {
327
- const normalizedApiKey = String(options.apiKey || "").trim();
328
- if (normalizedApiKey.length === 0) {
329
- throw new Error("--api-key cannot be empty.");
330
- }
331
- return normalizedApiKey;
332
- }
333
-
334
- const requestedAuthMode = normalizeAuthMode(options.authMode || "auto");
335
- const resolvedAuthMode = resolveSetupAuthMode({
336
- requestedMode: requestedAuthMode,
337
- });
338
-
339
- const spinner = ora("Configuring authentication...").start();
340
- try {
341
- const keyName = `flywheel-setup-${randomBytes(3).toString("hex")}`;
342
- const authResult =
343
- resolvedAuthMode === "device"
344
- ? await acquireApiKeyViaDeviceFlow({
345
- baseUrl,
346
- keyName,
347
- verificationBaseUrl: baseUrl,
348
- })
349
- : await acquireApiKeyViaBrowserBridge({
350
- baseUrl,
351
- keyName,
352
- });
353
- spinner.succeed(`Authenticated (${resolvedAuthMode})`);
354
- return authResult.apiKey;
355
- } catch (error) {
356
- spinner.fail("Authentication failed");
357
- const message =
358
- error instanceof Error ? error.message : "Authentication failed.";
359
- if (resolvedAuthMode === "loopback" && requestedAuthMode === "auto") {
360
- throw new Error(`${message} Try --auth-mode device on remote shells.`);
361
- }
362
- throw new Error(message);
363
- }
364
- }
365
-
366
- async function setupHost(hostName, scope, serverUrl, apiKey, serverName) {
367
- const host = getHost(hostName);
368
- const mcpPath = await resolveMcpPath(mcpCandidatesForScope(host, scope));
369
-
370
- if (host.mcp.configType === "toml") {
371
- const { alreadyExists } = await appendTomlServer(
372
- mcpPath,
373
- serverName,
374
- host.mcp.buildEntry({ serverUrl, apiKey }),
375
- );
376
- return {
377
- host: host.displayName,
378
- status: alreadyExists ? "already configured" : "configured with API Key",
379
- filePath: mcpPath,
380
- };
381
- }
382
-
383
- const existing =
384
- host.mcp.configType === "yaml"
385
- ? await readYamlConfig(mcpPath)
386
- : await readJsonConfig(mcpPath);
387
- const { config, alreadyExists } = mergeServerEntry(
388
- existing,
389
- host.mcp.configKey,
390
- serverName,
391
- host.mcp.buildEntry({ serverUrl, apiKey }),
392
- );
393
- if (config !== existing) {
394
- if (host.mcp.configType === "yaml") {
395
- await writeYamlConfig(mcpPath, config);
396
- } else {
397
- await writeJsonConfig(mcpPath, config);
398
- }
399
- }
270
+ export function buildSetupModePromptConfig() {
400
271
  return {
401
- host: host.displayName,
402
- status: alreadyExists ? "already configured" : "configured with API Key",
403
- filePath: mcpPath,
272
+ message: "How should your agent access Flywheel?",
273
+ choices: [
274
+ {
275
+ name: `MCP + bundled skills\n ${pc.dim("Agent calls Flywheel tools via MCP protocol to manage nodes, artifacts, and compute")}`,
276
+ value: "mcp",
277
+ },
278
+ {
279
+ name: `CLI + bundled skills\n ${pc.dim("Agent shells out to the flywheel binary to manage nodes, artifacts, and compute")}`,
280
+ value: "cli",
281
+ },
282
+ ],
283
+ default: "mcp",
284
+ theme: CHECKBOX_THEME,
404
285
  };
405
286
  }
406
287
 
407
- function printSetupResults(
408
- results,
409
- scope,
410
- serverUrl,
411
- { showSkillRefreshGuidance = false, experimentalSyncAgents = [] } = {},
412
- ) {
413
- log.blank();
414
- log.plain(pc.green("✔ Flywheel setup complete"));
415
- log.blank();
416
- log.plain(` Scope: ${pc.bold(scope)}`);
417
- log.plain(` Server URL: ${pc.bold(serverUrl)}`);
418
- for (const result of results) {
419
- const icon = result.status.startsWith("configured")
420
- ? pc.green("+")
421
- : pc.dim("~");
422
- log.plain(` ${pc.bold(result.host)}`);
423
- log.plain(` ${icon} ${result.status}`);
424
- log.plain(` ${pc.dim(result.filePath)}`);
425
- }
426
- if (showSkillRefreshGuidance) {
427
- log.blank();
428
- log.plain(" Bundled skill refresh guidance");
429
- log.plain(
430
- ` Preferred: ${pc.bold("npx --yes @paradigma-inc/flywheel@latest setup --install-skill --project")}`,
431
- );
432
- log.plain(
433
- ` ${pc.bold("npm install --save-dev @paradigma-inc/flywheel@latest")}`,
434
- );
435
- if (experimentalSyncAgents.length === 1) {
436
- log.plain(" Optional path via skills experimental_sync:");
437
- log.plain(
438
- ` ${pc.bold(`npx skills experimental_sync --agent ${experimentalSyncAgents[0]} -y`)}`,
439
- );
440
- } else if (experimentalSyncAgents.length > 1) {
441
- log.plain(" Optional path via skills experimental_sync for selected hosts:");
442
- for (const agentName of experimentalSyncAgents) {
443
- log.plain(
444
- ` ${pc.bold(`npx skills experimental_sync --agent ${agentName} -y`)}`,
445
- );
446
- }
447
- }
448
- }
449
- log.blank();
288
+ async function promptSetupMode() {
289
+ return await select(buildSetupModePromptConfig());
450
290
  }
451
291
 
452
- function resolveExperimentalSyncAgentsForHosts(supportedHosts) {
453
- const agentNames = [];
454
- const seenAgentNames = new Set();
455
-
456
- for (const hostName of supportedHosts) {
457
- const agentName = resolveSkillsAgentName(hostName);
458
- if (seenAgentNames.has(agentName)) {
459
- continue;
460
- }
461
- seenAgentNames.add(agentName);
462
- agentNames.push(agentName);
463
- }
464
-
465
- return agentNames;
466
- }
467
-
468
- async function promptGuidedSkillInstall(
469
- bundledSkillNames,
470
- unsupportedHosts,
471
- guidedDecisionOverride = "",
472
- ) {
473
- if (guidedDecisionOverride === "accept") {
474
- return true;
475
- }
476
- if (
477
- guidedDecisionOverride === "decline" ||
478
- guidedDecisionOverride === "abort"
479
- ) {
480
- return false;
481
- }
482
-
483
- const message = buildGuidedSkillInstallPrompt({
484
- unsupportedHosts,
485
- bundledSkillNames,
486
- });
487
-
488
- try {
489
- return await confirm({
490
- message,
491
- default: true,
492
- theme: CHECKBOX_THEME,
493
- });
494
- } catch {
495
- return false;
496
- }
497
- }
498
-
499
- export function buildGuidedSkillInstallPrompt({
500
- unsupportedHosts,
501
- bundledSkillNames,
502
- }) {
503
- const usesPlural = bundledSkillNames.length > 1;
504
- if (unsupportedHosts.length > 0) {
505
- return usesPlural
506
- ? `Also install or refresh the bundled Flywheel skills for supported hosts? Unsupported hosts (${unsupportedHosts.join(", ")}) will remain MCP-only.`
507
- : `Also install or refresh the bundled Flywheel skill for supported hosts? Unsupported hosts (${unsupportedHosts.join(", ")}) will remain MCP-only.`;
508
- }
509
- return usesPlural
510
- ? "Also install or refresh the bundled Flywheel skills?"
511
- : "Also install or refresh the bundled Flywheel skill?";
512
- }
513
-
514
- function logBundledSkillInstallPlan({
515
- bundledSkillNames,
516
- projectRoot,
517
- scope,
518
- supportedHosts,
519
- }) {
520
- for (const hostName of supportedHosts) {
521
- const hostDisplayName = getHost(hostName).displayName;
522
- const resolvedSkillRoot = path.dirname(
523
- resolveInstalledSkillDir(
524
- projectRoot,
525
- hostName,
526
- scope,
527
- bundledSkillNames[0],
528
- ),
529
- );
530
- log.plain(
531
- `Installing bundled skills for ${hostDisplayName} (${scope}: ${resolvedSkillRoot}): ${bundledSkillNames.join(", ")}`,
532
- );
533
- }
534
- }
535
-
536
- function normalizeSkillDecisionMode(options) {
292
+ function validateCliModeSkillFlags(options) {
537
293
  if (options.installSkill && options.skipSkill) {
538
- throw new Error(MUTUALLY_EXCLUSIVE_SKILL_FLAGS_ERROR);
294
+ throw new SetupModeUsageError(
295
+ "--install-skill and --skip-skill cannot be used together.",
296
+ );
539
297
  }
540
- if (options.installSkill) return "install";
541
- if (options.skipSkill) return "skip";
542
- return "guided";
543
- }
544
-
545
- async function discardInstallSkillCleanupState(cleanupState) {
546
- if (!cleanupState?.backupRoot) {
547
- return null;
298
+ // CLI mode is intentionally "skills only", so --skip-skill would contradict
299
+ // the mode contract and silently surprising behavior should be rejected.
300
+ if (options.skipSkill) {
301
+ throw new SetupModeUsageError(
302
+ "--skip-skill is not supported with --mode cli; use --mode mcp --skip-skill for MCP-only setup.",
303
+ );
548
304
  }
549
- await rm(cleanupState.backupRoot, { force: true, recursive: true });
550
- return null;
551
305
  }
552
306
 
553
- async function runSetupCommand(options) {
554
- const projectRoot = process.cwd();
555
- const skillDecisionMode = normalizeSkillDecisionMode(options);
556
- const guidedSkillDecisionOverride = getGuidedSkillDecisionOverrideForTests();
557
- const nonInteractive = process.stdout.isTTY !== true;
558
- const hasGuidedDecisionOverride = guidedSkillDecisionOverride.length > 0;
559
- if (
560
- nonInteractive &&
561
- skillDecisionMode === "guided" &&
562
- !hasGuidedDecisionOverride
563
- ) {
564
- throw new Error(NON_INTERACTIVE_SKILL_DECISION_ERROR);
565
- }
566
-
307
+ async function runCliModeCommand(options) {
308
+ validateCliModeSkillFlags(options);
567
309
  const scope = options.project ? "project" : "global";
568
310
  const baseUrl = normalizeBaseUrl(options.baseUrl || DEFAULT_BASE_URL);
569
311
  const serverUrl = `${baseUrl}/mcp-server`;
570
312
  const serverName = normalizeServerName(options.name || SERVER_NAME);
571
- const hosts = await resolveHosts(
572
- options,
573
- scope,
574
- serverName,
575
- skillDecisionMode === "guided",
576
- );
577
- if (hosts.length === 0) return;
578
-
579
- const { supportedHosts, unsupportedHosts } =
580
- partitionInstallSkillHosts(hosts);
581
- const packageRoot = resolvePackageRoot();
582
- const bundledSkillNames =
583
- skillDecisionMode === "skip" || supportedHosts.length === 0
584
- ? []
585
- : await listBundledSkills(packageRoot);
586
-
587
- if (skillDecisionMode === "install" && supportedHosts.length === 0) {
588
- throw new Error(
589
- `--install-skill is not supported for: ${unsupportedHosts.join(", ")}. Supported hosts: ${formatSupportedInstallSkillHosts()}.`,
590
- );
591
- }
592
- if (
593
- skillDecisionMode !== "skip" &&
594
- supportedHosts.length > 0 &&
595
- bundledSkillNames.length === 0
596
- ) {
597
- throw new Error(`No bundled skills found under ${path.join(packageRoot, "skills")}.`);
313
+ const hosts = await resolveHosts(options, scope, serverName, {
314
+ allowPrompt: true,
315
+ // CLI mode is a skills refresh/install path, so existing MCP wiring should
316
+ // not make hosts ineligible for selection.
317
+ disableAlreadyConfigured: false,
318
+ });
319
+ if (hosts.length === 0) {
320
+ return { exitCode: 0 };
598
321
  }
599
322
 
600
- const {
601
- hostStates = new Map(),
602
- needsSetupHosts = [],
603
- driftHosts = [],
604
- } = await inspectInstallSkillHosts({
605
- hostNames: hosts,
323
+ const result = await runCliSetupMode({
324
+ selectedHosts: hosts,
606
325
  scope,
326
+ cwd: process.cwd(),
327
+ force: options.force === true,
328
+ apiKey: options.apiKey,
329
+ authMode: options.authMode,
330
+ baseUrl,
607
331
  serverName,
608
332
  serverUrl,
609
- });
610
-
611
- const installDriftHosts = driftHosts;
612
-
613
- if (skillDecisionMode === "install" && installDriftHosts.length > 0) {
614
- throw new Error(
615
- formatInstallSkillDriftError({
616
- hostName: installDriftHosts[0].hostName,
617
- scope,
618
- serverName,
619
- existingUrl: installDriftHosts[0].existingUrl,
620
- requestedUrl: serverUrl,
621
- }),
622
- );
623
- }
624
-
625
- let cleanupState = null;
626
- try {
627
- if (skillDecisionMode === "install") {
628
- logBundledSkillInstallPlan({
629
- bundledSkillNames,
630
- projectRoot,
631
- scope,
632
- supportedHosts,
633
- });
634
- cleanupState = await inspectInstalledSkillArtifactsForHosts({
635
- projectRoot,
636
- hostNames: supportedHosts,
637
- scope,
638
- skillNames: bundledSkillNames,
639
- });
640
- await installBundledSkillForHosts({
641
- projectRoot,
642
- hostNames: supportedHosts,
643
- scope,
644
- serverName,
645
- serverUrl,
646
- skillNames: bundledSkillNames,
647
- });
648
- if (unsupportedHosts.length > 0) {
649
- log.plain(
650
- `--install-skill skipped unsupported hosts (MCP-only): ${unsupportedHosts.join(", ")}.`,
651
- );
652
- }
653
- }
654
-
655
- const hostsNeedingSetup = needsSetupHosts;
656
- let apiKey = null;
657
- if (hostsNeedingSetup.length > 0) {
658
- apiKey = await resolveApiKey(options, baseUrl);
659
- if (!apiKey) {
660
- if (cleanupState) {
661
- await cleanupInstalledSkillArtifactsForHosts({
662
- projectRoot,
663
- hostNames: supportedHosts,
664
- priorState: cleanupState,
665
- scope,
666
- skillNames: bundledSkillNames,
667
- });
668
- cleanupState = null;
669
- }
670
- log.warn("Setup cancelled");
671
- return;
672
- }
673
- }
674
-
675
- let setupResults = [];
676
- const spinner = ora("Setting up Flywheel MCP...").start();
677
- try {
678
- const results = [];
679
- for (const hostName of hosts) {
680
- if (!needsSetupHosts.includes(hostName)) {
681
- results.push({
682
- host: getHost(hostName).displayName,
683
- status: "already configured",
684
- filePath: hostStates.get(hostName).mcpPath,
685
- });
686
- continue;
687
- }
688
-
689
- spinner.text = `Setting up ${getHost(hostName).displayName}...`;
333
+ reconcilePriorMode: async ({ hostNames, serverNames }) => {
334
+ // Uninstall each detected server name so renamed/drifted Flywheel MCP
335
+ // entries are actually removed. When the detector found no explicit
336
+ // names (prior CLI artifacts case), fall back to the current request's
337
+ // --name so the skill cleanup path still runs.
338
+ const targetNames =
339
+ Array.isArray(serverNames) && serverNames.length > 0
340
+ ? serverNames
341
+ : [serverName];
342
+ for (const targetName of targetNames) {
690
343
  // eslint-disable-next-line no-await-in-loop
691
- results.push(
692
- await setupHost(hostName, scope, serverUrl, apiKey, serverName),
344
+ await runUninstallCommand(
345
+ buildUninstallOptionsForHosts({
346
+ hostNames,
347
+ scope,
348
+ serverName: targetName,
349
+ }),
693
350
  );
694
351
  }
695
- spinner.succeed("MCP setup complete");
696
- setupResults = results;
697
- } catch (error) {
698
- spinner.fail("Setup failed");
699
- throw error;
700
- }
701
-
702
- if (skillDecisionMode !== "guided") {
703
- const completedCleanupState = cleanupState;
704
- cleanupState = null;
705
- await discardInstallSkillCleanupState(completedCleanupState);
706
- const showSkillRefreshGuidance =
707
- scope === "project" &&
708
- skillDecisionMode === "install" &&
709
- supportedHosts.length > 0;
710
- printSetupResults(
711
- setupResults,
712
- scope,
713
- serverUrl,
714
- {
715
- showSkillRefreshGuidance,
716
- experimentalSyncAgents: showSkillRefreshGuidance
717
- ? resolveExperimentalSyncAgentsForHosts(supportedHosts)
718
- : [],
719
- },
720
- );
721
- return;
722
- }
352
+ },
353
+ });
723
354
 
724
- if (supportedHosts.length === 0) {
725
- log.plain(
726
- `Bundled skill installation is unavailable for the selected hosts (${hosts.join(", ")}). Continuing with MCP-only setup.`,
727
- );
728
- printSetupResults(setupResults, scope, serverUrl);
729
- return;
730
- }
355
+ const lines = renderSetupSummary(result);
356
+ log.blank();
357
+ for (const line of lines) {
358
+ log.plain(` ${line}`);
359
+ }
360
+ log.blank();
731
361
 
732
- const shouldInstallSkill = await promptGuidedSkillInstall(
733
- bundledSkillNames,
734
- unsupportedHosts,
735
- guidedSkillDecisionOverride,
362
+ if (result.exitCode !== 0) {
363
+ const failureDetails = result.agentResults
364
+ .filter((agentResult) => agentResult.success !== true)
365
+ .flatMap((agentResult) =>
366
+ Array.isArray(agentResult.warnings) ? agentResult.warnings : [],
367
+ )
368
+ .join(" | ");
369
+ const error = new Error(
370
+ failureDetails.length > 0
371
+ ? `CLI setup encountered host-level failures: ${failureDetails}`
372
+ : "CLI setup encountered host-level failures.",
736
373
  );
737
- if (!shouldInstallSkill) {
738
- printSetupResults(setupResults, scope, serverUrl);
739
- return;
740
- }
741
-
742
- if (installDriftHosts.length > 0) {
743
- throw new Error(
744
- formatInstallSkillDriftError({
745
- hostName: installDriftHosts[0].hostName,
746
- scope,
747
- serverName,
748
- existingUrl: installDriftHosts[0].existingUrl,
749
- requestedUrl: serverUrl,
750
- }),
751
- );
752
- }
753
-
754
- logBundledSkillInstallPlan({
755
- bundledSkillNames,
756
- projectRoot,
757
- scope,
758
- supportedHosts,
759
- });
760
- cleanupState = await inspectInstalledSkillArtifactsForHosts({
761
- projectRoot,
762
- hostNames: supportedHosts,
763
- scope,
764
- skillNames: bundledSkillNames,
765
- });
766
- await installBundledSkillForHosts({
767
- projectRoot,
768
- hostNames: supportedHosts,
769
- scope,
770
- serverName,
771
- serverUrl,
772
- skillNames: bundledSkillNames,
773
- });
774
- if (unsupportedHosts.length > 0) {
775
- log.plain(
776
- `Guided skill install skipped unsupported hosts (MCP-only): ${unsupportedHosts.join(", ")}.`,
777
- );
778
- }
779
- const completedCleanupState = cleanupState;
780
- cleanupState = null;
781
- await discardInstallSkillCleanupState(completedCleanupState);
782
- const showSkillRefreshGuidance =
783
- scope === "project" && supportedHosts.length > 0;
784
- printSetupResults(setupResults, scope, serverUrl, {
785
- showSkillRefreshGuidance,
786
- experimentalSyncAgents: showSkillRefreshGuidance
787
- ? resolveExperimentalSyncAgentsForHosts(supportedHosts)
788
- : [],
789
- });
790
- } catch (error) {
791
- if (cleanupState) {
792
- await cleanupInstalledSkillArtifactsForHosts({
793
- projectRoot,
794
- hostNames: supportedHosts,
795
- priorState: cleanupState,
796
- scope,
797
- skillNames: bundledSkillNames,
798
- });
799
- }
374
+ error.exitCode = result.exitCode;
800
375
  throw error;
801
376
  }
377
+
378
+ return result;
379
+ }
380
+
381
+ async function runSetupCommandViaRouter(options) {
382
+ return await runSetupRouter(options, {
383
+ isInteractive: process.stdin.isTTY === true && process.stdout.isTTY === true,
384
+ promptMode: promptSetupMode,
385
+ runMcpMode: async () =>
386
+ await runMcpModeCommand(options, {
387
+ force: options.force === true,
388
+ reconcilePriorMode: async ({
389
+ hostNames,
390
+ serverNames,
391
+ scope: reconcileScope,
392
+ serverName: requestedServerName,
393
+ }) => {
394
+ // Prior CLI artifacts have no MCP entry name, so fall back to the
395
+ // current request's --name for the skill uninstall path. Prior MCP
396
+ // entries may carry drifted names; uninstall each detected name so
397
+ // the reconcile actually removes what we detected.
398
+ const targetNames =
399
+ Array.isArray(serverNames) && serverNames.length > 0
400
+ ? serverNames
401
+ : [requestedServerName];
402
+ for (const targetName of targetNames) {
403
+ // eslint-disable-next-line no-await-in-loop
404
+ await runUninstallCommand(
405
+ buildUninstallOptionsForHosts({
406
+ hostNames,
407
+ scope: reconcileScope,
408
+ serverName: targetName,
409
+ }),
410
+ );
411
+ }
412
+ },
413
+ }),
414
+ runCliMode: async () => await runCliModeCommand(options),
415
+ });
802
416
  }
803
417
 
804
418
  function parseUninstallScope(value) {
@@ -919,16 +533,47 @@ async function resolveHostsWithRemainingFlywheelMcpEntries({ scope }) {
919
533
  return remainingHosts;
920
534
  }
921
535
 
922
- async function isConfiguredForUninstallScope(hostName, scope, serverName) {
536
+ async function findFlywheelServerNamesOnHost(hostName, scope) {
537
+ // Mirror setup's prior-mode detector: walk every MCP entry on the host and
538
+ // keep those whose URL is Flywheel-identifying (hostname contains "flywheel"
539
+ // or path === /mcp-server with a matching target origin). Uninstall must
540
+ // catch renamed/drifted entries (e.g. `[mcp_servers.flywheel-staging]`) that
541
+ // setup already detects; otherwise a user whose host has a non-default entry
542
+ // name is stuck between setup ("already installed") and uninstall ("not
543
+ // configured").
544
+ return await findFlywheelMcpEntryNames({ hostName, scope }).catch(() => []);
545
+ }
546
+
547
+ async function resolveUninstallServerNamesForHost(
548
+ hostName,
549
+ scope,
550
+ { explicitServerName },
551
+ ) {
552
+ if (explicitServerName) {
553
+ const configured = await isAlreadyConfigured(
554
+ hostName,
555
+ scope,
556
+ explicitServerName,
557
+ ).catch(() => false);
558
+ return configured ? [explicitServerName] : [];
559
+ }
560
+ return await findFlywheelServerNamesOnHost(hostName, scope);
561
+ }
562
+
563
+ async function isConfiguredForUninstallScope(
564
+ hostName,
565
+ scope,
566
+ { explicitServerName },
567
+ ) {
923
568
  const scopes = scopesFromUninstallScope(scope);
924
569
  for (const singleScope of scopes) {
925
570
  // eslint-disable-next-line no-await-in-loop
926
- const configured = await isAlreadyConfigured(
571
+ const targets = await resolveUninstallServerNamesForHost(
927
572
  hostName,
928
573
  singleScope,
929
- serverName,
930
- ).catch(() => false);
931
- if (configured) return true;
574
+ { explicitServerName },
575
+ );
576
+ if (targets.length > 0) return true;
932
577
  }
933
578
  return false;
934
579
  }
@@ -950,14 +595,12 @@ async function promptUninstallScope(defaultScope) {
950
595
  }
951
596
  }
952
597
 
953
- async function promptUninstallHosts(scope, serverName) {
598
+ async function promptUninstallHosts(scope, { explicitServerName }) {
954
599
  const choices = await Promise.all(
955
600
  ALL_HOST_NAMES.map(async (hostName) => {
956
- const configured = await isConfiguredForUninstallScope(
957
- hostName,
958
- scope,
959
- serverName,
960
- );
601
+ const configured = await isConfiguredForUninstallScope(hostName, scope, {
602
+ explicitServerName,
603
+ });
961
604
  return {
962
605
  name: SETUP_HOST_NAMES[hostName],
963
606
  value: hostName,
@@ -986,7 +629,7 @@ async function promptUninstallHosts(scope, serverName) {
986
629
  }
987
630
  }
988
631
 
989
- async function resolveUninstallTargets(options, serverName) {
632
+ async function resolveUninstallTargets(options, { explicitServerName }) {
990
633
  const explicitHostsFromFlags = selectedHostsFromOptions(options);
991
634
  const explicitHostsFromList =
992
635
  explicitHostsFromFlags.length === 0 ? parseHostsList(options.hosts) : [];
@@ -1015,7 +658,9 @@ async function resolveUninstallTargets(options, serverName) {
1015
658
  }
1016
659
 
1017
660
  if (!hasExplicitHosts) {
1018
- const selectedHosts = await promptUninstallHosts(scope, serverName);
661
+ const selectedHosts = await promptUninstallHosts(scope, {
662
+ explicitServerName,
663
+ });
1019
664
  if (!selectedHosts) {
1020
665
  log.warn("Uninstall cancelled");
1021
666
  return null;
@@ -1069,8 +714,13 @@ async function removeHostConfig(hostName, scope, serverName) {
1069
714
  }
1070
715
 
1071
716
  async function runUninstallCommand(options) {
1072
- const serverName = normalizeServerName(options.name || SERVER_NAME);
1073
- const resolved = await resolveUninstallTargets(options, serverName);
717
+ const explicitServerName =
718
+ typeof options.name === "string" && options.name.trim().length > 0
719
+ ? normalizeServerName(options.name)
720
+ : null;
721
+ const resolved = await resolveUninstallTargets(options, {
722
+ explicitServerName,
723
+ });
1074
724
  if (!resolved) return;
1075
725
  const { scope, hosts } = resolved;
1076
726
  const scopes = scopesFromUninstallScope(scope);
@@ -1080,8 +730,35 @@ async function runUninstallCommand(options) {
1080
730
  for (const singleScope of scopes) {
1081
731
  for (const host of hosts) {
1082
732
  mcpSpinner.text = `Removing from ${getHost(host).displayName} (${singleScope})...`;
733
+ // Resolve the concrete server name(s) to remove at the host/scope level.
734
+ // When --name was not given, this iterates every Flywheel-identifying
735
+ // entry (matching setup's prior-mode detector) so renamed or drifted
736
+ // entries (e.g. `[mcp_servers.flywheel-staging]`) are actually cleared.
1083
737
  // eslint-disable-next-line no-await-in-loop
1084
- mcpResults.push(await removeHostConfig(host, singleScope, serverName));
738
+ const targetNames = await resolveUninstallServerNamesForHost(
739
+ host,
740
+ singleScope,
741
+ { explicitServerName },
742
+ );
743
+ if (targetNames.length === 0) {
744
+ // eslint-disable-next-line no-await-in-loop
745
+ const hostForDisplay = getHost(host);
746
+ // eslint-disable-next-line no-await-in-loop
747
+ const filePath = await resolveMcpPath(
748
+ mcpCandidatesForScope(hostForDisplay, singleScope),
749
+ );
750
+ mcpResults.push({
751
+ host: hostForDisplay.displayName,
752
+ scope: singleScope,
753
+ filePath,
754
+ status: "not present",
755
+ });
756
+ continue;
757
+ }
758
+ for (const targetName of targetNames) {
759
+ // eslint-disable-next-line no-await-in-loop
760
+ mcpResults.push(await removeHostConfig(host, singleScope, targetName));
761
+ }
1085
762
  }
1086
763
  }
1087
764
  mcpSpinner.succeed("MCP uninstall complete");
@@ -1199,12 +876,12 @@ function buildProgram() {
1199
876
  "after",
1200
877
  `
1201
878
  Examples:
1202
- ${pc.green("npx --yes @paradigma-inc/flywheel setup")}
1203
- ${pc.green("npx --yes @paradigma-inc/flywheel setup --install-skill")}
1204
- ${pc.green("npx --yes @paradigma-inc/flywheel setup --skip-skill")}
1205
- ${pc.green("npx --yes @paradigma-inc/flywheel setup --auth-mode device --codex --project")}
1206
- ${pc.green("npx --yes @paradigma-inc/flywheel setup --codex --project")}
1207
- ${pc.green("npx --yes @paradigma-inc/flywheel setup --yes --codex --claude --cursor")}
879
+ ${pc.green("npx --yes @paradigma-inc/flywheel setup --mode mcp")}
880
+ ${pc.green("npx --yes @paradigma-inc/flywheel setup --mode mcp --install-skill")}
881
+ ${pc.green("npx --yes @paradigma-inc/flywheel setup --mode mcp --skip-skill")}
882
+ ${pc.green("npx --yes @paradigma-inc/flywheel setup --mode mcp --auth-mode device --codex --project")}
883
+ ${pc.green("npx --yes @paradigma-inc/flywheel setup --mode cli --codex --project")}
884
+ ${pc.green("npx --yes @paradigma-inc/flywheel setup --mode mcp --yes --codex --claude --cursor")}
1208
885
  ${pc.green(
1209
886
  "npx --yes @paradigma-inc/flywheel uninstall --scope all --hosts codex,claude,opencode,cursor,pi-mono,hermes-agent,openclaw",
1210
887
  )}
@@ -1214,6 +891,14 @@ Examples:
1214
891
  program
1215
892
  .command("setup")
1216
893
  .description("Set up Flywheel for your AI coding host")
894
+ .option(
895
+ "--mode <mode>",
896
+ "Install mode: mcp | cli (required in non-interactive; prompted in TTY, default: mcp)",
897
+ collectModeValues,
898
+ [],
899
+ )
900
+ .option("--mcp", "Alias for --mode mcp")
901
+ .option("--cli", "Alias for --mode cli")
1217
902
  .option("--claude", "Set up for Claude Code")
1218
903
  .option("--opencode", "Set up for OpenCode")
1219
904
  .option("--codex", "Set up for Codex")
@@ -1226,6 +911,7 @@ Examples:
1226
911
  "Configure for current project instead of globally",
1227
912
  )
1228
913
  .option("-y, --yes", "Skip host selection prompts")
914
+ .option("--force", "Reconcile prior install mode automatically via uninstall")
1229
915
  .option("--api-key <key>", "Use API key authentication")
1230
916
  .option(
1231
917
  "--auth-mode <mode>",
@@ -1241,7 +927,7 @@ Examples:
1241
927
  )
1242
928
  .option("--name <name>", `MCP server name (default: ${SERVER_NAME})`)
1243
929
  .action(async (options) => {
1244
- await runSetupCommand(options);
930
+ await runSetupCommandViaRouter(options);
1245
931
  });
1246
932
 
1247
933
  program