workos 0.19.0 → 0.20.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 (681) hide show
  1. package/README.md +4 -646
  2. package/bin/workos.js +44 -0
  3. package/package.json +18 -99
  4. package/LICENSE +0 -47
  5. package/dist/bin.d.ts +0 -2
  6. package/dist/bin.js +0 -1790
  7. package/dist/bin.js.map +0 -1
  8. package/dist/cli.config.d.ts +0 -88
  9. package/dist/cli.config.js +0 -110
  10. package/dist/cli.config.js.map +0 -1
  11. package/dist/commands/api/catalog.d.ts +0 -23
  12. package/dist/commands/api/catalog.js +0 -97
  13. package/dist/commands/api/catalog.js.map +0 -1
  14. package/dist/commands/api/format.d.ts +0 -5
  15. package/dist/commands/api/format.js +0 -46
  16. package/dist/commands/api/format.js.map +0 -1
  17. package/dist/commands/api/index.d.ts +0 -15
  18. package/dist/commands/api/index.js +0 -213
  19. package/dist/commands/api/index.js.map +0 -1
  20. package/dist/commands/api/interactive.d.ts +0 -3
  21. package/dist/commands/api/interactive.js +0 -133
  22. package/dist/commands/api/interactive.js.map +0 -1
  23. package/dist/commands/api/request.d.ts +0 -14
  24. package/dist/commands/api/request.js +0 -38
  25. package/dist/commands/api/request.js.map +0 -1
  26. package/dist/commands/api-key-mgmt.d.ts +0 -16
  27. package/dist/commands/api-key-mgmt.js +0 -96
  28. package/dist/commands/api-key-mgmt.js.map +0 -1
  29. package/dist/commands/audit-log.d.ts +0 -26
  30. package/dist/commands/audit-log.js +0 -155
  31. package/dist/commands/audit-log.js.map +0 -1
  32. package/dist/commands/auth-status.d.ts +0 -1
  33. package/dist/commands/auth-status.js +0 -57
  34. package/dist/commands/auth-status.js.map +0 -1
  35. package/dist/commands/claim.d.ts +0 -11
  36. package/dist/commands/claim.js +0 -143
  37. package/dist/commands/claim.js.map +0 -1
  38. package/dist/commands/config.d.ts +0 -3
  39. package/dist/commands/config.js +0 -54
  40. package/dist/commands/config.js.map +0 -1
  41. package/dist/commands/connection.d.ts +0 -13
  42. package/dist/commands/connection.js +0 -96
  43. package/dist/commands/connection.js.map +0 -1
  44. package/dist/commands/debug-sso.d.ts +0 -1
  45. package/dist/commands/debug-sso.js +0 -78
  46. package/dist/commands/debug-sso.js.map +0 -1
  47. package/dist/commands/debug-sync.d.ts +0 -1
  48. package/dist/commands/debug-sync.js +0 -102
  49. package/dist/commands/debug-sync.js.map +0 -1
  50. package/dist/commands/debug.d.ts +0 -28
  51. package/dist/commands/debug.js +0 -406
  52. package/dist/commands/debug.js.map +0 -1
  53. package/dist/commands/dev.d.ts +0 -22
  54. package/dist/commands/dev.js +0 -145
  55. package/dist/commands/dev.js.map +0 -1
  56. package/dist/commands/directory.d.ts +0 -27
  57. package/dist/commands/directory.js +0 -176
  58. package/dist/commands/directory.js.map +0 -1
  59. package/dist/commands/doctor.d.ts +0 -12
  60. package/dist/commands/doctor.js +0 -41
  61. package/dist/commands/doctor.js.map +0 -1
  62. package/dist/commands/emulate.d.ts +0 -7
  63. package/dist/commands/emulate.js +0 -69
  64. package/dist/commands/emulate.js.map +0 -1
  65. package/dist/commands/env.d.ts +0 -19
  66. package/dist/commands/env.js +0 -303
  67. package/dist/commands/env.js.map +0 -1
  68. package/dist/commands/event.d.ts +0 -9
  69. package/dist/commands/event.js +0 -43
  70. package/dist/commands/event.js.map +0 -1
  71. package/dist/commands/feature-flag.d.ts +0 -12
  72. package/dist/commands/feature-flag.js +0 -96
  73. package/dist/commands/feature-flag.js.map +0 -1
  74. package/dist/commands/install-skill.d.ts +0 -85
  75. package/dist/commands/install-skill.js +0 -332
  76. package/dist/commands/install-skill.js.map +0 -1
  77. package/dist/commands/install.d.ts +0 -6
  78. package/dist/commands/install.js +0 -51
  79. package/dist/commands/install.js.map +0 -1
  80. package/dist/commands/invitation.d.ts +0 -19
  81. package/dist/commands/invitation.js +0 -94
  82. package/dist/commands/invitation.js.map +0 -1
  83. package/dist/commands/list-skills.d.ts +0 -4
  84. package/dist/commands/list-skills.js +0 -52
  85. package/dist/commands/list-skills.js.map +0 -1
  86. package/dist/commands/login.d.ts +0 -32
  87. package/dist/commands/login.js +0 -239
  88. package/dist/commands/login.js.map +0 -1
  89. package/dist/commands/logout.d.ts +0 -1
  90. package/dist/commands/logout.js +0 -17
  91. package/dist/commands/logout.js.map +0 -1
  92. package/dist/commands/mcp.d.ts +0 -14
  93. package/dist/commands/mcp.js +0 -99
  94. package/dist/commands/mcp.js.map +0 -1
  95. package/dist/commands/membership.d.ts +0 -20
  96. package/dist/commands/membership.js +0 -129
  97. package/dist/commands/membership.js.map +0 -1
  98. package/dist/commands/migrations.d.ts +0 -2
  99. package/dist/commands/migrations.js +0 -50
  100. package/dist/commands/migrations.js.map +0 -1
  101. package/dist/commands/onboard-user.d.ts +0 -7
  102. package/dist/commands/onboard-user.js +0 -61
  103. package/dist/commands/onboard-user.js.map +0 -1
  104. package/dist/commands/org-domain.d.ts +0 -4
  105. package/dist/commands/org-domain.js +0 -45
  106. package/dist/commands/org-domain.js.map +0 -1
  107. package/dist/commands/organization.d.ts +0 -14
  108. package/dist/commands/organization.js +0 -103
  109. package/dist/commands/organization.js.map +0 -1
  110. package/dist/commands/permission.d.ts +0 -20
  111. package/dist/commands/permission.js +0 -93
  112. package/dist/commands/permission.js.map +0 -1
  113. package/dist/commands/portal.d.ts +0 -7
  114. package/dist/commands/portal.js +0 -26
  115. package/dist/commands/portal.js.map +0 -1
  116. package/dist/commands/role.d.ts +0 -17
  117. package/dist/commands/role.js +0 -122
  118. package/dist/commands/role.js.map +0 -1
  119. package/dist/commands/seed.d.ts +0 -6
  120. package/dist/commands/seed.js +0 -298
  121. package/dist/commands/seed.js.map +0 -1
  122. package/dist/commands/session.d.ts +0 -8
  123. package/dist/commands/session.js +0 -63
  124. package/dist/commands/session.js.map +0 -1
  125. package/dist/commands/setup-org.d.ts +0 -6
  126. package/dist/commands/setup-org.js +0 -99
  127. package/dist/commands/setup-org.js.map +0 -1
  128. package/dist/commands/setup.d.ts +0 -50
  129. package/dist/commands/setup.js +0 -237
  130. package/dist/commands/setup.js.map +0 -1
  131. package/dist/commands/telemetry.d.ts +0 -3
  132. package/dist/commands/telemetry.js +0 -88
  133. package/dist/commands/telemetry.js.map +0 -1
  134. package/dist/commands/uninstall-skill.d.ts +0 -11
  135. package/dist/commands/uninstall-skill.js +0 -117
  136. package/dist/commands/uninstall-skill.js.map +0 -1
  137. package/dist/commands/user.d.ts +0 -19
  138. package/dist/commands/user.js +0 -92
  139. package/dist/commands/user.js.map +0 -1
  140. package/dist/commands/vault-run.d.ts +0 -13
  141. package/dist/commands/vault-run.js +0 -195
  142. package/dist/commands/vault-run.js.map +0 -1
  143. package/dist/commands/vault.d.ts +0 -25
  144. package/dist/commands/vault.js +0 -153
  145. package/dist/commands/vault.js.map +0 -1
  146. package/dist/commands/verify-login.d.ts +0 -25
  147. package/dist/commands/verify-login.js +0 -158
  148. package/dist/commands/verify-login.js.map +0 -1
  149. package/dist/commands/webhook.d.ts +0 -3
  150. package/dist/commands/webhook.js +0 -92
  151. package/dist/commands/webhook.js.map +0 -1
  152. package/dist/craft-pre-release.sh +0 -10
  153. package/dist/dashboard/components/AnimatedLogo.d.ts +0 -8
  154. package/dist/dashboard/components/AnimatedLogo.js +0 -16
  155. package/dist/dashboard/components/AnimatedLogo.js.map +0 -1
  156. package/dist/dashboard/components/CompletionView.d.ts +0 -13
  157. package/dist/dashboard/components/CompletionView.js +0 -25
  158. package/dist/dashboard/components/CompletionView.js.map +0 -1
  159. package/dist/dashboard/components/ConfirmPrompt.d.ts +0 -9
  160. package/dist/dashboard/components/ConfirmPrompt.js +0 -25
  161. package/dist/dashboard/components/ConfirmPrompt.js.map +0 -1
  162. package/dist/dashboard/components/CredentialsForm.d.ts +0 -10
  163. package/dist/dashboard/components/CredentialsForm.js +0 -47
  164. package/dist/dashboard/components/CredentialsForm.js.map +0 -1
  165. package/dist/dashboard/components/Dashboard.d.ts +0 -3
  166. package/dist/dashboard/components/Dashboard.js +0 -100
  167. package/dist/dashboard/components/Dashboard.js.map +0 -1
  168. package/dist/dashboard/components/DashboardLayout.d.ts +0 -24
  169. package/dist/dashboard/components/DashboardLayout.js +0 -25
  170. package/dist/dashboard/components/DashboardLayout.js.map +0 -1
  171. package/dist/dashboard/components/DiffPanel.d.ts +0 -9
  172. package/dist/dashboard/components/DiffPanel.js +0 -136
  173. package/dist/dashboard/components/DiffPanel.js.map +0 -1
  174. package/dist/dashboard/components/InlinePrompt.d.ts +0 -8
  175. package/dist/dashboard/components/InlinePrompt.js +0 -19
  176. package/dist/dashboard/components/InlinePrompt.js.map +0 -1
  177. package/dist/dashboard/components/OutputPanel.d.ts +0 -10
  178. package/dist/dashboard/components/OutputPanel.js +0 -100
  179. package/dist/dashboard/components/OutputPanel.js.map +0 -1
  180. package/dist/dashboard/components/Panel.d.ts +0 -12
  181. package/dist/dashboard/components/Panel.js +0 -6
  182. package/dist/dashboard/components/Panel.js.map +0 -1
  183. package/dist/dashboard/components/TextInput.d.ts +0 -13
  184. package/dist/dashboard/components/TextInput.js +0 -57
  185. package/dist/dashboard/components/TextInput.js.map +0 -1
  186. package/dist/dashboard/components/WelcomeArt.d.ts +0 -2
  187. package/dist/dashboard/components/WelcomeArt.js +0 -9
  188. package/dist/dashboard/components/WelcomeArt.js.map +0 -1
  189. package/dist/dashboard/hooks/useAnimation.d.ts +0 -7
  190. package/dist/dashboard/hooks/useAnimation.js +0 -24
  191. package/dist/dashboard/hooks/useAnimation.js.map +0 -1
  192. package/dist/dashboard/hooks/useKeyboard.d.ts +0 -8
  193. package/dist/dashboard/hooks/useKeyboard.js +0 -18
  194. package/dist/dashboard/hooks/useKeyboard.js.map +0 -1
  195. package/dist/dashboard/hooks/useTerminalSize.d.ts +0 -8
  196. package/dist/dashboard/hooks/useTerminalSize.js +0 -23
  197. package/dist/dashboard/hooks/useTerminalSize.js.map +0 -1
  198. package/dist/dashboard/index.d.ts +0 -6
  199. package/dist/dashboard/index.js +0 -36
  200. package/dist/dashboard/index.js.map +0 -1
  201. package/dist/dashboard/lib/diff-utils.d.ts +0 -21
  202. package/dist/dashboard/lib/diff-utils.js +0 -271
  203. package/dist/dashboard/lib/diff-utils.js.map +0 -1
  204. package/dist/dashboard/lib/logo-frames.d.ts +0 -20
  205. package/dist/dashboard/lib/logo-frames.js +0 -109
  206. package/dist/dashboard/lib/logo-frames.js.map +0 -1
  207. package/dist/dashboard/lib/welcome-art.d.ts +0 -1
  208. package/dist/dashboard/lib/welcome-art.js +0 -5
  209. package/dist/dashboard/lib/welcome-art.js.map +0 -1
  210. package/dist/dashboard/types.d.ts +0 -5
  211. package/dist/dashboard/types.js +0 -2
  212. package/dist/dashboard/types.js.map +0 -1
  213. package/dist/doctor/agent-prompt.d.ts +0 -10
  214. package/dist/doctor/agent-prompt.js +0 -190
  215. package/dist/doctor/agent-prompt.js.map +0 -1
  216. package/dist/doctor/checks/ai-analysis.d.ts +0 -9
  217. package/dist/doctor/checks/ai-analysis.js +0 -124
  218. package/dist/doctor/checks/ai-analysis.js.map +0 -1
  219. package/dist/doctor/checks/auth-patterns.d.ts +0 -2
  220. package/dist/doctor/checks/auth-patterns.js +0 -569
  221. package/dist/doctor/checks/auth-patterns.js.map +0 -1
  222. package/dist/doctor/checks/connectivity.d.ts +0 -2
  223. package/dist/doctor/checks/connectivity.js +0 -35
  224. package/dist/doctor/checks/connectivity.js.map +0 -1
  225. package/dist/doctor/checks/dashboard.d.ts +0 -3
  226. package/dist/doctor/checks/dashboard.js +0 -123
  227. package/dist/doctor/checks/dashboard.js.map +0 -1
  228. package/dist/doctor/checks/environment.d.ts +0 -2
  229. package/dist/doctor/checks/environment.js +0 -86
  230. package/dist/doctor/checks/environment.js.map +0 -1
  231. package/dist/doctor/checks/framework.d.ts +0 -2
  232. package/dist/doctor/checks/framework.js +0 -94
  233. package/dist/doctor/checks/framework.js.map +0 -1
  234. package/dist/doctor/checks/host-execution.d.ts +0 -2
  235. package/dist/doctor/checks/host-execution.js +0 -21
  236. package/dist/doctor/checks/host-execution.js.map +0 -1
  237. package/dist/doctor/checks/language.d.ts +0 -6
  238. package/dist/doctor/checks/language.js +0 -104
  239. package/dist/doctor/checks/language.js.map +0 -1
  240. package/dist/doctor/checks/mcp.d.ts +0 -15
  241. package/dist/doctor/checks/mcp.js +0 -34
  242. package/dist/doctor/checks/mcp.js.map +0 -1
  243. package/dist/doctor/checks/runtime.d.ts +0 -2
  244. package/dist/doctor/checks/runtime.js +0 -20
  245. package/dist/doctor/checks/runtime.js.map +0 -1
  246. package/dist/doctor/checks/sdk.d.ts +0 -2
  247. package/dist/doctor/checks/sdk.js +0 -192
  248. package/dist/doctor/checks/sdk.js.map +0 -1
  249. package/dist/doctor/checks/skills.d.ts +0 -9
  250. package/dist/doctor/checks/skills.js +0 -84
  251. package/dist/doctor/checks/skills.js.map +0 -1
  252. package/dist/doctor/clipboard.d.ts +0 -1
  253. package/dist/doctor/clipboard.js +0 -43
  254. package/dist/doctor/clipboard.js.map +0 -1
  255. package/dist/doctor/index.d.ts +0 -26
  256. package/dist/doctor/index.js +0 -182
  257. package/dist/doctor/index.js.map +0 -1
  258. package/dist/doctor/issues.d.ts +0 -63
  259. package/dist/doctor/issues.js +0 -199
  260. package/dist/doctor/issues.js.map +0 -1
  261. package/dist/doctor/json-output.d.ts +0 -2
  262. package/dist/doctor/json-output.js +0 -4
  263. package/dist/doctor/json-output.js.map +0 -1
  264. package/dist/doctor/output.d.ts +0 -7
  265. package/dist/doctor/output.js +0 -289
  266. package/dist/doctor/output.js.map +0 -1
  267. package/dist/doctor/types.d.ts +0 -203
  268. package/dist/doctor/types.js +0 -2
  269. package/dist/doctor/types.js.map +0 -1
  270. package/dist/integrations/dotnet/index.d.ts +0 -8
  271. package/dist/integrations/dotnet/index.js +0 -170
  272. package/dist/integrations/dotnet/index.js.map +0 -1
  273. package/dist/integrations/elixir/index.d.ts +0 -8
  274. package/dist/integrations/elixir/index.js +0 -146
  275. package/dist/integrations/elixir/index.js.map +0 -1
  276. package/dist/integrations/go/index.d.ts +0 -11
  277. package/dist/integrations/go/index.js +0 -212
  278. package/dist/integrations/go/index.js.map +0 -1
  279. package/dist/integrations/kotlin/index.d.ts +0 -4
  280. package/dist/integrations/kotlin/index.js +0 -78
  281. package/dist/integrations/kotlin/index.js.map +0 -1
  282. package/dist/integrations/nextjs/index.d.ts +0 -4
  283. package/dist/integrations/nextjs/index.js +0 -93
  284. package/dist/integrations/nextjs/index.js.map +0 -1
  285. package/dist/integrations/nextjs/utils.d.ts +0 -8
  286. package/dist/integrations/nextjs/utils.js +0 -68
  287. package/dist/integrations/nextjs/utils.js.map +0 -1
  288. package/dist/integrations/node/index.d.ts +0 -4
  289. package/dist/integrations/node/index.js +0 -52
  290. package/dist/integrations/node/index.js.map +0 -1
  291. package/dist/integrations/php/index.d.ts +0 -4
  292. package/dist/integrations/php/index.js +0 -51
  293. package/dist/integrations/php/index.js.map +0 -1
  294. package/dist/integrations/php-laravel/index.d.ts +0 -4
  295. package/dist/integrations/php-laravel/index.js +0 -51
  296. package/dist/integrations/php-laravel/index.js.map +0 -1
  297. package/dist/integrations/python/index.d.ts +0 -9
  298. package/dist/integrations/python/index.js +0 -249
  299. package/dist/integrations/python/index.js.map +0 -1
  300. package/dist/integrations/react/index.d.ts +0 -4
  301. package/dist/integrations/react/index.js +0 -49
  302. package/dist/integrations/react/index.js.map +0 -1
  303. package/dist/integrations/react-router/index.d.ts +0 -4
  304. package/dist/integrations/react-router/index.js +0 -94
  305. package/dist/integrations/react-router/index.js.map +0 -1
  306. package/dist/integrations/react-router/utils.d.ts +0 -10
  307. package/dist/integrations/react-router/utils.js +0 -162
  308. package/dist/integrations/react-router/utils.js.map +0 -1
  309. package/dist/integrations/ruby/index.d.ts +0 -8
  310. package/dist/integrations/ruby/index.js +0 -137
  311. package/dist/integrations/ruby/index.js.map +0 -1
  312. package/dist/integrations/sveltekit/index.d.ts +0 -4
  313. package/dist/integrations/sveltekit/index.js +0 -50
  314. package/dist/integrations/sveltekit/index.js.map +0 -1
  315. package/dist/integrations/tanstack-start/index.d.ts +0 -4
  316. package/dist/integrations/tanstack-start/index.js +0 -51
  317. package/dist/integrations/tanstack-start/index.js.map +0 -1
  318. package/dist/integrations/vanilla-js/index.d.ts +0 -4
  319. package/dist/integrations/vanilla-js/index.js +0 -49
  320. package/dist/integrations/vanilla-js/index.js.map +0 -1
  321. package/dist/lib/__test-helpers__/mock-unclaimed-env-api-error.d.ts +0 -7
  322. package/dist/lib/__test-helpers__/mock-unclaimed-env-api-error.js +0 -12
  323. package/dist/lib/__test-helpers__/mock-unclaimed-env-api-error.js.map +0 -1
  324. package/dist/lib/adapters/cli-adapter.d.ts +0 -113
  325. package/dist/lib/adapters/cli-adapter.js +0 -641
  326. package/dist/lib/adapters/cli-adapter.js.map +0 -1
  327. package/dist/lib/adapters/dashboard-adapter.d.ts +0 -34
  328. package/dist/lib/adapters/dashboard-adapter.js +0 -121
  329. package/dist/lib/adapters/dashboard-adapter.js.map +0 -1
  330. package/dist/lib/adapters/headless-adapter.d.ts +0 -80
  331. package/dist/lib/adapters/headless-adapter.js +0 -347
  332. package/dist/lib/adapters/headless-adapter.js.map +0 -1
  333. package/dist/lib/adapters/index.d.ts +0 -4
  334. package/dist/lib/adapters/index.js +0 -4
  335. package/dist/lib/adapters/index.js.map +0 -1
  336. package/dist/lib/adapters/types.d.ts +0 -41
  337. package/dist/lib/adapters/types.js +0 -2
  338. package/dist/lib/adapters/types.js.map +0 -1
  339. package/dist/lib/agent-interface.d.ts +0 -84
  340. package/dist/lib/agent-interface.js +0 -840
  341. package/dist/lib/agent-interface.js.map +0 -1
  342. package/dist/lib/agent-runner.d.ts +0 -9
  343. package/dist/lib/agent-runner.js +0 -261
  344. package/dist/lib/agent-runner.js.map +0 -1
  345. package/dist/lib/ai-content.d.ts +0 -14
  346. package/dist/lib/ai-content.js +0 -131
  347. package/dist/lib/ai-content.js.map +0 -1
  348. package/dist/lib/api-error-handler.d.ts +0 -18
  349. package/dist/lib/api-error-handler.js +0 -76
  350. package/dist/lib/api-error-handler.js.map +0 -1
  351. package/dist/lib/api-key.d.ts +0 -14
  352. package/dist/lib/api-key.js +0 -37
  353. package/dist/lib/api-key.js.map +0 -1
  354. package/dist/lib/api.d.ts +0 -25
  355. package/dist/lib/api.js +0 -120
  356. package/dist/lib/api.js.map +0 -1
  357. package/dist/lib/background-refresh.d.ts +0 -29
  358. package/dist/lib/background-refresh.js +0 -95
  359. package/dist/lib/background-refresh.js.map +0 -1
  360. package/dist/lib/command-aliases.d.ts +0 -8
  361. package/dist/lib/command-aliases.js +0 -12
  362. package/dist/lib/command-aliases.js.map +0 -1
  363. package/dist/lib/completion-data.d.ts +0 -33
  364. package/dist/lib/completion-data.js +0 -33
  365. package/dist/lib/completion-data.js.map +0 -1
  366. package/dist/lib/config-store.d.ts +0 -63
  367. package/dist/lib/config-store.js +0 -293
  368. package/dist/lib/config-store.js.map +0 -1
  369. package/dist/lib/config.d.ts +0 -34
  370. package/dist/lib/config.js +0 -37
  371. package/dist/lib/config.js.map +0 -1
  372. package/dist/lib/constants.d.ts +0 -51
  373. package/dist/lib/constants.js +0 -50
  374. package/dist/lib/constants.js.map +0 -1
  375. package/dist/lib/credential-discovery.d.ts +0 -42
  376. package/dist/lib/credential-discovery.js +0 -100
  377. package/dist/lib/credential-discovery.js.map +0 -1
  378. package/dist/lib/credential-proxy.d.ts +0 -45
  379. package/dist/lib/credential-proxy.js +0 -364
  380. package/dist/lib/credential-proxy.js.map +0 -1
  381. package/dist/lib/credential-store.d.ts +0 -32
  382. package/dist/lib/credential-store.js +0 -236
  383. package/dist/lib/credential-store.js.map +0 -1
  384. package/dist/lib/credentials.d.ts +0 -13
  385. package/dist/lib/credentials.js +0 -34
  386. package/dist/lib/credentials.js.map +0 -1
  387. package/dist/lib/dev-command.d.ts +0 -26
  388. package/dist/lib/dev-command.js +0 -129
  389. package/dist/lib/dev-command.js.map +0 -1
  390. package/dist/lib/device-auth.d.ts +0 -48
  391. package/dist/lib/device-auth.js +0 -176
  392. package/dist/lib/device-auth.js.map +0 -1
  393. package/dist/lib/device-id.d.ts +0 -25
  394. package/dist/lib/device-id.js +0 -102
  395. package/dist/lib/device-id.js.map +0 -1
  396. package/dist/lib/ensure-auth.d.ts +0 -12
  397. package/dist/lib/ensure-auth.js +0 -111
  398. package/dist/lib/ensure-auth.js.map +0 -1
  399. package/dist/lib/env-writer.d.ts +0 -25
  400. package/dist/lib/env-writer.js +0 -90
  401. package/dist/lib/env-writer.js.map +0 -1
  402. package/dist/lib/events.d.ts +0 -248
  403. package/dist/lib/events.js +0 -19
  404. package/dist/lib/events.js.map +0 -1
  405. package/dist/lib/framework-config.d.ts +0 -133
  406. package/dist/lib/framework-config.js +0 -11
  407. package/dist/lib/framework-config.js.map +0 -1
  408. package/dist/lib/helper-functions.d.ts +0 -1
  409. package/dist/lib/helper-functions.js +0 -2
  410. package/dist/lib/helper-functions.js.map +0 -1
  411. package/dist/lib/host-probe.d.ts +0 -28
  412. package/dist/lib/host-probe.js +0 -154
  413. package/dist/lib/host-probe.js.map +0 -1
  414. package/dist/lib/installer-core.d.ts +0 -569
  415. package/dist/lib/installer-core.js +0 -1134
  416. package/dist/lib/installer-core.js.map +0 -1
  417. package/dist/lib/installer-core.types.d.ts +0 -162
  418. package/dist/lib/installer-core.types.js +0 -2
  419. package/dist/lib/installer-core.types.js.map +0 -1
  420. package/dist/lib/mcp-clients.d.ts +0 -45
  421. package/dist/lib/mcp-clients.js +0 -297
  422. package/dist/lib/mcp-clients.js.map +0 -1
  423. package/dist/lib/port-detection.d.ts +0 -7
  424. package/dist/lib/port-detection.js +0 -244
  425. package/dist/lib/port-detection.js.map +0 -1
  426. package/dist/lib/post-install.d.ts +0 -8
  427. package/dist/lib/post-install.js +0 -51
  428. package/dist/lib/post-install.js.map +0 -1
  429. package/dist/lib/preferences.d.ts +0 -143
  430. package/dist/lib/preferences.js +0 -227
  431. package/dist/lib/preferences.js.map +0 -1
  432. package/dist/lib/progress-tracker.d.ts +0 -22
  433. package/dist/lib/progress-tracker.js +0 -47
  434. package/dist/lib/progress-tracker.js.map +0 -1
  435. package/dist/lib/registry.d.ts +0 -42
  436. package/dist/lib/registry.js +0 -96
  437. package/dist/lib/registry.js.map +0 -1
  438. package/dist/lib/resolve-install-credentials.d.ts +0 -11
  439. package/dist/lib/resolve-install-credentials.js +0 -53
  440. package/dist/lib/resolve-install-credentials.js.map +0 -1
  441. package/dist/lib/run-with-core.d.ts +0 -7
  442. package/dist/lib/run-with-core.js +0 -559
  443. package/dist/lib/run-with-core.js.map +0 -1
  444. package/dist/lib/safe-tools.d.ts +0 -2
  445. package/dist/lib/safe-tools.js +0 -212
  446. package/dist/lib/safe-tools.js.map +0 -1
  447. package/dist/lib/scaffold/index.d.ts +0 -1
  448. package/dist/lib/scaffold/index.js +0 -2
  449. package/dist/lib/scaffold/index.js.map +0 -1
  450. package/dist/lib/scaffold/scaffold.d.ts +0 -66
  451. package/dist/lib/scaffold/scaffold.js +0 -156
  452. package/dist/lib/scaffold/scaffold.js.map +0 -1
  453. package/dist/lib/settings.d.ts +0 -60
  454. package/dist/lib/settings.js +0 -31
  455. package/dist/lib/settings.js.map +0 -1
  456. package/dist/lib/staging-api.d.ts +0 -22
  457. package/dist/lib/staging-api.js +0 -74
  458. package/dist/lib/staging-api.js.map +0 -1
  459. package/dist/lib/startup-notice-gate.d.ts +0 -21
  460. package/dist/lib/startup-notice-gate.js +0 -29
  461. package/dist/lib/startup-notice-gate.js.map +0 -1
  462. package/dist/lib/telemetry-notice.d.ts +0 -25
  463. package/dist/lib/telemetry-notice.js +0 -58
  464. package/dist/lib/telemetry-notice.js.map +0 -1
  465. package/dist/lib/token-refresh-client.d.ts +0 -23
  466. package/dist/lib/token-refresh-client.js +0 -89
  467. package/dist/lib/token-refresh-client.js.map +0 -1
  468. package/dist/lib/token-refresh.d.ts +0 -12
  469. package/dist/lib/token-refresh.js +0 -27
  470. package/dist/lib/token-refresh.js.map +0 -1
  471. package/dist/lib/unclaimed-env-api.d.ts +0 -42
  472. package/dist/lib/unclaimed-env-api.js +0 -139
  473. package/dist/lib/unclaimed-env-api.js.map +0 -1
  474. package/dist/lib/unclaimed-env-provision.d.ts +0 -24
  475. package/dist/lib/unclaimed-env-provision.js +0 -80
  476. package/dist/lib/unclaimed-env-provision.js.map +0 -1
  477. package/dist/lib/unclaimed-warning.d.ts +0 -15
  478. package/dist/lib/unclaimed-warning.js +0 -78
  479. package/dist/lib/unclaimed-warning.js.map +0 -1
  480. package/dist/lib/validation/build-validator.d.ts +0 -21
  481. package/dist/lib/validation/build-validator.js +0 -153
  482. package/dist/lib/validation/build-validator.js.map +0 -1
  483. package/dist/lib/validation/index.d.ts +0 -4
  484. package/dist/lib/validation/index.js +0 -4
  485. package/dist/lib/validation/index.js.map +0 -1
  486. package/dist/lib/validation/quick-checks.d.ts +0 -19
  487. package/dist/lib/validation/quick-checks.js +0 -192
  488. package/dist/lib/validation/quick-checks.js.map +0 -1
  489. package/dist/lib/validation/security-checks.d.ts +0 -35
  490. package/dist/lib/validation/security-checks.js +0 -106
  491. package/dist/lib/validation/security-checks.js.map +0 -1
  492. package/dist/lib/validation/types.d.ts +0 -56
  493. package/dist/lib/validation/types.js +0 -2
  494. package/dist/lib/validation/types.js.map +0 -1
  495. package/dist/lib/validation/validator.d.ts +0 -13
  496. package/dist/lib/validation/validator.js +0 -711
  497. package/dist/lib/validation/validator.js.map +0 -1
  498. package/dist/lib/version-check.d.ts +0 -6
  499. package/dist/lib/version-check.js +0 -46
  500. package/dist/lib/version-check.js.map +0 -1
  501. package/dist/lib/workos-api.d.ts +0 -30
  502. package/dist/lib/workos-api.js +0 -69
  503. package/dist/lib/workos-api.js.map +0 -1
  504. package/dist/lib/workos-client.d.ts +0 -58
  505. package/dist/lib/workos-client.js +0 -140
  506. package/dist/lib/workos-client.js.map +0 -1
  507. package/dist/lib/workos-management.d.ts +0 -32
  508. package/dist/lib/workos-management.js +0 -149
  509. package/dist/lib/workos-management.js.map +0 -1
  510. package/dist/nextjs/nextjs-installer-agent.d.ts +0 -5
  511. package/dist/nextjs/nextjs-installer-agent.js +0 -6
  512. package/dist/nextjs/nextjs-installer-agent.js.map +0 -1
  513. package/dist/nextjs/utils.d.ts +0 -4
  514. package/dist/nextjs/utils.js +0 -5
  515. package/dist/nextjs/utils.js.map +0 -1
  516. package/dist/react/react-installer-agent.d.ts +0 -4
  517. package/dist/react/react-installer-agent.js +0 -5
  518. package/dist/react/react-installer-agent.js.map +0 -1
  519. package/dist/react-router/react-router-installer-agent.d.ts +0 -4
  520. package/dist/react-router/react-router-installer-agent.js +0 -5
  521. package/dist/react-router/react-router-installer-agent.js.map +0 -1
  522. package/dist/react-router/utils.d.ts +0 -4
  523. package/dist/react-router/utils.js +0 -5
  524. package/dist/react-router/utils.js.map +0 -1
  525. package/dist/run.d.ts +0 -33
  526. package/dist/run.js +0 -58
  527. package/dist/run.js.map +0 -1
  528. package/dist/smoke-test.ts +0 -881
  529. package/dist/steps/add-or-update-environment-variables.d.ts +0 -10
  530. package/dist/steps/add-or-update-environment-variables.js +0 -155
  531. package/dist/steps/add-or-update-environment-variables.js.map +0 -1
  532. package/dist/steps/index.d.ts +0 -3
  533. package/dist/steps/index.js +0 -4
  534. package/dist/steps/index.js.map +0 -1
  535. package/dist/steps/run-prettier.d.ts +0 -5
  536. package/dist/steps/run-prettier.js +0 -50
  537. package/dist/steps/run-prettier.js.map +0 -1
  538. package/dist/steps/upload-environment-variables/EnvironmentProvider.d.ts +0 -8
  539. package/dist/steps/upload-environment-variables/EnvironmentProvider.js +0 -7
  540. package/dist/steps/upload-environment-variables/EnvironmentProvider.js.map +0 -1
  541. package/dist/steps/upload-environment-variables/index.d.ts +0 -6
  542. package/dist/steps/upload-environment-variables/index.js +0 -69
  543. package/dist/steps/upload-environment-variables/index.js.map +0 -1
  544. package/dist/steps/upload-environment-variables/providers/vercel.d.ts +0 -14
  545. package/dist/steps/upload-environment-variables/providers/vercel.js +0 -107
  546. package/dist/steps/upload-environment-variables/providers/vercel.js.map +0 -1
  547. package/dist/tanstack-start/tanstack-start-installer-agent.d.ts +0 -4
  548. package/dist/tanstack-start/tanstack-start-installer-agent.js +0 -5
  549. package/dist/tanstack-start/tanstack-start-installer-agent.js.map +0 -1
  550. package/dist/telemetry.d.ts +0 -2
  551. package/dist/telemetry.js +0 -29
  552. package/dist/telemetry.js.map +0 -1
  553. package/dist/test/force-insecure-storage.d.ts +0 -1
  554. package/dist/test/force-insecure-storage.js +0 -9
  555. package/dist/test/force-insecure-storage.js.map +0 -1
  556. package/dist/test/setup.d.ts +0 -1
  557. package/dist/test/setup.js +0 -38
  558. package/dist/test/setup.js.map +0 -1
  559. package/dist/utils/analytics.d.ts +0 -66
  560. package/dist/utils/analytics.js +0 -330
  561. package/dist/utils/analytics.js.map +0 -1
  562. package/dist/utils/bash.d.ts +0 -2
  563. package/dist/utils/bash.js +0 -17
  564. package/dist/utils/bash.js.map +0 -1
  565. package/dist/utils/box.d.ts +0 -9
  566. package/dist/utils/box.js +0 -15
  567. package/dist/utils/box.js.map +0 -1
  568. package/dist/utils/cli-exit.d.ts +0 -15
  569. package/dist/utils/cli-exit.js +0 -11
  570. package/dist/utils/cli-exit.js.map +0 -1
  571. package/dist/utils/cli-symbols.d.ts +0 -44
  572. package/dist/utils/cli-symbols.js +0 -58
  573. package/dist/utils/cli-symbols.js.map +0 -1
  574. package/dist/utils/command-invocation.d.ts +0 -10
  575. package/dist/utils/command-invocation.js +0 -26
  576. package/dist/utils/command-invocation.js.map +0 -1
  577. package/dist/utils/command-telemetry.d.ts +0 -17
  578. package/dist/utils/command-telemetry.js +0 -67
  579. package/dist/utils/command-telemetry.js.map +0 -1
  580. package/dist/utils/crash-reporter.d.ts +0 -13
  581. package/dist/utils/crash-reporter.js +0 -91
  582. package/dist/utils/crash-reporter.js.map +0 -1
  583. package/dist/utils/debug.d.ts +0 -9
  584. package/dist/utils/debug.js +0 -105
  585. package/dist/utils/debug.js.map +0 -1
  586. package/dist/utils/env-parser.d.ts +0 -5
  587. package/dist/utils/env-parser.js +0 -18
  588. package/dist/utils/env-parser.js.map +0 -1
  589. package/dist/utils/environment.d.ts +0 -10
  590. package/dist/utils/environment.js +0 -69
  591. package/dist/utils/environment.js.map +0 -1
  592. package/dist/utils/errors.d.ts +0 -3
  593. package/dist/utils/errors.js +0 -7
  594. package/dist/utils/errors.js.map +0 -1
  595. package/dist/utils/exec-file.d.ts +0 -15
  596. package/dist/utils/exec-file.js +0 -39
  597. package/dist/utils/exec-file.js.map +0 -1
  598. package/dist/utils/exit-codes.d.ts +0 -31
  599. package/dist/utils/exit-codes.js +0 -69
  600. package/dist/utils/exit-codes.js.map +0 -1
  601. package/dist/utils/git-utils.d.ts +0 -23
  602. package/dist/utils/git-utils.js +0 -86
  603. package/dist/utils/git-utils.js.map +0 -1
  604. package/dist/utils/help-json.d.ts +0 -58
  605. package/dist/utils/help-json.js +0 -1577
  606. package/dist/utils/help-json.js.map +0 -1
  607. package/dist/utils/interaction-mode.d.ts +0 -25
  608. package/dist/utils/interaction-mode.js +0 -99
  609. package/dist/utils/interaction-mode.js.map +0 -1
  610. package/dist/utils/lock-art.d.ts +0 -4
  611. package/dist/utils/lock-art.js +0 -73
  612. package/dist/utils/lock-art.js.map +0 -1
  613. package/dist/utils/logging.d.ts +0 -9
  614. package/dist/utils/logging.js +0 -36
  615. package/dist/utils/logging.js.map +0 -1
  616. package/dist/utils/ndjson.d.ts +0 -16
  617. package/dist/utils/ndjson.js +0 -18
  618. package/dist/utils/ndjson.js.map +0 -1
  619. package/dist/utils/output.d.ts +0 -60
  620. package/dist/utils/output.js +0 -124
  621. package/dist/utils/output.js.map +0 -1
  622. package/dist/utils/package-json.d.ts +0 -26
  623. package/dist/utils/package-json.js +0 -32
  624. package/dist/utils/package-json.js.map +0 -1
  625. package/dist/utils/package-manager.d.ts +0 -21
  626. package/dist/utils/package-manager.js +0 -166
  627. package/dist/utils/package-manager.js.map +0 -1
  628. package/dist/utils/paths.d.ts +0 -5
  629. package/dist/utils/paths.js +0 -18
  630. package/dist/utils/paths.js.map +0 -1
  631. package/dist/utils/platform.d.ts +0 -8
  632. package/dist/utils/platform.js +0 -7
  633. package/dist/utils/platform.js.map +0 -1
  634. package/dist/utils/recovery-hints.d.ts +0 -42
  635. package/dist/utils/recovery-hints.js +0 -92
  636. package/dist/utils/recovery-hints.js.map +0 -1
  637. package/dist/utils/redact.d.ts +0 -5
  638. package/dist/utils/redact.js +0 -29
  639. package/dist/utils/redact.js.map +0 -1
  640. package/dist/utils/register-subcommand.d.ts +0 -10
  641. package/dist/utils/register-subcommand.js +0 -33
  642. package/dist/utils/register-subcommand.js.map +0 -1
  643. package/dist/utils/semver.d.ts +0 -10
  644. package/dist/utils/semver.js +0 -43
  645. package/dist/utils/semver.js.map +0 -1
  646. package/dist/utils/string.d.ts +0 -1
  647. package/dist/utils/string.js +0 -6
  648. package/dist/utils/string.js.map +0 -1
  649. package/dist/utils/summary-box.d.ts +0 -25
  650. package/dist/utils/summary-box.js +0 -211
  651. package/dist/utils/summary-box.js.map +0 -1
  652. package/dist/utils/table.d.ts +0 -5
  653. package/dist/utils/table.js +0 -18
  654. package/dist/utils/table.js.map +0 -1
  655. package/dist/utils/telemetry-client.d.ts +0 -43
  656. package/dist/utils/telemetry-client.js +0 -171
  657. package/dist/utils/telemetry-client.js.map +0 -1
  658. package/dist/utils/telemetry-store-forward.d.ts +0 -11
  659. package/dist/utils/telemetry-store-forward.js +0 -94
  660. package/dist/utils/telemetry-store-forward.js.map +0 -1
  661. package/dist/utils/telemetry-types.d.ts +0 -100
  662. package/dist/utils/telemetry-types.js +0 -6
  663. package/dist/utils/telemetry-types.js.map +0 -1
  664. package/dist/utils/types.d.ts +0 -123
  665. package/dist/utils/types.js +0 -2
  666. package/dist/utils/types.js.map +0 -1
  667. package/dist/utils/ui-utils.d.ts +0 -97
  668. package/dist/utils/ui-utils.js +0 -449
  669. package/dist/utils/ui-utils.js.map +0 -1
  670. package/dist/utils/ui.d.ts +0 -148
  671. package/dist/utils/ui.js +0 -368
  672. package/dist/utils/ui.js.map +0 -1
  673. package/dist/utils/urls.d.ts +0 -13
  674. package/dist/utils/urls.js +0 -14
  675. package/dist/utils/urls.js.map +0 -1
  676. package/dist/utils/vendor/is-unicorn-supported.d.ts +0 -1
  677. package/dist/utils/vendor/is-unicorn-supported.js +0 -21
  678. package/dist/utils/vendor/is-unicorn-supported.js.map +0 -1
  679. package/dist/vanilla-js/vanilla-js-installer-agent.d.ts +0 -4
  680. package/dist/vanilla-js/vanilla-js-installer-agent.js +0 -5
  681. package/dist/vanilla-js/vanilla-js-installer-agent.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-skills.js","sourceRoot":"","sources":["../../src/commands/list-skills.ts"],"names":[],"mappings":"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","sourcesContent":["import { homedir } from 'os';\nimport chalk from 'chalk';\nimport { logError } from '../utils/debug.js';\nimport { exitWithError, isJsonMode, outputJson } from '../utils/output.js';\nimport { createAgents, detectAgents, discoverSkills, getSkillsDir } from './install-skill.js';\nimport { findInstalledSkills } from './uninstall-skill.js';\n\nexport interface ListSkillsOptions {\n agent?: string[];\n}\n\nexport async function runListSkills(options: ListSkillsOptions): Promise<void> {\n const home = homedir();\n const agents = createAgents(home);\n const skillsDir = getSkillsDir();\n\n let knownSkills: string[];\n try {\n knownSkills = await discoverSkills(skillsDir);\n } catch (error) {\n logError('Failed to read skills directory:', error);\n exitWithError({\n code: 'SKILLS_DIR_READ_FAILED',\n message: `Could not read skills directory at ${skillsDir}. Your WorkOS CLI installation may be corrupted. Try reinstalling with \\`npm install -g @workos-inc/cli\\`.`,\n });\n }\n\n const targetAgents = detectAgents(agents, options.agent);\n\n const listData: Array<{ agent: string; available: string[]; installed: string[] }> = [];\n for (const agent of targetAgents) {\n const installed = findInstalledSkills(knownSkills, agent);\n listData.push({ agent: agent.displayName, available: knownSkills, installed });\n }\n\n if (isJsonMode()) {\n outputJson(listData);\n return;\n }\n\n console.log(chalk.bold('\\nWorkOS Skills:\\n'));\n console.log(` ${chalk.bold('Available:')} ${knownSkills.map((s) => chalk.cyan(s)).join(', ')}\\n`);\n\n if (targetAgents.length === 0) {\n console.log(chalk.dim(' No coding agents detected.\\n'));\n return;\n }\n\n console.log(chalk.bold(' Installed per agent:\\n'));\n for (const entry of listData) {\n console.log(` ${chalk.bold(entry.agent)}:`);\n if (entry.installed.length === 0) {\n console.log(` ${chalk.dim('(none)')}`);\n } else {\n for (const skill of entry.installed) {\n console.log(` ${chalk.cyan(skill)}`);\n }\n }\n }\n console.log();\n}\n"]}
