@posthog/wizard 2.9.1 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (740) hide show
  1. package/README.md +40 -0
  2. package/dist/McpScreen-DINVFEYh.js +3356 -0
  3. package/dist/McpScreen-DINVFEYh.js.map +1 -0
  4. package/dist/add-mcp-server-to-clients-BlbtWGU0.js +436 -0
  5. package/dist/add-mcp-server-to-clients-BlbtWGU0.js.map +1 -0
  6. package/dist/agent-runner-D_eXxXPp.js +1114 -0
  7. package/dist/agent-runner-D_eXxXPp.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-Bu1XKP2S.js +207 -0
  11. package/dist/analytics-Bu1XKP2S.js.map +1 -0
  12. package/dist/analytics-DjWAOHun.js +2 -0
  13. package/dist/bin.d.ts +1 -2
  14. package/dist/bin.js +635 -521
  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-B6EEBoZk.js +122 -0
  23. package/dist/detection-B6EEBoZk.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-BTZ75a-a.js +222 -0
  33. package/dist/package-manager-BTZ75a-a.js.map +1 -0
  34. package/dist/posthog-integration-_xd3kuTB.js +230 -0
  35. package/dist/posthog-integration-_xd3kuTB.js.map +1 -0
  36. package/dist/readiness-BPPVNQum.js +2156 -0
  37. package/dist/readiness-BPPVNQum.js.map +1 -0
  38. package/dist/registry-BY4HuKIE.js +2922 -0
  39. package/dist/registry-BY4HuKIE.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-Dymympue.js +928 -0
  44. package/dist/setup-utils-Dymympue.js.map +1 -0
  45. package/dist/smoke-test-ci.sh +165 -0
  46. package/dist/start-playground-BjIMB4sp.js +1005 -0
  47. package/dist/start-playground-BjIMB4sp.js.map +1 -0
  48. package/dist/start-tui-xs7DNbH9.js +1885 -0
  49. package/dist/start-tui-xs7DNbH9.js.map +1 -0
  50. package/dist/steps-CCz4dZOV.js +146 -0
  51. package/dist/steps-CCz4dZOV.js.map +1 -0
  52. package/dist/telemetry-DfPvsfxj.js +13 -0
  53. package/dist/telemetry-DfPvsfxj.js.map +1 -0
  54. package/dist/wizard-abort-BPf5l506.js +39 -0
  55. package/dist/wizard-abort-BPf5l506.js.map +1 -0
  56. package/dist/wizard-abort-WACKybRA.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 -325
  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 -73
  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 -43
  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 -53
  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 -935
  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 -52
  480. package/dist/src/ui/tui/flows.js +0 -76
  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 -50
  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/McpDemo.d.ts +0 -12
  505. package/dist/src/ui/tui/playground/demos/McpDemo.js +0 -27
  506. package/dist/src/ui/tui/playground/demos/McpDemo.js.map +0 -1
  507. package/dist/src/ui/tui/playground/demos/ModalDemo.d.ts +0 -6
  508. package/dist/src/ui/tui/playground/demos/ModalDemo.js +0 -13
  509. package/dist/src/ui/tui/playground/demos/ModalDemo.js.map +0 -1
  510. package/dist/src/ui/tui/playground/demos/ProgressDemo.d.ts +0 -5
  511. package/dist/src/ui/tui/playground/demos/ProgressDemo.js +0 -58
  512. package/dist/src/ui/tui/playground/demos/ProgressDemo.js.map +0 -1
  513. package/dist/src/ui/tui/playground/demos/RunScreenDemo.d.ts +0 -11
  514. package/dist/src/ui/tui/playground/demos/RunScreenDemo.js +0 -159
  515. package/dist/src/ui/tui/playground/demos/RunScreenDemo.js.map +0 -1
  516. package/dist/src/ui/tui/playground/demos/WelcomeDemo.d.ts +0 -9
  517. package/dist/src/ui/tui/playground/demos/WelcomeDemo.js +0 -15
  518. package/dist/src/ui/tui/playground/demos/WelcomeDemo.js.map +0 -1
  519. package/dist/src/ui/tui/playground/start-playground.d.ts +0 -4
  520. package/dist/src/ui/tui/playground/start-playground.js +0 -24
  521. package/dist/src/ui/tui/playground/start-playground.js.map +0 -1
  522. package/dist/src/ui/tui/primitives/CardLayout.d.ts +0 -12
  523. package/dist/src/ui/tui/primitives/CardLayout.js +0 -10
  524. package/dist/src/ui/tui/primitives/CardLayout.js.map +0 -1
  525. package/dist/src/ui/tui/primitives/ConfirmationInput.d.ts +0 -13
  526. package/dist/src/ui/tui/primitives/ConfirmationInput.js +0 -35
  527. package/dist/src/ui/tui/primitives/ConfirmationInput.js.map +0 -1
  528. package/dist/src/ui/tui/primitives/ContentSequencer.d.ts +0 -42
  529. package/dist/src/ui/tui/primitives/ContentSequencer.js +0 -137
  530. package/dist/src/ui/tui/primitives/ContentSequencer.js.map +0 -1
  531. package/dist/src/ui/tui/primitives/DissolveTransition.d.ts +0 -21
  532. package/dist/src/ui/tui/primitives/DissolveTransition.js +0 -149
  533. package/dist/src/ui/tui/primitives/DissolveTransition.js.map +0 -1
  534. package/dist/src/ui/tui/primitives/Divider.d.ts +0 -6
  535. package/dist/src/ui/tui/primitives/Divider.js +0 -15
  536. package/dist/src/ui/tui/primitives/Divider.js.map +0 -1
  537. package/dist/src/ui/tui/primitives/EventPlanViewer.d.ts +0 -9
  538. package/dist/src/ui/tui/primitives/EventPlanViewer.js +0 -9
  539. package/dist/src/ui/tui/primitives/EventPlanViewer.js.map +0 -1
  540. package/dist/src/ui/tui/primitives/GroupedPickerMenu.d.ts +0 -23
  541. package/dist/src/ui/tui/primitives/GroupedPickerMenu.js +0 -182
  542. package/dist/src/ui/tui/primitives/GroupedPickerMenu.js.map +0 -1
  543. package/dist/src/ui/tui/primitives/HNViewer.d.ts +0 -7
  544. package/dist/src/ui/tui/primitives/HNViewer.js +0 -63
  545. package/dist/src/ui/tui/primitives/HNViewer.js.map +0 -1
  546. package/dist/src/ui/tui/primitives/LinesBlock.d.ts +0 -16
  547. package/dist/src/ui/tui/primitives/LinesBlock.js +0 -37
  548. package/dist/src/ui/tui/primitives/LinesBlock.js.map +0 -1
  549. package/dist/src/ui/tui/primitives/LoadingBox.d.ts +0 -8
  550. package/dist/src/ui/tui/primitives/LoadingBox.js +0 -10
  551. package/dist/src/ui/tui/primitives/LoadingBox.js.map +0 -1
  552. package/dist/src/ui/tui/primitives/LogViewer.d.ts +0 -11
  553. package/dist/src/ui/tui/primitives/LogViewer.js +0 -55
  554. package/dist/src/ui/tui/primitives/LogViewer.js.map +0 -1
  555. package/dist/src/ui/tui/primitives/ModalOverlay.d.ts +0 -25
  556. package/dist/src/ui/tui/primitives/ModalOverlay.js +0 -7
  557. package/dist/src/ui/tui/primitives/ModalOverlay.js.map +0 -1
  558. package/dist/src/ui/tui/primitives/NodeBlock.d.ts +0 -13
  559. package/dist/src/ui/tui/primitives/NodeBlock.js +0 -17
  560. package/dist/src/ui/tui/primitives/NodeBlock.js.map +0 -1
  561. package/dist/src/ui/tui/primitives/PickerMenu.d.ts +0 -20
  562. package/dist/src/ui/tui/primitives/PickerMenu.js +0 -143
  563. package/dist/src/ui/tui/primitives/PickerMenu.js.map +0 -1
  564. package/dist/src/ui/tui/primitives/ProgressList.d.ts +0 -15
  565. package/dist/src/ui/tui/primitives/ProgressList.js +0 -32
  566. package/dist/src/ui/tui/primitives/ProgressList.js.map +0 -1
  567. package/dist/src/ui/tui/primitives/PromptLabel.d.ts +0 -11
  568. package/dist/src/ui/tui/primitives/PromptLabel.js +0 -13
  569. package/dist/src/ui/tui/primitives/PromptLabel.js.map +0 -1
  570. package/dist/src/ui/tui/primitives/ScreenContainer.d.ts +0 -16
  571. package/dist/src/ui/tui/primitives/ScreenContainer.js +0 -36
  572. package/dist/src/ui/tui/primitives/ScreenContainer.js.map +0 -1
  573. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.d.ts +0 -22
  574. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.js +0 -35
  575. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.js.map +0 -1
  576. package/dist/src/ui/tui/primitives/SplitView.d.ts +0 -11
  577. package/dist/src/ui/tui/primitives/SplitView.js +0 -9
  578. package/dist/src/ui/tui/primitives/SplitView.js.map +0 -1
  579. package/dist/src/ui/tui/primitives/TabContainer.d.ts +0 -23
  580. package/dist/src/ui/tui/primitives/TabContainer.js +0 -45
  581. package/dist/src/ui/tui/primitives/TabContainer.js.map +0 -1
  582. package/dist/src/ui/tui/primitives/TextBlock.d.ts +0 -41
  583. package/dist/src/ui/tui/primitives/TextBlock.js +0 -144
  584. package/dist/src/ui/tui/primitives/TextBlock.js.map +0 -1
  585. package/dist/src/ui/tui/primitives/content-types.d.ts +0 -37
  586. package/dist/src/ui/tui/primitives/content-types.js +0 -19
  587. package/dist/src/ui/tui/primitives/content-types.js.map +0 -1
  588. package/dist/src/ui/tui/primitives/index.d.ts +0 -27
  589. package/dist/src/ui/tui/primitives/index.js +0 -24
  590. package/dist/src/ui/tui/primitives/index.js.map +0 -1
  591. package/dist/src/ui/tui/primitives/layout-helpers.d.ts +0 -36
  592. package/dist/src/ui/tui/primitives/layout-helpers.js +0 -95
  593. package/dist/src/ui/tui/primitives/layout-helpers.js.map +0 -1
  594. package/dist/src/ui/tui/primitives/text-helpers.d.ts +0 -10
  595. package/dist/src/ui/tui/primitives/text-helpers.js +0 -43
  596. package/dist/src/ui/tui/primitives/text-helpers.js.map +0 -1
  597. package/dist/src/ui/tui/router.d.ts +0 -58
  598. package/dist/src/ui/tui/router.js +0 -96
  599. package/dist/src/ui/tui/router.js.map +0 -1
  600. package/dist/src/ui/tui/screen-registry.d.ts +0 -19
  601. package/dist/src/ui/tui/screen-registry.js +0 -46
  602. package/dist/src/ui/tui/screen-registry.js.map +0 -1
  603. package/dist/src/ui/tui/screens/AgentSkillIntroScreen.d.ts +0 -12
  604. package/dist/src/ui/tui/screens/AgentSkillIntroScreen.js +0 -75
  605. package/dist/src/ui/tui/screens/AgentSkillIntroScreen.js.map +0 -1
  606. package/dist/src/ui/tui/screens/AuthErrorScreen.d.ts +0 -7
  607. package/dist/src/ui/tui/screens/AuthErrorScreen.js +0 -16
  608. package/dist/src/ui/tui/screens/AuthErrorScreen.js.map +0 -1
  609. package/dist/src/ui/tui/screens/AuthScreen.d.ts +0 -13
  610. package/dist/src/ui/tui/screens/AuthScreen.js +0 -20
  611. package/dist/src/ui/tui/screens/AuthScreen.js.map +0 -1
  612. package/dist/src/ui/tui/screens/IntroScreenLayout.d.ts +0 -46
  613. package/dist/src/ui/tui/screens/IntroScreenLayout.js +0 -33
  614. package/dist/src/ui/tui/screens/IntroScreenLayout.js.map +0 -1
  615. package/dist/src/ui/tui/screens/KeepSkillsScreen.d.ts +0 -14
  616. package/dist/src/ui/tui/screens/KeepSkillsScreen.js +0 -74
  617. package/dist/src/ui/tui/screens/KeepSkillsScreen.js.map +0 -1
  618. package/dist/src/ui/tui/screens/ManagedSettingsScreen.d.ts +0 -13
  619. package/dist/src/ui/tui/screens/ManagedSettingsScreen.js +0 -32
  620. package/dist/src/ui/tui/screens/ManagedSettingsScreen.js.map +0 -1
  621. package/dist/src/ui/tui/screens/McpScreen.d.ts +0 -24
  622. package/dist/src/ui/tui/screens/McpScreen.js +0 -130
  623. package/dist/src/ui/tui/screens/McpScreen.js.map +0 -1
  624. package/dist/src/ui/tui/screens/OutroScreen.d.ts +0 -11
  625. package/dist/src/ui/tui/screens/OutroScreen.js +0 -22
  626. package/dist/src/ui/tui/screens/OutroScreen.js.map +0 -1
  627. package/dist/src/ui/tui/screens/PortConflictScreen.d.ts +0 -11
  628. package/dist/src/ui/tui/screens/PortConflictScreen.js +0 -30
  629. package/dist/src/ui/tui/screens/PortConflictScreen.js.map +0 -1
  630. package/dist/src/ui/tui/screens/PostHogIntegrationIntroScreen.d.ts +0 -15
  631. package/dist/src/ui/tui/screens/PostHogIntegrationIntroScreen.js +0 -135
  632. package/dist/src/ui/tui/screens/PostHogIntegrationIntroScreen.js.map +0 -1
  633. package/dist/src/ui/tui/screens/RevenueIntroScreen.d.ts +0 -16
  634. package/dist/src/ui/tui/screens/RevenueIntroScreen.js +0 -89
  635. package/dist/src/ui/tui/screens/RevenueIntroScreen.js.map +0 -1
  636. package/dist/src/ui/tui/screens/RunScreen.d.ts +0 -16
  637. package/dist/src/ui/tui/screens/RunScreen.js +0 -73
  638. package/dist/src/ui/tui/screens/RunScreen.js.map +0 -1
  639. package/dist/src/ui/tui/screens/SettingsOverrideScreen.d.ts +0 -6
  640. package/dist/src/ui/tui/screens/SettingsOverrideScreen.js +0 -30
  641. package/dist/src/ui/tui/screens/SettingsOverrideScreen.js.map +0 -1
  642. package/dist/src/ui/tui/screens/SetupScreen.d.ts +0 -13
  643. package/dist/src/ui/tui/screens/SetupScreen.js +0 -74
  644. package/dist/src/ui/tui/screens/SetupScreen.js.map +0 -1
  645. package/dist/src/ui/tui/screens/health/HealthCheckScreen.d.ts +0 -14
  646. package/dist/src/ui/tui/screens/health/HealthCheckScreen.js +0 -77
  647. package/dist/src/ui/tui/screens/health/HealthCheckScreen.js.map +0 -1
  648. package/dist/src/ui/tui/services/mcp-installer.d.ts +0 -21
  649. package/dist/src/ui/tui/services/mcp-installer.js +0 -58
  650. package/dist/src/ui/tui/services/mcp-installer.js.map +0 -1
  651. package/dist/src/ui/tui/start-tui.d.ts +0 -9
  652. package/dist/src/ui/tui/start-tui.js +0 -41
  653. package/dist/src/ui/tui/start-tui.js.map +0 -1
  654. package/dist/src/ui/tui/store.d.ts +0 -190
  655. package/dist/src/ui/tui/store.js +0 -474
  656. package/dist/src/ui/tui/store.js.map +0 -1
  657. package/dist/src/ui/tui/styles.d.ts +0 -32
  658. package/dist/src/ui/tui/styles.js +0 -35
  659. package/dist/src/ui/tui/styles.js.map +0 -1
  660. package/dist/src/ui/wizard-ui.d.ts +0 -81
  661. package/dist/src/ui/wizard-ui.js +0 -19
  662. package/dist/src/ui/wizard-ui.js.map +0 -1
  663. package/dist/src/utils/__tests__/analytics.test.d.ts +0 -1
  664. package/dist/src/utils/__tests__/analytics.test.js +0 -136
  665. package/dist/src/utils/__tests__/analytics.test.js.map +0 -1
  666. package/dist/src/utils/__tests__/provisioning.test.d.ts +0 -1
  667. package/dist/src/utils/__tests__/provisioning.test.js +0 -192
  668. package/dist/src/utils/__tests__/provisioning.test.js.map +0 -1
  669. package/dist/src/utils/__tests__/semver.test.d.ts +0 -1
  670. package/dist/src/utils/__tests__/semver.test.js +0 -159
  671. package/dist/src/utils/__tests__/semver.test.js.map +0 -1
  672. package/dist/src/utils/__tests__/setup-utils.test.d.ts +0 -1
  673. package/dist/src/utils/__tests__/setup-utils.test.js +0 -138
  674. package/dist/src/utils/__tests__/setup-utils.test.js.map +0 -1
  675. package/dist/src/utils/analytics.d.ts +0 -33
  676. package/dist/src/utils/analytics.js +0 -137
  677. package/dist/src/utils/analytics.js.map +0 -1
  678. package/dist/src/utils/anthropic-status.d.ts +0 -17
  679. package/dist/src/utils/anthropic-status.js +0 -49
  680. package/dist/src/utils/anthropic-status.js.map +0 -1
  681. package/dist/src/utils/bash.d.ts +0 -2
  682. package/dist/src/utils/bash.js +0 -54
  683. package/dist/src/utils/bash.js.map +0 -1
  684. package/dist/src/utils/custom-headers.d.ts +0 -9
  685. package/dist/src/utils/custom-headers.js +0 -24
  686. package/dist/src/utils/custom-headers.js.map +0 -1
  687. package/dist/src/utils/debug.d.ts +0 -29
  688. package/dist/src/utils/debug.js +0 -87
  689. package/dist/src/utils/debug.js.map +0 -1
  690. package/dist/src/utils/env-api-key.d.ts +0 -5
  691. package/dist/src/utils/env-api-key.js +0 -57
  692. package/dist/src/utils/env-api-key.js.map +0 -1
  693. package/dist/src/utils/environment.d.ts +0 -4
  694. package/dist/src/utils/environment.js +0 -77
  695. package/dist/src/utils/environment.js.map +0 -1
  696. package/dist/src/utils/file-utils.d.ts +0 -10
  697. package/dist/src/utils/file-utils.js +0 -49
  698. package/dist/src/utils/file-utils.js.map +0 -1
  699. package/dist/src/utils/logging.d.ts +0 -9
  700. package/dist/src/utils/logging.js +0 -47
  701. package/dist/src/utils/logging.js.map +0 -1
  702. package/dist/src/utils/oauth.d.ts +0 -33
  703. package/dist/src/utils/oauth.js +0 -288
  704. package/dist/src/utils/oauth.js.map +0 -1
  705. package/dist/src/utils/package-json.d.ts +0 -30
  706. package/dist/src/utils/package-json.js +0 -47
  707. package/dist/src/utils/package-json.js.map +0 -1
  708. package/dist/src/utils/package-manager.d.ts +0 -21
  709. package/dist/src/utils/package-manager.js +0 -210
  710. package/dist/src/utils/package-manager.js.map +0 -1
  711. package/dist/src/utils/provisioning.d.ts +0 -25
  712. package/dist/src/utils/provisioning.js +0 -191
  713. package/dist/src/utils/provisioning.js.map +0 -1
  714. package/dist/src/utils/rules/astro-rules.md +0 -44
  715. package/dist/src/utils/rules/next-rules.md +0 -9
  716. package/dist/src/utils/rules/react-native-rules.md +0 -7
  717. package/dist/src/utils/rules/react-rules.md +0 -7
  718. package/dist/src/utils/rules/svelte-rules.md +0 -7
  719. package/dist/src/utils/rules/universal.md +0 -32
  720. package/dist/src/utils/semver.d.ts +0 -21
  721. package/dist/src/utils/semver.js +0 -87
  722. package/dist/src/utils/semver.js.map +0 -1
  723. package/dist/src/utils/setup-utils.d.ts +0 -79
  724. package/dist/src/utils/setup-utils.js +0 -406
  725. package/dist/src/utils/setup-utils.js.map +0 -1
  726. package/dist/src/utils/string.d.ts +0 -1
  727. package/dist/src/utils/string.js +0 -9
  728. package/dist/src/utils/string.js.map +0 -1
  729. package/dist/src/utils/types.d.ts +0 -85
  730. package/dist/src/utils/types.js +0 -3
  731. package/dist/src/utils/types.js.map +0 -1
  732. package/dist/src/utils/urls.d.ts +0 -7
  733. package/dist/src/utils/urls.js +0 -78
  734. package/dist/src/utils/urls.js.map +0 -1
  735. package/dist/src/utils/vendor/is-unicorn-supported.d.ts +0 -1
  736. package/dist/src/utils/vendor/is-unicorn-supported.js +0 -24
  737. package/dist/src/utils/vendor/is-unicorn-supported.js.map +0 -1
  738. package/dist/src/utils/wizard-abort.d.ts +0 -16
  739. package/dist/src/utils/wizard-abort.js +0 -59
  740. package/dist/src/utils/wizard-abort.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"health-checks.test.js","sourceRoot":"","sources":["../../../../../src/lib/health-checks/__tests__/health-checks.test.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Tests for health-checks.ts\n *\n * Mock data is modelled on live Statuspage.io v2 API responses.\n * Statuspage docs: https://metastatuspage.com/api\n *\n * status.json – page-level rollup with indicator (none | minor | major | critical)\n * summary.json – same rollup plus component list; component statuses:\n * operational | degraded_performance | partial_outage | major_outage | under_maintenance\n * https://support.atlassian.com/statuspage/docs/show-service-status-with-components\n *\n * LLM Gateway – FastAPI service, GET /_liveness returns {\"status\":\"alive\"} (200)\n * Source: posthog/services/llm-gateway/src/llm_gateway/api/health.py\n *\n * MCP – Cloudflare Worker, GET / returns an HTML landing page (200)\n * Source: posthog/services/mcp/src/index.ts\n */\n\nimport {\n checkAllExternalServices,\n checkAnthropicHealth,\n checkCloudflareComponentHealth,\n checkCloudflareOverallHealth,\n checkGithubHealth,\n checkLlmGatewayHealth,\n checkMcpHealth,\n checkNpmComponentHealth,\n checkNpmOverallHealth,\n checkPosthogComponentHealth,\n checkPosthogOverallHealth,\n DEFAULT_WIZARD_READINESS_CONFIG,\n evaluateWizardReadiness,\n ServiceHealthStatus,\n WizardReadiness,\n} from '../index';\n\n// ---------------------------------------------------------------------------\n// Real-world Statuspage.io v2 response factories\n// https://metastatuspage.com/api\n// ---------------------------------------------------------------------------\n\nfunction makeStatuspageStatus(opts: {\n pageId: string;\n pageName: string;\n pageUrl: string;\n indicator: 'none' | 'minor' | 'major' | 'critical';\n description: string;\n}) {\n return {\n page: {\n id: opts.pageId,\n name: opts.pageName,\n url: opts.pageUrl,\n time_zone: 'Etc/UTC',\n updated_at: '2026-03-05T16:03:38.861Z',\n },\n status: {\n indicator: opts.indicator,\n description: opts.description,\n },\n };\n}\n\nfunction makeStatuspageSummary(opts: {\n pageId: string;\n pageName: string;\n pageUrl: string;\n indicator: 'none' | 'minor' | 'major' | 'critical';\n description: string;\n components: {\n id: string;\n name: string;\n status: string;\n position: number;\n description: string | null;\n }[];\n}) {\n return {\n page: {\n id: opts.pageId,\n name: opts.pageName,\n url: opts.pageUrl,\n time_zone: 'Etc/UTC',\n updated_at: '2026-03-05T16:03:38.861Z',\n },\n status: {\n indicator: opts.indicator,\n description: opts.description,\n },\n components: opts.components.map((c) => ({\n ...c,\n page_id: opts.pageId,\n created_at: '2023-07-11T17:52:24.275Z',\n updated_at: '2026-03-04T17:01:29.960Z',\n showcase: true,\n start_date: '2023-07-11',\n group_id: null,\n group: false,\n only_show_if_degraded: false,\n })),\n incidents: [],\n scheduled_maintenances: [],\n };\n}\n\n// Shapes taken from live GET on 2026-03-05\nconst ANTHROPIC_STATUS_HEALTHY = makeStatuspageStatus({\n pageId: 'tymt9n04zgry',\n pageName: 'Claude',\n pageUrl: 'https://status.claude.com',\n indicator: 'none',\n description: 'All Systems Operational',\n});\n\nconst GITHUB_STATUS_HEALTHY = makeStatuspageStatus({\n pageId: 'kctbh9vrtdwd',\n pageName: 'GitHub',\n pageUrl: 'https://www.githubstatus.com',\n indicator: 'none',\n description: 'All Systems Operational',\n});\n\nconst NPM_STATUS_HEALTHY = makeStatuspageStatus({\n pageId: 'wyvgptkd90hm',\n pageName: 'npm',\n pageUrl: 'https://status.npmjs.org',\n indicator: 'none',\n description: 'All Systems Operational',\n});\n\nconst NPM_SUMMARY_HEALTHY = makeStatuspageSummary({\n pageId: 'wyvgptkd90hm',\n pageName: 'npm',\n pageUrl: 'https://status.npmjs.org',\n indicator: 'none',\n description: 'All Systems Operational',\n components: [\n {\n id: 'mvm98gtxvb9b',\n name: 'www.npmjs.com website',\n status: 'operational',\n position: 1,\n description:\n 'The ability for users to navigate to or interact with the npm website.',\n },\n {\n id: 'k1wj10x6gmph',\n name: 'Package installation',\n status: 'operational',\n position: 2,\n description:\n 'The ability for users to read from the registry so that they can install packages.',\n },\n ],\n});\n\nconst CLOUDFLARE_STATUS_HEALTHY = makeStatuspageStatus({\n pageId: 'yh6f0r4529hb',\n pageName: 'Cloudflare',\n pageUrl: 'https://www.cloudflarestatus.com',\n indicator: 'none',\n description: 'All Systems Operational',\n});\n\nconst CLOUDFLARE_SUMMARY_HEALTHY = makeStatuspageSummary({\n pageId: 'yh6f0r4529hb',\n pageName: 'Cloudflare',\n pageUrl: 'https://www.cloudflarestatus.com',\n indicator: 'none',\n description: 'All Systems Operational',\n components: [\n {\n id: '1km35smx8p41',\n name: 'Cloudflare Sites and Services',\n status: 'operational',\n position: 1,\n description:\n 'Sites and services that Cloudflare customers use to interact with the Cloudflare Network',\n },\n ],\n});\n\nconst POSTHOG_STATUS_HEALTHY = makeStatuspageStatus({\n pageId: 'qf5jlnph3bcy',\n pageName: 'PostHog',\n pageUrl: 'https://status.posthog.com',\n indicator: 'none',\n description: 'All Systems Operational',\n});\n\nconst POSTHOG_SUMMARY_HEALTHY = makeStatuspageSummary({\n pageId: 'qf5jlnph3bcy',\n pageName: 'PostHog',\n pageUrl: 'https://status.posthog.com',\n indicator: 'none',\n description: 'All Systems Operational',\n components: [\n {\n id: 'us-cloud',\n name: 'US Cloud',\n status: 'operational',\n position: 1,\n description: null,\n },\n {\n id: 'eu-cloud',\n name: 'EU Cloud',\n status: 'operational',\n position: 2,\n description: null,\n },\n {\n id: 'posthog-com',\n name: 'PostHog.com',\n status: 'operational',\n position: 3,\n description: null,\n },\n ],\n});\n\n// LLM Gateway /_liveness response (from posthog/services/llm-gateway/src/llm_gateway/api/health.py)\nconst LLM_GATEWAY_LIVENESS_BODY = JSON.stringify({ status: 'alive' });\n\n// MCP / landing page (from posthog/services/mcp/src/index.ts + src/static/landing.html)\nconst MCP_LANDING_HTML =\n '<!doctype html><html lang=\"en\"><head><title>PostHog MCP Server</title></head><body></body></html>';\n\n// ---------------------------------------------------------------------------\n// URL constants (must match health-checks.ts)\n// ---------------------------------------------------------------------------\n\nconst URLS = {\n anthropicStatus: 'https://status.claude.com/api/v2/status.json',\n posthogStatus: 'https://www.posthogstatus.com/api/v2/status.json',\n posthogSummary: 'https://www.posthogstatus.com/api/v2/summary.json',\n githubStatus: 'https://www.githubstatus.com/api/v2/status.json',\n npmStatus: 'https://status.npmjs.org/api/v2/status.json',\n npmSummary: 'https://status.npmjs.org/api/v2/summary.json',\n cloudflareStatus: 'https://www.cloudflarestatus.com/api/v2/status.json',\n cloudflareSummary: 'https://www.cloudflarestatus.com/api/v2/summary.json',\n llmGatewayLiveness: 'https://gateway.us.posthog.com/_liveness',\n mcpLanding: 'https://mcp.posthog.com/',\n githubReleasesSkillMenu:\n 'https://github.com/PostHog/context-mill/releases/latest/download/skill-menu.json',\n} as const;\n\n// ---------------------------------------------------------------------------\n// Helper to build a default \"all healthy\" fetch mock\n// ---------------------------------------------------------------------------\n\nconst HEALTHY_RESPONSES: Record<string, { body: string; contentType: string }> =\n {\n [URLS.anthropicStatus]: {\n body: JSON.stringify(ANTHROPIC_STATUS_HEALTHY),\n contentType: 'application/json',\n },\n [URLS.posthogStatus]: {\n body: JSON.stringify(POSTHOG_STATUS_HEALTHY),\n contentType: 'application/json',\n },\n [URLS.posthogSummary]: {\n body: JSON.stringify(POSTHOG_SUMMARY_HEALTHY),\n contentType: 'application/json',\n },\n [URLS.githubStatus]: {\n body: JSON.stringify(GITHUB_STATUS_HEALTHY),\n contentType: 'application/json',\n },\n [URLS.npmStatus]: {\n body: JSON.stringify(NPM_STATUS_HEALTHY),\n contentType: 'application/json',\n },\n [URLS.npmSummary]: {\n body: JSON.stringify(NPM_SUMMARY_HEALTHY),\n contentType: 'application/json',\n },\n [URLS.cloudflareStatus]: {\n body: JSON.stringify(CLOUDFLARE_STATUS_HEALTHY),\n contentType: 'application/json',\n },\n [URLS.cloudflareSummary]: {\n body: JSON.stringify(CLOUDFLARE_SUMMARY_HEALTHY),\n contentType: 'application/json',\n },\n [URLS.llmGatewayLiveness]: {\n body: LLM_GATEWAY_LIVENESS_BODY,\n contentType: 'application/json',\n },\n [URLS.mcpLanding]: {\n body: MCP_LANDING_HTML,\n contentType: 'text/html; charset=utf-8',\n },\n [URLS.githubReleasesSkillMenu]: {\n body: JSON.stringify({ categories: { integration: [] } }),\n contentType: 'application/json',\n },\n };\n\nfunction allHealthyFetchMock(url: string | URL | Request): Promise<Response> {\n const urlStr =\n typeof url === 'string'\n ? url\n : url instanceof URL\n ? url.toString()\n : url.url;\n const entry = HEALTHY_RESPONSES[urlStr];\n if (entry) {\n return Promise.resolve(\n new Response(entry.body, {\n status: 200,\n headers: { 'Content-Type': entry.contentType },\n }),\n );\n }\n return Promise.resolve(new Response('Not found', { status: 404 }));\n}\n\nfunction overrideFetch(overrides: Record<string, () => Promise<Response>>) {\n return (url: string | URL | Request): Promise<Response> => {\n const urlStr =\n typeof url === 'string'\n ? url\n : url instanceof URL\n ? url.toString()\n : url.url;\n if (overrides[urlStr]) return overrides[urlStr]();\n return allHealthyFetchMock(urlStr);\n };\n}\n\n// ---------------------------------------------------------------------------\n// Tests\n// ---------------------------------------------------------------------------\n\ndescribe('health-checks', () => {\n const originalFetch = global.fetch;\n\n beforeEach(() => {\n jest.restoreAllMocks();\n (global as any).fetch = jest.fn(allHealthyFetchMock);\n });\n\n afterAll(() => {\n (global as any).fetch = originalFetch;\n });\n\n // -----------------------------------------------------------------------\n // Statuspage status.json checks (indicator-based)\n // -----------------------------------------------------------------------\n\n describe('checkAnthropicHealth', () => {\n it('returns healthy for indicator=none (\"All Systems Operational\")', async () => {\n const result = await checkAnthropicHealth();\n expect(result.status).toBe(ServiceHealthStatus.Healthy);\n expect(result.rawIndicator).toBe('none');\n });\n\n it('returns degraded for indicator=minor (\"Minor Service Outage\")', async () => {\n const body = makeStatuspageStatus({\n pageId: 'tymt9n04zgry',\n pageName: 'Claude',\n pageUrl: 'https://status.claude.com',\n indicator: 'minor',\n description: 'Minor Service Outage',\n });\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.anthropicStatus]: () =>\n Promise.resolve(\n new Response(JSON.stringify(body), { status: 200 }),\n ),\n }),\n );\n const result = await checkAnthropicHealth();\n expect(result.status).toBe(ServiceHealthStatus.Degraded);\n expect(result.rawIndicator).toBe('minor');\n });\n\n it('returns down for indicator=major (\"Partial System Outage\")', async () => {\n const body = makeStatuspageStatus({\n pageId: 'tymt9n04zgry',\n pageName: 'Claude',\n pageUrl: 'https://status.claude.com',\n indicator: 'major',\n description: 'Partial System Outage',\n });\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.anthropicStatus]: () =>\n Promise.resolve(\n new Response(JSON.stringify(body), { status: 200 }),\n ),\n }),\n );\n const result = await checkAnthropicHealth();\n expect(result.status).toBe(ServiceHealthStatus.Down);\n });\n\n it('returns down for indicator=critical (\"Major Service Outage\")', async () => {\n const body = makeStatuspageStatus({\n pageId: 'tymt9n04zgry',\n pageName: 'Claude',\n pageUrl: 'https://status.claude.com',\n indicator: 'critical',\n description: 'Major Service Outage',\n });\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.anthropicStatus]: () =>\n Promise.resolve(\n new Response(JSON.stringify(body), { status: 200 }),\n ),\n }),\n );\n const result = await checkAnthropicHealth();\n expect(result.status).toBe(ServiceHealthStatus.Down);\n });\n\n it('returns degraded when statuspage returns HTTP 500', async () => {\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.anthropicStatus]: () =>\n Promise.resolve(\n new Response('Internal Server Error', { status: 500 }),\n ),\n }),\n );\n const result = await checkAnthropicHealth();\n expect(result.status).toBe(ServiceHealthStatus.Degraded);\n expect(result.error).toBe('HTTP 500');\n });\n\n it('returns degraded when fetch throws (network failure)', async () => {\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.anthropicStatus]: () =>\n Promise.reject(\n new Error('getaddrinfo ENOTFOUND status.claude.com'),\n ),\n }),\n );\n const result = await checkAnthropicHealth();\n expect(result.status).toBe(ServiceHealthStatus.Degraded);\n expect(result.error).toBe('getaddrinfo ENOTFOUND status.claude.com');\n });\n });\n\n describe('checkPosthogOverallHealth', () => {\n it('returns healthy for indicator=none', async () => {\n const result = await checkPosthogOverallHealth();\n expect(result.status).toBe(ServiceHealthStatus.Healthy);\n expect(result.rawIndicator).toBe('none');\n });\n });\n\n describe('checkGithubHealth', () => {\n it('returns healthy for indicator=none', async () => {\n const result = await checkGithubHealth();\n expect(result.status).toBe(ServiceHealthStatus.Healthy);\n });\n });\n\n describe('checkNpmOverallHealth', () => {\n it('returns healthy for indicator=none', async () => {\n const result = await checkNpmOverallHealth();\n expect(result.status).toBe(ServiceHealthStatus.Healthy);\n });\n });\n\n describe('checkCloudflareOverallHealth', () => {\n it('returns healthy for indicator=none', async () => {\n const result = await checkCloudflareOverallHealth();\n expect(result.status).toBe(ServiceHealthStatus.Healthy);\n });\n\n it('returns degraded for indicator=minor', async () => {\n const body = makeStatuspageStatus({\n pageId: 'yh6f0r4529hb',\n pageName: 'Cloudflare',\n pageUrl: 'https://www.cloudflarestatus.com',\n indicator: 'minor',\n description: 'Minor Service Outage',\n });\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.cloudflareStatus]: () =>\n Promise.resolve(\n new Response(JSON.stringify(body), { status: 200 }),\n ),\n }),\n );\n const result = await checkCloudflareOverallHealth();\n expect(result.status).toBe(ServiceHealthStatus.Degraded);\n });\n });\n\n // -----------------------------------------------------------------------\n // Statuspage summary.json checks (component-based)\n // -----------------------------------------------------------------------\n\n describe('checkPosthogComponentHealth', () => {\n it('reports all operational when every component is operational', async () => {\n const result = await checkPosthogComponentHealth();\n expect(result.status).toBe(ServiceHealthStatus.Healthy);\n expect(result.degradedOrDownComponents).toBeUndefined();\n });\n\n it('reports degraded when a component has partial_outage', async () => {\n const body = makeStatuspageSummary({\n pageId: 'qf5jlnph3bcy',\n pageName: 'PostHog',\n pageUrl: 'https://status.posthog.com',\n indicator: 'major',\n description: 'Partial System Outage',\n components: [\n {\n id: 'us-cloud',\n name: 'US Cloud',\n status: 'partial_outage',\n position: 1,\n description: null,\n },\n {\n id: 'eu-cloud',\n name: 'EU Cloud',\n status: 'operational',\n position: 2,\n description: null,\n },\n ],\n });\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.posthogSummary]: () =>\n Promise.resolve(\n new Response(JSON.stringify(body), { status: 200 }),\n ),\n }),\n );\n const result = await checkPosthogComponentHealth();\n expect(result.status).toBe(ServiceHealthStatus.Degraded);\n expect(result.degradedOrDownComponents).toHaveLength(1);\n expect(result.degradedOrDownComponents![0].name).toBe('US Cloud');\n expect(result.degradedOrDownComponents![0].rawStatus).toBe(\n 'partial_outage',\n );\n expect(result.degradedOrDownComponents![0].status).toBe(\n ServiceHealthStatus.Down,\n );\n });\n\n it('reports degraded when a component has degraded_performance', async () => {\n const body = makeStatuspageSummary({\n pageId: 'qf5jlnph3bcy',\n pageName: 'PostHog',\n pageUrl: 'https://status.posthog.com',\n indicator: 'minor',\n description: 'Degraded System Performance',\n components: [\n {\n id: 'us-cloud',\n name: 'US Cloud',\n status: 'degraded_performance',\n position: 1,\n description: null,\n },\n {\n id: 'eu-cloud',\n name: 'EU Cloud',\n status: 'operational',\n position: 2,\n description: null,\n },\n ],\n });\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.posthogSummary]: () =>\n Promise.resolve(\n new Response(JSON.stringify(body), { status: 200 }),\n ),\n }),\n );\n const result = await checkPosthogComponentHealth();\n expect(result.status).toBe(ServiceHealthStatus.Degraded);\n expect(result.degradedOrDownComponents![0].rawStatus).toBe(\n 'degraded_performance',\n );\n expect(result.degradedOrDownComponents![0].status).toBe(\n ServiceHealthStatus.Degraded,\n );\n });\n\n it('reports degraded when a component has major_outage', async () => {\n const body = makeStatuspageSummary({\n pageId: 'qf5jlnph3bcy',\n pageName: 'PostHog',\n pageUrl: 'https://status.posthog.com',\n indicator: 'critical',\n description: 'Major Service Outage',\n components: [\n {\n id: 'us-cloud',\n name: 'US Cloud',\n status: 'major_outage',\n position: 1,\n description: null,\n },\n {\n id: 'eu-cloud',\n name: 'EU Cloud',\n status: 'major_outage',\n position: 2,\n description: null,\n },\n ],\n });\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.posthogSummary]: () =>\n Promise.resolve(\n new Response(JSON.stringify(body), { status: 200 }),\n ),\n }),\n );\n const result = await checkPosthogComponentHealth();\n expect(result.status).toBe(ServiceHealthStatus.Degraded);\n expect(result.degradedOrDownComponents).toHaveLength(2);\n expect(result.degradedOrDownComponents![0].status).toBe(\n ServiceHealthStatus.Down,\n );\n });\n\n it('handles under_maintenance as degraded', async () => {\n const body = makeStatuspageSummary({\n pageId: 'qf5jlnph3bcy',\n pageName: 'PostHog',\n pageUrl: 'https://status.posthog.com',\n indicator: 'minor',\n description: 'Scheduled Maintenance',\n components: [\n {\n id: 'us-cloud',\n name: 'US Cloud',\n status: 'under_maintenance',\n position: 1,\n description: null,\n },\n ],\n });\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.posthogSummary]: () =>\n Promise.resolve(\n new Response(JSON.stringify(body), { status: 200 }),\n ),\n }),\n );\n const result = await checkPosthogComponentHealth();\n expect(result.status).toBe(ServiceHealthStatus.Degraded);\n expect(result.degradedOrDownComponents![0].status).toBe(\n ServiceHealthStatus.Degraded,\n );\n });\n });\n\n describe('checkNpmComponentHealth', () => {\n it('reports healthy when all npm components operational', async () => {\n const result = await checkNpmComponentHealth();\n expect(result.status).toBe(ServiceHealthStatus.Healthy);\n });\n\n it('reports degraded when \"Package installation\" has partial_outage', async () => {\n const body = makeStatuspageSummary({\n pageId: 'wyvgptkd90hm',\n pageName: 'npm',\n pageUrl: 'https://status.npmjs.org',\n indicator: 'major',\n description: 'Partial System Outage',\n components: [\n {\n id: 'mvm98gtxvb9b',\n name: 'www.npmjs.com website',\n status: 'operational',\n position: 1,\n description: null,\n },\n {\n id: 'k1wj10x6gmph',\n name: 'Package installation',\n status: 'partial_outage',\n position: 2,\n description: null,\n },\n ],\n });\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.npmSummary]: () =>\n Promise.resolve(\n new Response(JSON.stringify(body), { status: 200 }),\n ),\n }),\n );\n const result = await checkNpmComponentHealth();\n expect(result.status).toBe(ServiceHealthStatus.Degraded);\n expect(result.degradedOrDownComponents![0].name).toBe(\n 'Package installation',\n );\n });\n });\n\n describe('checkCloudflareComponentHealth', () => {\n it('reports healthy when Cloudflare components operational', async () => {\n const result = await checkCloudflareComponentHealth();\n expect(result.status).toBe(ServiceHealthStatus.Healthy);\n });\n });\n\n // -----------------------------------------------------------------------\n // LLM Gateway (fetchEndpointHealth – /_liveness)\n // -----------------------------------------------------------------------\n\n describe('checkLlmGatewayHealth', () => {\n it('returns healthy when gateway responds 200 with {\"status\":\"alive\"}', async () => {\n const result = await checkLlmGatewayHealth();\n expect(result.status).toBe(ServiceHealthStatus.Healthy);\n expect(result.rawIndicator).toBe('HTTP 200');\n expect(global.fetch).toHaveBeenCalledWith(\n URLS.llmGatewayLiveness,\n expect.objectContaining({ signal: expect.any(AbortSignal) }),\n );\n });\n\n it('returns down when gateway responds 503 (e.g. deploying)', async () => {\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.llmGatewayLiveness]: () =>\n Promise.resolve(\n new Response('Service Unavailable', { status: 503 }),\n ),\n }),\n );\n const result = await checkLlmGatewayHealth();\n expect(result.status).toBe(ServiceHealthStatus.Down);\n expect(result.error).toBe('HTTP 503');\n });\n\n it('returns down when gateway responds 502 (bad gateway)', async () => {\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.llmGatewayLiveness]: () =>\n Promise.resolve(new Response('Bad Gateway', { status: 502 })),\n }),\n );\n const result = await checkLlmGatewayHealth();\n expect(result.status).toBe(ServiceHealthStatus.Down);\n expect(result.error).toBe('HTTP 502');\n });\n\n it('returns down on DNS resolution failure', async () => {\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.llmGatewayLiveness]: () =>\n Promise.reject(\n new Error('getaddrinfo ENOTFOUND gateway.us.posthog.com'),\n ),\n }),\n );\n const result = await checkLlmGatewayHealth();\n expect(result.status).toBe(ServiceHealthStatus.Down);\n expect(result.error).toBe('getaddrinfo ENOTFOUND gateway.us.posthog.com');\n });\n\n it('returns down on timeout (AbortError)', async () => {\n const abortError = new Error('The operation was aborted.');\n abortError.name = 'AbortError';\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.llmGatewayLiveness]: () => Promise.reject(abortError),\n }),\n );\n const result = await checkLlmGatewayHealth();\n expect(result.status).toBe(ServiceHealthStatus.Down);\n expect(result.error).toBe('Request timed out');\n });\n });\n\n // -----------------------------------------------------------------------\n // MCP (fetchEndpointHealth – / landing)\n // -----------------------------------------------------------------------\n\n describe('checkMcpHealth', () => {\n it('returns healthy when MCP worker responds 200 with landing HTML', async () => {\n const result = await checkMcpHealth();\n expect(result.status).toBe(ServiceHealthStatus.Healthy);\n expect(result.rawIndicator).toBe('HTTP 200');\n expect(global.fetch).toHaveBeenCalledWith(\n URLS.mcpLanding,\n expect.objectContaining({ signal: expect.any(AbortSignal) }),\n );\n });\n\n it('returns down when worker responds 500', async () => {\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.mcpLanding]: () =>\n Promise.resolve(\n new Response('Internal Server Error', { status: 500 }),\n ),\n }),\n );\n const result = await checkMcpHealth();\n expect(result.status).toBe(ServiceHealthStatus.Down);\n expect(result.error).toBe('HTTP 500');\n });\n\n it('returns down when Cloudflare returns 522 (connection timed out)', async () => {\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.mcpLanding]: () =>\n Promise.resolve(new Response('', { status: 522 })),\n }),\n );\n const result = await checkMcpHealth();\n expect(result.status).toBe(ServiceHealthStatus.Down);\n expect(result.error).toBe('HTTP 522');\n });\n\n it('returns down on network failure', async () => {\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.mcpLanding]: () => Promise.reject(new Error('fetch failed')),\n }),\n );\n const result = await checkMcpHealth();\n expect(result.status).toBe(ServiceHealthStatus.Down);\n expect(result.error).toBe('fetch failed');\n });\n });\n\n // -----------------------------------------------------------------------\n // checkAllExternalServices\n // -----------------------------------------------------------------------\n\n describe('checkAllExternalServices', () => {\n it('returns all 11 service keys when everything is healthy', async () => {\n const health = await checkAllExternalServices();\n const keys = Object.keys(health);\n expect(keys).toEqual(\n expect.arrayContaining([\n 'anthropic',\n 'posthogOverall',\n 'posthogComponents',\n 'github',\n 'npmOverall',\n 'npmComponents',\n 'cloudflareOverall',\n 'cloudflareComponents',\n 'llmGateway',\n 'mcp',\n 'githubReleases',\n ]),\n );\n expect(keys).toHaveLength(11);\n for (const val of Object.values(health)) {\n expect(val.status).toBe(ServiceHealthStatus.Healthy);\n }\n });\n\n it('fires all 11 fetch calls in parallel', async () => {\n await checkAllExternalServices();\n const calledUrls = (global.fetch as jest.Mock).mock.calls.map(\n (c: unknown[]) =>\n typeof c[0] === 'string' ? c[0] : (c[0] as URL).toString(),\n );\n expect(calledUrls).toHaveLength(11);\n expect(calledUrls).toContain(URLS.llmGatewayLiveness);\n expect(calledUrls).toContain(URLS.mcpLanding);\n expect(calledUrls).toContain(URLS.githubReleasesSkillMenu);\n });\n });\n\n // -----------------------------------------------------------------------\n // evaluateWizardReadiness\n // -----------------------------------------------------------------------\n\n describe('evaluateWizardReadiness', () => {\n it('returns Yes when all services are healthy', async () => {\n const result = await evaluateWizardReadiness(\n DEFAULT_WIZARD_READINESS_CONFIG,\n );\n expect(result.decision).toBe(WizardReadiness.Yes);\n });\n\n it('returns No when Anthropic is degraded (degradedBlocksRun)', async () => {\n const body = makeStatuspageStatus({\n pageId: 'tymt9n04zgry',\n pageName: 'Claude',\n pageUrl: 'https://status.claude.com',\n indicator: 'minor',\n description: 'Minor Service Outage',\n });\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.anthropicStatus]: () =>\n Promise.resolve(\n new Response(JSON.stringify(body), { status: 200 }),\n ),\n }),\n );\n const result = await evaluateWizardReadiness(\n DEFAULT_WIZARD_READINESS_CONFIG,\n );\n expect(result.decision).toBe(WizardReadiness.No);\n expect(result.health.anthropic.status).toBe(ServiceHealthStatus.Degraded);\n });\n\n it('returns No when LLM Gateway is down (downBlocksRun)', async () => {\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.llmGatewayLiveness]: () =>\n Promise.resolve(\n new Response('Service Unavailable', { status: 503 }),\n ),\n }),\n );\n const result = await evaluateWizardReadiness(\n DEFAULT_WIZARD_READINESS_CONFIG,\n );\n expect(result.decision).toBe(WizardReadiness.No);\n expect(result.health.llmGateway.status).toBe(ServiceHealthStatus.Down);\n });\n\n it('returns No when MCP is down (downBlocksRun)', async () => {\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.mcpLanding]: () =>\n Promise.resolve(new Response('Bad Gateway', { status: 502 })),\n }),\n );\n const result = await evaluateWizardReadiness(\n DEFAULT_WIZARD_READINESS_CONFIG,\n );\n expect(result.decision).toBe(WizardReadiness.No);\n expect(result.health.mcp.status).toBe(ServiceHealthStatus.Down);\n });\n\n it('returns No when npm overall is down (downBlocksRun)', async () => {\n const body = makeStatuspageStatus({\n pageId: 'wyvgptkd90hm',\n pageName: 'npm',\n pageUrl: 'https://status.npmjs.org',\n indicator: 'critical',\n description: 'Major Service Outage',\n });\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.npmStatus]: () =>\n Promise.resolve(\n new Response(JSON.stringify(body), { status: 200 }),\n ),\n }),\n );\n const result = await evaluateWizardReadiness(\n DEFAULT_WIZARD_READINESS_CONFIG,\n );\n expect(result.decision).toBe(WizardReadiness.No);\n expect(result.health.npmOverall.status).toBe(ServiceHealthStatus.Down);\n });\n\n it('returns YesWithWarnings when a non-blocking service is degraded', async () => {\n const body = makeStatuspageStatus({\n pageId: 'yh6f0r4529hb',\n pageName: 'Cloudflare',\n pageUrl: 'https://www.cloudflarestatus.com',\n indicator: 'minor',\n description: 'Minor Service Outage',\n });\n (global.fetch as jest.Mock).mockImplementation(\n overrideFetch({\n [URLS.cloudflareStatus]: () =>\n Promise.resolve(\n new Response(JSON.stringify(body), { status: 200 }),\n ),\n }),\n );\n const result = await evaluateWizardReadiness(\n DEFAULT_WIZARD_READINESS_CONFIG,\n );\n expect(result.decision).toBe(WizardReadiness.YesWithWarnings);\n });\n\n it('includes human-readable reasons for every service', async () => {\n const result = await evaluateWizardReadiness(\n DEFAULT_WIZARD_READINESS_CONFIG,\n );\n expect(result.reasons.length).toBeGreaterThan(0);\n expect(result.reasons.some((r) => r.includes('Anthropic'))).toBe(true);\n expect(result.reasons.some((r) => r.includes('PostHog'))).toBe(true);\n expect(result.reasons.some((r) => r.includes('GitHub'))).toBe(true);\n expect(result.reasons.some((r) => r.includes('npm'))).toBe(true);\n expect(result.reasons.some((r) => r.includes('Cloudflare'))).toBe(true);\n expect(result.reasons.some((r) => r.includes('LLM Gateway'))).toBe(true);\n expect(result.reasons.some((r) => r.includes('MCP'))).toBe(true);\n });\n });\n});\n"]}
