@posthog/wizard 1.36.0 → 2.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 +80 -3
- package/dist/bin.js +200 -24
- package/dist/bin.js.map +1 -1
- package/dist/src/__tests__/cli.test.js +10 -74
- package/dist/src/__tests__/cli.test.js.map +1 -1
- package/dist/src/__tests__/run.test.js +50 -5
- package/dist/src/__tests__/run.test.js.map +1 -1
- package/dist/src/__tests__/wizard-abort.test.js +127 -0
- package/dist/src/__tests__/wizard-abort.test.js.map +1 -0
- package/dist/src/{android → frameworks/android}/android-wizard-agent.d.ts +1 -1
- package/dist/src/{android → frameworks/android}/android-wizard-agent.js +2 -2
- package/dist/src/frameworks/android/android-wizard-agent.js.map +1 -0
- package/dist/src/{android → frameworks/android}/utils.d.ts +1 -1
- package/dist/src/{android → frameworks/android}/utils.js +1 -1
- package/dist/src/frameworks/android/utils.js.map +1 -0
- package/dist/src/{angular → frameworks/angular}/angular-wizard-agent.d.ts +1 -1
- package/dist/src/{angular → frameworks/angular}/angular-wizard-agent.js +9 -7
- package/dist/src/frameworks/angular/angular-wizard-agent.js.map +1 -0
- package/dist/src/{angular → frameworks/angular}/utils.js +1 -1
- package/dist/src/frameworks/angular/utils.js.map +1 -0
- package/dist/src/{astro → frameworks/astro}/astro-wizard-agent.d.ts +1 -1
- package/dist/src/{astro → frameworks/astro}/astro-wizard-agent.js +9 -7
- package/dist/src/frameworks/astro/astro-wizard-agent.js.map +1 -0
- package/dist/src/{astro → frameworks/astro}/utils.d.ts +2 -5
- package/dist/src/{astro → frameworks/astro}/utils.js +3 -52
- package/dist/src/frameworks/astro/utils.js.map +1 -0
- package/dist/src/{django → frameworks/django}/django-wizard-agent.d.ts +1 -1
- package/dist/src/{django → frameworks/django}/django-wizard-agent.js +3 -3
- package/dist/src/frameworks/django/django-wizard-agent.js.map +1 -0
- package/dist/src/{django → frameworks/django}/utils.d.ts +1 -1
- package/dist/src/{django → frameworks/django}/utils.js +6 -6
- package/dist/src/frameworks/django/utils.js.map +1 -0
- package/dist/src/frameworks/fastapi/fastapi-wizard-agent.d.ts +5 -0
- package/dist/src/{fastapi → frameworks/fastapi}/fastapi-wizard-agent.js +3 -32
- package/dist/src/frameworks/fastapi/fastapi-wizard-agent.js.map +1 -0
- package/dist/src/{fastapi → frameworks/fastapi}/utils.d.ts +1 -1
- package/dist/src/{fastapi → frameworks/fastapi}/utils.js +4 -4
- package/dist/src/frameworks/fastapi/utils.js.map +1 -0
- package/dist/src/{flask → frameworks/flask}/flask-wizard-agent.d.ts +1 -1
- package/dist/src/{flask → frameworks/flask}/flask-wizard-agent.js +3 -3
- package/dist/src/frameworks/flask/flask-wizard-agent.js.map +1 -0
- package/dist/src/{flask → frameworks/flask}/utils.d.ts +1 -1
- package/dist/src/{flask → frameworks/flask}/utils.js +7 -7
- package/dist/src/frameworks/flask/utils.js.map +1 -0
- package/dist/src/{javascript-node → frameworks/javascript-node}/javascript-node-wizard-agent.d.ts +1 -1
- package/dist/src/{javascript-node → frameworks/javascript-node}/javascript-node-wizard-agent.js +4 -4
- package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.js.map +1 -0
- package/dist/src/{javascript-web → frameworks/javascript-web}/javascript-web-wizard-agent.d.ts +1 -1
- package/dist/src/{javascript-web → frameworks/javascript-web}/javascript-web-wizard-agent.js +16 -14
- package/dist/src/frameworks/javascript-web/javascript-web-wizard-agent.js.map +1 -0
- package/dist/src/{javascript-web → frameworks/javascript-web}/utils.d.ts +6 -1
- package/dist/src/{javascript-web → frameworks/javascript-web}/utils.js +49 -1
- package/dist/src/frameworks/javascript-web/utils.js.map +1 -0
- package/dist/src/{laravel → frameworks/laravel}/laravel-wizard-agent.d.ts +1 -1
- package/dist/src/{laravel → frameworks/laravel}/laravel-wizard-agent.js +2 -2
- package/dist/src/frameworks/laravel/laravel-wizard-agent.js.map +1 -0
- package/dist/src/{laravel → frameworks/laravel}/utils.d.ts +1 -1
- package/dist/src/{laravel → frameworks/laravel}/utils.js +5 -5
- package/dist/src/frameworks/laravel/utils.js.map +1 -0
- package/dist/src/{nextjs → frameworks/nextjs}/nextjs-wizard-agent.d.ts +1 -1
- package/dist/src/{nextjs → frameworks/nextjs}/nextjs-wizard-agent.js +30 -8
- package/dist/src/frameworks/nextjs/nextjs-wizard-agent.js.map +1 -0
- package/dist/src/{nextjs → frameworks/nextjs}/utils.d.ts +5 -2
- package/dist/src/{nextjs → frameworks/nextjs}/utils.js +6 -20
- package/dist/src/frameworks/nextjs/utils.js.map +1 -0
- package/dist/src/{nuxt → frameworks/nuxt}/nuxt-wizard-agent.d.ts +1 -1
- package/dist/src/{nuxt → frameworks/nuxt}/nuxt-wizard-agent.js +11 -9
- package/dist/src/frameworks/nuxt/nuxt-wizard-agent.js.map +1 -0
- package/dist/src/{python → frameworks/python}/python-wizard-agent.d.ts +1 -1
- package/dist/src/{python → frameworks/python}/python-wizard-agent.js +3 -3
- package/dist/src/frameworks/python/python-wizard-agent.js.map +1 -0
- package/dist/src/{python → frameworks/python}/utils.d.ts +1 -1
- package/dist/src/frameworks/python/utils.js.map +1 -0
- package/dist/src/{rails → frameworks/rails}/rails-wizard-agent.d.ts +1 -1
- package/dist/src/{rails → frameworks/rails}/rails-wizard-agent.js +2 -2
- package/dist/src/frameworks/rails/rails-wizard-agent.js.map +1 -0
- package/dist/src/{rails → frameworks/rails}/utils.d.ts +1 -1
- package/dist/src/{rails → frameworks/rails}/utils.js +4 -4
- package/dist/src/frameworks/rails/utils.js.map +1 -0
- package/dist/src/{react-native → frameworks/react-native}/react-native-wizard-agent.d.ts +1 -1
- package/dist/src/{react-native → frameworks/react-native}/react-native-wizard-agent.js +9 -7
- package/dist/src/frameworks/react-native/react-native-wizard-agent.js.map +1 -0
- package/dist/src/{react-native → frameworks/react-native}/utils.d.ts +1 -1
- package/dist/src/{react-native → frameworks/react-native}/utils.js +7 -10
- package/dist/src/frameworks/react-native/utils.js.map +1 -0
- package/dist/src/{react-router → frameworks/react-router}/react-router-wizard-agent.d.ts +1 -1
- package/dist/src/{react-router → frameworks/react-router}/react-router-wizard-agent.js +15 -8
- package/dist/src/frameworks/react-router/react-router-wizard-agent.js.map +1 -0
- package/dist/src/frameworks/react-router/utils.d.ts +13 -0
- package/dist/src/{react-router → frameworks/react-router}/utils.js +14 -111
- package/dist/src/frameworks/react-router/utils.js.map +1 -0
- package/dist/src/{ruby → frameworks/ruby}/ruby-wizard-agent.d.ts +1 -1
- package/dist/src/{ruby → frameworks/ruby}/ruby-wizard-agent.js +2 -2
- package/dist/src/frameworks/ruby/ruby-wizard-agent.js.map +1 -0
- package/dist/src/{ruby → frameworks/ruby}/utils.d.ts +1 -1
- package/dist/src/{ruby → frameworks/ruby}/utils.js +1 -1
- package/dist/src/frameworks/ruby/utils.js.map +1 -0
- package/dist/src/{svelte → frameworks/svelte}/svelte-wizard-agent.d.ts +1 -1
- package/dist/src/{svelte → frameworks/svelte}/svelte-wizard-agent.js +5 -5
- package/dist/src/frameworks/svelte/svelte-wizard-agent.js.map +1 -0
- package/dist/src/{swift → frameworks/swift}/swift-wizard-agent.d.ts +1 -1
- package/dist/src/{swift → frameworks/swift}/swift-wizard-agent.js +2 -2
- package/dist/src/frameworks/swift/swift-wizard-agent.js.map +1 -0
- package/dist/src/{swift → frameworks/swift}/utils.d.ts +1 -1
- package/dist/src/frameworks/swift/utils.js.map +1 -0
- package/dist/src/{tanstack-router → frameworks/tanstack-router}/tanstack-router-wizard-agent.d.ts +1 -1
- package/dist/src/{tanstack-router → frameworks/tanstack-router}/tanstack-router-wizard-agent.js +15 -8
- package/dist/src/frameworks/tanstack-router/tanstack-router-wizard-agent.js.map +1 -0
- package/dist/src/frameworks/tanstack-router/utils.d.ts +11 -0
- package/dist/src/{tanstack-router → frameworks/tanstack-router}/utils.js +4 -47
- package/dist/src/frameworks/tanstack-router/utils.js.map +1 -0
- package/dist/src/{tanstack-start → frameworks/tanstack-start}/tanstack-start-wizard-agent.d.ts +1 -1
- package/dist/src/{tanstack-start → frameworks/tanstack-start}/tanstack-start-wizard-agent.js +9 -7
- package/dist/src/frameworks/tanstack-start/tanstack-start-wizard-agent.js.map +1 -0
- package/dist/src/{tanstack-start → frameworks/tanstack-start}/utils.js +1 -1
- package/dist/src/frameworks/tanstack-start/utils.js.map +1 -0
- package/dist/src/{vue → frameworks/vue}/vue-wizard-agent.d.ts +1 -1
- package/dist/src/{vue → frameworks/vue}/vue-wizard-agent.js +8 -8
- package/dist/src/frameworks/vue/vue-wizard-agent.js.map +1 -0
- package/dist/src/lib/__tests__/agent-interface.test.js +91 -19
- package/dist/src/lib/__tests__/agent-interface.test.js.map +1 -1
- package/dist/src/lib/agent-interface.d.ts +49 -2
- package/dist/src/lib/agent-interface.js +254 -40
- package/dist/src/lib/agent-interface.js.map +1 -1
- package/dist/src/lib/agent-runner.d.ts +4 -2
- package/dist/src/lib/agent-runner.js +131 -136
- package/dist/src/lib/agent-runner.js.map +1 -1
- package/dist/src/lib/api.d.ts +4 -4
- package/dist/src/lib/commandments.js +1 -0
- package/dist/src/lib/commandments.js.map +1 -1
- package/dist/src/lib/constants.d.ts +23 -8
- package/dist/src/lib/constants.js +36 -8
- package/dist/src/lib/constants.js.map +1 -1
- package/dist/src/lib/framework-config.d.ts +26 -0
- package/dist/src/lib/framework-config.js.map +1 -1
- package/dist/src/lib/health-checks/__tests__/health-checks.test.d.ts +18 -0
- package/dist/src/lib/health-checks/__tests__/health-checks.test.js +752 -0
- package/dist/src/lib/health-checks/__tests__/health-checks.test.js.map +1 -0
- package/dist/src/lib/health-checks/endpoints.d.ts +3 -0
- package/dist/src/lib/health-checks/endpoints.js +46 -0
- package/dist/src/lib/health-checks/endpoints.js.map +1 -0
- package/dist/src/lib/health-checks/index.d.ts +4 -0
- package/dist/src/lib/health-checks/index.js +23 -0
- package/dist/src/lib/health-checks/index.js.map +1 -0
- package/dist/src/lib/health-checks/readiness.d.ts +24 -0
- package/dist/src/lib/health-checks/readiness.js +119 -0
- package/dist/src/lib/health-checks/readiness.js.map +1 -0
- package/dist/src/lib/health-checks/statuspage.d.ts +9 -0
- package/dist/src/lib/health-checks/statuspage.js +105 -0
- package/dist/src/lib/health-checks/statuspage.js.map +1 -0
- package/dist/src/lib/health-checks/types.d.ts +31 -0
- package/dist/src/lib/health-checks/types.js +10 -0
- package/dist/src/lib/health-checks/types.js.map +1 -0
- package/dist/src/lib/middleware/benchmark.d.ts +2 -2
- package/dist/src/lib/middleware/benchmark.js +3 -3
- package/dist/src/lib/middleware/benchmark.js.map +1 -1
- package/dist/src/lib/middleware/benchmarks/json-writer.js +2 -2
- package/dist/src/lib/middleware/benchmarks/json-writer.js.map +1 -1
- package/dist/src/lib/middleware/benchmarks/summary.d.ts +2 -2
- package/dist/src/lib/middleware/benchmarks/summary.js +9 -9
- package/dist/src/lib/middleware/benchmarks/summary.js.map +1 -1
- package/dist/src/lib/middleware/types.d.ts +2 -2
- package/dist/src/lib/middleware/types.js.map +1 -1
- package/dist/src/lib/package-manager-detection.js +1 -1
- package/dist/src/lib/package-manager-detection.js.map +1 -1
- package/dist/src/lib/registry.js +21 -21
- package/dist/src/lib/registry.js.map +1 -1
- package/dist/src/lib/version.d.ts +1 -1
- package/dist/src/lib/version.js +1 -1
- package/dist/src/lib/version.js.map +1 -1
- package/dist/src/lib/wizard-session.d.ts +115 -0
- package/dist/src/lib/wizard-session.js +104 -0
- package/dist/src/lib/wizard-session.js.map +1 -0
- package/dist/src/lib/wizard-tools.js +13 -0
- package/dist/src/lib/wizard-tools.js.map +1 -1
- package/dist/src/run.d.ts +3 -3
- package/dist/src/run.js +73 -56
- package/dist/src/run.js.map +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/MCPClient.d.ts +4 -5
- package/dist/src/steps/add-mcp-server-to-clients/MCPClient.js +6 -6
- package/dist/src/steps/add-mcp-server-to-clients/MCPClient.js.map +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/__tests__/defaults.test.js +1 -21
- package/dist/src/steps/add-mcp-server-to-clients/__tests__/defaults.test.js.map +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/claude.test.js +2 -7
- package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/claude.test.js.map +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/codex.test.js +18 -22
- package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/codex.test.js.map +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.d.ts +7 -8
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.js +2 -2
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.js.map +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude.d.ts +6 -6
- package/dist/src/steps/add-mcp-server-to-clients/clients/codex.d.ts +7 -8
- package/dist/src/steps/add-mcp-server-to-clients/clients/codex.js +9 -10
- package/dist/src/steps/add-mcp-server-to-clients/clients/codex.js.map +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.d.ts +8 -9
- package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.js +4 -4
- package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.js.map +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.d.ts +8 -9
- package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.js +4 -4
- package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.js.map +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/zed.d.ts +8 -9
- package/dist/src/steps/add-mcp-server-to-clients/clients/zed.js +4 -4
- package/dist/src/steps/add-mcp-server-to-clients/clients/zed.js.map +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/defaults.d.ts +9 -10
- package/dist/src/steps/add-mcp-server-to-clients/defaults.js +6 -13
- package/dist/src/steps/add-mcp-server-to-clients/defaults.js.map +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/index.d.ts +6 -5
- package/dist/src/steps/add-mcp-server-to-clients/index.js +26 -110
- package/dist/src/steps/add-mcp-server-to-clients/index.js.map +1 -1
- package/dist/src/steps/add-or-update-environment-variables.js +15 -20
- package/dist/src/steps/add-or-update-environment-variables.js.map +1 -1
- package/dist/src/steps/index.d.ts +0 -1
- package/dist/src/steps/index.js +0 -1
- package/dist/src/steps/index.js.map +1 -1
- package/dist/src/steps/run-prettier.js +9 -11
- package/dist/src/steps/run-prettier.js.map +1 -1
- package/dist/src/steps/upload-environment-variables/EnvironmentProvider.d.ts +6 -3
- package/dist/src/steps/upload-environment-variables/EnvironmentProvider.js.map +1 -1
- package/dist/src/steps/upload-environment-variables/index.d.ts +3 -3
- package/dist/src/steps/upload-environment-variables/index.js +7 -35
- package/dist/src/steps/upload-environment-variables/index.js.map +1 -1
- package/dist/src/steps/upload-environment-variables/providers/vercel.d.ts +3 -2
- package/dist/src/steps/upload-environment-variables/providers/vercel.js +2 -2
- package/dist/src/steps/upload-environment-variables/providers/vercel.js.map +1 -1
- package/dist/src/ui/index.d.ts +8 -0
- package/dist/src/ui/index.js +17 -0
- package/dist/src/ui/index.js.map +1 -0
- package/dist/src/ui/logging-ui.d.ts +44 -0
- package/dist/src/ui/logging-ui.js +103 -0
- package/dist/src/ui/logging-ui.js.map +1 -0
- package/dist/src/ui/tui/App.d.ts +6 -0
- package/dist/src/ui/tui/App.js +10 -0
- package/dist/src/ui/tui/App.js.map +1 -0
- package/dist/src/ui/tui/__tests__/layout-helpers.test.js +68 -0
- package/dist/src/ui/tui/__tests__/layout-helpers.test.js.map +1 -0
- package/dist/src/ui/tui/__tests__/store.test.d.ts +1 -0
- package/dist/src/ui/tui/__tests__/store.test.js +723 -0
- package/dist/src/ui/tui/__tests__/store.test.js.map +1 -0
- package/dist/src/ui/tui/components/LearnCard.d.ts +10 -0
- package/dist/src/ui/tui/components/LearnCard.js +217 -0
- package/dist/src/ui/tui/components/LearnCard.js.map +1 -0
- package/dist/src/ui/tui/components/TipsCard.d.ts +9 -0
- package/dist/src/ui/tui/components/TipsCard.js +55 -0
- package/dist/src/ui/tui/components/TipsCard.js.map +1 -0
- package/dist/src/ui/tui/components/TitleBar.d.ts +6 -0
- package/dist/src/ui/tui/components/TitleBar.js +17 -0
- package/dist/src/ui/tui/components/TitleBar.js.map +1 -0
- package/dist/src/ui/tui/flows.d.ts +38 -0
- package/dist/src/ui/tui/flows.js +82 -0
- package/dist/src/ui/tui/flows.js.map +1 -0
- package/dist/src/ui/tui/hooks/useStdoutDimensions.d.ts +9 -0
- package/dist/src/ui/tui/hooks/useStdoutDimensions.js +37 -0
- package/dist/src/ui/tui/hooks/useStdoutDimensions.js.map +1 -0
- package/dist/src/ui/tui/ink-ui.d.ts +50 -0
- package/dist/src/ui/tui/ink-ui.js +108 -0
- package/dist/src/ui/tui/ink-ui.js.map +1 -0
- package/dist/src/ui/tui/package.json +1 -0
- package/dist/src/ui/tui/playground/PlaygroundApp.d.ts +12 -0
- package/dist/src/ui/tui/playground/PlaygroundApp.js +32 -0
- package/dist/src/ui/tui/playground/PlaygroundApp.js.map +1 -0
- package/dist/src/ui/tui/playground/demos/InputDemo.d.ts +4 -0
- package/dist/src/ui/tui/playground/demos/InputDemo.js +53 -0
- package/dist/src/ui/tui/playground/demos/InputDemo.js.map +1 -0
- package/dist/src/ui/tui/playground/demos/LayoutDemo.d.ts +5 -0
- package/dist/src/ui/tui/playground/demos/LayoutDemo.js +25 -0
- package/dist/src/ui/tui/playground/demos/LayoutDemo.js.map +1 -0
- package/dist/src/ui/tui/playground/demos/LogDemo.d.ts +5 -0
- package/dist/src/ui/tui/playground/demos/LogDemo.js +53 -0
- package/dist/src/ui/tui/playground/demos/LogDemo.js.map +1 -0
- package/dist/src/ui/tui/playground/demos/ProgressDemo.d.ts +5 -0
- package/dist/src/ui/tui/playground/demos/ProgressDemo.js +58 -0
- package/dist/src/ui/tui/playground/demos/ProgressDemo.js.map +1 -0
- package/dist/src/ui/tui/playground/demos/RunScreenDemo.d.ts +11 -0
- package/dist/src/ui/tui/playground/demos/RunScreenDemo.js +159 -0
- package/dist/src/ui/tui/playground/demos/RunScreenDemo.js.map +1 -0
- package/dist/src/ui/tui/playground/demos/WelcomeDemo.d.ts +9 -0
- package/dist/src/ui/tui/playground/demos/WelcomeDemo.js +15 -0
- package/dist/src/ui/tui/playground/demos/WelcomeDemo.js.map +1 -0
- package/dist/src/ui/tui/playground/start-playground.d.ts +4 -0
- package/dist/src/ui/tui/playground/start-playground.js +24 -0
- package/dist/src/ui/tui/playground/start-playground.js.map +1 -0
- package/dist/src/ui/tui/primitives/CardLayout.d.ts +12 -0
- package/dist/src/ui/tui/primitives/CardLayout.js +10 -0
- package/dist/src/ui/tui/primitives/CardLayout.js.map +1 -0
- package/dist/src/ui/tui/primitives/ConfirmationInput.d.ts +13 -0
- package/dist/src/ui/tui/primitives/ConfirmationInput.js +35 -0
- package/dist/src/ui/tui/primitives/ConfirmationInput.js.map +1 -0
- package/dist/src/ui/tui/primitives/ContentSequencer.d.ts +42 -0
- package/dist/src/ui/tui/primitives/ContentSequencer.js +137 -0
- package/dist/src/ui/tui/primitives/ContentSequencer.js.map +1 -0
- package/dist/src/ui/tui/primitives/DissolveTransition.d.ts +21 -0
- package/dist/src/ui/tui/primitives/DissolveTransition.js +149 -0
- package/dist/src/ui/tui/primitives/DissolveTransition.js.map +1 -0
- package/dist/src/ui/tui/primitives/EventPlanViewer.d.ts +9 -0
- package/dist/src/ui/tui/primitives/EventPlanViewer.js +9 -0
- package/dist/src/ui/tui/primitives/EventPlanViewer.js.map +1 -0
- package/dist/src/ui/tui/primitives/HNViewer.d.ts +7 -0
- package/dist/src/ui/tui/primitives/HNViewer.js +63 -0
- package/dist/src/ui/tui/primitives/HNViewer.js.map +1 -0
- package/dist/src/ui/tui/primitives/LinesBlock.d.ts +16 -0
- package/dist/src/ui/tui/primitives/LinesBlock.js +37 -0
- package/dist/src/ui/tui/primitives/LinesBlock.js.map +1 -0
- package/dist/src/ui/tui/primitives/LoadingBox.d.ts +8 -0
- package/dist/src/ui/tui/primitives/LoadingBox.js +10 -0
- package/dist/src/ui/tui/primitives/LoadingBox.js.map +1 -0
- package/dist/src/ui/tui/primitives/LogViewer.d.ts +11 -0
- package/dist/src/ui/tui/primitives/LogViewer.js +55 -0
- package/dist/src/ui/tui/primitives/LogViewer.js.map +1 -0
- package/dist/src/ui/tui/primitives/NodeBlock.d.ts +13 -0
- package/dist/src/ui/tui/primitives/NodeBlock.js +17 -0
- package/dist/src/ui/tui/primitives/NodeBlock.js.map +1 -0
- package/dist/src/ui/tui/primitives/PickerMenu.d.ts +20 -0
- package/dist/src/ui/tui/primitives/PickerMenu.js +134 -0
- package/dist/src/ui/tui/primitives/PickerMenu.js.map +1 -0
- package/dist/src/ui/tui/primitives/ProgressList.d.ts +15 -0
- package/dist/src/ui/tui/primitives/ProgressList.js +30 -0
- package/dist/src/ui/tui/primitives/ProgressList.js.map +1 -0
- package/dist/src/ui/tui/primitives/PromptLabel.d.ts +11 -0
- package/dist/src/ui/tui/primitives/PromptLabel.js +13 -0
- package/dist/src/ui/tui/primitives/PromptLabel.js.map +1 -0
- package/dist/src/ui/tui/primitives/ScreenContainer.d.ts +16 -0
- package/dist/src/ui/tui/primitives/ScreenContainer.js +36 -0
- package/dist/src/ui/tui/primitives/ScreenContainer.js.map +1 -0
- package/dist/src/ui/tui/primitives/ScreenErrorBoundary.d.ts +22 -0
- package/dist/src/ui/tui/primitives/ScreenErrorBoundary.js +35 -0
- package/dist/src/ui/tui/primitives/ScreenErrorBoundary.js.map +1 -0
- package/dist/src/ui/tui/primitives/SplitView.d.ts +11 -0
- package/dist/src/ui/tui/primitives/SplitView.js +9 -0
- package/dist/src/ui/tui/primitives/SplitView.js.map +1 -0
- package/dist/src/ui/tui/primitives/TabContainer.d.ts +23 -0
- package/dist/src/ui/tui/primitives/TabContainer.js +45 -0
- package/dist/src/ui/tui/primitives/TabContainer.js.map +1 -0
- package/dist/src/ui/tui/primitives/TextBlock.d.ts +41 -0
- package/dist/src/ui/tui/primitives/TextBlock.js +144 -0
- package/dist/src/ui/tui/primitives/TextBlock.js.map +1 -0
- package/dist/src/ui/tui/primitives/content-types.d.ts +37 -0
- package/dist/src/ui/tui/primitives/content-types.js +19 -0
- package/dist/src/ui/tui/primitives/content-types.js.map +1 -0
- package/dist/src/ui/tui/primitives/index.d.ts +24 -0
- package/dist/src/ui/tui/primitives/index.js +21 -0
- package/dist/src/ui/tui/primitives/index.js.map +1 -0
- package/dist/src/ui/tui/primitives/layout-helpers.d.ts +36 -0
- package/dist/src/ui/tui/primitives/layout-helpers.js +95 -0
- package/dist/src/ui/tui/primitives/layout-helpers.js.map +1 -0
- package/dist/src/ui/tui/primitives/text-helpers.d.ts +10 -0
- package/dist/src/ui/tui/primitives/text-helpers.js +43 -0
- package/dist/src/ui/tui/primitives/text-helpers.js.map +1 -0
- package/dist/src/ui/tui/router.d.ts +56 -0
- package/dist/src/ui/tui/router.js +94 -0
- package/dist/src/ui/tui/router.js.map +1 -0
- package/dist/src/ui/tui/screen-registry.d.ts +19 -0
- package/dist/src/ui/tui/screen-registry.js +34 -0
- package/dist/src/ui/tui/screen-registry.js.map +1 -0
- package/dist/src/ui/tui/screens/AuthScreen.d.ts +13 -0
- package/dist/src/ui/tui/screens/AuthScreen.js +20 -0
- package/dist/src/ui/tui/screens/AuthScreen.js.map +1 -0
- package/dist/src/ui/tui/screens/IntroScreen.d.ts +16 -0
- package/dist/src/ui/tui/screens/IntroScreen.js +63 -0
- package/dist/src/ui/tui/screens/IntroScreen.js.map +1 -0
- package/dist/src/ui/tui/screens/McpScreen.d.ts +24 -0
- package/dist/src/ui/tui/screens/McpScreen.js +112 -0
- package/dist/src/ui/tui/screens/McpScreen.js.map +1 -0
- package/dist/src/ui/tui/screens/OutageScreen.d.ts +10 -0
- package/dist/src/ui/tui/screens/OutageScreen.js +17 -0
- package/dist/src/ui/tui/screens/OutageScreen.js.map +1 -0
- package/dist/src/ui/tui/screens/OutroScreen.d.ts +11 -0
- package/dist/src/ui/tui/screens/OutroScreen.js +22 -0
- package/dist/src/ui/tui/screens/OutroScreen.js.map +1 -0
- package/dist/src/ui/tui/screens/RunScreen.d.ts +16 -0
- package/dist/src/ui/tui/screens/RunScreen.js +73 -0
- package/dist/src/ui/tui/screens/RunScreen.js.map +1 -0
- package/dist/src/ui/tui/screens/SettingsOverrideScreen.d.ts +10 -0
- package/dist/src/ui/tui/screens/SettingsOverrideScreen.js +24 -0
- package/dist/src/ui/tui/screens/SettingsOverrideScreen.js.map +1 -0
- package/dist/src/ui/tui/screens/SetupScreen.d.ts +13 -0
- package/dist/src/ui/tui/screens/SetupScreen.js +74 -0
- package/dist/src/ui/tui/screens/SetupScreen.js.map +1 -0
- package/dist/src/ui/tui/services/mcp-installer.d.ts +21 -0
- package/dist/src/ui/tui/services/mcp-installer.js +58 -0
- package/dist/src/ui/tui/services/mcp-installer.js.map +1 -0
- package/dist/src/ui/tui/start-tui.d.ts +9 -0
- package/dist/src/ui/tui/start-tui.js +41 -0
- package/dist/src/ui/tui/start-tui.js.map +1 -0
- package/dist/src/ui/tui/store.d.ts +132 -0
- package/dist/src/ui/tui/store.js +320 -0
- package/dist/src/ui/tui/store.js.map +1 -0
- package/dist/src/ui/tui/styles.d.ts +31 -0
- package/dist/src/ui/tui/styles.js +34 -0
- package/dist/src/ui/tui/styles.js.map +1 -0
- package/dist/src/ui/wizard-ui.d.ts +64 -0
- package/dist/src/ui/wizard-ui.js +19 -0
- package/dist/src/ui/wizard-ui.js.map +1 -0
- package/dist/src/utils/__tests__/setup-utils.test.d.ts +1 -0
- package/dist/src/utils/__tests__/{clack-utils.test.js → setup-utils.test.js} +31 -22
- package/dist/src/utils/__tests__/setup-utils.test.js.map +1 -0
- package/dist/src/utils/analytics.d.ts +18 -0
- package/dist/src/utils/analytics.js +53 -0
- package/dist/src/utils/analytics.js.map +1 -1
- package/dist/src/utils/anthropic-status.d.ts +1 -12
- package/dist/src/utils/anthropic-status.js +4 -56
- package/dist/src/utils/anthropic-status.js.map +1 -1
- package/dist/src/utils/custom-headers.d.ts +9 -0
- package/dist/src/utils/custom-headers.js +24 -0
- package/dist/src/utils/custom-headers.js.map +1 -0
- package/dist/src/utils/debug.js +2 -2
- package/dist/src/utils/debug.js.map +1 -1
- package/dist/src/utils/environment.js +4 -2
- package/dist/src/utils/environment.js.map +1 -1
- package/dist/src/utils/oauth.d.ts +0 -2
- package/dist/src/utils/oauth.js +18 -21
- package/dist/src/utils/oauth.js.map +1 -1
- package/dist/src/utils/package-manager.js +13 -13
- package/dist/src/utils/package-manager.js.map +1 -1
- package/dist/src/utils/setup-utils.d.ts +76 -0
- package/dist/src/utils/setup-utils.js +364 -0
- package/dist/src/utils/setup-utils.js.map +1 -0
- package/dist/src/utils/types.d.ts +0 -4
- package/dist/src/utils/types.js.map +1 -1
- package/dist/src/utils/urls.d.ts +1 -1
- package/dist/src/utils/urls.js +22 -9
- package/dist/src/utils/urls.js.map +1 -1
- package/dist/src/utils/wizard-abort.d.ts +13 -0
- package/dist/src/utils/wizard-abort.js +57 -0
- package/dist/src/utils/wizard-abort.js.map +1 -0
- package/package.json +19 -7
- package/dist/src/android/android-wizard-agent.js.map +0 -1
- package/dist/src/android/utils.js.map +0 -1
- package/dist/src/angular/angular-wizard-agent.js.map +0 -1
- package/dist/src/angular/utils.js.map +0 -1
- package/dist/src/astro/astro-wizard-agent.js.map +0 -1
- package/dist/src/astro/utils.js.map +0 -1
- package/dist/src/django/django-wizard-agent.js.map +0 -1
- package/dist/src/django/utils.js.map +0 -1
- package/dist/src/fastapi/fastapi-wizard-agent.d.ts +0 -7
- package/dist/src/fastapi/fastapi-wizard-agent.js.map +0 -1
- package/dist/src/fastapi/utils.js.map +0 -1
- package/dist/src/flask/flask-wizard-agent.js.map +0 -1
- package/dist/src/flask/utils.js.map +0 -1
- package/dist/src/javascript-node/javascript-node-wizard-agent.js.map +0 -1
- package/dist/src/javascript-web/javascript-web-wizard-agent.js.map +0 -1
- package/dist/src/javascript-web/utils.js.map +0 -1
- package/dist/src/laravel/laravel-wizard-agent.js.map +0 -1
- package/dist/src/laravel/utils.js.map +0 -1
- package/dist/src/mcp.d.ts +0 -10
- package/dist/src/mcp.js +0 -45
- package/dist/src/mcp.js.map +0 -1
- package/dist/src/nextjs/nextjs-wizard-agent.js.map +0 -1
- package/dist/src/nextjs/utils.js.map +0 -1
- package/dist/src/nuxt/nuxt-wizard-agent.js.map +0 -1
- package/dist/src/python/python-wizard-agent.js.map +0 -1
- package/dist/src/python/utils.js.map +0 -1
- package/dist/src/rails/rails-wizard-agent.js.map +0 -1
- package/dist/src/rails/utils.js.map +0 -1
- package/dist/src/react-native/react-native-wizard-agent.js.map +0 -1
- package/dist/src/react-native/utils.js.map +0 -1
- package/dist/src/react-router/react-router-wizard-agent.js.map +0 -1
- package/dist/src/react-router/utils.d.ts +0 -19
- package/dist/src/react-router/utils.js.map +0 -1
- package/dist/src/ruby/ruby-wizard-agent.js.map +0 -1
- package/dist/src/ruby/utils.js.map +0 -1
- package/dist/src/steps/__tests__/add-editor-rules.test.js +0 -208
- package/dist/src/steps/__tests__/add-editor-rules.test.js.map +0 -1
- package/dist/src/steps/add-editor-rules.d.ts +0 -8
- package/dist/src/steps/add-editor-rules.js +0 -71
- package/dist/src/steps/add-editor-rules.js.map +0 -1
- package/dist/src/svelte/svelte-wizard-agent.js.map +0 -1
- package/dist/src/swift/swift-wizard-agent.js.map +0 -1
- package/dist/src/swift/utils.js.map +0 -1
- package/dist/src/tanstack-router/tanstack-router-wizard-agent.js.map +0 -1
- package/dist/src/tanstack-router/utils.d.ts +0 -17
- package/dist/src/tanstack-router/utils.js.map +0 -1
- package/dist/src/tanstack-start/tanstack-start-wizard-agent.js.map +0 -1
- package/dist/src/tanstack-start/utils.js.map +0 -1
- package/dist/src/utils/__tests__/clack-utils.test.js.map +0 -1
- package/dist/src/utils/clack-utils.d.ts +0 -190
- package/dist/src/utils/clack-utils.js +0 -728
- package/dist/src/utils/clack-utils.js.map +0 -1
- package/dist/src/utils/clack.d.ts +0 -2
- package/dist/src/utils/clack.js +0 -9
- package/dist/src/utils/clack.js.map +0 -1
- package/dist/src/vue/vue-wizard-agent.js.map +0 -1
- /package/dist/src/{steps/__tests__/add-editor-rules.test.d.ts → __tests__/wizard-abort.test.d.ts} +0 -0
- /package/dist/src/{angular → frameworks/angular}/utils.d.ts +0 -0
- /package/dist/src/{python → frameworks/python}/utils.js +0 -0
- /package/dist/src/{swift → frameworks/swift}/utils.js +0 -0
- /package/dist/src/{tanstack-start → frameworks/tanstack-start}/utils.d.ts +0 -0
- /package/dist/src/{utils/__tests__/clack-utils.test.d.ts → ui/tui/__tests__/layout-helpers.test.d.ts} +0 -0
|
@@ -38,73 +38,101 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.runAgentWizard = runAgentWizard;
|
|
40
40
|
const framework_config_1 = require("./framework-config");
|
|
41
|
-
const
|
|
41
|
+
const wizard_session_1 = require("./wizard-session");
|
|
42
|
+
const setup_utils_1 = require("../utils/setup-utils");
|
|
42
43
|
const analytics_1 = require("../utils/analytics");
|
|
43
|
-
const
|
|
44
|
-
const clack_1 = __importDefault(require("../utils/clack"));
|
|
44
|
+
const ui_1 = require("../ui");
|
|
45
45
|
const agent_interface_1 = require("./agent-interface");
|
|
46
46
|
const urls_1 = require("../utils/urls");
|
|
47
47
|
const chalk_1 = __importDefault(require("chalk"));
|
|
48
48
|
const semver = __importStar(require("semver"));
|
|
49
|
-
const steps_1 = require("../steps");
|
|
50
49
|
const anthropic_status_1 = require("../utils/anthropic-status");
|
|
51
50
|
const debug_1 = require("../utils/debug");
|
|
52
51
|
const benchmark_1 = require("./middleware/benchmark");
|
|
52
|
+
const wizard_abort_1 = require("../utils/wizard-abort");
|
|
53
|
+
/**
|
|
54
|
+
* Build a WizardOptions bag from a WizardSession (for code that still expects WizardOptions).
|
|
55
|
+
*/
|
|
56
|
+
function sessionToOptions(session) {
|
|
57
|
+
return {
|
|
58
|
+
installDir: session.installDir,
|
|
59
|
+
debug: session.debug,
|
|
60
|
+
forceInstall: session.forceInstall,
|
|
61
|
+
default: false,
|
|
62
|
+
signup: session.signup,
|
|
63
|
+
localMcp: session.localMcp,
|
|
64
|
+
ci: session.ci,
|
|
65
|
+
menu: session.menu,
|
|
66
|
+
benchmark: session.benchmark,
|
|
67
|
+
projectId: session.projectId,
|
|
68
|
+
apiKey: session.apiKey,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
53
71
|
/**
|
|
54
72
|
* Universal agent-powered wizard runner.
|
|
55
73
|
* Handles the complete flow for any framework using PostHog MCP integration.
|
|
74
|
+
*
|
|
75
|
+
* All user decisions come from the session — no UI prompts.
|
|
56
76
|
*/
|
|
57
|
-
async function runAgentWizard(config,
|
|
58
|
-
if (
|
|
77
|
+
async function runAgentWizard(config, session) {
|
|
78
|
+
if (session.debug) {
|
|
59
79
|
(0, debug_1.enableDebugLogs)();
|
|
60
80
|
}
|
|
61
81
|
// Version check
|
|
62
82
|
if (config.detection.minimumVersion && config.detection.getInstalledVersion) {
|
|
63
|
-
const version = await config.detection.getInstalledVersion(
|
|
83
|
+
const version = await config.detection.getInstalledVersion(sessionToOptions(session));
|
|
64
84
|
if (version) {
|
|
65
85
|
const coerced = semver.coerce(version);
|
|
66
86
|
if (coerced && semver.lt(coerced, config.detection.minimumVersion)) {
|
|
67
87
|
const docsUrl = config.metadata.unsupportedVersionDocsUrl ?? config.metadata.docsUrl;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
88
|
+
(0, ui_1.getUI)().log.warn(`Sorry: the wizard can't help you with ${config.metadata.name} ${version}. Upgrade to ${config.metadata.name} ${config.detection.minimumVersion} or later, or check out the manual setup guide.`);
|
|
89
|
+
(0, ui_1.getUI)().log.info(`Setup ${config.metadata.name} manually: ${chalk_1.default.cyan(docsUrl)}`);
|
|
90
|
+
(0, ui_1.getUI)().outro('PostHog wizard will see you next time!');
|
|
71
91
|
return;
|
|
72
92
|
}
|
|
73
93
|
}
|
|
74
94
|
}
|
|
75
|
-
// Setup phase
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
if (!aiConsent) {
|
|
86
|
-
await (0, clack_utils_1.abort)(`This wizard uses an LLM agent to intelligently modify your project. Please view the docs to set up ${config.metadata.name} manually instead: ${config.metadata.docsUrl}`, 0);
|
|
95
|
+
// Setup phase — informational only, no prompts
|
|
96
|
+
// Beta notice, pre-run notice, and welcome label are all derivable
|
|
97
|
+
// from session.frameworkConfig — IntroScreen reads them directly.
|
|
98
|
+
// Check Anthropic/Claude service status (pure — no prompt)
|
|
99
|
+
const statusResult = await (0, anthropic_status_1.checkAnthropicStatus)();
|
|
100
|
+
if (statusResult.status === 'down' || statusResult.status === 'degraded') {
|
|
101
|
+
(0, ui_1.getUI)().showServiceStatus({
|
|
102
|
+
description: statusResult.description,
|
|
103
|
+
statusPageUrl: 'https://status.claude.com',
|
|
104
|
+
});
|
|
87
105
|
}
|
|
88
|
-
// Check
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
106
|
+
// Check for blocking env overrides in .claude/settings.json before login.
|
|
107
|
+
// These keys block the Wizard from accessing the PostHog LLM Gateway.
|
|
108
|
+
const blockingOverrideKeys = (0, agent_interface_1.checkClaudeSettingsOverrides)(session.installDir);
|
|
109
|
+
if (blockingOverrideKeys.length > 0) {
|
|
110
|
+
await (0, ui_1.getUI)().showSettingsOverride(blockingOverrideKeys, () => (0, agent_interface_1.backupAndFixClaudeSettings)(session.installDir));
|
|
92
111
|
}
|
|
93
|
-
|
|
94
|
-
const typeScriptDetected = (0,
|
|
95
|
-
|
|
112
|
+
// Disclosure text is static — IntroScreen renders it directly.
|
|
113
|
+
const typeScriptDetected = (0, setup_utils_1.isUsingTypeScript)({
|
|
114
|
+
installDir: session.installDir,
|
|
115
|
+
});
|
|
116
|
+
session.typescript = typeScriptDetected;
|
|
96
117
|
// Framework detection and version
|
|
97
|
-
// Only check package.json for Node.js/JavaScript frameworks
|
|
98
118
|
const usesPackageJson = config.detection.usesPackageJson !== false;
|
|
99
119
|
let packageJson = null;
|
|
100
120
|
let frameworkVersion;
|
|
101
121
|
if (usesPackageJson) {
|
|
102
|
-
packageJson = await (0,
|
|
103
|
-
|
|
104
|
-
|
|
122
|
+
packageJson = await (0, setup_utils_1.tryGetPackageJson)({ installDir: session.installDir });
|
|
123
|
+
if (packageJson) {
|
|
124
|
+
// Log warning if package not installed, but continue (agent handles it)
|
|
125
|
+
const { hasPackageInstalled } = await import('../utils/package-json.js');
|
|
126
|
+
if (!hasPackageInstalled(config.detection.packageName, packageJson)) {
|
|
127
|
+
(0, ui_1.getUI)().log.warn(`${config.detection.packageDisplayName} does not seem to be installed. Continuing anyway — the agent will handle it.`);
|
|
128
|
+
}
|
|
129
|
+
frameworkVersion = config.detection.getVersion(packageJson);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
(0, ui_1.getUI)().log.warn('Could not find package.json. Continuing anyway — the agent will handle it.');
|
|
133
|
+
}
|
|
105
134
|
}
|
|
106
135
|
else {
|
|
107
|
-
// For non-Node frameworks (e.g., Django), version is handled differently
|
|
108
136
|
frameworkVersion = config.detection.getVersion(null);
|
|
109
137
|
}
|
|
110
138
|
// Set analytics tags for framework version
|
|
@@ -112,19 +140,21 @@ async function runAgentWizard(config, options) {
|
|
|
112
140
|
const versionBucket = config.detection.getVersionBucket(frameworkVersion);
|
|
113
141
|
analytics_1.analytics.setTag(`${config.metadata.integration}-version`, versionBucket);
|
|
114
142
|
}
|
|
115
|
-
analytics_1.analytics.
|
|
116
|
-
action: 'started agent integration',
|
|
143
|
+
analytics_1.analytics.wizardCapture('agent started', {
|
|
117
144
|
integration: config.metadata.integration,
|
|
118
145
|
});
|
|
119
|
-
// Get PostHog credentials
|
|
120
|
-
const { projectApiKey, host, accessToken, projectId } = await (0,
|
|
121
|
-
|
|
122
|
-
|
|
146
|
+
// Get PostHog credentials (region auto-detected from token)
|
|
147
|
+
const { projectApiKey, host, accessToken, projectId, cloudRegion } = await (0, setup_utils_1.getOrAskForProjectData)({
|
|
148
|
+
signup: session.signup,
|
|
149
|
+
ci: session.ci,
|
|
150
|
+
apiKey: session.apiKey,
|
|
151
|
+
projectId: session.projectId,
|
|
123
152
|
});
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
153
|
+
session.credentials = { accessToken, projectApiKey, host, projectId };
|
|
154
|
+
// Notify TUI that credentials are available (resolves past AuthScreen)
|
|
155
|
+
(0, ui_1.getUI)().setCredentials(session.credentials);
|
|
156
|
+
// Framework context was already gathered by SetupScreen + detection
|
|
157
|
+
const frameworkContext = session.frameworkContext;
|
|
128
158
|
// Set analytics tags from framework context
|
|
129
159
|
const contextTags = config.analytics.getTags(frameworkContext);
|
|
130
160
|
Object.entries(contextTags).forEach(([key, value]) => {
|
|
@@ -138,109 +168,87 @@ async function runAgentWizard(config, options) {
|
|
|
138
168
|
projectId,
|
|
139
169
|
}, frameworkContext);
|
|
140
170
|
// Initialize and run agent
|
|
141
|
-
const spinner =
|
|
171
|
+
const spinner = (0, ui_1.getUI)().spinner();
|
|
172
|
+
// Evaluate all feature flags at the start of the run so they can be sent to the LLM gateway
|
|
173
|
+
const wizardFlags = await analytics_1.analytics.getAllFlagsForWizard();
|
|
174
|
+
const wizardMetadata = (0, agent_interface_1.buildWizardMetadata)(wizardFlags);
|
|
142
175
|
// Determine MCP URL: CLI flag > env var > production default
|
|
143
|
-
|
|
144
|
-
// See: https://github.com/anthropics/claude-code/issues/2267
|
|
145
|
-
const mcpUrl = options.localMcp
|
|
176
|
+
const mcpUrl = session.localMcp
|
|
146
177
|
? 'http://localhost:8787/mcp'
|
|
147
|
-
: process.env.MCP_URL ||
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
178
|
+
: process.env.MCP_URL || 'https://mcp.posthog.com/mcp';
|
|
179
|
+
const restoreSettings = () => (0, agent_interface_1.restoreClaudeSettings)(session.installDir);
|
|
180
|
+
(0, ui_1.getUI)().onEnterScreen('outro', restoreSettings);
|
|
181
|
+
(0, ui_1.getUI)().startRun();
|
|
151
182
|
const agent = await (0, agent_interface_1.initializeAgent)({
|
|
152
|
-
workingDirectory:
|
|
183
|
+
workingDirectory: session.installDir,
|
|
153
184
|
posthogMcpUrl: mcpUrl,
|
|
154
185
|
posthogApiKey: accessToken,
|
|
155
186
|
posthogApiHost: host,
|
|
156
187
|
additionalMcpServers: config.metadata.additionalMcpServers,
|
|
157
188
|
detectPackageManager: config.detection.detectPackageManager,
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
189
|
+
wizardFlags,
|
|
190
|
+
wizardMetadata,
|
|
191
|
+
}, sessionToOptions(session));
|
|
192
|
+
const middleware = session.benchmark
|
|
193
|
+
? (0, benchmark_1.createBenchmarkPipeline)(spinner, sessionToOptions(session))
|
|
161
194
|
: undefined;
|
|
162
|
-
const agentResult = await (0, agent_interface_1.runAgent)(agent, integrationPrompt,
|
|
195
|
+
const agentResult = await (0, agent_interface_1.runAgent)(agent, integrationPrompt, sessionToOptions(session), spinner, {
|
|
163
196
|
estimatedDurationMinutes: config.ui.estimatedDurationMinutes,
|
|
164
197
|
spinnerMessage: framework_config_1.SPINNER_MESSAGE,
|
|
165
198
|
successMessage: config.ui.successMessage,
|
|
166
199
|
errorMessage: 'Integration failed',
|
|
200
|
+
additionalFeatureQueue: session.additionalFeatureQueue,
|
|
167
201
|
}, middleware);
|
|
168
202
|
// Handle error cases detected in agent output
|
|
169
203
|
if (agentResult.error === agent_interface_1.AgentErrorType.MCP_MISSING) {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
204
|
+
await (0, wizard_abort_1.wizardAbort)({
|
|
205
|
+
message: `Could not access the PostHog MCP server\n\nThe wizard was unable to connect to the PostHog MCP server.\nThis could be due to a network issue or a configuration problem.\n\nPlease try again, or set up ${config.metadata.name} manually by following our documentation:\n${config.metadata.docsUrl}`,
|
|
206
|
+
error: new wizard_abort_1.WizardError('Agent could not access PostHog MCP server', {
|
|
207
|
+
integration: config.metadata.integration,
|
|
208
|
+
error_type: agent_interface_1.AgentErrorType.MCP_MISSING,
|
|
209
|
+
signal: agent_interface_1.AgentSignals.ERROR_MCP_MISSING,
|
|
210
|
+
}),
|
|
174
211
|
});
|
|
175
|
-
const errorMessage = `
|
|
176
|
-
${chalk_1.default.red('❌ Could not access the PostHog MCP server')}
|
|
177
|
-
|
|
178
|
-
The wizard was unable to connect to the PostHog MCP server.
|
|
179
|
-
This could be due to a network issue or a configuration problem.
|
|
180
|
-
|
|
181
|
-
Please try again, or set up ${config.metadata.name} manually by following our documentation:
|
|
182
|
-
${chalk_1.default.cyan(config.metadata.docsUrl)}`;
|
|
183
|
-
clack_1.default.outro(errorMessage);
|
|
184
|
-
await analytics_1.analytics.shutdown('error');
|
|
185
|
-
process.exit(1);
|
|
186
212
|
}
|
|
187
213
|
if (agentResult.error === agent_interface_1.AgentErrorType.RESOURCE_MISSING) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
214
|
+
await (0, wizard_abort_1.wizardAbort)({
|
|
215
|
+
message: `Could not access the setup resource\n\nThe wizard could not access the setup resource. This may indicate a version mismatch or a temporary service issue.\n\nPlease try again, or set up ${config.metadata.name} manually by following our documentation:\n${config.metadata.docsUrl}`,
|
|
216
|
+
error: new wizard_abort_1.WizardError('Agent could not access setup resource', {
|
|
217
|
+
integration: config.metadata.integration,
|
|
218
|
+
error_type: agent_interface_1.AgentErrorType.RESOURCE_MISSING,
|
|
219
|
+
signal: agent_interface_1.AgentSignals.ERROR_RESOURCE_MISSING,
|
|
220
|
+
}),
|
|
192
221
|
});
|
|
193
|
-
const errorMessage = `
|
|
194
|
-
${chalk_1.default.red('❌ Could not access the setup resource')}
|
|
195
|
-
|
|
196
|
-
The wizard could not access the setup resource. This may indicate a version mismatch or a temporary service issue.
|
|
197
|
-
|
|
198
|
-
Please try again, or set up ${config.metadata.name} manually by following our documentation:
|
|
199
|
-
${chalk_1.default.cyan(config.metadata.docsUrl)}`;
|
|
200
|
-
clack_1.default.outro(errorMessage);
|
|
201
|
-
await analytics_1.analytics.shutdown('error');
|
|
202
|
-
process.exit(1);
|
|
203
222
|
}
|
|
204
223
|
if (agentResult.error === agent_interface_1.AgentErrorType.RATE_LIMIT ||
|
|
205
224
|
agentResult.error === agent_interface_1.AgentErrorType.API_ERROR) {
|
|
206
|
-
analytics_1.analytics.
|
|
207
|
-
action: 'api error',
|
|
225
|
+
analytics_1.analytics.wizardCapture('agent api error', {
|
|
208
226
|
integration: config.metadata.integration,
|
|
209
227
|
error_type: agentResult.error,
|
|
210
228
|
error_message: agentResult.message,
|
|
211
229
|
});
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
230
|
+
await (0, wizard_abort_1.wizardAbort)({
|
|
231
|
+
message: `API Error\n\n${agentResult.message || 'Unknown error'}\n\nPlease report this error to: wizard@posthog.com`,
|
|
232
|
+
error: new wizard_abort_1.WizardError(`API error: ${agentResult.message}`, {
|
|
233
|
+
integration: config.metadata.integration,
|
|
234
|
+
error_type: agentResult.error,
|
|
235
|
+
}),
|
|
215
236
|
});
|
|
216
|
-
const errorMessage = `
|
|
217
|
-
${chalk_1.default.red('❌ API Error')}
|
|
218
|
-
|
|
219
|
-
${chalk_1.default.yellow(agentResult.message || 'Unknown error')}
|
|
220
|
-
|
|
221
|
-
Please report this error to: ${chalk_1.default.cyan('wizard@posthog.com')}`;
|
|
222
|
-
clack_1.default.outro(errorMessage);
|
|
223
|
-
await analytics_1.analytics.shutdown('error');
|
|
224
|
-
process.exit(1);
|
|
225
237
|
}
|
|
226
238
|
// Build environment variables from OAuth credentials
|
|
227
239
|
const envVars = config.environment.getEnvVars(projectApiKey, host);
|
|
228
|
-
// Upload environment variables to hosting providers (
|
|
240
|
+
// Upload environment variables to hosting providers (auto-accept)
|
|
229
241
|
let uploadedEnvVars = [];
|
|
230
242
|
if (config.environment.uploadToHosting) {
|
|
231
|
-
|
|
243
|
+
const { uploadEnvironmentVariablesStep } = await import('../steps/index.js');
|
|
244
|
+
uploadedEnvVars = await uploadEnvironmentVariablesStep(envVars, {
|
|
232
245
|
integration: config.metadata.integration,
|
|
233
|
-
|
|
246
|
+
session,
|
|
234
247
|
});
|
|
235
248
|
}
|
|
236
|
-
//
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
integration: config.metadata.integration,
|
|
240
|
-
ci: options.ci,
|
|
241
|
-
});
|
|
242
|
-
// Build outro message
|
|
243
|
-
const continueUrl = options.signup
|
|
249
|
+
// MCP installation is handled by McpScreen — no prompt here
|
|
250
|
+
// Build outro data and store it for OutroScreen
|
|
251
|
+
const continueUrl = session.signup
|
|
244
252
|
? `${(0, urls_1.getCloudUrlFromRegion)(cloudRegion)}/products?source=wizard`
|
|
245
253
|
: undefined;
|
|
246
254
|
const changes = [
|
|
@@ -252,27 +260,13 @@ Please report this error to: ${chalk_1.default.cyan('wizard@posthog.com')}`;
|
|
|
252
260
|
? `Uploaded environment variables to your hosting provider`
|
|
253
261
|
: '',
|
|
254
262
|
].filter(Boolean);
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
${chalk_1.default.green('Successfully installed PostHog!')}
|
|
263
|
-
|
|
264
|
-
${chalk_1.default.cyan('What the agent did:')}
|
|
265
|
-
${changes.map((change) => `• ${change}`).join('\n')}
|
|
266
|
-
|
|
267
|
-
${chalk_1.default.yellow('Next steps:')}
|
|
268
|
-
${nextSteps.map((step) => `• ${step}`).join('\n')}
|
|
269
|
-
|
|
270
|
-
Learn more: ${chalk_1.default.cyan(config.metadata.docsUrl)}
|
|
271
|
-
${continueUrl ? `\nContinue onboarding: ${chalk_1.default.cyan(continueUrl)}\n` : ``}
|
|
272
|
-
${chalk_1.default.dim('Note: This wizard uses an LLM agent to analyze and modify your project. Please review the changes made.')}
|
|
273
|
-
|
|
274
|
-
${chalk_1.default.dim(`How did this work for you? Drop us a line: wizard@posthog.com`)}`;
|
|
275
|
-
clack_1.default.outro(outroMessage);
|
|
263
|
+
session.outroData = {
|
|
264
|
+
kind: wizard_session_1.OutroKind.Success,
|
|
265
|
+
changes,
|
|
266
|
+
docsUrl: config.metadata.docsUrl,
|
|
267
|
+
continueUrl,
|
|
268
|
+
};
|
|
269
|
+
(0, ui_1.getUI)().outro(`Successfully installed PostHog!`);
|
|
276
270
|
await analytics_1.analytics.shutdown('success');
|
|
277
271
|
}
|
|
278
272
|
/**
|
|
@@ -291,7 +285,7 @@ Project context:
|
|
|
291
285
|
- PostHog Project ID: ${context.projectId}
|
|
292
286
|
- Framework: ${config.metadata.name} ${context.frameworkVersion}
|
|
293
287
|
- TypeScript: ${context.typescript ? 'Yes' : 'No'}
|
|
294
|
-
- PostHog
|
|
288
|
+
- PostHog public token: ${context.projectApiKey}
|
|
295
289
|
- PostHog Host: ${context.host}
|
|
296
290
|
- Project type: ${config.prompts.projectTypeDetection}
|
|
297
291
|
- Package installation: ${config.prompts.packageInstallation ?? framework_config_1.DEFAULT_PACKAGE_INSTALLATION}${additionalContext}
|
|
@@ -312,15 +306,16 @@ STEP 3: Run the installation command using Bash:
|
|
|
312
306
|
|
|
313
307
|
STEP 4: Load the installed skill's SKILL.md file to understand what references are available.
|
|
314
308
|
|
|
315
|
-
STEP 5: Follow the skill's workflow files in sequence. Look for numbered workflow files in the references (e.g., files with patterns like "1.0-", "1.1-", "1.2-"). Start with the first one and proceed through each step until completion. Each workflow file will tell you what to do and which file comes next. Never directly write PostHog
|
|
309
|
+
STEP 5: Follow the skill's workflow files in sequence. Look for numbered workflow files in the references (e.g., files with patterns like "1.0-", "1.1-", "1.2-"). Start with the first one and proceed through each step until completion. Each workflow file will tell you what to do and which file comes next. Never directly write PostHog tokens directly to code files; always use environment variables.
|
|
316
310
|
|
|
317
311
|
STEP 6: Set up environment variables for PostHog using the wizard-tools MCP server (this runs locally — secret values never leave the machine):
|
|
318
312
|
- Use check_env_keys to see which keys already exist in the project's .env file (e.g. .env.local or .env).
|
|
319
|
-
- Use set_env_values to create or update the PostHog
|
|
320
|
-
- Reference these environment variables in the code files you create instead of hardcoding the
|
|
313
|
+
- Use set_env_values to create or update the PostHog public token and host, using the appropriate environment variable naming convention for ${config.metadata.name}, which you'll find in example code. The tool will also ensure .gitignore coverage. Don't assume the presence of keys means the value is up to date. Write the correct value each time.
|
|
314
|
+
- Reference these environment variables in the code files you create instead of hardcoding the public token and host.
|
|
321
315
|
|
|
322
316
|
Important: Use the detect_package_manager tool (from the wizard-tools MCP server) to determine which package manager the project uses. Do not manually search for lockfiles or config files. Always install packages as a background task. Don't await completion; proceed with other work immediately after starting the installation. You must read a file immediately before attempting to write it, even if you have previously read it; failure to do so will cause a tool failure.
|
|
323
317
|
|
|
318
|
+
|
|
324
319
|
`;
|
|
325
320
|
}
|
|
326
321
|
//# sourceMappingURL=agent-runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../../src/lib/agent-runner.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DEFAULT_PACKAGE_INSTALLATION,\n getWelcomeMessage,\n SPINNER_MESSAGE,\n type FrameworkConfig,\n} from './framework-config';\nimport type { WizardOptions } from '../utils/types';\nimport {\n abort,\n askForAIConsent,\n confirmContinueIfNoOrDirtyGitRepo,\n ensurePackageIsInstalled,\n getOrAskForProjectData,\n getPackageDotJson,\n isUsingTypeScript,\n printWelcome,\n askForCloudRegion,\n} from '../utils/clack-utils';\nimport type { PackageDotJson } from '../utils/package-json';\nimport { analytics } from '../utils/analytics';\nimport { WIZARD_INTERACTION_EVENT_NAME } from './constants';\nimport clack from '../utils/clack';\nimport {\n initializeAgent,\n runAgent,\n AgentSignals,\n AgentErrorType,\n} from './agent-interface';\nimport { getCloudUrlFromRegion } from '../utils/urls';\nimport chalk from 'chalk';\nimport * as semver from 'semver';\nimport {\n addMCPServerToClientsStep,\n uploadEnvironmentVariablesStep,\n} from '../steps';\nimport { checkAnthropicStatusWithPrompt } from '../utils/anthropic-status';\nimport { enableDebugLogs } from '../utils/debug';\nimport { createBenchmarkPipeline } from './middleware/benchmark';\n\n/**\n * Universal agent-powered wizard runner.\n * Handles the complete flow for any framework using PostHog MCP integration.\n */\nexport async function runAgentWizard(\n config: FrameworkConfig,\n options: WizardOptions,\n): Promise<void> {\n if (options.debug) {\n enableDebugLogs();\n }\n\n // Version check\n if (config.detection.minimumVersion && config.detection.getInstalledVersion) {\n const version = await config.detection.getInstalledVersion(options);\n if (version) {\n const coerced = semver.coerce(version);\n if (coerced && semver.lt(coerced, config.detection.minimumVersion)) {\n const docsUrl =\n config.metadata.unsupportedVersionDocsUrl ?? config.metadata.docsUrl;\n clack.log.warn(\n `Sorry: the wizard can't help you with ${config.metadata.name} ${version}. Upgrade to ${config.metadata.name} ${config.detection.minimumVersion} or later, or check out the manual setup guide.`,\n );\n clack.log.info(\n `Setup ${config.metadata.name} manually: ${chalk.cyan(docsUrl)}`,\n );\n clack.outro('PostHog wizard will see you next time!');\n return;\n }\n }\n }\n\n // Setup phase\n printWelcome({ wizardName: getWelcomeMessage(config.metadata.name) });\n\n if (config.metadata.beta) {\n clack.log.info(\n `${chalk.yellow('[BETA]')} The ${\n config.metadata.name\n } wizard is in beta. Questions or feedback? Email ${chalk.cyan(\n 'wizard@posthog.com',\n )}`,\n );\n }\n\n if (config.metadata.preRunNotice) {\n clack.log.warn(config.metadata.preRunNotice);\n }\n\n clack.log.info(\n `We're about to read your project using our LLM gateway.\\n\\n.env* file contents will not leave your machine.\\n\\nOther files will be read and edited to provide a fully-custom PostHog integration.`,\n );\n\n const aiConsent = await askForAIConsent(options);\n if (!aiConsent) {\n await abort(\n `This wizard uses an LLM agent to intelligently modify your project. Please view the docs to set up ${config.metadata.name} manually instead: ${config.metadata.docsUrl}`,\n 0,\n );\n }\n\n // Check Anthropic/Claude service status before proceeding\n const statusOk = await checkAnthropicStatusWithPrompt({ ci: options.ci });\n if (!statusOk) {\n await abort(\n `Please try again later, or set up ${config.metadata.name} manually: ${config.metadata.docsUrl}`,\n 0,\n );\n }\n\n const cloudRegion = options.cloudRegion ?? (await askForCloudRegion());\n const typeScriptDetected = isUsingTypeScript(options);\n\n await confirmContinueIfNoOrDirtyGitRepo(options);\n\n // Framework detection and version\n // Only check package.json for Node.js/JavaScript frameworks\n const usesPackageJson = config.detection.usesPackageJson !== false;\n let packageJson: PackageDotJson | null = null;\n let frameworkVersion: string | undefined;\n\n if (usesPackageJson) {\n packageJson = await getPackageDotJson(options);\n await ensurePackageIsInstalled(\n packageJson,\n config.detection.packageName,\n config.detection.packageDisplayName,\n );\n frameworkVersion = config.detection.getVersion(packageJson);\n } else {\n // For non-Node frameworks (e.g., Django), version is handled differently\n frameworkVersion = config.detection.getVersion(null);\n }\n\n // Set analytics tags for framework version\n if (frameworkVersion && config.detection.getVersionBucket) {\n const versionBucket = config.detection.getVersionBucket(frameworkVersion);\n analytics.setTag(`${config.metadata.integration}-version`, versionBucket);\n }\n\n analytics.capture(WIZARD_INTERACTION_EVENT_NAME, {\n action: 'started agent integration',\n integration: config.metadata.integration,\n });\n\n // Get PostHog credentials\n const { projectApiKey, host, accessToken, projectId } =\n await getOrAskForProjectData({\n ...options,\n cloudRegion,\n });\n\n // Gather framework-specific context (e.g., Next.js router, React Native platform)\n const frameworkContext = config.metadata.gatherContext\n ? await config.metadata.gatherContext(options)\n : {};\n\n // Set analytics tags from framework context\n const contextTags = config.analytics.getTags(frameworkContext);\n Object.entries(contextTags).forEach(([key, value]) => {\n analytics.setTag(key, value);\n });\n\n const integrationPrompt = buildIntegrationPrompt(\n config,\n {\n frameworkVersion: frameworkVersion || 'latest',\n typescript: typeScriptDetected,\n projectApiKey,\n host,\n projectId,\n },\n frameworkContext,\n );\n\n // Initialize and run agent\n const spinner = clack.spinner();\n\n // Determine MCP URL: CLI flag > env var > production default\n // Use EU subdomain for EU users to work around Claude Code's OAuth bug\n // See: https://github.com/anthropics/claude-code/issues/2267\n const mcpUrl = options.localMcp\n ? 'http://localhost:8787/mcp'\n : process.env.MCP_URL ||\n (cloudRegion === 'eu'\n ? 'https://mcp-eu.posthog.com/mcp'\n : 'https://mcp.posthog.com/mcp');\n\n const agent = await initializeAgent(\n {\n workingDirectory: options.installDir,\n posthogMcpUrl: mcpUrl,\n posthogApiKey: accessToken,\n posthogApiHost: host,\n additionalMcpServers: config.metadata.additionalMcpServers,\n detectPackageManager: config.detection.detectPackageManager,\n },\n options,\n );\n\n const middleware = options.benchmark\n ? createBenchmarkPipeline(spinner, options)\n : undefined;\n\n const agentResult = await runAgent(\n agent,\n integrationPrompt,\n options,\n spinner,\n {\n estimatedDurationMinutes: config.ui.estimatedDurationMinutes,\n spinnerMessage: SPINNER_MESSAGE,\n successMessage: config.ui.successMessage,\n errorMessage: 'Integration failed',\n },\n middleware,\n );\n\n // Handle error cases detected in agent output\n if (agentResult.error === AgentErrorType.MCP_MISSING) {\n analytics.captureException(\n new Error('Agent could not access PostHog MCP server'),\n {\n integration: config.metadata.integration,\n error_type: AgentErrorType.MCP_MISSING,\n signal: AgentSignals.ERROR_MCP_MISSING,\n },\n );\n\n const errorMessage = `\n${chalk.red('❌ Could not access the PostHog MCP server')}\n\nThe wizard was unable to connect to the PostHog MCP server.\nThis could be due to a network issue or a configuration problem.\n\nPlease try again, or set up ${\n config.metadata.name\n } manually by following our documentation:\n${chalk.cyan(config.metadata.docsUrl)}`;\n\n clack.outro(errorMessage);\n await analytics.shutdown('error');\n process.exit(1);\n }\n\n if (agentResult.error === AgentErrorType.RESOURCE_MISSING) {\n analytics.captureException(\n new Error('Agent could not access setup resource'),\n {\n integration: config.metadata.integration,\n error_type: AgentErrorType.RESOURCE_MISSING,\n signal: AgentSignals.ERROR_RESOURCE_MISSING,\n },\n );\n\n const errorMessage = `\n${chalk.red('❌ Could not access the setup resource')}\n\nThe wizard could not access the setup resource. This may indicate a version mismatch or a temporary service issue.\n\nPlease try again, or set up ${\n config.metadata.name\n } manually by following our documentation:\n${chalk.cyan(config.metadata.docsUrl)}`;\n\n clack.outro(errorMessage);\n await analytics.shutdown('error');\n process.exit(1);\n }\n\n if (\n agentResult.error === AgentErrorType.RATE_LIMIT ||\n agentResult.error === AgentErrorType.API_ERROR\n ) {\n analytics.capture(WIZARD_INTERACTION_EVENT_NAME, {\n action: 'api error',\n integration: config.metadata.integration,\n error_type: agentResult.error,\n error_message: agentResult.message,\n });\n\n analytics.captureException(new Error(`API error: ${agentResult.message}`), {\n integration: config.metadata.integration,\n error_type: agentResult.error,\n });\n\n const errorMessage = `\n${chalk.red('❌ API Error')}\n\n${chalk.yellow(agentResult.message || 'Unknown error')}\n\nPlease report this error to: ${chalk.cyan('wizard@posthog.com')}`;\n\n clack.outro(errorMessage);\n await analytics.shutdown('error');\n process.exit(1);\n }\n\n // Build environment variables from OAuth credentials\n const envVars = config.environment.getEnvVars(projectApiKey, host);\n\n // Upload environment variables to hosting providers (if configured)\n let uploadedEnvVars: string[] = [];\n if (config.environment.uploadToHosting) {\n uploadedEnvVars = await uploadEnvironmentVariablesStep(envVars, {\n integration: config.metadata.integration,\n options,\n });\n }\n\n // Add MCP server to clients\n await addMCPServerToClientsStep({\n cloudRegion,\n integration: config.metadata.integration,\n ci: options.ci,\n });\n\n // Build outro message\n const continueUrl = options.signup\n ? `${getCloudUrlFromRegion(cloudRegion)}/products?source=wizard`\n : undefined;\n\n const changes = [\n ...config.ui.getOutroChanges(frameworkContext),\n Object.keys(envVars).length > 0\n ? `Added environment variables to .env file`\n : '',\n uploadedEnvVars.length > 0\n ? `Uploaded environment variables to your hosting provider`\n : '',\n ].filter(Boolean);\n\n const nextSteps = [\n ...config.ui.getOutroNextSteps(frameworkContext),\n uploadedEnvVars.length === 0 && config.environment.uploadToHosting\n ? `Upload your Project API key to your hosting provider`\n : '',\n ].filter(Boolean);\n\n const outroMessage = `\n${chalk.green('Successfully installed PostHog!')}\n\n${chalk.cyan('What the agent did:')}\n${changes.map((change) => `• ${change}`).join('\\n')}\n\n${chalk.yellow('Next steps:')}\n${nextSteps.map((step) => `• ${step}`).join('\\n')}\n\nLearn more: ${chalk.cyan(config.metadata.docsUrl)}\n${continueUrl ? `\\nContinue onboarding: ${chalk.cyan(continueUrl)}\\n` : ``}\n${chalk.dim(\n 'Note: This wizard uses an LLM agent to analyze and modify your project. Please review the changes made.',\n)}\n\n${chalk.dim(`How did this work for you? Drop us a line: wizard@posthog.com`)}`;\n\n clack.outro(outroMessage);\n\n await analytics.shutdown('success');\n}\n\n/**\n * Build the integration prompt for the agent.\n */\nfunction buildIntegrationPrompt(\n config: FrameworkConfig,\n context: {\n frameworkVersion: string;\n typescript: boolean;\n projectApiKey: string;\n host: string;\n projectId: number;\n },\n frameworkContext: Record<string, unknown>,\n): string {\n const additionalLines = config.prompts.getAdditionalContextLines\n ? config.prompts.getAdditionalContextLines(frameworkContext)\n : [];\n\n const additionalContext =\n additionalLines.length > 0\n ? '\\n' + additionalLines.map((line) => `- ${line}`).join('\\n')\n : '';\n\n return `You have access to the PostHog MCP server which provides skills to integrate PostHog into this ${\n config.metadata.name\n } project.\n\nProject context:\n- PostHog Project ID: ${context.projectId}\n- Framework: ${config.metadata.name} ${context.frameworkVersion}\n- TypeScript: ${context.typescript ? 'Yes' : 'No'}\n- PostHog API Key: ${context.projectApiKey}\n- PostHog Host: ${context.host}\n- Project type: ${config.prompts.projectTypeDetection}\n- Package installation: ${\n config.prompts.packageInstallation ?? DEFAULT_PACKAGE_INSTALLATION\n }${additionalContext}\n\nInstructions (follow these steps IN ORDER - do not skip or reorder):\n\nSTEP 1: List available skills from the PostHog MCP server using ListMcpResourcesTool. If this tool is not available or you cannot access the MCP server, you must emit: ${\n AgentSignals.ERROR_MCP_MISSING\n } Could not access the PostHog MCP server and halt.\n\n Review the skill descriptions and choose the one that best matches this project's framework and configuration.\n If no suitable skill is found, or you cannot access the MCP server, you emit: ${\n AgentSignals.ERROR_RESOURCE_MISSING\n } Could not find a suitable skill for this project.\n\nSTEP 2: Fetch the chosen skill resource (e.g., posthog://skills/{skill-id}).\n The resource returns a shell command to install the skill.\n\nSTEP 3: Run the installation command using Bash:\n - Execute the EXACT command returned by the resource (do not modify it)\n - This will download and extract the skill to .claude/skills/{skill-id}/\n\nSTEP 4: Load the installed skill's SKILL.md file to understand what references are available.\n\nSTEP 5: Follow the skill's workflow files in sequence. Look for numbered workflow files in the references (e.g., files with patterns like \"1.0-\", \"1.1-\", \"1.2-\"). Start with the first one and proceed through each step until completion. Each workflow file will tell you what to do and which file comes next. Never directly write PostHog keys directly to code files; always use environment variables.\n\nSTEP 6: Set up environment variables for PostHog using the wizard-tools MCP server (this runs locally — secret values never leave the machine):\n - Use check_env_keys to see which keys already exist in the project's .env file (e.g. .env.local or .env).\n - Use set_env_values to create or update the PostHog API key and host, using the appropriate naming convention for ${\n config.metadata.name\n }. The tool will also ensure .gitignore coverage. Don't assume the presence of keys means the value is up to date. Write the correct value each time.\n - Reference these environment variables in the code files you create instead of hardcoding the API key and host.\n\nImportant: Use the detect_package_manager tool (from the wizard-tools MCP server) to determine which package manager the project uses. Do not manually search for lockfiles or config files. Always install packages as a background task. Don't await completion; proceed with other work immediately after starting the installation. You must read a file immediately before attempting to write it, even if you have previously read it; failure to do so will cause a tool failure.\n\n`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../../src/lib/agent-runner.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DEFAULT_PACKAGE_INSTALLATION,\n SPINNER_MESSAGE,\n type FrameworkConfig,\n} from './framework-config';\nimport { type WizardSession, OutroKind } from './wizard-session';\nimport {\n tryGetPackageJson,\n isUsingTypeScript,\n getOrAskForProjectData,\n} from '../utils/setup-utils';\nimport type { PackageDotJson } from '../utils/package-json';\nimport type { WizardOptions } from '../utils/types';\nimport { analytics } from '../utils/analytics';\nimport { getUI } from '../ui';\nimport {\n initializeAgent,\n runAgent,\n AgentSignals,\n AgentErrorType,\n buildWizardMetadata,\n checkClaudeSettingsOverrides,\n backupAndFixClaudeSettings,\n restoreClaudeSettings,\n} from './agent-interface';\nimport { getCloudUrlFromRegion } from '../utils/urls';\nimport chalk from 'chalk';\nimport * as semver from 'semver';\nimport { checkAnthropicStatus } from '../utils/anthropic-status';\nimport { enableDebugLogs } from '../utils/debug';\nimport { createBenchmarkPipeline } from './middleware/benchmark';\nimport { wizardAbort, WizardError } from '../utils/wizard-abort';\n\n/**\n * Build a WizardOptions bag from a WizardSession (for code that still expects WizardOptions).\n */\nfunction sessionToOptions(session: WizardSession): WizardOptions {\n return {\n installDir: session.installDir,\n debug: session.debug,\n forceInstall: session.forceInstall,\n default: false,\n signup: session.signup,\n localMcp: session.localMcp,\n ci: session.ci,\n menu: session.menu,\n benchmark: session.benchmark,\n projectId: session.projectId,\n apiKey: session.apiKey,\n };\n}\n\n/**\n * Universal agent-powered wizard runner.\n * Handles the complete flow for any framework using PostHog MCP integration.\n *\n * All user decisions come from the session — no UI prompts.\n */\nexport async function runAgentWizard(\n config: FrameworkConfig,\n session: WizardSession,\n): Promise<void> {\n if (session.debug) {\n enableDebugLogs();\n }\n\n // Version check\n if (config.detection.minimumVersion && config.detection.getInstalledVersion) {\n const version = await config.detection.getInstalledVersion(\n sessionToOptions(session),\n );\n if (version) {\n const coerced = semver.coerce(version);\n if (coerced && semver.lt(coerced, config.detection.minimumVersion)) {\n const docsUrl =\n config.metadata.unsupportedVersionDocsUrl ?? config.metadata.docsUrl;\n getUI().log.warn(\n `Sorry: the wizard can't help you with ${config.metadata.name} ${version}. Upgrade to ${config.metadata.name} ${config.detection.minimumVersion} or later, or check out the manual setup guide.`,\n );\n getUI().log.info(\n `Setup ${config.metadata.name} manually: ${chalk.cyan(docsUrl)}`,\n );\n getUI().outro('PostHog wizard will see you next time!');\n return;\n }\n }\n }\n\n // Setup phase — informational only, no prompts\n // Beta notice, pre-run notice, and welcome label are all derivable\n // from session.frameworkConfig — IntroScreen reads them directly.\n\n // Check Anthropic/Claude service status (pure — no prompt)\n const statusResult = await checkAnthropicStatus();\n if (statusResult.status === 'down' || statusResult.status === 'degraded') {\n getUI().showServiceStatus({\n description: statusResult.description,\n statusPageUrl: 'https://status.claude.com',\n });\n }\n\n // Check for blocking env overrides in .claude/settings.json before login.\n // These keys block the Wizard from accessing the PostHog LLM Gateway.\n const blockingOverrideKeys = checkClaudeSettingsOverrides(session.installDir);\n if (blockingOverrideKeys.length > 0) {\n await getUI().showSettingsOverride(blockingOverrideKeys, () =>\n backupAndFixClaudeSettings(session.installDir),\n );\n }\n\n // Disclosure text is static — IntroScreen renders it directly.\n\n const typeScriptDetected = isUsingTypeScript({\n installDir: session.installDir,\n });\n session.typescript = typeScriptDetected;\n\n // Framework detection and version\n const usesPackageJson = config.detection.usesPackageJson !== false;\n let packageJson: PackageDotJson | null = null;\n let frameworkVersion: string | undefined;\n\n if (usesPackageJson) {\n packageJson = await tryGetPackageJson({ installDir: session.installDir });\n if (packageJson) {\n // Log warning if package not installed, but continue (agent handles it)\n const { hasPackageInstalled } = await import('../utils/package-json.js');\n if (!hasPackageInstalled(config.detection.packageName, packageJson)) {\n getUI().log.warn(\n `${config.detection.packageDisplayName} does not seem to be installed. Continuing anyway — the agent will handle it.`,\n );\n }\n frameworkVersion = config.detection.getVersion(packageJson);\n } else {\n getUI().log.warn(\n 'Could not find package.json. Continuing anyway — the agent will handle it.',\n );\n }\n } else {\n frameworkVersion = config.detection.getVersion(null);\n }\n\n // Set analytics tags for framework version\n if (frameworkVersion && config.detection.getVersionBucket) {\n const versionBucket = config.detection.getVersionBucket(frameworkVersion);\n analytics.setTag(`${config.metadata.integration}-version`, versionBucket);\n }\n\n analytics.wizardCapture('agent started', {\n integration: config.metadata.integration,\n });\n\n // Get PostHog credentials (region auto-detected from token)\n const { projectApiKey, host, accessToken, projectId, cloudRegion } =\n await getOrAskForProjectData({\n signup: session.signup,\n ci: session.ci,\n apiKey: session.apiKey,\n projectId: session.projectId,\n });\n\n session.credentials = { accessToken, projectApiKey, host, projectId };\n\n // Notify TUI that credentials are available (resolves past AuthScreen)\n getUI().setCredentials(session.credentials);\n\n // Framework context was already gathered by SetupScreen + detection\n const frameworkContext = session.frameworkContext;\n\n // Set analytics tags from framework context\n const contextTags = config.analytics.getTags(frameworkContext);\n Object.entries(contextTags).forEach(([key, value]) => {\n analytics.setTag(key, value);\n });\n\n const integrationPrompt = buildIntegrationPrompt(\n config,\n {\n frameworkVersion: frameworkVersion || 'latest',\n typescript: typeScriptDetected,\n projectApiKey,\n host,\n projectId,\n },\n frameworkContext,\n );\n\n // Initialize and run agent\n const spinner = getUI().spinner();\n\n // Evaluate all feature flags at the start of the run so they can be sent to the LLM gateway\n const wizardFlags = await analytics.getAllFlagsForWizard();\n const wizardMetadata = buildWizardMetadata(wizardFlags);\n\n // Determine MCP URL: CLI flag > env var > production default\n const mcpUrl = session.localMcp\n ? 'http://localhost:8787/mcp'\n : process.env.MCP_URL || 'https://mcp.posthog.com/mcp';\n\n const restoreSettings = () => restoreClaudeSettings(session.installDir);\n getUI().onEnterScreen('outro', restoreSettings);\n getUI().startRun();\n\n const agent = await initializeAgent(\n {\n workingDirectory: session.installDir,\n posthogMcpUrl: mcpUrl,\n posthogApiKey: accessToken,\n posthogApiHost: host,\n additionalMcpServers: config.metadata.additionalMcpServers,\n detectPackageManager: config.detection.detectPackageManager,\n wizardFlags,\n wizardMetadata,\n },\n sessionToOptions(session),\n );\n\n const middleware = session.benchmark\n ? createBenchmarkPipeline(spinner, sessionToOptions(session))\n : undefined;\n\n const agentResult = await runAgent(\n agent,\n integrationPrompt,\n sessionToOptions(session),\n spinner,\n {\n estimatedDurationMinutes: config.ui.estimatedDurationMinutes,\n spinnerMessage: SPINNER_MESSAGE,\n successMessage: config.ui.successMessage,\n errorMessage: 'Integration failed',\n additionalFeatureQueue: session.additionalFeatureQueue,\n },\n middleware,\n );\n\n // Handle error cases detected in agent output\n if (agentResult.error === AgentErrorType.MCP_MISSING) {\n await wizardAbort({\n message: `Could not access the PostHog MCP server\\n\\nThe wizard was unable to connect to the PostHog MCP server.\\nThis could be due to a network issue or a configuration problem.\\n\\nPlease try again, or set up ${config.metadata.name} manually by following our documentation:\\n${config.metadata.docsUrl}`,\n error: new WizardError('Agent could not access PostHog MCP server', {\n integration: config.metadata.integration,\n error_type: AgentErrorType.MCP_MISSING,\n signal: AgentSignals.ERROR_MCP_MISSING,\n }),\n });\n }\n\n if (agentResult.error === AgentErrorType.RESOURCE_MISSING) {\n await wizardAbort({\n message: `Could not access the setup resource\\n\\nThe wizard could not access the setup resource. This may indicate a version mismatch or a temporary service issue.\\n\\nPlease try again, or set up ${config.metadata.name} manually by following our documentation:\\n${config.metadata.docsUrl}`,\n error: new WizardError('Agent could not access setup resource', {\n integration: config.metadata.integration,\n error_type: AgentErrorType.RESOURCE_MISSING,\n signal: AgentSignals.ERROR_RESOURCE_MISSING,\n }),\n });\n }\n\n if (\n agentResult.error === AgentErrorType.RATE_LIMIT ||\n agentResult.error === AgentErrorType.API_ERROR\n ) {\n analytics.wizardCapture('agent api error', {\n integration: config.metadata.integration,\n error_type: agentResult.error,\n error_message: agentResult.message,\n });\n\n await wizardAbort({\n message: `API Error\\n\\n${\n agentResult.message || 'Unknown error'\n }\\n\\nPlease report this error to: wizard@posthog.com`,\n error: new WizardError(`API error: ${agentResult.message}`, {\n integration: config.metadata.integration,\n error_type: agentResult.error,\n }),\n });\n }\n\n // Build environment variables from OAuth credentials\n const envVars = config.environment.getEnvVars(projectApiKey, host);\n\n // Upload environment variables to hosting providers (auto-accept)\n let uploadedEnvVars: string[] = [];\n if (config.environment.uploadToHosting) {\n const { uploadEnvironmentVariablesStep } = await import(\n '../steps/index.js'\n );\n uploadedEnvVars = await uploadEnvironmentVariablesStep(envVars, {\n integration: config.metadata.integration,\n session,\n });\n }\n\n // MCP installation is handled by McpScreen — no prompt here\n\n // Build outro data and store it for OutroScreen\n const continueUrl = session.signup\n ? `${getCloudUrlFromRegion(cloudRegion)}/products?source=wizard`\n : undefined;\n\n const changes = [\n ...config.ui.getOutroChanges(frameworkContext),\n Object.keys(envVars).length > 0\n ? `Added environment variables to .env file`\n : '',\n uploadedEnvVars.length > 0\n ? `Uploaded environment variables to your hosting provider`\n : '',\n ].filter(Boolean);\n\n session.outroData = {\n kind: OutroKind.Success,\n changes,\n docsUrl: config.metadata.docsUrl,\n continueUrl,\n };\n\n getUI().outro(`Successfully installed PostHog!`);\n\n await analytics.shutdown('success');\n}\n\n/**\n * Build the integration prompt for the agent.\n */\nfunction buildIntegrationPrompt(\n config: FrameworkConfig,\n context: {\n frameworkVersion: string;\n typescript: boolean;\n projectApiKey: string;\n host: string;\n projectId: number;\n },\n frameworkContext: Record<string, unknown>,\n): string {\n const additionalLines = config.prompts.getAdditionalContextLines\n ? config.prompts.getAdditionalContextLines(frameworkContext)\n : [];\n\n const additionalContext =\n additionalLines.length > 0\n ? '\\n' + additionalLines.map((line) => `- ${line}`).join('\\n')\n : '';\n\n return `You have access to the PostHog MCP server which provides skills to integrate PostHog into this ${\n config.metadata.name\n } project.\n\nProject context:\n- PostHog Project ID: ${context.projectId}\n- Framework: ${config.metadata.name} ${context.frameworkVersion}\n- TypeScript: ${context.typescript ? 'Yes' : 'No'}\n- PostHog public token: ${context.projectApiKey}\n- PostHog Host: ${context.host}\n- Project type: ${config.prompts.projectTypeDetection}\n- Package installation: ${\n config.prompts.packageInstallation ?? DEFAULT_PACKAGE_INSTALLATION\n }${additionalContext}\n\nInstructions (follow these steps IN ORDER - do not skip or reorder):\n\nSTEP 1: List available skills from the PostHog MCP server using ListMcpResourcesTool. If this tool is not available or you cannot access the MCP server, you must emit: ${\n AgentSignals.ERROR_MCP_MISSING\n } Could not access the PostHog MCP server and halt.\n\n Review the skill descriptions and choose the one that best matches this project's framework and configuration.\n If no suitable skill is found, or you cannot access the MCP server, you emit: ${\n AgentSignals.ERROR_RESOURCE_MISSING\n } Could not find a suitable skill for this project.\n\nSTEP 2: Fetch the chosen skill resource (e.g., posthog://skills/{skill-id}).\n The resource returns a shell command to install the skill.\n\nSTEP 3: Run the installation command using Bash:\n - Execute the EXACT command returned by the resource (do not modify it)\n - This will download and extract the skill to .claude/skills/{skill-id}/\n\nSTEP 4: Load the installed skill's SKILL.md file to understand what references are available.\n\nSTEP 5: Follow the skill's workflow files in sequence. Look for numbered workflow files in the references (e.g., files with patterns like \"1.0-\", \"1.1-\", \"1.2-\"). Start with the first one and proceed through each step until completion. Each workflow file will tell you what to do and which file comes next. Never directly write PostHog tokens directly to code files; always use environment variables.\n\nSTEP 6: Set up environment variables for PostHog using the wizard-tools MCP server (this runs locally — secret values never leave the machine):\n - Use check_env_keys to see which keys already exist in the project's .env file (e.g. .env.local or .env).\n - Use set_env_values to create or update the PostHog public token and host, using the appropriate environment variable naming convention for ${\n config.metadata.name\n }, which you'll find in example code. The tool will also ensure .gitignore coverage. Don't assume the presence of keys means the value is up to date. Write the correct value each time.\n - Reference these environment variables in the code files you create instead of hardcoding the public token and host.\n\nImportant: Use the detect_package_manager tool (from the wizard-tools MCP server) to determine which package manager the project uses. Do not manually search for lockfiles or config files. Always install packages as a background task. Don't await completion; proceed with other work immediately after starting the installation. You must read a file immediately before attempting to write it, even if you have previously read it; failure to do so will cause a tool failure.\n\n\n`;\n}\n"]}
|
package/dist/src/lib/api.d.ts
CHANGED
|
@@ -57,17 +57,17 @@ export declare const ApiProjectSchema: z.ZodObject<{
|
|
|
57
57
|
api_token: z.ZodString;
|
|
58
58
|
name: z.ZodString;
|
|
59
59
|
}, "strip", z.ZodTypeAny, {
|
|
60
|
-
uuid: string;
|
|
61
|
-
name: string;
|
|
62
60
|
id: number;
|
|
63
61
|
organization: string;
|
|
64
|
-
api_token: string;
|
|
65
|
-
}, {
|
|
66
62
|
uuid: string;
|
|
63
|
+
api_token: string;
|
|
67
64
|
name: string;
|
|
65
|
+
}, {
|
|
68
66
|
id: number;
|
|
69
67
|
organization: string;
|
|
68
|
+
uuid: string;
|
|
70
69
|
api_token: string;
|
|
70
|
+
name: string;
|
|
71
71
|
}>;
|
|
72
72
|
export type ApiUser = z.infer<typeof ApiUserSchema>;
|
|
73
73
|
export type ApiProject = z.infer<typeof ApiProjectSchema>;
|
|
@@ -16,6 +16,7 @@ const WIZARD_COMMANDMENTS = [
|
|
|
16
16
|
'Treat feature flags, custom properties, and event names as part of an analytics contract. Prefer reusing existing names and patterns in the project. When you must introduce new ones, make them clear, descriptive, and consistent with existing conventions, and avoid scattering the same flag or property across many unrelated callsites.',
|
|
17
17
|
'Prefer minimal, targeted edits that achieve the requested behavior while preserving existing structure and style. Avoid large refactors, broad reformatting, or unrelated changes unless explicitly requested.',
|
|
18
18
|
'Do not spawn subagents unless explicitly instructed to do so.',
|
|
19
|
+
'Use the TodoWrite tool to track your progress. Create a todo list at the start describing the high-level areas of work, mark each as in_progress when you begin it, and completed when done.',
|
|
19
20
|
].join('\n');
|
|
20
21
|
function getWizardCommandments() {
|
|
21
22
|
return WIZARD_COMMANDMENTS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandments.js","sourceRoot":"","sources":["../../../src/lib/commandments.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"commandments.js","sourceRoot":"","sources":["../../../src/lib/commandments.ts"],"names":[],"mappings":";;AA0BA,sDAEC;AA5BD;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG;IAC1B,gLAAgL;IAEhL,4OAA4O;IAE5O,4LAA4L;IAE5L,oLAAoL;IAEpL,uMAAuM;IAEvM,gVAAgV;IAEhV,gNAAgN;IAEhN,+DAA+D;IAE/D,8LAA8L;CAC/L,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,SAAgB,qBAAqB;IACnC,OAAO,mBAAmB,CAAC;AAC7B,CAAC","sourcesContent":["/**\n * Wizard-wide commandments that are always appended as a system prompt.\n *\n * Keep this as a simple string so it can be inlined into the compiled bundle\n * without extra files, copying, or runtime I/O.\n */\nconst WIZARD_COMMANDMENTS = [\n 'Never hallucinate a PostHog API key, host, or any other secret. Always use the real values that have been configured for this project (for example via environment variables).',\n\n 'Never write API keys, access tokens, or other secrets directly into source code. Always reference environment variables instead, and rely on the wizard-tools MCP server (check_env_keys / set_env_values) to create or update .env files.',\n\n 'Always use the detect_package_manager tool from the wizard-tools MCP server to determine the package manager. Do not guess based on lockfiles or hard-code npm, yarn, pnpm, bun, pip, etc.',\n\n 'When installing packages, start the installation as a background task and then continue with other work. Do not block waiting for installs to finish unless explicitly instructed.',\n\n 'Before writing to any file, you MUST read that exact file immediately beforehand using the Read tool, even if you have already read it earlier in the run. This avoids tool failures and stale edits.',\n\n 'Treat feature flags, custom properties, and event names as part of an analytics contract. Prefer reusing existing names and patterns in the project. When you must introduce new ones, make them clear, descriptive, and consistent with existing conventions, and avoid scattering the same flag or property across many unrelated callsites.',\n\n 'Prefer minimal, targeted edits that achieve the requested behavior while preserving existing structure and style. Avoid large refactors, broad reformatting, or unrelated changes unless explicitly requested.',\n\n 'Do not spawn subagents unless explicitly instructed to do so.',\n\n 'Use the TodoWrite tool to track your progress. Create a todo list at the start describing the high-level areas of work, mark each as in_progress when you begin it, and completed when done.',\n].join('\\n');\n\nexport function getWizardCommandments(): string {\n return WIZARD_COMMANDMENTS;\n}\n"]}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Shared constants for the PostHog wizard.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Detection order matters: put framework-specific integrations BEFORE basic language fallbacks.
|
|
3
6
|
*/
|
|
4
7
|
export declare enum Integration {
|
|
5
8
|
nextjs = "nextjs",
|
|
@@ -19,10 +22,10 @@ export declare enum Integration {
|
|
|
19
22
|
swift = "swift",
|
|
20
23
|
android = "android",
|
|
21
24
|
rails = "rails",
|
|
25
|
+
javascript_web = "javascript_web",
|
|
22
26
|
python = "python",
|
|
23
27
|
ruby = "ruby",
|
|
24
|
-
javascriptNode = "javascript_node"
|
|
25
|
-
javascript_web = "javascript_web"
|
|
28
|
+
javascriptNode = "javascript_node"
|
|
26
29
|
}
|
|
27
30
|
export interface Args {
|
|
28
31
|
debug: boolean;
|
|
@@ -31,16 +34,28 @@ export interface Args {
|
|
|
31
34
|
export declare const IS_DEV: boolean;
|
|
32
35
|
export declare const DEBUG = false;
|
|
33
36
|
export declare const DEFAULT_URL: string;
|
|
34
|
-
export declare const ISSUES_URL = "https://github.com/posthog/wizard/issues";
|
|
35
37
|
export declare const DEFAULT_HOST_URL: string;
|
|
38
|
+
export declare const ISSUES_URL = "https://github.com/posthog/wizard/issues";
|
|
36
39
|
export declare const ANALYTICS_POSTHOG_PUBLIC_PROJECT_WRITE_KEY = "sTMFPsFhdP1Ssg";
|
|
37
40
|
export declare const ANALYTICS_HOST_URL = "https://internal-j.posthog.com";
|
|
38
41
|
export declare const ANALYTICS_TEAM_TAG = "docs-and-wizard";
|
|
39
|
-
export declare const
|
|
42
|
+
export declare const POSTHOG_OAUTH_URL: string;
|
|
43
|
+
export declare const OAUTH_PORT = 8239;
|
|
40
44
|
export declare const POSTHOG_US_CLIENT_ID = "c4Rdw8DIxgtQfA80IiSnGKlNX8QN00cFWF00QQhM";
|
|
41
45
|
export declare const POSTHOG_EU_CLIENT_ID = "bx2C5sZRN03TkdjraCcetvQFPGH6N2Y9vRLkcKEy";
|
|
42
46
|
export declare const POSTHOG_DEV_CLIENT_ID = "DC5uRLVbGI02YQ82grxgnK6Qn12SXWpCqdPb60oZ";
|
|
43
|
-
export declare const
|
|
44
|
-
export declare const
|
|
47
|
+
export declare const POSTHOG_PROXY_CLIENT_ID = "c4Rdw8DIxgtQfA80IiSnGKlNX8QN00cFWF00QQhM";
|
|
48
|
+
export declare const DUMMY_PROJECT_API_KEY = "_YOUR_POSTHOG_PROJECT_API_KEY_";
|
|
45
49
|
export declare const WIZARD_REMARK_EVENT_NAME = "wizard remark";
|
|
46
|
-
|
|
50
|
+
/** Feature flag key whose value selects a variant from WIZARD_VARIANTS. */
|
|
51
|
+
export declare const WIZARD_VARIANT_FLAG_KEY = "wizard-variant";
|
|
52
|
+
/** Variant key -> metadata for wizard run (VARIANT flag selects which entry to use). */
|
|
53
|
+
export declare const WIZARD_VARIANTS: Record<string, Record<string, string>>;
|
|
54
|
+
/** User-Agent for wizard HTTP requests and MCP server identification. */
|
|
55
|
+
export declare const WIZARD_USER_AGENT = "posthog/wizard; version: 2.0.0";
|
|
56
|
+
/** Header prefix for PostHog properties (e.g. X-POSTHOG-PROPERTY-VARIANT). */
|
|
57
|
+
export declare const POSTHOG_PROPERTY_HEADER_PREFIX = "X-POSTHOG-PROPERTY-";
|
|
58
|
+
/** Header prefix for PostHog feature flags. */
|
|
59
|
+
export declare const POSTHOG_FLAG_HEADER_PREFIX = "X-POSTHOG-FLAG-";
|
|
60
|
+
/** Timeout for framework / project detection probes (ms). */
|
|
61
|
+
export declare const DETECTION_TIMEOUT_MS = 10000;
|