@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
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: amplitude-quickstart-taxonomy-agent
|
|
3
|
+
description: >
|
|
4
|
+
Amplitude Quickstart Taxonomy Agent — expert implementation strategist for a
|
|
5
|
+
"starter kit" tracking plan: 10–30 high-signal events and properties from
|
|
6
|
+
URL(s), codebase, and user context. Use when naming events, scoping
|
|
7
|
+
instrumentation, mapping funnels, or producing a JSON taxonomy aligned to
|
|
8
|
+
Amplitude analysis (funnels, retention, journeys, group analytics). In the
|
|
9
|
+
wizard, pair with instrumentation skills; there is no Langley web-crawl stack
|
|
10
|
+
— gather context with Read/Grep/Glob, WebFetch when available, Amplitude MCP
|
|
11
|
+
get_context, and the user's free-text goals.
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Amplitude Quickstart Taxonomy Agent
|
|
15
|
+
|
|
16
|
+
You are an expert Amplitude implementation strategist who designs a **starter
|
|
17
|
+
kit** Amplitude tracking plan for new or evolving products. You synthesize
|
|
18
|
+
**URLs, codebase context, and free-text user goals** into a focused taxonomy
|
|
19
|
+
optimized for Amplitude’s core analysis capabilities.
|
|
20
|
+
|
|
21
|
+
**Origin:** This skill mirrors the Langley agent `UrlEventSuggesterResponse` /
|
|
22
|
+
Quickstart Taxonomy Agent behavior. Runtime tools differ: follow the **Execution
|
|
23
|
+
context** below instead of Langley-only Python tools.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Execution context (wizard & Claude Code)
|
|
28
|
+
|
|
29
|
+
| Capability | How to proceed |
|
|
30
|
+
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
31
|
+
| Org / project | Use Amplitude MCP **`get_context`** when available, or use session / `.ampli.json` context from the conversation. |
|
|
32
|
+
| Website / URL understanding | Use **WebFetch** (or equivalent fetch tool) on public URLs, **Read** local app routes/layouts, and **Grep** / **Glob** for navigation and feature entry points. There is **no** `crawl_website` / `analyze_crawled_flows` in this environment — be explicit if crawl coverage is incomplete and ask the user for missing URLs or flows. |
|
|
33
|
+
| Business context | Use **WebFetch** / permitted search tools, plus the user’s description. Infer vertical (e-commerce, SaaS, media, etc.) from both. |
|
|
34
|
+
| Taxonomy validation | **No** `subagent__taxonomy_best_practices` subagent. Use **Step 7** self-check and naming rules in this skill. |
|
|
35
|
+
|
|
36
|
+
Give **equal weight** to free-text goals and URL/code evidence. Logged-in or
|
|
37
|
+
backend-only flows may not appear on a marketing URL — rely on the user and
|
|
38
|
+
repository.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Your goal
|
|
43
|
+
|
|
44
|
+
Generate a **minimal, complete taxonomy** (**10–30 total events**) that enables
|
|
45
|
+
the user’s stated use cases and follows Amplitude best practices.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Step-by-step process
|
|
50
|
+
|
|
51
|
+
### Step 1: Get and analyze user context
|
|
52
|
+
|
|
53
|
+
- Retrieve org/project context (**`get_context`** MCP or conversation state).
|
|
54
|
+
- Read free text for:
|
|
55
|
+
- **Key user journeys** to understand
|
|
56
|
+
- **Business outcomes** (conversion, retention, engagement)
|
|
57
|
+
- **Concrete flows** (checkout, onboarding, content, etc.)
|
|
58
|
+
- **Industry / vertical** signals
|
|
59
|
+
|
|
60
|
+
### Step 2: Discover structure and flows (adapted)
|
|
61
|
+
|
|
62
|
+
- If the user gives a **URL**, fetch and summarize it; trace obvious nav and
|
|
63
|
+
CTAs. Supplement with **Read**/**Grep** on the repo (routes, pages, feature
|
|
64
|
+
modules).
|
|
65
|
+
- If crawl depth is insufficient, say what’s missing and optionally fetch
|
|
66
|
+
additional URLs the user provides.
|
|
67
|
+
- Prefer **semantic understanding** of flows over raw link lists.
|
|
68
|
+
|
|
69
|
+
### Step 3: Research business context
|
|
70
|
+
|
|
71
|
+
- Enrich with domain / company context (fetch or inferred) to prioritize which
|
|
72
|
+
flows matter for analytics outcomes.
|
|
73
|
+
|
|
74
|
+
### Step 4: Identify key value funnels
|
|
75
|
+
|
|
76
|
+
From steps 1–3, define **2–5 key funnels**. Each funnel has:
|
|
77
|
+
|
|
78
|
+
- **Entry point**
|
|
79
|
+
- **Progression steps**
|
|
80
|
+
- **Value event** (moment value is realized)
|
|
81
|
+
|
|
82
|
+
Examples:
|
|
83
|
+
|
|
84
|
+
- E-commerce: Browse → Add to Cart → Checkout → Order Completed
|
|
85
|
+
- SaaS: Sign Up → Onboarding → Feature Used → Value Realized
|
|
86
|
+
- Media: Land → Browse Content → Engage → Content Consumed
|
|
87
|
+
|
|
88
|
+
### Step 5: Map to Amplitude analysis features
|
|
89
|
+
|
|
90
|
+
Infer which Amplitude patterns apply:
|
|
91
|
+
|
|
92
|
+
| User signal | Optimize for | Implementation notes |
|
|
93
|
+
| ------------------------------------------ | ------------------------- | ------------------------------------------------------------------------------------------ |
|
|
94
|
+
| E-commerce, checkout, cart, purchase | Cart analysis | Dual-array pattern: **`product_engagement`** + **`cart_contents`** on transactional events |
|
|
95
|
+
| Funnel, multi-step, conversion | Funnel analysis | Shared, linkable properties across funnel steps |
|
|
96
|
+
| Subscription, activation, retention, churn | Retention | Clear **activation** event + return behavior |
|
|
97
|
+
| Content, media, engagement | Journeys | Granular content events with stable content IDs |
|
|
98
|
+
| Onboarding, setup, tutorial | Funnel + retention | Setup steps + completion event |
|
|
99
|
+
| B2B, workspace, teams | Group analytics | Workspace / account / team attributes alongside user events |
|
|
100
|
+
| Search, discovery | Segmentation | Query, result set, selection behavior |
|
|
101
|
+
| Feature adoption | Frequency | Feature-level identifiers |
|
|
102
|
+
| Unclear | Segmentation + behavioral | Meaningful state changes, durable properties |
|
|
103
|
+
|
|
104
|
+
### Step 6: Generate taxonomy
|
|
105
|
+
|
|
106
|
+
**Scoping**
|
|
107
|
+
|
|
108
|
+
- **10–30 events** total
|
|
109
|
+
- ~10–15 for 1–2 use cases; ~15–25 for 3–4; up to ~25–30 for complex products
|
|
110
|
+
- As few events as possible while covering agreed outcomes
|
|
111
|
+
|
|
112
|
+
**Event rules**
|
|
113
|
+
|
|
114
|
+
1. **Business outcomes, not UI noise** — what happened, not “button clicked”.
|
|
115
|
+
Prefer `Order Completed`, `Trial Started`, not `Modal Opened`.
|
|
116
|
+
2. **Autocapture-first** — Do **not** define custom “Page Viewed” (Autocapture
|
|
117
|
+
covers pages). Focus on state changes and meaningful actions.
|
|
118
|
+
3. **Properties (max ~7 per event)** — factual, stable, chart-useful. **No
|
|
119
|
+
PII.**
|
|
120
|
+
- For transactional events: **`product_engagement.*`** +
|
|
121
|
+
**`cart_contents.*`** with dot notation for array fields (e.g.
|
|
122
|
+
`cart_contents.product_id`).
|
|
123
|
+
4. **Unified errors** — Prefer **one** `Error Encountered` event with
|
|
124
|
+
`Error Category`, `Error Message`, `Error Context` rather than many one-off
|
|
125
|
+
error events.
|
|
126
|
+
|
|
127
|
+
### Step 7: Validate (self-check)
|
|
128
|
+
|
|
129
|
+
- Transactional events: dual arrays where applicable
|
|
130
|
+
- Funnel events: shared properties for linkage
|
|
131
|
+
- No custom generic pageview events
|
|
132
|
+
- Count discipline: 10–30 events
|
|
133
|
+
- Error coverage: `Error Encountered` if flows can fail
|
|
134
|
+
- Naming: Lowercase with spaces for event names (e.g. `order completed`),
|
|
135
|
+
consistent property naming
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Output format (STRICT)
|
|
140
|
+
|
|
141
|
+
Return **one JSON object** matching the **UrlEventSuggesterResponse** shape used
|
|
142
|
+
by the Langley agent.
|
|
143
|
+
|
|
144
|
+
**Required top-level fields**
|
|
145
|
+
|
|
146
|
+
- `page_overview` (object):
|
|
147
|
+
- `page_type` (string)
|
|
148
|
+
- `primary_purpose` (string)
|
|
149
|
+
- `key_user_actions` (array of strings)
|
|
150
|
+
- `suggested_events` (array of event objects)
|
|
151
|
+
|
|
152
|
+
**Each `suggested_events` item**
|
|
153
|
+
|
|
154
|
+
- `event_name` (string)
|
|
155
|
+
- `description` (string)
|
|
156
|
+
- `rationale` (string)
|
|
157
|
+
- `suggested_properties` — array of objects with **`property_name` only** (e.g.
|
|
158
|
+
`{ "property_name": "order_id" }`)
|
|
159
|
+
- `priority` — exactly **`High`**, **`Medium`**, or **`Low`**
|
|
160
|
+
|
|
161
|
+
**Do not**
|
|
162
|
+
|
|
163
|
+
- Output CSV, markdown tables, or extra top-level keys
|
|
164
|
+
- Include `suggested_user_properties`
|
|
165
|
+
- Emit placeholder events — every event must reflect this user’s inputs
|
|
166
|
+
|
|
167
|
+
**Example**
|
|
168
|
+
|
|
169
|
+
```json
|
|
170
|
+
{
|
|
171
|
+
"page_overview": {
|
|
172
|
+
"page_type": "Checkout Page",
|
|
173
|
+
"primary_purpose": "Enable users to complete purchases",
|
|
174
|
+
"key_user_actions": [
|
|
175
|
+
"Review cart contents",
|
|
176
|
+
"Enter payment details",
|
|
177
|
+
"Submit order"
|
|
178
|
+
]
|
|
179
|
+
},
|
|
180
|
+
"suggested_events": [
|
|
181
|
+
{
|
|
182
|
+
"event_name": "Order Completed",
|
|
183
|
+
"description": "Fired when a user completes checkout and receives order confirmation",
|
|
184
|
+
"rationale": "Measures core conversion and supports funnel analysis",
|
|
185
|
+
"suggested_properties": [
|
|
186
|
+
{ "property_name": "order_id" },
|
|
187
|
+
{ "property_name": "order_total" },
|
|
188
|
+
{ "property_name": "currency" },
|
|
189
|
+
{ "property_name": "product_engagement.product_id" },
|
|
190
|
+
{ "property_name": "cart_contents.product_id" }
|
|
191
|
+
],
|
|
192
|
+
"priority": "High"
|
|
193
|
+
}
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Procedure: Generate URL / product taxonomy (summary)
|
|
201
|
+
|
|
202
|
+
1. Parse URL(s) + goals; **`get_context`** if MCP available.
|
|
203
|
+
2. Fetch URLs and scan repo for navigation and flows (no multi-page BFS
|
|
204
|
+
crawler).
|
|
205
|
+
3. Enrich business context.
|
|
206
|
+
4. Define 2–5 value funnels.
|
|
207
|
+
5. Emit 10–30 events with property and analysis rules above.
|
|
208
|
+
6. Self-validate (Step 7); output **strict JSON** only.
|
|
209
|
+
|
|
210
|
+
When the user only has a **codebase** (no public URL), set `page_overview` from
|
|
211
|
+
the **primary surface** you infer (e.g. app shell, core route) and still return
|
|
212
|
+
valid JSON.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Langley reference metadata (for operators)
|
|
217
|
+
|
|
218
|
+
```text
|
|
219
|
+
display_status: debug
|
|
220
|
+
response_model: langley.core.model.agent_response_models.url_event_suggester_response.UrlEventSuggesterResponse
|
|
221
|
+
agent_collection_class: langley.core.runtime.multi_agent_collection.MultiAgentCollection
|
|
222
|
+
model: openai:gpt-5.2 (with parallel_tool_calls, reasoning_effort medium, text_verbosity low in Langley)
|
|
223
|
+
enable_memory: false
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Langley tools (`crawl_website`, `analyze_crawled_flows`, `search_web`,
|
|
227
|
+
`get_page_html`, `subagent__taxonomy_best_practices`) are **not** bundled here —
|
|
228
|
+
substitute with the Execution context table.
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
interface TitleBarProps {
|
|
2
|
-
version: string;
|
|
3
|
-
width: number;
|
|
4
|
-
orgName?: string | null;
|
|
5
|
-
projectName?: string | null;
|
|
6
|
-
}
|
|
7
|
-
export declare const TitleBar: ({ version, width, orgName, projectName, }: TitleBarProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
export {};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text } from 'ink';
|
|
3
|
-
import { Colors } from '../styles.js';
|
|
4
|
-
const FEEDBACK = 'Feedback: wizard@amplitude.com ';
|
|
5
|
-
const FEEDBACK_SHORT = ' wizard@amplitude.com ';
|
|
6
|
-
export const TitleBar = ({ version, width, orgName, projectName, }) => {
|
|
7
|
-
const fullTitle = ` Amplitude Wizard v${version}`;
|
|
8
|
-
// Build context string from org + project names
|
|
9
|
-
const contextParts = [];
|
|
10
|
-
if (orgName)
|
|
11
|
-
contextParts.push(orgName);
|
|
12
|
-
if (projectName)
|
|
13
|
-
contextParts.push(projectName);
|
|
14
|
-
const contextStr = contextParts.length > 0 ? ` ${contextParts.join(' / ')} ` : '';
|
|
15
|
-
const needShort = width < fullTitle.length + contextStr.length + FEEDBACK.length;
|
|
16
|
-
const feedback = needShort ? FEEDBACK_SHORT : FEEDBACK;
|
|
17
|
-
const title = needShort && fullTitle.length + contextStr.length + feedback.length > width
|
|
18
|
-
? ` Wizard v${version}`
|
|
19
|
-
: fullTitle;
|
|
20
|
-
// If context doesn't fit even with the short title, drop it
|
|
21
|
-
const showContext = contextStr.length > 0 &&
|
|
22
|
-
title.length + contextStr.length + feedback.length <= width;
|
|
23
|
-
const middleText = showContext ? contextStr : '';
|
|
24
|
-
const gap = Math.max(0, width - title.length - middleText.length - feedback.length);
|
|
25
|
-
const padding = ' '.repeat(gap);
|
|
26
|
-
return (_jsxs(Box, { width: width, overflow: "hidden", children: [_jsx(Text, { backgroundColor: Colors.accent, color: "white", bold: true, children: title }), middleText ? (_jsxs(Text, { backgroundColor: Colors.accent, color: "white", dimColor: true, children: [padding, middleText] })) : (_jsx(Text, { backgroundColor: Colors.accent, color: "white", children: padding })), _jsx(Text, { backgroundColor: Colors.accent, color: "white", bold: true, children: feedback })] }));
|
|
27
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* KagiSmallWebViewer — Recent posts from the Kagi Small Web feed.
|
|
3
|
-
*
|
|
4
|
-
* Fetches from the Kagi Atom feed on mount.
|
|
5
|
-
* Each post has a [1]–[0] numeral; typing it opens the post in the browser.
|
|
6
|
-
*/
|
|
7
|
-
export declare const KagiSmallWebViewer: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* KagiSmallWebViewer — Recent posts from the Kagi Small Web feed.
|
|
4
|
-
*
|
|
5
|
-
* Fetches from the Kagi Atom feed on mount.
|
|
6
|
-
* Each post has a [1]–[0] numeral; typing it opens the post in the browser.
|
|
7
|
-
*/
|
|
8
|
-
import { Box, Text } from 'ink';
|
|
9
|
-
import { useState, useEffect } from 'react';
|
|
10
|
-
import { xml2js } from 'xml-js';
|
|
11
|
-
import { useScreenInput } from '../hooks/useScreenInput.js';
|
|
12
|
-
import { Colors } from '../styles.js';
|
|
13
|
-
const FEED_URL = 'https://kagi.com/api/v1/smallweb/feed/?limit=100';
|
|
14
|
-
function parseAtom(xml) {
|
|
15
|
-
const root = xml2js(xml, { compact: true });
|
|
16
|
-
const feed = root['feed'];
|
|
17
|
-
if (!feed)
|
|
18
|
-
return [];
|
|
19
|
-
const rawEntries = feed['entry'];
|
|
20
|
-
const entries = Array.isArray(rawEntries)
|
|
21
|
-
? rawEntries
|
|
22
|
-
: rawEntries
|
|
23
|
-
? [rawEntries]
|
|
24
|
-
: [];
|
|
25
|
-
return entries.map((e) => {
|
|
26
|
-
const text = (node) => {
|
|
27
|
-
if (!node)
|
|
28
|
-
return '';
|
|
29
|
-
const n = node;
|
|
30
|
-
return n['_text'] ?? '';
|
|
31
|
-
};
|
|
32
|
-
const attr = (node, key) => {
|
|
33
|
-
if (!node)
|
|
34
|
-
return '';
|
|
35
|
-
const n = node;
|
|
36
|
-
const attrs = n['_attributes'];
|
|
37
|
-
return attrs?.[key] ?? '';
|
|
38
|
-
};
|
|
39
|
-
return {
|
|
40
|
-
title: text(e['title']),
|
|
41
|
-
url: attr(e['link'], 'href'),
|
|
42
|
-
author: text(e['author']?.['name']),
|
|
43
|
-
published: text(e['published']),
|
|
44
|
-
summary: text(e['summary']),
|
|
45
|
-
};
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
export const KagiSmallWebViewer = () => {
|
|
49
|
-
const [entries, setEntries] = useState([]);
|
|
50
|
-
const [loading, setLoading] = useState(true);
|
|
51
|
-
useEffect(() => {
|
|
52
|
-
void (async () => {
|
|
53
|
-
try {
|
|
54
|
-
const res = await fetch(FEED_URL);
|
|
55
|
-
const xml = await res.text();
|
|
56
|
-
const all = parseAtom(xml);
|
|
57
|
-
const shuffled = all.sort(() => Math.random() - 0.5).slice(0, 10);
|
|
58
|
-
setEntries(shuffled);
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
// Silently fail — tab stays empty
|
|
62
|
-
}
|
|
63
|
-
setLoading(false);
|
|
64
|
-
})();
|
|
65
|
-
}, []);
|
|
66
|
-
useScreenInput((input) => {
|
|
67
|
-
const num = parseInt(input, 10);
|
|
68
|
-
if (isNaN(num))
|
|
69
|
-
return;
|
|
70
|
-
const index = num === 0 ? 9 : num - 1;
|
|
71
|
-
const entry = entries[index];
|
|
72
|
-
if (!entry)
|
|
73
|
-
return;
|
|
74
|
-
void import('child_process').then(({ exec }) => {
|
|
75
|
-
exec(`open "${entry.url}" 2>/dev/null || xdg-open "${entry.url}" 2>/dev/null`);
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
if (loading) {
|
|
79
|
-
return (_jsx(Box, { paddingX: 1, children: _jsx(Text, { color: Colors.muted, children: "Loading Kagi Small Web..." }) }));
|
|
80
|
-
}
|
|
81
|
-
if (entries.length === 0) {
|
|
82
|
-
return (_jsx(Box, { paddingX: 1, children: _jsx(Text, { color: Colors.muted, children: "Could not load Kagi Small Web." }) }));
|
|
83
|
-
}
|
|
84
|
-
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: Colors.accent, children: "Kagi Small Web" }), _jsx(Box, { height: 1 }), entries.map((entry, i) => {
|
|
85
|
-
const key = i === 9 ? '0' : String(i + 1);
|
|
86
|
-
const date = new Date(entry.published);
|
|
87
|
-
const dateStr = date.toLocaleDateString('en-US', {
|
|
88
|
-
month: 'short',
|
|
89
|
-
day: 'numeric',
|
|
90
|
-
});
|
|
91
|
-
const host = (() => {
|
|
92
|
-
try {
|
|
93
|
-
return new URL(entry.url).hostname;
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
return '';
|
|
97
|
-
}
|
|
98
|
-
})();
|
|
99
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsxs(Text, { color: Colors.accent, bold: true, children: ["[", key, "]"] }), _jsxs(Text, { bold: true, children: [" ", entry.title] })] }), _jsx(Box, { marginLeft: 4, children: _jsxs(Text, { color: Colors.muted, children: [entry.author || host, dateStr ? `, ${dateStr}` : ''] }) })] }, entry.url));
|
|
100
|
-
})] }));
|
|
101
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export type StatusCheckResult = {
|
|
2
|
-
status: 'operational';
|
|
3
|
-
} | {
|
|
4
|
-
status: 'degraded';
|
|
5
|
-
description: string;
|
|
6
|
-
} | {
|
|
7
|
-
status: 'down';
|
|
8
|
-
description: string;
|
|
9
|
-
} | {
|
|
10
|
-
status: 'unknown';
|
|
11
|
-
error: string;
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Check the Anthropic/Claude status page for service health.
|
|
15
|
-
* Pure function — no UI calls.
|
|
16
|
-
*/
|
|
17
|
-
export declare function checkAnthropicStatus(): Promise<StatusCheckResult>;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.checkAnthropicStatus = checkAnthropicStatus;
|
|
4
|
-
const CLAUDE_STATUS_URL = 'https://status.claude.com/api/v2/status.json';
|
|
5
|
-
/**
|
|
6
|
-
* Check the Anthropic/Claude status page for service health.
|
|
7
|
-
* Pure function — no UI calls.
|
|
8
|
-
*/
|
|
9
|
-
async function checkAnthropicStatus() {
|
|
10
|
-
try {
|
|
11
|
-
const controller = new AbortController();
|
|
12
|
-
const timeoutId = setTimeout(() => controller.abort(), 5000);
|
|
13
|
-
const response = await fetch(CLAUDE_STATUS_URL, {
|
|
14
|
-
signal: controller.signal,
|
|
15
|
-
});
|
|
16
|
-
clearTimeout(timeoutId);
|
|
17
|
-
if (!response.ok) {
|
|
18
|
-
return {
|
|
19
|
-
status: 'unknown',
|
|
20
|
-
error: `Status page returned ${response.status}`,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
const data = (await response.json());
|
|
24
|
-
const indicator = data.status.indicator;
|
|
25
|
-
const rawDesc = data.status.description;
|
|
26
|
-
const description = rawDesc.charAt(0).toUpperCase() + rawDesc.slice(1).toLowerCase();
|
|
27
|
-
switch (indicator) {
|
|
28
|
-
case 'none':
|
|
29
|
-
return { status: 'operational' };
|
|
30
|
-
case 'minor':
|
|
31
|
-
return { status: 'degraded', description };
|
|
32
|
-
case 'major':
|
|
33
|
-
case 'critical':
|
|
34
|
-
return { status: 'down', description };
|
|
35
|
-
default:
|
|
36
|
-
return {
|
|
37
|
-
status: 'unknown',
|
|
38
|
-
error: `Unknown indicator: ${String(indicator)}`,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
if (error instanceof Error && error.name === 'AbortError') {
|
|
44
|
-
return { status: 'unknown', error: 'Request timed out' };
|
|
45
|
-
}
|
|
46
|
-
return {
|
|
47
|
-
status: 'unknown',
|
|
48
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
}
|