@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 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,MAAM,UAAU,iBAAiB;IAC/B,IAAI,YAAY;QAAE,OAAO;IACzB,aAAa;IACb,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACjC,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACtC,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,78 @@
1
+ import type { IntegrationId, PackageManager } from '../detect/index.js';
2
+ /**
3
+ * Stability levels — replaces the binary `validated: boolean` flag.
4
+ *
5
+ * stable — fully validated end-to-end with fixtures and CLI smoke tests.
6
+ * Safe for production use without --experimental.
7
+ * beta — implementation complete and unit-tested, but missing
8
+ * coverage in one of: live event ingestion, native build, or
9
+ * multi-version matrix. Runs without --experimental, emits a
10
+ * one-line warning.
11
+ * experimental — scaffolded; install + env writing only. Refuses to run
12
+ * patching without --experimental.
13
+ * unsupported — explicitly refused. detect() throws UnsupportedFrameworkError
14
+ * with a clear pointer to manual setup.
15
+ */
16
+ export type StabilityLevel = 'stable' | 'beta' | 'experimental' | 'unsupported';
17
+ /**
18
+ * Capability flags — what the integration actually does. Used by the doctor,
19
+ * the JSON reporter, and (later) the dashboard to show users what's wired up.
20
+ *
21
+ * IMPORTANT: capabilities are declarative. If a capability is listed here, the
22
+ * integration's patch() must implement it. If a capability is NOT listed,
23
+ * `--experimental` cannot conjure it into existence.
24
+ */
25
+ export type Capability = 'install-package' | 'write-env' | 'patch-entry' | 'patch-bundler-config' | 'patch-framework-config' | 'create-instrumentation' | 'wire-source-maps' | 'wire-native-ios' | 'wire-native-android' | 'wire-expo-config-plugin' | 'live-validate-event';
26
+ /**
27
+ * Compatibility constraints. Centralized so the compat engine (src/compat/engine.ts)
28
+ * can validate every integration against the same rules. Versions are semver
29
+ * ranges (or null for "no constraint").
30
+ */
31
+ export interface CompatConstraint {
32
+ /** Required dependency name (e.g. 'next', 'react', 'react-native'). */
33
+ name: string;
34
+ /** Minimum major.minor as a string ("13", "16.8", "0.70"). */
35
+ minVersion: string;
36
+ /** Optional maximum major (exclusive) — e.g. "16" means "<16". null = open-ended. */
37
+ maxMajorExclusive: number | null;
38
+ /** When true, dependency must be present; when false, missing dep means skip this constraint. */
39
+ required: boolean;
40
+ }
41
+ /**
42
+ * Files we expect to find or create. Used by `doctor` to report drift and by
43
+ * the JSON reporter to expose a hand-off list to dashboards.
44
+ */
45
+ export interface FileExpectation {
46
+ path: string;
47
+ /**
48
+ * 'required' — file must exist after patch (e.g. instrumentation.ts).
49
+ * 'optional' — file may exist; we patch only if it does (e.g. vite.config.ts).
50
+ * 'created' — wizard creates this file (e.g. .env.local).
51
+ */
52
+ kind: 'required' | 'optional' | 'created';
53
+ description?: string;
54
+ }
55
+ /**
56
+ * Machine-readable integration manifest. Exposed via `allstak-wizard list --json`
57
+ * and via the programmatic `registry.list()` API.
58
+ */
59
+ export interface IntegrationManifest {
60
+ id: IntegrationId;
61
+ title: string;
62
+ /** Primary AllStak SDK package this integration installs (display + uninstall). */
63
+ sdkPackage: string;
64
+ /** Additional packages installed (e.g. `@allstak/js` alongside `@allstak/react`). */
65
+ additionalPackages: readonly string[];
66
+ stability: StabilityLevel;
67
+ /** Markdown one-liner explaining the stability state — shown in `list`, doctor, and warnings. */
68
+ stabilityNote: string | null;
69
+ capabilities: readonly Capability[];
70
+ /** Capabilities that are intentionally NOT supported (so dashboard/users see the gap). */
71
+ unsupportedCapabilities: readonly Capability[];
72
+ compatibility: readonly CompatConstraint[];
73
+ files: readonly FileExpectation[];
74
+ supportedPackageManagers: readonly PackageManager[];
75
+ /** Optional link to docs for this integration. */
76
+ docsUrl: string | null;
77
+ }
78
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/registry/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAExE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;AAEhF;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAClB,iBAAiB,GACjB,WAAW,GACX,aAAa,GACb,sBAAsB,GACtB,wBAAwB,GACxB,wBAAwB,GACxB,kBAAkB,GAClB,iBAAiB,GACjB,qBAAqB,GACrB,yBAAyB,GACzB,qBAAqB,CAAC;AAE1B;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,iGAAiG;IACjG,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,aAAa,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,UAAU,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,SAAS,EAAE,cAAc,CAAC;IAC1B,iGAAiG;IACjG,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,SAAS,UAAU,EAAE,CAAC;IACpC,0FAA0F;IAC1F,uBAAuB,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/C,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC3C,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAClC,wBAAwB,EAAE,SAAS,cAAc,EAAE,CAAC;IACpD,kDAAkD;IAClD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/registry/manifest.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import type { IntegrationId } from '../detect/index.js';
2
+ import type { Integration } from './types.js';
3
+ declare class Registry {
4
+ private readonly map;
5
+ register(integration: Integration): void;
6
+ get(id: IntegrationId): Integration | undefined;
7
+ require(id: IntegrationId): Integration;
8
+ list(): Integration[];
9
+ ids(): IntegrationId[];
10
+ reset(): void;
11
+ }
12
+ export declare const registry: Registry;
13
+ export {};
14
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,cAAM,QAAQ;IACZ,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAyC;IAE7D,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAOxC,GAAG,CAAC,EAAE,EAAE,aAAa,GAAG,WAAW,GAAG,SAAS;IAI/C,OAAO,CAAC,EAAE,EAAE,aAAa,GAAG,WAAW;IAMvC,IAAI,IAAI,WAAW,EAAE;IAIrB,GAAG,IAAI,aAAa,EAAE;IAItB,KAAK,IAAI,IAAI;CAGd;AAED,eAAO,MAAM,QAAQ,UAAiB,CAAC"}
@@ -0,0 +1,29 @@
1
+ class Registry {
2
+ map = new Map();
3
+ register(integration) {
4
+ if (this.map.has(integration.id)) {
5
+ throw new Error(`Integration "${integration.id}" already registered`);
6
+ }
7
+ this.map.set(integration.id, integration);
8
+ }
9
+ get(id) {
10
+ return this.map.get(id);
11
+ }
12
+ require(id) {
13
+ const i = this.get(id);
14
+ if (!i)
15
+ throw new Error(`No integration registered for "${id}"`);
16
+ return i;
17
+ }
18
+ list() {
19
+ return Array.from(this.map.values());
20
+ }
21
+ ids() {
22
+ return Array.from(this.map.keys());
23
+ }
24
+ reset() {
25
+ this.map.clear();
26
+ }
27
+ }
28
+ export const registry = new Registry();
29
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"AAGA,MAAM,QAAQ;IACK,GAAG,GAAG,IAAI,GAAG,EAA8B,CAAC;IAE7D,QAAQ,CAAC,WAAwB;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,gBAAgB,WAAW,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC5C,CAAC;IAED,GAAG,CAAC,EAAiB;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,EAAiB;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,GAAG;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,78 @@
1
+ import type { Transaction } from '../transaction/tx.js';
2
+ import type { DetectedFramework, IntegrationId, PackageManager } from '../detect/index.js';
3
+ import type { IntegrationManifest } from './manifest.js';
4
+ import type { LifecycleEmitter } from '../lifecycle/hooks.js';
5
+ /**
6
+ * The wizard config that's threaded through every integration step.
7
+ */
8
+ export interface WizardContext {
9
+ projectRoot: string;
10
+ cwd: string;
11
+ apiKey: string;
12
+ org: string;
13
+ project: string;
14
+ environment: string;
15
+ release: string | null;
16
+ /** Ingestion endpoint (defaults to https://api.allstak.sa). */
17
+ host: string;
18
+ /** Dashboard URL — defaults to derived from host. */
19
+ dashboardHost: string;
20
+ /** Source-map upload host — defaults to host. */
21
+ ingestHost: string;
22
+ pm: PackageManager;
23
+ detected: DetectedFramework;
24
+ /** When true, all writes are recorded but not flushed. */
25
+ dryRun: boolean;
26
+ /** When true, integrations marked experimental are still allowed to run. */
27
+ experimental: boolean;
28
+ /** When true, never run package-manager installs (config-only mode). */
29
+ skipDeps: boolean;
30
+ /** When true, skip source-map plugin wiring. */
31
+ skipSourceMaps: boolean;
32
+ /** Lifecycle hook emitter — integrations can subscribe via ctx.lifecycle.on(...). */
33
+ lifecycle: LifecycleEmitter;
34
+ }
35
+ export interface CompatibilityCheck {
36
+ ok: boolean;
37
+ reason?: string;
38
+ }
39
+ /**
40
+ * The contract every integration implements. Each step is independently testable
41
+ * and is run inside a single Transaction by the orchestrator.
42
+ *
43
+ * Steps run in this order:
44
+ * 1. detect() → returns CompatibilityCheck
45
+ * 2. plan() → returns the human-readable plan
46
+ * 3. install() → installs deps via package manager (skipped on --skip-deps)
47
+ * 4. patch() → mutates files inside a transaction
48
+ * 5. validate() → runs lightweight verification (parses, optional probe)
49
+ *
50
+ * Plus reverse operations:
51
+ * - uninstall() → removes managed-block patches and uninstalls the SDK
52
+ * - repair() → re-runs patch() against the existing project, fixing drift
53
+ * - doctor() → reports health; never mutates
54
+ */
55
+ export interface Integration {
56
+ readonly id: IntegrationId;
57
+ readonly manifest: IntegrationManifest;
58
+ detect(ctx: WizardContext): Promise<CompatibilityCheck>;
59
+ plan(ctx: WizardContext): Promise<string[]>;
60
+ install(ctx: WizardContext): Promise<void>;
61
+ patch(ctx: WizardContext, tx: Transaction): Promise<void>;
62
+ validate(ctx: WizardContext): Promise<DoctorReport>;
63
+ uninstall(ctx: WizardContext, tx: Transaction): Promise<void>;
64
+ repair(ctx: WizardContext, tx: Transaction): Promise<void>;
65
+ doctor(ctx: WizardContext): Promise<DoctorReport>;
66
+ }
67
+ export interface DoctorCheck {
68
+ name: string;
69
+ status: 'pass' | 'fail' | 'warn' | 'skip';
70
+ detail?: string;
71
+ fix?: string;
72
+ }
73
+ export interface DoctorReport {
74
+ integration: IntegrationId;
75
+ checks: DoctorCheck[];
76
+ summary: 'ok' | 'degraded' | 'broken';
77
+ }
78
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,cAAc,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,0DAA0D;IAC1D,MAAM,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,YAAY,EAAE,OAAO,CAAC;IACtB,wEAAwE;IACxE,QAAQ,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,cAAc,EAAE,OAAO,CAAC;IACxB,qFAAqF;IACrF,SAAS,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IAEvC,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACxD,IAAI,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAEpD,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,aAAa,CAAC;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,IAAI,GAAG,UAAU,GAAG,QAAQ,CAAC;CACvC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import { SnapshotStore, type SnapshotInfo } from './store.js';
2
+ /**
3
+ * Snapshot restore — apply a previously-captured backup back over the working
4
+ * tree. Runs through Transaction so a partial failure rolls itself back.
5
+ *
6
+ * Three modes:
7
+ *
8
+ * - `restoreSnapshot(store, dir)` full restore of every file in the snapshot
9
+ * - `restoreFiles(store, dir, paths)` restore only the given (project-relative) files
10
+ * - `diffSnapshot(store, dir)` return per-file change descriptions vs current
11
+ */
12
+ export interface RestoreOptions {
13
+ /** When true, no files are written; the planned diff is returned instead. */
14
+ dryRun?: boolean;
15
+ }
16
+ export interface RestoreResult {
17
+ restored: string[];
18
+ skipped: string[];
19
+ /** Files that were created during the original run — restoring means deleting them. */
20
+ deleted: string[];
21
+ }
22
+ export declare function restoreSnapshot(store: SnapshotStore, snapshotDir: string, options?: RestoreOptions): Promise<RestoreResult>;
23
+ export declare function restoreFiles(store: SnapshotStore, snapshotDir: string, files: string[], options?: RestoreOptions): Promise<RestoreResult>;
24
+ export interface SnapshotDiffEntry {
25
+ path: string;
26
+ state: 'identical' | 'modified' | 'created-since' | 'deleted-since' | 'pre-image-missing';
27
+ /** Bytes in current working file (null when missing). */
28
+ currentBytes: number | null;
29
+ /** Bytes in the snapshot pre-image (null when this file was a 'create'). */
30
+ snapshotBytes: number | null;
31
+ }
32
+ export declare function diffSnapshot(store: SnapshotStore, snapshotDir: string): SnapshotDiffEntry[];
33
+ /** Convenience: list snapshots with a relative-path label for CLI display. */
34
+ export declare function describeSnapshot(info: SnapshotInfo, projectRoot: string): {
35
+ id: string;
36
+ label: string;
37
+ integration: string;
38
+ timestamp: string;
39
+ fileCount: number;
40
+ };
41
+ //# sourceMappingURL=restore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/snapshot/restore.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAyB,MAAM,YAAY,CAAC;AAGrF;;;;;;;;;GASG;AAEH,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,uFAAuF;IACvF,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAGxB;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAgBxB;AAqCD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,eAAe,GAAG,eAAe,GAAG,mBAAmB,CAAC;IAC1F,yDAAyD;IACzD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,4EAA4E;IAC5E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAkC3F;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAUlK"}
@@ -0,0 +1,110 @@
1
+ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { dirname, relative, resolve } from 'node:path';
3
+ import { Transaction } from '../transaction/tx.js';
4
+ import { WizardError } from '../util/errors.js';
5
+ export async function restoreSnapshot(store, snapshotDir, options = {}) {
6
+ const manifest = store.read(snapshotDir);
7
+ return applyRestore(store, snapshotDir, manifest, manifest.files.map((f) => f.path), options);
8
+ }
9
+ export async function restoreFiles(store, snapshotDir, files, options = {}) {
10
+ const manifest = store.read(snapshotDir);
11
+ const known = new Set(manifest.files.map((f) => f.path));
12
+ const unknown = files.filter((f) => !known.has(f));
13
+ if (unknown.length > 0) {
14
+ throw new WizardError('E_RESTORE_FAILED', `Snapshot does not contain: ${unknown.join(', ')}`, {
15
+ subcode: 'E_RESTORE_UNKNOWN_FILES',
16
+ hint: 'Use `allstak restore show <id>` to list files in this snapshot.',
17
+ context: { missingCount: unknown.length },
18
+ });
19
+ }
20
+ return applyRestore(store, snapshotDir, manifest, files, options);
21
+ }
22
+ async function applyRestore(store, snapshotDir, manifest, paths, options) {
23
+ const result = { restored: [], skipped: [], deleted: [] };
24
+ const tx = new Transaction({ dryRun: options.dryRun ?? false, cwd: manifest.projectRoot });
25
+ await tx.run(async () => {
26
+ for (const rel of paths) {
27
+ const entry = manifest.files.find((f) => f.path === rel);
28
+ if (!entry) {
29
+ result.skipped.push(rel);
30
+ continue;
31
+ }
32
+ const target = resolve(manifest.projectRoot, rel);
33
+ const preImage = store.readFilePreImage(snapshotDir, rel);
34
+ if (entry.kind === 'create') {
35
+ // Original run created this file; restoring means deleting it.
36
+ if (existsSync(target)) {
37
+ await tx.delete(target);
38
+ result.deleted.push(rel);
39
+ }
40
+ else {
41
+ result.skipped.push(rel);
42
+ }
43
+ }
44
+ else if (preImage === null) {
45
+ // Defensive — modify/delete entries should always have a pre-image.
46
+ result.skipped.push(rel);
47
+ }
48
+ else {
49
+ await tx.write(target, preImage);
50
+ result.restored.push(rel);
51
+ }
52
+ }
53
+ });
54
+ return result;
55
+ }
56
+ export function diffSnapshot(store, snapshotDir) {
57
+ const manifest = store.read(snapshotDir);
58
+ const entries = [];
59
+ for (const f of manifest.files) {
60
+ const target = resolve(manifest.projectRoot, f.path);
61
+ const currentExists = existsSync(target);
62
+ const currentBytes = currentExists ? readFileSync(target, 'utf8').length : null;
63
+ const preImage = store.readFilePreImage(snapshotDir, f.path);
64
+ if (f.kind === 'create') {
65
+ entries.push({
66
+ path: f.path,
67
+ state: currentExists ? 'modified' : 'deleted-since',
68
+ currentBytes,
69
+ snapshotBytes: null,
70
+ });
71
+ continue;
72
+ }
73
+ if (preImage === null) {
74
+ entries.push({ path: f.path, state: 'pre-image-missing', currentBytes, snapshotBytes: null });
75
+ continue;
76
+ }
77
+ if (!currentExists) {
78
+ entries.push({ path: f.path, state: 'deleted-since', currentBytes: null, snapshotBytes: preImage.length });
79
+ continue;
80
+ }
81
+ const current = readFileSync(target, 'utf8');
82
+ entries.push({
83
+ path: f.path,
84
+ state: current === preImage ? 'identical' : 'modified',
85
+ currentBytes: current.length,
86
+ snapshotBytes: preImage.length,
87
+ });
88
+ }
89
+ return entries;
90
+ }
91
+ /** Convenience: list snapshots with a relative-path label for CLI display. */
92
+ export function describeSnapshot(info, projectRoot) {
93
+ const id = info.dir.split('/').pop() ?? info.dir;
94
+ const label = relative(projectRoot, info.dir) || info.dir;
95
+ return {
96
+ id,
97
+ label,
98
+ integration: info.manifest.integration,
99
+ timestamp: info.manifest.timestamp,
100
+ fileCount: info.manifest.files.length,
101
+ };
102
+ }
103
+ // Suppress unused-import warning for `mkdirSync` / `rmSync` / `writeFileSync` /
104
+ // `dirname` — kept for symmetry with future restore helpers (e.g. exporting a
105
+ // snapshot to an external archive).
106
+ void mkdirSync;
107
+ void rmSync;
108
+ void writeFileSync;
109
+ void dirname;
110
+ //# sourceMappingURL=restore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/snapshot/restore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Persistent snapshot store. Lives at `<projectRoot>/.allstak-wizard/backups/`.
3
+ * Each wizard run that mutates files creates one backup directory:
4
+ *
5
+ * .allstak-wizard/backups/2026-05-07T13-42-19-008Z--react--abc123/
6
+ * manifest.json
7
+ * files/
8
+ * package.json # exact pre-write contents (or .deleted marker)
9
+ * src/main.tsx
10
+ * vite.config.ts
11
+ * .env.local
12
+ *
13
+ * The in-process Transaction layer continues to do same-run rollback. The
14
+ * snapshot store provides a longer-lived recovery surface for support /
15
+ * debugging / a future `wizard restore` command. Never cleaned automatically
16
+ * unless retention is configured.
17
+ */
18
+ export interface SnapshotManifest {
19
+ /** Schema version — bump when the manifest layout changes. */
20
+ schemaVersion: 1;
21
+ /** ISO-8601 timestamp the snapshot was created. */
22
+ timestamp: string;
23
+ /** Integration that triggered the run. */
24
+ integration: string;
25
+ /** Wizard package version that wrote the snapshot. */
26
+ wizardVersion: string;
27
+ /** Project root the snapshot is rooted at. */
28
+ projectRoot: string;
29
+ /** Files captured. Paths are project-relative. */
30
+ files: SnapshotFileEntry[];
31
+ /** True when the user passed --dry-run (snapshot still written for audit?). */
32
+ dryRun: boolean;
33
+ /** Human-readable label so support can pick a backup quickly. */
34
+ label: string | null;
35
+ }
36
+ export interface SnapshotFileEntry {
37
+ path: string;
38
+ /** 'modify' / 'create' captures pre-image contents; 'delete' has no contents. */
39
+ kind: 'modify' | 'create' | 'delete';
40
+ /** The pre-write content (omitted for created files: there was nothing). */
41
+ hadContent: boolean;
42
+ /** Byte size of the pre-image. */
43
+ byteLength: number;
44
+ }
45
+ export interface SnapshotInput {
46
+ integration: string;
47
+ wizardVersion: string;
48
+ projectRoot: string;
49
+ label?: string;
50
+ dryRun: boolean;
51
+ }
52
+ export interface SnapshotFileInput {
53
+ path: string;
54
+ kind: 'modify' | 'create' | 'delete';
55
+ /** Pre-image content. null when the file did not exist before. */
56
+ before: string | null;
57
+ }
58
+ export declare class SnapshotStore {
59
+ private readonly projectRoot;
60
+ constructor(projectRoot: string);
61
+ /**
62
+ * Allocate a new snapshot directory. Returns the directory path; nothing is
63
+ * written until `commit()`.
64
+ */
65
+ begin(input: SnapshotInput): SnapshotWriter;
66
+ list(): SnapshotInfo[];
67
+ /**
68
+ * Drop the oldest backups beyond `keep`. Returns the number deleted.
69
+ */
70
+ prune(keep: number): number;
71
+ read(snapshotDir: string): SnapshotManifest;
72
+ /**
73
+ * Read the pre-image for a file in a snapshot. Returns null for created files
74
+ * (their pre-image is "did not exist"); for deleted files the pre-image is
75
+ * always present.
76
+ */
77
+ readFilePreImage(snapshotDir: string, projectRelPath: string): string | null;
78
+ }
79
+ export interface SnapshotInfo {
80
+ dir: string;
81
+ manifest: SnapshotManifest;
82
+ }
83
+ export declare class SnapshotWriter {
84
+ private readonly dir;
85
+ private readonly input;
86
+ private readonly entries;
87
+ /** Pre-image bytes recorded so we can flush in `commit()`. */
88
+ private readonly buffered;
89
+ private finalized;
90
+ constructor(dir: string, input: SnapshotInput);
91
+ get directory(): string;
92
+ /**
93
+ * Capture a file's pre-image. Safe to call multiple times for the same path
94
+ * (only the first call wins — that is the true pre-image for the run).
95
+ */
96
+ capture(file: SnapshotFileInput): void;
97
+ /**
98
+ * Flush manifest + per-file pre-images to disk. No-op (returns null) when no
99
+ * files were captured. Returns the snapshot directory on success.
100
+ */
101
+ commit(): string | null;
102
+ /** Discard the snapshot without writing anything (used on dry-run by default). */
103
+ abort(): void;
104
+ }
105
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/snapshot/store.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,aAAa,EAAE,CAAC,CAAC;IACjB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,MAAM,EAAE,OAAO,CAAC;IAChB,iEAAiE;IACjE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,4EAA4E;IAC5E,UAAU,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,kEAAkE;IAClE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAMD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,WAAW,EAAE,MAAM;IAI/B;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc;IAO3C,IAAI,IAAI,YAAY,EAAE;IAoBtB;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAe3B,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB;IAK3C;;;;OAIG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAO7E;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsF;IAC/G,OAAO,CAAC,SAAS,CAAS;gBAEd,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa;IAK7C,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAiBtC;;;OAGG;IACH,MAAM,IAAI,MAAM,GAAG,IAAI;IA8BvB,kFAAkF;IAClF,KAAK,IAAI,IAAI;CAId"}