@amplitude/wizard 1.0.0-beta.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
@@ -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. */
|