@amplitude/wizard 1.1.0 → 1.2.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 (259) hide show
  1. package/dist/bin.js +47 -11
  2. package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.js +11 -1
  3. package/dist/src/frameworks/react-router/react-router-wizard-agent.js +65 -8
  4. package/dist/src/frameworks/vue/vue-wizard-agent.js +6 -1
  5. package/dist/src/lib/agent-interface.js +46 -0
  6. package/dist/src/lib/agent-runner.js +112 -51
  7. package/dist/src/lib/api.d.ts +35 -0
  8. package/dist/src/lib/api.js +118 -0
  9. package/dist/src/lib/commandments.js +1 -0
  10. package/dist/src/lib/constants.d.ts +1 -1
  11. package/dist/src/lib/constants.js +1 -1
  12. package/dist/src/lib/credential-resolution.js +7 -0
  13. package/dist/src/lib/framework-config.d.ts +9 -0
  14. package/dist/src/lib/mcp-with-fallback.d.ts +43 -0
  15. package/dist/src/lib/mcp-with-fallback.js +220 -0
  16. package/dist/src/lib/version-check.d.ts +17 -0
  17. package/dist/src/lib/version-check.js +72 -0
  18. package/dist/src/lib/wizard-session.d.ts +22 -7
  19. package/dist/src/lib/wizard-session.js +5 -3
  20. package/dist/src/run.d.ts +18 -1
  21. package/dist/src/run.js +104 -15
  22. package/dist/src/ui/agent-ui.d.ts +2 -0
  23. package/dist/src/ui/agent-ui.js +10 -0
  24. package/dist/src/ui/logging-ui.d.ts +2 -0
  25. package/dist/src/ui/logging-ui.js +6 -0
  26. package/dist/src/ui/tui/components/ConsoleView.js +14 -1
  27. package/dist/src/ui/tui/components/JourneyStepper.js +1 -3
  28. package/dist/src/ui/tui/flows.d.ts +0 -1
  29. package/dist/src/ui/tui/flows.js +1 -9
  30. package/dist/src/ui/tui/ink-ui.d.ts +2 -0
  31. package/dist/src/ui/tui/ink-ui.js +6 -0
  32. package/dist/src/ui/tui/screen-registry.js +0 -2
  33. package/dist/src/ui/tui/screens/DataIngestionCheckScreen.d.ts +5 -3
  34. package/dist/src/ui/tui/screens/DataIngestionCheckScreen.js +124 -4
  35. package/dist/src/ui/tui/screens/OutroScreen.js +12 -3
  36. package/dist/src/ui/tui/store.d.ts +22 -3
  37. package/dist/src/ui/tui/store.js +52 -18
  38. package/dist/src/ui/tui/utils/diagnostics.js +1 -3
  39. package/dist/src/ui/wizard-ui.d.ts +8 -0
  40. package/dist/src/utils/analytics.d.ts +15 -0
  41. package/dist/src/utils/analytics.js +37 -0
  42. package/dist/src/utils/setup-utils.js +6 -1
  43. package/package.json +2 -2
  44. package/skills/integration/integration-android/SKILL.md +7 -10
  45. package/skills/integration/integration-android/references/amplitude-quickstart.md +1 -1
  46. package/skills/integration/integration-android/references/android.md +1468 -0
  47. package/skills/integration/integration-android/references/basic-integration-1.0-begin.md +3 -1
  48. package/skills/integration/integration-android/references/basic-integration-1.1-edit.md +183 -0
  49. package/skills/integration/integration-android/references/basic-integration-1.3-conclude.md +81 -11
  50. package/skills/integration/integration-angular/SKILL.md +6 -8
  51. package/skills/integration/integration-angular/references/amplitude-quickstart.md +1 -1
  52. package/skills/integration/integration-angular/references/basic-integration-1.0-begin.md +3 -1
  53. package/skills/integration/integration-angular/references/basic-integration-1.1-edit.md +183 -0
  54. package/skills/integration/integration-angular/references/basic-integration-1.3-conclude.md +81 -11
  55. package/skills/integration/integration-angular/references/browser-sdk-2.md +67 -20
  56. package/skills/integration/{integration-swift/references/analytics.md → integration-angular/references/browser-unified-sdk.md} +591 -157
  57. package/skills/integration/integration-astro-hybrid/SKILL.md +6 -13
  58. package/skills/integration/integration-astro-hybrid/references/amplitude-quickstart.md +1 -1
  59. package/skills/integration/integration-astro-hybrid/references/basic-integration-1.0-begin.md +3 -1
  60. package/skills/integration/integration-astro-hybrid/references/basic-integration-1.1-edit.md +183 -0
  61. package/skills/integration/integration-astro-hybrid/references/basic-integration-1.3-conclude.md +81 -11
  62. package/skills/integration/integration-astro-hybrid/references/browser-sdk-2.md +67 -20
  63. package/skills/integration/{integration-android/references/analytics.md → integration-astro-hybrid/references/browser-unified-sdk.md} +591 -157
  64. package/skills/integration/integration-astro-ssr/SKILL.md +6 -11
  65. package/skills/integration/integration-astro-ssr/references/amplitude-quickstart.md +1 -1
  66. package/skills/integration/integration-astro-ssr/references/basic-integration-1.0-begin.md +3 -1
  67. package/skills/integration/integration-astro-ssr/references/basic-integration-1.1-edit.md +183 -0
  68. package/skills/integration/integration-astro-ssr/references/basic-integration-1.3-conclude.md +81 -11
  69. package/skills/integration/integration-astro-ssr/references/browser-sdk-2.md +67 -20
  70. package/skills/integration/{integration-javascript_node/references/analytics.md → integration-astro-ssr/references/browser-unified-sdk.md} +591 -157
  71. package/skills/integration/integration-astro-static/SKILL.md +6 -8
  72. package/skills/integration/integration-astro-static/references/amplitude-quickstart.md +1 -1
  73. package/skills/integration/integration-astro-static/references/basic-integration-1.0-begin.md +3 -1
  74. package/skills/integration/integration-astro-static/references/basic-integration-1.1-edit.md +183 -0
  75. package/skills/integration/integration-astro-static/references/basic-integration-1.3-conclude.md +81 -11
  76. package/skills/integration/integration-astro-static/references/browser-sdk-2.md +67 -20
  77. package/skills/integration/integration-astro-static/references/browser-unified-sdk.md +2212 -0
  78. package/skills/integration/integration-astro-view-transitions/SKILL.md +6 -10
  79. package/skills/integration/integration-astro-view-transitions/references/amplitude-quickstart.md +1 -1
  80. package/skills/integration/integration-astro-view-transitions/references/basic-integration-1.0-begin.md +3 -1
  81. package/skills/integration/integration-astro-view-transitions/references/basic-integration-1.1-edit.md +183 -0
  82. package/skills/integration/integration-astro-view-transitions/references/basic-integration-1.3-conclude.md +81 -11
  83. package/skills/integration/integration-astro-view-transitions/references/browser-sdk-2.md +67 -20
  84. package/skills/integration/integration-astro-view-transitions/references/browser-unified-sdk.md +2212 -0
  85. package/skills/integration/integration-django/SKILL.md +5 -16
  86. package/skills/integration/integration-django/references/amplitude-quickstart.md +1 -1
  87. package/skills/integration/integration-django/references/basic-integration-1.0-begin.md +3 -1
  88. package/skills/integration/integration-django/references/basic-integration-1.1-edit.md +183 -0
  89. package/skills/integration/integration-django/references/basic-integration-1.3-conclude.md +81 -11
  90. package/skills/integration/integration-django/references/python.md +1 -1
  91. package/skills/integration/integration-expo/SKILL.md +8 -13
  92. package/skills/integration/integration-expo/references/amplitude-quickstart.md +1 -1
  93. package/skills/integration/integration-expo/references/basic-integration-1.0-begin.md +3 -1
  94. package/skills/integration/integration-expo/references/basic-integration-1.1-edit.md +183 -0
  95. package/skills/integration/integration-expo/references/basic-integration-1.3-conclude.md +81 -11
  96. package/skills/integration/integration-expo/references/react-native-sdk.md +11 -10
  97. package/skills/integration/integration-fastapi/SKILL.md +5 -16
  98. package/skills/integration/integration-fastapi/references/amplitude-quickstart.md +1 -1
  99. package/skills/integration/integration-fastapi/references/basic-integration-1.0-begin.md +3 -1
  100. package/skills/integration/integration-fastapi/references/basic-integration-1.1-edit.md +183 -0
  101. package/skills/integration/integration-fastapi/references/basic-integration-1.3-conclude.md +81 -11
  102. package/skills/integration/integration-fastapi/references/python.md +1 -1
  103. package/skills/integration/integration-flask/SKILL.md +5 -15
  104. package/skills/integration/integration-flask/references/amplitude-quickstart.md +1 -1
  105. package/skills/integration/integration-flask/references/basic-integration-1.0-begin.md +3 -1
  106. package/skills/integration/integration-flask/references/basic-integration-1.1-edit.md +183 -0
  107. package/skills/integration/integration-flask/references/basic-integration-1.3-conclude.md +81 -11
  108. package/skills/integration/integration-flask/references/python.md +1 -1
  109. package/skills/integration/integration-javascript_node/SKILL.md +6 -12
  110. package/skills/integration/integration-javascript_node/references/amplitude-quickstart.md +1 -1
  111. package/skills/integration/integration-javascript_node/references/basic-integration-1.0-begin.md +3 -1
  112. package/skills/integration/integration-javascript_node/references/basic-integration-1.1-edit.md +183 -0
  113. package/skills/integration/integration-javascript_node/references/basic-integration-1.3-conclude.md +81 -11
  114. package/skills/integration/integration-javascript_node/references/node.md +1457 -0
  115. package/skills/integration/integration-javascript_web/SKILL.md +7 -16
  116. package/skills/integration/integration-javascript_web/references/amplitude-quickstart.md +1 -1
  117. package/skills/integration/integration-javascript_web/references/basic-integration-1.0-begin.md +3 -1
  118. package/skills/integration/integration-javascript_web/references/basic-integration-1.1-edit.md +183 -0
  119. package/skills/integration/integration-javascript_web/references/basic-integration-1.3-conclude.md +81 -11
  120. package/skills/integration/integration-javascript_web/references/browser-sdk-2.md +67 -20
  121. package/skills/integration/integration-javascript_web/references/browser-unified-sdk.md +2212 -0
  122. package/skills/integration/integration-laravel/SKILL.md +5 -11
  123. package/skills/integration/integration-laravel/references/amplitude-quickstart.md +1 -1
  124. package/skills/integration/integration-laravel/references/analytics.md +1 -1
  125. package/skills/integration/integration-laravel/references/basic-integration-1.0-begin.md +3 -1
  126. package/skills/integration/integration-laravel/references/basic-integration-1.1-edit.md +183 -0
  127. package/skills/integration/integration-laravel/references/basic-integration-1.3-conclude.md +81 -11
  128. package/skills/integration/integration-nextjs-app-router/SKILL.md +6 -13
  129. package/skills/integration/integration-nextjs-app-router/references/amplitude-quickstart.md +1 -1
  130. package/skills/integration/integration-nextjs-app-router/references/basic-integration-1.0-begin.md +3 -1
  131. package/skills/integration/integration-nextjs-app-router/references/basic-integration-1.1-edit.md +183 -0
  132. package/skills/integration/integration-nextjs-app-router/references/basic-integration-1.3-conclude.md +81 -11
  133. package/skills/integration/integration-nextjs-app-router/references/browser-sdk-2.md +67 -20
  134. package/skills/integration/integration-nextjs-app-router/references/browser-unified-sdk.md +2212 -0
  135. package/skills/integration/integration-nextjs-pages-router/SKILL.md +6 -13
  136. package/skills/integration/integration-nextjs-pages-router/references/amplitude-quickstart.md +1 -1
  137. package/skills/integration/integration-nextjs-pages-router/references/basic-integration-1.0-begin.md +3 -1
  138. package/skills/integration/integration-nextjs-pages-router/references/basic-integration-1.1-edit.md +183 -0
  139. package/skills/integration/integration-nextjs-pages-router/references/basic-integration-1.3-conclude.md +81 -11
  140. package/skills/integration/integration-nextjs-pages-router/references/browser-sdk-2.md +67 -20
  141. package/skills/integration/integration-nextjs-pages-router/references/browser-unified-sdk.md +2212 -0
  142. package/skills/integration/integration-nuxt-3.6/SKILL.md +6 -5
  143. package/skills/integration/integration-nuxt-3.6/references/EXAMPLE.md +1 -1
  144. package/skills/integration/integration-nuxt-3.6/references/amplitude-quickstart.md +1 -1
  145. package/skills/integration/integration-nuxt-3.6/references/basic-integration-1.0-begin.md +3 -1
  146. package/skills/integration/integration-nuxt-3.6/references/basic-integration-1.1-edit.md +183 -0
  147. package/skills/integration/integration-nuxt-3.6/references/basic-integration-1.3-conclude.md +81 -11
  148. package/skills/integration/integration-nuxt-3.6/references/browser-sdk-2.md +67 -20
  149. package/skills/integration/integration-nuxt-3.6/references/browser-unified-sdk.md +2212 -0
  150. package/skills/integration/integration-nuxt-4/SKILL.md +6 -5
  151. package/skills/integration/integration-nuxt-4/references/amplitude-quickstart.md +1 -1
  152. package/skills/integration/integration-nuxt-4/references/basic-integration-1.0-begin.md +3 -1
  153. package/skills/integration/integration-nuxt-4/references/basic-integration-1.1-edit.md +183 -0
  154. package/skills/integration/integration-nuxt-4/references/basic-integration-1.3-conclude.md +81 -11
  155. package/skills/integration/integration-nuxt-4/references/browser-sdk-2.md +67 -20
  156. package/skills/integration/integration-nuxt-4/references/browser-unified-sdk.md +2212 -0
  157. package/skills/integration/integration-python/SKILL.md +8 -13
  158. package/skills/integration/integration-python/references/amplitude-quickstart.md +1 -1
  159. package/skills/integration/integration-python/references/basic-integration-1.0-begin.md +3 -1
  160. package/skills/integration/integration-python/references/basic-integration-1.1-edit.md +183 -0
  161. package/skills/integration/integration-python/references/basic-integration-1.3-conclude.md +81 -11
  162. package/skills/integration/integration-python/references/python.md +1 -1
  163. package/skills/integration/integration-react-native/SKILL.md +8 -9
  164. package/skills/integration/integration-react-native/references/amplitude-quickstart.md +1 -1
  165. package/skills/integration/integration-react-native/references/basic-integration-1.0-begin.md +3 -1
  166. package/skills/integration/integration-react-native/references/basic-integration-1.1-edit.md +183 -0
  167. package/skills/integration/integration-react-native/references/basic-integration-1.3-conclude.md +81 -11
  168. package/skills/integration/integration-react-native/references/react-native-sdk.md +11 -10
  169. package/skills/integration/integration-react-react-router-6/SKILL.md +6 -12
  170. package/skills/integration/integration-react-react-router-6/references/amplitude-quickstart.md +1 -1
  171. package/skills/integration/integration-react-react-router-6/references/basic-integration-1.0-begin.md +3 -1
  172. package/skills/integration/integration-react-react-router-6/references/basic-integration-1.1-edit.md +183 -0
  173. package/skills/integration/integration-react-react-router-6/references/basic-integration-1.3-conclude.md +81 -11
  174. package/skills/integration/integration-react-react-router-6/references/browser-sdk-2.md +67 -20
  175. package/skills/integration/integration-react-react-router-6/references/browser-unified-sdk.md +2212 -0
  176. package/skills/integration/integration-react-react-router-7-data/SKILL.md +6 -12
  177. package/skills/integration/integration-react-react-router-7-data/references/amplitude-quickstart.md +1 -1
  178. package/skills/integration/integration-react-react-router-7-data/references/basic-integration-1.0-begin.md +3 -1
  179. package/skills/integration/integration-react-react-router-7-data/references/basic-integration-1.1-edit.md +183 -0
  180. package/skills/integration/integration-react-react-router-7-data/references/basic-integration-1.3-conclude.md +81 -11
  181. package/skills/integration/integration-react-react-router-7-data/references/browser-sdk-2.md +67 -20
  182. package/skills/integration/integration-react-react-router-7-data/references/browser-unified-sdk.md +2212 -0
  183. package/skills/integration/integration-react-react-router-7-declarative/SKILL.md +6 -12
  184. package/skills/integration/integration-react-react-router-7-declarative/references/amplitude-quickstart.md +1 -1
  185. package/skills/integration/integration-react-react-router-7-declarative/references/basic-integration-1.0-begin.md +3 -1
  186. package/skills/integration/integration-react-react-router-7-declarative/references/basic-integration-1.1-edit.md +183 -0
  187. package/skills/integration/integration-react-react-router-7-declarative/references/basic-integration-1.3-conclude.md +81 -11
  188. package/skills/integration/integration-react-react-router-7-declarative/references/browser-sdk-2.md +67 -20
  189. package/skills/integration/integration-react-react-router-7-declarative/references/browser-unified-sdk.md +2212 -0
  190. package/skills/integration/integration-react-react-router-7-framework/SKILL.md +6 -12
  191. package/skills/integration/integration-react-react-router-7-framework/references/amplitude-quickstart.md +1 -1
  192. package/skills/integration/integration-react-react-router-7-framework/references/basic-integration-1.0-begin.md +3 -1
  193. package/skills/integration/integration-react-react-router-7-framework/references/basic-integration-1.1-edit.md +183 -0
  194. package/skills/integration/integration-react-react-router-7-framework/references/basic-integration-1.3-conclude.md +81 -11
  195. package/skills/integration/integration-react-react-router-7-framework/references/browser-sdk-2.md +67 -20
  196. package/skills/integration/integration-react-react-router-7-framework/references/browser-unified-sdk.md +2212 -0
  197. package/skills/integration/integration-react-tanstack-router-code-based/SKILL.md +6 -14
  198. package/skills/integration/integration-react-tanstack-router-code-based/references/amplitude-quickstart.md +1 -1
  199. package/skills/integration/integration-react-tanstack-router-code-based/references/basic-integration-1.0-begin.md +3 -1
  200. package/skills/integration/integration-react-tanstack-router-code-based/references/basic-integration-1.1-edit.md +183 -0
  201. package/skills/integration/integration-react-tanstack-router-code-based/references/basic-integration-1.3-conclude.md +81 -11
  202. package/skills/integration/integration-react-tanstack-router-code-based/references/browser-sdk-2.md +67 -20
  203. package/skills/integration/integration-react-tanstack-router-code-based/references/browser-unified-sdk.md +2212 -0
  204. package/skills/integration/integration-react-tanstack-router-file-based/SKILL.md +6 -14
  205. package/skills/integration/integration-react-tanstack-router-file-based/references/amplitude-quickstart.md +1 -1
  206. package/skills/integration/integration-react-tanstack-router-file-based/references/basic-integration-1.0-begin.md +3 -1
  207. package/skills/integration/integration-react-tanstack-router-file-based/references/basic-integration-1.1-edit.md +183 -0
  208. package/skills/integration/integration-react-tanstack-router-file-based/references/basic-integration-1.3-conclude.md +81 -11
  209. package/skills/integration/integration-react-tanstack-router-file-based/references/browser-sdk-2.md +67 -20
  210. package/skills/integration/integration-react-tanstack-router-file-based/references/browser-unified-sdk.md +2212 -0
  211. package/skills/integration/integration-react-vite/SKILL.md +6 -12
  212. package/skills/integration/integration-react-vite/references/amplitude-quickstart.md +1 -1
  213. package/skills/integration/integration-react-vite/references/basic-integration-1.0-begin.md +3 -1
  214. package/skills/integration/integration-react-vite/references/basic-integration-1.1-edit.md +183 -0
  215. package/skills/integration/integration-react-vite/references/basic-integration-1.3-conclude.md +81 -11
  216. package/skills/integration/integration-react-vite/references/browser-sdk-2.md +67 -20
  217. package/skills/integration/integration-react-vite/references/browser-unified-sdk.md +2212 -0
  218. package/skills/integration/integration-ruby/SKILL.md +6 -10
  219. package/skills/integration/integration-ruby/references/amplitude-quickstart.md +1 -1
  220. package/skills/integration/integration-ruby/references/analytics.md +1 -1
  221. package/skills/integration/integration-ruby/references/basic-integration-1.0-begin.md +3 -1
  222. package/skills/integration/integration-ruby/references/basic-integration-1.1-edit.md +183 -0
  223. package/skills/integration/integration-ruby/references/basic-integration-1.3-conclude.md +81 -11
  224. package/skills/integration/integration-ruby-on-rails/SKILL.md +5 -14
  225. package/skills/integration/integration-ruby-on-rails/references/amplitude-quickstart.md +1 -1
  226. package/skills/integration/integration-ruby-on-rails/references/analytics.md +1 -1
  227. package/skills/integration/integration-ruby-on-rails/references/basic-integration-1.0-begin.md +3 -1
  228. package/skills/integration/integration-ruby-on-rails/references/basic-integration-1.1-edit.md +183 -0
  229. package/skills/integration/integration-ruby-on-rails/references/basic-integration-1.3-conclude.md +81 -11
  230. package/skills/integration/integration-sveltekit/SKILL.md +6 -6
  231. package/skills/integration/integration-sveltekit/references/amplitude-quickstart.md +1 -1
  232. package/skills/integration/integration-sveltekit/references/basic-integration-1.0-begin.md +3 -1
  233. package/skills/integration/integration-sveltekit/references/basic-integration-1.1-edit.md +183 -0
  234. package/skills/integration/integration-sveltekit/references/basic-integration-1.3-conclude.md +81 -11
  235. package/skills/integration/integration-sveltekit/references/browser-sdk-2.md +67 -20
  236. package/skills/integration/integration-sveltekit/references/browser-unified-sdk.md +2212 -0
  237. package/skills/integration/integration-swift/SKILL.md +9 -10
  238. package/skills/integration/integration-swift/references/amplitude-quickstart.md +1 -1
  239. package/skills/integration/integration-swift/references/basic-integration-1.0-begin.md +3 -1
  240. package/skills/integration/integration-swift/references/basic-integration-1.1-edit.md +183 -0
  241. package/skills/integration/integration-swift/references/basic-integration-1.3-conclude.md +81 -11
  242. package/skills/integration/integration-swift/references/ios.md +1480 -0
  243. package/skills/integration/integration-tanstack-start/SKILL.md +6 -17
  244. package/skills/integration/integration-tanstack-start/references/amplitude-quickstart.md +1 -1
  245. package/skills/integration/integration-tanstack-start/references/basic-integration-1.0-begin.md +3 -1
  246. package/skills/integration/integration-tanstack-start/references/basic-integration-1.1-edit.md +183 -0
  247. package/skills/integration/integration-tanstack-start/references/basic-integration-1.3-conclude.md +81 -11
  248. package/skills/integration/integration-tanstack-start/references/browser-sdk-2.md +67 -20
  249. package/skills/integration/integration-tanstack-start/references/browser-unified-sdk.md +2212 -0
  250. package/skills/integration/integration-vue-3/SKILL.md +6 -5
  251. package/skills/integration/integration-vue-3/references/amplitude-quickstart.md +1 -1
  252. package/skills/integration/integration-vue-3/references/basic-integration-1.0-begin.md +3 -1
  253. package/skills/integration/integration-vue-3/references/basic-integration-1.1-edit.md +183 -0
  254. package/skills/integration/integration-vue-3/references/basic-integration-1.3-conclude.md +81 -11
  255. package/skills/integration/integration-vue-3/references/browser-sdk-2.md +67 -20
  256. package/skills/integration/integration-vue-3/references/browser-unified-sdk.md +2212 -0
  257. package/skills/taxonomy/amplitude-chart-dashboard-plan/SKILL.md +183 -0
  258. package/dist/src/ui/tui/screens/ChecklistScreen.d.ts +0 -12
  259. package/dist/src/ui/tui/screens/ChecklistScreen.js +0 -111
