@posthog/wizard 2.9.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (731) hide show
  1. package/README.md +40 -0
  2. package/dist/McpScreen-BmHapIaP.js +3357 -0
  3. package/dist/McpScreen-BmHapIaP.js.map +1 -0
  4. package/dist/add-mcp-server-to-clients-DZtISNrs.js +455 -0
  5. package/dist/add-mcp-server-to-clients-DZtISNrs.js.map +1 -0
  6. package/dist/agent-runner-CGwrcr57.js +1112 -0
  7. package/dist/agent-runner-CGwrcr57.js.map +1 -0
  8. package/dist/agent-skill-BVjJqol6.js +59 -0
  9. package/dist/agent-skill-BVjJqol6.js.map +1 -0
  10. package/dist/analytics-C4jO5Qda.js +207 -0
  11. package/dist/analytics-C4jO5Qda.js.map +1 -0
  12. package/dist/analytics-CpjaBpx6.js +2 -0
  13. package/dist/bin.d.ts +1 -2
  14. package/dist/bin.js +635 -524
  15. package/dist/bin.js.map +1 -1
  16. package/dist/craft-pre-release.sh +10 -0
  17. package/dist/debug-CIyf0ZGx.js +2 -0
  18. package/dist/debug-CyJ_3dTP.js +201 -0
  19. package/dist/debug-CyJ_3dTP.js.map +1 -0
  20. package/dist/defaults-DoVkE0gW.js +234 -0
  21. package/dist/defaults-DoVkE0gW.js.map +1 -0
  22. package/dist/detection-CkLpxBCD.js +122 -0
  23. package/dist/detection-CkLpxBCD.js.map +1 -0
  24. package/dist/env-api-key-K8TdTDII.js +20 -0
  25. package/dist/env-api-key-K8TdTDII.js.map +1 -0
  26. package/dist/file-utils-BWneZy6p.js +38 -0
  27. package/dist/file-utils-BWneZy6p.js.map +1 -0
  28. package/dist/generate-version.cjs +11 -0
  29. package/dist/package-json-BQgl5C3Z.js +2 -0
  30. package/dist/package-json-Ctq6LSl8.js +25 -0
  31. package/dist/package-json-Ctq6LSl8.js.map +1 -0
  32. package/dist/package-manager-nUQ-ebjr.js +222 -0
  33. package/dist/package-manager-nUQ-ebjr.js.map +1 -0
  34. package/dist/posthog-integration-BzxdDK4z.js +230 -0
  35. package/dist/posthog-integration-BzxdDK4z.js.map +1 -0
  36. package/dist/readiness-Dn7eq8NE.js +2156 -0
  37. package/dist/readiness-Dn7eq8NE.js.map +1 -0
  38. package/dist/registry-s55_iuJT.js +2922 -0
  39. package/dist/registry-s55_iuJT.js.map +1 -0
  40. package/dist/rolldown-runtime-B_-DWIq7.js +15 -0
  41. package/dist/router-D5A1Sb4p.js +141 -0
  42. package/dist/router-D5A1Sb4p.js.map +1 -0
  43. package/dist/setup-utils-CdDnllRW.js +928 -0
  44. package/dist/setup-utils-CdDnllRW.js.map +1 -0
  45. package/dist/smoke-test-ci.sh +165 -0
  46. package/dist/start-playground-B8qCLu7U.js +1005 -0
  47. package/dist/start-playground-B8qCLu7U.js.map +1 -0
  48. package/dist/start-tui-PygiIyNC.js +1887 -0
  49. package/dist/start-tui-PygiIyNC.js.map +1 -0
  50. package/dist/steps-CySv8XdD.js +146 -0
  51. package/dist/steps-CySv8XdD.js.map +1 -0
  52. package/dist/telemetry-Ct_GGkSO.js +13 -0
  53. package/dist/telemetry-Ct_GGkSO.js.map +1 -0
  54. package/dist/wizard-abort-7HUIsqv1.js +39 -0
  55. package/dist/wizard-abort-7HUIsqv1.js.map +1 -0
  56. package/dist/wizard-abort-Dhjb2o08.js +2 -0
  57. package/dist/wizard-session-Db6R023m.js +62 -0
  58. package/dist/wizard-session-Db6R023m.js.map +1 -0
  59. package/dist/wizard-session-y7nf6aKH.js +2 -0
  60. package/npm-shrinkwrap.json +2 -2
  61. package/package.json +16 -8
  62. package/dist/src/__tests__/cli.test.d.ts +0 -1
  63. package/dist/src/__tests__/cli.test.js +0 -256
  64. package/dist/src/__tests__/cli.test.js.map +0 -1
  65. package/dist/src/__tests__/package-json.test.d.ts +0 -1
  66. package/dist/src/__tests__/package-json.test.js +0 -173
  67. package/dist/src/__tests__/package-json.test.js.map +0 -1
  68. package/dist/src/__tests__/wizard-abort.test.d.ts +0 -1
  69. package/dist/src/__tests__/wizard-abort.test.js +0 -148
  70. package/dist/src/__tests__/wizard-abort.test.js.map +0 -1
  71. package/dist/src/frameworks/android/android-wizard-agent.d.ts +0 -6
  72. package/dist/src/frameworks/android/android-wizard-agent.js +0 -142
  73. package/dist/src/frameworks/android/android-wizard-agent.js.map +0 -1
  74. package/dist/src/frameworks/android/utils.d.ts +0 -11
  75. package/dist/src/frameworks/android/utils.js +0 -97
  76. package/dist/src/frameworks/android/utils.js.map +0 -1
  77. package/dist/src/frameworks/angular/angular-wizard-agent.d.ts +0 -4
  78. package/dist/src/frameworks/angular/angular-wizard-agent.js +0 -65
  79. package/dist/src/frameworks/angular/angular-wizard-agent.js.map +0 -1
  80. package/dist/src/frameworks/angular/utils.d.ts +0 -4
  81. package/dist/src/frameworks/angular/utils.js +0 -9
  82. package/dist/src/frameworks/angular/utils.js.map +0 -1
  83. package/dist/src/frameworks/astro/astro-wizard-agent.d.ts +0 -7
  84. package/dist/src/frameworks/astro/astro-wizard-agent.js +0 -102
  85. package/dist/src/frameworks/astro/astro-wizard-agent.js.map +0 -1
  86. package/dist/src/frameworks/astro/utils.d.ts +0 -14
  87. package/dist/src/frameworks/astro/utils.js +0 -114
  88. package/dist/src/frameworks/astro/utils.js.map +0 -1
  89. package/dist/src/frameworks/django/django-wizard-agent.d.ts +0 -8
  90. package/dist/src/frameworks/django/django-wizard-agent.js +0 -173
  91. package/dist/src/frameworks/django/django-wizard-agent.js.map +0 -1
  92. package/dist/src/frameworks/django/utils.d.ts +0 -31
  93. package/dist/src/frameworks/django/utils.js +0 -306
  94. package/dist/src/frameworks/django/utils.js.map +0 -1
  95. package/dist/src/frameworks/fastapi/fastapi-wizard-agent.d.ts +0 -5
  96. package/dist/src/frameworks/fastapi/fastapi-wizard-agent.js +0 -191
  97. package/dist/src/frameworks/fastapi/fastapi-wizard-agent.js.map +0 -1
  98. package/dist/src/frameworks/fastapi/utils.d.ts +0 -26
  99. package/dist/src/frameworks/fastapi/utils.js +0 -258
  100. package/dist/src/frameworks/fastapi/utils.js.map +0 -1
  101. package/dist/src/frameworks/flask/flask-wizard-agent.d.ts +0 -8
  102. package/dist/src/frameworks/flask/flask-wizard-agent.js +0 -179
  103. package/dist/src/frameworks/flask/flask-wizard-agent.js.map +0 -1
  104. package/dist/src/frameworks/flask/utils.d.ts +0 -28
  105. package/dist/src/frameworks/flask/utils.js +0 -344
  106. package/dist/src/frameworks/flask/utils.js.map +0 -1
  107. package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.d.ts +0 -4
  108. package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.js +0 -61
  109. package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.js.map +0 -1
  110. package/dist/src/frameworks/javascript-web/javascript-web-wizard-agent.d.ts +0 -3
  111. package/dist/src/frameworks/javascript-web/javascript-web-wizard-agent.js +0 -152
  112. package/dist/src/frameworks/javascript-web/javascript-web-wizard-agent.js.map +0 -1
  113. package/dist/src/frameworks/javascript-web/utils.d.ts +0 -28
  114. package/dist/src/frameworks/javascript-web/utils.js +0 -147
  115. package/dist/src/frameworks/javascript-web/utils.js.map +0 -1
  116. package/dist/src/frameworks/laravel/laravel-wizard-agent.d.ts +0 -10
  117. package/dist/src/frameworks/laravel/laravel-wizard-agent.js +0 -182
  118. package/dist/src/frameworks/laravel/laravel-wizard-agent.js.map +0 -1
  119. package/dist/src/frameworks/laravel/utils.d.ts +0 -38
  120. package/dist/src/frameworks/laravel/utils.js +0 -238
  121. package/dist/src/frameworks/laravel/utils.js.map +0 -1
  122. package/dist/src/frameworks/nextjs/nextjs-wizard-agent.d.ts +0 -7
  123. package/dist/src/frameworks/nextjs/nextjs-wizard-agent.js +0 -94
  124. package/dist/src/frameworks/nextjs/nextjs-wizard-agent.js.map +0 -1
  125. package/dist/src/frameworks/nextjs/utils.d.ts +0 -12
  126. package/dist/src/frameworks/nextjs/utils.js +0 -52
  127. package/dist/src/frameworks/nextjs/utils.js.map +0 -1
  128. package/dist/src/frameworks/nuxt/nuxt-wizard-agent.d.ts +0 -6
  129. package/dist/src/frameworks/nuxt/nuxt-wizard-agent.js +0 -77
  130. package/dist/src/frameworks/nuxt/nuxt-wizard-agent.js.map +0 -1
  131. package/dist/src/frameworks/python/python-wizard-agent.d.ts +0 -7
  132. package/dist/src/frameworks/python/python-wizard-agent.js +0 -195
  133. package/dist/src/frameworks/python/python-wizard-agent.js.map +0 -1
  134. package/dist/src/frameworks/python/utils.d.ts +0 -28
  135. package/dist/src/frameworks/python/utils.js +0 -147
  136. package/dist/src/frameworks/python/utils.js.map +0 -1
  137. package/dist/src/frameworks/rails/rails-wizard-agent.d.ts +0 -8
  138. package/dist/src/frameworks/rails/rails-wizard-agent.js +0 -90
  139. package/dist/src/frameworks/rails/rails-wizard-agent.js.map +0 -1
  140. package/dist/src/frameworks/rails/utils.d.ts +0 -37
  141. package/dist/src/frameworks/rails/utils.js +0 -187
  142. package/dist/src/frameworks/rails/utils.js.map +0 -1
  143. package/dist/src/frameworks/react-native/react-native-wizard-agent.d.ts +0 -7
  144. package/dist/src/frameworks/react-native/react-native-wizard-agent.js +0 -89
  145. package/dist/src/frameworks/react-native/react-native-wizard-agent.js.map +0 -1
  146. package/dist/src/frameworks/react-native/utils.d.ts +0 -8
  147. package/dist/src/frameworks/react-native/utils.js +0 -28
  148. package/dist/src/frameworks/react-native/utils.js.map +0 -1
  149. package/dist/src/frameworks/react-router/react-router-wizard-agent.d.ts +0 -7
  150. package/dist/src/frameworks/react-router/react-router-wizard-agent.js +0 -94
  151. package/dist/src/frameworks/react-router/react-router-wizard-agent.js.map +0 -1
  152. package/dist/src/frameworks/react-router/utils.d.ts +0 -13
  153. package/dist/src/frameworks/react-router/utils.js +0 -161
  154. package/dist/src/frameworks/react-router/utils.js.map +0 -1
  155. package/dist/src/frameworks/ruby/ruby-wizard-agent.d.ts +0 -7
  156. package/dist/src/frameworks/ruby/ruby-wizard-agent.js +0 -113
  157. package/dist/src/frameworks/ruby/ruby-wizard-agent.js.map +0 -1
  158. package/dist/src/frameworks/ruby/utils.d.ts +0 -25
  159. package/dist/src/frameworks/ruby/utils.js +0 -158
  160. package/dist/src/frameworks/ruby/utils.js.map +0 -1
  161. package/dist/src/frameworks/svelte/svelte-wizard-agent.d.ts +0 -4
  162. package/dist/src/frameworks/svelte/svelte-wizard-agent.js +0 -61
  163. package/dist/src/frameworks/svelte/svelte-wizard-agent.js.map +0 -1
  164. package/dist/src/frameworks/swift/swift-wizard-agent.d.ts +0 -7
  165. package/dist/src/frameworks/swift/swift-wizard-agent.js +0 -143
  166. package/dist/src/frameworks/swift/swift-wizard-agent.js.map +0 -1
  167. package/dist/src/frameworks/swift/utils.d.ts +0 -8
  168. package/dist/src/frameworks/swift/utils.js +0 -105
  169. package/dist/src/frameworks/swift/utils.js.map +0 -1
  170. package/dist/src/frameworks/tanstack-router/tanstack-router-wizard-agent.d.ts +0 -7
  171. package/dist/src/frameworks/tanstack-router/tanstack-router-wizard-agent.js +0 -96
  172. package/dist/src/frameworks/tanstack-router/tanstack-router-wizard-agent.js.map +0 -1
  173. package/dist/src/frameworks/tanstack-router/utils.d.ts +0 -11
  174. package/dist/src/frameworks/tanstack-router/utils.js +0 -149
  175. package/dist/src/frameworks/tanstack-router/utils.js.map +0 -1
  176. package/dist/src/frameworks/tanstack-start/tanstack-start-wizard-agent.d.ts +0 -4
  177. package/dist/src/frameworks/tanstack-start/tanstack-start-wizard-agent.js +0 -64
  178. package/dist/src/frameworks/tanstack-start/tanstack-start-wizard-agent.js.map +0 -1
  179. package/dist/src/frameworks/tanstack-start/utils.d.ts +0 -4
  180. package/dist/src/frameworks/tanstack-start/utils.js +0 -9
  181. package/dist/src/frameworks/tanstack-start/utils.js.map +0 -1
  182. package/dist/src/frameworks/vue/vue-wizard-agent.d.ts +0 -4
  183. package/dist/src/frameworks/vue/vue-wizard-agent.js +0 -62
  184. package/dist/src/frameworks/vue/vue-wizard-agent.js.map +0 -1
  185. package/dist/src/lib/__tests__/agent-interface.test.d.ts +0 -1
  186. package/dist/src/lib/__tests__/agent-interface.test.js +0 -317
  187. package/dist/src/lib/__tests__/agent-interface.test.js.map +0 -1
  188. package/dist/src/lib/__tests__/cloudflare-detection.test.d.ts +0 -1
  189. package/dist/src/lib/__tests__/cloudflare-detection.test.js +0 -119
  190. package/dist/src/lib/__tests__/cloudflare-detection.test.js.map +0 -1
  191. package/dist/src/lib/__tests__/wizard-tools.test.d.ts +0 -1
  192. package/dist/src/lib/__tests__/wizard-tools.test.js +0 -200
  193. package/dist/src/lib/__tests__/wizard-tools.test.js.map +0 -1
  194. package/dist/src/lib/__tests__/yara-hooks.test.d.ts +0 -1
  195. package/dist/src/lib/__tests__/yara-hooks.test.js +0 -432
  196. package/dist/src/lib/__tests__/yara-hooks.test.js.map +0 -1
  197. package/dist/src/lib/__tests__/yara-scanner.test.d.ts +0 -1
  198. package/dist/src/lib/__tests__/yara-scanner.test.js +0 -613
  199. package/dist/src/lib/__tests__/yara-scanner.test.js.map +0 -1
  200. package/dist/src/lib/agent/__tests__/agent-prompt.test.d.ts +0 -1
  201. package/dist/src/lib/agent/__tests__/agent-prompt.test.js +0 -57
  202. package/dist/src/lib/agent/__tests__/agent-prompt.test.js.map +0 -1
  203. package/dist/src/lib/agent/agent-interface.d.ts +0 -171
  204. package/dist/src/lib/agent/agent-interface.js +0 -1082
  205. package/dist/src/lib/agent/agent-interface.js.map +0 -1
  206. package/dist/src/lib/agent/agent-prompt.d.ts +0 -23
  207. package/dist/src/lib/agent/agent-prompt.js +0 -47
  208. package/dist/src/lib/agent/agent-prompt.js.map +0 -1
  209. package/dist/src/lib/agent/agent-runner.d.ts +0 -78
  210. package/dist/src/lib/agent/agent-runner.js +0 -323
  211. package/dist/src/lib/agent/agent-runner.js.map +0 -1
  212. package/dist/src/lib/agent/commandments.d.ts +0 -1
  213. package/dist/src/lib/agent/commandments.js +0 -26
  214. package/dist/src/lib/agent/commandments.js.map +0 -1
  215. package/dist/src/lib/api.d.ts +0 -75
  216. package/dist/src/lib/api.js +0 -105
  217. package/dist/src/lib/api.js.map +0 -1
  218. package/dist/src/lib/cloudflare-detection.d.ts +0 -14
  219. package/dist/src/lib/cloudflare-detection.js +0 -74
  220. package/dist/src/lib/cloudflare-detection.js.map +0 -1
  221. package/dist/src/lib/constants.d.ts +0 -74
  222. package/dist/src/lib/constants.js +0 -98
  223. package/dist/src/lib/constants.js.map +0 -1
  224. package/dist/src/lib/detection/__tests__/context.test.d.ts +0 -1
  225. package/dist/src/lib/detection/__tests__/context.test.js +0 -72
  226. package/dist/src/lib/detection/__tests__/context.test.js.map +0 -1
  227. package/dist/src/lib/detection/__tests__/features.test.d.ts +0 -1
  228. package/dist/src/lib/detection/__tests__/features.test.js +0 -75
  229. package/dist/src/lib/detection/__tests__/features.test.js.map +0 -1
  230. package/dist/src/lib/detection/__tests__/package-manager.test.d.ts +0 -1
  231. package/dist/src/lib/detection/__tests__/package-manager.test.js +0 -195
  232. package/dist/src/lib/detection/__tests__/package-manager.test.js.map +0 -1
  233. package/dist/src/lib/detection/context.d.ts +0 -31
  234. package/dist/src/lib/detection/context.js +0 -92
  235. package/dist/src/lib/detection/context.js.map +0 -1
  236. package/dist/src/lib/detection/features.d.ts +0 -16
  237. package/dist/src/lib/detection/features.js +0 -56
  238. package/dist/src/lib/detection/features.js.map +0 -1
  239. package/dist/src/lib/detection/framework.d.ts +0 -14
  240. package/dist/src/lib/detection/framework.js +0 -35
  241. package/dist/src/lib/detection/framework.js.map +0 -1
  242. package/dist/src/lib/detection/index.d.ts +0 -3
  243. package/dist/src/lib/detection/index.js +0 -11
  244. package/dist/src/lib/detection/index.js.map +0 -1
  245. package/dist/src/lib/detection/package-manager.d.ts +0 -37
  246. package/dist/src/lib/detection/package-manager.js +0 -183
  247. package/dist/src/lib/detection/package-manager.js.map +0 -1
  248. package/dist/src/lib/framework-config.d.ts +0 -175
  249. package/dist/src/lib/framework-config.js +0 -22
  250. package/dist/src/lib/framework-config.js.map +0 -1
  251. package/dist/src/lib/health-checks/__tests__/health-checks.test.d.ts +0 -18
  252. package/dist/src/lib/health-checks/__tests__/health-checks.test.js +0 -759
  253. package/dist/src/lib/health-checks/__tests__/health-checks.test.js.map +0 -1
  254. package/dist/src/lib/health-checks/endpoints.d.ts +0 -4
  255. package/dist/src/lib/health-checks/endpoints.js +0 -49
  256. package/dist/src/lib/health-checks/endpoints.js.map +0 -1
  257. package/dist/src/lib/health-checks/index.d.ts +0 -4
  258. package/dist/src/lib/health-checks/index.js +0 -24
  259. package/dist/src/lib/health-checks/index.js.map +0 -1
  260. package/dist/src/lib/health-checks/readiness.d.ts +0 -29
  261. package/dist/src/lib/health-checks/readiness.js +0 -188
  262. package/dist/src/lib/health-checks/readiness.js.map +0 -1
  263. package/dist/src/lib/health-checks/statuspage.d.ts +0 -9
  264. package/dist/src/lib/health-checks/statuspage.js +0 -105
  265. package/dist/src/lib/health-checks/statuspage.js.map +0 -1
  266. package/dist/src/lib/health-checks/types.d.ts +0 -32
  267. package/dist/src/lib/health-checks/types.js +0 -10
  268. package/dist/src/lib/health-checks/types.js.map +0 -1
  269. package/dist/src/lib/helper-functions.d.ts +0 -1
  270. package/dist/src/lib/helper-functions.js +0 -6
  271. package/dist/src/lib/helper-functions.js.map +0 -1
  272. package/dist/src/lib/middleware/benchmark.d.ts +0 -54
  273. package/dist/src/lib/middleware/benchmark.js +0 -45
  274. package/dist/src/lib/middleware/benchmark.js.map +0 -1
  275. package/dist/src/lib/middleware/benchmarks/cache-tracker.d.ts +0 -44
  276. package/dist/src/lib/middleware/benchmarks/cache-tracker.js +0 -81
  277. package/dist/src/lib/middleware/benchmarks/cache-tracker.js.map +0 -1
  278. package/dist/src/lib/middleware/benchmarks/compaction-tracker.d.ts +0 -29
  279. package/dist/src/lib/middleware/benchmarks/compaction-tracker.js +0 -60
  280. package/dist/src/lib/middleware/benchmarks/compaction-tracker.js.map +0 -1
  281. package/dist/src/lib/middleware/benchmarks/context-size-tracker.d.ts +0 -26
  282. package/dist/src/lib/middleware/benchmarks/context-size-tracker.js +0 -56
  283. package/dist/src/lib/middleware/benchmarks/context-size-tracker.js.map +0 -1
  284. package/dist/src/lib/middleware/benchmarks/cost-tracker.d.ts +0 -16
  285. package/dist/src/lib/middleware/benchmarks/cost-tracker.js +0 -76
  286. package/dist/src/lib/middleware/benchmarks/cost-tracker.js.map +0 -1
  287. package/dist/src/lib/middleware/benchmarks/duration-tracker.d.ts +0 -20
  288. package/dist/src/lib/middleware/benchmarks/duration-tracker.js +0 -40
  289. package/dist/src/lib/middleware/benchmarks/duration-tracker.js.map +0 -1
  290. package/dist/src/lib/middleware/benchmarks/index.d.ts +0 -9
  291. package/dist/src/lib/middleware/benchmarks/index.js +0 -60
  292. package/dist/src/lib/middleware/benchmarks/index.js.map +0 -1
  293. package/dist/src/lib/middleware/benchmarks/json-writer.d.ts +0 -15
  294. package/dist/src/lib/middleware/benchmarks/json-writer.js +0 -144
  295. package/dist/src/lib/middleware/benchmarks/json-writer.js.map +0 -1
  296. package/dist/src/lib/middleware/benchmarks/summary.d.ts +0 -9
  297. package/dist/src/lib/middleware/benchmarks/summary.js +0 -102
  298. package/dist/src/lib/middleware/benchmarks/summary.js.map +0 -1
  299. package/dist/src/lib/middleware/benchmarks/token-tracker.d.ts +0 -40
  300. package/dist/src/lib/middleware/benchmarks/token-tracker.js +0 -77
  301. package/dist/src/lib/middleware/benchmarks/token-tracker.js.map +0 -1
  302. package/dist/src/lib/middleware/benchmarks/turn-counter.d.ts +0 -34
  303. package/dist/src/lib/middleware/benchmarks/turn-counter.js +0 -59
  304. package/dist/src/lib/middleware/benchmarks/turn-counter.js.map +0 -1
  305. package/dist/src/lib/middleware/config.d.ts +0 -24
  306. package/dist/src/lib/middleware/config.js +0 -78
  307. package/dist/src/lib/middleware/config.js.map +0 -1
  308. package/dist/src/lib/middleware/index.d.ts +0 -11
  309. package/dist/src/lib/middleware/index.js +0 -18
  310. package/dist/src/lib/middleware/index.js.map +0 -1
  311. package/dist/src/lib/middleware/phase-detector.d.ts +0 -7
  312. package/dist/src/lib/middleware/phase-detector.js +0 -64
  313. package/dist/src/lib/middleware/phase-detector.js.map +0 -1
  314. package/dist/src/lib/middleware/pipeline.d.ts +0 -29
  315. package/dist/src/lib/middleware/pipeline.js +0 -82
  316. package/dist/src/lib/middleware/pipeline.js.map +0 -1
  317. package/dist/src/lib/middleware/types.d.ts +0 -40
  318. package/dist/src/lib/middleware/types.js +0 -9
  319. package/dist/src/lib/middleware/types.js.map +0 -1
  320. package/dist/src/lib/registry.d.ts +0 -3
  321. package/dist/src/lib/registry.js +0 -49
  322. package/dist/src/lib/registry.js.map +0 -1
  323. package/dist/src/lib/safe-tools.d.ts +0 -2
  324. package/dist/src/lib/safe-tools.js +0 -215
  325. package/dist/src/lib/safe-tools.js.map +0 -1
  326. package/dist/src/lib/skill-install.d.ts +0 -10
  327. package/dist/src/lib/skill-install.js +0 -23
  328. package/dist/src/lib/skill-install.js.map +0 -1
  329. package/dist/src/lib/version.d.ts +0 -1
  330. package/dist/src/lib/version.js +0 -6
  331. package/dist/src/lib/version.js.map +0 -1
  332. package/dist/src/lib/wizard-session.d.ts +0 -146
  333. package/dist/src/lib/wizard-session.js +0 -116
  334. package/dist/src/lib/wizard-session.js.map +0 -1
  335. package/dist/src/lib/wizard-tools.d.ts +0 -91
  336. package/dist/src/lib/wizard-tools.js +0 -389
  337. package/dist/src/lib/wizard-tools.js.map +0 -1
  338. package/dist/src/lib/workflows/__tests__/agent-skill.test.d.ts +0 -1
  339. package/dist/src/lib/workflows/__tests__/agent-skill.test.js +0 -66
  340. package/dist/src/lib/workflows/__tests__/agent-skill.test.js.map +0 -1
  341. package/dist/src/lib/workflows/__tests__/revenue-analytics-detect.test.d.ts +0 -1
  342. package/dist/src/lib/workflows/__tests__/revenue-analytics-detect.test.js +0 -101
  343. package/dist/src/lib/workflows/__tests__/revenue-analytics-detect.test.js.map +0 -1
  344. package/dist/src/lib/workflows/__tests__/workflow-registry.test.d.ts +0 -1
  345. package/dist/src/lib/workflows/__tests__/workflow-registry.test.js +0 -32
  346. package/dist/src/lib/workflows/__tests__/workflow-registry.test.js.map +0 -1
  347. package/dist/src/lib/workflows/__tests__/workflow-step.test.d.ts +0 -1
  348. package/dist/src/lib/workflows/__tests__/workflow-step.test.js +0 -54
  349. package/dist/src/lib/workflows/__tests__/workflow-step.test.js.map +0 -1
  350. package/dist/src/lib/workflows/agent-skill/index.d.ts +0 -44
  351. package/dist/src/lib/workflows/agent-skill/index.js +0 -47
  352. package/dist/src/lib/workflows/agent-skill/index.js.map +0 -1
  353. package/dist/src/lib/workflows/agent-skill/steps.d.ts +0 -8
  354. package/dist/src/lib/workflows/agent-skill/steps.js +0 -32
  355. package/dist/src/lib/workflows/agent-skill/steps.js.map +0 -1
  356. package/dist/src/lib/workflows/posthog-integration/detect.d.ts +0 -12
  357. package/dist/src/lib/workflows/posthog-integration/detect.js +0 -57
  358. package/dist/src/lib/workflows/posthog-integration/detect.js.map +0 -1
  359. package/dist/src/lib/workflows/posthog-integration/index.d.ts +0 -3
  360. package/dist/src/lib/workflows/posthog-integration/index.js +0 -152
  361. package/dist/src/lib/workflows/posthog-integration/index.js.map +0 -1
  362. package/dist/src/lib/workflows/posthog-integration/steps.d.ts +0 -9
  363. package/dist/src/lib/workflows/posthog-integration/steps.js +0 -100
  364. package/dist/src/lib/workflows/posthog-integration/steps.js.map +0 -1
  365. package/dist/src/lib/workflows/revenue-analytics/detect.d.ts +0 -40
  366. package/dist/src/lib/workflows/revenue-analytics/detect.js +0 -156
  367. package/dist/src/lib/workflows/revenue-analytics/detect.js.map +0 -1
  368. package/dist/src/lib/workflows/revenue-analytics/index.d.ts +0 -4
  369. package/dist/src/lib/workflows/revenue-analytics/index.js +0 -30
  370. package/dist/src/lib/workflows/revenue-analytics/index.js.map +0 -1
  371. package/dist/src/lib/workflows/revenue-analytics/steps.d.ts +0 -8
  372. package/dist/src/lib/workflows/revenue-analytics/steps.js +0 -48
  373. package/dist/src/lib/workflows/revenue-analytics/steps.js.map +0 -1
  374. package/dist/src/lib/workflows/workflow-registry.d.ts +0 -18
  375. package/dist/src/lib/workflows/workflow-registry.js +0 -32
  376. package/dist/src/lib/workflows/workflow-registry.js.map +0 -1
  377. package/dist/src/lib/workflows/workflow-step.d.ts +0 -126
  378. package/dist/src/lib/workflows/workflow-step.js +0 -28
  379. package/dist/src/lib/workflows/workflow-step.js.map +0 -1
  380. package/dist/src/lib/yara-hooks.d.ts +0 -44
  381. package/dist/src/lib/yara-hooks.js +0 -377
  382. package/dist/src/lib/yara-hooks.js.map +0 -1
  383. package/dist/src/lib/yara-scanner.d.ts +0 -61
  384. package/dist/src/lib/yara-scanner.js +0 -328
  385. package/dist/src/lib/yara-scanner.js.map +0 -1
  386. package/dist/src/steps/add-mcp-server-to-clients/MCPClient.d.ts +0 -30
  387. package/dist/src/steps/add-mcp-server-to-clients/MCPClient.js +0 -138
  388. package/dist/src/steps/add-mcp-server-to-clients/MCPClient.js.map +0 -1
  389. package/dist/src/steps/add-mcp-server-to-clients/__tests__/defaults.test.d.ts +0 -1
  390. package/dist/src/steps/add-mcp-server-to-clients/__tests__/defaults.test.js +0 -72
  391. package/dist/src/steps/add-mcp-server-to-clients/__tests__/defaults.test.js.map +0 -1
  392. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/claude.test.d.ts +0 -1
  393. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/claude.test.js +0 -341
  394. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/claude.test.js.map +0 -1
  395. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/codex.test.d.ts +0 -1
  396. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/codex.test.js +0 -108
  397. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/codex.test.js.map +0 -1
  398. package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.d.ts +0 -89
  399. package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.js +0 -169
  400. package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.js.map +0 -1
  401. package/dist/src/steps/add-mcp-server-to-clients/clients/claude.d.ts +0 -80
  402. package/dist/src/steps/add-mcp-server-to-clients/clients/claude.js +0 -64
  403. package/dist/src/steps/add-mcp-server-to-clients/clients/claude.js.map +0 -1
  404. package/dist/src/steps/add-mcp-server-to-clients/clients/codex.d.ts +0 -88
  405. package/dist/src/steps/add-mcp-server-to-clients/clients/codex.js +0 -76
  406. package/dist/src/steps/add-mcp-server-to-clients/clients/codex.js.map +0 -1
  407. package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.d.ts +0 -84
  408. package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.js +0 -61
  409. package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.js.map +0 -1
  410. package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.d.ts +0 -92
  411. package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.js +0 -101
  412. package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.js.map +0 -1
  413. package/dist/src/steps/add-mcp-server-to-clients/clients/zed.d.ts +0 -110
  414. package/dist/src/steps/add-mcp-server-to-clients/clients/zed.js +0 -102
  415. package/dist/src/steps/add-mcp-server-to-clients/clients/zed.js.map +0 -1
  416. package/dist/src/steps/add-mcp-server-to-clients/defaults.d.ts +0 -119
  417. package/dist/src/steps/add-mcp-server-to-clients/defaults.js +0 -239
  418. package/dist/src/steps/add-mcp-server-to-clients/defaults.js.map +0 -1
  419. package/dist/src/steps/add-mcp-server-to-clients/index.d.ts +0 -23
  420. package/dist/src/steps/add-mcp-server-to-clients/index.js +0 -111
  421. package/dist/src/steps/add-mcp-server-to-clients/index.js.map +0 -1
  422. package/dist/src/steps/add-or-update-environment-variables.d.ts +0 -10
  423. package/dist/src/steps/add-or-update-environment-variables.js +0 -188
  424. package/dist/src/steps/add-or-update-environment-variables.js.map +0 -1
  425. package/dist/src/steps/index.d.ts +0 -4
  426. package/dist/src/steps/index.js +0 -21
  427. package/dist/src/steps/index.js.map +0 -1
  428. package/dist/src/steps/run-prettier.d.ts +0 -5
  429. package/dist/src/steps/run-prettier.js +0 -91
  430. package/dist/src/steps/run-prettier.js.map +0 -1
  431. package/dist/src/steps/upload-environment-variables/EnvironmentProvider.d.ts +0 -11
  432. package/dist/src/steps/upload-environment-variables/EnvironmentProvider.js +0 -12
  433. package/dist/src/steps/upload-environment-variables/EnvironmentProvider.js.map +0 -1
  434. package/dist/src/steps/upload-environment-variables/index.d.ts +0 -6
  435. package/dist/src/steps/upload-environment-variables/index.js +0 -38
  436. package/dist/src/steps/upload-environment-variables/index.js.map +0 -1
  437. package/dist/src/steps/upload-environment-variables/providers/__tests__/vercel.test.d.ts +0 -1
  438. package/dist/src/steps/upload-environment-variables/providers/__tests__/vercel.test.js +0 -117
  439. package/dist/src/steps/upload-environment-variables/providers/__tests__/vercel.test.js.map +0 -1
  440. package/dist/src/steps/upload-environment-variables/providers/vercel.d.ts +0 -15
  441. package/dist/src/steps/upload-environment-variables/providers/vercel.js +0 -142
  442. package/dist/src/steps/upload-environment-variables/providers/vercel.js.map +0 -1
  443. package/dist/src/telemetry.d.ts +0 -2
  444. package/dist/src/telemetry.js +0 -13
  445. package/dist/src/telemetry.js.map +0 -1
  446. package/dist/src/ui/index.d.ts +0 -8
  447. package/dist/src/ui/index.js +0 -17
  448. package/dist/src/ui/index.js.map +0 -1
  449. package/dist/src/ui/logging-ui.d.ts +0 -52
  450. package/dist/src/ui/logging-ui.js +0 -121
  451. package/dist/src/ui/logging-ui.js.map +0 -1
  452. package/dist/src/ui/tui/App.d.ts +0 -6
  453. package/dist/src/ui/tui/App.js +0 -10
  454. package/dist/src/ui/tui/App.js.map +0 -1
  455. package/dist/src/ui/tui/__tests__/flows.test.d.ts +0 -1
  456. package/dist/src/ui/tui/__tests__/flows.test.js +0 -115
  457. package/dist/src/ui/tui/__tests__/flows.test.js.map +0 -1
  458. package/dist/src/ui/tui/__tests__/layout-helpers.test.d.ts +0 -1
  459. package/dist/src/ui/tui/__tests__/layout-helpers.test.js +0 -68
  460. package/dist/src/ui/tui/__tests__/layout-helpers.test.js.map +0 -1
  461. package/dist/src/ui/tui/__tests__/router.test.d.ts +0 -1
  462. package/dist/src/ui/tui/__tests__/router.test.js +0 -87
  463. package/dist/src/ui/tui/__tests__/router.test.js.map +0 -1
  464. package/dist/src/ui/tui/__tests__/store.test.d.ts +0 -1
  465. package/dist/src/ui/tui/__tests__/store.test.js +0 -889
  466. package/dist/src/ui/tui/__tests__/store.test.js.map +0 -1
  467. package/dist/src/ui/tui/components/LearnCard.d.ts +0 -10
  468. package/dist/src/ui/tui/components/LearnCard.js +0 -217
  469. package/dist/src/ui/tui/components/LearnCard.js.map +0 -1
  470. package/dist/src/ui/tui/components/ServiceHealthList.d.ts +0 -15
  471. package/dist/src/ui/tui/components/ServiceHealthList.js +0 -57
  472. package/dist/src/ui/tui/components/ServiceHealthList.js.map +0 -1
  473. package/dist/src/ui/tui/components/TipsCard.d.ts +0 -9
  474. package/dist/src/ui/tui/components/TipsCard.js +0 -55
  475. package/dist/src/ui/tui/components/TipsCard.js.map +0 -1
  476. package/dist/src/ui/tui/components/TitleBar.d.ts +0 -6
  477. package/dist/src/ui/tui/components/TitleBar.js +0 -17
  478. package/dist/src/ui/tui/components/TitleBar.js.map +0 -1
  479. package/dist/src/ui/tui/flows.d.ts +0 -51
  480. package/dist/src/ui/tui/flows.js +0 -75
  481. package/dist/src/ui/tui/flows.js.map +0 -1
  482. package/dist/src/ui/tui/hooks/useStdoutDimensions.d.ts +0 -9
  483. package/dist/src/ui/tui/hooks/useStdoutDimensions.js +0 -37
  484. package/dist/src/ui/tui/hooks/useStdoutDimensions.js.map +0 -1
  485. package/dist/src/ui/tui/ink-ui.d.ts +0 -58
  486. package/dist/src/ui/tui/ink-ui.js +0 -125
  487. package/dist/src/ui/tui/ink-ui.js.map +0 -1
  488. package/dist/src/ui/tui/package.json +0 -1
  489. package/dist/src/ui/tui/playground/PlaygroundApp.d.ts +0 -12
  490. package/dist/src/ui/tui/playground/PlaygroundApp.js +0 -44
  491. package/dist/src/ui/tui/playground/PlaygroundApp.js.map +0 -1
  492. package/dist/src/ui/tui/playground/demos/HealthCheckDemo.d.ts +0 -11
  493. package/dist/src/ui/tui/playground/demos/HealthCheckDemo.js +0 -57
  494. package/dist/src/ui/tui/playground/demos/HealthCheckDemo.js.map +0 -1
  495. package/dist/src/ui/tui/playground/demos/InputDemo.d.ts +0 -4
  496. package/dist/src/ui/tui/playground/demos/InputDemo.js +0 -53
  497. package/dist/src/ui/tui/playground/demos/InputDemo.js.map +0 -1
  498. package/dist/src/ui/tui/playground/demos/LayoutDemo.d.ts +0 -5
  499. package/dist/src/ui/tui/playground/demos/LayoutDemo.js +0 -25
  500. package/dist/src/ui/tui/playground/demos/LayoutDemo.js.map +0 -1
  501. package/dist/src/ui/tui/playground/demos/LogDemo.d.ts +0 -5
  502. package/dist/src/ui/tui/playground/demos/LogDemo.js +0 -53
  503. package/dist/src/ui/tui/playground/demos/LogDemo.js.map +0 -1
  504. package/dist/src/ui/tui/playground/demos/ModalDemo.d.ts +0 -6
  505. package/dist/src/ui/tui/playground/demos/ModalDemo.js +0 -13
  506. package/dist/src/ui/tui/playground/demos/ModalDemo.js.map +0 -1
  507. package/dist/src/ui/tui/playground/demos/ProgressDemo.d.ts +0 -5
  508. package/dist/src/ui/tui/playground/demos/ProgressDemo.js +0 -58
  509. package/dist/src/ui/tui/playground/demos/ProgressDemo.js.map +0 -1
  510. package/dist/src/ui/tui/playground/demos/RunScreenDemo.d.ts +0 -11
  511. package/dist/src/ui/tui/playground/demos/RunScreenDemo.js +0 -159
  512. package/dist/src/ui/tui/playground/demos/RunScreenDemo.js.map +0 -1
  513. package/dist/src/ui/tui/playground/demos/WelcomeDemo.d.ts +0 -9
  514. package/dist/src/ui/tui/playground/demos/WelcomeDemo.js +0 -15
  515. package/dist/src/ui/tui/playground/demos/WelcomeDemo.js.map +0 -1
  516. package/dist/src/ui/tui/playground/start-playground.d.ts +0 -4
  517. package/dist/src/ui/tui/playground/start-playground.js +0 -24
  518. package/dist/src/ui/tui/playground/start-playground.js.map +0 -1
  519. package/dist/src/ui/tui/primitives/CardLayout.d.ts +0 -12
  520. package/dist/src/ui/tui/primitives/CardLayout.js +0 -10
  521. package/dist/src/ui/tui/primitives/CardLayout.js.map +0 -1
  522. package/dist/src/ui/tui/primitives/ConfirmationInput.d.ts +0 -13
  523. package/dist/src/ui/tui/primitives/ConfirmationInput.js +0 -35
  524. package/dist/src/ui/tui/primitives/ConfirmationInput.js.map +0 -1
  525. package/dist/src/ui/tui/primitives/ContentSequencer.d.ts +0 -42
  526. package/dist/src/ui/tui/primitives/ContentSequencer.js +0 -137
  527. package/dist/src/ui/tui/primitives/ContentSequencer.js.map +0 -1
  528. package/dist/src/ui/tui/primitives/DissolveTransition.d.ts +0 -21
  529. package/dist/src/ui/tui/primitives/DissolveTransition.js +0 -149
  530. package/dist/src/ui/tui/primitives/DissolveTransition.js.map +0 -1
  531. package/dist/src/ui/tui/primitives/Divider.d.ts +0 -6
  532. package/dist/src/ui/tui/primitives/Divider.js +0 -15
  533. package/dist/src/ui/tui/primitives/Divider.js.map +0 -1
  534. package/dist/src/ui/tui/primitives/EventPlanViewer.d.ts +0 -9
  535. package/dist/src/ui/tui/primitives/EventPlanViewer.js +0 -9
  536. package/dist/src/ui/tui/primitives/EventPlanViewer.js.map +0 -1
  537. package/dist/src/ui/tui/primitives/GroupedPickerMenu.d.ts +0 -23
  538. package/dist/src/ui/tui/primitives/GroupedPickerMenu.js +0 -182
  539. package/dist/src/ui/tui/primitives/GroupedPickerMenu.js.map +0 -1
  540. package/dist/src/ui/tui/primitives/HNViewer.d.ts +0 -7
  541. package/dist/src/ui/tui/primitives/HNViewer.js +0 -63
  542. package/dist/src/ui/tui/primitives/HNViewer.js.map +0 -1
  543. package/dist/src/ui/tui/primitives/LinesBlock.d.ts +0 -16
  544. package/dist/src/ui/tui/primitives/LinesBlock.js +0 -37
  545. package/dist/src/ui/tui/primitives/LinesBlock.js.map +0 -1
  546. package/dist/src/ui/tui/primitives/LoadingBox.d.ts +0 -8
  547. package/dist/src/ui/tui/primitives/LoadingBox.js +0 -10
  548. package/dist/src/ui/tui/primitives/LoadingBox.js.map +0 -1
  549. package/dist/src/ui/tui/primitives/LogViewer.d.ts +0 -11
  550. package/dist/src/ui/tui/primitives/LogViewer.js +0 -55
  551. package/dist/src/ui/tui/primitives/LogViewer.js.map +0 -1
  552. package/dist/src/ui/tui/primitives/ModalOverlay.d.ts +0 -25
  553. package/dist/src/ui/tui/primitives/ModalOverlay.js +0 -7
  554. package/dist/src/ui/tui/primitives/ModalOverlay.js.map +0 -1
  555. package/dist/src/ui/tui/primitives/NodeBlock.d.ts +0 -13
  556. package/dist/src/ui/tui/primitives/NodeBlock.js +0 -17
  557. package/dist/src/ui/tui/primitives/NodeBlock.js.map +0 -1
  558. package/dist/src/ui/tui/primitives/PickerMenu.d.ts +0 -20
  559. package/dist/src/ui/tui/primitives/PickerMenu.js +0 -143
  560. package/dist/src/ui/tui/primitives/PickerMenu.js.map +0 -1
  561. package/dist/src/ui/tui/primitives/ProgressList.d.ts +0 -17
  562. package/dist/src/ui/tui/primitives/ProgressList.js +0 -32
  563. package/dist/src/ui/tui/primitives/ProgressList.js.map +0 -1
  564. package/dist/src/ui/tui/primitives/PromptLabel.d.ts +0 -11
  565. package/dist/src/ui/tui/primitives/PromptLabel.js +0 -13
  566. package/dist/src/ui/tui/primitives/PromptLabel.js.map +0 -1
  567. package/dist/src/ui/tui/primitives/ScreenContainer.d.ts +0 -16
  568. package/dist/src/ui/tui/primitives/ScreenContainer.js +0 -36
  569. package/dist/src/ui/tui/primitives/ScreenContainer.js.map +0 -1
  570. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.d.ts +0 -22
  571. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.js +0 -35
  572. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.js.map +0 -1
  573. package/dist/src/ui/tui/primitives/SplitView.d.ts +0 -11
  574. package/dist/src/ui/tui/primitives/SplitView.js +0 -9
  575. package/dist/src/ui/tui/primitives/SplitView.js.map +0 -1
  576. package/dist/src/ui/tui/primitives/TabContainer.d.ts +0 -23
  577. package/dist/src/ui/tui/primitives/TabContainer.js +0 -45
  578. package/dist/src/ui/tui/primitives/TabContainer.js.map +0 -1
  579. package/dist/src/ui/tui/primitives/TextBlock.d.ts +0 -41
  580. package/dist/src/ui/tui/primitives/TextBlock.js +0 -144
  581. package/dist/src/ui/tui/primitives/TextBlock.js.map +0 -1
  582. package/dist/src/ui/tui/primitives/content-types.d.ts +0 -37
  583. package/dist/src/ui/tui/primitives/content-types.js +0 -19
  584. package/dist/src/ui/tui/primitives/content-types.js.map +0 -1
  585. package/dist/src/ui/tui/primitives/index.d.ts +0 -27
  586. package/dist/src/ui/tui/primitives/index.js +0 -24
  587. package/dist/src/ui/tui/primitives/index.js.map +0 -1
  588. package/dist/src/ui/tui/primitives/layout-helpers.d.ts +0 -36
  589. package/dist/src/ui/tui/primitives/layout-helpers.js +0 -95
  590. package/dist/src/ui/tui/primitives/layout-helpers.js.map +0 -1
  591. package/dist/src/ui/tui/primitives/text-helpers.d.ts +0 -10
  592. package/dist/src/ui/tui/primitives/text-helpers.js +0 -43
  593. package/dist/src/ui/tui/primitives/text-helpers.js.map +0 -1
  594. package/dist/src/ui/tui/router.d.ts +0 -58
  595. package/dist/src/ui/tui/router.js +0 -96
  596. package/dist/src/ui/tui/router.js.map +0 -1
  597. package/dist/src/ui/tui/screen-registry.d.ts +0 -19
  598. package/dist/src/ui/tui/screen-registry.js +0 -44
  599. package/dist/src/ui/tui/screen-registry.js.map +0 -1
  600. package/dist/src/ui/tui/screens/AuthErrorScreen.d.ts +0 -7
  601. package/dist/src/ui/tui/screens/AuthErrorScreen.js +0 -16
  602. package/dist/src/ui/tui/screens/AuthErrorScreen.js.map +0 -1
  603. package/dist/src/ui/tui/screens/AuthScreen.d.ts +0 -13
  604. package/dist/src/ui/tui/screens/AuthScreen.js +0 -20
  605. package/dist/src/ui/tui/screens/AuthScreen.js.map +0 -1
  606. package/dist/src/ui/tui/screens/IntroScreen.d.ts +0 -16
  607. package/dist/src/ui/tui/screens/IntroScreen.js +0 -79
  608. package/dist/src/ui/tui/screens/IntroScreen.js.map +0 -1
  609. package/dist/src/ui/tui/screens/ManagedSettingsScreen.d.ts +0 -13
  610. package/dist/src/ui/tui/screens/ManagedSettingsScreen.js +0 -32
  611. package/dist/src/ui/tui/screens/ManagedSettingsScreen.js.map +0 -1
  612. package/dist/src/ui/tui/screens/McpScreen.d.ts +0 -24
  613. package/dist/src/ui/tui/screens/McpScreen.js +0 -127
  614. package/dist/src/ui/tui/screens/McpScreen.js.map +0 -1
  615. package/dist/src/ui/tui/screens/OutroScreen.d.ts +0 -11
  616. package/dist/src/ui/tui/screens/OutroScreen.js +0 -22
  617. package/dist/src/ui/tui/screens/OutroScreen.js.map +0 -1
  618. package/dist/src/ui/tui/screens/PortConflictScreen.d.ts +0 -11
  619. package/dist/src/ui/tui/screens/PortConflictScreen.js +0 -30
  620. package/dist/src/ui/tui/screens/PortConflictScreen.js.map +0 -1
  621. package/dist/src/ui/tui/screens/RevenueIntroScreen.d.ts +0 -16
  622. package/dist/src/ui/tui/screens/RevenueIntroScreen.js +0 -64
  623. package/dist/src/ui/tui/screens/RevenueIntroScreen.js.map +0 -1
  624. package/dist/src/ui/tui/screens/RunScreen.d.ts +0 -16
  625. package/dist/src/ui/tui/screens/RunScreen.js +0 -73
  626. package/dist/src/ui/tui/screens/RunScreen.js.map +0 -1
  627. package/dist/src/ui/tui/screens/SettingsOverrideScreen.d.ts +0 -6
  628. package/dist/src/ui/tui/screens/SettingsOverrideScreen.js +0 -30
  629. package/dist/src/ui/tui/screens/SettingsOverrideScreen.js.map +0 -1
  630. package/dist/src/ui/tui/screens/SetupScreen.d.ts +0 -13
  631. package/dist/src/ui/tui/screens/SetupScreen.js +0 -74
  632. package/dist/src/ui/tui/screens/SetupScreen.js.map +0 -1
  633. package/dist/src/ui/tui/screens/SkillsScreen.d.ts +0 -14
  634. package/dist/src/ui/tui/screens/SkillsScreen.js +0 -71
  635. package/dist/src/ui/tui/screens/SkillsScreen.js.map +0 -1
  636. package/dist/src/ui/tui/screens/health/HealthCheckScreen.d.ts +0 -14
  637. package/dist/src/ui/tui/screens/health/HealthCheckScreen.js +0 -77
  638. package/dist/src/ui/tui/screens/health/HealthCheckScreen.js.map +0 -1
  639. package/dist/src/ui/tui/services/mcp-installer.d.ts +0 -21
  640. package/dist/src/ui/tui/services/mcp-installer.js +0 -58
  641. package/dist/src/ui/tui/services/mcp-installer.js.map +0 -1
  642. package/dist/src/ui/tui/start-tui.d.ts +0 -9
  643. package/dist/src/ui/tui/start-tui.js +0 -41
  644. package/dist/src/ui/tui/start-tui.js.map +0 -1
  645. package/dist/src/ui/tui/store.d.ts +0 -190
  646. package/dist/src/ui/tui/store.js +0 -472
  647. package/dist/src/ui/tui/store.js.map +0 -1
  648. package/dist/src/ui/tui/styles.d.ts +0 -32
  649. package/dist/src/ui/tui/styles.js +0 -35
  650. package/dist/src/ui/tui/styles.js.map +0 -1
  651. package/dist/src/ui/wizard-ui.d.ts +0 -81
  652. package/dist/src/ui/wizard-ui.js +0 -19
  653. package/dist/src/ui/wizard-ui.js.map +0 -1
  654. package/dist/src/utils/__tests__/analytics.test.d.ts +0 -1
  655. package/dist/src/utils/__tests__/analytics.test.js +0 -136
  656. package/dist/src/utils/__tests__/analytics.test.js.map +0 -1
  657. package/dist/src/utils/__tests__/provisioning.test.d.ts +0 -1
  658. package/dist/src/utils/__tests__/provisioning.test.js +0 -192
  659. package/dist/src/utils/__tests__/provisioning.test.js.map +0 -1
  660. package/dist/src/utils/__tests__/semver.test.d.ts +0 -1
  661. package/dist/src/utils/__tests__/semver.test.js +0 -159
  662. package/dist/src/utils/__tests__/semver.test.js.map +0 -1
  663. package/dist/src/utils/__tests__/setup-utils.test.d.ts +0 -1
  664. package/dist/src/utils/__tests__/setup-utils.test.js +0 -138
  665. package/dist/src/utils/__tests__/setup-utils.test.js.map +0 -1
  666. package/dist/src/utils/analytics.d.ts +0 -33
  667. package/dist/src/utils/analytics.js +0 -137
  668. package/dist/src/utils/analytics.js.map +0 -1
  669. package/dist/src/utils/anthropic-status.d.ts +0 -17
  670. package/dist/src/utils/anthropic-status.js +0 -49
  671. package/dist/src/utils/anthropic-status.js.map +0 -1
  672. package/dist/src/utils/bash.d.ts +0 -2
  673. package/dist/src/utils/bash.js +0 -54
  674. package/dist/src/utils/bash.js.map +0 -1
  675. package/dist/src/utils/custom-headers.d.ts +0 -9
  676. package/dist/src/utils/custom-headers.js +0 -24
  677. package/dist/src/utils/custom-headers.js.map +0 -1
  678. package/dist/src/utils/debug.d.ts +0 -29
  679. package/dist/src/utils/debug.js +0 -87
  680. package/dist/src/utils/debug.js.map +0 -1
  681. package/dist/src/utils/env-api-key.d.ts +0 -5
  682. package/dist/src/utils/env-api-key.js +0 -57
  683. package/dist/src/utils/env-api-key.js.map +0 -1
  684. package/dist/src/utils/environment.d.ts +0 -4
  685. package/dist/src/utils/environment.js +0 -77
  686. package/dist/src/utils/environment.js.map +0 -1
  687. package/dist/src/utils/file-utils.d.ts +0 -10
  688. package/dist/src/utils/file-utils.js +0 -49
  689. package/dist/src/utils/file-utils.js.map +0 -1
  690. package/dist/src/utils/logging.d.ts +0 -9
  691. package/dist/src/utils/logging.js +0 -47
  692. package/dist/src/utils/logging.js.map +0 -1
  693. package/dist/src/utils/oauth.d.ts +0 -33
  694. package/dist/src/utils/oauth.js +0 -288
  695. package/dist/src/utils/oauth.js.map +0 -1
  696. package/dist/src/utils/package-json.d.ts +0 -30
  697. package/dist/src/utils/package-json.js +0 -47
  698. package/dist/src/utils/package-json.js.map +0 -1
  699. package/dist/src/utils/package-manager.d.ts +0 -21
  700. package/dist/src/utils/package-manager.js +0 -210
  701. package/dist/src/utils/package-manager.js.map +0 -1
  702. package/dist/src/utils/provisioning.d.ts +0 -25
  703. package/dist/src/utils/provisioning.js +0 -191
  704. package/dist/src/utils/provisioning.js.map +0 -1
  705. package/dist/src/utils/rules/astro-rules.md +0 -44
  706. package/dist/src/utils/rules/next-rules.md +0 -9
  707. package/dist/src/utils/rules/react-native-rules.md +0 -7
  708. package/dist/src/utils/rules/react-rules.md +0 -7
  709. package/dist/src/utils/rules/svelte-rules.md +0 -7
  710. package/dist/src/utils/rules/universal.md +0 -32
  711. package/dist/src/utils/semver.d.ts +0 -21
  712. package/dist/src/utils/semver.js +0 -87
  713. package/dist/src/utils/semver.js.map +0 -1
  714. package/dist/src/utils/setup-utils.d.ts +0 -79
  715. package/dist/src/utils/setup-utils.js +0 -406
  716. package/dist/src/utils/setup-utils.js.map +0 -1
  717. package/dist/src/utils/string.d.ts +0 -1
  718. package/dist/src/utils/string.js +0 -9
  719. package/dist/src/utils/string.js.map +0 -1
  720. package/dist/src/utils/types.d.ts +0 -85
  721. package/dist/src/utils/types.js +0 -3
  722. package/dist/src/utils/types.js.map +0 -1
  723. package/dist/src/utils/urls.d.ts +0 -7
  724. package/dist/src/utils/urls.js +0 -78
  725. package/dist/src/utils/urls.js.map +0 -1
  726. package/dist/src/utils/vendor/is-unicorn-supported.d.ts +0 -1
  727. package/dist/src/utils/vendor/is-unicorn-supported.js +0 -24
  728. package/dist/src/utils/vendor/is-unicorn-supported.js.map +0 -1
  729. package/dist/src/utils/wizard-abort.d.ts +0 -16
  730. package/dist/src/utils/wizard-abort.js +0 -59
  731. package/dist/src/utils/wizard-abort.js.map +0 -1
