@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,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GO_AGENT_CONFIG = void 0;
4
+ const package_manager_detection_1 = require("../../lib/package-manager-detection");
5
+ const constants_1 = require("../../lib/constants");
6
+ const utils_1 = require("./utils");
7
+ exports.GO_AGENT_CONFIG = {
8
+ metadata: {
9
+ name: 'Go',
10
+ integration: constants_1.Integration.go,
11
+ beta: true,
12
+ docsUrl: 'https://amplitude.com/docs/sdks/analytics/go/go-sdk',
13
+ },
14
+ detection: {
15
+ packageName: 'github.com/amplitude/analytics-go',
16
+ packageDisplayName: 'Go',
17
+ usesPackageJson: false,
18
+ getVersion: () => undefined,
19
+ detect: utils_1.detectGoProject,
20
+ detectPackageManager: package_manager_detection_1.goPackageManager,
21
+ },
22
+ environment: {
23
+ uploadToHosting: false,
24
+ getEnvVars: (apiKey, host) => ({
25
+ AMPLITUDE_API_KEY: apiKey,
26
+ AMPLITUDE_SERVER_URL: host,
27
+ }),
28
+ },
29
+ analytics: {
30
+ getTags: () => ({}),
31
+ },
32
+ prompts: {
33
+ projectTypeDetection: 'This is a Go project. Look for go.mod and go.sum to confirm.',
34
+ packageInstallation: 'Use Go modules: run `go get github.com/amplitude/analytics-go` to add the dependency (go.mod and go.sum are updated automatically).',
35
+ getAdditionalContextLines: () => [
36
+ 'Framework docs ID: go (use amplitude://docs/frameworks/go for documentation)',
37
+ 'SDK: github.com/amplitude/analytics-go',
38
+ 'Initialization: config := amplitude.NewConfig(os.Getenv("AMPLITUDE_API_KEY")); client := amplitude.NewClient(config)',
39
+ 'Always call client.Shutdown() on application exit to flush queued events',
40
+ ],
41
+ },
42
+ ui: {
43
+ successMessage: 'Amplitude integration complete',
44
+ estimatedDurationMinutes: 5,
45
+ getOutroChanges: () => [
46
+ 'Analyzed your Go project structure',
47
+ 'Added github.com/amplitude/analytics-go to go.mod',
48
+ 'Configured Amplitude client initialization',
49
+ ],
50
+ getOutroNextSteps: () => [
51
+ 'Run your application to verify the integration',
52
+ 'Visit your Amplitude dashboard to see incoming events',
53
+ 'Use client.Track(amplitude.Event{...}) for custom events',
54
+ 'Ensure client.Shutdown() is called on exit to flush queued events',
55
+ ],
56
+ },
57
+ };
@@ -0,0 +1,5 @@
1
+ import type { WizardOptions } from '../../utils/types';
2
+ /**
3
+ * Returns true when the directory contains a Go module project (go.mod present).
4
+ */
5
+ export declare function detectGoProject(options: Pick<WizardOptions, 'installDir'>): Promise<boolean>;
@@ -0,0 +1,44 @@
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.detectGoProject = detectGoProject;
37
+ const fs = __importStar(require("node:fs"));
38
+ const path = __importStar(require("node:path"));
39
+ /**
40
+ * Returns true when the directory contains a Go module project (go.mod present).
41
+ */
42
+ function detectGoProject(options) {
43
+ return Promise.resolve(fs.existsSync(path.join(options.installDir, 'go.mod')));
44
+ }
@@ -0,0 +1,7 @@
1
+ import type { FrameworkConfig } from '../../lib/framework-config';
2
+ import type { JavaBuildTool } from './utils';
3
+ type JavaContext = {
4
+ buildTool?: JavaBuildTool;
5
+ };
6
+ export declare const JAVA_AGENT_CONFIG: FrameworkConfig<JavaContext>;
7
+ export {};
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JAVA_AGENT_CONFIG = void 0;
4
+ const package_manager_detection_1 = require("../../lib/package-manager-detection");
5
+ const constants_1 = require("../../lib/constants");
6
+ const utils_1 = require("./utils");
7
+ exports.JAVA_AGENT_CONFIG = {
8
+ metadata: {
9
+ name: 'Java',
10
+ integration: constants_1.Integration.java,
11
+ beta: true,
12
+ docsUrl: 'https://amplitude.com/docs/sdks/analytics/java/jre-java-sdk',
13
+ gatherContext: (options) => {
14
+ const buildTool = (0, utils_1.detectJavaBuildTool)(options);
15
+ return Promise.resolve({ buildTool });
16
+ },
17
+ },
18
+ detection: {
19
+ packageName: 'com.amplitude:java-sdk',
20
+ packageDisplayName: 'Java',
21
+ usesPackageJson: false,
22
+ getVersion: () => undefined,
23
+ detect: utils_1.detectJavaProject,
24
+ detectPackageManager: package_manager_detection_1.detectJavaPackageManagers,
25
+ },
26
+ environment: {
27
+ uploadToHosting: false,
28
+ getEnvVars: (apiKey, host) => ({
29
+ AMPLITUDE_API_KEY: apiKey,
30
+ AMPLITUDE_SERVER_URL: host,
31
+ }),
32
+ },
33
+ analytics: {
34
+ getTags: (context) => ({
35
+ buildTool: context.buildTool ?? 'unknown',
36
+ }),
37
+ },
38
+ prompts: {
39
+ projectTypeDetection: 'This is a Java JRE project. Look for pom.xml (Maven), build.gradle / build.gradle.kts (Gradle), or src/main/java to confirm.',
40
+ getAdditionalContextLines: (context) => {
41
+ const buildTool = context.buildTool ?? 'maven';
42
+ const depSnippet = buildTool === 'maven'
43
+ ? `<dependency><groupId>com.amplitude</groupId><artifactId>java-sdk</artifactId><version>1.13.0</version></dependency>`
44
+ : `implementation 'com.amplitude:java-sdk:1.13.0'`;
45
+ return [
46
+ `Build tool: ${buildTool === 'maven' ? 'Maven' : 'Gradle'}`,
47
+ `Framework docs ID: java (use amplitude://docs/frameworks/java for documentation)`,
48
+ `SDK: com.amplitude:java-sdk — add to ${buildTool === 'maven' ? 'pom.xml' : 'build.gradle'}: ${depSnippet}`,
49
+ `Also add org.json:json:20231013 as a runtime dependency`,
50
+ `Initialization: Amplitude client = Amplitude.getInstance(); client.init(System.getenv("AMPLITUDE_API_KEY"));`,
51
+ `Always call client.shutdown() on application exit to flush queued events`,
52
+ ];
53
+ },
54
+ },
55
+ ui: {
56
+ successMessage: 'Amplitude integration complete',
57
+ estimatedDurationMinutes: 5,
58
+ getOutroChanges: (context) => {
59
+ const tool = context.buildTool === 'gradle' ? 'Gradle' : 'Maven';
60
+ return [
61
+ `Analyzed your Java project structure`,
62
+ `Added com.amplitude:java-sdk to ${tool} build file`,
63
+ `Configured Amplitude client initialization`,
64
+ ];
65
+ },
66
+ getOutroNextSteps: () => [
67
+ 'Build and run your application to verify the integration',
68
+ 'Visit your Amplitude dashboard to see incoming events',
69
+ 'Use client.logEvent(new Event("Event Name", userId)) for custom events',
70
+ 'Ensure client.shutdown() is called on exit to flush queued events',
71
+ ],
72
+ },
73
+ };
@@ -0,0 +1,15 @@
1
+ import type { WizardOptions } from '../../utils/types';
2
+ export type JavaBuildTool = 'maven' | 'gradle';
3
+ /**
4
+ * Returns true when the directory contains a JVM Java project.
5
+ * Signals: pom.xml (Maven), build.gradle / build.gradle.kts (Gradle),
6
+ * or a src/main/java directory (standard Maven/Gradle layout).
7
+ *
8
+ * Note: Android projects also use build.gradle, but they are detected
9
+ * earlier in the registry and will never reach this detector.
10
+ */
11
+ export declare function detectJavaProject(options: Pick<WizardOptions, 'installDir'>): Promise<boolean>;
12
+ /**
13
+ * Returns the detected build tool for the Java project.
14
+ */
15
+ export declare function detectJavaBuildTool(options: Pick<WizardOptions, 'installDir'>): JavaBuildTool;
@@ -0,0 +1,64 @@
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.detectJavaProject = detectJavaProject;
37
+ exports.detectJavaBuildTool = detectJavaBuildTool;
38
+ const fs = __importStar(require("node:fs"));
39
+ const path = __importStar(require("node:path"));
40
+ /**
41
+ * Returns true when the directory contains a JVM Java project.
42
+ * Signals: pom.xml (Maven), build.gradle / build.gradle.kts (Gradle),
43
+ * or a src/main/java directory (standard Maven/Gradle layout).
44
+ *
45
+ * Note: Android projects also use build.gradle, but they are detected
46
+ * earlier in the registry and will never reach this detector.
47
+ */
48
+ function detectJavaProject(options) {
49
+ const { installDir } = options;
50
+ const hasPom = fs.existsSync(path.join(installDir, 'pom.xml'));
51
+ const hasGradle = fs.existsSync(path.join(installDir, 'build.gradle')) ||
52
+ fs.existsSync(path.join(installDir, 'build.gradle.kts'));
53
+ const hasSrcMainJava = fs.existsSync(path.join(installDir, 'src', 'main', 'java'));
54
+ return Promise.resolve(hasPom || hasGradle || hasSrcMainJava);
55
+ }
56
+ /**
57
+ * Returns the detected build tool for the Java project.
58
+ */
59
+ function detectJavaBuildTool(options) {
60
+ const { installDir } = options;
61
+ if (fs.existsSync(path.join(installDir, 'pom.xml')))
62
+ return 'maven';
63
+ return 'gradle';
64
+ }
@@ -0,0 +1,4 @@
1
+ import type { FrameworkConfig } from '../../lib/framework-config';
2
+ type JavaScriptNodeContext = Record<string, unknown>;
3
+ export declare const JAVASCRIPT_NODE_AGENT_CONFIG: FrameworkConfig<JavaScriptNodeContext>;
4
+ export {};
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JAVASCRIPT_NODE_AGENT_CONFIG = void 0;
4
+ const constants_1 = require("../../lib/constants");
5
+ const setup_utils_1 = require("../../utils/setup-utils");
6
+ const package_manager_detection_1 = require("../../lib/package-manager-detection");
7
+ exports.JAVASCRIPT_NODE_AGENT_CONFIG = {
8
+ metadata: {
9
+ name: 'Node.js',
10
+ integration: constants_1.Integration.javascriptNode,
11
+ beta: true,
12
+ docsUrl: 'https://amplitude.com/docs/sdks/analytics/browser/browser-sdk-2',
13
+ },
14
+ detection: {
15
+ packageName: '@amplitude/analytics-node',
16
+ packageDisplayName: 'Node.js',
17
+ usesPackageJson: false,
18
+ getVersion: () => undefined,
19
+ detectPackageManager: package_manager_detection_1.detectNodePackageManagers,
20
+ detect: async (options) => {
21
+ const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
22
+ return !!packageJson;
23
+ },
24
+ },
25
+ environment: {
26
+ uploadToHosting: false,
27
+ getEnvVars: (apiKey, _host) => ({
28
+ AMPLITUDE_API_KEY: apiKey,
29
+ }),
30
+ },
31
+ analytics: {
32
+ getTags: () => ({}),
33
+ },
34
+ prompts: {
35
+ projectTypeDetection: 'This is a server-side Node.js project. Look for package.json and lockfiles to confirm.',
36
+ packageInstallation: 'Use npm, yarn, pnpm, or bun based on the existing lockfile (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb). Install @amplitude/analytics-node as a regular dependency.',
37
+ getAdditionalContextLines: () => [
38
+ `Framework docs ID: javascript_node (use amplitude://docs/frameworks/javascript_node for documentation)`,
39
+ ],
40
+ },
41
+ ui: {
42
+ successMessage: 'Amplitude integration complete',
43
+ estimatedDurationMinutes: 5,
44
+ getOutroChanges: () => [
45
+ `Analyzed your Node.js project structure`,
46
+ `Installed the @amplitude/analytics-node package`,
47
+ `Created Amplitude initialization with proper configuration`,
48
+ `Added example code for events and user identification`,
49
+ ],
50
+ getOutroNextSteps: () => [
51
+ 'Use the Amplitude client instance for all tracking calls',
52
+ 'NEVER send PII in event properties (no emails, names, or user content)',
53
+ 'Use amplitude.track() for events and amplitude.identify() for users',
54
+ 'Visit your Amplitude dashboard to see incoming events',
55
+ ],
56
+ },
57
+ };
@@ -0,0 +1,3 @@
1
+ import type { FrameworkConfig } from '../../lib/framework-config';
2
+ import { type JavaScriptContext } from './utils';
3
+ export declare const JAVASCRIPT_WEB_AGENT_CONFIG: FrameworkConfig<JavaScriptContext>;
@@ -0,0 +1,151 @@
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.JAVASCRIPT_WEB_AGENT_CONFIG = void 0;
37
+ const constants_1 = require("../../lib/constants");
38
+ const fs = __importStar(require("node:fs"));
39
+ const path = __importStar(require("node:path"));
40
+ const package_json_1 = require("../../utils/package-json");
41
+ const setup_utils_1 = require("../../utils/setup-utils");
42
+ const utils_1 = require("./utils");
43
+ const package_manager_detection_1 = require("../../lib/package-manager-detection");
44
+ exports.JAVASCRIPT_WEB_AGENT_CONFIG = {
45
+ metadata: {
46
+ name: 'JavaScript (Web)',
47
+ integration: constants_1.Integration.javascript_web,
48
+ beta: true,
49
+ docsUrl: 'https://amplitude.com/docs/sdks/analytics/browser/browser-sdk-2',
50
+ gatherContext: (options) => {
51
+ const packageManagerName = (0, utils_1.detectJsPackageManager)(options);
52
+ const hasTypeScript = fs.existsSync(path.join(options.installDir, 'tsconfig.json'));
53
+ const hasBundler = (0, utils_1.detectBundler)(options);
54
+ return Promise.resolve({ packageManagerName, hasTypeScript, hasBundler });
55
+ },
56
+ },
57
+ detection: {
58
+ packageName: '@amplitude/analytics-browser',
59
+ packageDisplayName: 'JavaScript (Web)',
60
+ usesPackageJson: false,
61
+ getVersion: () => undefined,
62
+ detectPackageManager: package_manager_detection_1.detectNodePackageManagers,
63
+ detect: async (options) => {
64
+ const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
65
+ if (!packageJson) {
66
+ return false;
67
+ }
68
+ // Exclude projects with known framework packages
69
+ for (const frameworkPkg of utils_1.FRAMEWORK_PACKAGES) {
70
+ if ((0, package_json_1.hasPackageInstalled)(frameworkPkg, packageJson)) {
71
+ return false;
72
+ }
73
+ }
74
+ const { installDir } = options;
75
+ // Has (index.html OR has a bundler) AND is a JavaScript project
76
+ const hasIndexHtmlFlag = (0, utils_1.hasIndexHtml)(options);
77
+ const bundler = (0, utils_1.detectBundler)(options);
78
+ const hasBundler = !!bundler;
79
+ const hasLockfile = [
80
+ 'package-lock.json',
81
+ 'yarn.lock',
82
+ 'pnpm-lock.yaml',
83
+ 'bun.lockb',
84
+ 'bun.lock',
85
+ 'deno.lock',
86
+ ].some((lockfile) => fs.existsSync(path.join(installDir, lockfile)));
87
+ // We only treat this as JS Web if there's BOTH:
88
+ // - a lockfile, and
89
+ // - at least one frontend signal (index.html or bundler)
90
+ if (hasLockfile && (hasIndexHtmlFlag || hasBundler)) {
91
+ return true;
92
+ }
93
+ // Otherwise → Node/Backend (handled by javascriptNode fallback)
94
+ return false;
95
+ },
96
+ },
97
+ environment: {
98
+ uploadToHosting: false,
99
+ getEnvVars: (apiKey, _host) => ({
100
+ AMPLITUDE_API_KEY: apiKey,
101
+ }),
102
+ },
103
+ analytics: {
104
+ getTags: (context) => {
105
+ const tags = {
106
+ packageManager: context.packageManagerName ?? 'unknown',
107
+ };
108
+ if (context.hasBundler) {
109
+ tags.bundler = context.hasBundler;
110
+ }
111
+ return tags;
112
+ },
113
+ },
114
+ prompts: {
115
+ projectTypeDetection: 'This is a JavaScript/TypeScript project. Look for package.json and lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb) to confirm.',
116
+ packageInstallation: 'Look for lockfiles to determine the package manager (npm, yarn, pnpm, bun). Do not manually edit package.json.',
117
+ getAdditionalContextLines: (context) => {
118
+ const lines = [
119
+ `Package manager: ${context.packageManagerName ?? 'unknown'}`,
120
+ `Has TypeScript: ${context.hasTypeScript ? 'yes' : 'no'}`,
121
+ `Framework docs ID: js (use amplitude://docs/frameworks/js for documentation if available)`,
122
+ `Project type: Generic JavaScript/TypeScript application (no specific framework detected)`,
123
+ `Preferred Amplitude SDK: @amplitude/unified (prefer over @amplitude/analytics-browser for new browser integrations)`,
124
+ ];
125
+ if (context.hasBundler) {
126
+ lines.unshift(`Bundler: ${context.hasBundler}`);
127
+ }
128
+ return lines;
129
+ },
130
+ },
131
+ ui: {
132
+ successMessage: 'Amplitude integration complete',
133
+ estimatedDurationMinutes: 5,
134
+ getOutroChanges: (context) => {
135
+ const packageManagerName = context.packageManagerName ?? 'package manager';
136
+ return [
137
+ `Analyzed your JavaScript project structure`,
138
+ `Installed the @amplitude/unified package using ${packageManagerName}`,
139
+ `Created Amplitude initialization code`,
140
+ `Configured autocapture and event tracking`,
141
+ ];
142
+ },
143
+ getOutroNextSteps: () => [
144
+ 'Ensure amplitude.init() is called before any track calls',
145
+ 'Autocapture tracks clicks, form submissions, and pageviews automatically',
146
+ 'Use amplitude.track() for custom events and amplitude.setUserId() for users',
147
+ 'NEVER send PII in event properties (no emails, names, or user content)',
148
+ 'Visit your Amplitude dashboard to see incoming events',
149
+ ],
150
+ },
151
+ };
@@ -0,0 +1,28 @@
1
+ import type { WizardOptions } from '../../utils/types';
2
+ export type JavaScriptContext = {
3
+ packageManagerName?: string;
4
+ hasTypeScript?: boolean;
5
+ hasBundler?: string;
6
+ };
7
+ /**
8
+ * Packages that indicate a specific framework integration exists.
9
+ * If any of these are in package.json, we should NOT match as generic JavaScript.
10
+ *
11
+ * When adding a new JS framework integration to the wizard,
12
+ * add its detection package here too.
13
+ */
14
+ export declare const FRAMEWORK_PACKAGES: readonly ["next", "nuxt", "vue", "react-router", "@tanstack/react-start", "@tanstack/react-router", "react-native", "@angular/core", "astro", "@sveltejs/kit"];
15
+ /**
16
+ * Detect the JS package manager for the project by checking lockfiles.
17
+ * Reuses the existing package manager detection infrastructure.
18
+ */
19
+ export declare function detectJsPackageManager(options: Pick<WizardOptions, 'installDir'>): string;
20
+ /**
21
+ * Detect the bundler used in the project by checking package.json dependencies.
22
+ */
23
+ export declare function detectBundler(options: Pick<WizardOptions, 'installDir'>): string | undefined;
24
+ /**
25
+ * Heuristic: check if there is an index.html anywhere in the project,
26
+ * ignoring common build and dependency directories.
27
+ */
28
+ export declare function hasIndexHtml(options: Pick<WizardOptions, 'installDir'>): boolean;
@@ -0,0 +1,153 @@
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.FRAMEWORK_PACKAGES = void 0;
37
+ exports.detectJsPackageManager = detectJsPackageManager;
38
+ exports.detectBundler = detectBundler;
39
+ exports.hasIndexHtml = hasIndexHtml;
40
+ const fs = __importStar(require("node:fs"));
41
+ const path = __importStar(require("node:path"));
42
+ const zod_1 = require("zod");
43
+ const package_manager_1 = require("../../utils/package-manager");
44
+ const INDEX_HTML_MAX_DEPTH = 6;
45
+ const INDEX_HTML_IGNORE_DIRS = new Set([
46
+ 'node_modules',
47
+ '.git',
48
+ '.next',
49
+ 'dist',
50
+ 'build',
51
+ '.turbo',
52
+ '.cache',
53
+ ]);
54
+ /**
55
+ * Packages that indicate a specific framework integration exists.
56
+ * If any of these are in package.json, we should NOT match as generic JavaScript.
57
+ *
58
+ * When adding a new JS framework integration to the wizard,
59
+ * add its detection package here too.
60
+ */
61
+ exports.FRAMEWORK_PACKAGES = [
62
+ 'next',
63
+ 'nuxt',
64
+ 'vue',
65
+ 'react-router',
66
+ '@tanstack/react-start',
67
+ '@tanstack/react-router',
68
+ 'react-native',
69
+ '@angular/core',
70
+ 'astro',
71
+ '@sveltejs/kit',
72
+ ];
73
+ /**
74
+ * Detect the JS package manager for the project by checking lockfiles.
75
+ * Reuses the existing package manager detection infrastructure.
76
+ */
77
+ function detectJsPackageManager(options) {
78
+ const detected = (0, package_manager_1.detectAllPackageManagers)(options);
79
+ if (detected.length > 0) {
80
+ return detected[0].label;
81
+ }
82
+ return 'unknown';
83
+ }
84
+ /**
85
+ * Detect the bundler used in the project by checking package.json dependencies.
86
+ */
87
+ function detectBundler(options) {
88
+ try {
89
+ const content = fs.readFileSync(path.join(options.installDir, 'package.json'), 'utf-8');
90
+ const pkg = zod_1.z
91
+ .object({
92
+ dependencies: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
93
+ devDependencies: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
94
+ })
95
+ .passthrough()
96
+ .parse(JSON.parse(content));
97
+ const allDeps = {
98
+ ...pkg.dependencies,
99
+ ...pkg.devDependencies,
100
+ };
101
+ if (allDeps['vite'])
102
+ return 'vite';
103
+ if (allDeps['webpack'])
104
+ return 'webpack';
105
+ if (allDeps['esbuild'])
106
+ return 'esbuild';
107
+ if (allDeps['parcel'])
108
+ return 'parcel';
109
+ if (allDeps['rollup'])
110
+ return 'rollup';
111
+ return undefined;
112
+ }
113
+ catch {
114
+ return undefined;
115
+ }
116
+ }
117
+ /**
118
+ * Heuristic: check if there is an index.html anywhere in the project,
119
+ * ignoring common build and dependency directories.
120
+ */
121
+ function hasIndexHtml(options) {
122
+ const root = options.installDir;
123
+ function search(dir, depth) {
124
+ if (depth > INDEX_HTML_MAX_DEPTH) {
125
+ return false;
126
+ }
127
+ const base = path.basename(dir);
128
+ if (INDEX_HTML_IGNORE_DIRS.has(base)) {
129
+ return false;
130
+ }
131
+ let entries;
132
+ try {
133
+ entries = fs.readdirSync(dir, { withFileTypes: true });
134
+ }
135
+ catch {
136
+ return false;
137
+ }
138
+ for (const entry of entries) {
139
+ if (entry.isFile() && entry.name.toLowerCase() === 'index.html') {
140
+ return true;
141
+ }
142
+ }
143
+ for (const entry of entries) {
144
+ if (entry.isDirectory()) {
145
+ if (search(path.join(dir, entry.name), depth + 1)) {
146
+ return true;
147
+ }
148
+ }
149
+ }
150
+ return false;
151
+ }
152
+ return search(root, 0);
153
+ }