@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
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.ReactNativeVariant = exports.getReactNativeVersionBucket = void 0;
|
|
7
4
|
exports.getReactNativeVariantName = getReactNativeVariantName;
|
|
8
5
|
exports.detectReactNativeVariant = detectReactNativeVariant;
|
|
9
|
-
const semver_1 = require("
|
|
10
|
-
const
|
|
11
|
-
const package_json_1 = require("
|
|
12
|
-
const
|
|
6
|
+
const semver_1 = require("../../utils/semver");
|
|
7
|
+
const setup_utils_1 = require("../../utils/setup-utils");
|
|
8
|
+
const package_json_1 = require("../../utils/package-json");
|
|
9
|
+
const ui_1 = require("../../ui");
|
|
13
10
|
exports.getReactNativeVersionBucket = (0, semver_1.createVersionBucket)();
|
|
14
11
|
var ReactNativeVariant;
|
|
15
12
|
(function (ReactNativeVariant) {
|
|
@@ -20,12 +17,12 @@ function getReactNativeVariantName(variant) {
|
|
|
20
17
|
return variant === ReactNativeVariant.EXPO ? 'Expo' : 'React Native';
|
|
21
18
|
}
|
|
22
19
|
async function detectReactNativeVariant(options) {
|
|
23
|
-
const packageJson = await (0,
|
|
20
|
+
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
24
21
|
if (packageJson && (0, package_json_1.hasPackageInstalled)('expo', packageJson)) {
|
|
25
|
-
|
|
22
|
+
(0, ui_1.getUI)().setDetectedFramework(`${getReactNativeVariantName(ReactNativeVariant.EXPO)} 📱`);
|
|
26
23
|
return ReactNativeVariant.EXPO;
|
|
27
24
|
}
|
|
28
|
-
|
|
25
|
+
(0, ui_1.getUI)().setDetectedFramework(`${getReactNativeVariantName(ReactNativeVariant.REACT_NATIVE)} 📱`);
|
|
29
26
|
return ReactNativeVariant.REACT_NATIVE;
|
|
30
27
|
}
|
|
31
28
|
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/frameworks/react-native/utils.ts"],"names":[],"mappings":";;;AAaA,8DAEC;AAED,4DAgBC;AAjCD,+CAAyD;AACzD,yDAA4D;AAC5D,2DAA+D;AAC/D,iCAAiC;AAGpB,QAAA,2BAA2B,GAAG,IAAA,4BAAmB,GAAE,CAAC;AAEjE,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,mCAAa,CAAA;IACb,mDAA6B,CAAA;AAC/B,CAAC,EAHW,kBAAkB,kCAAlB,kBAAkB,QAG7B;AAED,SAAgB,yBAAyB,CAAC,OAA2B;IACnE,OAAO,OAAO,KAAK,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;AACvE,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAC5C,OAA0C;IAE1C,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC;IAErD,IAAI,WAAW,IAAI,IAAA,kCAAmB,EAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;QAC5D,IAAA,UAAK,GAAE,CAAC,oBAAoB,CAC1B,GAAG,yBAAyB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAC3D,CAAC;QACF,OAAO,kBAAkB,CAAC,IAAI,CAAC;IACjC,CAAC;IAED,IAAA,UAAK,GAAE,CAAC,oBAAoB,CAC1B,GAAG,yBAAyB,CAAC,kBAAkB,CAAC,YAAY,CAAC,KAAK,CACnE,CAAC;IACF,OAAO,kBAAkB,CAAC,YAAY,CAAC;AACzC,CAAC","sourcesContent":["import { createVersionBucket } from '../../utils/semver';\nimport { tryGetPackageJson } from '../../utils/setup-utils';\nimport { hasPackageInstalled } from '../../utils/package-json';\nimport { getUI } from '../../ui';\nimport type { WizardOptions } from '../../utils/types';\n\nexport const getReactNativeVersionBucket = createVersionBucket();\n\nexport enum ReactNativeVariant {\n EXPO = 'expo',\n REACT_NATIVE = 'react-native',\n}\n\nexport function getReactNativeVariantName(variant: ReactNativeVariant): string {\n return variant === ReactNativeVariant.EXPO ? 'Expo' : 'React Native';\n}\n\nexport async function detectReactNativeVariant(\n options: Pick<WizardOptions, 'installDir'>,\n): Promise<ReactNativeVariant> {\n const packageJson = await tryGetPackageJson(options);\n\n if (packageJson && hasPackageInstalled('expo', packageJson)) {\n getUI().setDetectedFramework(\n `${getReactNativeVariantName(ReactNativeVariant.EXPO)} 📱`,\n );\n return ReactNativeVariant.EXPO;\n }\n\n getUI().setDetectedFramework(\n `${getReactNativeVariantName(ReactNativeVariant.REACT_NATIVE)} 📱`,\n );\n return ReactNativeVariant.REACT_NATIVE;\n}\n"]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.REACT_ROUTER_AGENT_CONFIG = void 0;
|
|
4
|
-
const package_manager_detection_1 = require("
|
|
5
|
-
const constants_1 = require("
|
|
6
|
-
const package_json_1 = require("
|
|
7
|
-
const
|
|
4
|
+
const package_manager_detection_1 = require("../../lib/package-manager-detection");
|
|
5
|
+
const constants_1 = require("../../lib/constants");
|
|
6
|
+
const package_json_1 = require("../../utils/package-json");
|
|
7
|
+
const setup_utils_1 = require("../../utils/setup-utils");
|
|
8
|
+
const ui_1 = require("../../ui");
|
|
8
9
|
const utils_1 = require("./utils");
|
|
9
10
|
exports.REACT_ROUTER_AGENT_CONFIG = {
|
|
10
11
|
metadata: {
|
|
@@ -14,7 +15,11 @@ exports.REACT_ROUTER_AGENT_CONFIG = {
|
|
|
14
15
|
unsupportedVersionDocsUrl: 'https://posthog.com/docs/libraries/react',
|
|
15
16
|
gatherContext: async (options) => {
|
|
16
17
|
const routerMode = await (0, utils_1.getReactRouterMode)(options);
|
|
17
|
-
|
|
18
|
+
if (routerMode) {
|
|
19
|
+
(0, ui_1.getUI)().setDetectedFramework(`React Router ${(0, utils_1.getReactRouterModeName)(routerMode)}`);
|
|
20
|
+
return { routerMode };
|
|
21
|
+
}
|
|
22
|
+
return {};
|
|
18
23
|
},
|
|
19
24
|
},
|
|
20
25
|
detection: {
|
|
@@ -24,11 +29,13 @@ exports.REACT_ROUTER_AGENT_CONFIG = {
|
|
|
24
29
|
getVersionBucket: utils_1.getReactRouterVersionBucket,
|
|
25
30
|
minimumVersion: '6.0.0',
|
|
26
31
|
getInstalledVersion: async (options) => {
|
|
27
|
-
const packageJson = await (0,
|
|
28
|
-
return
|
|
32
|
+
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
33
|
+
return packageJson
|
|
34
|
+
? (0, package_json_1.getPackageVersion)('react-router', packageJson)
|
|
35
|
+
: undefined;
|
|
29
36
|
},
|
|
30
37
|
detect: async (options) => {
|
|
31
|
-
const packageJson = await (0,
|
|
38
|
+
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
32
39
|
return packageJson
|
|
33
40
|
? (0, package_json_1.hasPackageInstalled)('react-router', packageJson)
|
|
34
41
|
: false;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-router-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/react-router/react-router-wizard-agent.ts"],"names":[],"mappings":"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","sourcesContent":["/* React Router wizard using posthog-agent with PostHog MCP */\nimport type { WizardOptions } from '../../utils/types';\nimport type { FrameworkConfig } from '../../lib/framework-config';\nimport { detectNodePackageManagers } from '../../lib/package-manager-detection';\nimport { Integration } from '../../lib/constants';\nimport {\n getPackageVersion,\n hasPackageInstalled,\n type PackageDotJson,\n} from '../../utils/package-json';\nimport { tryGetPackageJson } from '../../utils/setup-utils';\nimport { getUI } from '../../ui';\nimport {\n getReactRouterMode,\n getReactRouterModeName,\n getReactRouterVersionBucket,\n ReactRouterMode,\n} from './utils';\n\ntype ReactRouterContext = {\n routerMode?: ReactRouterMode;\n};\n\nexport const REACT_ROUTER_AGENT_CONFIG: FrameworkConfig<ReactRouterContext> = {\n metadata: {\n name: 'React Router',\n integration: Integration.reactRouter,\n docsUrl: 'https://posthog.com/docs/libraries/react',\n unsupportedVersionDocsUrl: 'https://posthog.com/docs/libraries/react',\n gatherContext: async (options: WizardOptions) => {\n const routerMode = await getReactRouterMode(options);\n if (routerMode) {\n getUI().setDetectedFramework(\n `React Router ${getReactRouterModeName(routerMode)}`,\n );\n return { routerMode };\n }\n return {};\n },\n },\n\n detection: {\n packageName: 'react-router',\n packageDisplayName: 'React Router',\n getVersion: (packageJson: unknown) =>\n getPackageVersion('react-router', packageJson as PackageDotJson),\n getVersionBucket: getReactRouterVersionBucket,\n minimumVersion: '6.0.0',\n getInstalledVersion: async (options: WizardOptions) => {\n const packageJson = await tryGetPackageJson(options);\n return packageJson\n ? getPackageVersion('react-router', packageJson)\n : undefined;\n },\n detect: async (options) => {\n const packageJson = await tryGetPackageJson(options);\n return packageJson\n ? hasPackageInstalled('react-router', packageJson)\n : false;\n },\n detectPackageManager: detectNodePackageManagers,\n },\n\n environment: {\n uploadToHosting: false,\n getEnvVars: (apiKey: string, host: string) => ({\n REACT_APP_POSTHOG_KEY: apiKey,\n REACT_APP_POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: (context) => ({\n routerMode: context.routerMode || 'unknown',\n }),\n },\n\n prompts: {\n projectTypeDetection:\n 'This is a JavaScript/TypeScript project. Look for package.json and lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb) to confirm.',\n getAdditionalContextLines: (context) => {\n const routerMode = context.routerMode;\n const modeName = routerMode\n ? getReactRouterModeName(routerMode)\n : 'unknown';\n\n // Map router mode to framework ID for MCP docs resource\n const frameworkIdMap: Record<ReactRouterMode, string> = {\n [ReactRouterMode.V6]: 'react-react-router-6',\n [ReactRouterMode.V7_FRAMEWORK]: 'react-react-router-7-framework',\n [ReactRouterMode.V7_DATA]: 'react-react-router-7-data',\n [ReactRouterMode.V7_DECLARATIVE]: 'react-react-router-7-declarative',\n };\n\n const frameworkId = routerMode\n ? frameworkIdMap[routerMode]\n : ReactRouterMode.V7_FRAMEWORK;\n\n return [\n `Router mode: ${modeName}`,\n `Framework docs ID: ${frameworkId} (use posthog://docs/frameworks/${frameworkId} for documentation)`,\n ];\n },\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 8,\n getOutroChanges: (context) => {\n const modeName = context.routerMode\n ? getReactRouterModeName(context.routerMode)\n : 'React Router';\n return [\n `Analyzed your React Router project structure (${modeName})`,\n `Created and configured PostHog initializers`,\n `Integrated PostHog into your application`,\n ];\n },\n getOutroNextSteps: () => [\n 'Start your development server to see PostHog in action',\n 'Visit your PostHog dashboard to see incoming events',\n ],\n },\n};\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { WizardOptions } from '../../utils/types';
|
|
2
|
+
export declare enum ReactRouterMode {
|
|
3
|
+
V6 = "v6",
|
|
4
|
+
V7_FRAMEWORK = "v7-framework",
|
|
5
|
+
V7_DATA = "v7-data",
|
|
6
|
+
V7_DECLARATIVE = "v7-declarative"
|
|
7
|
+
}
|
|
8
|
+
export declare const getReactRouterVersionBucket: (version: string | undefined) => string;
|
|
9
|
+
/**
|
|
10
|
+
* Detect React Router mode. Pure — returns null if ambiguous.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getReactRouterMode(options: WizardOptions): Promise<ReactRouterMode | null>;
|
|
13
|
+
export declare function getReactRouterModeName(mode: ReactRouterMode): string;
|
|
@@ -41,12 +41,9 @@ exports.getReactRouterMode = getReactRouterMode;
|
|
|
41
41
|
exports.getReactRouterModeName = getReactRouterModeName;
|
|
42
42
|
const semver_1 = require("semver");
|
|
43
43
|
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
const package_json_1 = require("../utils/package-json");
|
|
48
|
-
const semver_2 = require("../utils/semver");
|
|
49
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
44
|
+
const setup_utils_1 = require("../../utils/setup-utils");
|
|
45
|
+
const package_json_1 = require("../../utils/package-json");
|
|
46
|
+
const semver_2 = require("../../utils/semver");
|
|
50
47
|
const fs = __importStar(require("node:fs"));
|
|
51
48
|
const path = __importStar(require("node:path"));
|
|
52
49
|
const semver = __importStar(require("semver"));
|
|
@@ -64,13 +61,7 @@ const IGNORE_PATTERNS = [
|
|
|
64
61
|
'**/public/**',
|
|
65
62
|
'**/.next/**',
|
|
66
63
|
];
|
|
67
|
-
/**
|
|
68
|
-
* Get React Router version bucket for analytics
|
|
69
|
-
*/
|
|
70
64
|
exports.getReactRouterVersionBucket = (0, semver_2.createVersionBucket)();
|
|
71
|
-
/**
|
|
72
|
-
* Check if react-router.config.ts exists (indicates framework mode - React Router v7)
|
|
73
|
-
*/
|
|
74
65
|
async function hasReactRouterConfig({ installDir, }) {
|
|
75
66
|
const configMatches = await (0, fast_glob_1.default)('**/react-router.config.@(ts|js|tsx|jsx)', {
|
|
76
67
|
dot: true,
|
|
@@ -79,9 +70,6 @@ async function hasReactRouterConfig({ installDir, }) {
|
|
|
79
70
|
});
|
|
80
71
|
return configMatches.length > 0;
|
|
81
72
|
}
|
|
82
|
-
/**
|
|
83
|
-
* Search for createBrowserRouter usage in source files
|
|
84
|
-
*/
|
|
85
73
|
async function hasCreateBrowserRouter({ installDir, }) {
|
|
86
74
|
const sourceFiles = await (0, fast_glob_1.default)('**/*.@(ts|tsx|js|jsx)', {
|
|
87
75
|
dot: true,
|
|
@@ -92,21 +80,16 @@ async function hasCreateBrowserRouter({ installDir, }) {
|
|
|
92
80
|
try {
|
|
93
81
|
const filePath = path.join(installDir, file);
|
|
94
82
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
95
|
-
// Check for createBrowserRouter import or usage
|
|
96
83
|
if (content.includes('createBrowserRouter')) {
|
|
97
84
|
return true;
|
|
98
85
|
}
|
|
99
86
|
}
|
|
100
87
|
catch {
|
|
101
|
-
// Skip files that can't be read
|
|
102
88
|
continue;
|
|
103
89
|
}
|
|
104
90
|
}
|
|
105
91
|
return false;
|
|
106
92
|
}
|
|
107
|
-
/**
|
|
108
|
-
* Search for declarative BrowserRouter usage
|
|
109
|
-
*/
|
|
110
93
|
async function hasDeclarativeRouter({ installDir, }) {
|
|
111
94
|
const sourceFiles = await (0, fast_glob_1.default)('**/*.@(ts|tsx|js|jsx)', {
|
|
112
95
|
dot: true,
|
|
@@ -117,7 +100,6 @@ async function hasDeclarativeRouter({ installDir, }) {
|
|
|
117
100
|
try {
|
|
118
101
|
const filePath = path.join(installDir, file);
|
|
119
102
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
120
|
-
// Check for BrowserRouter usage (JSX or import)
|
|
121
103
|
if (content.includes('<BrowserRouter') ||
|
|
122
104
|
(content.includes('BrowserRouter') &&
|
|
123
105
|
(content.includes('from "react-router-dom"') ||
|
|
@@ -126,123 +108,44 @@ async function hasDeclarativeRouter({ installDir, }) {
|
|
|
126
108
|
}
|
|
127
109
|
}
|
|
128
110
|
catch {
|
|
129
|
-
// Skip files that can't be read
|
|
130
111
|
continue;
|
|
131
112
|
}
|
|
132
113
|
}
|
|
133
114
|
return false;
|
|
134
115
|
}
|
|
135
116
|
/**
|
|
136
|
-
* Detect React Router mode
|
|
117
|
+
* Detect React Router mode. Pure — returns null if ambiguous.
|
|
137
118
|
*/
|
|
138
119
|
async function getReactRouterMode(options) {
|
|
139
120
|
const { installDir } = options;
|
|
140
|
-
|
|
141
|
-
|
|
121
|
+
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
122
|
+
if (!packageJson)
|
|
123
|
+
return null;
|
|
142
124
|
const reactRouterVersion = (0, package_json_1.getPackageVersion)('react-router-dom', packageJson) ||
|
|
143
125
|
(0, package_json_1.getPackageVersion)('react-router', packageJson);
|
|
144
126
|
if (!reactRouterVersion) {
|
|
145
|
-
|
|
146
|
-
clack_1.default.log.info(`Learn more about React Router modes: ${chalk_1.default.cyan('https://reactrouter.com/start/modes')}`);
|
|
147
|
-
const result = await (0, clack_utils_1.abortIfCancelled)(clack_1.default.select({
|
|
148
|
-
message: 'What React Router version and mode are you using?',
|
|
149
|
-
options: [
|
|
150
|
-
{
|
|
151
|
-
label: 'React Router v6',
|
|
152
|
-
value: ReactRouterMode.V6,
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
label: 'React Router v7 - Framework mode',
|
|
156
|
-
value: ReactRouterMode.V7_FRAMEWORK,
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
label: 'React Router v7 - Data mode',
|
|
160
|
-
value: ReactRouterMode.V7_DATA,
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
label: 'React Router v7 - Declarative mode',
|
|
164
|
-
value: ReactRouterMode.V7_DECLARATIVE,
|
|
165
|
-
},
|
|
166
|
-
],
|
|
167
|
-
}), constants_1.Integration.reactRouter);
|
|
168
|
-
return result;
|
|
127
|
+
return null;
|
|
169
128
|
}
|
|
170
129
|
const coercedVersion = semver.coerce(reactRouterVersion);
|
|
171
130
|
const majorVersion = coercedVersion ? (0, semver_1.major)(coercedVersion) : null;
|
|
172
|
-
// If v6, return V6
|
|
173
131
|
if (majorVersion === 6) {
|
|
174
|
-
clack_1.default.log.info('Detected React Router v6');
|
|
175
132
|
return ReactRouterMode.V6;
|
|
176
133
|
}
|
|
177
|
-
// If v7, detect the mode
|
|
178
134
|
if (majorVersion === 7) {
|
|
179
|
-
// First check for framework mode (react-router.config.ts)
|
|
180
135
|
const hasConfig = await hasReactRouterConfig({ installDir });
|
|
181
|
-
if (hasConfig)
|
|
182
|
-
clack_1.default.log.info('Detected React Router v7 - Framework mode');
|
|
136
|
+
if (hasConfig)
|
|
183
137
|
return ReactRouterMode.V7_FRAMEWORK;
|
|
184
|
-
}
|
|
185
|
-
// Check for data mode (createBrowserRouter)
|
|
186
138
|
const hasDataMode = await hasCreateBrowserRouter({ installDir });
|
|
187
|
-
if (hasDataMode)
|
|
188
|
-
clack_1.default.log.info('Detected React Router v7 - Data mode');
|
|
139
|
+
if (hasDataMode)
|
|
189
140
|
return ReactRouterMode.V7_DATA;
|
|
190
|
-
}
|
|
191
|
-
// Check for declarative mode (BrowserRouter)
|
|
192
141
|
const hasDeclarative = await hasDeclarativeRouter({ installDir });
|
|
193
|
-
if (hasDeclarative)
|
|
194
|
-
clack_1.default.log.info('Detected React Router v7 - Declarative mode');
|
|
142
|
+
if (hasDeclarative)
|
|
195
143
|
return ReactRouterMode.V7_DECLARATIVE;
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
clack_1.default.log.info(`Learn more about React Router modes: ${chalk_1.default.cyan('https://reactrouter.com/start/modes')}`);
|
|
199
|
-
const result = await (0, clack_utils_1.abortIfCancelled)(clack_1.default.select({
|
|
200
|
-
message: 'What React Router v7 mode are you using?',
|
|
201
|
-
options: [
|
|
202
|
-
{
|
|
203
|
-
label: 'Framework mode',
|
|
204
|
-
value: ReactRouterMode.V7_FRAMEWORK,
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
label: 'Data mode',
|
|
208
|
-
value: ReactRouterMode.V7_DATA,
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
label: 'Declarative mode',
|
|
212
|
-
value: ReactRouterMode.V7_DECLARATIVE,
|
|
213
|
-
},
|
|
214
|
-
],
|
|
215
|
-
}), constants_1.Integration.reactRouter);
|
|
216
|
-
return result;
|
|
144
|
+
// v7 but can't detect mode
|
|
145
|
+
return null;
|
|
217
146
|
}
|
|
218
|
-
|
|
219
|
-
clack_1.default.log.info(`Learn more about React Router modes: ${chalk_1.default.cyan('https://reactrouter.com/start/modes')}`);
|
|
220
|
-
const result = await (0, clack_utils_1.abortIfCancelled)(clack_1.default.select({
|
|
221
|
-
message: 'What React Router version and mode are you using?',
|
|
222
|
-
options: [
|
|
223
|
-
{
|
|
224
|
-
label: 'React Router v6',
|
|
225
|
-
value: ReactRouterMode.V6,
|
|
226
|
-
},
|
|
227
|
-
{
|
|
228
|
-
label: 'React Router v7 - Framework mode',
|
|
229
|
-
value: ReactRouterMode.V7_FRAMEWORK,
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
label: 'React Router v7 - Data mode',
|
|
233
|
-
value: ReactRouterMode.V7_DATA,
|
|
234
|
-
},
|
|
235
|
-
{
|
|
236
|
-
label: 'React Router v7 - Declarative mode',
|
|
237
|
-
value: ReactRouterMode.V7_DECLARATIVE,
|
|
238
|
-
},
|
|
239
|
-
],
|
|
240
|
-
}), constants_1.Integration.reactRouter);
|
|
241
|
-
return result;
|
|
147
|
+
return null;
|
|
242
148
|
}
|
|
243
|
-
/**
|
|
244
|
-
* Get human-readable name for React Router mode
|
|
245
|
-
*/
|
|
246
149
|
function getReactRouterModeName(mode) {
|
|
247
150
|
switch (mode) {
|
|
248
151
|
case ReactRouterMode.V6:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/frameworks/react-router/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { major } from 'semver';\nimport fg from 'fast-glob';\nimport { tryGetPackageJson } from '../../utils/setup-utils';\nimport type { WizardOptions } from '../../utils/types';\nimport { getPackageVersion } from '../../utils/package-json';\nimport { createVersionBucket } from '../../utils/semver';\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as semver from 'semver';\n\nexport enum ReactRouterMode {\n V6 = 'v6',\n V7_FRAMEWORK = 'v7-framework',\n V7_DATA = 'v7-data',\n V7_DECLARATIVE = 'v7-declarative',\n}\n\nconst IGNORE_PATTERNS = [\n '**/node_modules/**',\n '**/dist/**',\n '**/build/**',\n '**/public/**',\n '**/.next/**',\n];\n\nexport const getReactRouterVersionBucket = createVersionBucket();\n\nasync function hasReactRouterConfig({\n installDir,\n}: Pick<WizardOptions, 'installDir'>): Promise<boolean> {\n const configMatches = await fg('**/react-router.config.@(ts|js|tsx|jsx)', {\n dot: true,\n cwd: installDir,\n ignore: IGNORE_PATTERNS,\n });\n return configMatches.length > 0;\n}\n\nasync function hasCreateBrowserRouter({\n installDir,\n}: Pick<WizardOptions, 'installDir'>): Promise<boolean> {\n const sourceFiles = await fg('**/*.@(ts|tsx|js|jsx)', {\n dot: true,\n cwd: installDir,\n ignore: IGNORE_PATTERNS,\n });\n\n for (const file of sourceFiles) {\n try {\n const filePath = path.join(installDir, file);\n const content = fs.readFileSync(filePath, 'utf-8');\n if (content.includes('createBrowserRouter')) {\n return true;\n }\n } catch {\n continue;\n }\n }\n\n return false;\n}\n\nasync function hasDeclarativeRouter({\n installDir,\n}: Pick<WizardOptions, 'installDir'>): Promise<boolean> {\n const sourceFiles = await fg('**/*.@(ts|tsx|js|jsx)', {\n dot: true,\n cwd: installDir,\n ignore: IGNORE_PATTERNS,\n });\n\n for (const file of sourceFiles) {\n try {\n const filePath = path.join(installDir, file);\n const content = fs.readFileSync(filePath, 'utf-8');\n if (\n content.includes('<BrowserRouter') ||\n (content.includes('BrowserRouter') &&\n (content.includes('from \"react-router-dom\"') ||\n content.includes(\"from 'react-router-dom'\")))\n ) {\n return true;\n }\n } catch {\n continue;\n }\n }\n\n return false;\n}\n\n/**\n * Detect React Router mode. Pure — returns null if ambiguous.\n */\nexport async function getReactRouterMode(\n options: WizardOptions,\n): Promise<ReactRouterMode | null> {\n const { installDir } = options;\n\n const packageJson = await tryGetPackageJson(options);\n if (!packageJson) return null;\n\n const reactRouterVersion =\n getPackageVersion('react-router-dom', packageJson) ||\n getPackageVersion('react-router', packageJson);\n\n if (!reactRouterVersion) {\n return null;\n }\n\n const coercedVersion = semver.coerce(reactRouterVersion);\n const majorVersion = coercedVersion ? major(coercedVersion) : null;\n\n if (majorVersion === 6) {\n return ReactRouterMode.V6;\n }\n\n if (majorVersion === 7) {\n const hasConfig = await hasReactRouterConfig({ installDir });\n if (hasConfig) return ReactRouterMode.V7_FRAMEWORK;\n\n const hasDataMode = await hasCreateBrowserRouter({ installDir });\n if (hasDataMode) return ReactRouterMode.V7_DATA;\n\n const hasDeclarative = await hasDeclarativeRouter({ installDir });\n if (hasDeclarative) return ReactRouterMode.V7_DECLARATIVE;\n\n // v7 but can't detect mode\n return null;\n }\n\n return null;\n}\n\nexport function getReactRouterModeName(mode: ReactRouterMode): string {\n switch (mode) {\n case ReactRouterMode.V6:\n return 'v6';\n case ReactRouterMode.V7_FRAMEWORK:\n return 'v7 Framework mode';\n case ReactRouterMode.V7_DATA:\n return 'v7 Data mode';\n case ReactRouterMode.V7_DECLARATIVE:\n return 'v7 Declarative mode';\n }\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RUBY_AGENT_CONFIG = void 0;
|
|
4
|
-
const package_manager_detection_1 = require("
|
|
5
|
-
const constants_1 = require("
|
|
4
|
+
const package_manager_detection_1 = require("../../lib/package-manager-detection");
|
|
5
|
+
const constants_1 = require("../../lib/constants");
|
|
6
6
|
const utils_1 = require("./utils");
|
|
7
7
|
exports.RUBY_AGENT_CONFIG = {
|
|
8
8
|
metadata: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruby-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/ruby/ruby-wizard-agent.ts"],"names":[],"mappings":"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","sourcesContent":["/* Generic Ruby language wizard using posthog-agent with PostHog MCP */\nimport type { WizardOptions } from '../../utils/types';\nimport type { FrameworkConfig } from '../../lib/framework-config';\nimport { bundlerPackageManager } from '../../lib/package-manager-detection';\nimport { Integration } from '../../lib/constants';\nimport {\n getRubyVersion,\n getRubyVersionBucket,\n detectPackageManager,\n getPackageManagerName,\n RubyPackageManager,\n isRubyProject,\n} from './utils';\n\ntype RubyContext = {\n packageManager?: RubyPackageManager;\n};\n\nexport const RUBY_AGENT_CONFIG: FrameworkConfig<RubyContext> = {\n metadata: {\n name: 'Ruby',\n integration: Integration.ruby,\n beta: true,\n docsUrl: 'https://posthog.com/docs/libraries/ruby',\n gatherContext: (options: WizardOptions) => {\n const packageManager = detectPackageManager(options);\n return Promise.resolve({ packageManager });\n },\n },\n\n detection: {\n packageName: 'ruby',\n packageDisplayName: 'Ruby',\n usesPackageJson: false,\n getVersion: () => undefined,\n getVersionBucket: getRubyVersionBucket,\n minimumVersion: '2.7.0',\n getInstalledVersion: (options: WizardOptions) =>\n Promise.resolve(getRubyVersion(options)),\n detect: async (options) => isRubyProject(options),\n detectPackageManager: bundlerPackageManager,\n },\n\n environment: {\n uploadToHosting: false,\n getEnvVars: (apiKey: string, host: string) => ({\n POSTHOG_API_KEY: apiKey,\n POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: (context) => {\n const packageManagerName = context.packageManager\n ? getPackageManagerName(context.packageManager)\n : 'unknown';\n return {\n packageManager: packageManagerName,\n };\n },\n },\n\n prompts: {\n projectTypeDetection:\n 'This is a Ruby project. Look for Gemfile, *.gemspec, .ruby-version, or *.rb files to confirm.',\n packageInstallation:\n \"Use Bundler if a Gemfile is present (add `gem 'posthog-ruby'` and run `bundle install`). Otherwise use `gem install posthog-ruby`. Do not pin a specific version.\",\n getAdditionalContextLines: (context) => {\n const packageManagerName = context.packageManager\n ? getPackageManagerName(context.packageManager)\n : 'unknown';\n\n const lines = [\n `Package manager: ${packageManagerName}`,\n `Framework docs ID: ruby (use posthog://docs/frameworks/ruby for documentation)`,\n `Project type: Generic Ruby application (CLI, script, gem, worker, etc.)`,\n ``,\n `## CRITICAL: Ruby PostHog Best Practices`,\n ``,\n `### 1. Gem Name vs Require`,\n `The gem is named posthog-ruby but you require it as 'posthog':`,\n ` gem 'posthog-ruby' # in Gemfile`,\n ` require 'posthog' # in code (NOT require 'posthog-ruby')`,\n ``,\n `### 2. Use Instance-Based API (REQUIRED for scripts/CLIs)`,\n `Use PostHog::Client.new for scripts and standalone applications:`,\n ``,\n `client = PostHog::Client.new(`,\n ` api_key: ENV['POSTHOG_API_KEY'],`,\n ` host: ENV['POSTHOG_HOST'] || 'https://us.i.posthog.com'`,\n `)`,\n ``,\n `### 3. MUST Call shutdown Before Exit`,\n `In scripts and CLIs, you MUST call client.shutdown or events will be lost:`,\n ``,\n `begin`,\n ` client.capture(distinct_id: 'user_123', event: 'my_event')`,\n `ensure`,\n ` client.shutdown`,\n `end`,\n ``,\n `### 4. capture_exception Takes Positional Args`,\n `client.capture_exception(exception, distinct_id, additional_properties)`,\n `Do NOT use keyword arguments for capture_exception.`,\n ``,\n `### 5. NEVER Send PII`,\n `Do NOT include emails, names, phone numbers, or user content in event properties.`,\n ];\n\n return lines;\n },\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 5,\n getOutroChanges: (context) => {\n const packageManagerName = context.packageManager\n ? getPackageManagerName(context.packageManager)\n : 'package manager';\n return [\n `Analyzed your Ruby project structure`,\n `Installed the posthog-ruby gem using ${packageManagerName}`,\n `Created PostHog initialization with instance-based API`,\n `Configured shutdown handler for proper event flushing`,\n ];\n },\n getOutroNextSteps: () => [\n 'Use client.capture() for events and client.identify() for users',\n 'Always call client.shutdown() before your application exits',\n 'Visit your PostHog dashboard to see incoming events',\n ],\n },\n};\n"]}
|
|
@@ -42,7 +42,7 @@ exports.getPackageManagerName = getPackageManagerName;
|
|
|
42
42
|
exports.getRubyVersion = getRubyVersion;
|
|
43
43
|
exports.isRubyProject = isRubyProject;
|
|
44
44
|
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
45
|
-
const semver_1 = require("
|
|
45
|
+
const semver_1 = require("../../utils/semver");
|
|
46
46
|
const fs = __importStar(require("node:fs"));
|
|
47
47
|
const path = __importStar(require("node:path"));
|
|
48
48
|
var RubyPackageManager;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/frameworks/ruby/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,oDAWC;AAKD,sDASC;AAKD,wCA+BC;AAKD,sCA2CC;AAxID,0DAA2B;AAE3B,+CAAyD;AACzD,4CAA8B;AAC9B,gDAAkC;AAElC,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,yCAAmB,CAAA;IACnB,uCAAiB,CAAA;AACnB,CAAC,EAHW,kBAAkB,kCAAlB,kBAAkB,QAG7B;AAED,MAAM,eAAe,GAAG;IACtB,oBAAoB;IACpB,cAAc;IACd,qBAAqB;IACrB,WAAW;IACX,WAAW;CACZ,CAAC;AAEF;;GAEG;AACU,QAAA,oBAAoB,GAAG,IAAA,4BAAmB,GAAE,CAAC;AAE1D;;GAEG;AACH,SAAgB,oBAAoB,CAClC,OAA0C;IAE1C,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE/B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,OAAO,kBAAkB,CAAC,OAAO,CAAC;IACpC,CAAC;IAED,OAAO,kBAAkB,CAAC,MAAM,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CACnC,cAAkC;IAElC,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,kBAAkB,CAAC,OAAO;YAC7B,OAAO,SAAS,CAAC;QACnB,KAAK,kBAAkB,CAAC,MAAM;YAC5B,OAAO,aAAa,CAAC;IACzB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,OAA0C;IAE1C,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE/B,2BAA2B;IAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACjE,mCAAmC;QACnC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IAED,6CAA6C;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC5E,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,aAAa;IACf,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa,CACjC,OAA0C;IAE1C,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE/B,oBAAoB;IACpB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,wEAAwE;QACxE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACtD,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,OAAO,KAAK,CAAC,CAAC,yCAAyC;YACzD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+BAA+B;IAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC/D,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4BAA4B;IAC5B,MAAM,YAAY,GAAG,MAAM,IAAA,mBAAE,EAAC,WAAW,EAAE;QACzC,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,eAAe;KACxB,CAAC,CAAC;IAEH,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,MAAM,SAAS,GAAG,MAAM,IAAA,mBAAE,EAAC,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE;QACjE,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,eAAe;KACxB,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,CAAC","sourcesContent":["import fg from 'fast-glob';\nimport type { WizardOptions } from '../../utils/types';\nimport { createVersionBucket } from '../../utils/semver';\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nexport enum RubyPackageManager {\n BUNDLER = 'bundler',\n MANUAL = 'manual',\n}\n\nconst IGNORE_PATTERNS = [\n '**/node_modules/**',\n '**/vendor/**',\n '**/vendor/bundle/**',\n '**/tmp/**',\n '**/log/**',\n];\n\n/**\n * Get Ruby version bucket for analytics\n */\nexport const getRubyVersionBucket = createVersionBucket();\n\n/**\n * Detect Ruby package manager\n */\nexport function detectPackageManager(\n options: Pick<WizardOptions, 'installDir'>,\n): RubyPackageManager {\n const { installDir } = options;\n\n const gemfilePath = path.join(installDir, 'Gemfile');\n if (fs.existsSync(gemfilePath)) {\n return RubyPackageManager.BUNDLER;\n }\n\n return RubyPackageManager.MANUAL;\n}\n\n/**\n * Get human-readable name for package manager\n */\nexport function getPackageManagerName(\n packageManager: RubyPackageManager,\n): string {\n switch (packageManager) {\n case RubyPackageManager.BUNDLER:\n return 'Bundler';\n case RubyPackageManager.MANUAL:\n return 'gem install';\n }\n}\n\n/**\n * Get Ruby version from .ruby-version file or Gemfile\n */\nexport function getRubyVersion(\n options: Pick<WizardOptions, 'installDir'>,\n): string | undefined {\n const { installDir } = options;\n\n // Check .ruby-version file\n const rubyVersionPath = path.join(installDir, '.ruby-version');\n try {\n const content = fs.readFileSync(rubyVersionPath, 'utf-8').trim();\n // Remove \"ruby-\" prefix if present\n const version = content.replace(/^ruby-/, '');\n if (/^[0-9]+\\.[0-9]+/.test(version)) {\n return version;\n }\n } catch {\n // Continue to other checks\n }\n\n // Check Gemfile for ruby version declaration\n const gemfilePath = path.join(installDir, 'Gemfile');\n try {\n const content = fs.readFileSync(gemfilePath, 'utf-8');\n const match = content.match(/ruby\\s+['\"]([0-9]+\\.[0-9]+(?:\\.[0-9]+)?)['\"]/);\n if (match) {\n return match[1];\n }\n } catch {\n // No Gemfile\n }\n\n return undefined;\n}\n\n/**\n * Check if the project is a Ruby project (but not Rails)\n */\nexport async function isRubyProject(\n options: Pick<WizardOptions, 'installDir'>,\n): Promise<boolean> {\n const { installDir } = options;\n\n // Check for Gemfile\n const gemfilePath = path.join(installDir, 'Gemfile');\n if (fs.existsSync(gemfilePath)) {\n // Make sure this isn't a Rails project (Rails should be detected first)\n try {\n const content = fs.readFileSync(gemfilePath, 'utf-8');\n if (/^\\s*gem\\s+['\"]rails['\"]/im.test(content)) {\n return false; // Rails project, use rails agent instead\n }\n } catch {\n // Continue checking\n }\n return true;\n }\n\n // Check for .ruby-version file\n const rubyVersionPath = path.join(installDir, '.ruby-version');\n if (fs.existsSync(rubyVersionPath)) {\n return true;\n }\n\n // Check for *.gemspec files\n const gemspecFiles = await fg('*.gemspec', {\n cwd: installDir,\n ignore: IGNORE_PATTERNS,\n });\n\n if (gemspecFiles.length > 0) {\n return true;\n }\n\n // Check for Ruby source files in the root\n const rubyFiles = await fg(['*.rb', 'lib/**/*.rb', 'bin/**/*.rb'], {\n cwd: installDir,\n ignore: IGNORE_PATTERNS,\n });\n\n return rubyFiles.length > 0;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FrameworkConfig } from '
|
|
1
|
+
import type { FrameworkConfig } from '../../lib/framework-config';
|
|
2
2
|
type SvelteKitContext = Record<string, unknown>;
|
|
3
3
|
export declare const SVELTEKIT_AGENT_CONFIG: FrameworkConfig<SvelteKitContext>;
|
|
4
4
|
export {};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SVELTEKIT_AGENT_CONFIG = void 0;
|
|
4
|
-
const package_manager_detection_1 = require("
|
|
5
|
-
const constants_1 = require("
|
|
6
|
-
const package_json_1 = require("
|
|
7
|
-
const
|
|
4
|
+
const package_manager_detection_1 = require("../../lib/package-manager-detection");
|
|
5
|
+
const constants_1 = require("../../lib/constants");
|
|
6
|
+
const package_json_1 = require("../../utils/package-json");
|
|
7
|
+
const setup_utils_1 = require("../../utils/setup-utils");
|
|
8
8
|
exports.SVELTEKIT_AGENT_CONFIG = {
|
|
9
9
|
metadata: {
|
|
10
10
|
name: 'SvelteKit',
|
|
@@ -20,7 +20,7 @@ exports.SVELTEKIT_AGENT_CONFIG = {
|
|
|
20
20
|
packageDisplayName: 'SvelteKit',
|
|
21
21
|
getVersion: (packageJson) => (0, package_json_1.getPackageVersion)('@sveltejs/kit', packageJson),
|
|
22
22
|
detect: async (options) => {
|
|
23
|
-
const packageJson = await (0,
|
|
23
|
+
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
24
24
|
return packageJson
|
|
25
25
|
? (0, package_json_1.hasPackageInstalled)('@sveltejs/kit', packageJson)
|
|
26
26
|
: false;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svelte-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/svelte/svelte-wizard-agent.ts"],"names":[],"mappings":";;;AAEA,mFAAgF;AAChF,mDAAkD;AAClD,2DAIkC;AAClC,yDAA4D;AAI/C,QAAA,sBAAsB,GAAsC;IACvE,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,uBAAW,CAAC,SAAS;QAClC,OAAO,EAAE,2CAA2C;QACpD,IAAI,EAAE,IAAI;QACV,oBAAoB,EAAE;YACpB,MAAM,EAAE,EAAE,GAAG,EAAE,4BAA4B,EAAE;SAC9C;KACF;IAED,SAAS,EAAE;QACT,WAAW,EAAE,eAAe;QAC5B,kBAAkB,EAAE,WAAW;QAC/B,UAAU,EAAE,CAAC,WAAoB,EAAE,EAAE,CACnC,IAAA,gCAAiB,EAAC,eAAe,EAAE,WAA6B,CAAC;QACnE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxB,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC;YACrD,OAAO,WAAW;gBAChB,CAAC,CAAC,IAAA,kCAAmB,EAAC,eAAe,EAAE,WAAW,CAAC;gBACnD,CAAC,CAAC,KAAK,CAAC;QACZ,CAAC;QACD,cAAc,EAAE,OAAO;QACvB,oBAAoB,EAAE,qDAAyB;KAChD;IAED,WAAW,EAAE;QACX,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE,CAAC,MAAc,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC;YAC7C,kBAAkB,EAAE,MAAM;YAC1B,mBAAmB,EAAE,IAAI;SAC1B,CAAC;KACH;IAED,SAAS,EAAE;QACT,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;KACpB;IAED,OAAO,EAAE;QACP,oBAAoB,EAClB,uLAAuL;QACzL,yBAAyB,EAAE,GAAG,EAAE,CAAC;YAC/B,0FAA0F;SAC3F;KACF;IAED,EAAE,EAAE;QACF,cAAc,EAAE,8BAA8B;QAC9C,wBAAwB,EAAE,CAAC;QAC3B,eAAe,EAAE,GAAG,EAAE,CAAC;YACrB,2CAA2C;YAC3C,6CAA6C;YAC7C,0CAA0C;SAC3C;QACD,iBAAiB,EAAE,GAAG,EAAE,CAAC;YACvB,wDAAwD;YACxD,qDAAqD;SACtD;KACF;CACF,CAAC","sourcesContent":["/* SvelteKit wizard using posthog-agent with PostHog MCP */\nimport type { FrameworkConfig } from '../../lib/framework-config';\nimport { detectNodePackageManagers } from '../../lib/package-manager-detection';\nimport { Integration } from '../../lib/constants';\nimport {\n getPackageVersion,\n hasPackageInstalled,\n type PackageDotJson,\n} from '../../utils/package-json';\nimport { tryGetPackageJson } from '../../utils/setup-utils';\n\ntype SvelteKitContext = Record<string, unknown>;\n\nexport const SVELTEKIT_AGENT_CONFIG: FrameworkConfig<SvelteKitContext> = {\n metadata: {\n name: 'SvelteKit',\n integration: Integration.sveltekit,\n docsUrl: 'https://posthog.com/docs/libraries/svelte',\n beta: true,\n additionalMcpServers: {\n svelte: { url: 'https://mcp.svelte.dev/mcp' },\n },\n },\n\n detection: {\n packageName: '@sveltejs/kit',\n packageDisplayName: 'SvelteKit',\n getVersion: (packageJson: unknown) =>\n getPackageVersion('@sveltejs/kit', packageJson as PackageDotJson),\n detect: async (options) => {\n const packageJson = await tryGetPackageJson(options);\n return packageJson\n ? hasPackageInstalled('@sveltejs/kit', packageJson)\n : false;\n },\n minimumVersion: '2.0.0',\n detectPackageManager: detectNodePackageManagers,\n },\n\n environment: {\n uploadToHosting: true,\n getEnvVars: (apiKey: string, host: string) => ({\n PUBLIC_POSTHOG_KEY: apiKey,\n PUBLIC_POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: () => ({}),\n },\n\n prompts: {\n projectTypeDetection:\n 'This is a JavaScript/TypeScript project using SvelteKit. Look for package.json, svelte.config.js, and lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb) to confirm.',\n getAdditionalContextLines: () => [\n 'Framework docs ID: sveltekit (use posthog://docs/frameworks/sveltekit for documentation)',\n ],\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 8,\n getOutroChanges: () => [\n 'Analyzed your SvelteKit project structure',\n 'Created and configured PostHog initializers',\n 'Integrated PostHog into your application',\n ],\n getOutroNextSteps: () => [\n 'Start your development server to see PostHog in action',\n 'Visit your PostHog dashboard to see incoming events',\n ],\n },\n};\n"]}
|
|
@@ -37,8 +37,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.SWIFT_AGENT_CONFIG = void 0;
|
|
40
|
-
const package_manager_detection_1 = require("
|
|
41
|
-
const constants_1 = require("
|
|
40
|
+
const package_manager_detection_1 = require("../../lib/package-manager-detection");
|
|
41
|
+
const constants_1 = require("../../lib/constants");
|
|
42
42
|
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
43
43
|
const fs = __importStar(require("node:fs"));
|
|
44
44
|
const path = __importStar(require("node:path"));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swift-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/swift/swift-wizard-agent.ts"],"names":[],"mappings":"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","sourcesContent":["/* Swift wizard using posthog-agent with PostHog MCP */\nimport type { WizardOptions } from '../../utils/types';\nimport type { FrameworkConfig } from '../../lib/framework-config';\nimport { swiftPackageManager } from '../../lib/package-manager-detection';\nimport { Integration } from '../../lib/constants';\nimport fg from 'fast-glob';\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport {\n detectSwiftProjectType,\n getSwiftProjectTypeName,\n SwiftProjectType,\n} from './utils';\n\ntype SwiftContext = {\n projectType?: SwiftProjectType;\n};\n\nexport const SWIFT_AGENT_CONFIG: FrameworkConfig<SwiftContext> = {\n metadata: {\n name: 'Swift (iOS/macOS)',\n integration: Integration.swift,\n beta: true,\n docsUrl: 'https://posthog.com/docs/libraries/ios',\n preRunNotice:\n 'Please close the Xcode project before proceeding. Xcode may overwrite changes the wizard makes to project files.',\n gatherContext: async (options: WizardOptions) => {\n const projectType = await detectSwiftProjectType(options);\n return { projectType };\n },\n },\n\n detection: {\n packageName: 'posthog-ios',\n packageDisplayName: 'Swift',\n usesPackageJson: false,\n getVersion: () => undefined,\n detect: async (options) => {\n const { installDir } = options;\n\n // Check for Xcode project\n const xcodeProjects = await fg('*.xcodeproj', {\n cwd: installDir,\n onlyDirectories: true,\n });\n\n if (xcodeProjects.length > 0) {\n // Verify it contains Swift source files\n const swiftFiles = await fg('**/*.swift', {\n cwd: installDir,\n ignore: [\n '**/.build/**',\n '**/DerivedData/**',\n '**/build/**',\n '**/*.xcodeproj/**',\n '**/Pods/**',\n ],\n });\n if (swiftFiles.length > 0) {\n return true;\n }\n }\n\n // Check for Swift Package Manager project\n const packageSwiftPath = path.join(installDir, 'Package.swift');\n if (fs.existsSync(packageSwiftPath)) {\n return true;\n }\n\n return false;\n },\n detectPackageManager: swiftPackageManager,\n },\n\n environment: {\n uploadToHosting: false,\n getEnvVars: (apiKey: string, host: string) => ({\n POSTHOG_API_KEY: apiKey,\n POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: (context) => ({\n projectType: context.projectType || 'unknown',\n }),\n },\n\n prompts: {\n projectTypeDetection:\n 'This is a Swift project. Look for .xcodeproj directories, Package.swift, and .swift source files to confirm. Check for SwiftUI or UIKit imports to determine the UI framework.',\n packageInstallation:\n 'Add the posthog-ios package via Swift Package Manager. For Xcode projects, add XCRemoteSwiftPackageReference and XCSwiftPackageProductDependency to the .pbxproj file. For Swift packages, add the dependency to Package.swift.',\n getAdditionalContextLines: (context) => {\n const projectTypeName = context.projectType\n ? getSwiftProjectTypeName(context.projectType)\n : 'unknown';\n\n const lines = [\n `Project type: ${projectTypeName}`,\n `Framework docs ID: swift (use posthog://docs/frameworks/swift for documentation)`,\n ];\n\n return lines;\n },\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 5,\n getOutroChanges: (context) => {\n const projectTypeName = context.projectType\n ? getSwiftProjectTypeName(context.projectType)\n : 'Swift';\n\n const changes = [\n `Analyzed your ${projectTypeName} project structure`,\n `Added the PostHog iOS SDK via Swift Package Manager`,\n `Configured PostHog initialization in your app entry point`,\n `Added event capture and user identification`,\n ];\n\n return changes;\n },\n getOutroNextSteps: () => [\n 'Set POSTHOG_API_KEY and POSTHOG_HOST in your Xcode scheme environment variables',\n 'Build and run your app to see PostHog in action',\n 'Visit your PostHog dashboard to see incoming events',\n ],\n },\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/frameworks/swift/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,0DASC;AAED,wDAiDC;AAtED,0DAA2B;AAC3B,4CAA8B;AAC9B,gDAAkC;AAElC,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,mCAAe,CAAA;IACf,+BAAW,CAAA;AACb,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B;AAED,SAAgB,uBAAuB,CAAC,WAA6B;IACnE,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,SAAS,CAAC;QACnB,KAAK,gBAAgB,CAAC,KAAK;YACzB,OAAO,OAAO,CAAC;QACjB,KAAK,gBAAgB,CAAC,GAAG;YACvB,OAAO,eAAe,CAAC;IAC3B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,OAAsB;IAEtB,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE/B,yEAAyE;IACzE,MAAM,eAAe,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;IAC9E,MAAM,aAAa,GAAG,MAAM,IAAA,mBAAE,EAAC,aAAa,EAAE;QAC5C,GAAG,EAAE,UAAU;QACf,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;IAEH,IAAI,eAAe,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,gBAAgB,CAAC,GAAG,CAAC;IAC9B,CAAC;IAED,wDAAwD;IACxD,MAAM,UAAU,GAAG,MAAM,IAAA,mBAAE,EAAC,YAAY,EAAE;QACxC,GAAG,EAAE,UAAU;QACf,MAAM,EAAE;YACN,cAAc;YACd,mBAAmB;YACnB,aAAa;YACb,mBAAmB;YACnB,YAAY;SACb;KACF,CAAC,CAAC;IAEH,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YACtE,IAAI,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACvC,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACrC,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,IAAI,UAAU;QAAE,OAAO,gBAAgB,CAAC,OAAO,CAAC;IAChD,IAAI,QAAQ;QAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC;IAE5C,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import type { WizardOptions } from '../../utils/types';\nimport fg from 'fast-glob';\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nexport enum SwiftProjectType {\n SWIFTUI = 'swiftui',\n UIKIT = 'uikit',\n SPM = 'spm',\n}\n\nexport function getSwiftProjectTypeName(projectType: SwiftProjectType): string {\n switch (projectType) {\n case SwiftProjectType.SWIFTUI:\n return 'SwiftUI';\n case SwiftProjectType.UIKIT:\n return 'UIKit';\n case SwiftProjectType.SPM:\n return 'Swift Package';\n }\n}\n\nexport async function detectSwiftProjectType(\n options: WizardOptions,\n): Promise<SwiftProjectType | undefined> {\n const { installDir } = options;\n\n // Check if this is a pure SPM package (Package.swift without .xcodeproj)\n const hasPackageSwift = fs.existsSync(path.join(installDir, 'Package.swift'));\n const xcodeProjects = await fg('*.xcodeproj', {\n cwd: installDir,\n onlyDirectories: true,\n });\n\n if (hasPackageSwift && xcodeProjects.length === 0) {\n return SwiftProjectType.SPM;\n }\n\n // Check Swift source files for SwiftUI vs UIKit imports\n const swiftFiles = await fg('**/*.swift', {\n cwd: installDir,\n ignore: [\n '**/.build/**',\n '**/DerivedData/**',\n '**/build/**',\n '**/*.xcodeproj/**',\n '**/Pods/**',\n ],\n });\n\n let hasSwiftUI = false;\n let hasUIKit = false;\n\n for (const file of swiftFiles) {\n try {\n const content = fs.readFileSync(path.join(installDir, file), 'utf-8');\n if (content.includes('import SwiftUI')) {\n hasSwiftUI = true;\n }\n if (content.includes('import UIKit')) {\n hasUIKit = true;\n }\n } catch {\n continue;\n }\n }\n\n if (hasSwiftUI) return SwiftProjectType.SWIFTUI;\n if (hasUIKit) return SwiftProjectType.UIKIT;\n\n return undefined;\n}\n"]}
|
package/dist/src/{tanstack-router → frameworks/tanstack-router}/tanstack-router-wizard-agent.js
RENAMED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TANSTACK_ROUTER_AGENT_CONFIG = void 0;
|
|
4
|
-
const package_manager_detection_1 = require("
|
|
5
|
-
const constants_1 = require("
|
|
6
|
-
const package_json_1 = require("
|
|
7
|
-
const
|
|
4
|
+
const package_manager_detection_1 = require("../../lib/package-manager-detection");
|
|
5
|
+
const constants_1 = require("../../lib/constants");
|
|
6
|
+
const package_json_1 = require("../../utils/package-json");
|
|
7
|
+
const setup_utils_1 = require("../../utils/setup-utils");
|
|
8
|
+
const ui_1 = require("../../ui");
|
|
8
9
|
const utils_1 = require("./utils");
|
|
9
10
|
exports.TANSTACK_ROUTER_AGENT_CONFIG = {
|
|
10
11
|
metadata: {
|
|
@@ -13,7 +14,11 @@ exports.TANSTACK_ROUTER_AGENT_CONFIG = {
|
|
|
13
14
|
docsUrl: 'https://posthog.com/docs/libraries/react',
|
|
14
15
|
gatherContext: async (options) => {
|
|
15
16
|
const routerMode = await (0, utils_1.getTanStackRouterMode)(options);
|
|
16
|
-
|
|
17
|
+
if (routerMode) {
|
|
18
|
+
(0, ui_1.getUI)().setDetectedFramework(`TanStack Router ${(0, utils_1.getTanStackRouterModeName)(routerMode)}`);
|
|
19
|
+
return { routerMode };
|
|
20
|
+
}
|
|
21
|
+
return {};
|
|
17
22
|
},
|
|
18
23
|
},
|
|
19
24
|
detection: {
|
|
@@ -23,11 +28,13 @@ exports.TANSTACK_ROUTER_AGENT_CONFIG = {
|
|
|
23
28
|
getVersionBucket: utils_1.getTanStackRouterVersionBucket,
|
|
24
29
|
minimumVersion: '1.0.0',
|
|
25
30
|
getInstalledVersion: async (options) => {
|
|
26
|
-
const packageJson = await (0,
|
|
27
|
-
return
|
|
31
|
+
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
32
|
+
return packageJson
|
|
33
|
+
? (0, package_json_1.getPackageVersion)('@tanstack/react-router', packageJson)
|
|
34
|
+
: undefined;
|
|
28
35
|
},
|
|
29
36
|
detect: async (options) => {
|
|
30
|
-
const packageJson = await (0,
|
|
37
|
+
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
31
38
|
if (!packageJson) {
|
|
32
39
|
return false;
|
|
33
40
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tanstack-router-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/tanstack-router/tanstack-router-wizard-agent.ts"],"names":[],"mappings":"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","sourcesContent":["/* TanStack Router wizard using posthog-agent with PostHog MCP */\nimport type { WizardOptions } from '../../utils/types';\nimport type { FrameworkConfig } from '../../lib/framework-config';\nimport { detectNodePackageManagers } from '../../lib/package-manager-detection';\nimport { Integration } from '../../lib/constants';\nimport {\n getPackageVersion,\n hasPackageInstalled,\n type PackageDotJson,\n} from '../../utils/package-json';\nimport { tryGetPackageJson } from '../../utils/setup-utils';\nimport { getUI } from '../../ui';\nimport {\n getTanStackRouterMode,\n getTanStackRouterModeName,\n getTanStackRouterVersionBucket,\n TanStackRouterMode,\n} from './utils';\n\ntype TanStackRouterContext = {\n routerMode?: TanStackRouterMode;\n};\n\nexport const TANSTACK_ROUTER_AGENT_CONFIG: FrameworkConfig<TanStackRouterContext> =\n {\n metadata: {\n name: 'React (TanStack Router)',\n integration: Integration.tanstackRouter,\n docsUrl: 'https://posthog.com/docs/libraries/react',\n gatherContext: async (options: WizardOptions) => {\n const routerMode = await getTanStackRouterMode(options);\n if (routerMode) {\n getUI().setDetectedFramework(\n `TanStack Router ${getTanStackRouterModeName(routerMode)}`,\n );\n return { routerMode };\n }\n return {};\n },\n },\n\n detection: {\n packageName: '@tanstack/react-router',\n packageDisplayName: 'TanStack Router',\n getVersion: (packageJson: unknown) =>\n getPackageVersion(\n '@tanstack/react-router',\n packageJson as PackageDotJson,\n ),\n getVersionBucket: getTanStackRouterVersionBucket,\n minimumVersion: '1.0.0',\n getInstalledVersion: async (options: WizardOptions) => {\n const packageJson = await tryGetPackageJson(options);\n return packageJson\n ? getPackageVersion('@tanstack/react-router', packageJson)\n : undefined;\n },\n detect: async (options) => {\n const packageJson = await tryGetPackageJson(options);\n if (!packageJson) {\n return false;\n }\n // Exclude TanStack Start projects (they have their own integration)\n if (hasPackageInstalled('@tanstack/react-start', packageJson)) {\n return false;\n }\n return hasPackageInstalled('@tanstack/react-router', packageJson);\n },\n detectPackageManager: detectNodePackageManagers,\n },\n\n environment: {\n uploadToHosting: false,\n getEnvVars: (apiKey: string, host: string) => ({\n VITE_PUBLIC_POSTHOG_KEY: apiKey,\n VITE_PUBLIC_POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: (context) => ({\n routerMode: context.routerMode || 'unknown',\n }),\n },\n\n prompts: {\n projectTypeDetection:\n 'This is a JavaScript/TypeScript project. Look for package.json and lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb) to confirm.',\n getAdditionalContextLines: (context) => {\n const routerMode = context.routerMode;\n const modeName = routerMode\n ? getTanStackRouterModeName(routerMode)\n : 'unknown';\n\n // Map router mode to framework ID for MCP docs resource\n const frameworkIdMap: Record<TanStackRouterMode, string> = {\n [TanStackRouterMode.FILE_BASED]: 'react-tanstack-router-file-based',\n [TanStackRouterMode.CODE_BASED]: 'react-tanstack-router-code-based',\n };\n\n const frameworkId = routerMode\n ? frameworkIdMap[routerMode]\n : 'react-tanstack-router-file-based';\n\n return [\n `Router mode: ${modeName}`,\n `Framework docs ID: ${frameworkId} (use posthog://docs/frameworks/${frameworkId} for documentation)`,\n ];\n },\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 8,\n getOutroChanges: (context) => {\n const modeName = context.routerMode\n ? getTanStackRouterModeName(context.routerMode)\n : 'TanStack Router';\n return [\n `Analyzed your React (TanStack Router) project structure (${modeName})`,\n `Created and configured PostHog initializers`,\n `Integrated PostHog into your application`,\n ];\n },\n getOutroNextSteps: () => [\n 'Start your development server to see PostHog in action',\n 'Visit your PostHog dashboard to see incoming events',\n ],\n },\n };\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { WizardOptions } from '../../utils/types';
|
|
2
|
+
export declare enum TanStackRouterMode {
|
|
3
|
+
FILE_BASED = "file-based",
|
|
4
|
+
CODE_BASED = "code-based"
|
|
5
|
+
}
|
|
6
|
+
export declare const getTanStackRouterVersionBucket: (version: string | undefined) => string;
|
|
7
|
+
/**
|
|
8
|
+
* Detect TanStack Router mode. Pure — returns null if ambiguous.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getTanStackRouterMode(options: WizardOptions): Promise<TanStackRouterMode | null>;
|
|
11
|
+
export declare function getTanStackRouterModeName(mode: TanStackRouterMode): string;
|