@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
package/README.md
CHANGED
|
@@ -42,7 +42,6 @@ The following CLI arguments are available:
|
|
|
42
42
|
| `--help` | Show help | boolean | | | |
|
|
43
43
|
| `--version` | Show version number | boolean | | | |
|
|
44
44
|
| `--debug` | Enable verbose logging | boolean | `false` | | `POSTHOG_WIZARD_DEBUG` |
|
|
45
|
-
| `--region` | PostHog cloud region (when not specified, prompts for selection) | string | | "us", "eu" | `POSTHOG_WIZARD_REGION` |
|
|
46
45
|
| `--default` | Use default options for all prompts | boolean | `true` | | `POSTHOG_WIZARD_DEFAULT` |
|
|
47
46
|
| `--signup` | Create a new PostHog account during setup | boolean | `false` | | `POSTHOG_WIZARD_SIGNUP` |
|
|
48
47
|
| `--integration` | Integration to set up | string | | "nextjs", "astro", "react", "svelte", "react-native", "tanstack-router", "tanstack-start" | |
|
|
@@ -61,7 +60,7 @@ The following CLI arguments are available:
|
|
|
61
60
|
Run the wizard non-interactive executions with `--ci`:
|
|
62
61
|
|
|
63
62
|
```bash
|
|
64
|
-
npx @posthog/wizard --ci --
|
|
63
|
+
npx @posthog/wizard --ci --api-key $POSTHOG_PERSONAL_API_KEY --install-dir .
|
|
65
64
|
```
|
|
66
65
|
|
|
67
66
|
When running in CI mode (`--ci`):
|
|
@@ -76,7 +75,6 @@ The CLI args override environment variables in CI mode.
|
|
|
76
75
|
|
|
77
76
|
### Required Flags for CI Mode
|
|
78
77
|
|
|
79
|
-
- `--region`: Cloud region (`us` or `eu`)
|
|
80
78
|
- `--api-key`: Personal API key (`phx_xxx`) from your [PostHog settings](https://app.posthog.com/settings/user-api-keys)
|
|
81
79
|
- `--install-dir`: Directory to install PostHog in (e.g., `.` for current directory)
|
|
82
80
|
|
|
@@ -199,3 +197,82 @@ To make your version of a tool usable with a one-line `npx` command:
|
|
|
199
197
|
2. Run [`npm publish`](https://docs.npmjs.com/cli/v7/commands/npm-publish) from
|
|
200
198
|
your project directory
|
|
201
199
|
3. Now you can run it with `npx yourpackagename`
|
|
200
|
+
|
|
201
|
+
# Health checks
|
|
202
|
+
|
|
203
|
+
`src/lib/health-checks/` checks external status pages and PostHog-owned
|
|
204
|
+
services before the wizard runs to decide whether it can proceed. The entry
|
|
205
|
+
point is `evaluateWizardReadiness()`, which returns one of three values:
|
|
206
|
+
|
|
207
|
+
| Decision | Meaning |
|
|
208
|
+
| ------------------- | --------------------------------------------------------------- |
|
|
209
|
+
| `yes` | All services healthy — proceed normally. |
|
|
210
|
+
| `yes_with_warnings` | Some services degraded but no critical dependency is down. |
|
|
211
|
+
| `no` | A critical dependency is down or degraded — do not run. |
|
|
212
|
+
|
|
213
|
+
### Module layout
|
|
214
|
+
|
|
215
|
+
| File | Responsibility |
|
|
216
|
+
| --- | --- |
|
|
217
|
+
| `types.ts` | Enums, interfaces (`ServiceHealthStatus`, `AllServicesHealth`, etc.) |
|
|
218
|
+
| `statuspage.ts` | Statuspage.io v2 API helpers + checks for Anthropic, PostHog, GitHub, npm, Cloudflare |
|
|
219
|
+
| `endpoints.ts` | Direct endpoint checks for LLM Gateway (`/_liveness`) and MCP (`/`) |
|
|
220
|
+
| `readiness.ts` | `checkAllExternalServices`, `evaluateWizardReadiness`, readiness config |
|
|
221
|
+
| `index.ts` | Barrel re-export |
|
|
222
|
+
| `testme.md` | Test running instructions and endpoint reference |
|
|
223
|
+
|
|
224
|
+
## What blocks a run
|
|
225
|
+
|
|
226
|
+
The `DEFAULT_WIZARD_READINESS_CONFIG` in `readiness.ts` controls this. It has
|
|
227
|
+
two arrays:
|
|
228
|
+
|
|
229
|
+
- **`downBlocksRun`** — if any of these report status **Down**, readiness is
|
|
230
|
+
**No**.
|
|
231
|
+
- **`degradedBlocksRun`** — if any of these report **Degraded** (or worse),
|
|
232
|
+
readiness is **No**.
|
|
233
|
+
|
|
234
|
+
### Current defaults
|
|
235
|
+
|
|
236
|
+
```ts
|
|
237
|
+
downBlocksRun: ['anthropic', 'posthogOverall', 'npmOverall', 'llmGateway', 'mcp'],
|
|
238
|
+
degradedBlocksRun: ['anthropic'],
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Smoke test helper (`scripts/smoke-test-ci.sh`)
|
|
242
|
+
|
|
243
|
+
This repo includes a helper script to run a full end‑to‑end smoke test of the wizard packaged in a tarball against a real app from [`posthog/wizard-workbench`](https://github.com/PostHog/wizard-workbench). This will catch certain packaging issues that might not be caught by other tests.
|
|
244
|
+
|
|
245
|
+
**Prerequisites**
|
|
246
|
+
|
|
247
|
+
- Point to a `wizard-workbench` checkout either by:
|
|
248
|
+
- Setting `WIZARD_WORKBENCH_ROOT=/absolute/path/to/wizard-workbench`, or
|
|
249
|
+
- Cloning `wizard-workbench` next to this repo (so it lives at `../wizard-workbench`).
|
|
250
|
+
- Set `POSTHOG_PERSONAL_API_KEY` either in your shell or in `../wizard-workbench/.env`.
|
|
251
|
+
- (Optional) Set `POSTHOG_PROJECT_ID` to target a specific PostHog project.
|
|
252
|
+
|
|
253
|
+
**Usage**
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
# Default app: next-js/15-app-router-todo
|
|
257
|
+
./scripts/smoke-test-ci.sh
|
|
258
|
+
|
|
259
|
+
# Specify a different app from wizard-workbench/apps
|
|
260
|
+
./scripts/smoke-test-ci.sh next-js/15-pages-router-saas
|
|
261
|
+
|
|
262
|
+
# With API key (and optional project ID) inline
|
|
263
|
+
POSTHOG_PERSONAL_API_KEY=phx_your_key_here \
|
|
264
|
+
POSTHOG_PROJECT_ID=12345 \
|
|
265
|
+
./scripts/smoke-test-ci.sh next-js/15-pages-router-saas
|
|
266
|
+
|
|
267
|
+
# Pointing at a custom wizard-workbench checkout
|
|
268
|
+
WIZARD_WORKBENCH_ROOT=/path/to/wizard-workbench \
|
|
269
|
+
./scripts/smoke-test-ci.sh
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
The script will:
|
|
273
|
+
|
|
274
|
+
- Build and pack the wizard
|
|
275
|
+
- Copy the selected app into a temp directory
|
|
276
|
+
- Install dependencies for the app
|
|
277
|
+
- Install the packed wizard tarball into an isolated temp project
|
|
278
|
+
- Run `wizard` in `--ci` mode against the copied app and perform basic post‑install checks
|
package/dist/bin.js
CHANGED
|
@@ -9,6 +9,21 @@ const logging_1 = require("./src/utils/logging");
|
|
|
9
9
|
const yargs_1 = __importDefault(require("yargs"));
|
|
10
10
|
const helpers_1 = require("yargs/helpers");
|
|
11
11
|
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
+
const fs_1 = require("fs");
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
const WIZARD_VERSION = (() => {
|
|
15
|
+
// npm/pnpm set this when running via package scripts
|
|
16
|
+
if (process.env.npm_package_version)
|
|
17
|
+
return process.env.npm_package_version;
|
|
18
|
+
// Fallback: read package.json relative to this file
|
|
19
|
+
try {
|
|
20
|
+
const pkg = JSON.parse((0, fs_1.readFileSync)((0, path_1.resolve)((0, path_1.dirname)(__filename), '..', 'package.json'), 'utf-8'));
|
|
21
|
+
return pkg.version ?? 'unknown';
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return 'unknown';
|
|
25
|
+
}
|
|
26
|
+
})();
|
|
12
27
|
const NODE_VERSION_RANGE = '>=18.17.0';
|
|
13
28
|
// Have to run this above the other imports because they are importing clack that
|
|
14
29
|
// has the problematic imports.
|
|
@@ -16,10 +31,10 @@ if (!(0, semver_1.satisfies)(process.version, NODE_VERSION_RANGE)) {
|
|
|
16
31
|
(0, logging_1.red)(`PostHog wizard requires Node.js ${NODE_VERSION_RANGE}. You are using Node.js ${process.version}. Please upgrade your Node.js version.`);
|
|
17
32
|
process.exit(1);
|
|
18
33
|
}
|
|
19
|
-
const mcp_1 = require("./src/mcp");
|
|
20
34
|
const run_1 = require("./src/run");
|
|
21
35
|
const environment_1 = require("./src/utils/environment");
|
|
22
|
-
const
|
|
36
|
+
const ui_1 = require("./src/ui");
|
|
37
|
+
const logging_ui_1 = require("./src/ui/logging-ui");
|
|
23
38
|
if (process.env.NODE_ENV === 'test') {
|
|
24
39
|
void (async () => {
|
|
25
40
|
try {
|
|
@@ -42,11 +57,6 @@ if (process.env.NODE_ENV === 'test') {
|
|
|
42
57
|
describe: 'Enable verbose logging\nenv: POSTHOG_WIZARD_DEBUG',
|
|
43
58
|
type: 'boolean',
|
|
44
59
|
},
|
|
45
|
-
region: {
|
|
46
|
-
describe: 'PostHog cloud region\nenv: POSTHOG_WIZARD_REGION',
|
|
47
|
-
choices: ['us', 'eu'],
|
|
48
|
-
type: 'string',
|
|
49
|
-
},
|
|
50
60
|
default: {
|
|
51
61
|
default: true,
|
|
52
62
|
describe: 'Use default options for all prompts\nenv: POSTHOG_WIZARD_DEFAULT',
|
|
@@ -87,6 +97,11 @@ if (process.env.NODE_ENV === 'test') {
|
|
|
87
97
|
describe: 'Directory to install PostHog in\nenv: POSTHOG_WIZARD_INSTALL_DIR',
|
|
88
98
|
type: 'string',
|
|
89
99
|
},
|
|
100
|
+
playground: {
|
|
101
|
+
default: false,
|
|
102
|
+
describe: 'Launch the TUI primitives playground',
|
|
103
|
+
type: 'boolean',
|
|
104
|
+
},
|
|
90
105
|
integration: {
|
|
91
106
|
describe: 'Integration to set up',
|
|
92
107
|
choices: [
|
|
@@ -115,34 +130,155 @@ if (process.env.NODE_ENV === 'test') {
|
|
|
115
130
|
const options = { ...argv };
|
|
116
131
|
// CI mode validation and TTY check
|
|
117
132
|
if (options.ci) {
|
|
118
|
-
//
|
|
119
|
-
|
|
120
|
-
clack_1.default.intro(chalk_1.default.inverse(`PostHog Wizard`));
|
|
121
|
-
clack_1.default.log.error('CI mode requires --region (us or eu)');
|
|
122
|
-
process.exit(1);
|
|
123
|
-
}
|
|
133
|
+
// Use LoggingUI for CI mode (no dependencies, no prompts)
|
|
134
|
+
(0, ui_1.setUI)(new logging_ui_1.LoggingUI());
|
|
124
135
|
if (!options.apiKey) {
|
|
125
|
-
|
|
126
|
-
|
|
136
|
+
(0, ui_1.getUI)().intro(chalk_1.default.inverse(`PostHog Wizard`));
|
|
137
|
+
(0, ui_1.getUI)().log.error('CI mode requires --api-key (personal API key phx_xxx)');
|
|
127
138
|
process.exit(1);
|
|
128
139
|
}
|
|
129
140
|
if (!options.installDir) {
|
|
130
|
-
|
|
131
|
-
|
|
141
|
+
(0, ui_1.getUI)().intro(chalk_1.default.inverse(`PostHog Wizard`));
|
|
142
|
+
(0, ui_1.getUI)().log.error('CI mode requires --install-dir (directory to install PostHog in)');
|
|
132
143
|
process.exit(1);
|
|
133
144
|
}
|
|
145
|
+
void (0, run_1.runWizard)(options);
|
|
134
146
|
}
|
|
135
147
|
else if ((0, environment_1.isNonInteractiveEnvironment)()) {
|
|
136
|
-
//
|
|
137
|
-
|
|
138
|
-
|
|
148
|
+
// Non-interactive non-CI: error out
|
|
149
|
+
(0, ui_1.getUI)().intro(chalk_1.default.inverse(`PostHog Wizard`));
|
|
150
|
+
(0, ui_1.getUI)().log.error('This installer requires an interactive terminal (TTY) to run.\n' +
|
|
139
151
|
'It appears you are running in a non-interactive environment.\n' +
|
|
140
152
|
'Please run the wizard in an interactive terminal.\n\n' +
|
|
141
153
|
'For CI/CD environments, use --ci mode:\n' +
|
|
142
|
-
' npx @posthog/wizard --ci --
|
|
154
|
+
' npx @posthog/wizard --ci --api-key phx_xxx --install-dir .');
|
|
143
155
|
process.exit(1);
|
|
144
156
|
}
|
|
145
|
-
|
|
157
|
+
else if (options.playground) {
|
|
158
|
+
// Playground mode: launch the TUI primitives playground
|
|
159
|
+
void (async () => {
|
|
160
|
+
const { startPlayground } = await import('./src/ui/tui/playground/start-playground.js');
|
|
161
|
+
startPlayground(WIZARD_VERSION);
|
|
162
|
+
})();
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
// Interactive TTY: launch the Ink TUI
|
|
166
|
+
void (async () => {
|
|
167
|
+
try {
|
|
168
|
+
const { startTUI } = await import('./src/ui/tui/start-tui.js');
|
|
169
|
+
const { buildSession } = await import('./src/lib/wizard-session.js');
|
|
170
|
+
const tui = startTUI(WIZARD_VERSION);
|
|
171
|
+
// Build session from CLI args and attach to store
|
|
172
|
+
const session = buildSession({
|
|
173
|
+
debug: options.debug,
|
|
174
|
+
forceInstall: options.forceInstall,
|
|
175
|
+
installDir: options.installDir,
|
|
176
|
+
ci: false,
|
|
177
|
+
signup: options.signup,
|
|
178
|
+
localMcp: options.localMcp,
|
|
179
|
+
apiKey: options.apiKey,
|
|
180
|
+
menu: options.menu,
|
|
181
|
+
integration: options.integration,
|
|
182
|
+
benchmark: options.benchmark,
|
|
183
|
+
projectId: options.projectId,
|
|
184
|
+
});
|
|
185
|
+
tui.store.session = session;
|
|
186
|
+
// Detect framework while IntroScreen shows its spinner.
|
|
187
|
+
// Runs concurrently — IntroScreen reacts when detection completes.
|
|
188
|
+
const { FRAMEWORK_REGISTRY } = await import('./src/lib/registry.js');
|
|
189
|
+
const { detectIntegration } = await import('./src/run.js');
|
|
190
|
+
const installDir = session.installDir ?? process.cwd();
|
|
191
|
+
const { DETECTION_TIMEOUT_MS } = await import('./src/lib/constants.js');
|
|
192
|
+
const detectedIntegration = await Promise.race([
|
|
193
|
+
detectIntegration(installDir),
|
|
194
|
+
new Promise((resolve) => setTimeout(() => resolve(undefined), DETECTION_TIMEOUT_MS)),
|
|
195
|
+
]);
|
|
196
|
+
if (detectedIntegration) {
|
|
197
|
+
const config = FRAMEWORK_REGISTRY[detectedIntegration];
|
|
198
|
+
// Run gatherContext for the friendly variant label
|
|
199
|
+
if (config.metadata.gatherContext) {
|
|
200
|
+
try {
|
|
201
|
+
const context = await Promise.race([
|
|
202
|
+
config.metadata.gatherContext({
|
|
203
|
+
installDir,
|
|
204
|
+
debug: session.debug,
|
|
205
|
+
forceInstall: session.forceInstall,
|
|
206
|
+
default: false,
|
|
207
|
+
signup: session.signup,
|
|
208
|
+
localMcp: session.localMcp,
|
|
209
|
+
ci: session.ci,
|
|
210
|
+
menu: session.menu,
|
|
211
|
+
benchmark: session.benchmark,
|
|
212
|
+
}),
|
|
213
|
+
new Promise((resolve) => setTimeout(() => resolve({}), DETECTION_TIMEOUT_MS)),
|
|
214
|
+
]);
|
|
215
|
+
for (const [key, value] of Object.entries(context)) {
|
|
216
|
+
if (!(key in session.frameworkContext)) {
|
|
217
|
+
tui.store.setFrameworkContext(key, value);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
// Detection failed — will show generic name
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
tui.store.setFrameworkConfig(detectedIntegration, config);
|
|
226
|
+
if (!session.detectedFrameworkLabel) {
|
|
227
|
+
tui.store.setDetectedFramework(config.metadata.name);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// Feature discovery — deterministic scan of package.json deps
|
|
231
|
+
try {
|
|
232
|
+
const { readFileSync } = await import('fs');
|
|
233
|
+
const pkgPath = require('path').join(installDir, 'package.json');
|
|
234
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
235
|
+
const allDeps = {
|
|
236
|
+
...pkg.dependencies,
|
|
237
|
+
...pkg.devDependencies,
|
|
238
|
+
};
|
|
239
|
+
const depNames = Object.keys(allDeps);
|
|
240
|
+
const { DiscoveredFeature } = await import('./src/lib/wizard-session.js');
|
|
241
|
+
if (depNames.some((d) => ['stripe', '@stripe/stripe-js'].includes(d))) {
|
|
242
|
+
tui.store.addDiscoveredFeature(DiscoveredFeature.Stripe);
|
|
243
|
+
}
|
|
244
|
+
// LLM SDK detection — sourced from PostHog LLM analytics skill
|
|
245
|
+
const LLM_PACKAGES = [
|
|
246
|
+
'openai',
|
|
247
|
+
'@anthropic-ai/sdk',
|
|
248
|
+
'ai',
|
|
249
|
+
'@ai-sdk/openai',
|
|
250
|
+
'langchain',
|
|
251
|
+
'@langchain/openai',
|
|
252
|
+
'@langchain/langgraph',
|
|
253
|
+
'@google/generative-ai',
|
|
254
|
+
'@google/genai',
|
|
255
|
+
'@instructor-ai/instructor',
|
|
256
|
+
'@mastra/core',
|
|
257
|
+
'portkey-ai',
|
|
258
|
+
];
|
|
259
|
+
if (depNames.some((d) => LLM_PACKAGES.includes(d))) {
|
|
260
|
+
tui.store.addDiscoveredFeature(DiscoveredFeature.LLM);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
// No package.json or parse error — skip feature discovery
|
|
265
|
+
}
|
|
266
|
+
// Signal detection is done — IntroScreen shows picker or results
|
|
267
|
+
tui.store.setDetectionComplete();
|
|
268
|
+
// Wait for IntroScreen confirmation
|
|
269
|
+
await tui.waitForSetup();
|
|
270
|
+
await (0, run_1.runWizard)(options, tui.store.session);
|
|
271
|
+
// Keep the outro screen visible — let process.exit() handle cleanup
|
|
272
|
+
}
|
|
273
|
+
catch (err) {
|
|
274
|
+
// TUI unavailable (e.g., in test environment) — continue with default UI
|
|
275
|
+
if (process.env.DEBUG || process.env.POSTHOG_WIZARD_DEBUG) {
|
|
276
|
+
console.error('TUI init failed:', err); // eslint-disable-line no-console
|
|
277
|
+
}
|
|
278
|
+
await (0, run_1.runWizard)(options);
|
|
279
|
+
}
|
|
280
|
+
})();
|
|
281
|
+
}
|
|
146
282
|
})
|
|
147
283
|
.command('mcp <command>', 'MCP server management commands', (yargs) => {
|
|
148
284
|
return yargs
|
|
@@ -156,7 +292,27 @@ if (process.env.NODE_ENV === 'test') {
|
|
|
156
292
|
});
|
|
157
293
|
}, (argv) => {
|
|
158
294
|
const options = { ...argv };
|
|
159
|
-
void (
|
|
295
|
+
void (async () => {
|
|
296
|
+
try {
|
|
297
|
+
const { startTUI } = await import('./src/ui/tui/start-tui.js');
|
|
298
|
+
const { buildSession } = await import('./src/lib/wizard-session.js');
|
|
299
|
+
const { Flow } = await import('./src/ui/tui/router.js');
|
|
300
|
+
const tui = startTUI(WIZARD_VERSION, Flow.McpAdd);
|
|
301
|
+
const session = buildSession({
|
|
302
|
+
debug: options.debug,
|
|
303
|
+
localMcp: options.local,
|
|
304
|
+
});
|
|
305
|
+
tui.store.session = session;
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
// TUI unavailable — fallback to logging
|
|
309
|
+
(0, ui_1.setUI)(new logging_ui_1.LoggingUI());
|
|
310
|
+
const { addMCPServerToClientsStep } = await import('./src/steps/add-mcp-server-to-clients/index.js');
|
|
311
|
+
await addMCPServerToClientsStep({
|
|
312
|
+
local: options.local,
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
})();
|
|
160
316
|
})
|
|
161
317
|
.command('remove', 'Remove PostHog MCP server from supported clients', (yargs) => {
|
|
162
318
|
return yargs.options({
|
|
@@ -168,7 +324,27 @@ if (process.env.NODE_ENV === 'test') {
|
|
|
168
324
|
});
|
|
169
325
|
}, (argv) => {
|
|
170
326
|
const options = { ...argv };
|
|
171
|
-
void (
|
|
327
|
+
void (async () => {
|
|
328
|
+
try {
|
|
329
|
+
const { startTUI } = await import('./src/ui/tui/start-tui.js');
|
|
330
|
+
const { buildSession } = await import('./src/lib/wizard-session.js');
|
|
331
|
+
const { Flow } = await import('./src/ui/tui/router.js');
|
|
332
|
+
const tui = startTUI(WIZARD_VERSION, Flow.McpRemove);
|
|
333
|
+
const session = buildSession({
|
|
334
|
+
debug: options.debug,
|
|
335
|
+
localMcp: options.local,
|
|
336
|
+
});
|
|
337
|
+
tui.store.session = session;
|
|
338
|
+
}
|
|
339
|
+
catch {
|
|
340
|
+
// TUI unavailable — fallback to logging
|
|
341
|
+
(0, ui_1.setUI)(new logging_ui_1.LoggingUI());
|
|
342
|
+
const { removeMCPServerFromClientsStep } = await import('./src/steps/add-mcp-server-to-clients/index.js');
|
|
343
|
+
await removeMCPServerFromClientsStep({
|
|
344
|
+
local: options.local,
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
})();
|
|
172
348
|
})
|
|
173
349
|
.demandCommand(1, 'You must specify a subcommand (add or remove)')
|
|
174
350
|
.help();
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../bin.ts"],"names":[],"mappings":";;;;;;AACA,mCAAmC;AACnC,iDAA0C;AAE1C,kDAA0B;AAC1B,2CAAwC;AACxC,kDAA0B;AAE1B,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAEvC,iFAAiF;AACjF,+BAA+B;AAC/B,IAAI,CAAC,IAAA,kBAAS,EAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;IACpD,IAAA,aAAG,EACD,mCAAmC,kBAAkB,2BAA2B,OAAO,CAAC,OAAO,wCAAwC,CACxI,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,mCAAwD;AAExD,mCAAsC;AACtC,yDAAsE;AACtE,8DAAsC;AAEtC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;IACpC,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;YAC/D,MAAM,CAAC,MAAM,CAAC;gBACZ,kBAAkB,EAAE,QAAQ;aAC7B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mEAAmE;QACrE,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAED,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB,GAAG,CAAC,gBAAgB,CAAC;IACtB,iBAAiB;KAChB,OAAO,CAAC;IACP,KAAK,EAAE;QACL,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,mDAAmD;QAC7D,IAAI,EAAE,SAAS;KAChB;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,kDAAkD;QAC5D,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QACrB,IAAI,EAAE,QAAQ;KACf;IACD,OAAO,EAAE;QACP,OAAO,EAAE,IAAI;QACb,QAAQ,EACN,kEAAkE;QACpE,IAAI,EAAE,SAAS;KAChB;IACD,MAAM,EAAE;QACN,OAAO,EAAE,KAAK;QACd,QAAQ,EACN,uEAAuE;QACzE,IAAI,EAAE,SAAS;KAChB;IACD,WAAW,EAAE;QACX,OAAO,EAAE,KAAK;QACd,QAAQ,EACN,kFAAkF;QACpF,IAAI,EAAE,SAAS;KAChB;IACD,EAAE,EAAE;QACF,OAAO,EAAE,KAAK;QACd,QAAQ,EACN,sEAAsE;QACxE,IAAI,EAAE,SAAS;KAChB;IACD,SAAS,EAAE;QACT,QAAQ,EACN,oFAAoF;QACtF,IAAI,EAAE,QAAQ;KACf;IACD,YAAY,EAAE;QACZ,QAAQ,EACN,wHAAwH;QAC1H,IAAI,EAAE,QAAQ;KACf;CACF,CAAC;KACD,OAAO,CACN,CAAC,IAAI,CAAC,EACN,8BAA8B,EAC9B,CAAC,KAAK,EAAE,EAAE;IACR,OAAO,KAAK,CAAC,OAAO,CAAC;QACnB,eAAe,EAAE;YACf,OAAO,EAAE,KAAK;YACd,QAAQ,EACN,+FAA+F;YACjG,IAAI,EAAE,SAAS;SAChB;QACD,aAAa,EAAE;YACb,QAAQ,EACN,kEAAkE;YACpE,IAAI,EAAE,QAAQ;SACf;QACD,WAAW,EAAE;YACX,QAAQ,EAAE,uBAAuB;YACjC,OAAO,EAAE;gBACP,QAAQ;gBACR,OAAO;gBACP,OAAO;gBACP,QAAQ;gBACR,cAAc;gBACd,iBAAiB;gBACjB,gBAAgB;aACjB;YACD,IAAI,EAAE,QAAQ;SACf;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK;YACd,QAAQ,EACN,gGAAgG;YAClG,IAAI,EAAE,SAAS;SAChB;QACD,SAAS,EAAE;YACT,OAAO,EAAE,KAAK;YACd,QAAQ,EACN,oFAAoF;YACtF,IAAI,EAAE,SAAS;SAChB;KACF,CAAC,CAAC;AACL,CAAC,EACD,CAAC,IAAI,EAAE,EAAE;IACP,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAE5B,mCAAmC;IACnC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACf,6BAA6B;QAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,eAAK,CAAC,KAAK,CAAC,eAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC7C,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,eAAK,CAAC,KAAK,CAAC,eAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC7C,eAAK,CAAC,GAAG,CAAC,KAAK,CACb,uDAAuD,CACxD,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,eAAK,CAAC,KAAK,CAAC,eAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC7C,eAAK,CAAC,GAAG,CAAC,KAAK,CACb,kEAAkE,CACnE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,IAAI,IAAA,yCAA2B,GAAE,EAAE,CAAC;QACzC,qCAAqC;QACrC,eAAK,CAAC,KAAK,CAAC,eAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC7C,eAAK,CAAC,GAAG,CAAC,KAAK,CACb,iEAAiE;YAC/D,gEAAgE;YAChE,uDAAuD;YACvD,0CAA0C;YAC1C,0DAA0D,CAC7D,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,IAAA,eAAS,EAAC,OAAqD,CAAC,CAAC;AACxE,CAAC,CACF;KACA,OAAO,CAAC,eAAe,EAAE,gCAAgC,EAAE,CAAC,KAAK,EAAE,EAAE;IACpE,OAAO,KAAK;SACT,OAAO,CACN,KAAK,EACL,iDAAiD,EACjD,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,EAAE;gBACL,OAAO,EAAE,KAAK;gBACd,QAAQ,EACN,0DAA0D;gBAC5D,IAAI,EAAE,SAAS;aAChB;SACF,CAAC,CAAC;IACL,CAAC,EACD,CAAC,IAAI,EAAE,EAAE;QACP,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAC5B,KAAK,IAAA,mBAAa,EAChB,OAKC,CACF,CAAC;IACJ,CAAC,CACF;SACA,OAAO,CACN,QAAQ,EACR,kDAAkD,EAClD,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,EAAE;gBACL,OAAO,EAAE,KAAK;gBACd,QAAQ,EACN,6DAA6D;gBAC/D,IAAI,EAAE,SAAS;aAChB;SACF,CAAC,CAAC;IACL,CAAC,EACD,CAAC,IAAI,EAAE,EAAE;QACP,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAC5B,KAAK,IAAA,kBAAY,EAAC,OAA8B,CAAC,CAAC;IACpD,CAAC,CACF;SACA,aAAa,CAAC,CAAC,EAAE,+CAA+C,CAAC;SACjE,IAAI,EAAE,CAAC;AACZ,CAAC,CAAC;KACD,IAAI,EAAE;KACN,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;KAClB,OAAO,EAAE;KACT,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC;KACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,eAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC","sourcesContent":["#!/usr/bin/env node\nimport { satisfies } from 'semver';\nimport { red } from './src/utils/logging';\n\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport chalk from 'chalk';\n\nconst NODE_VERSION_RANGE = '>=18.17.0';\n\n// Have to run this above the other imports because they are importing clack that\n// has the problematic imports.\nif (!satisfies(process.version, NODE_VERSION_RANGE)) {\n red(\n `PostHog wizard requires Node.js ${NODE_VERSION_RANGE}. You are using Node.js ${process.version}. Please upgrade your Node.js version.`,\n );\n process.exit(1);\n}\n\nimport { runMCPInstall, runMCPRemove } from './src/mcp';\nimport type { CloudRegion } from './src/utils/types';\nimport { runWizard } from './src/run';\nimport { isNonInteractiveEnvironment } from './src/utils/environment';\nimport clack from './src/utils/clack';\n\nif (process.env.NODE_ENV === 'test') {\n void (async () => {\n try {\n const { server } = await import('./e2e-tests/mocks/server.js');\n server.listen({\n onUnhandledRequest: 'bypass',\n });\n } catch (error) {\n // Mock server import failed - this can happen during non-E2E tests\n }\n })();\n}\n\nyargs(hideBin(process.argv))\n .env('POSTHOG_WIZARD')\n // global options\n .options({\n debug: {\n default: false,\n describe: 'Enable verbose logging\\nenv: POSTHOG_WIZARD_DEBUG',\n type: 'boolean',\n },\n region: {\n describe: 'PostHog cloud region\\nenv: POSTHOG_WIZARD_REGION',\n choices: ['us', 'eu'],\n type: 'string',\n },\n default: {\n default: true,\n describe:\n 'Use default options for all prompts\\nenv: POSTHOG_WIZARD_DEFAULT',\n type: 'boolean',\n },\n signup: {\n default: false,\n describe:\n 'Create a new PostHog account during setup\\nenv: POSTHOG_WIZARD_SIGNUP',\n type: 'boolean',\n },\n 'local-mcp': {\n default: false,\n describe:\n 'Use local MCP server at http://localhost:8787/mcp\\nenv: POSTHOG_WIZARD_LOCAL_MCP',\n type: 'boolean',\n },\n ci: {\n default: false,\n describe:\n 'Enable CI mode for non-interactive execution\\nenv: POSTHOG_WIZARD_CI',\n type: 'boolean',\n },\n 'api-key': {\n describe:\n 'PostHog personal API key (phx_xxx) for authentication\\nenv: POSTHOG_WIZARD_API_KEY',\n type: 'string',\n },\n 'project-id': {\n describe:\n 'PostHog project ID to use (optional; when not set, uses default from API key or OAuth)\\nenv: POSTHOG_WIZARD_PROJECT_ID',\n type: 'string',\n },\n })\n .command(\n ['$0'],\n 'Run the PostHog setup wizard',\n (yargs) => {\n return yargs.options({\n 'force-install': {\n default: false,\n describe:\n 'Force install packages even if peer dependency checks fail\\nenv: POSTHOG_WIZARD_FORCE_INSTALL',\n type: 'boolean',\n },\n 'install-dir': {\n describe:\n 'Directory to install PostHog in\\nenv: POSTHOG_WIZARD_INSTALL_DIR',\n type: 'string',\n },\n integration: {\n describe: 'Integration to set up',\n choices: [\n 'nextjs',\n 'astro',\n 'react',\n 'svelte',\n 'react-native',\n 'tanstack-router',\n 'tanstack-start',\n ],\n type: 'string',\n },\n menu: {\n default: false,\n describe:\n 'Show menu for manual integration selection instead of auto-detecting\\nenv: POSTHOG_WIZARD_MENU',\n type: 'boolean',\n },\n benchmark: {\n default: false,\n describe:\n 'Run in benchmark mode with per-phase token tracking\\nenv: POSTHOG_WIZARD_BENCHMARK',\n type: 'boolean',\n },\n });\n },\n (argv) => {\n const options = { ...argv };\n\n // CI mode validation and TTY check\n if (options.ci) {\n // Validate required CI flags\n if (!options.region) {\n clack.intro(chalk.inverse(`PostHog Wizard`));\n clack.log.error('CI mode requires --region (us or eu)');\n process.exit(1);\n }\n if (!options.apiKey) {\n clack.intro(chalk.inverse(`PostHog Wizard`));\n clack.log.error(\n 'CI mode requires --api-key (personal API key phx_xxx)',\n );\n process.exit(1);\n }\n if (!options.installDir) {\n clack.intro(chalk.inverse(`PostHog Wizard`));\n clack.log.error(\n 'CI mode requires --install-dir (directory to install PostHog in)',\n );\n process.exit(1);\n }\n } else if (isNonInteractiveEnvironment()) {\n // Original TTY error for non-CI mode\n clack.intro(chalk.inverse(`PostHog Wizard`));\n clack.log.error(\n 'This installer requires an interactive terminal (TTY) to run.\\n' +\n 'It appears you are running in a non-interactive environment.\\n' +\n 'Please run the wizard in an interactive terminal.\\n\\n' +\n 'For CI/CD environments, use --ci mode:\\n' +\n ' npx @posthog/wizard --ci --region us --api-key phx_xxx',\n );\n process.exit(1);\n }\n\n void runWizard(options as unknown as Parameters<typeof runWizard>[0]);\n },\n )\n .command('mcp <command>', 'MCP server management commands', (yargs) => {\n return yargs\n .command(\n 'add',\n 'Install PostHog MCP server to supported clients',\n (yargs) => {\n return yargs.options({\n local: {\n default: false,\n describe:\n 'Add local development MCP server (http://localhost:8787)',\n type: 'boolean',\n },\n });\n },\n (argv) => {\n const options = { ...argv };\n void runMCPInstall(\n options as unknown as {\n signup: boolean;\n region?: CloudRegion;\n local?: boolean;\n debug?: boolean;\n },\n );\n },\n )\n .command(\n 'remove',\n 'Remove PostHog MCP server from supported clients',\n (yargs) => {\n return yargs.options({\n local: {\n default: false,\n describe:\n 'Remove local development MCP server (http://localhost:8787)',\n type: 'boolean',\n },\n });\n },\n (argv) => {\n const options = { ...argv };\n void runMCPRemove(options as { local?: boolean });\n },\n )\n .demandCommand(1, 'You must specify a subcommand (add or remove)')\n .help();\n })\n .help()\n .alias('help', 'h')\n .version()\n .alias('version', 'v')\n .wrap(process.stdout.isTTY ? yargs.terminalWidth() : 80).argv;\n"]}
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../bin.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { satisfies } from 'semver';\nimport { red } from './src/utils/logging';\n\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport chalk from 'chalk';\n\nimport { readFileSync } from 'fs';\nimport { resolve, dirname } from 'path';\n\nconst WIZARD_VERSION = (() => {\n // npm/pnpm set this when running via package scripts\n if (process.env.npm_package_version) return process.env.npm_package_version;\n // Fallback: read package.json relative to this file\n try {\n const pkg = JSON.parse(\n readFileSync(resolve(dirname(__filename), '..', 'package.json'), 'utf-8'),\n );\n return pkg.version ?? 'unknown';\n } catch {\n return 'unknown';\n }\n})();\n\nconst NODE_VERSION_RANGE = '>=18.17.0';\n\n// Have to run this above the other imports because they are importing clack that\n// has the problematic imports.\nif (!satisfies(process.version, NODE_VERSION_RANGE)) {\n red(\n `PostHog wizard requires Node.js ${NODE_VERSION_RANGE}. You are using Node.js ${process.version}. Please upgrade your Node.js version.`,\n );\n process.exit(1);\n}\n\nimport { runWizard } from './src/run';\nimport { isNonInteractiveEnvironment } from './src/utils/environment';\nimport { getUI, setUI } from './src/ui';\nimport { LoggingUI } from './src/ui/logging-ui';\n\nif (process.env.NODE_ENV === 'test') {\n void (async () => {\n try {\n const { server } = await import('./e2e-tests/mocks/server.js');\n server.listen({\n onUnhandledRequest: 'bypass',\n });\n } catch (error) {\n // Mock server import failed - this can happen during non-E2E tests\n }\n })();\n}\n\nyargs(hideBin(process.argv))\n .env('POSTHOG_WIZARD')\n // global options\n .options({\n debug: {\n default: false,\n describe: 'Enable verbose logging\\nenv: POSTHOG_WIZARD_DEBUG',\n type: 'boolean',\n },\n default: {\n default: true,\n describe:\n 'Use default options for all prompts\\nenv: POSTHOG_WIZARD_DEFAULT',\n type: 'boolean',\n },\n signup: {\n default: false,\n describe:\n 'Create a new PostHog account during setup\\nenv: POSTHOG_WIZARD_SIGNUP',\n type: 'boolean',\n },\n 'local-mcp': {\n default: false,\n describe:\n 'Use local MCP server at http://localhost:8787/mcp\\nenv: POSTHOG_WIZARD_LOCAL_MCP',\n type: 'boolean',\n },\n ci: {\n default: false,\n describe:\n 'Enable CI mode for non-interactive execution\\nenv: POSTHOG_WIZARD_CI',\n type: 'boolean',\n },\n 'api-key': {\n describe:\n 'PostHog personal API key (phx_xxx) for authentication\\nenv: POSTHOG_WIZARD_API_KEY',\n type: 'string',\n },\n 'project-id': {\n describe:\n 'PostHog project ID to use (optional; when not set, uses default from API key or OAuth)\\nenv: POSTHOG_WIZARD_PROJECT_ID',\n type: 'string',\n },\n })\n .command(\n ['$0'],\n 'Run the PostHog setup wizard',\n (yargs) => {\n return yargs.options({\n 'force-install': {\n default: false,\n describe:\n 'Force install packages even if peer dependency checks fail\\nenv: POSTHOG_WIZARD_FORCE_INSTALL',\n type: 'boolean',\n },\n 'install-dir': {\n describe:\n 'Directory to install PostHog in\\nenv: POSTHOG_WIZARD_INSTALL_DIR',\n type: 'string',\n },\n playground: {\n default: false,\n describe: 'Launch the TUI primitives playground',\n type: 'boolean',\n },\n integration: {\n describe: 'Integration to set up',\n choices: [\n 'nextjs',\n 'astro',\n 'react',\n 'svelte',\n 'react-native',\n 'tanstack-router',\n 'tanstack-start',\n ],\n type: 'string',\n },\n menu: {\n default: false,\n describe:\n 'Show menu for manual integration selection instead of auto-detecting\\nenv: POSTHOG_WIZARD_MENU',\n type: 'boolean',\n },\n benchmark: {\n default: false,\n describe:\n 'Run in benchmark mode with per-phase token tracking\\nenv: POSTHOG_WIZARD_BENCHMARK',\n type: 'boolean',\n },\n });\n },\n (argv) => {\n const options = { ...argv };\n\n // CI mode validation and TTY check\n if (options.ci) {\n // Use LoggingUI for CI mode (no dependencies, no prompts)\n setUI(new LoggingUI());\n if (!options.apiKey) {\n getUI().intro(chalk.inverse(`PostHog Wizard`));\n getUI().log.error(\n 'CI mode requires --api-key (personal API key phx_xxx)',\n );\n process.exit(1);\n }\n if (!options.installDir) {\n getUI().intro(chalk.inverse(`PostHog Wizard`));\n getUI().log.error(\n 'CI mode requires --install-dir (directory to install PostHog in)',\n );\n process.exit(1);\n }\n\n void runWizard(options as Parameters<typeof runWizard>[0]);\n } else if (isNonInteractiveEnvironment()) {\n // Non-interactive non-CI: error out\n getUI().intro(chalk.inverse(`PostHog Wizard`));\n getUI().log.error(\n 'This installer requires an interactive terminal (TTY) to run.\\n' +\n 'It appears you are running in a non-interactive environment.\\n' +\n 'Please run the wizard in an interactive terminal.\\n\\n' +\n 'For CI/CD environments, use --ci mode:\\n' +\n ' npx @posthog/wizard --ci --api-key phx_xxx --install-dir .',\n );\n process.exit(1);\n } else if (options.playground) {\n // Playground mode: launch the TUI primitives playground\n void (async () => {\n const { startPlayground } = await import(\n './src/ui/tui/playground/start-playground.js'\n );\n startPlayground(WIZARD_VERSION);\n })();\n } else {\n // Interactive TTY: launch the Ink TUI\n void (async () => {\n try {\n const { startTUI } = await import('./src/ui/tui/start-tui.js');\n const { buildSession } = await import(\n './src/lib/wizard-session.js'\n );\n\n const tui = startTUI(WIZARD_VERSION);\n\n // Build session from CLI args and attach to store\n const session = buildSession({\n debug: options.debug as boolean | undefined,\n forceInstall: options.forceInstall as boolean | undefined,\n installDir: options.installDir as string | undefined,\n ci: false,\n signup: options.signup as boolean | undefined,\n localMcp: options.localMcp as boolean | undefined,\n apiKey: options.apiKey as string | undefined,\n menu: options.menu as boolean | undefined,\n integration: options.integration as Parameters<\n typeof buildSession\n >[0]['integration'],\n benchmark: options.benchmark as boolean | undefined,\n projectId: options.projectId as string | undefined,\n });\n tui.store.session = session;\n\n // Detect framework while IntroScreen shows its spinner.\n // Runs concurrently — IntroScreen reacts when detection completes.\n const { FRAMEWORK_REGISTRY } = await import(\n './src/lib/registry.js'\n );\n const { detectIntegration } = await import('./src/run.js');\n const installDir = session.installDir ?? process.cwd();\n\n const { DETECTION_TIMEOUT_MS } = await import(\n './src/lib/constants.js'\n );\n const detectedIntegration = await Promise.race([\n detectIntegration(installDir),\n new Promise<undefined>((resolve) =>\n setTimeout(() => resolve(undefined), DETECTION_TIMEOUT_MS),\n ),\n ]);\n\n if (detectedIntegration) {\n const config = FRAMEWORK_REGISTRY[detectedIntegration];\n\n // Run gatherContext for the friendly variant label\n if (config.metadata.gatherContext) {\n try {\n const context = await Promise.race([\n config.metadata.gatherContext({\n 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 }),\n new Promise<Record<string, never>>((resolve) =>\n setTimeout(() => resolve({}), DETECTION_TIMEOUT_MS),\n ),\n ]);\n for (const [key, value] of Object.entries(context)) {\n if (!(key in session.frameworkContext)) {\n tui.store.setFrameworkContext(key, value);\n }\n }\n } catch {\n // Detection failed — will show generic name\n }\n }\n\n tui.store.setFrameworkConfig(detectedIntegration, config);\n\n if (!session.detectedFrameworkLabel) {\n tui.store.setDetectedFramework(config.metadata.name);\n }\n }\n\n // Feature discovery — deterministic scan of package.json deps\n try {\n const { readFileSync } = await import('fs');\n const pkgPath = require('path').join(installDir, 'package.json');\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n const allDeps = {\n ...pkg.dependencies,\n ...pkg.devDependencies,\n };\n const depNames = Object.keys(allDeps);\n\n const { DiscoveredFeature } = await import(\n './src/lib/wizard-session.js'\n );\n\n if (\n depNames.some((d) =>\n ['stripe', '@stripe/stripe-js'].includes(d),\n )\n ) {\n tui.store.addDiscoveredFeature(DiscoveredFeature.Stripe);\n }\n\n // LLM SDK detection — sourced from PostHog LLM analytics skill\n const LLM_PACKAGES = [\n 'openai',\n '@anthropic-ai/sdk',\n 'ai',\n '@ai-sdk/openai',\n 'langchain',\n '@langchain/openai',\n '@langchain/langgraph',\n '@google/generative-ai',\n '@google/genai',\n '@instructor-ai/instructor',\n '@mastra/core',\n 'portkey-ai',\n ];\n if (depNames.some((d) => LLM_PACKAGES.includes(d))) {\n tui.store.addDiscoveredFeature(DiscoveredFeature.LLM);\n }\n } catch {\n // No package.json or parse error — skip feature discovery\n }\n\n // Signal detection is done — IntroScreen shows picker or results\n tui.store.setDetectionComplete();\n\n // Wait for IntroScreen confirmation\n await tui.waitForSetup();\n\n await runWizard(\n options as Parameters<typeof runWizard>[0],\n tui.store.session,\n );\n\n // Keep the outro screen visible — let process.exit() handle cleanup\n } catch (err) {\n // TUI unavailable (e.g., in test environment) — continue with default UI\n if (process.env.DEBUG || process.env.POSTHOG_WIZARD_DEBUG) {\n console.error('TUI init failed:', err); // eslint-disable-line no-console\n }\n await runWizard(options as Parameters<typeof runWizard>[0]);\n }\n })();\n }\n },\n )\n .command('mcp <command>', 'MCP server management commands', (yargs) => {\n return yargs\n .command(\n 'add',\n 'Install PostHog MCP server to supported clients',\n (yargs) => {\n return yargs.options({\n local: {\n default: false,\n describe:\n 'Add local development MCP server (http://localhost:8787)',\n type: 'boolean',\n },\n });\n },\n (argv) => {\n const options = { ...argv };\n void (async () => {\n try {\n const { startTUI } = await import('./src/ui/tui/start-tui.js');\n const { buildSession } = await import(\n './src/lib/wizard-session.js'\n );\n\n const { Flow } = await import('./src/ui/tui/router.js');\n const tui = startTUI(WIZARD_VERSION, Flow.McpAdd);\n const session = buildSession({\n debug: options.debug,\n localMcp: options.local,\n });\n tui.store.session = session;\n } catch {\n // TUI unavailable — fallback to logging\n setUI(new LoggingUI());\n const { addMCPServerToClientsStep } = await import(\n './src/steps/add-mcp-server-to-clients/index.js'\n );\n await addMCPServerToClientsStep({\n local: options.local,\n });\n }\n })();\n },\n )\n .command(\n 'remove',\n 'Remove PostHog MCP server from supported clients',\n (yargs) => {\n return yargs.options({\n local: {\n default: false,\n describe:\n 'Remove local development MCP server (http://localhost:8787)',\n type: 'boolean',\n },\n });\n },\n (argv) => {\n const options = { ...argv };\n void (async () => {\n try {\n const { startTUI } = await import('./src/ui/tui/start-tui.js');\n const { buildSession } = await import(\n './src/lib/wizard-session.js'\n );\n\n const { Flow } = await import('./src/ui/tui/router.js');\n const tui = startTUI(WIZARD_VERSION, Flow.McpRemove);\n const session = buildSession({\n debug: options.debug,\n localMcp: options.local,\n });\n tui.store.session = session;\n } catch {\n // TUI unavailable — fallback to logging\n setUI(new LoggingUI());\n const { removeMCPServerFromClientsStep } = await import(\n './src/steps/add-mcp-server-to-clients/index.js'\n );\n await removeMCPServerFromClientsStep({\n local: options.local,\n });\n }\n })();\n },\n )\n .demandCommand(1, 'You must specify a subcommand (add or remove)')\n .help();\n })\n .help()\n .alias('help', 'h')\n .version()\n .alias('version', 'v')\n .wrap(process.stdout.isTTY ? yargs.terminalWidth() : 80).argv;\n"]}
|