@amplitude/wizard 1.0.0-beta.2 → 1.0.0-beta.6
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.
- package/LICENSE +25 -1
- package/README.md +171 -74
- package/dist/bin.js +338 -222
- package/dist/src/lib/agent-interface.js +64 -9
- package/dist/src/lib/agent-runner.js +1 -10
- package/dist/src/lib/api.d.ts +22 -4
- package/dist/src/lib/api.js +114 -12
- package/dist/src/lib/commandments.js +14 -1
- package/dist/src/lib/constants.d.ts +6 -5
- package/dist/src/lib/constants.js +13 -13
- package/dist/src/lib/credential-resolution.d.ts +45 -0
- package/dist/src/lib/credential-resolution.js +311 -0
- package/dist/src/lib/exit-codes.d.ts +10 -0
- package/dist/src/lib/exit-codes.js +12 -0
- package/dist/src/lib/health-checks/statuspage.d.ts +1 -0
- package/dist/src/lib/health-checks/statuspage.js +5 -1
- package/dist/src/lib/mode-config.d.ts +14 -0
- package/dist/src/lib/mode-config.js +14 -0
- package/dist/src/lib/session-checkpoint.d.ts +27 -0
- package/dist/src/lib/session-checkpoint.js +134 -0
- package/dist/src/lib/wizard-session.d.ts +44 -1
- package/dist/src/lib/wizard-session.js +70 -14
- package/dist/src/lib/wizard-tools.js +19 -4
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude.d.ts +3 -0
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude.js +6 -0
- package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.js +3 -1
- package/dist/src/ui/agent-ui.d.ts +91 -0
- package/dist/src/ui/agent-ui.js +277 -0
- package/dist/src/ui/logging-ui.js +1 -1
- package/dist/src/ui/tui/App.d.ts +12 -0
- package/dist/src/ui/tui/App.js +29 -18
- package/dist/src/ui/tui/components/AmplitudeLogo.js +16 -17
- package/dist/src/ui/tui/components/AmplitudeTextLogo.d.ts +0 -2
- package/dist/src/ui/tui/components/AmplitudeTextLogo.js +53 -18
- package/dist/src/ui/tui/components/BrailleSpinner.d.ts +8 -0
- package/dist/src/ui/tui/components/BrailleSpinner.js +15 -0
- package/dist/src/ui/tui/components/ConsoleView.d.ts +8 -11
- package/dist/src/ui/tui/components/ConsoleView.js +51 -34
- package/dist/src/ui/tui/components/HeaderBar.d.ts +12 -0
- package/dist/src/ui/tui/components/HeaderBar.js +17 -0
- package/dist/src/ui/tui/components/JourneyStepper.d.ts +16 -0
- package/dist/src/ui/tui/components/JourneyStepper.js +83 -0
- package/dist/src/ui/tui/components/KeyHintBar.d.ts +19 -0
- package/dist/src/ui/tui/components/KeyHintBar.js +20 -0
- package/dist/src/ui/tui/console-commands.d.ts +1 -2
- package/dist/src/ui/tui/console-commands.js +48 -7
- package/dist/src/ui/tui/flows.d.ts +1 -1
- package/dist/src/ui/tui/flows.js +1 -1
- package/dist/src/ui/tui/hooks/useAsyncEffect.d.ts +15 -0
- package/dist/src/ui/tui/hooks/useAsyncEffect.js +35 -0
- package/dist/src/ui/tui/hooks/useWizardStore.d.ts +9 -0
- package/dist/src/ui/tui/hooks/useWizardStore.js +11 -0
- package/dist/src/ui/tui/ink-ui.js +1 -1
- package/dist/src/ui/tui/primitives/DissolveTransition.js +4 -5
- package/dist/src/ui/tui/primitives/EventPlanViewer.d.ts +3 -1
- package/dist/src/ui/tui/primitives/EventPlanViewer.js +8 -3
- package/dist/src/ui/tui/primitives/ProgressList.js +1 -1
- package/dist/src/ui/tui/primitives/SlashCommandInput.js +19 -4
- package/dist/src/ui/tui/primitives/SplitView.d.ts +2 -1
- package/dist/src/ui/tui/primitives/SplitView.js +10 -2
- package/dist/src/ui/tui/primitives/TabContainer.js +10 -2
- package/dist/src/ui/tui/primitives/index.d.ts +0 -1
- package/dist/src/ui/tui/primitives/index.js +0 -1
- package/dist/src/ui/tui/router.js +1 -1
- package/dist/src/ui/tui/screen-registry.d.ts +0 -7
- package/dist/src/ui/tui/screen-registry.js +13 -4
- package/dist/src/ui/tui/screens/ActivationOptionsScreen.d.ts +2 -2
- package/dist/src/ui/tui/screens/ActivationOptionsScreen.js +8 -8
- package/dist/src/ui/tui/screens/AuthScreen.js +57 -27
- package/dist/src/ui/tui/screens/ChecklistScreen.d.ts +2 -12
- package/dist/src/ui/tui/screens/ChecklistScreen.js +22 -33
- package/dist/src/ui/tui/screens/DataIngestionCheckScreen.d.ts +3 -12
- package/dist/src/ui/tui/screens/DataIngestionCheckScreen.js +109 -39
- package/dist/src/ui/tui/screens/DataSetupScreen.d.ts +3 -3
- package/dist/src/ui/tui/screens/DataSetupScreen.js +17 -10
- package/dist/src/ui/tui/screens/IntroScreen.d.ts +5 -3
- package/dist/src/ui/tui/screens/IntroScreen.js +132 -41
- package/dist/src/ui/tui/screens/LoginScreen.d.ts +1 -1
- package/dist/src/ui/tui/screens/LoginScreen.js +4 -4
- package/dist/src/ui/tui/screens/LogoutScreen.d.ts +4 -2
- package/dist/src/ui/tui/screens/LogoutScreen.js +17 -5
- package/dist/src/ui/tui/screens/McpScreen.d.ts +4 -4
- package/dist/src/ui/tui/screens/McpScreen.js +25 -17
- package/dist/src/ui/tui/screens/OutageScreen.d.ts +1 -1
- package/dist/src/ui/tui/screens/OutageScreen.js +5 -5
- package/dist/src/ui/tui/screens/OutroScreen.d.ts +5 -0
- package/dist/src/ui/tui/screens/OutroScreen.js +21 -14
- package/dist/src/ui/tui/screens/RegionSelectScreen.js +15 -13
- package/dist/src/ui/tui/screens/RunScreen.d.ts +7 -5
- package/dist/src/ui/tui/screens/RunScreen.js +102 -157
- package/dist/src/ui/tui/screens/SettingsOverrideScreen.d.ts +1 -1
- package/dist/src/ui/tui/screens/SettingsOverrideScreen.js +6 -5
- package/dist/src/ui/tui/screens/SetupScreen.d.ts +1 -1
- package/dist/src/ui/tui/screens/SetupScreen.js +7 -7
- package/dist/src/ui/tui/screens/SlackScreen.d.ts +2 -2
- package/dist/src/ui/tui/screens/SlackScreen.js +60 -35
- package/dist/src/ui/tui/session-constants.d.ts +41 -0
- package/dist/src/ui/tui/session-constants.js +38 -0
- package/dist/src/ui/tui/start-tui.d.ts +3 -1
- package/dist/src/ui/tui/start-tui.js +14 -10
- package/dist/src/ui/tui/store.d.ts +2 -1
- package/dist/src/ui/tui/store.js +33 -7
- package/dist/src/ui/tui/styles.d.ts +75 -19
- package/dist/src/ui/tui/styles.js +101 -19
- package/dist/src/ui/tui/utils/classify-error.d.ts +14 -0
- package/dist/src/ui/tui/utils/classify-error.js +90 -0
- package/dist/src/ui/tui/utils/diagnostics.d.ts +21 -0
- package/dist/src/ui/tui/utils/diagnostics.js +72 -0
- package/dist/src/ui/tui/utils/with-retry.d.ts +12 -0
- package/dist/src/ui/tui/utils/with-retry.js +32 -0
- package/dist/src/ui/tui/utils/with-timeout.d.ts +10 -0
- package/dist/src/ui/tui/utils/with-timeout.js +24 -0
- package/dist/src/utils/ampli-settings.d.ts +1 -1
- package/dist/src/utils/ampli-settings.js +15 -5
- package/dist/src/utils/api-key-store.js +5 -5
- package/dist/src/utils/atomic-write.d.ts +15 -0
- package/dist/src/utils/atomic-write.js +34 -0
- package/dist/src/utils/setup-utils.js +2 -2
- package/dist/src/utils/token-refresh.d.ts +22 -0
- package/dist/src/utils/token-refresh.js +79 -0
- package/dist/src/utils/wizard-abort.js +6 -1
- package/package.json +6 -6
- package/skills/instrumentation/add-analytics-instrumentation/SKILL.md +142 -0
- package/skills/instrumentation/diff-intake/SKILL.md +128 -0
- package/skills/instrumentation/discover-analytics-patterns/SKILL.md +185 -0
- package/skills/instrumentation/discover-event-surfaces/SKILL.md +322 -0
- package/skills/instrumentation/discover-event-surfaces/references/best-practices.md +563 -0
- package/skills/instrumentation/instrument-events/SKILL.md +169 -0
- package/skills/instrumentation/instrument-events/references/best-practices.md +563 -0
- package/skills/integration/integration-android/SKILL.md +49 -0
- package/skills/integration/integration-android/references/EXAMPLE.md +1977 -0
- package/skills/integration/integration-android/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-android/references/analytics.md +1778 -0
- package/skills/integration/integration-android/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-android/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-android/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-android/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-angular/SKILL.md +49 -0
- package/skills/integration/integration-angular/references/EXAMPLE.md +899 -0
- package/skills/integration/integration-angular/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-angular/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-angular/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-angular/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-angular/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-angular/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-astro-hybrid/SKILL.md +56 -0
- package/skills/integration/integration-astro-hybrid/references/EXAMPLE.md +1095 -0
- package/skills/integration/integration-astro-hybrid/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-astro-hybrid/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-astro-hybrid/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-astro-hybrid/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-astro-hybrid/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-astro-hybrid/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-astro-ssr/SKILL.md +52 -0
- package/skills/integration/integration-astro-ssr/references/EXAMPLE.md +1106 -0
- package/skills/integration/integration-astro-ssr/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-astro-ssr/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-astro-ssr/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-astro-ssr/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-astro-ssr/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-astro-ssr/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-astro-static/SKILL.md +49 -0
- package/skills/integration/integration-astro-static/references/EXAMPLE.md +910 -0
- package/skills/integration/integration-astro-static/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-astro-static/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-astro-static/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-astro-static/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-astro-static/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-astro-static/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-astro-view-transitions/SKILL.md +51 -0
- package/skills/integration/integration-astro-view-transitions/references/EXAMPLE.md +979 -0
- package/skills/integration/integration-astro-view-transitions/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-astro-view-transitions/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-astro-view-transitions/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-astro-view-transitions/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-astro-view-transitions/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-astro-view-transitions/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-django/SKILL.md +57 -0
- package/skills/integration/integration-django/references/EXAMPLE.md +1005 -0
- package/skills/integration/integration-django/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-django/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-django/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-django/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-django/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-django/references/python.md +1424 -0
- package/skills/integration/integration-expo/SKILL.md +53 -0
- package/skills/integration/integration-expo/references/EXAMPLE.md +1291 -0
- package/skills/integration/integration-expo/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-expo/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-expo/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-expo/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-expo/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-expo/references/react-native-sdk.md +2819 -0
- package/skills/integration/integration-fastapi/SKILL.md +57 -0
- package/skills/integration/integration-fastapi/references/EXAMPLE.md +1389 -0
- package/skills/integration/integration-fastapi/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-fastapi/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-fastapi/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-fastapi/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-fastapi/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-fastapi/references/python.md +1424 -0
- package/skills/integration/integration-flask/SKILL.md +56 -0
- package/skills/integration/integration-flask/references/EXAMPLE.md +1130 -0
- package/skills/integration/integration-flask/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-flask/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-flask/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-flask/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-flask/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-flask/references/python.md +1424 -0
- package/skills/integration/integration-javascript_node/SKILL.md +54 -0
- package/skills/integration/integration-javascript_node/references/EXAMPLE.md +365 -0
- package/skills/integration/integration-javascript_node/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-javascript_node/references/analytics.md +1778 -0
- package/skills/integration/integration-javascript_node/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-javascript_node/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-javascript_node/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-javascript_node/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-javascript_web/SKILL.md +58 -0
- package/skills/integration/integration-javascript_web/references/EXAMPLE.md +451 -0
- package/skills/integration/integration-javascript_web/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-javascript_web/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-javascript_web/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-javascript_web/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-javascript_web/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-javascript_web/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-laravel/SKILL.md +52 -0
- package/skills/integration/integration-laravel/references/EXAMPLE.md +2039 -0
- package/skills/integration/integration-laravel/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-laravel/references/analytics.md +1778 -0
- package/skills/integration/integration-laravel/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-laravel/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-laravel/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-laravel/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-nextjs-app-router/SKILL.md +54 -0
- package/skills/integration/integration-nextjs-app-router/references/EXAMPLE.md +673 -0
- package/skills/integration/integration-nextjs-app-router/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-nextjs-app-router/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-nextjs-app-router/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-nextjs-app-router/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-nextjs-app-router/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-nextjs-app-router/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-nextjs-pages-router/SKILL.md +54 -0
- package/skills/integration/integration-nextjs-pages-router/references/EXAMPLE.md +735 -0
- package/skills/integration/integration-nextjs-pages-router/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-nextjs-pages-router/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-nextjs-pages-router/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-nextjs-pages-router/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-nextjs-pages-router/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-nextjs-pages-router/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-nuxt-3.6/SKILL.md +46 -0
- package/skills/integration/integration-nuxt-3.6/references/EXAMPLE.md +8422 -0
- package/skills/integration/integration-nuxt-3.6/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-nuxt-3.6/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-nuxt-3.6/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-nuxt-3.6/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-nuxt-3.6/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-nuxt-3.6/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-nuxt-4/SKILL.md +46 -0
- package/skills/integration/integration-nuxt-4/references/EXAMPLE.md +8670 -0
- package/skills/integration/integration-nuxt-4/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-nuxt-4/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-nuxt-4/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-nuxt-4/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-nuxt-4/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-nuxt-4/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-python/SKILL.md +53 -0
- package/skills/integration/integration-python/references/EXAMPLE.md +445 -0
- package/skills/integration/integration-python/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-python/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-python/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-python/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-python/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-python/references/python.md +1424 -0
- package/skills/integration/integration-react-native/SKILL.md +49 -0
- package/skills/integration/integration-react-native/references/EXAMPLE.md +2253 -0
- package/skills/integration/integration-react-native/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-react-native/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-react-native/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-react-native/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-react-native/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-react-native/references/react-native-sdk.md +2819 -0
- package/skills/integration/integration-react-react-router-6/SKILL.md +53 -0
- package/skills/integration/integration-react-react-router-6/references/EXAMPLE.md +570 -0
- package/skills/integration/integration-react-react-router-6/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-react-react-router-6/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-react-react-router-6/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-react-react-router-6/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-react-react-router-6/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-react-react-router-6/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-react-react-router-7-data/SKILL.md +53 -0
- package/skills/integration/integration-react-react-router-7-data/references/EXAMPLE.md +830 -0
- package/skills/integration/integration-react-react-router-7-data/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-react-react-router-7-data/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-react-react-router-7-data/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-react-react-router-7-data/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-react-react-router-7-data/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-react-react-router-7-data/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-react-react-router-7-declarative/SKILL.md +53 -0
- package/skills/integration/integration-react-react-router-7-declarative/references/EXAMPLE.md +609 -0
- package/skills/integration/integration-react-react-router-7-declarative/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-react-react-router-7-declarative/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-react-react-router-7-declarative/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-react-react-router-7-declarative/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-react-react-router-7-declarative/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-react-react-router-7-declarative/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-react-react-router-7-framework/SKILL.md +53 -0
- package/skills/integration/integration-react-react-router-7-framework/references/EXAMPLE.md +1081 -0
- package/skills/integration/integration-react-react-router-7-framework/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-react-react-router-7-framework/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-react-react-router-7-framework/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-react-react-router-7-framework/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-react-react-router-7-framework/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-react-react-router-7-framework/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-react-tanstack-router-code-based/SKILL.md +57 -0
- package/skills/integration/integration-react-tanstack-router-code-based/references/EXAMPLE.md +659 -0
- package/skills/integration/integration-react-tanstack-router-code-based/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-react-tanstack-router-code-based/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-react-tanstack-router-code-based/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-react-tanstack-router-code-based/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-react-tanstack-router-code-based/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-react-tanstack-router-code-based/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-react-tanstack-router-file-based/SKILL.md +57 -0
- package/skills/integration/integration-react-tanstack-router-file-based/references/EXAMPLE.md +777 -0
- package/skills/integration/integration-react-tanstack-router-file-based/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-react-tanstack-router-file-based/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-react-tanstack-router-file-based/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-react-tanstack-router-file-based/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-react-tanstack-router-file-based/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-react-tanstack-router-file-based/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-react-vite/SKILL.md +53 -0
- package/skills/integration/integration-react-vite/references/EXAMPLE.md +542 -0
- package/skills/integration/integration-react-vite/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-react-vite/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-react-vite/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-react-vite/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-react-vite/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-react-vite/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-ruby/SKILL.md +50 -0
- package/skills/integration/integration-ruby/references/EXAMPLE.md +420 -0
- package/skills/integration/integration-ruby/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-ruby/references/analytics.md +1778 -0
- package/skills/integration/integration-ruby/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-ruby/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-ruby/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-ruby/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-ruby-on-rails/SKILL.md +55 -0
- package/skills/integration/integration-ruby-on-rails/references/EXAMPLE.md +1013 -0
- package/skills/integration/integration-ruby-on-rails/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-ruby-on-rails/references/analytics.md +1778 -0
- package/skills/integration/integration-ruby-on-rails/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-ruby-on-rails/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-ruby-on-rails/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-ruby-on-rails/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-sveltekit/SKILL.md +47 -0
- package/skills/integration/integration-sveltekit/references/EXAMPLE.md +14121 -0
- package/skills/integration/integration-sveltekit/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-sveltekit/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-sveltekit/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-sveltekit/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-sveltekit/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-sveltekit/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-swift/SKILL.md +49 -0
- package/skills/integration/integration-swift/references/EXAMPLE.md +660 -0
- package/skills/integration/integration-swift/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-swift/references/analytics.md +1778 -0
- package/skills/integration/integration-swift/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-swift/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-swift/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-swift/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-tanstack-start/SKILL.md +58 -0
- package/skills/integration/integration-tanstack-start/references/EXAMPLE.md +998 -0
- package/skills/integration/integration-tanstack-start/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-tanstack-start/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-tanstack-start/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-tanstack-start/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-tanstack-start/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-tanstack-start/references/browser-sdk-2.md +4680 -0
- package/skills/integration/integration-vue-3/SKILL.md +46 -0
- package/skills/integration/integration-vue-3/references/EXAMPLE.md +846 -0
- package/skills/integration/integration-vue-3/references/amplitude-quickstart.md +1845 -0
- package/skills/integration/integration-vue-3/references/basic-integration-1.0-begin.md +43 -0
- package/skills/integration/integration-vue-3/references/basic-integration-1.1-edit.md +35 -0
- package/skills/integration/integration-vue-3/references/basic-integration-1.2-revise.md +23 -0
- package/skills/integration/integration-vue-3/references/basic-integration-1.3-conclude.md +57 -0
- package/skills/integration/integration-vue-3/references/browser-sdk-2.md +4680 -0
- package/skills/taxonomy/amplitude-quickstart-taxonomy-agent/SKILL.md +228 -0
- package/dist/src/ui/tui/components/TitleBar.d.ts +0 -8
- package/dist/src/ui/tui/components/TitleBar.js +0 -27
- package/dist/src/ui/tui/primitives/KagiSmallWebViewer.d.ts +0 -7
- package/dist/src/ui/tui/primitives/KagiSmallWebViewer.js +0 -101
- package/dist/src/utils/anthropic-status.d.ts +0 -17
- package/dist/src/utils/anthropic-status.js +0 -51
|
@@ -861,10 +861,13 @@ async function runAgent(agentConfig, prompt, options, spinner, config, middlewar
|
|
|
861
861
|
}
|
|
862
862
|
}, 1000);
|
|
863
863
|
}
|
|
864
|
-
// Retry loop: if the agent stalls (no message for
|
|
865
|
-
// re-run with a fresh AbortController and prompt stream. Up to MAX_RETRIES
|
|
866
|
-
const MAX_RETRIES =
|
|
867
|
-
|
|
864
|
+
// Retry loop: if the agent stalls (no message for the configured timeout), abort
|
|
865
|
+
// and re-run with a fresh AbortController and prompt stream. Up to MAX_RETRIES.
|
|
866
|
+
const MAX_RETRIES = 3;
|
|
867
|
+
// Cold-start timeout: subprocess spawn + MCP server connections + first LLM response
|
|
868
|
+
const INITIAL_STALL_TIMEOUT_MS = 60_000;
|
|
869
|
+
// Mid-run timeout: between consecutive messages during active work
|
|
870
|
+
const STALL_TIMEOUT_MS = 30_000;
|
|
868
871
|
// Tracks whether an authentication failure was detected in the current attempt.
|
|
869
872
|
// Passed to createStopHook so it can skip reflection when auth is broken.
|
|
870
873
|
let authErrorDetected = false;
|
|
@@ -893,17 +896,26 @@ async function runAgent(agentConfig, prompt, options, spinner, config, middlewar
|
|
|
893
896
|
// AbortController lets us cancel a stalled query so we can retry
|
|
894
897
|
const controller = new AbortController();
|
|
895
898
|
let staleTimer;
|
|
899
|
+
let receivedFirstMessage = false;
|
|
900
|
+
let lastMessageType = 'none';
|
|
901
|
+
let lastMessageTime = Date.now();
|
|
896
902
|
const resetStaleTimer = () => {
|
|
897
903
|
if (staleTimer)
|
|
898
904
|
clearTimeout(staleTimer);
|
|
905
|
+
const timeoutMs = receivedFirstMessage
|
|
906
|
+
? STALL_TIMEOUT_MS
|
|
907
|
+
: INITIAL_STALL_TIMEOUT_MS;
|
|
899
908
|
staleTimer = setTimeout(() => {
|
|
900
|
-
|
|
909
|
+
const elapsed = Math.round((Date.now() - lastMessageTime) / 1000);
|
|
910
|
+
(0, debug_1.logToFile)(`Agent stalled — no message for ${elapsed}s (attempt ${attempt + 1}, last message: ${lastMessageType}, phase: ${receivedFirstMessage ? 'active' : 'cold-start'})`);
|
|
901
911
|
analytics_1.analytics.wizardCapture('Agent Stall Detected', {
|
|
902
912
|
attempt: attempt + 1,
|
|
903
|
-
stall_timeout_ms:
|
|
913
|
+
stall_timeout_ms: timeoutMs,
|
|
914
|
+
last_message_type: lastMessageType,
|
|
915
|
+
phase: receivedFirstMessage ? 'active' : 'cold-start',
|
|
904
916
|
});
|
|
905
917
|
controller.abort('stall');
|
|
906
|
-
},
|
|
918
|
+
}, timeoutMs);
|
|
907
919
|
};
|
|
908
920
|
try {
|
|
909
921
|
const response = query({
|
|
@@ -958,6 +970,11 @@ async function runAgent(agentConfig, prompt, options, spinner, config, middlewar
|
|
|
958
970
|
resetStaleTimer();
|
|
959
971
|
// Process the async generator — validate each message at the boundary
|
|
960
972
|
for await (const rawMessage of response) {
|
|
973
|
+
receivedFirstMessage = true;
|
|
974
|
+
lastMessageTime = Date.now();
|
|
975
|
+
lastMessageType =
|
|
976
|
+
rawMessage?.type?.toString() ??
|
|
977
|
+
'unknown';
|
|
961
978
|
resetStaleTimer();
|
|
962
979
|
const parsed = (0, schemas_1.safeParseSDKMessage)(rawMessage);
|
|
963
980
|
if (!parsed.ok) {
|
|
@@ -1001,18 +1018,56 @@ async function runAgent(agentConfig, prompt, options, spinner, config, middlewar
|
|
|
1001
1018
|
signalDone();
|
|
1002
1019
|
}
|
|
1003
1020
|
}
|
|
1004
|
-
//
|
|
1021
|
+
// Check if the agent hit a transient API error (e.g. Vertex 400)
|
|
1022
|
+
// that warrants a retry rather than immediately giving up.
|
|
1005
1023
|
clearTimeout(staleTimer);
|
|
1024
|
+
const partialOutput = collectedText.join('\n');
|
|
1025
|
+
const hitTransientApiError = !receivedSuccessResult &&
|
|
1026
|
+
!authErrorDetected &&
|
|
1027
|
+
partialOutput.includes('API Error: 400') &&
|
|
1028
|
+
attempt < MAX_RETRIES;
|
|
1029
|
+
if (hitTransientApiError) {
|
|
1030
|
+
(0, debug_1.logToFile)(`Retrying after API 400 error (next attempt: ${attempt + 2} of ${MAX_RETRIES + 1})`);
|
|
1031
|
+
analytics_1.analytics.wizardCapture('Agent API Error Retry', {
|
|
1032
|
+
attempt,
|
|
1033
|
+
error: 'api_400',
|
|
1034
|
+
});
|
|
1035
|
+
collectedText.length = 0;
|
|
1036
|
+
recentStatuses.length = 0;
|
|
1037
|
+
signalDone();
|
|
1038
|
+
continue;
|
|
1039
|
+
}
|
|
1040
|
+
// Clean completion — exit the retry loop
|
|
1006
1041
|
break;
|
|
1007
1042
|
}
|
|
1008
1043
|
catch (innerError) {
|
|
1009
1044
|
clearTimeout(staleTimer);
|
|
1010
1045
|
signalDone(); // unblock the prompt stream for this attempt
|
|
1011
|
-
// Stall-aborted with retries remaining — try again
|
|
1046
|
+
// Stall-aborted or API error with retries remaining — try again
|
|
1012
1047
|
if (controller.signal.aborted && attempt < MAX_RETRIES) {
|
|
1013
1048
|
(0, debug_1.logToFile)(`Retrying after stall (next attempt: ${attempt + 2} of ${MAX_RETRIES + 1})`);
|
|
1014
1049
|
continue;
|
|
1015
1050
|
}
|
|
1051
|
+
// Transient SDK/proxy error: malformed conversation history (tool_use
|
|
1052
|
+
// without tool_result) or API 400. These are SDK-level race conditions
|
|
1053
|
+
// that resolve on a fresh retry with a new conversation.
|
|
1054
|
+
const errMsg = innerError instanceof Error ? innerError.message : String(innerError);
|
|
1055
|
+
const isTransientSdkError = attempt < MAX_RETRIES &&
|
|
1056
|
+
!authErrorDetected &&
|
|
1057
|
+
(errMsg.includes('tool_use') ||
|
|
1058
|
+
errMsg.includes('tool_result') ||
|
|
1059
|
+
errMsg.includes('API Error: 400') ||
|
|
1060
|
+
errMsg.includes('invalid_request_error'));
|
|
1061
|
+
if (isTransientSdkError) {
|
|
1062
|
+
(0, debug_1.logToFile)(`Retrying after transient SDK error (next attempt: ${attempt + 2} of ${MAX_RETRIES + 1}): ${errMsg.slice(0, 200)}`);
|
|
1063
|
+
analytics_1.analytics.wizardCapture('Agent SDK Error Retry', {
|
|
1064
|
+
attempt,
|
|
1065
|
+
error: errMsg.slice(0, 200),
|
|
1066
|
+
});
|
|
1067
|
+
collectedText.length = 0;
|
|
1068
|
+
recentStatuses.length = 0;
|
|
1069
|
+
continue;
|
|
1070
|
+
}
|
|
1016
1071
|
// Already received a successful result — this is an SDK cleanup race condition
|
|
1017
1072
|
if (receivedSuccessResult) {
|
|
1018
1073
|
return completeWithSuccess(innerError);
|
|
@@ -43,7 +43,6 @@ const agent_interface_1 = require("./agent-interface");
|
|
|
43
43
|
const urls_1 = require("../utils/urls");
|
|
44
44
|
const constants_js_1 = require("./constants.js");
|
|
45
45
|
const semver = __importStar(require("semver"));
|
|
46
|
-
const anthropic_status_1 = require("../utils/anthropic-status");
|
|
47
46
|
const debug_1 = require("../utils/debug");
|
|
48
47
|
const benchmark_1 = require("./middleware/benchmark");
|
|
49
48
|
const wizard_abort_1 = require("../utils/wizard-abort");
|
|
@@ -95,14 +94,6 @@ async function runAgentWizard(config, session) {
|
|
|
95
94
|
// Setup phase — informational only, no prompts
|
|
96
95
|
// Beta notice, pre-run notice, and welcome label are all derivable
|
|
97
96
|
// from session.frameworkConfig — IntroScreen reads them directly.
|
|
98
|
-
// Check Anthropic/Claude service status (pure — no prompt)
|
|
99
|
-
const statusResult = await (0, anthropic_status_1.checkAnthropicStatus)();
|
|
100
|
-
if (statusResult.status === 'down' || statusResult.status === 'degraded') {
|
|
101
|
-
(0, ui_1.getUI)().showServiceStatus({
|
|
102
|
-
description: statusResult.description,
|
|
103
|
-
statusPageUrl: 'https://status.claude.com',
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
97
|
// Check for blocking env overrides in .claude/settings.json before login.
|
|
107
98
|
// These keys block the Wizard from accessing the Amplitude LLM Gateway.
|
|
108
99
|
const blockingOverrideKeys = (0, agent_interface_1.checkClaudeSettingsOverrides)(session.installDir);
|
|
@@ -366,7 +357,7 @@ function buildIntegrationPrompt(config, context, frameworkContext, skipAmplitude
|
|
|
366
357
|
const additionalContext = additionalLines.length > 0
|
|
367
358
|
? '\n' + additionalLines.map((line) => `- ${line}`).join('\n')
|
|
368
359
|
: '';
|
|
369
|
-
return `You
|
|
360
|
+
return `You are setting up Amplitude analytics in this ${config.metadata.name} project. Use the wizard-tools MCP server to load and install skills.
|
|
370
361
|
|
|
371
362
|
Project context:
|
|
372
363
|
- Amplitude Project ID: ${context.projectId}
|
package/dist/src/lib/api.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export declare function fetchWorkspaceEventTypes(idToken: string, zone: Amplitud
|
|
|
51
51
|
* Returns { hasCharts: false, hasDashboards: false } on any error so the
|
|
52
52
|
* checklist falls back to the default empty state rather than crashing.
|
|
53
53
|
*/
|
|
54
|
-
export declare function fetchOwnedDashboards(
|
|
54
|
+
export declare function fetchOwnedDashboards(accessToken: string, zone: AmplitudeZone, orgId: string): Promise<{
|
|
55
55
|
hasCharts: boolean;
|
|
56
56
|
hasDashboards: boolean;
|
|
57
57
|
}>;
|
|
@@ -85,10 +85,28 @@ export type ProjectActivationStatus = {
|
|
|
85
85
|
* Checks whether an Amplitude project has ingested any events and whether
|
|
86
86
|
* the SDK snippet is configured.
|
|
87
87
|
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
88
|
+
* Always routes to Thunder (the main Amplitude app GraphQL server) at
|
|
89
|
+
* /t/graphql/org/:orgId using a Bearer access_token.
|
|
90
90
|
*/
|
|
91
|
-
export declare function fetchProjectActivationStatus(
|
|
91
|
+
export declare function fetchProjectActivationStatus(opts: {
|
|
92
|
+
accessToken: string;
|
|
93
|
+
zone: AmplitudeZone;
|
|
94
|
+
appId: number | string;
|
|
95
|
+
orgId: string;
|
|
96
|
+
}): Promise<ProjectActivationStatus>;
|
|
97
|
+
/**
|
|
98
|
+
* Fetches the direct Slack OAuth install URL from Thunder.
|
|
99
|
+
* This lets the wizard open the Slack authorization page directly instead of
|
|
100
|
+
* routing through Amplitude Settings.
|
|
101
|
+
*
|
|
102
|
+
* Returns `null` on any error so callers can fall back to the settings page.
|
|
103
|
+
*/
|
|
104
|
+
export declare function fetchSlackInstallUrl(accessToken: string, zone: AmplitudeZone, orgId: string, originalPath: string): Promise<string | null>;
|
|
105
|
+
/**
|
|
106
|
+
* Checks whether the authenticated user already has Slack connected.
|
|
107
|
+
* Returns `null` on any error so callers treat it as unknown.
|
|
108
|
+
*/
|
|
109
|
+
export declare function fetchSlackConnectionStatus(accessToken: string, zone: AmplitudeZone, orgId: string): Promise<boolean | null>;
|
|
92
110
|
export declare const ApiUserSchema: z.ZodObject<{
|
|
93
111
|
distinct_id: z.ZodString;
|
|
94
112
|
}, z.core.$strip>;
|
package/dist/src/lib/api.js
CHANGED
|
@@ -10,12 +10,32 @@ exports.fetchWorkspaceEventTypes = fetchWorkspaceEventTypes;
|
|
|
10
10
|
exports.fetchOwnedDashboards = fetchOwnedDashboards;
|
|
11
11
|
exports.fetchSources = fetchSources;
|
|
12
12
|
exports.fetchProjectActivationStatus = fetchProjectActivationStatus;
|
|
13
|
+
exports.fetchSlackInstallUrl = fetchSlackInstallUrl;
|
|
14
|
+
exports.fetchSlackConnectionStatus = fetchSlackConnectionStatus;
|
|
13
15
|
exports.fetchUserData = fetchUserData;
|
|
14
16
|
exports.fetchProjectData = fetchProjectData;
|
|
15
17
|
const axios_1 = __importDefault(require("axios"));
|
|
16
18
|
const zod_1 = require("zod");
|
|
17
19
|
const analytics_js_1 = require("../utils/analytics.js");
|
|
20
|
+
const debug_js_1 = require("../utils/debug.js");
|
|
18
21
|
const constants_js_1 = require("./constants.js");
|
|
22
|
+
// ── Thunder URL helper ────────────────────────────────────────────────
|
|
23
|
+
/**
|
|
24
|
+
* Builds the Thunder GraphQL endpoint for the given zone and orgId.
|
|
25
|
+
* Respects `WIZARD_PROXY_THUNDER_URL` for local development — e.g.
|
|
26
|
+
* `WIZARD_PROXY_THUNDER_URL=http://localhost:3030/` routes Thunder
|
|
27
|
+
* traffic to a local server.
|
|
28
|
+
*/
|
|
29
|
+
function thunderUrl(zone, orgId, queryName) {
|
|
30
|
+
const base = process.env.WIZARD_PROXY_THUNDER_URL ??
|
|
31
|
+
constants_js_1.AMPLITUDE_ZONE_SETTINGS[zone].appApiUrlBase;
|
|
32
|
+
// Ensure the base ends with /graphql/org/ so we can append orgId.
|
|
33
|
+
const graphqlBase = base.endsWith('/graphql/org/')
|
|
34
|
+
? base
|
|
35
|
+
: `${base.replace(/\/$/, '')}/graphql/org/`;
|
|
36
|
+
const url = `${graphqlBase}${orgId}`;
|
|
37
|
+
return queryName ? `${url}?q=${queryName}` : url;
|
|
38
|
+
}
|
|
19
39
|
// ── Amplitude GraphQL types ───────────────────────────────────────────
|
|
20
40
|
const AmplitudeUserSchema = zod_1.z.object({
|
|
21
41
|
data: zod_1.z.object({
|
|
@@ -252,13 +272,12 @@ query OwnedDashboards {
|
|
|
252
272
|
* Returns { hasCharts: false, hasDashboards: false } on any error so the
|
|
253
273
|
* checklist falls back to the default empty state rather than crashing.
|
|
254
274
|
*/
|
|
255
|
-
async function fetchOwnedDashboards(
|
|
256
|
-
const
|
|
257
|
-
const url = `${appApiUrlBase}${orgId}`;
|
|
275
|
+
async function fetchOwnedDashboards(accessToken, zone, orgId) {
|
|
276
|
+
const url = thunderUrl(zone, orgId, 'OwnedDashboards');
|
|
258
277
|
try {
|
|
259
278
|
const response = await axios_1.default.post(url, { query: OWNED_DASHBOARDS_QUERY }, {
|
|
260
279
|
headers: {
|
|
261
|
-
|
|
280
|
+
'x-amp-authorization': `Bearer ${accessToken}`,
|
|
262
281
|
'Content-Type': 'application/json',
|
|
263
282
|
'User-Agent': constants_js_1.WIZARD_USER_AGENT,
|
|
264
283
|
},
|
|
@@ -374,18 +393,16 @@ query hasAnyDefaultEventTrackingSourceAndEvents($appId: ID!) {
|
|
|
374
393
|
* Checks whether an Amplitude project has ingested any events and whether
|
|
375
394
|
* the SDK snippet is configured.
|
|
376
395
|
*
|
|
377
|
-
*
|
|
378
|
-
*
|
|
396
|
+
* Always routes to Thunder (the main Amplitude app GraphQL server) at
|
|
397
|
+
* /t/graphql/org/:orgId using a Bearer access_token.
|
|
379
398
|
*/
|
|
380
|
-
async function fetchProjectActivationStatus(
|
|
381
|
-
const {
|
|
382
|
-
|
|
383
|
-
// the data API (which may not expose this field for all users).
|
|
384
|
-
const url = orgId ? `${appApiUrlBase}${orgId}` : dataApiUrl;
|
|
399
|
+
async function fetchProjectActivationStatus(opts) {
|
|
400
|
+
const { accessToken, zone, appId, orgId } = opts;
|
|
401
|
+
const url = thunderUrl(zone, orgId, 'hasAnyDefaultEventTrackingSourceAndEvents');
|
|
385
402
|
try {
|
|
386
403
|
const response = await axios_1.default.post(url, { query: ACTIVATION_STATUS_QUERY, variables: { appId: String(appId) } }, {
|
|
387
404
|
headers: {
|
|
388
|
-
|
|
405
|
+
'x-amp-authorization': `Bearer ${accessToken}`,
|
|
389
406
|
'Content-Type': 'application/json',
|
|
390
407
|
'User-Agent': constants_js_1.WIZARD_USER_AGENT,
|
|
391
408
|
},
|
|
@@ -403,6 +420,91 @@ async function fetchProjectActivationStatus(idToken, zone, appId, orgId) {
|
|
|
403
420
|
throw apiError;
|
|
404
421
|
}
|
|
405
422
|
}
|
|
423
|
+
// ── Slack install URL ─────────────────────────────────────────────────────
|
|
424
|
+
const SlackInstallUrlSchema = zod_1.z.object({
|
|
425
|
+
data: zod_1.z.object({
|
|
426
|
+
slackInstallUrl: zod_1.z.object({
|
|
427
|
+
installUrl: zod_1.z.string().url(),
|
|
428
|
+
}),
|
|
429
|
+
}),
|
|
430
|
+
});
|
|
431
|
+
const SLACK_INSTALL_URL_QUERY = `
|
|
432
|
+
query SlackInstallUrl($action: SlackInstallUrlAction!, $originalPath: String) {
|
|
433
|
+
slackInstallUrl(action: $action, originalPath: $originalPath) {
|
|
434
|
+
installUrl
|
|
435
|
+
}
|
|
436
|
+
}`;
|
|
437
|
+
/**
|
|
438
|
+
* Fetches the direct Slack OAuth install URL from Thunder.
|
|
439
|
+
* This lets the wizard open the Slack authorization page directly instead of
|
|
440
|
+
* routing through Amplitude Settings.
|
|
441
|
+
*
|
|
442
|
+
* Returns `null` on any error so callers can fall back to the settings page.
|
|
443
|
+
*/
|
|
444
|
+
async function fetchSlackInstallUrl(accessToken, zone, orgId, originalPath) {
|
|
445
|
+
const url = thunderUrl(zone, orgId, 'SlackInstallUrl');
|
|
446
|
+
try {
|
|
447
|
+
const response = await axios_1.default.post(url, {
|
|
448
|
+
query: SLACK_INSTALL_URL_QUERY,
|
|
449
|
+
variables: { action: 'profile', originalPath },
|
|
450
|
+
}, {
|
|
451
|
+
headers: {
|
|
452
|
+
'x-amp-authorization': `Bearer ${accessToken}`,
|
|
453
|
+
'Content-Type': 'application/json',
|
|
454
|
+
'User-Agent': constants_js_1.WIZARD_USER_AGENT,
|
|
455
|
+
},
|
|
456
|
+
timeout: 10_000,
|
|
457
|
+
});
|
|
458
|
+
(0, debug_js_1.logToFile)(`[fetchSlackInstallUrl] response status=${response.status} data=${JSON.stringify(response.data)}`);
|
|
459
|
+
const parsed = SlackInstallUrlSchema.parse(response.data);
|
|
460
|
+
return parsed.data.slackInstallUrl.installUrl;
|
|
461
|
+
}
|
|
462
|
+
catch (err) {
|
|
463
|
+
const detail = axios_1.default.isAxiosError(err)
|
|
464
|
+
? `status=${err.response?.status} data=${JSON.stringify(err.response?.data)}`
|
|
465
|
+
: err instanceof Error
|
|
466
|
+
? err.message
|
|
467
|
+
: String(err);
|
|
468
|
+
(0, debug_js_1.logToFile)(`[fetchSlackInstallUrl] failed: ${detail}`);
|
|
469
|
+
return null;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
// ── Slack connection status ───────────────────────────────────────────────
|
|
473
|
+
const SlackConnectionStatusSchema = zod_1.z.object({
|
|
474
|
+
data: zod_1.z.object({
|
|
475
|
+
slackConnectionStatus: zod_1.z.object({
|
|
476
|
+
isConnected: zod_1.z.boolean(),
|
|
477
|
+
}),
|
|
478
|
+
}),
|
|
479
|
+
});
|
|
480
|
+
const SLACK_CONNECTION_STATUS_QUERY = `
|
|
481
|
+
query SlackConnectionStatus {
|
|
482
|
+
slackConnectionStatus {
|
|
483
|
+
isConnected
|
|
484
|
+
}
|
|
485
|
+
}`;
|
|
486
|
+
/**
|
|
487
|
+
* Checks whether the authenticated user already has Slack connected.
|
|
488
|
+
* Returns `null` on any error so callers treat it as unknown.
|
|
489
|
+
*/
|
|
490
|
+
async function fetchSlackConnectionStatus(accessToken, zone, orgId) {
|
|
491
|
+
const url = thunderUrl(zone, orgId, 'SlackConnectionStatus');
|
|
492
|
+
try {
|
|
493
|
+
const response = await axios_1.default.post(url, { query: SLACK_CONNECTION_STATUS_QUERY }, {
|
|
494
|
+
headers: {
|
|
495
|
+
'x-amp-authorization': `Bearer ${accessToken}`,
|
|
496
|
+
'Content-Type': 'application/json',
|
|
497
|
+
'User-Agent': constants_js_1.WIZARD_USER_AGENT,
|
|
498
|
+
},
|
|
499
|
+
timeout: 10_000,
|
|
500
|
+
});
|
|
501
|
+
const parsed = SlackConnectionStatusSchema.parse(response.data);
|
|
502
|
+
return parsed.data.slackConnectionStatus.isConnected;
|
|
503
|
+
}
|
|
504
|
+
catch {
|
|
505
|
+
return null;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
406
508
|
function handleApiError(error, operation) {
|
|
407
509
|
if (axios_1.default.isAxiosError(error)) {
|
|
408
510
|
const axiosError = error;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getWizardCommandments = getWizardCommandments;
|
|
4
|
+
const constants_js_1 = require("./constants.js");
|
|
4
5
|
/**
|
|
5
6
|
* Wizard-wide commandments that are always appended as a system prompt.
|
|
6
7
|
*
|
|
@@ -17,7 +18,19 @@ const WIZARD_COMMANDMENTS = [
|
|
|
17
18
|
'Prefer minimal, targeted edits that achieve the requested behavior while preserving existing structure and style. Avoid large refactors, broad reformatting, or unrelated changes unless explicitly requested.',
|
|
18
19
|
'Do not spawn subagents unless explicitly instructed to do so.',
|
|
19
20
|
'Use the TodoWrite tool to track your progress. Create a todo list at the start describing the high-level areas of work, mark each as in_progress when you begin it, and completed when done.',
|
|
20
|
-
|
|
21
|
+
`After installing the SDK and adding initialization code, but BEFORE writing any track() calls, you MUST call the confirm_event_plan tool to present the proposed instrumentation plan to the user. Only proceed with instrumentation after the plan is approved. If the user provides feedback, revise the plan accordingly and call confirm_event_plan again. If the plan is skipped, do not instrument any events.
|
|
22
|
+
|
|
23
|
+
CRITICAL — confirm_event_plan format:
|
|
24
|
+
name: MUST be a short lowercase label using spaces for separators (2-5 words). Examples: "user signed up", "product added to cart", "search performed", "checkout started", "auth error".
|
|
25
|
+
description: Put ALL details here — when it fires, properties, file paths.
|
|
26
|
+
WRONG name: "Fires on the product detail page after product data loads"
|
|
27
|
+
RIGHT name: "product viewed"
|
|
28
|
+
Names longer than 50 characters will be automatically truncated.`,
|
|
29
|
+
...(constants_js_1.DEMO_MODE
|
|
30
|
+
? [
|
|
31
|
+
'DEMO MODE: This is a demo run. Limit the instrumentation plan to at most 5 events. Pick the 5 most impactful, representative events for the project. Be concise and fast — skip non-essential analysis.',
|
|
32
|
+
]
|
|
33
|
+
: []),
|
|
21
34
|
].join('\n');
|
|
22
35
|
function getWizardCommandments() {
|
|
23
36
|
return WIZARD_COMMANDMENTS;
|
|
@@ -30,6 +30,8 @@ export interface Args {
|
|
|
30
30
|
}
|
|
31
31
|
export declare const IS_DEV: boolean;
|
|
32
32
|
export declare const DEBUG = false;
|
|
33
|
+
/** When set, limits the agent to at most 5 events for faster demo runs. */
|
|
34
|
+
export declare const DEMO_MODE: boolean;
|
|
33
35
|
export declare const DEFAULT_URL: string;
|
|
34
36
|
export declare const DEFAULT_HOST_URL: string;
|
|
35
37
|
export declare const ANALYTICS_AMPLITUDE_PUBLIC_PROJECT_WRITE_KEY = "";
|
|
@@ -43,7 +45,7 @@ export declare const AMPLITUDE_ZONE_SETTINGS: {
|
|
|
43
45
|
readonly oAuthClientId: string;
|
|
44
46
|
readonly dataApiUrl: "https://data-api.amplitude.com/graphql";
|
|
45
47
|
/** Thunder GraphQL endpoint — org-scoped. Append the numeric orgId. */
|
|
46
|
-
readonly appApiUrlBase: "https://amplitude.com/graphql/org/";
|
|
48
|
+
readonly appApiUrlBase: "https://core.amplitude.com/t/graphql/org/";
|
|
47
49
|
readonly webUrl: "https://data.amplitude.com";
|
|
48
50
|
};
|
|
49
51
|
readonly eu: {
|
|
@@ -51,7 +53,7 @@ export declare const AMPLITUDE_ZONE_SETTINGS: {
|
|
|
51
53
|
readonly oAuthClientId: string;
|
|
52
54
|
readonly dataApiUrl: "https://data-api.eu.amplitude.com/graphql";
|
|
53
55
|
/** Thunder GraphQL endpoint — org-scoped. Append the numeric orgId. */
|
|
54
|
-
readonly appApiUrlBase: "https://amplitude.
|
|
56
|
+
readonly appApiUrlBase: "https://core.eu.amplitude.com/t/graphql/org/";
|
|
55
57
|
readonly webUrl: "https://data.eu.amplitude.com";
|
|
56
58
|
};
|
|
57
59
|
};
|
|
@@ -77,7 +79,7 @@ export declare const OUTBOUND_URLS: {
|
|
|
77
79
|
/** New dashboard — opened from the Checklist screen. */
|
|
78
80
|
newDashboard: (zone: AmplitudeZone, orgId?: string | null) => string;
|
|
79
81
|
/** Slack integration settings — opened from the Slack screen. */
|
|
80
|
-
slackSettings: (zone: AmplitudeZone, orgId?: string | null
|
|
82
|
+
slackSettings: (zone: AmplitudeZone, orgId?: string | null) => string;
|
|
81
83
|
/** Products page — shown in the Outro for sign-up users. */
|
|
82
84
|
products: (zone: AmplitudeZone) => string;
|
|
83
85
|
/** SDK overview — opened from the Activation Options screen. */
|
|
@@ -99,7 +101,6 @@ export declare const OUTBOUND_URLS: {
|
|
|
99
101
|
stripeDataSource: string;
|
|
100
102
|
/** Service status pages — shown in the OutageOverlay. */
|
|
101
103
|
status: {
|
|
102
|
-
claude: string;
|
|
103
104
|
amplitude: string;
|
|
104
105
|
};
|
|
105
106
|
/** Bug reports and feedback. */
|
|
@@ -112,7 +113,7 @@ export declare const WIZARD_VARIANT_FLAG_KEY = "wizard-variant";
|
|
|
112
113
|
/** Variant key -> metadata for wizard run (VARIANT flag selects which entry to use). */
|
|
113
114
|
export declare const WIZARD_VARIANTS: Record<string, Record<string, string>>;
|
|
114
115
|
/** User-Agent for wizard HTTP requests and MCP server identification. */
|
|
115
|
-
export declare const WIZARD_USER_AGENT:
|
|
116
|
+
export declare const WIZARD_USER_AGENT = "amplitude/wizard; version: 1.0.0-beta.6";
|
|
116
117
|
/** Header prefix for Amplitude properties. */
|
|
117
118
|
export declare const AMPLITUDE_PROPERTY_HEADER_PREFIX = "X-AMPLITUDE-PROPERTY-";
|
|
118
119
|
/** Header prefix for Amplitude feature flags. */
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* Shared constants for the Amplitude wizard.
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.DETECTION_TIMEOUT_MS = exports.AMPLITUDE_FLAG_HEADER_PREFIX = exports.AMPLITUDE_PROPERTY_HEADER_PREFIX = exports.WIZARD_USER_AGENT = exports.WIZARD_VARIANTS = exports.WIZARD_VARIANT_FLAG_KEY = exports.DUMMY_PROJECT_API_KEY = exports.OUTBOUND_URLS = exports.DEFAULT_AMPLITUDE_ZONE = exports.AMPLITUDE_ZONE_SETTINGS = exports.OAUTH_PORT = exports.ANALYTICS_TEAM_TAG = exports.ANALYTICS_HOST_URL = exports.ANALYTICS_AMPLITUDE_PUBLIC_PROJECT_WRITE_KEY = exports.DEFAULT_HOST_URL = exports.DEFAULT_URL = exports.DEBUG = exports.IS_DEV = exports.Integration = void 0;
|
|
7
|
-
|
|
6
|
+
exports.DETECTION_TIMEOUT_MS = exports.AMPLITUDE_FLAG_HEADER_PREFIX = exports.AMPLITUDE_PROPERTY_HEADER_PREFIX = exports.WIZARD_USER_AGENT = exports.WIZARD_VARIANTS = exports.WIZARD_VARIANT_FLAG_KEY = exports.DUMMY_PROJECT_API_KEY = exports.OUTBOUND_URLS = exports.DEFAULT_AMPLITUDE_ZONE = exports.AMPLITUDE_ZONE_SETTINGS = exports.OAUTH_PORT = exports.ANALYTICS_TEAM_TAG = exports.ANALYTICS_HOST_URL = exports.ANALYTICS_AMPLITUDE_PUBLIC_PROJECT_WRITE_KEY = exports.DEFAULT_HOST_URL = exports.DEFAULT_URL = exports.DEMO_MODE = exports.DEBUG = exports.IS_DEV = exports.Integration = void 0;
|
|
7
|
+
// Injected at build time by scripts/generate-version.js — do not edit manually.
|
|
8
|
+
// release-please bumps package.json; the prebuild script syncs it here.
|
|
9
|
+
const VERSION = '1.0.0-beta.6';
|
|
8
10
|
// ── Integration / CLI ───────────────────────────────────────────────
|
|
9
11
|
/**
|
|
10
12
|
* Detection order matters: put framework-specific integrations BEFORE basic language fallbacks.
|
|
@@ -36,6 +38,8 @@ var Integration;
|
|
|
36
38
|
// ── Environment ──────────────────────────────────────────────────────
|
|
37
39
|
exports.IS_DEV = ['test', 'development'].includes(process.env.NODE_ENV ?? '');
|
|
38
40
|
exports.DEBUG = false;
|
|
41
|
+
/** When set, limits the agent to at most 5 events for faster demo runs. */
|
|
42
|
+
exports.DEMO_MODE = process.env.DEMO_MODE_WIZARD === '1';
|
|
39
43
|
// ── URLs ─────────────────────────────────────────────────────────────
|
|
40
44
|
exports.DEFAULT_URL = exports.IS_DEV
|
|
41
45
|
? 'http://localhost:8010'
|
|
@@ -57,7 +61,7 @@ exports.AMPLITUDE_ZONE_SETTINGS = {
|
|
|
57
61
|
oAuthClientId: process.env.OAUTH_CLIENT_ID ?? '0ac84169-c41c-4222-885b-31469c761cb0',
|
|
58
62
|
dataApiUrl: 'https://data-api.amplitude.com/graphql',
|
|
59
63
|
/** Thunder GraphQL endpoint — org-scoped. Append the numeric orgId. */
|
|
60
|
-
appApiUrlBase: 'https://amplitude.com/graphql/org/',
|
|
64
|
+
appApiUrlBase: 'https://core.amplitude.com/t/graphql/org/',
|
|
61
65
|
webUrl: 'https://data.amplitude.com',
|
|
62
66
|
},
|
|
63
67
|
eu: {
|
|
@@ -65,7 +69,7 @@ exports.AMPLITUDE_ZONE_SETTINGS = {
|
|
|
65
69
|
oAuthClientId: process.env.OAUTH_CLIENT_ID ?? '110d04a1-8e60-4157-9c43-fcbe4e014a85',
|
|
66
70
|
dataApiUrl: 'https://data-api.eu.amplitude.com/graphql',
|
|
67
71
|
/** Thunder GraphQL endpoint — org-scoped. Append the numeric orgId. */
|
|
68
|
-
appApiUrlBase: 'https://amplitude.
|
|
72
|
+
appApiUrlBase: 'https://core.eu.amplitude.com/t/graphql/org/',
|
|
69
73
|
webUrl: 'https://data.eu.amplitude.com',
|
|
70
74
|
},
|
|
71
75
|
};
|
|
@@ -108,15 +112,12 @@ exports.OUTBOUND_URLS = {
|
|
|
108
112
|
},
|
|
109
113
|
// ── Post-setup ────────────────────────────────────────────────────────────
|
|
110
114
|
/** Slack integration settings — opened from the Slack screen. */
|
|
111
|
-
slackSettings: (zone, orgId
|
|
112
|
-
const base = exports.OUTBOUND_URLS.
|
|
113
|
-
if (orgName) {
|
|
114
|
-
return `${base}/analytics/${encodeURIComponent(orgName)}/settings/profile`;
|
|
115
|
-
}
|
|
115
|
+
slackSettings: (zone, orgId) => {
|
|
116
|
+
const base = exports.OUTBOUND_URLS.app[zone];
|
|
116
117
|
if (orgId) {
|
|
117
|
-
return `${base}/${orgId}/settings/profile`;
|
|
118
|
+
return `${base}/analytics/org/${orgId}/settings/profile`;
|
|
118
119
|
}
|
|
119
|
-
return `${base}/settings/profile`;
|
|
120
|
+
return `${base}/analytics/settings/profile`;
|
|
120
121
|
},
|
|
121
122
|
/** Products page — shown in the Outro for sign-up users. */
|
|
122
123
|
products: (zone) => `${exports.OUTBOUND_URLS.overview[zone]}/products?source=wizard`,
|
|
@@ -142,7 +143,6 @@ exports.OUTBOUND_URLS = {
|
|
|
142
143
|
// ── Status ────────────────────────────────────────────────────────────────
|
|
143
144
|
/** Service status pages — shown in the OutageOverlay. */
|
|
144
145
|
status: {
|
|
145
|
-
claude: 'https://status.claude.com',
|
|
146
146
|
amplitude: 'https://www.amplitudestatus.com',
|
|
147
147
|
},
|
|
148
148
|
// ── Support ───────────────────────────────────────────────────────────────
|
|
@@ -160,7 +160,7 @@ exports.WIZARD_VARIANTS = {
|
|
|
160
160
|
subagents: { VARIANT: 'subagents' },
|
|
161
161
|
};
|
|
162
162
|
/** User-Agent for wizard HTTP requests and MCP server identification. */
|
|
163
|
-
exports.WIZARD_USER_AGENT = `amplitude/wizard; version: ${
|
|
163
|
+
exports.WIZARD_USER_AGENT = `amplitude/wizard; version: ${VERSION}`;
|
|
164
164
|
// ── HTTP headers ─────────────────────────────────────────────────────
|
|
165
165
|
/** Header prefix for Amplitude properties. */
|
|
166
166
|
exports.AMPLITUDE_PROPERTY_HEADER_PREFIX = 'X-AMPLITUDE-PROPERTY-';
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential resolution — shared between TUI, agent, and CI modes.
|
|
3
|
+
*
|
|
4
|
+
* Reads stored OAuth tokens, refreshes them if needed, fetches the user's
|
|
5
|
+
* org/workspace/environment list, and populates session credentials when
|
|
6
|
+
* possible. When multiple environments exist, populates `pendingOrgs` so
|
|
7
|
+
* the caller (TUI AuthScreen or AgentUI NDJSON prompt) can handle selection.
|
|
8
|
+
*/
|
|
9
|
+
import type { WizardSession } from './wizard-session';
|
|
10
|
+
/**
|
|
11
|
+
* Resolve credentials from stored OAuth tokens and environment data.
|
|
12
|
+
*
|
|
13
|
+
* Mutates `session` in place:
|
|
14
|
+
* - Sets `session.credentials` when a single environment or local key is found
|
|
15
|
+
* - Sets `session.pendingOrgs` + `pendingAuthIdToken` + `pendingAuthAccessToken`
|
|
16
|
+
* when multiple environments exist (caller must handle selection)
|
|
17
|
+
* - Sets `session.apiKeyNotice` when auto-fetch fails
|
|
18
|
+
*
|
|
19
|
+
* Skips entirely when `session.apiKey` is already set (--api-key flag) or
|
|
20
|
+
* `session.credentials` is already populated.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveCredentials(session: WizardSession, options?: {
|
|
23
|
+
/**
|
|
24
|
+
* When true, clears credentials if no org/workspace ID is set.
|
|
25
|
+
* TUI mode uses this so AuthScreen can force selection.
|
|
26
|
+
* Agent/CI mode should set false — a local API key is sufficient.
|
|
27
|
+
*/
|
|
28
|
+
requireOrgId?: boolean;
|
|
29
|
+
/** Org name filter (from --org flag). Case-insensitive partial match. */
|
|
30
|
+
org?: string;
|
|
31
|
+
/** Environment name filter (from --env flag). Case-insensitive match. */
|
|
32
|
+
env?: string;
|
|
33
|
+
}): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Resolve environment selection from pendingOrgs.
|
|
36
|
+
*
|
|
37
|
+
* Given a selected org ID, workspace ID, and environment name,
|
|
38
|
+
* populates session.credentials from the matching environment.
|
|
39
|
+
* Returns true if credentials were populated.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveEnvironmentSelection(session: WizardSession, selection: {
|
|
42
|
+
orgId: string;
|
|
43
|
+
workspaceId: string;
|
|
44
|
+
env: string;
|
|
45
|
+
}): Promise<boolean>;
|