@allstak/wizard 0.1.3

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 (487) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/README.md +79 -0
  3. package/dist/api/auth-client.d.ts +22 -0
  4. package/dist/api/auth-client.d.ts.map +1 -0
  5. package/dist/api/auth-client.js +65 -0
  6. package/dist/api/auth-client.js.map +1 -0
  7. package/dist/api/auth.d.ts +39 -0
  8. package/dist/api/auth.d.ts.map +1 -0
  9. package/dist/api/auth.js +69 -0
  10. package/dist/api/auth.js.map +1 -0
  11. package/dist/api/client.d.ts +15 -0
  12. package/dist/api/client.d.ts.map +1 -0
  13. package/dist/api/client.js +19 -0
  14. package/dist/api/client.js.map +1 -0
  15. package/dist/api/http.d.ts +44 -0
  16. package/dist/api/http.d.ts.map +1 -0
  17. package/dist/api/http.js +130 -0
  18. package/dist/api/http.js.map +1 -0
  19. package/dist/api/index.d.ts +12 -0
  20. package/dist/api/index.d.ts.map +1 -0
  21. package/dist/api/index.js +12 -0
  22. package/dist/api/index.js.map +1 -0
  23. package/dist/api/orgs-client.d.ts +16 -0
  24. package/dist/api/orgs-client.d.ts.map +1 -0
  25. package/dist/api/orgs-client.js +36 -0
  26. package/dist/api/orgs-client.js.map +1 -0
  27. package/dist/api/projects-client.d.ts +27 -0
  28. package/dist/api/projects-client.d.ts.map +1 -0
  29. package/dist/api/projects-client.js +58 -0
  30. package/dist/api/projects-client.js.map +1 -0
  31. package/dist/api/setup-doctor-client.d.ts +31 -0
  32. package/dist/api/setup-doctor-client.d.ts.map +1 -0
  33. package/dist/api/setup-doctor-client.js +68 -0
  34. package/dist/api/setup-doctor-client.js.map +1 -0
  35. package/dist/api/types.d.ts +92 -0
  36. package/dist/api/types.d.ts.map +1 -0
  37. package/dist/api/types.js +9 -0
  38. package/dist/api/types.js.map +1 -0
  39. package/dist/cli.d.ts +3 -0
  40. package/dist/cli.d.ts.map +1 -0
  41. package/dist/cli.js +303 -0
  42. package/dist/cli.js.map +1 -0
  43. package/dist/commands/_context.d.ts +37 -0
  44. package/dist/commands/_context.d.ts.map +1 -0
  45. package/dist/commands/_context.js +61 -0
  46. package/dist/commands/_context.js.map +1 -0
  47. package/dist/commands/config-cmd.d.ts +24 -0
  48. package/dist/commands/config-cmd.d.ts.map +1 -0
  49. package/dist/commands/config-cmd.js +137 -0
  50. package/dist/commands/config-cmd.js.map +1 -0
  51. package/dist/commands/doctor.d.ts +58 -0
  52. package/dist/commands/doctor.d.ts.map +1 -0
  53. package/dist/commands/doctor.js +389 -0
  54. package/dist/commands/doctor.js.map +1 -0
  55. package/dist/commands/init.d.ts +28 -0
  56. package/dist/commands/init.d.ts.map +1 -0
  57. package/dist/commands/init.js +157 -0
  58. package/dist/commands/init.js.map +1 -0
  59. package/dist/commands/list.d.ts +3 -0
  60. package/dist/commands/list.d.ts.map +1 -0
  61. package/dist/commands/list.js +14 -0
  62. package/dist/commands/list.js.map +1 -0
  63. package/dist/commands/login.d.ts +27 -0
  64. package/dist/commands/login.d.ts.map +1 -0
  65. package/dist/commands/login.js +116 -0
  66. package/dist/commands/login.js.map +1 -0
  67. package/dist/commands/logout.d.ts +15 -0
  68. package/dist/commands/logout.d.ts.map +1 -0
  69. package/dist/commands/logout.js +36 -0
  70. package/dist/commands/logout.js.map +1 -0
  71. package/dist/commands/orgs.d.ts +14 -0
  72. package/dist/commands/orgs.d.ts.map +1 -0
  73. package/dist/commands/orgs.js +39 -0
  74. package/dist/commands/orgs.js.map +1 -0
  75. package/dist/commands/projects.d.ts +21 -0
  76. package/dist/commands/projects.d.ts.map +1 -0
  77. package/dist/commands/projects.js +86 -0
  78. package/dist/commands/projects.js.map +1 -0
  79. package/dist/commands/repair.d.ts +12 -0
  80. package/dist/commands/repair.d.ts.map +1 -0
  81. package/dist/commands/repair.js +45 -0
  82. package/dist/commands/repair.js.map +1 -0
  83. package/dist/commands/restore.d.ts +32 -0
  84. package/dist/commands/restore.d.ts.map +1 -0
  85. package/dist/commands/restore.js +120 -0
  86. package/dist/commands/restore.js.map +1 -0
  87. package/dist/commands/uninstall.d.ts +13 -0
  88. package/dist/commands/uninstall.d.ts.map +1 -0
  89. package/dist/commands/uninstall.js +53 -0
  90. package/dist/commands/uninstall.js.map +1 -0
  91. package/dist/commands/whoami.d.ts +13 -0
  92. package/dist/commands/whoami.d.ts.map +1 -0
  93. package/dist/commands/whoami.js +54 -0
  94. package/dist/commands/whoami.js.map +1 -0
  95. package/dist/compat/engine.d.ts +31 -0
  96. package/dist/compat/engine.d.ts.map +1 -0
  97. package/dist/compat/engine.js +82 -0
  98. package/dist/compat/engine.js.map +1 -0
  99. package/dist/config/define.d.ts +21 -0
  100. package/dist/config/define.d.ts.map +1 -0
  101. package/dist/config/define.js +22 -0
  102. package/dist/config/define.js.map +1 -0
  103. package/dist/config/index.d.ts +6 -0
  104. package/dist/config/index.d.ts.map +1 -0
  105. package/dist/config/index.js +6 -0
  106. package/dist/config/index.js.map +1 -0
  107. package/dist/config/loader.d.ts +26 -0
  108. package/dist/config/loader.d.ts.map +1 -0
  109. package/dist/config/loader.js +84 -0
  110. package/dist/config/loader.js.map +1 -0
  111. package/dist/config/migrations.d.ts +64 -0
  112. package/dist/config/migrations.d.ts.map +1 -0
  113. package/dist/config/migrations.js +66 -0
  114. package/dist/config/migrations.js.map +1 -0
  115. package/dist/config/precedence.d.ts +24 -0
  116. package/dist/config/precedence.d.ts.map +1 -0
  117. package/dist/config/precedence.js +55 -0
  118. package/dist/config/precedence.js.map +1 -0
  119. package/dist/config/schema.d.ts +10 -0
  120. package/dist/config/schema.d.ts.map +1 -0
  121. package/dist/config/schema.js +140 -0
  122. package/dist/config/schema.js.map +1 -0
  123. package/dist/config/types.d.ts +80 -0
  124. package/dist/config/types.d.ts.map +1 -0
  125. package/dist/config/types.js +23 -0
  126. package/dist/config/types.js.map +1 -0
  127. package/dist/credentials/encrypted-file.d.ts +3 -0
  128. package/dist/credentials/encrypted-file.d.ts.map +1 -0
  129. package/dist/credentials/encrypted-file.js +139 -0
  130. package/dist/credentials/encrypted-file.js.map +1 -0
  131. package/dist/credentials/error.d.ts +11 -0
  132. package/dist/credentials/error.d.ts.map +1 -0
  133. package/dist/credentials/error.js +14 -0
  134. package/dist/credentials/error.js.map +1 -0
  135. package/dist/credentials/index.d.ts +20 -0
  136. package/dist/credentials/index.d.ts.map +1 -0
  137. package/dist/credentials/index.js +56 -0
  138. package/dist/credentials/index.js.map +1 -0
  139. package/dist/credentials/keychain-darwin.d.ts +11 -0
  140. package/dist/credentials/keychain-darwin.d.ts.map +1 -0
  141. package/dist/credentials/keychain-darwin.js +88 -0
  142. package/dist/credentials/keychain-darwin.js.map +1 -0
  143. package/dist/credentials/keychain-linux.d.ts +13 -0
  144. package/dist/credentials/keychain-linux.d.ts.map +1 -0
  145. package/dist/credentials/keychain-linux.js +88 -0
  146. package/dist/credentials/keychain-linux.js.map +1 -0
  147. package/dist/credentials/keychain-win.d.ts +13 -0
  148. package/dist/credentials/keychain-win.d.ts.map +1 -0
  149. package/dist/credentials/keychain-win.js +31 -0
  150. package/dist/credentials/keychain-win.js.map +1 -0
  151. package/dist/credentials/types.d.ts +38 -0
  152. package/dist/credentials/types.d.ts.map +1 -0
  153. package/dist/credentials/types.js +5 -0
  154. package/dist/credentials/types.js.map +1 -0
  155. package/dist/detect/framework.d.ts +28 -0
  156. package/dist/detect/framework.d.ts.map +1 -0
  157. package/dist/detect/framework.js +131 -0
  158. package/dist/detect/framework.js.map +1 -0
  159. package/dist/detect/index.d.ts +4 -0
  160. package/dist/detect/index.d.ts.map +1 -0
  161. package/dist/detect/index.js +4 -0
  162. package/dist/detect/index.js.map +1 -0
  163. package/dist/detect/monorepo.d.ts +10 -0
  164. package/dist/detect/monorepo.d.ts.map +1 -0
  165. package/dist/detect/monorepo.js +42 -0
  166. package/dist/detect/monorepo.js.map +1 -0
  167. package/dist/detect/package-manager.d.ts +18 -0
  168. package/dist/detect/package-manager.d.ts.map +1 -0
  169. package/dist/detect/package-manager.js +60 -0
  170. package/dist/detect/package-manager.js.map +1 -0
  171. package/dist/index.d.ts +36 -0
  172. package/dist/index.d.ts.map +1 -0
  173. package/dist/index.js +38 -0
  174. package/dist/index.js.map +1 -0
  175. package/dist/integrations/_scaffold.d.ts +23 -0
  176. package/dist/integrations/_scaffold.d.ts.map +1 -0
  177. package/dist/integrations/_scaffold.js +62 -0
  178. package/dist/integrations/_scaffold.js.map +1 -0
  179. package/dist/integrations/_shared.d.ts +18 -0
  180. package/dist/integrations/_shared.d.ts.map +1 -0
  181. package/dist/integrations/_shared.js +73 -0
  182. package/dist/integrations/_shared.js.map +1 -0
  183. package/dist/integrations/_simple-scaffold.d.ts +19 -0
  184. package/dist/integrations/_simple-scaffold.d.ts.map +1 -0
  185. package/dist/integrations/_simple-scaffold.js +23 -0
  186. package/dist/integrations/_simple-scaffold.js.map +1 -0
  187. package/dist/integrations/dotnet.d.ts +2 -0
  188. package/dist/integrations/dotnet.d.ts.map +1 -0
  189. package/dist/integrations/dotnet.js +9 -0
  190. package/dist/integrations/dotnet.js.map +1 -0
  191. package/dist/integrations/expo.d.ts +2 -0
  192. package/dist/integrations/expo.d.ts.map +1 -0
  193. package/dist/integrations/expo.js +12 -0
  194. package/dist/integrations/expo.js.map +1 -0
  195. package/dist/integrations/fastify.d.ts +2 -0
  196. package/dist/integrations/fastify.d.ts.map +1 -0
  197. package/dist/integrations/fastify.js +10 -0
  198. package/dist/integrations/fastify.js.map +1 -0
  199. package/dist/integrations/flutter.d.ts +2 -0
  200. package/dist/integrations/flutter.d.ts.map +1 -0
  201. package/dist/integrations/flutter.js +9 -0
  202. package/dist/integrations/flutter.js.map +1 -0
  203. package/dist/integrations/go.d.ts +2 -0
  204. package/dist/integrations/go.d.ts.map +1 -0
  205. package/dist/integrations/go.js +9 -0
  206. package/dist/integrations/go.js.map +1 -0
  207. package/dist/integrations/java.d.ts +2 -0
  208. package/dist/integrations/java.d.ts.map +1 -0
  209. package/dist/integrations/java.js +9 -0
  210. package/dist/integrations/java.js.map +1 -0
  211. package/dist/integrations/js/detect.d.ts +3 -0
  212. package/dist/integrations/js/detect.d.ts.map +1 -0
  213. package/dist/integrations/js/detect.js +7 -0
  214. package/dist/integrations/js/detect.js.map +1 -0
  215. package/dist/integrations/js/doctor.d.ts +3 -0
  216. package/dist/integrations/js/doctor.d.ts.map +1 -0
  217. package/dist/integrations/js/doctor.js +38 -0
  218. package/dist/integrations/js/doctor.js.map +1 -0
  219. package/dist/integrations/js/files.d.ts +3 -0
  220. package/dist/integrations/js/files.d.ts.map +1 -0
  221. package/dist/integrations/js/files.js +19 -0
  222. package/dist/integrations/js/files.js.map +1 -0
  223. package/dist/integrations/js/index.d.ts +3 -0
  224. package/dist/integrations/js/index.d.ts.map +1 -0
  225. package/dist/integrations/js/index.js +25 -0
  226. package/dist/integrations/js/index.js.map +1 -0
  227. package/dist/integrations/js/manifest.d.ts +3 -0
  228. package/dist/integrations/js/manifest.d.ts.map +1 -0
  229. package/dist/integrations/js/manifest.js +19 -0
  230. package/dist/integrations/js/manifest.js.map +1 -0
  231. package/dist/integrations/js/patch.d.ts +4 -0
  232. package/dist/integrations/js/patch.d.ts.map +1 -0
  233. package/dist/integrations/js/patch.js +24 -0
  234. package/dist/integrations/js/patch.js.map +1 -0
  235. package/dist/integrations/js/uninstall.d.ts +4 -0
  236. package/dist/integrations/js/uninstall.d.ts.map +1 -0
  237. package/dist/integrations/js/uninstall.js +16 -0
  238. package/dist/integrations/js/uninstall.js.map +1 -0
  239. package/dist/integrations/nestjs.d.ts +2 -0
  240. package/dist/integrations/nestjs.d.ts.map +1 -0
  241. package/dist/integrations/nestjs.js +10 -0
  242. package/dist/integrations/nestjs.js.map +1 -0
  243. package/dist/integrations/next/detect.d.ts +3 -0
  244. package/dist/integrations/next/detect.d.ts.map +1 -0
  245. package/dist/integrations/next/detect.js +11 -0
  246. package/dist/integrations/next/detect.js.map +1 -0
  247. package/dist/integrations/next/doctor.d.ts +3 -0
  248. package/dist/integrations/next/doctor.d.ts.map +1 -0
  249. package/dist/integrations/next/doctor.js +46 -0
  250. package/dist/integrations/next/doctor.js.map +1 -0
  251. package/dist/integrations/next/files.d.ts +3 -0
  252. package/dist/integrations/next/files.d.ts.map +1 -0
  253. package/dist/integrations/next/files.js +19 -0
  254. package/dist/integrations/next/files.js.map +1 -0
  255. package/dist/integrations/next/index.d.ts +3 -0
  256. package/dist/integrations/next/index.d.ts.map +1 -0
  257. package/dist/integrations/next/index.js +44 -0
  258. package/dist/integrations/next/index.js.map +1 -0
  259. package/dist/integrations/next/manifest.d.ts +3 -0
  260. package/dist/integrations/next/manifest.d.ts.map +1 -0
  261. package/dist/integrations/next/manifest.js +29 -0
  262. package/dist/integrations/next/manifest.js.map +1 -0
  263. package/dist/integrations/next/patch.d.ts +4 -0
  264. package/dist/integrations/next/patch.d.ts.map +1 -0
  265. package/dist/integrations/next/patch.js +49 -0
  266. package/dist/integrations/next/patch.js.map +1 -0
  267. package/dist/integrations/next/uninstall.d.ts +4 -0
  268. package/dist/integrations/next/uninstall.d.ts.map +1 -0
  269. package/dist/integrations/next/uninstall.js +22 -0
  270. package/dist/integrations/next/uninstall.js.map +1 -0
  271. package/dist/integrations/otel.d.ts +2 -0
  272. package/dist/integrations/otel.d.ts.map +1 -0
  273. package/dist/integrations/otel.js +10 -0
  274. package/dist/integrations/otel.js.map +1 -0
  275. package/dist/integrations/php.d.ts +2 -0
  276. package/dist/integrations/php.d.ts.map +1 -0
  277. package/dist/integrations/php.js +9 -0
  278. package/dist/integrations/php.js.map +1 -0
  279. package/dist/integrations/python.d.ts +2 -0
  280. package/dist/integrations/python.d.ts.map +1 -0
  281. package/dist/integrations/python.js +9 -0
  282. package/dist/integrations/python.js.map +1 -0
  283. package/dist/integrations/react/detect.d.ts +3 -0
  284. package/dist/integrations/react/detect.d.ts.map +1 -0
  285. package/dist/integrations/react/detect.js +11 -0
  286. package/dist/integrations/react/detect.js.map +1 -0
  287. package/dist/integrations/react/doctor.d.ts +3 -0
  288. package/dist/integrations/react/doctor.d.ts.map +1 -0
  289. package/dist/integrations/react/doctor.js +65 -0
  290. package/dist/integrations/react/doctor.js.map +1 -0
  291. package/dist/integrations/react/files.d.ts +4 -0
  292. package/dist/integrations/react/files.d.ts.map +1 -0
  293. package/dist/integrations/react/files.js +24 -0
  294. package/dist/integrations/react/files.js.map +1 -0
  295. package/dist/integrations/react/index.d.ts +17 -0
  296. package/dist/integrations/react/index.d.ts.map +1 -0
  297. package/dist/integrations/react/index.js +62 -0
  298. package/dist/integrations/react/index.js.map +1 -0
  299. package/dist/integrations/react/manifest.d.ts +3 -0
  300. package/dist/integrations/react/manifest.d.ts.map +1 -0
  301. package/dist/integrations/react/manifest.js +31 -0
  302. package/dist/integrations/react/manifest.js.map +1 -0
  303. package/dist/integrations/react/patch.d.ts +4 -0
  304. package/dist/integrations/react/patch.d.ts.map +1 -0
  305. package/dist/integrations/react/patch.js +39 -0
  306. package/dist/integrations/react/patch.js.map +1 -0
  307. package/dist/integrations/react/uninstall.d.ts +4 -0
  308. package/dist/integrations/react/uninstall.d.ts.map +1 -0
  309. package/dist/integrations/react/uninstall.js +21 -0
  310. package/dist/integrations/react/uninstall.js.map +1 -0
  311. package/dist/integrations/react-native.d.ts +10 -0
  312. package/dist/integrations/react-native.d.ts.map +1 -0
  313. package/dist/integrations/react-native.js +57 -0
  314. package/dist/integrations/react-native.js.map +1 -0
  315. package/dist/integrations/ruby.d.ts +2 -0
  316. package/dist/integrations/ruby.d.ts.map +1 -0
  317. package/dist/integrations/ruby.js +9 -0
  318. package/dist/integrations/ruby.js.map +1 -0
  319. package/dist/lifecycle/hooks.d.ts +42 -0
  320. package/dist/lifecycle/hooks.d.ts.map +1 -0
  321. package/dist/lifecycle/hooks.js +43 -0
  322. package/dist/lifecycle/hooks.js.map +1 -0
  323. package/dist/migrations/builtin/dsn-to-api-key.d.ts +3 -0
  324. package/dist/migrations/builtin/dsn-to-api-key.d.ts.map +1 -0
  325. package/dist/migrations/builtin/dsn-to-api-key.js +59 -0
  326. package/dist/migrations/builtin/dsn-to-api-key.js.map +1 -0
  327. package/dist/migrations/engine.d.ts +52 -0
  328. package/dist/migrations/engine.d.ts.map +1 -0
  329. package/dist/migrations/engine.js +46 -0
  330. package/dist/migrations/engine.js.map +1 -0
  331. package/dist/migrations/index.d.ts +3 -0
  332. package/dist/migrations/index.d.ts.map +1 -0
  333. package/dist/migrations/index.js +11 -0
  334. package/dist/migrations/index.js.map +1 -0
  335. package/dist/output/human.d.ts +20 -0
  336. package/dist/output/human.d.ts.map +1 -0
  337. package/dist/output/human.js +77 -0
  338. package/dist/output/human.js.map +1 -0
  339. package/dist/output/index.d.ts +6 -0
  340. package/dist/output/index.d.ts.map +1 -0
  341. package/dist/output/index.js +8 -0
  342. package/dist/output/index.js.map +1 -0
  343. package/dist/output/json.d.ts +20 -0
  344. package/dist/output/json.d.ts.map +1 -0
  345. package/dist/output/json.js +60 -0
  346. package/dist/output/json.js.map +1 -0
  347. package/dist/output/types.d.ts +36 -0
  348. package/dist/output/types.d.ts.map +1 -0
  349. package/dist/output/types.js +2 -0
  350. package/dist/output/types.js.map +1 -0
  351. package/dist/patchers/env-file.d.ts +21 -0
  352. package/dist/patchers/env-file.d.ts.map +1 -0
  353. package/dist/patchers/env-file.js +77 -0
  354. package/dist/patchers/env-file.js.map +1 -0
  355. package/dist/patchers/js-ast.d.ts +29 -0
  356. package/dist/patchers/js-ast.d.ts.map +1 -0
  357. package/dist/patchers/js-ast.js +71 -0
  358. package/dist/patchers/js-ast.js.map +1 -0
  359. package/dist/patchers/json-file.d.ts +19 -0
  360. package/dist/patchers/json-file.d.ts.map +1 -0
  361. package/dist/patchers/json-file.js +41 -0
  362. package/dist/patchers/json-file.js.map +1 -0
  363. package/dist/patchers/markers.d.ts +28 -0
  364. package/dist/patchers/markers.d.ts.map +1 -0
  365. package/dist/patchers/markers.js +49 -0
  366. package/dist/patchers/markers.js.map +1 -0
  367. package/dist/patchers/source-block.d.ts +24 -0
  368. package/dist/patchers/source-block.d.ts.map +1 -0
  369. package/dist/patchers/source-block.js +40 -0
  370. package/dist/patchers/source-block.js.map +1 -0
  371. package/dist/registry/index.d.ts +5 -0
  372. package/dist/registry/index.d.ts.map +1 -0
  373. package/dist/registry/index.js +42 -0
  374. package/dist/registry/index.js.map +1 -0
  375. package/dist/registry/manifest.d.ts +78 -0
  376. package/dist/registry/manifest.d.ts.map +1 -0
  377. package/dist/registry/manifest.js +2 -0
  378. package/dist/registry/manifest.js.map +1 -0
  379. package/dist/registry/registry.d.ts +14 -0
  380. package/dist/registry/registry.d.ts.map +1 -0
  381. package/dist/registry/registry.js +29 -0
  382. package/dist/registry/registry.js.map +1 -0
  383. package/dist/registry/types.d.ts +78 -0
  384. package/dist/registry/types.d.ts.map +1 -0
  385. package/dist/registry/types.js +2 -0
  386. package/dist/registry/types.js.map +1 -0
  387. package/dist/snapshot/restore.d.ts +41 -0
  388. package/dist/snapshot/restore.d.ts.map +1 -0
  389. package/dist/snapshot/restore.js +110 -0
  390. package/dist/snapshot/restore.js.map +1 -0
  391. package/dist/snapshot/store.d.ts +105 -0
  392. package/dist/snapshot/store.d.ts.map +1 -0
  393. package/dist/snapshot/store.js +162 -0
  394. package/dist/snapshot/store.js.map +1 -0
  395. package/dist/sourcemaps/index.d.ts +3 -0
  396. package/dist/sourcemaps/index.d.ts.map +1 -0
  397. package/dist/sourcemaps/index.js +17 -0
  398. package/dist/sourcemaps/index.js.map +1 -0
  399. package/dist/sourcemaps/metro.d.ts +11 -0
  400. package/dist/sourcemaps/metro.d.ts.map +1 -0
  401. package/dist/sourcemaps/metro.js +31 -0
  402. package/dist/sourcemaps/metro.js.map +1 -0
  403. package/dist/sourcemaps/next.d.ts +3 -0
  404. package/dist/sourcemaps/next.d.ts.map +1 -0
  405. package/dist/sourcemaps/next.js +46 -0
  406. package/dist/sourcemaps/next.js.map +1 -0
  407. package/dist/sourcemaps/provider.d.ts +51 -0
  408. package/dist/sourcemaps/provider.d.ts.map +1 -0
  409. package/dist/sourcemaps/provider.js +29 -0
  410. package/dist/sourcemaps/provider.js.map +1 -0
  411. package/dist/sourcemaps/vite.d.ts +3 -0
  412. package/dist/sourcemaps/vite.d.ts.map +1 -0
  413. package/dist/sourcemaps/vite.js +60 -0
  414. package/dist/sourcemaps/vite.js.map +1 -0
  415. package/dist/sourcemaps/webpack.d.ts +8 -0
  416. package/dist/sourcemaps/webpack.d.ts.map +1 -0
  417. package/dist/sourcemaps/webpack.js +52 -0
  418. package/dist/sourcemaps/webpack.js.map +1 -0
  419. package/dist/telemetry/cli-wrap.d.ts +22 -0
  420. package/dist/telemetry/cli-wrap.d.ts.map +1 -0
  421. package/dist/telemetry/cli-wrap.js +53 -0
  422. package/dist/telemetry/cli-wrap.js.map +1 -0
  423. package/dist/telemetry/http-provider.d.ts +28 -0
  424. package/dist/telemetry/http-provider.d.ts.map +1 -0
  425. package/dist/telemetry/http-provider.js +24 -0
  426. package/dist/telemetry/http-provider.js.map +1 -0
  427. package/dist/telemetry/index.d.ts +7 -0
  428. package/dist/telemetry/index.d.ts.map +1 -0
  429. package/dist/telemetry/index.js +6 -0
  430. package/dist/telemetry/index.js.map +1 -0
  431. package/dist/telemetry/install-id.d.ts +3 -0
  432. package/dist/telemetry/install-id.d.ts.map +1 -0
  433. package/dist/telemetry/install-id.js +46 -0
  434. package/dist/telemetry/install-id.js.map +1 -0
  435. package/dist/telemetry/payload.d.ts +82 -0
  436. package/dist/telemetry/payload.d.ts.map +1 -0
  437. package/dist/telemetry/payload.js +82 -0
  438. package/dist/telemetry/payload.js.map +1 -0
  439. package/dist/telemetry/provider.d.ts +32 -0
  440. package/dist/telemetry/provider.d.ts.map +1 -0
  441. package/dist/telemetry/provider.js +30 -0
  442. package/dist/telemetry/provider.js.map +1 -0
  443. package/dist/telemetry/runtime.d.ts +29 -0
  444. package/dist/telemetry/runtime.d.ts.map +1 -0
  445. package/dist/telemetry/runtime.js +44 -0
  446. package/dist/telemetry/runtime.js.map +1 -0
  447. package/dist/transaction/tx.d.ts +58 -0
  448. package/dist/transaction/tx.d.ts.map +1 -0
  449. package/dist/transaction/tx.js +170 -0
  450. package/dist/transaction/tx.js.map +1 -0
  451. package/dist/util/error-codes.d.ts +29 -0
  452. package/dist/util/error-codes.d.ts.map +1 -0
  453. package/dist/util/error-codes.js +192 -0
  454. package/dist/util/error-codes.js.map +1 -0
  455. package/dist/util/errors.d.ts +83 -0
  456. package/dist/util/errors.d.ts.map +1 -0
  457. package/dist/util/errors.js +110 -0
  458. package/dist/util/errors.js.map +1 -0
  459. package/dist/util/log.d.ts +11 -0
  460. package/dist/util/log.d.ts.map +1 -0
  461. package/dist/util/log.js +18 -0
  462. package/dist/util/log.js.map +1 -0
  463. package/dist/util/paths.d.ts +3 -0
  464. package/dist/util/paths.d.ts.map +1 -0
  465. package/dist/util/paths.js +31 -0
  466. package/dist/util/paths.js.map +1 -0
  467. package/dist/util/version.d.ts +15 -0
  468. package/dist/util/version.d.ts.map +1 -0
  469. package/dist/util/version.js +40 -0
  470. package/dist/util/version.js.map +1 -0
  471. package/dist/util/wizard-version.d.ts +6 -0
  472. package/dist/util/wizard-version.d.ts.map +1 -0
  473. package/dist/util/wizard-version.js +6 -0
  474. package/dist/util/wizard-version.js.map +1 -0
  475. package/docs/architecture/README.md +58 -0
  476. package/docs/architecture/dry-run.md +34 -0
  477. package/docs/architecture/integration-lifecycle.md +77 -0
  478. package/docs/architecture/patch-pipeline.md +58 -0
  479. package/docs/architecture/registry.md +52 -0
  480. package/docs/architecture/rollback.md +47 -0
  481. package/docs/architecture/sourcemaps.md +53 -0
  482. package/docs/architecture/stability-levels.md +35 -0
  483. package/docs/architecture/transaction.md +51 -0
  484. package/docs/architecture/v02-bare-react-native-spec.md +92 -0
  485. package/docs/architecture/v02-java-host-fix-spec.md +125 -0
  486. package/docs/architecture/v02-sourcemaps-e2e-spec.md +157 -0
  487. package/package.json +98 -0