@@ -1,4 +0,0 @@
1
- import { type BaseHealthResult } from './types';
2
- export declare const checkLlmGatewayHealth: () => Promise<BaseHealthResult>;
3
- export declare const checkMcpHealth: () => Promise<BaseHealthResult>;
4
- export declare const checkGithubReleasesHealth: () => Promise<BaseHealthResult>;
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkGithubReleasesHealth = exports.checkMcpHealth = exports.checkLlmGatewayHealth = void 0;
4
- const constants_1 = require("../constants");
5
- const types_1 = require("./types");
6
- // ---------------------------------------------------------------------------
7
- // Direct endpoint health checks
8
- //
9
- // These ping PostHog-owned services directly (no Statuspage intermediary).
10
- // A non-expected HTTP status or any network error is treated as Down.
11
- //
12
- // LLM Gateway – FastAPI service
13
- // Source: posthog/services/llm-gateway/src/llm_gateway/api/health.py
14
- // GET /_liveness → 200 {"status":"alive"}
15
- //
16
- // MCP – Cloudflare Worker
17
- // Source: posthog/services/mcp/src/index.ts
18
- // GET / → 200 (HTML landing page)
19
- // ---------------------------------------------------------------------------
20
- function downResult(error) {
21
- return { status: types_1.ServiceHealthStatus.Down, error };
22
- }
23
- async function fetchEndpointHealth(url, timeoutMs = 5000, expectedStatus = 200) {
24
- try {
25
- const controller = new AbortController();
26
- const tid = setTimeout(() => controller.abort(), timeoutMs);
27
- const res = await fetch(url, { signal: controller.signal });
28
- clearTimeout(tid);
29
- if (res.status === expectedStatus) {
30
- return {
31
- status: types_1.ServiceHealthStatus.Healthy,
32
- rawIndicator: `HTTP ${res.status}`,
33
- };
34
- }
35
- return downResult(`HTTP ${res.status}`);
36
- }
37
- catch (e) {
38
- if (e instanceof Error && e.name === 'AbortError')
39
- return downResult('Request timed out');
40
- return downResult(e instanceof Error ? e.message : 'Unknown error');
41
- }
42
- }
43
- const checkLlmGatewayHealth = () => fetchEndpointHealth('https://gateway.us.posthog.com/_liveness');
44
- exports.checkLlmGatewayHealth = checkLlmGatewayHealth;
45
- const checkMcpHealth = () => fetchEndpointHealth('https://mcp.posthog.com/');
46
- exports.checkMcpHealth = checkMcpHealth;
47
- const checkGithubReleasesHealth = () => fetchEndpointHealth(`${constants_1.REMOTE_SKILLS_BASE_URL}/skill-menu.json`);
48
- exports.checkGithubReleasesHealth = checkGithubReleasesHealth;
49
- //# sourceMappingURL=endpoints.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../../../src/lib/health-checks/endpoints.ts"],"names":[],"mappings":";;;AAAA,4CAAsD;AACtD,mCAAqE;AAErE,8EAA8E;AAC9E,gCAAgC;AAChC,EAAE;AACF,2EAA2E;AAC3E,sEAAsE;AACtE,EAAE;AACF,gCAAgC;AAChC,uEAAuE;AACvE,4CAA4C;AAC5C,EAAE;AACF,0BAA0B;AAC1B,8CAA8C;AAC9C,oCAAoC;AACpC,8EAA8E;AAE9E,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,EAAE,MAAM,EAAE,2BAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,GAAW,EACX,SAAS,GAAG,IAAI,EAChB,cAAc,GAAG,GAAG;IAEpB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,YAAY,CAAC,GAAG,CAAC,CAAC;QAElB,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YAClC,OAAO;gBACL,MAAM,EAAE,2BAAmB,CAAC,OAAO;gBACnC,YAAY,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE;aACnC,CAAC;QACJ,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;YAC/C,OAAO,UAAU,CAAC,mBAAmB,CAAC,CAAC;QACzC,OAAO,UAAU,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAEM,MAAM,qBAAqB,GAAG,GAA8B,EAAE,CACnE,mBAAmB,CAAC,0CAA0C,CAAC,CAAC;AADrD,QAAA,qBAAqB,yBACgC;AAE3D,MAAM,cAAc,GAAG,GAA8B,EAAE,CAC5D,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;AADrC,QAAA,cAAc,kBACuB;AAE3C,MAAM,yBAAyB,GAAG,GAA8B,EAAE,CACvE,mBAAmB,CAAC,GAAG,kCAAsB,kBAAkB,CAAC,CAAC;AADtD,QAAA,yBAAyB,6BAC6B","sourcesContent":["import { REMOTE_SKILLS_BASE_URL } from '../constants';\nimport { ServiceHealthStatus, type BaseHealthResult } from './types';\n\n// ---------------------------------------------------------------------------\n// Direct endpoint health checks\n//\n// These ping PostHog-owned services directly (no Statuspage intermediary).\n// A non-expected HTTP status or any network error is treated as Down.\n//\n// LLM Gateway – FastAPI service\n// Source: posthog/services/llm-gateway/src/llm_gateway/api/health.py\n// GET /_liveness → 200 {\"status\":\"alive\"}\n//\n// MCP – Cloudflare Worker\n// Source: posthog/services/mcp/src/index.ts\n// GET / → 200 (HTML landing page)\n// ---------------------------------------------------------------------------\n\nfunction downResult(error: string): BaseHealthResult {\n return { status: ServiceHealthStatus.Down, error };\n}\n\nasync function fetchEndpointHealth(\n url: string,\n timeoutMs = 5000,\n expectedStatus = 200,\n): Promise<BaseHealthResult> {\n try {\n const controller = new AbortController();\n const tid = setTimeout(() => controller.abort(), timeoutMs);\n const res = await fetch(url, { signal: controller.signal });\n clearTimeout(tid);\n\n if (res.status === expectedStatus) {\n return {\n status: ServiceHealthStatus.Healthy,\n rawIndicator: `HTTP ${res.status}`,\n };\n }\n return downResult(`HTTP ${res.status}`);\n } catch (e) {\n if (e instanceof Error && e.name === 'AbortError')\n return downResult('Request timed out');\n return downResult(e instanceof Error ? e.message : 'Unknown error');\n }\n}\n\nexport const checkLlmGatewayHealth = (): Promise<BaseHealthResult> =>\n fetchEndpointHealth('https://gateway.us.posthog.com/_liveness');\n\nexport const checkMcpHealth = (): Promise<BaseHealthResult> =>\n fetchEndpointHealth('https://mcp.posthog.com/');\n\nexport const checkGithubReleasesHealth = (): Promise<BaseHealthResult> =>\n fetchEndpointHealth(`${REMOTE_SKILLS_BASE_URL}/skill-menu.json`);\n"]}
@@ -1,4 +0,0 @@
1
- export { ServiceHealthStatus, type BaseHealthResult, type ComponentStatus, type ComponentHealthResult, type AllServicesHealth, type HealthCheckKey, } from './types';
2
- export { checkAnthropicHealth, checkPosthogOverallHealth, checkPosthogComponentHealth, checkGithubHealth, checkNpmOverallHealth, checkNpmComponentHealth, checkCloudflareOverallHealth, checkCloudflareComponentHealth, } from './statuspage';
3
- export { checkLlmGatewayHealth, checkMcpHealth, checkGithubReleasesHealth, } from './endpoints';
4
- export { type WizardReadinessConfig, DEFAULT_WIZARD_READINESS_CONFIG, checkAllExternalServices, WizardReadiness, type WizardReadinessResult, evaluateWizardReadiness, } from './readiness';
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.evaluateWizardReadiness = exports.WizardReadiness = exports.checkAllExternalServices = exports.DEFAULT_WIZARD_READINESS_CONFIG = exports.checkGithubReleasesHealth = exports.checkMcpHealth = exports.checkLlmGatewayHealth = exports.checkCloudflareComponentHealth = exports.checkCloudflareOverallHealth = exports.checkNpmComponentHealth = exports.checkNpmOverallHealth = exports.checkGithubHealth = exports.checkPosthogComponentHealth = exports.checkPosthogOverallHealth = exports.checkAnthropicHealth = exports.ServiceHealthStatus = void 0;
4
- var types_1 = require("./types");
5
- Object.defineProperty(exports, "ServiceHealthStatus", { enumerable: true, get: function () { return types_1.ServiceHealthStatus; } });
6
- var statuspage_1 = require("./statuspage");
7
- Object.defineProperty(exports, "checkAnthropicHealth", { enumerable: true, get: function () { return statuspage_1.checkAnthropicHealth; } });
8
- Object.defineProperty(exports, "checkPosthogOverallHealth", { enumerable: true, get: function () { return statuspage_1.checkPosthogOverallHealth; } });
9
- Object.defineProperty(exports, "checkPosthogComponentHealth", { enumerable: true, get: function () { return statuspage_1.checkPosthogComponentHealth; } });
10
- Object.defineProperty(exports, "checkGithubHealth", { enumerable: true, get: function () { return statuspage_1.checkGithubHealth; } });
11
- Object.defineProperty(exports, "checkNpmOverallHealth", { enumerable: true, get: function () { return statuspage_1.checkNpmOverallHealth; } });
12
- Object.defineProperty(exports, "checkNpmComponentHealth", { enumerable: true, get: function () { return statuspage_1.checkNpmComponentHealth; } });
13
- Object.defineProperty(exports, "checkCloudflareOverallHealth", { enumerable: true, get: function () { return statuspage_1.checkCloudflareOverallHealth; } });
14
- Object.defineProperty(exports, "checkCloudflareComponentHealth", { enumerable: true, get: function () { return statuspage_1.checkCloudflareComponentHealth; } });
15
- var endpoints_1 = require("./endpoints");
16
- Object.defineProperty(exports, "checkLlmGatewayHealth", { enumerable: true, get: function () { return endpoints_1.checkLlmGatewayHealth; } });
17
- Object.defineProperty(exports, "checkMcpHealth", { enumerable: true, get: function () { return endpoints_1.checkMcpHealth; } });
18
- Object.defineProperty(exports, "checkGithubReleasesHealth", { enumerable: true, get: function () { return endpoints_1.checkGithubReleasesHealth; } });
19
- var readiness_1 = require("./readiness");
20
- Object.defineProperty(exports, "DEFAULT_WIZARD_READINESS_CONFIG", { enumerable: true, get: function () { return readiness_1.DEFAULT_WIZARD_READINESS_CONFIG; } });
21
- Object.defineProperty(exports, "checkAllExternalServices", { enumerable: true, get: function () { return readiness_1.checkAllExternalServices; } });
22
- Object.defineProperty(exports, "WizardReadiness", { enumerable: true, get: function () { return readiness_1.WizardReadiness; } });
23
- Object.defineProperty(exports, "evaluateWizardReadiness", { enumerable: true, get: function () { return readiness_1.evaluateWizardReadiness; } });
24
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/health-checks/index.ts"],"names":[],"mappings":";;;AAAA,iCAOiB;AANf,4GAAA,mBAAmB,OAAA;AAQrB,2CASsB;AARpB,kHAAA,oBAAoB,OAAA;AACpB,uHAAA,yBAAyB,OAAA;AACzB,yHAAA,2BAA2B,OAAA;AAC3B,+GAAA,iBAAiB,OAAA;AACjB,mHAAA,qBAAqB,OAAA;AACrB,qHAAA,uBAAuB,OAAA;AACvB,0HAAA,4BAA4B,OAAA;AAC5B,4HAAA,8BAA8B,OAAA;AAGhC,yCAIqB;AAHnB,kHAAA,qBAAqB,OAAA;AACrB,2GAAA,cAAc,OAAA;AACd,sHAAA,yBAAyB,OAAA;AAG3B,yCAOqB;AALnB,4HAAA,+BAA+B,OAAA;AAC/B,qHAAA,wBAAwB,OAAA;AACxB,4GAAA,eAAe,OAAA;AAEf,oHAAA,uBAAuB,OAAA","sourcesContent":["export {\n ServiceHealthStatus,\n type BaseHealthResult,\n type ComponentStatus,\n type ComponentHealthResult,\n type AllServicesHealth,\n type HealthCheckKey,\n} from './types';\n\nexport {\n checkAnthropicHealth,\n checkPosthogOverallHealth,\n checkPosthogComponentHealth,\n checkGithubHealth,\n checkNpmOverallHealth,\n checkNpmComponentHealth,\n checkCloudflareOverallHealth,\n checkCloudflareComponentHealth,\n} from './statuspage';\n\nexport {\n checkLlmGatewayHealth,\n checkMcpHealth,\n checkGithubReleasesHealth,\n} from './endpoints';\n\nexport {\n type WizardReadinessConfig,\n DEFAULT_WIZARD_READINESS_CONFIG,\n checkAllExternalServices,\n WizardReadiness,\n type WizardReadinessResult,\n evaluateWizardReadiness,\n} from './readiness';\n"]}
@@ -1,29 +0,0 @@
1
- import { type AllServicesHealth, type HealthCheckKey } from './types';
2
- export declare const SERVICE_LABELS: Record<HealthCheckKey, string>;
3
- export interface WizardReadinessConfig {
4
- /** Services where status=Down blocks the run (readiness=No). */
5
- downBlocksRun: HealthCheckKey[];
6
- /** Services where status=Degraded (or worse) blocks the run (readiness=No). */
7
- degradedBlocksRun?: HealthCheckKey[];
8
- }
9
- /**
10
- * See README section "Health checks" for the full rationale.
11
- * Adjust these arrays to change what blocks a wizard run.
12
- */
13
- export declare const DEFAULT_WIZARD_READINESS_CONFIG: WizardReadinessConfig;
14
- export declare function checkAllExternalServices(): Promise<AllServicesHealth>;
15
- export declare enum WizardReadiness {
16
- Yes = "yes",
17
- No = "no",
18
- YesWithWarnings = "yes_with_warnings"
19
- }
20
- export interface WizardReadinessResult {
21
- decision: WizardReadiness;
22
- health: AllServicesHealth;
23
- reasons: string[];
24
- }
25
- export declare function evaluateWizardReadiness(config?: WizardReadinessConfig): Promise<WizardReadinessResult>;
26
- /**
27
- * Get the keys of services that would block a wizard run per the given config.
28
- */
29
- export declare function getBlockingServiceKeys(health: AllServicesHealth, config?: WizardReadinessConfig): HealthCheckKey[];
@@ -1,188 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WizardReadiness = exports.DEFAULT_WIZARD_READINESS_CONFIG = exports.SERVICE_LABELS = void 0;
4
- exports.checkAllExternalServices = checkAllExternalServices;
5
- exports.evaluateWizardReadiness = evaluateWizardReadiness;
6
- exports.getBlockingServiceKeys = getBlockingServiceKeys;
7
- const types_1 = require("./types");
8
- const statuspage_1 = require("./statuspage");
9
- const endpoints_1 = require("./endpoints");
10
- const debug_1 = require("../../utils/debug");
11
- // ---------------------------------------------------------------------------
12
- // Service labels (used in human-readable reason strings)
13
- // ---------------------------------------------------------------------------
14
- exports.SERVICE_LABELS = {
15
- anthropic: 'Anthropic',
16
- posthogOverall: 'PostHog',
17
- posthogComponents: 'PostHog (components)',
18
- github: 'GitHub',
19
- npmOverall: 'npm',
20
- npmComponents: 'npm (components)',
21
- cloudflareOverall: 'Cloudflare',
22
- cloudflareComponents: 'Cloudflare (components)',
23
- llmGateway: 'LLM Gateway',
24
- mcp: 'MCP',
25
- githubReleases: 'GitHub Releases',
26
- };
27
- /**
28
- * See README section "Health checks" for the full rationale.
29
- * Adjust these arrays to change what blocks a wizard run.
30
- */
31
- exports.DEFAULT_WIZARD_READINESS_CONFIG = {
32
- downBlocksRun: [
33
- 'anthropic',
34
- 'posthogOverall',
35
- 'npmOverall',
36
- 'llmGateway',
37
- 'mcp',
38
- 'githubReleases',
39
- ],
40
- degradedBlocksRun: ['anthropic'],
41
- };
42
- // ---------------------------------------------------------------------------
43
- // Aggregate check
44
- // ---------------------------------------------------------------------------
45
- async function checkAllExternalServices() {
46
- const [anthropic, posthogOverall, posthogComponents, github, npmOverall, npmComponents, cloudflareOverall, cloudflareComponents, llmGateway, mcp, githubReleases,] = await Promise.all([
47
- (0, statuspage_1.checkAnthropicHealth)(),
48
- (0, statuspage_1.checkPosthogOverallHealth)(),
49
- (0, statuspage_1.checkPosthogComponentHealth)(),
50
- (0, statuspage_1.checkGithubHealth)(),
51
- (0, statuspage_1.checkNpmOverallHealth)(),
52
- (0, statuspage_1.checkNpmComponentHealth)(),
53
- (0, statuspage_1.checkCloudflareOverallHealth)(),
54
- (0, statuspage_1.checkCloudflareComponentHealth)(),
55
- (0, endpoints_1.checkLlmGatewayHealth)(),
56
- (0, endpoints_1.checkMcpHealth)(),
57
- (0, endpoints_1.checkGithubReleasesHealth)(),
58
- ]);
59
- return {
60
- anthropic,
61
- posthogOverall,
62
- posthogComponents,
63
- github,
64
- npmOverall,
65
- npmComponents,
66
- cloudflareOverall,
67
- cloudflareComponents,
68
- llmGateway,
69
- mcp,
70
- githubReleases,
71
- };
72
- }
73
- // ---------------------------------------------------------------------------
74
- // Wizard readiness evaluation
75
- // ---------------------------------------------------------------------------
76
- var WizardReadiness;
77
- (function (WizardReadiness) {
78
- WizardReadiness["Yes"] = "yes";
79
- WizardReadiness["No"] = "no";
80
- WizardReadiness["YesWithWarnings"] = "yes_with_warnings";
81
- })(WizardReadiness || (exports.WizardReadiness = WizardReadiness = {}));
82
- function describeResult(label, h) {
83
- const parts = [`${label}: ${h.status}`];
84
- if (h.rawIndicator)
85
- parts.push(`indicator=${h.rawIndicator}`);
86
- if (h.error)
87
- parts.push(h.error);
88
- return parts.join(' — ');
89
- }
90
- const MAX_COMPONENT_NAMES = 8;
91
- function describeComponents(label, h) {
92
- const affected = h.degradedOrDownComponents;
93
- if (!affected || affected.length === 0)
94
- return `${label} components: all operational`;
95
- const shown = affected
96
- .slice(0, MAX_COMPONENT_NAMES)
97
- .map((c) => `${c.name} (${c.status})`);
98
- const suffix = affected.length > MAX_COMPONENT_NAMES
99
- ? `, +${affected.length - MAX_COMPONENT_NAMES} more`
100
- : '';
101
- return `${label} components impacted: ${shown.join(', ')}${suffix}`;
102
- }
103
- const READINESS_TIMEOUT_MS = 10_000;
104
- async function evaluateWizardReadiness(config = exports.DEFAULT_WIZARD_READINESS_CONFIG) {
105
- try {
106
- const health = await Promise.race([
107
- checkAllExternalServices(),
108
- new Promise((resolve) => setTimeout(() => resolve(allUnknown('Health check timed out')), READINESS_TIMEOUT_MS)),
109
- ]);
110
- const reasons = [];
111
- for (const key of Object.keys(health)) {
112
- const result = health[key];
113
- const label = exports.SERVICE_LABELS[key];
114
- reasons.push(describeResult(label, result));
115
- if ('degradedOrDownComponents' in result) {
116
- reasons.push(describeComponents(label, result));
117
- }
118
- }
119
- const blockingKeys = getBlockingServiceKeys(health, config);
120
- if (blockingKeys.length > 0) {
121
- (0, debug_1.logToFile)(`[health-checks] blocked by: ${blockingKeys.join(', ')}`);
122
- return { decision: WizardReadiness.No, health, reasons };
123
- }
124
- const hasWarnings = Object.values(health).some((h) => h.status !== types_1.ServiceHealthStatus.Healthy);
125
- if (hasWarnings) {
126
- return { decision: WizardReadiness.YesWithWarnings, health, reasons };
127
- }
128
- return { decision: WizardReadiness.Yes, health, reasons };
129
- }
130
- catch (err) {
131
- (0, debug_1.logToFile)(`[health-checks] error: ${err instanceof Error ? err.message : err}`);
132
- // Health checks must never block the wizard run
133
- return {
134
- decision: WizardReadiness.Yes,
135
- health: allUnknown('Unexpected error'),
136
- reasons: ['Health check failed unexpectedly — proceeding anyway'],
137
- };
138
- }
139
- }
140
- // ---------------------------------------------------------------------------
141
- // Blocking service detection
142
- // ---------------------------------------------------------------------------
143
- /** Keys that are component-level detail, not top-level services. */
144
- const COMPONENT_KEYS = [
145
- 'posthogComponents',
146
- 'npmComponents',
147
- 'cloudflareComponents',
148
- ];
149
- /**
150
- * Get the keys of services that would block a wizard run per the given config.
151
- */
152
- function getBlockingServiceKeys(health, config = exports.DEFAULT_WIZARD_READINESS_CONFIG) {
153
- return Object.keys(health).filter((key) => {
154
- if (COMPONENT_KEYS.includes(key))
155
- return false;
156
- const result = health[key];
157
- if (config.downBlocksRun.includes(key) &&
158
- result.status === types_1.ServiceHealthStatus.Down) {
159
- return true;
160
- }
161
- if ((config.degradedBlocksRun ?? []).includes(key) &&
162
- result.status !== types_1.ServiceHealthStatus.Healthy) {
163
- return true;
164
- }
165
- return false;
166
- });
167
- }
168
- /** Build an AllServicesHealth where every service is Degraded with the given error. */
169
- function allUnknown(error) {
170
- const base = {
171
- status: types_1.ServiceHealthStatus.Degraded,
172
- error,
173
- };
174
- return {
175
- anthropic: base,
176
- posthogOverall: base,
177
- posthogComponents: { ...base },
178
- github: base,
179
- npmOverall: base,
180
- npmComponents: { ...base },
181
- cloudflareOverall: base,
182
- cloudflareComponents: { ...base },
183
- llmGateway: base,
184
- mcp: base,
185
- githubReleases: base,
186
- };
187
- }
188
- //# sourceMappingURL=readiness.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../../../src/lib/health-checks/readiness.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ServiceHealthStatus,\n type AllServicesHealth,\n type BaseHealthResult,\n type ComponentHealthResult,\n type HealthCheckKey,\n} from './types';\nimport {\n checkAnthropicHealth,\n checkPosthogOverallHealth,\n checkPosthogComponentHealth,\n checkGithubHealth,\n checkNpmOverallHealth,\n checkNpmComponentHealth,\n checkCloudflareOverallHealth,\n checkCloudflareComponentHealth,\n} from './statuspage';\nimport {\n checkLlmGatewayHealth,\n checkMcpHealth,\n checkGithubReleasesHealth,\n} from './endpoints';\nimport { logToFile } from '../../utils/debug';\n\n// ---------------------------------------------------------------------------\n// Service labels (used in human-readable reason strings)\n// ---------------------------------------------------------------------------\n\nexport const SERVICE_LABELS: Record<HealthCheckKey, string> = {\n anthropic: 'Anthropic',\n posthogOverall: 'PostHog',\n posthogComponents: 'PostHog (components)',\n github: 'GitHub',\n npmOverall: 'npm',\n npmComponents: 'npm (components)',\n cloudflareOverall: 'Cloudflare',\n cloudflareComponents: 'Cloudflare (components)',\n llmGateway: 'LLM Gateway',\n mcp: 'MCP',\n githubReleases: 'GitHub Releases',\n};\n\n// ---------------------------------------------------------------------------\n// Readiness config\n// ---------------------------------------------------------------------------\n\nexport interface WizardReadinessConfig {\n /** Services where status=Down blocks the run (readiness=No). */\n downBlocksRun: HealthCheckKey[];\n /** Services where status=Degraded (or worse) blocks the run (readiness=No). */\n degradedBlocksRun?: HealthCheckKey[];\n}\n\n/**\n * See README section \"Health checks\" for the full rationale.\n * Adjust these arrays to change what blocks a wizard run.\n */\nexport const DEFAULT_WIZARD_READINESS_CONFIG: WizardReadinessConfig = {\n downBlocksRun: [\n 'anthropic',\n 'posthogOverall',\n 'npmOverall',\n 'llmGateway',\n 'mcp',\n 'githubReleases',\n ],\n degradedBlocksRun: ['anthropic'],\n};\n\n// ---------------------------------------------------------------------------\n// Aggregate check\n// ---------------------------------------------------------------------------\n\nexport async function checkAllExternalServices(): Promise<AllServicesHealth> {\n const [\n anthropic,\n posthogOverall,\n posthogComponents,\n github,\n npmOverall,\n npmComponents,\n cloudflareOverall,\n cloudflareComponents,\n llmGateway,\n mcp,\n githubReleases,\n ] = await Promise.all([\n checkAnthropicHealth(),\n checkPosthogOverallHealth(),\n checkPosthogComponentHealth(),\n checkGithubHealth(),\n checkNpmOverallHealth(),\n checkNpmComponentHealth(),\n checkCloudflareOverallHealth(),\n checkCloudflareComponentHealth(),\n checkLlmGatewayHealth(),\n checkMcpHealth(),\n checkGithubReleasesHealth(),\n ]);\n\n return {\n anthropic,\n posthogOverall,\n posthogComponents,\n github,\n npmOverall,\n npmComponents,\n cloudflareOverall,\n cloudflareComponents,\n llmGateway,\n mcp,\n githubReleases,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Wizard readiness evaluation\n// ---------------------------------------------------------------------------\n\nexport enum WizardReadiness {\n Yes = 'yes',\n No = 'no',\n YesWithWarnings = 'yes_with_warnings',\n}\n\nexport interface WizardReadinessResult {\n decision: WizardReadiness;\n health: AllServicesHealth;\n reasons: string[];\n}\n\nfunction describeResult(label: string, h: BaseHealthResult): string {\n const parts = [`${label}: ${h.status}`];\n if (h.rawIndicator) parts.push(`indicator=${h.rawIndicator}`);\n if (h.error) parts.push(h.error);\n return parts.join(' — ');\n}\n\nconst MAX_COMPONENT_NAMES = 8;\n\nfunction describeComponents(label: string, h: ComponentHealthResult): string {\n const affected = h.degradedOrDownComponents;\n if (!affected || affected.length === 0)\n return `${label} components: all operational`;\n const shown = affected\n .slice(0, MAX_COMPONENT_NAMES)\n .map((c) => `${c.name} (${c.status})`);\n const suffix =\n affected.length > MAX_COMPONENT_NAMES\n ? `, +${affected.length - MAX_COMPONENT_NAMES} more`\n : '';\n return `${label} components impacted: ${shown.join(', ')}${suffix}`;\n}\n\nconst READINESS_TIMEOUT_MS = 10_000;\n\nexport async function evaluateWizardReadiness(\n config: WizardReadinessConfig = DEFAULT_WIZARD_READINESS_CONFIG,\n): Promise<WizardReadinessResult> {\n try {\n const health = await Promise.race([\n checkAllExternalServices(),\n new Promise<AllServicesHealth>((resolve) =>\n setTimeout(\n () => resolve(allUnknown('Health check timed out')),\n READINESS_TIMEOUT_MS,\n ),\n ),\n ]);\n\n const reasons: string[] = [];\n\n for (const key of Object.keys(health) as HealthCheckKey[]) {\n const result = health[key];\n const label = SERVICE_LABELS[key];\n\n reasons.push(describeResult(label, result));\n\n if ('degradedOrDownComponents' in result) {\n reasons.push(describeComponents(label, result));\n }\n }\n\n const blockingKeys = getBlockingServiceKeys(health, config);\n if (blockingKeys.length > 0) {\n logToFile(`[health-checks] blocked by: ${blockingKeys.join(', ')}`);\n return { decision: WizardReadiness.No, health, reasons };\n }\n\n const hasWarnings = Object.values(health).some(\n (h) => h.status !== ServiceHealthStatus.Healthy,\n );\n\n if (hasWarnings) {\n return { decision: WizardReadiness.YesWithWarnings, health, reasons };\n }\n\n return { decision: WizardReadiness.Yes, health, reasons };\n } catch (err) {\n logToFile(\n `[health-checks] error: ${err instanceof Error ? err.message : err}`,\n );\n // Health checks must never block the wizard run\n return {\n decision: WizardReadiness.Yes,\n health: allUnknown('Unexpected error'),\n reasons: ['Health check failed unexpectedly — proceeding anyway'],\n };\n }\n}\n\n// ---------------------------------------------------------------------------\n// Blocking service detection\n// ---------------------------------------------------------------------------\n\n/** Keys that are component-level detail, not top-level services. */\nconst COMPONENT_KEYS: HealthCheckKey[] = [\n 'posthogComponents',\n 'npmComponents',\n 'cloudflareComponents',\n];\n\n/**\n * Get the keys of services that would block a wizard run per the given config.\n */\nexport function getBlockingServiceKeys(\n health: AllServicesHealth,\n config: WizardReadinessConfig = DEFAULT_WIZARD_READINESS_CONFIG,\n): HealthCheckKey[] {\n return (Object.keys(health) as HealthCheckKey[]).filter((key) => {\n if (COMPONENT_KEYS.includes(key)) return false;\n const result = health[key];\n if (\n config.downBlocksRun.includes(key) &&\n result.status === ServiceHealthStatus.Down\n ) {\n return true;\n }\n if (\n (config.degradedBlocksRun ?? []).includes(key) &&\n result.status !== ServiceHealthStatus.Healthy\n ) {\n return true;\n }\n return false;\n });\n}\n\n/** Build an AllServicesHealth where every service is Degraded with the given error. */\nfunction allUnknown(error: string): AllServicesHealth {\n const base: BaseHealthResult = {\n status: ServiceHealthStatus.Degraded,\n error,\n };\n return {\n anthropic: base,\n posthogOverall: base,\n posthogComponents: { ...base },\n github: base,\n npmOverall: base,\n npmComponents: { ...base },\n cloudflareOverall: base,\n cloudflareComponents: { ...base },\n llmGateway: base,\n mcp: base,\n githubReleases: base,\n };\n}\n"]}
@@ -1,9 +0,0 @@
1
- import { type BaseHealthResult, type ComponentHealthResult } from './types';
2
- export declare const checkAnthropicHealth: () => Promise<BaseHealthResult>;
3
- export declare const checkPosthogOverallHealth: () => Promise<BaseHealthResult>;
4
- export declare const checkPosthogComponentHealth: () => Promise<ComponentHealthResult>;
5
- export declare const checkGithubHealth: () => Promise<BaseHealthResult>;
6
- export declare const checkNpmOverallHealth: () => Promise<BaseHealthResult>;
7
- export declare const checkNpmComponentHealth: () => Promise<ComponentHealthResult>;
8
- export declare const checkCloudflareOverallHealth: () => Promise<BaseHealthResult>;
9
- export declare const checkCloudflareComponentHealth: () => Promise<ComponentHealthResult>;
@@ -1,105 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkCloudflareComponentHealth = exports.checkCloudflareOverallHealth = exports.checkNpmComponentHealth = exports.checkNpmOverallHealth = exports.checkGithubHealth = exports.checkPosthogComponentHealth = exports.checkPosthogOverallHealth = exports.checkAnthropicHealth = void 0;
4
- const types_1 = require("./types");
5
- function mapIndicator(v) {
6
- switch (v) {
7
- case 'none':
8
- return types_1.ServiceHealthStatus.Healthy;
9
- case 'minor':
10
- return types_1.ServiceHealthStatus.Degraded;
11
- case 'major':
12
- case 'critical':
13
- return types_1.ServiceHealthStatus.Down;
14
- default:
15
- return types_1.ServiceHealthStatus.Degraded;
16
- }
17
- }
18
- function mapComponentRaw(v) {
19
- switch (v) {
20
- case 'operational':
21
- return types_1.ServiceHealthStatus.Healthy;
22
- case 'degraded_performance':
23
- case 'under_maintenance':
24
- return types_1.ServiceHealthStatus.Degraded;
25
- case 'partial_outage':
26
- case 'major_outage':
27
- return types_1.ServiceHealthStatus.Down;
28
- default:
29
- return types_1.ServiceHealthStatus.Degraded;
30
- }
31
- }
32
- function errResult(error) {
33
- return { status: types_1.ServiceHealthStatus.Degraded, error };
34
- }
35
- async function fetchStatuspageIndicator(url, timeoutMs = 5000) {
36
- try {
37
- const controller = new AbortController();
38
- const tid = setTimeout(() => controller.abort(), timeoutMs);
39
- const res = await fetch(url, { signal: controller.signal });
40
- clearTimeout(tid);
41
- if (!res.ok)
42
- return errResult(`HTTP ${res.status}`);
43
- const data = (await res.json());
44
- const indicator = data.status?.indicator ?? null;
45
- return {
46
- status: mapIndicator(indicator),
47
- rawIndicator: indicator ?? undefined,
48
- };
49
- }
50
- catch (e) {
51
- if (e instanceof Error && e.name === 'AbortError')
52
- return errResult('Request timed out');
53
- return errResult(e instanceof Error ? e.message : 'Unknown error');
54
- }
55
- }
56
- async function fetchStatuspageSummary(url, timeoutMs = 5000) {
57
- try {
58
- const controller = new AbortController();
59
- const tid = setTimeout(() => controller.abort(), timeoutMs);
60
- const res = await fetch(url, { signal: controller.signal });
61
- clearTimeout(tid);
62
- if (!res.ok)
63
- return errResult(`HTTP ${res.status}`);
64
- const data = (await res.json());
65
- const indicator = data.status?.indicator ?? null;
66
- const overall = mapIndicator(indicator);
67
- const affected = (data.components ?? [])
68
- .map((c) => ({
69
- name: c.name,
70
- status: mapComponentRaw(c.status),
71
- rawStatus: c.status,
72
- }))
73
- .filter((c) => c.status !== types_1.ServiceHealthStatus.Healthy);
74
- return {
75
- status: affected.length > 0 ? types_1.ServiceHealthStatus.Degraded : overall,
76
- rawIndicator: indicator ?? undefined,
77
- degradedOrDownComponents: affected.length > 0 ? affected : undefined,
78
- };
79
- }
80
- catch (e) {
81
- if (e instanceof Error && e.name === 'AbortError')
82
- return errResult('Request timed out');
83
- return errResult(e instanceof Error ? e.message : 'Unknown error');
84
- }
85
- }
86
- // ---------------------------------------------------------------------------
87
- // Individual statuspage-backed checks
88
- // ---------------------------------------------------------------------------
89
- const checkAnthropicHealth = () => fetchStatuspageIndicator('https://status.claude.com/api/v2/status.json');
90
- exports.checkAnthropicHealth = checkAnthropicHealth;
91
- const checkPosthogOverallHealth = () => fetchStatuspageIndicator('https://www.posthogstatus.com/api/v2/status.json');
92
- exports.checkPosthogOverallHealth = checkPosthogOverallHealth;
93
- const checkPosthogComponentHealth = () => fetchStatuspageSummary('https://www.posthogstatus.com/api/v2/summary.json');
94
- exports.checkPosthogComponentHealth = checkPosthogComponentHealth;
95
- const checkGithubHealth = () => fetchStatuspageIndicator('https://www.githubstatus.com/api/v2/status.json');
96
- exports.checkGithubHealth = checkGithubHealth;
97
- const checkNpmOverallHealth = () => fetchStatuspageIndicator('https://status.npmjs.org/api/v2/status.json');
98
- exports.checkNpmOverallHealth = checkNpmOverallHealth;
99
- const checkNpmComponentHealth = () => fetchStatuspageSummary('https://status.npmjs.org/api/v2/summary.json');
100
- exports.checkNpmComponentHealth = checkNpmComponentHealth;
101
- const checkCloudflareOverallHealth = () => fetchStatuspageIndicator('https://www.cloudflarestatus.com/api/v2/status.json');
102
- exports.checkCloudflareOverallHealth = checkCloudflareOverallHealth;
103
- const checkCloudflareComponentHealth = () => fetchStatuspageSummary('https://www.cloudflarestatus.com/api/v2/summary.json');
104
- exports.checkCloudflareComponentHealth = checkCloudflareComponentHealth;
105
- //# sourceMappingURL=statuspage.js.map