workos 0.2.1 → 0.3.2

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 (404) hide show
  1. package/.claude-plugin/plugin.json +3 -3
  2. package/README.md +3 -2
  3. package/dist/bin.js +42 -20
  4. package/dist/bin.js.map +1 -1
  5. package/dist/cli.config.d.ts +6 -3
  6. package/dist/cli.config.js +8 -3
  7. package/dist/cli.config.js.map +1 -1
  8. package/dist/commands/install-skill.js.map +1 -0
  9. package/dist/{src/commands → commands}/install.js +8 -12
  10. package/dist/commands/install.js.map +1 -0
  11. package/dist/{src/commands → commands}/login.js +3 -2
  12. package/dist/commands/login.js.map +1 -0
  13. package/dist/commands/logout.js.map +1 -0
  14. package/dist/craft-pre-release.sh +10 -0
  15. package/dist/dashboard/components/AnimatedLogo.js.map +1 -0
  16. package/dist/dashboard/components/CompletionView.js.map +1 -0
  17. package/dist/dashboard/components/ConfirmPrompt.js.map +1 -0
  18. package/dist/dashboard/components/CredentialsForm.js.map +1 -0
  19. package/dist/dashboard/components/Dashboard.js.map +1 -0
  20. package/dist/{src/dashboard → dashboard}/components/DashboardLayout.d.ts +2 -2
  21. package/dist/dashboard/components/DashboardLayout.js.map +1 -0
  22. package/dist/{src/dashboard → dashboard}/components/DiffPanel.d.ts +2 -2
  23. package/dist/dashboard/components/DiffPanel.js.map +1 -0
  24. package/dist/dashboard/components/InlinePrompt.js.map +1 -0
  25. package/dist/{src/dashboard → dashboard}/components/OutputPanel.d.ts +2 -2
  26. package/dist/dashboard/components/OutputPanel.js.map +1 -0
  27. package/dist/dashboard/components/Panel.js.map +1 -0
  28. package/dist/dashboard/components/TextInput.js.map +1 -0
  29. package/dist/dashboard/components/WelcomeArt.js.map +1 -0
  30. package/dist/dashboard/hooks/useAnimation.js.map +1 -0
  31. package/dist/dashboard/hooks/useKeyboard.js.map +1 -0
  32. package/dist/dashboard/hooks/useTerminalSize.js.map +1 -0
  33. package/dist/{src/dashboard → dashboard}/index.d.ts +2 -2
  34. package/dist/dashboard/index.js.map +1 -0
  35. package/dist/dashboard/lib/diff-utils.js.map +1 -0
  36. package/dist/dashboard/lib/logo-frames.js.map +1 -0
  37. package/dist/dashboard/lib/welcome-art.js.map +1 -0
  38. package/dist/dashboard/types.d.ts +5 -0
  39. package/dist/dashboard/types.js.map +1 -0
  40. package/dist/{src/lib → lib}/adapters/cli-adapter.d.ts +5 -5
  41. package/dist/{src/lib → lib}/adapters/cli-adapter.js +5 -5
  42. package/dist/lib/adapters/cli-adapter.js.map +1 -0
  43. package/dist/{src/lib → lib}/adapters/dashboard-adapter.d.ts +4 -4
  44. package/dist/lib/adapters/dashboard-adapter.js.map +1 -0
  45. package/dist/{src/lib → lib}/adapters/index.d.ts +1 -1
  46. package/dist/lib/adapters/index.js.map +1 -0
  47. package/dist/{src/lib → lib}/adapters/types.d.ts +4 -4
  48. package/dist/lib/adapters/types.js.map +1 -0
  49. package/dist/{src/lib → lib}/agent-interface.d.ts +15 -9
  50. package/dist/{src/lib → lib}/agent-interface.js +146 -61
  51. package/dist/lib/agent-interface.js.map +1 -0
  52. package/dist/{src/lib → lib}/agent-runner.d.ts +2 -2
  53. package/dist/{src/lib → lib}/agent-runner.js +4 -4
  54. package/dist/lib/agent-runner.js.map +1 -0
  55. package/dist/{src/lib → lib}/ai-content.d.ts +6 -2
  56. package/dist/lib/ai-content.js +130 -0
  57. package/dist/lib/ai-content.js.map +1 -0
  58. package/dist/lib/api.js.map +1 -0
  59. package/dist/lib/background-refresh.d.ts +29 -0
  60. package/dist/lib/background-refresh.js +95 -0
  61. package/dist/lib/background-refresh.js.map +1 -0
  62. package/dist/{src/lib → lib}/config.d.ts +6 -6
  63. package/dist/lib/config.js.map +1 -0
  64. package/dist/{src/lib → lib}/constants.d.ts +1 -1
  65. package/dist/{src/lib → lib}/constants.js +1 -1
  66. package/dist/lib/constants.js.map +1 -0
  67. package/dist/lib/credential-discovery.js.map +1 -0
  68. package/dist/lib/credential-proxy.d.ts +36 -0
  69. package/dist/lib/credential-proxy.js +298 -0
  70. package/dist/lib/credential-proxy.js.map +1 -0
  71. package/dist/{src/lib → lib}/credentials.d.ts +6 -0
  72. package/dist/{src/lib → lib}/credentials.js +33 -0
  73. package/dist/lib/credentials.js.map +1 -0
  74. package/dist/{src/lib → lib}/device-auth.d.ts +1 -0
  75. package/dist/{src/lib → lib}/device-auth.js +2 -1
  76. package/dist/lib/device-auth.js.map +1 -0
  77. package/dist/lib/ensure-auth.d.ts +22 -0
  78. package/dist/lib/ensure-auth.js +83 -0
  79. package/dist/lib/ensure-auth.js.map +1 -0
  80. package/dist/lib/env-writer.js.map +1 -0
  81. package/dist/{src/lib → lib}/events.d.ts +8 -8
  82. package/dist/{src/lib → lib}/events.js +3 -3
  83. package/dist/{src/lib → lib}/events.js.map +1 -1
  84. package/dist/{src/lib → lib}/framework-config.d.ts +2 -2
  85. package/dist/{src/lib → lib}/framework-config.js +1 -1
  86. package/dist/lib/framework-config.js.map +1 -0
  87. package/dist/lib/helper-functions.js.map +1 -0
  88. package/dist/{src/lib/wizard-core.d.ts → lib/installer-core.d.ts} +21 -17
  89. package/dist/{src/lib/wizard-core.js → lib/installer-core.js} +19 -17
  90. package/dist/lib/installer-core.js.map +1 -0
  91. package/dist/{src/lib/wizard-core.types.d.ts → lib/installer-core.types.d.ts} +9 -9
  92. package/dist/lib/installer-core.types.js +2 -0
  93. package/dist/lib/installer-core.types.js.map +1 -0
  94. package/dist/lib/port-detection.js.map +1 -0
  95. package/dist/lib/post-install.js.map +1 -0
  96. package/dist/lib/progress-tracker.js.map +1 -0
  97. package/dist/lib/run-with-core.d.ts +2 -0
  98. package/dist/{src/lib → lib}/run-with-core.js +38 -48
  99. package/dist/lib/run-with-core.js.map +1 -0
  100. package/dist/lib/safe-tools.js.map +1 -0
  101. package/dist/{src/lib → lib}/settings.d.ts +3 -0
  102. package/dist/{src/lib → lib}/settings.js +1 -1
  103. package/dist/lib/settings.js.map +1 -0
  104. package/dist/lib/staging-api.js.map +1 -0
  105. package/dist/lib/token-refresh-client.d.ts +23 -0
  106. package/dist/lib/token-refresh-client.js +88 -0
  107. package/dist/lib/token-refresh-client.js.map +1 -0
  108. package/dist/{src/lib → lib}/token-refresh.js +1 -1
  109. package/dist/lib/token-refresh.js.map +1 -0
  110. package/dist/lib/validation/build-validator.js.map +1 -0
  111. package/dist/lib/validation/index.js.map +1 -0
  112. package/dist/lib/validation/types.js.map +1 -0
  113. package/dist/lib/validation/validator.js.map +1 -0
  114. package/dist/{src/lib → lib}/workos-management.js +3 -3
  115. package/dist/lib/workos-management.js.map +1 -0
  116. package/dist/nextjs/nextjs-installer-agent.d.ts +6 -0
  117. package/dist/{src/nextjs/nextjs-wizard-agent.js → nextjs/nextjs-installer-agent.js} +6 -6
  118. package/dist/nextjs/nextjs-installer-agent.js.map +1 -0
  119. package/dist/{src/nextjs → nextjs}/utils.d.ts +2 -2
  120. package/dist/nextjs/utils.js.map +1 -0
  121. package/dist/react/react-installer-agent.d.ts +2 -0
  122. package/dist/{src/react/react-wizard-agent.js → react/react-installer-agent.js} +4 -4
  123. package/dist/react/react-installer-agent.js.map +1 -0
  124. package/dist/react-router/react-router-installer-agent.d.ts +6 -0
  125. package/dist/{src/react-router/react-router-wizard-agent.js → react-router/react-router-installer-agent.js} +6 -6
  126. package/dist/react-router/react-router-installer-agent.js.map +1 -0
  127. package/dist/{src/react-router → react-router}/utils.d.ts +2 -2
  128. package/dist/react-router/utils.js.map +1 -0
  129. package/dist/{src/run.d.ts → run.d.ts} +2 -1
  130. package/dist/{src/run.js → run.js} +5 -4
  131. package/dist/run.js.map +1 -0
  132. package/dist/{src/steps → steps}/add-or-update-environment-variables.js +5 -5
  133. package/dist/steps/add-or-update-environment-variables.js.map +1 -0
  134. package/dist/steps/index.js.map +1 -0
  135. package/dist/{src/steps → steps}/run-prettier.d.ts +2 -2
  136. package/dist/{src/steps → steps}/run-prettier.js +1 -1
  137. package/dist/steps/run-prettier.js.map +1 -0
  138. package/dist/{src/steps → steps}/upload-environment-variables/EnvironmentProvider.d.ts +3 -3
  139. package/dist/steps/upload-environment-variables/EnvironmentProvider.js.map +1 -0
  140. package/dist/{src/steps → steps}/upload-environment-variables/index.d.ts +2 -2
  141. package/dist/{src/steps → steps}/upload-environment-variables/index.js +3 -3
  142. package/dist/steps/upload-environment-variables/index.js.map +1 -0
  143. package/dist/{src/steps → steps}/upload-environment-variables/providers/vercel.d.ts +2 -2
  144. package/dist/steps/upload-environment-variables/providers/vercel.js.map +1 -0
  145. package/dist/tanstack-start/tanstack-start-installer-agent.d.ts +2 -0
  146. package/dist/{src/tanstack-start/tanstack-start-wizard-agent.js → tanstack-start/tanstack-start-installer-agent.js} +4 -4
  147. package/dist/tanstack-start/tanstack-start-installer-agent.js.map +1 -0
  148. package/dist/telemetry.js.map +1 -0
  149. package/dist/{src/utils → utils}/analytics.js +8 -8
  150. package/dist/utils/analytics.js.map +1 -0
  151. package/dist/utils/bash.js.map +1 -0
  152. package/dist/{src/utils → utils}/clack-utils.d.ts +9 -9
  153. package/dist/{src/utils → utils}/clack-utils.js +8 -8
  154. package/dist/utils/clack-utils.js.map +1 -0
  155. package/dist/utils/clack.js.map +1 -0
  156. package/dist/utils/cli-symbols.js.map +1 -0
  157. package/dist/{src/utils → utils}/debug.js +1 -1
  158. package/dist/utils/debug.js.map +1 -0
  159. package/dist/utils/env-parser.js.map +1 -0
  160. package/dist/utils/environment.d.ts +4 -0
  161. package/dist/{src/utils → utils}/environment.js +1 -1
  162. package/dist/utils/environment.js.map +1 -0
  163. package/dist/{src/utils → utils}/errors.js +1 -1
  164. package/dist/utils/errors.js.map +1 -0
  165. package/dist/utils/git-utils.js.map +1 -0
  166. package/dist/utils/logging.js.map +1 -0
  167. package/dist/utils/package-json.js.map +1 -0
  168. package/dist/{src/utils → utils}/package-manager.d.ts +4 -4
  169. package/dist/utils/package-manager.js.map +1 -0
  170. package/dist/utils/redact.js.map +1 -0
  171. package/dist/utils/semver.js.map +1 -0
  172. package/dist/utils/string.js.map +1 -0
  173. package/dist/{src/utils → utils}/telemetry-client.js +6 -2
  174. package/dist/utils/telemetry-client.js.map +1 -0
  175. package/dist/{src/utils → utils}/telemetry-types.d.ts +5 -5
  176. package/dist/utils/telemetry-types.js +6 -0
  177. package/dist/utils/telemetry-types.js.map +1 -0
  178. package/dist/{src/utils → utils}/types.d.ts +7 -2
  179. package/dist/{src/utils → utils}/types.js.map +1 -1
  180. package/dist/utils/urls.js.map +1 -0
  181. package/dist/utils/vendor/is-unicorn-supported.js.map +1 -0
  182. package/dist/vanilla-js/vanilla-js-installer-agent.d.ts +2 -0
  183. package/dist/{src/vanilla-js/vanilla-js-wizard-agent.js → vanilla-js/vanilla-js-installer-agent.js} +4 -4
  184. package/dist/vanilla-js/vanilla-js-installer-agent.js.map +1 -0
  185. package/package.json +11 -7
  186. package/dist/src/commands/install-skill.js.map +0 -1
  187. package/dist/src/commands/install.js.map +0 -1
  188. package/dist/src/commands/login.js.map +0 -1
  189. package/dist/src/commands/logout.js.map +0 -1
  190. package/dist/src/dashboard/components/AnimatedLogo.js.map +0 -1
  191. package/dist/src/dashboard/components/CompletionView.js.map +0 -1
  192. package/dist/src/dashboard/components/ConfirmPrompt.js.map +0 -1
  193. package/dist/src/dashboard/components/CredentialsForm.js.map +0 -1
  194. package/dist/src/dashboard/components/Dashboard.js.map +0 -1
  195. package/dist/src/dashboard/components/DashboardLayout.js.map +0 -1
  196. package/dist/src/dashboard/components/DiffPanel.js.map +0 -1
  197. package/dist/src/dashboard/components/InlinePrompt.js.map +0 -1
  198. package/dist/src/dashboard/components/OutputPanel.js.map +0 -1
  199. package/dist/src/dashboard/components/Panel.js.map +0 -1
  200. package/dist/src/dashboard/components/TextInput.js.map +0 -1
  201. package/dist/src/dashboard/components/WelcomeArt.js.map +0 -1
  202. package/dist/src/dashboard/hooks/useAnimation.js.map +0 -1
  203. package/dist/src/dashboard/hooks/useKeyboard.js.map +0 -1
  204. package/dist/src/dashboard/hooks/useTerminalSize.js.map +0 -1
  205. package/dist/src/dashboard/index.js.map +0 -1
  206. package/dist/src/dashboard/lib/diff-utils.js.map +0 -1
  207. package/dist/src/dashboard/lib/logo-frames.js.map +0 -1
  208. package/dist/src/dashboard/lib/welcome-art.js.map +0 -1
  209. package/dist/src/dashboard/types.d.ts +0 -5
  210. package/dist/src/dashboard/types.js.map +0 -1
  211. package/dist/src/lib/__tests__/test-utils.d.ts +0 -40
  212. package/dist/src/lib/__tests__/test-utils.js +0 -108
  213. package/dist/src/lib/__tests__/test-utils.js.map +0 -1
  214. package/dist/src/lib/adapters/cli-adapter.js.map +0 -1
  215. package/dist/src/lib/adapters/dashboard-adapter.js.map +0 -1
  216. package/dist/src/lib/adapters/index.js.map +0 -1
  217. package/dist/src/lib/adapters/types.js.map +0 -1
  218. package/dist/src/lib/agent-interface.js.map +0 -1
  219. package/dist/src/lib/agent-runner.js.map +0 -1
  220. package/dist/src/lib/ai-content.js +0 -68
  221. package/dist/src/lib/ai-content.js.map +0 -1
  222. package/dist/src/lib/api.js.map +0 -1
  223. package/dist/src/lib/config.js.map +0 -1
  224. package/dist/src/lib/constants.js.map +0 -1
  225. package/dist/src/lib/credential-discovery.js.map +0 -1
  226. package/dist/src/lib/credentials.js.map +0 -1
  227. package/dist/src/lib/device-auth.js.map +0 -1
  228. package/dist/src/lib/env-writer.js.map +0 -1
  229. package/dist/src/lib/framework-config.js.map +0 -1
  230. package/dist/src/lib/helper-functions.js.map +0 -1
  231. package/dist/src/lib/port-detection.js.map +0 -1
  232. package/dist/src/lib/post-install.js.map +0 -1
  233. package/dist/src/lib/progress-tracker.js.map +0 -1
  234. package/dist/src/lib/run-with-core.d.ts +0 -2
  235. package/dist/src/lib/run-with-core.js.map +0 -1
  236. package/dist/src/lib/safe-tools.js.map +0 -1
  237. package/dist/src/lib/settings.js.map +0 -1
  238. package/dist/src/lib/staging-api.js.map +0 -1
  239. package/dist/src/lib/token-refresh.js.map +0 -1
  240. package/dist/src/lib/validation/build-validator.js.map +0 -1
  241. package/dist/src/lib/validation/index.js.map +0 -1
  242. package/dist/src/lib/validation/types.js.map +0 -1
  243. package/dist/src/lib/validation/validator.js.map +0 -1
  244. package/dist/src/lib/wizard-core.js.map +0 -1
  245. package/dist/src/lib/wizard-core.types.js +0 -2
  246. package/dist/src/lib/wizard-core.types.js.map +0 -1
  247. package/dist/src/lib/workos-management.js.map +0 -1
  248. package/dist/src/nextjs/nextjs-wizard-agent.d.ts +0 -6
  249. package/dist/src/nextjs/nextjs-wizard-agent.js.map +0 -1
  250. package/dist/src/nextjs/utils.js.map +0 -1
  251. package/dist/src/react/react-wizard-agent.d.ts +0 -2
  252. package/dist/src/react/react-wizard-agent.js.map +0 -1
  253. package/dist/src/react-router/react-router-wizard-agent.d.ts +0 -6
  254. package/dist/src/react-router/react-router-wizard-agent.js.map +0 -1
  255. package/dist/src/react-router/utils.js.map +0 -1
  256. package/dist/src/run.js.map +0 -1
  257. package/dist/src/steps/add-or-update-environment-variables.js.map +0 -1
  258. package/dist/src/steps/index.js.map +0 -1
  259. package/dist/src/steps/run-prettier.js.map +0 -1
  260. package/dist/src/steps/upload-environment-variables/EnvironmentProvider.js.map +0 -1
  261. package/dist/src/steps/upload-environment-variables/index.js.map +0 -1
  262. package/dist/src/steps/upload-environment-variables/providers/vercel.js.map +0 -1
  263. package/dist/src/tanstack-start/tanstack-start-wizard-agent.d.ts +0 -2
  264. package/dist/src/tanstack-start/tanstack-start-wizard-agent.js.map +0 -1
  265. package/dist/src/telemetry.js.map +0 -1
  266. package/dist/src/utils/analytics.js.map +0 -1
  267. package/dist/src/utils/bash.js.map +0 -1
  268. package/dist/src/utils/clack-utils.js.map +0 -1
  269. package/dist/src/utils/clack.js.map +0 -1
  270. package/dist/src/utils/cli-symbols.js.map +0 -1
  271. package/dist/src/utils/debug.js.map +0 -1
  272. package/dist/src/utils/env-parser.js.map +0 -1
  273. package/dist/src/utils/environment.d.ts +0 -4
  274. package/dist/src/utils/environment.js.map +0 -1
  275. package/dist/src/utils/errors.js.map +0 -1
  276. package/dist/src/utils/git-utils.js.map +0 -1
  277. package/dist/src/utils/logging.js.map +0 -1
  278. package/dist/src/utils/package-json.js.map +0 -1
  279. package/dist/src/utils/package-manager.js.map +0 -1
  280. package/dist/src/utils/redact.js.map +0 -1
  281. package/dist/src/utils/semver.js.map +0 -1
  282. package/dist/src/utils/string.js.map +0 -1
  283. package/dist/src/utils/telemetry-client.js.map +0 -1
  284. package/dist/src/utils/telemetry-types.js +0 -6
  285. package/dist/src/utils/telemetry-types.js.map +0 -1
  286. package/dist/src/utils/urls.js.map +0 -1
  287. package/dist/src/utils/vendor/is-unicorn-supported.js.map +0 -1
  288. package/dist/src/vanilla-js/vanilla-js-wizard-agent.d.ts +0 -2
  289. package/dist/src/vanilla-js/vanilla-js-wizard-agent.js.map +0 -1
  290. package/dist/src/version.d.ts +0 -1
  291. package/dist/src/version.js +0 -2
  292. package/dist/src/version.js.map +0 -1
  293. /package/dist/{src/commands → commands}/install-skill.d.ts +0 -0
  294. /package/dist/{src/commands → commands}/install-skill.js +0 -0
  295. /package/dist/{src/commands → commands}/install.d.ts +0 -0
  296. /package/dist/{src/commands → commands}/login.d.ts +0 -0
  297. /package/dist/{src/commands → commands}/logout.d.ts +0 -0
  298. /package/dist/{src/commands → commands}/logout.js +0 -0
  299. /package/dist/{src/dashboard → dashboard}/components/AnimatedLogo.d.ts +0 -0
  300. /package/dist/{src/dashboard → dashboard}/components/AnimatedLogo.js +0 -0
  301. /package/dist/{src/dashboard → dashboard}/components/CompletionView.d.ts +0 -0
  302. /package/dist/{src/dashboard → dashboard}/components/CompletionView.js +0 -0
  303. /package/dist/{src/dashboard → dashboard}/components/ConfirmPrompt.d.ts +0 -0
  304. /package/dist/{src/dashboard → dashboard}/components/ConfirmPrompt.js +0 -0
  305. /package/dist/{src/dashboard → dashboard}/components/CredentialsForm.d.ts +0 -0
  306. /package/dist/{src/dashboard → dashboard}/components/CredentialsForm.js +0 -0
  307. /package/dist/{src/dashboard → dashboard}/components/Dashboard.d.ts +0 -0
  308. /package/dist/{src/dashboard → dashboard}/components/Dashboard.js +0 -0
  309. /package/dist/{src/dashboard → dashboard}/components/DashboardLayout.js +0 -0
  310. /package/dist/{src/dashboard → dashboard}/components/DiffPanel.js +0 -0
  311. /package/dist/{src/dashboard → dashboard}/components/InlinePrompt.d.ts +0 -0
  312. /package/dist/{src/dashboard → dashboard}/components/InlinePrompt.js +0 -0
  313. /package/dist/{src/dashboard → dashboard}/components/OutputPanel.js +0 -0
  314. /package/dist/{src/dashboard → dashboard}/components/Panel.d.ts +0 -0
  315. /package/dist/{src/dashboard → dashboard}/components/Panel.js +0 -0
  316. /package/dist/{src/dashboard → dashboard}/components/TextInput.d.ts +0 -0
  317. /package/dist/{src/dashboard → dashboard}/components/TextInput.js +0 -0
  318. /package/dist/{src/dashboard → dashboard}/components/WelcomeArt.d.ts +0 -0
  319. /package/dist/{src/dashboard → dashboard}/components/WelcomeArt.js +0 -0
  320. /package/dist/{src/dashboard → dashboard}/hooks/useAnimation.d.ts +0 -0
  321. /package/dist/{src/dashboard → dashboard}/hooks/useAnimation.js +0 -0
  322. /package/dist/{src/dashboard → dashboard}/hooks/useKeyboard.d.ts +0 -0
  323. /package/dist/{src/dashboard → dashboard}/hooks/useKeyboard.js +0 -0
  324. /package/dist/{src/dashboard → dashboard}/hooks/useTerminalSize.d.ts +0 -0
  325. /package/dist/{src/dashboard → dashboard}/hooks/useTerminalSize.js +0 -0
  326. /package/dist/{src/dashboard → dashboard}/index.js +0 -0
  327. /package/dist/{src/dashboard → dashboard}/lib/diff-utils.d.ts +0 -0
  328. /package/dist/{src/dashboard → dashboard}/lib/diff-utils.js +0 -0
  329. /package/dist/{src/dashboard → dashboard}/lib/logo-frames.d.ts +0 -0
  330. /package/dist/{src/dashboard → dashboard}/lib/logo-frames.js +0 -0
  331. /package/dist/{src/dashboard → dashboard}/lib/welcome-art.d.ts +0 -0
  332. /package/dist/{src/dashboard → dashboard}/lib/welcome-art.js +0 -0
  333. /package/dist/{src/dashboard → dashboard}/types.js +0 -0
  334. /package/dist/{src/lib → lib}/adapters/dashboard-adapter.js +0 -0
  335. /package/dist/{src/lib → lib}/adapters/index.js +0 -0
  336. /package/dist/{src/lib → lib}/adapters/types.js +0 -0
  337. /package/dist/{src/lib → lib}/api.d.ts +0 -0
  338. /package/dist/{src/lib → lib}/api.js +0 -0
  339. /package/dist/{src/lib → lib}/config.js +0 -0
  340. /package/dist/{src/lib → lib}/credential-discovery.d.ts +0 -0
  341. /package/dist/{src/lib → lib}/credential-discovery.js +0 -0
  342. /package/dist/{src/lib → lib}/env-writer.d.ts +0 -0
  343. /package/dist/{src/lib → lib}/env-writer.js +0 -0
  344. /package/dist/{src/lib → lib}/helper-functions.d.ts +0 -0
  345. /package/dist/{src/lib → lib}/helper-functions.js +0 -0
  346. /package/dist/{src/lib → lib}/port-detection.d.ts +0 -0
  347. /package/dist/{src/lib → lib}/port-detection.js +0 -0
  348. /package/dist/{src/lib → lib}/post-install.d.ts +0 -0
  349. /package/dist/{src/lib → lib}/post-install.js +0 -0
  350. /package/dist/{src/lib → lib}/progress-tracker.d.ts +0 -0
  351. /package/dist/{src/lib → lib}/progress-tracker.js +0 -0
  352. /package/dist/{src/lib → lib}/safe-tools.d.ts +0 -0
  353. /package/dist/{src/lib → lib}/safe-tools.js +0 -0
  354. /package/dist/{src/lib → lib}/staging-api.d.ts +0 -0
  355. /package/dist/{src/lib → lib}/staging-api.js +0 -0
  356. /package/dist/{src/lib → lib}/token-refresh.d.ts +0 -0
  357. /package/dist/{src/lib → lib}/validation/build-validator.d.ts +0 -0
  358. /package/dist/{src/lib → lib}/validation/build-validator.js +0 -0
  359. /package/dist/{src/lib → lib}/validation/index.d.ts +0 -0
  360. /package/dist/{src/lib → lib}/validation/index.js +0 -0
  361. /package/dist/{src/lib → lib}/validation/types.d.ts +0 -0
  362. /package/dist/{src/lib → lib}/validation/types.js +0 -0
  363. /package/dist/{src/lib → lib}/validation/validator.d.ts +0 -0
  364. /package/dist/{src/lib → lib}/validation/validator.js +0 -0
  365. /package/dist/{src/lib → lib}/workos-management.d.ts +0 -0
  366. /package/dist/{src/nextjs → nextjs}/utils.js +0 -0
  367. /package/dist/{src/react-router → react-router}/utils.js +0 -0
  368. /package/dist/{src/steps → steps}/add-or-update-environment-variables.d.ts +0 -0
  369. /package/dist/{src/steps → steps}/index.d.ts +0 -0
  370. /package/dist/{src/steps → steps}/index.js +0 -0
  371. /package/dist/{src/steps → steps}/upload-environment-variables/EnvironmentProvider.js +0 -0
  372. /package/dist/{src/steps → steps}/upload-environment-variables/providers/vercel.js +0 -0
  373. /package/dist/{src/telemetry.d.ts → telemetry.d.ts} +0 -0
  374. /package/dist/{src/telemetry.js → telemetry.js} +0 -0
  375. /package/dist/{src/utils → utils}/analytics.d.ts +0 -0
  376. /package/dist/{src/utils → utils}/bash.d.ts +0 -0
  377. /package/dist/{src/utils → utils}/bash.js +0 -0
  378. /package/dist/{src/utils → utils}/clack.d.ts +0 -0
  379. /package/dist/{src/utils → utils}/clack.js +0 -0
  380. /package/dist/{src/utils → utils}/cli-symbols.d.ts +0 -0
  381. /package/dist/{src/utils → utils}/cli-symbols.js +0 -0
  382. /package/dist/{src/utils → utils}/debug.d.ts +0 -0
  383. /package/dist/{src/utils → utils}/env-parser.d.ts +0 -0
  384. /package/dist/{src/utils → utils}/env-parser.js +0 -0
  385. /package/dist/{src/utils → utils}/errors.d.ts +0 -0
  386. /package/dist/{src/utils → utils}/git-utils.d.ts +0 -0
  387. /package/dist/{src/utils → utils}/git-utils.js +0 -0
  388. /package/dist/{src/utils → utils}/logging.d.ts +0 -0
  389. /package/dist/{src/utils → utils}/logging.js +0 -0
  390. /package/dist/{src/utils → utils}/package-json.d.ts +0 -0
  391. /package/dist/{src/utils → utils}/package-json.js +0 -0
  392. /package/dist/{src/utils → utils}/package-manager.js +0 -0
  393. /package/dist/{src/utils → utils}/redact.d.ts +0 -0
  394. /package/dist/{src/utils → utils}/redact.js +0 -0
  395. /package/dist/{src/utils → utils}/semver.d.ts +0 -0
  396. /package/dist/{src/utils → utils}/semver.js +0 -0
  397. /package/dist/{src/utils → utils}/string.d.ts +0 -0
  398. /package/dist/{src/utils → utils}/string.js +0 -0
  399. /package/dist/{src/utils → utils}/telemetry-client.d.ts +0 -0
  400. /package/dist/{src/utils → utils}/types.js +0 -0
  401. /package/dist/{src/utils → utils}/urls.d.ts +0 -0
  402. /package/dist/{src/utils → utils}/urls.js +0 -0
  403. /package/dist/{src/utils → utils}/vendor/is-unicorn-supported.d.ts +0 -0
  404. /package/dist/{src/utils → utils}/vendor/is-unicorn-supported.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/lib/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAuFtC,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD,IAAI,CAA4B,KAAQ,EAAE,OAAwB;QAChE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,EAAE,CAA4B,KAAQ,EAAE,QAA4C;QAClF,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAA4B,KAAQ,EAAE,QAA4C;QACnF,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,CAA4B,KAAQ,EAAE,QAA4C;QACpF,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;CACF;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,kBAAkB,EAAE,CAAC;AAClC,CAAC","sourcesContent":["import { EventEmitter } from 'events';\n\nexport interface WizardEvents {\n status: { message: string };\n output: { text: string; isError?: boolean };\n 'file:write': { path: string; content: string };\n 'file:edit': { path: string; oldContent: string; newContent: string };\n 'prompt:request': { id: string; message: string; options?: string[] };\n 'prompt:response': { id: string; value: string };\n 'confirm:request': { id: string; message: string; warning?: string; files?: string[] };\n 'confirm:response': { id: string; confirmed: boolean };\n 'credentials:request': { requiresApiKey: boolean };\n 'credentials:response': { apiKey: string; clientId: string };\n complete: { success: boolean; summary?: string };\n error: { message: string; stack?: string };\n\n 'state:enter': { state: string };\n 'state:exit': { state: string };\n 'auth:checking': Record<string, never>;\n 'auth:required': Record<string, never>;\n 'auth:success': Record<string, never>;\n 'auth:failure': { message: string };\n 'detection:start': Record<string, never>;\n 'detection:complete': { integration: string };\n 'detection:none': Record<string, never>;\n 'git:checking': Record<string, never>;\n 'git:clean': Record<string, never>;\n 'git:dirty': { files: string[] };\n 'git:dirty:confirmed': Record<string, never>;\n 'git:dirty:cancelled': Record<string, never>;\n 'credentials:gathering': { requiresApiKey: boolean };\n 'credentials:found': Record<string, never>;\n // Credential discovery events\n 'credentials:env:detected': { files: string[] };\n 'credentials:env:prompt': { files: string[] };\n 'credentials:env:scanning': Record<string, never>;\n 'credentials:env:found': { sourcePath: string };\n 'credentials:env:notfound': Record<string, never>;\n // Device auth events\n 'device:started': { verificationUri: string; verificationUriComplete: string; userCode: string };\n 'device:polling': Record<string, never>;\n 'device:success': { email?: string };\n 'device:timeout': Record<string, never>;\n 'device:error': { message: string };\n // Staging API events\n 'staging:fetching': Record<string, never>;\n 'staging:success': Record<string, never>;\n 'staging:error': { message: string; statusCode?: number };\n 'config:start': Record<string, never>;\n 'config:complete': Record<string, never>;\n 'agent:start': Record<string, never>;\n 'agent:progress': { step: string; detail?: string };\n 'agent:success': { summary?: string };\n 'agent:failure': { message: string; stack?: string };\n\n 'validation:start': { framework: string };\n 'validation:issues': { issues: import('./validation/types.js').ValidationIssue[] };\n 'validation:complete': { passed: boolean; issueCount: number; durationMs: number };\n\n // Branch check events\n 'branch:checking': Record<string, never>;\n 'branch:protected': { branch: string };\n 'branch:prompt': { branch: string };\n 'branch:created': { branch: string };\n 'branch:create:failed': { error: string };\n 'branch:skipped': Record<string, never>;\n\n // Post-install events\n 'postinstall:changes': { files: string[] };\n 'postinstall:nochanges': Record<string, never>;\n 'postinstall:commit:prompt': Record<string, never>;\n 'postinstall:commit:generating': Record<string, never>;\n 'postinstall:commit:committing': { message: string };\n 'postinstall:commit:success': { message: string };\n 'postinstall:commit:failed': { error: string };\n 'postinstall:pr:prompt': Record<string, never>;\n 'postinstall:pr:generating': Record<string, never>;\n 'postinstall:pr:pushing': Record<string, never>;\n 'postinstall:pr:creating': Record<string, never>;\n 'postinstall:pr:success': { url: string };\n 'postinstall:pr:failed': { error: string };\n 'postinstall:push:failed': { error: string };\n 'postinstall:manual': { instructions: string };\n}\n\nexport type WizardEventName = keyof WizardEvents;\n\nexport class WizardEventEmitter extends EventEmitter {\n emit<K extends WizardEventName>(event: K, payload: WizardEvents[K]): boolean {\n return super.emit(event, payload);\n }\n\n on<K extends WizardEventName>(event: K, listener: (payload: WizardEvents[K]) => void): this {\n return super.on(event, listener);\n }\n\n off<K extends WizardEventName>(event: K, listener: (payload: WizardEvents[K]) => void): this {\n return super.off(event, listener);\n }\n\n once<K extends WizardEventName>(event: K, listener: (payload: WizardEvents[K]) => void): this {\n return super.once(event, listener);\n }\n}\n\nexport function createWizardEventEmitter(): WizardEventEmitter {\n return new WizardEventEmitter();\n}\n"]}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/lib/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAuFtC,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IACrD,IAAI,CAA+B,KAAQ,EAAE,OAA2B;QACtE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,EAAE,CAA+B,KAAQ,EAAE,QAA+C;QACxF,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAA+B,KAAQ,EAAE,QAA+C;QACzF,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,CAA+B,KAAQ,EAAE,QAA+C;QAC1F,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;CACF;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO,IAAI,qBAAqB,EAAE,CAAC;AACrC,CAAC","sourcesContent":["import { EventEmitter } from 'events';\n\nexport interface InstallerEvents {\n status: { message: string };\n output: { text: string; isError?: boolean };\n 'file:write': { path: string; content: string };\n 'file:edit': { path: string; oldContent: string; newContent: string };\n 'prompt:request': { id: string; message: string; options?: string[] };\n 'prompt:response': { id: string; value: string };\n 'confirm:request': { id: string; message: string; warning?: string; files?: string[] };\n 'confirm:response': { id: string; confirmed: boolean };\n 'credentials:request': { requiresApiKey: boolean };\n 'credentials:response': { apiKey: string; clientId: string };\n complete: { success: boolean; summary?: string };\n error: { message: string; stack?: string };\n\n 'state:enter': { state: string };\n 'state:exit': { state: string };\n 'auth:checking': Record<string, never>;\n 'auth:required': Record<string, never>;\n 'auth:success': Record<string, never>;\n 'auth:failure': { message: string };\n 'detection:start': Record<string, never>;\n 'detection:complete': { integration: string };\n 'detection:none': Record<string, never>;\n 'git:checking': Record<string, never>;\n 'git:clean': Record<string, never>;\n 'git:dirty': { files: string[] };\n 'git:dirty:confirmed': Record<string, never>;\n 'git:dirty:cancelled': Record<string, never>;\n 'credentials:gathering': { requiresApiKey: boolean };\n 'credentials:found': Record<string, never>;\n // Credential discovery events\n 'credentials:env:detected': { files: string[] };\n 'credentials:env:prompt': { files: string[] };\n 'credentials:env:scanning': Record<string, never>;\n 'credentials:env:found': { sourcePath: string };\n 'credentials:env:notfound': Record<string, never>;\n // Device auth events\n 'device:started': { verificationUri: string; verificationUriComplete: string; userCode: string };\n 'device:polling': Record<string, never>;\n 'device:success': { email?: string };\n 'device:timeout': Record<string, never>;\n 'device:error': { message: string };\n // Staging API events\n 'staging:fetching': Record<string, never>;\n 'staging:success': Record<string, never>;\n 'staging:error': { message: string; statusCode?: number };\n 'config:start': Record<string, never>;\n 'config:complete': Record<string, never>;\n 'agent:start': Record<string, never>;\n 'agent:progress': { step: string; detail?: string };\n 'agent:success': { summary?: string };\n 'agent:failure': { message: string; stack?: string };\n\n 'validation:start': { framework: string };\n 'validation:issues': { issues: import('./validation/types.js').ValidationIssue[] };\n 'validation:complete': { passed: boolean; issueCount: number; durationMs: number };\n\n // Branch check events\n 'branch:checking': Record<string, never>;\n 'branch:protected': { branch: string };\n 'branch:prompt': { branch: string };\n 'branch:created': { branch: string };\n 'branch:create:failed': { error: string };\n 'branch:skipped': Record<string, never>;\n\n // Post-install events\n 'postinstall:changes': { files: string[] };\n 'postinstall:nochanges': Record<string, never>;\n 'postinstall:commit:prompt': Record<string, never>;\n 'postinstall:commit:generating': Record<string, never>;\n 'postinstall:commit:committing': { message: string };\n 'postinstall:commit:success': { message: string };\n 'postinstall:commit:failed': { error: string };\n 'postinstall:pr:prompt': Record<string, never>;\n 'postinstall:pr:generating': Record<string, never>;\n 'postinstall:pr:pushing': Record<string, never>;\n 'postinstall:pr:creating': Record<string, never>;\n 'postinstall:pr:success': { url: string };\n 'postinstall:pr:failed': { error: string };\n 'postinstall:push:failed': { error: string };\n 'postinstall:manual': { instructions: string };\n}\n\nexport type InstallerEventName = keyof InstallerEvents;\n\nexport class InstallerEventEmitter extends EventEmitter {\n emit<K extends InstallerEventName>(event: K, payload: InstallerEvents[K]): boolean {\n return super.emit(event, payload);\n }\n\n on<K extends InstallerEventName>(event: K, listener: (payload: InstallerEvents[K]) => void): this {\n return super.on(event, listener);\n }\n\n off<K extends InstallerEventName>(event: K, listener: (payload: InstallerEvents[K]) => void): this {\n return super.off(event, listener);\n }\n\n once<K extends InstallerEventName>(event: K, listener: (payload: InstallerEvents[K]) => void): this {\n return super.once(event, listener);\n }\n}\n\nexport function createInstallerEventEmitter(): InstallerEventEmitter {\n return new InstallerEventEmitter();\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { Integration } from './constants.js';
2
- import type { WizardOptions } from '../utils/types.js';
2
+ import type { InstallerOptions } from '../utils/types.js';
3
3
  /**
4
4
  * Configuration interface for framework-specific agent integrations.
5
5
  * Each framework exports a FrameworkConfig that the universal runner uses.
@@ -32,7 +32,7 @@ export interface FrameworkMetadata {
32
32
  * For Next.js: detects router type
33
33
  * For React Native: detects Expo vs bare
34
34
  */
35
- gatherContext?: (options: WizardOptions) => Promise<Record<string, any>>;
35
+ gatherContext?: (options: InstallerOptions) => Promise<Record<string, any>>;
36
36
  /**
37
37
  * Name of the framework-specific skill for agent integration.
38
38
  * Skills are located in .claude/skills/{skillName}/SKILL.md
@@ -2,7 +2,7 @@
2
2
  * Generate welcome message from framework name
3
3
  */
4
4
  export function getWelcomeMessage(frameworkName) {
5
- return `WorkOS AuthKit ${frameworkName} wizard (agent-powered)`;
5
+ return `WorkOS AuthKit ${frameworkName} installer (agent-powered)`;
6
6
  }
7
7
  /**
8
8
  * Shared spinner message for all frameworks
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework-config.js","sourceRoot":"","sources":["../../src/lib/framework-config.ts"],"names":[],"mappings":"AAyHA;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAAqB;IACrD,OAAO,kBAAkB,aAAa,4BAA4B,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,iFAAiF,CAAC","sourcesContent":["import type { Integration } from './constants.js';\nimport type { InstallerOptions } from '../utils/types.js';\n\n/**\n * Configuration interface for framework-specific agent integrations.\n * Each framework exports a FrameworkConfig that the universal runner uses.\n */\nexport interface FrameworkConfig {\n metadata: FrameworkMetadata;\n detection: FrameworkDetection;\n environment: EnvironmentConfig;\n analytics: AnalyticsConfig;\n prompts: PromptConfig;\n ui: UIConfig;\n}\n\n/**\n * Basic framework information and documentation\n */\nexport interface FrameworkMetadata {\n /** Display name (e.g., \"Next.js\", \"React\") */\n name: string;\n\n /** Integration type from constants */\n integration: Integration;\n\n /** URL to framework-specific WorkOS AuthKit docs */\n docsUrl: string;\n\n /**\n * Optional URL to docs for users with unsupported framework versions.\n * If not provided, defaults to docsUrl.\n */\n unsupportedVersionDocsUrl?: string;\n\n /**\n * Optional function to gather framework-specific context before agent runs.\n * For Next.js: detects router type\n * For React Native: detects Expo vs bare\n */\n gatherContext?: (options: InstallerOptions) => Promise<Record<string, any>>;\n\n /**\n * Name of the framework-specific skill for agent integration.\n * Skills are located in .claude/skills/{skillName}/SKILL.md\n * Will be populated per-framework in Phase 3.\n */\n skillName?: string;\n}\n\n/**\n * Framework detection and version handling\n */\nexport interface FrameworkDetection {\n /** Package name to check in package.json (e.g., \"next\", \"react\") */\n packageName: string;\n\n /** Human-readable name for error messages (e.g., \"Next.js\") */\n packageDisplayName: string;\n\n /** Extract version from package.json */\n getVersion: (packageJson: any) => string | undefined;\n\n /** Optional: Convert version to analytics bucket (e.g., \"15.x\") */\n getVersionBucket?: (version: string) => string;\n}\n\n/**\n * Environment variable configuration\n */\nexport interface EnvironmentConfig {\n /** Whether to upload env vars to hosting providers post-agent */\n uploadToHosting: boolean;\n\n /** Whether this framework requires API key (false for client-only SDKs) */\n requiresApiKey: boolean;\n\n /**\n * Build the environment variables object for this framework.\n * Returns the exact variable names and values to upload to hosting providers.\n */\n getEnvVars: (apiKey: string, clientId: string) => Record<string, string>;\n}\n\n/**\n * Analytics configuration\n */\nexport interface AnalyticsConfig {\n /** Generate tags from context (e.g., { 'nextjs-version': '15.x', 'router': 'app' }) */\n getTags: (context: any) => Record<string, any>;\n\n /** Optional: Additional event properties */\n getEventProperties?: (context: any) => Record<string, any>;\n}\n\n/**\n * Prompt configuration\n */\nexport interface PromptConfig {\n /**\n * Optional: Additional context lines to append to base prompt\n * For Next.js: \"- Router: app\"\n * For React Native: \"- Platform: Expo\"\n */\n getAdditionalContextLines?: (context: any) => string[];\n}\n\n/**\n * UI messaging configuration\n */\nexport interface UIConfig {\n /** Success message when agent completes */\n successMessage: string;\n\n /** Generate \"What the agent did\" bullets from context */\n getOutroChanges: (context: any) => string[];\n\n /** Generate \"Next steps\" bullets from context */\n getOutroNextSteps: (context: any) => string[];\n}\n\n/**\n * Generate welcome message from framework name\n */\nexport function getWelcomeMessage(frameworkName: string): string {\n return `WorkOS AuthKit ${frameworkName} installer (agent-powered)`;\n}\n\n/**\n * Shared spinner message for all frameworks\n */\nexport const SPINNER_MESSAGE = 'Setting up WorkOS AuthKit with login, authentication, and session management...';\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper-functions.js","sourceRoot":"","sources":["../../src/lib/helper-functions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC","sourcesContent":["export const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n"]}
@@ -1,9 +1,9 @@
1
1
  import { type ActorRefFrom } from 'xstate';
2
- import type { WizardMachineContext, WizardMachineInput, DetectionOutput, GitCheckOutput, AgentOutput, EnvFileInfo, DiscoveryResult, BranchCheckOutput } from './wizard-core.types.js';
3
- import type { WizardOptions } from '../utils/types.js';
2
+ import type { InstallerMachineContext, InstallerMachineInput, DetectionOutput, GitCheckOutput, AgentOutput, EnvFileInfo, DiscoveryResult, BranchCheckOutput } from './installer-core.types.js';
3
+ import type { InstallerOptions } from '../utils/types.js';
4
4
  import type { DeviceAuthResult, DeviceAuthResponse } from './device-auth.js';
5
5
  import type { StagingCredentials } from './staging-api.js';
6
- export declare const wizardMachine: import("xstate").StateMachine<WizardMachineContext, {
6
+ export declare const installerMachine: import("xstate").StateMachine<InstallerMachineContext, {
7
7
  type: "START";
8
8
  } | {
9
9
  type: "SKIP_AUTH";
@@ -39,15 +39,15 @@ export declare const wizardMachine: import("xstate").StateMachine<WizardMachineC
39
39
  type: "PR_DECLINED";
40
40
  }, {
41
41
  [x: string]: import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<boolean, {
42
- options: WizardOptions;
42
+ options: InstallerOptions;
43
43
  }, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<DetectionOutput, {
44
- options: WizardOptions;
44
+ options: InstallerOptions;
45
45
  }, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<GitCheckOutput, {
46
46
  installDir: string;
47
47
  }, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<void, {
48
- context: WizardMachineContext;
48
+ context: InstallerMachineContext;
49
49
  }, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<AgentOutput, {
50
- context: WizardMachineContext;
50
+ context: InstallerMachineContext;
51
51
  }, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<EnvFileInfo, {
52
52
  installDir: string;
53
53
  }, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<DiscoveryResult, {
@@ -56,7 +56,7 @@ export declare const wizardMachine: import("xstate").StateMachine<WizardMachineC
56
56
  result: DeviceAuthResult;
57
57
  deviceAuth: DeviceAuthResponse;
58
58
  }, {
59
- emitter: WizardMachineContext["emitter"];
59
+ emitter: InstallerMachineContext["emitter"];
60
60
  }, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<StagingCredentials, void, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<BranchCheckOutput, void, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<{
61
61
  branch: string;
62
62
  }, {
@@ -68,6 +68,7 @@ export declare const wizardMachine: import("xstate").StateMachine<WizardMachineC
68
68
  }, void, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<string, {
69
69
  integration: string;
70
70
  files: string[];
71
+ direct?: boolean;
71
72
  }, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<void, {
72
73
  message: string;
73
74
  cwd: string;
@@ -75,6 +76,7 @@ export declare const wizardMachine: import("xstate").StateMachine<WizardMachineC
75
76
  integration: string;
76
77
  files: string[];
77
78
  commitMessage: string;
79
+ direct?: boolean;
78
80
  }, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<void, {
79
81
  cwd: string;
80
82
  }, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<string, {
@@ -85,13 +87,13 @@ export declare const wizardMachine: import("xstate").StateMachine<WizardMachineC
85
87
  }, {
86
88
  src: "checkAuthentication";
87
89
  logic: import("xstate").PromiseActorLogic<boolean, {
88
- options: WizardOptions;
90
+ options: InstallerOptions;
89
91
  }, import("xstate").EventObject>;
90
92
  id: string | undefined;
91
93
  } | {
92
94
  src: "detectIntegration";
93
95
  logic: import("xstate").PromiseActorLogic<DetectionOutput, {
94
- options: WizardOptions;
96
+ options: InstallerOptions;
95
97
  }, import("xstate").EventObject>;
96
98
  id: string | undefined;
97
99
  } | {
@@ -103,13 +105,13 @@ export declare const wizardMachine: import("xstate").StateMachine<WizardMachineC
103
105
  } | {
104
106
  src: "configureEnvironment";
105
107
  logic: import("xstate").PromiseActorLogic<void, {
106
- context: WizardMachineContext;
108
+ context: InstallerMachineContext;
107
109
  }, import("xstate").EventObject>;
108
110
  id: string | undefined;
109
111
  } | {
110
112
  src: "runAgent";
111
113
  logic: import("xstate").PromiseActorLogic<AgentOutput, {
112
- context: WizardMachineContext;
114
+ context: InstallerMachineContext;
113
115
  }, import("xstate").EventObject>;
114
116
  id: string | undefined;
115
117
  } | {
@@ -134,7 +136,7 @@ export declare const wizardMachine: import("xstate").StateMachine<WizardMachineC
134
136
  result: DeviceAuthResult;
135
137
  deviceAuth: DeviceAuthResponse;
136
138
  }, {
137
- emitter: WizardMachineContext["emitter"];
139
+ emitter: InstallerMachineContext["emitter"];
138
140
  }, import("xstate").EventObject>;
139
141
  id: string | undefined;
140
142
  } | {
@@ -166,6 +168,7 @@ export declare const wizardMachine: import("xstate").StateMachine<WizardMachineC
166
168
  logic: import("xstate").PromiseActorLogic<string, {
167
169
  integration: string;
168
170
  files: string[];
171
+ direct?: boolean;
169
172
  }, import("xstate").EventObject>;
170
173
  id: string | undefined;
171
174
  } | {
@@ -181,6 +184,7 @@ export declare const wizardMachine: import("xstate").StateMachine<WizardMachineC
181
184
  integration: string;
182
185
  files: string[];
183
186
  commitMessage: string;
187
+ direct?: boolean;
184
188
  }, import("xstate").EventObject>;
185
189
  id: string | undefined;
186
190
  } | {
@@ -422,8 +426,8 @@ export declare const wizardMachine: import("xstate").StateMachine<WizardMachineC
422
426
  gatheringCredentials: "checkingCliFlags" | "detectingEnvFiles" | "promptingEnvScan" | "checkingStoredAuth" | "scanningEnvFiles" | "fetchingStagingCredentials" | "runningDeviceAuth" | "promptingManual";
423
427
  } | {
424
428
  postInstall: "done" | "checking" | "detectingChanges" | "promptingCommit" | "generatingCommitMessage" | "committing" | "checkingGhCli" | "promptingPr" | "showingManualInstructions" | "generatingPrDescription" | "pushing" | "creatingPr";
425
- }, string, WizardMachineInput, import("xstate").NonReducibleUnknown, import("xstate").EventObject, import("xstate").MetaObject, {
426
- id: "wizard";
429
+ }, string, InstallerMachineInput, import("xstate").NonReducibleUnknown, import("xstate").EventObject, import("xstate").MetaObject, {
430
+ id: "installer";
427
431
  states: {
428
432
  readonly idle: {};
429
433
  readonly authenticating: {};
@@ -488,5 +492,5 @@ export declare const wizardMachine: import("xstate").StateMachine<WizardMachineC
488
492
  readonly error: {};
489
493
  };
490
494
  }>;
491
- export type WizardMachine = typeof wizardMachine;
492
- export type WizardActor = ActorRefFrom<typeof wizardMachine>;
495
+ export type InstallerMachine = typeof installerMachine;
496
+ export type InstallerActor = ActorRefFrom<typeof installerMachine>;
@@ -1,7 +1,7 @@
1
1
  import { setup, assign, fromPromise } from 'xstate';
2
2
  import { getManualPrInstructions } from './post-install.js';
3
3
  import { hasGhCli } from '../utils/git-utils.js';
4
- export const wizardMachine = setup({
4
+ export const installerMachine = setup({
5
5
  types: {
6
6
  context: {},
7
7
  input: {},
@@ -142,7 +142,7 @@ export const wizardMachine = setup({
142
142
  const message = context.error?.message ?? 'Agent execution failed';
143
143
  const stack = context.error?.stack;
144
144
  context.emitter.emit('agent:failure', { message, stack });
145
- context.emitter.emit('complete', { success: false, summary: message });
145
+ context.emitter.emit('complete', { success: false });
146
146
  },
147
147
  assignDetectionResult: assign({
148
148
  integration: ({ event }) => {
@@ -180,12 +180,12 @@ export const wizardMachine = setup({
180
180
  },
181
181
  }),
182
182
  emitCancelled: ({ context }) => {
183
- context.emitter.emit('complete', { success: false, summary: 'Wizard cancelled by user' });
183
+ context.emitter.emit('complete', { success: false, summary: 'Installer cancelled by user' });
184
184
  },
185
185
  emitError: ({ context }) => {
186
186
  const message = context.error?.message ?? 'An unexpected error occurred';
187
187
  context.emitter.emit('error', { message, stack: context.error?.stack });
188
- context.emitter.emit('complete', { success: false, summary: message });
188
+ context.emitter.emit('complete', { success: false });
189
189
  },
190
190
  // Post-install actions
191
191
  assignChangedFiles: assign({
@@ -335,7 +335,7 @@ export const wizardMachine = setup({
335
335
  }),
336
336
  },
337
337
  }).createMachine({
338
- id: 'wizard',
338
+ id: 'installer',
339
339
  initial: 'idle',
340
340
  context: ({ input }) => ({
341
341
  emitter: input.emitter,
@@ -457,7 +457,7 @@ export const wizardMachine = setup({
457
457
  actions: ['emitGitConfirmed'],
458
458
  },
459
459
  GIT_CANCELLED: {
460
- target: '#wizard.cancelled',
460
+ target: '#installer.cancelled',
461
461
  actions: ['emitGitCancelled'],
462
462
  },
463
463
  },
@@ -501,7 +501,7 @@ export const wizardMachine = setup({
501
501
  target: 'done',
502
502
  },
503
503
  BRANCH_CANCEL: {
504
- target: '#wizard.cancelled',
504
+ target: '#installer.cancelled',
505
505
  },
506
506
  },
507
507
  },
@@ -558,7 +558,7 @@ export const wizardMachine = setup({
558
558
  checkingCliFlags: {
559
559
  always: [
560
560
  {
561
- target: '#wizard.configuring',
561
+ target: '#installer.configuring',
562
562
  guard: 'hasCredentials',
563
563
  actions: [
564
564
  assign({ credentialSource: () => 'cli' }),
@@ -612,7 +612,7 @@ export const wizardMachine = setup({
612
612
  actions: assign({ envScanConsent: () => false }),
613
613
  },
614
614
  CANCEL: {
615
- target: '#wizard.cancelled',
615
+ target: '#installer.cancelled',
616
616
  actions: { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },
617
617
  },
618
618
  },
@@ -626,7 +626,7 @@ export const wizardMachine = setup({
626
626
  input: ({ context }) => ({ installDir: context.options.installDir }),
627
627
  onDone: [
628
628
  {
629
- target: '#wizard.configuring',
629
+ target: '#installer.configuring',
630
630
  guard: ({ event }) => {
631
631
  const result = event.output;
632
632
  return result.found && !!result.clientId;
@@ -707,7 +707,7 @@ export const wizardMachine = setup({
707
707
  id: 'fetchStagingCredentials',
708
708
  src: 'fetchStagingCredentials',
709
709
  onDone: {
710
- target: '#wizard.configuring',
710
+ target: '#installer.configuring',
711
711
  actions: [
712
712
  assign({
713
713
  credentials: ({ event }) => {
@@ -731,7 +731,7 @@ export const wizardMachine = setup({
731
731
  entry: ['emitCredentialsGathering'],
732
732
  on: {
733
733
  CREDENTIALS_SUBMITTED: {
734
- target: '#wizard.configuring',
734
+ target: '#installer.configuring',
735
735
  actions: [
736
736
  'assignCredentials',
737
737
  assign({ credentialSource: () => 'manual' }),
@@ -742,7 +742,7 @@ export const wizardMachine = setup({
742
742
  target: 'runningDeviceAuth',
743
743
  },
744
744
  CANCEL: {
745
- target: '#wizard.cancelled',
745
+ target: '#installer.cancelled',
746
746
  actions: { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },
747
747
  },
748
748
  },
@@ -824,7 +824,7 @@ export const wizardMachine = setup({
824
824
  checking: {
825
825
  always: [
826
826
  {
827
- target: '#wizard.complete',
827
+ target: '#installer.complete',
828
828
  guard: 'shouldSkipPostInstall',
829
829
  },
830
830
  { target: 'detectingChanges' },
@@ -853,7 +853,7 @@ export const wizardMachine = setup({
853
853
  on: {
854
854
  COMMIT_APPROVED: { target: 'generatingCommitMessage' },
855
855
  COMMIT_DECLINED: { target: 'done' },
856
- CANCEL: { target: '#wizard.cancelled' },
856
+ CANCEL: { target: '#installer.cancelled' },
857
857
  },
858
858
  },
859
859
  generatingCommitMessage: {
@@ -864,6 +864,7 @@ export const wizardMachine = setup({
864
864
  input: ({ context }) => ({
865
865
  integration: context.integration ?? 'project',
866
866
  files: context.changedFiles ?? [],
867
+ direct: context.options.direct,
867
868
  }),
868
869
  onDone: {
869
870
  target: 'committing',
@@ -906,7 +907,7 @@ export const wizardMachine = setup({
906
907
  on: {
907
908
  PR_APPROVED: { target: 'generatingPrDescription' },
908
909
  PR_DECLINED: { target: 'done' },
909
- CANCEL: { target: '#wizard.cancelled' },
910
+ CANCEL: { target: '#installer.cancelled' },
910
911
  },
911
912
  },
912
913
  generatingPrDescription: {
@@ -918,6 +919,7 @@ export const wizardMachine = setup({
918
919
  integration: context.integration ?? 'project',
919
920
  files: context.changedFiles ?? [],
920
921
  commitMessage: context.commitMessage ?? '',
922
+ direct: context.options.direct,
921
923
  }),
922
924
  onDone: {
923
925
  target: 'pushing',
@@ -984,4 +986,4 @@ export const wizardMachine = setup({
984
986
  },
985
987
  },
986
988
  });
987
- //# sourceMappingURL=wizard-core.js.map
989
+ //# sourceMappingURL=installer-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer-core.js","sourceRoot":"","sources":["../../src/lib/installer-core.ts"],"names":[],"mappings":"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","sourcesContent":["import { setup, assign, fromPromise, type ActorRefFrom } from 'xstate';\nimport type {\n InstallerMachineContext,\n InstallerMachineInput,\n InstallerMachineEvent,\n DetectionOutput,\n GitCheckOutput,\n AgentOutput,\n EnvFileInfo,\n DiscoveryResult,\n CredentialSource,\n BranchCheckOutput,\n} from './installer-core.types.js';\nimport type { InstallerOptions } from '../utils/types.js';\nimport type { DeviceAuthResult, DeviceAuthResponse } from './device-auth.js';\nimport type { StagingCredentials } from './staging-api.js';\nimport { getManualPrInstructions } from './post-install.js';\nimport { hasGhCli } from '../utils/git-utils.js';\n\nexport const installerMachine = setup({\n types: {\n context: {} as InstallerMachineContext,\n input: {} as InstallerMachineInput,\n events: {} as InstallerMachineEvent,\n },\n\n actions: {\n emitStateEnter: ({ context }, params: { state: string }) => {\n context.emitter.emit('state:enter', { state: params.state });\n },\n emitStateExit: ({ context }, params: { state: string }) => {\n context.emitter.emit('state:exit', { state: params.state });\n },\n emitAuthChecking: ({ context }) => {\n context.emitter.emit('auth:checking', {});\n },\n emitAuthRequired: ({ context }) => {\n context.emitter.emit('auth:required', {});\n },\n emitAuthSuccess: ({ context }) => {\n context.emitter.emit('auth:success', {});\n },\n emitAuthFailure: ({ context }) => {\n const message = context.error?.message ?? 'Authentication failed';\n context.emitter.emit('auth:failure', { message });\n },\n emitDetectionStart: ({ context }) => {\n context.emitter.emit('detection:start', {});\n },\n emitDetectionComplete: ({ context }) => {\n if (context.integration) {\n context.emitter.emit('detection:complete', { integration: context.integration });\n } else {\n context.emitter.emit('detection:none', {});\n }\n },\n emitGitChecking: ({ context }) => {\n context.emitter.emit('git:checking', {});\n },\n emitGitClean: ({ context }) => {\n context.emitter.emit('git:clean', {});\n },\n emitGitDirty: ({ context }) => {\n context.emitter.emit('git:dirty', { files: context.gitDirtyFiles });\n },\n emitGitConfirmed: ({ context }) => {\n context.emitter.emit('git:dirty:confirmed', {});\n },\n emitGitCancelled: ({ context }) => {\n context.emitter.emit('git:dirty:cancelled', {});\n },\n emitBranchChecking: ({ context }) => {\n context.emitter.emit('branch:checking', {});\n },\n emitBranchProtected: ({ context }) => {\n if (context.currentBranch) {\n context.emitter.emit('branch:protected', { branch: context.currentBranch });\n context.emitter.emit('branch:prompt', { branch: context.currentBranch });\n }\n },\n emitBranchCreated: ({ context }, params: { branch: string }) => {\n context.emitter.emit('branch:created', { branch: params.branch });\n },\n emitBranchCreateFailed: ({ context }) => {\n const message = context.error?.message ?? 'Failed to create branch';\n context.emitter.emit('branch:create:failed', { error: message });\n },\n assignBranchResult: assign({\n currentBranch: ({ event }) => {\n const doneEvent = event as unknown as { output: BranchCheckOutput };\n return doneEvent.output?.branch ?? undefined;\n },\n isProtectedBranch: ({ event }) => {\n const doneEvent = event as unknown as { output: BranchCheckOutput };\n return doneEvent.output?.isProtected ?? false;\n },\n }),\n emitCredentialsGathering: ({ context }) => {\n const requiresApiKey = ['nextjs', 'tanstack-start', 'react-router'].includes(context.integration ?? '');\n context.emitter.emit('credentials:gathering', { requiresApiKey });\n context.emitter.emit('credentials:request', { requiresApiKey });\n },\n emitCredentialsFound: ({ context }) => {\n context.emitter.emit('credentials:found', {});\n },\n emitEnvDetected: ({ context }) => {\n context.emitter.emit('credentials:env:detected', { files: context.envFilesDetected ?? [] });\n },\n emitEnvScanPrompt: ({ context }) => {\n context.emitter.emit('credentials:env:prompt', { files: context.envFilesDetected ?? [] });\n },\n emitEnvScanning: ({ context }) => {\n context.emitter.emit('credentials:env:scanning', {});\n },\n emitEnvCredentialsFound: ({ context }) => {\n context.emitter.emit('credentials:env:found', { sourcePath: context.envCredentialPath ?? '.env' });\n },\n emitEnvNotFound: ({ context }) => {\n context.emitter.emit('credentials:env:notfound', {});\n },\n emitDeviceAuthStart: () => {\n // Emitted by actor when it has verification URL\n },\n emitDeviceAuthSuccess: ({ context }) => {\n context.emitter.emit('device:success', { email: undefined });\n },\n emitDeviceAuthError: ({ context }) => {\n const message = context.error?.message ?? 'Device authorization failed';\n context.emitter.emit('device:error', { message });\n },\n emitDeviceTimeout: ({ context }) => {\n context.emitter.emit('device:timeout', {});\n },\n emitStagingFetching: ({ context }) => {\n context.emitter.emit('staging:fetching', {});\n },\n emitStagingSuccess: ({ context }) => {\n context.emitter.emit('staging:success', {});\n },\n emitStagingError: ({ context }) => {\n const message = context.error?.message ?? 'Failed to fetch staging credentials';\n context.emitter.emit('staging:error', { message });\n },\n emitConfigStart: ({ context }) => {\n context.emitter.emit('config:start', {});\n },\n emitConfigComplete: ({ context }) => {\n context.emitter.emit('config:complete', {});\n },\n emitAgentStart: ({ context }) => {\n context.emitter.emit('agent:start', {});\n },\n emitAgentSuccess: ({ context }, params: { summary?: string }) => {\n context.emitter.emit('agent:success', { summary: params.summary });\n context.emitter.emit('complete', { success: true, summary: params.summary });\n },\n emitAgentFailure: ({ context }) => {\n const message = context.error?.message ?? 'Agent execution failed';\n const stack = context.error?.stack;\n context.emitter.emit('agent:failure', { message, stack });\n context.emitter.emit('complete', { success: false });\n },\n assignDetectionResult: assign({\n integration: ({ event }) => {\n const doneEvent = event as unknown as { output: DetectionOutput };\n return doneEvent.output?.integration;\n },\n }),\n assignGitResult: assign({\n gitIsClean: ({ event }) => {\n const doneEvent = event as unknown as { output: GitCheckOutput };\n return doneEvent.output?.isClean ?? true;\n },\n gitDirtyFiles: ({ event }) => {\n const doneEvent = event as unknown as { output: GitCheckOutput };\n return doneEvent.output?.files ?? [];\n },\n }),\n\n assignCredentials: assign({\n credentials: ({ event }) => {\n if (event.type === 'CREDENTIALS_SUBMITTED') {\n return { apiKey: event.apiKey, clientId: event.clientId };\n }\n return undefined;\n },\n }),\n\n assignError: assign({\n error: ({ event }) => {\n if ('error' in event && event.error instanceof Error) {\n return event.error;\n }\n if ('error' in event && typeof event.error === 'object' && event.error !== null) {\n return new Error(String((event.error as { message?: string }).message ?? event.error));\n }\n return new Error('Unknown error');\n },\n }),\n\n emitCancelled: ({ context }) => {\n context.emitter.emit('complete', { success: false, summary: 'Installer cancelled by user' });\n },\n emitError: ({ context }) => {\n const message = context.error?.message ?? 'An unexpected error occurred';\n context.emitter.emit('error', { message, stack: context.error?.stack });\n context.emitter.emit('complete', { success: false });\n },\n // Post-install actions\n assignChangedFiles: assign({\n changedFiles: ({ event }) => {\n const doneEvent = event as unknown as { output: { hasChanges: boolean; files: string[] } };\n return doneEvent.output?.files ?? [];\n },\n }),\n emitChangesDetected: ({ context }) => {\n context.emitter.emit('postinstall:changes', { files: context.changedFiles ?? [] });\n },\n emitNoChanges: ({ context }) => {\n context.emitter.emit('postinstall:nochanges', {});\n },\n emitCommitPrompt: ({ context }) => {\n context.emitter.emit('postinstall:commit:prompt', {});\n },\n emitGeneratingCommitMessage: ({ context }) => {\n context.emitter.emit('postinstall:commit:generating', {});\n },\n assignCommitMessage: assign({\n commitMessage: ({ event }) => {\n const doneEvent = event as unknown as { output: string };\n return doneEvent.output;\n },\n }),\n emitCommitting: ({ context }) => {\n context.emitter.emit('postinstall:commit:committing', { message: context.commitMessage ?? '' });\n },\n emitCommitSuccess: ({ context }) => {\n context.emitter.emit('postinstall:commit:success', { message: context.commitMessage ?? '' });\n },\n emitCommitFailed: ({ context }) => {\n const message = context.error?.message ?? 'Commit failed';\n context.emitter.emit('postinstall:commit:failed', { error: message });\n },\n emitPrPrompt: ({ context }) => {\n context.emitter.emit('postinstall:pr:prompt', {});\n },\n emitGeneratingPrDescription: ({ context }) => {\n context.emitter.emit('postinstall:pr:generating', {});\n },\n assignPrDescription: assign({\n prDescription: ({ event }) => {\n const doneEvent = event as unknown as { output: string };\n return doneEvent.output;\n },\n }),\n emitPushing: ({ context }) => {\n context.emitter.emit('postinstall:pr:pushing', {});\n },\n emitPushFailed: ({ context }) => {\n const message = context.error?.message ?? 'Push failed';\n context.emitter.emit('postinstall:push:failed', { error: message });\n },\n emitCreatingPr: ({ context }) => {\n context.emitter.emit('postinstall:pr:creating', {});\n },\n assignPrUrl: assign({\n prUrl: ({ event }) => {\n const doneEvent = event as unknown as { output: string };\n return doneEvent.output;\n },\n }),\n emitPrCreated: ({ context }) => {\n context.emitter.emit('postinstall:pr:success', { url: context.prUrl ?? '' });\n },\n emitPrFailed: ({ context }) => {\n const message = context.error?.message ?? 'PR creation failed';\n context.emitter.emit('postinstall:pr:failed', { error: message });\n },\n emitManualInstructions: ({ context }) => {\n const branch = context.currentBranch ?? 'HEAD';\n const instructions = getManualPrInstructions(branch);\n context.emitter.emit('postinstall:manual', { instructions });\n },\n emitComplete: ({ context }) => {\n const summary = context.agentSummary ?? 'WorkOS AuthKit installed successfully!';\n context.emitter.emit('complete', { success: true, summary });\n },\n },\n\n guards: {\n shouldSkipAuth: ({ context }) => context.options.skipAuth === true,\n gitIsClean: ({ context }) => context.gitIsClean === true,\n hasCredentials: ({ context }) => context.options.apiKey !== undefined && context.options.clientId !== undefined,\n hasIntegration: ({ context }) => context.integration !== undefined,\n shouldSkipPostInstall: ({ context }) => context.options.noCommit === true,\n hasGhCli: () => hasGhCli(),\n },\n\n actors: {\n checkAuthentication: fromPromise<boolean, { options: InstallerOptions }>(async () => {\n throw new Error('checkAuthentication not implemented - provide via machine.provide()');\n }),\n detectIntegration: fromPromise<DetectionOutput, { options: InstallerOptions }>(async () => {\n throw new Error('detectIntegration not implemented - provide via machine.provide()');\n }),\n checkGitStatus: fromPromise<GitCheckOutput, { installDir: string }>(async () => {\n throw new Error('checkGitStatus not implemented - provide via machine.provide()');\n }),\n configureEnvironment: fromPromise<void, { context: InstallerMachineContext }>(async () => {\n throw new Error('configureEnvironment not implemented - provide via machine.provide()');\n }),\n runAgent: fromPromise<AgentOutput, { context: InstallerMachineContext }>(async () => {\n throw new Error('runAgent not implemented - provide via machine.provide()');\n }),\n // Credential discovery actors\n detectEnvFiles: fromPromise<EnvFileInfo, { installDir: string }>(async () => {\n throw new Error('detectEnvFiles not implemented - provide via machine.provide()');\n }),\n scanEnvFiles: fromPromise<DiscoveryResult, { installDir: string }>(async () => {\n throw new Error('scanEnvFiles not implemented - provide via machine.provide()');\n }),\n checkStoredAuth: fromPromise<boolean, void>(async () => {\n throw new Error('checkStoredAuth not implemented - provide via machine.provide()');\n }),\n runDeviceAuth: fromPromise<\n { result: DeviceAuthResult; deviceAuth: DeviceAuthResponse },\n { emitter: InstallerMachineContext['emitter'] }\n >(async () => {\n throw new Error('runDeviceAuth not implemented - provide via machine.provide()');\n }),\n fetchStagingCredentials: fromPromise<StagingCredentials, void>(async () => {\n throw new Error('fetchStagingCredentials not implemented - provide via machine.provide()');\n }),\n // Branch check actors\n checkBranch: fromPromise<BranchCheckOutput, void>(async () => {\n throw new Error('checkBranch not implemented - provide via machine.provide()');\n }),\n createBranch: fromPromise<{ branch: string }, { name: string; fallbackName: string }>(async () => {\n throw new Error('createBranch not implemented - provide via machine.provide()');\n }),\n // Post-install actors\n detectChanges: fromPromise<{ hasChanges: boolean; files: string[] }, void>(async () => {\n throw new Error('detectChanges not implemented - provide via machine.provide()');\n }),\n generateCommitMessage: fromPromise<string, { integration: string; files: string[]; direct?: boolean }>(async () => {\n throw new Error('generateCommitMessage not implemented - provide via machine.provide()');\n }),\n commitChanges: fromPromise<void, { message: string; cwd: string }>(async () => {\n throw new Error('commitChanges not implemented - provide via machine.provide()');\n }),\n generatePrDescription: fromPromise<\n string,\n { integration: string; files: string[]; commitMessage: string; direct?: boolean }\n >(async () => {\n throw new Error('generatePrDescription not implemented - provide via machine.provide()');\n }),\n pushBranch: fromPromise<void, { cwd: string }>(async () => {\n throw new Error('pushBranch not implemented - provide via machine.provide()');\n }),\n createPr: fromPromise<string, { title: string; body: string; cwd: string }>(async () => {\n throw new Error('createPr not implemented - provide via machine.provide()');\n }),\n },\n}).createMachine({\n id: 'installer',\n initial: 'idle',\n\n context: ({ input }) => ({\n emitter: input.emitter,\n options: input.options,\n integration: input.options.integration,\n credentials:\n input.options.apiKey && input.options.clientId\n ? { apiKey: input.options.apiKey, clientId: input.options.clientId }\n : undefined,\n gitIsClean: true,\n gitDirtyFiles: [],\n error: undefined,\n }),\n\n // Global event handlers - CANCEL can be sent from any state\n on: {\n CANCEL: {\n target: '.cancelled',\n },\n },\n\n states: {\n idle: {\n on: {\n START: [\n {\n target: 'preparing',\n guard: 'shouldSkipAuth',\n actions: { type: 'emitStateEnter', params: { state: 'preparing' } },\n },\n {\n target: 'authenticating',\n actions: { type: 'emitStateEnter', params: { state: 'authenticating' } },\n },\n ],\n },\n },\n\n authenticating: {\n entry: ['emitAuthChecking'],\n invoke: {\n id: 'checkAuthentication',\n src: 'checkAuthentication',\n input: ({ context }) => ({ options: context.options }),\n onDone: {\n target: 'preparing',\n actions: [\n 'emitAuthSuccess',\n { type: 'emitStateExit', params: { state: 'authenticating' } },\n { type: 'emitStateEnter', params: { state: 'preparing' } },\n ],\n },\n onError: {\n target: 'error',\n actions: ['assignError', 'emitAuthFailure', { type: 'emitStateExit', params: { state: 'authenticating' } }],\n },\n },\n },\n\n preparing: {\n type: 'parallel',\n states: {\n detection: {\n initial: 'running',\n states: {\n running: {\n entry: ['emitDetectionStart'],\n invoke: {\n id: 'detectIntegration',\n src: 'detectIntegration',\n input: ({ context }) => ({ options: context.options }),\n onDone: {\n target: 'done',\n actions: ['assignDetectionResult', 'emitDetectionComplete'],\n },\n onError: {\n // Detection failure is non-fatal - user can select manually\n target: 'done',\n actions: ['emitDetectionComplete'],\n },\n },\n },\n done: {\n type: 'final',\n },\n },\n },\n gitCheck: {\n initial: 'running',\n states: {\n running: {\n entry: ['emitGitChecking'],\n invoke: {\n id: 'checkGitStatus',\n src: 'checkGitStatus',\n input: ({ context }) => ({ installDir: context.options.installDir }),\n onDone: {\n target: 'evaluating',\n actions: ['assignGitResult'],\n },\n onError: {\n // Git check failure is non-fatal - treat as clean\n target: 'done',\n },\n },\n },\n evaluating: {\n always: [\n {\n target: 'done',\n guard: 'gitIsClean',\n actions: ['emitGitClean'],\n },\n {\n target: 'awaitingConfirmation',\n actions: ['emitGitDirty'],\n },\n ],\n },\n awaitingConfirmation: {\n on: {\n GIT_CONFIRMED: {\n target: 'done',\n actions: ['emitGitConfirmed'],\n },\n GIT_CANCELLED: {\n target: '#installer.cancelled',\n actions: ['emitGitCancelled'],\n },\n },\n },\n done: {\n type: 'final',\n },\n },\n },\n branchCheck: {\n initial: 'running',\n states: {\n running: {\n entry: ['emitBranchChecking'],\n invoke: {\n id: 'checkBranch',\n src: 'checkBranch',\n onDone: [\n {\n target: 'awaitingConfirmation',\n guard: ({ event }) => (event.output as BranchCheckOutput).isProtected,\n actions: ['assignBranchResult', 'emitBranchProtected'],\n },\n {\n target: 'done',\n actions: ['assignBranchResult'],\n },\n ],\n onError: {\n // Branch check failure is non-fatal\n target: 'done',\n },\n },\n },\n awaitingConfirmation: {\n on: {\n BRANCH_CREATE: {\n target: 'creating',\n },\n BRANCH_CONTINUE: {\n target: 'done',\n },\n BRANCH_CANCEL: {\n target: '#installer.cancelled',\n },\n },\n },\n creating: {\n invoke: {\n id: 'createBranch',\n src: 'createBranch',\n input: () => ({\n name: 'feat/add-workos-authkit',\n fallbackName: `feat/add-workos-authkit-${Date.now()}`,\n }),\n onDone: {\n target: 'done',\n actions: [\n {\n type: 'emitBranchCreated',\n params: ({ event }) => ({ branch: (event.output as { branch: string }).branch }),\n },\n ],\n },\n onError: {\n // Branch creation failure is non-fatal\n target: 'done',\n actions: ['assignError', 'emitBranchCreateFailed'],\n },\n },\n },\n done: {\n type: 'final',\n },\n },\n },\n },\n onDone: [\n {\n target: 'gatheringCredentials',\n guard: 'hasIntegration',\n actions: { type: 'emitStateExit', params: { state: 'preparing' } },\n },\n {\n target: 'error',\n actions: [\n assign({ error: () => new Error('Could not detect framework integration') }),\n { type: 'emitStateExit', params: { state: 'preparing' } },\n ],\n },\n ],\n },\n\n gatheringCredentials: {\n entry: [{ type: 'emitStateEnter', params: { state: 'gatheringCredentials' } }],\n initial: 'checkingCliFlags',\n states: {\n // Step 1: Check CLI flags (highest priority)\n checkingCliFlags: {\n always: [\n {\n target: '#installer.configuring',\n guard: 'hasCredentials',\n actions: [\n assign({ credentialSource: () => 'cli' as CredentialSource }),\n 'emitCredentialsFound',\n { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n ],\n },\n { target: 'detectingEnvFiles' },\n ],\n },\n\n // Step 2: Check if env files exist (don't read yet)\n detectingEnvFiles: {\n invoke: {\n id: 'detectEnvFiles',\n src: 'detectEnvFiles',\n input: ({ context }) => ({ installDir: context.options.installDir }),\n onDone: [\n {\n target: 'promptingEnvScan',\n guard: ({ event }) => {\n const output = event.output as EnvFileInfo;\n return output.exists;\n },\n actions: [\n assign({\n envFilesDetected: ({ event }) => {\n const output = event.output as EnvFileInfo;\n return output.files;\n },\n }),\n 'emitEnvDetected',\n ],\n },\n { target: 'checkingStoredAuth' },\n ],\n onError: {\n target: 'checkingStoredAuth', // Non-fatal, continue\n },\n },\n },\n\n // Step 3: Ask user for consent to scan env files\n promptingEnvScan: {\n entry: ['emitEnvScanPrompt'],\n on: {\n ENV_SCAN_APPROVED: {\n target: 'scanningEnvFiles',\n actions: assign({ envScanConsent: () => true }),\n },\n ENV_SCAN_DECLINED: {\n target: 'checkingStoredAuth',\n actions: assign({ envScanConsent: () => false }),\n },\n CANCEL: {\n target: '#installer.cancelled',\n actions: { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n },\n },\n },\n\n // Step 4: Scan env files for credentials (with consent)\n scanningEnvFiles: {\n entry: ['emitEnvScanning'],\n invoke: {\n id: 'scanEnvFiles',\n src: 'scanEnvFiles',\n input: ({ context }) => ({ installDir: context.options.installDir }),\n onDone: [\n {\n target: '#installer.configuring',\n guard: ({ event }) => {\n const result = event.output as DiscoveryResult;\n return result.found && !!result.clientId;\n },\n actions: [\n assign({\n credentials: ({ event }) => {\n const result = event.output as DiscoveryResult;\n return { clientId: result.clientId!, apiKey: result.apiKey };\n },\n credentialSource: () => 'env' as CredentialSource,\n envCredentialPath: ({ event }) => (event.output as DiscoveryResult).sourcePath,\n }),\n 'emitEnvCredentialsFound',\n { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n ],\n },\n {\n target: 'checkingStoredAuth',\n actions: ['emitEnvNotFound'],\n },\n ],\n onError: {\n target: 'checkingStoredAuth',\n },\n },\n },\n\n // Step 5: Check for stored auth token\n checkingStoredAuth: {\n invoke: {\n id: 'checkStoredAuth',\n src: 'checkStoredAuth',\n onDone: [\n {\n target: 'fetchingStagingCredentials',\n guard: ({ event }) => event.output === true,\n },\n { target: 'runningDeviceAuth' },\n ],\n onError: {\n target: 'runningDeviceAuth',\n },\n },\n },\n\n // Step 6: Run device authorization flow\n runningDeviceAuth: {\n entry: ['emitDeviceAuthStart'],\n invoke: {\n id: 'runDeviceAuth',\n src: 'runDeviceAuth',\n input: ({ context }) => ({ emitter: context.emitter }),\n onDone: {\n target: 'fetchingStagingCredentials',\n actions: [\n 'emitDeviceAuthSuccess',\n assign({\n deviceAuth: ({ event }) => {\n const output = event.output as { result: DeviceAuthResult; deviceAuth: DeviceAuthResponse };\n return {\n verificationUri: output.deviceAuth.verification_uri,\n verificationUriComplete: output.deviceAuth.verification_uri_complete,\n userCode: output.deviceAuth.user_code,\n };\n },\n }),\n ],\n },\n onError: {\n target: 'promptingManual',\n actions: ['assignError', 'emitDeviceAuthError'],\n },\n },\n },\n\n // Step 7: Fetch staging credentials from API\n fetchingStagingCredentials: {\n entry: ['emitStagingFetching'],\n invoke: {\n id: 'fetchStagingCredentials',\n src: 'fetchStagingCredentials',\n onDone: {\n target: '#installer.configuring',\n actions: [\n assign({\n credentials: ({ event }) => {\n const staging = event.output as StagingCredentials;\n return { clientId: staging.clientId, apiKey: staging.apiKey };\n },\n credentialSource: ({ context }) =>\n context.deviceAuth ? ('device' as CredentialSource) : ('stored' as CredentialSource),\n }),\n 'emitStagingSuccess',\n { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n ],\n },\n onError: {\n target: 'promptingManual',\n actions: ['assignError', 'emitStagingError'],\n },\n },\n },\n\n // Step 8: Manual fallback\n promptingManual: {\n entry: ['emitCredentialsGathering'],\n on: {\n CREDENTIALS_SUBMITTED: {\n target: '#installer.configuring',\n actions: [\n 'assignCredentials',\n assign({ credentialSource: () => 'manual' as CredentialSource }),\n { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n ],\n },\n RETRY_AUTH: {\n target: 'runningDeviceAuth',\n },\n CANCEL: {\n target: '#installer.cancelled',\n actions: { type: 'emitStateExit', params: { state: 'gatheringCredentials' } },\n },\n },\n },\n },\n },\n\n configuring: {\n entry: [{ type: 'emitStateEnter', params: { state: 'configuring' } }, 'emitConfigStart'],\n invoke: {\n id: 'configureEnvironment',\n src: 'configureEnvironment',\n input: ({ context }) => ({ context }),\n onDone: {\n target: 'runningAgent',\n actions: ['emitConfigComplete', { type: 'emitStateExit', params: { state: 'configuring' } }],\n },\n onError: {\n target: 'error',\n actions: ['assignError', { type: 'emitStateExit', params: { state: 'configuring' } }],\n },\n },\n },\n\n runningAgent: {\n entry: [{ type: 'emitStateEnter', params: { state: 'runningAgent' } }, 'emitAgentStart'],\n invoke: {\n id: 'runAgent',\n src: 'runAgent',\n input: ({ context }) => ({ context }),\n onDone: [\n {\n target: 'error',\n guard: ({ event }) => {\n const output = event.output as AgentOutput;\n return !output.success;\n },\n actions: [\n ({ context, event }) => {\n const output = event.output as AgentOutput;\n context.emitter.emit('agent:failure', {\n message: output.error?.message ?? 'Agent failed',\n });\n },\n assign({\n error: ({ event }) => {\n const output = event.output as AgentOutput;\n return output.error ?? new Error('Agent failed');\n },\n }),\n { type: 'emitStateExit', params: { state: 'runningAgent' } },\n ],\n },\n {\n target: 'postInstall',\n actions: [\n assign({\n agentSummary: ({ event }) => {\n const output = event.output as AgentOutput;\n return output.summary;\n },\n }),\n ({ context, event }) => {\n const output = event.output as AgentOutput;\n context.emitter.emit('agent:success', { summary: output.summary });\n },\n { type: 'emitStateExit', params: { state: 'runningAgent' } },\n ],\n },\n ],\n onError: {\n target: 'error',\n actions: ['assignError', 'emitAgentFailure', { type: 'emitStateExit', params: { state: 'runningAgent' } }],\n },\n },\n },\n\n postInstall: {\n initial: 'checking',\n entry: [{ type: 'emitStateEnter', params: { state: 'postInstall' } }],\n states: {\n checking: {\n always: [\n {\n target: '#installer.complete',\n guard: 'shouldSkipPostInstall',\n },\n { target: 'detectingChanges' },\n ],\n },\n\n detectingChanges: {\n invoke: {\n id: 'detectChanges',\n src: 'detectChanges',\n onDone: [\n {\n target: 'promptingCommit',\n guard: ({ event }) => (event.output as { hasChanges: boolean; files: string[] }).hasChanges,\n actions: ['assignChangedFiles', 'emitChangesDetected'],\n },\n {\n target: 'done',\n actions: ['emitNoChanges'],\n },\n ],\n onError: { target: 'done' },\n },\n },\n\n promptingCommit: {\n entry: ['emitCommitPrompt'],\n on: {\n COMMIT_APPROVED: { target: 'generatingCommitMessage' },\n COMMIT_DECLINED: { target: 'done' },\n CANCEL: { target: '#installer.cancelled' },\n },\n },\n\n generatingCommitMessage: {\n entry: ['emitGeneratingCommitMessage'],\n invoke: {\n id: 'generateCommitMessage',\n src: 'generateCommitMessage',\n input: ({ context }) => ({\n integration: context.integration ?? 'project',\n files: context.changedFiles ?? [],\n direct: context.options.direct,\n }),\n onDone: {\n target: 'committing',\n actions: ['assignCommitMessage'],\n },\n },\n },\n\n committing: {\n entry: ['emitCommitting'],\n invoke: {\n id: 'commitChanges',\n src: 'commitChanges',\n input: ({ context }) => ({\n message: context.commitMessage ?? '',\n cwd: context.options.installDir,\n }),\n onDone: {\n target: 'checkingGhCli',\n actions: ['emitCommitSuccess'],\n },\n onError: {\n target: 'done',\n actions: ['assignError', 'emitCommitFailed'],\n },\n },\n },\n\n checkingGhCli: {\n always: [\n {\n target: 'promptingPr',\n guard: 'hasGhCli',\n },\n {\n target: 'showingManualInstructions',\n },\n ],\n },\n\n promptingPr: {\n entry: ['emitPrPrompt'],\n on: {\n PR_APPROVED: { target: 'generatingPrDescription' },\n PR_DECLINED: { target: 'done' },\n CANCEL: { target: '#installer.cancelled' },\n },\n },\n\n generatingPrDescription: {\n entry: ['emitGeneratingPrDescription'],\n invoke: {\n id: 'generatePrDescription',\n src: 'generatePrDescription',\n input: ({ context }) => ({\n integration: context.integration ?? 'project',\n files: context.changedFiles ?? [],\n commitMessage: context.commitMessage ?? '',\n direct: context.options.direct,\n }),\n onDone: {\n target: 'pushing',\n actions: ['assignPrDescription'],\n },\n },\n },\n\n pushing: {\n entry: ['emitPushing'],\n invoke: {\n id: 'pushBranch',\n src: 'pushBranch',\n input: ({ context }) => ({ cwd: context.options.installDir }),\n onDone: { target: 'creatingPr' },\n onError: {\n target: 'showingManualInstructions',\n actions: ['assignError', 'emitPushFailed'],\n },\n },\n },\n\n creatingPr: {\n entry: ['emitCreatingPr'],\n invoke: {\n id: 'createPr',\n src: 'createPr',\n input: ({ context }) => ({\n title: context.commitMessage ?? '',\n body: context.prDescription ?? '',\n cwd: context.options.installDir,\n }),\n onDone: {\n target: 'done',\n actions: ['assignPrUrl', 'emitPrCreated'],\n },\n onError: {\n target: 'done',\n actions: ['assignError', 'emitPrFailed'],\n },\n },\n },\n\n showingManualInstructions: {\n entry: ['emitManualInstructions'],\n always: { target: 'done' },\n },\n\n done: {\n type: 'final',\n },\n },\n onDone: {\n target: 'complete',\n },\n },\n\n complete: {\n type: 'final',\n entry: [{ type: 'emitStateEnter', params: { state: 'complete' } }, 'emitComplete'],\n },\n\n cancelled: {\n type: 'final',\n entry: [{ type: 'emitStateEnter', params: { state: 'cancelled' } }, 'emitCancelled'],\n },\n\n error: {\n type: 'final',\n entry: [{ type: 'emitStateEnter', params: { state: 'error' } }, 'emitError'],\n },\n },\n});\n\nexport type InstallerMachine = typeof installerMachine;\nexport type InstallerActor = ActorRefFrom<typeof installerMachine>;\n"]}
@@ -1,5 +1,5 @@
1
- import type { WizardEventEmitter } from './events.js';
2
- import type { WizardOptions } from '../utils/types.js';
1
+ import type { InstallerEventEmitter } from './events.js';
2
+ import type { InstallerOptions } from '../utils/types.js';
3
3
  import type { Integration } from './constants.js';
4
4
  import type { DeviceAuthResponse } from './device-auth.js';
5
5
  import type { EnvFileInfo, DiscoveryResult } from './credential-discovery.js';
@@ -13,11 +13,11 @@ export type CredentialSource = 'cli' | 'env' | 'stored' | 'device' | 'manual';
13
13
  * Context passed to the wizard state machine.
14
14
  * Contains all data needed throughout the wizard flow.
15
15
  */
16
- export interface WizardMachineContext {
16
+ export interface InstallerMachineContext {
17
17
  /** Event emitter for UI communication */
18
- emitter: WizardEventEmitter;
18
+ emitter: InstallerEventEmitter;
19
19
  /** CLI options from command line args */
20
- options: WizardOptions;
20
+ options: InstallerOptions;
21
21
  /** Detected or selected framework integration */
22
22
  integration: Integration | undefined;
23
23
  /** WorkOS credentials gathered from user */
@@ -64,14 +64,14 @@ export interface WizardMachineContext {
64
64
  * Input provided when creating the machine actor.
65
65
  * These values initialize the context.
66
66
  */
67
- export interface WizardMachineInput {
68
- emitter: WizardEventEmitter;
69
- options: WizardOptions;
67
+ export interface InstallerMachineInput {
68
+ emitter: InstallerEventEmitter;
69
+ options: InstallerOptions;
70
70
  }
71
71
  /**
72
72
  * All events the wizard machine can receive.
73
73
  */
74
- export type WizardMachineEvent = {
74
+ export type InstallerMachineEvent = {
75
75
  type: 'START';
76
76
  } | {
77
77
  type: 'SKIP_AUTH';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=installer-core.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer-core.types.js","sourceRoot":"","sources":["../../src/lib/installer-core.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { InstallerEventEmitter } from './events.js';\nimport type { InstallerOptions } from '../utils/types.js';\nimport type { Integration } from './constants.js';\nimport type { DeviceAuthResponse } from './device-auth.js';\nimport type { EnvFileInfo, DiscoveryResult } from './credential-discovery.js';\n\nexport type { EnvFileInfo, DiscoveryResult };\nexport type { DeviceAuthResponse };\n\n/**\n * How credentials were resolved.\n */\nexport type CredentialSource = 'cli' | 'env' | 'stored' | 'device' | 'manual';\n\n/**\n * Context passed to the wizard state machine.\n * Contains all data needed throughout the wizard flow.\n */\nexport interface InstallerMachineContext {\n /** Event emitter for UI communication */\n emitter: InstallerEventEmitter;\n /** CLI options from command line args */\n options: InstallerOptions;\n /** Detected or selected framework integration */\n integration: Integration | undefined;\n /** WorkOS credentials gathered from user */\n credentials: { apiKey?: string; clientId: string } | undefined;\n /** Whether git working directory is clean */\n gitIsClean: boolean;\n /** List of dirty git files (if any) */\n gitDirtyFiles: string[];\n /** Error that caused failure (if any) */\n error: Error | undefined;\n /** How credentials were resolved */\n credentialSource?: CredentialSource;\n /** Device auth state for UI display */\n deviceAuth?: {\n verificationUri: string;\n verificationUriComplete: string;\n userCode: string;\n };\n /** Whether user consented to env file scanning */\n envScanConsent?: boolean;\n /** Env files detected in project (before consent) */\n envFilesDetected?: string[];\n /** Path to env file where credentials were found */\n envCredentialPath?: string;\n /** Current git branch name */\n currentBranch?: string;\n /** Whether current branch is protected */\n isProtectedBranch?: boolean;\n /** Files changed during agent execution (for post-install) */\n changedFiles?: string[];\n /** AI-generated commit message */\n commitMessage?: string;\n /** AI-generated PR description */\n prDescription?: string;\n /** URL of created PR */\n prUrl?: string;\n /** Summary message from agent execution */\n agentSummary?: string;\n}\n\n/**\n * Input provided when creating the machine actor.\n * These values initialize the context.\n */\nexport interface InstallerMachineInput {\n emitter: InstallerEventEmitter;\n options: InstallerOptions;\n}\n\n/**\n * All events the wizard machine can receive.\n */\nexport type InstallerMachineEvent =\n | { type: 'START' }\n | { type: 'SKIP_AUTH' }\n | { type: 'GIT_CONFIRMED' }\n | { type: 'GIT_CANCELLED' }\n | { type: 'CREDENTIALS_SUBMITTED'; apiKey: string; clientId: string }\n | { type: 'CANCEL' }\n // Credential discovery events\n | { type: 'ENV_SCAN_APPROVED' }\n | { type: 'ENV_SCAN_DECLINED' }\n | { type: 'RETRY_AUTH' }\n // Branch check events\n | { type: 'BRANCH_CREATE' }\n | { type: 'BRANCH_CONTINUE' }\n | { type: 'BRANCH_CANCEL' }\n // Post-install events\n | { type: 'COMMIT_APPROVED' }\n | { type: 'COMMIT_DECLINED' }\n | { type: 'PR_APPROVED' }\n | { type: 'PR_DECLINED' };\n\n/**\n * Output from the detection actor.\n */\nexport interface DetectionOutput {\n integration: Integration | undefined;\n}\n\n/**\n * Output from the git check actor.\n */\nexport interface GitCheckOutput {\n isClean: boolean;\n files: string[];\n}\n\n/**\n * Output from the agent actor.\n */\nexport interface AgentOutput {\n success: boolean;\n summary?: string;\n error?: Error;\n}\n\n/**\n * Output from the branch check actor.\n */\nexport interface BranchCheckOutput {\n branch: string | null;\n isProtected: boolean;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port-detection.js","sourceRoot":"","sources":["../../src/lib/port-detection.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'node:fs';\nimport { join } from 'node:path';\nimport type { Integration } from './constants.js';\nimport { getConfig } from './settings.js';\n\nconst settings = getConfig();\n\nconst INTEGRATION_TO_SETTINGS_KEY: Record<Integration, string> = {\n nextjs: 'nextjs',\n react: 'react',\n 'tanstack-start': 'tanstackStart',\n 'react-router': 'reactRouter',\n 'vanilla-js': 'vanillaJs',\n};\n\nfunction getDefaultPort(integration: Integration): number {\n const settingsKey = INTEGRATION_TO_SETTINGS_KEY[integration];\n return settings.frameworks[settingsKey].port;\n}\n\nexport function getCallbackPath(integration: Integration): string {\n const settingsKey = INTEGRATION_TO_SETTINGS_KEY[integration];\n return settings.frameworks[settingsKey].callbackPath;\n}\n\n/**\n * Parse port from Vite config file.\n * Looks for server.port in vite.config.{ts,js,mjs}\n */\nfunction parseViteConfigPort(configPath: string): number | null {\n try {\n const content = fs.readFileSync(configPath, 'utf-8');\n // Match: port: 3000 or port: \"3000\" or port: '3000'\n const portMatch = content.match(/port\\s*:\\s*['\"]?(\\d+)['\"]?/);\n if (portMatch) {\n return parseInt(portMatch[1], 10);\n }\n } catch {\n // File doesn't exist or can't be read\n }\n return null;\n}\n\n/**\n * Parse port from Next.js package.json scripts.\n * Next.js uses: \"dev\": \"next dev -p 4000\" or --port 4000\n */\nfunction parseNextConfigPort(installDir: string): number | null {\n try {\n const packageJsonPath = join(installDir, 'package.json');\n const content = fs.readFileSync(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(content);\n\n const devScript = packageJson.scripts?.dev || '';\n // Match: -p 4000, --port 4000, --port=4000\n const portMatch = devScript.match(/-p\\s+(\\d+)|--port[=\\s]+(\\d+)/);\n if (portMatch) {\n return parseInt(portMatch[1] || portMatch[2], 10);\n }\n } catch {\n // Can't read package.json\n }\n return null;\n}\n\n/**\n * Parse port from TanStack Start app.config.ts.\n * Uses Vinxi: server: { port: N }\n */\nfunction parseTanStackPort(installDir: string): number | null {\n const configPaths = [join(installDir, 'app.config.ts'), join(installDir, 'app.config.js')];\n\n for (const configPath of configPaths) {\n try {\n const content = fs.readFileSync(configPath, 'utf-8');\n // Match server config with port\n const portMatch = content.match(/server\\s*:\\s*\\{[^}]*port\\s*:\\s*(\\d+)/);\n if (portMatch) {\n return parseInt(portMatch[1], 10);\n }\n } catch {\n // Config file doesn't exist\n }\n }\n return null;\n}\n\n/**\n * Detect the dev server port for a framework.\n * Checks config files first, falls back to framework default.\n */\nexport function detectPort(integration: Integration, installDir: string): number {\n let detectedPort: number | null = null;\n\n switch (integration) {\n case 'nextjs':\n detectedPort = parseNextConfigPort(installDir);\n break;\n\n case 'tanstack-start':\n detectedPort = parseTanStackPort(installDir);\n break;\n\n case 'react':\n case 'react-router':\n case 'vanilla-js': {\n // Vite-based frameworks\n const viteConfigs = [\n join(installDir, 'vite.config.ts'),\n join(installDir, 'vite.config.js'),\n join(installDir, 'vite.config.mjs'),\n ];\n for (const configPath of viteConfigs) {\n detectedPort = parseViteConfigPort(configPath);\n if (detectedPort) break;\n }\n break;\n }\n }\n\n return detectedPort ?? getDefaultPort(integration);\n}\n"]}