@posthog/wizard 1.36.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. package/README.md +80 -3
  2. package/dist/bin.js +200 -24
  3. package/dist/bin.js.map +1 -1
  4. package/dist/src/__tests__/cli.test.js +10 -74
  5. package/dist/src/__tests__/cli.test.js.map +1 -1
  6. package/dist/src/__tests__/run.test.js +50 -5
  7. package/dist/src/__tests__/run.test.js.map +1 -1
  8. package/dist/src/__tests__/wizard-abort.test.js +127 -0
  9. package/dist/src/__tests__/wizard-abort.test.js.map +1 -0
  10. package/dist/src/{android → frameworks/android}/android-wizard-agent.d.ts +1 -1
  11. package/dist/src/{android → frameworks/android}/android-wizard-agent.js +2 -2
  12. package/dist/src/frameworks/android/android-wizard-agent.js.map +1 -0
  13. package/dist/src/{android → frameworks/android}/utils.d.ts +1 -1
  14. package/dist/src/{android → frameworks/android}/utils.js +1 -1
  15. package/dist/src/frameworks/android/utils.js.map +1 -0
  16. package/dist/src/{angular → frameworks/angular}/angular-wizard-agent.d.ts +1 -1
  17. package/dist/src/{angular → frameworks/angular}/angular-wizard-agent.js +9 -7
  18. package/dist/src/frameworks/angular/angular-wizard-agent.js.map +1 -0
  19. package/dist/src/{angular → frameworks/angular}/utils.js +1 -1
  20. package/dist/src/frameworks/angular/utils.js.map +1 -0
  21. package/dist/src/{astro → frameworks/astro}/astro-wizard-agent.d.ts +1 -1
  22. package/dist/src/{astro → frameworks/astro}/astro-wizard-agent.js +9 -7
  23. package/dist/src/frameworks/astro/astro-wizard-agent.js.map +1 -0
  24. package/dist/src/{astro → frameworks/astro}/utils.d.ts +2 -5
  25. package/dist/src/{astro → frameworks/astro}/utils.js +3 -52
  26. package/dist/src/frameworks/astro/utils.js.map +1 -0
  27. package/dist/src/{django → frameworks/django}/django-wizard-agent.d.ts +1 -1
  28. package/dist/src/{django → frameworks/django}/django-wizard-agent.js +3 -3
  29. package/dist/src/frameworks/django/django-wizard-agent.js.map +1 -0
  30. package/dist/src/{django → frameworks/django}/utils.d.ts +1 -1
  31. package/dist/src/{django → frameworks/django}/utils.js +6 -6
  32. package/dist/src/frameworks/django/utils.js.map +1 -0
  33. package/dist/src/frameworks/fastapi/fastapi-wizard-agent.d.ts +5 -0
  34. package/dist/src/{fastapi → frameworks/fastapi}/fastapi-wizard-agent.js +3 -32
  35. package/dist/src/frameworks/fastapi/fastapi-wizard-agent.js.map +1 -0
  36. package/dist/src/{fastapi → frameworks/fastapi}/utils.d.ts +1 -1
  37. package/dist/src/{fastapi → frameworks/fastapi}/utils.js +4 -4
  38. package/dist/src/frameworks/fastapi/utils.js.map +1 -0
  39. package/dist/src/{flask → frameworks/flask}/flask-wizard-agent.d.ts +1 -1
  40. package/dist/src/{flask → frameworks/flask}/flask-wizard-agent.js +3 -3
  41. package/dist/src/frameworks/flask/flask-wizard-agent.js.map +1 -0
  42. package/dist/src/{flask → frameworks/flask}/utils.d.ts +1 -1
  43. package/dist/src/{flask → frameworks/flask}/utils.js +7 -7
  44. package/dist/src/frameworks/flask/utils.js.map +1 -0
  45. package/dist/src/{javascript-node → frameworks/javascript-node}/javascript-node-wizard-agent.d.ts +1 -1
  46. package/dist/src/{javascript-node → frameworks/javascript-node}/javascript-node-wizard-agent.js +4 -4
  47. package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.js.map +1 -0
  48. package/dist/src/{javascript-web → frameworks/javascript-web}/javascript-web-wizard-agent.d.ts +1 -1
  49. package/dist/src/{javascript-web → frameworks/javascript-web}/javascript-web-wizard-agent.js +16 -14
  50. package/dist/src/frameworks/javascript-web/javascript-web-wizard-agent.js.map +1 -0
  51. package/dist/src/{javascript-web → frameworks/javascript-web}/utils.d.ts +6 -1
  52. package/dist/src/{javascript-web → frameworks/javascript-web}/utils.js +49 -1
  53. package/dist/src/frameworks/javascript-web/utils.js.map +1 -0
  54. package/dist/src/{laravel → frameworks/laravel}/laravel-wizard-agent.d.ts +1 -1
  55. package/dist/src/{laravel → frameworks/laravel}/laravel-wizard-agent.js +2 -2
  56. package/dist/src/frameworks/laravel/laravel-wizard-agent.js.map +1 -0
  57. package/dist/src/{laravel → frameworks/laravel}/utils.d.ts +1 -1
  58. package/dist/src/{laravel → frameworks/laravel}/utils.js +5 -5
  59. package/dist/src/frameworks/laravel/utils.js.map +1 -0
  60. package/dist/src/{nextjs → frameworks/nextjs}/nextjs-wizard-agent.d.ts +1 -1
  61. package/dist/src/{nextjs → frameworks/nextjs}/nextjs-wizard-agent.js +30 -8
  62. package/dist/src/frameworks/nextjs/nextjs-wizard-agent.js.map +1 -0
  63. package/dist/src/{nextjs → frameworks/nextjs}/utils.d.ts +5 -2
  64. package/dist/src/{nextjs → frameworks/nextjs}/utils.js +6 -20
  65. package/dist/src/frameworks/nextjs/utils.js.map +1 -0
  66. package/dist/src/{nuxt → frameworks/nuxt}/nuxt-wizard-agent.d.ts +1 -1
  67. package/dist/src/{nuxt → frameworks/nuxt}/nuxt-wizard-agent.js +11 -9
  68. package/dist/src/frameworks/nuxt/nuxt-wizard-agent.js.map +1 -0
  69. package/dist/src/{python → frameworks/python}/python-wizard-agent.d.ts +1 -1
  70. package/dist/src/{python → frameworks/python}/python-wizard-agent.js +3 -3
  71. package/dist/src/frameworks/python/python-wizard-agent.js.map +1 -0
  72. package/dist/src/{python → frameworks/python}/utils.d.ts +1 -1
  73. package/dist/src/frameworks/python/utils.js.map +1 -0
  74. package/dist/src/{rails → frameworks/rails}/rails-wizard-agent.d.ts +1 -1
  75. package/dist/src/{rails → frameworks/rails}/rails-wizard-agent.js +2 -2
  76. package/dist/src/frameworks/rails/rails-wizard-agent.js.map +1 -0
  77. package/dist/src/{rails → frameworks/rails}/utils.d.ts +1 -1
  78. package/dist/src/{rails → frameworks/rails}/utils.js +4 -4
  79. package/dist/src/frameworks/rails/utils.js.map +1 -0
  80. package/dist/src/{react-native → frameworks/react-native}/react-native-wizard-agent.d.ts +1 -1
  81. package/dist/src/{react-native → frameworks/react-native}/react-native-wizard-agent.js +9 -7
  82. package/dist/src/frameworks/react-native/react-native-wizard-agent.js.map +1 -0
  83. package/dist/src/{react-native → frameworks/react-native}/utils.d.ts +1 -1
  84. package/dist/src/{react-native → frameworks/react-native}/utils.js +7 -10
  85. package/dist/src/frameworks/react-native/utils.js.map +1 -0
  86. package/dist/src/{react-router → frameworks/react-router}/react-router-wizard-agent.d.ts +1 -1
  87. package/dist/src/{react-router → frameworks/react-router}/react-router-wizard-agent.js +15 -8
  88. package/dist/src/frameworks/react-router/react-router-wizard-agent.js.map +1 -0
  89. package/dist/src/frameworks/react-router/utils.d.ts +13 -0
  90. package/dist/src/{react-router → frameworks/react-router}/utils.js +14 -111
  91. package/dist/src/frameworks/react-router/utils.js.map +1 -0
  92. package/dist/src/{ruby → frameworks/ruby}/ruby-wizard-agent.d.ts +1 -1
  93. package/dist/src/{ruby → frameworks/ruby}/ruby-wizard-agent.js +2 -2
  94. package/dist/src/frameworks/ruby/ruby-wizard-agent.js.map +1 -0
  95. package/dist/src/{ruby → frameworks/ruby}/utils.d.ts +1 -1
  96. package/dist/src/{ruby → frameworks/ruby}/utils.js +1 -1
  97. package/dist/src/frameworks/ruby/utils.js.map +1 -0
  98. package/dist/src/{svelte → frameworks/svelte}/svelte-wizard-agent.d.ts +1 -1
  99. package/dist/src/{svelte → frameworks/svelte}/svelte-wizard-agent.js +5 -5
  100. package/dist/src/frameworks/svelte/svelte-wizard-agent.js.map +1 -0
  101. package/dist/src/{swift → frameworks/swift}/swift-wizard-agent.d.ts +1 -1
  102. package/dist/src/{swift → frameworks/swift}/swift-wizard-agent.js +2 -2
  103. package/dist/src/frameworks/swift/swift-wizard-agent.js.map +1 -0
  104. package/dist/src/{swift → frameworks/swift}/utils.d.ts +1 -1
  105. package/dist/src/frameworks/swift/utils.js.map +1 -0
  106. package/dist/src/{tanstack-router → frameworks/tanstack-router}/tanstack-router-wizard-agent.d.ts +1 -1
  107. package/dist/src/{tanstack-router → frameworks/tanstack-router}/tanstack-router-wizard-agent.js +15 -8
  108. package/dist/src/frameworks/tanstack-router/tanstack-router-wizard-agent.js.map +1 -0
  109. package/dist/src/frameworks/tanstack-router/utils.d.ts +11 -0
  110. package/dist/src/{tanstack-router → frameworks/tanstack-router}/utils.js +4 -47
  111. package/dist/src/frameworks/tanstack-router/utils.js.map +1 -0
  112. package/dist/src/{tanstack-start → frameworks/tanstack-start}/tanstack-start-wizard-agent.d.ts +1 -1
  113. package/dist/src/{tanstack-start → frameworks/tanstack-start}/tanstack-start-wizard-agent.js +9 -7
  114. package/dist/src/frameworks/tanstack-start/tanstack-start-wizard-agent.js.map +1 -0
  115. package/dist/src/{tanstack-start → frameworks/tanstack-start}/utils.js +1 -1
  116. package/dist/src/frameworks/tanstack-start/utils.js.map +1 -0
  117. package/dist/src/{vue → frameworks/vue}/vue-wizard-agent.d.ts +1 -1
  118. package/dist/src/{vue → frameworks/vue}/vue-wizard-agent.js +8 -8
  119. package/dist/src/frameworks/vue/vue-wizard-agent.js.map +1 -0
  120. package/dist/src/lib/__tests__/agent-interface.test.js +91 -19
  121. package/dist/src/lib/__tests__/agent-interface.test.js.map +1 -1
  122. package/dist/src/lib/agent-interface.d.ts +49 -2
  123. package/dist/src/lib/agent-interface.js +254 -40
  124. package/dist/src/lib/agent-interface.js.map +1 -1
  125. package/dist/src/lib/agent-runner.d.ts +4 -2
  126. package/dist/src/lib/agent-runner.js +131 -136
  127. package/dist/src/lib/agent-runner.js.map +1 -1
  128. package/dist/src/lib/api.d.ts +4 -4
  129. package/dist/src/lib/commandments.js +1 -0
  130. package/dist/src/lib/commandments.js.map +1 -1
  131. package/dist/src/lib/constants.d.ts +23 -8
  132. package/dist/src/lib/constants.js +36 -8
  133. package/dist/src/lib/constants.js.map +1 -1
  134. package/dist/src/lib/framework-config.d.ts +26 -0
  135. package/dist/src/lib/framework-config.js.map +1 -1
  136. package/dist/src/lib/health-checks/__tests__/health-checks.test.d.ts +18 -0
  137. package/dist/src/lib/health-checks/__tests__/health-checks.test.js +752 -0
  138. package/dist/src/lib/health-checks/__tests__/health-checks.test.js.map +1 -0
  139. package/dist/src/lib/health-checks/endpoints.d.ts +3 -0
  140. package/dist/src/lib/health-checks/endpoints.js +46 -0
  141. package/dist/src/lib/health-checks/endpoints.js.map +1 -0
  142. package/dist/src/lib/health-checks/index.d.ts +4 -0
  143. package/dist/src/lib/health-checks/index.js +23 -0
  144. package/dist/src/lib/health-checks/index.js.map +1 -0
  145. package/dist/src/lib/health-checks/readiness.d.ts +24 -0
  146. package/dist/src/lib/health-checks/readiness.js +119 -0
  147. package/dist/src/lib/health-checks/readiness.js.map +1 -0
  148. package/dist/src/lib/health-checks/statuspage.d.ts +9 -0
  149. package/dist/src/lib/health-checks/statuspage.js +105 -0
  150. package/dist/src/lib/health-checks/statuspage.js.map +1 -0
  151. package/dist/src/lib/health-checks/types.d.ts +31 -0
  152. package/dist/src/lib/health-checks/types.js +10 -0
  153. package/dist/src/lib/health-checks/types.js.map +1 -0
  154. package/dist/src/lib/middleware/benchmark.d.ts +2 -2
  155. package/dist/src/lib/middleware/benchmark.js +3 -3
  156. package/dist/src/lib/middleware/benchmark.js.map +1 -1
  157. package/dist/src/lib/middleware/benchmarks/json-writer.js +2 -2
  158. package/dist/src/lib/middleware/benchmarks/json-writer.js.map +1 -1
  159. package/dist/src/lib/middleware/benchmarks/summary.d.ts +2 -2
  160. package/dist/src/lib/middleware/benchmarks/summary.js +9 -9
  161. package/dist/src/lib/middleware/benchmarks/summary.js.map +1 -1
  162. package/dist/src/lib/middleware/types.d.ts +2 -2
  163. package/dist/src/lib/middleware/types.js.map +1 -1
  164. package/dist/src/lib/package-manager-detection.js +1 -1
  165. package/dist/src/lib/package-manager-detection.js.map +1 -1
  166. package/dist/src/lib/registry.js +21 -21
  167. package/dist/src/lib/registry.js.map +1 -1
  168. package/dist/src/lib/version.d.ts +1 -1
  169. package/dist/src/lib/version.js +1 -1
  170. package/dist/src/lib/version.js.map +1 -1
  171. package/dist/src/lib/wizard-session.d.ts +115 -0
  172. package/dist/src/lib/wizard-session.js +104 -0
  173. package/dist/src/lib/wizard-session.js.map +1 -0
  174. package/dist/src/lib/wizard-tools.js +13 -0
  175. package/dist/src/lib/wizard-tools.js.map +1 -1
  176. package/dist/src/run.d.ts +3 -3
  177. package/dist/src/run.js +73 -56
  178. package/dist/src/run.js.map +1 -1
  179. package/dist/src/steps/add-mcp-server-to-clients/MCPClient.d.ts +4 -5
  180. package/dist/src/steps/add-mcp-server-to-clients/MCPClient.js +6 -6
  181. package/dist/src/steps/add-mcp-server-to-clients/MCPClient.js.map +1 -1
  182. package/dist/src/steps/add-mcp-server-to-clients/__tests__/defaults.test.js +1 -21
  183. package/dist/src/steps/add-mcp-server-to-clients/__tests__/defaults.test.js.map +1 -1
  184. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/claude.test.js +2 -7
  185. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/claude.test.js.map +1 -1
  186. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/codex.test.js +18 -22
  187. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/codex.test.js.map +1 -1
  188. package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.d.ts +7 -8
  189. package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.js +2 -2
  190. package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.js.map +1 -1
  191. package/dist/src/steps/add-mcp-server-to-clients/clients/claude.d.ts +6 -6
  192. package/dist/src/steps/add-mcp-server-to-clients/clients/codex.d.ts +7 -8
  193. package/dist/src/steps/add-mcp-server-to-clients/clients/codex.js +9 -10
  194. package/dist/src/steps/add-mcp-server-to-clients/clients/codex.js.map +1 -1
  195. package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.d.ts +8 -9
  196. package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.js +4 -4
  197. package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.js.map +1 -1
  198. package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.d.ts +8 -9
  199. package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.js +4 -4
  200. package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.js.map +1 -1
  201. package/dist/src/steps/add-mcp-server-to-clients/clients/zed.d.ts +8 -9
  202. package/dist/src/steps/add-mcp-server-to-clients/clients/zed.js +4 -4
  203. package/dist/src/steps/add-mcp-server-to-clients/clients/zed.js.map +1 -1
  204. package/dist/src/steps/add-mcp-server-to-clients/defaults.d.ts +9 -10
  205. package/dist/src/steps/add-mcp-server-to-clients/defaults.js +6 -13
  206. package/dist/src/steps/add-mcp-server-to-clients/defaults.js.map +1 -1
  207. package/dist/src/steps/add-mcp-server-to-clients/index.d.ts +6 -5
  208. package/dist/src/steps/add-mcp-server-to-clients/index.js +26 -110
  209. package/dist/src/steps/add-mcp-server-to-clients/index.js.map +1 -1
  210. package/dist/src/steps/add-or-update-environment-variables.js +15 -20
  211. package/dist/src/steps/add-or-update-environment-variables.js.map +1 -1
  212. package/dist/src/steps/index.d.ts +0 -1
  213. package/dist/src/steps/index.js +0 -1
  214. package/dist/src/steps/index.js.map +1 -1
  215. package/dist/src/steps/run-prettier.js +9 -11
  216. package/dist/src/steps/run-prettier.js.map +1 -1
  217. package/dist/src/steps/upload-environment-variables/EnvironmentProvider.d.ts +6 -3
  218. package/dist/src/steps/upload-environment-variables/EnvironmentProvider.js.map +1 -1
  219. package/dist/src/steps/upload-environment-variables/index.d.ts +3 -3
  220. package/dist/src/steps/upload-environment-variables/index.js +7 -35
  221. package/dist/src/steps/upload-environment-variables/index.js.map +1 -1
  222. package/dist/src/steps/upload-environment-variables/providers/vercel.d.ts +3 -2
  223. package/dist/src/steps/upload-environment-variables/providers/vercel.js +2 -2
  224. package/dist/src/steps/upload-environment-variables/providers/vercel.js.map +1 -1
  225. package/dist/src/ui/index.d.ts +8 -0
  226. package/dist/src/ui/index.js +17 -0
  227. package/dist/src/ui/index.js.map +1 -0
  228. package/dist/src/ui/logging-ui.d.ts +44 -0
  229. package/dist/src/ui/logging-ui.js +103 -0
  230. package/dist/src/ui/logging-ui.js.map +1 -0
  231. package/dist/src/ui/tui/App.d.ts +6 -0
  232. package/dist/src/ui/tui/App.js +10 -0
  233. package/dist/src/ui/tui/App.js.map +1 -0
  234. package/dist/src/ui/tui/__tests__/layout-helpers.test.js +68 -0
  235. package/dist/src/ui/tui/__tests__/layout-helpers.test.js.map +1 -0
  236. package/dist/src/ui/tui/__tests__/store.test.d.ts +1 -0
  237. package/dist/src/ui/tui/__tests__/store.test.js +723 -0
  238. package/dist/src/ui/tui/__tests__/store.test.js.map +1 -0
  239. package/dist/src/ui/tui/components/LearnCard.d.ts +10 -0
  240. package/dist/src/ui/tui/components/LearnCard.js +217 -0
  241. package/dist/src/ui/tui/components/LearnCard.js.map +1 -0
  242. package/dist/src/ui/tui/components/TipsCard.d.ts +9 -0
  243. package/dist/src/ui/tui/components/TipsCard.js +55 -0
  244. package/dist/src/ui/tui/components/TipsCard.js.map +1 -0
  245. package/dist/src/ui/tui/components/TitleBar.d.ts +6 -0
  246. package/dist/src/ui/tui/components/TitleBar.js +17 -0
  247. package/dist/src/ui/tui/components/TitleBar.js.map +1 -0
  248. package/dist/src/ui/tui/flows.d.ts +38 -0
  249. package/dist/src/ui/tui/flows.js +82 -0
  250. package/dist/src/ui/tui/flows.js.map +1 -0
  251. package/dist/src/ui/tui/hooks/useStdoutDimensions.d.ts +9 -0
  252. package/dist/src/ui/tui/hooks/useStdoutDimensions.js +37 -0
  253. package/dist/src/ui/tui/hooks/useStdoutDimensions.js.map +1 -0
  254. package/dist/src/ui/tui/ink-ui.d.ts +50 -0
  255. package/dist/src/ui/tui/ink-ui.js +108 -0
  256. package/dist/src/ui/tui/ink-ui.js.map +1 -0
  257. package/dist/src/ui/tui/package.json +1 -0
  258. package/dist/src/ui/tui/playground/PlaygroundApp.d.ts +12 -0
  259. package/dist/src/ui/tui/playground/PlaygroundApp.js +32 -0
  260. package/dist/src/ui/tui/playground/PlaygroundApp.js.map +1 -0
  261. package/dist/src/ui/tui/playground/demos/InputDemo.d.ts +4 -0
  262. package/dist/src/ui/tui/playground/demos/InputDemo.js +53 -0
  263. package/dist/src/ui/tui/playground/demos/InputDemo.js.map +1 -0
  264. package/dist/src/ui/tui/playground/demos/LayoutDemo.d.ts +5 -0
  265. package/dist/src/ui/tui/playground/demos/LayoutDemo.js +25 -0
  266. package/dist/src/ui/tui/playground/demos/LayoutDemo.js.map +1 -0
  267. package/dist/src/ui/tui/playground/demos/LogDemo.d.ts +5 -0
  268. package/dist/src/ui/tui/playground/demos/LogDemo.js +53 -0
  269. package/dist/src/ui/tui/playground/demos/LogDemo.js.map +1 -0
  270. package/dist/src/ui/tui/playground/demos/ProgressDemo.d.ts +5 -0
  271. package/dist/src/ui/tui/playground/demos/ProgressDemo.js +58 -0
  272. package/dist/src/ui/tui/playground/demos/ProgressDemo.js.map +1 -0
  273. package/dist/src/ui/tui/playground/demos/RunScreenDemo.d.ts +11 -0
  274. package/dist/src/ui/tui/playground/demos/RunScreenDemo.js +159 -0
  275. package/dist/src/ui/tui/playground/demos/RunScreenDemo.js.map +1 -0
  276. package/dist/src/ui/tui/playground/demos/WelcomeDemo.d.ts +9 -0
  277. package/dist/src/ui/tui/playground/demos/WelcomeDemo.js +15 -0
  278. package/dist/src/ui/tui/playground/demos/WelcomeDemo.js.map +1 -0
  279. package/dist/src/ui/tui/playground/start-playground.d.ts +4 -0
  280. package/dist/src/ui/tui/playground/start-playground.js +24 -0
  281. package/dist/src/ui/tui/playground/start-playground.js.map +1 -0
  282. package/dist/src/ui/tui/primitives/CardLayout.d.ts +12 -0
  283. package/dist/src/ui/tui/primitives/CardLayout.js +10 -0
  284. package/dist/src/ui/tui/primitives/CardLayout.js.map +1 -0
  285. package/dist/src/ui/tui/primitives/ConfirmationInput.d.ts +13 -0
  286. package/dist/src/ui/tui/primitives/ConfirmationInput.js +35 -0
  287. package/dist/src/ui/tui/primitives/ConfirmationInput.js.map +1 -0
  288. package/dist/src/ui/tui/primitives/ContentSequencer.d.ts +42 -0
  289. package/dist/src/ui/tui/primitives/ContentSequencer.js +137 -0
  290. package/dist/src/ui/tui/primitives/ContentSequencer.js.map +1 -0
  291. package/dist/src/ui/tui/primitives/DissolveTransition.d.ts +21 -0
  292. package/dist/src/ui/tui/primitives/DissolveTransition.js +149 -0
  293. package/dist/src/ui/tui/primitives/DissolveTransition.js.map +1 -0
  294. package/dist/src/ui/tui/primitives/EventPlanViewer.d.ts +9 -0
  295. package/dist/src/ui/tui/primitives/EventPlanViewer.js +9 -0
  296. package/dist/src/ui/tui/primitives/EventPlanViewer.js.map +1 -0
  297. package/dist/src/ui/tui/primitives/HNViewer.d.ts +7 -0
  298. package/dist/src/ui/tui/primitives/HNViewer.js +63 -0
  299. package/dist/src/ui/tui/primitives/HNViewer.js.map +1 -0
  300. package/dist/src/ui/tui/primitives/LinesBlock.d.ts +16 -0
  301. package/dist/src/ui/tui/primitives/LinesBlock.js +37 -0
  302. package/dist/src/ui/tui/primitives/LinesBlock.js.map +1 -0
  303. package/dist/src/ui/tui/primitives/LoadingBox.d.ts +8 -0
  304. package/dist/src/ui/tui/primitives/LoadingBox.js +10 -0
  305. package/dist/src/ui/tui/primitives/LoadingBox.js.map +1 -0
  306. package/dist/src/ui/tui/primitives/LogViewer.d.ts +11 -0
  307. package/dist/src/ui/tui/primitives/LogViewer.js +55 -0
  308. package/dist/src/ui/tui/primitives/LogViewer.js.map +1 -0
  309. package/dist/src/ui/tui/primitives/NodeBlock.d.ts +13 -0
  310. package/dist/src/ui/tui/primitives/NodeBlock.js +17 -0
  311. package/dist/src/ui/tui/primitives/NodeBlock.js.map +1 -0
  312. package/dist/src/ui/tui/primitives/PickerMenu.d.ts +20 -0
  313. package/dist/src/ui/tui/primitives/PickerMenu.js +134 -0
  314. package/dist/src/ui/tui/primitives/PickerMenu.js.map +1 -0
  315. package/dist/src/ui/tui/primitives/ProgressList.d.ts +15 -0
  316. package/dist/src/ui/tui/primitives/ProgressList.js +30 -0
  317. package/dist/src/ui/tui/primitives/ProgressList.js.map +1 -0
  318. package/dist/src/ui/tui/primitives/PromptLabel.d.ts +11 -0
  319. package/dist/src/ui/tui/primitives/PromptLabel.js +13 -0
  320. package/dist/src/ui/tui/primitives/PromptLabel.js.map +1 -0
  321. package/dist/src/ui/tui/primitives/ScreenContainer.d.ts +16 -0
  322. package/dist/src/ui/tui/primitives/ScreenContainer.js +36 -0
  323. package/dist/src/ui/tui/primitives/ScreenContainer.js.map +1 -0
  324. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.d.ts +22 -0
  325. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.js +35 -0
  326. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.js.map +1 -0
  327. package/dist/src/ui/tui/primitives/SplitView.d.ts +11 -0
  328. package/dist/src/ui/tui/primitives/SplitView.js +9 -0
  329. package/dist/src/ui/tui/primitives/SplitView.js.map +1 -0
  330. package/dist/src/ui/tui/primitives/TabContainer.d.ts +23 -0
  331. package/dist/src/ui/tui/primitives/TabContainer.js +45 -0
  332. package/dist/src/ui/tui/primitives/TabContainer.js.map +1 -0
  333. package/dist/src/ui/tui/primitives/TextBlock.d.ts +41 -0
  334. package/dist/src/ui/tui/primitives/TextBlock.js +144 -0
  335. package/dist/src/ui/tui/primitives/TextBlock.js.map +1 -0
  336. package/dist/src/ui/tui/primitives/content-types.d.ts +37 -0
  337. package/dist/src/ui/tui/primitives/content-types.js +19 -0
  338. package/dist/src/ui/tui/primitives/content-types.js.map +1 -0
  339. package/dist/src/ui/tui/primitives/index.d.ts +24 -0
  340. package/dist/src/ui/tui/primitives/index.js +21 -0
  341. package/dist/src/ui/tui/primitives/index.js.map +1 -0
  342. package/dist/src/ui/tui/primitives/layout-helpers.d.ts +36 -0
  343. package/dist/src/ui/tui/primitives/layout-helpers.js +95 -0
  344. package/dist/src/ui/tui/primitives/layout-helpers.js.map +1 -0
  345. package/dist/src/ui/tui/primitives/text-helpers.d.ts +10 -0
  346. package/dist/src/ui/tui/primitives/text-helpers.js +43 -0
  347. package/dist/src/ui/tui/primitives/text-helpers.js.map +1 -0
  348. package/dist/src/ui/tui/router.d.ts +56 -0
  349. package/dist/src/ui/tui/router.js +94 -0
  350. package/dist/src/ui/tui/router.js.map +1 -0
  351. package/dist/src/ui/tui/screen-registry.d.ts +19 -0
  352. package/dist/src/ui/tui/screen-registry.js +34 -0
  353. package/dist/src/ui/tui/screen-registry.js.map +1 -0
  354. package/dist/src/ui/tui/screens/AuthScreen.d.ts +13 -0
  355. package/dist/src/ui/tui/screens/AuthScreen.js +20 -0
  356. package/dist/src/ui/tui/screens/AuthScreen.js.map +1 -0
  357. package/dist/src/ui/tui/screens/IntroScreen.d.ts +16 -0
  358. package/dist/src/ui/tui/screens/IntroScreen.js +63 -0
  359. package/dist/src/ui/tui/screens/IntroScreen.js.map +1 -0
  360. package/dist/src/ui/tui/screens/McpScreen.d.ts +24 -0
  361. package/dist/src/ui/tui/screens/McpScreen.js +112 -0
  362. package/dist/src/ui/tui/screens/McpScreen.js.map +1 -0
  363. package/dist/src/ui/tui/screens/OutageScreen.d.ts +10 -0
  364. package/dist/src/ui/tui/screens/OutageScreen.js +17 -0
  365. package/dist/src/ui/tui/screens/OutageScreen.js.map +1 -0
  366. package/dist/src/ui/tui/screens/OutroScreen.d.ts +11 -0
  367. package/dist/src/ui/tui/screens/OutroScreen.js +22 -0
  368. package/dist/src/ui/tui/screens/OutroScreen.js.map +1 -0
  369. package/dist/src/ui/tui/screens/RunScreen.d.ts +16 -0
  370. package/dist/src/ui/tui/screens/RunScreen.js +73 -0
  371. package/dist/src/ui/tui/screens/RunScreen.js.map +1 -0
  372. package/dist/src/ui/tui/screens/SettingsOverrideScreen.d.ts +10 -0
  373. package/dist/src/ui/tui/screens/SettingsOverrideScreen.js +24 -0
  374. package/dist/src/ui/tui/screens/SettingsOverrideScreen.js.map +1 -0
  375. package/dist/src/ui/tui/screens/SetupScreen.d.ts +13 -0
  376. package/dist/src/ui/tui/screens/SetupScreen.js +74 -0
  377. package/dist/src/ui/tui/screens/SetupScreen.js.map +1 -0
  378. package/dist/src/ui/tui/services/mcp-installer.d.ts +21 -0
  379. package/dist/src/ui/tui/services/mcp-installer.js +58 -0
  380. package/dist/src/ui/tui/services/mcp-installer.js.map +1 -0
  381. package/dist/src/ui/tui/start-tui.d.ts +9 -0
  382. package/dist/src/ui/tui/start-tui.js +41 -0
  383. package/dist/src/ui/tui/start-tui.js.map +1 -0
  384. package/dist/src/ui/tui/store.d.ts +132 -0
  385. package/dist/src/ui/tui/store.js +320 -0
  386. package/dist/src/ui/tui/store.js.map +1 -0
  387. package/dist/src/ui/tui/styles.d.ts +31 -0
  388. package/dist/src/ui/tui/styles.js +34 -0
  389. package/dist/src/ui/tui/styles.js.map +1 -0
  390. package/dist/src/ui/wizard-ui.d.ts +64 -0
  391. package/dist/src/ui/wizard-ui.js +19 -0
  392. package/dist/src/ui/wizard-ui.js.map +1 -0
  393. package/dist/src/utils/__tests__/setup-utils.test.d.ts +1 -0
  394. package/dist/src/utils/__tests__/{clack-utils.test.js → setup-utils.test.js} +31 -22
  395. package/dist/src/utils/__tests__/setup-utils.test.js.map +1 -0
  396. package/dist/src/utils/analytics.d.ts +18 -0
  397. package/dist/src/utils/analytics.js +53 -0
  398. package/dist/src/utils/analytics.js.map +1 -1
  399. package/dist/src/utils/anthropic-status.d.ts +1 -12
  400. package/dist/src/utils/anthropic-status.js +4 -56
  401. package/dist/src/utils/anthropic-status.js.map +1 -1
  402. package/dist/src/utils/custom-headers.d.ts +9 -0
  403. package/dist/src/utils/custom-headers.js +24 -0
  404. package/dist/src/utils/custom-headers.js.map +1 -0
  405. package/dist/src/utils/debug.js +2 -2
  406. package/dist/src/utils/debug.js.map +1 -1
  407. package/dist/src/utils/environment.js +4 -2
  408. package/dist/src/utils/environment.js.map +1 -1
  409. package/dist/src/utils/oauth.d.ts +0 -2
  410. package/dist/src/utils/oauth.js +18 -21
  411. package/dist/src/utils/oauth.js.map +1 -1
  412. package/dist/src/utils/package-manager.js +13 -13
  413. package/dist/src/utils/package-manager.js.map +1 -1
  414. package/dist/src/utils/setup-utils.d.ts +76 -0
  415. package/dist/src/utils/setup-utils.js +364 -0
  416. package/dist/src/utils/setup-utils.js.map +1 -0
  417. package/dist/src/utils/types.d.ts +0 -4
  418. package/dist/src/utils/types.js.map +1 -1
  419. package/dist/src/utils/urls.d.ts +1 -1
  420. package/dist/src/utils/urls.js +22 -9
  421. package/dist/src/utils/urls.js.map +1 -1
  422. package/dist/src/utils/wizard-abort.d.ts +13 -0
  423. package/dist/src/utils/wizard-abort.js +57 -0
  424. package/dist/src/utils/wizard-abort.js.map +1 -0
  425. package/package.json +19 -7
  426. package/dist/src/android/android-wizard-agent.js.map +0 -1
  427. package/dist/src/android/utils.js.map +0 -1
  428. package/dist/src/angular/angular-wizard-agent.js.map +0 -1
  429. package/dist/src/angular/utils.js.map +0 -1
  430. package/dist/src/astro/astro-wizard-agent.js.map +0 -1
  431. package/dist/src/astro/utils.js.map +0 -1
  432. package/dist/src/django/django-wizard-agent.js.map +0 -1
  433. package/dist/src/django/utils.js.map +0 -1
  434. package/dist/src/fastapi/fastapi-wizard-agent.d.ts +0 -7
  435. package/dist/src/fastapi/fastapi-wizard-agent.js.map +0 -1
  436. package/dist/src/fastapi/utils.js.map +0 -1
  437. package/dist/src/flask/flask-wizard-agent.js.map +0 -1
  438. package/dist/src/flask/utils.js.map +0 -1
  439. package/dist/src/javascript-node/javascript-node-wizard-agent.js.map +0 -1
  440. package/dist/src/javascript-web/javascript-web-wizard-agent.js.map +0 -1
  441. package/dist/src/javascript-web/utils.js.map +0 -1
  442. package/dist/src/laravel/laravel-wizard-agent.js.map +0 -1
  443. package/dist/src/laravel/utils.js.map +0 -1
  444. package/dist/src/mcp.d.ts +0 -10
  445. package/dist/src/mcp.js +0 -45
  446. package/dist/src/mcp.js.map +0 -1
  447. package/dist/src/nextjs/nextjs-wizard-agent.js.map +0 -1
  448. package/dist/src/nextjs/utils.js.map +0 -1
  449. package/dist/src/nuxt/nuxt-wizard-agent.js.map +0 -1
  450. package/dist/src/python/python-wizard-agent.js.map +0 -1
  451. package/dist/src/python/utils.js.map +0 -1
  452. package/dist/src/rails/rails-wizard-agent.js.map +0 -1
  453. package/dist/src/rails/utils.js.map +0 -1
  454. package/dist/src/react-native/react-native-wizard-agent.js.map +0 -1
  455. package/dist/src/react-native/utils.js.map +0 -1
  456. package/dist/src/react-router/react-router-wizard-agent.js.map +0 -1
  457. package/dist/src/react-router/utils.d.ts +0 -19
  458. package/dist/src/react-router/utils.js.map +0 -1
  459. package/dist/src/ruby/ruby-wizard-agent.js.map +0 -1
  460. package/dist/src/ruby/utils.js.map +0 -1
  461. package/dist/src/steps/__tests__/add-editor-rules.test.js +0 -208
  462. package/dist/src/steps/__tests__/add-editor-rules.test.js.map +0 -1
  463. package/dist/src/steps/add-editor-rules.d.ts +0 -8
  464. package/dist/src/steps/add-editor-rules.js +0 -71
  465. package/dist/src/steps/add-editor-rules.js.map +0 -1
  466. package/dist/src/svelte/svelte-wizard-agent.js.map +0 -1
  467. package/dist/src/swift/swift-wizard-agent.js.map +0 -1
  468. package/dist/src/swift/utils.js.map +0 -1
  469. package/dist/src/tanstack-router/tanstack-router-wizard-agent.js.map +0 -1
  470. package/dist/src/tanstack-router/utils.d.ts +0 -17
  471. package/dist/src/tanstack-router/utils.js.map +0 -1
  472. package/dist/src/tanstack-start/tanstack-start-wizard-agent.js.map +0 -1
  473. package/dist/src/tanstack-start/utils.js.map +0 -1
  474. package/dist/src/utils/__tests__/clack-utils.test.js.map +0 -1
  475. package/dist/src/utils/clack-utils.d.ts +0 -190
  476. package/dist/src/utils/clack-utils.js +0 -728
  477. package/dist/src/utils/clack-utils.js.map +0 -1
  478. package/dist/src/utils/clack.d.ts +0 -2
  479. package/dist/src/utils/clack.js +0 -9
  480. package/dist/src/utils/clack.js.map +0 -1
  481. package/dist/src/vue/vue-wizard-agent.js.map +0 -1
  482. /package/dist/src/{steps/__tests__/add-editor-rules.test.d.ts → __tests__/wizard-abort.test.d.ts} +0 -0
  483. /package/dist/src/{angular → frameworks/angular}/utils.d.ts +0 -0
  484. /package/dist/src/{python → frameworks/python}/utils.js +0 -0
  485. /package/dist/src/{swift → frameworks/swift}/utils.js +0 -0
  486. /package/dist/src/{tanstack-start → frameworks/tanstack-start}/utils.d.ts +0 -0
  487. /package/dist/src/{utils/__tests__/clack-utils.test.d.ts → ui/tui/__tests__/layout-helpers.test.d.ts} +0 -0
