@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,305 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.getDjangoVersionBucket = exports.DjangoProjectType = void 0;
40
+ exports.getDjangoVersion = getDjangoVersion;
41
+ exports.getDjangoProjectType = getDjangoProjectType;
42
+ exports.getDjangoProjectTypeName = getDjangoProjectTypeName;
43
+ exports.findDjangoSettingsFile = findDjangoSettingsFile;
44
+ exports.findDjangoUrlsFile = findDjangoUrlsFile;
45
+ const fast_glob_1 = __importDefault(require("fast-glob"));
46
+ const ui_1 = require("../../ui");
47
+ const semver_1 = require("../../utils/semver");
48
+ const fs = __importStar(require("node:fs"));
49
+ const path = __importStar(require("node:path"));
50
+ var DjangoProjectType;
51
+ (function (DjangoProjectType) {
52
+ DjangoProjectType["STANDARD"] = "standard";
53
+ DjangoProjectType["DRF"] = "drf";
54
+ DjangoProjectType["WAGTAIL"] = "wagtail";
55
+ DjangoProjectType["CHANNELS"] = "channels";
56
+ })(DjangoProjectType || (exports.DjangoProjectType = DjangoProjectType = {}));
57
+ const IGNORE_PATTERNS = [
58
+ '**/node_modules/**',
59
+ '**/dist/**',
60
+ '**/build/**',
61
+ '**/venv/**',
62
+ '**/.venv/**',
63
+ '**/env/**',
64
+ '**/.env/**',
65
+ '**/__pycache__/**',
66
+ '**/migrations/**',
67
+ ];
68
+ /**
69
+ * Get Django version bucket for analytics
70
+ */
71
+ exports.getDjangoVersionBucket = (0, semver_1.createVersionBucket)();
72
+ /**
73
+ * Extract Django version from requirements files or pyproject.toml
74
+ */
75
+ async function getDjangoVersion(options) {
76
+ const { installDir } = options;
77
+ // Check requirements files
78
+ const requirementsFiles = await (0, fast_glob_1.default)(['**/requirements*.txt', '**/pyproject.toml', '**/setup.py', '**/Pipfile'], {
79
+ cwd: installDir,
80
+ ignore: IGNORE_PATTERNS,
81
+ });
82
+ for (const reqFile of requirementsFiles) {
83
+ try {
84
+ const content = fs.readFileSync(path.join(installDir, reqFile), 'utf-8');
85
+ // Try to extract version from requirements.txt format (Django==4.2.0 or Django>=4.0)
86
+ const requirementsMatch = content.match(/[Dd]jango[=<>~!]+([0-9]+\.[0-9]+(?:\.[0-9]+)?)/);
87
+ if (requirementsMatch) {
88
+ return requirementsMatch[1];
89
+ }
90
+ // Try to extract from pyproject.toml format
91
+ const pyprojectMatch = content.match(/[Dd]jango["\s]*[=<>~!]+\s*["']?([0-9]+\.[0-9]+(?:\.[0-9]+)?)/);
92
+ if (pyprojectMatch) {
93
+ return pyprojectMatch[1];
94
+ }
95
+ }
96
+ catch {
97
+ // Skip files that can't be read
98
+ continue;
99
+ }
100
+ }
101
+ return undefined;
102
+ }
103
+ /**
104
+ * Check if Django REST Framework is installed
105
+ */
106
+ async function hasDRF({ installDir, }) {
107
+ const requirementsFiles = await (0, fast_glob_1.default)(['**/requirements*.txt', '**/pyproject.toml', '**/Pipfile'], {
108
+ cwd: installDir,
109
+ ignore: IGNORE_PATTERNS,
110
+ });
111
+ for (const reqFile of requirementsFiles) {
112
+ try {
113
+ const content = fs.readFileSync(path.join(installDir, reqFile), 'utf-8');
114
+ if (content.includes('djangorestframework')) {
115
+ return true;
116
+ }
117
+ }
118
+ catch {
119
+ continue;
120
+ }
121
+ }
122
+ // Also check INSTALLED_APPS in settings
123
+ const settingsFiles = await (0, fast_glob_1.default)('**/settings.py', {
124
+ cwd: installDir,
125
+ ignore: IGNORE_PATTERNS,
126
+ });
127
+ for (const settingsFile of settingsFiles) {
128
+ try {
129
+ const content = fs.readFileSync(path.join(installDir, settingsFile), 'utf-8');
130
+ if (content.includes('rest_framework')) {
131
+ return true;
132
+ }
133
+ }
134
+ catch {
135
+ continue;
136
+ }
137
+ }
138
+ return false;
139
+ }
140
+ /**
141
+ * Check if Wagtail is installed
142
+ */
143
+ async function hasWagtail({ installDir, }) {
144
+ const requirementsFiles = await (0, fast_glob_1.default)(['**/requirements*.txt', '**/pyproject.toml', '**/Pipfile'], {
145
+ cwd: installDir,
146
+ ignore: IGNORE_PATTERNS,
147
+ });
148
+ for (const reqFile of requirementsFiles) {
149
+ try {
150
+ const content = fs.readFileSync(path.join(installDir, reqFile), 'utf-8');
151
+ if (content.includes('wagtail')) {
152
+ return true;
153
+ }
154
+ }
155
+ catch {
156
+ continue;
157
+ }
158
+ }
159
+ return false;
160
+ }
161
+ /**
162
+ * Check if Django Channels is installed
163
+ */
164
+ async function hasChannels({ installDir, }) {
165
+ const requirementsFiles = await (0, fast_glob_1.default)(['**/requirements*.txt', '**/pyproject.toml', '**/Pipfile'], {
166
+ cwd: installDir,
167
+ ignore: IGNORE_PATTERNS,
168
+ });
169
+ for (const reqFile of requirementsFiles) {
170
+ try {
171
+ const content = fs.readFileSync(path.join(installDir, reqFile), 'utf-8');
172
+ if (content.includes('channels')) {
173
+ return true;
174
+ }
175
+ }
176
+ catch {
177
+ continue;
178
+ }
179
+ }
180
+ return false;
181
+ }
182
+ /**
183
+ * Detect Django project type
184
+ */
185
+ async function getDjangoProjectType(options) {
186
+ const { installDir } = options;
187
+ // Check for Wagtail first (CMS)
188
+ if (await hasWagtail({ installDir })) {
189
+ (0, ui_1.getUI)().setDetectedFramework('Django with Wagtail CMS');
190
+ return DjangoProjectType.WAGTAIL;
191
+ }
192
+ // Check for Django REST Framework
193
+ if (await hasDRF({ installDir })) {
194
+ (0, ui_1.getUI)().setDetectedFramework('Django REST Framework');
195
+ return DjangoProjectType.DRF;
196
+ }
197
+ // Check for Django Channels
198
+ if (await hasChannels({ installDir })) {
199
+ (0, ui_1.getUI)().setDetectedFramework('Django Channels');
200
+ return DjangoProjectType.CHANNELS;
201
+ }
202
+ // Default to standard Django
203
+ (0, ui_1.getUI)().setDetectedFramework('Django');
204
+ return DjangoProjectType.STANDARD;
205
+ }
206
+ /**
207
+ * Get human-readable name for Django project type
208
+ */
209
+ function getDjangoProjectTypeName(projectType) {
210
+ switch (projectType) {
211
+ case DjangoProjectType.STANDARD:
212
+ return 'Standard Django';
213
+ case DjangoProjectType.DRF:
214
+ return 'Django REST Framework';
215
+ case DjangoProjectType.WAGTAIL:
216
+ return 'Wagtail CMS';
217
+ case DjangoProjectType.CHANNELS:
218
+ return 'Django Channels';
219
+ }
220
+ }
221
+ /**
222
+ * Find the main Django settings file
223
+ */
224
+ async function findDjangoSettingsFile(options) {
225
+ const { installDir } = options;
226
+ // Look for settings.py files
227
+ const settingsFiles = await (0, fast_glob_1.default)('**/settings.py', {
228
+ cwd: installDir,
229
+ ignore: IGNORE_PATTERNS,
230
+ });
231
+ if (settingsFiles.length === 0) {
232
+ // Try settings/__init__.py for split settings
233
+ const splitSettingsFiles = await (0, fast_glob_1.default)('**/settings/__init__.py', {
234
+ cwd: installDir,
235
+ ignore: IGNORE_PATTERNS,
236
+ });
237
+ if (splitSettingsFiles.length > 0) {
238
+ return splitSettingsFiles[0];
239
+ }
240
+ return undefined;
241
+ }
242
+ // If multiple settings files, prefer the one next to manage.py or in root
243
+ if (settingsFiles.length === 1) {
244
+ return settingsFiles[0];
245
+ }
246
+ // Try to find the main settings file by looking for ROOT_URLCONF
247
+ for (const settingsFile of settingsFiles) {
248
+ try {
249
+ const content = fs.readFileSync(path.join(installDir, settingsFile), 'utf-8');
250
+ if (content.includes('ROOT_URLCONF')) {
251
+ return settingsFile;
252
+ }
253
+ }
254
+ catch {
255
+ continue;
256
+ }
257
+ }
258
+ // Default to first found
259
+ return settingsFiles[0];
260
+ }
261
+ /**
262
+ * Find the main Django urls.py file
263
+ */
264
+ async function findDjangoUrlsFile(options) {
265
+ const { installDir } = options;
266
+ // First, try to find the root urls.py referenced in settings
267
+ const settingsFile = await findDjangoSettingsFile(options);
268
+ if (settingsFile) {
269
+ try {
270
+ const settingsContent = fs.readFileSync(path.join(installDir, settingsFile), 'utf-8');
271
+ const urlconfMatch = settingsContent.match(/ROOT_URLCONF\s*=\s*['"]([^'"]+)['"]/);
272
+ if (urlconfMatch) {
273
+ const urlconfPath = urlconfMatch[1].replace(/\./g, '/') + '.py';
274
+ const fullPath = path.join(installDir, urlconfPath);
275
+ if (fs.existsSync(fullPath)) {
276
+ return urlconfPath;
277
+ }
278
+ }
279
+ }
280
+ catch {
281
+ // Fall through to glob search
282
+ }
283
+ }
284
+ // Fallback to glob search
285
+ const urlsFiles = await (0, fast_glob_1.default)('**/urls.py', {
286
+ cwd: installDir,
287
+ ignore: [...IGNORE_PATTERNS, '**/admin/**'],
288
+ });
289
+ if (urlsFiles.length === 0) {
290
+ return undefined;
291
+ }
292
+ // Prefer urls.py files that contain urlpatterns
293
+ for (const urlsFile of urlsFiles) {
294
+ try {
295
+ const content = fs.readFileSync(path.join(installDir, urlsFile), 'utf-8');
296
+ if (content.includes('urlpatterns')) {
297
+ return urlsFile;
298
+ }
299
+ }
300
+ catch {
301
+ continue;
302
+ }
303
+ }
304
+ return urlsFiles[0];
305
+ }
@@ -0,0 +1,11 @@
1
+ import type { FrameworkConfig } from '../../lib/framework-config';
2
+ import { FastAPIProjectType } from './utils';
3
+ interface FastAPIContext extends Record<string, unknown> {
4
+ projectType?: FastAPIProjectType;
5
+ appFile?: string;
6
+ }
7
+ /**
8
+ * FastAPI framework configuration for the universal agent runner
9
+ */
10
+ export declare const FASTAPI_AGENT_CONFIG: FrameworkConfig<FastAPIContext>;
11
+ export {};
@@ -0,0 +1,189 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.FASTAPI_AGENT_CONFIG = void 0;
40
+ const framework_config_1 = require("../../lib/framework-config");
41
+ const package_manager_detection_1 = require("../../lib/package-manager-detection");
42
+ const constants_1 = require("../../lib/constants");
43
+ const utils_1 = require("./utils");
44
+ const fast_glob_1 = __importDefault(require("fast-glob"));
45
+ const fs = __importStar(require("node:fs"));
46
+ const path = __importStar(require("node:path"));
47
+ /**
48
+ * FastAPI framework configuration for the universal agent runner
49
+ */
50
+ exports.FASTAPI_AGENT_CONFIG = {
51
+ metadata: {
52
+ name: 'FastAPI',
53
+ integration: constants_1.Integration.fastapi,
54
+ docsUrl: 'https://amplitude.com/docs/sdks/analytics/python',
55
+ unsupportedVersionDocsUrl: 'https://amplitude.com/docs/sdks/analytics/python',
56
+ gatherContext: async (options) => {
57
+ const projectType = await (0, utils_1.getFastAPIProjectType)(options);
58
+ const appFile = await (0, utils_1.findFastAPIAppFile)(options);
59
+ return { projectType, appFile };
60
+ },
61
+ },
62
+ detection: {
63
+ packageName: 'fastapi',
64
+ packageDisplayName: 'FastAPI',
65
+ usesPackageJson: false,
66
+ getVersion: (_packageJson) => {
67
+ // For FastAPI, we don't use package.json. Version is extracted separately
68
+ // from requirements.txt or pyproject.toml in the wizard entry point
69
+ return undefined;
70
+ },
71
+ getVersionBucket: utils_1.getFastAPIVersionBucket,
72
+ getInstalledVersion: utils_1.getFastAPIVersion,
73
+ detect: async (options) => {
74
+ const { installDir } = options;
75
+ // Note: Django and Flask are checked before FastAPI in INTEGRATION_ORDER,
76
+ // so if we get here, the project is not a Django or Flask project.
77
+ // Check for FastAPI in requirements files
78
+ const requirementsFiles = await (0, fast_glob_1.default)([
79
+ '**/requirements*.txt',
80
+ '**/pyproject.toml',
81
+ '**/setup.py',
82
+ '**/Pipfile',
83
+ ], {
84
+ cwd: installDir,
85
+ ignore: ['**/venv/**', '**/.venv/**', '**/env/**', '**/.env/**'],
86
+ });
87
+ for (const reqFile of requirementsFiles) {
88
+ try {
89
+ const content = fs.readFileSync(path.join(installDir, reqFile), 'utf-8');
90
+ // Check for fastapi package (case-insensitive)
91
+ // Match "fastapi" as a standalone package
92
+ if (/^fastapi([<>=~!]|$|\s)/im.test(content) ||
93
+ /["']fastapi["']/i.test(content)) {
94
+ return true;
95
+ }
96
+ }
97
+ catch {
98
+ continue;
99
+ }
100
+ }
101
+ // Check for FastAPI app patterns in Python files
102
+ const pyFiles = await (0, fast_glob_1.default)(['**/main.py', '**/app.py', '**/application.py', '**/__init__.py'], {
103
+ cwd: installDir,
104
+ ignore: [
105
+ '**/venv/**',
106
+ '**/.venv/**',
107
+ '**/env/**',
108
+ '**/.env/**',
109
+ '**/__pycache__/**',
110
+ ],
111
+ });
112
+ for (const pyFile of pyFiles) {
113
+ try {
114
+ const content = fs.readFileSync(path.join(installDir, pyFile), 'utf-8');
115
+ if (content.includes('from fastapi import') ||
116
+ content.includes('import fastapi') ||
117
+ /FastAPI\s*\(/.test(content)) {
118
+ return true;
119
+ }
120
+ }
121
+ catch {
122
+ continue;
123
+ }
124
+ }
125
+ return false;
126
+ },
127
+ detectPackageManager: package_manager_detection_1.detectPythonPackageManagers,
128
+ },
129
+ environment: {
130
+ uploadToHosting: false,
131
+ getEnvVars: (apiKey, _host) => ({
132
+ AMPLITUDE_API_KEY: apiKey,
133
+ }),
134
+ },
135
+ analytics: {
136
+ getTags: (context) => {
137
+ const projectType = context.projectType;
138
+ return {
139
+ projectType: projectType || 'unknown',
140
+ };
141
+ },
142
+ },
143
+ prompts: {
144
+ packageInstallation: framework_config_1.PYTHON_PACKAGE_INSTALLATION,
145
+ projectTypeDetection: 'This is a Python/FastAPI project. Look for requirements.txt, pyproject.toml, setup.py, Pipfile, or main.py/app.py to confirm.',
146
+ getAdditionalContextLines: (context) => {
147
+ const projectType = context.projectType;
148
+ const projectTypeName = projectType
149
+ ? (0, utils_1.getFastAPIProjectTypeName)(projectType)
150
+ : 'unknown';
151
+ // Map project type to framework ID for MCP docs resource
152
+ const frameworkIdMap = {
153
+ [utils_1.FastAPIProjectType.STANDARD]: 'fastapi',
154
+ [utils_1.FastAPIProjectType.ROUTER]: 'fastapi',
155
+ [utils_1.FastAPIProjectType.FULLSTACK]: 'fastapi',
156
+ };
157
+ const frameworkId = projectType ? frameworkIdMap[projectType] : 'fastapi';
158
+ const lines = [
159
+ `Project type: ${projectTypeName}`,
160
+ `Framework docs ID: ${frameworkId} (use amplitude://docs/frameworks/${frameworkId} for documentation)`,
161
+ ];
162
+ if (context.appFile) {
163
+ lines.push(`App file: ${String(context.appFile)}`);
164
+ }
165
+ return lines;
166
+ },
167
+ },
168
+ ui: {
169
+ successMessage: 'Amplitude integration complete',
170
+ estimatedDurationMinutes: 5,
171
+ getOutroChanges: (context) => {
172
+ const projectType = context.projectType;
173
+ const projectTypeName = projectType
174
+ ? (0, utils_1.getFastAPIProjectTypeName)(projectType)
175
+ : 'FastAPI';
176
+ return [
177
+ `Analyzed your ${projectTypeName} project structure`,
178
+ `Installed the Amplitude Python package`,
179
+ `Configured Amplitude in your FastAPI application`,
180
+ `Added Amplitude initialization with lifespan event handling`,
181
+ ];
182
+ },
183
+ getOutroNextSteps: () => [
184
+ 'Start your FastAPI development server to see Amplitude in action',
185
+ 'Visit your Amplitude dashboard to see incoming events',
186
+ 'Use amplitude.identify() to associate events with users',
187
+ ],
188
+ },
189
+ };
@@ -0,0 +1,26 @@
1
+ import type { WizardOptions } from '../../utils/types';
2
+ export declare enum FastAPIProjectType {
3
+ STANDARD = "standard",// Basic FastAPI app
4
+ ROUTER = "router",// FastAPI with APIRouter
5
+ FULLSTACK = "fullstack"
6
+ }
7
+ /**
8
+ * Get FastAPI version bucket for analytics
9
+ */
10
+ export declare function getFastAPIVersionBucket(version: string | undefined): string;
11
+ /**
12
+ * Extract FastAPI version from requirements files or pyproject.toml
13
+ */
14
+ export declare function getFastAPIVersion(options: Pick<WizardOptions, 'installDir'>): Promise<string | undefined>;
15
+ /**
16
+ * Detect FastAPI project type
17
+ */
18
+ export declare function getFastAPIProjectType(options: WizardOptions): Promise<FastAPIProjectType>;
19
+ /**
20
+ * Get human-readable name for FastAPI project type
21
+ */
22
+ export declare function getFastAPIProjectTypeName(projectType: FastAPIProjectType): string;
23
+ /**
24
+ * Find the main FastAPI app file
25
+ */
26
+ export declare function findFastAPIAppFile(options: Pick<WizardOptions, 'installDir'>): Promise<string | undefined>;