@posthog/wizard 2.9.0 → 2.10.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 +40 -0
- package/dist/McpScreen-BmHapIaP.js +3357 -0
- package/dist/McpScreen-BmHapIaP.js.map +1 -0
- package/dist/add-mcp-server-to-clients-DZtISNrs.js +455 -0
- package/dist/add-mcp-server-to-clients-DZtISNrs.js.map +1 -0
- package/dist/agent-runner-CGwrcr57.js +1112 -0
- package/dist/agent-runner-CGwrcr57.js.map +1 -0
- package/dist/agent-skill-BVjJqol6.js +59 -0
- package/dist/agent-skill-BVjJqol6.js.map +1 -0
- package/dist/analytics-C4jO5Qda.js +207 -0
- package/dist/analytics-C4jO5Qda.js.map +1 -0
- package/dist/analytics-CpjaBpx6.js +2 -0
- package/dist/bin.d.ts +1 -2
- package/dist/bin.js +635 -524
- package/dist/bin.js.map +1 -1
- package/dist/craft-pre-release.sh +10 -0
- package/dist/debug-CIyf0ZGx.js +2 -0
- package/dist/debug-CyJ_3dTP.js +201 -0
- package/dist/debug-CyJ_3dTP.js.map +1 -0
- package/dist/defaults-DoVkE0gW.js +234 -0
- package/dist/defaults-DoVkE0gW.js.map +1 -0
- package/dist/detection-CkLpxBCD.js +122 -0
- package/dist/detection-CkLpxBCD.js.map +1 -0
- package/dist/env-api-key-K8TdTDII.js +20 -0
- package/dist/env-api-key-K8TdTDII.js.map +1 -0
- package/dist/file-utils-BWneZy6p.js +38 -0
- package/dist/file-utils-BWneZy6p.js.map +1 -0
- package/dist/generate-version.cjs +11 -0
- package/dist/package-json-BQgl5C3Z.js +2 -0
- package/dist/package-json-Ctq6LSl8.js +25 -0
- package/dist/package-json-Ctq6LSl8.js.map +1 -0
- package/dist/package-manager-nUQ-ebjr.js +222 -0
- package/dist/package-manager-nUQ-ebjr.js.map +1 -0
- package/dist/posthog-integration-BzxdDK4z.js +230 -0
- package/dist/posthog-integration-BzxdDK4z.js.map +1 -0
- package/dist/readiness-Dn7eq8NE.js +2156 -0
- package/dist/readiness-Dn7eq8NE.js.map +1 -0
- package/dist/registry-s55_iuJT.js +2922 -0
- package/dist/registry-s55_iuJT.js.map +1 -0
- package/dist/rolldown-runtime-B_-DWIq7.js +15 -0
- package/dist/router-D5A1Sb4p.js +141 -0
- package/dist/router-D5A1Sb4p.js.map +1 -0
- package/dist/setup-utils-CdDnllRW.js +928 -0
- package/dist/setup-utils-CdDnllRW.js.map +1 -0
- package/dist/smoke-test-ci.sh +165 -0
- package/dist/start-playground-B8qCLu7U.js +1005 -0
- package/dist/start-playground-B8qCLu7U.js.map +1 -0
- package/dist/start-tui-PygiIyNC.js +1887 -0
- package/dist/start-tui-PygiIyNC.js.map +1 -0
- package/dist/steps-CySv8XdD.js +146 -0
- package/dist/steps-CySv8XdD.js.map +1 -0
- package/dist/telemetry-Ct_GGkSO.js +13 -0
- package/dist/telemetry-Ct_GGkSO.js.map +1 -0
- package/dist/wizard-abort-7HUIsqv1.js +39 -0
- package/dist/wizard-abort-7HUIsqv1.js.map +1 -0
- package/dist/wizard-abort-Dhjb2o08.js +2 -0
- package/dist/wizard-session-Db6R023m.js +62 -0
- package/dist/wizard-session-Db6R023m.js.map +1 -0
- package/dist/wizard-session-y7nf6aKH.js +2 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +16 -8
- package/dist/src/__tests__/cli.test.d.ts +0 -1
- package/dist/src/__tests__/cli.test.js +0 -256
- package/dist/src/__tests__/cli.test.js.map +0 -1
- package/dist/src/__tests__/package-json.test.d.ts +0 -1
- package/dist/src/__tests__/package-json.test.js +0 -173
- package/dist/src/__tests__/package-json.test.js.map +0 -1
- package/dist/src/__tests__/wizard-abort.test.d.ts +0 -1
- package/dist/src/__tests__/wizard-abort.test.js +0 -148
- package/dist/src/__tests__/wizard-abort.test.js.map +0 -1
- package/dist/src/frameworks/android/android-wizard-agent.d.ts +0 -6
- package/dist/src/frameworks/android/android-wizard-agent.js +0 -142
- package/dist/src/frameworks/android/android-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/android/utils.d.ts +0 -11
- package/dist/src/frameworks/android/utils.js +0 -97
- package/dist/src/frameworks/android/utils.js.map +0 -1
- package/dist/src/frameworks/angular/angular-wizard-agent.d.ts +0 -4
- package/dist/src/frameworks/angular/angular-wizard-agent.js +0 -65
- package/dist/src/frameworks/angular/angular-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/angular/utils.d.ts +0 -4
- package/dist/src/frameworks/angular/utils.js +0 -9
- package/dist/src/frameworks/angular/utils.js.map +0 -1
- package/dist/src/frameworks/astro/astro-wizard-agent.d.ts +0 -7
- package/dist/src/frameworks/astro/astro-wizard-agent.js +0 -102
- package/dist/src/frameworks/astro/astro-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/astro/utils.d.ts +0 -14
- package/dist/src/frameworks/astro/utils.js +0 -114
- package/dist/src/frameworks/astro/utils.js.map +0 -1
- package/dist/src/frameworks/django/django-wizard-agent.d.ts +0 -8
- package/dist/src/frameworks/django/django-wizard-agent.js +0 -173
- package/dist/src/frameworks/django/django-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/django/utils.d.ts +0 -31
- package/dist/src/frameworks/django/utils.js +0 -306
- package/dist/src/frameworks/django/utils.js.map +0 -1
- package/dist/src/frameworks/fastapi/fastapi-wizard-agent.d.ts +0 -5
- package/dist/src/frameworks/fastapi/fastapi-wizard-agent.js +0 -191
- package/dist/src/frameworks/fastapi/fastapi-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/fastapi/utils.d.ts +0 -26
- package/dist/src/frameworks/fastapi/utils.js +0 -258
- package/dist/src/frameworks/fastapi/utils.js.map +0 -1
- package/dist/src/frameworks/flask/flask-wizard-agent.d.ts +0 -8
- package/dist/src/frameworks/flask/flask-wizard-agent.js +0 -179
- package/dist/src/frameworks/flask/flask-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/flask/utils.d.ts +0 -28
- package/dist/src/frameworks/flask/utils.js +0 -344
- package/dist/src/frameworks/flask/utils.js.map +0 -1
- package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.d.ts +0 -4
- package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.js +0 -61
- package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/javascript-web/javascript-web-wizard-agent.d.ts +0 -3
- package/dist/src/frameworks/javascript-web/javascript-web-wizard-agent.js +0 -152
- package/dist/src/frameworks/javascript-web/javascript-web-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/javascript-web/utils.d.ts +0 -28
- package/dist/src/frameworks/javascript-web/utils.js +0 -147
- package/dist/src/frameworks/javascript-web/utils.js.map +0 -1
- package/dist/src/frameworks/laravel/laravel-wizard-agent.d.ts +0 -10
- package/dist/src/frameworks/laravel/laravel-wizard-agent.js +0 -182
- package/dist/src/frameworks/laravel/laravel-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/laravel/utils.d.ts +0 -38
- package/dist/src/frameworks/laravel/utils.js +0 -238
- package/dist/src/frameworks/laravel/utils.js.map +0 -1
- package/dist/src/frameworks/nextjs/nextjs-wizard-agent.d.ts +0 -7
- package/dist/src/frameworks/nextjs/nextjs-wizard-agent.js +0 -94
- package/dist/src/frameworks/nextjs/nextjs-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/nextjs/utils.d.ts +0 -12
- package/dist/src/frameworks/nextjs/utils.js +0 -52
- package/dist/src/frameworks/nextjs/utils.js.map +0 -1
- package/dist/src/frameworks/nuxt/nuxt-wizard-agent.d.ts +0 -6
- package/dist/src/frameworks/nuxt/nuxt-wizard-agent.js +0 -77
- package/dist/src/frameworks/nuxt/nuxt-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/python/python-wizard-agent.d.ts +0 -7
- package/dist/src/frameworks/python/python-wizard-agent.js +0 -195
- package/dist/src/frameworks/python/python-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/python/utils.d.ts +0 -28
- package/dist/src/frameworks/python/utils.js +0 -147
- package/dist/src/frameworks/python/utils.js.map +0 -1
- package/dist/src/frameworks/rails/rails-wizard-agent.d.ts +0 -8
- package/dist/src/frameworks/rails/rails-wizard-agent.js +0 -90
- package/dist/src/frameworks/rails/rails-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/rails/utils.d.ts +0 -37
- package/dist/src/frameworks/rails/utils.js +0 -187
- package/dist/src/frameworks/rails/utils.js.map +0 -1
- package/dist/src/frameworks/react-native/react-native-wizard-agent.d.ts +0 -7
- package/dist/src/frameworks/react-native/react-native-wizard-agent.js +0 -89
- package/dist/src/frameworks/react-native/react-native-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/react-native/utils.d.ts +0 -8
- package/dist/src/frameworks/react-native/utils.js +0 -28
- package/dist/src/frameworks/react-native/utils.js.map +0 -1
- package/dist/src/frameworks/react-router/react-router-wizard-agent.d.ts +0 -7
- package/dist/src/frameworks/react-router/react-router-wizard-agent.js +0 -94
- package/dist/src/frameworks/react-router/react-router-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/react-router/utils.d.ts +0 -13
- package/dist/src/frameworks/react-router/utils.js +0 -161
- package/dist/src/frameworks/react-router/utils.js.map +0 -1
- package/dist/src/frameworks/ruby/ruby-wizard-agent.d.ts +0 -7
- package/dist/src/frameworks/ruby/ruby-wizard-agent.js +0 -113
- package/dist/src/frameworks/ruby/ruby-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/ruby/utils.d.ts +0 -25
- package/dist/src/frameworks/ruby/utils.js +0 -158
- package/dist/src/frameworks/ruby/utils.js.map +0 -1
- package/dist/src/frameworks/svelte/svelte-wizard-agent.d.ts +0 -4
- package/dist/src/frameworks/svelte/svelte-wizard-agent.js +0 -61
- package/dist/src/frameworks/svelte/svelte-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/swift/swift-wizard-agent.d.ts +0 -7
- package/dist/src/frameworks/swift/swift-wizard-agent.js +0 -143
- package/dist/src/frameworks/swift/swift-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/swift/utils.d.ts +0 -8
- package/dist/src/frameworks/swift/utils.js +0 -105
- package/dist/src/frameworks/swift/utils.js.map +0 -1
- package/dist/src/frameworks/tanstack-router/tanstack-router-wizard-agent.d.ts +0 -7
- package/dist/src/frameworks/tanstack-router/tanstack-router-wizard-agent.js +0 -96
- package/dist/src/frameworks/tanstack-router/tanstack-router-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/tanstack-router/utils.d.ts +0 -11
- package/dist/src/frameworks/tanstack-router/utils.js +0 -149
- package/dist/src/frameworks/tanstack-router/utils.js.map +0 -1
- package/dist/src/frameworks/tanstack-start/tanstack-start-wizard-agent.d.ts +0 -4
- package/dist/src/frameworks/tanstack-start/tanstack-start-wizard-agent.js +0 -64
- package/dist/src/frameworks/tanstack-start/tanstack-start-wizard-agent.js.map +0 -1
- package/dist/src/frameworks/tanstack-start/utils.d.ts +0 -4
- package/dist/src/frameworks/tanstack-start/utils.js +0 -9
- package/dist/src/frameworks/tanstack-start/utils.js.map +0 -1
- package/dist/src/frameworks/vue/vue-wizard-agent.d.ts +0 -4
- package/dist/src/frameworks/vue/vue-wizard-agent.js +0 -62
- package/dist/src/frameworks/vue/vue-wizard-agent.js.map +0 -1
- package/dist/src/lib/__tests__/agent-interface.test.d.ts +0 -1
- package/dist/src/lib/__tests__/agent-interface.test.js +0 -317
- package/dist/src/lib/__tests__/agent-interface.test.js.map +0 -1
- package/dist/src/lib/__tests__/cloudflare-detection.test.d.ts +0 -1
- package/dist/src/lib/__tests__/cloudflare-detection.test.js +0 -119
- package/dist/src/lib/__tests__/cloudflare-detection.test.js.map +0 -1
- package/dist/src/lib/__tests__/wizard-tools.test.d.ts +0 -1
- package/dist/src/lib/__tests__/wizard-tools.test.js +0 -200
- package/dist/src/lib/__tests__/wizard-tools.test.js.map +0 -1
- package/dist/src/lib/__tests__/yara-hooks.test.d.ts +0 -1
- package/dist/src/lib/__tests__/yara-hooks.test.js +0 -432
- package/dist/src/lib/__tests__/yara-hooks.test.js.map +0 -1
- package/dist/src/lib/__tests__/yara-scanner.test.d.ts +0 -1
- package/dist/src/lib/__tests__/yara-scanner.test.js +0 -613
- package/dist/src/lib/__tests__/yara-scanner.test.js.map +0 -1
- package/dist/src/lib/agent/__tests__/agent-prompt.test.d.ts +0 -1
- package/dist/src/lib/agent/__tests__/agent-prompt.test.js +0 -57
- package/dist/src/lib/agent/__tests__/agent-prompt.test.js.map +0 -1
- package/dist/src/lib/agent/agent-interface.d.ts +0 -171
- package/dist/src/lib/agent/agent-interface.js +0 -1082
- package/dist/src/lib/agent/agent-interface.js.map +0 -1
- package/dist/src/lib/agent/agent-prompt.d.ts +0 -23
- package/dist/src/lib/agent/agent-prompt.js +0 -47
- package/dist/src/lib/agent/agent-prompt.js.map +0 -1
- package/dist/src/lib/agent/agent-runner.d.ts +0 -78
- package/dist/src/lib/agent/agent-runner.js +0 -323
- package/dist/src/lib/agent/agent-runner.js.map +0 -1
- package/dist/src/lib/agent/commandments.d.ts +0 -1
- package/dist/src/lib/agent/commandments.js +0 -26
- package/dist/src/lib/agent/commandments.js.map +0 -1
- package/dist/src/lib/api.d.ts +0 -75
- package/dist/src/lib/api.js +0 -105
- package/dist/src/lib/api.js.map +0 -1
- package/dist/src/lib/cloudflare-detection.d.ts +0 -14
- package/dist/src/lib/cloudflare-detection.js +0 -74
- package/dist/src/lib/cloudflare-detection.js.map +0 -1
- package/dist/src/lib/constants.d.ts +0 -74
- package/dist/src/lib/constants.js +0 -98
- package/dist/src/lib/constants.js.map +0 -1
- package/dist/src/lib/detection/__tests__/context.test.d.ts +0 -1
- package/dist/src/lib/detection/__tests__/context.test.js +0 -72
- package/dist/src/lib/detection/__tests__/context.test.js.map +0 -1
- package/dist/src/lib/detection/__tests__/features.test.d.ts +0 -1
- package/dist/src/lib/detection/__tests__/features.test.js +0 -75
- package/dist/src/lib/detection/__tests__/features.test.js.map +0 -1
- package/dist/src/lib/detection/__tests__/package-manager.test.d.ts +0 -1
- package/dist/src/lib/detection/__tests__/package-manager.test.js +0 -195
- package/dist/src/lib/detection/__tests__/package-manager.test.js.map +0 -1
- package/dist/src/lib/detection/context.d.ts +0 -31
- package/dist/src/lib/detection/context.js +0 -92
- package/dist/src/lib/detection/context.js.map +0 -1
- package/dist/src/lib/detection/features.d.ts +0 -16
- package/dist/src/lib/detection/features.js +0 -56
- package/dist/src/lib/detection/features.js.map +0 -1
- package/dist/src/lib/detection/framework.d.ts +0 -14
- package/dist/src/lib/detection/framework.js +0 -35
- package/dist/src/lib/detection/framework.js.map +0 -1
- package/dist/src/lib/detection/index.d.ts +0 -3
- package/dist/src/lib/detection/index.js +0 -11
- package/dist/src/lib/detection/index.js.map +0 -1
- package/dist/src/lib/detection/package-manager.d.ts +0 -37
- package/dist/src/lib/detection/package-manager.js +0 -183
- package/dist/src/lib/detection/package-manager.js.map +0 -1
- package/dist/src/lib/framework-config.d.ts +0 -175
- package/dist/src/lib/framework-config.js +0 -22
- package/dist/src/lib/framework-config.js.map +0 -1
- package/dist/src/lib/health-checks/__tests__/health-checks.test.d.ts +0 -18
- package/dist/src/lib/health-checks/__tests__/health-checks.test.js +0 -759
- package/dist/src/lib/health-checks/__tests__/health-checks.test.js.map +0 -1
- package/dist/src/lib/health-checks/endpoints.d.ts +0 -4
- package/dist/src/lib/health-checks/endpoints.js +0 -49
- package/dist/src/lib/health-checks/endpoints.js.map +0 -1
- package/dist/src/lib/health-checks/index.d.ts +0 -4
- package/dist/src/lib/health-checks/index.js +0 -24
- package/dist/src/lib/health-checks/index.js.map +0 -1
- package/dist/src/lib/health-checks/readiness.d.ts +0 -29
- package/dist/src/lib/health-checks/readiness.js +0 -188
- package/dist/src/lib/health-checks/readiness.js.map +0 -1
- package/dist/src/lib/health-checks/statuspage.d.ts +0 -9
- package/dist/src/lib/health-checks/statuspage.js +0 -105
- package/dist/src/lib/health-checks/statuspage.js.map +0 -1
- package/dist/src/lib/health-checks/types.d.ts +0 -32
- package/dist/src/lib/health-checks/types.js +0 -10
- package/dist/src/lib/health-checks/types.js.map +0 -1
- package/dist/src/lib/helper-functions.d.ts +0 -1
- package/dist/src/lib/helper-functions.js +0 -6
- package/dist/src/lib/helper-functions.js.map +0 -1
- package/dist/src/lib/middleware/benchmark.d.ts +0 -54
- package/dist/src/lib/middleware/benchmark.js +0 -45
- package/dist/src/lib/middleware/benchmark.js.map +0 -1
- package/dist/src/lib/middleware/benchmarks/cache-tracker.d.ts +0 -44
- package/dist/src/lib/middleware/benchmarks/cache-tracker.js +0 -81
- package/dist/src/lib/middleware/benchmarks/cache-tracker.js.map +0 -1
- package/dist/src/lib/middleware/benchmarks/compaction-tracker.d.ts +0 -29
- package/dist/src/lib/middleware/benchmarks/compaction-tracker.js +0 -60
- package/dist/src/lib/middleware/benchmarks/compaction-tracker.js.map +0 -1
- package/dist/src/lib/middleware/benchmarks/context-size-tracker.d.ts +0 -26
- package/dist/src/lib/middleware/benchmarks/context-size-tracker.js +0 -56
- package/dist/src/lib/middleware/benchmarks/context-size-tracker.js.map +0 -1
- package/dist/src/lib/middleware/benchmarks/cost-tracker.d.ts +0 -16
- package/dist/src/lib/middleware/benchmarks/cost-tracker.js +0 -76
- package/dist/src/lib/middleware/benchmarks/cost-tracker.js.map +0 -1
- package/dist/src/lib/middleware/benchmarks/duration-tracker.d.ts +0 -20
- package/dist/src/lib/middleware/benchmarks/duration-tracker.js +0 -40
- package/dist/src/lib/middleware/benchmarks/duration-tracker.js.map +0 -1
- package/dist/src/lib/middleware/benchmarks/index.d.ts +0 -9
- package/dist/src/lib/middleware/benchmarks/index.js +0 -60
- package/dist/src/lib/middleware/benchmarks/index.js.map +0 -1
- package/dist/src/lib/middleware/benchmarks/json-writer.d.ts +0 -15
- package/dist/src/lib/middleware/benchmarks/json-writer.js +0 -144
- package/dist/src/lib/middleware/benchmarks/json-writer.js.map +0 -1
- package/dist/src/lib/middleware/benchmarks/summary.d.ts +0 -9
- package/dist/src/lib/middleware/benchmarks/summary.js +0 -102
- package/dist/src/lib/middleware/benchmarks/summary.js.map +0 -1
- package/dist/src/lib/middleware/benchmarks/token-tracker.d.ts +0 -40
- package/dist/src/lib/middleware/benchmarks/token-tracker.js +0 -77
- package/dist/src/lib/middleware/benchmarks/token-tracker.js.map +0 -1
- package/dist/src/lib/middleware/benchmarks/turn-counter.d.ts +0 -34
- package/dist/src/lib/middleware/benchmarks/turn-counter.js +0 -59
- package/dist/src/lib/middleware/benchmarks/turn-counter.js.map +0 -1
- package/dist/src/lib/middleware/config.d.ts +0 -24
- package/dist/src/lib/middleware/config.js +0 -78
- package/dist/src/lib/middleware/config.js.map +0 -1
- package/dist/src/lib/middleware/index.d.ts +0 -11
- package/dist/src/lib/middleware/index.js +0 -18
- package/dist/src/lib/middleware/index.js.map +0 -1
- package/dist/src/lib/middleware/phase-detector.d.ts +0 -7
- package/dist/src/lib/middleware/phase-detector.js +0 -64
- package/dist/src/lib/middleware/phase-detector.js.map +0 -1
- package/dist/src/lib/middleware/pipeline.d.ts +0 -29
- package/dist/src/lib/middleware/pipeline.js +0 -82
- package/dist/src/lib/middleware/pipeline.js.map +0 -1
- package/dist/src/lib/middleware/types.d.ts +0 -40
- package/dist/src/lib/middleware/types.js +0 -9
- package/dist/src/lib/middleware/types.js.map +0 -1
- package/dist/src/lib/registry.d.ts +0 -3
- package/dist/src/lib/registry.js +0 -49
- package/dist/src/lib/registry.js.map +0 -1
- package/dist/src/lib/safe-tools.d.ts +0 -2
- package/dist/src/lib/safe-tools.js +0 -215
- package/dist/src/lib/safe-tools.js.map +0 -1
- package/dist/src/lib/skill-install.d.ts +0 -10
- package/dist/src/lib/skill-install.js +0 -23
- package/dist/src/lib/skill-install.js.map +0 -1
- package/dist/src/lib/version.d.ts +0 -1
- package/dist/src/lib/version.js +0 -6
- package/dist/src/lib/version.js.map +0 -1
- package/dist/src/lib/wizard-session.d.ts +0 -146
- package/dist/src/lib/wizard-session.js +0 -116
- package/dist/src/lib/wizard-session.js.map +0 -1
- package/dist/src/lib/wizard-tools.d.ts +0 -91
- package/dist/src/lib/wizard-tools.js +0 -389
- package/dist/src/lib/wizard-tools.js.map +0 -1
- package/dist/src/lib/workflows/__tests__/agent-skill.test.d.ts +0 -1
- package/dist/src/lib/workflows/__tests__/agent-skill.test.js +0 -66
- package/dist/src/lib/workflows/__tests__/agent-skill.test.js.map +0 -1
- package/dist/src/lib/workflows/__tests__/revenue-analytics-detect.test.d.ts +0 -1
- package/dist/src/lib/workflows/__tests__/revenue-analytics-detect.test.js +0 -101
- package/dist/src/lib/workflows/__tests__/revenue-analytics-detect.test.js.map +0 -1
- package/dist/src/lib/workflows/__tests__/workflow-registry.test.d.ts +0 -1
- package/dist/src/lib/workflows/__tests__/workflow-registry.test.js +0 -32
- package/dist/src/lib/workflows/__tests__/workflow-registry.test.js.map +0 -1
- package/dist/src/lib/workflows/__tests__/workflow-step.test.d.ts +0 -1
- package/dist/src/lib/workflows/__tests__/workflow-step.test.js +0 -54
- package/dist/src/lib/workflows/__tests__/workflow-step.test.js.map +0 -1
- package/dist/src/lib/workflows/agent-skill/index.d.ts +0 -44
- package/dist/src/lib/workflows/agent-skill/index.js +0 -47
- package/dist/src/lib/workflows/agent-skill/index.js.map +0 -1
- package/dist/src/lib/workflows/agent-skill/steps.d.ts +0 -8
- package/dist/src/lib/workflows/agent-skill/steps.js +0 -32
- package/dist/src/lib/workflows/agent-skill/steps.js.map +0 -1
- package/dist/src/lib/workflows/posthog-integration/detect.d.ts +0 -12
- package/dist/src/lib/workflows/posthog-integration/detect.js +0 -57
- package/dist/src/lib/workflows/posthog-integration/detect.js.map +0 -1
- package/dist/src/lib/workflows/posthog-integration/index.d.ts +0 -3
- package/dist/src/lib/workflows/posthog-integration/index.js +0 -152
- package/dist/src/lib/workflows/posthog-integration/index.js.map +0 -1
- package/dist/src/lib/workflows/posthog-integration/steps.d.ts +0 -9
- package/dist/src/lib/workflows/posthog-integration/steps.js +0 -100
- package/dist/src/lib/workflows/posthog-integration/steps.js.map +0 -1
- package/dist/src/lib/workflows/revenue-analytics/detect.d.ts +0 -40
- package/dist/src/lib/workflows/revenue-analytics/detect.js +0 -156
- package/dist/src/lib/workflows/revenue-analytics/detect.js.map +0 -1
- package/dist/src/lib/workflows/revenue-analytics/index.d.ts +0 -4
- package/dist/src/lib/workflows/revenue-analytics/index.js +0 -30
- package/dist/src/lib/workflows/revenue-analytics/index.js.map +0 -1
- package/dist/src/lib/workflows/revenue-analytics/steps.d.ts +0 -8
- package/dist/src/lib/workflows/revenue-analytics/steps.js +0 -48
- package/dist/src/lib/workflows/revenue-analytics/steps.js.map +0 -1
- package/dist/src/lib/workflows/workflow-registry.d.ts +0 -18
- package/dist/src/lib/workflows/workflow-registry.js +0 -32
- package/dist/src/lib/workflows/workflow-registry.js.map +0 -1
- package/dist/src/lib/workflows/workflow-step.d.ts +0 -126
- package/dist/src/lib/workflows/workflow-step.js +0 -28
- package/dist/src/lib/workflows/workflow-step.js.map +0 -1
- package/dist/src/lib/yara-hooks.d.ts +0 -44
- package/dist/src/lib/yara-hooks.js +0 -377
- package/dist/src/lib/yara-hooks.js.map +0 -1
- package/dist/src/lib/yara-scanner.d.ts +0 -61
- package/dist/src/lib/yara-scanner.js +0 -328
- package/dist/src/lib/yara-scanner.js.map +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/MCPClient.d.ts +0 -30
- package/dist/src/steps/add-mcp-server-to-clients/MCPClient.js +0 -138
- package/dist/src/steps/add-mcp-server-to-clients/MCPClient.js.map +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/__tests__/defaults.test.d.ts +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/__tests__/defaults.test.js +0 -72
- package/dist/src/steps/add-mcp-server-to-clients/__tests__/defaults.test.js.map +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/claude.test.d.ts +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/claude.test.js +0 -341
- package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/claude.test.js.map +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/codex.test.d.ts +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/codex.test.js +0 -108
- package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/codex.test.js.map +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.d.ts +0 -89
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.js +0 -169
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.js.map +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude.d.ts +0 -80
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude.js +0 -64
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude.js.map +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/codex.d.ts +0 -88
- package/dist/src/steps/add-mcp-server-to-clients/clients/codex.js +0 -76
- package/dist/src/steps/add-mcp-server-to-clients/clients/codex.js.map +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.d.ts +0 -84
- package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.js +0 -61
- package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.js.map +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.d.ts +0 -92
- package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.js +0 -101
- package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.js.map +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/zed.d.ts +0 -110
- package/dist/src/steps/add-mcp-server-to-clients/clients/zed.js +0 -102
- package/dist/src/steps/add-mcp-server-to-clients/clients/zed.js.map +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/defaults.d.ts +0 -119
- package/dist/src/steps/add-mcp-server-to-clients/defaults.js +0 -239
- package/dist/src/steps/add-mcp-server-to-clients/defaults.js.map +0 -1
- package/dist/src/steps/add-mcp-server-to-clients/index.d.ts +0 -23
- package/dist/src/steps/add-mcp-server-to-clients/index.js +0 -111
- package/dist/src/steps/add-mcp-server-to-clients/index.js.map +0 -1
- package/dist/src/steps/add-or-update-environment-variables.d.ts +0 -10
- package/dist/src/steps/add-or-update-environment-variables.js +0 -188
- package/dist/src/steps/add-or-update-environment-variables.js.map +0 -1
- package/dist/src/steps/index.d.ts +0 -4
- package/dist/src/steps/index.js +0 -21
- package/dist/src/steps/index.js.map +0 -1
- package/dist/src/steps/run-prettier.d.ts +0 -5
- package/dist/src/steps/run-prettier.js +0 -91
- package/dist/src/steps/run-prettier.js.map +0 -1
- package/dist/src/steps/upload-environment-variables/EnvironmentProvider.d.ts +0 -11
- package/dist/src/steps/upload-environment-variables/EnvironmentProvider.js +0 -12
- package/dist/src/steps/upload-environment-variables/EnvironmentProvider.js.map +0 -1
- package/dist/src/steps/upload-environment-variables/index.d.ts +0 -6
- package/dist/src/steps/upload-environment-variables/index.js +0 -38
- package/dist/src/steps/upload-environment-variables/index.js.map +0 -1
- package/dist/src/steps/upload-environment-variables/providers/__tests__/vercel.test.d.ts +0 -1
- package/dist/src/steps/upload-environment-variables/providers/__tests__/vercel.test.js +0 -117
- package/dist/src/steps/upload-environment-variables/providers/__tests__/vercel.test.js.map +0 -1
- package/dist/src/steps/upload-environment-variables/providers/vercel.d.ts +0 -15
- package/dist/src/steps/upload-environment-variables/providers/vercel.js +0 -142
- package/dist/src/steps/upload-environment-variables/providers/vercel.js.map +0 -1
- package/dist/src/telemetry.d.ts +0 -2
- package/dist/src/telemetry.js +0 -13
- package/dist/src/telemetry.js.map +0 -1
- package/dist/src/ui/index.d.ts +0 -8
- package/dist/src/ui/index.js +0 -17
- package/dist/src/ui/index.js.map +0 -1
- package/dist/src/ui/logging-ui.d.ts +0 -52
- package/dist/src/ui/logging-ui.js +0 -121
- package/dist/src/ui/logging-ui.js.map +0 -1
- package/dist/src/ui/tui/App.d.ts +0 -6
- package/dist/src/ui/tui/App.js +0 -10
- package/dist/src/ui/tui/App.js.map +0 -1
- package/dist/src/ui/tui/__tests__/flows.test.d.ts +0 -1
- package/dist/src/ui/tui/__tests__/flows.test.js +0 -115
- package/dist/src/ui/tui/__tests__/flows.test.js.map +0 -1
- package/dist/src/ui/tui/__tests__/layout-helpers.test.d.ts +0 -1
- package/dist/src/ui/tui/__tests__/layout-helpers.test.js +0 -68
- package/dist/src/ui/tui/__tests__/layout-helpers.test.js.map +0 -1
- package/dist/src/ui/tui/__tests__/router.test.d.ts +0 -1
- package/dist/src/ui/tui/__tests__/router.test.js +0 -87
- package/dist/src/ui/tui/__tests__/router.test.js.map +0 -1
- package/dist/src/ui/tui/__tests__/store.test.d.ts +0 -1
- package/dist/src/ui/tui/__tests__/store.test.js +0 -889
- package/dist/src/ui/tui/__tests__/store.test.js.map +0 -1
- package/dist/src/ui/tui/components/LearnCard.d.ts +0 -10
- package/dist/src/ui/tui/components/LearnCard.js +0 -217
- package/dist/src/ui/tui/components/LearnCard.js.map +0 -1
- package/dist/src/ui/tui/components/ServiceHealthList.d.ts +0 -15
- package/dist/src/ui/tui/components/ServiceHealthList.js +0 -57
- package/dist/src/ui/tui/components/ServiceHealthList.js.map +0 -1
- package/dist/src/ui/tui/components/TipsCard.d.ts +0 -9
- package/dist/src/ui/tui/components/TipsCard.js +0 -55
- package/dist/src/ui/tui/components/TipsCard.js.map +0 -1
- package/dist/src/ui/tui/components/TitleBar.d.ts +0 -6
- package/dist/src/ui/tui/components/TitleBar.js +0 -17
- package/dist/src/ui/tui/components/TitleBar.js.map +0 -1
- package/dist/src/ui/tui/flows.d.ts +0 -51
- package/dist/src/ui/tui/flows.js +0 -75
- package/dist/src/ui/tui/flows.js.map +0 -1
- package/dist/src/ui/tui/hooks/useStdoutDimensions.d.ts +0 -9
- package/dist/src/ui/tui/hooks/useStdoutDimensions.js +0 -37
- package/dist/src/ui/tui/hooks/useStdoutDimensions.js.map +0 -1
- package/dist/src/ui/tui/ink-ui.d.ts +0 -58
- package/dist/src/ui/tui/ink-ui.js +0 -125
- package/dist/src/ui/tui/ink-ui.js.map +0 -1
- package/dist/src/ui/tui/package.json +0 -1
- package/dist/src/ui/tui/playground/PlaygroundApp.d.ts +0 -12
- package/dist/src/ui/tui/playground/PlaygroundApp.js +0 -44
- package/dist/src/ui/tui/playground/PlaygroundApp.js.map +0 -1
- package/dist/src/ui/tui/playground/demos/HealthCheckDemo.d.ts +0 -11
- package/dist/src/ui/tui/playground/demos/HealthCheckDemo.js +0 -57
- package/dist/src/ui/tui/playground/demos/HealthCheckDemo.js.map +0 -1
- package/dist/src/ui/tui/playground/demos/InputDemo.d.ts +0 -4
- package/dist/src/ui/tui/playground/demos/InputDemo.js +0 -53
- package/dist/src/ui/tui/playground/demos/InputDemo.js.map +0 -1
- package/dist/src/ui/tui/playground/demos/LayoutDemo.d.ts +0 -5
- package/dist/src/ui/tui/playground/demos/LayoutDemo.js +0 -25
- package/dist/src/ui/tui/playground/demos/LayoutDemo.js.map +0 -1
- package/dist/src/ui/tui/playground/demos/LogDemo.d.ts +0 -5
- package/dist/src/ui/tui/playground/demos/LogDemo.js +0 -53
- package/dist/src/ui/tui/playground/demos/LogDemo.js.map +0 -1
- package/dist/src/ui/tui/playground/demos/ModalDemo.d.ts +0 -6
- package/dist/src/ui/tui/playground/demos/ModalDemo.js +0 -13
- package/dist/src/ui/tui/playground/demos/ModalDemo.js.map +0 -1
- package/dist/src/ui/tui/playground/demos/ProgressDemo.d.ts +0 -5
- package/dist/src/ui/tui/playground/demos/ProgressDemo.js +0 -58
- package/dist/src/ui/tui/playground/demos/ProgressDemo.js.map +0 -1
- package/dist/src/ui/tui/playground/demos/RunScreenDemo.d.ts +0 -11
- package/dist/src/ui/tui/playground/demos/RunScreenDemo.js +0 -159
- package/dist/src/ui/tui/playground/demos/RunScreenDemo.js.map +0 -1
- package/dist/src/ui/tui/playground/demos/WelcomeDemo.d.ts +0 -9
- package/dist/src/ui/tui/playground/demos/WelcomeDemo.js +0 -15
- package/dist/src/ui/tui/playground/demos/WelcomeDemo.js.map +0 -1
- package/dist/src/ui/tui/playground/start-playground.d.ts +0 -4
- package/dist/src/ui/tui/playground/start-playground.js +0 -24
- package/dist/src/ui/tui/playground/start-playground.js.map +0 -1
- package/dist/src/ui/tui/primitives/CardLayout.d.ts +0 -12
- package/dist/src/ui/tui/primitives/CardLayout.js +0 -10
- package/dist/src/ui/tui/primitives/CardLayout.js.map +0 -1
- package/dist/src/ui/tui/primitives/ConfirmationInput.d.ts +0 -13
- package/dist/src/ui/tui/primitives/ConfirmationInput.js +0 -35
- package/dist/src/ui/tui/primitives/ConfirmationInput.js.map +0 -1
- package/dist/src/ui/tui/primitives/ContentSequencer.d.ts +0 -42
- package/dist/src/ui/tui/primitives/ContentSequencer.js +0 -137
- package/dist/src/ui/tui/primitives/ContentSequencer.js.map +0 -1
- package/dist/src/ui/tui/primitives/DissolveTransition.d.ts +0 -21
- package/dist/src/ui/tui/primitives/DissolveTransition.js +0 -149
- package/dist/src/ui/tui/primitives/DissolveTransition.js.map +0 -1
- package/dist/src/ui/tui/primitives/Divider.d.ts +0 -6
- package/dist/src/ui/tui/primitives/Divider.js +0 -15
- package/dist/src/ui/tui/primitives/Divider.js.map +0 -1
- package/dist/src/ui/tui/primitives/EventPlanViewer.d.ts +0 -9
- package/dist/src/ui/tui/primitives/EventPlanViewer.js +0 -9
- package/dist/src/ui/tui/primitives/EventPlanViewer.js.map +0 -1
- package/dist/src/ui/tui/primitives/GroupedPickerMenu.d.ts +0 -23
- package/dist/src/ui/tui/primitives/GroupedPickerMenu.js +0 -182
- package/dist/src/ui/tui/primitives/GroupedPickerMenu.js.map +0 -1
- package/dist/src/ui/tui/primitives/HNViewer.d.ts +0 -7
- package/dist/src/ui/tui/primitives/HNViewer.js +0 -63
- package/dist/src/ui/tui/primitives/HNViewer.js.map +0 -1
- package/dist/src/ui/tui/primitives/LinesBlock.d.ts +0 -16
- package/dist/src/ui/tui/primitives/LinesBlock.js +0 -37
- package/dist/src/ui/tui/primitives/LinesBlock.js.map +0 -1
- package/dist/src/ui/tui/primitives/LoadingBox.d.ts +0 -8
- package/dist/src/ui/tui/primitives/LoadingBox.js +0 -10
- package/dist/src/ui/tui/primitives/LoadingBox.js.map +0 -1
- package/dist/src/ui/tui/primitives/LogViewer.d.ts +0 -11
- package/dist/src/ui/tui/primitives/LogViewer.js +0 -55
- package/dist/src/ui/tui/primitives/LogViewer.js.map +0 -1
- package/dist/src/ui/tui/primitives/ModalOverlay.d.ts +0 -25
- package/dist/src/ui/tui/primitives/ModalOverlay.js +0 -7
- package/dist/src/ui/tui/primitives/ModalOverlay.js.map +0 -1
- package/dist/src/ui/tui/primitives/NodeBlock.d.ts +0 -13
- package/dist/src/ui/tui/primitives/NodeBlock.js +0 -17
- package/dist/src/ui/tui/primitives/NodeBlock.js.map +0 -1
- package/dist/src/ui/tui/primitives/PickerMenu.d.ts +0 -20
- package/dist/src/ui/tui/primitives/PickerMenu.js +0 -143
- package/dist/src/ui/tui/primitives/PickerMenu.js.map +0 -1
- package/dist/src/ui/tui/primitives/ProgressList.d.ts +0 -17
- package/dist/src/ui/tui/primitives/ProgressList.js +0 -32
- package/dist/src/ui/tui/primitives/ProgressList.js.map +0 -1
- package/dist/src/ui/tui/primitives/PromptLabel.d.ts +0 -11
- package/dist/src/ui/tui/primitives/PromptLabel.js +0 -13
- package/dist/src/ui/tui/primitives/PromptLabel.js.map +0 -1
- package/dist/src/ui/tui/primitives/ScreenContainer.d.ts +0 -16
- package/dist/src/ui/tui/primitives/ScreenContainer.js +0 -36
- package/dist/src/ui/tui/primitives/ScreenContainer.js.map +0 -1
- package/dist/src/ui/tui/primitives/ScreenErrorBoundary.d.ts +0 -22
- package/dist/src/ui/tui/primitives/ScreenErrorBoundary.js +0 -35
- package/dist/src/ui/tui/primitives/ScreenErrorBoundary.js.map +0 -1
- package/dist/src/ui/tui/primitives/SplitView.d.ts +0 -11
- package/dist/src/ui/tui/primitives/SplitView.js +0 -9
- package/dist/src/ui/tui/primitives/SplitView.js.map +0 -1
- package/dist/src/ui/tui/primitives/TabContainer.d.ts +0 -23
- package/dist/src/ui/tui/primitives/TabContainer.js +0 -45
- package/dist/src/ui/tui/primitives/TabContainer.js.map +0 -1
- package/dist/src/ui/tui/primitives/TextBlock.d.ts +0 -41
- package/dist/src/ui/tui/primitives/TextBlock.js +0 -144
- package/dist/src/ui/tui/primitives/TextBlock.js.map +0 -1
- package/dist/src/ui/tui/primitives/content-types.d.ts +0 -37
- package/dist/src/ui/tui/primitives/content-types.js +0 -19
- package/dist/src/ui/tui/primitives/content-types.js.map +0 -1
- package/dist/src/ui/tui/primitives/index.d.ts +0 -27
- package/dist/src/ui/tui/primitives/index.js +0 -24
- package/dist/src/ui/tui/primitives/index.js.map +0 -1
- package/dist/src/ui/tui/primitives/layout-helpers.d.ts +0 -36
- package/dist/src/ui/tui/primitives/layout-helpers.js +0 -95
- package/dist/src/ui/tui/primitives/layout-helpers.js.map +0 -1
- package/dist/src/ui/tui/primitives/text-helpers.d.ts +0 -10
- package/dist/src/ui/tui/primitives/text-helpers.js +0 -43
- package/dist/src/ui/tui/primitives/text-helpers.js.map +0 -1
- package/dist/src/ui/tui/router.d.ts +0 -58
- package/dist/src/ui/tui/router.js +0 -96
- package/dist/src/ui/tui/router.js.map +0 -1
- package/dist/src/ui/tui/screen-registry.d.ts +0 -19
- package/dist/src/ui/tui/screen-registry.js +0 -44
- package/dist/src/ui/tui/screen-registry.js.map +0 -1
- package/dist/src/ui/tui/screens/AuthErrorScreen.d.ts +0 -7
- package/dist/src/ui/tui/screens/AuthErrorScreen.js +0 -16
- package/dist/src/ui/tui/screens/AuthErrorScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/AuthScreen.d.ts +0 -13
- package/dist/src/ui/tui/screens/AuthScreen.js +0 -20
- package/dist/src/ui/tui/screens/AuthScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/IntroScreen.d.ts +0 -16
- package/dist/src/ui/tui/screens/IntroScreen.js +0 -79
- package/dist/src/ui/tui/screens/IntroScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/ManagedSettingsScreen.d.ts +0 -13
- package/dist/src/ui/tui/screens/ManagedSettingsScreen.js +0 -32
- package/dist/src/ui/tui/screens/ManagedSettingsScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/McpScreen.d.ts +0 -24
- package/dist/src/ui/tui/screens/McpScreen.js +0 -127
- package/dist/src/ui/tui/screens/McpScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/OutroScreen.d.ts +0 -11
- package/dist/src/ui/tui/screens/OutroScreen.js +0 -22
- package/dist/src/ui/tui/screens/OutroScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/PortConflictScreen.d.ts +0 -11
- package/dist/src/ui/tui/screens/PortConflictScreen.js +0 -30
- package/dist/src/ui/tui/screens/PortConflictScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/RevenueIntroScreen.d.ts +0 -16
- package/dist/src/ui/tui/screens/RevenueIntroScreen.js +0 -64
- package/dist/src/ui/tui/screens/RevenueIntroScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/RunScreen.d.ts +0 -16
- package/dist/src/ui/tui/screens/RunScreen.js +0 -73
- package/dist/src/ui/tui/screens/RunScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/SettingsOverrideScreen.d.ts +0 -6
- package/dist/src/ui/tui/screens/SettingsOverrideScreen.js +0 -30
- package/dist/src/ui/tui/screens/SettingsOverrideScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/SetupScreen.d.ts +0 -13
- package/dist/src/ui/tui/screens/SetupScreen.js +0 -74
- package/dist/src/ui/tui/screens/SetupScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/SkillsScreen.d.ts +0 -14
- package/dist/src/ui/tui/screens/SkillsScreen.js +0 -71
- package/dist/src/ui/tui/screens/SkillsScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/health/HealthCheckScreen.d.ts +0 -14
- package/dist/src/ui/tui/screens/health/HealthCheckScreen.js +0 -77
- package/dist/src/ui/tui/screens/health/HealthCheckScreen.js.map +0 -1
- package/dist/src/ui/tui/services/mcp-installer.d.ts +0 -21
- package/dist/src/ui/tui/services/mcp-installer.js +0 -58
- package/dist/src/ui/tui/services/mcp-installer.js.map +0 -1
- package/dist/src/ui/tui/start-tui.d.ts +0 -9
- package/dist/src/ui/tui/start-tui.js +0 -41
- package/dist/src/ui/tui/start-tui.js.map +0 -1
- package/dist/src/ui/tui/store.d.ts +0 -190
- package/dist/src/ui/tui/store.js +0 -472
- package/dist/src/ui/tui/store.js.map +0 -1
- package/dist/src/ui/tui/styles.d.ts +0 -32
- package/dist/src/ui/tui/styles.js +0 -35
- package/dist/src/ui/tui/styles.js.map +0 -1
- package/dist/src/ui/wizard-ui.d.ts +0 -81
- package/dist/src/ui/wizard-ui.js +0 -19
- package/dist/src/ui/wizard-ui.js.map +0 -1
- package/dist/src/utils/__tests__/analytics.test.d.ts +0 -1
- package/dist/src/utils/__tests__/analytics.test.js +0 -136
- package/dist/src/utils/__tests__/analytics.test.js.map +0 -1
- package/dist/src/utils/__tests__/provisioning.test.d.ts +0 -1
- package/dist/src/utils/__tests__/provisioning.test.js +0 -192
- package/dist/src/utils/__tests__/provisioning.test.js.map +0 -1
- package/dist/src/utils/__tests__/semver.test.d.ts +0 -1
- package/dist/src/utils/__tests__/semver.test.js +0 -159
- package/dist/src/utils/__tests__/semver.test.js.map +0 -1
- package/dist/src/utils/__tests__/setup-utils.test.d.ts +0 -1
- package/dist/src/utils/__tests__/setup-utils.test.js +0 -138
- package/dist/src/utils/__tests__/setup-utils.test.js.map +0 -1
- package/dist/src/utils/analytics.d.ts +0 -33
- package/dist/src/utils/analytics.js +0 -137
- package/dist/src/utils/analytics.js.map +0 -1
- package/dist/src/utils/anthropic-status.d.ts +0 -17
- package/dist/src/utils/anthropic-status.js +0 -49
- package/dist/src/utils/anthropic-status.js.map +0 -1
- package/dist/src/utils/bash.d.ts +0 -2
- package/dist/src/utils/bash.js +0 -54
- package/dist/src/utils/bash.js.map +0 -1
- package/dist/src/utils/custom-headers.d.ts +0 -9
- package/dist/src/utils/custom-headers.js +0 -24
- package/dist/src/utils/custom-headers.js.map +0 -1
- package/dist/src/utils/debug.d.ts +0 -29
- package/dist/src/utils/debug.js +0 -87
- package/dist/src/utils/debug.js.map +0 -1
- package/dist/src/utils/env-api-key.d.ts +0 -5
- package/dist/src/utils/env-api-key.js +0 -57
- package/dist/src/utils/env-api-key.js.map +0 -1
- package/dist/src/utils/environment.d.ts +0 -4
- package/dist/src/utils/environment.js +0 -77
- package/dist/src/utils/environment.js.map +0 -1
- package/dist/src/utils/file-utils.d.ts +0 -10
- package/dist/src/utils/file-utils.js +0 -49
- package/dist/src/utils/file-utils.js.map +0 -1
- package/dist/src/utils/logging.d.ts +0 -9
- package/dist/src/utils/logging.js +0 -47
- package/dist/src/utils/logging.js.map +0 -1
- package/dist/src/utils/oauth.d.ts +0 -33
- package/dist/src/utils/oauth.js +0 -288
- package/dist/src/utils/oauth.js.map +0 -1
- package/dist/src/utils/package-json.d.ts +0 -30
- package/dist/src/utils/package-json.js +0 -47
- package/dist/src/utils/package-json.js.map +0 -1
- package/dist/src/utils/package-manager.d.ts +0 -21
- package/dist/src/utils/package-manager.js +0 -210
- package/dist/src/utils/package-manager.js.map +0 -1
- package/dist/src/utils/provisioning.d.ts +0 -25
- package/dist/src/utils/provisioning.js +0 -191
- package/dist/src/utils/provisioning.js.map +0 -1
- package/dist/src/utils/rules/astro-rules.md +0 -44
- package/dist/src/utils/rules/next-rules.md +0 -9
- package/dist/src/utils/rules/react-native-rules.md +0 -7
- package/dist/src/utils/rules/react-rules.md +0 -7
- package/dist/src/utils/rules/svelte-rules.md +0 -7
- package/dist/src/utils/rules/universal.md +0 -32
- package/dist/src/utils/semver.d.ts +0 -21
- package/dist/src/utils/semver.js +0 -87
- package/dist/src/utils/semver.js.map +0 -1
- package/dist/src/utils/setup-utils.d.ts +0 -79
- package/dist/src/utils/setup-utils.js +0 -406
- package/dist/src/utils/setup-utils.js.map +0 -1
- package/dist/src/utils/string.d.ts +0 -1
- package/dist/src/utils/string.js +0 -9
- package/dist/src/utils/string.js.map +0 -1
- package/dist/src/utils/types.d.ts +0 -85
- package/dist/src/utils/types.js +0 -3
- package/dist/src/utils/types.js.map +0 -1
- package/dist/src/utils/urls.d.ts +0 -7
- package/dist/src/utils/urls.js +0 -78
- package/dist/src/utils/urls.js.map +0 -1
- package/dist/src/utils/vendor/is-unicorn-supported.d.ts +0 -1
- package/dist/src/utils/vendor/is-unicorn-supported.js +0 -24
- package/dist/src/utils/vendor/is-unicorn-supported.js.map +0 -1
- package/dist/src/utils/wizard-abort.d.ts +0 -16
- package/dist/src/utils/wizard-abort.js +0 -59
- package/dist/src/utils/wizard-abort.js.map +0 -1
|
@@ -0,0 +1,928 @@
|
|
|
1
|
+
import { c as getUI, s as logToFile } from "./debug-CyJ_3dTP.js";
|
|
2
|
+
import { _ as POSTHOG_US_CLIENT_ID, a as DEFAULT_HOST_URL, c as ISSUES_URL, d as OAUTH_TIMEOUT_MS, g as POSTHOG_PROXY_CLIENT_ID, m as POSTHOG_OAUTH_URL, n as analytics, s as DUMMY_PROJECT_API_KEY, u as OAUTH_PORTS, x as WIZARD_USER_AGENT } from "./analytics-C4jO5Qda.js";
|
|
3
|
+
import { t as traceStep } from "./telemetry-Ct_GGkSO.js";
|
|
4
|
+
import { r as wizardAbort } from "./wizard-abort-7HUIsqv1.js";
|
|
5
|
+
import { major, minVersion } from "semver";
|
|
6
|
+
import * as childProcess from "node:child_process";
|
|
7
|
+
import { execSync } from "node:child_process";
|
|
8
|
+
import * as fs$1 from "node:fs";
|
|
9
|
+
import { basename, join } from "node:path";
|
|
10
|
+
import * as fs$2 from "fs";
|
|
11
|
+
import * as path$1 from "path";
|
|
12
|
+
import axios from "axios";
|
|
13
|
+
import * as crypto from "node:crypto";
|
|
14
|
+
import * as http from "node:http";
|
|
15
|
+
import opn from "opn";
|
|
16
|
+
import { z } from "zod";
|
|
17
|
+
const packageManagers = [
|
|
18
|
+
{
|
|
19
|
+
name: "bun",
|
|
20
|
+
label: "Bun",
|
|
21
|
+
installCommand: "bun add",
|
|
22
|
+
buildCommand: "bun run build",
|
|
23
|
+
runScriptCommand: "bun run",
|
|
24
|
+
flags: "",
|
|
25
|
+
forceInstallFlag: "--force",
|
|
26
|
+
detect: ({ installDir }) => ["bun.lockb", "bun.lock"].some((lockFile) => fs$2.existsSync(path$1.join(installDir, lockFile))),
|
|
27
|
+
addOverride: async (pkgName, pkgVersion, { installDir }) => {
|
|
28
|
+
const packageDotJson = await getPackageDotJson({ installDir });
|
|
29
|
+
const overrides = packageDotJson.overrides || {};
|
|
30
|
+
await updatePackageDotJson({
|
|
31
|
+
...packageDotJson,
|
|
32
|
+
overrides: {
|
|
33
|
+
...overrides,
|
|
34
|
+
[pkgName]: pkgVersion
|
|
35
|
+
}
|
|
36
|
+
}, { installDir });
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: "yarn",
|
|
41
|
+
label: "Yarn V1",
|
|
42
|
+
installCommand: "yarn add",
|
|
43
|
+
buildCommand: "yarn build",
|
|
44
|
+
runScriptCommand: "yarn",
|
|
45
|
+
flags: "--ignore-workspace-root-check",
|
|
46
|
+
forceInstallFlag: "--force",
|
|
47
|
+
detect: ({ installDir }) => {
|
|
48
|
+
try {
|
|
49
|
+
return fs$2.readFileSync(path$1.join(installDir, "yarn.lock"), "utf-8").slice(0, 500).includes("yarn lockfile v1");
|
|
50
|
+
} catch (e) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
addOverride: async (pkgName, pkgVersion, { installDir }) => {
|
|
55
|
+
const packageDotJson = await getPackageDotJson({ installDir });
|
|
56
|
+
const resolutions = packageDotJson.resolutions || {};
|
|
57
|
+
await updatePackageDotJson({
|
|
58
|
+
...packageDotJson,
|
|
59
|
+
resolutions: {
|
|
60
|
+
...resolutions,
|
|
61
|
+
[pkgName]: pkgVersion
|
|
62
|
+
}
|
|
63
|
+
}, { installDir });
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: "yarn",
|
|
68
|
+
label: "Yarn V2/3/4",
|
|
69
|
+
installCommand: "yarn add",
|
|
70
|
+
buildCommand: "yarn build",
|
|
71
|
+
runScriptCommand: "yarn",
|
|
72
|
+
flags: "",
|
|
73
|
+
forceInstallFlag: "--force",
|
|
74
|
+
detect: ({ installDir }) => {
|
|
75
|
+
try {
|
|
76
|
+
return fs$2.readFileSync(path$1.join(installDir, "yarn.lock"), "utf-8").slice(0, 500).includes("__metadata");
|
|
77
|
+
} catch (e) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
addOverride: async (pkgName, pkgVersion, { installDir }) => {
|
|
82
|
+
const packageDotJson = await getPackageDotJson({ installDir });
|
|
83
|
+
const resolutions = packageDotJson.resolutions || {};
|
|
84
|
+
await updatePackageDotJson({
|
|
85
|
+
...packageDotJson,
|
|
86
|
+
resolutions: {
|
|
87
|
+
...resolutions,
|
|
88
|
+
[pkgName]: pkgVersion
|
|
89
|
+
}
|
|
90
|
+
}, { installDir });
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: "pnpm",
|
|
95
|
+
label: "pnpm",
|
|
96
|
+
installCommand: "pnpm add",
|
|
97
|
+
buildCommand: "pnpm build",
|
|
98
|
+
runScriptCommand: "pnpm",
|
|
99
|
+
flags: "--ignore-workspace-root-check",
|
|
100
|
+
forceInstallFlag: "--force",
|
|
101
|
+
detect: ({ installDir }) => fs$2.existsSync(path$1.join(installDir, "pnpm-lock.yaml")),
|
|
102
|
+
addOverride: async (pkgName, pkgVersion, { installDir }) => {
|
|
103
|
+
const packageDotJson = await getPackageDotJson({ installDir });
|
|
104
|
+
const pnpm = packageDotJson.pnpm || {};
|
|
105
|
+
const overrides = pnpm.overrides || {};
|
|
106
|
+
await updatePackageDotJson({
|
|
107
|
+
...packageDotJson,
|
|
108
|
+
pnpm: {
|
|
109
|
+
...pnpm,
|
|
110
|
+
overrides: {
|
|
111
|
+
...overrides,
|
|
112
|
+
[pkgName]: pkgVersion
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}, { installDir });
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: "npm",
|
|
120
|
+
label: "npm",
|
|
121
|
+
installCommand: "npm add",
|
|
122
|
+
buildCommand: "npm run build",
|
|
123
|
+
runScriptCommand: "npm run",
|
|
124
|
+
flags: "",
|
|
125
|
+
forceInstallFlag: "--force",
|
|
126
|
+
detect: ({ installDir }) => fs$2.existsSync(path$1.join(installDir, "package-lock.json")),
|
|
127
|
+
addOverride: async (pkgName, pkgVersion, { installDir }) => {
|
|
128
|
+
const packageDotJson = await getPackageDotJson({ installDir });
|
|
129
|
+
const overrides = packageDotJson.overrides || {};
|
|
130
|
+
await updatePackageDotJson({
|
|
131
|
+
...packageDotJson,
|
|
132
|
+
overrides: {
|
|
133
|
+
...overrides,
|
|
134
|
+
[pkgName]: pkgVersion
|
|
135
|
+
}
|
|
136
|
+
}, { installDir });
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: "expo",
|
|
141
|
+
label: "Expo",
|
|
142
|
+
installCommand: "npx expo install",
|
|
143
|
+
buildCommand: "npx expo build",
|
|
144
|
+
runScriptCommand: "npx expo run",
|
|
145
|
+
flags: "",
|
|
146
|
+
forceInstallFlag: "--force",
|
|
147
|
+
detect: () => false,
|
|
148
|
+
addOverride: async (pkgName, pkgVersion, { installDir }) => {
|
|
149
|
+
const packageDotJson = await getPackageDotJson({ installDir });
|
|
150
|
+
const overrides = packageDotJson.overrides || {};
|
|
151
|
+
await updatePackageDotJson({
|
|
152
|
+
...packageDotJson,
|
|
153
|
+
overrides: {
|
|
154
|
+
...overrides,
|
|
155
|
+
[pkgName]: pkgVersion
|
|
156
|
+
}
|
|
157
|
+
}, { installDir });
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
];
|
|
161
|
+
function detectAllPackageManagers({ installDir }) {
|
|
162
|
+
return traceStep("detect-package-manager", () => {
|
|
163
|
+
const detectedManagers = [];
|
|
164
|
+
for (const packageManager of packageManagers) if (packageManager.detect({ installDir })) detectedManagers.push(packageManager);
|
|
165
|
+
if (detectedManagers.length === 0) analytics.setTag("package-manager", "not-detected");
|
|
166
|
+
return detectedManagers;
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
//#endregion
|
|
170
|
+
//#region src/utils/urls.ts
|
|
171
|
+
const getHostFromRegion = (region) => {
|
|
172
|
+
if (region === "eu") return "https://eu.i.posthog.com";
|
|
173
|
+
return "https://us.i.posthog.com";
|
|
174
|
+
};
|
|
175
|
+
const getCloudUrlFromRegion = (region) => {
|
|
176
|
+
if (region === "eu") return "https://eu.posthog.com";
|
|
177
|
+
return "https://us.posthog.com";
|
|
178
|
+
};
|
|
179
|
+
async function detectRegionFromToken(accessToken) {
|
|
180
|
+
const headers = {
|
|
181
|
+
Authorization: `Bearer ${accessToken}`,
|
|
182
|
+
"User-Agent": WIZARD_USER_AGENT
|
|
183
|
+
};
|
|
184
|
+
const [usResult, euResult] = await Promise.allSettled([axios.get("https://us.posthog.com/api/users/@me/", { headers }), axios.get("https://eu.posthog.com/api/users/@me/", { headers })]);
|
|
185
|
+
if (usResult.status === "fulfilled") return "us";
|
|
186
|
+
if (euResult.status === "fulfilled") return "eu";
|
|
187
|
+
throw new Error("Could not determine cloud region from access token. Please check your PostHog account.");
|
|
188
|
+
}
|
|
189
|
+
const getLlmGatewayUrlFromHost = (host) => {
|
|
190
|
+
if (host.includes("localhost")) return "http://localhost:3308/wizard";
|
|
191
|
+
if (host.includes("eu.posthog.com") || host.includes("eu.i.posthog.com")) return "https://gateway.eu.posthog.com/wizard";
|
|
192
|
+
return "https://gateway.us.posthog.com/wizard";
|
|
193
|
+
};
|
|
194
|
+
//#endregion
|
|
195
|
+
//#region src/utils/oauth.ts
|
|
196
|
+
const OAUTH_CALLBACK_STYLES = `
|
|
197
|
+
<style>
|
|
198
|
+
* {
|
|
199
|
+
font-family: monospace;
|
|
200
|
+
background-color: #1b0a00;
|
|
201
|
+
color: #F7A502;
|
|
202
|
+
font-weight: medium;
|
|
203
|
+
font-size: 24px;
|
|
204
|
+
margin: .25rem;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.blink {
|
|
208
|
+
animation: blink-animation 1s steps(2, start) infinite;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
@keyframes blink-animation {
|
|
212
|
+
to {
|
|
213
|
+
opacity: 0;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
</style>
|
|
217
|
+
`;
|
|
218
|
+
const OAuthTokenResponseSchema = z.object({
|
|
219
|
+
access_token: z.string(),
|
|
220
|
+
expires_in: z.number(),
|
|
221
|
+
token_type: z.string(),
|
|
222
|
+
scope: z.string(),
|
|
223
|
+
refresh_token: z.string(),
|
|
224
|
+
scoped_teams: z.array(z.number()).optional(),
|
|
225
|
+
scoped_organizations: z.array(z.string()).optional()
|
|
226
|
+
});
|
|
227
|
+
function getLocalOAuthOrigin(port) {
|
|
228
|
+
return `http://localhost:${port}`;
|
|
229
|
+
}
|
|
230
|
+
function getCallbackUrl(port) {
|
|
231
|
+
return `${getLocalOAuthOrigin(port)}/callback`;
|
|
232
|
+
}
|
|
233
|
+
function getLocalLoginUrl(port) {
|
|
234
|
+
return `${getLocalOAuthOrigin(port)}/authorize`;
|
|
235
|
+
}
|
|
236
|
+
function getLocalSignupUrl(port) {
|
|
237
|
+
return `${getLocalLoginUrl(port)}?signup=true`;
|
|
238
|
+
}
|
|
239
|
+
function generateCodeVerifier$1() {
|
|
240
|
+
return crypto.randomBytes(32).toString("base64url");
|
|
241
|
+
}
|
|
242
|
+
function generateCodeChallenge$1(verifier) {
|
|
243
|
+
return crypto.createHash("sha256").update(verifier).digest("base64url");
|
|
244
|
+
}
|
|
245
|
+
async function startCallbackServer(authUrl, signupUrl, port) {
|
|
246
|
+
return new Promise((resolve, reject) => {
|
|
247
|
+
let callbackResolve;
|
|
248
|
+
let callbackReject;
|
|
249
|
+
const waitForCallback = () => new Promise((res, rej) => {
|
|
250
|
+
callbackResolve = res;
|
|
251
|
+
callbackReject = rej;
|
|
252
|
+
});
|
|
253
|
+
const server = http.createServer((req, res) => {
|
|
254
|
+
if (!req.url) {
|
|
255
|
+
res.writeHead(400);
|
|
256
|
+
res.end();
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
const url = new URL(req.url, getLocalOAuthOrigin(port));
|
|
260
|
+
if (url.pathname === "/authorize") {
|
|
261
|
+
const redirectUrl = url.searchParams.get("signup") === "true" ? signupUrl : authUrl;
|
|
262
|
+
res.writeHead(302, { Location: redirectUrl });
|
|
263
|
+
res.end();
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
const code = url.searchParams.get("code");
|
|
267
|
+
const error = url.searchParams.get("error");
|
|
268
|
+
if (error) {
|
|
269
|
+
const isAccessDenied = error === "access_denied";
|
|
270
|
+
res.writeHead(isAccessDenied ? 200 : 400, { "Content-Type": "text/html; charset=utf-8" });
|
|
271
|
+
res.end(`
|
|
272
|
+
<html>
|
|
273
|
+
<head>
|
|
274
|
+
<meta charset="UTF-8">
|
|
275
|
+
<title>PostHog wizard - Authorization ${isAccessDenied ? "cancelled" : "failed"}</title>
|
|
276
|
+
${OAUTH_CALLBACK_STYLES}
|
|
277
|
+
</head>
|
|
278
|
+
<body>
|
|
279
|
+
<p>${isAccessDenied ? "Authorization cancelled." : `Authorization failed.`}</p>
|
|
280
|
+
<p>Return to your terminal. This window will close automatically.</p>
|
|
281
|
+
<script>window.close();<\/script>
|
|
282
|
+
</body>
|
|
283
|
+
</html>
|
|
284
|
+
`);
|
|
285
|
+
callbackReject(/* @__PURE__ */ new Error(`OAuth error: ${error}`));
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
if (code) {
|
|
289
|
+
res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
|
|
290
|
+
res.end(`
|
|
291
|
+
<html>
|
|
292
|
+
<head>
|
|
293
|
+
<meta charset="UTF-8">
|
|
294
|
+
<title>PostHog wizard is ready</title>
|
|
295
|
+
${OAUTH_CALLBACK_STYLES}
|
|
296
|
+
</head>
|
|
297
|
+
<body>
|
|
298
|
+
<p>PostHog login complete!</p>
|
|
299
|
+
<p>Return to your terminal: the wizard is hard at work on your project<span class="blink">█</span></p>
|
|
300
|
+
<script>window.close();<\/script>
|
|
301
|
+
</body>
|
|
302
|
+
</html>
|
|
303
|
+
`);
|
|
304
|
+
callbackResolve(code);
|
|
305
|
+
} else {
|
|
306
|
+
res.writeHead(400, { "Content-Type": "text/html; charset=utf-8" });
|
|
307
|
+
res.end(`
|
|
308
|
+
<html>
|
|
309
|
+
<head>
|
|
310
|
+
<meta charset="UTF-8">
|
|
311
|
+
<title>PostHog wizard - Invalid request</title>
|
|
312
|
+
${OAUTH_CALLBACK_STYLES}
|
|
313
|
+
</head>
|
|
314
|
+
<body>
|
|
315
|
+
<p>Invalid request - no authorization code received.</p>
|
|
316
|
+
<p>You can close this window.</p>
|
|
317
|
+
</body>
|
|
318
|
+
</html>
|
|
319
|
+
`);
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
server.listen(port, () => {
|
|
323
|
+
resolve({
|
|
324
|
+
port,
|
|
325
|
+
server,
|
|
326
|
+
waitForCallback
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
server.on("error", reject);
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
function getPortProcessInfo(port) {
|
|
333
|
+
try {
|
|
334
|
+
const lines = execSync(`lsof -i :${port} -sTCP:LISTEN 2>/dev/null`, {
|
|
335
|
+
encoding: "utf-8",
|
|
336
|
+
timeout: 3e3
|
|
337
|
+
}).trim().split("\n");
|
|
338
|
+
if (lines.length < 2) return {
|
|
339
|
+
command: "unknown",
|
|
340
|
+
pid: "unknown",
|
|
341
|
+
port,
|
|
342
|
+
user: "unknown"
|
|
343
|
+
};
|
|
344
|
+
const fields = lines[1].split(/\s+/);
|
|
345
|
+
return {
|
|
346
|
+
command: fields[0] ?? "unknown",
|
|
347
|
+
pid: fields[1] ?? "unknown",
|
|
348
|
+
port,
|
|
349
|
+
user: fields[2] ?? "unknown"
|
|
350
|
+
};
|
|
351
|
+
} catch {
|
|
352
|
+
return {
|
|
353
|
+
command: "unknown",
|
|
354
|
+
pid: "unknown",
|
|
355
|
+
port,
|
|
356
|
+
user: "unknown"
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
function isPortInUseError(error) {
|
|
361
|
+
return error instanceof Error && "code" in error && error.code === "EADDRINUSE";
|
|
362
|
+
}
|
|
363
|
+
async function exchangeCodeForToken(code, codeVerifier, callbackUrl) {
|
|
364
|
+
const clientId = POSTHOG_PROXY_CLIENT_ID;
|
|
365
|
+
const response = await axios.post(`${POSTHOG_OAUTH_URL}/oauth/token`, {
|
|
366
|
+
grant_type: "authorization_code",
|
|
367
|
+
code,
|
|
368
|
+
redirect_uri: callbackUrl,
|
|
369
|
+
client_id: clientId,
|
|
370
|
+
code_verifier: codeVerifier
|
|
371
|
+
}, { headers: {
|
|
372
|
+
"Content-Type": "application/json",
|
|
373
|
+
"User-Agent": WIZARD_USER_AGENT
|
|
374
|
+
} });
|
|
375
|
+
return OAuthTokenResponseSchema.parse(response.data);
|
|
376
|
+
}
|
|
377
|
+
async function performOAuthFlow(config) {
|
|
378
|
+
const clientId = POSTHOG_PROXY_CLIENT_ID;
|
|
379
|
+
const codeVerifier = generateCodeVerifier$1();
|
|
380
|
+
const codeChallenge = generateCodeChallenge$1(codeVerifier);
|
|
381
|
+
let shouldRetry = false;
|
|
382
|
+
do {
|
|
383
|
+
shouldRetry = false;
|
|
384
|
+
let lastProcessInfo = null;
|
|
385
|
+
for (const port of OAUTH_PORTS) {
|
|
386
|
+
const callbackUrl = getCallbackUrl(port);
|
|
387
|
+
const authUrl = new URL(`${POSTHOG_OAUTH_URL}/oauth/authorize`);
|
|
388
|
+
authUrl.searchParams.set("client_id", clientId);
|
|
389
|
+
authUrl.searchParams.set("redirect_uri", callbackUrl);
|
|
390
|
+
authUrl.searchParams.set("response_type", "code");
|
|
391
|
+
authUrl.searchParams.set("code_challenge", codeChallenge);
|
|
392
|
+
authUrl.searchParams.set("code_challenge_method", "S256");
|
|
393
|
+
authUrl.searchParams.set("scope", config.scopes.join(" "));
|
|
394
|
+
authUrl.searchParams.set("required_access_level", "project");
|
|
395
|
+
const signupUrl = new URL(`${POSTHOG_OAUTH_URL}/signup?next=${encodeURIComponent(authUrl.toString())}`);
|
|
396
|
+
const localSignupUrl = getLocalSignupUrl(port);
|
|
397
|
+
const localLoginUrl = getLocalLoginUrl(port);
|
|
398
|
+
const urlToOpen = config.signup ? localSignupUrl : localLoginUrl;
|
|
399
|
+
logToFile(`[oauth] attempting callback server on port ${port}`);
|
|
400
|
+
let server;
|
|
401
|
+
let waitForCallback;
|
|
402
|
+
try {
|
|
403
|
+
({server, waitForCallback} = await startCallbackServer(authUrl.toString(), signupUrl.toString(), port));
|
|
404
|
+
} catch (e) {
|
|
405
|
+
if (!isPortInUseError(e)) throw e;
|
|
406
|
+
lastProcessInfo = getPortProcessInfo(port);
|
|
407
|
+
continue;
|
|
408
|
+
}
|
|
409
|
+
logToFile("[oauth] callback server ready, showing login URL");
|
|
410
|
+
getUI().setLoginUrl(urlToOpen);
|
|
411
|
+
opn(urlToOpen, { wait: false }).catch(() => {});
|
|
412
|
+
const loginSpinner = getUI().spinner();
|
|
413
|
+
loginSpinner.start("Waiting for authorization...");
|
|
414
|
+
try {
|
|
415
|
+
const token = await exchangeCodeForToken(await Promise.race([waitForCallback(), new Promise((_, reject) => setTimeout(() => reject(/* @__PURE__ */ new Error("Authorization timed out")), OAUTH_TIMEOUT_MS))]), codeVerifier, callbackUrl);
|
|
416
|
+
server.close();
|
|
417
|
+
getUI().setLoginUrl(null);
|
|
418
|
+
loginSpinner.stop("Authorization complete!");
|
|
419
|
+
return token;
|
|
420
|
+
} catch (e) {
|
|
421
|
+
loginSpinner.stop("Authorization failed.");
|
|
422
|
+
server.close();
|
|
423
|
+
const error = e instanceof Error ? e : /* @__PURE__ */ new Error("Unknown error");
|
|
424
|
+
if (error.message.includes("timeout")) getUI().log.error("Authorization timed out. Please try again.");
|
|
425
|
+
else if (error.message.includes("access_denied")) getUI().log.info(`Authorization was cancelled.\n\nYou denied access to PostHog. To use the wizard, you need to authorize access to your PostHog account.\n\nYou can try again by re-running the wizard.`);
|
|
426
|
+
else getUI().log.error(`Authorization failed:\n\n${error.message}\n\nIf you think this is a bug in the PostHog wizard, please create an issue:\n${ISSUES_URL}`);
|
|
427
|
+
analytics.captureException(error, { step: "oauth_flow" });
|
|
428
|
+
await abort();
|
|
429
|
+
throw error;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
if (!lastProcessInfo) throw new Error("No OAuth callback ports configured");
|
|
433
|
+
await getUI().showPortConflict(lastProcessInfo);
|
|
434
|
+
shouldRetry = true;
|
|
435
|
+
} while (shouldRetry);
|
|
436
|
+
throw new Error("OAuth port retry loop exited unexpectedly");
|
|
437
|
+
}
|
|
438
|
+
//#endregion
|
|
439
|
+
//#region src/utils/provisioning.ts
|
|
440
|
+
/**
|
|
441
|
+
* Provisioning API client for creating new PostHog accounts.
|
|
442
|
+
*
|
|
443
|
+
* Uses the agentic provisioning API with PKCE auth:
|
|
444
|
+
* 1. POST /account_requests - create account, get auth code
|
|
445
|
+
* 2. POST /oauth/token - exchange code for tokens (with PKCE)
|
|
446
|
+
* 3. POST /resources - provision project, get API key
|
|
447
|
+
*/
|
|
448
|
+
const WIZARD_CLIENT_ID = POSTHOG_US_CLIENT_ID;
|
|
449
|
+
const API_VERSION = "0.1d";
|
|
450
|
+
const PROVISIONING_BASE_URL = "https://us.posthog.com";
|
|
451
|
+
function generateCodeVerifier() {
|
|
452
|
+
return crypto.randomBytes(32).toString("base64url");
|
|
453
|
+
}
|
|
454
|
+
function generateCodeChallenge(verifier) {
|
|
455
|
+
return crypto.createHash("sha256").update(verifier).digest("base64url");
|
|
456
|
+
}
|
|
457
|
+
const AccountRequestResponseSchema = z.object({
|
|
458
|
+
id: z.string(),
|
|
459
|
+
type: z.enum([
|
|
460
|
+
"oauth",
|
|
461
|
+
"requires_auth",
|
|
462
|
+
"error"
|
|
463
|
+
]),
|
|
464
|
+
oauth: z.object({ code: z.string() }).optional(),
|
|
465
|
+
error: z.object({
|
|
466
|
+
code: z.string(),
|
|
467
|
+
message: z.string()
|
|
468
|
+
}).optional()
|
|
469
|
+
});
|
|
470
|
+
const TokenResponseSchema = z.object({
|
|
471
|
+
token_type: z.string(),
|
|
472
|
+
access_token: z.string(),
|
|
473
|
+
refresh_token: z.string(),
|
|
474
|
+
expires_in: z.number(),
|
|
475
|
+
account: z.object({ id: z.string() }).optional()
|
|
476
|
+
});
|
|
477
|
+
const ResourceResponseSchema = z.object({
|
|
478
|
+
status: z.string(),
|
|
479
|
+
id: z.string(),
|
|
480
|
+
service_id: z.string(),
|
|
481
|
+
complete: z.object({ access_configuration: z.object({
|
|
482
|
+
api_key: z.string(),
|
|
483
|
+
host: z.string(),
|
|
484
|
+
personal_api_key: z.string().optional()
|
|
485
|
+
}) }).optional()
|
|
486
|
+
});
|
|
487
|
+
/**
|
|
488
|
+
* Create a new PostHog account and provision a project via the provisioning API.
|
|
489
|
+
*
|
|
490
|
+
* This is the "no browser" signup path: the wizard collects the email,
|
|
491
|
+
* calls the provisioning API to create the account, and gets back
|
|
492
|
+
* credentials without opening a browser.
|
|
493
|
+
*/
|
|
494
|
+
async function provisionNewAccount(email, name, region = "US", opts) {
|
|
495
|
+
const codeVerifier = generateCodeVerifier();
|
|
496
|
+
const codeChallenge = generateCodeChallenge(codeVerifier);
|
|
497
|
+
logToFile("[provisioning] starting account creation");
|
|
498
|
+
const accountRes = await axios.post(`${PROVISIONING_BASE_URL}/api/agentic/provisioning/account_requests`, {
|
|
499
|
+
id: crypto.randomUUID(),
|
|
500
|
+
email,
|
|
501
|
+
name,
|
|
502
|
+
client_id: WIZARD_CLIENT_ID,
|
|
503
|
+
code_challenge: codeChallenge,
|
|
504
|
+
code_challenge_method: "S256",
|
|
505
|
+
configuration: {
|
|
506
|
+
region,
|
|
507
|
+
...opts?.orgName ? { organization_name: opts.orgName } : {}
|
|
508
|
+
}
|
|
509
|
+
}, {
|
|
510
|
+
headers: {
|
|
511
|
+
"Content-Type": "application/json",
|
|
512
|
+
"API-Version": API_VERSION,
|
|
513
|
+
"User-Agent": WIZARD_USER_AGENT
|
|
514
|
+
},
|
|
515
|
+
timeout: 3e4
|
|
516
|
+
});
|
|
517
|
+
const accountData = AccountRequestResponseSchema.parse(accountRes.data);
|
|
518
|
+
if (accountData.type === "error") {
|
|
519
|
+
const msg = accountData.error?.message ?? "Account creation failed";
|
|
520
|
+
analytics.captureException(new Error(msg), {
|
|
521
|
+
step: "provisioning_account_request",
|
|
522
|
+
error_code: accountData.error?.code
|
|
523
|
+
});
|
|
524
|
+
throw new Error(msg);
|
|
525
|
+
}
|
|
526
|
+
if (accountData.type === "requires_auth") throw new Error("This email is already associated with a PostHog account. Please use the login flow instead.");
|
|
527
|
+
const code = accountData.oauth?.code;
|
|
528
|
+
if (!code) throw new Error("No authorization code received from account creation");
|
|
529
|
+
logToFile("[provisioning] account created, exchanging code for tokens");
|
|
530
|
+
const tokenRes = await axios.post(`${PROVISIONING_BASE_URL}/api/agentic/oauth/token`, new URLSearchParams({
|
|
531
|
+
grant_type: "authorization_code",
|
|
532
|
+
code,
|
|
533
|
+
code_verifier: codeVerifier
|
|
534
|
+
}).toString(), {
|
|
535
|
+
headers: {
|
|
536
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
537
|
+
"API-Version": API_VERSION,
|
|
538
|
+
"User-Agent": WIZARD_USER_AGENT
|
|
539
|
+
},
|
|
540
|
+
timeout: 3e4
|
|
541
|
+
});
|
|
542
|
+
const tokenData = TokenResponseSchema.parse(tokenRes.data);
|
|
543
|
+
logToFile("[provisioning] tokens received, provisioning resources");
|
|
544
|
+
const resourceRes = await axios.post(`${PROVISIONING_BASE_URL}/api/agentic/provisioning/resources`, {
|
|
545
|
+
service_id: "analytics",
|
|
546
|
+
...opts?.projectName ? { configuration: { project_name: opts.projectName } } : {}
|
|
547
|
+
}, {
|
|
548
|
+
headers: {
|
|
549
|
+
"Content-Type": "application/json",
|
|
550
|
+
Authorization: `Bearer ${tokenData.access_token}`,
|
|
551
|
+
"API-Version": API_VERSION,
|
|
552
|
+
"User-Agent": WIZARD_USER_AGENT
|
|
553
|
+
},
|
|
554
|
+
timeout: 3e4
|
|
555
|
+
});
|
|
556
|
+
const resourceData = ResourceResponseSchema.parse(resourceRes.data);
|
|
557
|
+
if (resourceData.status !== "complete" || !resourceData.complete) throw new Error("Resource provisioning did not complete");
|
|
558
|
+
logToFile("[provisioning] resources provisioned successfully");
|
|
559
|
+
return {
|
|
560
|
+
accessToken: tokenData.access_token,
|
|
561
|
+
refreshToken: tokenData.refresh_token,
|
|
562
|
+
projectApiKey: resourceData.complete.access_configuration.api_key,
|
|
563
|
+
host: resourceData.complete.access_configuration.host,
|
|
564
|
+
personalApiKey: resourceData.complete.access_configuration.personal_api_key,
|
|
565
|
+
projectId: resourceData.id,
|
|
566
|
+
accountId: tokenData.account?.id ?? ""
|
|
567
|
+
};
|
|
568
|
+
}
|
|
569
|
+
//#endregion
|
|
570
|
+
//#region src/lib/api.ts
|
|
571
|
+
const ApiUserSchema = z.object({
|
|
572
|
+
distinct_id: z.string(),
|
|
573
|
+
organizations: z.array(z.object({ id: z.string().uuid() })),
|
|
574
|
+
team: z.object({
|
|
575
|
+
id: z.number(),
|
|
576
|
+
organization: z.string().uuid()
|
|
577
|
+
}),
|
|
578
|
+
organization: z.object({ id: z.string().uuid() })
|
|
579
|
+
});
|
|
580
|
+
const ApiProjectSchema = z.object({
|
|
581
|
+
id: z.number(),
|
|
582
|
+
uuid: z.string().uuid(),
|
|
583
|
+
organization: z.string().uuid(),
|
|
584
|
+
api_token: z.string(),
|
|
585
|
+
name: z.string()
|
|
586
|
+
});
|
|
587
|
+
var ApiError = class extends Error {
|
|
588
|
+
constructor(message, statusCode, endpoint) {
|
|
589
|
+
super(message);
|
|
590
|
+
this.statusCode = statusCode;
|
|
591
|
+
this.endpoint = endpoint;
|
|
592
|
+
this.name = "ApiError";
|
|
593
|
+
}
|
|
594
|
+
};
|
|
595
|
+
async function fetchUserData(accessToken, baseUrl) {
|
|
596
|
+
try {
|
|
597
|
+
const response = await axios.get(`${baseUrl}/api/users/@me/`, { headers: {
|
|
598
|
+
Authorization: `Bearer ${accessToken}`,
|
|
599
|
+
"User-Agent": WIZARD_USER_AGENT
|
|
600
|
+
} });
|
|
601
|
+
return ApiUserSchema.parse(response.data);
|
|
602
|
+
} catch (error) {
|
|
603
|
+
const apiError = handleApiError(error, "fetch user data");
|
|
604
|
+
analytics.captureException(apiError, {
|
|
605
|
+
endpoint: "/api/users/@me/",
|
|
606
|
+
baseUrl
|
|
607
|
+
});
|
|
608
|
+
throw apiError;
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
async function fetchProjectData(accessToken, projectId, baseUrl) {
|
|
612
|
+
try {
|
|
613
|
+
const response = await axios.get(`${baseUrl}/api/projects/${projectId}/`, { headers: {
|
|
614
|
+
Authorization: `Bearer ${accessToken}`,
|
|
615
|
+
"User-Agent": WIZARD_USER_AGENT
|
|
616
|
+
} });
|
|
617
|
+
return ApiProjectSchema.parse(response.data);
|
|
618
|
+
} catch (error) {
|
|
619
|
+
const apiError = handleApiError(error, "fetch project data");
|
|
620
|
+
analytics.captureException(apiError, {
|
|
621
|
+
endpoint: `/api/projects/${projectId}/`,
|
|
622
|
+
baseUrl,
|
|
623
|
+
projectId
|
|
624
|
+
});
|
|
625
|
+
throw apiError;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
function handleApiError(error, operation) {
|
|
629
|
+
if (axios.isAxiosError(error)) {
|
|
630
|
+
const axiosError = error;
|
|
631
|
+
const status = axiosError.response?.status;
|
|
632
|
+
const detail = axiosError.response?.data?.detail;
|
|
633
|
+
const endpoint = axiosError.config?.url;
|
|
634
|
+
if (status === 401) return new ApiError(`Authentication failed while trying to ${operation}`, status, endpoint);
|
|
635
|
+
if (status === 403) return new ApiError(`Access denied while trying to ${operation}`, status, endpoint);
|
|
636
|
+
if (status === 404) return new ApiError(`Resource not found while trying to ${operation}`, status, endpoint);
|
|
637
|
+
return new ApiError(detail || `Failed to ${operation}`, status, endpoint);
|
|
638
|
+
}
|
|
639
|
+
if (error instanceof z.ZodError) return new ApiError(`Invalid response format while trying to ${operation}`);
|
|
640
|
+
return new ApiError(`Unexpected error while trying to ${operation}: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
641
|
+
}
|
|
642
|
+
//#endregion
|
|
643
|
+
//#region src/utils/semver.ts
|
|
644
|
+
/**
|
|
645
|
+
* Version strings from package.json that are not semver ranges.
|
|
646
|
+
* URLs, git refs, dist-tags, local paths, workspace protocol, npm aliases, etc.
|
|
647
|
+
* These should be rejected early — we can't determine a clear version from them.
|
|
648
|
+
*/
|
|
649
|
+
function isNonSemverVersion(version) {
|
|
650
|
+
const v = version.trim();
|
|
651
|
+
return v === "" || v.startsWith("http://") || v.startsWith("https://") || v.startsWith("git+") || v.startsWith("git://") || v.startsWith("file:") || v.startsWith("npm:") || v.startsWith("workspace:") || v.startsWith("/") || v.includes("/");
|
|
652
|
+
}
|
|
653
|
+
/**
|
|
654
|
+
* Creates a version bucket function for analytics.
|
|
655
|
+
* Converts versions like "1.2.3" to "1.x" for grouping in analytics.
|
|
656
|
+
*
|
|
657
|
+
* @param minMajorVersion - Optional minimum major version threshold.
|
|
658
|
+
* Versions below this will be bucketed as "<{min}.0.0"
|
|
659
|
+
*
|
|
660
|
+
* @example
|
|
661
|
+
* const getVersionBucket = createVersionBucket(); // no minimum
|
|
662
|
+
* getVersionBucket("1.2.3") // "1.x"
|
|
663
|
+
*
|
|
664
|
+
* const getVersionBucket = createVersionBucket(11);
|
|
665
|
+
* getVersionBucket("15.3.0") // "15.x"
|
|
666
|
+
* getVersionBucket("10.0.0") // "<11.0.0"
|
|
667
|
+
*/
|
|
668
|
+
function createVersionBucket(minMajorVersion) {
|
|
669
|
+
return (version) => {
|
|
670
|
+
if (!version) return "none";
|
|
671
|
+
if (isNonSemverVersion(version)) return "unknown";
|
|
672
|
+
try {
|
|
673
|
+
const minVer = minVersion(version);
|
|
674
|
+
if (!minVer) return "invalid";
|
|
675
|
+
const majorVersion = major(minVer);
|
|
676
|
+
if (minMajorVersion !== void 0 && majorVersion < minMajorVersion) return `<${minMajorVersion}.0.0`;
|
|
677
|
+
return `${majorVersion}.x`;
|
|
678
|
+
} catch {
|
|
679
|
+
return "unknown";
|
|
680
|
+
}
|
|
681
|
+
};
|
|
682
|
+
}
|
|
683
|
+
//#endregion
|
|
684
|
+
//#region src/utils/setup-utils.ts
|
|
685
|
+
/** @deprecated Use wizardAbort() directly for new code. */
|
|
686
|
+
async function abort(message, status) {
|
|
687
|
+
return wizardAbort({
|
|
688
|
+
message,
|
|
689
|
+
exitCode: status
|
|
690
|
+
});
|
|
691
|
+
}
|
|
692
|
+
const FREEMAIL_DOMAINS = new Set([
|
|
693
|
+
"gmail.com",
|
|
694
|
+
"googlemail.com",
|
|
695
|
+
"hotmail.com",
|
|
696
|
+
"outlook.com",
|
|
697
|
+
"yahoo.com",
|
|
698
|
+
"icloud.com",
|
|
699
|
+
"me.com",
|
|
700
|
+
"mail.com",
|
|
701
|
+
"protonmail.com",
|
|
702
|
+
"proton.me",
|
|
703
|
+
"live.com",
|
|
704
|
+
"aol.com",
|
|
705
|
+
"yandex.com",
|
|
706
|
+
"zoho.com",
|
|
707
|
+
"gmx.com",
|
|
708
|
+
"fastmail.com"
|
|
709
|
+
]);
|
|
710
|
+
function parseGitRemote() {
|
|
711
|
+
try {
|
|
712
|
+
const match = childProcess.execSync("git remote get-url origin", { stdio: [
|
|
713
|
+
"ignore",
|
|
714
|
+
"pipe",
|
|
715
|
+
"ignore"
|
|
716
|
+
] }).toString().trim().match(/[/:]([\w.-]+)\/([\w.-]+?)(?:\.git)?$/);
|
|
717
|
+
if (match) return {
|
|
718
|
+
org: match[1],
|
|
719
|
+
repo: match[2]
|
|
720
|
+
};
|
|
721
|
+
} catch {}
|
|
722
|
+
return null;
|
|
723
|
+
}
|
|
724
|
+
function detectOrgAndProject(email) {
|
|
725
|
+
const remote = parseGitRemote();
|
|
726
|
+
const projectName = remote?.repo || basename(process.cwd()) || void 0;
|
|
727
|
+
let orgName;
|
|
728
|
+
if (remote?.org) orgName = remote.org;
|
|
729
|
+
else {
|
|
730
|
+
const domain = email.split("@")[1]?.toLowerCase();
|
|
731
|
+
if (domain && !FREEMAIL_DOMAINS.has(domain)) orgName = domain.split(".")[0];
|
|
732
|
+
}
|
|
733
|
+
return {
|
|
734
|
+
orgName,
|
|
735
|
+
projectName
|
|
736
|
+
};
|
|
737
|
+
}
|
|
738
|
+
/**
|
|
739
|
+
* Get package.json or abort the wizard if not found.
|
|
740
|
+
* Only use where package.json is required (e.g., package install, overrides).
|
|
741
|
+
* For detection/version-checks, use tryGetPackageJson() instead.
|
|
742
|
+
*/
|
|
743
|
+
async function getPackageDotJson({ installDir }) {
|
|
744
|
+
const packageJsonFileContents = await fs$1.promises.readFile(join(installDir, "package.json"), "utf8").catch(() => {
|
|
745
|
+
getUI().log.error("Could not find package.json. Make sure to run the wizard in the root of your app!");
|
|
746
|
+
return abort();
|
|
747
|
+
});
|
|
748
|
+
let packageJson = void 0;
|
|
749
|
+
try {
|
|
750
|
+
packageJson = JSON.parse(packageJsonFileContents);
|
|
751
|
+
} catch {
|
|
752
|
+
getUI().log.error(`Unable to parse your package.json. Make sure it has a valid format!`);
|
|
753
|
+
await abort();
|
|
754
|
+
}
|
|
755
|
+
return packageJson || {};
|
|
756
|
+
}
|
|
757
|
+
/**
|
|
758
|
+
* Try to get package.json, returning null if it doesn't exist.
|
|
759
|
+
* Use this for detection purposes where missing package.json is expected (e.g., Python projects).
|
|
760
|
+
*/
|
|
761
|
+
async function tryGetPackageJson({ installDir }) {
|
|
762
|
+
try {
|
|
763
|
+
const packageJsonFileContents = await fs$1.promises.readFile(join(installDir, "package.json"), "utf8");
|
|
764
|
+
return JSON.parse(packageJsonFileContents);
|
|
765
|
+
} catch {
|
|
766
|
+
return null;
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
async function updatePackageDotJson(packageDotJson, { installDir }) {
|
|
770
|
+
try {
|
|
771
|
+
await fs$1.promises.writeFile(join(installDir, "package.json"), JSON.stringify(packageDotJson, null, 2), {
|
|
772
|
+
encoding: "utf8",
|
|
773
|
+
flag: "w"
|
|
774
|
+
});
|
|
775
|
+
} catch {
|
|
776
|
+
getUI().log.error(`Unable to update your package.json.`);
|
|
777
|
+
await abort();
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
function isUsingTypeScript({ installDir }) {
|
|
781
|
+
try {
|
|
782
|
+
return fs$1.existsSync(join(installDir, "tsconfig.json"));
|
|
783
|
+
} catch {
|
|
784
|
+
return false;
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
/**
|
|
788
|
+
* Get project data for the wizard via OAuth or CI API key.
|
|
789
|
+
*/
|
|
790
|
+
async function getOrAskForProjectData(_options) {
|
|
791
|
+
if (_options.ci && _options.apiKey) {
|
|
792
|
+
getUI().log.info("Using provided API key (CI mode - OAuth bypassed)");
|
|
793
|
+
const cloudRegion = await detectRegionFromToken(_options.apiKey);
|
|
794
|
+
const host = getHostFromRegion(cloudRegion);
|
|
795
|
+
const cloudUrl = getCloudUrlFromRegion(cloudRegion);
|
|
796
|
+
const projectData = _options.projectId != null ? await fetchProjectDataById(_options.apiKey, _options.projectId, cloudUrl) : await fetchProjectDataWithApiKey(_options.apiKey, cloudUrl);
|
|
797
|
+
return {
|
|
798
|
+
host,
|
|
799
|
+
projectApiKey: projectData.api_token,
|
|
800
|
+
accessToken: _options.apiKey,
|
|
801
|
+
projectId: projectData.id,
|
|
802
|
+
cloudRegion
|
|
803
|
+
};
|
|
804
|
+
}
|
|
805
|
+
const { host, projectApiKey, accessToken, projectId, cloudRegion } = await traceStep("login", () => askForWizardLogin({
|
|
806
|
+
signup: _options.signup,
|
|
807
|
+
email: _options.email,
|
|
808
|
+
region: _options.region
|
|
809
|
+
}));
|
|
810
|
+
if (!projectApiKey) {
|
|
811
|
+
const cloudUrl = getCloudUrlFromRegion(cloudRegion);
|
|
812
|
+
getUI().log.error(`Didn't receive a project token. This shouldn't happen :(
|
|
813
|
+
|
|
814
|
+
Please let us know if you think this is a bug in the wizard:
|
|
815
|
+
${ISSUES_URL}`);
|
|
816
|
+
getUI().log.info(`In the meantime, we'll add a dummy project token ("${DUMMY_PROJECT_API_KEY}") for you to replace later.
|
|
817
|
+
You can find your project token here:
|
|
818
|
+
${cloudUrl}/settings/project#variables`);
|
|
819
|
+
}
|
|
820
|
+
return {
|
|
821
|
+
accessToken,
|
|
822
|
+
host: host || DEFAULT_HOST_URL,
|
|
823
|
+
projectApiKey: projectApiKey || "_YOUR_POSTHOG_PROJECT_TOKEN_",
|
|
824
|
+
projectId,
|
|
825
|
+
cloudRegion
|
|
826
|
+
};
|
|
827
|
+
}
|
|
828
|
+
async function fetchProjectDataWithApiKey(apiKey, cloudUrl) {
|
|
829
|
+
const projectId = (await fetchUserData(apiKey, cloudUrl)).team?.id;
|
|
830
|
+
if (!projectId) throw new Error("Could not determine project ID from API key. Please ensure your API key has access to a project in this cloud region.");
|
|
831
|
+
return {
|
|
832
|
+
api_token: (await fetchProjectData(apiKey, projectId, cloudUrl)).api_token,
|
|
833
|
+
id: projectId
|
|
834
|
+
};
|
|
835
|
+
}
|
|
836
|
+
async function fetchProjectDataById(apiKey, projectId, cloudUrl) {
|
|
837
|
+
return {
|
|
838
|
+
api_token: (await fetchProjectData(apiKey, projectId, cloudUrl)).api_token,
|
|
839
|
+
id: projectId
|
|
840
|
+
};
|
|
841
|
+
}
|
|
842
|
+
async function askForWizardLogin(options) {
|
|
843
|
+
if (options.signup) return askForProvisioningSignup(options.email, options.region);
|
|
844
|
+
const tokenResponse = await performOAuthFlow({
|
|
845
|
+
scopes: [
|
|
846
|
+
"user:read",
|
|
847
|
+
"project:read",
|
|
848
|
+
"introspection",
|
|
849
|
+
"llm_gateway:read",
|
|
850
|
+
"dashboard:write",
|
|
851
|
+
"insight:write",
|
|
852
|
+
"query:read"
|
|
853
|
+
],
|
|
854
|
+
signup: false
|
|
855
|
+
});
|
|
856
|
+
const projectId = tokenResponse.scoped_teams?.[0];
|
|
857
|
+
if (projectId === void 0) {
|
|
858
|
+
const error = /* @__PURE__ */ new Error("No project access granted. Please authorize with project-level access.");
|
|
859
|
+
analytics.captureException(error, {
|
|
860
|
+
step: "wizard_login",
|
|
861
|
+
has_scoped_teams: !!tokenResponse.scoped_teams
|
|
862
|
+
});
|
|
863
|
+
getUI().log.error(error.message);
|
|
864
|
+
await abort();
|
|
865
|
+
}
|
|
866
|
+
const cloudRegion = await detectRegionFromToken(tokenResponse.access_token);
|
|
867
|
+
const cloudUrl = getCloudUrlFromRegion(cloudRegion);
|
|
868
|
+
const host = getHostFromRegion(cloudRegion);
|
|
869
|
+
const projectData = await fetchProjectData(tokenResponse.access_token, projectId, cloudUrl);
|
|
870
|
+
const userData = await fetchUserData(tokenResponse.access_token, cloudUrl);
|
|
871
|
+
const data = {
|
|
872
|
+
accessToken: tokenResponse.access_token,
|
|
873
|
+
projectApiKey: projectData.api_token,
|
|
874
|
+
host,
|
|
875
|
+
distinctId: userData.distinct_id,
|
|
876
|
+
projectId,
|
|
877
|
+
cloudRegion
|
|
878
|
+
};
|
|
879
|
+
getUI().log.success("Login complete.");
|
|
880
|
+
analytics.setTag("opened-wizard-link", true);
|
|
881
|
+
analytics.setDistinctId(data.distinctId);
|
|
882
|
+
return data;
|
|
883
|
+
}
|
|
884
|
+
async function askForProvisioningSignup(email, region) {
|
|
885
|
+
if (!email || !email.includes("@")) {
|
|
886
|
+
getUI().log.error("Email is required for signup. Use --email your@email.com with --signup.");
|
|
887
|
+
await abort();
|
|
888
|
+
throw new Error("unreachable");
|
|
889
|
+
}
|
|
890
|
+
const spinner = getUI().spinner();
|
|
891
|
+
spinner.start("Creating your PostHog account...");
|
|
892
|
+
try {
|
|
893
|
+
const provisionRegion = (region ?? "us").toUpperCase();
|
|
894
|
+
const { orgName, projectName } = detectOrgAndProject(email);
|
|
895
|
+
const result = await provisionNewAccount(email, "", provisionRegion, {
|
|
896
|
+
orgName,
|
|
897
|
+
projectName
|
|
898
|
+
});
|
|
899
|
+
spinner.stop("Account created!");
|
|
900
|
+
getUI().log.success("Welcome to PostHog!");
|
|
901
|
+
const host = result.host;
|
|
902
|
+
const cloudRegion = host.includes("eu.") ? "eu" : "us";
|
|
903
|
+
analytics.setTag("provisioning-signup", true);
|
|
904
|
+
return {
|
|
905
|
+
accessToken: result.accessToken,
|
|
906
|
+
projectApiKey: result.projectApiKey,
|
|
907
|
+
host,
|
|
908
|
+
distinctId: email,
|
|
909
|
+
projectId: parseInt(result.projectId, 10) || 0,
|
|
910
|
+
cloudRegion
|
|
911
|
+
};
|
|
912
|
+
} catch (error) {
|
|
913
|
+
spinner.stop("Account creation failed.");
|
|
914
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
915
|
+
if (message.includes("already associated")) {
|
|
916
|
+
getUI().log.info("This email already has a PostHog account. Switching to login flow...");
|
|
917
|
+
return askForWizardLogin({ signup: false });
|
|
918
|
+
}
|
|
919
|
+
getUI().log.error(`Failed to create account: ${message}`);
|
|
920
|
+
analytics.captureException(error instanceof Error ? error : new Error(message), { step: "provisioning_signup" });
|
|
921
|
+
await abort();
|
|
922
|
+
throw error;
|
|
923
|
+
}
|
|
924
|
+
}
|
|
925
|
+
//#endregion
|
|
926
|
+
export { getCloudUrlFromRegion as a, createVersionBucket as i, isUsingTypeScript as n, getLlmGatewayUrlFromHost as o, tryGetPackageJson as r, detectAllPackageManagers as s, getOrAskForProjectData as t };
|
|
927
|
+
|
|
928
|
+
//# sourceMappingURL=setup-utils-CdDnllRW.js.map
|