@@ -1,14 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.removeMCPServer = exports.addMCPServer = exports.getInstalledClients = exports.removeMCPServerFromClientsStep = exports.addMCPServerToClientsStep = exports.getSupportedClients = void 0;
7
4
  const telemetry_1 = require("../../telemetry");
8
5
  const analytics_1 = require("../../utils/analytics");
9
- const clack_1 = __importDefault(require("../../utils/clack"));
10
- const chalk_1 = __importDefault(require("chalk"));
11
- const clack_utils_1 = require("../../utils/clack-utils");
6
+ const ui_1 = require("../../ui");
12
7
  const cursor_1 = require("./clients/cursor");
13
8
  const claude_1 = require("./clients/claude");
14
9
  const claude_code_1 = require("./clients/claude-code");
@@ -41,128 +36,49 @@ const getSupportedClients = async () => {
41
36
  return supportedClients;
42
37
  };
43
38
  exports.getSupportedClients = getSupportedClients;
44
- const addMCPServerToClientsStep = async ({ integration, cloudRegion, askPermission = true, local = false, ci = false, }) => {
45
- // CI mode: skip MCP installation entirely (default to No)
39
+ /**
40
+ * Add MCP server to clients. No prompts — pure orchestration.
41
+ * Prompts are handled by McpScreen (TUI) or auto-accepted (CI).
42
+ */
43
+ const addMCPServerToClientsStep = async ({ integration, local = false, ci = false, }) => {
44
+ const ui = (0, ui_1.getUI)();
45
+ // CI mode: skip MCP installation entirely
46
46
  if (ci) {
47
- clack_1.default.log.info('Skipping MCP installation (CI mode)');
48
- return [];
49
- }
50
- const region = cloudRegion ?? (await (0, clack_utils_1.askForCloudRegion)());
51
- const hasPermission = askPermission
52
- ? await (0, clack_utils_1.abortIfCancelled)(clack_1.default.select({
53
- message: local
54
- ? 'Would you like to install the local development MCP server?'
55
- : 'Would you like to install the MCP server to use PostHog in your editor?',
56
- options: [
57
- { value: true, label: 'Yes' },
58
- { value: false, label: 'No' },
59
- ],
60
- }), integration)
61
- : true;
62
- if (!hasPermission) {
47
+ ui.log.info('Skipping MCP installation (CI mode)');
63
48
  return [];
64
49
  }
65
- const { groupMultiselect } = await import('@clack/prompts');
66
- const selectedFeatures = await (0, clack_utils_1.abortIfCancelled)(groupMultiselect({
67
- message: `Select which PostHog features to enable as tools: ${chalk_1.default.dim('(Toggle: Space, Confirm: Enter, Toggle All: A, Cancel: CTRL + C)')}`,
68
- options: defaults_1.AVAILABLE_FEATURES,
69
- initialValues: [...defaults_1.ALL_FEATURE_VALUES],
70
- required: false,
71
- }), integration);
72
50
  const supportedClients = await (0, exports.getSupportedClients)();
73
- const { multiselect } = await import('@clack/prompts');
74
- const selectedClientNames = await (0, clack_utils_1.abortIfCancelled)(multiselect({
75
- message: `Select which MCP clients to install the MCP server to: ${chalk_1.default.dim('(Toggle: Space, Confirm: Enter, Toggle All: A, Cancel: CTRL + C)')}`,
76
- options: supportedClients.map((client) => ({
77
- value: client.name,
78
- label: client.name,
79
- })),
80
- initialValues: supportedClients.map((client) => client.name),
81
- required: true,
82
- }), integration);
83
- const clients = supportedClients.filter((client) => selectedClientNames.includes(client.name));
84
- // Only check for existing installations in the clients the user selected
85
- const installedClients = [];
86
- for (const client of clients) {
87
- if (await client.isServerInstalled(local)) {
88
- installedClients.push(client);
89
- }
90
- }
91
- if (installedClients.length > 0) {
92
- clack_1.default.log.warn(`The MCP server is already configured for:
93
- ${installedClients.map((c) => `- ${c.name}`).join('\n ')}`);
94
- const reinstall = await (0, clack_utils_1.abortIfCancelled)(clack_1.default.select({
95
- message: 'Would you like to reinstall it?',
96
- options: [
97
- {
98
- value: true,
99
- label: 'Yes',
100
- hint: 'Reinstall the MCP server',
101
- },
102
- {
103
- value: false,
104
- label: 'No',
105
- hint: 'Keep the existing installation',
106
- },
107
- ],
108
- }), integration);
109
- if (!reinstall) {
110
- analytics_1.analytics.capture('wizard interaction', {
111
- action: 'declined to reinstall mcp servers',
112
- clients: installedClients.map((c) => c.name),
113
- integration,
114
- });
115
- return [];
116
- }
117
- await (0, exports.removeMCPServer)(installedClients, local);
118
- clack_1.default.log.info('Removed existing installation.');
51
+ if (supportedClients.length === 0) {
52
+ ui.log.info('No supported MCP clients detected. Skipping MCP installation.');
53
+ return [];
119
54
  }
55
+ // Auto-install to all supported clients
120
56
  await (0, telemetry_1.traceStep)('adding mcp servers', async () => {
121
- await (0, exports.addMCPServer)(clients, undefined, // OAuth mode - no API key needed
122
- selectedFeatures, local, region);
57
+ await (0, exports.addMCPServer)(supportedClients, undefined, [...defaults_1.ALL_FEATURE_VALUES], local);
123
58
  });
124
- clack_1.default.log.success(`Added the MCP server to:
125
- ${clients.map((c) => `- ${c.name}`).join('\n ')} `);
126
- analytics_1.analytics.capture('wizard interaction', {
127
- action: 'added mcp servers',
128
- clients: clients.map((c) => c.name),
59
+ ui.log.success(`Added the MCP server to:
60
+ ${supportedClients.map((c) => `- ${c.name}`).join('\n ')} `);
61
+ analytics_1.analytics.wizardCapture('mcp servers added', {
62
+ clients: supportedClients.map((c) => c.name),
129
63
  integration,
130
64
  });
131
- return clients.map((c) => c.name);
65
+ return supportedClients.map((c) => c.name);
132
66
  };
133
67
  exports.addMCPServerToClientsStep = addMCPServerToClientsStep;
134
68
  const removeMCPServerFromClientsStep = async ({ integration, local = false, }) => {
135
69
  const installedClients = await (0, exports.getInstalledClients)(local);
136
70
  if (installedClients.length === 0) {
137
- analytics_1.analytics.capture('wizard interaction', {
138
- action: 'no mcp servers to remove',
139
- integration,
140
- });
141
- return [];
142
- }
143
- const { multiselect } = await import('@clack/prompts');
144
- const selectedClientNames = await (0, clack_utils_1.abortIfCancelled)(multiselect({
145
- message: `Select which clients to remove the MCP server from: ${chalk_1.default.dim('(Toggle: Space, Confirm: Enter, Toggle All: A, Cancel: CTRL + C)')}`,
146
- options: installedClients.map((client) => ({
147
- value: client.name,
148
- label: client.name,
149
- })),
150
- initialValues: installedClients.map((client) => client.name),
151
- }), integration);
152
- const clientsToRemove = installedClients.filter((client) => selectedClientNames.includes(client.name));
153
- if (clientsToRemove.length === 0) {
154
- analytics_1.analytics.capture('wizard interaction', {
155
- action: 'no mcp servers selected for removal',
71
+ analytics_1.analytics.wizardCapture('mcp no servers to remove', {
156
72
  integration,
157
73
  });
158
74
  return [];
159
75
  }
76
+ // Auto-remove from all installed clients
160
77
  const results = await (0, telemetry_1.traceStep)('removing mcp servers', async () => {
161
- await (0, exports.removeMCPServer)(clientsToRemove, local);
162
- return clientsToRemove.map((c) => c.name);
78
+ await (0, exports.removeMCPServer)(installedClients, local);
79
+ return installedClients.map((c) => c.name);
163
80
  });
164
- analytics_1.analytics.capture('wizard interaction', {
165
- action: 'removed mcp servers',
81
+ analytics_1.analytics.wizardCapture('mcp servers removed', {
166
82
  clients: results,
167
83
  integration,
168
84
  });
@@ -180,9 +96,9 @@ const getInstalledClients = async (local) => {
180
96
  return installedClients;
181
97
  };
182
98
  exports.getInstalledClients = getInstalledClients;
183
- const addMCPServer = async (clients, personalApiKey, selectedFeatures, local, region) => {
99
+ const addMCPServer = async (clients, personalApiKey, selectedFeatures, local) => {
184
100
  for (const client of clients) {
185
- await client.addServer(personalApiKey, selectedFeatures, local, region);
101
+ await client.addServer(personalApiKey, selectedFeatures, local);
186
102
  }
187
103
  };
188
104
  exports.addMCPServer = addMCPServer;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/steps/add-mcp-server-to-clients/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Integration } from '../../lib/constants';\nimport { traceStep } from '../../telemetry';\nimport { analytics } from '../../utils/analytics';\nimport clack from '../../utils/clack';\nimport chalk from 'chalk';\nimport { abortIfCancelled, askForCloudRegion } from '../../utils/clack-utils';\nimport { MCPClient } from './MCPClient';\nimport { CursorMCPClient } from './clients/cursor';\nimport { ClaudeMCPClient } from './clients/claude';\nimport type { CloudRegion } from '../../utils/types';\nimport { ClaudeCodeMCPClient } from './clients/claude-code';\nimport { VisualStudioCodeClient } from './clients/visual-studio-code';\nimport { ZedClient } from './clients/zed';\nimport { CodexMCPClient } from './clients/codex';\nimport { AVAILABLE_FEATURES, ALL_FEATURE_VALUES } from './defaults';\nimport { debug } from '../../utils/debug';\n\nexport const getSupportedClients = async (): Promise<MCPClient[]> => {\n const allClients = [\n new CursorMCPClient(),\n new ClaudeMCPClient(),\n new ClaudeCodeMCPClient(),\n new VisualStudioCodeClient(),\n new ZedClient(),\n new CodexMCPClient(),\n ];\n const supportedClients: MCPClient[] = [];\n\n debug('Checking for supported MCP clients...');\n for (const client of allClients) {\n const isSupported = await client.isClientSupported();\n debug(`${client.name}: ${isSupported ? '✓ supported' : '✗ not supported'}`);\n if (isSupported) {\n supportedClients.push(client);\n }\n }\n debug(\n `Found ${supportedClients.length} supported client(s): ${supportedClients\n .map((c) => c.name)\n .join(', ')}`,\n );\n\n return supportedClients;\n};\n\nexport const addMCPServerToClientsStep = async ({\n integration,\n cloudRegion,\n askPermission = true,\n local = false,\n ci = false,\n}: {\n integration?: Integration;\n cloudRegion?: CloudRegion;\n askPermission?: boolean;\n local?: boolean;\n ci?: boolean;\n}): Promise<string[]> => {\n // CI mode: skip MCP installation entirely (default to No)\n if (ci) {\n clack.log.info('Skipping MCP installation (CI mode)');\n return [];\n }\n\n const region = cloudRegion ?? (await askForCloudRegion());\n\n const hasPermission = askPermission\n ? await abortIfCancelled(\n clack.select({\n message: local\n ? 'Would you like to install the local development MCP server?'\n : 'Would you like to install the MCP server to use PostHog in your editor?',\n options: [\n { value: true, label: 'Yes' },\n { value: false, label: 'No' },\n ],\n }),\n integration,\n )\n : true;\n\n if (!hasPermission) {\n return [];\n }\n\n const { groupMultiselect } = await import('@clack/prompts');\n const selectedFeatures = await abortIfCancelled(\n groupMultiselect({\n message: `Select which PostHog features to enable as tools: ${chalk.dim(\n '(Toggle: Space, Confirm: Enter, Toggle All: A, Cancel: CTRL + C)',\n )}`,\n options: AVAILABLE_FEATURES,\n initialValues: [...ALL_FEATURE_VALUES],\n required: false,\n }),\n integration,\n );\n\n const supportedClients = await getSupportedClients();\n\n const { multiselect } = await import('@clack/prompts');\n const selectedClientNames = await abortIfCancelled(\n multiselect({\n message: `Select which MCP clients to install the MCP server to: ${chalk.dim(\n '(Toggle: Space, Confirm: Enter, Toggle All: A, Cancel: CTRL + C)',\n )}`,\n options: supportedClients.map((client) => ({\n value: client.name,\n label: client.name,\n })),\n initialValues: supportedClients.map((client) => client.name),\n required: true,\n }),\n integration,\n );\n\n const clients = supportedClients.filter((client) =>\n selectedClientNames.includes(client.name),\n );\n\n // Only check for existing installations in the clients the user selected\n const installedClients = [];\n for (const client of clients) {\n if (await client.isServerInstalled(local)) {\n installedClients.push(client);\n }\n }\n\n if (installedClients.length > 0) {\n clack.log.warn(\n `The MCP server is already configured for:\n ${installedClients.map((c) => `- ${c.name}`).join('\\n ')}`,\n );\n\n const reinstall = await abortIfCancelled(\n clack.select({\n message: 'Would you like to reinstall it?',\n options: [\n {\n value: true,\n label: 'Yes',\n hint: 'Reinstall the MCP server',\n },\n {\n value: false,\n label: 'No',\n hint: 'Keep the existing installation',\n },\n ],\n }),\n integration,\n );\n\n if (!reinstall) {\n analytics.capture('wizard interaction', {\n action: 'declined to reinstall mcp servers',\n clients: installedClients.map((c) => c.name),\n integration,\n });\n\n return [];\n }\n\n await removeMCPServer(installedClients, local);\n clack.log.info('Removed existing installation.');\n }\n\n await traceStep('adding mcp servers', async () => {\n await addMCPServer(\n clients,\n undefined, // OAuth mode - no API key needed\n selectedFeatures,\n local,\n region,\n );\n });\n\n clack.log.success(\n `Added the MCP server to:\n ${clients.map((c) => `- ${c.name}`).join('\\n ')} `,\n );\n\n analytics.capture('wizard interaction', {\n action: 'added mcp servers',\n clients: clients.map((c) => c.name),\n integration,\n });\n\n return clients.map((c) => c.name);\n};\n\nexport const removeMCPServerFromClientsStep = async ({\n integration,\n local = false,\n}: {\n integration?: Integration;\n local?: boolean;\n}): Promise<string[]> => {\n const installedClients = await getInstalledClients(local);\n if (installedClients.length === 0) {\n analytics.capture('wizard interaction', {\n action: 'no mcp servers to remove',\n integration,\n });\n return [];\n }\n\n const { multiselect } = await import('@clack/prompts');\n const selectedClientNames = await abortIfCancelled(\n multiselect({\n message: `Select which clients to remove the MCP server from: ${chalk.dim(\n '(Toggle: Space, Confirm: Enter, Toggle All: A, Cancel: CTRL + C)',\n )}`,\n options: installedClients.map((client) => ({\n value: client.name,\n label: client.name,\n })),\n initialValues: installedClients.map((client) => client.name),\n }),\n integration,\n );\n\n const clientsToRemove = installedClients.filter((client) =>\n selectedClientNames.includes(client.name),\n );\n\n if (clientsToRemove.length === 0) {\n analytics.capture('wizard interaction', {\n action: 'no mcp servers selected for removal',\n integration,\n });\n return [];\n }\n\n const results = await traceStep('removing mcp servers', async () => {\n await removeMCPServer(clientsToRemove, local);\n return clientsToRemove.map((c) => c.name);\n });\n\n analytics.capture('wizard interaction', {\n action: 'removed mcp servers',\n clients: results,\n integration,\n });\n\n return results;\n};\n\nexport const getInstalledClients = async (\n local?: boolean,\n): Promise<MCPClient[]> => {\n const clients = await getSupportedClients();\n const installedClients: MCPClient[] = [];\n\n for (const client of clients) {\n if (await client.isServerInstalled(local)) {\n installedClients.push(client);\n }\n }\n\n return installedClients;\n};\n\nexport const addMCPServer = async (\n clients: MCPClient[],\n personalApiKey?: string,\n selectedFeatures?: string[],\n local?: boolean,\n region?: CloudRegion,\n): Promise<void> => {\n for (const client of clients) {\n await client.addServer(personalApiKey, selectedFeatures, local, region);\n }\n};\n\nexport const removeMCPServer = async (\n clients: MCPClient[],\n local?: boolean,\n): Promise<void> => {\n for (const client of clients) {\n await client.removeServer(local);\n }\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/steps/add-mcp-server-to-clients/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Integration } from '../../lib/constants';\nimport { traceStep } from '../../telemetry';\nimport { analytics } from '../../utils/analytics';\nimport { getUI } from '../../ui';\nimport { MCPClient } from './MCPClient';\nimport { CursorMCPClient } from './clients/cursor';\nimport { ClaudeMCPClient } from './clients/claude';\nimport { ClaudeCodeMCPClient } from './clients/claude-code';\nimport { VisualStudioCodeClient } from './clients/visual-studio-code';\nimport { ZedClient } from './clients/zed';\nimport { CodexMCPClient } from './clients/codex';\nimport { ALL_FEATURE_VALUES } from './defaults';\nimport { debug } from '../../utils/debug';\n\nexport const getSupportedClients = async (): Promise<MCPClient[]> => {\n const allClients = [\n new CursorMCPClient(),\n new ClaudeMCPClient(),\n new ClaudeCodeMCPClient(),\n new VisualStudioCodeClient(),\n new ZedClient(),\n new CodexMCPClient(),\n ];\n const supportedClients: MCPClient[] = [];\n\n debug('Checking for supported MCP clients...');\n for (const client of allClients) {\n const isSupported = await client.isClientSupported();\n debug(`${client.name}: ${isSupported ? '✓ supported' : '✗ not supported'}`);\n if (isSupported) {\n supportedClients.push(client);\n }\n }\n debug(\n `Found ${supportedClients.length} supported client(s): ${supportedClients\n .map((c) => c.name)\n .join(', ')}`,\n );\n\n return supportedClients;\n};\n\n/**\n * Add MCP server to clients. No prompts — pure orchestration.\n * Prompts are handled by McpScreen (TUI) or auto-accepted (CI).\n */\nexport const addMCPServerToClientsStep = async ({\n integration,\n local = false,\n ci = false,\n}: {\n integration?: Integration;\n local?: boolean;\n ci?: boolean;\n}): Promise<string[]> => {\n const ui = getUI();\n\n // CI mode: skip MCP installation entirely\n if (ci) {\n ui.log.info('Skipping MCP installation (CI mode)');\n return [];\n }\n\n const supportedClients = await getSupportedClients();\n\n if (supportedClients.length === 0) {\n ui.log.info(\n 'No supported MCP clients detected. Skipping MCP installation.',\n );\n return [];\n }\n\n // Auto-install to all supported clients\n await traceStep('adding mcp servers', async () => {\n await addMCPServer(\n supportedClients,\n undefined,\n [...ALL_FEATURE_VALUES],\n local,\n );\n });\n\n ui.log.success(\n `Added the MCP server to:\n ${supportedClients.map((c) => `- ${c.name}`).join('\\n ')} `,\n );\n\n analytics.wizardCapture('mcp servers added', {\n clients: supportedClients.map((c) => c.name),\n integration,\n });\n\n return supportedClients.map((c) => c.name);\n};\n\nexport const removeMCPServerFromClientsStep = async ({\n integration,\n local = false,\n}: {\n integration?: Integration;\n local?: boolean;\n}): Promise<string[]> => {\n const installedClients = await getInstalledClients(local);\n if (installedClients.length === 0) {\n analytics.wizardCapture('mcp no servers to remove', {\n integration,\n });\n return [];\n }\n\n // Auto-remove from all installed clients\n const results = await traceStep('removing mcp servers', async () => {\n await removeMCPServer(installedClients, local);\n return installedClients.map((c) => c.name);\n });\n\n analytics.wizardCapture('mcp servers removed', {\n clients: results,\n integration,\n });\n\n return results;\n};\n\nexport const getInstalledClients = async (\n local?: boolean,\n): Promise<MCPClient[]> => {\n const clients = await getSupportedClients();\n const installedClients: MCPClient[] = [];\n\n for (const client of clients) {\n if (await client.isServerInstalled(local)) {\n installedClients.push(client);\n }\n }\n\n return installedClients;\n};\n\nexport const addMCPServer = async (\n clients: MCPClient[],\n personalApiKey?: string,\n selectedFeatures?: string[],\n local?: boolean,\n): Promise<void> => {\n for (const client of clients) {\n await client.addServer(personalApiKey, selectedFeatures, local);\n }\n};\n\nexport const removeMCPServer = async (\n clients: MCPClient[],\n local?: boolean,\n): Promise<void> => {\n for (const client of clients) {\n await client.removeServer(local);\n }\n};\n"]}
@@ -40,7 +40,7 @@ exports.addOrUpdateEnvironmentVariablesStep = addOrUpdateEnvironmentVariablesSte
40
40
  const chalk_1 = __importDefault(require("chalk"));
41
41
  const telemetry_1 = require("../telemetry");
42
42
  const analytics_1 = require("../utils/analytics");
43
- const clack_1 = __importDefault(require("../utils/clack"));
43
+ const ui_1 = require("../ui");
44
44
  const file_utils_1 = require("../utils/file-utils");
45
45
  const fs = __importStar(require("fs"));
46
46
  const path_1 = __importDefault(require("path"));
@@ -81,17 +81,16 @@ async function addOrUpdateEnvironmentVariablesStep({ installDir, variables, inte
81
81
  encoding: 'utf8',
82
82
  flag: 'w',
83
83
  });
84
- clack_1.default.log.success(`Updated environment variables in ${chalk_1.default.bold.cyan(relativeEnvFilePath)}`);
84
+ (0, ui_1.getUI)().log.success(`Updated environment variables in ${chalk_1.default.bold.cyan(relativeEnvFilePath)}`);
85
85
  }
86
86
  else {
87
- clack_1.default.log.success(`${chalk_1.default.bold.cyan(relativeEnvFilePath)} already has the necessary environment variables.`);
87
+ (0, ui_1.getUI)().log.success(`${chalk_1.default.bold.cyan(relativeEnvFilePath)} already has the necessary environment variables.`);
88
88
  }
89
89
  addedEnvVariables = true;
90
90
  }
91
91
  catch (error) {
92
- clack_1.default.log.warning(`Failed to update environment variables in ${chalk_1.default.bold.cyan(relativeEnvFilePath)}. Please update them manually.`);
93
- analytics_1.analytics.capture('wizard interaction', {
94
- action: 'failed to update environment variables',
92
+ (0, ui_1.getUI)().log.warn(`Failed to update environment variables in ${chalk_1.default.bold.cyan(relativeEnvFilePath)}. Please update them manually.`);
93
+ analytics_1.analytics.wizardCapture('env vars error', {
95
94
  integration,
96
95
  error: error instanceof Error ? error.message : 'Unknown error',
97
96
  });
@@ -108,13 +107,12 @@ async function addOrUpdateEnvironmentVariablesStep({ installDir, variables, inte
108
107
  encoding: 'utf8',
109
108
  flag: 'w',
110
109
  });
111
- clack_1.default.log.success(`Created ${chalk_1.default.bold.cyan(relativeEnvFilePath)} with environment variables.`);
110
+ (0, ui_1.getUI)().log.success(`Created ${chalk_1.default.bold.cyan(relativeEnvFilePath)} with environment variables.`);
112
111
  addedEnvVariables = true;
113
112
  }
114
113
  catch (error) {
115
- clack_1.default.log.warning(`Failed to create ${chalk_1.default.bold.cyan(relativeEnvFilePath)} with environment variables. Please add them manually.`);
116
- analytics_1.analytics.capture('wizard interaction', {
117
- action: 'failed to create environment variables',
114
+ (0, ui_1.getUI)().log.warn(`Failed to create ${chalk_1.default.bold.cyan(relativeEnvFilePath)} with environment variables. Please add them manually.`);
115
+ analytics_1.analytics.wizardCapture('env vars error', {
118
116
  integration,
119
117
  error: error instanceof Error ? error.message : 'Unknown error',
120
118
  });
@@ -138,13 +136,12 @@ async function addOrUpdateEnvironmentVariablesStep({ installDir, variables, inte
138
136
  encoding: 'utf8',
139
137
  flag: 'w',
140
138
  });
141
- clack_1.default.log.success(`Updated ${chalk_1.default.bold.cyan('.gitignore')} to include ${chalk_1.default.bold.cyan(envFileName)}.`);
139
+ (0, ui_1.getUI)().log.success(`Updated ${chalk_1.default.bold.cyan('.gitignore')} to include ${chalk_1.default.bold.cyan(envFileName)}.`);
142
140
  addedGitignore = true;
143
141
  }
144
142
  catch (error) {
145
- clack_1.default.log.warning(`Failed to update ${chalk_1.default.bold.cyan('.gitignore')} to include ${chalk_1.default.bold.cyan(envFileName)}.`);
146
- analytics_1.analytics.capture('wizard interaction', {
147
- action: 'failed to update gitignore',
143
+ (0, ui_1.getUI)().log.warn(`Failed to update ${chalk_1.default.bold.cyan('.gitignore')} to include ${chalk_1.default.bold.cyan(envFileName)}.`);
144
+ analytics_1.analytics.wizardCapture('env vars error', {
148
145
  integration,
149
146
  error: error instanceof Error ? error.message : 'Unknown error',
150
147
  });
@@ -163,13 +160,12 @@ async function addOrUpdateEnvironmentVariablesStep({ installDir, variables, inte
163
160
  encoding: 'utf8',
164
161
  flag: 'w',
165
162
  });
166
- clack_1.default.log.success(`Created ${chalk_1.default.bold.cyan('.gitignore')} with environment files.`);
163
+ (0, ui_1.getUI)().log.success(`Created ${chalk_1.default.bold.cyan('.gitignore')} with environment files.`);
167
164
  addedGitignore = true;
168
165
  }
169
166
  catch (error) {
170
- clack_1.default.log.warning(`Failed to create ${chalk_1.default.bold.cyan('.gitignore')} with environment files.`);
171
- analytics_1.analytics.capture('wizard interaction', {
172
- action: 'failed to create gitignore',
167
+ (0, ui_1.getUI)().log.warn(`Failed to create ${chalk_1.default.bold.cyan('.gitignore')} with environment files.`);
168
+ analytics_1.analytics.wizardCapture('env vars error', {
173
169
  integration,
174
170
  error: error instanceof Error ? error.message : 'Unknown error',
175
171
  });
@@ -180,8 +176,7 @@ async function addOrUpdateEnvironmentVariablesStep({ installDir, variables, inte
180
176
  };
181
177
  }
182
178
  }
183
- analytics_1.analytics.capture('wizard interaction', {
184
- action: 'added environment variables',
179
+ analytics_1.analytics.wizardCapture('env vars added', {
185
180
  integration,
186
181
  });
187
182
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"add-or-update-environment-variables.js","sourceRoot":"","sources":["../../../src/steps/add-or-update-environment-variables.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport type { Integration } from '../lib/constants';\nimport { traceStep } from '../telemetry';\nimport { analytics } from '../utils/analytics';\nimport clack from '../utils/clack';\nimport { getDotGitignore } from '../utils/file-utils';\nimport * as fs from 'fs';\nimport path from 'path';\n\nexport async function addOrUpdateEnvironmentVariablesStep({\n installDir,\n variables,\n integration,\n}: {\n installDir: string;\n variables: Record<string, string>;\n integration: Integration;\n}): Promise<{\n relativeEnvFilePath: string;\n addedEnvVariables: boolean;\n addedGitignore: boolean;\n}> {\n return traceStep('add-or-update-environment-variables', async () => {\n const envVarContent = Object.entries(variables)\n .map(([key, value]) => `${key}=${value}`)\n .join('\\n');\n\n const dotEnvLocalFilePath = path.join(installDir, '.env.local');\n const dotEnvFilePath = path.join(installDir, '.env');\n const targetEnvFilePath = fs.existsSync(dotEnvLocalFilePath)\n ? dotEnvLocalFilePath\n : dotEnvFilePath;\n\n const dotEnvFileExists = fs.existsSync(targetEnvFilePath);\n\n const relativeEnvFilePath = path.relative(installDir, targetEnvFilePath);\n\n let addedGitignore = false;\n let addedEnvVariables = false;\n\n if (dotEnvFileExists) {\n try {\n let dotEnvFileContent = fs.readFileSync(targetEnvFilePath, 'utf8');\n let updated = false;\n\n for (const [key, value] of Object.entries(variables)) {\n const regex = new RegExp(`^${key}=.*$`, 'm');\n\n if (dotEnvFileContent.match(regex)) {\n dotEnvFileContent = dotEnvFileContent.replace(\n regex,\n `${key}=${value}`,\n );\n updated = true;\n } else {\n if (!dotEnvFileContent.endsWith('\\n')) {\n dotEnvFileContent += '\\n';\n }\n dotEnvFileContent += `${key}=${value}\\n`;\n updated = true;\n }\n }\n\n if (updated) {\n await fs.promises.writeFile(targetEnvFilePath, dotEnvFileContent, {\n encoding: 'utf8',\n flag: 'w',\n });\n clack.log.success(\n `Updated environment variables in ${chalk.bold.cyan(\n relativeEnvFilePath,\n )}`,\n );\n } else {\n clack.log.success(\n `${chalk.bold.cyan(\n relativeEnvFilePath,\n )} already has the necessary environment variables.`,\n );\n }\n\n addedEnvVariables = true;\n } catch (error) {\n clack.log.warning(\n `Failed to update environment variables in ${chalk.bold.cyan(\n relativeEnvFilePath,\n )}. Please update them manually.`,\n );\n\n analytics.capture('wizard interaction', {\n action: 'failed to update environment variables',\n integration,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n\n return {\n relativeEnvFilePath,\n addedEnvVariables,\n addedGitignore,\n };\n }\n } else {\n try {\n await fs.promises.writeFile(targetEnvFilePath, envVarContent, {\n encoding: 'utf8',\n flag: 'w',\n });\n clack.log.success(\n `Created ${chalk.bold.cyan(\n relativeEnvFilePath,\n )} with environment variables.`,\n );\n\n addedEnvVariables = true;\n } catch (error) {\n clack.log.warning(\n `Failed to create ${chalk.bold.cyan(\n relativeEnvFilePath,\n )} with environment variables. Please add them manually.`,\n );\n\n analytics.capture('wizard interaction', {\n action: 'failed to create environment variables',\n integration,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n\n return {\n relativeEnvFilePath,\n addedEnvVariables,\n addedGitignore,\n };\n }\n }\n\n const gitignorePath = getDotGitignore({ installDir });\n\n const envFileName = path.basename(targetEnvFilePath);\n\n const envFiles = [envFileName];\n\n if (gitignorePath) {\n const gitignoreContent = fs.readFileSync(gitignorePath, 'utf8');\n const missingEnvFiles = envFiles.filter(\n (file) => !gitignoreContent.includes(file),\n );\n\n if (missingEnvFiles.length > 0) {\n try {\n const newGitignoreContent = `${gitignoreContent}\\n${missingEnvFiles.join(\n '\\n',\n )}`;\n await fs.promises.writeFile(gitignorePath, newGitignoreContent, {\n encoding: 'utf8',\n flag: 'w',\n });\n clack.log.success(\n `Updated ${chalk.bold.cyan(\n '.gitignore',\n )} to include ${chalk.bold.cyan(envFileName)}.`,\n );\n addedGitignore = true;\n } catch (error) {\n clack.log.warning(\n `Failed to update ${chalk.bold.cyan(\n '.gitignore',\n )} to include ${chalk.bold.cyan(envFileName)}.`,\n );\n\n analytics.capture('wizard interaction', {\n action: 'failed to update gitignore',\n integration,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n\n return {\n relativeEnvFilePath,\n addedEnvVariables,\n addedGitignore,\n };\n }\n }\n } else {\n try {\n const newGitignoreContent = `${envFiles.join('\\n')}\\n`;\n await fs.promises.writeFile(\n path.join(installDir, '.gitignore'),\n newGitignoreContent,\n {\n encoding: 'utf8',\n flag: 'w',\n },\n );\n clack.log.success(\n `Created ${chalk.bold.cyan('.gitignore')} with environment files.`,\n );\n addedGitignore = true;\n } catch (error) {\n clack.log.warning(\n `Failed to create ${chalk.bold.cyan(\n '.gitignore',\n )} with environment files.`,\n );\n\n analytics.capture('wizard interaction', {\n action: 'failed to create gitignore',\n integration,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n\n return {\n relativeEnvFilePath,\n addedEnvVariables,\n addedGitignore,\n };\n }\n }\n\n analytics.capture('wizard interaction', {\n action: 'added environment variables',\n integration,\n });\n\n return {\n relativeEnvFilePath,\n addedEnvVariables,\n addedGitignore,\n };\n });\n}\n"]}
1
+ {"version":3,"file":"add-or-update-environment-variables.js","sourceRoot":"","sources":["../../../src/steps/add-or-update-environment-variables.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport type { Integration } from '../lib/constants';\nimport { traceStep } from '../telemetry';\nimport { analytics } from '../utils/analytics';\nimport { getUI } from '../ui';\nimport { getDotGitignore } from '../utils/file-utils';\nimport * as fs from 'fs';\nimport path from 'path';\n\nexport async function addOrUpdateEnvironmentVariablesStep({\n installDir,\n variables,\n integration,\n}: {\n installDir: string;\n variables: Record<string, string>;\n integration: Integration;\n}): Promise<{\n relativeEnvFilePath: string;\n addedEnvVariables: boolean;\n addedGitignore: boolean;\n}> {\n return traceStep('add-or-update-environment-variables', async () => {\n const envVarContent = Object.entries(variables)\n .map(([key, value]) => `${key}=${value}`)\n .join('\\n');\n\n const dotEnvLocalFilePath = path.join(installDir, '.env.local');\n const dotEnvFilePath = path.join(installDir, '.env');\n const targetEnvFilePath = fs.existsSync(dotEnvLocalFilePath)\n ? dotEnvLocalFilePath\n : dotEnvFilePath;\n\n const dotEnvFileExists = fs.existsSync(targetEnvFilePath);\n\n const relativeEnvFilePath = path.relative(installDir, targetEnvFilePath);\n\n let addedGitignore = false;\n let addedEnvVariables = false;\n\n if (dotEnvFileExists) {\n try {\n let dotEnvFileContent = fs.readFileSync(targetEnvFilePath, 'utf8');\n let updated = false;\n\n for (const [key, value] of Object.entries(variables)) {\n const regex = new RegExp(`^${key}=.*$`, 'm');\n\n if (dotEnvFileContent.match(regex)) {\n dotEnvFileContent = dotEnvFileContent.replace(\n regex,\n `${key}=${value}`,\n );\n updated = true;\n } else {\n if (!dotEnvFileContent.endsWith('\\n')) {\n dotEnvFileContent += '\\n';\n }\n dotEnvFileContent += `${key}=${value}\\n`;\n updated = true;\n }\n }\n\n if (updated) {\n await fs.promises.writeFile(targetEnvFilePath, dotEnvFileContent, {\n encoding: 'utf8',\n flag: 'w',\n });\n getUI().log.success(\n `Updated environment variables in ${chalk.bold.cyan(\n relativeEnvFilePath,\n )}`,\n );\n } else {\n getUI().log.success(\n `${chalk.bold.cyan(\n relativeEnvFilePath,\n )} already has the necessary environment variables.`,\n );\n }\n\n addedEnvVariables = true;\n } catch (error) {\n getUI().log.warn(\n `Failed to update environment variables in ${chalk.bold.cyan(\n relativeEnvFilePath,\n )}. Please update them manually.`,\n );\n\n analytics.wizardCapture('env vars error', {\n integration,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n\n return {\n relativeEnvFilePath,\n addedEnvVariables,\n addedGitignore,\n };\n }\n } else {\n try {\n await fs.promises.writeFile(targetEnvFilePath, envVarContent, {\n encoding: 'utf8',\n flag: 'w',\n });\n getUI().log.success(\n `Created ${chalk.bold.cyan(\n relativeEnvFilePath,\n )} with environment variables.`,\n );\n\n addedEnvVariables = true;\n } catch (error) {\n getUI().log.warn(\n `Failed to create ${chalk.bold.cyan(\n relativeEnvFilePath,\n )} with environment variables. Please add them manually.`,\n );\n\n analytics.wizardCapture('env vars error', {\n integration,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n\n return {\n relativeEnvFilePath,\n addedEnvVariables,\n addedGitignore,\n };\n }\n }\n\n const gitignorePath = getDotGitignore({ installDir });\n\n const envFileName = path.basename(targetEnvFilePath);\n\n const envFiles = [envFileName];\n\n if (gitignorePath) {\n const gitignoreContent = fs.readFileSync(gitignorePath, 'utf8');\n const missingEnvFiles = envFiles.filter(\n (file) => !gitignoreContent.includes(file),\n );\n\n if (missingEnvFiles.length > 0) {\n try {\n const newGitignoreContent = `${gitignoreContent}\\n${missingEnvFiles.join(\n '\\n',\n )}`;\n await fs.promises.writeFile(gitignorePath, newGitignoreContent, {\n encoding: 'utf8',\n flag: 'w',\n });\n getUI().log.success(\n `Updated ${chalk.bold.cyan(\n '.gitignore',\n )} to include ${chalk.bold.cyan(envFileName)}.`,\n );\n addedGitignore = true;\n } catch (error) {\n getUI().log.warn(\n `Failed to update ${chalk.bold.cyan(\n '.gitignore',\n )} to include ${chalk.bold.cyan(envFileName)}.`,\n );\n\n analytics.wizardCapture('env vars error', {\n integration,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n\n return {\n relativeEnvFilePath,\n addedEnvVariables,\n addedGitignore,\n };\n }\n }\n } else {\n try {\n const newGitignoreContent = `${envFiles.join('\\n')}\\n`;\n await fs.promises.writeFile(\n path.join(installDir, '.gitignore'),\n newGitignoreContent,\n {\n encoding: 'utf8',\n flag: 'w',\n },\n );\n getUI().log.success(\n `Created ${chalk.bold.cyan('.gitignore')} with environment files.`,\n );\n addedGitignore = true;\n } catch (error) {\n getUI().log.warn(\n `Failed to create ${chalk.bold.cyan(\n '.gitignore',\n )} with environment files.`,\n );\n\n analytics.wizardCapture('env vars error', {\n integration,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n\n return {\n relativeEnvFilePath,\n addedEnvVariables,\n addedGitignore,\n };\n }\n }\n\n analytics.wizardCapture('env vars added', {\n integration,\n });\n\n return {\n relativeEnvFilePath,\n addedEnvVariables,\n addedGitignore,\n };\n });\n}\n"]}
@@ -1,4 +1,3 @@
1
- export * from './add-editor-rules';
2
1
  export * from './run-prettier';
3
2
  export * from './add-or-update-environment-variables';
4
3
  export * from './add-mcp-server-to-clients';
@@ -14,7 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./add-editor-rules"), exports);
18
17
  __exportStar(require("./run-prettier"), exports);
19
18
  __exportStar(require("./add-or-update-environment-variables"), exports);
20
19
  __exportStar(require("./add-mcp-server-to-clients"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/steps/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,iDAA+B;AAC/B,wEAAsD;AACtD,8DAA4C;AAC5C,iEAA+C","sourcesContent":["export * from './add-editor-rules';\nexport * from './run-prettier';\nexport * from './add-or-update-environment-variables';\nexport * from './add-mcp-server-to-clients';\nexport * from './upload-environment-variables';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/steps/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,wEAAsD;AACtD,8DAA4C;AAC5C,iEAA+C","sourcesContent":["export * from './run-prettier';\nexport * from './add-or-update-environment-variables';\nexport * from './add-mcp-server-to-clients';\nexport * from './upload-environment-variables';\n"]}
@@ -32,25 +32,22 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
35
  Object.defineProperty(exports, "__esModule", { value: true });
39
36
  exports.runPrettierStep = runPrettierStep;
40
37
  const telemetry_1 = require("../telemetry");
41
38
  const analytics_1 = require("../utils/analytics");
42
- const clack_1 = __importDefault(require("../utils/clack"));
43
- const clack_utils_1 = require("../utils/clack-utils");
39
+ const ui_1 = require("../ui");
40
+ const setup_utils_1 = require("../utils/setup-utils");
44
41
  const package_json_1 = require("../utils/package-json");
45
42
  const childProcess = __importStar(require("node:child_process"));
46
43
  async function runPrettierStep({ installDir, integration, }) {
47
44
  return (0, telemetry_1.traceStep)('run-prettier', async () => {
48
- if (!(0, clack_utils_1.isInGitRepo)()) {
45
+ if (!(0, setup_utils_1.isInGitRepo)()) {
49
46
  // We only run formatting on changed files. If we're not in a git repo, we can't find
50
47
  // changed files. So let's early-return without showing any formatting-related messages.
51
48
  return;
52
49
  }
53
- const changedOrUntrackedFiles = (0, clack_utils_1.getUncommittedOrUntrackedFiles)()
50
+ const changedOrUntrackedFiles = (0, setup_utils_1.getUncommittedOrUntrackedFiles)()
54
51
  .map((filename) => {
55
52
  return filename.startsWith('- ') ? filename.slice(2) : filename;
56
53
  })
@@ -59,13 +56,15 @@ async function runPrettierStep({ installDir, integration, }) {
59
56
  // Likewise, if we can't find changed or untracked files, there's no point in running Prettier.
60
57
  return;
61
58
  }
62
- const packageJson = await (0, clack_utils_1.getPackageDotJson)({ installDir });
59
+ const packageJson = await (0, setup_utils_1.tryGetPackageJson)({ installDir });
60
+ if (!packageJson)
61
+ return;
63
62
  const prettierInstalled = (0, package_json_1.hasPackageInstalled)('prettier', packageJson);
64
63
  analytics_1.analytics.setTag('prettier-installed', prettierInstalled);
65
64
  if (!prettierInstalled) {
66
65
  return;
67
66
  }
68
- const prettierSpinner = clack_1.default.spinner();
67
+ const prettierSpinner = (0, ui_1.getUI)().spinner();
69
68
  prettierSpinner.start('Running Prettier on your files.');
70
69
  try {
71
70
  await new Promise((resolve, reject) => {
@@ -84,8 +83,7 @@ async function runPrettierStep({ installDir, integration, }) {
84
83
  return;
85
84
  }
86
85
  prettierSpinner.stop('Prettier has formatted your files.');
87
- analytics_1.analytics.capture('wizard interaction', {
88
- action: 'ran prettier',
86
+ analytics_1.analytics.wizardCapture('ran prettier', {
89
87
  integration,
90
88
  });
91
89
  });
@@ -1 +1 @@
1
- {"version":3,"file":"run-prettier.js","sourceRoot":"","sources":["../../../src/steps/run-prettier.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,0CA+DC;AA3ED,4CAAyC;AACzC,kDAA+C;AAC/C,2DAAmC;AACnC,sDAI8B;AAC9B,wDAA4D;AAE5D,iEAAmD;AAE5C,KAAK,UAAU,eAAe,CAAC,EACpC,UAAU,EACV,WAAW,GAGZ;IACC,OAAO,IAAA,qBAAS,EAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC1C,IAAI,CAAC,IAAA,yBAAW,GAAE,EAAE,CAAC;YACnB,qFAAqF;YACrF,wFAAwF;YACxF,OAAO;QACT,CAAC;QAED,MAAM,uBAAuB,GAAG,IAAA,4CAA8B,GAAE;aAC7D,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChB,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClE,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC;YACpC,+FAA+F;YAC/F,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAiB,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5D,MAAM,iBAAiB,GAAG,IAAA,kCAAmB,EAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAEvE,qBAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;QAE1D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,eAAK,CAAC,OAAO,EAAE,CAAC;QACxC,eAAe,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,YAAY,CAAC,IAAI,CACf,yCAAyC,uBAAuB,EAAE,EAClE,CAAC,GAAG,EAAE,EAAE;oBACN,IAAI,GAAG,EAAE,CAAC;wBACR,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,eAAe,CAAC,IAAI,CAClB,sEAAsE,CACvE,CAAC;YACF,OAAO;QACT,CAAC;QAED,eAAe,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAE3D,qBAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE;YACtC,MAAM,EAAE,cAAc;YACtB,WAAW;SACZ,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { Integration } from '../lib/constants';\nimport { traceStep } from '../telemetry';\nimport { analytics } from '../utils/analytics';\nimport clack from '../utils/clack';\nimport {\n getPackageDotJson,\n getUncommittedOrUntrackedFiles,\n isInGitRepo,\n} from '../utils/clack-utils';\nimport { hasPackageInstalled } from '../utils/package-json';\nimport type { WizardOptions } from '../utils/types';\nimport * as childProcess from 'node:child_process';\n\nexport async function runPrettierStep({\n installDir,\n integration,\n}: Pick<WizardOptions, 'installDir'> & {\n integration: Integration;\n}): Promise<void> {\n return traceStep('run-prettier', async () => {\n if (!isInGitRepo()) {\n // We only run formatting on changed files. If we're not in a git repo, we can't find\n // changed files. So let's early-return without showing any formatting-related messages.\n return;\n }\n\n const changedOrUntrackedFiles = getUncommittedOrUntrackedFiles()\n .map((filename) => {\n return filename.startsWith('- ') ? filename.slice(2) : filename;\n })\n .join(' ');\n\n if (!changedOrUntrackedFiles.length) {\n // Likewise, if we can't find changed or untracked files, there's no point in running Prettier.\n return;\n }\n\n const packageJson = await getPackageDotJson({ installDir });\n const prettierInstalled = hasPackageInstalled('prettier', packageJson);\n\n analytics.setTag('prettier-installed', prettierInstalled);\n\n if (!prettierInstalled) {\n return;\n }\n\n const prettierSpinner = clack.spinner();\n prettierSpinner.start('Running Prettier on your files.');\n\n try {\n await new Promise<void>((resolve, reject) => {\n childProcess.exec(\n `npx prettier --ignore-unknown --write ${changedOrUntrackedFiles}`,\n (err) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n },\n );\n });\n } catch (e) {\n prettierSpinner.stop(\n 'Prettier failed to run. You may want to format the changes manually.',\n );\n return;\n }\n\n prettierSpinner.stop('Prettier has formatted your files.');\n\n analytics.capture('wizard interaction', {\n action: 'ran prettier',\n integration,\n });\n });\n}\n"]}
1
+ {"version":3,"file":"run-prettier.js","sourceRoot":"","sources":["../../../src/steps/run-prettier.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,0CA+DC;AA3ED,4CAAyC;AACzC,kDAA+C;AAC/C,8BAA8B;AAC9B,sDAI8B;AAC9B,wDAA4D;AAE5D,iEAAmD;AAE5C,KAAK,UAAU,eAAe,CAAC,EACpC,UAAU,EACV,WAAW,GAGZ;IACC,OAAO,IAAA,qBAAS,EAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC1C,IAAI,CAAC,IAAA,yBAAW,GAAE,EAAE,CAAC;YACnB,qFAAqF;YACrF,wFAAwF;YACxF,OAAO;QACT,CAAC;QAED,MAAM,uBAAuB,GAAG,IAAA,4CAA8B,GAAE;aAC7D,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChB,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClE,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC;YACpC,+FAA+F;YAC/F,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAiB,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,WAAW;YAAE,OAAO;QACzB,MAAM,iBAAiB,GAAG,IAAA,kCAAmB,EAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAEvE,qBAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;QAE1D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,IAAA,UAAK,GAAE,CAAC,OAAO,EAAE,CAAC;QAC1C,eAAe,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,YAAY,CAAC,IAAI,CACf,yCAAyC,uBAAuB,EAAE,EAClE,CAAC,GAAG,EAAE,EAAE;oBACN,IAAI,GAAG,EAAE,CAAC;wBACR,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,eAAe,CAAC,IAAI,CAClB,sEAAsE,CACvE,CAAC;YACF,OAAO;QACT,CAAC;QAED,eAAe,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAE3D,qBAAS,CAAC,aAAa,CAAC,cAAc,EAAE;YACtC,WAAW;SACZ,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { Integration } from '../lib/constants';\nimport { traceStep } from '../telemetry';\nimport { analytics } from '../utils/analytics';\nimport { getUI } from '../ui';\nimport {\n tryGetPackageJson,\n getUncommittedOrUntrackedFiles,\n isInGitRepo,\n} from '../utils/setup-utils';\nimport { hasPackageInstalled } from '../utils/package-json';\nimport type { WizardOptions } from '../utils/types';\nimport * as childProcess from 'node:child_process';\n\nexport async function runPrettierStep({\n installDir,\n integration,\n}: Pick<WizardOptions, 'installDir'> & {\n integration: Integration;\n}): Promise<void> {\n return traceStep('run-prettier', async () => {\n if (!isInGitRepo()) {\n // We only run formatting on changed files. If we're not in a git repo, we can't find\n // changed files. So let's early-return without showing any formatting-related messages.\n return;\n }\n\n const changedOrUntrackedFiles = getUncommittedOrUntrackedFiles()\n .map((filename) => {\n return filename.startsWith('- ') ? filename.slice(2) : filename;\n })\n .join(' ');\n\n if (!changedOrUntrackedFiles.length) {\n // Likewise, if we can't find changed or untracked files, there's no point in running Prettier.\n return;\n }\n\n const packageJson = await tryGetPackageJson({ installDir });\n if (!packageJson) return;\n const prettierInstalled = hasPackageInstalled('prettier', packageJson);\n\n analytics.setTag('prettier-installed', prettierInstalled);\n\n if (!prettierInstalled) {\n return;\n }\n\n const prettierSpinner = getUI().spinner();\n prettierSpinner.start('Running Prettier on your files.');\n\n try {\n await new Promise<void>((resolve, reject) => {\n childProcess.exec(\n `npx prettier --ignore-unknown --write ${changedOrUntrackedFiles}`,\n (err) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n },\n );\n });\n } catch (e) {\n prettierSpinner.stop(\n 'Prettier failed to run. You may want to format the changes manually.',\n );\n return;\n }\n\n prettierSpinner.stop('Prettier has formatted your files.');\n\n analytics.wizardCapture('ran prettier', {\n integration,\n });\n });\n}\n"]}
@@ -1,8 +1,11 @@
1
- import type { WizardOptions } from '../../utils/types';
2
1
  export declare abstract class EnvironmentProvider {
3
- protected options: WizardOptions;
2
+ protected options: {
3
+ installDir: string;
4
+ };
4
5
  name: string;
5
- constructor(options: WizardOptions);
6
+ constructor(options: {
7
+ installDir: string;
8
+ });
6
9
  abstract detect(): Promise<boolean>;
7
10
  abstract uploadEnvVars(vars: Record<string, string>): Promise<Record<string, boolean>>;
8
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentProvider.js","sourceRoot":"","sources":["../../../../src/steps/upload-environment-variables/EnvironmentProvider.ts"],"names":[],"mappings":";;;AAEA,MAAsB,mBAAmB;IAC7B,OAAO,CAAgB;IAEjC,IAAI,CAAS;IAEb,YAAY,OAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CAOF;AAdD,kDAcC","sourcesContent":["import type { WizardOptions } from '../../utils/types';\n\nexport abstract class EnvironmentProvider {\n protected options: WizardOptions;\n\n name: string;\n\n constructor(options: WizardOptions) {\n this.options = options;\n }\n\n abstract detect(): Promise<boolean>;\n\n abstract uploadEnvVars(\n vars: Record<string, string>,\n ): Promise<Record<string, boolean>>;\n}\n"]}
1
+ {"version":3,"file":"EnvironmentProvider.js","sourceRoot":"","sources":["../../../../src/steps/upload-environment-variables/EnvironmentProvider.ts"],"names":[],"mappings":";;;AAAA,MAAsB,mBAAmB;IAC7B,OAAO,CAAyB;IAE1C,IAAI,CAAS;IAEb,YAAY,OAA+B;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CAOF;AAdD,kDAcC","sourcesContent":["export abstract class EnvironmentProvider {\n protected options: { installDir: string };\n\n name: string;\n\n constructor(options: { installDir: string }) {\n this.options = options;\n }\n\n abstract detect(): Promise<boolean>;\n\n abstract uploadEnvVars(\n vars: Record<string, string>,\n ): Promise<Record<string, boolean>>;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { Integration } from '../../lib/constants';
2
- import type { WizardOptions } from '../../utils/types';
3
- export declare const uploadEnvironmentVariablesStep: (envVars: Record<string, string>, { integration, options, }: {
2
+ import type { WizardSession } from '../../lib/wizard-session';
3
+ export declare const uploadEnvironmentVariablesStep: (envVars: Record<string, string>, { integration, session, }: {
4
4
  integration: Integration;
5
- options: WizardOptions;
5
+ session: WizardSession;
6
6
  }) => Promise<string[]>;
@@ -1,17 +1,13 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.uploadEnvironmentVariablesStep = void 0;
7
4
  const telemetry_1 = require("../../telemetry");
8
5
  const analytics_1 = require("../../utils/analytics");
9
- const clack_1 = __importDefault(require("../../utils/clack"));
10
- const clack_utils_1 = require("../../utils/clack-utils");
6
+ const ui_1 = require("../../ui");
11
7
  const vercel_1 = require("./providers/vercel");
12
- const uploadEnvironmentVariablesStep = async (envVars, { integration, options, }) => {
8
+ const uploadEnvironmentVariablesStep = async (envVars, { integration, session, }) => {
13
9
  const providers = [
14
- new vercel_1.VercelEnvironmentProvider(options),
10
+ new vercel_1.VercelEnvironmentProvider({ installDir: session.installDir }),
15
11
  ];
16
12
  let provider = null;
17
13
  for (const p of providers) {
@@ -21,42 +17,18 @@ const uploadEnvironmentVariablesStep = async (envVars, { integration, options, }
21
17
  }
22
18
  }
23
19
  if (!provider) {
24
- analytics_1.analytics.capture('wizard interaction', {
25
- action: 'not uploading environment variables',
20
+ analytics_1.analytics.wizardCapture('env upload skipped', {
26
21
  reason: 'no environment provider found',
27
22
  integration,
28
23
  });
29
24
  return [];
30
25
  }
31
- const upload = await (0, clack_utils_1.abortIfCancelled)(clack_1.default.select({
32
- message: `It looks like you are using ${provider.name}. Would you like to upload the environment variables?`,
33
- options: [
34
- {
35
- value: true,
36
- label: 'Yes',
37
- hint: `Upload the environment variables to ${provider.name}`,
38
- },
39
- {
40
- value: false,
41
- label: 'No',
42
- hint: `Skip uploading environment variables to ${provider.name} - you can do this later`,
43
- },
44
- ],
45
- }), integration);
46
- if (!upload) {
47
- analytics_1.analytics.capture('wizard interaction', {
48
- action: 'not uploading environment variables',
49
- reason: 'user declined to upload',
50
- provider: provider.name,
51
- integration,
52
- });
53
- return [];
54
- }
26
+ // Auto-accept the agent already wrote env vars via MCP tools
27
+ (0, ui_1.getUI)().log.info(`Uploading environment variables to ${provider.name}...`);
55
28
  const results = await (0, telemetry_1.traceStep)('uploading environment variables', async () => {
56
29
  return await provider.uploadEnvVars(envVars);
57
30
  });
58
- analytics_1.analytics.capture('wizard interaction', {
59
- action: 'uploaded environment variables',
31
+ analytics_1.analytics.wizardCapture('env uploaded', {
60
32
  provider: provider.name,
61
33
  integration,
62
34
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/steps/upload-environment-variables/index.ts"],"names":[],"mappings":";;;;;;AACA,+CAA4C;AAC5C,qDAAkD;AAClD,8DAAsC;AACtC,yDAA2D;AAG3D,+CAA+D;AAExD,MAAM,8BAA8B,GAAG,KAAK,EACjD,OAA+B,EAC/B,EACE,WAAW,EACX,OAAO,GAIR,EACkB,EAAE;IACrB,MAAM,SAAS,GAA0B;QACvC,IAAI,kCAAyB,CAAC,OAAO,CAAC;KACvC,CAAC;IAEF,IAAI,QAAQ,GAA+B,IAAI,CAAC;IAEhD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACrB,QAAQ,GAAG,CAAC,CAAC;YACb,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,qBAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE;YACtC,MAAM,EAAE,qCAAqC;YAC7C,MAAM,EAAE,+BAA+B;YACvC,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAY,MAAM,IAAA,8BAAgB,EAC5C,eAAK,CAAC,MAAM,CAAC;QACX,OAAO,EAAE,+BAA+B,QAAQ,CAAC,IAAI,uDAAuD;QAC5G,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,uCAAuC,QAAQ,CAAC,IAAI,EAAE;aAC7D;YACD;gBACE,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,2CAA2C,QAAQ,CAAC,IAAI,0BAA0B;aACzF;SACF;KACF,CAAC,EACF,WAAW,CACZ,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,qBAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE;YACtC,MAAM,EAAE,qCAAqC;YAC7C,MAAM,EAAE,yBAAyB;YACjC,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAS,EAC7B,iCAAiC,EACjC,KAAK,IAAI,EAAE;QACT,OAAO,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC,CACF,CAAC;IAEF,qBAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE;QACtC,MAAM,EAAE,gCAAgC;QACxC,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,WAAW;KACZ,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC;AA3EW,QAAA,8BAA8B,kCA2EzC","sourcesContent":["import type { Integration } from '../../lib/constants';\nimport { traceStep } from '../../telemetry';\nimport { analytics } from '../../utils/analytics';\nimport clack from '../../utils/clack';\nimport { abortIfCancelled } from '../../utils/clack-utils';\nimport type { WizardOptions } from '../../utils/types';\nimport { EnvironmentProvider } from './EnvironmentProvider';\nimport { VercelEnvironmentProvider } from './providers/vercel';\n\nexport const uploadEnvironmentVariablesStep = async (\n envVars: Record<string, string>,\n {\n integration,\n options,\n }: {\n integration: Integration;\n options: WizardOptions;\n },\n): Promise<string[]> => {\n const providers: EnvironmentProvider[] = [\n new VercelEnvironmentProvider(options),\n ];\n\n let provider: EnvironmentProvider | null = null;\n\n for (const p of providers) {\n if (await p.detect()) {\n provider = p;\n break;\n }\n }\n\n if (!provider) {\n analytics.capture('wizard interaction', {\n action: 'not uploading environment variables',\n reason: 'no environment provider found',\n integration,\n });\n return [];\n }\n\n const upload: boolean = await abortIfCancelled(\n clack.select({\n message: `It looks like you are using ${provider.name}. Would you like to upload the environment variables?`,\n options: [\n {\n value: true,\n label: 'Yes',\n hint: `Upload the environment variables to ${provider.name}`,\n },\n {\n value: false,\n label: 'No',\n hint: `Skip uploading environment variables to ${provider.name} - you can do this later`,\n },\n ],\n }),\n integration,\n );\n\n if (!upload) {\n analytics.capture('wizard interaction', {\n action: 'not uploading environment variables',\n reason: 'user declined to upload',\n provider: provider.name,\n integration,\n });\n return [];\n }\n\n const results = await traceStep(\n 'uploading environment variables',\n async () => {\n return await provider.uploadEnvVars(envVars);\n },\n );\n\n analytics.capture('wizard interaction', {\n action: 'uploaded environment variables',\n provider: provider.name,\n integration,\n });\n\n return Object.keys(results).filter((key) => results[key]);\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/steps/upload-environment-variables/index.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAC5C,qDAAkD;AAClD,iCAAiC;AAGjC,+CAA+D;AAExD,MAAM,8BAA8B,GAAG,KAAK,EACjD,OAA+B,EAC/B,EACE,WAAW,EACX,OAAO,GAIR,EACkB,EAAE;IACrB,MAAM,SAAS,GAA0B;QACvC,IAAI,kCAAyB,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;KAClE,CAAC;IAEF,IAAI,QAAQ,GAA+B,IAAI,CAAC;IAEhD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACrB,QAAQ,GAAG,CAAC,CAAC;YACb,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,qBAAS,CAAC,aAAa,CAAC,oBAAoB,EAAE;YAC5C,MAAM,EAAE,+BAA+B;YACvC,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,+DAA+D;IAC/D,IAAA,UAAK,GAAE,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC;IAE3E,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAS,EAC7B,iCAAiC,EACjC,KAAK,IAAI,EAAE;QACT,OAAO,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC,CACF,CAAC;IAEF,qBAAS,CAAC,aAAa,CAAC,cAAc,EAAE;QACtC,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,WAAW;KACZ,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC;AA/CW,QAAA,8BAA8B,kCA+CzC","sourcesContent":["import type { Integration } from '../../lib/constants';\nimport { traceStep } from '../../telemetry';\nimport { analytics } from '../../utils/analytics';\nimport { getUI } from '../../ui';\nimport type { WizardSession } from '../../lib/wizard-session';\nimport { EnvironmentProvider } from './EnvironmentProvider';\nimport { VercelEnvironmentProvider } from './providers/vercel';\n\nexport const uploadEnvironmentVariablesStep = async (\n envVars: Record<string, string>,\n {\n integration,\n session,\n }: {\n integration: Integration;\n session: WizardSession;\n },\n): Promise<string[]> => {\n const providers: EnvironmentProvider[] = [\n new VercelEnvironmentProvider({ installDir: session.installDir }),\n ];\n\n let provider: EnvironmentProvider | null = null;\n\n for (const p of providers) {\n if (await p.detect()) {\n provider = p;\n break;\n }\n }\n\n if (!provider) {\n analytics.wizardCapture('env upload skipped', {\n reason: 'no environment provider found',\n integration,\n });\n return [];\n }\n\n // Auto-accept the agent already wrote env vars via MCP tools\n getUI().log.info(`Uploading environment variables to ${provider.name}...`);\n\n const results = await traceStep(\n 'uploading environment variables',\n async () => {\n return await provider.uploadEnvVars(envVars);\n },\n );\n\n analytics.wizardCapture('env uploaded', {\n provider: provider.name,\n integration,\n });\n\n return Object.keys(results).filter((key) => results[key]);\n};\n"]}