@posthog/wizard 2.9.1 → 2.10.1
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-DINVFEYh.js +3356 -0
- package/dist/McpScreen-DINVFEYh.js.map +1 -0
- package/dist/add-mcp-server-to-clients-BlbtWGU0.js +436 -0
- package/dist/add-mcp-server-to-clients-BlbtWGU0.js.map +1 -0
- package/dist/agent-runner-D_eXxXPp.js +1114 -0
- package/dist/agent-runner-D_eXxXPp.js.map +1 -0
- package/dist/agent-skill-BVjJqol6.js +59 -0
- package/dist/agent-skill-BVjJqol6.js.map +1 -0
- package/dist/analytics-Bu1XKP2S.js +207 -0
- package/dist/analytics-Bu1XKP2S.js.map +1 -0
- package/dist/analytics-DjWAOHun.js +2 -0
- package/dist/bin.d.ts +1 -2
- package/dist/bin.js +635 -521
- 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-B6EEBoZk.js +122 -0
- package/dist/detection-B6EEBoZk.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-BTZ75a-a.js +222 -0
- package/dist/package-manager-BTZ75a-a.js.map +1 -0
- package/dist/posthog-integration-_xd3kuTB.js +230 -0
- package/dist/posthog-integration-_xd3kuTB.js.map +1 -0
- package/dist/readiness-BPPVNQum.js +2156 -0
- package/dist/readiness-BPPVNQum.js.map +1 -0
- package/dist/registry-BY4HuKIE.js +2922 -0
- package/dist/registry-BY4HuKIE.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-Dymympue.js +928 -0
- package/dist/setup-utils-Dymympue.js.map +1 -0
- package/dist/smoke-test-ci.sh +165 -0
- package/dist/start-playground-BjIMB4sp.js +1005 -0
- package/dist/start-playground-BjIMB4sp.js.map +1 -0
- package/dist/start-tui-xs7DNbH9.js +1885 -0
- package/dist/start-tui-xs7DNbH9.js.map +1 -0
- package/dist/steps-CCz4dZOV.js +146 -0
- package/dist/steps-CCz4dZOV.js.map +1 -0
- package/dist/telemetry-DfPvsfxj.js +13 -0
- package/dist/telemetry-DfPvsfxj.js.map +1 -0
- package/dist/wizard-abort-BPf5l506.js +39 -0
- package/dist/wizard-abort-BPf5l506.js.map +1 -0
- package/dist/wizard-abort-WACKybRA.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 -325
- 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 -73
- 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 -43
- 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 -53
- 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 -935
- 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 -52
- package/dist/src/ui/tui/flows.js +0 -76
- 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 -50
- 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/McpDemo.d.ts +0 -12
- package/dist/src/ui/tui/playground/demos/McpDemo.js +0 -27
- package/dist/src/ui/tui/playground/demos/McpDemo.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 -15
- 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 -46
- package/dist/src/ui/tui/screen-registry.js.map +0 -1
- package/dist/src/ui/tui/screens/AgentSkillIntroScreen.d.ts +0 -12
- package/dist/src/ui/tui/screens/AgentSkillIntroScreen.js +0 -75
- package/dist/src/ui/tui/screens/AgentSkillIntroScreen.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/IntroScreenLayout.d.ts +0 -46
- package/dist/src/ui/tui/screens/IntroScreenLayout.js +0 -33
- package/dist/src/ui/tui/screens/IntroScreenLayout.js.map +0 -1
- package/dist/src/ui/tui/screens/KeepSkillsScreen.d.ts +0 -14
- package/dist/src/ui/tui/screens/KeepSkillsScreen.js +0 -74
- package/dist/src/ui/tui/screens/KeepSkillsScreen.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 -130
- 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/PostHogIntegrationIntroScreen.d.ts +0 -15
- package/dist/src/ui/tui/screens/PostHogIntegrationIntroScreen.js +0 -135
- package/dist/src/ui/tui/screens/PostHogIntegrationIntroScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/RevenueIntroScreen.d.ts +0 -16
- package/dist/src/ui/tui/screens/RevenueIntroScreen.js +0 -89
- 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/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 -474
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"agent-runner-D_eXxXPp.js","names":["executeAgent"],"sources":["../src/lib/middleware/phase-detector.ts","../src/lib/middleware/pipeline.ts","../src/lib/middleware/config.ts","../src/lib/middleware/benchmarks/turn-counter.ts","../src/lib/middleware/benchmarks/token-tracker.ts","../src/lib/middleware/benchmarks/cache-tracker.ts","../src/lib/middleware/benchmarks/compaction-tracker.ts","../src/lib/middleware/benchmarks/context-size-tracker.ts","../src/lib/middleware/benchmarks/cost-tracker.ts","../src/lib/middleware/benchmarks/duration-tracker.ts","../src/lib/middleware/benchmarks/summary.ts","../src/lib/middleware/benchmarks/json-writer.ts","../src/lib/middleware/benchmarks/index.ts","../src/lib/middleware/benchmark.ts","../src/lib/agent/agent-prompt.ts","../src/lib/agent/agent-runner.ts"],"sourcesContent":["/** Phase transitions from [STATUS] in assistant text. Keep in sync with workflow \"Status to report\" bullets. */\n\nconst PHASES_ORDER = [\n '1.0-begin',\n '1.1-edit',\n '1.2-revise',\n '1.3-conclude',\n] as const;\n\nconst STATUS_PHRASES_BY_PHASE: Record<(typeof PHASES_ORDER)[number], string[]> =\n {\n '1.0-begin': [\n 'Checking project structure',\n 'Verifying PostHog dependencies',\n 'Generating events based on project',\n ],\n '1.1-edit': ['Inserting PostHog capture code'],\n '1.2-revise': [\n 'Finding and correcting errors',\n 'Report details of any errors you fix',\n 'Linting, building and prettying',\n ],\n '1.3-conclude': ['Configured dashboard', 'Created setup report'],\n };\n\nexport class PhaseDetector {\n private currentPhase: 'setup' | (typeof PHASES_ORDER)[number] = 'setup';\n\n detect(message: any): string | null {\n if (message.type !== 'assistant') return null;\n\n const nextPhase = this.getNextPhase();\n if (nextPhase === null) return null;\n\n const content = message.message?.content;\n if (!Array.isArray(content)) return null;\n\n for (const block of content) {\n if (block.type !== 'text' || typeof block.text !== 'string') continue;\n if (!block.text.includes('[STATUS]')) continue;\n\n const phrases = STATUS_PHRASES_BY_PHASE[nextPhase];\n for (const phrase of phrases) {\n if (block.text.includes(phrase)) {\n this.currentPhase = nextPhase;\n return nextPhase;\n }\n }\n }\n\n return null;\n }\n\n private getNextPhase(): (typeof PHASES_ORDER)[number] | null {\n if (this.currentPhase === 'setup') return '1.0-begin';\n const i = PHASES_ORDER.indexOf(this.currentPhase);\n if (i < 0 || i >= PHASES_ORDER.length - 1) return null;\n return PHASES_ORDER[i + 1];\n }\n\n reset(): void {\n this.currentPhase = 'setup';\n }\n}\n","/**\n * Middleware pipeline orchestrator.\n *\n * Implements the same { onMessage, finalize } interface that runAgent() expects,\n * while internally dispatching to an ordered list of middleware plugins.\n */\n\nimport { PhaseDetector } from './phase-detector';\nimport type {\n Middleware,\n MiddlewareContext,\n MiddlewareStore,\n SDKMessage,\n} from './types';\n\nexport class MiddlewarePipeline {\n private middlewares: Middleware[];\n private store = new Map<string, unknown>();\n private phaseDetector: PhaseDetector;\n private autoDetectPhases: boolean;\n private _currentPhase = 'setup';\n private _currentPhaseFreshContext = true;\n\n constructor(\n middlewares: Middleware[],\n opts?: { phaseDetector?: PhaseDetector; autoDetectPhases?: boolean },\n ) {\n this.middlewares = middlewares;\n this.phaseDetector = opts?.phaseDetector ?? new PhaseDetector();\n this.autoDetectPhases = opts?.autoDetectPhases ?? true;\n\n const ctx = this.createContext();\n for (const mw of this.middlewares) {\n mw.onInit?.(ctx);\n }\n }\n\n /** Feed an SDK message through all middleware (satisfies tracker.onMessage) */\n onMessage(message: SDKMessage): void {\n // Phase detection first — updates context before middleware sees it\n if (this.autoDetectPhases) {\n const newPhase = this.phaseDetector.detect(message);\n if (newPhase && newPhase !== this._currentPhase) {\n this.transitionPhase(newPhase, false);\n }\n }\n\n const ctx = this.createContext();\n const storeHandle = this.createStore();\n for (const mw of this.middlewares) {\n mw.onMessage?.(message, ctx, storeHandle);\n }\n }\n\n /** Finalize the run (satisfies tracker.finalize) */\n finalize(resultMessage: any, totalDurationMs: number): any {\n const ctx = this.createContext();\n const storeHandle = this.createStore();\n let result: any;\n for (const mw of this.middlewares) {\n const r = mw.onFinalize?.(\n resultMessage,\n totalDurationMs,\n ctx,\n storeHandle,\n );\n if (r !== undefined) result = r;\n }\n return result;\n }\n\n /** Explicit phase start (for phased runner support) */\n startPhase(name: string, freshContext: boolean): void {\n this.transitionPhase(name, freshContext);\n }\n\n private transitionPhase(newPhase: string, freshContext: boolean): void {\n const oldPhase = this._currentPhase;\n this._currentPhase = newPhase;\n this._currentPhaseFreshContext = freshContext;\n const ctx = this.createContext();\n const storeHandle = this.createStore();\n for (const mw of this.middlewares) {\n mw.onPhaseTransition?.(oldPhase, newPhase, ctx, storeHandle);\n }\n }\n\n private createContext(): MiddlewareContext {\n return {\n currentPhase: this._currentPhase,\n currentPhaseFreshContext: this._currentPhaseFreshContext,\n get: <T>(key: string) => this.store.get(key) as T | undefined,\n };\n }\n\n private createStore(): MiddlewareStore {\n return {\n set: (key: string, value: unknown) => this.store.set(key, value),\n };\n }\n}\n","/**\n * Benchmark configuration loader.\n *\n * Loads .benchmark-config.json from the working directory with sensible defaults.\n * All fields are optional — missing fields fall back to defaults.\n */\n\nimport fs from 'fs';\nimport path from 'path';\nimport { logToFile } from '../../utils/debug';\nimport { AgentSignals } from '../agent/agent-interface';\nimport { runtimeEnv } from '@env';\n\nexport interface BenchmarkConfig {\n /** Enable/disable individual metric plugins */\n plugins: Record<string, boolean>;\n output: {\n /** Path for the benchmark JSON output file */\n benchmarkPath: string;\n /** Whether to write the benchmark JSON file */\n benchmarkEnabled: boolean;\n /** Path for the main wizard debug log file */\n logPath: string;\n /** Whether to write the main wizard debug log */\n logEnabled: boolean;\n /** Suppress benchmark console output (disables the summary plugin) */\n suppressWizardLogs: boolean;\n };\n}\n\nconst DEFAULT_CONFIG: BenchmarkConfig = {\n plugins: {\n tokens: true,\n cache: true,\n turns: true,\n compactions: true,\n contextSize: true,\n cost: true,\n duration: true,\n summary: true,\n jsonWriter: true,\n },\n output: {\n benchmarkPath: '/tmp/posthog-wizard-benchmark.json',\n benchmarkEnabled: true,\n logPath: '/tmp/posthog-wizard.log',\n logEnabled: true,\n suppressWizardLogs: false,\n },\n};\n\nexport function loadBenchmarkConfig(installDir: string): BenchmarkConfig {\n const configPath =\n runtimeEnv('POSTHOG_WIZARD_BENCHMARK_CONFIG') ??\n path.join(installDir, '.benchmark-config.json');\n try {\n const raw = fs.readFileSync(configPath, 'utf-8');\n const parsed = JSON.parse(raw);\n const config: BenchmarkConfig = {\n plugins: { ...DEFAULT_CONFIG.plugins, ...parsed.plugins },\n output: { ...DEFAULT_CONFIG.output, ...parsed.output },\n };\n\n // Env var overrides for parallel runs\n const benchFile = runtimeEnv('POSTHOG_WIZARD_BENCHMARK_FILE');\n if (benchFile) {\n config.output.benchmarkPath = benchFile;\n }\n const logDir = runtimeEnv('POSTHOG_WIZARD_LOG_DIR');\n if (logDir) {\n config.output.logPath = path.join(logDir, 'posthog-wizard.log');\n }\n\n // If benchmark output is disabled, disable the jsonWriter plugin\n if (!config.output.benchmarkEnabled) {\n config.plugins.jsonWriter = false;\n }\n\n logToFile(`${AgentSignals.BENCHMARK} Loaded config from ${configPath}`);\n return config;\n } catch {\n // No config file or invalid JSON — use defaults\n const config = structuredClone(DEFAULT_CONFIG);\n\n // Env var overrides\n const benchFile2 = runtimeEnv('POSTHOG_WIZARD_BENCHMARK_FILE');\n if (benchFile2) {\n config.output.benchmarkPath = benchFile2;\n }\n const logDir2 = runtimeEnv('POSTHOG_WIZARD_LOG_DIR');\n if (logDir2) {\n config.output.logPath = path.join(logDir2, 'posthog-wizard.log');\n }\n\n return config;\n }\n}\n\nexport function getDefaultConfig(): BenchmarkConfig {\n return structuredClone(DEFAULT_CONFIG);\n}\n","/**\n * Turn counting plugin with message deduplication.\n *\n * The SDK emits multiple assistant events per turn (one per content block)\n * with the same message ID. This plugin deduplicates and publishes turn\n * counts + a duplicate flag for downstream plugins.\n */\n\nimport type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\n\nexport interface TurnData {\n /** Whether the current message is a duplicate of the last processed turn */\n isDuplicate: boolean;\n /** Turns in the current phase */\n phaseTurns: number;\n /** Total turns across all phases */\n totalTurns: number;\n /** Per-phase turn snapshots: [{ phase, turns }] */\n phaseSnapshots: Array<{ phase: string; turns: number }>;\n}\n\nexport class TurnCounterPlugin implements Middleware {\n readonly name = 'turns';\n\n private lastMessageId: string | null = null;\n private phaseTurns = 0;\n private totalTurns = 0;\n private isDuplicate = false;\n private phaseSnapshots: Array<{ phase: string; turns: number }> = [];\n private currentPhase = 'setup';\n\n onMessage(\n message: any,\n _ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n if (message.type !== 'assistant') {\n this.isDuplicate = false;\n store.set('turns', this.getData());\n return;\n }\n\n const msgId: string | undefined = message.message?.id;\n this.isDuplicate = msgId != null && msgId === this.lastMessageId;\n if (msgId) this.lastMessageId = msgId;\n\n if (!this.isDuplicate) {\n this.phaseTurns++;\n this.totalTurns++;\n }\n\n store.set('turns', this.getData());\n }\n\n onPhaseTransition(\n fromPhase: string,\n _toPhase: string,\n _ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n this.phaseSnapshots.push({ phase: fromPhase, turns: this.phaseTurns });\n this.currentPhase = _toPhase;\n this.phaseTurns = 0;\n this.lastMessageId = null;\n store.set('turns', this.getData());\n }\n\n onFinalize(\n _resultMessage: any,\n _totalDurationMs: number,\n _ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n this.phaseSnapshots.push({\n phase: this.currentPhase,\n turns: this.phaseTurns,\n });\n store.set('turns', this.getData());\n }\n\n private getData(): TurnData {\n return {\n isDuplicate: this.isDuplicate,\n phaseTurns: this.phaseTurns,\n totalTurns: this.totalTurns,\n phaseSnapshots: [...this.phaseSnapshots],\n };\n }\n}\n","/**\n * Token tracking plugin for input/output tokens.\n *\n * Accumulates per-turn token usage (input_tokens + cache_read_input_tokens\n * + cache_creation_input_tokens = total input; output_tokens = output).\n * Respects the dedup flag from TurnCounterPlugin. Cache breakdown (r/5m/1h)\n * is tracked by CacheTrackerPlugin for reporting and pricing.\n */\n\nimport type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\nimport type { TurnData } from './turn-counter';\n\nexport interface TokenData {\n phaseInput: number;\n phaseOutput: number;\n totalInput: number;\n totalOutput: number;\n /** The raw usage object from the last non-duplicate assistant message */\n lastUsage: any;\n /** Per-phase token snapshots */\n phaseSnapshots: Array<{\n phase: string;\n inputTokens: number;\n outputTokens: number;\n /** Number of turns in this phase that had usage (SDK may not report all) */\n messagesWithUsage: number;\n }>;\n}\n\nexport class TokenTrackerPlugin implements Middleware {\n readonly name = 'tokens';\n\n private phaseInput = 0;\n private phaseOutput = 0;\n private totalInput = 0;\n private totalOutput = 0;\n private lastUsage: any = null;\n private phaseSnapshots: Array<{\n phase: string;\n inputTokens: number;\n outputTokens: number;\n messagesWithUsage: number;\n }> = [];\n private currentPhase = 'setup';\n private phaseMessagesWithUsage = 0;\n\n onMessage(\n message: any,\n ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n if (message.type !== 'assistant') return;\n\n const turns = ctx.get<TurnData>('turns');\n if (turns?.isDuplicate) return;\n\n const usage = message.message?.usage;\n if (usage) {\n const input =\n Number(usage.input_tokens ?? 0) +\n Number(usage.cache_read_input_tokens ?? 0) +\n Number(usage.cache_creation_input_tokens ?? 0);\n const output = Number(usage.output_tokens ?? 0);\n this.phaseInput += input;\n this.phaseOutput += output;\n this.totalInput += input;\n this.totalOutput += output;\n this.lastUsage = usage;\n this.phaseMessagesWithUsage += 1;\n }\n\n store.set('tokens', this.getData());\n }\n\n onPhaseTransition(\n fromPhase: string,\n toPhase: string,\n _ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n this.phaseSnapshots.push({\n phase: fromPhase,\n inputTokens: this.phaseInput,\n outputTokens: this.phaseOutput,\n messagesWithUsage: this.phaseMessagesWithUsage,\n });\n this.currentPhase = toPhase;\n this.phaseInput = 0;\n this.phaseOutput = 0;\n this.phaseMessagesWithUsage = 0;\n store.set('tokens', this.getData());\n }\n\n onFinalize(\n _resultMessage: any,\n _totalDurationMs: number,\n _ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n this.phaseSnapshots.push({\n phase: this.currentPhase,\n inputTokens: this.phaseInput,\n outputTokens: this.phaseOutput,\n messagesWithUsage: this.phaseMessagesWithUsage,\n });\n store.set('tokens', this.getData());\n }\n\n private getData(): TokenData {\n return {\n phaseInput: this.phaseInput,\n phaseOutput: this.phaseOutput,\n totalInput: this.totalInput,\n totalOutput: this.totalOutput,\n lastUsage: this.lastUsage,\n phaseSnapshots: [...this.phaseSnapshots],\n };\n }\n}\n","/**\n * Cache token tracking plugin (cache_read and cache_creation).\n *\n * Respects the dedup flag from TurnCounterPlugin.\n */\n\nimport type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\nimport type { TurnData } from './turn-counter';\n\n/** Matches SDK usage.cache_creation (ephemeral 5m vs 1h for pricing). */\nexport interface CacheCreationBreakdown {\n ephemeral_5m_input_tokens: number;\n ephemeral_1h_input_tokens: number;\n}\n\nexport interface CacheData {\n phaseRead: number;\n phaseCreation: number;\n totalRead: number;\n totalCreation: number;\n totalCreation5m: number;\n totalCreation1h: number;\n phaseSnapshots: Array<{\n phase: string;\n cacheReadTokens: number;\n cacheCreationTokens: number;\n /** When present, use for pricing (5m vs 1h rates). */\n cacheCreation5m: number;\n cacheCreation1h: number;\n }>;\n}\n\nexport class CacheTrackerPlugin implements Middleware {\n readonly name = 'cache';\n\n private phaseRead = 0;\n private phaseCreation = 0;\n private phaseCreation5m = 0;\n private phaseCreation1h = 0;\n private totalRead = 0;\n private totalCreation = 0;\n private totalCreation5m = 0;\n private totalCreation1h = 0;\n private phaseSnapshots: Array<{\n phase: string;\n cacheReadTokens: number;\n cacheCreationTokens: number;\n cacheCreation5m: number;\n cacheCreation1h: number;\n }> = [];\n private currentPhase = 'setup';\n\n onMessage(\n message: any,\n ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n if (message.type !== 'assistant') return;\n\n const turns = ctx.get<TurnData>('turns');\n if (turns?.isDuplicate) return;\n\n const usage = message.message?.usage;\n if (usage) {\n const read = Number(usage.cache_read_input_tokens ?? 0);\n const creation = Number(usage.cache_creation_input_tokens ?? 0);\n const cc = usage.cache_creation;\n const creation5m = Number(cc?.ephemeral_5m_input_tokens ?? 0);\n const creation1h = Number(cc?.ephemeral_1h_input_tokens ?? 0);\n this.phaseRead += read;\n this.phaseCreation += creation;\n this.phaseCreation5m += creation5m;\n this.phaseCreation1h += creation1h;\n this.totalRead += read;\n this.totalCreation += creation;\n }\n\n store.set('cache', this.getData());\n }\n\n onPhaseTransition(\n fromPhase: string,\n toPhase: string,\n _ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n this.phaseSnapshots.push({\n phase: fromPhase,\n cacheReadTokens: this.phaseRead,\n cacheCreationTokens: this.phaseCreation,\n cacheCreation5m: this.phaseCreation5m,\n cacheCreation1h: this.phaseCreation1h,\n });\n this.currentPhase = toPhase;\n this.phaseRead = 0;\n this.phaseCreation = 0;\n this.phaseCreation5m = 0;\n this.phaseCreation1h = 0;\n store.set('cache', this.getData());\n }\n\n onFinalize(\n _resultMessage: any,\n _totalDurationMs: number,\n _ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n this.phaseSnapshots.push({\n phase: this.currentPhase,\n cacheReadTokens: this.phaseRead,\n cacheCreationTokens: this.phaseCreation,\n cacheCreation5m: this.phaseCreation5m,\n cacheCreation1h: this.phaseCreation1h,\n });\n store.set('cache', this.getData());\n }\n\n private getData(): CacheData {\n return {\n phaseRead: this.phaseRead,\n phaseCreation: this.phaseCreation,\n totalRead: this.totalRead,\n totalCreation: this.totalCreation,\n totalCreation5m: this.totalCreation5m,\n totalCreation1h: this.totalCreation1h,\n phaseSnapshots: [...this.phaseSnapshots],\n };\n }\n}\n","/**\n * Compaction event tracking plugin.\n *\n * Tracks context compaction events (compact_boundary system messages)\n * including pre-compaction token counts per phase.\n */\n\nimport type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\nimport { logToFile } from '../../../utils/debug';\nimport { AgentSignals } from '../../agent/agent-interface';\n\nexport interface CompactionData {\n phaseCompactions: number;\n phasePreTokens: number[];\n totalCompactions: number;\n phaseSnapshots: Array<{\n phase: string;\n compactions: number;\n preTokens: number[];\n }>;\n}\n\nexport class CompactionTrackerPlugin implements Middleware {\n readonly name = 'compactions';\n\n private phaseCompactions = 0;\n private phasePreTokens: number[] = [];\n private totalCompactions = 0;\n private phaseSnapshots: Array<{\n phase: string;\n compactions: number;\n preTokens: number[];\n }> = [];\n private currentPhase = 'setup';\n\n onMessage(\n message: any,\n ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n if (message.type !== 'system' || message.subtype !== 'compact_boundary') {\n return;\n }\n\n const preTokens = message.compact_metadata?.pre_tokens ?? 0;\n const trigger = message.compact_metadata?.trigger ?? 'unknown';\n this.phaseCompactions++;\n this.totalCompactions++;\n this.phasePreTokens.push(preTokens);\n\n logToFile(\n `${AgentSignals.BENCHMARK} [COMPACTION] Context compacted during \"${ctx.currentPhase}\" (trigger: ${trigger}, pre_tokens: ${preTokens})`,\n );\n\n store.set('compactions', this.getData());\n }\n\n onPhaseTransition(\n fromPhase: string,\n toPhase: string,\n _ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n this.phaseSnapshots.push({\n phase: fromPhase,\n compactions: this.phaseCompactions,\n preTokens: [...this.phasePreTokens],\n });\n this.currentPhase = toPhase;\n this.phaseCompactions = 0;\n this.phasePreTokens = [];\n store.set('compactions', this.getData());\n }\n\n onFinalize(\n _resultMessage: any,\n _totalDurationMs: number,\n _ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n this.phaseSnapshots.push({\n phase: this.currentPhase,\n compactions: this.phaseCompactions,\n preTokens: [...this.phasePreTokens],\n });\n store.set('compactions', this.getData());\n }\n\n private getData(): CompactionData {\n return {\n phaseCompactions: this.phaseCompactions,\n phasePreTokens: [...this.phasePreTokens],\n totalCompactions: this.totalCompactions,\n phaseSnapshots: [...this.phaseSnapshots],\n };\n }\n}\n","/**\n * Context size tracking plugin (context tokens in/out per phase).\n *\n * Context tokens out = sum of input + cache_read + cache_creation from the\n * last assistant message's usage (per-turn, NOT aggregate).\n * Context tokens in = previous phase's context tokens out.\n */\n\nimport type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\nimport type { TokenData } from './token-tracker';\n\nexport interface ContextSizeData {\n /** Per-phase context size snapshots */\n phaseSnapshots: Array<{\n phase: string;\n contextTokensIn?: number;\n contextTokensOut?: number;\n freshContext: boolean;\n }>;\n}\n\nexport class ContextSizeTrackerPlugin implements Middleware {\n readonly name = 'contextSize';\n\n private phaseSnapshots: Array<{\n phase: string;\n contextTokensIn?: number;\n contextTokensOut?: number;\n freshContext: boolean;\n }> = [];\n private lastContextTokensOut?: number;\n\n onPhaseTransition(\n fromPhase: string,\n _toPhase: string,\n ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n const tokens = ctx.get<TokenData>('tokens');\n const contextTokensOut = this.computeContextTokensOut(tokens?.lastUsage);\n\n this.phaseSnapshots.push({\n phase: fromPhase,\n contextTokensIn: ctx.currentPhaseFreshContext\n ? undefined\n : this.lastContextTokensOut,\n contextTokensOut,\n freshContext: ctx.currentPhaseFreshContext,\n });\n\n this.lastContextTokensOut = contextTokensOut;\n store.set('contextSize', this.getData());\n }\n\n onFinalize(\n _resultMessage: any,\n _totalDurationMs: number,\n ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n const tokens = ctx.get<TokenData>('tokens');\n const contextTokensOut = this.computeContextTokensOut(tokens?.lastUsage);\n\n this.phaseSnapshots.push({\n phase: ctx.currentPhase,\n contextTokensIn: ctx.currentPhaseFreshContext\n ? undefined\n : this.lastContextTokensOut,\n contextTokensOut,\n freshContext: ctx.currentPhaseFreshContext,\n });\n\n store.set('contextSize', this.getData());\n }\n\n private computeContextTokensOut(usage: any): number | undefined {\n if (!usage) return undefined;\n return (\n Number(usage.input_tokens ?? 0) +\n Number(usage.cache_read_input_tokens ?? 0) +\n Number(usage.cache_creation_input_tokens ?? 0)\n );\n }\n\n private getData(): ContextSizeData {\n return {\n phaseSnapshots: [...this.phaseSnapshots],\n };\n }\n}\n","import type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\nimport type { TokenData } from './token-tracker';\nimport type { CacheData } from './cache-tracker';\n\nexport interface CostData {\n totalCost: number;\n phaseCosts: Array<{ phase: string; cost: number }>;\n}\n\n/** Claude Sonnet 4.6 pricing (USD per 1M tokens) */\nconst PRICE_PER_MTOK = {\n input: 3,\n output: 15,\n cacheRead: 0.3,\n cacheCreation5m: 3.75,\n cacheCreation1h: 6,\n} as const;\n\nfunction computeCost(\n inputTokens: number,\n outputTokens: number,\n cacheReadTokens: number,\n cacheCreation5m: number,\n cacheCreation1h: number,\n cacheCreationFallback: number,\n): number {\n const hasBreakdown = cacheCreation5m > 0 || cacheCreation1h > 0;\n return (\n inputTokens * (PRICE_PER_MTOK.input / 1e6) +\n outputTokens * (PRICE_PER_MTOK.output / 1e6) +\n cacheReadTokens * (PRICE_PER_MTOK.cacheRead / 1e6) +\n (hasBreakdown\n ? cacheCreation5m * (PRICE_PER_MTOK.cacheCreation5m / 1e6) +\n cacheCreation1h * (PRICE_PER_MTOK.cacheCreation1h / 1e6)\n : cacheCreationFallback * (PRICE_PER_MTOK.cacheCreation5m / 1e6))\n );\n}\n\nexport class CostTrackerPlugin implements Middleware {\n readonly name = 'cost';\n\n private phaseCosts: Array<{ phase: string; cost: number }> = [];\n private totalCost = 0;\n\n onPhaseTransition(\n fromPhase: string,\n _toPhase: string,\n ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n const tokens = ctx.get<TokenData>('tokens');\n const cache = ctx.get<CacheData>('cache');\n const tokenSnap = tokens?.phaseSnapshots.at(-1);\n const cacheSnap = cache?.phaseSnapshots.at(-1);\n\n const totalIn = tokenSnap?.inputTokens ?? 0;\n const read = cacheSnap?.cacheReadTokens ?? 0;\n const creation = cacheSnap?.cacheCreationTokens ?? 0;\n const c5m = cacheSnap?.cacheCreation5m ?? 0;\n const c1h = cacheSnap?.cacheCreation1h ?? 0;\n const baseIn = Math.max(0, totalIn - read - creation);\n\n const phaseCost = computeCost(\n baseIn,\n tokenSnap?.outputTokens ?? 0,\n read,\n c5m,\n c1h,\n creation,\n );\n\n this.phaseCosts.push({ phase: fromPhase, cost: phaseCost });\n this.totalCost += phaseCost;\n store.set('cost', this.getData());\n }\n\n onFinalize(\n resultMessage: any,\n _totalDurationMs: number,\n ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n const tokens = ctx.get<TokenData>('tokens');\n const cache = ctx.get<CacheData>('cache');\n const tokenSnap = tokens?.phaseSnapshots.at(-1);\n const cacheSnap = cache?.phaseSnapshots.at(-1);\n\n const totalIn = tokenSnap?.inputTokens ?? 0;\n const read = cacheSnap?.cacheReadTokens ?? 0;\n const creation = cacheSnap?.cacheCreationTokens ?? 0;\n const c5m = cacheSnap?.cacheCreation5m ?? 0;\n const c1h = cacheSnap?.cacheCreation1h ?? 0;\n const baseIn = Math.max(0, totalIn - read - creation);\n\n const lastPhaseCost = computeCost(\n baseIn,\n tokenSnap?.outputTokens ?? 0,\n read,\n c5m,\n c1h,\n creation,\n );\n\n this.phaseCosts.push({ phase: ctx.currentPhase, cost: lastPhaseCost });\n this.totalCost += lastPhaseCost;\n\n const sdkTotal =\n Number(resultMessage?.usage?.total_cost_usd ?? 0) ||\n Number(resultMessage?.total_cost_usd ?? 0);\n\n if (sdkTotal > 0 && this.totalCost > 0) {\n const scale = sdkTotal / this.totalCost;\n this.phaseCosts = this.phaseCosts.map((p) => ({\n phase: p.phase,\n cost: p.cost * scale,\n }));\n this.totalCost = sdkTotal;\n }\n\n store.set('cost', this.getData());\n }\n\n private getData(): CostData {\n return {\n totalCost: this.totalCost,\n phaseCosts: [...this.phaseCosts],\n };\n }\n}\n","/**\n * Duration tracking plugin (per-phase and total).\n */\n\nimport type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\n\nexport interface DurationData {\n phaseSnapshots: Array<{\n phase: string;\n startTime: number;\n endTime: number;\n durationMs: number;\n }>;\n totalDurationMs: number;\n}\n\nexport class DurationTrackerPlugin implements Middleware {\n readonly name = 'duration';\n\n private phaseStartTime = Date.now();\n private phaseSnapshots: Array<{\n phase: string;\n startTime: number;\n endTime: number;\n durationMs: number;\n }> = [];\n\n onPhaseTransition(\n fromPhase: string,\n _toPhase: string,\n _ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n const now = Date.now();\n this.phaseSnapshots.push({\n phase: fromPhase,\n startTime: this.phaseStartTime,\n endTime: now,\n durationMs: now - this.phaseStartTime,\n });\n this.phaseStartTime = now;\n store.set('duration', {\n phaseSnapshots: [...this.phaseSnapshots],\n totalDurationMs: 0,\n } satisfies DurationData);\n }\n\n onFinalize(\n _resultMessage: any,\n totalDurationMs: number,\n ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n const now = Date.now();\n this.phaseSnapshots.push({\n phase: ctx.currentPhase,\n startTime: this.phaseStartTime,\n endTime: now,\n durationMs: now - this.phaseStartTime,\n });\n\n store.set('duration', {\n phaseSnapshots: [...this.phaseSnapshots],\n totalDurationMs,\n } satisfies DurationData);\n }\n}\n","import { getUI, type SpinnerHandle } from '../../../ui';\nimport { AgentSignals } from '../../agent/agent-interface';\nimport type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\nimport type { TokenData } from './token-tracker';\nimport type { TurnData } from './turn-counter';\nimport type { CostData } from './cost-tracker';\nimport type { DurationData } from './duration-tracker';\nimport type { CompactionData } from './compaction-tracker';\nimport type { ContextSizeData } from './context-size-tracker';\nimport type { CacheData } from './cache-tracker';\n\nfunction fmtDuration(ms: number): string {\n const s = Math.round(ms / 1000);\n const m = Math.floor(s / 60);\n return m > 0 ? `${m}m ${s % 60}s` : `${s}s`;\n}\n\nfunction fmtTok(n: number): string {\n if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`;\n if (n >= 1_000) return `${(n / 1000).toFixed(1)}K`;\n return n.toLocaleString();\n}\n\nfunction fmtCost(usd: number): string {\n if (usd > 0 && usd < 0.01) return `$${usd.toFixed(4)}`;\n return `$${usd.toFixed(2)}`;\n}\n\ninterface PhaseStats {\n phase: string;\n durationMs: number;\n turns: number;\n inputTokens: number;\n outputTokens: number;\n cacheRead: number;\n cacheCreation5m: number;\n cacheCreation1h: number;\n cost: number;\n compactions: number;\n contextOut: number | undefined;\n}\n\nfunction printPhase(s: PhaseStats): string {\n const baseIn = Math.max(\n 0,\n s.inputTokens - s.cacheRead - s.cacheCreation5m - s.cacheCreation1h,\n );\n return [\n `${s.phase}: ${fmtDuration(s.durationMs)}, ${\n s.turns\n } turns, cost: ${fmtCost(s.cost)}`,\n ` in: ${fmtTok(baseIn)}, out: ${fmtTok(\n s.outputTokens,\n )}, cache_read: ${fmtTok(s.cacheRead)}, cache_5m: ${fmtTok(\n s.cacheCreation5m,\n )}, cache_1h: ${fmtTok(s.cacheCreation1h)}`,\n s.compactions > 0 ? ` ${s.compactions} compaction(s)` : null,\n s.contextOut !== undefined ? ` ctx_out: ${fmtTok(s.contextOut)}` : null,\n ]\n .filter(Boolean)\n .join('\\n');\n}\n\nfunction getPhaseStats(i: number, ctx: MiddlewareContext): PhaseStats | null {\n const duration = ctx.get<DurationData>('duration');\n const dur = duration?.phaseSnapshots[i];\n if (!dur) return null;\n\n const tokens = ctx.get<TokenData>('tokens');\n const turns = ctx.get<TurnData>('turns');\n const cost = ctx.get<CostData>('cost');\n const compactions = ctx.get<CompactionData>('compactions');\n const contextSize = ctx.get<ContextSizeData>('contextSize');\n const cache = ctx.get<CacheData>('cache');\n\n return {\n phase: dur.phase,\n durationMs: dur.durationMs,\n turns: turns?.phaseSnapshots[i]?.turns ?? 0,\n inputTokens: tokens?.phaseSnapshots[i]?.inputTokens ?? 0,\n outputTokens: tokens?.phaseSnapshots[i]?.outputTokens ?? 0,\n cacheRead: cache?.phaseSnapshots[i]?.cacheReadTokens ?? 0,\n cacheCreation5m: cache?.phaseSnapshots[i]?.cacheCreation5m ?? 0,\n cacheCreation1h: cache?.phaseSnapshots[i]?.cacheCreation1h ?? 0,\n cost: cost?.phaseCosts[i]?.cost ?? 0,\n compactions: compactions?.phaseSnapshots[i]?.compactions ?? 0,\n contextOut: contextSize?.phaseSnapshots[i]?.contextTokensOut,\n };\n}\n\nexport class SummaryPlugin implements Middleware {\n readonly name = 'summary';\n\n private spinner: SpinnerHandle;\n\n constructor(spinner: SpinnerHandle) {\n this.spinner = spinner;\n }\n\n onPhaseTransition(\n fromPhase: string,\n toPhase: string,\n ctx: MiddlewareContext,\n _store: MiddlewareStore,\n ): void {\n const duration = ctx.get<DurationData>('duration');\n const idx = (duration?.phaseSnapshots.length ?? 1) - 1;\n const stats = getPhaseStats(idx, ctx);\n\n if (stats) {\n this.spinner.stop(`${AgentSignals.BENCHMARK} ${printPhase(stats)}`);\n } else {\n this.spinner.stop(`${AgentSignals.BENCHMARK} ${fromPhase}`);\n }\n\n getUI().log.info(`${AgentSignals.BENCHMARK} Starting phase: ${toPhase}`);\n this.spinner.start(`Integrating PostHog (${toPhase})...`);\n }\n\n onFinalize(\n _resultMessage: any,\n totalDurationMs: number,\n ctx: MiddlewareContext,\n _store: MiddlewareStore,\n ): void {\n const duration = ctx.get<DurationData>('duration');\n const cost = ctx.get<CostData>('cost');\n const tokens = ctx.get<TokenData>('tokens');\n const cache = ctx.get<CacheData>('cache');\n\n const phaseCount = duration?.phaseSnapshots.length ?? 0;\n const totalCost = cost?.totalCost ?? 0;\n\n getUI().log.info('');\n getUI().log.info(\n `◇ ${AgentSignals.BENCHMARK} ${phaseCount} phases in ${fmtDuration(\n totalDurationMs,\n )}, cost: ${fmtCost(totalCost)}`,\n );\n getUI().log.info(\n ` total in: ${fmtTok(tokens?.totalInput ?? 0)}, out: ${fmtTok(\n tokens?.totalOutput ?? 0,\n )}, cache_read: ${fmtTok(cache?.totalRead ?? 0)}, cache_5m: ${fmtTok(\n cache?.totalCreation5m ?? 0,\n )}, cache_1h: ${fmtTok(cache?.totalCreation1h ?? 0)}`,\n );\n getUI().log.info('');\n getUI().log.info(`● ${AgentSignals.BENCHMARK} Summary by phase:`);\n\n if (duration?.phaseSnapshots) {\n for (let i = 0; i < duration.phaseSnapshots.length; i++) {\n const stats = getPhaseStats(i, ctx);\n if (stats) {\n getUI().log.info(printPhase(stats));\n }\n }\n }\n\n getUI().log.info('');\n }\n}\n","/**\n * JSON file output plugin.\n *\n * Assembles the BenchmarkData structure from all upstream plugin data\n * and writes it to a JSON file. Returns the BenchmarkData for backward compat.\n */\n\nimport fs from 'fs';\nimport { getUI } from '../../../ui';\nimport { logToFile } from '../../../utils/debug';\nimport { AgentSignals } from '../../agent/agent-interface';\nimport type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\nimport type { TokenData } from './token-tracker';\nimport type { CacheData } from './cache-tracker';\nimport type { TurnData } from './turn-counter';\nimport type { CostData } from './cost-tracker';\nimport type { DurationData } from './duration-tracker';\nimport type { CompactionData } from './compaction-tracker';\nimport type { ContextSizeData } from './context-size-tracker';\nimport type { BenchmarkData, StepUsage } from '../benchmark';\n\n/**\n * Sum token usage across all models from the SDK's modelUsage field.\n */\nfunction sumModelUsage(modelUsage: Record<string, any>): {\n input_tokens: number;\n output_tokens: number;\n cache_creation_input_tokens: number;\n cache_read_input_tokens: number;\n} {\n let input_tokens = 0;\n let output_tokens = 0;\n let cache_creation_input_tokens = 0;\n let cache_read_input_tokens = 0;\n\n for (const model of Object.values(modelUsage)) {\n input_tokens += model.inputTokens ?? 0;\n output_tokens += model.outputTokens ?? 0;\n cache_creation_input_tokens += model.cacheCreationInputTokens ?? 0;\n cache_read_input_tokens += model.cacheReadInputTokens ?? 0;\n }\n\n return {\n input_tokens,\n output_tokens,\n cache_creation_input_tokens,\n cache_read_input_tokens,\n };\n}\n\nexport class JsonWriterPlugin implements Middleware {\n readonly name = 'jsonWriter';\n\n private outputPath: string;\n\n constructor(outputPath: string) {\n this.outputPath = outputPath;\n }\n\n onFinalize(\n resultMessage: any,\n totalDurationMs: number,\n ctx: MiddlewareContext,\n _store: MiddlewareStore,\n ): BenchmarkData {\n const tokens = ctx.get<TokenData>('tokens');\n const cache = ctx.get<CacheData>('cache');\n const turns = ctx.get<TurnData>('turns');\n const cost = ctx.get<CostData>('cost');\n const duration = ctx.get<DurationData>('duration');\n const compactions = ctx.get<CompactionData>('compactions');\n const contextSize = ctx.get<ContextSizeData>('contextSize');\n\n const modelUsage = resultMessage?.modelUsage ?? {};\n const aggregateUsage = sumModelUsage(modelUsage);\n\n const phaseCount = duration?.phaseSnapshots.length ?? 0;\n const steps: StepUsage[] = [];\n\n for (let i = 0; i < phaseCount; i++) {\n const dur = duration!.phaseSnapshots[i];\n const tokenSnap = tokens?.phaseSnapshots[i];\n const cacheSnap = cache?.phaseSnapshots[i];\n const turnSnap = turns?.phaseSnapshots[i];\n const costSnap = cost?.phaseCosts[i];\n const compSnap = compactions?.phaseSnapshots[i];\n const ctxSnap = contextSize?.phaseSnapshots[i];\n\n const step: StepUsage = {\n name: dur.phase,\n usage: {\n input_tokens: tokenSnap?.inputTokens ?? 0,\n output_tokens: tokenSnap?.outputTokens ?? 0,\n cache_creation_input_tokens: cacheSnap?.cacheCreationTokens ?? 0,\n cache_read_input_tokens: cacheSnap?.cacheReadTokens ?? 0,\n ...((cacheSnap?.cacheCreation5m ?? 0) +\n (cacheSnap?.cacheCreation1h ?? 0) >\n 0 && {\n cache_creation: {\n ephemeral_5m_input_tokens: cacheSnap?.cacheCreation5m ?? 0,\n ephemeral_1h_input_tokens: cacheSnap?.cacheCreation1h ?? 0,\n },\n }),\n },\n modelUsage: {},\n totalCostUsd: costSnap?.cost ?? 0,\n durationMs: dur.durationMs,\n durationApiMs: 0,\n numTurns: turnSnap?.turns ?? 0,\n ...(ctxSnap?.contextTokensIn !== undefined && {\n contextTokensIn: ctxSnap.contextTokensIn,\n }),\n ...(ctxSnap?.contextTokensOut !== undefined && {\n contextTokensOut: ctxSnap.contextTokensOut,\n }),\n ...(compSnap && compSnap.compactions > 0\n ? {\n compactions: compSnap.compactions,\n compactionPreTokens: compSnap.preTokens,\n }\n : {}),\n };\n\n steps.push(step);\n }\n\n const totalTurns = turns?.totalTurns ?? 0;\n const totalCost = cost?.totalCost ?? 0;\n const totalCompactions = compactions?.totalCompactions ?? 0;\n const fromModelUsage =\n aggregateUsage.input_tokens +\n aggregateUsage.cache_read_input_tokens +\n aggregateUsage.cache_creation_input_tokens;\n const inputTokens =\n fromModelUsage > 0\n ? fromModelUsage\n : (tokens?.totalInput ?? 0) +\n (cache?.totalRead ?? 0) +\n (cache?.totalCreation ?? 0);\n const outputTokens =\n aggregateUsage.output_tokens > 0\n ? aggregateUsage.output_tokens\n : tokens?.totalOutput ?? 0;\n\n const benchmark: BenchmarkData = {\n timestamp: new Date().toISOString(),\n steps,\n totals: {\n totalCostUsd: totalCost,\n durationMs: totalDurationMs,\n inputTokens,\n outputTokens,\n numTurns: resultMessage?.num_turns ?? totalTurns,\n totalCompactions,\n totalCacheReadTokens: cache?.totalRead ?? 0,\n totalCacheCreation5mTokens: cache?.totalCreation5m ?? 0,\n totalCacheCreation1hTokens: cache?.totalCreation1h ?? 0,\n },\n };\n\n this.writeBenchmarkData(benchmark);\n return benchmark;\n }\n\n private writeBenchmarkData(data: BenchmarkData): void {\n try {\n fs.writeFileSync(this.outputPath, JSON.stringify(data, null, 2));\n logToFile(`Benchmark data written to ${this.outputPath}`);\n getUI().log.info(\n `● ${AgentSignals.BENCHMARK} Results written to ${this.outputPath}`,\n );\n } catch (error) {\n logToFile('Failed to write benchmark data:', error);\n }\n }\n}\n","/**\n * Plugin registry and factory.\n *\n * Maps plugin names to constructors and creates the ordered plugin list\n * from a BenchmarkConfig.\n */\n\nimport type { Middleware, MiddlewareFactoryOptions } from '../types';\nimport type { BenchmarkConfig } from '../config';\nimport { TurnCounterPlugin } from './turn-counter';\nimport { TokenTrackerPlugin } from './token-tracker';\nimport { CacheTrackerPlugin } from './cache-tracker';\nimport { CompactionTrackerPlugin } from './compaction-tracker';\nimport { ContextSizeTrackerPlugin } from './context-size-tracker';\nimport { CostTrackerPlugin } from './cost-tracker';\nimport { DurationTrackerPlugin } from './duration-tracker';\nimport { SummaryPlugin } from './summary';\nimport { JsonWriterPlugin } from './json-writer';\n\ntype PluginFactory = (opts: MiddlewareFactoryOptions) => Middleware;\n\nconst PLUGIN_REGISTRY: Record<string, PluginFactory> = {\n turns: () => new TurnCounterPlugin(),\n tokens: () => new TokenTrackerPlugin(),\n cache: () => new CacheTrackerPlugin(),\n compactions: () => new CompactionTrackerPlugin(),\n contextSize: () => new ContextSizeTrackerPlugin(),\n cost: () => new CostTrackerPlugin(),\n duration: () => new DurationTrackerPlugin(),\n summary: (opts) => new SummaryPlugin(opts.spinner!),\n jsonWriter: (opts) => new JsonWriterPlugin(opts.outputPath!),\n};\n\n/**\n * Execution order — data producers before consumers:\n * turns (dedup) -> tokens -> cache -> compactions -> contextSize -> cost -> duration -> summary -> jsonWriter\n */\nconst PLUGIN_ORDER = [\n 'turns',\n 'tokens',\n 'cache',\n 'compactions',\n 'contextSize',\n 'cost',\n 'duration',\n 'summary',\n 'jsonWriter',\n];\n\nexport function createPluginsFromConfig(\n config: BenchmarkConfig,\n opts: MiddlewareFactoryOptions,\n): Middleware[] {\n const resolvedOpts: MiddlewareFactoryOptions = {\n ...opts,\n outputPath: opts.outputPath ?? config.output.benchmarkPath,\n };\n\n // If suppressWizardLogs is set, disable the summary plugin\n const effectivePlugins = { ...config.plugins };\n if (config.output.suppressWizardLogs) {\n effectivePlugins.summary = false;\n }\n\n return PLUGIN_ORDER.filter((name) => effectivePlugins[name] !== false)\n .map((name) => PLUGIN_REGISTRY[name])\n .filter(Boolean)\n .map((factory) => factory(resolvedOpts));\n}\n","/**\n * Benchmark tracking for wizard runs.\n *\n * Usage:\n * const pipeline = createBenchmarkPipeline(spinner, options);\n * pipeline.onMessage(message);\n * pipeline.finalize(resultMessage, durationMs);\n */\n\nimport { getUI, type SpinnerHandle } from '../../ui';\nimport { logToFile, getLogFilePath, configureLogFile } from '../../utils/debug';\nimport { MiddlewarePipeline } from './pipeline';\nimport { PhaseDetector } from './phase-detector';\nimport { loadBenchmarkConfig } from './config';\nimport { createPluginsFromConfig } from './benchmarks';\nimport type { BenchmarkConfig } from './config';\nimport type { WizardOptions } from '../../utils/types';\nimport { AgentSignals } from '../agent/agent-interface';\n\n// ── Types ──────────────────────────────────────────────────────────────\n\nexport interface StepUsage {\n name: string;\n usage: {\n input_tokens: number;\n output_tokens: number;\n cache_creation_input_tokens: number;\n cache_read_input_tokens: number;\n cache_creation?: {\n ephemeral_5m_input_tokens: number;\n ephemeral_1h_input_tokens: number;\n };\n };\n modelUsage: Record<string, unknown>;\n totalCostUsd: number;\n durationMs: number;\n durationApiMs: number;\n numTurns: number;\n contextTokensIn?: number;\n contextTokensOut?: number;\n compactions?: number;\n compactionPreTokens?: number[];\n}\n\nexport interface BenchmarkData {\n timestamp: string;\n steps: StepUsage[];\n totals: {\n totalCostUsd: number;\n durationMs: number;\n inputTokens: number;\n outputTokens: number;\n numTurns: number;\n totalCompactions: number;\n totalCacheReadTokens: number;\n totalCacheCreation5mTokens: number;\n totalCacheCreation1hTokens: number;\n };\n}\n\n// ── Factory ────────────────────────────────────────────────────────────\n\n/**\n * Create a middleware pipeline configured for benchmarking.\n * Loads .benchmark-config.json from the install dir, falls back to defaults.\n */\nexport function createBenchmarkPipeline(\n spinner: SpinnerHandle,\n options: WizardOptions,\n configOverride?: BenchmarkConfig,\n): MiddlewarePipeline {\n const config = configOverride ?? loadBenchmarkConfig(options.installDir);\n\n configureLogFile({\n path: config.output.logPath,\n enabled: config.output.logEnabled,\n });\n\n const plugins = createPluginsFromConfig(config, {\n spinner,\n phased: false,\n outputPath: config.output.benchmarkPath,\n });\n\n if (!config.output.suppressWizardLogs) {\n getUI().log.info(\n `${AgentSignals.BENCHMARK} Verbose logs: ${getLogFilePath()}`,\n );\n getUI().log.info(\n `${AgentSignals.BENCHMARK} Benchmark data will be written to: ${config.output.benchmarkPath}`,\n );\n }\n\n logToFile(\n `${AgentSignals.BENCHMARK} Tracking enabled, starting with setup phase`,\n );\n\n return new MiddlewarePipeline(plugins, {\n phaseDetector: new PhaseDetector(),\n autoDetectPhases: true,\n });\n}\n","/**\n * Agent prompt assembly.\n *\n * Three sections, always in this order:\n * 1. Default project prompt — credentials and base context (always included)\n * 2. Custom prompt — additional workflow-specific instructions (if set)\n * 3. Skill prompt — \"follow SKILL.md\" instructions (if a skill was installed)\n */\n\nimport type { WorkflowRun } from './agent-runner.js';\n\n/**\n * Values available to prompt builders after OAuth completes.\n */\nexport interface PromptContext {\n projectId: number;\n projectApiKey: string;\n host: string;\n /** Set when skillId was provided and the skill was installed successfully. */\n skillPath?: string;\n}\n\nfunction defaultProjectPrompt(ctx: PromptContext): string {\n return `You have access to the PostHog MCP server.\n\nProject context:\n- PostHog Project ID: ${ctx.projectId}\n- PostHog public token: ${ctx.projectApiKey}\n- PostHog Host: ${ctx.host}`;\n}\n\nfunction skillPrompt(skillPath: string, reportFile: string): string {\n return `A PostHog skill has been installed at ${skillPath}/. Read ${skillPath}/SKILL.md and follow its instructions completely.\n\nAfter completing the skill workflow, write a brief markdown report to ./${reportFile} summarizing:\n- What changes were made to the project\n- Which files were modified or created\n- Any manual steps the user should take next\n\nImportant: You must read a file immediately before attempting to write it, even if you have previously read it; failure to do so will cause a tool failure.`;\n}\n\n/**\n * Assemble the final agent prompt from the workflow's run config.\n */\nexport function assemblePrompt(\n runDef: WorkflowRun,\n ctx: PromptContext,\n): string {\n const parts: string[] = [];\n\n // Always include the default project prompt\n parts.push(defaultProjectPrompt(ctx));\n\n // Additional workflow-specific instructions\n if (runDef.customPrompt) {\n parts.push(runDef.customPrompt(ctx));\n }\n\n // Skill prompt (appended when a skill was pre-installed)\n if (ctx.skillPath) {\n parts.push(skillPrompt(ctx.skillPath, runDef.reportFile));\n }\n\n return parts.join('\\n\\n');\n}\n","/**\n * Unified workflow runner.\n *\n * Single configurable pipeline for all workflows. Each workflow\n * provides a WorkflowRun (via the `run` field on WorkflowConfig)\n * that controls:\n * - Whether a skill is pre-installed or discovered at runtime\n * - How the agent prompt is built\n * - What MCP servers and package manager detector to use\n * - What happens after the agent completes\n *\n * The pipeline itself is fixed:\n * init → health check → settings → OAuth → [skill install] →\n * agent init → prompt → run → errors → [postRun] → outro\n */\n\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport {\n type WizardSession,\n type AdditionalFeature,\n type Credentials,\n OutroKind,\n} from '../wizard-session';\nimport { getOrAskForProjectData } from '../../utils/setup-utils';\nimport { analytics } from '../../utils/analytics';\nimport { getUI } from '../../ui';\nimport {\n initializeAgent,\n runAgent as executeAgent,\n AgentErrorType,\n AgentSignals,\n buildWizardMetadata,\n checkAllSettingsConflicts,\n backupAndFixClaudeSettings,\n restoreClaudeSettings,\n} from './agent-interface';\nimport { getCloudUrlFromRegion } from '../../utils/urls';\nimport {\n evaluateWizardReadiness,\n WizardReadiness,\n} from '../health-checks/readiness';\nimport { enableDebugLogs, initLogFile, logToFile } from '../../utils/debug';\nimport { createBenchmarkPipeline } from '../middleware/benchmark';\nimport {\n wizardAbort,\n WizardError,\n registerCleanup,\n} from '../../utils/wizard-abort';\nimport { formatScanReport, writeScanReport } from '../yara-hooks';\nimport { detectNodePackageManagers } from '../detection/package-manager';\nimport type { PackageManagerDetector } from '../detection/package-manager';\nimport { getSkillsBaseUrl } from '../constants';\nimport { runtimeEnv } from '@env';\nimport { installSkillById, type InstallSkillResult } from '../wizard-tools';\nimport type { WizardOptions } from '../../utils/types';\n\nimport type { WorkflowConfig } from '../workflows/workflow-step';\nimport { assemblePrompt, type PromptContext } from './agent-prompt';\n\nexport type { PromptContext };\n\n// ── Types ────────────────────────────────────────────────────────────\n\nexport type { Credentials };\n\n/**\n * A known `[ABORT] <reason>` case. First matching entry is rendered on\n * the error outro; unmatched aborts use a generic fallback.\n */\nexport interface AbortCase {\n match: RegExp;\n message: string;\n body: string;\n docsUrl?: string;\n}\n\n/**\n * Unified agent run configuration.\n *\n * Every workflow provides one of these — either as a static object\n * or via a function that builds one from the session. The runner\n * assembles the final prompt from `prompt` + `skillId`.\n */\nexport interface WorkflowRun {\n /** Analytics label (e.g. 'revenue-analytics-setup', 'nextjs') */\n integrationLabel: string;\n /** Skill ID to pre-install. Omit for agent-driven skill discovery. */\n skillId?: string;\n /** Additional workflow-specific prompt instructions. Appended after the default project prompt. */\n customPrompt?: (ctx: PromptContext) => string;\n /** Additional MCP servers (e.g. Svelte MCP) */\n additionalMcpServers?: Record<string, { url: string }>;\n /** Package manager detector. Defaults to detectNodePackageManagers. */\n detectPackageManager?: PackageManagerDetector;\n spinnerMessage: string;\n successMessage: string;\n estimatedDurationMinutes: number;\n reportFile: string;\n docsUrl: string;\n errorMessage?: string;\n additionalFeatureQueue?: readonly AdditionalFeature[];\n /** Known `[ABORT] <reason>` cases this workflow can render. */\n abortCases?: AbortCase[];\n /** Runs after agent completes, before outro (e.g. env var upload). */\n postRun?: (session: WizardSession, credentials: Credentials) => Promise<void>;\n /** Custom outro data. Omit for default built from successMessage/reportFile/docsUrl. */\n buildOutroData?: (\n session: WizardSession,\n credentials: Credentials,\n cloudRegion: import('../../utils/types').CloudRegion | undefined,\n ) => WizardSession['outroData'];\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────\n\nfunction sessionToOptions(session: WizardSession): WizardOptions {\n return {\n installDir: session.installDir,\n debug: session.debug,\n forceInstall: session.forceInstall,\n default: false,\n signup: session.signup,\n localMcp: session.localMcp,\n ci: session.ci,\n menu: session.menu,\n benchmark: session.benchmark,\n projectId: session.projectId,\n apiKey: session.apiKey,\n yaraReport: session.yaraReport,\n };\n}\n\n// ── Runner ───────────────────────────────────────────────────────────\n\n/**\n * Resolve a WorkflowConfig's agent run definition and execute the pipeline.\n * Entry point for bin.ts — handles buildRunConfig, bootstrap, and (future) run field.\n */\nexport async function runAgent(\n workflowConfig: WorkflowConfig,\n session: WizardSession,\n): Promise<void> {\n if (!workflowConfig.run) {\n throw new Error(\n `Workflow \"${workflowConfig.flowKey}\" has no run configuration.`,\n );\n }\n\n const runDef =\n typeof workflowConfig.run === 'function'\n ? await workflowConfig.run(session)\n : workflowConfig.run;\n\n await runWorkflow(session, runDef);\n}\n\n/**\n * Run a workflow's agent pipeline.\n *\n * This is the single execution path for all workflows — both skill-based\n * (revenue analytics) and framework-based (core integration). The\n * `WorkflowRun` controls what varies between them.\n */\nexport async function runWorkflow(\n session: WizardSession,\n config: WorkflowRun,\n): Promise<void> {\n // 1. Init logging + debug\n initLogFile();\n logToFile(`[agent-runner] START ${config.integrationLabel}`);\n\n if (session.debug) {\n enableDebugLogs();\n }\n\n const skillsBaseUrl = getSkillsBaseUrl(session.localMcp);\n\n // 2. Health check (guarded — skip if TUI already ran it)\n if (!session.readinessResult) {\n logToFile('[agent-runner] evaluating wizard readiness');\n const readiness = await evaluateWizardReadiness();\n logToFile(`[agent-runner] readiness=${readiness.decision}`);\n if (readiness.decision === WizardReadiness.No) {\n await getUI().showBlockingOutage(readiness);\n } else if (readiness.decision === WizardReadiness.YesWithWarnings) {\n getUI().setReadinessWarnings(readiness);\n }\n }\n\n // 3. Settings conflicts\n const settingsConflicts = checkAllSettingsConflicts(session.installDir);\n logToFile(\n `[agent-runner] settings conflicts: ${\n settingsConflicts.length > 0\n ? settingsConflicts\n .map((c) => `${c.source}(${c.keys.join(',')})`)\n .join('; ')\n : 'none'\n }`,\n );\n\n if (settingsConflicts.length > 0) {\n for (const conflict of settingsConflicts) {\n const level = conflict.source === 'managed' ? 'org' : conflict.source;\n analytics.wizardCapture('settings conflict detected', {\n level,\n keys: conflict.keys,\n });\n }\n await getUI().showSettingsOverride(settingsConflicts, () =>\n backupAndFixClaudeSettings(session.installDir),\n );\n logToFile('[agent-runner] settings override resolved');\n }\n\n analytics.wizardCapture('agent started', {\n integration: config.integrationLabel,\n workflow: config.integrationLabel,\n skill_id: config.skillId ?? null,\n });\n\n // 4. OAuth\n logToFile('[agent-runner] starting OAuth');\n const { projectApiKey, host, accessToken, projectId, cloudRegion } =\n await getOrAskForProjectData({\n signup: session.signup,\n ci: session.ci,\n apiKey: session.apiKey,\n projectId: session.projectId,\n email: session.email,\n region: session.region,\n });\n\n session.credentials = { accessToken, projectApiKey, host, projectId };\n getUI().setCredentials(session.credentials);\n\n // 5. Skill install (if skillId provided)\n let skillPath: string | undefined;\n if (config.skillId) {\n logToFile(`[agent-runner] installing skill ${config.skillId}`);\n const installResult = await installSkillById(\n config.skillId,\n session.installDir,\n skillsBaseUrl,\n );\n if (installResult.kind !== 'ok') {\n await abortOnInstallFailure(config.integrationLabel, installResult);\n return;\n }\n skillPath = installResult.path;\n logToFile(`[agent-runner] skill installed at ${skillPath}`);\n }\n\n // 6. Initialize agent\n const spinner = getUI().spinner();\n const wizardFlags = await analytics.getAllFlagsForWizard();\n const wizardMetadata = buildWizardMetadata(wizardFlags);\n\n const mcpUrl = session.localMcp\n ? 'http://localhost:8787/mcp'\n : runtimeEnv('MCP_URL') ||\n (cloudRegion === 'eu'\n ? 'https://mcp-eu.posthog.com/mcp'\n : 'https://mcp.posthog.com/mcp');\n\n const restoreSettings = () => restoreClaudeSettings(session.installDir);\n getUI().onEnterScreen('outro', restoreSettings);\n\n if (session.yaraReport) {\n registerCleanup(() => {\n const reportPath = writeScanReport();\n if (reportPath) {\n const summary = formatScanReport();\n getUI().log.info(`YARA scan report: ${reportPath}${summary ?? ''}`);\n }\n });\n }\n\n getUI().startRun();\n\n const agent = await initializeAgent(\n {\n workingDirectory: session.installDir,\n posthogMcpUrl: mcpUrl,\n posthogApiKey: accessToken,\n posthogApiHost: host,\n additionalMcpServers: config.additionalMcpServers,\n detectPackageManager:\n config.detectPackageManager ?? detectNodePackageManagers,\n skillsBaseUrl,\n wizardFlags,\n wizardMetadata,\n },\n sessionToOptions(session),\n );\n\n const middleware = session.benchmark\n ? createBenchmarkPipeline(spinner, sessionToOptions(session))\n : undefined;\n\n // 7. Build prompt\n const prompt = assemblePrompt(config, {\n projectId,\n projectApiKey,\n host,\n skillPath,\n });\n\n // 8. Run agent\n const agentResult = await executeAgent(\n agent,\n prompt,\n sessionToOptions(session),\n spinner,\n {\n estimatedDurationMinutes: config.estimatedDurationMinutes,\n spinnerMessage: config.spinnerMessage,\n successMessage: config.successMessage,\n errorMessage: config.errorMessage ?? `${config.integrationLabel} failed`,\n additionalFeatureQueue: config.additionalFeatureQueue ?? [],\n abortCases: config.abortCases,\n },\n middleware,\n );\n\n // 9. Error handling (full set from both runners)\n if (agentResult.error === AgentErrorType.ABORT) {\n const reason = agentResult.message ?? '';\n const matched = config.abortCases?.find((c) => c.match.test(reason));\n const outroData: WizardSession['outroData'] = matched\n ? {\n kind: OutroKind.Error,\n message: matched.message,\n body: matched.body,\n docsUrl: matched.docsUrl,\n }\n : {\n kind: OutroKind.Error,\n message: `${config.integrationLabel} aborted`,\n body: reason || 'The agent aborted the workflow.',\n docsUrl: config.docsUrl,\n };\n analytics.wizardCapture('agent aborted', {\n integration: config.integrationLabel,\n reason,\n matched: matched?.message ?? null,\n });\n await wizardAbort({\n outroData,\n error: new WizardError(`Agent aborted: ${reason}`, {\n integration: config.integrationLabel,\n error_type: AgentErrorType.ABORT,\n reason,\n }),\n });\n }\n\n if (agentResult.error === AgentErrorType.MCP_MISSING) {\n await wizardAbort({\n message:\n 'Could not access the PostHog MCP server\\n\\n' +\n 'The wizard was unable to connect to the PostHog MCP server.\\n' +\n 'This could be due to a network issue or a configuration problem.\\n\\n' +\n `Please try again, or check the documentation:\\n${config.docsUrl}`,\n error: new WizardError('Agent could not access PostHog MCP server', {\n integration: config.integrationLabel,\n error_type: AgentErrorType.MCP_MISSING,\n signal: AgentSignals.ERROR_MCP_MISSING,\n }),\n });\n }\n\n if (agentResult.error === AgentErrorType.RESOURCE_MISSING) {\n await wizardAbort({\n message:\n 'Could not access the setup resource\\n\\n' +\n 'This may indicate a version mismatch or a temporary service issue.\\n\\n' +\n `Please try again, or check the documentation:\\n${config.docsUrl}`,\n error: new WizardError('Agent could not access setup resource', {\n integration: config.integrationLabel,\n error_type: AgentErrorType.RESOURCE_MISSING,\n signal: AgentSignals.ERROR_RESOURCE_MISSING,\n }),\n });\n }\n\n if (agentResult.error === AgentErrorType.YARA_VIOLATION) {\n await wizardAbort({\n message:\n 'Security violation detected.\\nPlease report this to: wizard@posthog.com',\n error: new WizardError('YARA scanner terminated session', {\n integration: config.integrationLabel,\n error_type: AgentErrorType.YARA_VIOLATION,\n }),\n });\n }\n\n if (\n agentResult.error === AgentErrorType.RATE_LIMIT ||\n agentResult.error === AgentErrorType.API_ERROR\n ) {\n analytics.wizardCapture('agent api error', {\n integration: config.integrationLabel,\n error_type: agentResult.error,\n error_message: agentResult.message,\n });\n\n await wizardAbort({\n message: `API Error\\n\\n${\n agentResult.message || 'Unknown error'\n }\\n\\nPlease report this to: wizard@posthog.com`,\n error: new WizardError(`API error: ${agentResult.message}`, {\n integration: config.integrationLabel,\n error_type: agentResult.error,\n }),\n });\n }\n\n // 10. Post-run hooks\n if (config.postRun) {\n await config.postRun(session, {\n accessToken,\n projectApiKey,\n host,\n projectId,\n });\n }\n\n // 11. Outro\n if (config.buildOutroData) {\n session.outroData = config.buildOutroData(\n session,\n { accessToken, projectApiKey, host, projectId },\n cloudRegion,\n );\n } else {\n const continueUrl = session.signup\n ? `${getCloudUrlFromRegion(cloudRegion)}/products?source=wizard`\n : undefined;\n\n const reportPath = join(session.installDir, config.reportFile);\n const reportExists = existsSync(reportPath);\n\n session.outroData = {\n kind: OutroKind.Success,\n message: config.successMessage,\n reportFile: reportExists ? config.reportFile : undefined,\n docsUrl: config.docsUrl,\n continueUrl,\n };\n }\n\n getUI().outro(config.successMessage);\n\n // 12. Analytics shutdown\n await analytics.shutdown('success');\n}\n\n// ── Shared error helpers ─────────────────────────────────────────────\n\nasync function abortOnInstallFailure(\n integrationLabel: string,\n result: InstallSkillResult,\n): Promise<void> {\n if (result.kind === 'ok') return;\n\n const message = (() => {\n switch (result.kind) {\n case 'menu-fetch-failed':\n return 'Could not fetch the skill menu from context-mill.\\nCheck your network connection and try again.';\n case 'skill-not-found':\n return `Could not find the \"${result.skillId}\" skill in the context-mill menu.\\nPlease try again later.`;\n case 'download-failed':\n return `Failed to install skill: ${result.message}\\nPlease try again.`;\n }\n })();\n\n await wizardAbort({\n message,\n error: new WizardError(`Skill install failed: ${result.kind}`, {\n integration: integrationLabel,\n error_type: result.kind,\n }),\n });\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-B_-DWIq7.js";
|
|
2
|
+
//#region src/lib/workflows/agent-skill/steps.ts
|
|
3
|
+
const AGENT_SKILL_STEPS = [
|
|
4
|
+
{
|
|
5
|
+
id: "intro",
|
|
6
|
+
label: "Welcome",
|
|
7
|
+
screen: "agent-skill-intro",
|
|
8
|
+
gate: (session) => session.setupConfirmed
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
id: "auth",
|
|
12
|
+
label: "Authentication",
|
|
13
|
+
screen: "auth",
|
|
14
|
+
isComplete: (session) => session.credentials !== null
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: "run",
|
|
18
|
+
label: "Running",
|
|
19
|
+
screen: "run",
|
|
20
|
+
isComplete: (session) => session.runPhase === "completed" || session.runPhase === "error"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: "outro",
|
|
24
|
+
label: "Done",
|
|
25
|
+
screen: "outro",
|
|
26
|
+
isComplete: (session) => session.outroDismissed
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: "skills",
|
|
30
|
+
label: "Skills",
|
|
31
|
+
screen: "keep-skills"
|
|
32
|
+
}
|
|
33
|
+
];
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region src/lib/workflows/agent-skill/index.ts
|
|
36
|
+
var agent_skill_exports = /* @__PURE__ */ __exportAll({ createSkillWorkflow: () => createSkillWorkflow });
|
|
37
|
+
function createSkillWorkflow(opts) {
|
|
38
|
+
return {
|
|
39
|
+
command: opts.command,
|
|
40
|
+
description: opts.description,
|
|
41
|
+
flowKey: opts.flowKey,
|
|
42
|
+
steps: AGENT_SKILL_STEPS,
|
|
43
|
+
run: {
|
|
44
|
+
skillId: opts.skillId,
|
|
45
|
+
integrationLabel: opts.integrationLabel,
|
|
46
|
+
customPrompt: opts.customPrompt ? () => opts.customPrompt : void 0,
|
|
47
|
+
successMessage: opts.successMessage,
|
|
48
|
+
reportFile: opts.reportFile,
|
|
49
|
+
docsUrl: opts.docsUrl,
|
|
50
|
+
spinnerMessage: opts.spinnerMessage,
|
|
51
|
+
estimatedDurationMinutes: opts.estimatedDurationMinutes
|
|
52
|
+
},
|
|
53
|
+
requires: opts.requires
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
export { AGENT_SKILL_STEPS as n, agent_skill_exports as t };
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=agent-skill-BVjJqol6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-skill-BVjJqol6.js","names":[],"sources":["../src/lib/workflows/agent-skill/steps.ts","../src/lib/workflows/agent-skill/index.ts"],"sourcesContent":["/**\n * Generic agent skill step list.\n *\n * Minimal flow: auth → run → outro → skills.\n * No detection, no setup, no MCP.\n */\n\nimport type { Workflow } from '../workflow-step.js';\nimport { RunPhase } from '../../wizard-session.js';\n\nexport const AGENT_SKILL_STEPS: Workflow = [\n {\n id: 'intro',\n label: 'Welcome',\n screen: 'agent-skill-intro',\n gate: (session) => session.setupConfirmed,\n },\n {\n id: 'auth',\n label: 'Authentication',\n screen: 'auth',\n isComplete: (session) => session.credentials !== null,\n },\n {\n id: 'run',\n label: 'Running',\n screen: 'run',\n isComplete: (session) =>\n session.runPhase === RunPhase.Completed ||\n session.runPhase === RunPhase.Error,\n },\n {\n id: 'outro',\n label: 'Done',\n screen: 'outro',\n isComplete: (session) => session.outroDismissed,\n },\n {\n id: 'skills',\n label: 'Skills',\n screen: 'keep-skills',\n },\n];\n","/**\n * Generic agent skill workflow factory.\n *\n * Creates a WorkflowConfig for any context-mill skill. Provide a\n * skill ID and basic UI config — the factory handles the rest.\n *\n * Usage:\n * createSkillWorkflow({\n * skillId: 'error-tracking-setup',\n * command: 'errors',\n * flowKey: 'error-tracking',\n * description: 'Set up PostHog error tracking',\n * integrationLabel: 'error-tracking',\n * successMessage: 'Error tracking configured!',\n * reportFile: 'posthog-error-tracking-report.md',\n * docsUrl: 'https://posthog.com/docs/error-tracking',\n * spinnerMessage: 'Setting up error tracking...',\n * estimatedDurationMinutes: 5,\n * })\n */\n\nimport type { WorkflowConfig } from '../workflow-step.js';\nimport { AGENT_SKILL_STEPS } from './steps.js';\n\nexport interface SkillWorkflowOptions {\n /** Context-mill skill ID to install */\n skillId: string;\n /** CLI subcommand name */\n command: string;\n /** Unique flow key — must match a Flow enum entry */\n flowKey: string;\n /** CLI description shown in --help */\n description: string;\n /** Analytics integration label */\n integrationLabel: string;\n /** Custom prompt instruction. Appended after default project prompt. */\n customPrompt?: string;\n successMessage: string;\n reportFile: string;\n docsUrl: string;\n spinnerMessage: string;\n estimatedDurationMinutes: number;\n /** Other workflow flowKeys that must be satisfied first */\n requires?: string[];\n}\n\nexport function createSkillWorkflow(\n opts: SkillWorkflowOptions,\n): WorkflowConfig {\n return {\n command: opts.command,\n description: opts.description,\n flowKey: opts.flowKey,\n steps: AGENT_SKILL_STEPS,\n run: {\n skillId: opts.skillId,\n integrationLabel: opts.integrationLabel,\n customPrompt: opts.customPrompt ? () => opts.customPrompt! : undefined,\n successMessage: opts.successMessage,\n reportFile: opts.reportFile,\n docsUrl: opts.docsUrl,\n spinnerMessage: opts.spinnerMessage,\n estimatedDurationMinutes: opts.estimatedDurationMinutes,\n },\n requires: opts.requires,\n };\n}\n\nexport { AGENT_SKILL_STEPS } from './steps.js';\n"],"mappings":";;AAUA,MAAa,oBAA8B;CACzC;EACE,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,OAAO,YAAY,QAAQ;EAC5B;CACD;EACE,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,aAAa,YAAY,QAAQ,gBAAgB;EAClD;CACD;EACE,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,aAAa,YACX,QAAQ,aAAA,eACR,QAAQ,aAAA;EACX;CACD;EACE,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,aAAa,YAAY,QAAQ;EAClC;CACD;EACE,IAAI;EACJ,OAAO;EACP,QAAQ;EACT;CACF;;;;ACID,SAAgB,oBACd,MACgB;AAChB,QAAO;EACL,SAAS,KAAK;EACd,aAAa,KAAK;EAClB,SAAS,KAAK;EACd,OAAO;EACP,KAAK;GACH,SAAS,KAAK;GACd,kBAAkB,KAAK;GACvB,cAAc,KAAK,qBAAqB,KAAK,eAAgB,KAAA;GAC7D,gBAAgB,KAAK;GACrB,YAAY,KAAK;GACjB,SAAS,KAAK;GACd,gBAAgB,KAAK;GACrB,0BAA0B,KAAK;GAChC;EACD,UAAU,KAAK;EAChB"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { r as debug } from "./debug-CyJ_3dTP.js";
|
|
2
|
+
import { PostHog } from "posthog-node";
|
|
3
|
+
import { v4 } from "uuid";
|
|
4
|
+
//#region src/lib/version.ts
|
|
5
|
+
const VERSION = "2.10.1";
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region src/lib/constants.ts
|
|
8
|
+
/**
|
|
9
|
+
* Shared constants for the PostHog wizard.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Detection order matters: put framework-specific integrations BEFORE basic language fallbacks.
|
|
13
|
+
*/
|
|
14
|
+
let Integration = /* @__PURE__ */ function(Integration) {
|
|
15
|
+
Integration["nextjs"] = "nextjs";
|
|
16
|
+
Integration["nuxt"] = "nuxt";
|
|
17
|
+
Integration["vue"] = "vue";
|
|
18
|
+
Integration["reactRouter"] = "react-router";
|
|
19
|
+
Integration["tanstackStart"] = "tanstack-start";
|
|
20
|
+
Integration["tanstackRouter"] = "tanstack-router";
|
|
21
|
+
Integration["reactNative"] = "react-native";
|
|
22
|
+
Integration["angular"] = "angular";
|
|
23
|
+
Integration["astro"] = "astro";
|
|
24
|
+
Integration["django"] = "django";
|
|
25
|
+
Integration["flask"] = "flask";
|
|
26
|
+
Integration["fastapi"] = "fastapi";
|
|
27
|
+
Integration["laravel"] = "laravel";
|
|
28
|
+
Integration["sveltekit"] = "sveltekit";
|
|
29
|
+
Integration["swift"] = "swift";
|
|
30
|
+
Integration["android"] = "android";
|
|
31
|
+
Integration["rails"] = "rails";
|
|
32
|
+
Integration["python"] = "python";
|
|
33
|
+
Integration["ruby"] = "ruby";
|
|
34
|
+
Integration["javascriptNode"] = "javascript_node";
|
|
35
|
+
Integration["javascript_web"] = "javascript_web";
|
|
36
|
+
return Integration;
|
|
37
|
+
}({});
|
|
38
|
+
const DEFAULT_HOST_URL = "https://us.i.posthog.com";
|
|
39
|
+
const ISSUES_URL = "https://github.com/posthog/wizard/issues";
|
|
40
|
+
const CONTEXT_MILL_URL = "https://github.com/PostHog/context-mill";
|
|
41
|
+
/** Remote base URL for fetching the skill menu + downloading skills. */
|
|
42
|
+
const REMOTE_SKILLS_BASE_URL = "https://github.com/PostHog/context-mill/releases/latest/download";
|
|
43
|
+
/** Local base URL when `--local-mcp` is set (served by context-mill dev server). */
|
|
44
|
+
const LOCAL_SKILLS_BASE_URL = "http://localhost:8765";
|
|
45
|
+
/**
|
|
46
|
+
* Pick the skills base URL based on the session's localMcp flag.
|
|
47
|
+
* Single source of truth — do not inline this ternary anywhere.
|
|
48
|
+
*/
|
|
49
|
+
function getSkillsBaseUrl(localMcp) {
|
|
50
|
+
return localMcp ? LOCAL_SKILLS_BASE_URL : REMOTE_SKILLS_BASE_URL;
|
|
51
|
+
}
|
|
52
|
+
const ANALYTICS_POSTHOG_PUBLIC_PROJECT_WRITE_KEY = "sTMFPsFhdP1Ssg";
|
|
53
|
+
const ANALYTICS_HOST_URL = "https://internal-j.posthog.com";
|
|
54
|
+
const ANALYTICS_TEAM_TAG = "docs-and-wizard";
|
|
55
|
+
const POSTHOG_OAUTH_URL = "https://oauth.posthog.com";
|
|
56
|
+
const OAUTH_PORTS = [
|
|
57
|
+
8239,
|
|
58
|
+
8238,
|
|
59
|
+
8240,
|
|
60
|
+
8237,
|
|
61
|
+
8236,
|
|
62
|
+
8235
|
|
63
|
+
];
|
|
64
|
+
const POSTHOG_US_CLIENT_ID = "c4Rdw8DIxgtQfA80IiSnGKlNX8QN00cFWF00QQhM";
|
|
65
|
+
const POSTHOG_DEV_CLIENT_ID = "DC5uRLVbGI02YQ82grxgnK6Qn12SXWpCqdPb60oZ";
|
|
66
|
+
const POSTHOG_PROXY_CLIENT_ID = POSTHOG_US_CLIENT_ID;
|
|
67
|
+
const DUMMY_PROJECT_API_KEY = "_YOUR_POSTHOG_PROJECT_TOKEN_";
|
|
68
|
+
const WIZARD_INTERACTION_EVENT_NAME = "wizard interaction";
|
|
69
|
+
const WIZARD_REMARK_EVENT_NAME = "wizard remark";
|
|
70
|
+
/** Feature flag key whose value selects a variant from WIZARD_VARIANTS. */
|
|
71
|
+
const WIZARD_VARIANT_FLAG_KEY = "wizard-variant";
|
|
72
|
+
/** Variant key -> metadata for wizard run (VARIANT flag selects which entry to use). */
|
|
73
|
+
const WIZARD_VARIANTS = {
|
|
74
|
+
base: { VARIANT: "base" },
|
|
75
|
+
subagents: { VARIANT: "subagents" }
|
|
76
|
+
};
|
|
77
|
+
/** User-Agent for wizard HTTP requests and MCP server identification. */
|
|
78
|
+
const WIZARD_USER_AGENT = `posthog/wizard; version: ${VERSION}`;
|
|
79
|
+
/** Header prefix for PostHog properties (e.g. X-POSTHOG-PROPERTY-VARIANT). */
|
|
80
|
+
const POSTHOG_PROPERTY_HEADER_PREFIX = "X-POSTHOG-PROPERTY-";
|
|
81
|
+
/** Header prefix for PostHog feature flags. */
|
|
82
|
+
const POSTHOG_FLAG_HEADER_PREFIX = "X-POSTHOG-FLAG-";
|
|
83
|
+
/** Timeout for framework / project detection probes (ms). */
|
|
84
|
+
const DETECTION_TIMEOUT_MS = 1e4;
|
|
85
|
+
/** Timeout for the OAuth authorization flow (ms). */
|
|
86
|
+
const OAUTH_TIMEOUT_MS = 36e4;
|
|
87
|
+
//#endregion
|
|
88
|
+
//#region src/utils/analytics.ts
|
|
89
|
+
/**
|
|
90
|
+
* Extract a standard property bag from the current session.
|
|
91
|
+
* Used by store-level analytics and available for ad-hoc captures.
|
|
92
|
+
*/
|
|
93
|
+
function sessionProperties(session) {
|
|
94
|
+
return {
|
|
95
|
+
integration: session.integration,
|
|
96
|
+
detected_framework: session.detectedFrameworkLabel,
|
|
97
|
+
typescript: session.typescript,
|
|
98
|
+
project_id: session.credentials?.projectId,
|
|
99
|
+
discovered_features: session.discoveredFeatures,
|
|
100
|
+
additional_features: session.additionalFeatureQueue,
|
|
101
|
+
run_phase: session.runPhase
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
var Analytics = class {
|
|
105
|
+
client;
|
|
106
|
+
tags = {};
|
|
107
|
+
distinctId;
|
|
108
|
+
anonymousId;
|
|
109
|
+
appName = "wizard";
|
|
110
|
+
activeFlags = null;
|
|
111
|
+
constructor() {
|
|
112
|
+
this.client = new PostHog(ANALYTICS_POSTHOG_PUBLIC_PROJECT_WRITE_KEY, {
|
|
113
|
+
host: ANALYTICS_HOST_URL,
|
|
114
|
+
flushAt: 1,
|
|
115
|
+
flushInterval: 0,
|
|
116
|
+
enableExceptionAutocapture: true
|
|
117
|
+
});
|
|
118
|
+
this.tags = { $app_name: this.appName };
|
|
119
|
+
this.anonymousId = v4();
|
|
120
|
+
this.distinctId = void 0;
|
|
121
|
+
}
|
|
122
|
+
setDistinctId(distinctId) {
|
|
123
|
+
this.distinctId = distinctId;
|
|
124
|
+
this.client.alias({
|
|
125
|
+
distinctId,
|
|
126
|
+
alias: this.anonymousId
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
setTag(key, value) {
|
|
130
|
+
this.tags[key] = value;
|
|
131
|
+
}
|
|
132
|
+
captureException(error, properties = {}) {
|
|
133
|
+
this.client.captureException(error, this.distinctId ?? this.anonymousId, {
|
|
134
|
+
team: ANALYTICS_TEAM_TAG,
|
|
135
|
+
...this.tags,
|
|
136
|
+
...properties
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
capture(eventName, properties) {
|
|
140
|
+
this.client.capture({
|
|
141
|
+
distinctId: this.distinctId ?? this.anonymousId,
|
|
142
|
+
event: eventName,
|
|
143
|
+
properties: {
|
|
144
|
+
...this.tags,
|
|
145
|
+
...properties
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Capture a wizard-specific event. Automatically prepends "wizard: " to the event name.
|
|
151
|
+
* All new wizard analytics should use this method instead of capture() directly.
|
|
152
|
+
*/
|
|
153
|
+
wizardCapture(eventName, properties) {
|
|
154
|
+
this.capture(`wizard: ${eventName}`, properties);
|
|
155
|
+
}
|
|
156
|
+
async getFeatureFlag(flagKey) {
|
|
157
|
+
try {
|
|
158
|
+
const distinctId = this.distinctId ?? this.anonymousId;
|
|
159
|
+
return await this.client.getFeatureFlag(flagKey, distinctId, {
|
|
160
|
+
sendFeatureFlagEvents: true,
|
|
161
|
+
personProperties: { $app_name: this.appName }
|
|
162
|
+
});
|
|
163
|
+
} catch (error) {
|
|
164
|
+
debug("Failed to get feature flag:", flagKey, error);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Evaluate all feature flags for the current user at the start of a run.
|
|
170
|
+
* Result is cached; subsequent calls in the same run return the same map.
|
|
171
|
+
* Returns flag key -> string value (booleans become 'true'/'false').
|
|
172
|
+
*/
|
|
173
|
+
async getAllFlagsForWizard() {
|
|
174
|
+
if (this.activeFlags !== null) return this.activeFlags;
|
|
175
|
+
try {
|
|
176
|
+
const distinctId = this.distinctId ?? this.anonymousId;
|
|
177
|
+
const flags = (await this.client.getAllFlagsAndPayloads(distinctId, { personProperties: { $app_name: this.appName } })).featureFlags ?? {};
|
|
178
|
+
const out = {};
|
|
179
|
+
for (const [key, value] of Object.entries(flags)) {
|
|
180
|
+
if (value === void 0) continue;
|
|
181
|
+
out[key] = typeof value === "boolean" ? String(value) : String(value);
|
|
182
|
+
}
|
|
183
|
+
this.activeFlags = out;
|
|
184
|
+
return out;
|
|
185
|
+
} catch (error) {
|
|
186
|
+
debug("Failed to get all feature flags:", error);
|
|
187
|
+
return {};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
async shutdown(status) {
|
|
191
|
+
if (Object.keys(this.tags).length === 0) return;
|
|
192
|
+
this.client.capture({
|
|
193
|
+
distinctId: this.distinctId ?? this.anonymousId,
|
|
194
|
+
event: "setup wizard finished",
|
|
195
|
+
properties: {
|
|
196
|
+
status,
|
|
197
|
+
tags: this.tags
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
await this.client.shutdown();
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
const analytics = new Analytics();
|
|
204
|
+
//#endregion
|
|
205
|
+
export { WIZARD_VARIANT_FLAG_KEY as C, WIZARD_VARIANTS as S, VERSION as T, POSTHOG_US_CLIENT_ID as _, DEFAULT_HOST_URL as a, WIZARD_REMARK_EVENT_NAME as b, ISSUES_URL as c, OAUTH_TIMEOUT_MS as d, POSTHOG_DEV_CLIENT_ID as f, POSTHOG_PROXY_CLIENT_ID as g, POSTHOG_PROPERTY_HEADER_PREFIX as h, CONTEXT_MILL_URL as i, Integration as l, POSTHOG_OAUTH_URL as m, analytics as n, DETECTION_TIMEOUT_MS as o, POSTHOG_FLAG_HEADER_PREFIX as p, sessionProperties as r, DUMMY_PROJECT_API_KEY as s, Analytics as t, OAUTH_PORTS as u, REMOTE_SKILLS_BASE_URL as v, getSkillsBaseUrl as w, WIZARD_USER_AGENT as x, WIZARD_INTERACTION_EVENT_NAME as y };
|
|
206
|
+
|
|
207
|
+
//# sourceMappingURL=analytics-Bu1XKP2S.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics-Bu1XKP2S.js","names":["uuidv4"],"sources":["../src/lib/version.ts","../src/lib/constants.ts","../src/utils/analytics.ts"],"sourcesContent":["// Auto-generated by scripts/generate-version.js — do not edit\nexport const VERSION = '2.10.1';\n","/**\n * Shared constants for the PostHog wizard.\n */\n\nimport { VERSION } from './version';\n\n// ── Integration / CLI ───────────────────────────────────────────────\n\n/**\n * Detection order matters: put framework-specific integrations BEFORE basic language fallbacks.\n */\nexport enum Integration {\n // Frameworks\n nextjs = 'nextjs',\n nuxt = 'nuxt',\n vue = 'vue',\n reactRouter = 'react-router',\n tanstackStart = 'tanstack-start',\n tanstackRouter = 'tanstack-router',\n reactNative = 'react-native',\n angular = 'angular',\n astro = 'astro',\n django = 'django',\n flask = 'flask',\n fastapi = 'fastapi',\n laravel = 'laravel',\n sveltekit = 'sveltekit',\n swift = 'swift',\n android = 'android',\n rails = 'rails',\n\n // Language fallbacks\n python = 'python',\n ruby = 'ruby',\n javascriptNode = 'javascript_node',\n javascript_web = 'javascript_web',\n}\n\nexport interface Args {\n debug: boolean;\n integration: Integration;\n}\n\n// ── Environment ──────────────────────────────────────────────────────\n\nimport { IS_DEV } from '@env';\nexport { IS_DEV };\nexport const DEBUG = false;\n\n// ── URLs ─────────────────────────────────────────────────────────────\n\nexport const DEFAULT_URL = IS_DEV\n ? 'http://localhost:8010'\n : 'https://us.posthog.com';\nexport const DEFAULT_HOST_URL = IS_DEV\n ? 'http://localhost:8010'\n : 'https://us.i.posthog.com';\nexport const ISSUES_URL = 'https://github.com/posthog/wizard/issues';\nexport const CONTEXT_MILL_URL = 'https://github.com/PostHog/context-mill';\n\n/** Remote base URL for fetching the skill menu + downloading skills. */\nexport const REMOTE_SKILLS_BASE_URL =\n 'https://github.com/PostHog/context-mill/releases/latest/download';\n/** Local base URL when `--local-mcp` is set (served by context-mill dev server). */\nexport const LOCAL_SKILLS_BASE_URL = 'http://localhost:8765';\n\n/**\n * Pick the skills base URL based on the session's localMcp flag.\n * Single source of truth — do not inline this ternary anywhere.\n */\nexport function getSkillsBaseUrl(localMcp: boolean): string {\n return localMcp ? LOCAL_SKILLS_BASE_URL : REMOTE_SKILLS_BASE_URL;\n}\n\n// ── Analytics (internal) ──────────────────────────────────────────────\n\nexport const ANALYTICS_POSTHOG_PUBLIC_PROJECT_WRITE_KEY = 'sTMFPsFhdP1Ssg';\nexport const ANALYTICS_HOST_URL = 'https://internal-j.posthog.com';\nexport const ANALYTICS_TEAM_TAG = 'docs-and-wizard';\n\n// ── OAuth / Auth ────────────────────────────────────────────────────\n\nexport const POSTHOG_OAUTH_URL = IS_DEV\n ? 'http://localhost:8010'\n : 'https://oauth.posthog.com';\nexport const OAUTH_PORTS = [8239, 8238, 8240, 8237, 8236, 8235] as const;\nexport const POSTHOG_US_CLIENT_ID = 'c4Rdw8DIxgtQfA80IiSnGKlNX8QN00cFWF00QQhM';\nexport const POSTHOG_EU_CLIENT_ID = 'bx2C5sZRN03TkdjraCcetvQFPGH6N2Y9vRLkcKEy';\nexport const POSTHOG_DEV_CLIENT_ID = 'DC5uRLVbGI02YQ82grxgnK6Qn12SXWpCqdPb60oZ';\nexport const POSTHOG_PROXY_CLIENT_ID = POSTHOG_US_CLIENT_ID;\nexport const DUMMY_PROJECT_API_KEY = '_YOUR_POSTHOG_PROJECT_TOKEN_';\n\n// ── Wizard run / variants ───────────────────────────────────────────\n\nexport const WIZARD_INTERACTION_EVENT_NAME = 'wizard interaction';\nexport const WIZARD_REMARK_EVENT_NAME = 'wizard remark';\n/** Feature flag key whose value selects a variant from WIZARD_VARIANTS. */\nexport const WIZARD_VARIANT_FLAG_KEY = 'wizard-variant';\n/** Variant key -> metadata for wizard run (VARIANT flag selects which entry to use). */\nexport const WIZARD_VARIANTS: Record<string, Record<string, string>> = {\n base: { VARIANT: 'base' },\n subagents: { VARIANT: 'subagents' },\n};\n/** User-Agent for wizard HTTP requests and MCP server identification. */\nexport const WIZARD_USER_AGENT = `posthog/wizard; version: ${VERSION}`;\n\n// ── HTTP headers ─────────────────────────────────────────────────────\n\n/** Header prefix for PostHog properties (e.g. X-POSTHOG-PROPERTY-VARIANT). */\nexport const POSTHOG_PROPERTY_HEADER_PREFIX = 'X-POSTHOG-PROPERTY-';\n/** Header prefix for PostHog feature flags. */\nexport const POSTHOG_FLAG_HEADER_PREFIX = 'X-POSTHOG-FLAG-';\n\n// ── Timeouts ─────────────────────────────────────────────────────────\n\n/** Timeout for framework / project detection probes (ms). */\nexport const DETECTION_TIMEOUT_MS = 10_000;\n\n/** Timeout for the OAuth authorization flow (ms). */\nexport const OAUTH_TIMEOUT_MS = 360_000;\n","import { PostHog } from 'posthog-node';\nimport {\n ANALYTICS_HOST_URL,\n ANALYTICS_POSTHOG_PUBLIC_PROJECT_WRITE_KEY,\n ANALYTICS_TEAM_TAG,\n} from '../lib/constants';\nimport type { WizardSession } from '../lib/wizard-session';\nimport { v4 as uuidv4 } from 'uuid';\nimport { debug } from './debug';\n\n/**\n * Extract a standard property bag from the current session.\n * Used by store-level analytics and available for ad-hoc captures.\n */\nexport function sessionProperties(\n session: WizardSession,\n): Record<string, unknown> {\n return {\n integration: session.integration,\n detected_framework: session.detectedFrameworkLabel,\n typescript: session.typescript,\n project_id: session.credentials?.projectId,\n discovered_features: session.discoveredFeatures,\n additional_features: session.additionalFeatureQueue,\n run_phase: session.runPhase,\n };\n}\nexport class Analytics {\n private client: PostHog;\n private tags: Record<string, string | boolean | number | null | undefined> =\n {};\n private distinctId?: string;\n private anonymousId: string;\n private appName = 'wizard';\n private activeFlags: Record<string, string> | null = null;\n\n constructor() {\n this.client = new PostHog(ANALYTICS_POSTHOG_PUBLIC_PROJECT_WRITE_KEY, {\n host: ANALYTICS_HOST_URL,\n flushAt: 1,\n flushInterval: 0,\n enableExceptionAutocapture: true,\n });\n\n this.tags = { $app_name: this.appName };\n\n this.anonymousId = uuidv4();\n\n this.distinctId = undefined;\n }\n\n setDistinctId(distinctId: string) {\n this.distinctId = distinctId;\n this.client.alias({\n distinctId,\n alias: this.anonymousId,\n });\n }\n\n setTag(key: string, value: string | boolean | number | null | undefined) {\n this.tags[key] = value;\n }\n\n captureException(error: Error, properties: Record<string, unknown> = {}) {\n this.client.captureException(error, this.distinctId ?? this.anonymousId, {\n team: ANALYTICS_TEAM_TAG,\n ...this.tags,\n ...properties,\n });\n }\n\n capture(eventName: string, properties?: Record<string, unknown>) {\n this.client.capture({\n distinctId: this.distinctId ?? this.anonymousId,\n event: eventName,\n properties: {\n ...this.tags,\n ...properties,\n },\n });\n }\n\n /**\n * Capture a wizard-specific event. Automatically prepends \"wizard: \" to the event name.\n * All new wizard analytics should use this method instead of capture() directly.\n */\n wizardCapture(eventName: string, properties?: Record<string, unknown>): void {\n this.capture(`wizard: ${eventName}`, properties);\n }\n\n async getFeatureFlag(flagKey: string): Promise<string | boolean | undefined> {\n try {\n const distinctId = this.distinctId ?? this.anonymousId;\n return await this.client.getFeatureFlag(flagKey, distinctId, {\n sendFeatureFlagEvents: true,\n personProperties: {\n $app_name: this.appName,\n },\n });\n } catch (error) {\n debug('Failed to get feature flag:', flagKey, error);\n return undefined;\n }\n }\n\n /**\n * Evaluate all feature flags for the current user at the start of a run.\n * Result is cached; subsequent calls in the same run return the same map.\n * Returns flag key -> string value (booleans become 'true'/'false').\n */\n async getAllFlagsForWizard(): Promise<Record<string, string>> {\n if (this.activeFlags !== null) {\n return this.activeFlags;\n }\n try {\n const distinctId = this.distinctId ?? this.anonymousId;\n const result = await this.client.getAllFlagsAndPayloads(distinctId, {\n personProperties: { $app_name: this.appName },\n });\n const flags = result.featureFlags ?? {};\n const out: Record<string, string> = {};\n for (const [key, value] of Object.entries(flags)) {\n if (value === undefined) continue;\n out[key] = typeof value === 'boolean' ? String(value) : String(value);\n }\n this.activeFlags = out;\n return out;\n } catch (error) {\n debug('Failed to get all feature flags:', error);\n return {};\n }\n }\n\n async shutdown(status: 'success' | 'error' | 'cancelled') {\n if (Object.keys(this.tags).length === 0) {\n return;\n }\n\n this.client.capture({\n distinctId: this.distinctId ?? this.anonymousId,\n event: 'setup wizard finished',\n properties: {\n status,\n tags: this.tags,\n },\n });\n\n await this.client.shutdown();\n }\n}\n\nexport const analytics = new Analytics();\n"],"mappings":"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"}
|
package/dist/bin.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export {};
|
|
1
|
+
export { };
|