@@ -0,0 +1,1887 @@
1
+ import { l as setUI, s as logToFile } from "./debug-CyJ_3dTP.js";
2
+ import { i as CONTEXT_MILL_URL, l as Integration, u as OAUTH_PORTS, v as REMOTE_SKILLS_BASE_URL, w as getSkillsBaseUrl } from "./analytics-C4jO5Qda.js";
3
+ import { t as ADDITIONAL_FEATURE_LABELS } from "./wizard-session-Db6R023m.js";
4
+ import { r as wizardAbort } from "./wizard-abort-7HUIsqv1.js";
5
+ import { m as fetchSkillMenu, p as downloadSkill, r as getBlockingServiceKeys } from "./readiness-Dn7eq8NE.js";
6
+ import { n as POSTHOG_SDKS, r as STRIPE_SDKS } from "./bin.js";
7
+ import { t as ALL_FEATURE_VALUES } from "./defaults-DoVkE0gW.js";
8
+ import { a as getSupportedClients, i as getInstalledClients, o as removeMCPServer } from "./add-mcp-server-to-clients-DZtISNrs.js";
9
+ import "./router-D5A1Sb4p.js";
10
+ import { _ as SplitView, a as HNViewer, b as Icons, c as EventPlanViewer, d as ConfirmationInput, g as LoadingBox, h as ProgressList, i as LearnCard, l as LogViewer, m as PickerMenu, n as ServiceHealthList, o as TabContainer, p as useStdoutDimensions, r as TipsCard, s as ScreenContainer, t as McpScreen, u as ModalOverlay, x as WizardStore, y as Colors } from "./McpScreen-BmHapIaP.js";
11
+ import { join } from "node:path";
12
+ import path from "path";
13
+ import { Box, Text, render, useInput } from "ink";
14
+ import { createElement, useEffect, useMemo, useState, useSyncExternalStore } from "react";
15
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
16
+ import { readdir, rm } from "node:fs/promises";
17
+ //#region src/ui/tui/ink-ui.ts
18
+ const ANSI_RE = /\x1b\[[0-9;]*m/g;
19
+ function stripAnsi(s) {
20
+ return s.replace(ANSI_RE, "");
21
+ }
22
+ var InkUI = class {
23
+ constructor(store) {
24
+ this.store = store;
25
+ }
26
+ intro(message) {
27
+ this.store.pushStatus(message);
28
+ }
29
+ outro(message) {
30
+ this.store.pushStatus(stripAnsi(message));
31
+ if (!this.store.session.outroData) this.store.setOutroData({
32
+ kind: "success",
33
+ message: stripAnsi(message)
34
+ });
35
+ if (this.store.session.runPhase === "running") this.store.setRunPhase("completed");
36
+ }
37
+ outroError(data) {
38
+ this.store.setOutroData(data);
39
+ if (this.store.session.runPhase !== "error") this.store.setRunPhase("error");
40
+ }
41
+ setCredentials(credentials) {
42
+ this.store.setCredentials(credentials);
43
+ }
44
+ setDetectedFramework(label) {
45
+ this.store.setDetectedFramework(label);
46
+ }
47
+ onEnterScreen(screen, fn) {
48
+ this.store.onEnterScreen(screen, fn);
49
+ }
50
+ setLoginUrl(url) {
51
+ this.store.setLoginUrl(url);
52
+ }
53
+ showBlockingOutage(result) {
54
+ this.store.setReadinessResult(result);
55
+ return Promise.resolve();
56
+ }
57
+ setReadinessWarnings(result) {
58
+ this.store.setReadinessResult(result);
59
+ }
60
+ showPortConflict(processInfo) {
61
+ return this.store.showPortConflict(processInfo);
62
+ }
63
+ showSettingsOverride(conflicts, backupAndFix) {
64
+ return this.store.showSettingsOverride(conflicts, backupAndFix);
65
+ }
66
+ showAuthError() {
67
+ this.store.showAuthError();
68
+ }
69
+ startRun() {
70
+ this.store.setRunPhase("running");
71
+ }
72
+ cancel(message) {
73
+ this.store.pushStatus(message);
74
+ }
75
+ log = {
76
+ info: (message) => {
77
+ this.store.pushStatus(message);
78
+ },
79
+ warn: (message) => {
80
+ this.store.pushStatus(message);
81
+ },
82
+ error: (message) => {
83
+ this.store.pushStatus(message);
84
+ },
85
+ success: (message) => {
86
+ this.store.pushStatus(message);
87
+ },
88
+ step: (message) => {
89
+ this.store.pushStatus(message);
90
+ }
91
+ };
92
+ note(message) {
93
+ this.store.pushStatus(message);
94
+ }
95
+ spinner() {
96
+ return {
97
+ start: (message) => {
98
+ if (message) this.store.pushStatus(message);
99
+ },
100
+ stop: (message) => {
101
+ if (message) this.store.pushStatus(message);
102
+ },
103
+ message: (msg) => {
104
+ if (msg) this.store.pushStatus(msg);
105
+ }
106
+ };
107
+ }
108
+ pushStatus(message) {
109
+ this.store.pushStatus(message);
110
+ }
111
+ syncTodos(todos) {
112
+ this.store.syncTodos(todos);
113
+ }
114
+ setEventPlan(events) {
115
+ this.store.setEventPlan(events);
116
+ }
117
+ };
118
+ //#endregion
119
+ //#region src/ui/tui/screens/health/HealthCheckScreen.tsx
120
+ /**
121
+ * HealthCheckScreen — Flow screen between Intro and Auth.
122
+ *
123
+ * Three states:
124
+ * 1. Checking: spinner while health check runs
125
+ * 2. Healthy: isComplete returns true, router auto-advances to Auth
126
+ * 3. Blocking outage: shows affected services with Continue/Exit
127
+ */
128
+ const EXAMPLE_PROMPT = "Integrate PostHog into this project using the skill files in .posthog/skills/. Read SKILL.md first, then follow the numbered workflow files in order.";
129
+ const SkillsDownloadedScreen = () => {
130
+ useInput(() => {
131
+ process.exit(0);
132
+ });
133
+ return /* @__PURE__ */ jsxs(Box, {
134
+ flexDirection: "column",
135
+ flexGrow: 1,
136
+ children: [
137
+ /* @__PURE__ */ jsxs(Text, {
138
+ color: "green",
139
+ bold: true,
140
+ children: [Icons.check, " Skills downloaded to .posthog/skills/"]
141
+ }),
142
+ /* @__PURE__ */ jsxs(Box, {
143
+ marginTop: 1,
144
+ flexDirection: "column",
145
+ children: [/* @__PURE__ */ jsx(Text, { children: "You can continue setup with another agent using this prompt:" }), /* @__PURE__ */ jsx(Box, {
146
+ marginTop: 1,
147
+ paddingLeft: 2,
148
+ children: /* @__PURE__ */ jsx(Text, {
149
+ color: "cyan",
150
+ children: EXAMPLE_PROMPT
151
+ })
152
+ })]
153
+ }),
154
+ /* @__PURE__ */ jsx(Box, {
155
+ marginTop: 1,
156
+ children: /* @__PURE__ */ jsx(Text, {
157
+ color: Colors.muted,
158
+ children: "Press any key to exit"
159
+ })
160
+ })
161
+ ]
162
+ });
163
+ };
164
+ const HealthCheckScreen = ({ store }) => {
165
+ useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
166
+ const [downloaded, setDownloaded] = useState(false);
167
+ const [downloading, setDownloading] = useState(false);
168
+ const result = store.session.readinessResult;
169
+ if (downloaded) return /* @__PURE__ */ jsx(SkillsDownloadedScreen, {});
170
+ if (!result) return /* @__PURE__ */ jsx(Box, {
171
+ flexDirection: "column",
172
+ flexGrow: 1,
173
+ alignItems: "center",
174
+ justifyContent: "center",
175
+ children: /* @__PURE__ */ jsx(LoadingBox, { message: "Checking service status..." })
176
+ });
177
+ const blockingKeys = getBlockingServiceKeys(result.health);
178
+ if (blockingKeys.length === 0) return null;
179
+ const isGithubReleasesDown = blockingKeys.includes("githubReleases");
180
+ const canDownloadSkills = result.health.githubReleases.status === "healthy";
181
+ const integration = store.session.integration;
182
+ const title = `Ongoing service disruptions`;
183
+ const docsUrl = store.session.frameworkConfig?.metadata.docsUrl;
184
+ const description = isGithubReleasesDown ? "The Wizard can't download necessary skills from GitHub Releases right now." : "The Wizard may not work reliably while services are affected.";
185
+ const handleDownloadAndExit = async () => {
186
+ if (downloading) return;
187
+ setDownloading(true);
188
+ const menu = await fetchSkillMenu(REMOTE_SKILLS_BASE_URL);
189
+ if (menu) {
190
+ const prefix = `integration-${integration}`;
191
+ const skills = (menu.categories["integration"] ?? []).filter((s) => s.id.startsWith(prefix));
192
+ for (const skill of skills) downloadSkill(skill, store.session.installDir, ".posthog/skills");
193
+ }
194
+ setDownloaded(true);
195
+ };
196
+ return /* @__PURE__ */ jsxs(ModalOverlay, {
197
+ borderColor: "red",
198
+ title,
199
+ width: 72,
200
+ footer: isGithubReleasesDown ? /* @__PURE__ */ jsx(ConfirmationInput, {
201
+ message: "",
202
+ confirmLabel: "",
203
+ cancelLabel: "Exit [Esc]",
204
+ onConfirm: () => void wizardAbort({ message: "Exited due to service outage." }),
205
+ onCancel: () => void wizardAbort({ message: "Exited due to service outage." })
206
+ }) : /* @__PURE__ */ jsx(ConfirmationInput, {
207
+ message: "Continue anyway?",
208
+ confirmLabel: "Continue [Enter]",
209
+ cancelLabel: canDownloadSkills && !isGithubReleasesDown ? downloading ? "Downloading..." : "Download skills & Exit [Esc]" : "Exit [Esc]",
210
+ onConfirm: () => store.dismissOutage(),
211
+ onCancel: canDownloadSkills && !isGithubReleasesDown ? () => void handleDownloadAndExit() : () => void wizardAbort({ message: "Exited due to service outage." })
212
+ }),
213
+ children: [
214
+ /* @__PURE__ */ jsxs(Box, {
215
+ flexDirection: "column",
216
+ marginBottom: 1,
217
+ children: [/* @__PURE__ */ jsx(Box, {
218
+ marginBottom: 1,
219
+ children: /* @__PURE__ */ jsxs(Text, { children: [
220
+ /* @__PURE__ */ jsx(Text, {
221
+ color: "red",
222
+ children: Icons.squareFilled
223
+ }),
224
+ /* @__PURE__ */ jsx(Text, {
225
+ dimColor: true,
226
+ children: " Down "
227
+ }),
228
+ /* @__PURE__ */ jsx(Text, {
229
+ color: "#DC9300",
230
+ children: Icons.squareFilled
231
+ }),
232
+ /* @__PURE__ */ jsx(Text, {
233
+ dimColor: true,
234
+ children: " Degraded"
235
+ })
236
+ ] })
237
+ }), /* @__PURE__ */ jsx(ServiceHealthList, {
238
+ health: result.health,
239
+ filterKeys: blockingKeys,
240
+ showHealthy: false
241
+ })]
242
+ }),
243
+ /* @__PURE__ */ jsx(Text, {
244
+ dimColor: true,
245
+ children: description
246
+ }),
247
+ isGithubReleasesDown && docsUrl && /* @__PURE__ */ jsx(Box, {
248
+ marginTop: 1,
249
+ children: /* @__PURE__ */ jsxs(Text, { children: ["Set up manually: ", /* @__PURE__ */ jsx(Text, {
250
+ color: "cyan",
251
+ children: docsUrl
252
+ })] })
253
+ }),
254
+ canDownloadSkills && !isGithubReleasesDown && /* @__PURE__ */ jsx(Box, {
255
+ marginTop: 1,
256
+ children: /* @__PURE__ */ jsx(Text, { children: "You can still download the PostHog integration skills and continue with another agent." })
257
+ })
258
+ ]
259
+ });
260
+ };
261
+ //#endregion
262
+ //#region src/ui/tui/screens/SettingsOverrideScreen.tsx
263
+ function sourcePath(source) {
264
+ switch (source) {
265
+ case "project": return ".claude/settings.json";
266
+ case "managed": return "/Library/Application Support/ClaudeCode/managed-settings.json";
267
+ default: return source;
268
+ }
269
+ }
270
+ const SettingsOverrideScreen = ({ store }) => {
271
+ useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
272
+ const [feedback, setFeedback] = useState(null);
273
+ const conflicts = store.session.settingsConflicts?.filter((c) => c.writable);
274
+ if (!conflicts || conflicts.length === 0) return null;
275
+ return /* @__PURE__ */ jsxs(ModalOverlay, {
276
+ borderColor: "red",
277
+ title: `${Icons.warning} Settings conflict`,
278
+ width: 64,
279
+ feedback: feedback ? `${Icons.warning} ${feedback}` : null,
280
+ footer: /* @__PURE__ */ jsx(ConfirmationInput, {
281
+ message: "Back up to .wizard-backup and continue?",
282
+ confirmLabel: "Backup & continue [Enter]",
283
+ cancelLabel: "Exit [Esc]",
284
+ onConfirm: () => {
285
+ if (!store.backupAndFixSettingsOverride()) setFeedback("Could not back up the settings file.");
286
+ },
287
+ onCancel: () => process.exit(1)
288
+ }),
289
+ children: [conflicts.map((conflict) => /* @__PURE__ */ jsxs(Box, {
290
+ flexDirection: "column",
291
+ marginBottom: 1,
292
+ children: [/* @__PURE__ */ jsxs(Text, { children: [
293
+ "Your settings file at",
294
+ " ",
295
+ /* @__PURE__ */ jsx(Text, {
296
+ bold: true,
297
+ children: sourcePath(conflict.source)
298
+ }),
299
+ " sets:"
300
+ ] }), /* @__PURE__ */ jsx(Box, {
301
+ flexDirection: "column",
302
+ paddingLeft: 2,
303
+ children: conflict.keys.map((key) => /* @__PURE__ */ jsxs(Text, { children: [
304
+ Icons.bullet,
305
+ " ",
306
+ /* @__PURE__ */ jsx(Text, {
307
+ color: "yellow",
308
+ bold: true,
309
+ children: key
310
+ })
311
+ ] }, key))
312
+ })]
313
+ }, conflict.source)), /* @__PURE__ */ jsx(Text, {
314
+ dimColor: true,
315
+ children: "These settings override credentials and prevent the Wizard from reaching the PostHog LLM Gateway. We can back up the file and continue."
316
+ })]
317
+ });
318
+ };
319
+ //#endregion
320
+ //#region src/ui/tui/screens/ManagedSettingsScreen.tsx
321
+ /**
322
+ * ManagedSettingsScreen — Modal when IT/org-managed settings contain overrides
323
+ * that block the Wizard from reaching the PostHog LLM Gateway.
324
+ *
325
+ * Unlike SettingsOverrideScreen, the wizard cannot back up or modify these files.
326
+ * The user must contact their IT administrator to resolve the conflict.
327
+ */
328
+ function sourceLabel(source) {
329
+ switch (source) {
330
+ case "managed": return "Managed settings (IT/org-managed)";
331
+ case "project": return ".claude/settings.json";
332
+ default: return source;
333
+ }
334
+ }
335
+ const ManagedSettingsScreen = ({ store }) => {
336
+ useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
337
+ const readOnlyConflicts = store.session.settingsConflicts?.filter((c) => !c.writable);
338
+ if (!readOnlyConflicts || readOnlyConflicts.length === 0) return null;
339
+ return /* @__PURE__ */ jsxs(ModalOverlay, {
340
+ borderColor: "red",
341
+ title: `${Icons.warning} Organization settings conflict`,
342
+ width: 68,
343
+ footer: /* @__PURE__ */ jsx(ConfirmationInput, {
344
+ message: "Contact your IT administrator to resolve this.",
345
+ confirmLabel: "",
346
+ cancelLabel: "Exit [Esc]",
347
+ onConfirm: () => process.exit(1),
348
+ onCancel: () => process.exit(1)
349
+ }),
350
+ children: [
351
+ /* @__PURE__ */ jsx(Text, {
352
+ dimColor: true,
353
+ children: "Your organization's managed settings contain overrides that prevent the Wizard from reaching the PostHog LLM Gateway."
354
+ }),
355
+ readOnlyConflicts.map((conflict) => /* @__PURE__ */ jsxs(Box, {
356
+ flexDirection: "column",
357
+ marginTop: 1,
358
+ children: [/* @__PURE__ */ jsx(Text, {
359
+ bold: true,
360
+ children: sourceLabel(conflict.source)
361
+ }), /* @__PURE__ */ jsx(Box, {
362
+ flexDirection: "column",
363
+ paddingLeft: 2,
364
+ children: conflict.keys.map((key) => /* @__PURE__ */ jsxs(Text, { children: [
365
+ Icons.bullet,
366
+ " ",
367
+ /* @__PURE__ */ jsx(Text, {
368
+ color: "yellow",
369
+ bold: true,
370
+ children: key
371
+ })
372
+ ] }, key))
373
+ })]
374
+ }, conflict.source)),
375
+ /* @__PURE__ */ jsx(Box, {
376
+ marginTop: 1,
377
+ children: /* @__PURE__ */ jsx(Text, {
378
+ dimColor: true,
379
+ children: "Try running \"claude auth logout\" or contact your IT administrator to resolve this."
380
+ })
381
+ })
382
+ ]
383
+ });
384
+ };
385
+ //#endregion
386
+ //#region src/ui/tui/screens/PortConflictScreen.tsx
387
+ /**
388
+ * PortConflictScreen — Modal when all OAuth port candidates are occupied.
389
+ *
390
+ * Shows every port the wizard tried and asks the user to free them manually.
391
+ */
392
+ const PortConflictScreen = ({ store }) => {
393
+ useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
394
+ if (!store.session.portConflictProcess) return null;
395
+ return /* @__PURE__ */ jsxs(ModalOverlay, {
396
+ borderColor: "#DC9300",
397
+ title: "OAuth ports in use",
398
+ width: 72,
399
+ footer: /* @__PURE__ */ jsx(ConfirmationInput, {
400
+ message: "Retry after freeing ports?",
401
+ confirmLabel: "Retry [Enter]",
402
+ cancelLabel: "Exit [Esc]",
403
+ onConfirm: () => store.resolvePortConflict(),
404
+ onCancel: () => process.exit(1)
405
+ }),
406
+ children: [
407
+ /* @__PURE__ */ jsx(Text, { children: "The wizard needs a local port for OAuth. We tried these ports which are all in use:" }),
408
+ /* @__PURE__ */ jsx(Box, {
409
+ flexDirection: "column",
410
+ marginY: 1,
411
+ paddingLeft: 2,
412
+ gap: 0,
413
+ children: OAUTH_PORTS.map((port) => /* @__PURE__ */ jsxs(Text, { children: [/* @__PURE__ */ jsx(Text, {
414
+ dimColor: true,
415
+ children: "Port "
416
+ }), /* @__PURE__ */ jsx(Text, {
417
+ bold: true,
418
+ children: port
419
+ })] }, port))
420
+ }),
421
+ /* @__PURE__ */ jsx(Text, {
422
+ dimColor: true,
423
+ children: "Please free one of these ports and retry."
424
+ })
425
+ ]
426
+ });
427
+ };
428
+ //#endregion
429
+ //#region src/ui/tui/screens/IntroScreenLayout.tsx
430
+ /**
431
+ * IntroScreenLayout ��� Shared visual shell for all workflow intro screens.
432
+ *
433
+ * Purely presentational — no store subscription. Parent components own
434
+ * the store subscription and pass derived data as props.
435
+ *
436
+ * Slots:
437
+ * body — free-form content below the title bar (copy, spinners, pickers, etc.)
438
+ * children — between detection rows and menu (extra info, warnings)
439
+ * errorView — replaces the entire body for fatal error states
440
+ */
441
+ const WizardTitle = ({ title }) => /* @__PURE__ */ jsxs(Text, {
442
+ bold: true,
443
+ children: [
444
+ /* @__PURE__ */ jsx(Text, {
445
+ color: "#1D4AFF",
446
+ children: "█"
447
+ }),
448
+ /* @__PURE__ */ jsx(Text, {
449
+ color: "#F54E00",
450
+ children: "█"
451
+ }),
452
+ /* @__PURE__ */ jsx(Text, {
453
+ color: "#F9BD2B",
454
+ children: "█"
455
+ }),
456
+ " ",
457
+ title
458
+ ]
459
+ });
460
+ const IntroScreenLayout = ({ installDir, title = "PostHog Wizard 🦔", showSubtitle = true, body, showDetection = true, detectionRows, children, menuOptions, onSelect, workflowLabel, skillId, errorView }) => {
461
+ const resolvedMenuOptions = menuOptions === void 0 ? [{
462
+ label: "Continue",
463
+ value: "continue"
464
+ }, {
465
+ label: "Cancel",
466
+ value: "cancel"
467
+ }] : menuOptions;
468
+ if (errorView) return /* @__PURE__ */ jsxs(Box, {
469
+ flexDirection: "column",
470
+ flexGrow: 1,
471
+ alignItems: "center",
472
+ justifyContent: "center",
473
+ children: [/* @__PURE__ */ jsx(Box, {
474
+ flexDirection: "column",
475
+ alignItems: "center",
476
+ marginBottom: 1,
477
+ children: /* @__PURE__ */ jsx(WizardTitle, { title })
478
+ }), errorView]
479
+ });
480
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Box, {
481
+ flexDirection: "column",
482
+ flexGrow: 1,
483
+ alignItems: "center",
484
+ justifyContent: "center",
485
+ children: [
486
+ /* @__PURE__ */ jsxs(Box, {
487
+ flexDirection: "column",
488
+ alignItems: "center",
489
+ children: [
490
+ /* @__PURE__ */ jsx(WizardTitle, { title }),
491
+ showSubtitle && /* @__PURE__ */ jsxs(Box, {
492
+ flexDirection: "column",
493
+ alignItems: "center",
494
+ marginTop: 1,
495
+ children: [/* @__PURE__ */ jsx(Text, {
496
+ dimColor: true,
497
+ children: "We'll use AI to analyze your project and complete work."
498
+ }), /* @__PURE__ */ jsx(Text, {
499
+ dimColor: true,
500
+ children: ".env* file contents will not leave your machine."
501
+ })]
502
+ }),
503
+ body && /* @__PURE__ */ jsx(Box, {
504
+ flexDirection: "column",
505
+ alignItems: "center",
506
+ marginTop: 1,
507
+ children: body
508
+ })
509
+ ]
510
+ }),
511
+ children,
512
+ showDetection && /* @__PURE__ */ jsxs(Box, {
513
+ flexDirection: "column",
514
+ marginTop: 1,
515
+ children: [
516
+ /* @__PURE__ */ jsxs(Text, { children: [/* @__PURE__ */ jsxs(Text, { children: [
517
+ "Directory ",
518
+ /* @__PURE__ */ jsx(Text, {
519
+ color: "green",
520
+ children: "✔"
521
+ }),
522
+ " "
523
+ ] }), /* @__PURE__ */ jsxs(Text, { children: ["/", path.basename(installDir)] })] }),
524
+ detectionRows?.map((row) => /* @__PURE__ */ jsxs(Text, { children: [/* @__PURE__ */ jsxs(Text, { children: [
525
+ row.label,
526
+ " ",
527
+ /* @__PURE__ */ jsx(Text, {
528
+ color: "green",
529
+ children: "✔"
530
+ }),
531
+ " "
532
+ ] }), /* @__PURE__ */ jsxs(Text, { children: [row.value, row.suffix ? ` ${row.suffix}` : ""] })] }, row.label)),
533
+ workflowLabel && /* @__PURE__ */ jsxs(Text, { children: [
534
+ "Workflow",
535
+ " ",
536
+ /* @__PURE__ */ jsx(Text, {
537
+ color: "green",
538
+ children: "✔"
539
+ }),
540
+ " ",
541
+ workflowLabel
542
+ ] }),
543
+ workflowLabel === "agent-skill" && skillId && /* @__PURE__ */ jsxs(Text, { children: [
544
+ "Skill",
545
+ " ",
546
+ /* @__PURE__ */ jsx(Text, {
547
+ color: "green",
548
+ children: "✔"
549
+ }),
550
+ " ",
551
+ skillId
552
+ ] })
553
+ ]
554
+ }),
555
+ /* @__PURE__ */ jsx(Box, {
556
+ width: 24,
557
+ children: resolvedMenuOptions && onSelect && /* @__PURE__ */ jsx(Box, {
558
+ justifyContent: "center",
559
+ children: /* @__PURE__ */ jsx(PickerMenu, {
560
+ options: resolvedMenuOptions,
561
+ onSelect: (value) => {
562
+ onSelect(Array.isArray(value) ? value[0] : value);
563
+ }
564
+ }, resolvedMenuOptions.map((o) => o.value).join(","))
565
+ })
566
+ })
567
+ ]
568
+ }) });
569
+ };
570
+ //#endregion
571
+ //#region src/ui/tui/screens/PostHogIntegrationIntroScreen.tsx
572
+ /**
573
+ * PostHogIntegrationIntroScreen — Intro screen for the core PostHog integration.
574
+ *
575
+ * Composes IntroScreenLayout with framework-detection-specific state:
576
+ * 1. Detecting: spinner while detection runs
577
+ * 2. Detection failed: framework picker
578
+ * 3. Unsupported version: upgrade prompt
579
+ * 4. Detection succeeded: continue/change-framework/cancel
580
+ */
581
+ /** Framework picker shown when auto-detection fails. */
582
+ const FrameworkPicker = ({ store, onComplete }) => {
583
+ return /* @__PURE__ */ jsx(PickerMenu, {
584
+ centered: true,
585
+ columns: 2,
586
+ message: "Select your framework",
587
+ options: Object.values(Integration).map((value) => ({
588
+ label: value,
589
+ value
590
+ })),
591
+ onSelect: (value) => {
592
+ const integration = Array.isArray(value) ? value[0] : value;
593
+ import("./registry-s55_iuJT.js").then((n) => n.n).then(({ FRAMEWORK_REGISTRY }) => {
594
+ const config = FRAMEWORK_REGISTRY[integration];
595
+ store.setFrameworkConfig(integration, config);
596
+ store.setDetectedFramework(config.metadata.name);
597
+ onComplete?.();
598
+ });
599
+ }
600
+ });
601
+ };
602
+ const PostHogIntegrationIntroScreen = ({ store }) => {
603
+ useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
604
+ const [pickingFramework, setPickingFramework] = useState(false);
605
+ const [manuallySelected, setManuallySelected] = useState(false);
606
+ const [showingMoreInfo, setShowingMoreInfo] = useState(false);
607
+ const { session } = store;
608
+ const config = session.frameworkConfig;
609
+ const frameworkLabel = session.detectedFrameworkLabel ?? config?.metadata.name;
610
+ const detecting = !session.detectionComplete;
611
+ const needsFrameworkPick = session.detectionComplete && !session.frameworkConfig;
612
+ const unsupported = session.unsupportedVersion;
613
+ const showContinue = session.frameworkConfig !== null && !detecting && !pickingFramework && !showingMoreInfo && !unsupported;
614
+ const title = detecting ? "PostHog Wizard starting up" : "PostHog Wizard 🦔";
615
+ let body = null;
616
+ if (detecting) body = /* @__PURE__ */ jsx(Box, {
617
+ marginY: 1,
618
+ children: /* @__PURE__ */ jsx(LoadingBox, { message: "Detecting project framework..." })
619
+ });
620
+ else if (needsFrameworkPick && !pickingFramework) body = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Box, {
621
+ marginY: 1,
622
+ children: /* @__PURE__ */ jsx(Text, {
623
+ dimColor: true,
624
+ children: "Could not auto-detect your framework."
625
+ })
626
+ }), /* @__PURE__ */ jsx(FrameworkPicker, {
627
+ store,
628
+ onComplete: () => setPickingFramework(false)
629
+ })] });
630
+ else if (pickingFramework) body = /* @__PURE__ */ jsx(FrameworkPicker, {
631
+ store,
632
+ onComplete: () => setPickingFramework(false)
633
+ });
634
+ else if (showingMoreInfo) body = /* @__PURE__ */ jsxs(Box, {
635
+ flexDirection: "column",
636
+ width: 56,
637
+ children: [
638
+ /* @__PURE__ */ jsxs(Text, { children: ["The wizard is an agent that executes PostHog tasks. Its code is open source: ", /* @__PURE__ */ jsx(Text, {
639
+ color: "cyan",
640
+ children: "https://github.com/PostHog/wizard"
641
+ })] }),
642
+ /* @__PURE__ */ jsx(Box, {
643
+ flexDirection: "column",
644
+ marginTop: 1,
645
+ children: /* @__PURE__ */ jsxs(Text, { children: [
646
+ "The",
647
+ " ",
648
+ /* @__PURE__ */ jsx(Text, {
649
+ italic: true,
650
+ color: "cyan",
651
+ children: session.workflowLabel
652
+ }),
653
+ " ",
654
+ "workflow installs the PostHog SDKs, instruments event tracking, and integrates the following dev tools for your application:"
655
+ ] })
656
+ }),
657
+ /* @__PURE__ */ jsxs(Box, {
658
+ flexDirection: "column",
659
+ marginTop: 1,
660
+ paddingLeft: 4,
661
+ children: [
662
+ /* @__PURE__ */ jsxs(Text, { children: [`\u2022`, " Product Analytics"] }),
663
+ /* @__PURE__ */ jsxs(Text, { children: [`\u2022`, " Web Analytics"] }),
664
+ /* @__PURE__ */ jsxs(Text, { children: [`\u2022`, " Session Replay"] }),
665
+ /* @__PURE__ */ jsxs(Text, { children: [`\u2022`, " Error Tracking"] })
666
+ ]
667
+ }),
668
+ /* @__PURE__ */ jsx(Box, {
669
+ flexDirection: "column",
670
+ marginTop: 1,
671
+ children: /* @__PURE__ */ jsxs(Text, { children: [
672
+ "If you prefer your own AI setup, download the skill:",
673
+ " ",
674
+ /* @__PURE__ */ jsxs(Text, {
675
+ color: "cyan",
676
+ children: [CONTEXT_MILL_URL, "/releases"]
677
+ })
678
+ ] })
679
+ })
680
+ ]
681
+ });
682
+ else if (showContinue) body = /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsx(Text, { children: "Let's do two hours of work in eight minutes." }) }) });
683
+ const detectionRows = [];
684
+ if (frameworkLabel) {
685
+ const suffixParts = [];
686
+ if (!manuallySelected) suffixParts.push("(detected)");
687
+ if (config?.metadata.beta) suffixParts.push("[BETA]");
688
+ detectionRows.push({
689
+ label: "Framework",
690
+ value: frameworkLabel,
691
+ suffix: suffixParts.join(" ") || void 0
692
+ });
693
+ }
694
+ let bodyChildren = null;
695
+ if (config?.metadata.preRunNotice) bodyChildren = /* @__PURE__ */ jsx(Text, {
696
+ color: "yellow",
697
+ children: config.metadata.preRunNotice
698
+ });
699
+ if (unsupported) bodyChildren = /* @__PURE__ */ jsxs(Box, {
700
+ flexDirection: "column",
701
+ marginTop: 1,
702
+ children: [
703
+ /* @__PURE__ */ jsxs(Text, {
704
+ color: "#DC9300",
705
+ children: [
706
+ "Version ",
707
+ unsupported.current,
708
+ " is not supported by the wizard. Please upgrade to ",
709
+ unsupported.minimum,
710
+ " or later."
711
+ ]
712
+ }),
713
+ /* @__PURE__ */ jsxs(Text, {
714
+ dimColor: true,
715
+ children: ["Manual setup guide: ", unsupported.docsUrl]
716
+ }),
717
+ /* @__PURE__ */ jsx(Box, {
718
+ marginTop: 1,
719
+ children: /* @__PURE__ */ jsx(Text, {
720
+ dimColor: true,
721
+ children: "Did we get this wrong? You can also select another framework."
722
+ })
723
+ }),
724
+ /* @__PURE__ */ jsx(PickerMenu, {
725
+ options: [{
726
+ label: "Select another framework",
727
+ value: "framework"
728
+ }, {
729
+ label: "Exit",
730
+ value: "exit"
731
+ }],
732
+ onSelect: (value) => {
733
+ if ((Array.isArray(value) ? value[0] : value) === "framework") {
734
+ setPickingFramework(true);
735
+ setManuallySelected(true);
736
+ } else process.exit(0);
737
+ }
738
+ })
739
+ ]
740
+ });
741
+ let menuOptions = null;
742
+ if (showingMoreInfo) menuOptions = [{
743
+ label: "Back",
744
+ value: "back"
745
+ }];
746
+ else if (showContinue) menuOptions = [
747
+ {
748
+ label: "Continue",
749
+ value: "continue"
750
+ },
751
+ {
752
+ label: "Change framework",
753
+ value: "framework"
754
+ },
755
+ {
756
+ label: "More info",
757
+ value: "more-info"
758
+ },
759
+ {
760
+ label: "Cancel",
761
+ value: "cancel"
762
+ }
763
+ ];
764
+ const handleSelect = (value) => {
765
+ if (value === "cancel") process.exit(0);
766
+ else if (value === "framework") {
767
+ setPickingFramework(true);
768
+ setManuallySelected(true);
769
+ } else if (value === "more-info") setShowingMoreInfo(true);
770
+ else if (value === "back") setShowingMoreInfo(false);
771
+ else store.completeSetup();
772
+ };
773
+ return /* @__PURE__ */ jsx(IntroScreenLayout, {
774
+ installDir: session.installDir,
775
+ title,
776
+ showSubtitle: !showingMoreInfo,
777
+ body,
778
+ showDetection: showContinue,
779
+ detectionRows,
780
+ menuOptions: unsupported ? null : menuOptions,
781
+ onSelect: handleSelect,
782
+ workflowLabel: session.workflowLabel,
783
+ skillId: session.skillId,
784
+ children: bodyChildren
785
+ });
786
+ };
787
+ //#endregion
788
+ //#region src/ui/tui/screens/RevenueIntroScreen.tsx
789
+ /**
790
+ * RevenueIntroScreen — Welcome screen for the revenue analytics flow.
791
+ *
792
+ * Composes IntroScreenLayout with SDK-detection-specific state:
793
+ * - Detection succeeded: shows detected PostHog + Stripe SDKs, continue/cancel
794
+ * - Detection failed: shows the error via errorView + exit prompt
795
+ *
796
+ * Reads `frameworkContext.detectError` and `frameworkContext.detectedPosthogSdks`
797
+ * / `detectedStripeSdks` set by detectRevenuePrerequisites().
798
+ */
799
+ const RevenueIntroScreen = ({ store }) => {
800
+ useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
801
+ const [showingMoreInfo, setShowingMoreInfo] = useState(false);
802
+ const { session } = store;
803
+ const detectError = session.frameworkContext.detectError;
804
+ const detectedPosthogSdks = session.frameworkContext.detectedPosthogSdks ?? [];
805
+ const detectedStripeSdks = session.frameworkContext.detectedStripeSdks ?? [];
806
+ const detectedPackagePaths = session.frameworkContext.detectedPackagePaths ?? [];
807
+ const detectionRows = [];
808
+ if (detectedPosthogSdks.length > 0) detectionRows.push({
809
+ label: "PostHog SDK",
810
+ value: detectedPosthogSdks.join(", ")
811
+ });
812
+ if (detectedStripeSdks.length > 0) detectionRows.push({
813
+ label: "Stripe SDK",
814
+ value: detectedStripeSdks.join(", ")
815
+ });
816
+ const body = showingMoreInfo ? /* @__PURE__ */ jsxs(Box, {
817
+ flexDirection: "column",
818
+ width: 56,
819
+ children: [
820
+ /* @__PURE__ */ jsxs(Text, { children: [
821
+ "The wizard is an agent that executes PostHog tasks. Its code is open source: ",
822
+ /* @__PURE__ */ jsx(Text, {
823
+ color: "cyan",
824
+ children: "https://github.com/PostHog/wizard"
825
+ }),
826
+ "."
827
+ ] }),
828
+ /* @__PURE__ */ jsx(Box, {
829
+ flexDirection: "column",
830
+ marginTop: 1,
831
+ children: /* @__PURE__ */ jsxs(Text, { children: [
832
+ "The",
833
+ " ",
834
+ /* @__PURE__ */ jsx(Text, {
835
+ italic: true,
836
+ color: "cyan",
837
+ children: session.workflowLabel
838
+ }),
839
+ " ",
840
+ "workflow links Stripe customers and purchases to PostHog product data and persons. It unlocks insights like:"
841
+ ] })
842
+ }),
843
+ /* @__PURE__ */ jsxs(Box, {
844
+ flexDirection: "column",
845
+ marginTop: 1,
846
+ paddingLeft: 4,
847
+ children: [
848
+ /* @__PURE__ */ jsxs(Text, { children: ["•", " Revenue per user"] }),
849
+ /* @__PURE__ */ jsxs(Text, { children: ["•", " Lifetime value"] }),
850
+ /* @__PURE__ */ jsxs(Text, { children: ["•", " MRR / churn tracking"] })
851
+ ]
852
+ })
853
+ ]
854
+ }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(Box, {
855
+ flexDirection: "column",
856
+ alignItems: "center",
857
+ children: [/* @__PURE__ */ jsx(Text, { children: "Let's create revenue analytics with Stripe and PostHog." }), /* @__PURE__ */ jsx(Box, {
858
+ flexDirection: "column",
859
+ marginTop: 1,
860
+ children: /* @__PURE__ */ jsx(Text, { children: "Link purchases to product data." })
861
+ })]
862
+ }), detectedPackagePaths.length > 1 && /* @__PURE__ */ jsxs(Box, {
863
+ flexDirection: "column",
864
+ marginTop: 1,
865
+ children: [/* @__PURE__ */ jsxs(Text, {
866
+ dimColor: true,
867
+ children: [
868
+ "Found in ",
869
+ detectedPackagePaths.length,
870
+ " packages:"
871
+ ]
872
+ }), detectedPackagePaths.map((p) => /* @__PURE__ */ jsxs(Text, {
873
+ dimColor: true,
874
+ children: [
875
+ " ",
876
+ "•",
877
+ " ",
878
+ p
879
+ ]
880
+ }, p))]
881
+ })] });
882
+ const errorView = detectError ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(Box, {
883
+ flexDirection: "column",
884
+ marginBottom: 1,
885
+ children: [/* @__PURE__ */ jsxs(Text, {
886
+ color: "red",
887
+ bold: true,
888
+ children: ["✘", " Cannot set up revenue analytics"]
889
+ }), /* @__PURE__ */ jsx(Box, {
890
+ marginTop: 1,
891
+ flexDirection: "column",
892
+ children: /* @__PURE__ */ jsx(DetectErrorBody, { error: detectError })
893
+ })]
894
+ }), /* @__PURE__ */ jsx(PickerMenu, {
895
+ options: [{
896
+ label: "Exit",
897
+ value: "exit"
898
+ }],
899
+ onSelect: () => process.exit(1)
900
+ })] }) : void 0;
901
+ const menuOptions = showingMoreInfo ? [{
902
+ label: "Back",
903
+ value: "back"
904
+ }] : [
905
+ {
906
+ label: "Continue",
907
+ value: "continue"
908
+ },
909
+ {
910
+ label: "More info",
911
+ value: "more-info"
912
+ },
913
+ {
914
+ label: "Cancel",
915
+ value: "cancel"
916
+ }
917
+ ];
918
+ return /* @__PURE__ */ jsx(IntroScreenLayout, {
919
+ installDir: session.installDir,
920
+ showSubtitle: !showingMoreInfo,
921
+ body,
922
+ showDetection: !showingMoreInfo,
923
+ detectionRows,
924
+ errorView,
925
+ workflowLabel: session.workflowLabel,
926
+ skillId: session.skillId,
927
+ menuOptions,
928
+ onSelect: (value) => {
929
+ if (value === "cancel") process.exit(0);
930
+ else if (value === "more-info") setShowingMoreInfo(true);
931
+ else if (value === "back") setShowingMoreInfo(false);
932
+ else store.completeSetup();
933
+ }
934
+ });
935
+ };
936
+ const DetectErrorBody = ({ error }) => {
937
+ switch (error.kind) {
938
+ case "bad-directory": {
939
+ const reasonText = {
940
+ missing: "does not exist",
941
+ "not-dir": "is not a directory",
942
+ unreadable: "could not be accessed"
943
+ }[error.reason];
944
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(Text, { children: [
945
+ "This path ",
946
+ reasonText,
947
+ ":"
948
+ ] }), /* @__PURE__ */ jsxs(Text, {
949
+ dimColor: true,
950
+ children: [" ", error.path]
951
+ })] });
952
+ }
953
+ case "no-package-json": return /* @__PURE__ */ jsxs(Fragment, { children: [
954
+ /* @__PURE__ */ jsx(Text, { children: "No package.json found in this directory." }),
955
+ /* @__PURE__ */ jsx(Text, {
956
+ dimColor: true,
957
+ children: "Revenue analytics currently supports Node.js / TypeScript projects."
958
+ }),
959
+ /* @__PURE__ */ jsx(Text, {
960
+ dimColor: true,
961
+ children: "Run this command from your project root."
962
+ })
963
+ ] });
964
+ case "no-sdks": return /* @__PURE__ */ jsxs(Fragment, { children: [
965
+ /* @__PURE__ */ jsxs(Text, { children: [
966
+ "Neither PostHog nor Stripe SDKs detected (scanned",
967
+ " ",
968
+ error.scannedCount,
969
+ " package.json file",
970
+ error.scannedCount === 1 ? "" : "s",
971
+ ")."
972
+ ] }),
973
+ /* @__PURE__ */ jsxs(Box, {
974
+ marginTop: 1,
975
+ flexDirection: "column",
976
+ children: [
977
+ /* @__PURE__ */ jsx(Text, { children: "Revenue analytics requires:" }),
978
+ /* @__PURE__ */ jsxs(Text, {
979
+ dimColor: true,
980
+ children: [
981
+ " •",
982
+ " A PostHog SDK (",
983
+ POSTHOG_SDKS.slice(0, 3).join(", "),
984
+ ", …)"
985
+ ]
986
+ }),
987
+ /* @__PURE__ */ jsxs(Text, {
988
+ dimColor: true,
989
+ children: [
990
+ " •",
991
+ " A Stripe SDK (",
992
+ STRIPE_SDKS.join(", "),
993
+ ")"
994
+ ]
995
+ })
996
+ ]
997
+ }),
998
+ /* @__PURE__ */ jsx(Box, {
999
+ marginTop: 1,
1000
+ children: /* @__PURE__ */ jsxs(Text, {
1001
+ dimColor: true,
1002
+ children: [
1003
+ "Install Stripe and run ",
1004
+ /* @__PURE__ */ jsx(Text, {
1005
+ bold: true,
1006
+ children: "npx @posthog/wizard"
1007
+ }),
1008
+ " to set up PostHog."
1009
+ ]
1010
+ })
1011
+ })
1012
+ ] });
1013
+ case "missing-posthog": return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(Text, { children: [
1014
+ "Found Stripe (",
1015
+ error.foundStripe.join(", "),
1016
+ ") but no PostHog SDK."
1017
+ ] }), /* @__PURE__ */ jsx(Box, {
1018
+ marginTop: 1,
1019
+ children: /* @__PURE__ */ jsxs(Text, {
1020
+ dimColor: true,
1021
+ children: [
1022
+ "Run ",
1023
+ /* @__PURE__ */ jsx(Text, {
1024
+ bold: true,
1025
+ children: "npx @posthog/wizard"
1026
+ }),
1027
+ " first to set up the base PostHog integration."
1028
+ ]
1029
+ })
1030
+ })] });
1031
+ case "missing-stripe": return /* @__PURE__ */ jsxs(Fragment, { children: [
1032
+ /* @__PURE__ */ jsxs(Text, { children: [
1033
+ "Found PostHog (",
1034
+ error.foundPosthog.join(", "),
1035
+ ") but no Stripe SDK."
1036
+ ] }),
1037
+ /* @__PURE__ */ jsx(Text, {
1038
+ dimColor: true,
1039
+ children: "Revenue analytics currently supports Stripe only."
1040
+ }),
1041
+ /* @__PURE__ */ jsxs(Box, {
1042
+ marginTop: 1,
1043
+ flexDirection: "column",
1044
+ children: [/* @__PURE__ */ jsx(Text, {
1045
+ dimColor: true,
1046
+ children: "Install one of:"
1047
+ }), STRIPE_SDKS.map((sdk) => /* @__PURE__ */ jsxs(Text, {
1048
+ dimColor: true,
1049
+ children: [
1050
+ " •",
1051
+ " ",
1052
+ sdk
1053
+ ]
1054
+ }, sdk))]
1055
+ })
1056
+ ] });
1057
+ }
1058
+ };
1059
+ //#endregion
1060
+ //#region src/ui/tui/screens/AgentSkillIntroScreen.tsx
1061
+ /**
1062
+ * AgentSkillIntroScreen — Intro screen for the generic agent-skill workflow.
1063
+ *
1064
+ * Main menu: one-liner body, detection rows, continue/cancel.
1065
+ * More info: skill name, download URL fetched from the skill menu.
1066
+ */
1067
+ const AgentSkillIntroScreen = ({ store }) => {
1068
+ useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
1069
+ const [showingMoreInfo, setShowingMoreInfo] = useState(false);
1070
+ const [skillEntry, setSkillEntry] = useState(null);
1071
+ const [fetchFailed, setFetchFailed] = useState(false);
1072
+ const { session } = store;
1073
+ const skillId = session.skillId ?? "unknown";
1074
+ const isMainMenu = !showingMoreInfo;
1075
+ useEffect(() => {
1076
+ if (!showingMoreInfo || skillEntry || fetchFailed) return;
1077
+ fetchSkillMenu(getSkillsBaseUrl(session.localMcp)).then((menu) => {
1078
+ if (!menu) {
1079
+ setFetchFailed(true);
1080
+ return;
1081
+ }
1082
+ const match = Object.values(menu.categories).flat().find((s) => s.id === skillId);
1083
+ if (match) setSkillEntry(match);
1084
+ else setFetchFailed(true);
1085
+ });
1086
+ }, [
1087
+ showingMoreInfo,
1088
+ skillEntry,
1089
+ fetchFailed,
1090
+ skillId,
1091
+ session.localMcp
1092
+ ]);
1093
+ let body;
1094
+ if (showingMoreInfo) body = /* @__PURE__ */ jsxs(Box, {
1095
+ flexDirection: "column",
1096
+ width: 56,
1097
+ children: [
1098
+ /* @__PURE__ */ jsx(Box, {
1099
+ flexDirection: "column",
1100
+ marginBottom: 1,
1101
+ children: /* @__PURE__ */ jsxs(Text, { children: ["The wizard is an agent that executes PostHog tasks. Its code is open source: ", /* @__PURE__ */ jsx(Text, {
1102
+ color: "cyan",
1103
+ children: "https://github.com/PostHog/wizard"
1104
+ })] })
1105
+ }),
1106
+ /* @__PURE__ */ jsxs(Text, { children: [
1107
+ "Skill:",
1108
+ " ",
1109
+ /* @__PURE__ */ jsx(Text, {
1110
+ italic: true,
1111
+ color: "cyan",
1112
+ children: skillEntry?.id ?? skillId
1113
+ })
1114
+ ] }),
1115
+ /* @__PURE__ */ jsxs(Text, { children: [
1116
+ "URL:",
1117
+ " ",
1118
+ /* @__PURE__ */ jsx(Text, {
1119
+ color: "cyan",
1120
+ children: skillEntry?.downloadUrl ?? (fetchFailed ? "unavailable" : "Loading...")
1121
+ })
1122
+ ] }),
1123
+ /* @__PURE__ */ jsx(Box, {
1124
+ marginTop: 1,
1125
+ children: /* @__PURE__ */ jsx(Text, {
1126
+ dimColor: true,
1127
+ children: skillEntry?.name ?? (fetchFailed ? skillId : "Loading...")
1128
+ })
1129
+ })
1130
+ ]
1131
+ });
1132
+ else body = /* @__PURE__ */ jsxs(Text, { children: [
1133
+ "Let's run the",
1134
+ " ",
1135
+ /* @__PURE__ */ jsx(Text, {
1136
+ italic: true,
1137
+ color: "cyan",
1138
+ children: skillId
1139
+ }),
1140
+ " ",
1141
+ "skill."
1142
+ ] });
1143
+ const menuOptions = showingMoreInfo ? [{
1144
+ label: "Back",
1145
+ value: "back"
1146
+ }] : [
1147
+ {
1148
+ label: "Continue",
1149
+ value: "continue"
1150
+ },
1151
+ {
1152
+ label: "More info",
1153
+ value: "more-info"
1154
+ },
1155
+ {
1156
+ label: "Cancel",
1157
+ value: "cancel"
1158
+ }
1159
+ ];
1160
+ const handleSelect = (value) => {
1161
+ if (value === "cancel") process.exit(0);
1162
+ else if (value === "more-info") setShowingMoreInfo(true);
1163
+ else if (value === "back") setShowingMoreInfo(false);
1164
+ else store.completeSetup();
1165
+ };
1166
+ return /* @__PURE__ */ jsx(IntroScreenLayout, {
1167
+ installDir: session.installDir,
1168
+ showSubtitle: !showingMoreInfo,
1169
+ body,
1170
+ showDetection: isMainMenu,
1171
+ workflowLabel: session.workflowLabel,
1172
+ skillId: session.skillId,
1173
+ menuOptions,
1174
+ onSelect: handleSelect
1175
+ });
1176
+ };
1177
+ //#endregion
1178
+ //#region src/ui/tui/screens/SetupScreen.tsx
1179
+ /**
1180
+ * SetupScreen — Generic framework disambiguation.
1181
+ *
1182
+ * Iterates unresolved setup questions from the FrameworkConfig
1183
+ * and renders a PickerMenu for each. If all questions are auto-resolved,
1184
+ * this screen is skipped entirely (the router skips it via its show() predicate).
1185
+ */
1186
+ const SetupScreen = ({ store }) => {
1187
+ useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
1188
+ const config = store.session.frameworkConfig;
1189
+ const questions = config?.metadata.setup?.questions ?? [];
1190
+ const [currentIndex, setCurrentIndex] = useState(0);
1191
+ const [resolving, setResolving] = useState(true);
1192
+ useEffect(() => {
1193
+ (async () => {
1194
+ for (const q of questions) {
1195
+ if (q.key in store.session.frameworkContext) continue;
1196
+ try {
1197
+ const detected = await q.detect({ installDir: store.session.installDir });
1198
+ if (detected !== null) store.setFrameworkContext(q.key, detected);
1199
+ } catch {}
1200
+ }
1201
+ setResolving(false);
1202
+ })();
1203
+ }, []);
1204
+ if (resolving) return /* @__PURE__ */ jsx(Box, {
1205
+ flexDirection: "column",
1206
+ flexGrow: 1,
1207
+ children: /* @__PURE__ */ jsx(Text, {
1208
+ dimColor: true,
1209
+ children: "Detecting project configuration..."
1210
+ })
1211
+ });
1212
+ const unresolved = questions.filter((q) => !(q.key in store.session.frameworkContext));
1213
+ if (unresolved.length === 0) return null;
1214
+ const question = unresolved[currentIndex] ?? unresolved[0];
1215
+ if (!question) return null;
1216
+ return /* @__PURE__ */ jsxs(Box, {
1217
+ flexDirection: "column",
1218
+ flexGrow: 1,
1219
+ children: [/* @__PURE__ */ jsxs(Box, {
1220
+ flexDirection: "column",
1221
+ marginBottom: 1,
1222
+ children: [/* @__PURE__ */ jsx(Text, {
1223
+ bold: true,
1224
+ color: Colors.accent,
1225
+ children: "Project Setup"
1226
+ }), config && /* @__PURE__ */ jsxs(Text, {
1227
+ dimColor: true,
1228
+ children: [
1229
+ "Configuring ",
1230
+ config.metadata.name,
1231
+ " integration"
1232
+ ]
1233
+ })]
1234
+ }), /* @__PURE__ */ jsx(PickerMenu, {
1235
+ message: question.message,
1236
+ options: question.options.map((o) => ({
1237
+ label: o.label,
1238
+ value: o.value,
1239
+ hint: o.hint
1240
+ })),
1241
+ onSelect: (value) => {
1242
+ const selected = Array.isArray(value) ? value[0] : value;
1243
+ store.setFrameworkContext(question.key, selected);
1244
+ if (unresolved.filter((q) => q.key !== question.key && !(q.key in store.session.frameworkContext)).length > 0) setCurrentIndex((i) => i + 1);
1245
+ }
1246
+ })]
1247
+ });
1248
+ };
1249
+ //#endregion
1250
+ //#region src/ui/tui/screens/AuthScreen.tsx
1251
+ /**
1252
+ * AuthScreen — Shown while waiting for OAuth authentication.
1253
+ *
1254
+ * Displays framework detection results, beta/disclosure notices,
1255
+ * a waiting spinner, and the login URL when available.
1256
+ * The router resolves past this screen once session.credentials is set.
1257
+ */
1258
+ const AuthScreen = ({ store }) => {
1259
+ useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
1260
+ const { session } = store;
1261
+ const config = session.frameworkConfig;
1262
+ const frameworkLabel = session.detectedFrameworkLabel ?? config?.metadata.name;
1263
+ return /* @__PURE__ */ jsxs(Box, {
1264
+ flexDirection: "column",
1265
+ flexGrow: 1,
1266
+ children: [
1267
+ /* @__PURE__ */ jsxs(Box, {
1268
+ flexDirection: "column",
1269
+ marginBottom: 1,
1270
+ children: [
1271
+ /* @__PURE__ */ jsx(Text, {
1272
+ bold: true,
1273
+ color: Colors.accent,
1274
+ children: "PostHog Setup Wizard"
1275
+ }),
1276
+ frameworkLabel && /* @__PURE__ */ jsxs(Text, { children: [/* @__PURE__ */ jsxs(Text, {
1277
+ color: "green",
1278
+ children: ["✔", " "]
1279
+ }), /* @__PURE__ */ jsxs(Text, { children: ["Framework: ", frameworkLabel] })] }),
1280
+ config?.metadata.beta && /* @__PURE__ */ jsxs(Text, {
1281
+ color: "yellow",
1282
+ children: [
1283
+ "[BETA] The ",
1284
+ config.metadata.name,
1285
+ " wizard is in beta. Questions or feedback? Email wizard@posthog.com"
1286
+ ]
1287
+ }),
1288
+ config?.metadata.preRunNotice && /* @__PURE__ */ jsx(Text, {
1289
+ color: "yellow",
1290
+ children: config.metadata.preRunNotice
1291
+ })
1292
+ ]
1293
+ }),
1294
+ /* @__PURE__ */ jsx(LoadingBox, { message: "Waiting for authentication..." }),
1295
+ session.loginUrl && /* @__PURE__ */ jsxs(Box, {
1296
+ marginTop: 1,
1297
+ flexDirection: "column",
1298
+ children: [/* @__PURE__ */ jsx(Text, {
1299
+ dimColor: true,
1300
+ children: "If the browser didn't open, copy and paste this URL:"
1301
+ }), /* @__PURE__ */ jsx(Text, {
1302
+ color: "cyan",
1303
+ children: session.loginUrl
1304
+ })]
1305
+ })
1306
+ ]
1307
+ });
1308
+ };
1309
+ //#endregion
1310
+ //#region src/ui/tui/screens/RunScreen.tsx
1311
+ /**
1312
+ * RunScreen — Tabbed observational view of the agent run.
1313
+ *
1314
+ * Two tabs:
1315
+ * - Status: SplitView with LearnCard (left) + ProgressList (right)
1316
+ * - Logs: LogViewer tailing the wizard log file
1317
+ *
1318
+ * No prompts — the agent runs headlessly.
1319
+ * LearnCard shows animated educational content and reacts to discovered features.
1320
+ */
1321
+ const LOG_FILE = "/tmp/posthog-wizard.log";
1322
+ const RunScreen = ({ store }) => {
1323
+ useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
1324
+ const [columns] = useStdoutDimensions();
1325
+ const progressItems = store.tasks.map((t) => ({
1326
+ label: t.label,
1327
+ activeForm: t.activeForm,
1328
+ status: t.status
1329
+ }));
1330
+ const queue = store.session.additionalFeatureQueue;
1331
+ if (progressItems.length > 0 && progressItems.every((t) => t.status === "completed") && queue.length > 0) {
1332
+ const nextLabel = ADDITIONAL_FEATURE_LABELS[queue[0]];
1333
+ progressItems.push({
1334
+ label: `Set up ${nextLabel}`,
1335
+ activeForm: `Setting up ${nextLabel}...`,
1336
+ status: "in_progress"
1337
+ });
1338
+ }
1339
+ const statuses = store.statusMessages.length > 0 ? store.statusMessages : void 0;
1340
+ const leftPane = store.learnCardComplete ? /* @__PURE__ */ jsx(TipsCard, { store }) : /* @__PURE__ */ jsx(LearnCard, {
1341
+ store,
1342
+ onComplete: () => store.setLearnCardComplete()
1343
+ });
1344
+ const progressList = /* @__PURE__ */ jsx(ProgressList, {
1345
+ items: progressItems,
1346
+ title: "Tasks"
1347
+ });
1348
+ return /* @__PURE__ */ jsx(TabContainer, {
1349
+ tabs: [
1350
+ {
1351
+ id: "status",
1352
+ label: "Status",
1353
+ component: columns < 80 ? /* @__PURE__ */ jsx(Box, {
1354
+ flexDirection: "column",
1355
+ flexGrow: 1,
1356
+ children: progressList
1357
+ }) : /* @__PURE__ */ jsx(SplitView, {
1358
+ left: leftPane,
1359
+ right: progressList
1360
+ })
1361
+ },
1362
+ ...store.eventPlan.length > 0 ? [{
1363
+ id: "events",
1364
+ label: "Event plan",
1365
+ component: /* @__PURE__ */ jsx(EventPlanViewer, { events: store.eventPlan })
1366
+ }] : [],
1367
+ {
1368
+ id: "logs",
1369
+ label: "Tail logs",
1370
+ component: /* @__PURE__ */ jsx(LogViewer, { filePath: LOG_FILE })
1371
+ },
1372
+ {
1373
+ id: "hn",
1374
+ label: "HN",
1375
+ component: /* @__PURE__ */ jsx(HNViewer, {})
1376
+ }
1377
+ ],
1378
+ statusMessage: statuses,
1379
+ expandableStatus: true,
1380
+ store
1381
+ });
1382
+ };
1383
+ //#endregion
1384
+ //#region src/ui/tui/screens/KeepSkillsScreen.tsx
1385
+ /**
1386
+ * KeepSkillsScreen — Ask whether to keep installed skills in .claude/skills/.
1387
+ *
1388
+ * Shown after the outro summary so users see the agent's output first,
1389
+ * then decide whether to keep the skills that powered it.
1390
+ *
1391
+ * When done, calls store.setSkillsComplete() and exits the process.
1392
+ */
1393
+ const KeepSkillsScreen = ({ store }) => {
1394
+ useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
1395
+ const [phase, setPhase] = useState("loading");
1396
+ const [skills, setSkills] = useState([]);
1397
+ const skillsDir = join(store.session.installDir, ".claude", "skills");
1398
+ useEffect(() => {
1399
+ (async () => {
1400
+ try {
1401
+ const dirs = (await readdir(skillsDir, { withFileTypes: true })).filter((e) => e.isDirectory());
1402
+ const result = [];
1403
+ for (const dir of dirs) {
1404
+ const children = await readdir(join(skillsDir, dir.name));
1405
+ result.push({
1406
+ name: dir.name,
1407
+ children
1408
+ });
1409
+ }
1410
+ if (result.length === 0) {
1411
+ store.setSkillsComplete(true);
1412
+ process.exit(0);
1413
+ }
1414
+ setSkills(result);
1415
+ setPhase("ask");
1416
+ } catch {
1417
+ store.setSkillsComplete(true);
1418
+ process.exit(0);
1419
+ }
1420
+ })();
1421
+ }, []);
1422
+ const handleKeep = () => {
1423
+ store.setSkillsComplete(true);
1424
+ process.exit(0);
1425
+ };
1426
+ const handleRemove = async () => {
1427
+ setPhase("removing");
1428
+ try {
1429
+ await rm(skillsDir, {
1430
+ recursive: true,
1431
+ force: true
1432
+ });
1433
+ } catch {}
1434
+ setPhase("done");
1435
+ setTimeout(() => {
1436
+ store.setSkillsComplete(false);
1437
+ process.exit(0);
1438
+ }, 600);
1439
+ };
1440
+ return /* @__PURE__ */ jsxs(Box, {
1441
+ flexDirection: "column",
1442
+ flexGrow: 1,
1443
+ children: [/* @__PURE__ */ jsx(Text, {
1444
+ bold: true,
1445
+ color: Colors.accent,
1446
+ children: "Keep the skills?"
1447
+ }), /* @__PURE__ */ jsxs(Box, {
1448
+ marginTop: 1,
1449
+ flexDirection: "column",
1450
+ children: [
1451
+ phase === "loading" && /* @__PURE__ */ jsx(Text, {
1452
+ dimColor: true,
1453
+ children: "Checking installed skills..."
1454
+ }),
1455
+ phase === "ask" && /* @__PURE__ */ jsxs(Fragment, { children: [
1456
+ /* @__PURE__ */ jsx(Text, {
1457
+ dimColor: true,
1458
+ children: "The wizard installed open-source skills that help AI coding agents integrate PostHog into your project:"
1459
+ }),
1460
+ /* @__PURE__ */ jsxs(Box, {
1461
+ marginTop: 1,
1462
+ flexDirection: "column",
1463
+ marginLeft: 2,
1464
+ children: [
1465
+ /* @__PURE__ */ jsx(Text, {
1466
+ dimColor: true,
1467
+ children: ".claude/"
1468
+ }),
1469
+ /* @__PURE__ */ jsx(Text, {
1470
+ dimColor: true,
1471
+ children: " skills/"
1472
+ }),
1473
+ skills.map((skill) => /* @__PURE__ */ jsxs(Box, {
1474
+ flexDirection: "column",
1475
+ children: [/* @__PURE__ */ jsxs(Text, {
1476
+ dimColor: true,
1477
+ children: [
1478
+ " ",
1479
+ skill.name,
1480
+ "/"
1481
+ ]
1482
+ }), skill.children.map((child) => /* @__PURE__ */ jsxs(Text, {
1483
+ dimColor: true,
1484
+ children: [" ", child]
1485
+ }, child))]
1486
+ }, skill.name))
1487
+ ]
1488
+ }),
1489
+ /* @__PURE__ */ jsx(Box, {
1490
+ marginTop: 1,
1491
+ children: /* @__PURE__ */ jsxs(Text, {
1492
+ dimColor: true,
1493
+ children: ["Source: ", /* @__PURE__ */ jsx(Text, {
1494
+ color: "cyan",
1495
+ children: "https://github.com/PostHog/context-mill"
1496
+ })]
1497
+ })
1498
+ }),
1499
+ /* @__PURE__ */ jsx(Box, {
1500
+ marginTop: 1,
1501
+ children: /* @__PURE__ */ jsx(ConfirmationInput, {
1502
+ message: "Keep the installed skills?",
1503
+ confirmLabel: "Keep [Enter]",
1504
+ cancelLabel: "Remove [Esc]",
1505
+ onConfirm: handleKeep,
1506
+ onCancel: () => void handleRemove()
1507
+ })
1508
+ })
1509
+ ] }),
1510
+ phase === "removing" && /* @__PURE__ */ jsx(Text, {
1511
+ dimColor: true,
1512
+ children: "Removing skills..."
1513
+ }),
1514
+ phase === "done" && /* @__PURE__ */ jsx(Text, {
1515
+ dimColor: true,
1516
+ children: "Skills removed."
1517
+ })
1518
+ ]
1519
+ })]
1520
+ });
1521
+ };
1522
+ //#endregion
1523
+ //#region src/ui/tui/screens/OutroScreen.tsx
1524
+ /**
1525
+ * OutroScreen — Summary after the agent run.
1526
+ * Reads store.session.outroData to render success, error, or cancel view.
1527
+ * Keeps the process alive until the user presses a key to exit.
1528
+ */
1529
+ const OutroScreen = ({ store }) => {
1530
+ useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
1531
+ useInput(() => {
1532
+ store.setOutroDismissed();
1533
+ });
1534
+ const outroData = store.session.outroData;
1535
+ if (!outroData) return /* @__PURE__ */ jsx(Box, {
1536
+ flexDirection: "column",
1537
+ flexGrow: 1,
1538
+ children: /* @__PURE__ */ jsx(Text, {
1539
+ dimColor: true,
1540
+ children: "Finishing up..."
1541
+ })
1542
+ });
1543
+ return /* @__PURE__ */ jsxs(Box, {
1544
+ flexDirection: "column",
1545
+ flexGrow: 1,
1546
+ children: [
1547
+ outroData.kind === "success" && /* @__PURE__ */ jsxs(Box, {
1548
+ flexDirection: "column",
1549
+ children: [
1550
+ /* @__PURE__ */ jsxs(Text, {
1551
+ color: "green",
1552
+ bold: true,
1553
+ children: [
1554
+ "✔",
1555
+ " ",
1556
+ outroData.message || "Done!"
1557
+ ]
1558
+ }),
1559
+ outroData.reportFile && /* @__PURE__ */ jsx(Box, {
1560
+ marginTop: 1,
1561
+ children: /* @__PURE__ */ jsxs(Text, { children: [
1562
+ "Check ",
1563
+ /* @__PURE__ */ jsxs(Text, {
1564
+ bold: true,
1565
+ children: ["./", outroData.reportFile]
1566
+ }),
1567
+ " for details"
1568
+ ] })
1569
+ }),
1570
+ outroData.changes && outroData.changes.length > 0 && /* @__PURE__ */ jsxs(Box, {
1571
+ flexDirection: "column",
1572
+ marginTop: 1,
1573
+ children: [/* @__PURE__ */ jsx(Text, {
1574
+ color: "cyan",
1575
+ bold: true,
1576
+ children: "What the agent did:"
1577
+ }), outroData.changes.map((change, i) => /* @__PURE__ */ jsxs(Text, { children: [
1578
+ "•",
1579
+ " ",
1580
+ change
1581
+ ] }, i))]
1582
+ }),
1583
+ store.eventPlan.length > 0 && /* @__PURE__ */ jsxs(Box, {
1584
+ flexDirection: "column",
1585
+ marginTop: 1,
1586
+ children: [/* @__PURE__ */ jsx(Text, {
1587
+ color: "cyan",
1588
+ bold: true,
1589
+ children: "Events added:"
1590
+ }), store.eventPlan.map((event) => /* @__PURE__ */ jsxs(Text, { children: [
1591
+ "•",
1592
+ " ",
1593
+ /* @__PURE__ */ jsx(Text, {
1594
+ bold: true,
1595
+ children: event.name
1596
+ }),
1597
+ /* @__PURE__ */ jsxs(Text, {
1598
+ dimColor: true,
1599
+ children: [" ", event.description]
1600
+ })
1601
+ ] }, event.name))]
1602
+ }),
1603
+ outroData.docsUrl && /* @__PURE__ */ jsx(Box, {
1604
+ marginTop: 1,
1605
+ children: /* @__PURE__ */ jsxs(Text, { children: ["Learn more: ", /* @__PURE__ */ jsx(Text, {
1606
+ color: "cyan",
1607
+ children: outroData.docsUrl
1608
+ })] })
1609
+ }),
1610
+ outroData.continueUrl && /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsxs(Text, { children: [
1611
+ "Continue onboarding:",
1612
+ " ",
1613
+ /* @__PURE__ */ jsx(Text, {
1614
+ color: "cyan",
1615
+ children: outroData.continueUrl
1616
+ })
1617
+ ] }) }),
1618
+ /* @__PURE__ */ jsx(Box, {
1619
+ marginTop: 1,
1620
+ children: /* @__PURE__ */ jsx(Text, {
1621
+ dimColor: true,
1622
+ children: "Note: This wizard uses an LLM agent to analyze and modify your project. Please review the changes made."
1623
+ })
1624
+ }),
1625
+ /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsx(Text, {
1626
+ dimColor: true,
1627
+ children: "How did this work for you? Drop us a line: wizard@posthog.com"
1628
+ }) })
1629
+ ]
1630
+ }),
1631
+ outroData.kind === "error" && /* @__PURE__ */ jsxs(Box, {
1632
+ flexDirection: "column",
1633
+ children: [
1634
+ /* @__PURE__ */ jsxs(Text, {
1635
+ color: "red",
1636
+ bold: true,
1637
+ children: [
1638
+ "✘",
1639
+ " ",
1640
+ outroData.message || "An error occurred"
1641
+ ]
1642
+ }),
1643
+ outroData.body && /* @__PURE__ */ jsx(Box, {
1644
+ marginTop: 1,
1645
+ children: /* @__PURE__ */ jsx(Text, {
1646
+ dimColor: true,
1647
+ children: outroData.body
1648
+ })
1649
+ }),
1650
+ outroData.docsUrl && /* @__PURE__ */ jsx(Box, {
1651
+ marginTop: 1,
1652
+ children: /* @__PURE__ */ jsxs(Text, { children: ["Docs: ", /* @__PURE__ */ jsx(Text, {
1653
+ color: "cyan",
1654
+ children: outroData.docsUrl
1655
+ })] })
1656
+ })
1657
+ ]
1658
+ }),
1659
+ outroData.kind === "cancel" && /* @__PURE__ */ jsx(Box, {
1660
+ flexDirection: "column",
1661
+ children: /* @__PURE__ */ jsxs(Text, {
1662
+ color: "yellow",
1663
+ children: [
1664
+ "■",
1665
+ " ",
1666
+ outroData.message || "Cancelled"
1667
+ ]
1668
+ })
1669
+ }),
1670
+ /* @__PURE__ */ jsx(Box, {
1671
+ marginTop: 1,
1672
+ children: /* @__PURE__ */ jsx(Text, {
1673
+ color: Colors.muted,
1674
+ children: "Press any key to continue"
1675
+ })
1676
+ })
1677
+ ]
1678
+ });
1679
+ };
1680
+ //#endregion
1681
+ //#region src/ui/tui/screens/ExitScreen.tsx
1682
+ /**
1683
+ * ExitScreen — Final step in every workflow.
1684
+ *
1685
+ * Renders nothing. Immediately exits the process.
1686
+ * The cleanup handler in start-tui.ts handles the exit summary line.
1687
+ */
1688
+ const ExitScreen = () => {
1689
+ useEffect(() => {
1690
+ process.exit(0);
1691
+ }, []);
1692
+ return null;
1693
+ };
1694
+ //#endregion
1695
+ //#region src/ui/tui/screens/AuthErrorScreen.tsx
1696
+ /**
1697
+ * AuthErrorScreen — Shown when the Anthropic API returns a 401.
1698
+ *
1699
+ * Claude Code's own auth can conflict with the wizard's OAuth token.
1700
+ * This overlay tells the user to log out of Claude Code and retry.
1701
+ */
1702
+ const AuthErrorScreen = () => {
1703
+ useInput(() => {
1704
+ process.exit(1);
1705
+ });
1706
+ return /* @__PURE__ */ jsxs(Box, {
1707
+ flexDirection: "column",
1708
+ flexGrow: 1,
1709
+ children: [
1710
+ /* @__PURE__ */ jsxs(Text, {
1711
+ color: "red",
1712
+ bold: true,
1713
+ children: ["✘", " Authentication error"]
1714
+ }),
1715
+ /* @__PURE__ */ jsx(Box, {
1716
+ flexDirection: "column",
1717
+ marginTop: 1,
1718
+ children: /* @__PURE__ */ jsx(Text, { children: "The Wizard couldn't connect to the PostHog LLM Gateway. If you use Claude Code, its credentials might conflict with the Wizard." })
1719
+ }),
1720
+ /* @__PURE__ */ jsx(Box, {
1721
+ marginTop: 1,
1722
+ children: /* @__PURE__ */ jsx(Text, {
1723
+ dimColor: true,
1724
+ children: "Try logging out of Claude Code temporarily and re-running the Wizard by running:"
1725
+ })
1726
+ }),
1727
+ /* @__PURE__ */ jsx(Box, {
1728
+ flexDirection: "column",
1729
+ marginTop: 1,
1730
+ paddingLeft: 2,
1731
+ children: /* @__PURE__ */ jsx(Text, {
1732
+ color: "cyan",
1733
+ children: "claude auth logout"
1734
+ })
1735
+ }),
1736
+ /* @__PURE__ */ jsx(Box, {
1737
+ marginTop: 1,
1738
+ children: /* @__PURE__ */ jsx(Text, {
1739
+ color: Colors.muted,
1740
+ children: "Press any key to exit"
1741
+ })
1742
+ })
1743
+ ]
1744
+ });
1745
+ };
1746
+ //#endregion
1747
+ //#region src/ui/tui/services/mcp-installer.ts
1748
+ /**
1749
+ * McpInstaller — service layer between McpScreen and MCP business logic.
1750
+ *
1751
+ * Decouples the screen from step internals. Testable, swappable,
1752
+ * no dynamic imports in React components.
1753
+ */
1754
+ /**
1755
+ * Production McpInstaller backed by real MCP client detection and installation.
1756
+ */
1757
+ function createMcpInstaller() {
1758
+ let cachedClients = [];
1759
+ return {
1760
+ async detectClients() {
1761
+ const supported = await getSupportedClients();
1762
+ cachedClients = supported.map((c) => ({
1763
+ name: c.name,
1764
+ raw: c
1765
+ }));
1766
+ return supported.map((c) => ({ name: c.name }));
1767
+ },
1768
+ async install(clientNames, features, apiKey) {
1769
+ const resolvedFeatures = features ?? [...ALL_FEATURE_VALUES];
1770
+ const toInstall = cachedClients.filter((c) => clientNames.includes(c.name)).map((c) => c.raw);
1771
+ if (toInstall.length === 0) {
1772
+ logToFile(`[McpInstaller] No clients matched. clientNames=${JSON.stringify(clientNames)}, cached=${JSON.stringify(cachedClients.map((c) => c.name))}`);
1773
+ return [];
1774
+ }
1775
+ const installed = [];
1776
+ for (const client of toInstall) try {
1777
+ if ((await client.addServer(apiKey, resolvedFeatures, false))?.success) installed.push(client.name);
1778
+ else logToFile(`[McpInstaller] addServer returned success=false for ${client.name}`);
1779
+ } catch (err) {
1780
+ logToFile(`[McpInstaller] addServer threw for ${client.name}: ${err instanceof Error ? err.message : String(err)}`);
1781
+ }
1782
+ return installed;
1783
+ },
1784
+ async remove() {
1785
+ const installed = await getInstalledClients();
1786
+ if (installed.length === 0) return [];
1787
+ await removeMCPServer(installed);
1788
+ return installed.map((c) => c.name);
1789
+ }
1790
+ };
1791
+ }
1792
+ //#endregion
1793
+ //#region src/ui/tui/screen-registry.tsx
1794
+ function createServices() {
1795
+ return { mcpInstaller: createMcpInstaller() };
1796
+ }
1797
+ function createScreens(store, services) {
1798
+ return {
1799
+ ["settings-override"]: /* @__PURE__ */ jsx(SettingsOverrideScreen, { store }),
1800
+ ["managed-settings"]: /* @__PURE__ */ jsx(ManagedSettingsScreen, { store }),
1801
+ ["port-conflict"]: /* @__PURE__ */ jsx(PortConflictScreen, { store }),
1802
+ ["auth-error"]: /* @__PURE__ */ jsx(AuthErrorScreen, {}),
1803
+ ["intro"]: /* @__PURE__ */ jsx(PostHogIntegrationIntroScreen, { store }),
1804
+ ["revenue-intro"]: /* @__PURE__ */ jsx(RevenueIntroScreen, { store }),
1805
+ ["agent-skill-intro"]: /* @__PURE__ */ jsx(AgentSkillIntroScreen, { store }),
1806
+ ["health-check"]: /* @__PURE__ */ jsx(HealthCheckScreen, { store }),
1807
+ ["setup"]: /* @__PURE__ */ jsx(SetupScreen, { store }),
1808
+ ["auth"]: /* @__PURE__ */ jsx(AuthScreen, { store }),
1809
+ ["run"]: /* @__PURE__ */ jsx(RunScreen, { store }),
1810
+ ["mcp"]: /* @__PURE__ */ jsx(McpScreen, {
1811
+ store,
1812
+ installer: services.mcpInstaller
1813
+ }),
1814
+ ["keep-skills"]: /* @__PURE__ */ jsx(KeepSkillsScreen, { store }),
1815
+ ["outro"]: /* @__PURE__ */ jsx(OutroScreen, { store }),
1816
+ ["exit"]: /* @__PURE__ */ jsx(ExitScreen, {}),
1817
+ ["mcp-add"]: /* @__PURE__ */ jsx(McpScreen, {
1818
+ store,
1819
+ installer: services.mcpInstaller,
1820
+ standalone: true
1821
+ }),
1822
+ ["mcp-remove"]: /* @__PURE__ */ jsx(McpScreen, {
1823
+ store,
1824
+ installer: services.mcpInstaller,
1825
+ mode: "remove",
1826
+ standalone: true
1827
+ })
1828
+ };
1829
+ }
1830
+ //#endregion
1831
+ //#region src/ui/tui/App.tsx
1832
+ const App = ({ store }) => {
1833
+ const services = useMemo(() => createServices(), []);
1834
+ return /* @__PURE__ */ jsx(ScreenContainer, {
1835
+ store,
1836
+ screens: useMemo(() => createScreens(store, services), [store, services])
1837
+ });
1838
+ };
1839
+ //#endregion
1840
+ //#region src/ui/tui/start-tui.ts
1841
+ /**
1842
+ * start-tui.ts — Sets up the Ink TUI renderer and InkUI.
1843
+ *
1844
+ * Renders in the terminal's alternate screen buffer so the wizard
1845
+ * doesn't pollute scrollback history. On exit, the previous terminal
1846
+ * content is restored and a single exit summary line is printed.
1847
+ */
1848
+ const RESET_ATTRS = "\x1B[0m";
1849
+ const CLEAR_SCREEN = "\x1B[2J";
1850
+ const CURSOR_HOME = "\x1B[H";
1851
+ const BG_BLACK = "\x1B[48;2;0;0;0m";
1852
+ const ENTER_ALT_SCREEN = "\x1B[?1049h";
1853
+ const LEAVE_ALT_SCREEN = "\x1B[?1049l";
1854
+ const GREEN = "\x1B[32m";
1855
+ const BOLD = "\x1B[1m";
1856
+ const DIM = "\x1B[2m";
1857
+ function getExitLine(store) {
1858
+ const outro = store.session.outroData;
1859
+ const label = store.session.workflowLabel ?? "Wizard";
1860
+ if (outro?.kind === "success") return `${GREEN}${BOLD}\u2714${RESET_ATTRS} ${outro.message ?? `${label} completed successfully.`}`;
1861
+ return `${DIM}${label} exited.${RESET_ATTRS}`;
1862
+ }
1863
+ function startTUI(version, flow = "posthog-integration") {
1864
+ process.stdout.write(ENTER_ALT_SCREEN + BG_BLACK + CLEAR_SCREEN + CURSOR_HOME);
1865
+ const store = new WizardStore(flow);
1866
+ store.version = version;
1867
+ setUI(new InkUI(store));
1868
+ const { unmount: inkUnmount } = render(createElement(App, { store }));
1869
+ let cleaned = false;
1870
+ const cleanup = () => {
1871
+ if (cleaned) return;
1872
+ cleaned = true;
1873
+ inkUnmount();
1874
+ process.stdout.write(RESET_ATTRS + LEAVE_ALT_SCREEN);
1875
+ process.stdout.write(getExitLine(store) + "\n");
1876
+ };
1877
+ process.on("exit", cleanup);
1878
+ return {
1879
+ unmount: cleanup,
1880
+ store,
1881
+ waitForSetup: () => store.getGate("intro")
1882
+ };
1883
+ }
1884
+ //#endregion
1885
+ export { startTUI };
1886
+
1887
+ //# sourceMappingURL=start-tui-PygiIyNC.js.map