workos 0.2.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. package/.claude-plugin/plugin.json +3 -3
  2. package/README.md +3 -2
  3. package/dist/bin.js +45 -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/lib/version-check.d.ts +6 -0
  115. package/dist/lib/version-check.js +45 -0
  116. package/dist/lib/version-check.js.map +1 -0
  117. package/dist/{src/lib → lib}/workos-management.js +3 -3
  118. package/dist/lib/workos-management.js.map +1 -0
  119. package/dist/nextjs/nextjs-installer-agent.d.ts +6 -0
  120. package/dist/{src/nextjs/nextjs-wizard-agent.js → nextjs/nextjs-installer-agent.js} +6 -6
  121. package/dist/nextjs/nextjs-installer-agent.js.map +1 -0
  122. package/dist/{src/nextjs → nextjs}/utils.d.ts +2 -2
  123. package/dist/nextjs/utils.js.map +1 -0
  124. package/dist/react/react-installer-agent.d.ts +2 -0
  125. package/dist/{src/react/react-wizard-agent.js → react/react-installer-agent.js} +4 -4
  126. package/dist/react/react-installer-agent.js.map +1 -0
  127. package/dist/react-router/react-router-installer-agent.d.ts +6 -0
  128. package/dist/{src/react-router/react-router-wizard-agent.js → react-router/react-router-installer-agent.js} +6 -6
  129. package/dist/react-router/react-router-installer-agent.js.map +1 -0
  130. package/dist/{src/react-router → react-router}/utils.d.ts +2 -2
  131. package/dist/react-router/utils.js.map +1 -0
  132. package/dist/{src/run.d.ts → run.d.ts} +2 -1
  133. package/dist/{src/run.js → run.js} +5 -4
  134. package/dist/run.js.map +1 -0
  135. package/dist/{src/steps → steps}/add-or-update-environment-variables.js +5 -5
  136. package/dist/steps/add-or-update-environment-variables.js.map +1 -0
  137. package/dist/steps/index.js.map +1 -0
  138. package/dist/{src/steps → steps}/run-prettier.d.ts +2 -2
  139. package/dist/{src/steps → steps}/run-prettier.js +1 -1
  140. package/dist/steps/run-prettier.js.map +1 -0
  141. package/dist/{src/steps → steps}/upload-environment-variables/EnvironmentProvider.d.ts +3 -3
  142. package/dist/steps/upload-environment-variables/EnvironmentProvider.js.map +1 -0
  143. package/dist/{src/steps → steps}/upload-environment-variables/index.d.ts +2 -2
  144. package/dist/{src/steps → steps}/upload-environment-variables/index.js +3 -3
  145. package/dist/steps/upload-environment-variables/index.js.map +1 -0
  146. package/dist/{src/steps → steps}/upload-environment-variables/providers/vercel.d.ts +2 -2
  147. package/dist/steps/upload-environment-variables/providers/vercel.js.map +1 -0
  148. package/dist/tanstack-start/tanstack-start-installer-agent.d.ts +2 -0
  149. package/dist/{src/tanstack-start/tanstack-start-wizard-agent.js → tanstack-start/tanstack-start-installer-agent.js} +4 -4
  150. package/dist/tanstack-start/tanstack-start-installer-agent.js.map +1 -0
  151. package/dist/telemetry.js.map +1 -0
  152. package/dist/{src/utils → utils}/analytics.js +8 -8
  153. package/dist/utils/analytics.js.map +1 -0
  154. package/dist/utils/bash.js.map +1 -0
  155. package/dist/{src/utils → utils}/clack-utils.d.ts +9 -9
  156. package/dist/{src/utils → utils}/clack-utils.js +8 -8
  157. package/dist/utils/clack-utils.js.map +1 -0
  158. package/dist/utils/clack.js.map +1 -0
  159. package/dist/utils/cli-symbols.js.map +1 -0
  160. package/dist/{src/utils → utils}/debug.js +1 -1
  161. package/dist/utils/debug.js.map +1 -0
  162. package/dist/utils/env-parser.js.map +1 -0
  163. package/dist/utils/environment.d.ts +4 -0
  164. package/dist/{src/utils → utils}/environment.js +1 -1
  165. package/dist/utils/environment.js.map +1 -0
  166. package/dist/{src/utils → utils}/errors.js +1 -1
  167. package/dist/utils/errors.js.map +1 -0
  168. package/dist/utils/exec-file.d.ts +15 -0
  169. package/dist/utils/exec-file.js +38 -0
  170. package/dist/utils/exec-file.js.map +1 -0
  171. package/dist/utils/git-utils.js.map +1 -0
  172. package/dist/utils/logging.js.map +1 -0
  173. package/dist/utils/package-json.js.map +1 -0
  174. package/dist/{src/utils → utils}/package-manager.d.ts +4 -4
  175. package/dist/utils/package-manager.js.map +1 -0
  176. package/dist/utils/redact.js.map +1 -0
  177. package/dist/utils/semver.js.map +1 -0
  178. package/dist/utils/string.js.map +1 -0
  179. package/dist/{src/utils → utils}/telemetry-client.js +6 -2
  180. package/dist/utils/telemetry-client.js.map +1 -0
  181. package/dist/{src/utils → utils}/telemetry-types.d.ts +5 -5
  182. package/dist/utils/telemetry-types.js +6 -0
  183. package/dist/utils/telemetry-types.js.map +1 -0
  184. package/dist/{src/utils → utils}/types.d.ts +7 -2
  185. package/dist/{src/utils → utils}/types.js.map +1 -1
  186. package/dist/utils/urls.js.map +1 -0
  187. package/dist/utils/vendor/is-unicorn-supported.js.map +1 -0
  188. package/dist/vanilla-js/vanilla-js-installer-agent.d.ts +2 -0
  189. package/dist/{src/vanilla-js/vanilla-js-wizard-agent.js → vanilla-js/vanilla-js-installer-agent.js} +4 -4
  190. package/dist/vanilla-js/vanilla-js-installer-agent.js.map +1 -0
  191. package/package.json +18 -8
  192. package/skills/workos-authkit-nextjs/SKILL.md +75 -10
  193. package/skills/workos-authkit-tanstack-start/SKILL.md +184 -27
  194. package/dist/src/commands/install-skill.js.map +0 -1
  195. package/dist/src/commands/install.js.map +0 -1
  196. package/dist/src/commands/login.js.map +0 -1
  197. package/dist/src/commands/logout.js.map +0 -1
  198. package/dist/src/dashboard/components/AnimatedLogo.js.map +0 -1
  199. package/dist/src/dashboard/components/CompletionView.js.map +0 -1
  200. package/dist/src/dashboard/components/ConfirmPrompt.js.map +0 -1
  201. package/dist/src/dashboard/components/CredentialsForm.js.map +0 -1
  202. package/dist/src/dashboard/components/Dashboard.js.map +0 -1
  203. package/dist/src/dashboard/components/DashboardLayout.js.map +0 -1
  204. package/dist/src/dashboard/components/DiffPanel.js.map +0 -1
  205. package/dist/src/dashboard/components/InlinePrompt.js.map +0 -1
  206. package/dist/src/dashboard/components/OutputPanel.js.map +0 -1
  207. package/dist/src/dashboard/components/Panel.js.map +0 -1
  208. package/dist/src/dashboard/components/TextInput.js.map +0 -1
  209. package/dist/src/dashboard/components/WelcomeArt.js.map +0 -1
  210. package/dist/src/dashboard/hooks/useAnimation.js.map +0 -1
  211. package/dist/src/dashboard/hooks/useKeyboard.js.map +0 -1
  212. package/dist/src/dashboard/hooks/useTerminalSize.js.map +0 -1
  213. package/dist/src/dashboard/index.js.map +0 -1
  214. package/dist/src/dashboard/lib/diff-utils.js.map +0 -1
  215. package/dist/src/dashboard/lib/logo-frames.js.map +0 -1
  216. package/dist/src/dashboard/lib/welcome-art.js.map +0 -1
  217. package/dist/src/dashboard/types.d.ts +0 -5
  218. package/dist/src/dashboard/types.js.map +0 -1
  219. package/dist/src/lib/__tests__/test-utils.d.ts +0 -40
  220. package/dist/src/lib/__tests__/test-utils.js +0 -108
  221. package/dist/src/lib/__tests__/test-utils.js.map +0 -1
  222. package/dist/src/lib/adapters/cli-adapter.js.map +0 -1
  223. package/dist/src/lib/adapters/dashboard-adapter.js.map +0 -1
  224. package/dist/src/lib/adapters/index.js.map +0 -1
  225. package/dist/src/lib/adapters/types.js.map +0 -1
  226. package/dist/src/lib/agent-interface.js.map +0 -1
  227. package/dist/src/lib/agent-runner.js.map +0 -1
  228. package/dist/src/lib/ai-content.js +0 -68
  229. package/dist/src/lib/ai-content.js.map +0 -1
  230. package/dist/src/lib/api.js.map +0 -1
  231. package/dist/src/lib/config.js.map +0 -1
  232. package/dist/src/lib/constants.js.map +0 -1
  233. package/dist/src/lib/credential-discovery.js.map +0 -1
  234. package/dist/src/lib/credentials.js.map +0 -1
  235. package/dist/src/lib/device-auth.js.map +0 -1
  236. package/dist/src/lib/env-writer.js.map +0 -1
  237. package/dist/src/lib/framework-config.js.map +0 -1
  238. package/dist/src/lib/helper-functions.js.map +0 -1
  239. package/dist/src/lib/port-detection.js.map +0 -1
  240. package/dist/src/lib/post-install.js.map +0 -1
  241. package/dist/src/lib/progress-tracker.js.map +0 -1
  242. package/dist/src/lib/run-with-core.d.ts +0 -2
  243. package/dist/src/lib/run-with-core.js.map +0 -1
  244. package/dist/src/lib/safe-tools.js.map +0 -1
  245. package/dist/src/lib/settings.js.map +0 -1
  246. package/dist/src/lib/staging-api.js.map +0 -1
  247. package/dist/src/lib/token-refresh.js.map +0 -1
  248. package/dist/src/lib/validation/build-validator.js.map +0 -1
  249. package/dist/src/lib/validation/index.js.map +0 -1
  250. package/dist/src/lib/validation/types.js.map +0 -1
  251. package/dist/src/lib/validation/validator.js.map +0 -1
  252. package/dist/src/lib/wizard-core.js.map +0 -1
  253. package/dist/src/lib/wizard-core.types.js +0 -2
  254. package/dist/src/lib/wizard-core.types.js.map +0 -1
  255. package/dist/src/lib/workos-management.js.map +0 -1
  256. package/dist/src/nextjs/nextjs-wizard-agent.d.ts +0 -6
  257. package/dist/src/nextjs/nextjs-wizard-agent.js.map +0 -1
  258. package/dist/src/nextjs/utils.js.map +0 -1
  259. package/dist/src/react/react-wizard-agent.d.ts +0 -2
  260. package/dist/src/react/react-wizard-agent.js.map +0 -1
  261. package/dist/src/react-router/react-router-wizard-agent.d.ts +0 -6
  262. package/dist/src/react-router/react-router-wizard-agent.js.map +0 -1
  263. package/dist/src/react-router/utils.js.map +0 -1
  264. package/dist/src/run.js.map +0 -1
  265. package/dist/src/steps/add-or-update-environment-variables.js.map +0 -1
  266. package/dist/src/steps/index.js.map +0 -1
  267. package/dist/src/steps/run-prettier.js.map +0 -1
  268. package/dist/src/steps/upload-environment-variables/EnvironmentProvider.js.map +0 -1
  269. package/dist/src/steps/upload-environment-variables/index.js.map +0 -1
  270. package/dist/src/steps/upload-environment-variables/providers/vercel.js.map +0 -1
  271. package/dist/src/tanstack-start/tanstack-start-wizard-agent.d.ts +0 -2
  272. package/dist/src/tanstack-start/tanstack-start-wizard-agent.js.map +0 -1
  273. package/dist/src/telemetry.js.map +0 -1
  274. package/dist/src/utils/analytics.js.map +0 -1
  275. package/dist/src/utils/bash.js.map +0 -1
  276. package/dist/src/utils/clack-utils.js.map +0 -1
  277. package/dist/src/utils/clack.js.map +0 -1
  278. package/dist/src/utils/cli-symbols.js.map +0 -1
  279. package/dist/src/utils/debug.js.map +0 -1
  280. package/dist/src/utils/env-parser.js.map +0 -1
  281. package/dist/src/utils/environment.d.ts +0 -4
  282. package/dist/src/utils/environment.js.map +0 -1
  283. package/dist/src/utils/errors.js.map +0 -1
  284. package/dist/src/utils/git-utils.js.map +0 -1
  285. package/dist/src/utils/logging.js.map +0 -1
  286. package/dist/src/utils/package-json.js.map +0 -1
  287. package/dist/src/utils/package-manager.js.map +0 -1
  288. package/dist/src/utils/redact.js.map +0 -1
  289. package/dist/src/utils/semver.js.map +0 -1
  290. package/dist/src/utils/string.js.map +0 -1
  291. package/dist/src/utils/telemetry-client.js.map +0 -1
  292. package/dist/src/utils/telemetry-types.js +0 -6
  293. package/dist/src/utils/telemetry-types.js.map +0 -1
  294. package/dist/src/utils/urls.js.map +0 -1
  295. package/dist/src/utils/vendor/is-unicorn-supported.js.map +0 -1
  296. package/dist/src/vanilla-js/vanilla-js-wizard-agent.d.ts +0 -2
  297. package/dist/src/vanilla-js/vanilla-js-wizard-agent.js.map +0 -1
  298. package/dist/src/version.d.ts +0 -1
  299. package/dist/src/version.js +0 -2
  300. package/dist/src/version.js.map +0 -1
  301. /package/dist/{src/commands → commands}/install-skill.d.ts +0 -0
  302. /package/dist/{src/commands → commands}/install-skill.js +0 -0
  303. /package/dist/{src/commands → commands}/install.d.ts +0 -0
  304. /package/dist/{src/commands → commands}/login.d.ts +0 -0
  305. /package/dist/{src/commands → commands}/logout.d.ts +0 -0
  306. /package/dist/{src/commands → commands}/logout.js +0 -0
  307. /package/dist/{src/dashboard → dashboard}/components/AnimatedLogo.d.ts +0 -0
  308. /package/dist/{src/dashboard → dashboard}/components/AnimatedLogo.js +0 -0
  309. /package/dist/{src/dashboard → dashboard}/components/CompletionView.d.ts +0 -0
  310. /package/dist/{src/dashboard → dashboard}/components/CompletionView.js +0 -0
  311. /package/dist/{src/dashboard → dashboard}/components/ConfirmPrompt.d.ts +0 -0
  312. /package/dist/{src/dashboard → dashboard}/components/ConfirmPrompt.js +0 -0
  313. /package/dist/{src/dashboard → dashboard}/components/CredentialsForm.d.ts +0 -0
  314. /package/dist/{src/dashboard → dashboard}/components/CredentialsForm.js +0 -0
  315. /package/dist/{src/dashboard → dashboard}/components/Dashboard.d.ts +0 -0
  316. /package/dist/{src/dashboard → dashboard}/components/Dashboard.js +0 -0
  317. /package/dist/{src/dashboard → dashboard}/components/DashboardLayout.js +0 -0
  318. /package/dist/{src/dashboard → dashboard}/components/DiffPanel.js +0 -0
  319. /package/dist/{src/dashboard → dashboard}/components/InlinePrompt.d.ts +0 -0
  320. /package/dist/{src/dashboard → dashboard}/components/InlinePrompt.js +0 -0
  321. /package/dist/{src/dashboard → dashboard}/components/OutputPanel.js +0 -0
  322. /package/dist/{src/dashboard → dashboard}/components/Panel.d.ts +0 -0
  323. /package/dist/{src/dashboard → dashboard}/components/Panel.js +0 -0
  324. /package/dist/{src/dashboard → dashboard}/components/TextInput.d.ts +0 -0
  325. /package/dist/{src/dashboard → dashboard}/components/TextInput.js +0 -0
  326. /package/dist/{src/dashboard → dashboard}/components/WelcomeArt.d.ts +0 -0
  327. /package/dist/{src/dashboard → dashboard}/components/WelcomeArt.js +0 -0
  328. /package/dist/{src/dashboard → dashboard}/hooks/useAnimation.d.ts +0 -0
  329. /package/dist/{src/dashboard → dashboard}/hooks/useAnimation.js +0 -0
  330. /package/dist/{src/dashboard → dashboard}/hooks/useKeyboard.d.ts +0 -0
  331. /package/dist/{src/dashboard → dashboard}/hooks/useKeyboard.js +0 -0
  332. /package/dist/{src/dashboard → dashboard}/hooks/useTerminalSize.d.ts +0 -0
  333. /package/dist/{src/dashboard → dashboard}/hooks/useTerminalSize.js +0 -0
  334. /package/dist/{src/dashboard → dashboard}/index.js +0 -0
  335. /package/dist/{src/dashboard → dashboard}/lib/diff-utils.d.ts +0 -0
  336. /package/dist/{src/dashboard → dashboard}/lib/diff-utils.js +0 -0
  337. /package/dist/{src/dashboard → dashboard}/lib/logo-frames.d.ts +0 -0
  338. /package/dist/{src/dashboard → dashboard}/lib/logo-frames.js +0 -0
  339. /package/dist/{src/dashboard → dashboard}/lib/welcome-art.d.ts +0 -0
  340. /package/dist/{src/dashboard → dashboard}/lib/welcome-art.js +0 -0
  341. /package/dist/{src/dashboard → dashboard}/types.js +0 -0
  342. /package/dist/{src/lib → lib}/adapters/dashboard-adapter.js +0 -0
  343. /package/dist/{src/lib → lib}/adapters/index.js +0 -0
  344. /package/dist/{src/lib → lib}/adapters/types.js +0 -0
  345. /package/dist/{src/lib → lib}/api.d.ts +0 -0
  346. /package/dist/{src/lib → lib}/api.js +0 -0
  347. /package/dist/{src/lib → lib}/config.js +0 -0
  348. /package/dist/{src/lib → lib}/credential-discovery.d.ts +0 -0
  349. /package/dist/{src/lib → lib}/credential-discovery.js +0 -0
  350. /package/dist/{src/lib → lib}/env-writer.d.ts +0 -0
  351. /package/dist/{src/lib → lib}/env-writer.js +0 -0
  352. /package/dist/{src/lib → lib}/helper-functions.d.ts +0 -0
  353. /package/dist/{src/lib → lib}/helper-functions.js +0 -0
  354. /package/dist/{src/lib → lib}/port-detection.d.ts +0 -0
  355. /package/dist/{src/lib → lib}/port-detection.js +0 -0
  356. /package/dist/{src/lib → lib}/post-install.d.ts +0 -0
  357. /package/dist/{src/lib → lib}/post-install.js +0 -0
  358. /package/dist/{src/lib → lib}/progress-tracker.d.ts +0 -0
  359. /package/dist/{src/lib → lib}/progress-tracker.js +0 -0
  360. /package/dist/{src/lib → lib}/safe-tools.d.ts +0 -0
  361. /package/dist/{src/lib → lib}/safe-tools.js +0 -0
  362. /package/dist/{src/lib → lib}/staging-api.d.ts +0 -0
  363. /package/dist/{src/lib → lib}/staging-api.js +0 -0
  364. /package/dist/{src/lib → lib}/token-refresh.d.ts +0 -0
  365. /package/dist/{src/lib → lib}/validation/build-validator.d.ts +0 -0
  366. /package/dist/{src/lib → lib}/validation/build-validator.js +0 -0
  367. /package/dist/{src/lib → lib}/validation/index.d.ts +0 -0
  368. /package/dist/{src/lib → lib}/validation/index.js +0 -0
  369. /package/dist/{src/lib → lib}/validation/types.d.ts +0 -0
  370. /package/dist/{src/lib → lib}/validation/types.js +0 -0
  371. /package/dist/{src/lib → lib}/validation/validator.d.ts +0 -0
  372. /package/dist/{src/lib → lib}/validation/validator.js +0 -0
  373. /package/dist/{src/lib → lib}/workos-management.d.ts +0 -0
  374. /package/dist/{src/nextjs → nextjs}/utils.js +0 -0
  375. /package/dist/{src/react-router → react-router}/utils.js +0 -0
  376. /package/dist/{src/steps → steps}/add-or-update-environment-variables.d.ts +0 -0
  377. /package/dist/{src/steps → steps}/index.d.ts +0 -0
  378. /package/dist/{src/steps → steps}/index.js +0 -0
  379. /package/dist/{src/steps → steps}/upload-environment-variables/EnvironmentProvider.js +0 -0
  380. /package/dist/{src/steps → steps}/upload-environment-variables/providers/vercel.js +0 -0
  381. /package/dist/{src/telemetry.d.ts → telemetry.d.ts} +0 -0
  382. /package/dist/{src/telemetry.js → telemetry.js} +0 -0
  383. /package/dist/{src/utils → utils}/analytics.d.ts +0 -0
  384. /package/dist/{src/utils → utils}/bash.d.ts +0 -0
  385. /package/dist/{src/utils → utils}/bash.js +0 -0
  386. /package/dist/{src/utils → utils}/clack.d.ts +0 -0
  387. /package/dist/{src/utils → utils}/clack.js +0 -0
  388. /package/dist/{src/utils → utils}/cli-symbols.d.ts +0 -0
  389. /package/dist/{src/utils → utils}/cli-symbols.js +0 -0
  390. /package/dist/{src/utils → utils}/debug.d.ts +0 -0
  391. /package/dist/{src/utils → utils}/env-parser.d.ts +0 -0
  392. /package/dist/{src/utils → utils}/env-parser.js +0 -0
  393. /package/dist/{src/utils → utils}/errors.d.ts +0 -0
  394. /package/dist/{src/utils → utils}/git-utils.d.ts +0 -0
  395. /package/dist/{src/utils → utils}/git-utils.js +0 -0
  396. /package/dist/{src/utils → utils}/logging.d.ts +0 -0
  397. /package/dist/{src/utils → utils}/logging.js +0 -0
  398. /package/dist/{src/utils → utils}/package-json.d.ts +0 -0
  399. /package/dist/{src/utils → utils}/package-json.js +0 -0
  400. /package/dist/{src/utils → utils}/package-manager.js +0 -0
  401. /package/dist/{src/utils → utils}/redact.d.ts +0 -0
  402. /package/dist/{src/utils → utils}/redact.js +0 -0
  403. /package/dist/{src/utils → utils}/semver.d.ts +0 -0
  404. /package/dist/{src/utils → utils}/semver.js +0 -0
  405. /package/dist/{src/utils → utils}/string.d.ts +0 -0
  406. /package/dist/{src/utils → utils}/string.js +0 -0
  407. /package/dist/{src/utils → utils}/telemetry-client.d.ts +0 -0
  408. /package/dist/{src/utils → utils}/types.js +0 -0
  409. /package/dist/{src/utils → utils}/urls.d.ts +0 -0
  410. /package/dist/{src/utils → utils}/urls.js +0 -0
  411. /package/dist/{src/utils → utils}/vendor/is-unicorn-supported.d.ts +0 -0
  412. /package/dist/{src/utils → utils}/vendor/is-unicorn-supported.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-utils.js","sourceRoot":"","sources":["../../src/utils/git-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,iCAAiC,EAAE;YACjD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC;aACC,QAAQ,EAAE;aACV,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,OAAO,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,YAAY,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,2CAA2C,EAAE;YAChE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC;aACC,QAAQ,EAAE;aACV,IAAI,EAAE,CAAC;QACV,OAAO,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,YAAY,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACxC,IAAI,YAAY,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC;QACH,QAAQ,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,EAAE;YAChD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,MAAM;aACV,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC","sourcesContent":["import { execSync, execFileSync } from 'node:child_process';\n\nconst PROTECTED_BRANCHES = ['main', 'master', 'develop'];\n\n/**\n * Get the current git branch name.\n * Returns null if not in a git repo or if the command fails.\n */\nexport function getCurrentBranch(): string | null {\n try {\n return execSync('git rev-parse --abbrev-ref HEAD', {\n stdio: ['ignore', 'pipe', 'ignore'],\n })\n .toString()\n .trim();\n } catch {\n return null;\n }\n}\n\n/**\n * Check if a branch name is considered protected (main, master, develop).\n */\nexport function isProtectedBranch(branch: string): boolean {\n return PROTECTED_BRANCHES.includes(branch);\n}\n\nexport function createBranch(name: string): void {\n execFileSync('git', ['checkout', '-b', name], { stdio: 'ignore' });\n}\n\nexport function branchExists(name: string): boolean {\n try {\n execFileSync('git', ['rev-parse', '--verify', name], { stdio: 'ignore' });\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Get the default branch from origin, falling back to main/master detection.\n */\nexport function getDefaultBranch(): string {\n try {\n const ref = execSync('git symbolic-ref refs/remotes/origin/HEAD', {\n stdio: ['ignore', 'pipe', 'ignore'],\n })\n .toString()\n .trim();\n return ref.replace('refs/remotes/origin/', '');\n } catch {\n if (branchExists('main')) return 'main';\n if (branchExists('master')) return 'master';\n return 'main';\n }\n}\n\n/**\n * Check if the GitHub CLI (gh) is available.\n */\nexport function hasGhCli(): boolean {\n try {\n execSync('gh --version', { stdio: 'ignore' });\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Get list of uncommitted/untracked files from git status.\n */\nexport function getUncommittedFiles(): string[] {\n try {\n const status = execSync('git status --porcelain', {\n stdio: ['ignore', 'pipe', 'ignore'],\n }).toString();\n return status\n .split('\\n')\n .filter(Boolean)\n .map((line) => line.slice(3));\n } catch {\n return [];\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,CAAC,CAAC,GAAW;IAC3B,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,EAAE;IAChB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,GAAW;IAC7B,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,GAAW;IAC7B,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAW;IAChC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAQ;IAC5B,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC","sourcesContent":["import Chalk from 'chalk';\n\nexport function prepareMessage(msg: unknown): string {\n if (typeof msg === 'string') {\n return msg;\n }\n if (msg instanceof Error) {\n return `${msg.stack || ''}`;\n }\n return JSON.stringify(msg, null, '\\t');\n}\n\nexport function l(msg: string): void {\n // eslint-disable-next-line no-console\n console.log(msg);\n}\n\nexport function nl(): void {\n return l('');\n}\n\nexport function green(msg: string): void {\n return l(Chalk.green(prepareMessage(msg)));\n}\n\nexport function red(msg: string): void {\n return l(Chalk.red(prepareMessage(msg)));\n}\n\nexport function dim(msg: string): void {\n return l(Chalk.dim(prepareMessage(msg)));\n}\n\nexport function yellow(msg: string): void {\n return l(Chalk.yellow(prepareMessage(msg)));\n}\n\nexport function cyan(msg: string): void {\n return l(Chalk.cyan(prepareMessage(msg)));\n}\n\nexport function debug(msg: any): void {\n return l(Chalk.italic.yellow(prepareMessage(msg)));\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/utils/package-json.ts"],"names":[],"mappings":"AAiBA;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAC1C,gBAA0B,EAC1B,WAA2B;IAE3B,OAAO,gBAAgB;SACpB,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC;KACrD,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,UAAU,EAA4B,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,WAA2B;IAClF,OAAO,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,SAAS,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAAmB,EAAE,WAA2B;IAChF,OAAO,WAAW,EAAE,YAAY,EAAE,CAAC,WAAW,CAAC,IAAI,WAAW,EAAE,eAAe,EAAE,CAAC,WAAW,CAAC,CAAC;AACjG,CAAC","sourcesContent":["export type PackageDotJson = {\n version?: string;\n scripts?: Record<string, string | undefined>;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n resolutions?: Record<string, string>;\n overrides?: Record<string, string>;\n pnpm?: {\n overrides?: Record<string, string>;\n };\n};\n\ntype NpmPackage = {\n name: string;\n version: string;\n};\n\n/**\n * Checks if @param packageJson has any of the @param packageNamesList package names\n * listed as a dependency or devDependency.\n * If so, it returns the first package name that is found, including the\n * version (range) specified in the package.json.\n */\nexport function findInstalledPackageFromList(\n packageNamesList: string[],\n packageJson: PackageDotJson,\n): NpmPackage | undefined {\n return packageNamesList\n .map((packageName) => ({\n name: packageName,\n version: getPackageVersion(packageName, packageJson),\n }))\n .find((sdkPackage): sdkPackage is NpmPackage => !!sdkPackage.version);\n}\n\nexport function hasPackageInstalled(packageName: string, packageJson: PackageDotJson): boolean {\n return getPackageVersion(packageName, packageJson) !== undefined;\n}\n\nexport function getPackageVersion(packageName: string, packageJson: PackageDotJson): string | undefined {\n return packageJson?.dependencies?.[packageName] || packageJson?.devDependencies?.[packageName];\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { WizardOptions } from './types.js';
1
+ import type { InstallerOptions } from './types.js';
2
2
  export interface PackageManager {
3
3
  name: string;
4
4
  label: string;
@@ -7,8 +7,8 @@ export interface PackageManager {
7
7
  runScriptCommand: string;
8
8
  flags: string;
9
9
  forceInstallFlag: string;
10
- detect: ({ installDir }: Pick<WizardOptions, 'installDir'>) => boolean;
11
- addOverride: (pkgName: string, pkgVersion: string, { installDir }: Pick<WizardOptions, 'installDir'>) => Promise<void>;
10
+ detect: ({ installDir }: Pick<InstallerOptions, 'installDir'>) => boolean;
11
+ addOverride: (pkgName: string, pkgVersion: string, { installDir }: Pick<InstallerOptions, 'installDir'>) => Promise<void>;
12
12
  }
13
13
  export declare const BUN: PackageManager;
14
14
  export declare const YARN_V1: PackageManager;
@@ -18,4 +18,4 @@ export declare const PNPM: PackageManager;
18
18
  export declare const NPM: PackageManager;
19
19
  export declare const EXPO: PackageManager;
20
20
  export declare const packageManagers: PackageManager[];
21
- export declare function detectAllPackageManagers({ installDir }: Pick<WizardOptions, 'installDir'>): PackageManager[];
21
+ export declare function detectAllPackageManagers({ installDir }: Pick<InstallerOptions, 'installDir'>): PackageManager[];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/typedef */\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { traceStep } from '../telemetry.js';\nimport { getPackageDotJson, updatePackageDotJson } from './clack-utils.js';\nimport { analytics } from './analytics.js';\nimport type { InstallerOptions } from './types.js';\n\nexport interface PackageManager {\n name: string;\n label: string;\n installCommand: string;\n buildCommand: string;\n /* The command that the package manager uses to run a script from package.json */\n runScriptCommand: string;\n flags: string;\n forceInstallFlag: string;\n detect: ({ installDir }: Pick<InstallerOptions, 'installDir'>) => boolean;\n addOverride: (\n pkgName: string,\n pkgVersion: string,\n { installDir }: Pick<InstallerOptions, 'installDir'>,\n ) => Promise<void>;\n}\n\nexport const BUN: PackageManager = {\n name: 'bun',\n label: 'Bun',\n installCommand: 'bun add',\n buildCommand: 'bun run build',\n runScriptCommand: 'bun run',\n flags: '',\n forceInstallFlag: '--force',\n detect: ({ installDir }: Pick<InstallerOptions, 'installDir'>) =>\n ['bun.lockb', 'bun.lock'].some((lockFile) => fs.existsSync(path.join(installDir, lockFile))),\n addOverride: async (pkgName, pkgVersion, { installDir }: Pick<InstallerOptions, 'installDir'>): Promise<void> => {\n const packageDotJson = await getPackageDotJson({ installDir });\n const overrides = packageDotJson.overrides || {};\n\n await updatePackageDotJson(\n {\n ...packageDotJson,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n },\n { installDir: installDir },\n );\n },\n};\nexport const YARN_V1: PackageManager = {\n name: 'yarn',\n label: 'Yarn V1',\n installCommand: 'yarn add',\n buildCommand: 'yarn build',\n runScriptCommand: 'yarn',\n flags: '--ignore-workspace-root-check',\n forceInstallFlag: '--force',\n detect: ({ installDir }: Pick<InstallerOptions, 'installDir'>) => {\n try {\n return fs.readFileSync(path.join(installDir, 'yarn.lock'), 'utf-8').slice(0, 500).includes('yarn lockfile v1');\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion, { installDir }: Pick<InstallerOptions, 'installDir'>): Promise<void> => {\n const packageDotJson = await getPackageDotJson({ installDir });\n const resolutions = packageDotJson.resolutions || {};\n\n await updatePackageDotJson(\n {\n ...packageDotJson,\n resolutions: {\n ...resolutions,\n [pkgName]: pkgVersion,\n },\n },\n { installDir },\n );\n },\n};\n/** YARN V2/3/4 */\nexport const YARN_V2: PackageManager = {\n name: 'yarn',\n label: 'Yarn V2/3/4',\n installCommand: 'yarn add',\n buildCommand: 'yarn build',\n runScriptCommand: 'yarn',\n flags: '',\n forceInstallFlag: '--force',\n detect: ({ installDir }: Pick<InstallerOptions, 'installDir'>) => {\n try {\n return fs.readFileSync(path.join(installDir, 'yarn.lock'), 'utf-8').slice(0, 500).includes('__metadata');\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion, { installDir }: Pick<InstallerOptions, 'installDir'>): Promise<void> => {\n const packageDotJson = await getPackageDotJson({ installDir });\n const resolutions = packageDotJson.resolutions || {};\n\n await updatePackageDotJson(\n {\n ...packageDotJson,\n resolutions: {\n ...resolutions,\n [pkgName]: pkgVersion,\n },\n },\n { installDir },\n );\n },\n};\nexport const PNPM: PackageManager = {\n name: 'pnpm',\n label: 'pnpm',\n installCommand: 'pnpm add',\n buildCommand: 'pnpm build',\n runScriptCommand: 'pnpm',\n flags: '--ignore-workspace-root-check',\n forceInstallFlag: '--force',\n detect: ({ installDir }: Pick<InstallerOptions, 'installDir'>) =>\n fs.existsSync(path.join(installDir, 'pnpm-lock.yaml')),\n addOverride: async (pkgName, pkgVersion, { installDir }: Pick<InstallerOptions, 'installDir'>): Promise<void> => {\n const packageDotJson = await getPackageDotJson({ installDir });\n const pnpm = packageDotJson.pnpm || {};\n const overrides = pnpm.overrides || {};\n\n await updatePackageDotJson(\n {\n ...packageDotJson,\n pnpm: {\n ...pnpm,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n },\n },\n { installDir },\n );\n },\n};\nexport const NPM: PackageManager = {\n name: 'npm',\n label: 'npm',\n installCommand: 'npm add',\n buildCommand: 'npm run build',\n runScriptCommand: 'npm run',\n flags: '',\n forceInstallFlag: '--force',\n detect: ({ installDir }: Pick<InstallerOptions, 'installDir'>) =>\n fs.existsSync(path.join(installDir, 'package-lock.json')),\n addOverride: async (pkgName, pkgVersion, { installDir }: Pick<InstallerOptions, 'installDir'>): Promise<void> => {\n const packageDotJson = await getPackageDotJson({ installDir });\n const overrides = packageDotJson.overrides || {};\n\n await updatePackageDotJson(\n {\n ...packageDotJson,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n },\n { installDir },\n );\n },\n};\n\nexport const EXPO: PackageManager = {\n name: 'expo',\n label: 'Expo',\n installCommand: 'npx expo install',\n buildCommand: 'npx expo build',\n runScriptCommand: 'npx expo run',\n flags: '',\n forceInstallFlag: '--force',\n detect: () => false,\n addOverride: async (pkgName, pkgVersion, { installDir }: Pick<InstallerOptions, 'installDir'>): Promise<void> => {\n const packageDotJson = await getPackageDotJson({ installDir });\n const overrides = packageDotJson.overrides || {};\n\n await updatePackageDotJson(\n {\n ...packageDotJson,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n },\n { installDir },\n );\n },\n};\n\nexport const packageManagers = [BUN, YARN_V1, YARN_V2, PNPM, NPM, EXPO];\n\nexport function detectAllPackageManagers({ installDir }: Pick<InstallerOptions, 'installDir'>): PackageManager[] {\n return traceStep('detect-package-manager', () => {\n const detectedManagers: PackageManager[] = [];\n for (const packageManager of packageManagers) {\n if (packageManager.detect({ installDir })) {\n detectedManagers.push(packageManager);\n }\n }\n\n if (detectedManagers.length === 0) {\n analytics.setTag('package-manager', 'not-detected');\n }\n return detectedManagers;\n });\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/utils/redact.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,YAAY,CAAC;IAEvD,gEAAgE;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEnD,OAAO,GAAG,MAAM,MAAM,MAAM,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAQ;IACxC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC;IAExD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;IAE5D,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE5B,kBAAkB;QAClB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,QAAQ,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QACD,oCAAoC;aAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACrD,QAAQ,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["/**\n * Redact sensitive values from logs\n */\n\nexport function redactApiKey(apiKey: string): string {\n if (!apiKey || apiKey.length < 12) return '[REDACTED]';\n\n // Show format: sk_test_xxx...xxx (first 8 chars + last 3 chars)\n const prefix = apiKey.substring(0, 8);\n const suffix = apiKey.substring(apiKey.length - 3);\n\n return `${prefix}...${suffix}`;\n}\n\nexport function redactCredentials(obj: any): any {\n if (typeof obj !== 'object' || obj === null) return obj;\n\n const redacted = Array.isArray(obj) ? [...obj] : { ...obj };\n\n for (const key in redacted) {\n const value = redacted[key];\n\n // Redact API keys\n if (typeof value === 'string' && value.startsWith('sk_')) {\n redacted[key] = redactApiKey(value);\n }\n // Recursively redact nested objects\n else if (typeof value === 'object' && value !== null) {\n redacted[key] = redactCredentials(value);\n }\n }\n\n return redacted;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/utils/semver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEjF,MAAM,UAAU,oBAAoB,CAAC,EACnC,OAAO,EACP,kBAAkB,EAClB,WAAW,GAKZ;IACC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,kBAAkB,EAAE,OAAO,CAAC;IAEhC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACnB,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC;SAAM,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,kBAAkB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,OAAO;IACL,yGAAyG;IACzG,CAAC,CAAC,kBAAkB;QACpB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAC/G,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAA2B,EAAE,YAAoB;IAChF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,YAAY,IAAI,YAAY,EAAE,CAAC;YACjC,OAAO,GAAG,YAAY,IAAI,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,YAAY,MAAM,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC","sourcesContent":["import { major, minVersion, satisfies, subset, valid, validRange } from 'semver';\n\nexport function fulfillsVersionRange({\n version,\n acceptableVersions,\n canBeLatest,\n}: {\n version: string;\n acceptableVersions: string;\n canBeLatest: boolean;\n}): boolean {\n if (version === 'latest') {\n return canBeLatest;\n }\n\n let cleanedUserVersion, isRange;\n\n if (valid(version)) {\n cleanedUserVersion = valid(version);\n isRange = false;\n } else if (validRange(version)) {\n cleanedUserVersion = validRange(version);\n isRange = true;\n }\n\n return (\n // If the given version is a bogus format, this will still be undefined and we'll automatically reject it\n !!cleanedUserVersion &&\n (isRange ? subset(cleanedUserVersion, acceptableVersions) : satisfies(cleanedUserVersion, acceptableVersions))\n );\n}\n\n/**\n * Get a version bucket string for analytics.\n * Returns format like \"15.x\" for versions >= minimumMajor, or \"<{minimumMajor}.0.0\" otherwise.\n */\nexport function getVersionBucket(version: string | undefined, minimumMajor: number): string {\n if (!version) {\n return 'none';\n }\n\n try {\n const minVer = minVersion(version);\n if (!minVer) {\n return 'invalid';\n }\n const majorVersion = major(minVer);\n if (majorVersion >= minimumMajor) {\n return `${majorVersion}.x`;\n }\n return `<${minimumMajor}.0.0`;\n } catch {\n return 'unknown';\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/utils/string.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,GAAG,CAAC,OAAO;IAChB,4CAA4C;IAC5C,6EAA6E,EAC7E,EAAE,CACH,CAAC;AACJ,CAAC","sourcesContent":["export function stripAnsii(str: string): string {\n return str.replace(\n // eslint-disable-next-line no-control-regex\n /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,\n '',\n );\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { debug } from './debug.js';
2
+ import { getCredentials } from '../lib/credentials.js';
2
3
  /**
3
4
  * HTTP client that queues telemetry events and flushes them to the gateway.
4
5
  * Failures are silent—telemetry should never crash the wizard.
@@ -28,8 +29,11 @@ export class TelemetryClient {
28
29
  const headers = {
29
30
  'Content-Type': 'application/json',
30
31
  };
31
- if (this.accessToken) {
32
- headers['Authorization'] = `Bearer ${this.accessToken}`;
32
+ // Read fresh credentials to handle token refresh mid-session
33
+ const freshCreds = getCredentials();
34
+ const token = freshCreds?.accessToken ?? this.accessToken;
35
+ if (token) {
36
+ headers['Authorization'] = `Bearer ${token}`;
33
37
  }
34
38
  const controller = new AbortController();
35
39
  const timeout = setTimeout(() => controller.abort(), 3000);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-client.js","sourceRoot":"","sources":["../../src/utils/telemetry-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;GAGG;AACH,MAAM,OAAO,eAAe;IAClB,MAAM,GAAqB,EAAE,CAAC;IAC9B,WAAW,GAAkB,IAAI,CAAC;IAClC,UAAU,GAAkB,IAAI,CAAC;IAEzC,aAAa,CAAC,GAAW;QACvB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACxB,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,UAAU,CAAC,KAAqB;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACrC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,CAAC,uDAAuD,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAqB,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QACF,6DAA6D;QAC7D,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,UAAU,EAAE,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;QAC1D,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;QAC/C,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAE3D,IAAI,CAAC;YACH,KAAK,CAAC,uBAAuB,OAAO,CAAC,MAAM,CAAC,MAAM,cAAc,IAAI,CAAC,UAAU,YAAY,CAAC,CAAC;YAE7F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,YAAY,EAAE;gBAC3D,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC","sourcesContent":["import { debug } from './debug.js';\nimport type { TelemetryEvent, TelemetryRequest } from './telemetry-types.js';\nimport { getCredentials } from '../lib/credentials.js';\n\n/**\n * HTTP client that queues telemetry events and flushes them to the gateway.\n * Failures are silent—telemetry should never crash the wizard.\n */\nexport class TelemetryClient {\n private events: TelemetryEvent[] = [];\n private accessToken: string | null = null;\n private gatewayUrl: string | null = null;\n\n setGatewayUrl(url: string) {\n this.gatewayUrl = url;\n }\n\n setAccessToken(token: string) {\n this.accessToken = token;\n }\n\n queueEvent(event: TelemetryEvent) {\n this.events.push(event);\n }\n\n async flush(): Promise<void> {\n if (this.events.length === 0) return;\n if (!this.gatewayUrl) {\n debug('[Telemetry] No gateway URL configured, skipping flush');\n return;\n }\n\n const payload: TelemetryRequest = { events: [...this.events] };\n this.events = [];\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n // Read fresh credentials to handle token refresh mid-session\n const freshCreds = getCredentials();\n const token = freshCreds?.accessToken ?? this.accessToken;\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 3000);\n\n try {\n debug(`[Telemetry] Sending ${payload.events.length} events to ${this.gatewayUrl}/telemetry`);\n\n const response = await fetch(`${this.gatewayUrl}/telemetry`, {\n method: 'POST',\n headers,\n body: JSON.stringify(payload),\n signal: controller.signal,\n });\n\n if (!response.ok) {\n debug(`[Telemetry] Failed to send: ${response.status}`);\n }\n } catch (error) {\n debug(`[Telemetry] Error sending events: ${error}`);\n } finally {\n clearTimeout(timeout);\n }\n }\n}\n\nexport const telemetryClient = new TelemetryClient();\n"]}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Telemetry event types for wizard → gateway communication.
2
+ * Telemetry event types for installer → gateway communication.
3
3
  * The gateway converts these to OTel format.
4
4
  */
5
5
  export interface TelemetryEvent {
@@ -11,8 +11,8 @@ export interface TelemetryEvent {
11
11
  export interface SessionStartEvent extends TelemetryEvent {
12
12
  type: 'session.start';
13
13
  attributes: {
14
- 'wizard.version': string;
15
- 'wizard.mode': 'cli' | 'tui';
14
+ 'installer.version': string;
15
+ 'installer.mode': 'cli' | 'tui';
16
16
  'workos.user_id'?: string;
17
17
  'workos.org_id'?: string;
18
18
  };
@@ -20,8 +20,8 @@ export interface SessionStartEvent extends TelemetryEvent {
20
20
  export interface SessionEndEvent extends TelemetryEvent {
21
21
  type: 'session.end';
22
22
  attributes: {
23
- 'wizard.outcome': 'success' | 'error' | 'cancelled';
24
- 'wizard.duration_ms': number;
23
+ 'installer.outcome': 'success' | 'error' | 'cancelled';
24
+ 'installer.duration_ms': number;
25
25
  } & Record<string, string | number | boolean>;
26
26
  }
27
27
  export interface StepEvent extends TelemetryEvent {
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Telemetry event types for installer → gateway communication.
3
+ * The gateway converts these to OTel format.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=telemetry-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-types.js","sourceRoot":"","sources":["../../src/utils/telemetry-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * Telemetry event types for installer → gateway communication.\n * The gateway converts these to OTel format.\n */\n\nexport interface TelemetryEvent {\n type: 'session.start' | 'session.end' | 'step' | 'agent.tool' | 'agent.llm';\n sessionId: string;\n timestamp: string;\n attributes?: Record<string, string | number | boolean>;\n}\n\nexport interface SessionStartEvent extends TelemetryEvent {\n type: 'session.start';\n attributes: {\n 'installer.version': string;\n 'installer.mode': 'cli' | 'tui';\n 'workos.user_id'?: string;\n 'workos.org_id'?: string;\n };\n}\n\nexport interface SessionEndEvent extends TelemetryEvent {\n type: 'session.end';\n attributes: {\n 'installer.outcome': 'success' | 'error' | 'cancelled';\n 'installer.duration_ms': number;\n } & Record<string, string | number | boolean>;\n}\n\nexport interface StepEvent extends TelemetryEvent {\n type: 'step';\n name: string;\n durationMs: number;\n success: boolean;\n error?: {\n type: string;\n message: string;\n };\n}\n\nexport interface AgentToolEvent extends TelemetryEvent {\n type: 'agent.tool';\n toolName: string;\n durationMs: number;\n success: boolean;\n}\n\nexport interface AgentLLMEvent extends TelemetryEvent {\n type: 'agent.llm';\n model: string;\n inputTokens: number;\n outputTokens: number;\n}\n\nexport interface TelemetryRequest {\n events: TelemetryEvent[];\n}\n"]}
@@ -1,4 +1,4 @@
1
- export type WizardOptions = {
1
+ export type InstallerOptions = {
2
2
  /**
3
3
  * Whether to enable debug mode.
4
4
  */
@@ -53,7 +53,7 @@ export type WizardOptions = {
53
53
  /**
54
54
  * Event emitter for dashboard mode
55
55
  */
56
- emitter?: import('../lib/events.js').WizardEventEmitter;
56
+ emitter?: import('../lib/events.js').InstallerEventEmitter;
57
57
  /**
58
58
  * Pre-selected framework integration (bypasses detection)
59
59
  */
@@ -70,6 +70,11 @@ export type WizardOptions = {
70
70
  * Skip post-install commit and PR workflow
71
71
  */
72
72
  noCommit?: boolean;
73
+ /**
74
+ * Direct mode - bypass llm-gateway and use user's own Anthropic API key.
75
+ * Requires ANTHROPIC_API_KEY environment variable.
76
+ */
77
+ direct?: boolean;
73
78
  };
74
79
  export interface Feature {
75
80
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"","sourcesContent":["export type WizardOptions = {\n /**\n * Whether to enable debug mode.\n */\n debug: boolean;\n\n /**\n * Whether to force install the SDK package to continue with the installation in case\n * any package manager checks are failing (e.g. peer dependency versions).\n *\n * Use with caution and only if you know what you're doing.\n *\n * Does not apply to all wizard flows (currently NPM only)\n */\n forceInstall: boolean;\n\n /**\n * The directory to run the wizard in.\n */\n installDir: string;\n\n /**\n * Whether to use local services (LLM gateway on localhost:8000)\n */\n local: boolean;\n\n /**\n * CI mode - non-interactive execution\n */\n ci: boolean;\n\n /**\n * Skip authentication check (for local development only)\n */\n skipAuth: boolean;\n\n /**\n * WorkOS API key (sk_xxx)\n */\n apiKey?: string;\n\n /**\n * WorkOS Client ID (client_xxx)\n */\n clientId?: string;\n\n /**\n * App homepage URL for WorkOS dashboard config.\n * Defaults to http://localhost:{detected_port}\n */\n homepageUrl?: string;\n\n /**\n * Redirect URI for WorkOS callback.\n * Defaults to framework-specific convention (e.g., /api/auth/callback)\n */\n redirectUri?: string;\n\n /**\n * [Experimental] Enable visual dashboard mode\n */\n dashboard?: boolean;\n\n /**\n * Event emitter for dashboard mode\n */\n emitter?: import('../lib/events.js').WizardEventEmitter;\n\n /**\n * Pre-selected framework integration (bypasses detection)\n */\n integration?: import('../lib/constants.js').Integration;\n\n /**\n * Enable XState inspector - opens browser to visualize state machine live\n */\n inspect?: boolean;\n\n /**\n * Skip post-installation validation (includes build check)\n */\n noValidate?: boolean;\n\n /**\n * Skip post-install commit and PR workflow\n */\n noCommit?: boolean;\n};\n\nexport interface Feature {\n id: string;\n prompt: string;\n enabledHint?: string;\n disabledHint?: string;\n}\n\nexport type FileChange = {\n filePath: string;\n oldContent?: string;\n newContent: string;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"","sourcesContent":["export type InstallerOptions = {\n /**\n * Whether to enable debug mode.\n */\n debug: boolean;\n\n /**\n * Whether to force install the SDK package to continue with the installation in case\n * any package manager checks are failing (e.g. peer dependency versions).\n *\n * Use with caution and only if you know what you're doing.\n *\n * Does not apply to all wizard flows (currently NPM only)\n */\n forceInstall: boolean;\n\n /**\n * The directory to run the wizard in.\n */\n installDir: string;\n\n /**\n * Whether to use local services (LLM gateway on localhost:8000)\n */\n local: boolean;\n\n /**\n * CI mode - non-interactive execution\n */\n ci: boolean;\n\n /**\n * Skip authentication check (for local development only)\n */\n skipAuth: boolean;\n\n /**\n * WorkOS API key (sk_xxx)\n */\n apiKey?: string;\n\n /**\n * WorkOS Client ID (client_xxx)\n */\n clientId?: string;\n\n /**\n * App homepage URL for WorkOS dashboard config.\n * Defaults to http://localhost:{detected_port}\n */\n homepageUrl?: string;\n\n /**\n * Redirect URI for WorkOS callback.\n * Defaults to framework-specific convention (e.g., /api/auth/callback)\n */\n redirectUri?: string;\n\n /**\n * [Experimental] Enable visual dashboard mode\n */\n dashboard?: boolean;\n\n /**\n * Event emitter for dashboard mode\n */\n emitter?: import('../lib/events.js').InstallerEventEmitter;\n\n /**\n * Pre-selected framework integration (bypasses detection)\n */\n integration?: import('../lib/constants.js').Integration;\n\n /**\n * Enable XState inspector - opens browser to visualize state machine live\n */\n inspect?: boolean;\n\n /**\n * Skip post-installation validation (includes build check)\n */\n noValidate?: boolean;\n\n /**\n * Skip post-install commit and PR workflow\n */\n noCommit?: boolean;\n\n /**\n * Direct mode - bypass llm-gateway and use user's own Anthropic API key.\n * Requires ANTHROPIC_API_KEY environment variable.\n */\n direct?: boolean;\n};\n\nexport interface Feature {\n id: string;\n prompt: string;\n enabledHint?: string;\n disabledHint?: string;\n}\n\nexport type FileChange = {\n filePath: string;\n oldContent?: string;\n newContent: string;\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/utils/urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,wBAAwB,CAAC;AAE5F,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,8BAA8B,CAAC;AAE9G,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC","sourcesContent":["import { getLlmGatewayUrl } from '../lib/settings.js';\n\n/**\n * Get URLs. Env vars override config defaults.\n */\n\nexport const getWorkOSApiUrl = () => process.env.WORKOS_API_URL || 'https://api.workos.com';\n\nexport const getWorkOSDashboardUrl = () => process.env.WORKOS_DASHBOARD_URL || 'https://dashboard.workos.com';\n\nexport const getLlmGatewayUrlFromHost = getLlmGatewayUrl;\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-unicorn-supported.js","sourceRoot":"","sources":["../../../src/utils/vendor/is-unicorn-supported.ts"],"names":[],"mappings":"AAAA,gIAAgI;AAEhI,cAAc;AAEd,kFAAkF;AAElF,mbAAmb;AAEnb,iIAAiI;AAEjI,+cAA+c;AAE/c,MAAM,UAAU,kBAAkB;IAChC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,yBAAyB;IAChE,CAAC;IAED,OAAO,CACL,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,mBAAmB;QACtD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,qBAAqB;QAC9D,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,cAAc,IAAI,mBAAmB;QAChE,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,kBAAkB;QAC/C,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,QAAQ;QACrC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,gBAAgB;QACrC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW;QAChC,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,oBAAoB,CACvD,CAAC;AACJ,CAAC","sourcesContent":["// Vendored from: https://github.com/sindresorhus/is-unicode-supported/blob/c80c691dde9e2fcfe3996810858c6672c8f35ad9/index.js#L3\n\n// MIT License\n\n// Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport function isUnicodeSupported() {\n if (process.platform !== 'win32') {\n return process.env.TERM !== 'linux'; // Linux console (kernel)\n }\n\n return (\n Boolean(process.env.CI) ||\n Boolean(process.env.WT_SESSION) || // Windows Terminal\n Boolean(process.env.TERMINUS_SUBLIME) || // Terminus (<0.2.27)\n process.env.ConEmuTask === '{cmd::Cmder}' || // ConEmu and cmder\n process.env.TERM_PROGRAM === 'Terminus-Sublime' ||\n process.env.TERM_PROGRAM === 'vscode' ||\n process.env.TERM === 'xterm-256color' ||\n process.env.TERM === 'alacritty' ||\n process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm'\n );\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import type { InstallerOptions } from '../utils/types.js';
2
+ export declare function runVanillaJsInstallerAgent(options: InstallerOptions): Promise<string>;
@@ -1,5 +1,5 @@
1
1
  import { enableDebugLogs } from '../utils/debug.js';
2
- import { runAgentWizard } from '../lib/agent-runner.js';
2
+ import { runAgentInstaller } from '../lib/agent-runner.js';
3
3
  import { Integration } from '../lib/constants.js';
4
4
  const VANILLA_JS_AGENT_CONFIG = {
5
5
  metadata: {
@@ -38,10 +38,10 @@ const VANILLA_JS_AGENT_CONFIG = {
38
38
  ],
39
39
  },
40
40
  };
41
- export async function runVanillaJsWizardAgent(options) {
41
+ export async function runVanillaJsInstallerAgent(options) {
42
42
  if (options.debug) {
43
43
  enableDebugLogs();
44
44
  }
45
- return runAgentWizard(VANILLA_JS_AGENT_CONFIG, options);
45
+ return runAgentInstaller(VANILLA_JS_AGENT_CONFIG, options);
46
46
  }
47
- //# sourceMappingURL=vanilla-js-wizard-agent.js.map
47
+ //# sourceMappingURL=vanilla-js-installer-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vanilla-js-installer-agent.js","sourceRoot":"","sources":["../../src/vanilla-js/vanilla-js-installer-agent.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,uBAAuB,GAAoB;IAC/C,QAAQ,EAAE;QACR,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,WAAW,CAAC,SAAS;QAClC,OAAO,EAAE,4DAA4D;QACrE,yBAAyB,EAAE,4DAA4D;QACvF,SAAS,EAAE,2BAA2B;KACvC;IAED,SAAS,EAAE;QACT,WAAW,EAAE,QAAQ;QACrB,kBAAkB,EAAE,oBAAoB;QACxC,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS;KAC5B;IAED,WAAW,EAAE;QACX,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,KAAK,EAAE,cAAc;QACrC,UAAU,EAAE,CAAC,MAAc,EAAE,QAAgB,EAAE,EAAE,CAAC,CAAC;YACjD,gBAAgB,EAAE,QAAQ,EAAE,wBAAwB;SACrD,CAAC;KACH;IAED,SAAS,EAAE;QACT,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;KACpB;IAED,OAAO,EAAE,EAAE;IAEX,EAAE,EAAE;QACF,cAAc,EAAE,qCAAqC;QACrD,eAAe,EAAE,GAAG,EAAE,CAAC;YACrB,oCAAoC;YACpC,qDAAqD;YACrD,mCAAmC;SACpC;QACD,iBAAiB,EAAE,GAAG,EAAE,CAAC;YACvB,sDAAsD;YACtD,yDAAyD;SAC1D;KACF;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,OAAyB;IACxE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC;IACpB,CAAC;IAED,OAAO,iBAAiB,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC","sourcesContent":["/* Vanilla JS wizard using Claude Agent SDK */\nimport type { InstallerOptions } from '../utils/types.js';\nimport type { FrameworkConfig } from '../lib/framework-config.js';\nimport { enableDebugLogs } from '../utils/debug.js';\nimport { runAgentInstaller } from '../lib/agent-runner.js';\nimport { Integration } from '../lib/constants.js';\n\nconst VANILLA_JS_AGENT_CONFIG: FrameworkConfig = {\n metadata: {\n name: 'Vanilla JavaScript',\n integration: Integration.vanillaJs,\n docsUrl: 'https://workos.com/docs/user-management/authkit/javascript',\n unsupportedVersionDocsUrl: 'https://workos.com/docs/user-management/authkit/javascript',\n skillName: 'workos-authkit-vanilla-js',\n },\n\n detection: {\n packageName: 'workos',\n packageDisplayName: 'Vanilla JavaScript',\n getVersion: () => undefined,\n },\n\n environment: {\n uploadToHosting: false,\n requiresApiKey: false, // Client-only\n getEnvVars: (apiKey: string, clientId: string) => ({\n WORKOS_CLIENT_ID: clientId, // Only client ID needed\n }),\n },\n\n analytics: {\n getTags: () => ({}),\n },\n\n prompts: {},\n\n ui: {\n successMessage: 'WorkOS AuthKit integration complete',\n getOutroChanges: () => [\n 'Created WorkOS AuthKit integration',\n 'Added authentication to your JavaScript application',\n 'Set up login/logout functionality',\n ],\n getOutroNextSteps: () => [\n 'Start your development server to test authentication',\n 'Visit the WorkOS Dashboard to manage users and settings',\n ],\n },\n};\n\nexport async function runVanillaJsInstallerAgent(options: InstallerOptions): Promise<string> {\n if (options.debug) {\n enableDebugLogs();\n }\n\n return runAgentInstaller(VANILLA_JS_AGENT_CONFIG, options);\n}\n"]}
package/package.json CHANGED
@@ -1,8 +1,12 @@
1
1
  {
2
2
  "name": "workos",
3
- "version": "0.2.1",
3
+ "version": "0.3.3",
4
4
  "type": "module",
5
5
  "description": "The Official Workos CLI",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/workos/cli"
9
+ },
6
10
  "keywords": [
7
11
  "workos",
8
12
  "authkit",
@@ -21,9 +25,7 @@
21
25
  "access": "public"
22
26
  },
23
27
  "files": [
24
- "dist/bin.*",
25
- "dist/src",
26
- "dist/cli.config.*",
28
+ "dist",
27
29
  ".claude-plugin",
28
30
  "skills",
29
31
  "package.json",
@@ -58,12 +60,14 @@
58
60
  "@types/react": "^19.2.9",
59
61
  "@types/semver": "^7.7.1",
60
62
  "@types/yargs": "^17.0.35",
61
- "@vitest/ui": "^4.0.17",
63
+ "@vitest/coverage-v8": "^4.0.18",
64
+ "@vitest/ui": "^4.0.18",
62
65
  "dotenv": "^17.2.3",
66
+ "p-limit": "^7.2.0",
63
67
  "prettier": "^3.8.0",
64
68
  "tsx": "^4.20.3",
65
69
  "typescript": "^5.9.3",
66
- "vitest": "^4.0.17"
70
+ "vitest": "^4.0.18"
67
71
  },
68
72
  "engines": {
69
73
  "node": ">=20.20"
@@ -72,7 +76,7 @@
72
76
  "license": "MIT",
73
77
  "scripts": {
74
78
  "clean": "rm -rf ./dist",
75
- "prebuild": "echo \"export const version = '$(node -p \"require('./package.json').version\")';\" > src/version.ts && pnpm clean",
79
+ "prebuild": "pnpm clean",
76
80
  "build:watch": "pnpm tsc -w",
77
81
  "build": "pnpm tsc",
78
82
  "postbuild": "chmod +x ./dist/bin.js && cp -r scripts/** dist",
@@ -82,6 +86,12 @@
82
86
  "dev": "pnpm build && pnpm link --global && pnpm build:watch",
83
87
  "test": "vitest run",
84
88
  "test:watch": "vitest",
85
- "typecheck": "tsc --noEmit"
89
+ "test:coverage": "vitest run --coverage",
90
+ "typecheck": "tsc --noEmit",
91
+ "eval": "tsx tests/evals/index.ts",
92
+ "eval:history": "tsx tests/evals/index.ts history",
93
+ "eval:compare": "tsx tests/evals/index.ts compare",
94
+ "eval:logs": "tsx tests/evals/index.ts logs",
95
+ "eval:show": "tsx tests/evals/index.ts show"
86
96
  }
87
97
  }
@@ -55,6 +55,46 @@ Next.js version?
55
55
 
56
56
  Middleware/proxy code: See README for `authkitMiddleware()` export pattern.
57
57
 
58
+ ### Existing Middleware (IMPORTANT)
59
+
60
+ If `middleware.ts` already exists with custom logic (rate limiting, logging, headers, etc.), use the **`authkit()` composable function** instead of `authkitMiddleware`.
61
+
62
+ **Pattern for composing with existing middleware:**
63
+
64
+ ```typescript
65
+ import { NextRequest, NextResponse } from 'next/server';
66
+ import { authkit, handleAuthkitHeaders } from '@workos-inc/authkit-nextjs';
67
+
68
+ export default async function middleware(request: NextRequest) {
69
+ // 1. Get auth session and headers from AuthKit
70
+ const { session, headers, authorizationUrl } = await authkit(request);
71
+ const { pathname } = request.nextUrl;
72
+
73
+ // 2. === YOUR EXISTING MIDDLEWARE LOGIC ===
74
+ // Rate limiting, logging, custom headers, etc.
75
+ const rateLimitResult = checkRateLimit(request);
76
+ if (!rateLimitResult.allowed) {
77
+ return new NextResponse('Too Many Requests', { status: 429 });
78
+ }
79
+
80
+ // 3. Protect routes - redirect to auth if needed
81
+ if (pathname.startsWith('/dashboard') && !session.user && authorizationUrl) {
82
+ return handleAuthkitHeaders(request, headers, { redirect: authorizationUrl });
83
+ }
84
+
85
+ // 4. Continue with AuthKit headers properly handled
86
+ return handleAuthkitHeaders(request, headers);
87
+ }
88
+ ```
89
+
90
+ **Key functions:**
91
+
92
+ - `authkit(request)` - Returns `{ session, headers, authorizationUrl }` for composition
93
+ - `handleAuthkitHeaders(request, headers, options?)` - Ensures AuthKit headers pass through correctly
94
+ - For rewrites, use `partitionAuthkitHeaders()` and `applyResponseHeaders()` (see README)
95
+
96
+ **Critical:** Always return via `handleAuthkitHeaders()` to ensure `withAuth()` works in pages.
97
+
58
98
  ## Step 5: Create Callback Route
59
99
 
60
100
  Parse `NEXT_PUBLIC_WORKOS_REDIRECT_URI` to determine route path:
@@ -78,33 +118,58 @@ export const GET = handleAuth();
78
118
 
79
119
  Check README for exact usage. If build fails with "cookies outside request scope", the handler is likely missing async/await.
80
120
 
81
- ## Step 6: Provider Setup
121
+ ## Step 6: Provider Setup (REQUIRED)
122
+
123
+ **CRITICAL:** You MUST wrap the app in `AuthKitProvider` in `app/layout.tsx`.
124
+
125
+ This is required for:
126
+
127
+ - Client-side auth state via `useAuth()` hook
128
+ - Consistent auth UX across client/server boundaries
129
+ - Proper migration from Auth0 (which uses client-side auth)
130
+
131
+ ```tsx
132
+ // app/layout.tsx
133
+ import { AuthKitProvider } from '@workos-inc/authkit-nextjs';
134
+
135
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
136
+ return (
137
+ <html lang="en">
138
+ <body>
139
+ <AuthKitProvider>{children}</AuthKitProvider>
140
+ </body>
141
+ </html>
142
+ );
143
+ }
144
+ ```
145
+
146
+ Check README for exact import path - it may be a subpath export like `@workos-inc/authkit-nextjs/components`.
82
147
 
83
- Wrap app in `AuthKitProvider` in `app/layout.tsx`. See README for import path.
148
+ **Do NOT skip this step** even if using server-side auth patterns elsewhere.
84
149
 
85
150
  ## Step 7: UI Integration
86
151
 
87
152
  Add auth UI to `app/page.tsx` using SDK functions. See README for `getUser`, `getSignInUrl`, `signOut` usage.
88
153
 
89
- ## Verification Checklist
154
+ ## Verification Checklist (ALL MUST PASS)
90
155
 
91
- Run these commands to confirm integration:
156
+ Run these commands to confirm integration. **Do not mark complete until all pass:**
92
157
 
93
158
  ```bash
94
- # Check middleware/proxy exists (one should match)
159
+ # 1. Check middleware/proxy exists (one should match)
95
160
  ls proxy.ts middleware.ts src/proxy.ts src/middleware.ts 2>/dev/null
96
161
 
97
- # Check provider is wrapped
98
- grep -l "AuthKitProvider" app/layout.tsx
162
+ # 2. CRITICAL: Check AuthKitProvider is in layout (REQUIRED)
163
+ grep "AuthKitProvider" app/layout.tsx || echo "FAIL: AuthKitProvider missing from layout"
99
164
 
100
- # Check callback route exists
165
+ # 3. Check callback route exists
101
166
  find app -name "route.ts" -path "*/callback/*"
102
167
 
103
- # Build succeeds
168
+ # 4. Build succeeds
104
169
  npm run build
105
170
  ```
106
171
 
107
- All checks must pass before marking complete.
172
+ **If check #2 fails:** Go back to Step 6 and add AuthKitProvider. This is not optional.
108
173
 
109
174
  ## Error Recovery
110
175