@@ -1,32 +0,0 @@
1
- /**
2
- * Result of a post-login staging provision. Carries enough context for
3
- * `runLogin` to detect a cross-account switch and decide how to surface it
4
- * without ever silently repointing the active environment.
5
- */
6
- export interface StagingProvisionResult {
7
- provisioned: boolean;
8
- /** Active env name AFTER provisioning (unchanged unless there was no prior active env). */
9
- activeEnvironment?: string;
10
- /** Key the new Staging env was written under ('staging' or a fresh 'staging-N'). */
11
- envName?: string;
12
- mismatch: boolean;
13
- priorEnvName?: string;
14
- priorAccount?: {
15
- email?: string;
16
- clientId?: string;
17
- };
18
- }
19
- /**
20
- * Auto-provision a staging environment after login.
21
- *
22
- * Fetches staging credentials for the just-authenticated account and stores
23
- * them. On a detected cross-account mismatch, the new account's Staging is
24
- * written under a DISTINCT key rather than clobbering the active slot, and the
25
- * active pointer is left alone — only a login onto an empty config auto-assigns
26
- * the active env. Non-fatal — logs a hint on failure instead of throwing.
27
- */
28
- export declare function provisionStagingEnvironment(accessToken: string, account: {
29
- email?: string;
30
- userId: string;
31
- }): Promise<StagingProvisionResult>;
32
- export declare function runLogin(): Promise<void>;
@@ -1,239 +0,0 @@
1
- import open from 'open';
2
- import chalk from 'chalk';
3
- import ui from '../utils/ui.js';
4
- import { saveCredentials, getCredentials, getAccessToken, isTokenExpired, updateTokens } from '../lib/credentials.js';
5
- import { getCliAuthClientId, getAuthkitDomain } from '../lib/settings.js';
6
- import { refreshAccessToken } from '../lib/token-refresh-client.js';
7
- import { logInfo, logError } from '../utils/debug.js';
8
- import { fetchStagingCredentials, StagingApiError } from '../lib/staging-api.js';
9
- import { analytics } from '../utils/analytics.js';
10
- import { getConfig, saveConfig, getActiveEnvironment, setActiveEnvironment, freshEnvKey } from '../lib/config-store.js';
11
- import { formatWorkOSCommand } from '../utils/command-invocation.js';
12
- import { maybeRunSetupAfter } from './setup.js';
13
- import { isJsonMode, outputJson } from '../utils/output.js';
14
- import { isAgentMode, isCiMode, isPromptAllowed } from '../utils/interaction-mode.js';
15
- import { ExitCode, exitWithAuthRequired, exitWithCode } from '../utils/exit-codes.js';
16
- import { requestDeviceCode, pollForToken, DeviceAuthTimeoutError } from '../lib/device-auth.js';
17
- import { observeHostFailure } from '../lib/host-probe.js';
18
- /**
19
- * Does the just-authenticated account differ from the account that owns `prior`?
20
- *
21
- * Email comparison wins when both sides have it (human-readable, survives a
22
- * clientId reissue); otherwise fall back to clientId. When neither is available
23
- * we cannot tell — return false and let the always-on "Now using" line protect
24
- * the user.
25
- */
26
- function isMismatch(prior, account, staging) {
27
- if (!prior)
28
- return false;
29
- if (prior.ownerEmail && account.email)
30
- return prior.ownerEmail !== account.email;
31
- if (prior.clientId)
32
- return prior.clientId !== staging.clientId;
33
- return false;
34
- }
35
- /**
36
- * Auto-provision a staging environment after login.
37
- *
38
- * Fetches staging credentials for the just-authenticated account and stores
39
- * them. On a detected cross-account mismatch, the new account's Staging is
40
- * written under a DISTINCT key rather than clobbering the active slot, and the
41
- * active pointer is left alone — only a login onto an empty config auto-assigns
42
- * the active env. Non-fatal — logs a hint on failure instead of throwing.
43
- */
44
- export async function provisionStagingEnvironment(accessToken, account) {
45
- try {
46
- const staging = await fetchStagingCredentials(accessToken);
47
- const config = getConfig() ?? { environments: {} };
48
- const priorName = config.activeEnvironment;
49
- const prior = priorName ? config.environments[priorName] : undefined; // capture BEFORE write
50
- const mismatch = isMismatch(prior, account, staging);
51
- // Never overwrite a DIFFERENT account's 'staging' slot in place.
52
- const stagingSlot = config.environments['staging'];
53
- const slotMismatch = isMismatch(stagingSlot, account, staging);
54
- const key = slotMismatch ? freshEnvKey(config, 'staging') : 'staging';
55
- config.environments[key] = {
56
- name: key,
57
- type: 'sandbox',
58
- apiKey: staging.apiKey,
59
- clientId: staging.clientId,
60
- ...(account.email && { ownerEmail: account.email }),
61
- ownerUserId: account.userId,
62
- };
63
- // Only auto-assign active when there is NO valid prior active env.
64
- if (!prior) {
65
- config.activeEnvironment = key;
66
- }
67
- saveConfig(config);
68
- logInfo('[login] Staging environment provisioned');
69
- return {
70
- provisioned: true,
71
- activeEnvironment: config.activeEnvironment,
72
- envName: key,
73
- mismatch,
74
- priorEnvName: priorName,
75
- priorAccount: prior ? { email: prior.ownerEmail, clientId: prior.clientId } : undefined,
76
- };
77
- }
78
- catch (error) {
79
- logError('[login] Failed to provision staging environment:', error instanceof Error ? error.message : error);
80
- // Best-effort, but the failure rate of this onboarding step must be visible:
81
- // a silent failure here leaves the user with no active environment for every
82
- // later command, indistinguishable in telemetry from a healthy setup.
83
- analytics.captureException(error instanceof Error ? error : new Error(String(error)), {
84
- command: 'auth.login',
85
- phase: 'provision-staging',
86
- statusCode: error instanceof StagingApiError ? error.statusCode : undefined,
87
- });
88
- return { provisioned: false, mismatch: false };
89
- }
90
- }
91
- export async function runLogin() {
92
- const clientId = getCliAuthClientId();
93
- // Check if already logged in with valid token
94
- if (getAccessToken()) {
95
- const creds = getCredentials();
96
- console.log(chalk.green(`Already logged in as ${creds?.email ?? 'unknown'}`));
97
- console.log(chalk.dim(`Run \`${formatWorkOSCommand('auth logout')}\` to log out`));
98
- return;
99
- }
100
- // Try to refresh if we have expired credentials with a refresh token
101
- const existingCreds = getCredentials();
102
- if (existingCreds?.refreshToken && isTokenExpired(existingCreds)) {
103
- try {
104
- const authkitDomain = getAuthkitDomain();
105
- const result = await refreshAccessToken(authkitDomain, clientId);
106
- if (result.accessToken && result.expiresAt) {
107
- updateTokens(result.accessToken, result.expiresAt, result.refreshToken);
108
- logInfo('[login] Session refreshed via refresh token');
109
- console.log(chalk.green(`Already logged in as ${existingCreds.email ?? 'unknown'}`));
110
- console.log(chalk.dim(`Run \`${formatWorkOSCommand('auth logout')}\` to log out`));
111
- return;
112
- }
113
- // Refresh returned no token — record why before falling through to fresh
114
- // login. A spike here surfaces token revocation / refresh-endpoint outages
115
- // that self-heal into a browser login and would otherwise be invisible.
116
- analytics.capture('token_refresh_failed', { errorType: result.errorType ?? 'unknown' });
117
- }
118
- catch (error) {
119
- analytics.capture('token_refresh_failed', { errorType: error instanceof Error ? error.name : 'unknown' });
120
- // Refresh failed, proceed with fresh login.
121
- }
122
- }
123
- if (isCiMode()) {
124
- exitWithAuthRequired('Browser authentication is not available in CI mode. Set WORKOS_API_KEY or configure credentials before running in CI.');
125
- }
126
- const authkitDomain = getAuthkitDomain();
127
- ui.log.step('Starting authentication...');
128
- let deviceAuth;
129
- try {
130
- deviceAuth = await requestDeviceCode({ clientId, authkitDomain });
131
- }
132
- catch (error) {
133
- const msg = error instanceof Error ? error.message : String(error);
134
- ui.log.error(`Failed to start authentication: ${msg}`);
135
- analytics.captureException(error instanceof Error ? error : new Error(msg), {
136
- command: 'auth.login',
137
- phase: 'device-code',
138
- });
139
- exitWithCode(ExitCode.GENERAL_ERROR);
140
- }
141
- ui.log.info(`\nOpen this URL in your browser:\n`);
142
- console.log(` ${deviceAuth.verification_uri}`);
143
- console.log(`\nEnter code: ${deviceAuth.user_code}\n`);
144
- try {
145
- await open(deviceAuth.verification_uri_complete, { wait: false });
146
- if (isAgentMode()) {
147
- ui.log.info('Browser launch attempted. If it did not open on the host, use the manual URL and code above.');
148
- }
149
- else {
150
- ui.log.info('Browser opened automatically');
151
- }
152
- }
153
- catch (error) {
154
- observeHostFailure('browser-launch', error, {
155
- operation: 'open',
156
- target: deviceAuth.verification_uri_complete,
157
- label: 'auth login browser',
158
- });
159
- ui.log.info('Could not open browser — open the URL above manually.');
160
- }
161
- const spinner = ui.spinner();
162
- spinner.start('Waiting for authentication...');
163
- try {
164
- const result = await pollForToken(deviceAuth.device_code, {
165
- clientId,
166
- authkitDomain,
167
- interval: deviceAuth.interval,
168
- });
169
- const expiresInSec = Math.round((result.expiresAt - Date.now()) / 1000);
170
- saveCredentials({
171
- accessToken: result.accessToken,
172
- expiresAt: result.expiresAt,
173
- userId: result.userId,
174
- email: result.email,
175
- refreshToken: result.refreshToken,
176
- });
177
- spinner.stop('Authentication successful!');
178
- ui.log.success(`Logged in as ${result.email || result.userId}`);
179
- ui.log.info(`Token expires in ${expiresInSec} seconds`);
180
- const account = { email: result.email, userId: result.userId };
181
- const provision = await provisionStagingEnvironment(result.accessToken, account);
182
- if (isJsonMode()) {
183
- outputJson({
184
- status: 'ok',
185
- account: { email: account.email ?? null, userId: account.userId },
186
- activeEnvironment: provision.activeEnvironment ?? null,
187
- mismatch: provision.mismatch,
188
- });
189
- }
190
- else if (provision.provisioned) {
191
- if (provision.mismatch) {
192
- const priorLabel = provision.priorAccount?.email ?? provision.priorAccount?.clientId ?? provision.priorEnvName;
193
- if (isPromptAllowed()) {
194
- const answer = await ui.confirm({
195
- message: `You were using ${provision.priorEnvName} (${priorLabel}, a different account). Switch active environment to ${account.email ?? account.userId}'s Staging?`,
196
- initialValue: false, // default: keep current
197
- });
198
- if (!ui.isCancel(answer) && answer && provision.envName) {
199
- setActiveEnvironment(provision.envName);
200
- }
201
- }
202
- else {
203
- ui.log.warn(`Logged in as ${account.email ?? account.userId}, but the active environment "${provision.priorEnvName}" belongs to a different account (${priorLabel}). Keeping it active. Run \`${formatWorkOSCommand('env switch')}\` to change environments.`);
204
- }
205
- }
206
- const active = getActiveEnvironment();
207
- if (active) {
208
- ui.log.success(`Now using: ${active.name} (${active.type}) — ${account.email ?? account.userId}`);
209
- }
210
- else {
211
- ui.log.info(chalk.dim(`Run \`${formatWorkOSCommand('env add')}\` to configure an environment manually`));
212
- }
213
- }
214
- else {
215
- ui.log.info(chalk.dim(`Run \`${formatWorkOSCommand('env add')}\` to configure an environment manually`));
216
- }
217
- await maybeRunSetupAfter('login');
218
- }
219
- catch (error) {
220
- const isTimeout = error instanceof DeviceAuthTimeoutError;
221
- if (isTimeout) {
222
- spinner.stop('Authentication timed out', 1);
223
- ui.log.error('Authentication timed out. Please try again.');
224
- }
225
- else {
226
- spinner.stop('Authentication failed', 1);
227
- const msg = error instanceof Error ? error.message : String(error);
228
- ui.log.error(`Authentication error: ${msg}`);
229
- }
230
- // Deliver the real cause to telemetry (the command event alone can't
231
- // distinguish a timeout from a network/server auth failure).
232
- analytics.captureException(error instanceof Error ? error : new Error(String(error)), {
233
- command: 'auth.login',
234
- phase: isTimeout ? 'timeout' : 'poll',
235
- });
236
- exitWithCode(ExitCode.GENERAL_ERROR);
237
- }
238
- }
239
- //# sourceMappingURL=login.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACtH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAExH,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAkB1D;;;;;;;GAOG;AACH,SAAS,UAAU,CACjB,KAAoC,EACpC,OAA2B,EAC3B,OAA6B;IAE7B,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC,KAAK,CAAC;IACjF,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;IAC/D,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,WAAmB,EACnB,OAA2C;IAE3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAc,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAE9D,MAAM,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,uBAAuB;QAC7F,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAErD,iEAAiE;QACjE,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG;YACzB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YACnD,WAAW,EAAE,OAAO,CAAC,MAAM;SAC5B,CAAC;QAEF,mEAAmE;QACnE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,iBAAiB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,UAAU,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,CAAC,yCAAyC,CAAC,CAAC;QAEnD,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,OAAO,EAAE,GAAG;YACZ,QAAQ;YACR,YAAY,EAAE,SAAS;YACvB,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;SACxF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,kDAAkD,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7G,6EAA6E;QAC7E,6EAA6E;QAC7E,sEAAsE;QACtE,SAAS,CAAC,gBAAgB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;YACpF,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,mBAAmB;YAC1B,UAAU,EAAE,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;SAC5E,CAAC,CAAC;QACH,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACjD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAEtC,8CAA8C;IAC9C,IAAI,cAAc,EAAE,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,mBAAmB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IAED,qEAAqE;IACrE,MAAM,aAAa,GAAG,cAAc,EAAE,CAAC;IACvC,IAAI,aAAa,EAAE,YAAY,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YACjE,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC3C,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;gBACxE,OAAO,CAAC,6CAA6C,CAAC,CAAC;gBACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,aAAa,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;gBACrF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,mBAAmB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;gBACnF,OAAO;YACT,CAAC;YACD,yEAAyE;YACzE,2EAA2E;YAC3E,wEAAwE;YACxE,SAAS,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;QAC1F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAC1G,4CAA4C;QAC9C,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,EAAE,EAAE,CAAC;QACf,oBAAoB,CAClB,uHAAuH,CACxH,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAE1C,IAAI,UAAU,CAAC;IACf,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,iBAAiB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAC;QACvD,SAAS,CAAC,gBAAgB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YAC1E,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,aAAa;SACrB,CAAC,CAAC;QACH,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACvC,CAAC;IAED,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,iBAAiB,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,IAAI,WAAW,EAAE,EAAE,CAAC;YAClB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;QAC9G,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,gBAAgB,EAAE,KAAK,EAAE;YAC1C,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,UAAU,CAAC,yBAAyB;YAC5C,KAAK,EAAE,oBAAoB;SAC5B,CAAC,CAAC;QACH,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,WAAW,EAAE;YACxD,QAAQ;YACR,aAAa;YACb,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAC9B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAExE,eAAe,CAAC;YACd,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAChE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,YAAY,UAAU,CAAC,CAAC;QAExD,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC/D,MAAM,SAAS,GAAG,MAAM,2BAA2B,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAEjF,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,UAAU,CAAC;gBACT,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;gBACjE,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,IAAI,IAAI;gBACtD,QAAQ,EAAE,SAAS,CAAC,QAAQ;aAC7B,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACvB,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,EAAE,KAAK,IAAI,SAAS,CAAC,YAAY,EAAE,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC;gBAC/G,IAAI,eAAe,EAAE,EAAE,CAAC;oBACtB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;wBAC9B,OAAO,EAAE,kBAAkB,SAAS,CAAC,YAAY,KAAK,UAAU,wDAAwD,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,aAAa;wBACpK,YAAY,EAAE,KAAK,EAAE,wBAAwB;qBAC9C,CAAC,CAAC;oBACH,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;wBACxD,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,EAAE,CAAC,GAAG,CAAC,IAAI,CACT,gBAAgB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,iCAAiC,SAAS,CAAC,YAAY,qCAAqC,UAAU,+BAA+B,mBAAmB,CAAC,YAAY,CAAC,4BAA4B,CAClP,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;YACtC,IAAI,MAAM,EAAE,CAAC;gBACX,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACpG,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,mBAAmB,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC,CAAC;YAC3G,CAAC;QACH,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,mBAAmB,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAC3G,CAAC;QAED,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,KAAK,YAAY,sBAAsB,CAAC;QAC1D,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;YAC5C,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,qEAAqE;QACrE,6DAA6D;QAC7D,SAAS,CAAC,gBAAgB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;YACpF,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;SACtC,CAAC,CAAC;QACH,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACvC,CAAC;AACH,CAAC","sourcesContent":["import open from 'open';\nimport chalk from 'chalk';\nimport ui from '../utils/ui.js';\nimport { saveCredentials, getCredentials, getAccessToken, isTokenExpired, updateTokens } from '../lib/credentials.js';\nimport { getCliAuthClientId, getAuthkitDomain } from '../lib/settings.js';\nimport { refreshAccessToken } from '../lib/token-refresh-client.js';\nimport { logInfo, logError } from '../utils/debug.js';\nimport { fetchStagingCredentials, StagingApiError } from '../lib/staging-api.js';\nimport { analytics } from '../utils/analytics.js';\nimport { getConfig, saveConfig, getActiveEnvironment, setActiveEnvironment, freshEnvKey } from '../lib/config-store.js';\nimport type { CliConfig, EnvironmentConfig } from '../lib/config-store.js';\nimport { formatWorkOSCommand } from '../utils/command-invocation.js';\nimport { maybeRunSetupAfter } from './setup.js';\nimport { isJsonMode, outputJson } from '../utils/output.js';\nimport { isAgentMode, isCiMode, isPromptAllowed } from '../utils/interaction-mode.js';\nimport { ExitCode, exitWithAuthRequired, exitWithCode } from '../utils/exit-codes.js';\nimport { requestDeviceCode, pollForToken, DeviceAuthTimeoutError } from '../lib/device-auth.js';\nimport { observeHostFailure } from '../lib/host-probe.js';\n\n/**\n * Result of a post-login staging provision. Carries enough context for\n * `runLogin` to detect a cross-account switch and decide how to surface it\n * without ever silently repointing the active environment.\n */\nexport interface StagingProvisionResult {\n provisioned: boolean;\n /** Active env name AFTER provisioning (unchanged unless there was no prior active env). */\n activeEnvironment?: string;\n /** Key the new Staging env was written under ('staging' or a fresh 'staging-N'). */\n envName?: string;\n mismatch: boolean;\n priorEnvName?: string;\n priorAccount?: { email?: string; clientId?: string };\n}\n\n/**\n * Does the just-authenticated account differ from the account that owns `prior`?\n *\n * Email comparison wins when both sides have it (human-readable, survives a\n * clientId reissue); otherwise fall back to clientId. When neither is available\n * we cannot tell — return false and let the always-on \"Now using\" line protect\n * the user.\n */\nfunction isMismatch(\n prior: EnvironmentConfig | undefined,\n account: { email?: string },\n staging: { clientId: string },\n): boolean {\n if (!prior) return false;\n if (prior.ownerEmail && account.email) return prior.ownerEmail !== account.email;\n if (prior.clientId) return prior.clientId !== staging.clientId;\n return false;\n}\n\n/**\n * Auto-provision a staging environment after login.\n *\n * Fetches staging credentials for the just-authenticated account and stores\n * them. On a detected cross-account mismatch, the new account's Staging is\n * written under a DISTINCT key rather than clobbering the active slot, and the\n * active pointer is left alone — only a login onto an empty config auto-assigns\n * the active env. Non-fatal — logs a hint on failure instead of throwing.\n */\nexport async function provisionStagingEnvironment(\n accessToken: string,\n account: { email?: string; userId: string },\n): Promise<StagingProvisionResult> {\n try {\n const staging = await fetchStagingCredentials(accessToken);\n\n const config: CliConfig = getConfig() ?? { environments: {} };\n\n const priorName = config.activeEnvironment;\n const prior = priorName ? config.environments[priorName] : undefined; // capture BEFORE write\n const mismatch = isMismatch(prior, account, staging);\n\n // Never overwrite a DIFFERENT account's 'staging' slot in place.\n const stagingSlot = config.environments['staging'];\n const slotMismatch = isMismatch(stagingSlot, account, staging);\n const key = slotMismatch ? freshEnvKey(config, 'staging') : 'staging';\n\n config.environments[key] = {\n name: key,\n type: 'sandbox',\n apiKey: staging.apiKey,\n clientId: staging.clientId,\n ...(account.email && { ownerEmail: account.email }),\n ownerUserId: account.userId,\n };\n\n // Only auto-assign active when there is NO valid prior active env.\n if (!prior) {\n config.activeEnvironment = key;\n }\n\n saveConfig(config);\n logInfo('[login] Staging environment provisioned');\n\n return {\n provisioned: true,\n activeEnvironment: config.activeEnvironment,\n envName: key,\n mismatch,\n priorEnvName: priorName,\n priorAccount: prior ? { email: prior.ownerEmail, clientId: prior.clientId } : undefined,\n };\n } catch (error) {\n logError('[login] Failed to provision staging environment:', error instanceof Error ? error.message : error);\n // Best-effort, but the failure rate of this onboarding step must be visible:\n // a silent failure here leaves the user with no active environment for every\n // later command, indistinguishable in telemetry from a healthy setup.\n analytics.captureException(error instanceof Error ? error : new Error(String(error)), {\n command: 'auth.login',\n phase: 'provision-staging',\n statusCode: error instanceof StagingApiError ? error.statusCode : undefined,\n });\n return { provisioned: false, mismatch: false };\n }\n}\n\nexport async function runLogin(): Promise<void> {\n const clientId = getCliAuthClientId();\n\n // Check if already logged in with valid token\n if (getAccessToken()) {\n const creds = getCredentials();\n console.log(chalk.green(`Already logged in as ${creds?.email ?? 'unknown'}`));\n console.log(chalk.dim(`Run \\`${formatWorkOSCommand('auth logout')}\\` to log out`));\n return;\n }\n\n // Try to refresh if we have expired credentials with a refresh token\n const existingCreds = getCredentials();\n if (existingCreds?.refreshToken && isTokenExpired(existingCreds)) {\n try {\n const authkitDomain = getAuthkitDomain();\n const result = await refreshAccessToken(authkitDomain, clientId);\n if (result.accessToken && result.expiresAt) {\n updateTokens(result.accessToken, result.expiresAt, result.refreshToken);\n logInfo('[login] Session refreshed via refresh token');\n console.log(chalk.green(`Already logged in as ${existingCreds.email ?? 'unknown'}`));\n console.log(chalk.dim(`Run \\`${formatWorkOSCommand('auth logout')}\\` to log out`));\n return;\n }\n // Refresh returned no token — record why before falling through to fresh\n // login. A spike here surfaces token revocation / refresh-endpoint outages\n // that self-heal into a browser login and would otherwise be invisible.\n analytics.capture('token_refresh_failed', { errorType: result.errorType ?? 'unknown' });\n } catch (error) {\n analytics.capture('token_refresh_failed', { errorType: error instanceof Error ? error.name : 'unknown' });\n // Refresh failed, proceed with fresh login.\n }\n }\n\n if (isCiMode()) {\n exitWithAuthRequired(\n 'Browser authentication is not available in CI mode. Set WORKOS_API_KEY or configure credentials before running in CI.',\n );\n }\n\n const authkitDomain = getAuthkitDomain();\n\n ui.log.step('Starting authentication...');\n\n let deviceAuth;\n try {\n deviceAuth = await requestDeviceCode({ clientId, authkitDomain });\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n ui.log.error(`Failed to start authentication: ${msg}`);\n analytics.captureException(error instanceof Error ? error : new Error(msg), {\n command: 'auth.login',\n phase: 'device-code',\n });\n exitWithCode(ExitCode.GENERAL_ERROR);\n }\n\n ui.log.info(`\\nOpen this URL in your browser:\\n`);\n console.log(` ${deviceAuth.verification_uri}`);\n console.log(`\\nEnter code: ${deviceAuth.user_code}\\n`);\n\n try {\n await open(deviceAuth.verification_uri_complete, { wait: false });\n if (isAgentMode()) {\n ui.log.info('Browser launch attempted. If it did not open on the host, use the manual URL and code above.');\n } else {\n ui.log.info('Browser opened automatically');\n }\n } catch (error) {\n observeHostFailure('browser-launch', error, {\n operation: 'open',\n target: deviceAuth.verification_uri_complete,\n label: 'auth login browser',\n });\n ui.log.info('Could not open browser — open the URL above manually.');\n }\n\n const spinner = ui.spinner();\n spinner.start('Waiting for authentication...');\n\n try {\n const result = await pollForToken(deviceAuth.device_code, {\n clientId,\n authkitDomain,\n interval: deviceAuth.interval,\n });\n\n const expiresInSec = Math.round((result.expiresAt - Date.now()) / 1000);\n\n saveCredentials({\n accessToken: result.accessToken,\n expiresAt: result.expiresAt,\n userId: result.userId,\n email: result.email,\n refreshToken: result.refreshToken,\n });\n\n spinner.stop('Authentication successful!');\n ui.log.success(`Logged in as ${result.email || result.userId}`);\n ui.log.info(`Token expires in ${expiresInSec} seconds`);\n\n const account = { email: result.email, userId: result.userId };\n const provision = await provisionStagingEnvironment(result.accessToken, account);\n\n if (isJsonMode()) {\n outputJson({\n status: 'ok',\n account: { email: account.email ?? null, userId: account.userId },\n activeEnvironment: provision.activeEnvironment ?? null,\n mismatch: provision.mismatch,\n });\n } else if (provision.provisioned) {\n if (provision.mismatch) {\n const priorLabel = provision.priorAccount?.email ?? provision.priorAccount?.clientId ?? provision.priorEnvName;\n if (isPromptAllowed()) {\n const answer = await ui.confirm({\n message: `You were using ${provision.priorEnvName} (${priorLabel}, a different account). Switch active environment to ${account.email ?? account.userId}'s Staging?`,\n initialValue: false, // default: keep current\n });\n if (!ui.isCancel(answer) && answer && provision.envName) {\n setActiveEnvironment(provision.envName);\n }\n } else {\n ui.log.warn(\n `Logged in as ${account.email ?? account.userId}, but the active environment \"${provision.priorEnvName}\" belongs to a different account (${priorLabel}). Keeping it active. Run \\`${formatWorkOSCommand('env switch')}\\` to change environments.`,\n );\n }\n }\n const active = getActiveEnvironment();\n if (active) {\n ui.log.success(`Now using: ${active.name} (${active.type}) — ${account.email ?? account.userId}`);\n } else {\n ui.log.info(chalk.dim(`Run \\`${formatWorkOSCommand('env add')}\\` to configure an environment manually`));\n }\n } else {\n ui.log.info(chalk.dim(`Run \\`${formatWorkOSCommand('env add')}\\` to configure an environment manually`));\n }\n\n await maybeRunSetupAfter('login');\n } catch (error) {\n const isTimeout = error instanceof DeviceAuthTimeoutError;\n if (isTimeout) {\n spinner.stop('Authentication timed out', 1);\n ui.log.error('Authentication timed out. Please try again.');\n } else {\n spinner.stop('Authentication failed', 1);\n const msg = error instanceof Error ? error.message : String(error);\n ui.log.error(`Authentication error: ${msg}`);\n }\n // Deliver the real cause to telemetry (the command event alone can't\n // distinguish a timeout from a network/server auth failure).\n analytics.captureException(error instanceof Error ? error : new Error(String(error)), {\n command: 'auth.login',\n phase: isTimeout ? 'timeout' : 'poll',\n });\n exitWithCode(ExitCode.GENERAL_ERROR);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- export declare function runLogout(): Promise<void>;
@@ -1,17 +0,0 @@
1
- import ui from '../utils/ui.js';
2
- import { clearCredentials, hasCredentials, getCredentials } from '../lib/credentials.js';
3
- export async function runLogout() {
4
- if (!hasCredentials()) {
5
- ui.log.info('Not logged in');
6
- return;
7
- }
8
- const creds = getCredentials();
9
- clearCredentials();
10
- if (creds?.email) {
11
- ui.log.success(`Logged out from ${creds.email}`);
12
- }
13
- else {
14
- ui.log.success('Logged out successfully');
15
- }
16
- }
17
- //# sourceMappingURL=logout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEzF,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACtB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,gBAAgB,EAAE,CAAC;IAEnB,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;QACjB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC","sourcesContent":["import ui from '../utils/ui.js';\nimport { clearCredentials, hasCredentials, getCredentials } from '../lib/credentials.js';\n\nexport async function runLogout(): Promise<void> {\n if (!hasCredentials()) {\n ui.log.info('Not logged in');\n return;\n }\n\n const creds = getCredentials();\n clearCredentials();\n\n if (creds?.email) {\n ui.log.success(`Logged out from ${creds.email}`);\n } else {\n ui.log.success('Logged out successfully');\n }\n}\n"]}
@@ -1,14 +0,0 @@
1
- /**
2
- * `workos mcp install | remove | status` handlers.
3
- *
4
- * Thin callers over `lib/mcp-clients.ts`: detect the clients, run the
5
- * operation, and format the per-agent matrix in both output modes. No prompts
6
- * (non-TTY-safe by construction) and no auth guard — the WorkOS MCP server is
7
- * secret-free, so configuring it never needs an API key.
8
- */
9
- export interface McpCommandOptions {
10
- agent?: string[];
11
- }
12
- export declare function runMcpInstall(options?: McpCommandOptions): Promise<void>;
13
- export declare function runMcpRemove(options?: McpCommandOptions): Promise<void>;
14
- export declare function runMcpStatus(): Promise<void>;
@@ -1,99 +0,0 @@
1
- import ui from '../utils/ui.js';
2
- import { outputSuccess, outputJson, outputTable, exitWithError, isJsonMode } from '../utils/output.js';
3
- import { ExitCode, exitWithCode } from '../utils/exit-codes.js';
4
- import { createMcpClients, detectMcpClients, MCP_AGENT_KEYS, MCP_OUTCOME_LABELS, } from '../lib/mcp-clients.js';
5
- /**
6
- * Validate `--agent` values against known keys. Unknown values exit with a
7
- * structured `unknown_agent` error. Returns undefined (no filter) when none
8
- * were passed, so callers act on all detected agents.
9
- */
10
- function resolveAgentFilter(agent) {
11
- if (!agent || agent.length === 0)
12
- return undefined;
13
- const unknown = agent.filter((a) => !MCP_AGENT_KEYS.includes(a));
14
- if (unknown.length > 0) {
15
- exitWithError({
16
- code: 'unknown_agent',
17
- message: `Unknown agent(s): ${unknown.join(', ')}. Supported: ${MCP_AGENT_KEYS.join(', ')}.`,
18
- });
19
- }
20
- return agent;
21
- }
22
- /** Zero detected agents: same message + exit 0 for both install and remove. */
23
- function reportNoAgents() {
24
- if (isJsonMode()) {
25
- outputSuccess('No supported coding agents detected', { agents: [] });
26
- }
27
- else {
28
- ui.log.info('No supported coding agents detected (looked for Claude Code, Codex, Cursor).');
29
- }
30
- }
31
- /**
32
- * Emit the per-agent matrix, then exit non-zero if any agent failed. The full
33
- * matrix is always emitted first so partial success is still fully reported.
34
- */
35
- function reportResults(message, results) {
36
- if (isJsonMode()) {
37
- outputSuccess(message, { agents: results });
38
- }
39
- else {
40
- for (const r of results) {
41
- const line = `${r.displayName}: ${MCP_OUTCOME_LABELS[r.outcome]}`;
42
- if (r.outcome === 'failed') {
43
- ui.log.error(r.error ? `${line} — ${r.error}` : line);
44
- }
45
- else if (r.outcome === 'installed' || r.outcome === 'removed' || r.outcome === 'already-installed') {
46
- ui.log.success(line);
47
- }
48
- else {
49
- ui.log.info(line);
50
- }
51
- }
52
- }
53
- if (results.some((r) => r.outcome === 'failed')) {
54
- exitWithCode(ExitCode.GENERAL_ERROR);
55
- }
56
- }
57
- export async function runMcpInstall(options = {}) {
58
- const filter = resolveAgentFilter(options.agent);
59
- const clients = await detectMcpClients(filter);
60
- if (clients.length === 0) {
61
- reportNoAgents();
62
- return;
63
- }
64
- const results = [];
65
- for (const client of clients) {
66
- results.push(await client.add());
67
- }
68
- reportResults('Configured WorkOS MCP server', results);
69
- }
70
- export async function runMcpRemove(options = {}) {
71
- const filter = resolveAgentFilter(options.agent);
72
- const clients = await detectMcpClients(filter);
73
- if (clients.length === 0) {
74
- reportNoAgents();
75
- return;
76
- }
77
- const results = [];
78
- for (const client of clients) {
79
- results.push(await client.remove());
80
- }
81
- reportResults('Removed WorkOS MCP server', results);
82
- }
83
- export async function runMcpStatus() {
84
- // Status lists every known agent (not just available ones) with its
85
- // availability + install flags, so `createMcpClients()` — not
86
- // `detectMcpClients()` — is the right source here.
87
- const clients = createMcpClients();
88
- const agents = await Promise.all(clients.map(async (client) => {
89
- const available = await client.isAvailable();
90
- const installed = available ? await client.isInstalled() : false;
91
- return { agent: client.key, displayName: client.displayName, available, installed };
92
- }));
93
- if (isJsonMode()) {
94
- outputJson({ data: { agents } });
95
- return;
96
- }
97
- outputTable([{ header: 'Agent' }, { header: 'Available' }, { header: 'Installed' }], agents.map((a) => [a.displayName, a.available ? 'yes' : 'no', a.installed ? 'yes' : 'no']));
98
- }
99
- //# sourceMappingURL=mcp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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","sourcesContent":["import ui from '../utils/ui.js';\nimport { outputSuccess, outputJson, outputTable, exitWithError, isJsonMode } from '../utils/output.js';\nimport { ExitCode, exitWithCode } from '../utils/exit-codes.js';\nimport {\n createMcpClients,\n detectMcpClients,\n MCP_AGENT_KEYS,\n MCP_OUTCOME_LABELS,\n type McpAgentKey,\n type McpClientResult,\n} from '../lib/mcp-clients.js';\n\n/**\n * `workos mcp install | remove | status` handlers.\n *\n * Thin callers over `lib/mcp-clients.ts`: detect the clients, run the\n * operation, and format the per-agent matrix in both output modes. No prompts\n * (non-TTY-safe by construction) and no auth guard — the WorkOS MCP server is\n * secret-free, so configuring it never needs an API key.\n */\n\nexport interface McpCommandOptions {\n agent?: string[];\n}\n\n/**\n * Validate `--agent` values against known keys. Unknown values exit with a\n * structured `unknown_agent` error. Returns undefined (no filter) when none\n * were passed, so callers act on all detected agents.\n */\nfunction resolveAgentFilter(agent?: string[]): McpAgentKey[] | undefined {\n if (!agent || agent.length === 0) return undefined;\n const unknown = agent.filter((a) => !MCP_AGENT_KEYS.includes(a as McpAgentKey));\n if (unknown.length > 0) {\n exitWithError({\n code: 'unknown_agent',\n message: `Unknown agent(s): ${unknown.join(', ')}. Supported: ${MCP_AGENT_KEYS.join(', ')}.`,\n });\n }\n return agent as McpAgentKey[];\n}\n\n/** Zero detected agents: same message + exit 0 for both install and remove. */\nfunction reportNoAgents(): void {\n if (isJsonMode()) {\n outputSuccess('No supported coding agents detected', { agents: [] });\n } else {\n ui.log.info('No supported coding agents detected (looked for Claude Code, Codex, Cursor).');\n }\n}\n\n/**\n * Emit the per-agent matrix, then exit non-zero if any agent failed. The full\n * matrix is always emitted first so partial success is still fully reported.\n */\nfunction reportResults(message: string, results: McpClientResult[]): void {\n if (isJsonMode()) {\n outputSuccess(message, { agents: results });\n } else {\n for (const r of results) {\n const line = `${r.displayName}: ${MCP_OUTCOME_LABELS[r.outcome]}`;\n if (r.outcome === 'failed') {\n ui.log.error(r.error ? `${line} — ${r.error}` : line);\n } else if (r.outcome === 'installed' || r.outcome === 'removed' || r.outcome === 'already-installed') {\n ui.log.success(line);\n } else {\n ui.log.info(line);\n }\n }\n }\n\n if (results.some((r) => r.outcome === 'failed')) {\n exitWithCode(ExitCode.GENERAL_ERROR);\n }\n}\n\nexport async function runMcpInstall(options: McpCommandOptions = {}): Promise<void> {\n const filter = resolveAgentFilter(options.agent);\n const clients = await detectMcpClients(filter);\n if (clients.length === 0) {\n reportNoAgents();\n return;\n }\n const results: McpClientResult[] = [];\n for (const client of clients) {\n results.push(await client.add());\n }\n reportResults('Configured WorkOS MCP server', results);\n}\n\nexport async function runMcpRemove(options: McpCommandOptions = {}): Promise<void> {\n const filter = resolveAgentFilter(options.agent);\n const clients = await detectMcpClients(filter);\n if (clients.length === 0) {\n reportNoAgents();\n return;\n }\n const results: McpClientResult[] = [];\n for (const client of clients) {\n results.push(await client.remove());\n }\n reportResults('Removed WorkOS MCP server', results);\n}\n\nexport async function runMcpStatus(): Promise<void> {\n // Status lists every known agent (not just available ones) with its\n // availability + install flags, so `createMcpClients()` — not\n // `detectMcpClients()` — is the right source here.\n const clients = createMcpClients();\n const agents = await Promise.all(\n clients.map(async (client) => {\n const available = await client.isAvailable();\n const installed = available ? await client.isInstalled() : false;\n return { agent: client.key, displayName: client.displayName, available, installed };\n }),\n );\n\n if (isJsonMode()) {\n outputJson({ data: { agents } });\n return;\n }\n\n outputTable(\n [{ header: 'Agent' }, { header: 'Available' }, { header: 'Installed' }],\n agents.map((a) => [a.displayName, a.available ? 'yes' : 'no', a.installed ? 'yes' : 'no']),\n );\n}\n"]}
@@ -1,20 +0,0 @@
1
- export interface MembershipListOptions {
2
- org?: string;
3
- user?: string;
4
- limit?: number;
5
- before?: string;
6
- after?: string;
7
- order?: string;
8
- }
9
- export declare function runMembershipList(options: MembershipListOptions, apiKey: string, baseUrl?: string): Promise<void>;
10
- export declare function runMembershipGet(id: string, apiKey: string, baseUrl?: string): Promise<void>;
11
- export interface MembershipCreateOptions {
12
- org: string;
13
- user: string;
14
- role?: string;
15
- }
16
- export declare function runMembershipCreate(options: MembershipCreateOptions, apiKey: string, baseUrl?: string): Promise<void>;
17
- export declare function runMembershipUpdate(id: string, role: string | undefined, apiKey: string, baseUrl?: string): Promise<void>;
18
- export declare function runMembershipDelete(id: string, apiKey: string, baseUrl?: string): Promise<void>;
19
- export declare function runMembershipDeactivate(id: string, apiKey: string, baseUrl?: string): Promise<void>;
20
- export declare function runMembershipReactivate(id: string, apiKey: string, baseUrl?: string): Promise<void>;
@@ -1,129 +0,0 @@
1
- import chalk from 'chalk';
2
- import { createWorkOSClient } from '../lib/workos-client.js';
3
- import { formatTable } from '../utils/table.js';
4
- import { outputSuccess, outputJson, isJsonMode, exitWithError } from '../utils/output.js';
5
- import { createApiErrorHandler } from '../lib/api-error-handler.js';
6
- const handleApiError = createApiErrorHandler('Membership');
7
- export async function runMembershipList(options, apiKey, baseUrl) {
8
- if (!options.org && !options.user) {
9
- exitWithError({
10
- code: 'missing_args',
11
- message: 'At least one of --org or --user is required.',
12
- });
13
- }
14
- const client = createWorkOSClient(apiKey, baseUrl);
15
- try {
16
- const result = await client.sdk.userManagement.listOrganizationMemberships({
17
- ...(options.org && { organizationId: options.org }),
18
- ...(options.user && { userId: options.user }),
19
- limit: options.limit,
20
- before: options.before,
21
- after: options.after,
22
- order: options.order,
23
- });
24
- if (isJsonMode()) {
25
- outputJson({ data: result.data, listMetadata: result.listMetadata });
26
- return;
27
- }
28
- if (result.data.length === 0) {
29
- console.log('No memberships found.');
30
- return;
31
- }
32
- const rows = result.data.map((m) => [
33
- m.id,
34
- m.userId,
35
- m.organizationId,
36
- m.role?.slug ?? chalk.dim('-'),
37
- m.status,
38
- m.createdAt,
39
- ]);
40
- console.log(formatTable([
41
- { header: 'ID' },
42
- { header: 'User ID' },
43
- { header: 'Org ID' },
44
- { header: 'Role' },
45
- { header: 'Status' },
46
- { header: 'Created' },
47
- ], rows));
48
- const { before, after } = result.listMetadata;
49
- if (before && after) {
50
- console.log(chalk.dim(`Before: ${before} After: ${after}`));
51
- }
52
- else if (before) {
53
- console.log(chalk.dim(`Before: ${before}`));
54
- }
55
- else if (after) {
56
- console.log(chalk.dim(`After: ${after}`));
57
- }
58
- }
59
- catch (error) {
60
- handleApiError(error);
61
- }
62
- }
63
- export async function runMembershipGet(id, apiKey, baseUrl) {
64
- const client = createWorkOSClient(apiKey, baseUrl);
65
- try {
66
- const membership = await client.sdk.userManagement.getOrganizationMembership(id);
67
- outputJson(membership);
68
- }
69
- catch (error) {
70
- handleApiError(error);
71
- }
72
- }
73
- export async function runMembershipCreate(options, apiKey, baseUrl) {
74
- const client = createWorkOSClient(apiKey, baseUrl);
75
- try {
76
- const membership = await client.sdk.userManagement.createOrganizationMembership({
77
- organizationId: options.org,
78
- userId: options.user,
79
- ...(options.role && { roleSlug: options.role }),
80
- });
81
- outputSuccess('Created membership', membership);
82
- }
83
- catch (error) {
84
- handleApiError(error);
85
- }
86
- }
87
- export async function runMembershipUpdate(id, role, apiKey, baseUrl) {
88
- const client = createWorkOSClient(apiKey, baseUrl);
89
- try {
90
- const membership = await client.sdk.userManagement.updateOrganizationMembership(id, {
91
- ...(role && { roleSlug: role }),
92
- });
93
- outputSuccess('Updated membership', membership);
94
- }
95
- catch (error) {
96
- handleApiError(error);
97
- }
98
- }
99
- export async function runMembershipDelete(id, apiKey, baseUrl) {
100
- const client = createWorkOSClient(apiKey, baseUrl);
101
- try {
102
- await client.sdk.userManagement.deleteOrganizationMembership(id);
103
- outputSuccess('Deleted membership', { id });
104
- }
105
- catch (error) {
106
- handleApiError(error);
107
- }
108
- }
109
- export async function runMembershipDeactivate(id, apiKey, baseUrl) {
110
- const client = createWorkOSClient(apiKey, baseUrl);
111
- try {
112
- const membership = await client.sdk.userManagement.deactivateOrganizationMembership(id);
113
- outputSuccess('Deactivated membership', membership);
114
- }
115
- catch (error) {
116
- handleApiError(error);
117
- }
118
- }
119
- export async function runMembershipReactivate(id, apiKey, baseUrl) {
120
- const client = createWorkOSClient(apiKey, baseUrl);
121
- try {
122
- const membership = await client.sdk.userManagement.reactivateOrganizationMembership(id);
123
- outputSuccess('Reactivated membership', membership);
124
- }
125
- catch (error) {
126
- handleApiError(error);
127
- }
128
- }
129
- //# sourceMappingURL=membership.js.map