@amplitude/wizard 1.0.0-beta.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 (333) hide show
  1. package/LICENSE +47 -0
  2. package/README.md +119 -0
  3. package/dist/bin.d.ts +2 -0
  4. package/dist/bin.js +763 -0
  5. package/dist/package.json +144 -0
  6. package/dist/src/frameworks/android/android-wizard-agent.d.ts +6 -0
  7. package/dist/src/frameworks/android/android-wizard-agent.js +72 -0
  8. package/dist/src/frameworks/android/utils.d.ts +11 -0
  9. package/dist/src/frameworks/android/utils.js +32 -0
  10. package/dist/src/frameworks/django/django-wizard-agent.d.ts +8 -0
  11. package/dist/src/frameworks/django/django-wizard-agent.js +171 -0
  12. package/dist/src/frameworks/django/utils.d.ts +31 -0
  13. package/dist/src/frameworks/django/utils.js +305 -0
  14. package/dist/src/frameworks/fastapi/fastapi-wizard-agent.d.ts +11 -0
  15. package/dist/src/frameworks/fastapi/fastapi-wizard-agent.js +189 -0
  16. package/dist/src/frameworks/fastapi/utils.d.ts +26 -0
  17. package/dist/src/frameworks/fastapi/utils.js +257 -0
  18. package/dist/src/frameworks/flask/flask-wizard-agent.d.ts +8 -0
  19. package/dist/src/frameworks/flask/flask-wizard-agent.js +177 -0
  20. package/dist/src/frameworks/flask/utils.d.ts +28 -0
  21. package/dist/src/frameworks/flask/utils.js +343 -0
  22. package/dist/src/frameworks/flutter/flutter-wizard-agent.d.ts +4 -0
  23. package/dist/src/frameworks/flutter/flutter-wizard-agent.js +57 -0
  24. package/dist/src/frameworks/flutter/utils.d.ts +7 -0
  25. package/dist/src/frameworks/flutter/utils.js +64 -0
  26. package/dist/src/frameworks/generic/generic-wizard-agent.d.ts +2 -0
  27. package/dist/src/frameworks/generic/generic-wizard-agent.js +176 -0
  28. package/dist/src/frameworks/go/go-wizard-agent.d.ts +4 -0
  29. package/dist/src/frameworks/go/go-wizard-agent.js +57 -0
  30. package/dist/src/frameworks/go/utils.d.ts +5 -0
  31. package/dist/src/frameworks/go/utils.js +44 -0
  32. package/dist/src/frameworks/java/java-wizard-agent.d.ts +7 -0
  33. package/dist/src/frameworks/java/java-wizard-agent.js +73 -0
  34. package/dist/src/frameworks/java/utils.d.ts +15 -0
  35. package/dist/src/frameworks/java/utils.js +64 -0
  36. package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.d.ts +4 -0
  37. package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.js +57 -0
  38. package/dist/src/frameworks/javascript-web/javascript-web-wizard-agent.d.ts +3 -0
  39. package/dist/src/frameworks/javascript-web/javascript-web-wizard-agent.js +151 -0
  40. package/dist/src/frameworks/javascript-web/utils.d.ts +28 -0
  41. package/dist/src/frameworks/javascript-web/utils.js +153 -0
  42. package/dist/src/frameworks/nextjs/nextjs-wizard-agent.d.ts +7 -0
  43. package/dist/src/frameworks/nextjs/nextjs-wizard-agent.js +98 -0
  44. package/dist/src/frameworks/nextjs/utils.d.ts +12 -0
  45. package/dist/src/frameworks/nextjs/utils.js +51 -0
  46. package/dist/src/frameworks/python/python-wizard-agent.d.ts +7 -0
  47. package/dist/src/frameworks/python/python-wizard-agent.js +193 -0
  48. package/dist/src/frameworks/python/utils.d.ts +28 -0
  49. package/dist/src/frameworks/python/utils.js +146 -0
  50. package/dist/src/frameworks/react-native/react-native-wizard-agent.d.ts +6 -0
  51. package/dist/src/frameworks/react-native/react-native-wizard-agent.js +84 -0
  52. package/dist/src/frameworks/react-native/utils.d.ts +21 -0
  53. package/dist/src/frameworks/react-native/utils.js +82 -0
  54. package/dist/src/frameworks/react-router/react-router-wizard-agent.d.ts +7 -0
  55. package/dist/src/frameworks/react-router/react-router-wizard-agent.js +98 -0
  56. package/dist/src/frameworks/react-router/utils.d.ts +13 -0
  57. package/dist/src/frameworks/react-router/utils.js +160 -0
  58. package/dist/src/frameworks/swift/swift-wizard-agent.d.ts +7 -0
  59. package/dist/src/frameworks/swift/swift-wizard-agent.js +72 -0
  60. package/dist/src/frameworks/swift/utils.d.ts +12 -0
  61. package/dist/src/frameworks/swift/utils.js +82 -0
  62. package/dist/src/frameworks/unity/unity-wizard-agent.d.ts +6 -0
  63. package/dist/src/frameworks/unity/unity-wizard-agent.js +79 -0
  64. package/dist/src/frameworks/unity/utils.d.ts +12 -0
  65. package/dist/src/frameworks/unity/utils.js +66 -0
  66. package/dist/src/frameworks/unreal/unreal-wizard-agent.d.ts +6 -0
  67. package/dist/src/frameworks/unreal/unreal-wizard-agent.js +77 -0
  68. package/dist/src/frameworks/unreal/utils.d.ts +10 -0
  69. package/dist/src/frameworks/unreal/utils.js +29 -0
  70. package/dist/src/frameworks/vue/vue-wizard-agent.d.ts +4 -0
  71. package/dist/src/frameworks/vue/vue-wizard-agent.js +64 -0
  72. package/dist/src/lib/agent-hooks.d.ts +26 -0
  73. package/dist/src/lib/agent-hooks.js +118 -0
  74. package/dist/src/lib/agent-interface.d.ts +175 -0
  75. package/dist/src/lib/agent-interface.js +1217 -0
  76. package/dist/src/lib/agent-runner.d.ts +9 -0
  77. package/dist/src/lib/agent-runner.js +415 -0
  78. package/dist/src/lib/ampli-config.d.ts +105 -0
  79. package/dist/src/lib/ampli-config.js +178 -0
  80. package/dist/src/lib/api.d.ts +107 -0
  81. package/dist/src/lib/api.js +442 -0
  82. package/dist/src/lib/commandments.d.ts +1 -0
  83. package/dist/src/lib/commandments.js +24 -0
  84. package/dist/src/lib/console-query.d.ts +27 -0
  85. package/dist/src/lib/console-query.js +121 -0
  86. package/dist/src/lib/constants.d.ts +124 -0
  87. package/dist/src/lib/constants.js +170 -0
  88. package/dist/src/lib/detect-amplitude.d.ts +31 -0
  89. package/dist/src/lib/detect-amplitude.js +407 -0
  90. package/dist/src/lib/framework-config.d.ts +188 -0
  91. package/dist/src/lib/framework-config.js +21 -0
  92. package/dist/src/lib/health-checks/endpoints.d.ts +3 -0
  93. package/dist/src/lib/health-checks/endpoints.js +45 -0
  94. package/dist/src/lib/health-checks/index.d.ts +4 -0
  95. package/dist/src/lib/health-checks/index.js +22 -0
  96. package/dist/src/lib/health-checks/readiness.d.ts +24 -0
  97. package/dist/src/lib/health-checks/readiness.js +118 -0
  98. package/dist/src/lib/health-checks/statuspage.d.ts +9 -0
  99. package/dist/src/lib/health-checks/statuspage.js +104 -0
  100. package/dist/src/lib/health-checks/types.d.ts +31 -0
  101. package/dist/src/lib/health-checks/types.js +9 -0
  102. package/dist/src/lib/helper-functions.d.ts +1 -0
  103. package/dist/src/lib/helper-functions.js +5 -0
  104. package/dist/src/lib/middleware/benchmark.d.ts +54 -0
  105. package/dist/src/lib/middleware/benchmark.js +48 -0
  106. package/dist/src/lib/middleware/benchmarks/cache-tracker.d.ts +44 -0
  107. package/dist/src/lib/middleware/benchmarks/cache-tracker.js +80 -0
  108. package/dist/src/lib/middleware/benchmarks/compaction-tracker.d.ts +29 -0
  109. package/dist/src/lib/middleware/benchmarks/compaction-tracker.js +59 -0
  110. package/dist/src/lib/middleware/benchmarks/context-size-tracker.d.ts +26 -0
  111. package/dist/src/lib/middleware/benchmarks/context-size-tracker.js +55 -0
  112. package/dist/src/lib/middleware/benchmarks/cost-tracker.d.ts +16 -0
  113. package/dist/src/lib/middleware/benchmarks/cost-tracker.js +75 -0
  114. package/dist/src/lib/middleware/benchmarks/duration-tracker.d.ts +20 -0
  115. package/dist/src/lib/middleware/benchmarks/duration-tracker.js +39 -0
  116. package/dist/src/lib/middleware/benchmarks/index.d.ts +9 -0
  117. package/dist/src/lib/middleware/benchmarks/index.js +67 -0
  118. package/dist/src/lib/middleware/benchmarks/json-writer.d.ts +15 -0
  119. package/dist/src/lib/middleware/benchmarks/json-writer.js +144 -0
  120. package/dist/src/lib/middleware/benchmarks/summary.d.ts +9 -0
  121. package/dist/src/lib/middleware/benchmarks/summary.js +105 -0
  122. package/dist/src/lib/middleware/benchmarks/token-tracker.d.ts +40 -0
  123. package/dist/src/lib/middleware/benchmarks/token-tracker.js +76 -0
  124. package/dist/src/lib/middleware/benchmarks/turn-counter.d.ts +34 -0
  125. package/dist/src/lib/middleware/benchmarks/turn-counter.js +58 -0
  126. package/dist/src/lib/middleware/config.d.ts +24 -0
  127. package/dist/src/lib/middleware/config.js +96 -0
  128. package/dist/src/lib/middleware/index.d.ts +11 -0
  129. package/dist/src/lib/middleware/index.js +17 -0
  130. package/dist/src/lib/middleware/phase-detector.d.ts +8 -0
  131. package/dist/src/lib/middleware/phase-detector.js +63 -0
  132. package/dist/src/lib/middleware/pipeline.d.ts +29 -0
  133. package/dist/src/lib/middleware/pipeline.js +81 -0
  134. package/dist/src/lib/middleware/schemas.d.ts +27 -0
  135. package/dist/src/lib/middleware/schemas.js +84 -0
  136. package/dist/src/lib/middleware/types.d.ts +94 -0
  137. package/dist/src/lib/middleware/types.js +8 -0
  138. package/dist/src/lib/package-manager-detection.d.ts +42 -0
  139. package/dist/src/lib/package-manager-detection.js +292 -0
  140. package/dist/src/lib/registry.d.ts +3 -0
  141. package/dist/src/lib/registry.js +42 -0
  142. package/dist/src/lib/safe-tools.d.ts +2 -0
  143. package/dist/src/lib/safe-tools.js +214 -0
  144. package/dist/src/lib/wizard-session.d.ts +220 -0
  145. package/dist/src/lib/wizard-session.js +127 -0
  146. package/dist/src/lib/wizard-tools.d.ts +82 -0
  147. package/dist/src/lib/wizard-tools.js +499 -0
  148. package/dist/src/run.d.ts +19 -0
  149. package/dist/src/run.js +151 -0
  150. package/dist/src/steps/add-mcp-server-to-clients/MCPClient.d.ts +30 -0
  151. package/dist/src/steps/add-mcp-server-to-clients/MCPClient.js +141 -0
  152. package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.d.ts +29 -0
  153. package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.js +180 -0
  154. package/dist/src/steps/add-mcp-server-to-clients/clients/claude.d.ts +20 -0
  155. package/dist/src/steps/add-mcp-server-to-clients/clients/claude.js +63 -0
  156. package/dist/src/steps/add-mcp-server-to-clients/clients/codex.d.ts +28 -0
  157. package/dist/src/steps/add-mcp-server-to-clients/clients/codex.js +77 -0
  158. package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.d.ts +24 -0
  159. package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.js +60 -0
  160. package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.d.ts +27 -0
  161. package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.js +101 -0
  162. package/dist/src/steps/add-mcp-server-to-clients/clients/zed.d.ts +26 -0
  163. package/dist/src/steps/add-mcp-server-to-clients/clients/zed.js +102 -0
  164. package/dist/src/steps/add-mcp-server-to-clients/defaults.d.ts +44 -0
  165. package/dist/src/steps/add-mcp-server-to-clients/defaults.js +123 -0
  166. package/dist/src/steps/add-mcp-server-to-clients/index.d.ts +19 -0
  167. package/dist/src/steps/add-mcp-server-to-clients/index.js +110 -0
  168. package/dist/src/steps/add-or-update-environment-variables.d.ts +10 -0
  169. package/dist/src/steps/add-or-update-environment-variables.js +188 -0
  170. package/dist/src/steps/index.d.ts +4 -0
  171. package/dist/src/steps/index.js +20 -0
  172. package/dist/src/steps/run-prettier.d.ts +5 -0
  173. package/dist/src/steps/run-prettier.js +90 -0
  174. package/dist/src/steps/upload-environment-variables/EnvironmentProvider.d.ts +11 -0
  175. package/dist/src/steps/upload-environment-variables/EnvironmentProvider.js +11 -0
  176. package/dist/src/steps/upload-environment-variables/index.d.ts +6 -0
  177. package/dist/src/steps/upload-environment-variables/index.js +37 -0
  178. package/dist/src/steps/upload-environment-variables/providers/vercel.d.ts +15 -0
  179. package/dist/src/steps/upload-environment-variables/providers/vercel.js +145 -0
  180. package/dist/src/telemetry.d.ts +2 -0
  181. package/dist/src/telemetry.js +12 -0
  182. package/dist/src/ui/index.d.ts +8 -0
  183. package/dist/src/ui/index.js +16 -0
  184. package/dist/src/ui/logging-ui.d.ts +56 -0
  185. package/dist/src/ui/logging-ui.js +157 -0
  186. package/dist/src/ui/tui/App.d.ts +6 -0
  187. package/dist/src/ui/tui/App.js +34 -0
  188. package/dist/src/ui/tui/components/AmplitudeLogo.d.ts +5 -0
  189. package/dist/src/ui/tui/components/AmplitudeLogo.js +81 -0
  190. package/dist/src/ui/tui/components/AmplitudeTextLogo.d.ts +3 -0
  191. package/dist/src/ui/tui/components/AmplitudeTextLogo.js +31 -0
  192. package/dist/src/ui/tui/components/ConsoleView.d.ts +23 -0
  193. package/dist/src/ui/tui/components/ConsoleView.js +220 -0
  194. package/dist/src/ui/tui/components/TitleBar.d.ts +6 -0
  195. package/dist/src/ui/tui/components/TitleBar.js +16 -0
  196. package/dist/src/ui/tui/console-commands.d.ts +16 -0
  197. package/dist/src/ui/tui/console-commands.js +31 -0
  198. package/dist/src/ui/tui/context/CommandModeContext.d.ts +2 -0
  199. package/dist/src/ui/tui/context/CommandModeContext.js +3 -0
  200. package/dist/src/ui/tui/flows.d.ts +48 -0
  201. package/dist/src/ui/tui/flows.js +154 -0
  202. package/dist/src/ui/tui/hooks/useScreenInput.d.ts +13 -0
  203. package/dist/src/ui/tui/hooks/useScreenInput.js +18 -0
  204. package/dist/src/ui/tui/hooks/useStdoutDimensions.d.ts +9 -0
  205. package/dist/src/ui/tui/hooks/useStdoutDimensions.js +29 -0
  206. package/dist/src/ui/tui/ink-ui.d.ts +62 -0
  207. package/dist/src/ui/tui/ink-ui.js +142 -0
  208. package/dist/src/ui/tui/primitives/CardLayout.d.ts +12 -0
  209. package/dist/src/ui/tui/primitives/CardLayout.js +9 -0
  210. package/dist/src/ui/tui/primitives/ConfirmationInput.d.ts +13 -0
  211. package/dist/src/ui/tui/primitives/ConfirmationInput.js +35 -0
  212. package/dist/src/ui/tui/primitives/DissolveTransition.d.ts +21 -0
  213. package/dist/src/ui/tui/primitives/DissolveTransition.js +143 -0
  214. package/dist/src/ui/tui/primitives/EventPlanViewer.d.ts +9 -0
  215. package/dist/src/ui/tui/primitives/EventPlanViewer.js +9 -0
  216. package/dist/src/ui/tui/primitives/KagiSmallWebViewer.d.ts +7 -0
  217. package/dist/src/ui/tui/primitives/KagiSmallWebViewer.js +101 -0
  218. package/dist/src/ui/tui/primitives/LoadingBox.d.ts +8 -0
  219. package/dist/src/ui/tui/primitives/LoadingBox.js +9 -0
  220. package/dist/src/ui/tui/primitives/LogViewer.d.ts +11 -0
  221. package/dist/src/ui/tui/primitives/LogViewer.js +55 -0
  222. package/dist/src/ui/tui/primitives/PickerMenu.d.ts +20 -0
  223. package/dist/src/ui/tui/primitives/PickerMenu.js +212 -0
  224. package/dist/src/ui/tui/primitives/ProgressList.d.ts +15 -0
  225. package/dist/src/ui/tui/primitives/ProgressList.js +29 -0
  226. package/dist/src/ui/tui/primitives/PromptLabel.d.ts +11 -0
  227. package/dist/src/ui/tui/primitives/PromptLabel.js +12 -0
  228. package/dist/src/ui/tui/primitives/ReportViewer.d.ts +12 -0
  229. package/dist/src/ui/tui/primitives/ReportViewer.js +99 -0
  230. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.d.ts +26 -0
  231. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.js +29 -0
  232. package/dist/src/ui/tui/primitives/SlashCommandInput.d.ts +21 -0
  233. package/dist/src/ui/tui/primitives/SlashCommandInput.js +85 -0
  234. package/dist/src/ui/tui/primitives/SnakeGame.d.ts +1 -0
  235. package/dist/src/ui/tui/primitives/SnakeGame.js +1 -0
  236. package/dist/src/ui/tui/primitives/SplitView.d.ts +11 -0
  237. package/dist/src/ui/tui/primitives/SplitView.js +8 -0
  238. package/dist/src/ui/tui/primitives/TabContainer.d.ts +18 -0
  239. package/dist/src/ui/tui/primitives/TabContainer.js +30 -0
  240. package/dist/src/ui/tui/primitives/index.d.ts +23 -0
  241. package/dist/src/ui/tui/primitives/index.js +19 -0
  242. package/dist/src/ui/tui/router.d.ts +61 -0
  243. package/dist/src/ui/tui/router.js +104 -0
  244. package/dist/src/ui/tui/screen-registry.d.ts +19 -0
  245. package/dist/src/ui/tui/screen-registry.js +56 -0
  246. package/dist/src/ui/tui/screens/ActivationOptionsScreen.d.ts +12 -0
  247. package/dist/src/ui/tui/screens/ActivationOptionsScreen.js +57 -0
  248. package/dist/src/ui/tui/screens/AuthScreen.d.ts +18 -0
  249. package/dist/src/ui/tui/screens/AuthScreen.js +107 -0
  250. package/dist/src/ui/tui/screens/ChecklistScreen.d.ts +22 -0
  251. package/dist/src/ui/tui/screens/ChecklistScreen.js +122 -0
  252. package/dist/src/ui/tui/screens/DataIngestionCheckScreen.d.ts +24 -0
  253. package/dist/src/ui/tui/screens/DataIngestionCheckScreen.js +113 -0
  254. package/dist/src/ui/tui/screens/DataSetupScreen.d.ts +17 -0
  255. package/dist/src/ui/tui/screens/DataSetupScreen.js +73 -0
  256. package/dist/src/ui/tui/screens/IntroScreen.d.ts +16 -0
  257. package/dist/src/ui/tui/screens/IntroScreen.js +86 -0
  258. package/dist/src/ui/tui/screens/LoginScreen.d.ts +15 -0
  259. package/dist/src/ui/tui/screens/LoginScreen.js +65 -0
  260. package/dist/src/ui/tui/screens/LogoutScreen.d.ts +12 -0
  261. package/dist/src/ui/tui/screens/LogoutScreen.js +28 -0
  262. package/dist/src/ui/tui/screens/McpScreen.d.ts +26 -0
  263. package/dist/src/ui/tui/screens/McpScreen.js +148 -0
  264. package/dist/src/ui/tui/screens/OutageScreen.d.ts +10 -0
  265. package/dist/src/ui/tui/screens/OutageScreen.js +17 -0
  266. package/dist/src/ui/tui/screens/OutroScreen.d.ts +11 -0
  267. package/dist/src/ui/tui/screens/OutroScreen.js +69 -0
  268. package/dist/src/ui/tui/screens/RegionSelectScreen.d.ts +17 -0
  269. package/dist/src/ui/tui/screens/RegionSelectScreen.js +40 -0
  270. package/dist/src/ui/tui/screens/RunScreen.d.ts +16 -0
  271. package/dist/src/ui/tui/screens/RunScreen.js +212 -0
  272. package/dist/src/ui/tui/screens/SettingsOverrideScreen.d.ts +10 -0
  273. package/dist/src/ui/tui/screens/SettingsOverrideScreen.js +23 -0
  274. package/dist/src/ui/tui/screens/SetupScreen.d.ts +13 -0
  275. package/dist/src/ui/tui/screens/SetupScreen.js +73 -0
  276. package/dist/src/ui/tui/screens/SlackScreen.d.ts +25 -0
  277. package/dist/src/ui/tui/screens/SlackScreen.js +97 -0
  278. package/dist/src/ui/tui/services/mcp-installer.d.ts +25 -0
  279. package/dist/src/ui/tui/services/mcp-installer.js +82 -0
  280. package/dist/src/ui/tui/start-tui.d.ts +10 -0
  281. package/dist/src/ui/tui/start-tui.js +50 -0
  282. package/dist/src/ui/tui/store.d.ts +231 -0
  283. package/dist/src/ui/tui/store.js +568 -0
  284. package/dist/src/ui/tui/styles.d.ts +31 -0
  285. package/dist/src/ui/tui/styles.js +33 -0
  286. package/dist/src/ui/wizard-ui.d.ts +110 -0
  287. package/dist/src/ui/wizard-ui.js +18 -0
  288. package/dist/src/utils/ampli-settings.d.ts +37 -0
  289. package/dist/src/utils/ampli-settings.js +182 -0
  290. package/dist/src/utils/analytics.d.ts +35 -0
  291. package/dist/src/utils/analytics.js +133 -0
  292. package/dist/src/utils/anthropic-status.d.ts +17 -0
  293. package/dist/src/utils/anthropic-status.js +51 -0
  294. package/dist/src/utils/api-key-store.d.ts +35 -0
  295. package/dist/src/utils/api-key-store.js +176 -0
  296. package/dist/src/utils/bash.d.ts +2 -0
  297. package/dist/src/utils/bash.js +53 -0
  298. package/dist/src/utils/custom-headers.d.ts +9 -0
  299. package/dist/src/utils/custom-headers.js +23 -0
  300. package/dist/src/utils/debug.d.ts +23 -0
  301. package/dist/src/utils/debug.js +86 -0
  302. package/dist/src/utils/environment.d.ts +4 -0
  303. package/dist/src/utils/environment.js +76 -0
  304. package/dist/src/utils/file-utils.d.ts +2 -0
  305. package/dist/src/utils/file-utils.js +16 -0
  306. package/dist/src/utils/get-api-key.d.ts +17 -0
  307. package/dist/src/utils/get-api-key.js +50 -0
  308. package/dist/src/utils/logging.d.ts +9 -0
  309. package/dist/src/utils/logging.js +48 -0
  310. package/dist/src/utils/oauth.d.ts +53 -0
  311. package/dist/src/utils/oauth.js +354 -0
  312. package/dist/src/utils/package-json.d.ts +25 -0
  313. package/dist/src/utils/package-json.js +26 -0
  314. package/dist/src/utils/package-manager.d.ts +21 -0
  315. package/dist/src/utils/package-manager.js +208 -0
  316. package/dist/src/utils/semver.d.ts +21 -0
  317. package/dist/src/utils/semver.js +61 -0
  318. package/dist/src/utils/setup-utils.d.ts +82 -0
  319. package/dist/src/utils/setup-utils.js +467 -0
  320. package/dist/src/utils/shell-completions.d.ts +10 -0
  321. package/dist/src/utils/shell-completions.js +199 -0
  322. package/dist/src/utils/string.d.ts +1 -0
  323. package/dist/src/utils/string.js +8 -0
  324. package/dist/src/utils/types.d.ts +72 -0
  325. package/dist/src/utils/types.js +2 -0
  326. package/dist/src/utils/urls.d.ts +14 -0
  327. package/dist/src/utils/urls.js +69 -0
  328. package/dist/src/utils/vendor/is-unicorn-supported.d.ts +1 -0
  329. package/dist/src/utils/vendor/is-unicorn-supported.js +23 -0
  330. package/dist/src/utils/wizard-abort.d.ts +13 -0
  331. package/dist/src/utils/wizard-abort.js +56 -0
  332. package/man/amplitude-wizard.1 +170 -0
  333. package/package.json +144 -0
