@amplitude/wizard 1.0.0-beta.1 → 1.0.0-beta.5
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/README.md +171 -74
- package/dist/bin.js +376 -150
- 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 +5 -4
- package/dist/src/lib/constants.js +11 -9
- 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/feature-flags.d.ts +37 -0
- package/dist/src/lib/feature-flags.js +119 -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 +54 -1
- package/dist/src/lib/wizard-session.js +71 -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 +52 -38
- 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 -4
- package/dist/src/ui/tui/console-commands.js +48 -13
- 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.d.ts +2 -1
- package/dist/src/ui/tui/screens/AuthScreen.js +144 -32
- 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 +114 -33
- 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 -15
- 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 -7
- package/dist/src/ui/tui/screens/SlackScreen.js +60 -45
- 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 +5 -1
- package/dist/src/ui/tui/store.js +45 -6
- 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/analytics.d.ts +18 -0
- package/dist/src/utils/analytics.js +35 -3
- 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 +16 -17
- 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/package.json +0 -145
- package/dist/src/ui/tui/components/TitleBar.d.ts +0 -6
- package/dist/src/ui/tui/components/TitleBar.js +0 -16
- 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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* RegionSelectScreen — Choose Amplitude data-center region (US or EU).
|
|
4
4
|
*
|
|
@@ -11,13 +11,13 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
11
11
|
* US is focused by default — pressing Enter selects it without navigating.
|
|
12
12
|
*/
|
|
13
13
|
import { Box, Text } from 'ink';
|
|
14
|
-
import {
|
|
14
|
+
import { useWizardStore } from '../hooks/useWizardStore.js';
|
|
15
15
|
import { PickerMenu } from '../primitives/index.js';
|
|
16
|
-
import { Colors } from '../styles.js';
|
|
16
|
+
import { Colors, Icons } from '../styles.js';
|
|
17
17
|
const REGIONS = [
|
|
18
18
|
{
|
|
19
19
|
label: 'United States',
|
|
20
|
-
hint: 'app.amplitude.com
|
|
20
|
+
hint: 'app.amplitude.com',
|
|
21
21
|
value: 'us',
|
|
22
22
|
},
|
|
23
23
|
{
|
|
@@ -27,14 +27,16 @@ const REGIONS = [
|
|
|
27
27
|
},
|
|
28
28
|
];
|
|
29
29
|
export const RegionSelectScreen = ({ store }) => {
|
|
30
|
-
|
|
30
|
+
useWizardStore(store);
|
|
31
31
|
const { session } = store;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
const heading = session.regionForced
|
|
33
|
+
? 'Switch data-center region'
|
|
34
|
+
: 'Select your data region';
|
|
35
|
+
const hint = session.regionForced
|
|
36
|
+
? `Current: ${session.region?.toUpperCase() ?? 'US'} ${Icons.dash} pick a new region below`
|
|
37
|
+
: 'Select the region for your Amplitude project. This should match the region your organization uses.';
|
|
38
|
+
return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, color: Colors.heading, children: heading }), _jsx(Text, { color: Colors.muted, children: hint })] }), _jsx(PickerMenu, { options: REGIONS, onSelect: (value) => {
|
|
39
|
+
const region = Array.isArray(value) ? value[0] : value;
|
|
40
|
+
store.setRegion(region);
|
|
41
|
+
} }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: Colors.muted, children: [Icons.dot, " Data residency affects API endpoints and compliance. You can change this later with", ' ', _jsx(Text, { color: Colors.secondary, children: "/region" }), "."] }) })] }));
|
|
40
42
|
};
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* RunScreen —
|
|
2
|
+
* RunScreen — Agent dashboard focused on tasks and progress.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* -
|
|
4
|
+
* Tabs:
|
|
5
|
+
* - Progress (default): full-width ProgressList, elapsed timer, currently
|
|
6
|
+
* editing file, inline event plan, and compact conditional tips
|
|
6
7
|
* - Logs: LogViewer tailing the wizard log file
|
|
8
|
+
* - Snake: easter egg game
|
|
7
9
|
*
|
|
8
|
-
* No
|
|
9
|
-
*
|
|
10
|
+
* No marketing tips carousel. Conditional feature tips (Stripe, LLM) are
|
|
11
|
+
* shown as single compact lines when relevant.
|
|
10
12
|
*/
|
|
11
13
|
import type { WizardStore } from '../store.js';
|
|
12
14
|
interface RunScreenProps {
|
|
@@ -1,162 +1,93 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
|
-
* RunScreen —
|
|
3
|
+
* RunScreen — Agent dashboard focused on tasks and progress.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
5
|
+
* Tabs:
|
|
6
|
+
* - Progress (default): full-width ProgressList, elapsed timer, currently
|
|
7
|
+
* editing file, inline event plan, and compact conditional tips
|
|
7
8
|
* - Logs: LogViewer tailing the wizard log file
|
|
9
|
+
* - Snake: easter egg game
|
|
8
10
|
*
|
|
9
|
-
* No
|
|
10
|
-
*
|
|
11
|
+
* No marketing tips carousel. Conditional feature tips (Stripe, LLM) are
|
|
12
|
+
* shown as single compact lines when relevant.
|
|
11
13
|
*/
|
|
12
14
|
import { Box, Text } from 'ink';
|
|
13
|
-
import { useState, useEffect } from 'react';
|
|
15
|
+
import { useState, useEffect, useRef } from 'react';
|
|
14
16
|
import { useScreenInput } from '../hooks/useScreenInput.js';
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { TabContainer, SplitView, ProgressList, LogViewer, EventPlanViewer, KagiSmallWebViewer, SnakeGame, } from '../primitives/index.js';
|
|
17
|
+
import { useWizardStore } from '../hooks/useWizardStore.js';
|
|
18
|
+
import { TabContainer, ProgressList, LogViewer, SnakeGame, EventPlanViewer, } from '../primitives/index.js';
|
|
18
19
|
import { Colors, Icons } from '../styles.js';
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
20
|
+
import { BrailleSpinner } from '../components/BrailleSpinner.js';
|
|
21
|
+
import { AmplitudeLogo } from '../components/AmplitudeLogo.js';
|
|
22
|
+
import { useStdoutDimensions } from '../hooks/useStdoutDimensions.js';
|
|
23
|
+
import { DiscoveredFeature } from '../../../lib/wizard-session.js';
|
|
24
|
+
import { AdditionalFeature, ADDITIONAL_FEATURE_LABELS, } from '../session-constants.js';
|
|
21
25
|
import { OUTBOUND_URLS } from '../../../lib/constants.js';
|
|
22
26
|
const LOG_FILE = '/tmp/amplitude-wizard.log';
|
|
23
|
-
/**
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
description: 'Amplitude AI lets anyone on your team ask data questions in natural language and get instant charts and insights — no SQL required.',
|
|
74
|
-
},
|
|
75
|
-
],
|
|
76
|
-
[
|
|
77
|
-
{
|
|
78
|
-
id: 'mcp',
|
|
79
|
-
title: 'Give your AI agents analytics superpowers with Amplitude MCP',
|
|
80
|
-
description: 'Connect any AI agent to your Amplitude data via MCP. Your agents can query metrics, build charts, and act on insights — no dashboard required.',
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
id: 'skills-marketplace',
|
|
84
|
-
title: 'Extend your agents with the Skills Marketplace',
|
|
85
|
-
description: 'Browse and install pre-built skills that teach your agents new tricks — from anomaly detection to automated reporting. Build once, share across your org.',
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
id: 'global-agent',
|
|
89
|
-
title: 'Meet your always-on analytics agent',
|
|
90
|
-
description: 'Ask questions in Amplitude or in Slack and get instant answers backed by your data. One agent that works wherever your team already lives.',
|
|
91
|
-
},
|
|
92
|
-
],
|
|
93
|
-
];
|
|
94
|
-
/** How often (ms) to rotate to the next tip page. */
|
|
95
|
-
const TIP_ROTATION_INTERVAL = 30_000;
|
|
96
|
-
/** Conditional tips shown regardless of the current page. */
|
|
97
|
-
const CONDITIONAL_TIPS = [
|
|
98
|
-
{
|
|
99
|
-
id: 'stripe',
|
|
100
|
-
title: 'You can track Stripe revenue with Amplitude',
|
|
101
|
-
description: 'Add Stripe as a data source while you wait:',
|
|
102
|
-
url: OUTBOUND_URLS.stripeDataSource,
|
|
103
|
-
visible: (store) => store.session.discoveredFeatures.includes(DiscoveredFeature.Stripe),
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
id: 'llm',
|
|
107
|
-
title: 'Amplitude can also help you track your LLM costs',
|
|
108
|
-
description: '',
|
|
109
|
-
visible: (store) => store.session.discoveredFeatures.includes(DiscoveredFeature.LLM),
|
|
110
|
-
toggle: {
|
|
111
|
-
key: 'l',
|
|
112
|
-
feature: AdditionalFeature.LLM,
|
|
113
|
-
enabledLabel: 'LLM analytics setup queued next',
|
|
114
|
-
prompt: 'We detected LLM dependencies in your project.',
|
|
115
|
-
isEnabled: (store) => store.session.llmOptIn,
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
];
|
|
119
|
-
/** Min terminal width to show the logo in the TipsCard. */
|
|
120
|
-
const LOGO_MIN_COLS = 100;
|
|
121
|
-
/** Delay (ms) between each tip appearing during a page transition. */
|
|
122
|
-
const TIP_REVEAL_DELAY = 400;
|
|
123
|
-
const TipsCard = ({ store }) => {
|
|
124
|
-
const [columns] = useStdoutDimensions();
|
|
125
|
-
const [pageIndex, setPageIndex] = useState(0);
|
|
126
|
-
/** Number of page tips currently visible (for staggered reveal). */
|
|
127
|
-
const [visibleCount, setVisibleCount] = useState(TIP_PAGES[0].length);
|
|
27
|
+
/** File extensions used to detect "currently editing" from status messages. */
|
|
28
|
+
const FILE_EXT_PATTERN = /\S+\.(?:tsx?|jsx?|py|swift|kt|java|go|dart|cs|cpp|vue|svelte|rb)\b/;
|
|
29
|
+
/** Format elapsed seconds as "Xm Ys". */
|
|
30
|
+
function formatElapsed(seconds) {
|
|
31
|
+
const m = Math.floor(seconds / 60);
|
|
32
|
+
const s = seconds % 60;
|
|
33
|
+
if (m === 0)
|
|
34
|
+
return `${s}s`;
|
|
35
|
+
return `${m}m ${s}s`;
|
|
36
|
+
}
|
|
37
|
+
/** Extract a file path from the most recent status message, if any. */
|
|
38
|
+
function extractCurrentFile(messages) {
|
|
39
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
40
|
+
const match = messages[i].match(FILE_EXT_PATTERN);
|
|
41
|
+
if (match)
|
|
42
|
+
return match[0];
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
/** Compact inline display of planned event names. */
|
|
47
|
+
const InlineEventPlan = ({ store }) => {
|
|
48
|
+
const events = store.eventPlan.filter((e) => e.name);
|
|
49
|
+
if (events.length === 0)
|
|
50
|
+
return null;
|
|
51
|
+
return (_jsx(Box, { marginTop: 1, flexDirection: "column", children: _jsxs(Text, { color: Colors.secondary, children: [_jsxs(Text, { bold: true, color: Colors.accent, children: [Icons.diamond, " Events:"] }), ' ', events.map((e) => e.name).join(', ')] }) }));
|
|
52
|
+
};
|
|
53
|
+
/** Compact conditional tips — Stripe link, LLM toggle. */
|
|
54
|
+
const ConditionalTips = ({ store }) => {
|
|
55
|
+
const { discoveredFeatures } = store.session;
|
|
56
|
+
const tips = [];
|
|
57
|
+
if (discoveredFeatures.includes(DiscoveredFeature.Stripe)) {
|
|
58
|
+
tips.push(_jsxs(Text, { color: Colors.secondary, children: [_jsx(Text, { color: Colors.accent, children: Icons.diamond }), " Stripe detected", Icons.dash, " add as data source:", ' ', _jsx(Text, { color: Colors.accentSecondary, children: OUTBOUND_URLS.stripeDataSource })] }, "stripe"));
|
|
59
|
+
}
|
|
60
|
+
if (discoveredFeatures.includes(DiscoveredFeature.LLM)) {
|
|
61
|
+
const enabled = store.session.llmOptIn;
|
|
62
|
+
tips.push(_jsxs(Text, { color: Colors.secondary, children: [_jsx(Text, { color: Colors.accent, children: Icons.diamond }), ' ', enabled ? (_jsxs(Text, { color: Colors.success, children: [Icons.checkmark, " LLM analytics setup queued"] })) : (_jsxs(Text, { children: ["LLM dependencies detected ", Icons.dash, " press", ' ', _jsx(Text, { bold: true, color: Colors.accent, children: "L" }), ' ', "to enable LLM analytics"] }))] }, "llm"));
|
|
63
|
+
}
|
|
64
|
+
if (tips.length === 0)
|
|
65
|
+
return null;
|
|
66
|
+
return (_jsx(Box, { flexDirection: "column", marginTop: 1, children: tips }));
|
|
67
|
+
};
|
|
68
|
+
/** The main Progress tab content. */
|
|
69
|
+
const MIN_COLS_FOR_LOGO = 90;
|
|
70
|
+
const MIN_ROWS_FOR_LOGO = 22;
|
|
71
|
+
const ProgressTab = ({ store }) => {
|
|
72
|
+
const [cols, rows] = useStdoutDimensions();
|
|
73
|
+
const showLogo = cols >= MIN_COLS_FOR_LOGO && rows >= MIN_ROWS_FOR_LOGO;
|
|
74
|
+
const [elapsed, setElapsed] = useState(0);
|
|
75
|
+
const startRef = useRef(Date.now());
|
|
76
|
+
// Elapsed time counter
|
|
128
77
|
useEffect(() => {
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
return () => clearInterval(timer);
|
|
78
|
+
const id = setInterval(() => {
|
|
79
|
+
setElapsed(Math.floor((Date.now() - startRef.current) / 1000));
|
|
80
|
+
}, 1000);
|
|
81
|
+
return () => clearInterval(id);
|
|
134
82
|
}, []);
|
|
135
|
-
//
|
|
136
|
-
useEffect(() => {
|
|
137
|
-
const pageLen = TIP_PAGES[pageIndex].length;
|
|
138
|
-
if (visibleCount >= pageLen)
|
|
139
|
-
return;
|
|
140
|
-
const timer = setTimeout(() => setVisibleCount((c) => c + 1), visibleCount === 0 ? 100 : TIP_REVEAL_DELAY);
|
|
141
|
-
return () => clearTimeout(timer);
|
|
142
|
-
}, [pageIndex, visibleCount]);
|
|
83
|
+
// Handle LLM toggle key
|
|
143
84
|
useScreenInput((input) => {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
!tip.toggle.isEnabled(store)) {
|
|
149
|
-
store.enableFeature(tip.toggle.feature);
|
|
150
|
-
}
|
|
85
|
+
if (input.toLowerCase() === 'l' &&
|
|
86
|
+
store.session.discoveredFeatures.includes(DiscoveredFeature.LLM) &&
|
|
87
|
+
!store.session.llmOptIn) {
|
|
88
|
+
store.enableFeature(AdditionalFeature.LLM);
|
|
151
89
|
}
|
|
152
90
|
});
|
|
153
|
-
const pageTips = TIP_PAGES[pageIndex].slice(0, visibleCount);
|
|
154
|
-
const visibleConditional = CONDITIONAL_TIPS.filter((tip) => !tip.visible || tip.visible(store));
|
|
155
|
-
const allTips = [...pageTips, ...visibleConditional];
|
|
156
|
-
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [columns >= LOGO_MIN_COLS && _jsx(AnimatedAmplitudeLogo, {}), _jsx(Text, { bold: true, color: Colors.accent, children: "Learn about Amplitude" }), _jsxs(Text, { color: Colors.muted, children: [Icons.diamond, " ", pageIndex + 1, "/", TIP_PAGES.length] }), _jsx(Box, { height: 1 }), allTips.map((tip) => (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { children: [_jsxs(Text, { color: Colors.accent, children: [Icons.diamond, " "] }), _jsx(Text, { bold: true, children: tip.title })] }), tip.toggle ? (tip.toggle.isEnabled(store) ? (_jsxs(Text, { color: Colors.success, children: [Icons.check, " ", tip.toggle.enabledLabel] })) : (_jsxs(Text, { color: Colors.muted, children: [tip.toggle.prompt, " Press", ' ', _jsx(Text, { bold: true, color: Colors.accent, children: tip.toggle.key.toUpperCase() }), ' ', "to enable."] }))) : (_jsxs(Text, { color: Colors.muted, children: [tip.description, tip.url && (_jsxs(_Fragment, { children: [' ', _jsx(Text, { color: "cyan", children: tip.url })] }))] }))] }, tip.id)))] }));
|
|
157
|
-
};
|
|
158
|
-
export const RunScreen = ({ store }) => {
|
|
159
|
-
useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
|
|
160
91
|
const progressItems = store.tasks.map((t) => ({
|
|
161
92
|
label: t.label,
|
|
162
93
|
activeForm: t.activeForm,
|
|
@@ -174,38 +105,52 @@ export const RunScreen = ({ store }) => {
|
|
|
174
105
|
status: 'in_progress',
|
|
175
106
|
});
|
|
176
107
|
}
|
|
108
|
+
const rawFile = extractCurrentFile(store.statusMessages);
|
|
109
|
+
const lastFileRef = useRef(null);
|
|
110
|
+
if (rawFile)
|
|
111
|
+
lastFileRef.current = rawFile;
|
|
112
|
+
const currentFile = lastFileRef.current;
|
|
113
|
+
const completed = progressItems.filter((t) => t.status === 'completed').length;
|
|
114
|
+
const total = progressItems.length;
|
|
115
|
+
return (_jsxs(Box, { flexDirection: "row", flexGrow: 1, children: [_jsxs(Box, { flexDirection: "column", flexGrow: 1, flexShrink: 1, paddingX: 1, children: [_jsxs(Box, { marginBottom: 1, justifyContent: "space-between", children: [_jsxs(Box, { gap: 1, children: [_jsx(BrailleSpinner, { color: Colors.active }), _jsx(Text, { color: Colors.body, bold: true, children: total > 0
|
|
116
|
+
? `${completed}/${total} tasks complete`
|
|
117
|
+
: 'Agent running' }), _jsxs(Text, { color: Colors.muted, children: [Icons.dot, " ", formatElapsed(elapsed)] })] }), currentFile && (_jsx(Text, { color: Colors.muted, wrap: "truncate-end", children: currentFile }))] }), _jsx(ProgressList, { items: progressItems, title: "Tasks" }), _jsx(InlineEventPlan, { store: store }), _jsx(ConditionalTips, { store: store })] }), showLogo && (_jsx(Box, { flexShrink: 0, marginTop: 1, marginRight: 1, children: _jsx(AmplitudeLogo, {}) }))] }));
|
|
118
|
+
};
|
|
119
|
+
export const RunScreen = ({ store }) => {
|
|
120
|
+
useWizardStore(store);
|
|
177
121
|
const lastStatus = store.statusMessages.length > 0
|
|
178
122
|
? store.statusMessages[store.statusMessages.length - 1]
|
|
179
123
|
: undefined;
|
|
124
|
+
const hasEvents = store.eventPlan.length > 0;
|
|
180
125
|
const tabs = [
|
|
181
126
|
{
|
|
182
|
-
id: '
|
|
183
|
-
label: '
|
|
184
|
-
component:
|
|
127
|
+
id: 'progress',
|
|
128
|
+
label: 'Progress',
|
|
129
|
+
component: _jsx(ProgressTab, { store: store }),
|
|
185
130
|
},
|
|
186
|
-
...(
|
|
131
|
+
...(hasEvents
|
|
187
132
|
? [
|
|
188
133
|
{
|
|
189
134
|
id: 'events',
|
|
190
|
-
label: '
|
|
135
|
+
label: 'Events',
|
|
191
136
|
component: _jsx(EventPlanViewer, { events: store.eventPlan }),
|
|
192
137
|
},
|
|
193
138
|
]
|
|
194
139
|
: []),
|
|
195
140
|
{
|
|
196
141
|
id: 'logs',
|
|
197
|
-
label: '
|
|
142
|
+
label: 'Logs',
|
|
198
143
|
component: _jsx(LogViewer, { filePath: LOG_FILE }),
|
|
199
144
|
},
|
|
200
|
-
{
|
|
201
|
-
id: 'smallweb',
|
|
202
|
-
label: 'Small Web',
|
|
203
|
-
component: _jsx(KagiSmallWebViewer, {}),
|
|
204
|
-
},
|
|
205
145
|
{
|
|
206
146
|
id: 'snake',
|
|
207
|
-
label: 'Snake',
|
|
208
|
-
component: _jsx(SnakeGame, {
|
|
147
|
+
label: 'Snake (WASD)',
|
|
148
|
+
component: (_jsx(SnakeGame, { music: false, keybindings: {
|
|
149
|
+
up: ['w'],
|
|
150
|
+
down: ['s'],
|
|
151
|
+
left: ['a'],
|
|
152
|
+
right: ['d'],
|
|
153
|
+
} })),
|
|
209
154
|
},
|
|
210
155
|
];
|
|
211
156
|
return (_jsx(TabContainer, { tabs: tabs, statusMessage: lastStatus, requestedTab: store.requestedTab, onTabConsumed: () => store.clearRequestedTab() }));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SettingsOverrideScreen — Modal when .claude/settings.json contains env overrides
|
|
3
|
-
* that block the Wizard from reaching the Amplitude LLM Gateway.
|
|
3
|
+
* that block the Wizard from reaching the Amplitude LLM Gateway (v2).
|
|
4
4
|
*/
|
|
5
5
|
import type { WizardStore } from '../store.js';
|
|
6
6
|
interface SettingsOverrideScreenProps {
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* SettingsOverrideScreen — Modal when .claude/settings.json contains env overrides
|
|
4
|
-
* that block the Wizard from reaching the Amplitude LLM Gateway.
|
|
4
|
+
* that block the Wizard from reaching the Amplitude LLM Gateway (v2).
|
|
5
5
|
*/
|
|
6
6
|
import { Box, Text } from 'ink';
|
|
7
|
-
import { useState
|
|
7
|
+
import { useState } from 'react';
|
|
8
|
+
import { useWizardStore } from '../hooks/useWizardStore.js';
|
|
8
9
|
import { ConfirmationInput } from '../primitives/index.js';
|
|
9
|
-
import { Colors, Icons } from '../styles.js';
|
|
10
|
+
import { Colors, Icons, Layout } from '../styles.js';
|
|
10
11
|
export const SettingsOverrideScreen = ({ store, }) => {
|
|
11
|
-
|
|
12
|
+
useWizardStore(store);
|
|
12
13
|
const [feedback, setFeedback] = useState(null);
|
|
13
14
|
const keys = store.session.settingsOverrideKeys;
|
|
14
15
|
if (!keys || keys.length === 0) {
|
|
15
16
|
return null;
|
|
16
17
|
}
|
|
17
|
-
return (_jsx(Box, { flexDirection: "column", flexGrow: 1, alignItems: "center", justifyContent: "center", children: _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor:
|
|
18
|
+
return (_jsx(Box, { flexDirection: "column", flexGrow: 1, alignItems: "center", justifyContent: "center", children: _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: Colors.error, paddingX: 3, paddingY: 1, width: 64, children: [_jsx(Box, { justifyContent: "center", marginBottom: 1, children: _jsxs(Text, { color: Colors.error, bold: true, children: [Icons.diamond, " Settings Conflict"] }) }), _jsxs(Text, { color: Colors.body, children: ["Your project's", ' ', _jsx(Text, { bold: true, color: Colors.heading, children: ".claude/settings.json" }), ' ', "sets:"] }), _jsx(Box, { flexDirection: "column", marginY: 1, paddingLeft: 2, children: keys.map((key) => (_jsxs(Text, { color: Colors.body, children: [Icons.bullet, ' ', _jsx(Text, { color: Colors.warning, bold: true, children: key })] }, key))) }), _jsx(Text, { color: Colors.secondary, children: "These overrides prevent the Wizard from reaching the Amplitude LLM Gateway. We can back up the file and continue." }), feedback && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: Colors.warning, children: [Icons.diamond, " ", feedback] }) })), _jsx(Box, { marginY: 1, children: _jsx(Text, { color: Colors.border, children: Layout.separatorChar.repeat(56) }) }), _jsx(ConfirmationInput, { message: "Back up to .wizard-backup and continue?", confirmLabel: "Backup & continue [Enter]", cancelLabel: "Exit [Esc]", onConfirm: () => {
|
|
18
19
|
const ok = store.backupAndFixSettingsOverride();
|
|
19
20
|
if (!ok) {
|
|
20
21
|
setFeedback('Could not back up the settings file.');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
|
-
* SetupScreen — Generic framework disambiguation.
|
|
3
|
+
* SetupScreen — Generic framework disambiguation (v2).
|
|
4
4
|
*
|
|
5
5
|
* Iterates unresolved setup questions from the FrameworkConfig
|
|
6
6
|
* and renders a PickerMenu for each. If all questions are auto-resolved,
|
|
@@ -8,11 +8,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
8
8
|
*/
|
|
9
9
|
import { Box, Text } from 'ink';
|
|
10
10
|
import { useState, useEffect } from 'react';
|
|
11
|
-
import {
|
|
11
|
+
import { useWizardStore } from '../hooks/useWizardStore.js';
|
|
12
12
|
import { PickerMenu } from '../primitives/index.js';
|
|
13
|
-
import { Colors } from '../styles.js';
|
|
13
|
+
import { Colors, Icons } from '../styles.js';
|
|
14
14
|
export const SetupScreen = ({ store }) => {
|
|
15
|
-
|
|
15
|
+
useWizardStore(store);
|
|
16
16
|
const config = store.session.frameworkConfig;
|
|
17
17
|
const questions = config?.metadata.setup?.questions ?? [];
|
|
18
18
|
// Track which question index we're currently showing
|
|
@@ -43,7 +43,7 @@ export const SetupScreen = ({ store }) => {
|
|
|
43
43
|
})();
|
|
44
44
|
}, []);
|
|
45
45
|
if (resolving) {
|
|
46
|
-
return (_jsx(Box, { flexDirection: "column", flexGrow: 1, children:
|
|
46
|
+
return (_jsx(Box, { flexDirection: "column", flexGrow: 1, children: _jsxs(Text, { color: Colors.active, children: ["Detecting project configuration", Icons.ellipsis] }) }));
|
|
47
47
|
}
|
|
48
48
|
// Get unresolved questions
|
|
49
49
|
const unresolved = questions.filter((q) => !(q.key in store.session.frameworkContext));
|
|
@@ -54,7 +54,7 @@ export const SetupScreen = ({ store }) => {
|
|
|
54
54
|
const question = unresolved[currentIndex] ?? unresolved[0];
|
|
55
55
|
if (!question)
|
|
56
56
|
return null;
|
|
57
|
-
return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, color: Colors.accent, children: "Project Setup" }), config && (_jsxs(Text, { color: Colors.
|
|
57
|
+
return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, color: Colors.accent, children: "Project Setup" }), config && (_jsxs(Text, { color: Colors.secondary, children: ["Configuring ", config.metadata.name, " integration"] }))] }), _jsx(PickerMenu, { message: question.message, options: question.options.map((o) => ({
|
|
58
58
|
label: o.label,
|
|
59
59
|
value: o.value,
|
|
60
60
|
hint: o.hint,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SlackScreen — Amplitude Slack integration setup.
|
|
2
|
+
* SlackScreen — Amplitude Slack integration setup (v2).
|
|
3
3
|
*
|
|
4
4
|
* Guides the user to connect their Slack workspace to Amplitude.
|
|
5
5
|
* Since the OAuth handshake happens in the browser (Amplitude Settings),
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Region-aware: EU users need the "Amplitude - EU" Slack app.
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import type { WizardStore } from '../store.js';
|
|
12
12
|
interface SlackScreenProps {
|
|
13
13
|
store: WizardStore;
|
|
14
14
|
/** When true, exit the process after completion instead of routing to outro. */
|
|
@@ -16,10 +16,5 @@ interface SlackScreenProps {
|
|
|
16
16
|
/** When provided, called on completion instead of setSlackComplete (overlay mode). */
|
|
17
17
|
onComplete?: () => void;
|
|
18
18
|
}
|
|
19
|
-
/**
|
|
20
|
-
* Build the Amplitude settings URL for Slack connection.
|
|
21
|
-
* Uses the org name from the API; falls back to base URL.
|
|
22
|
-
*/
|
|
23
|
-
export declare function slackSettingsUrl(baseUrl: string, orgName: string | null): string;
|
|
24
19
|
export declare const SlackScreen: ({ store, standalone, onComplete, }: SlackScreenProps) => import("react/jsx-runtime").JSX.Element;
|
|
25
20
|
export {};
|