@@ -119,12 +119,24 @@ export class WizardStore {
119
119
  }
120
120
  setCredentials(credentials) {
121
121
  this.$session.setKey('credentials', credentials);
122
- if (credentials?.projectId) {
123
- analytics.setDistinctId(String(credentials.projectId));
122
+ const session = this.$session.get();
123
+ if (session.userEmail) {
124
+ analytics.setDistinctId(session.userEmail);
125
+ analytics.identifyUser({
126
+ email: session.userEmail,
127
+ org_id: session.selectedOrgId ?? undefined,
128
+ org_name: session.selectedOrgName ?? undefined,
129
+ workspace_id: session.selectedWorkspaceId ?? undefined,
130
+ workspace_name: session.selectedWorkspaceName ?? undefined,
131
+ project_id: session.selectedProjectId ?? credentials?.projectId,
132
+ project_name: session.selectedProjectName,
133
+ region: session.region,
134
+ integration: session.integration,
135
+ });
124
136
  }
125
137
  analytics.wizardCapture('Auth Complete', {
126
138
  project_id: credentials?.projectId,
127
- region: this.session.region,
139
+ region: session.region,
128
140
  });
129
141
  this.emitChange();
130
142
  }
@@ -139,6 +151,9 @@ export class WizardStore {
139
151
  setFrameworkConfig(integration, config) {
140
152
  this.$session.setKey('integration', integration);
141
153
  this.$session.setKey('frameworkConfig', config);
154
+ if (integration) {
155
+ analytics.identifyUser({ integration });
156
+ }
142
157
  this.emitChange();
143
158
  }
144
159
  setDetectionComplete() {
@@ -294,6 +309,32 @@ export class WizardStore {
294
309
  this.$session.setKey('credentials', { ...creds, accessToken });
295
310
  this.$version.set(this.$version.get() + 1);
296
311
  }
312
+ /** Update both access and id tokens (e.g. after a silent OAuth refresh). */
313
+ updateTokens(accessToken, idToken) {
314
+ const creds = this.$session.get().credentials;
315
+ if (!creds)
316
+ return;
317
+ this.$session.setKey('credentials', { ...creds, accessToken, idToken });
318
+ this.$version.set(this.$version.get() + 1);
319
+ }
320
+ /**
321
+ * Restore org/workspace/project session IDs that weren't populated at startup
322
+ * (e.g. because the fire-and-forget fetchAmplitudeUser failed due to expired token).
323
+ * Only updates fields that are provided.
324
+ */
325
+ restoreSessionIds(fields) {
326
+ if (fields.orgId !== undefined)
327
+ this.$session.setKey('selectedOrgId', fields.orgId);
328
+ if (fields.orgName !== undefined)
329
+ this.$session.setKey('selectedOrgName', fields.orgName);
330
+ if (fields.workspaceId !== undefined)
331
+ this.$session.setKey('selectedWorkspaceId', fields.workspaceId);
332
+ if (fields.workspaceName !== undefined)
333
+ this.$session.setKey('selectedWorkspaceName', fields.workspaceName);
334
+ if (fields.projectId !== undefined)
335
+ this.$session.setKey('selectedProjectId', fields.projectId);
336
+ this.emitChange();
337
+ }
297
338
  /** Request the TabContainer to switch to a tab by id. Clears after consumption. */
298
339
  setRequestedTab(id) {
299
340
  this.$requestedTab.set(id);
@@ -330,21 +371,8 @@ export class WizardStore {
330
371
  analytics.wizardCapture('Data Ingestion Confirmed', sessionPropertiesCompact(this.session));
331
372
  this.emitChange();
332
373
  }
333
- setChecklistChartComplete() {
334
- this.$session.setKey('checklistChartComplete', true);
335
- this.emitChange();
336
- }
337
- setChecklistDashboardComplete() {
338
- this.$session.setKey('checklistDashboardComplete', true);
339
- this.emitChange();
340
- }
341
- setChecklistComplete() {
342
- this.$session.setKey('checklistComplete', true);
343
- analytics.wizardCapture('Checklist Completed', {
344
- chart_complete: this.session.checklistChartComplete,
345
- dashboard_complete: this.session.checklistDashboardComplete,
346
- ...sessionPropertiesCompact(this.session),
347
- });
374
+ setChecklistDashboardUrl(url) {
375
+ this.$session.setKey('checklistDashboardUrl', url);
348
376
  this.emitChange();
349
377
  }
350
378
  setActivationOptionsComplete() {
@@ -376,6 +404,12 @@ export class WizardStore {
376
404
  this.$session.setKey('selectedOrgName', org.name);
377
405
  this.$session.setKey('selectedWorkspaceId', workspace.id);
378
406
  this.$session.setKey('selectedWorkspaceName', workspace.name);
407
+ // Extract the analytics project ID from the lowest-rank environment.
408
+ const projectId = workspace.environments
409
+ ?.slice()
410
+ .sort((a, b) => a.rank - b.rank)
411
+ .find((e) => e.app?.id)?.app?.id ?? null;
412
+ this.$session.setKey('selectedProjectId', projectId);
379
413
  // Write ampli.json to the project directory.
380
414
  // Use session.region (user-confirmed) over pendingAuthCloudRegion (auto-detected)
381
415
  // so that /region changes are respected.
@@ -51,9 +51,7 @@ export function createDiagnosticSnapshot(store, version) {
51
51
  mcp_complete: session.mcpComplete,
52
52
  slack_complete: session.slackComplete,
53
53
  data_ingestion_confirmed: session.dataIngestionConfirmed,
54
- checklist_complete: session.checklistComplete,
55
- checklist_chart_complete: session.checklistChartComplete,
56
- checklist_dashboard_complete: session.checklistDashboardComplete,
54
+ checklist_dashboard_url: session.checklistDashboardUrl !== null,
57
55
  discovered_features: session.discoveredFeatures,
58
56
  additional_feature_queue: session.additionalFeatureQueue,
59
57
  amplitude_pre_detected: session.amplitudePreDetected,
@@ -107,4 +107,12 @@ export interface WizardUI {
107
107
  name: string;
108
108
  description: string;
109
109
  }>): void;
110
+ /** Emitted by agent mode when MCP polling detects events flowing into the project. */
111
+ setEventIngestionDetected(eventNames: string[]): void;
112
+ /**
113
+ * Called when the agent writes .amplitude-dashboard.json with the URL of
114
+ * the dashboard it created during the conclude phase. Surfaces the link in
115
+ * ChecklistScreen so users can open the dashboard immediately.
116
+ */
117
+ setDashboardUrl(url: string): void;
110
118
  }
@@ -26,6 +26,21 @@ export declare class Analytics {
26
26
  private initPromise;
27
27
  constructor();
28
28
  setDistinctId(distinctId: string): void;
29
+ /**
30
+ * Send an identify call to associate user properties with the current user.
31
+ * Call after setDistinctId() has been called with a valid email.
32
+ */
33
+ identifyUser(properties: {
34
+ email?: string;
35
+ org_id?: string;
36
+ org_name?: string;
37
+ workspace_id?: string;
38
+ workspace_name?: string;
39
+ project_id?: string | number | null;
40
+ project_name?: string | null;
41
+ region?: string | null;
42
+ integration?: string | null;
43
+ }): void;
29
44
  setTag(key: string, value: string | boolean | number | null | undefined): void;
30
45
  captureException(error: Error, properties?: Record<string, unknown>): void;
31
46
  capture(eventName: string, properties?: Record<string, unknown>): void;
@@ -69,6 +69,43 @@ class Analytics {
69
69
  setDistinctId(distinctId) {
70
70
  this.distinctId = distinctId;
71
71
  }
72
+ /**
73
+ * Send an identify call to associate user properties with the current user.
74
+ * Call after setDistinctId() has been called with a valid email.
75
+ */
76
+ identifyUser(properties) {
77
+ const apiKey = resolveTelemetryApiKey();
78
+ if (!apiKey || !this.distinctId) {
79
+ (0, debug_1.debug)('identifyUser skipped (no API key or distinctId):', properties);
80
+ return;
81
+ }
82
+ this.ensureInitStarted();
83
+ const identifyObj = new analytics_node_1.Identify();
84
+ if (properties.email) {
85
+ identifyObj.setOnce('email', properties.email);
86
+ }
87
+ if (properties.org_id)
88
+ identifyObj.set('org_id', properties.org_id);
89
+ if (properties.org_name)
90
+ identifyObj.set('org_name', properties.org_name);
91
+ if (properties.workspace_id)
92
+ identifyObj.set('workspace_id', properties.workspace_id);
93
+ if (properties.workspace_name)
94
+ identifyObj.set('workspace_name', properties.workspace_name);
95
+ if (properties.project_id != null)
96
+ identifyObj.set('project_id', String(properties.project_id));
97
+ if (properties.project_name)
98
+ identifyObj.set('project_name', properties.project_name);
99
+ if (properties.region)
100
+ identifyObj.set('region', properties.region);
101
+ if (properties.integration)
102
+ identifyObj.set('integration', properties.integration);
103
+ this.client.identify(identifyObj, {
104
+ device_id: this.anonymousId,
105
+ user_id: this.distinctId,
106
+ });
107
+ (0, debug_1.debug)('identifyUser:', properties);
108
+ }
72
109
  setTag(key, value) {
73
110
  this.tags[key] = value;
74
111
  }
@@ -414,7 +414,12 @@ async function askForWizardLogin(opts = {}) {
414
414
  });
415
415
  }
416
416
  (0, ui_1.getUI)().log.success(`Logged in as ${chalk_1.default.bold(userInfo.email)}${selectedOrg ? ` (${selectedOrg.name})` : ''}`);
417
- analytics_1.analytics.setDistinctId(userInfo.id);
417
+ analytics_1.analytics.setDistinctId(userInfo.email);
418
+ analytics_1.analytics.identifyUser({
419
+ email: userInfo.email,
420
+ org_id: selectedOrg?.id,
421
+ org_name: selectedOrg?.name,
422
+ });
418
423
  analytics_1.analytics.setTag('opened-wizard-link', true);
419
424
  }
420
425
  let selectedWorkspace;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amplitude/wizard",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "homepage": "https://github.com/amplitude/wizard",
5
5
  "repository": "https://github.com/amplitude/wizard",
6
6
  "description": "The Amplitude wizard helps you to configure your project",
@@ -139,6 +139,6 @@
139
139
  "test:bdd:watch": "cucumber-js --retry 0 2>&1 | npx nodemon --watch features --exec cucumber-js",
140
140
  "test:proxy": "vitest run --config vitest.config.proxy.ts",
141
141
  "test:proxy:smoke": "vitest run --config vitest.config.proxy.ts -t 'proxy:smoke'",
142
- "skills:refresh": "bash scripts/refresh-instrumentation-skills.sh"
142
+ "skills:refresh": "bash scripts/refresh-skills.sh"
143
143
  }
144
144
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: integration-android
3
- description: Amplitude integration for Android applications
3
+ description: Amplitude integration for Android applications using the Kotlin SDK
4
4
  metadata:
5
5
  author: Amplitude
6
6
  version: dev
@@ -22,7 +22,7 @@ Follow these steps in order to complete the integration:
22
22
  ## Reference files
23
23
 
24
24
  - `references/EXAMPLE.md` - Android example project code
25
- - `references/analytics.md` - Amplitude documentation for Analytics
25
+ - `references/android.md` - Amplitude documentation for Android
26
26
  - `references/amplitude-quickstart.md` - Amplitude documentation for Amplitude Quickstart
27
27
  - `references/basic-integration-1.0-begin.md` - Amplitude setup - begin
28
28
  - `references/basic-integration-1.1-edit.md` - Amplitude setup - edit
@@ -36,14 +36,11 @@ The example project shows the target implementation pattern. Consult the documen
36
36
  - **Environment variables**: Always use environment variables for Amplitude keys. Never hardcode them.
37
37
  - **Minimal changes**: Add Amplitude code alongside existing integrations. Don't replace or restructure existing code.
38
38
  - **Match the example**: Your implementation should follow the example project's patterns as closely as possible.
39
-
40
- ## Framework guidelines
41
-
42
- - Adapt dependency configuration to the appropriate build.gradle(.kts) file according to the project gradle version
43
- - Call Amplitude(Configuration(apiKey = ..., context = applicationContext)).also { amplitude = it } only once in the Application class's onCreate() method, so it is initialized as early as possible and only once.
44
- - Initialize Amplitude in the Application class's onCreate() method
45
- - Ensure every activity has a android:label to accurately track screen views.
39
+ - **Unified SDK**: For new browser/frontend projects, use `@amplitude/unified` as the default SDK — it bundles Analytics, Session Replay, Experiment, and Guides & Surveys in a single package. Initialize with `initAll()`. Only use `@amplitude/analytics-browser` if the project already has it installed.
40
+ - **Event naming**: Event names MUST use Title Case with spaces following the [Noun] + [Past-Tense Verb] pattern (e.g., "Button Clicked", "Sign Up Completed", "Cart Viewed"). Do NOT use snake_case, camelCase, or SCREAMING_SNAKE. Property names should use snake_case (e.g., button_text, page_url).
41
+ - **No PII in events**: Never send PII (emails, full names, phone numbers, physical addresses, IP addresses) in `track()` event properties. PII belongs in `identify()` user properties only.
42
+ - **Autocapture**: Enable autocapture in the init config to automatically capture sessions, page views, form interactions, and file downloads. Use the `autocapture` config option (not the deprecated `defaultTracking`).
46
43
 
47
44
  ## Identifying users
48
45
 
49
- Identify users during login and signup events. Refer to the example code and documentation for the correct identify pattern for this framework. Call `amplitude.setUserId(userId)` to associate events with a known user, and use `amplitude.identify()` with an `Identify` object to set user properties. If both frontend and backend code exist, pass a consistent user/device ID via custom request headers to maintain event correlation.
46
+ Identify users during login and signup events. Refer to the example code and documentation for the correct identify pattern for this framework. Call `amplitude.setUserId(userId)` to associate events with a known user, and use `amplitude.identify()` with an `Identify` object to set user properties. Call `amplitude.reset()` on logout to unlink future events from the current user. If both frontend and backend code exist, pass a consistent user/device ID via custom request headers to maintain event correlation.
@@ -81,7 +81,7 @@
81
81
  }
82
82
  </style>
83
83
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.25.0/tocbot.css">
84
- <link href="/docs/css/site.css?id=cf9c3f0a1066ff8b5d94a25cd8d407e1" rel="stylesheet">
84
+ <link href="/docs/css/site.css?id=6e2f9e1efe9343c4ba65666223648444" rel="stylesheet">
85
85
  <link href="/docs/css/algolia.css?id=e343cc9490e043fefffa37d2817ddf8c" rel="stylesheet">
86
86
  <link href="/docs/css/dracula-prism.css?id=a5713888be640854bb66b8b74c1037ce" rel="stylesheet">
87
87
  <style>