@@ -0,0 +1,58 @@
1
+ import type { IntegrationId } from '../detect/index.js';
2
+ import type { Reporter } from '../output/index.js';
3
+ export interface DoctorOptions {
4
+ integration?: IntegrationId;
5
+ apiKey?: string;
6
+ host?: string;
7
+ /** When true, send a real test event and poll for ingestion. Requires --api-key + --project-id. */
8
+ liveProbe?: boolean;
9
+ /** Project UUID needed by the live-probe to call setup-doctor + query events. */
10
+ projectId?: string;
11
+ /** Live-probe poll timeout (ms). */
12
+ liveProbeTimeoutMs?: number;
13
+ cwd?: string;
14
+ reporter: Reporter;
15
+ }
16
+ export type DoctorStage = 'auth' | 'reachability' | 'config' | 'integration' | 'event-ingest' | 'release-linkage' | 'source-maps';
17
+ export interface DoctorStageResult {
18
+ stage: DoctorStage;
19
+ status: 'pass' | 'fail' | 'warn' | 'skip';
20
+ detail: string;
21
+ fix?: string;
22
+ /** Free-form structured data exposed in --json output. */
23
+ data?: Record<string, unknown>;
24
+ }
25
+ /**
26
+ * Doctor with deterministic stage ordering. Each stage runs even if a prior
27
+ * stage failed (so the user sees the full picture), but later stages may skip
28
+ * themselves with a clear "skip: <stage> failed" reason.
29
+ *
30
+ * Stage contracts:
31
+ *
32
+ * auth — verify credentials are present and accepted by /auth/me
33
+ * (or that the caller passed a valid --api-key).
34
+ *
35
+ * reachability — probe the configured ingest + dashboard hosts. This is
36
+ * a sanity check, not a full HTTP fetch (no health endpoint
37
+ * exposed); we hit /api/v1/auth/me which is a 401-or-200
38
+ * contract.
39
+ *
40
+ * config — `allstak.config.*` discovered? required project + org
41
+ * resolved? fail with the exact missing field.
42
+ *
43
+ * integration — delegates to integ.doctor() — files patched? entry wired?
44
+ *
45
+ * event-ingest — only runs with --live-probe + --api-key. Sends a real
46
+ * event, polls /api/v1/errors for ingestion. Reports the
47
+ * event id and the dashboard URL.
48
+ *
49
+ * release-linkage — verifies the test event carries the configured release
50
+ * and the backend's setup-doctor has seen it.
51
+ *
52
+ * source-maps — sourceMapRegistry providers report their per-bundler
53
+ * status. No upload roundtrip in v0.1.2 (deferred to v0.2
54
+ * once the SDK source-map upload contract is end-to-end
55
+ * validated).
56
+ */
57
+ export declare function runDoctor(opts: DoctorOptions): Promise<DoctorStageResult[]>;
58
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mGAAmG;IACnG,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,cAAc,GACd,QAAQ,GACR,aAAa,GACb,cAAc,GACd,iBAAiB,GACjB,aAAa,CAAC;AAElB,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0DjF"}
@@ -0,0 +1,389 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ import { registry, bootstrapRegistry } from '../registry/index.js';
3
+ import { bootstrapSourceMaps } from '../sourcemaps/index.js';
4
+ import { loadUserCredentials } from '../api/auth.js';
5
+ import { pollForProbeEvent, sendTestEvent, setupDoctor, whoami, } from '../api/index.js';
6
+ import { buildContext } from './_context.js';
7
+ const STAGE_ORDER = [
8
+ 'auth',
9
+ 'reachability',
10
+ 'config',
11
+ 'integration',
12
+ 'event-ingest',
13
+ 'release-linkage',
14
+ 'source-maps',
15
+ ];
16
+ /**
17
+ * Doctor with deterministic stage ordering. Each stage runs even if a prior
18
+ * stage failed (so the user sees the full picture), but later stages may skip
19
+ * themselves with a clear "skip: <stage> failed" reason.
20
+ *
21
+ * Stage contracts:
22
+ *
23
+ * auth — verify credentials are present and accepted by /auth/me
24
+ * (or that the caller passed a valid --api-key).
25
+ *
26
+ * reachability — probe the configured ingest + dashboard hosts. This is
27
+ * a sanity check, not a full HTTP fetch (no health endpoint
28
+ * exposed); we hit /api/v1/auth/me which is a 401-or-200
29
+ * contract.
30
+ *
31
+ * config — `allstak.config.*` discovered? required project + org
32
+ * resolved? fail with the exact missing field.
33
+ *
34
+ * integration — delegates to integ.doctor() — files patched? entry wired?
35
+ *
36
+ * event-ingest — only runs with --live-probe + --api-key. Sends a real
37
+ * event, polls /api/v1/errors for ingestion. Reports the
38
+ * event id and the dashboard URL.
39
+ *
40
+ * release-linkage — verifies the test event carries the configured release
41
+ * and the backend's setup-doctor has seen it.
42
+ *
43
+ * source-maps — sourceMapRegistry providers report their per-bundler
44
+ * status. No upload roundtrip in v0.1.2 (deferred to v0.2
45
+ * once the SDK source-map upload contract is end-to-end
46
+ * validated).
47
+ */
48
+ export async function runDoctor(opts) {
49
+ const start = Date.now();
50
+ bootstrapRegistry();
51
+ bootstrapSourceMaps();
52
+ const r = opts.reporter;
53
+ const built = await buildContext({
54
+ cwd: opts.cwd,
55
+ apiKey: opts.apiKey,
56
+ apiKeyOptional: true,
57
+ host: opts.host,
58
+ dryRun: true,
59
+ skipDeps: true,
60
+ skipSourceMaps: true,
61
+ });
62
+ const ctx = built.ctx;
63
+ const stages = [];
64
+ // ── Stage: auth ──────────────────────────────────────────────────────────
65
+ stages.push(await checkAuth(ctx, opts.apiKey));
66
+ // ── Stage: reachability ──────────────────────────────────────────────────
67
+ stages.push(await checkReachability(ctx, stages));
68
+ // ── Stage: config ────────────────────────────────────────────────────────
69
+ stages.push(checkConfig(ctx, built.configSource));
70
+ // ── Stage: integration ───────────────────────────────────────────────────
71
+ const integrationStage = await runIntegrationDoctor(ctx, opts.integration);
72
+ stages.push(integrationStage);
73
+ // ── Stage: event-ingest (live-probe only) ────────────────────────────────
74
+ stages.push(await runEventIngestProbe(ctx, opts, stages));
75
+ // ── Stage: release-linkage ───────────────────────────────────────────────
76
+ stages.push(checkReleaseLinkage(ctx, stages));
77
+ // ── Stage: source-maps ───────────────────────────────────────────────────
78
+ stages.push(await checkSourceMaps(ctx));
79
+ // Print all stages in order.
80
+ r.step('Doctor');
81
+ for (const s of stages)
82
+ emitStage(r, s);
83
+ const broken = stages.some((s) => s.status === 'fail');
84
+ const degraded = stages.some((s) => s.status === 'warn');
85
+ const outcome = broken ? 'failure' : 'success';
86
+ if (broken)
87
+ r.error('Doctor: setup is broken.');
88
+ else if (degraded)
89
+ r.warn('Doctor: setup has warnings.');
90
+ else
91
+ r.success('Doctor: setup looks good.');
92
+ r.finalize({
93
+ command: 'doctor',
94
+ outcome,
95
+ durationMs: Date.now() - start,
96
+ data: { stages, configSource: built.configSource },
97
+ });
98
+ return stages;
99
+ }
100
+ function emitStage(r, s) {
101
+ const label = `[${s.stage}] ${s.detail}`;
102
+ switch (s.status) {
103
+ case 'pass':
104
+ r.success(label);
105
+ break;
106
+ case 'warn':
107
+ r.warn(label, s.fix);
108
+ break;
109
+ case 'fail':
110
+ r.error(label, s.fix);
111
+ break;
112
+ case 'skip':
113
+ r.info(label);
114
+ break;
115
+ }
116
+ }
117
+ async function checkAuth(ctx, cliApiKey) {
118
+ if (cliApiKey) {
119
+ return {
120
+ stage: 'auth',
121
+ status: 'pass',
122
+ detail: 'Using --api-key (project-scoped credential).',
123
+ data: { mode: 'api-key' },
124
+ };
125
+ }
126
+ if (ctx.apiKey) {
127
+ return {
128
+ stage: 'auth',
129
+ status: 'pass',
130
+ detail: 'Using ALLSTAK_API_KEY env var (project-scoped credential).',
131
+ data: { mode: 'api-key-env' },
132
+ };
133
+ }
134
+ let creds;
135
+ try {
136
+ creds = await loadUserCredentials(ctx.host);
137
+ }
138
+ catch (err) {
139
+ return {
140
+ stage: 'auth',
141
+ status: 'fail',
142
+ detail: `Stored credentials for ${ctx.host} are invalid.`,
143
+ fix: 'Run `allstak login` to refresh.',
144
+ data: { error: err instanceof Error ? err.message : String(err) },
145
+ };
146
+ }
147
+ if (!creds) {
148
+ return {
149
+ stage: 'auth',
150
+ status: 'warn',
151
+ detail: 'No user credentials and no API key.',
152
+ fix: 'Run `allstak login`, or set ALLSTAK_API_KEY for ingest-only checks.',
153
+ data: { mode: 'none' },
154
+ };
155
+ }
156
+ // Round-trip /auth/me to confirm the JWT is still accepted server-side.
157
+ try {
158
+ const me = await whoami(ctx.host, creds.accessToken);
159
+ return {
160
+ stage: 'auth',
161
+ status: 'pass',
162
+ detail: `Authenticated as ${me.email}.`,
163
+ data: { mode: 'user-jwt', userId: me.userId, email: me.email },
164
+ };
165
+ }
166
+ catch (err) {
167
+ return {
168
+ stage: 'auth',
169
+ status: 'fail',
170
+ detail: 'Backend rejected the stored JWT.',
171
+ fix: 'Run `allstak login` to refresh.',
172
+ data: { error: err instanceof Error ? err.message : String(err) },
173
+ };
174
+ }
175
+ }
176
+ async function checkReachability(ctx, prior) {
177
+ const auth = prior.find((s) => s.stage === 'auth');
178
+ // No-cred reachability: hit /api/v1/auth/me with an obviously-bad token and
179
+ // expect 401 — that proves DNS + TLS + the route exists. With a real token
180
+ // we get 200, which also proves connectivity.
181
+ try {
182
+ if (auth?.status === 'pass' && auth.data?.mode === 'user-jwt') {
183
+ // Auth stage already round-tripped /me successfully.
184
+ return { stage: 'reachability', status: 'pass', detail: `Reached ${ctx.host}.` };
185
+ }
186
+ const res = await fetch(`${ctx.host}/api/v1/auth/me`, {
187
+ headers: { Authorization: 'Bearer probe-not-a-real-token' },
188
+ signal: AbortSignal.timeout(5000),
189
+ });
190
+ if (res.status === 401 || res.ok) {
191
+ return { stage: 'reachability', status: 'pass', detail: `Reached ${ctx.host}.` };
192
+ }
193
+ return {
194
+ stage: 'reachability',
195
+ status: 'warn',
196
+ detail: `Reached ${ctx.host} but it returned HTTP ${res.status}.`,
197
+ };
198
+ }
199
+ catch (err) {
200
+ return {
201
+ stage: 'reachability',
202
+ status: 'fail',
203
+ detail: `Cannot reach ${ctx.host}: ${err instanceof Error ? err.message : String(err)}`,
204
+ fix: 'Verify --host or the network. For self-hosted, check ingestHost/dashboardHost in allstak.config.*.',
205
+ };
206
+ }
207
+ }
208
+ function checkConfig(ctx, configSource) {
209
+ const detail = configSource
210
+ ? `Loaded config from ${configSource}.`
211
+ : 'No allstak.config.* found; using CLI flags + env + defaults.';
212
+ // Specific missing-field check: org/project required only for orgs/projects/doctor live-probe.
213
+ return { stage: 'config', status: 'pass', detail, data: { configSource, host: ctx.host, project: ctx.project, org: ctx.org } };
214
+ }
215
+ async function runIntegrationDoctor(ctx, integrationId) {
216
+ const integ = integrationId
217
+ ? registry.get(integrationId)
218
+ : registry.list().find((i) => ctx.detected.candidates.includes(i.id));
219
+ if (!integ) {
220
+ return {
221
+ stage: 'integration',
222
+ status: 'warn',
223
+ detail: 'No matching integration to inspect.',
224
+ fix: 'Pass -i <integration> to force a specific check.',
225
+ };
226
+ }
227
+ let report;
228
+ try {
229
+ report = await integ.doctor(ctx);
230
+ }
231
+ catch (err) {
232
+ return {
233
+ stage: 'integration',
234
+ status: 'fail',
235
+ detail: `Integration doctor for ${integ.id} threw: ${err instanceof Error ? err.message : String(err)}`,
236
+ };
237
+ }
238
+ const status = report.summary === 'broken' ? 'fail'
239
+ : report.summary === 'degraded' ? 'warn'
240
+ : 'pass';
241
+ return {
242
+ stage: 'integration',
243
+ status,
244
+ detail: `${integ.id}: ${report.summary} (${report.checks.length} checks)`,
245
+ fix: report.checks.find((c) => c.fix)?.fix,
246
+ data: { integrationId: integ.id, report },
247
+ };
248
+ }
249
+ async function runEventIngestProbe(ctx, opts, prior) {
250
+ if (!opts.liveProbe) {
251
+ return { stage: 'event-ingest', status: 'skip', detail: 'Skipped (pass --live-probe to enable).' };
252
+ }
253
+ if (!ctx.apiKey) {
254
+ return {
255
+ stage: 'event-ingest',
256
+ status: 'fail',
257
+ detail: 'Live probe requires --api-key.',
258
+ fix: 'Pass --api-key (or set ALLSTAK_API_KEY) — the project-scoped key the SDKs would use.',
259
+ };
260
+ }
261
+ if (!opts.projectId) {
262
+ return {
263
+ stage: 'event-ingest',
264
+ status: 'fail',
265
+ detail: 'Live probe requires --project-id (UUID) to query ingestion.',
266
+ fix: 'Pass --project-id <uuid> — visible in the dashboard URL.',
267
+ };
268
+ }
269
+ const auth = prior.find((s) => s.stage === 'auth');
270
+ if (!(auth?.status === 'pass' && auth.data?.mode === 'user-jwt')) {
271
+ return {
272
+ stage: 'event-ingest',
273
+ status: 'skip',
274
+ detail: 'Skipped: live probe needs a user JWT to query /api/v1/errors.',
275
+ fix: 'Run `allstak login`, then re-run doctor.',
276
+ };
277
+ }
278
+ const fingerprint = `wizard-probe-${randomBytes(6).toString('hex')}`;
279
+ let eventId;
280
+ try {
281
+ const res = await sendTestEvent(ctx.ingestHost, ctx.apiKey, {
282
+ fingerprint,
283
+ environment: ctx.environment,
284
+ release: ctx.release ?? undefined,
285
+ });
286
+ eventId = res.id;
287
+ }
288
+ catch (err) {
289
+ return {
290
+ stage: 'event-ingest',
291
+ status: 'fail',
292
+ detail: `POST /ingest/v1/errors failed: ${err instanceof Error ? err.message : String(err)}`,
293
+ fix: 'Verify the API key has ingest scope for this project.',
294
+ };
295
+ }
296
+ const creds = await loadUserCredentials(ctx.host);
297
+ if (!creds) {
298
+ return {
299
+ stage: 'event-ingest',
300
+ status: 'warn',
301
+ detail: `Sent event ${eventId} but cannot poll for ingestion (not logged in).`,
302
+ fix: 'Run `allstak login`, then re-run doctor.',
303
+ data: { eventId, fingerprint },
304
+ };
305
+ }
306
+ const seen = await pollForProbeEvent(ctx.host, creds.accessToken, opts.projectId, fingerprint, { timeoutMs: opts.liveProbeTimeoutMs ?? 60_000 });
307
+ if (!seen) {
308
+ return {
309
+ stage: 'event-ingest',
310
+ status: 'fail',
311
+ detail: `Sent event ${eventId} but did not see fingerprint ${fingerprint} in /api/v1/errors within timeout.`,
312
+ fix: 'Ingestion may be backlogged. Check the dashboard or contact support with the eventId.',
313
+ data: { eventId, fingerprint },
314
+ };
315
+ }
316
+ return {
317
+ stage: 'event-ingest',
318
+ status: 'pass',
319
+ detail: `Test event received (${eventId}).`,
320
+ data: {
321
+ eventId,
322
+ fingerprint,
323
+ dashboardUrl: `${ctx.dashboardHost}/errors/${fingerprint}?projectId=${opts.projectId}`,
324
+ },
325
+ };
326
+ }
327
+ function checkReleaseLinkage(ctx, prior) {
328
+ if (!ctx.release) {
329
+ return {
330
+ stage: 'release-linkage',
331
+ status: 'warn',
332
+ detail: 'No release identifier configured.',
333
+ fix: 'Set release in allstak.config.* (e.g. process.env.GIT_SHA) or pass --release on init.',
334
+ };
335
+ }
336
+ const ingest = prior.find((s) => s.stage === 'event-ingest');
337
+ if (ingest?.status === 'pass') {
338
+ return {
339
+ stage: 'release-linkage',
340
+ status: 'pass',
341
+ detail: `Release "${ctx.release}" attached to test event.`,
342
+ data: { release: ctx.release },
343
+ };
344
+ }
345
+ return {
346
+ stage: 'release-linkage',
347
+ status: 'skip',
348
+ detail: 'Skipped: live probe required to verify release linkage end-to-end.',
349
+ fix: 'Re-run with --live-probe --api-key --project-id <uuid>.',
350
+ };
351
+ }
352
+ async function checkSourceMaps(ctx) {
353
+ const { sourceMapRegistry } = await import('../sourcemaps/index.js');
354
+ const applicable = await sourceMapRegistry.detectAll(ctx);
355
+ if (applicable.length === 0) {
356
+ return { stage: 'source-maps', status: 'skip', detail: 'No applicable bundler detected for source-map wiring.' };
357
+ }
358
+ const statuses = await Promise.all(applicable.map((p) => p.status(ctx)));
359
+ const wired = statuses.filter((s) => s.state === 'wired');
360
+ const drifted = statuses.filter((s) => s.state === 'drifted');
361
+ const missing = statuses.filter((s) => s.state === 'missing');
362
+ if (drifted.length > 0) {
363
+ return {
364
+ stage: 'source-maps',
365
+ status: 'warn',
366
+ detail: `${drifted.length} provider(s) drifted: ${drifted.map((d) => d.provider).join(', ')}`,
367
+ fix: 'Run `allstak repair` to re-wire.',
368
+ data: { wired, drifted, missing },
369
+ };
370
+ }
371
+ if (wired.length === 0) {
372
+ return {
373
+ stage: 'source-maps',
374
+ status: 'warn',
375
+ detail: 'Bundler detected but no AllStak source-map wiring found.',
376
+ fix: 'Run `allstak-wizard -i <integration>` (or `repair`) to wire source maps.',
377
+ data: { wired, drifted, missing },
378
+ };
379
+ }
380
+ return {
381
+ stage: 'source-maps',
382
+ status: 'pass',
383
+ detail: `Wired: ${wired.map((w) => w.provider).join(', ')}`,
384
+ data: { wired, drifted, missing },
385
+ };
386
+ }
387
+ void STAGE_ORDER;
388
+ void setupDoctor; // STAGE_ORDER kept exported for future doctor --stage <name> filter; setupDoctor exported for future detailed mode.
389
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,MAAM,GACP,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAkC7C,MAAM,WAAW,GAAkB;IACjC,MAAM;IACN,cAAc;IACd,QAAQ;IACR,aAAa;IACb,cAAc;IACd,iBAAiB;IACjB,aAAa;CACd,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAmB;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,iBAAiB,EAAE,CAAC;IACpB,mBAAmB,EAAE,CAAC;IACtB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IAExB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC;QAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,cAAc,EAAE,IAAI;QACpB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,4EAA4E;IAC5E,MAAM,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE/C,4EAA4E;IAC5E,MAAM,CAAC,IAAI,CAAC,MAAM,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAElD,4EAA4E;IAC5E,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAElD,4EAA4E;IAC5E,MAAM,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAE9B,4EAA4E;IAC5E,MAAM,CAAC,IAAI,CAAC,MAAM,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAE1D,4EAA4E;IAC5E,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAE9C,4EAA4E;IAC5E,MAAM,CAAC,IAAI,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAExC,6BAA6B;IAC7B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjB,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAExC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACzD,MAAM,OAAO,GAA0B,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,IAAI,MAAM;QAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;SAC3C,IAAI,QAAQ;QAAE,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;;QACpD,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAE5C,CAAC,CAAC,QAAQ,CAAC;QACT,OAAO,EAAE,QAAQ;QACjB,OAAO;QACP,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;QAC9B,IAAI,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE;KACnD,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,CAAW,EAAE,CAAoB;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,MAAM;YAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAAC,MAAM;QACrC,KAAK,MAAM;YAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAAC,MAAM;QACzC,KAAK,MAAM;YAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAAC,MAAM;QAC1C,KAAK,MAAM;YAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAC,MAAM;IACpC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAkB,EAAE,SAA6B;IACxE,IAAI,SAAS,EAAE,CAAC;QACd,OAAO;YACL,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,8CAA8C;YACtD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC1B,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,OAAO;YACL,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,4DAA4D;YACpE,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;SAC9B,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0BAA0B,GAAG,CAAC,IAAI,eAAe;YACzD,GAAG,EAAE,iCAAiC;YACtC,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAClE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,qCAAqC;YAC7C,GAAG,EAAE,qEAAqE;YAC1E,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACvB,CAAC;IACJ,CAAC;IACD,wEAAwE;IACxE,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACrD,OAAO;YACL,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,oBAAoB,EAAE,CAAC,KAAK,GAAG;YACvC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE;SAC/D,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,kCAAkC;YAC1C,GAAG,EAAE,iCAAiC;YACtC,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAClE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAkB,EAAE,KAA0B;IAC7E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IACnD,4EAA4E;IAC5E,2EAA2E;IAC3E,8CAA8C;IAC9C,IAAI,CAAC;QACH,IAAI,IAAI,EAAE,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9D,qDAAqD;YACrD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;QACnF,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,iBAAiB,EAAE;YACpD,OAAO,EAAE,EAAE,aAAa,EAAE,+BAA+B,EAAE;YAC3D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACjC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;QACnF,CAAC;QACD,OAAO;YACL,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,WAAW,GAAG,CAAC,IAAI,yBAAyB,GAAG,CAAC,MAAM,GAAG;SAClE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,gBAAgB,GAAG,CAAC,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACvF,GAAG,EAAE,oGAAoG;SAC1G,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAkB,EAAE,YAA2B;IAClE,MAAM,MAAM,GAAG,YAAY;QACzB,CAAC,CAAC,sBAAsB,YAAY,GAAG;QACvC,CAAC,CAAC,8DAA8D,CAAC;IACnE,+FAA+F;IAC/F,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;AACjI,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,GAAkB,EAAE,aAAwC;IAC9F,MAAM,KAAK,GAAG,aAAa;QACzB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;QAC7B,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,qCAAqC;YAC7C,GAAG,EAAE,kDAAkD;SACxD,CAAC;IACJ,CAAC;IACD,IAAI,MAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0BAA0B,KAAK,CAAC,EAAE,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACxG,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GACV,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM;QACpC,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM;YACxC,CAAC,CAAC,MAAM,CAAC;IACX,OAAO;QACL,KAAK,EAAE,aAAa;QACpB,MAAM;QACN,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,UAAU;QACzE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG;QAC1C,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE;KAC1C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,GAAkB,EAClB,IAAmB,EACnB,KAA0B;IAE1B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC;IACrG,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO;YACL,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,gCAAgC;YACxC,GAAG,EAAE,sFAAsF;SAC5F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO;YACL,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,6DAA6D;YACrE,GAAG,EAAE,0DAA0D;SAChE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QACjE,OAAO;YACL,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,+DAA+D;YACvE,GAAG,EAAE,0CAA0C;SAChD,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,gBAAgB,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACrE,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;YAC1D,WAAW;YACX,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;SAClC,CAAC,CAAC;QACH,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC5F,GAAG,EAAE,uDAAuD;SAC7D,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,cAAc,OAAO,iDAAiD;YAC9E,GAAG,EAAE,0CAA0C;YAC/C,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;SAC/B,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAClC,GAAG,CAAC,IAAI,EACR,KAAK,CAAC,WAAW,EACjB,IAAI,CAAC,SAAS,EACd,WAAW,EACX,EAAE,SAAS,EAAE,IAAI,CAAC,kBAAkB,IAAI,MAAM,EAAE,CACjD,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,cAAc,OAAO,gCAAgC,WAAW,oCAAoC;YAC5G,GAAG,EAAE,uFAAuF;YAC5F,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;SAC/B,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,wBAAwB,OAAO,IAAI;QAC3C,IAAI,EAAE;YACJ,OAAO;YACP,WAAW;YACX,YAAY,EAAE,GAAG,GAAG,CAAC,aAAa,WAAW,WAAW,cAAc,IAAI,CAAC,SAAS,EAAE;SACvF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAkB,EAAE,KAA0B;IACzE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO;YACL,KAAK,EAAE,iBAAiB;YACxB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,mCAAmC;YAC3C,GAAG,EAAE,uFAAuF;SAC7F,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC;IAC7D,IAAI,MAAM,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO;YACL,KAAK,EAAE,iBAAiB;YACxB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,YAAY,GAAG,CAAC,OAAO,2BAA2B;YAC1D,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;SAC/B,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,oEAAoE;QAC5E,GAAG,EAAE,yDAAyD;KAC/D,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAkB;IAC/C,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,uDAAuD,EAAE,CAAC;IACnH,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,yBAAyB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7F,GAAG,EAAE,kCAAkC;YACvC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;SAClC,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0DAA0D;YAClE,GAAG,EAAE,0EAA0E;YAC/E,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;SAClC,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,aAAa;QACpB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,UAAU,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC3D,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;KAClC,CAAC;AACJ,CAAC;AAED,KAAK,WAAW,CAAC;AAAC,KAAK,WAAW,CAAC,CAAC,oHAAoH"}
@@ -0,0 +1,28 @@
1
+ import type { IntegrationId } from '../detect/index.js';
2
+ import type { Reporter } from '../output/index.js';
3
+ export interface InitOptions {
4
+ integration?: IntegrationId;
5
+ apiKey?: string;
6
+ org?: string;
7
+ project?: string;
8
+ environment?: string;
9
+ release?: string | null;
10
+ host?: string;
11
+ dashboardHost?: string;
12
+ ingestHost?: string;
13
+ dryRun?: boolean;
14
+ experimental?: boolean;
15
+ skipDeps?: boolean;
16
+ skipSourceMaps?: boolean;
17
+ yes?: boolean;
18
+ cwd?: string;
19
+ reporter: Reporter;
20
+ /** When true, the orchestrator does not prompt; relies on `yes`. */
21
+ nonInteractive?: boolean;
22
+ /** Snapshot retention — keep this many backups; 0 disables prune. */
23
+ snapshotKeep?: number;
24
+ }
25
+ export declare function runInit(opts: InitOptions): Promise<{
26
+ outcome: 'success' | 'failure' | 'cancelled' | 'noop';
27
+ }>;
28
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAInD,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,oEAAoE;IACpE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAA;CAAE,CAAC,CA4InH"}
@@ -0,0 +1,157 @@
1
+ import * as p from '@clack/prompts';
2
+ import pc from 'picocolors';
3
+ import { Transaction } from '../transaction/tx.js';
4
+ import { registry, bootstrapRegistry } from '../registry/index.js';
5
+ import { bootstrapSourceMaps } from '../sourcemaps/index.js';
6
+ import { bootstrapMigrations } from '../migrations/index.js';
7
+ import { SnapshotStore } from '../snapshot/store.js';
8
+ import { WIZARD_VERSION } from '../util/wizard-version.js';
9
+ import { WizardError } from '../util/errors.js';
10
+ import { buildContext } from './_context.js';
11
+ export async function runInit(opts) {
12
+ const start = Date.now();
13
+ bootstrapRegistry();
14
+ bootstrapSourceMaps();
15
+ bootstrapMigrations();
16
+ const r = opts.reporter;
17
+ const { ctx: ctxBase } = await buildContext({
18
+ cwd: opts.cwd,
19
+ apiKey: opts.apiKey,
20
+ org: opts.org,
21
+ project: opts.project,
22
+ environment: opts.environment,
23
+ release: opts.release ?? null,
24
+ host: opts.host,
25
+ dashboardHost: opts.dashboardHost,
26
+ ingestHost: opts.ingestHost,
27
+ dryRun: opts.dryRun,
28
+ experimental: opts.experimental,
29
+ skipDeps: opts.skipDeps,
30
+ skipSourceMaps: opts.skipSourceMaps,
31
+ });
32
+ let integration = opts.integration;
33
+ if (!integration) {
34
+ if (ctxBase.detected.candidates.length === 1) {
35
+ integration = ctxBase.detected.candidates[0];
36
+ r.info('Detected integration', integration);
37
+ }
38
+ else if (ctxBase.detected.candidates.length === 0) {
39
+ throw new WizardError('E_UNSUPPORTED_FRAMEWORK', 'Could not detect a supported framework.', { subcode: 'E_NO_DETECT', hint: 'Pass -i <integration>. Run `allstak-wizard list` to see options.' });
40
+ }
41
+ else {
42
+ if (opts.nonInteractive) {
43
+ throw new WizardError('E_UNSUPPORTED_FRAMEWORK', `Multiple frameworks detected: ${ctxBase.detected.candidates.join(', ')}.`, { subcode: 'E_AMBIGUOUS', hint: 'Pass -i <integration> in non-interactive mode.' });
44
+ }
45
+ const choice = await p.select({
46
+ message: 'Multiple frameworks detected. Pick one:',
47
+ options: ctxBase.detected.candidates.map((id) => ({ value: id, label: id })),
48
+ });
49
+ if (p.isCancel(choice)) {
50
+ finalize(r, opts, start, 'cancelled');
51
+ return { outcome: 'cancelled' };
52
+ }
53
+ integration = choice;
54
+ }
55
+ }
56
+ const integ = registry.require(integration);
57
+ const ctx = ctxBase;
58
+ // Compatibility check.
59
+ const compat = await integ.detect(ctx);
60
+ if (!compat.ok)
61
+ throw new WizardError('E_UNSUPPORTED_VERSION', `Compatibility check failed: ${compat.reason}`, { subcode: 'E_COMPAT' });
62
+ // Stability gating (for experimental / unsupported).
63
+ if (integ.manifest.stability === 'experimental' && !ctx.experimental) {
64
+ r.warn(`"${integration}" is experimental and not validated end-to-end in v0.1.`);
65
+ if (integ.manifest.stabilityNote)
66
+ r.warn(integ.manifest.stabilityNote);
67
+ r.warn('Pass --experimental to bypass this check at your own risk.');
68
+ finalize(r, opts, start, 'noop');
69
+ return { outcome: 'noop' };
70
+ }
71
+ if (integ.manifest.stability === 'beta') {
72
+ r.warn(`"${integration}" is in beta — ${integ.manifest.stabilityNote ?? 'see notes'}`);
73
+ }
74
+ // Plan.
75
+ const plan = await integ.plan(ctx);
76
+ r.step(`Plan for ${integ.manifest.title}`);
77
+ for (const line of plan)
78
+ console.error(` ${pc.dim('•')} ${line}`);
79
+ if (!opts.yes && !ctx.dryRun) {
80
+ if (opts.nonInteractive) {
81
+ throw new WizardError('E_USER_CANCELLED', 'Refusing to apply changes without --yes in non-interactive mode.', { subcode: 'E_NO_CONFIRM' });
82
+ }
83
+ const ok = await p.confirm({ message: 'Apply these changes?' });
84
+ if (p.isCancel(ok) || ok === false) {
85
+ r.warn('Aborted by user.');
86
+ finalize(r, opts, start, 'cancelled');
87
+ return { outcome: 'cancelled' };
88
+ }
89
+ }
90
+ // Lifecycle: beforeInstall → install → afterInstall.
91
+ await ctx.lifecycle.emit('beforeInstall', { integration: integ.id, dryRun: ctx.dryRun });
92
+ let installError;
93
+ try {
94
+ await integ.install(ctx);
95
+ }
96
+ catch (err) {
97
+ installError = err instanceof Error ? err : new Error(String(err));
98
+ await ctx.lifecycle.emit('afterInstall', { integration: integ.id, dryRun: ctx.dryRun, error: installError });
99
+ throw err;
100
+ }
101
+ await ctx.lifecycle.emit('afterInstall', { integration: integ.id, dryRun: ctx.dryRun });
102
+ // Snapshot + transactional patch.
103
+ const snapshotStore = new SnapshotStore(ctx.projectRoot);
104
+ const snapshotWriter = snapshotStore.begin({
105
+ integration: integ.id,
106
+ wizardVersion: WIZARD_VERSION,
107
+ projectRoot: ctx.projectRoot,
108
+ label: 'init',
109
+ dryRun: ctx.dryRun,
110
+ });
111
+ const tx = new Transaction({ dryRun: ctx.dryRun, cwd: ctx.projectRoot, snapshotWriter });
112
+ await ctx.lifecycle.emit('beforePatch', { integration: integ.id, dryRun: ctx.dryRun });
113
+ try {
114
+ await tx.run(async () => { await integ.patch(ctx, tx); });
115
+ }
116
+ catch (err) {
117
+ const e = err instanceof Error ? err : new Error(String(err));
118
+ await ctx.lifecycle.emit('afterRollback', { integration: integ.id, dryRun: ctx.dryRun, error: e });
119
+ throw err;
120
+ }
121
+ await ctx.lifecycle.emit('afterPatch', { integration: integ.id, dryRun: ctx.dryRun });
122
+ // Snapshot retention.
123
+ if ((opts.snapshotKeep ?? 10) > 0 && !ctx.dryRun) {
124
+ snapshotStore.prune(opts.snapshotKeep ?? 10);
125
+ }
126
+ if (ctx.dryRun) {
127
+ r.step('Dry-run diff');
128
+ r.diff(tx.plannedDiffs, ctx.projectRoot);
129
+ r.info('No changes were written (dry-run).');
130
+ finalize(r, opts, start, 'noop');
131
+ return { outcome: 'noop' };
132
+ }
133
+ // Validate via doctor.
134
+ const report = await integ.validate(ctx);
135
+ r.doctor(report);
136
+ if (report.summary === 'broken') {
137
+ r.error('Wizard finished but doctor reports the setup is broken.');
138
+ finalize(r, opts, start, 'failure', 'E_DOCTOR_BROKEN', { doctor: report });
139
+ return { outcome: 'failure' };
140
+ }
141
+ if (report.summary === 'degraded')
142
+ r.warn('Wizard finished with warnings.');
143
+ else
144
+ r.success('Wizard finished. Setup looks good.');
145
+ finalize(r, opts, start, 'success', undefined, { doctor: report });
146
+ return { outcome: 'success' };
147
+ }
148
+ function finalize(r, opts, start, outcome, errorCode, data) {
149
+ r.finalize({
150
+ command: 'init',
151
+ outcome,
152
+ durationMs: Date.now() - start,
153
+ errorCode,
154
+ data: { integration: opts.integration ?? null, ...(data ?? {}) },
155
+ });
156
+ }
157
+ //# sourceMappingURL=init.js.map