@@ -0,0 +1,30 @@
1
+ export type MCPServerConfig = Record<string, unknown>;
2
+ export declare abstract class MCPClient {
3
+ name: string;
4
+ abstract getConfigPath(): Promise<string>;
5
+ abstract getServerPropertyName(): string;
6
+ abstract isServerInstalled(local?: boolean): Promise<boolean>;
7
+ abstract addServer(apiKey?: string, selectedFeatures?: string[], local?: boolean): Promise<{
8
+ success: boolean;
9
+ }>;
10
+ abstract removeServer(local?: boolean): Promise<{
11
+ success: boolean;
12
+ }>;
13
+ abstract isClientSupported(): Promise<boolean>;
14
+ }
15
+ export declare abstract class DefaultMCPClient extends MCPClient {
16
+ name: string;
17
+ constructor();
18
+ getServerPropertyName(): string;
19
+ getServerConfig(apiKey: string | undefined, type: 'sse' | 'streamable-http', selectedFeatures?: string[], local?: boolean): MCPServerConfig;
20
+ isServerInstalled(local?: boolean): Promise<boolean>;
21
+ addServer(apiKey?: string, selectedFeatures?: string[], local?: boolean): Promise<{
22
+ success: boolean;
23
+ }>;
24
+ _addServerType(apiKey: string | undefined, type: 'sse' | 'streamable-http', selectedFeatures?: string[], local?: boolean): Promise<{
25
+ success: boolean;
26
+ }>;
27
+ removeServer(local?: boolean): Promise<{
28
+ success: boolean;
29
+ }>;
30
+ }
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DefaultMCPClient = exports.MCPClient = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const jsonc = __importStar(require("jsonc-parser"));
40
+ const zod_1 = require("zod");
41
+ const defaults_1 = require("./defaults");
42
+ const MCPConfigSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()));
43
+ class MCPClient {
44
+ name;
45
+ }
46
+ exports.MCPClient = MCPClient;
47
+ class DefaultMCPClient extends MCPClient {
48
+ name = 'Default';
49
+ constructor() {
50
+ super();
51
+ }
52
+ getServerPropertyName() {
53
+ return 'mcpServers';
54
+ }
55
+ getServerConfig(apiKey, type, selectedFeatures, local) {
56
+ return (0, defaults_1.getDefaultServerConfig)(apiKey, type, selectedFeatures, local);
57
+ }
58
+ async isServerInstalled(local) {
59
+ try {
60
+ const configPath = await this.getConfigPath();
61
+ if (!fs.existsSync(configPath)) {
62
+ return false;
63
+ }
64
+ const configContent = await fs.promises.readFile(configPath, 'utf8');
65
+ const parsed = MCPConfigSchema.safeParse(jsonc.parse(configContent));
66
+ const config = parsed.success ? parsed.data : {};
67
+ const serverPropertyName = this.getServerPropertyName();
68
+ const serverName = local ? 'amplitude-local' : 'amplitude';
69
+ return (serverPropertyName in config && serverName in config[serverPropertyName]);
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ }
75
+ async addServer(apiKey, selectedFeatures, local) {
76
+ return this._addServerType(apiKey, 'sse', selectedFeatures, local);
77
+ }
78
+ async _addServerType(apiKey, type, selectedFeatures, local) {
79
+ try {
80
+ const configPath = await this.getConfigPath();
81
+ const configDir = path.dirname(configPath);
82
+ await fs.promises.mkdir(configDir, { recursive: true });
83
+ const serverPropertyName = this.getServerPropertyName();
84
+ let configContent = '';
85
+ let existingConfig = {};
86
+ if (fs.existsSync(configPath)) {
87
+ configContent = await fs.promises.readFile(configPath, 'utf8');
88
+ const parsed = MCPConfigSchema.safeParse(jsonc.parse(configContent));
89
+ existingConfig = parsed.success ? parsed.data : {};
90
+ }
91
+ const newServerConfig = this.getServerConfig(apiKey, type, selectedFeatures, local);
92
+ if (!existingConfig[serverPropertyName]) {
93
+ existingConfig[serverPropertyName] = {};
94
+ }
95
+ const serverName = local ? 'amplitude-local' : 'amplitude';
96
+ existingConfig[serverPropertyName][serverName] = newServerConfig;
97
+ const edits = jsonc.modify(configContent, [serverPropertyName, serverName], newServerConfig, {
98
+ formattingOptions: {
99
+ tabSize: 2,
100
+ insertSpaces: true,
101
+ },
102
+ });
103
+ const modifiedContent = jsonc.applyEdits(configContent, edits);
104
+ await fs.promises.writeFile(configPath, modifiedContent, 'utf8');
105
+ return { success: true };
106
+ }
107
+ catch {
108
+ return { success: false };
109
+ }
110
+ }
111
+ async removeServer(local) {
112
+ try {
113
+ const configPath = await this.getConfigPath();
114
+ if (!fs.existsSync(configPath)) {
115
+ return { success: false };
116
+ }
117
+ const configContent = await fs.promises.readFile(configPath, 'utf8');
118
+ const parsed = MCPConfigSchema.safeParse(jsonc.parse(configContent));
119
+ const config = parsed.success ? parsed.data : {};
120
+ const serverPropertyName = this.getServerPropertyName();
121
+ const serverName = local ? 'amplitude-local' : 'amplitude';
122
+ if (serverPropertyName in config &&
123
+ serverName in config[serverPropertyName]) {
124
+ const edits = jsonc.modify(configContent, [serverPropertyName, serverName], undefined, {
125
+ formattingOptions: {
126
+ tabSize: 2,
127
+ insertSpaces: true,
128
+ },
129
+ });
130
+ const modifiedContent = jsonc.applyEdits(configContent, edits);
131
+ await fs.promises.writeFile(configPath, modifiedContent, 'utf8');
132
+ return { success: true };
133
+ }
134
+ }
135
+ catch {
136
+ //
137
+ }
138
+ return { success: false };
139
+ }
140
+ }
141
+ exports.DefaultMCPClient = DefaultMCPClient;
@@ -0,0 +1,29 @@
1
+ import { DefaultMCPClient } from '../MCPClient';
2
+ import { DefaultMCPClientConfig } from '../defaults';
3
+ import { z } from 'zod';
4
+ export declare const ClaudeCodeMCPConfig: z.ZodObject<{
5
+ mcpServers: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
6
+ command: z.ZodOptional<z.ZodString>;
7
+ args: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
9
+ }, z.core.$strip>, z.ZodObject<{
10
+ url: z.ZodString;
11
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
12
+ }, z.core.$strip>]>>;
13
+ }, z.core.$loose>;
14
+ export type ClaudeCodeMCPConfig = z.infer<typeof DefaultMCPClientConfig>;
15
+ export declare class ClaudeCodeMCPClient extends DefaultMCPClient {
16
+ name: string;
17
+ private claudeBinaryPath;
18
+ constructor();
19
+ private findClaudeBinary;
20
+ isClientSupported(): Promise<boolean>;
21
+ isServerInstalled(local?: boolean): Promise<boolean>;
22
+ getConfigPath(): Promise<string>;
23
+ addServer(apiKey?: string, selectedFeatures?: string[], local?: boolean): Promise<{
24
+ success: boolean;
25
+ }>;
26
+ removeServer(local?: boolean): Promise<{
27
+ success: boolean;
28
+ }>;
29
+ }
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ClaudeCodeMCPClient = exports.ClaudeCodeMCPConfig = void 0;
37
+ const MCPClient_1 = require("../MCPClient");
38
+ const defaults_1 = require("../defaults");
39
+ const child_process_1 = require("child_process");
40
+ const analytics_1 = require("../../../utils/analytics");
41
+ const debug_1 = require("../../../utils/debug");
42
+ const os = __importStar(require("os"));
43
+ const path = __importStar(require("path"));
44
+ const fs = __importStar(require("fs"));
45
+ exports.ClaudeCodeMCPConfig = defaults_1.DefaultMCPClientConfig;
46
+ class ClaudeCodeMCPClient extends MCPClient_1.DefaultMCPClient {
47
+ name = 'Claude Code';
48
+ claudeBinaryPath = null;
49
+ constructor() {
50
+ super();
51
+ }
52
+ findClaudeBinary() {
53
+ if (this.claudeBinaryPath) {
54
+ return this.claudeBinaryPath;
55
+ }
56
+ // Common installation paths for Claude Code CLI
57
+ const possiblePaths = [
58
+ path.join(os.homedir(), '.local', 'bin', 'claude'),
59
+ path.join(os.homedir(), '.claude', 'local', 'claude'),
60
+ '/usr/local/bin/claude',
61
+ '/opt/homebrew/bin/claude',
62
+ ];
63
+ for (const claudePath of possiblePaths) {
64
+ if (fs.existsSync(claudePath)) {
65
+ (0, debug_1.debug)(` Found claude binary at: ${claudePath}`);
66
+ this.claudeBinaryPath = claudePath;
67
+ return claudePath;
68
+ }
69
+ }
70
+ // Search PATH directories manually — no exec, no tainted strings passed
71
+ // to child_process.
72
+ const pathDirs = (process.env.PATH ?? '').split(path.delimiter);
73
+ for (const dir of pathDirs) {
74
+ if (!dir)
75
+ continue;
76
+ const candidate = path.join(dir, 'claude');
77
+ if (fs.existsSync(candidate)) {
78
+ (0, debug_1.debug)(` Found claude in PATH: ${candidate}`);
79
+ this.claudeBinaryPath = candidate;
80
+ return candidate;
81
+ }
82
+ }
83
+ return null;
84
+ }
85
+ isClientSupported() {
86
+ try {
87
+ (0, debug_1.debug)(' Checking for Claude Code...');
88
+ const claudeBinary = this.findClaudeBinary();
89
+ if (!claudeBinary) {
90
+ (0, debug_1.debug)(' Claude Code not found. Installation paths checked:');
91
+ (0, debug_1.debug)(` - ${path.join(os.homedir(), '.local', 'bin', 'claude')}`);
92
+ (0, debug_1.debug)(` - ${path.join(os.homedir(), '.claude', 'local', 'claude')}`);
93
+ (0, debug_1.debug)(` - /usr/local/bin/claude`);
94
+ (0, debug_1.debug)(` - /opt/homebrew/bin/claude`);
95
+ (0, debug_1.debug)(` - PATH`);
96
+ return Promise.resolve(false);
97
+ }
98
+ const result = (0, child_process_1.spawnSync)(claudeBinary, ['--version'], { stdio: 'pipe' });
99
+ if (result.status !== 0) {
100
+ return Promise.resolve(false);
101
+ }
102
+ const version = result.stdout.toString().trim();
103
+ (0, debug_1.debug)(` Claude Code detected: ${version}`);
104
+ return Promise.resolve(true);
105
+ }
106
+ catch (error) {
107
+ (0, debug_1.debug)(` Claude Code check failed: ${error instanceof Error ? error.message : String(error)}`);
108
+ return Promise.resolve(false);
109
+ }
110
+ }
111
+ isServerInstalled(local) {
112
+ try {
113
+ const claudeBinary = this.findClaudeBinary();
114
+ if (!claudeBinary) {
115
+ return Promise.resolve(false);
116
+ }
117
+ const result = (0, child_process_1.spawnSync)(claudeBinary, ['mcp', 'list'], {
118
+ stdio: 'pipe',
119
+ });
120
+ const serverName = local ? 'amplitude-local' : 'amplitude';
121
+ if (result.stdout.toString().includes(serverName)) {
122
+ return Promise.resolve(true);
123
+ }
124
+ }
125
+ catch {
126
+ //
127
+ }
128
+ return Promise.resolve(false);
129
+ }
130
+ getConfigPath() {
131
+ throw new Error('Not implemented');
132
+ }
133
+ addServer(apiKey, selectedFeatures, local) {
134
+ const binary = this.findClaudeBinary();
135
+ if (!binary) {
136
+ return Promise.resolve({ success: false });
137
+ }
138
+ const serverName = local ? 'amplitude-local' : 'amplitude';
139
+ const url = (0, defaults_1.buildMCPUrl)('streamable-http', selectedFeatures, local);
140
+ // Build args array — no shell interpolation, no injection risk
141
+ const addArgs = ['mcp', 'add', '--transport', 'http', serverName, url];
142
+ if (apiKey) {
143
+ addArgs.push('--header', `Authorization: Bearer ${apiKey}`);
144
+ }
145
+ addArgs.push('-s', 'user');
146
+ let addResult = (0, child_process_1.spawnSync)(binary, addArgs, { stdio: 'pipe' });
147
+ if (addResult.status !== 0) {
148
+ const stderr = addResult.stderr?.toString() ?? '';
149
+ // If the server already exists, remove and re-add so the config stays
150
+ // current (e.g. URL params or auth changes).
151
+ if (stderr.includes('already exists')) {
152
+ const removeResult = (0, child_process_1.spawnSync)(binary, ['mcp', 'remove', '--scope', 'user', serverName], { stdio: 'pipe' });
153
+ if (removeResult.status !== 0) {
154
+ analytics_1.analytics.captureException(new Error(`Failed to remove existing Claude Code MCP entry: ${removeResult.stderr?.toString()}`));
155
+ return Promise.resolve({ success: false });
156
+ }
157
+ addResult = (0, child_process_1.spawnSync)(binary, addArgs, { stdio: 'pipe' });
158
+ }
159
+ if (addResult.status !== 0) {
160
+ analytics_1.analytics.captureException(new Error(`Failed to add server to Claude Code: ${addResult.stderr?.toString()}`));
161
+ return Promise.resolve({ success: false });
162
+ }
163
+ }
164
+ return Promise.resolve({ success: true });
165
+ }
166
+ removeServer(local) {
167
+ const binary = this.findClaudeBinary();
168
+ if (!binary) {
169
+ return Promise.resolve({ success: false });
170
+ }
171
+ const serverName = local ? 'amplitude-local' : 'amplitude';
172
+ const result = (0, child_process_1.spawnSync)(binary, ['mcp', 'remove', '--scope', 'user', serverName], { stdio: 'pipe' });
173
+ if (result.status !== 0) {
174
+ analytics_1.analytics.captureException(new Error(`Failed to remove server from Claude Code: ${result.stderr?.toString()}`));
175
+ return Promise.resolve({ success: false });
176
+ }
177
+ return Promise.resolve({ success: true });
178
+ }
179
+ }
180
+ exports.ClaudeCodeMCPClient = ClaudeCodeMCPClient;
@@ -0,0 +1,20 @@
1
+ import { DefaultMCPClient } from '../MCPClient';
2
+ import { DefaultMCPClientConfig } from '../defaults';
3
+ import { z } from 'zod';
4
+ export declare const ClaudeMCPConfig: z.ZodObject<{
5
+ mcpServers: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
6
+ command: z.ZodOptional<z.ZodString>;
7
+ args: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
9
+ }, z.core.$strip>, z.ZodObject<{
10
+ url: z.ZodString;
11
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
12
+ }, z.core.$strip>]>>;
13
+ }, z.core.$loose>;
14
+ export type ClaudeMCPConfig = z.infer<typeof DefaultMCPClientConfig>;
15
+ export declare class ClaudeMCPClient extends DefaultMCPClient {
16
+ name: string;
17
+ constructor();
18
+ isClientSupported(): Promise<boolean>;
19
+ getConfigPath(): Promise<string>;
20
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ClaudeMCPClient = exports.ClaudeMCPConfig = void 0;
37
+ const MCPClient_1 = require("../MCPClient");
38
+ const path = __importStar(require("path"));
39
+ const os = __importStar(require("os"));
40
+ const defaults_1 = require("../defaults");
41
+ exports.ClaudeMCPConfig = defaults_1.DefaultMCPClientConfig;
42
+ class ClaudeMCPClient extends MCPClient_1.DefaultMCPClient {
43
+ name = 'Claude Desktop';
44
+ constructor() {
45
+ super();
46
+ }
47
+ async isClientSupported() {
48
+ return Promise.resolve(process.platform === 'darwin' || process.platform === 'win32');
49
+ }
50
+ async getConfigPath() {
51
+ const homeDir = os.homedir();
52
+ const isWindows = process.platform === 'win32';
53
+ const isMac = process.platform === 'darwin';
54
+ if (isMac) {
55
+ return Promise.resolve(path.join(homeDir, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json'));
56
+ }
57
+ if (isWindows) {
58
+ return Promise.resolve(path.join(process.env.APPDATA || '', 'Claude', 'claude_desktop_config.json'));
59
+ }
60
+ throw new Error(`Unsupported platform: ${process.platform}`);
61
+ }
62
+ }
63
+ exports.ClaudeMCPClient = ClaudeMCPClient;
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ import { DefaultMCPClient } from '../MCPClient';
3
+ import { DefaultMCPClientConfig } from '../defaults';
4
+ export declare const CodexMCPConfig: z.ZodObject<{
5
+ mcpServers: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
6
+ command: z.ZodOptional<z.ZodString>;
7
+ args: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
9
+ }, z.core.$strip>, z.ZodObject<{
10
+ url: z.ZodString;
11
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
12
+ }, z.core.$strip>]>>;
13
+ }, z.core.$loose>;
14
+ export type CodexMCPConfig = z.infer<typeof DefaultMCPClientConfig>;
15
+ export declare class CodexMCPClient extends DefaultMCPClient {
16
+ name: string;
17
+ constructor();
18
+ isClientSupported(): Promise<boolean>;
19
+ getConfigPath(): Promise<string>;
20
+ isServerInstalled(local?: boolean): Promise<boolean>;
21
+ addServer(apiKey?: string, selectedFeatures?: string[], local?: boolean): Promise<{
22
+ success: boolean;
23
+ }>;
24
+ removeServer(local?: boolean): Promise<{
25
+ success: boolean;
26
+ }>;
27
+ }
28
+ export default CodexMCPClient;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodexMCPClient = exports.CodexMCPConfig = void 0;
4
+ const zod_1 = require("zod");
5
+ const node_child_process_1 = require("node:child_process");
6
+ const MCPClient_1 = require("../MCPClient");
7
+ const defaults_1 = require("../defaults");
8
+ const analytics_1 = require("../../../utils/analytics");
9
+ exports.CodexMCPConfig = defaults_1.DefaultMCPClientConfig;
10
+ class CodexMCPClient extends MCPClient_1.DefaultMCPClient {
11
+ name = 'Codex';
12
+ constructor() {
13
+ super();
14
+ }
15
+ isClientSupported() {
16
+ try {
17
+ (0, node_child_process_1.execSync)('codex --version', { stdio: 'ignore' });
18
+ return Promise.resolve(true);
19
+ }
20
+ catch {
21
+ return Promise.resolve(false);
22
+ }
23
+ }
24
+ getConfigPath() {
25
+ throw new Error('Not implemented');
26
+ }
27
+ isServerInstalled(local) {
28
+ const serverName = local ? 'amplitude-local' : 'amplitude';
29
+ try {
30
+ const result = (0, node_child_process_1.spawnSync)('codex', ['mcp', 'list', '--json'], {
31
+ encoding: 'utf-8',
32
+ });
33
+ if (result.error || result.status !== 0) {
34
+ return Promise.resolve(false);
35
+ }
36
+ const stdout = result.stdout?.trim();
37
+ if (!stdout) {
38
+ return Promise.resolve(false);
39
+ }
40
+ const CodexServerListSchema = zod_1.z.array(zod_1.z.object({ name: zod_1.z.string() }).passthrough());
41
+ const servers = CodexServerListSchema.parse(JSON.parse(stdout));
42
+ return Promise.resolve(servers.some((server) => server.name === serverName));
43
+ }
44
+ catch {
45
+ return Promise.resolve(false);
46
+ }
47
+ }
48
+ addServer(apiKey, selectedFeatures, local) {
49
+ const serverName = local ? 'amplitude-local' : 'amplitude';
50
+ const url = (0, defaults_1.buildMCPUrl)('streamable-http', selectedFeatures, local);
51
+ const args = ['mcp', 'add', serverName, '--url', url];
52
+ const env = { ...process.env };
53
+ if (apiKey) {
54
+ env.AMPLITUDE_API_KEY = apiKey;
55
+ args.push('--bearer-token-env-var', 'AMPLITUDE_API_KEY');
56
+ }
57
+ const result = (0, node_child_process_1.spawnSync)('codex', args, { stdio: 'ignore', env });
58
+ if (result.error || result.status !== 0) {
59
+ analytics_1.analytics.captureException(new Error('Failed to add server to Codex CLI.'));
60
+ return Promise.resolve({ success: false });
61
+ }
62
+ return Promise.resolve({ success: true });
63
+ }
64
+ removeServer(local) {
65
+ const serverName = local ? 'amplitude-local' : 'amplitude';
66
+ const result = (0, node_child_process_1.spawnSync)('codex', ['mcp', 'remove', serverName], {
67
+ stdio: 'ignore',
68
+ });
69
+ if (result.error || result.status !== 0) {
70
+ analytics_1.analytics.captureException(new Error('Failed to remove server from Codex CLI.'));
71
+ return Promise.resolve({ success: false });
72
+ }
73
+ return Promise.resolve({ success: true });
74
+ }
75
+ }
76
+ exports.CodexMCPClient = CodexMCPClient;
77
+ exports.default = CodexMCPClient;
@@ -0,0 +1,24 @@
1
+ import { DefaultMCPClient, MCPServerConfig } from '../MCPClient';
2
+ import { DefaultMCPClientConfig } from '../defaults';
3
+ import { z } from 'zod';
4
+ export declare const CursorMCPConfig: z.ZodObject<{
5
+ mcpServers: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
6
+ command: z.ZodOptional<z.ZodString>;
7
+ args: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
9
+ }, z.core.$strip>, z.ZodObject<{
10
+ url: z.ZodString;
11
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
12
+ }, z.core.$strip>]>>;
13
+ }, z.core.$loose>;
14
+ export type CursorMCPConfig = z.infer<typeof DefaultMCPClientConfig>;
15
+ export declare class CursorMCPClient extends DefaultMCPClient {
16
+ name: string;
17
+ constructor();
18
+ isClientSupported(): Promise<boolean>;
19
+ getConfigPath(): Promise<string>;
20
+ getServerConfig(apiKey: string | undefined, type: 'sse' | 'streamable-http', selectedFeatures?: string[], local?: boolean): MCPServerConfig;
21
+ addServer(apiKey?: string, selectedFeatures?: string[], local?: boolean): Promise<{
22
+ success: boolean;
23
+ }>;
24
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CursorMCPClient = exports.CursorMCPConfig = void 0;
37
+ const MCPClient_1 = require("../MCPClient");
38
+ const path = __importStar(require("path"));
39
+ const os = __importStar(require("os"));
40
+ const defaults_1 = require("../defaults");
41
+ exports.CursorMCPConfig = defaults_1.DefaultMCPClientConfig;
42
+ class CursorMCPClient extends MCPClient_1.DefaultMCPClient {
43
+ name = 'Cursor';
44
+ constructor() {
45
+ super();
46
+ }
47
+ async isClientSupported() {
48
+ return Promise.resolve(process.platform === 'darwin' || process.platform === 'win32');
49
+ }
50
+ async getConfigPath() {
51
+ return Promise.resolve(path.join(os.homedir(), '.cursor', 'mcp.json'));
52
+ }
53
+ getServerConfig(apiKey, type, selectedFeatures, local) {
54
+ return (0, defaults_1.getNativeHTTPServerConfig)(apiKey, type, selectedFeatures, local);
55
+ }
56
+ async addServer(apiKey, selectedFeatures, local) {
57
+ return this._addServerType(apiKey, 'streamable-http', selectedFeatures, local);
58
+ }
59
+ }
60
+ exports.CursorMCPClient = CursorMCPClient;