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,153 +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('Vault');
7
- export async function runVaultList(options, apiKey, baseUrl) {
8
- const client = createWorkOSClient(apiKey, baseUrl);
9
- try {
10
- const result = await client.sdk.vault.listObjects({
11
- limit: options.limit,
12
- before: options.before,
13
- after: options.after,
14
- order: options.order,
15
- });
16
- if (isJsonMode()) {
17
- outputJson({ data: result.data, listMetadata: result.listMetadata });
18
- return;
19
- }
20
- if (result.data.length === 0) {
21
- console.log('No vault objects found.');
22
- return;
23
- }
24
- const rows = result.data.map((obj) => [obj.id, obj.name, obj.updatedAt ? String(obj.updatedAt) : chalk.dim('-')]);
25
- console.log(formatTable([{ header: 'ID' }, { header: 'Name' }, { header: 'Updated At' }], rows));
26
- const { before, after } = result.listMetadata;
27
- if (before && after) {
28
- console.log(chalk.dim(`Before: ${before} After: ${after}`));
29
- }
30
- else if (before) {
31
- console.log(chalk.dim(`Before: ${before}`));
32
- }
33
- else if (after) {
34
- console.log(chalk.dim(`After: ${after}`));
35
- }
36
- }
37
- catch (error) {
38
- handleApiError(error);
39
- }
40
- }
41
- export async function runVaultGet(id, decrypt, apiKey, baseUrl) {
42
- const client = createWorkOSClient(apiKey, baseUrl);
43
- try {
44
- if (decrypt) {
45
- const result = await client.sdk.vault.readObject({ id });
46
- outputJson(result);
47
- }
48
- else {
49
- const result = await client.sdk.vault.describeObject({ id });
50
- outputJson(result);
51
- }
52
- }
53
- catch (error) {
54
- handleApiError(error);
55
- }
56
- }
57
- export async function runVaultGetByName(name, decrypt, apiKey, baseUrl) {
58
- const client = createWorkOSClient(apiKey, baseUrl);
59
- try {
60
- const result = await client.sdk.vault.readObjectByName(name);
61
- if (decrypt) {
62
- outputJson(result);
63
- }
64
- else {
65
- const { value: _stripped, ...metadata } = result;
66
- outputJson(metadata);
67
- }
68
- }
69
- catch (error) {
70
- handleApiError(error);
71
- }
72
- }
73
- export async function runVaultCreate(options, apiKey, baseUrl) {
74
- if (!options.org) {
75
- exitWithError({
76
- code: 'missing_org',
77
- message: 'The --org flag is required. Vault objects must be scoped to an organization.',
78
- });
79
- }
80
- const client = createWorkOSClient(apiKey, baseUrl);
81
- try {
82
- const result = await client.sdk.vault.createObject({
83
- name: options.name,
84
- value: options.value,
85
- context: { organizationId: options.org },
86
- });
87
- outputSuccess('Created vault object', result);
88
- }
89
- catch (error) {
90
- handleApiError(error);
91
- }
92
- }
93
- export async function runVaultUpdate(options, apiKey, baseUrl) {
94
- const client = createWorkOSClient(apiKey, baseUrl);
95
- try {
96
- const result = await client.sdk.vault.updateObject({
97
- id: options.id,
98
- value: options.value,
99
- ...(options.versionCheck && { versionCheck: options.versionCheck }),
100
- });
101
- outputSuccess('Updated vault object', result);
102
- }
103
- catch (error) {
104
- handleApiError(error);
105
- }
106
- }
107
- export async function runVaultDelete(id, apiKey, baseUrl) {
108
- const client = createWorkOSClient(apiKey, baseUrl);
109
- try {
110
- await client.sdk.vault.deleteObject({ id });
111
- outputSuccess('Deleted vault object', { id });
112
- }
113
- catch (error) {
114
- handleApiError(error);
115
- }
116
- }
117
- export async function runVaultDescribe(id, apiKey, baseUrl) {
118
- const client = createWorkOSClient(apiKey, baseUrl);
119
- try {
120
- const result = await client.sdk.vault.describeObject({ id });
121
- outputJson(result);
122
- }
123
- catch (error) {
124
- handleApiError(error);
125
- }
126
- }
127
- export async function runVaultListVersions(id, apiKey, baseUrl) {
128
- const client = createWorkOSClient(apiKey, baseUrl);
129
- try {
130
- const result = await client.sdk.vault.listObjectVersions({ id });
131
- outputJson(result);
132
- }
133
- catch (error) {
134
- handleApiError(error);
135
- }
136
- }
137
- export async function readValueFromStdin() {
138
- const chunks = [];
139
- for await (const chunk of process.stdin) {
140
- chunks.push(chunk);
141
- }
142
- const value = Buffer.concat(chunks)
143
- .toString('utf-8')
144
- .replace(/\r?\n$/, '');
145
- if (value.length === 0) {
146
- exitWithError({
147
- code: 'empty_stdin',
148
- message: 'No value provided on stdin. Pipe a value or pass --value directly.',
149
- });
150
- }
151
- return value;
152
- }
153
- //# sourceMappingURL=vault.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/commands/vault.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport { createWorkOSClient } from '../lib/workos-client.js';\nimport { formatTable } from '../utils/table.js';\nimport { outputSuccess, outputJson, isJsonMode, exitWithError } from '../utils/output.js';\nimport { createApiErrorHandler } from '../lib/api-error-handler.js';\n\nconst handleApiError = createApiErrorHandler('Vault');\n\nexport interface VaultListOptions {\n limit?: number;\n before?: string;\n after?: string;\n order?: string;\n}\n\nexport async function runVaultList(options: VaultListOptions, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.sdk.vault.listObjects({\n limit: options.limit,\n before: options.before,\n after: options.after,\n order: options.order as 'asc' | 'desc' | undefined,\n });\n\n if (isJsonMode()) {\n outputJson({ data: result.data, listMetadata: result.listMetadata });\n return;\n }\n\n if (result.data.length === 0) {\n console.log('No vault objects found.');\n return;\n }\n\n const rows = result.data.map((obj) => [obj.id, obj.name, obj.updatedAt ? String(obj.updatedAt) : chalk.dim('-')]);\n\n console.log(formatTable([{ header: 'ID' }, { header: 'Name' }, { header: 'Updated At' }], rows));\n\n const { before, after } = result.listMetadata;\n if (before && after) {\n console.log(chalk.dim(`Before: ${before} After: ${after}`));\n } else if (before) {\n console.log(chalk.dim(`Before: ${before}`));\n } else if (after) {\n console.log(chalk.dim(`After: ${after}`));\n }\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runVaultGet(id: string, decrypt: boolean, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n if (decrypt) {\n const result = await client.sdk.vault.readObject({ id });\n outputJson(result);\n } else {\n const result = await client.sdk.vault.describeObject({ id });\n outputJson(result);\n }\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runVaultGetByName(\n name: string,\n decrypt: boolean,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.sdk.vault.readObjectByName(name);\n if (decrypt) {\n outputJson(result);\n } else {\n const { value: _stripped, ...metadata } = result;\n outputJson(metadata);\n }\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport interface VaultCreateOptions {\n name: string;\n value: string;\n org?: string;\n}\n\nexport async function runVaultCreate(options: VaultCreateOptions, apiKey: string, baseUrl?: string): Promise<void> {\n if (!options.org) {\n exitWithError({\n code: 'missing_org',\n message: 'The --org flag is required. Vault objects must be scoped to an organization.',\n });\n }\n\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.sdk.vault.createObject({\n name: options.name,\n value: options.value,\n context: { organizationId: options.org },\n });\n outputSuccess('Created vault object', result);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport interface VaultUpdateOptions {\n id: string;\n value: string;\n versionCheck?: string;\n}\n\nexport async function runVaultUpdate(options: VaultUpdateOptions, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.sdk.vault.updateObject({\n id: options.id,\n value: options.value,\n ...(options.versionCheck && { versionCheck: options.versionCheck }),\n });\n outputSuccess('Updated vault object', result);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runVaultDelete(id: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n await client.sdk.vault.deleteObject({ id });\n outputSuccess('Deleted vault object', { id });\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runVaultDescribe(id: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.sdk.vault.describeObject({ id });\n outputJson(result);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runVaultListVersions(id: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.sdk.vault.listObjectVersions({ id });\n outputJson(result);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function readValueFromStdin(): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(chunk);\n }\n const value = Buffer.concat(chunks)\n .toString('utf-8')\n .replace(/\\r?\\n$/, '');\n if (value.length === 0) {\n exitWithError({\n code: 'empty_stdin',\n message: 'No value provided on stdin. Pipe a value or pass --value directly.',\n });\n }\n return value;\n}\n"]}
@@ -1,25 +0,0 @@
1
- /**
2
- * verify-login: prove the AuthKit login loop end-to-end against the active
3
- * environment, headlessly (no browser, no email/OTP retrieval).
4
- *
5
- * The command creates a throwaway user, authenticates it with the password
6
- * grant, asserts access + refresh tokens come back, and deletes the user in a
7
- * `finally` block so cleanup always runs. It refuses to touch a production
8
- * environment (unconditional, no override) because it mutates real users.
9
- */
10
- export type VerifyLoginMethod = 'password';
11
- export interface VerifyLoginOptions {
12
- /** Already resolved by bin.ts via resolveApiKey (exits 4 if none). */
13
- apiKey: string;
14
- /** --client-id ?? activeEnv.clientId. */
15
- clientId?: string;
16
- /** resolveApiBaseUrl(). */
17
- baseUrl?: string;
18
- /** activeEnv.type — drives the production refusal. */
19
- envType?: 'production' | 'sandbox' | 'unclaimed' | null;
20
- /** activeEnv.name — display only. */
21
- envName?: string;
22
- /** Authentication method to verify (default 'password'). */
23
- method?: VerifyLoginMethod;
24
- }
25
- export declare function runVerifyLogin(options: VerifyLoginOptions): Promise<void>;
@@ -1,158 +0,0 @@
1
- /**
2
- * verify-login: prove the AuthKit login loop end-to-end against the active
3
- * environment, headlessly (no browser, no email/OTP retrieval).
4
- *
5
- * The command creates a throwaway user, authenticates it with the password
6
- * grant, asserts access + refresh tokens come back, and deletes the user in a
7
- * `finally` block so cleanup always runs. It refuses to touch a production
8
- * environment (unconditional, no override) because it mutates real users.
9
- */
10
- import chalk from 'chalk';
11
- import { createWorkOSClient } from '../lib/workos-client.js';
12
- import { outputJson, isJsonMode, exitWithError } from '../utils/output.js';
13
- import { exitWithCode, ExitCode } from '../utils/exit-codes.js';
14
- import { formatWorkOSCommand } from '../utils/command-invocation.js';
15
- /**
16
- * A clearly-labeled, non-routable throwaway email so the user is obvious in the
17
- * dashboard if cleanup ever fails.
18
- */
19
- function generateEmail() {
20
- return `verify-login+${crypto.randomUUID()}@example.workos.dev`;
21
- }
22
- /**
23
- * A strong random password (>= 24 chars) mixing character classes so it
24
- * satisfies the API password policy regardless of the specific rules. The
25
- * fixed `Aa1!` suffix guarantees upper/lower/digit/symbol coverage on top of
26
- * the random base64url body.
27
- */
28
- function generatePassword() {
29
- const bytes = new Uint8Array(24);
30
- crypto.getRandomValues(bytes);
31
- const body = Buffer.from(bytes).toString('base64url');
32
- return `${body}Aa1!`;
33
- }
34
- /**
35
- * Translate an authenticate error into a human-readable check detail. When the
36
- * failure looks like "password authentication not enabled" (a config gap, not a
37
- * broken login) surface an actionable message instead of a bare error so agents
38
- * do not misread it as "login is broken".
39
- *
40
- * NOTE: the exact code/message returned when password auth is disabled is
41
- * UNCONFIRMED against a live environment; the heuristic below is best-effort and
42
- * falls back to the raw error message.
43
- */
44
- function describeAuthError(err) {
45
- const message = err instanceof Error ? err.message : String(err);
46
- if (/password/i.test(message) && /(not enabled|disabled|not available|unavailable)/i.test(message)) {
47
- return ('Password authentication is not enabled for this environment. Enable it in the WorkOS ' +
48
- 'Dashboard (User Management → Authentication).');
49
- }
50
- return message;
51
- }
52
- function printHuman(result) {
53
- for (const check of result.checks) {
54
- const mark = check.passed ? chalk.green('✓') : chalk.red('✗');
55
- console.log(`${mark} ${check.detail}`);
56
- }
57
- if (result.userId) {
58
- if (result.userCleanedUp) {
59
- console.log(`${chalk.green('✓')} Cleaned up test user`);
60
- }
61
- else {
62
- console.log(chalk.yellow(`⚠ Could not delete test user ${result.orphanedUserId} — delete it manually in the dashboard.`));
63
- }
64
- }
65
- const envLabel = result.environment ?? 'the active environment';
66
- if (result.success) {
67
- console.log(chalk.green(`Login verification passed for ${envLabel}.`));
68
- }
69
- else {
70
- console.log(chalk.red(`Login verification FAILED for ${envLabel}.`));
71
- }
72
- }
73
- export async function runVerifyLogin(options) {
74
- const method = options.method ?? 'password';
75
- const environment = options.envName ?? null;
76
- // 1. Production refusal — before any SDK call. verify-login mutates real
77
- // users, so it must never touch production. Refuse on either the stored env
78
- // type OR a production-format key (belt-and-suspenders for keys passed via
79
- // --api-key / WORKOS_API_KEY with no matching stored env).
80
- if (options.envType === 'production' || options.apiKey.startsWith('sk_live_')) {
81
- exitWithError({
82
- code: 'production_env_refused',
83
- message: 'verify-login creates and deletes real users and will not run against a production ' +
84
- 'environment. Switch to a staging/sandbox environment first.',
85
- });
86
- }
87
- // 2. clientId check — required for the password grant.
88
- const clientId = options.clientId;
89
- if (!clientId) {
90
- exitWithError({
91
- code: 'missing_client_id',
92
- message: `No client ID for the active environment. Pass --client-id, or configure one via ` +
93
- `\`${formatWorkOSCommand('env add --client-id <id>')}\`.`,
94
- });
95
- }
96
- // 3. Construct the client.
97
- const { sdk } = createWorkOSClient(options.apiKey, options.baseUrl);
98
- // 4. Generate throwaway credentials.
99
- const email = generateEmail();
100
- const password = generatePassword();
101
- // 5. Run the round-trip. Cleanup runs in `finally` so no orphaned user
102
- // remains on the happy path or on an authentication failure.
103
- const checks = [];
104
- let userId = null;
105
- let userCleanedUp = true;
106
- let orphanedUserId = null;
107
- try {
108
- const user = await sdk.userManagement.createUser({ email, password, emailVerified: true });
109
- userId = user.id;
110
- checks.push({ name: 'create_user', passed: true, detail: `Created test user ${user.id}` });
111
- const auth = await sdk.userManagement.authenticateWithPassword({ clientId, email, password });
112
- checks.push({ name: 'authenticate', passed: true, detail: 'password grant succeeded' });
113
- const hasTokens = Boolean(auth.accessToken && auth.refreshToken);
114
- checks.push({
115
- name: 'tokens',
116
- passed: hasTokens,
117
- detail: hasTokens ? 'access + refresh tokens present' : 'tokens missing from response',
118
- });
119
- }
120
- catch (err) {
121
- const failedStep = userId ? 'authenticate' : 'create_user';
122
- checks.push({ name: failedStep, passed: false, detail: describeAuthError(err) });
123
- }
124
- finally {
125
- if (userId) {
126
- try {
127
- await sdk.userManagement.deleteUser(userId);
128
- }
129
- catch {
130
- userCleanedUp = false;
131
- orphanedUserId = userId;
132
- }
133
- }
134
- }
135
- const success = checks.length > 0 && checks.every((c) => c.passed);
136
- const result = {
137
- success,
138
- method,
139
- environment,
140
- checks,
141
- userId,
142
- userCleanedUp,
143
- orphanedUserId,
144
- };
145
- if (isJsonMode()) {
146
- outputJson(result);
147
- }
148
- else {
149
- printHuman(result);
150
- }
151
- // Exit follows the login verdict, not cleanup: a leaked user is surfaced
152
- // machine-readably but does not fail the verification. No error arg here — the
153
- // verdict was already emitted, so a second envelope would confuse parsers.
154
- if (!success) {
155
- exitWithCode(ExitCode.GENERAL_ERROR);
156
- }
157
- }
158
- //# sourceMappingURL=verify-login.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify-login.js","sourceRoot":"","sources":["../../src/commands/verify-login.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * verify-login: prove the AuthKit login loop end-to-end against the active\n * environment, headlessly (no browser, no email/OTP retrieval).\n *\n * The command creates a throwaway user, authenticates it with the password\n * grant, asserts access + refresh tokens come back, and deletes the user in a\n * `finally` block so cleanup always runs. It refuses to touch a production\n * environment (unconditional, no override) because it mutates real users.\n */\n\nimport chalk from 'chalk';\nimport { createWorkOSClient } from '../lib/workos-client.js';\nimport { outputJson, isJsonMode, exitWithError } from '../utils/output.js';\nimport { exitWithCode, ExitCode } from '../utils/exit-codes.js';\nimport { formatWorkOSCommand } from '../utils/command-invocation.js';\n\n// Widen this union (e.g. 'magic-auth') only alongside the code path that verifies it.\nexport type VerifyLoginMethod = 'password';\n\nexport interface VerifyLoginOptions {\n /** Already resolved by bin.ts via resolveApiKey (exits 4 if none). */\n apiKey: string;\n /** --client-id ?? activeEnv.clientId. */\n clientId?: string;\n /** resolveApiBaseUrl(). */\n baseUrl?: string;\n /** activeEnv.type — drives the production refusal. */\n envType?: 'production' | 'sandbox' | 'unclaimed' | null;\n /** activeEnv.name — display only. */\n envName?: string;\n /** Authentication method to verify (default 'password'). */\n method?: VerifyLoginMethod;\n}\n\ninterface Check {\n name: 'create_user' | 'authenticate' | 'tokens';\n passed: boolean;\n detail: string;\n}\n\ninterface VerifyLoginResult {\n success: boolean;\n method: VerifyLoginMethod;\n environment: string | null;\n checks: Check[];\n userId: string | null;\n userCleanedUp: boolean;\n orphanedUserId: string | null;\n}\n\n/**\n * A clearly-labeled, non-routable throwaway email so the user is obvious in the\n * dashboard if cleanup ever fails.\n */\nfunction generateEmail(): string {\n return `verify-login+${crypto.randomUUID()}@example.workos.dev`;\n}\n\n/**\n * A strong random password (>= 24 chars) mixing character classes so it\n * satisfies the API password policy regardless of the specific rules. The\n * fixed `Aa1!` suffix guarantees upper/lower/digit/symbol coverage on top of\n * the random base64url body.\n */\nfunction generatePassword(): string {\n const bytes = new Uint8Array(24);\n crypto.getRandomValues(bytes);\n const body = Buffer.from(bytes).toString('base64url');\n return `${body}Aa1!`;\n}\n\n/**\n * Translate an authenticate error into a human-readable check detail. When the\n * failure looks like \"password authentication not enabled\" (a config gap, not a\n * broken login) surface an actionable message instead of a bare error so agents\n * do not misread it as \"login is broken\".\n *\n * NOTE: the exact code/message returned when password auth is disabled is\n * UNCONFIRMED against a live environment; the heuristic below is best-effort and\n * falls back to the raw error message.\n */\nfunction describeAuthError(err: unknown): string {\n const message = err instanceof Error ? err.message : String(err);\n if (/password/i.test(message) && /(not enabled|disabled|not available|unavailable)/i.test(message)) {\n return (\n 'Password authentication is not enabled for this environment. Enable it in the WorkOS ' +\n 'Dashboard (User Management → Authentication).'\n );\n }\n return message;\n}\n\nfunction printHuman(result: VerifyLoginResult): void {\n for (const check of result.checks) {\n const mark = check.passed ? chalk.green('✓') : chalk.red('✗');\n console.log(`${mark} ${check.detail}`);\n }\n\n if (result.userId) {\n if (result.userCleanedUp) {\n console.log(`${chalk.green('✓')} Cleaned up test user`);\n } else {\n console.log(\n chalk.yellow(`⚠ Could not delete test user ${result.orphanedUserId} — delete it manually in the dashboard.`),\n );\n }\n }\n\n const envLabel = result.environment ?? 'the active environment';\n if (result.success) {\n console.log(chalk.green(`Login verification passed for ${envLabel}.`));\n } else {\n console.log(chalk.red(`Login verification FAILED for ${envLabel}.`));\n }\n}\n\nexport async function runVerifyLogin(options: VerifyLoginOptions): Promise<void> {\n const method: VerifyLoginMethod = options.method ?? 'password';\n const environment = options.envName ?? null;\n\n // 1. Production refusal — before any SDK call. verify-login mutates real\n // users, so it must never touch production. Refuse on either the stored env\n // type OR a production-format key (belt-and-suspenders for keys passed via\n // --api-key / WORKOS_API_KEY with no matching stored env).\n if (options.envType === 'production' || options.apiKey.startsWith('sk_live_')) {\n exitWithError({\n code: 'production_env_refused',\n message:\n 'verify-login creates and deletes real users and will not run against a production ' +\n 'environment. Switch to a staging/sandbox environment first.',\n });\n }\n\n // 2. clientId check — required for the password grant.\n const clientId = options.clientId;\n if (!clientId) {\n exitWithError({\n code: 'missing_client_id',\n message:\n `No client ID for the active environment. Pass --client-id, or configure one via ` +\n `\\`${formatWorkOSCommand('env add --client-id <id>')}\\`.`,\n });\n }\n\n // 3. Construct the client.\n const { sdk } = createWorkOSClient(options.apiKey, options.baseUrl);\n\n // 4. Generate throwaway credentials.\n const email = generateEmail();\n const password = generatePassword();\n\n // 5. Run the round-trip. Cleanup runs in `finally` so no orphaned user\n // remains on the happy path or on an authentication failure.\n const checks: Check[] = [];\n let userId: string | null = null;\n let userCleanedUp = true;\n let orphanedUserId: string | null = null;\n\n try {\n const user = await sdk.userManagement.createUser({ email, password, emailVerified: true });\n userId = user.id;\n checks.push({ name: 'create_user', passed: true, detail: `Created test user ${user.id}` });\n\n const auth = await sdk.userManagement.authenticateWithPassword({ clientId, email, password });\n checks.push({ name: 'authenticate', passed: true, detail: 'password grant succeeded' });\n\n const hasTokens = Boolean(auth.accessToken && auth.refreshToken);\n checks.push({\n name: 'tokens',\n passed: hasTokens,\n detail: hasTokens ? 'access + refresh tokens present' : 'tokens missing from response',\n });\n } catch (err) {\n const failedStep: Check['name'] = userId ? 'authenticate' : 'create_user';\n checks.push({ name: failedStep, passed: false, detail: describeAuthError(err) });\n } finally {\n if (userId) {\n try {\n await sdk.userManagement.deleteUser(userId);\n } catch {\n userCleanedUp = false;\n orphanedUserId = userId;\n }\n }\n }\n\n const success = checks.length > 0 && checks.every((c) => c.passed);\n\n const result: VerifyLoginResult = {\n success,\n method,\n environment,\n checks,\n userId,\n userCleanedUp,\n orphanedUserId,\n };\n\n if (isJsonMode()) {\n outputJson(result);\n } else {\n printHuman(result);\n }\n\n // Exit follows the login verdict, not cleanup: a leaked user is surfaced\n // machine-readably but does not fail the verification. No error arg here — the\n // verdict was already emitted, so a second envelope would confuse parsers.\n if (!success) {\n exitWithCode(ExitCode.GENERAL_ERROR);\n }\n}\n"]}
@@ -1,3 +0,0 @@
1
- export declare function runWebhookList(apiKey: string, baseUrl?: string): Promise<void>;
2
- export declare function runWebhookCreate(url: string, events: string[], apiKey: string, baseUrl?: string): Promise<void>;
3
- export declare function runWebhookDelete(id: string, apiKey: string, baseUrl?: string): Promise<void>;
@@ -1,92 +0,0 @@
1
- import chalk from 'chalk';
2
- import { createWorkOSClient } from '../lib/workos-client.js';
3
- import { formatTable } from '../utils/table.js';
4
- import { outputJson, outputSuccess, isJsonMode } from '../utils/output.js';
5
- import { createApiErrorHandler } from '../lib/api-error-handler.js';
6
- const handleApiError = createApiErrorHandler('Webhook');
7
- export async function runWebhookList(apiKey, baseUrl) {
8
- const client = createWorkOSClient(apiKey, baseUrl);
9
- try {
10
- const result = await client.webhooks.list();
11
- if (isJsonMode()) {
12
- // Normalize snake_case list_metadata to camelCase for consistent CLI output
13
- outputJson({
14
- data: result.data,
15
- listMetadata: {
16
- before: result.list_metadata.before,
17
- after: result.list_metadata.after,
18
- },
19
- });
20
- return;
21
- }
22
- if (result.data.length === 0) {
23
- console.log('No webhook endpoints found.');
24
- return;
25
- }
26
- const maxEventsChars = 60;
27
- const rows = result.data.map((ep) => {
28
- const joined = ep.events.join(', ');
29
- if (joined.length <= maxEventsChars) {
30
- return [ep.id, ep.endpoint_url, joined, ep.created_at];
31
- }
32
- // Always include the first event so the cell isn't content-free when a single event name exceeds the budget.
33
- const visible = [ep.events[0]];
34
- let len = ep.events[0].length;
35
- for (let i = 1; i < ep.events.length; i++) {
36
- const next = len + 2 + ep.events[i].length;
37
- if (next > maxEventsChars)
38
- break;
39
- visible.push(ep.events[i]);
40
- len = next;
41
- }
42
- const hidden = ep.events.length - visible.length;
43
- const suffix = hidden > 0 ? `, … (+${hidden} more)` : '';
44
- return [ep.id, ep.endpoint_url, `${visible.join(', ')}${suffix}`, ep.created_at];
45
- });
46
- console.log(formatTable([{ header: 'ID' }, { header: 'URL' }, { header: 'Events' }, { header: 'Created' }], rows));
47
- const { before, after } = result.list_metadata;
48
- if (before && after) {
49
- console.log(chalk.dim(`Before: ${before} After: ${after}`));
50
- }
51
- else if (before) {
52
- console.log(chalk.dim(`Before: ${before}`));
53
- }
54
- else if (after) {
55
- console.log(chalk.dim(`After: ${after}`));
56
- }
57
- }
58
- catch (error) {
59
- handleApiError(error);
60
- }
61
- }
62
- export async function runWebhookCreate(url, events, apiKey, baseUrl) {
63
- const client = createWorkOSClient(apiKey, baseUrl);
64
- try {
65
- const endpoint = await client.webhooks.create(url, events);
66
- if (isJsonMode()) {
67
- outputJson({ status: 'ok', message: 'Created webhook endpoint', data: endpoint });
68
- return;
69
- }
70
- console.log(chalk.green('Created webhook endpoint'));
71
- console.log(JSON.stringify(endpoint, null, 2));
72
- if (endpoint.secret) {
73
- console.log('');
74
- console.log(chalk.yellow('Signing secret: ') + endpoint.secret);
75
- console.log(chalk.yellow('Save this secret now — it will not be shown again.'));
76
- }
77
- }
78
- catch (error) {
79
- handleApiError(error);
80
- }
81
- }
82
- export async function runWebhookDelete(id, apiKey, baseUrl) {
83
- const client = createWorkOSClient(apiKey, baseUrl);
84
- try {
85
- await client.webhooks.delete(id);
86
- outputSuccess('Deleted webhook endpoint', { id });
87
- }
88
- catch (error) {
89
- handleApiError(error);
90
- }
91
- }
92
- //# sourceMappingURL=webhook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/commands/webhook.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport { createWorkOSClient } from '../lib/workos-client.js';\nimport { formatTable } from '../utils/table.js';\nimport { outputJson, outputSuccess, isJsonMode } from '../utils/output.js';\nimport { createApiErrorHandler } from '../lib/api-error-handler.js';\n\nconst handleApiError = createApiErrorHandler('Webhook');\n\nexport async function runWebhookList(apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.webhooks.list();\n\n if (isJsonMode()) {\n // Normalize snake_case list_metadata to camelCase for consistent CLI output\n outputJson({\n data: result.data,\n listMetadata: {\n before: result.list_metadata.before,\n after: result.list_metadata.after,\n },\n });\n return;\n }\n\n if (result.data.length === 0) {\n console.log('No webhook endpoints found.');\n return;\n }\n\n const maxEventsChars = 60;\n const rows = result.data.map((ep) => {\n const joined = ep.events.join(', ');\n if (joined.length <= maxEventsChars) {\n return [ep.id, ep.endpoint_url, joined, ep.created_at];\n }\n // Always include the first event so the cell isn't content-free when a single event name exceeds the budget.\n const visible: string[] = [ep.events[0]];\n let len = ep.events[0].length;\n for (let i = 1; i < ep.events.length; i++) {\n const next = len + 2 + ep.events[i].length;\n if (next > maxEventsChars) break;\n visible.push(ep.events[i]);\n len = next;\n }\n const hidden = ep.events.length - visible.length;\n const suffix = hidden > 0 ? `, … (+${hidden} more)` : '';\n return [ep.id, ep.endpoint_url, `${visible.join(', ')}${suffix}`, ep.created_at];\n });\n\n console.log(formatTable([{ header: 'ID' }, { header: 'URL' }, { header: 'Events' }, { header: 'Created' }], rows));\n\n const { before, after } = result.list_metadata;\n if (before && after) {\n console.log(chalk.dim(`Before: ${before} After: ${after}`));\n } else if (before) {\n console.log(chalk.dim(`Before: ${before}`));\n } else if (after) {\n console.log(chalk.dim(`After: ${after}`));\n }\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runWebhookCreate(url: string, events: string[], apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const endpoint = await client.webhooks.create(url, events);\n\n if (isJsonMode()) {\n outputJson({ status: 'ok', message: 'Created webhook endpoint', data: endpoint });\n return;\n }\n\n console.log(chalk.green('Created webhook endpoint'));\n console.log(JSON.stringify(endpoint, null, 2));\n if (endpoint.secret) {\n console.log('');\n console.log(chalk.yellow('Signing secret: ') + endpoint.secret);\n console.log(chalk.yellow('Save this secret now — it will not be shown again.'));\n }\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runWebhookDelete(id: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n await client.webhooks.delete(id);\n outputSuccess('Deleted webhook endpoint', { id });\n } catch (error) {\n handleApiError(error);\n }\n}\n"]}
@@ -1,10 +0,0 @@
1
- #!/bin/bash
2
- set -eux
3
- # Move to the project root
4
- SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5
- cd $SCRIPT_DIR/..
6
- OLD_VERSION="${1}"
7
- NEW_VERSION="${2}"
8
- # Do not tag and commit changes made by "npm version"
9
- export npm_config_git_tag_version=false
10
- npm version "${NEW_VERSION}"
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- import { type AnimationMode } from '../lib/logo-frames.js';
3
- interface AnimatedLogoProps {
4
- mode?: AnimationMode;
5
- paused?: boolean;
6
- }
7
- export declare function AnimatedLogo({ mode, paused }: AnimatedLogoProps): React.ReactElement;
8
- export {};
@@ -1,16 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMemo } from 'react';
3
- import { Box, Text } from 'ink';
4
- import { useAnimation } from '../hooks/useAnimation.js';
5
- import { getFrames, FRAME_DELAYS } from '../lib/logo-frames.js';
6
- export function AnimatedLogo({ mode = 'spin', paused = false }) {
7
- const frames = useMemo(() => getFrames(mode), [mode]);
8
- const frameIndex = useAnimation({
9
- frameCount: frames.length,
10
- frameDelayMs: FRAME_DELAYS[mode],
11
- paused,
12
- });
13
- const frame = frames[frameIndex];
14
- return (_jsxs(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", children: [frame.lines.map((line, i) => (_jsx(Text, { children: `\x1b[${frame.color}m${line}\x1b[0m` }, i))), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "WorkOS Installer" }) })] }));
15
- }
16
- //# sourceMappingURL=AnimatedLogo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnimatedLogo.js","sourceRoot":"","sources":["../../../src/dashboard/components/AnimatedLogo.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAsB,MAAM,uBAAuB,CAAC;AAOpF,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,MAAM,GAAG,KAAK,EAAqB;IAC/E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,YAAY,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC;QAChC,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAEjC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,aACpE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,KAAC,IAAI,cAAU,QAAQ,KAAK,CAAC,KAAK,IAAI,IAAI,SAAS,IAAxC,CAAC,CAA+C,CAC5D,CAAC,EACF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,uCAAwB,GAClC,IACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import React, { useMemo } from 'react';\nimport { Box, Text } from 'ink';\nimport { useAnimation } from '../hooks/useAnimation.js';\nimport { getFrames, FRAME_DELAYS, type AnimationMode } from '../lib/logo-frames.js';\n\ninterface AnimatedLogoProps {\n mode?: AnimationMode;\n paused?: boolean;\n}\n\nexport function AnimatedLogo({ mode = 'spin', paused = false }: AnimatedLogoProps): React.ReactElement {\n const frames = useMemo(() => getFrames(mode), [mode]);\n const frameIndex = useAnimation({\n frameCount: frames.length,\n frameDelayMs: FRAME_DELAYS[mode],\n paused,\n });\n\n const frame = frames[frameIndex];\n\n return (\n <Box flexDirection=\"column\" alignItems=\"center\" justifyContent=\"center\">\n {frame.lines.map((line, i) => (\n <Text key={i}>{`\\x1b[${frame.color}m${line}\\x1b[0m`}</Text>\n ))}\n <Box marginTop={1}>\n <Text dimColor>WorkOS Installer</Text>\n </Box>\n </Box>\n );\n}\n"]}
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- interface OutputLine {
3
- text: string;
4
- isError?: boolean;
5
- isStatus?: boolean;
6
- }
7
- interface CompletionViewProps {
8
- success: boolean;
9
- summary?: string;
10
- outputLog: OutputLine[];
11
- }
12
- export declare function CompletionView({ success, summary, outputLog }: CompletionViewProps): React.ReactElement;
13
- export {};
@@ -1,25 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from 'react';
3
- import { Box, Text, useInput, useApp } from 'ink';
4
- import { getLockArt } from '../../utils/lock-art.js';
5
- export function CompletionView({ success, summary, outputLog }) {
6
- const { exit } = useApp();
7
- const [scrollOffset, setScrollOffset] = useState(Math.max(0, outputLog.length - 20));
8
- useInput((input, key) => {
9
- if (key.upArrow) {
10
- setScrollOffset((prev) => Math.max(0, prev - 1));
11
- }
12
- else if (key.downArrow) {
13
- setScrollOffset((prev) => Math.min(outputLog.length - 1, prev + 1));
14
- }
15
- else if (key.return || input === 'q') {
16
- exit();
17
- }
18
- });
19
- const visibleLines = outputLog.slice(scrollOffset, scrollOffset + 20);
20
- const expression = success ? 'success' : 'error';
21
- const lockLines = getLockArt(expression, false);
22
- const color = success ? 'green' : 'red';
23
- return (_jsxs(Box, { flexDirection: "column", padding: 1, width: "100%", height: "100%", children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Box, { flexDirection: "column", marginRight: 2, children: lockLines.map((line, i) => (_jsx(Text, { color: color, children: line }, i))) }), _jsxs(Box, { flexDirection: "column", justifyContent: "center", children: [_jsx(Text, { bold: true, color: color, children: success ? 'WorkOS AuthKit Installed' : 'Installation Failed' }), summary && _jsx(Text, { dimColor: true, children: summary })] })] }), _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", flexGrow: 1, paddingX: 1, children: [_jsxs(Text, { bold: true, dimColor: true, children: ["Output Log [", scrollOffset + 1, "-", scrollOffset + visibleLines.length, " of ", outputLog.length, "]"] }), visibleLines.map((line, i) => (_jsx(Text, { color: line.isError ? 'red' : line.isStatus ? 'yellow' : undefined, children: line.text }, i)))] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "\u2191/\u2193 to scroll, Enter or Q to exit" }) })] }));
24
- }
25
- //# sourceMappingURL=CompletionView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CompletionView.js","sourceRoot":"","sources":["../../../src/dashboard/components/CompletionView.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { Box, Text, useInput, useApp } from 'ink';\nimport { getLockArt, type LockExpression } from '../../utils/lock-art.js';\n\ninterface OutputLine {\n text: string;\n isError?: boolean;\n isStatus?: boolean;\n}\n\ninterface CompletionViewProps {\n success: boolean;\n summary?: string;\n outputLog: OutputLine[];\n}\n\nexport function CompletionView({ success, summary, outputLog }: CompletionViewProps): React.ReactElement {\n const { exit } = useApp();\n const [scrollOffset, setScrollOffset] = useState(Math.max(0, outputLog.length - 20));\n\n useInput((input, key) => {\n if (key.upArrow) {\n setScrollOffset((prev) => Math.max(0, prev - 1));\n } else if (key.downArrow) {\n setScrollOffset((prev) => Math.min(outputLog.length - 1, prev + 1));\n } else if (key.return || input === 'q') {\n exit();\n }\n });\n\n const visibleLines = outputLog.slice(scrollOffset, scrollOffset + 20);\n\n const expression: LockExpression = success ? 'success' : 'error';\n const lockLines = getLockArt(expression, false);\n const color = success ? 'green' : 'red';\n\n return (\n <Box flexDirection=\"column\" padding={1} width=\"100%\" height=\"100%\">\n {/* Lock + Header */}\n <Box marginBottom={1}>\n <Box flexDirection=\"column\" marginRight={2}>\n {lockLines.map((line, i) => (\n <Text key={i} color={color}>\n {line}\n </Text>\n ))}\n </Box>\n <Box flexDirection=\"column\" justifyContent=\"center\">\n <Text bold color={color}>\n {success ? 'WorkOS AuthKit Installed' : 'Installation Failed'}\n </Text>\n {summary && <Text dimColor>{summary}</Text>}\n </Box>\n </Box>\n\n {/* Scrollable Log */}\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"gray\" flexGrow={1} paddingX={1}>\n <Text bold dimColor>\n Output Log [{scrollOffset + 1}-{scrollOffset + visibleLines.length} of {outputLog.length}]\n </Text>\n {visibleLines.map((line, i) => (\n <Text key={i} color={line.isError ? 'red' : line.isStatus ? 'yellow' : undefined}>\n {line.text}\n </Text>\n ))}\n </Box>\n\n {/* Footer */}\n <Box marginTop={1}>\n <Text dimColor>↑/↓ to scroll, Enter or Q to exit</Text>\n </Box>\n </Box>\n );\n}\n"]}
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- interface ConfirmPromptProps {
3
- message: string;
4
- warning?: string;
5
- files?: string[];
6
- onConfirm: (confirmed: boolean) => void;
7
- }
8
- export declare function ConfirmPrompt({ message, warning, files, onConfirm }: ConfirmPromptProps): React.ReactElement;
9
- export {};
@@ -1,25 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { useState } from 'react';
3
- import { Box, Text, useInput } from 'ink';
4
- export function ConfirmPrompt({ message, warning, files, onConfirm }) {
5
- const [selected, setSelected] = useState('yes');
6
- useInput((input, key) => {
7
- if (key.leftArrow || input === 'h') {
8
- setSelected('yes');
9
- }
10
- else if (key.rightArrow || input === 'l') {
11
- setSelected('no');
12
- }
13
- else if (input === 'y' || input === 'Y') {
14
- onConfirm(true);
15
- }
16
- else if (input === 'n' || input === 'N') {
17
- onConfirm(false);
18
- }
19
- else if (key.return) {
20
- onConfirm(selected === 'yes');
21
- }
22
- });
23
- return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [warning && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: "yellow", bold: true, children: ["\u26A0 ", warning] }) })), files && files.length > 0 && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [files.slice(0, 10).map((file, i) => (_jsx(Text, { dimColor: true, children: file }, i))), files.length > 10 && _jsxs(Text, { dimColor: true, children: ["...and ", files.length - 10, " more"] })] })), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: message }) }), _jsxs(Box, { children: [_jsxs(Text, { color: selected === 'yes' ? 'cyan' : undefined, bold: selected === 'yes', children: [selected === 'yes' ? '● ' : '○ ', "Yes"] }), _jsx(Text, { children: " " }), _jsxs(Text, { color: selected === 'no' ? 'cyan' : undefined, bold: selected === 'no', children: [selected === 'no' ? '● ' : '○ ', "No"] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "\u2190/\u2192 or y/n to select | Enter to confirm" }) })] }));
24
- }
25
- //# sourceMappingURL=ConfirmPrompt.js.map