@posthog/wizard 1.36.1 → 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 +79 -0
- package/dist/bin.js +199 -12
- package/dist/bin.js.map +1 -1
- package/dist/src/__tests__/cli.test.js +7 -18
- 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 +132 -126
- 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 +22 -9
- package/dist/src/lib/constants.js +35 -11
- 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 -1
- package/dist/src/run.js +73 -55
- package/dist/src/run.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 +6 -6
- 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 -7
- package/dist/src/steps/add-mcp-server-to-clients/clients/codex.js +8 -9
- 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 +6 -6
- package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.d.ts +6 -6
- package/dist/src/steps/add-mcp-server-to-clients/clients/zed.d.ts +6 -6
- package/dist/src/steps/add-mcp-server-to-clients/defaults.d.ts +6 -6
- package/dist/src/steps/add-mcp-server-to-clients/index.d.ts +5 -2
- package/dist/src/steps/add-mcp-server-to-clients/index.js +24 -107
- 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.js +9 -10
- 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/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 -8
- package/dist/src/mcp.js +0 -44
- 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 -188
- package/dist/src/utils/clack-utils.js +0 -705
- 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
|
@@ -3,19 +3,61 @@
|
|
|
3
3
|
* Shared agent interface for PostHog wizards
|
|
4
4
|
* Uses Claude Agent SDK directly with PostHog LLM gateway
|
|
5
5
|
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
6
39
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
40
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
41
|
};
|
|
9
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
43
|
exports.AgentErrorType = exports.AgentSignals = void 0;
|
|
44
|
+
exports.checkClaudeSettingsOverrides = checkClaudeSettingsOverrides;
|
|
45
|
+
exports.backupAndFixClaudeSettings = backupAndFixClaudeSettings;
|
|
46
|
+
exports.restoreClaudeSettings = restoreClaudeSettings;
|
|
47
|
+
exports.createStopHook = createStopHook;
|
|
48
|
+
exports.buildWizardMetadata = buildWizardMetadata;
|
|
11
49
|
exports.wizardCanUseTool = wizardCanUseTool;
|
|
12
50
|
exports.initializeAgent = initializeAgent;
|
|
13
51
|
exports.runAgent = runAgent;
|
|
14
52
|
const path_1 = __importDefault(require("path"));
|
|
15
|
-
const
|
|
53
|
+
const fs = __importStar(require("fs"));
|
|
54
|
+
const ui_1 = require("../ui");
|
|
16
55
|
const debug_1 = require("../utils/debug");
|
|
17
56
|
const analytics_1 = require("../utils/analytics");
|
|
18
57
|
const constants_1 = require("./constants");
|
|
58
|
+
const wizard_session_1 = require("./wizard-session");
|
|
59
|
+
const wizard_abort_1 = require("../utils/wizard-abort");
|
|
60
|
+
const custom_headers_1 = require("../utils/custom-headers");
|
|
19
61
|
const urls_1 = require("../utils/urls");
|
|
20
62
|
const safe_tools_1 = require("./safe-tools");
|
|
21
63
|
const wizard_tools_1 = require("./wizard-tools");
|
|
@@ -64,6 +106,145 @@ var AgentErrorType;
|
|
|
64
106
|
/** Generic API error */
|
|
65
107
|
AgentErrorType["API_ERROR"] = "WIZARD_API_ERROR";
|
|
66
108
|
})(AgentErrorType || (exports.AgentErrorType = AgentErrorType = {}));
|
|
109
|
+
const BLOCKING_ENV_KEYS = ['ANTHROPIC_BASE_URL', 'ANTHROPIC_AUTH_TOKEN'];
|
|
110
|
+
/**
|
|
111
|
+
* Check if .claude/settings.json in the project directory contains env
|
|
112
|
+
* overrides for blocking keys that block the Wizard from accessing the PostHog LLM Gateway.
|
|
113
|
+
* Returns the list of matched key names, or an empty array if none found.
|
|
114
|
+
*/
|
|
115
|
+
function checkClaudeSettingsOverrides(workingDirectory) {
|
|
116
|
+
const candidates = [
|
|
117
|
+
path_1.default.join(workingDirectory, '.claude', 'settings.json'),
|
|
118
|
+
path_1.default.join(workingDirectory, '.claude', 'settings'),
|
|
119
|
+
];
|
|
120
|
+
for (const filePath of candidates) {
|
|
121
|
+
try {
|
|
122
|
+
const raw = fs.readFileSync(filePath, 'utf-8');
|
|
123
|
+
const parsed = JSON.parse(raw);
|
|
124
|
+
const envBlock = parsed?.env;
|
|
125
|
+
if (envBlock && typeof envBlock === 'object') {
|
|
126
|
+
return BLOCKING_ENV_KEYS.filter((key) => key in envBlock);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// File doesn't exist or isn't valid JSON — skip
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return [];
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Copy .claude/settings.json to .wizard-backup (overwriting if it exists),
|
|
137
|
+
* then remove the original so the SDK doesn't load the blocking overrides.
|
|
138
|
+
*/
|
|
139
|
+
function backupAndFixClaudeSettings(workingDirectory) {
|
|
140
|
+
for (const name of ['settings.json', 'settings']) {
|
|
141
|
+
const filePath = path_1.default.join(workingDirectory, '.claude', name);
|
|
142
|
+
const backupPath = `${filePath}.wizard-backup`;
|
|
143
|
+
analytics_1.analytics.wizardCapture('backedup-claude-settings');
|
|
144
|
+
try {
|
|
145
|
+
fs.copyFileSync(filePath, backupPath);
|
|
146
|
+
fs.unlinkSync(filePath);
|
|
147
|
+
(0, wizard_abort_1.registerCleanup)(() => {
|
|
148
|
+
try {
|
|
149
|
+
restoreClaudeSettings(workingDirectory);
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
analytics_1.analytics.captureException(error);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
// File doesn't exist — try next candidate
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Restore .claude/settings.json from .wizard-backup.
|
|
165
|
+
* Copies (not moves) so the backup is preserved.
|
|
166
|
+
*/
|
|
167
|
+
function restoreClaudeSettings(workingDirectory) {
|
|
168
|
+
for (const name of ['settings.json', 'settings']) {
|
|
169
|
+
const backup = path_1.default.join(workingDirectory, '.claude', `${name}.wizard-backup`);
|
|
170
|
+
try {
|
|
171
|
+
fs.copyFileSync(backup, path_1.default.join(workingDirectory, '.claude', name));
|
|
172
|
+
analytics_1.analytics.wizardCapture('restored-claude-settings');
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
analytics_1.analytics.captureException(error);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Create a stop hook callback that drains the additional feature queue,
|
|
182
|
+
* then collects a remark, then allows stop.
|
|
183
|
+
*
|
|
184
|
+
* Three-phase logic using closure state:
|
|
185
|
+
* Phase 1 — drain queue: block with each feature prompt in order
|
|
186
|
+
* Phase 2 — collect remark (once): block with remark prompt
|
|
187
|
+
* Phase 3 — allow stop: return {}
|
|
188
|
+
*/
|
|
189
|
+
function createStopHook(featureQueue) {
|
|
190
|
+
let featureIndex = 0;
|
|
191
|
+
let remarkRequested = false;
|
|
192
|
+
return (input) => {
|
|
193
|
+
(0, debug_1.logToFile)('Stop hook triggered', {
|
|
194
|
+
stop_hook_active: input.stop_hook_active,
|
|
195
|
+
featureIndex,
|
|
196
|
+
remarkRequested,
|
|
197
|
+
queueLength: featureQueue.length,
|
|
198
|
+
});
|
|
199
|
+
// Phase 1: drain feature queue
|
|
200
|
+
if (featureIndex < featureQueue.length) {
|
|
201
|
+
const feature = featureQueue[featureIndex++];
|
|
202
|
+
const prompt = wizard_session_1.ADDITIONAL_FEATURE_PROMPTS[feature];
|
|
203
|
+
(0, debug_1.logToFile)(`Stop hook: injecting feature prompt for ${feature}`);
|
|
204
|
+
return { decision: 'block', reason: prompt };
|
|
205
|
+
}
|
|
206
|
+
// Phase 2: collect remark (once)
|
|
207
|
+
if (!remarkRequested) {
|
|
208
|
+
remarkRequested = true;
|
|
209
|
+
(0, debug_1.logToFile)('Stop hook: requesting reflection');
|
|
210
|
+
return {
|
|
211
|
+
decision: 'block',
|
|
212
|
+
reason: `Before concluding, provide a brief remark about what information or guidance would have been useful to have in the integration prompt or documentation for this run. Specifically cite anything that would have prevented tool failures, erroneous edits, or other wasted turns. Format your response exactly as: ${exports.AgentSignals.WIZARD_REMARK} Your remark here`,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
// Phase 3: allow stop
|
|
216
|
+
(0, debug_1.logToFile)('Stop hook: allowing stop');
|
|
217
|
+
return {};
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Select wizard metadata from WIZARD_VARIANTS using the variant feature flag.
|
|
222
|
+
* If the flag is missing or the value is not in config, returns the "base" variant (VARIANT: "base").
|
|
223
|
+
*/
|
|
224
|
+
function buildWizardMetadata(flags = {}) {
|
|
225
|
+
const variantKey = flags[constants_1.WIZARD_VARIANT_FLAG_KEY];
|
|
226
|
+
const variant = (variantKey && constants_1.WIZARD_VARIANTS[variantKey]) ?? constants_1.WIZARD_VARIANTS['base'];
|
|
227
|
+
return { ...variant };
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Build env for the SDK subprocess: process.env plus ANTHROPIC_CUSTOM_HEADERS from wizard metadata/flags.
|
|
231
|
+
*/
|
|
232
|
+
function buildAgentEnv(wizardMetadata, wizardFlags) {
|
|
233
|
+
const headers = (0, custom_headers_1.createCustomHeaders)();
|
|
234
|
+
for (const [key, value] of Object.entries(wizardMetadata)) {
|
|
235
|
+
headers.add(key.startsWith(constants_1.POSTHOG_PROPERTY_HEADER_PREFIX)
|
|
236
|
+
? key
|
|
237
|
+
: `${constants_1.POSTHOG_PROPERTY_HEADER_PREFIX}${key}`, value);
|
|
238
|
+
}
|
|
239
|
+
for (const [flagKey, variant] of Object.entries(wizardFlags)) {
|
|
240
|
+
if (!flagKey.toLowerCase().startsWith('wizard'))
|
|
241
|
+
continue;
|
|
242
|
+
headers.addFlag(flagKey, variant);
|
|
243
|
+
}
|
|
244
|
+
const encoded = headers.encode();
|
|
245
|
+
(0, debug_1.logToFile)('ANTHROPIC_CUSTOM_HEADERS', encoded);
|
|
246
|
+
return encoded;
|
|
247
|
+
}
|
|
67
248
|
/**
|
|
68
249
|
* Package managers that can be used to run commands.
|
|
69
250
|
*/
|
|
@@ -197,8 +378,7 @@ function wizardCanUseTool(toolName, input) {
|
|
|
197
378
|
if (DANGEROUS_OPERATORS.test(command)) {
|
|
198
379
|
(0, debug_1.logToFile)(`Denying bash command with dangerous operators: ${command}`);
|
|
199
380
|
(0, debug_1.debug)(`Denying bash command with dangerous operators: ${command}`);
|
|
200
|
-
analytics_1.analytics.
|
|
201
|
-
action: 'bash command denied',
|
|
381
|
+
analytics_1.analytics.wizardCapture('bash denied', {
|
|
202
382
|
reason: 'dangerous operators',
|
|
203
383
|
command,
|
|
204
384
|
});
|
|
@@ -217,8 +397,7 @@ function wizardCanUseTool(toolName, input) {
|
|
|
217
397
|
if (/[|&]/.test(baseCommand)) {
|
|
218
398
|
(0, debug_1.logToFile)(`Denying bash command with multiple pipes: ${command}`);
|
|
219
399
|
(0, debug_1.debug)(`Denying bash command with multiple pipes: ${command}`);
|
|
220
|
-
analytics_1.analytics.
|
|
221
|
-
action: 'bash command denied',
|
|
400
|
+
analytics_1.analytics.wizardCapture('bash denied', {
|
|
222
401
|
reason: 'multiple pipes',
|
|
223
402
|
command,
|
|
224
403
|
});
|
|
@@ -237,8 +416,7 @@ function wizardCanUseTool(toolName, input) {
|
|
|
237
416
|
if (/[|&]/.test(normalized)) {
|
|
238
417
|
(0, debug_1.logToFile)(`Denying bash command with pipe/&: ${command}`);
|
|
239
418
|
(0, debug_1.debug)(`Denying bash command with pipe/&: ${command}`);
|
|
240
|
-
analytics_1.analytics.
|
|
241
|
-
action: 'bash command denied',
|
|
419
|
+
analytics_1.analytics.wizardCapture('bash denied', {
|
|
242
420
|
reason: 'disallowed pipe',
|
|
243
421
|
command,
|
|
244
422
|
});
|
|
@@ -255,8 +433,7 @@ function wizardCanUseTool(toolName, input) {
|
|
|
255
433
|
}
|
|
256
434
|
(0, debug_1.logToFile)(`Denying bash command: ${command}`);
|
|
257
435
|
(0, debug_1.debug)(`Denying bash command: ${command}`);
|
|
258
|
-
analytics_1.analytics.
|
|
259
|
-
action: 'bash command denied',
|
|
436
|
+
analytics_1.analytics.wizardCapture('bash denied', {
|
|
260
437
|
reason: 'not in allowlist',
|
|
261
438
|
command,
|
|
262
439
|
});
|
|
@@ -273,7 +450,7 @@ async function initializeAgent(config, options) {
|
|
|
273
450
|
(0, debug_1.initLogFile)();
|
|
274
451
|
(0, debug_1.logToFile)('Agent initialization starting');
|
|
275
452
|
(0, debug_1.logToFile)('Install directory:', options.installDir);
|
|
276
|
-
|
|
453
|
+
(0, ui_1.getUI)().log.step('Initializing Claude agent...');
|
|
277
454
|
try {
|
|
278
455
|
// Configure LLM gateway environment variables (inherited by SDK subprocess)
|
|
279
456
|
const gatewayUrl = (0, urls_1.getLlmGatewayUrlFromHost)(config.posthogApiHost);
|
|
@@ -306,6 +483,8 @@ async function initializeAgent(config, options) {
|
|
|
306
483
|
workingDirectory: config.workingDirectory,
|
|
307
484
|
mcpServers,
|
|
308
485
|
model: 'anthropic/claude-sonnet-4-6',
|
|
486
|
+
wizardFlags: config.wizardFlags,
|
|
487
|
+
wizardMetadata: config.wizardMetadata,
|
|
309
488
|
};
|
|
310
489
|
(0, debug_1.logToFile)('Agent config:', {
|
|
311
490
|
workingDirectory: agentRunConfig.workingDirectory,
|
|
@@ -321,12 +500,12 @@ async function initializeAgent(config, options) {
|
|
|
321
500
|
apiKeyPresent: !!config.posthogApiKey,
|
|
322
501
|
});
|
|
323
502
|
}
|
|
324
|
-
|
|
325
|
-
|
|
503
|
+
(0, ui_1.getUI)().log.step(`Verbose logs: ${(0, debug_1.getLogFilePath)()}`);
|
|
504
|
+
(0, ui_1.getUI)().log.success("Agent initialized. Let's get cooking!");
|
|
326
505
|
return agentRunConfig;
|
|
327
506
|
}
|
|
328
507
|
catch (error) {
|
|
329
|
-
|
|
508
|
+
(0, ui_1.getUI)().log.error(`Failed to initialize agent: ${error.message}`);
|
|
330
509
|
(0, debug_1.logToFile)('Agent initialization error:', error);
|
|
331
510
|
(0, debug_1.debug)('Agent initialization error:', error);
|
|
332
511
|
throw error;
|
|
@@ -339,9 +518,8 @@ async function initializeAgent(config, options) {
|
|
|
339
518
|
* @returns An object containing any error detected in the agent's output
|
|
340
519
|
*/
|
|
341
520
|
async function runAgent(agentConfig, prompt, options, spinner, config, middleware) {
|
|
342
|
-
const {
|
|
521
|
+
const { spinnerMessage = 'Customizing your PostHog setup...', successMessage = 'PostHog integration complete', errorMessage = 'Integration failed', } = config ?? {};
|
|
343
522
|
const { query } = await getSDKModule();
|
|
344
|
-
clack_1.default.log.step(`This whole process should take about ${estimatedDurationMinutes} minutes including error checking and fixes.\n\nGrab some coffee!`);
|
|
345
523
|
spinner.start(spinnerMessage);
|
|
346
524
|
const cliPath = getClaudeCodeExecutablePath();
|
|
347
525
|
(0, debug_1.logToFile)('Starting agent run');
|
|
@@ -391,8 +569,7 @@ async function runAgent(agentConfig, prompt, options, spinner, config, middlewar
|
|
|
391
569
|
analytics_1.analytics.capture(constants_1.WIZARD_REMARK_EVENT_NAME, { remark });
|
|
392
570
|
}
|
|
393
571
|
}
|
|
394
|
-
analytics_1.analytics.
|
|
395
|
-
action: 'agent integration completed',
|
|
572
|
+
analytics_1.analytics.wizardCapture('agent completed', {
|
|
396
573
|
duration_ms: durationMs,
|
|
397
574
|
duration_seconds: durationSeconds,
|
|
398
575
|
});
|
|
@@ -405,6 +582,9 @@ async function runAgent(agentConfig, prompt, options, spinner, config, middlewar
|
|
|
405
582
|
spinner.stop(successMessage);
|
|
406
583
|
return {};
|
|
407
584
|
};
|
|
585
|
+
// Event plan file watcher — cleaned up in finally block
|
|
586
|
+
let eventPlanWatcher;
|
|
587
|
+
let eventPlanInterval;
|
|
408
588
|
try {
|
|
409
589
|
// Tools needed for the wizard:
|
|
410
590
|
// - File operations: Read, Write, Edit
|
|
@@ -446,6 +626,7 @@ async function runAgent(agentConfig, prompt, options, spinner, config, middlewar
|
|
|
446
626
|
...process.env,
|
|
447
627
|
// Prevent user's Anthropic API key from overriding the wizard's OAuth token
|
|
448
628
|
ANTHROPIC_API_KEY: undefined,
|
|
629
|
+
ANTHROPIC_CUSTOM_HEADERS: buildAgentEnv(agentConfig.wizardMetadata ?? {}, agentConfig.wizardFlags ?? {}),
|
|
449
630
|
},
|
|
450
631
|
canUseTool: (toolName, input) => {
|
|
451
632
|
(0, debug_1.logToFile)('canUseTool called:', { toolName, input });
|
|
@@ -461,33 +642,53 @@ async function runAgent(agentConfig, prompt, options, spinner, config, middlewar
|
|
|
461
642
|
(0, debug_1.debug)('CLI stderr:', data);
|
|
462
643
|
}
|
|
463
644
|
},
|
|
464
|
-
// Stop hook
|
|
645
|
+
// Stop hook: drain additional feature queue, then collect remark, then allow stop
|
|
465
646
|
hooks: {
|
|
466
647
|
Stop: [
|
|
467
648
|
{
|
|
468
|
-
hooks: [
|
|
469
|
-
(input) => {
|
|
470
|
-
(0, debug_1.logToFile)('Stop hook triggered', {
|
|
471
|
-
stop_hook_active: input.stop_hook_active,
|
|
472
|
-
});
|
|
473
|
-
// Only ask for reflection on first stop (not after reflection is provided)
|
|
474
|
-
if (input.stop_hook_active) {
|
|
475
|
-
(0, debug_1.logToFile)('Stop hook: allowing stop (already reflected)');
|
|
476
|
-
return {}; // Allow stopping
|
|
477
|
-
}
|
|
478
|
-
(0, debug_1.logToFile)('Stop hook: requesting reflection');
|
|
479
|
-
return {
|
|
480
|
-
decision: 'block',
|
|
481
|
-
reason: `Before concluding, provide a brief remark about what information or guidance would have been useful to have in the integration prompt or documentation for this run. Specifically cite anything that would have prevented tool failures, erroneous edits, or other wasted turns. Format your response exactly as: ${exports.AgentSignals.WIZARD_REMARK} Your remark here`,
|
|
482
|
-
};
|
|
483
|
-
},
|
|
484
|
-
],
|
|
649
|
+
hooks: [createStopHook(config?.additionalFeatureQueue ?? [])],
|
|
485
650
|
timeout: 30,
|
|
486
651
|
},
|
|
487
652
|
],
|
|
488
653
|
},
|
|
489
654
|
},
|
|
490
655
|
});
|
|
656
|
+
// Watch for .posthog-events.json and feed into the store
|
|
657
|
+
const eventPlanPath = path_1.default.join(agentConfig.workingDirectory, '.posthog-events.json');
|
|
658
|
+
const readEventPlan = () => {
|
|
659
|
+
try {
|
|
660
|
+
const content = fs.readFileSync(eventPlanPath, 'utf-8');
|
|
661
|
+
const parsed = JSON.parse(content);
|
|
662
|
+
if (Array.isArray(parsed)) {
|
|
663
|
+
(0, ui_1.getUI)().setEventPlan(parsed.map((e) => ({
|
|
664
|
+
name: (e.name ?? e.event ?? ''),
|
|
665
|
+
description: (e.description ?? ''),
|
|
666
|
+
})));
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
catch {
|
|
670
|
+
// File doesn't exist or isn't valid JSON yet
|
|
671
|
+
}
|
|
672
|
+
};
|
|
673
|
+
try {
|
|
674
|
+
eventPlanWatcher = fs.watch(eventPlanPath, () => readEventPlan());
|
|
675
|
+
readEventPlan();
|
|
676
|
+
}
|
|
677
|
+
catch {
|
|
678
|
+
// File doesn't exist yet — poll until it appears
|
|
679
|
+
eventPlanInterval = setInterval(() => {
|
|
680
|
+
try {
|
|
681
|
+
fs.accessSync(eventPlanPath);
|
|
682
|
+
readEventPlan();
|
|
683
|
+
clearInterval(eventPlanInterval);
|
|
684
|
+
eventPlanInterval = undefined;
|
|
685
|
+
eventPlanWatcher = fs.watch(eventPlanPath, () => readEventPlan());
|
|
686
|
+
}
|
|
687
|
+
catch {
|
|
688
|
+
// Still waiting
|
|
689
|
+
}
|
|
690
|
+
}, 1000);
|
|
691
|
+
}
|
|
491
692
|
// Process the async generator
|
|
492
693
|
for await (const message of response) {
|
|
493
694
|
// Pass receivedSuccessResult so handleSDKMessage can suppress user-facing error
|
|
@@ -569,11 +770,16 @@ async function runAgent(agentConfig, prompt, options, spinner, config, middlewar
|
|
|
569
770
|
}
|
|
570
771
|
// No API error found, re-throw the original exception
|
|
571
772
|
spinner.stop(errorMessage);
|
|
572
|
-
|
|
773
|
+
(0, ui_1.getUI)().log.error(`Error: ${error.message}`);
|
|
573
774
|
(0, debug_1.logToFile)('Agent run failed:', error);
|
|
574
775
|
(0, debug_1.debug)('Full error:', error);
|
|
575
776
|
throw error;
|
|
576
777
|
}
|
|
778
|
+
finally {
|
|
779
|
+
eventPlanWatcher?.close();
|
|
780
|
+
if (eventPlanInterval)
|
|
781
|
+
clearInterval(eventPlanInterval);
|
|
782
|
+
}
|
|
577
783
|
}
|
|
578
784
|
/**
|
|
579
785
|
* Handle SDK messages and provide user feedback
|
|
@@ -599,10 +805,18 @@ function handleSDKMessage(message, options, spinner, collectedText, receivedSucc
|
|
|
599
805
|
const statusRegex = new RegExp(`^.*${exports.AgentSignals.STATUS.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\s*(.+?)$`, 'm');
|
|
600
806
|
const statusMatch = block.text.match(statusRegex);
|
|
601
807
|
if (statusMatch) {
|
|
602
|
-
|
|
603
|
-
|
|
808
|
+
const statusText = statusMatch[1].trim();
|
|
809
|
+
(0, ui_1.getUI)().pushStatus(statusText);
|
|
810
|
+
spinner.message(statusText);
|
|
604
811
|
}
|
|
605
812
|
}
|
|
813
|
+
// Intercept TodoWrite tool_use blocks for task progression
|
|
814
|
+
if (block.type === 'tool_use' &&
|
|
815
|
+
block.name === 'TodoWrite' &&
|
|
816
|
+
block.input?.todos &&
|
|
817
|
+
Array.isArray(block.input.todos)) {
|
|
818
|
+
(0, ui_1.getUI)().syncTodos(block.input.todos);
|
|
819
|
+
}
|
|
606
820
|
}
|
|
607
821
|
}
|
|
608
822
|
break;
|
|
@@ -619,7 +833,7 @@ function handleSDKMessage(message, options, spinner, collectedText, receivedSucc
|
|
|
619
833
|
// mode race conditions). Full message already logged above via JSON dump.
|
|
620
834
|
if (message.errors && !receivedSuccessResult) {
|
|
621
835
|
for (const err of message.errors) {
|
|
622
|
-
|
|
836
|
+
(0, ui_1.getUI)().log.error(`Error: ${err}`);
|
|
623
837
|
(0, debug_1.logToFile)('ERROR:', err);
|
|
624
838
|
}
|
|
625
839
|
}
|
|
@@ -636,7 +850,7 @@ function handleSDKMessage(message, options, spinner, collectedText, receivedSucc
|
|
|
636
850
|
// Full message already logged above via JSON dump.
|
|
637
851
|
if (message.errors && !receivedSuccessResult) {
|
|
638
852
|
for (const err of message.errors) {
|
|
639
|
-
|
|
853
|
+
(0, ui_1.getUI)().log.error(`Error: ${err}`);
|
|
640
854
|
(0, debug_1.logToFile)('ERROR:', err);
|
|
641
855
|
}
|
|
642
856
|
}
|