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,58 +0,0 @@
1
- /**
2
- * Centralized symbol and color definitions for CLI output.
3
- *
4
- * Provides consistent visual vocabulary across all CLI handlers.
5
- * Supports both Unicode and ASCII fallback for terminal compatibility.
6
- */
7
- import chalk from 'chalk';
8
- import { isUnicodeSupported } from './vendor/is-unicorn-supported.js';
9
- const unicode = isUnicodeSupported();
10
- export const symbols = {
11
- success: unicode ? '✓' : '+',
12
- error: unicode ? '✗' : 'x',
13
- warning: '!',
14
- info: unicode ? 'ℹ' : 'i',
15
- arrow: unicode ? '→' : '->',
16
- bullet: unicode ? '•' : '*',
17
- progressFilled: unicode ? '▓' : '#',
18
- progressEmpty: unicode ? '░' : '-',
19
- };
20
- /**
21
- * WorkOS brand palette (hex). Single source shared by the `ui` facade and the
22
- * install summary box so the flat CLI output and the summary render identical
23
- * brand colors. chalk auto-disables color when `chalk.level === 0` (JSON mode).
24
- */
25
- export const palette = {
26
- accent: chalk.hex('#6363f1'), // WorkOS indigo
27
- green: chalk.hex('#34d399'),
28
- red: chalk.hex('#f87171'),
29
- yellow: chalk.hex('#fbbf24'),
30
- cyan: chalk.hex('#7dd3fc'), // values, paths, URLs
31
- };
32
- /**
33
- * Pre-styled output functions for consistent CLI formatting.
34
- * Uses chalk for coloring with appropriate symbols.
35
- */
36
- export const styled = {
37
- /** Green checkmark with message */
38
- success: (text) => chalk.green(`${symbols.success} ${text}`),
39
- /** Red X with message */
40
- error: (text) => chalk.red(`${symbols.error} ${text}`),
41
- /** Yellow warning with message */
42
- warning: (text) => chalk.yellow(`${symbols.warning} ${text}`),
43
- /** Dim info text */
44
- info: (text) => chalk.dim(`${symbols.info} ${text}`),
45
- /** Cyan arrow for actions */
46
- action: (text) => chalk.cyan(`${symbols.arrow} ${text}`),
47
- /** Label with value, label is dimmed */
48
- label: (label, value) => `${chalk.dim(label)} ${value}`,
49
- /** Phase indicator with visual progress bar */
50
- phase: (num, total, name) => {
51
- const filled = symbols.progressFilled.repeat(num);
52
- const empty = symbols.progressEmpty.repeat(total - num);
53
- return `${chalk.cyan(filled)}${chalk.dim(empty)} ${name}`;
54
- },
55
- /** Bullet point for lists */
56
- bullet: (text) => ` ${symbols.bullet} ${text}`,
57
- };
58
- //# sourceMappingURL=cli-symbols.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-symbols.js","sourceRoot":"","sources":["../../src/utils/cli-symbols.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Centralized symbol and color definitions for CLI output.\n *\n * Provides consistent visual vocabulary across all CLI handlers.\n * Supports both Unicode and ASCII fallback for terminal compatibility.\n */\nimport chalk from 'chalk';\nimport { isUnicodeSupported } from './vendor/is-unicorn-supported.js';\n\nconst unicode = isUnicodeSupported();\n\nexport const symbols = {\n success: unicode ? '✓' : '+',\n error: unicode ? '✗' : 'x',\n warning: '!',\n info: unicode ? 'ℹ' : 'i',\n arrow: unicode ? '→' : '->',\n bullet: unicode ? '•' : '*',\n progressFilled: unicode ? '▓' : '#',\n progressEmpty: unicode ? '░' : '-',\n} as const;\n\n/**\n * WorkOS brand palette (hex). Single source shared by the `ui` facade and the\n * install summary box so the flat CLI output and the summary render identical\n * brand colors. chalk auto-disables color when `chalk.level === 0` (JSON mode).\n */\nexport const palette = {\n accent: chalk.hex('#6363f1'), // WorkOS indigo\n green: chalk.hex('#34d399'),\n red: chalk.hex('#f87171'),\n yellow: chalk.hex('#fbbf24'),\n cyan: chalk.hex('#7dd3fc'), // values, paths, URLs\n} as const;\n\n/**\n * Pre-styled output functions for consistent CLI formatting.\n * Uses chalk for coloring with appropriate symbols.\n */\nexport const styled = {\n /** Green checkmark with message */\n success: (text: string) => chalk.green(`${symbols.success} ${text}`),\n\n /** Red X with message */\n error: (text: string) => chalk.red(`${symbols.error} ${text}`),\n\n /** Yellow warning with message */\n warning: (text: string) => chalk.yellow(`${symbols.warning} ${text}`),\n\n /** Dim info text */\n info: (text: string) => chalk.dim(`${symbols.info} ${text}`),\n\n /** Cyan arrow for actions */\n action: (text: string) => chalk.cyan(`${symbols.arrow} ${text}`),\n\n /** Label with value, label is dimmed */\n label: (label: string, value: string) => `${chalk.dim(label)} ${value}`,\n\n /** Phase indicator with visual progress bar */\n phase: (num: number, total: number, name: string) => {\n const filled = symbols.progressFilled.repeat(num);\n const empty = symbols.progressEmpty.repeat(total - num);\n return `${chalk.cyan(filled)}${chalk.dim(empty)} ${name}`;\n },\n\n /** Bullet point for lists */\n bullet: (text: string) => ` ${symbols.bullet} ${text}`,\n} as const;\n"]}
@@ -1,10 +0,0 @@
1
- /**
2
- * Return the safest user-facing way to invoke this CLI.
3
- *
4
- * When the package is run through npm exec/npx, `workos ...` may resolve to an
5
- * older global binary in the user's shell. Recovery hints should keep using npx.
6
- */
7
- export declare function getWorkOSCommand(env?: NodeJS.ProcessEnv): string;
8
- export declare function formatWorkOSCommand(args: string, env?: NodeJS.ProcessEnv): string;
9
- export declare function shellQuoteArg(arg: string): string;
10
- export declare function formatWorkOSCommandArgs(args: string[], env?: NodeJS.ProcessEnv): string;
@@ -1,26 +0,0 @@
1
- /**
2
- * Return the safest user-facing way to invoke this CLI.
3
- *
4
- * When the package is run through npm exec/npx, `workos ...` may resolve to an
5
- * older global binary in the user's shell. Recovery hints should keep using npx.
6
- */
7
- export function getWorkOSCommand(env = process.env) {
8
- const npmCommand = env.npm_command;
9
- const npmExecPath = env.npm_execpath ?? '';
10
- const npmUserAgent = env.npm_config_user_agent ?? '';
11
- const launchedByNpmExec = npmCommand === 'exec' || npmExecPath.includes('npx-cli') || /\bnpx\//.test(npmUserAgent);
12
- return launchedByNpmExec ? 'npx workos@latest' : 'workos';
13
- }
14
- export function formatWorkOSCommand(args, env = process.env) {
15
- return `${getWorkOSCommand(env)} ${args}`;
16
- }
17
- export function shellQuoteArg(arg) {
18
- if (/^[A-Za-z0-9_./:=@+-]+$/.test(arg)) {
19
- return arg;
20
- }
21
- return `'${arg.replace(/'/g, `'\\''`)}'`;
22
- }
23
- export function formatWorkOSCommandArgs(args, env = process.env) {
24
- return [getWorkOSCommand(env), ...args.map(shellQuoteArg)].join(' ');
25
- }
26
- //# sourceMappingURL=command-invocation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-invocation.js","sourceRoot":"","sources":["../../src/utils/command-invocation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACnE,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC;IACnC,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;IAC3C,MAAM,YAAY,GAAG,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;IAErD,MAAM,iBAAiB,GAAG,UAAU,KAAK,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEnH,OAAO,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,MAAyB,OAAO,CAAC,GAAG;IACpF,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAc,EAAE,MAAyB,OAAO,CAAC,GAAG;IAC1F,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC","sourcesContent":["/**\n * Return the safest user-facing way to invoke this CLI.\n *\n * When the package is run through npm exec/npx, `workos ...` may resolve to an\n * older global binary in the user's shell. Recovery hints should keep using npx.\n */\nexport function getWorkOSCommand(env: NodeJS.ProcessEnv = process.env): string {\n const npmCommand = env.npm_command;\n const npmExecPath = env.npm_execpath ?? '';\n const npmUserAgent = env.npm_config_user_agent ?? '';\n\n const launchedByNpmExec = npmCommand === 'exec' || npmExecPath.includes('npx-cli') || /\\bnpx\\//.test(npmUserAgent);\n\n return launchedByNpmExec ? 'npx workos@latest' : 'workos';\n}\n\nexport function formatWorkOSCommand(args: string, env: NodeJS.ProcessEnv = process.env): string {\n return `${getWorkOSCommand(env)} ${args}`;\n}\n\nexport function shellQuoteArg(arg: string): string {\n if (/^[A-Za-z0-9_./:=@+-]+$/.test(arg)) {\n return arg;\n }\n return `'${arg.replace(/'/g, `'\\\\''`)}'`;\n}\n\nexport function formatWorkOSCommandArgs(args: string[], env: NodeJS.ProcessEnv = process.env): string {\n return [getWorkOSCommand(env), ...args.map(shellQuoteArg)].join(' ');\n}\n"]}
@@ -1,17 +0,0 @@
1
- export declare const SKIP_TELEMETRY_COMMANDS: Set<string>;
2
- export declare function resolveCanonicalName(parts: string[]): string;
3
- /**
4
- * Resolve the command name from raw argv for paths where yargs validation
5
- * fails before middleware runs (e.g. a missing required argument).
6
- *
7
- * Returns the first token that resolves to a KNOWN top-level command. Tokens
8
- * are matched against the command registry rather than trusting position, so
9
- * an option value preceding the command (e.g. `--api-key sk_live_… org` or
10
- * `--mode ci org`) can never be recorded as the command name — that would leak
11
- * secrets/values into telemetry and explode cardinality. Anything that isn't a
12
- * known command (typos, stray values, `--help`) returns 'root', which is
13
- * skipped. Only the top-level command is recorded; later positionals can be
14
- * user values (org names, emails, IDs), so they are never included.
15
- */
16
- export declare function resolveCommandNameFromRawArgs(rawArgs: string[]): string;
17
- export declare function extractUserFlags(rawArgs: string[]): string[];
@@ -1,67 +0,0 @@
1
- import { COMMAND_ALIASES } from '../lib/command-aliases.js';
2
- import { getTopLevelCommandNames } from './help-json.js';
3
- let knownTopLevelCommands = null;
4
- /** Canonical top-level command heads (registry + alias targets), memoized. */
5
- function topLevelCommands() {
6
- if (!knownTopLevelCommands) {
7
- const names = new Set(getTopLevelCommandNames());
8
- // Alias targets resolve to a canonical head (e.g. claim -> env.claim -> env).
9
- for (const target of Object.values(COMMAND_ALIASES)) {
10
- names.add(target.split('.')[0]);
11
- }
12
- knownTopLevelCommands = names;
13
- }
14
- return knownTopLevelCommands;
15
- }
16
- export const SKIP_TELEMETRY_COMMANDS = new Set(['install', 'dashboard', 'root', 'telemetry']);
17
- export function resolveCanonicalName(parts) {
18
- if (parts.length === 0)
19
- return 'root';
20
- const resolved = [...parts];
21
- resolved[0] = COMMAND_ALIASES[resolved[0]] ?? resolved[0];
22
- return resolved.join('.');
23
- }
24
- /**
25
- * Resolve the command name from raw argv for paths where yargs validation
26
- * fails before middleware runs (e.g. a missing required argument).
27
- *
28
- * Returns the first token that resolves to a KNOWN top-level command. Tokens
29
- * are matched against the command registry rather than trusting position, so
30
- * an option value preceding the command (e.g. `--api-key sk_live_… org` or
31
- * `--mode ci org`) can never be recorded as the command name — that would leak
32
- * secrets/values into telemetry and explode cardinality. Anything that isn't a
33
- * known command (typos, stray values, `--help`) returns 'root', which is
34
- * skipped. Only the top-level command is recorded; later positionals can be
35
- * user values (org names, emails, IDs), so they are never included.
36
- */
37
- export function resolveCommandNameFromRawArgs(rawArgs) {
38
- const known = topLevelCommands();
39
- for (const token of rawArgs) {
40
- if (token.startsWith('-'))
41
- continue;
42
- const canonical = resolveCanonicalName([token]);
43
- if (known.has(canonical.split('.')[0]))
44
- return canonical;
45
- }
46
- return 'root';
47
- }
48
- export function extractUserFlags(rawArgs) {
49
- const passedFlags = rawArgs
50
- .filter((arg) => {
51
- // `--` is the positional separator, not a flag.
52
- if (arg === '--')
53
- return false;
54
- // Long flags: --name or --name=value (must start with a letter, so
55
- // negative numbers like -1 / --1 are not mistaken for flags).
56
- if (/^--[A-Za-z][\w-]*(=.*)?$/.test(arg))
57
- return true;
58
- // Short flags: a single letter, e.g. -v.
59
- if (/^-[A-Za-z]$/.test(arg))
60
- return true;
61
- return false;
62
- })
63
- .map((arg) => arg.replace(/^-+/, '').split('=')[0])
64
- .filter(Boolean);
65
- return [...new Set(passedFlags)];
66
- }
67
- //# sourceMappingURL=command-telemetry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-telemetry.js","sourceRoot":"","sources":["../../src/utils/command-telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,IAAI,qBAAqB,GAAuB,IAAI,CAAC;AAErD,8EAA8E;AAC9E,SAAS,gBAAgB;IACvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,uBAAuB,EAAE,CAAC,CAAC;QACjD,8EAA8E;QAC9E,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YACpD,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,qBAAqB,GAAG,KAAK,CAAC;IAChC,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAE9F,MAAM,UAAU,oBAAoB,CAAC,KAAe;IAClD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAAiB;IAC7D,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACpC,MAAM,SAAS,GAAG,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;IAC3D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAiB;IAChD,MAAM,WAAW,GAAG,OAAO;SACxB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACd,gDAAgD;QAChD,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAC/B,mEAAmE;QACnE,8DAA8D;QAC9D,IAAI,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACtD,yCAAyC;QACzC,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAClD,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACnC,CAAC","sourcesContent":["import { COMMAND_ALIASES } from '../lib/command-aliases.js';\nimport { getTopLevelCommandNames } from './help-json.js';\n\nlet knownTopLevelCommands: Set<string> | null = null;\n\n/** Canonical top-level command heads (registry + alias targets), memoized. */\nfunction topLevelCommands(): Set<string> {\n if (!knownTopLevelCommands) {\n const names = new Set(getTopLevelCommandNames());\n // Alias targets resolve to a canonical head (e.g. claim -> env.claim -> env).\n for (const target of Object.values(COMMAND_ALIASES)) {\n names.add(target.split('.')[0]);\n }\n knownTopLevelCommands = names;\n }\n return knownTopLevelCommands;\n}\n\nexport const SKIP_TELEMETRY_COMMANDS = new Set(['install', 'dashboard', 'root', 'telemetry']);\n\nexport function resolveCanonicalName(parts: string[]): string {\n if (parts.length === 0) return 'root';\n const resolved = [...parts];\n resolved[0] = COMMAND_ALIASES[resolved[0]] ?? resolved[0];\n return resolved.join('.');\n}\n\n/**\n * Resolve the command name from raw argv for paths where yargs validation\n * fails before middleware runs (e.g. a missing required argument).\n *\n * Returns the first token that resolves to a KNOWN top-level command. Tokens\n * are matched against the command registry rather than trusting position, so\n * an option value preceding the command (e.g. `--api-key sk_live_… org` or\n * `--mode ci org`) can never be recorded as the command name — that would leak\n * secrets/values into telemetry and explode cardinality. Anything that isn't a\n * known command (typos, stray values, `--help`) returns 'root', which is\n * skipped. Only the top-level command is recorded; later positionals can be\n * user values (org names, emails, IDs), so they are never included.\n */\nexport function resolveCommandNameFromRawArgs(rawArgs: string[]): string {\n const known = topLevelCommands();\n for (const token of rawArgs) {\n if (token.startsWith('-')) continue;\n const canonical = resolveCanonicalName([token]);\n if (known.has(canonical.split('.')[0])) return canonical;\n }\n return 'root';\n}\n\nexport function extractUserFlags(rawArgs: string[]): string[] {\n const passedFlags = rawArgs\n .filter((arg) => {\n // `--` is the positional separator, not a flag.\n if (arg === '--') return false;\n // Long flags: --name or --name=value (must start with a letter, so\n // negative numbers like -1 / --1 are not mistaken for flags).\n if (/^--[A-Za-z][\\w-]*(=.*)?$/.test(arg)) return true;\n // Short flags: a single letter, e.g. -v.\n if (/^-[A-Za-z]$/.test(arg)) return true;\n return false;\n })\n .map((arg) => arg.replace(/^-+/, '').split('=')[0])\n .filter(Boolean);\n return [...new Set(passedFlags)];\n}\n"]}
@@ -1,13 +0,0 @@
1
- /** Sanitize stack trace for telemetry: homedir, absolute-path collapse, secrets, truncation. */
2
- export declare function sanitizeStack(stack: string | undefined): string;
3
- /** Sanitize an error message for telemetry (homedir, secrets, truncation). */
4
- export declare function sanitizeMessage(msg: string | undefined): string;
5
- /**
6
- * Register global handlers for uncaughtException and unhandledRejection
7
- * that capture crash details before the process exits.
8
- *
9
- * Handlers are SYNCHRONOUS. Node does NOT await async uncaughtException handlers.
10
- * We queue the event synchronously; store-forward's process.on('exit') handler
11
- * persists it to disk. The next CLI invocation recovers and sends.
12
- */
13
- export declare function installCrashReporter(): void;
@@ -1,91 +0,0 @@
1
- import { analytics } from './analytics.js';
2
- import { CliExit } from './cli-exit.js';
3
- import { homedir } from 'node:os';
4
- // Hard ceiling the telemetry API enforces on every attribute value
5
- // (z.string().max(4096) in llm-gateway/types/telemetry-event.ts). The final
6
- // sanitized string — truncation marker included — MUST stay within this, or
7
- // the whole crash event fails Zod validation server-side and is silently
8
- // dropped. Reserve room for the marker so a truncated stack lands at exactly
9
- // MAX_STACK_LENGTH rather than overshooting it.
10
- const MAX_STACK_LENGTH = 4096;
11
- const STACK_TRUNCATION_MARKER = '\n...[truncated]';
12
- const MAX_MESSAGE_LENGTH = 1024;
13
- const HOME = homedir();
14
- let isCrashing = false;
15
- /**
16
- * Redact known credential patterns (Bearer tokens, sk_test_/sk_live_ keys,
17
- * raw JWTs). Shared by sanitizeStack and sanitizeMessage because Node echoes
18
- * `.message` into the leading `Error.stack` line, so secrets in messages also
19
- * surface in stacks.
20
- */
21
- function redactSecrets(s) {
22
- return s
23
- .replace(/Bearer\s+[A-Za-z0-9._-]+/g, 'Bearer <redacted>')
24
- .replace(/\bsk_(test|live)_[A-Za-z0-9]+/g, 'sk_<redacted>')
25
- .replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g, '<jwt-redacted>');
26
- }
27
- /** Sanitize stack trace for telemetry: homedir, absolute-path collapse, secrets, truncation. */
28
- export function sanitizeStack(stack) {
29
- if (!stack)
30
- return '';
31
- let sanitized = stack.replaceAll(HOME, '~');
32
- // Collapse absolute paths to their leaf segment. POSIX and Windows separately —
33
- // Windows paths (C:\...\node_modules\) bypass the POSIX regex and would
34
- // otherwise leak full local filesystem paths into telemetry.
35
- sanitized = sanitized
36
- .replace(/\/[^\s:]+\/(node_modules|dist|src)\//g, '$1/')
37
- .replace(/[A-Za-z]:\\[^\s:]+\\(node_modules|dist|src)\\/g, '$1\\');
38
- sanitized = redactSecrets(sanitized);
39
- return sanitized.length > MAX_STACK_LENGTH
40
- ? sanitized.slice(0, MAX_STACK_LENGTH - STACK_TRUNCATION_MARKER.length) + STACK_TRUNCATION_MARKER
41
- : sanitized;
42
- }
43
- /** Sanitize an error message for telemetry (homedir, secrets, truncation). */
44
- export function sanitizeMessage(msg) {
45
- if (!msg)
46
- return '';
47
- const sanitized = redactSecrets(msg.replaceAll(HOME, '~'));
48
- return sanitized.length > MAX_MESSAGE_LENGTH ? sanitized.slice(0, MAX_MESSAGE_LENGTH) + '...[truncated]' : sanitized;
49
- }
50
- /**
51
- * Register global handlers for uncaughtException and unhandledRejection
52
- * that capture crash details before the process exits.
53
- *
54
- * Handlers are SYNCHRONOUS. Node does NOT await async uncaughtException handlers.
55
- * We queue the event synchronously; store-forward's process.on('exit') handler
56
- * persists it to disk. The next CLI invocation recovers and sends.
57
- */
58
- export function installCrashReporter() {
59
- process.on('uncaughtException', (error) => {
60
- // A CliExit that reaches here escaped the normal lifecycle (e.g. thrown
61
- // from a fire-and-forget async event listener like `child.on('error')` in
62
- // dev.ts). It is an intentional exit, NOT a crash — record no crash event,
63
- // just honor the requested code.
64
- if (error instanceof CliExit) {
65
- process.exit(error.exitCode);
66
- }
67
- reportCrashSync(error);
68
- process.exit(1);
69
- });
70
- process.on('unhandledRejection', (reason) => {
71
- if (reason instanceof CliExit) {
72
- process.exit(reason.exitCode);
73
- }
74
- const error = reason instanceof Error ? reason : new Error(String(reason));
75
- reportCrashSync(error);
76
- process.exit(1);
77
- });
78
- }
79
- function reportCrashSync(error) {
80
- if (isCrashing)
81
- return;
82
- isCrashing = true;
83
- try {
84
- // captureUnhandledCrash sanitizes both message and stack at the analytics boundary.
85
- analytics.captureUnhandledCrash(error);
86
- }
87
- catch {
88
- // Telemetry must never prevent exit
89
- }
90
- }
91
- //# sourceMappingURL=crash-reporter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crash-reporter.js","sourceRoot":"","sources":["../../src/utils/crash-reporter.ts"],"names":[],"mappings":"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","sourcesContent":["import { analytics } from './analytics.js';\nimport { CliExit } from './cli-exit.js';\nimport { homedir } from 'node:os';\n\n// Hard ceiling the telemetry API enforces on every attribute value\n// (z.string().max(4096) in llm-gateway/types/telemetry-event.ts). The final\n// sanitized string — truncation marker included — MUST stay within this, or\n// the whole crash event fails Zod validation server-side and is silently\n// dropped. Reserve room for the marker so a truncated stack lands at exactly\n// MAX_STACK_LENGTH rather than overshooting it.\nconst MAX_STACK_LENGTH = 4096;\nconst STACK_TRUNCATION_MARKER = '\\n...[truncated]';\nconst MAX_MESSAGE_LENGTH = 1024;\nconst HOME = homedir();\nlet isCrashing = false;\n\n/**\n * Redact known credential patterns (Bearer tokens, sk_test_/sk_live_ keys,\n * raw JWTs). Shared by sanitizeStack and sanitizeMessage because Node echoes\n * `.message` into the leading `Error.stack` line, so secrets in messages also\n * surface in stacks.\n */\nfunction redactSecrets(s: string): string {\n return s\n .replace(/Bearer\\s+[A-Za-z0-9._-]+/g, 'Bearer <redacted>')\n .replace(/\\bsk_(test|live)_[A-Za-z0-9]+/g, 'sk_<redacted>')\n .replace(/\\beyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+/g, '<jwt-redacted>');\n}\n\n/** Sanitize stack trace for telemetry: homedir, absolute-path collapse, secrets, truncation. */\nexport function sanitizeStack(stack: string | undefined): string {\n if (!stack) return '';\n let sanitized = stack.replaceAll(HOME, '~');\n // Collapse absolute paths to their leaf segment. POSIX and Windows separately —\n // Windows paths (C:\\...\\node_modules\\) bypass the POSIX regex and would\n // otherwise leak full local filesystem paths into telemetry.\n sanitized = sanitized\n .replace(/\\/[^\\s:]+\\/(node_modules|dist|src)\\//g, '$1/')\n .replace(/[A-Za-z]:\\\\[^\\s:]+\\\\(node_modules|dist|src)\\\\/g, '$1\\\\');\n sanitized = redactSecrets(sanitized);\n return sanitized.length > MAX_STACK_LENGTH\n ? sanitized.slice(0, MAX_STACK_LENGTH - STACK_TRUNCATION_MARKER.length) + STACK_TRUNCATION_MARKER\n : sanitized;\n}\n\n/** Sanitize an error message for telemetry (homedir, secrets, truncation). */\nexport function sanitizeMessage(msg: string | undefined): string {\n if (!msg) return '';\n const sanitized = redactSecrets(msg.replaceAll(HOME, '~'));\n return sanitized.length > MAX_MESSAGE_LENGTH ? sanitized.slice(0, MAX_MESSAGE_LENGTH) + '...[truncated]' : sanitized;\n}\n\n/**\n * Register global handlers for uncaughtException and unhandledRejection\n * that capture crash details before the process exits.\n *\n * Handlers are SYNCHRONOUS. Node does NOT await async uncaughtException handlers.\n * We queue the event synchronously; store-forward's process.on('exit') handler\n * persists it to disk. The next CLI invocation recovers and sends.\n */\nexport function installCrashReporter(): void {\n process.on('uncaughtException', (error) => {\n // A CliExit that reaches here escaped the normal lifecycle (e.g. thrown\n // from a fire-and-forget async event listener like `child.on('error')` in\n // dev.ts). It is an intentional exit, NOT a crash — record no crash event,\n // just honor the requested code.\n if (error instanceof CliExit) {\n process.exit(error.exitCode);\n }\n reportCrashSync(error);\n process.exit(1);\n });\n\n process.on('unhandledRejection', (reason) => {\n if (reason instanceof CliExit) {\n process.exit(reason.exitCode);\n }\n const error = reason instanceof Error ? reason : new Error(String(reason));\n reportCrashSync(error);\n process.exit(1);\n });\n}\n\nfunction reportCrashSync(error: Error): void {\n if (isCrashing) return;\n isCrashing = true;\n try {\n // captureUnhandledCrash sanitizes both message and stack at the analytics boundary.\n analytics.captureUnhandledCrash(error);\n } catch {\n // Telemetry must never prevent exit\n }\n}\n"]}
@@ -1,9 +0,0 @@
1
- export declare function initLogFile(): void;
2
- export declare function getLogFilePath(): string | null;
3
- export declare function logInfo(...args: unknown[]): void;
4
- export declare function logWarn(...args: unknown[]): void;
5
- export declare function logVisibleWarn(...args: unknown[]): void;
6
- export declare function logError(...args: unknown[]): void;
7
- export declare function debug(...args: unknown[]): void;
8
- export declare function isDebugEnabled(): boolean;
9
- export declare function enableDebugLogs(): void;
@@ -1,105 +0,0 @@
1
- import { appendFileSync, existsSync, mkdirSync, readdirSync, unlinkSync } from 'fs';
2
- import { join } from 'path';
3
- import { homedir } from 'os';
4
- import chalk from 'chalk';
5
- import { prepareMessage } from './logging.js';
6
- import { redactCredentials } from './redact.js';
7
- import ui from './ui.js';
8
- import { isJsonMode } from './output.js';
9
- let debugEnabled = false;
10
- let sessionLogPath = null;
11
- const LOG_DIR = join(homedir(), '.workos', 'logs');
12
- const MAX_LOG_FILES = 10;
13
- function ensureLogDir() {
14
- if (!existsSync(LOG_DIR)) {
15
- mkdirSync(LOG_DIR, { recursive: true });
16
- }
17
- return LOG_DIR;
18
- }
19
- function getSafeTimestamp() {
20
- return new Date().toISOString().replace(/:/g, '-');
21
- }
22
- function rotateLogFiles() {
23
- try {
24
- const dir = ensureLogDir();
25
- const files = readdirSync(dir)
26
- .filter((f) => f.startsWith('workos-') && f.endsWith('.log'))
27
- .sort();
28
- const toDelete = files.slice(0, Math.max(0, files.length - MAX_LOG_FILES + 1));
29
- for (const file of toDelete) {
30
- try {
31
- unlinkSync(join(dir, file));
32
- }
33
- catch {
34
- // Ignore deletion failures
35
- }
36
- }
37
- }
38
- catch {
39
- // Ignore rotation failures
40
- }
41
- }
42
- export function initLogFile() {
43
- try {
44
- rotateLogFiles();
45
- const dir = ensureLogDir();
46
- const timestamp = getSafeTimestamp();
47
- sessionLogPath = join(dir, `workos-${timestamp}.log`);
48
- const header = `${'='.repeat(60)}\nWorkOS AuthKit Installer Run: ${new Date().toISOString()}\n${'='.repeat(60)}\n`;
49
- appendFileSync(sessionLogPath, header);
50
- }
51
- catch {
52
- sessionLogPath = null;
53
- }
54
- }
55
- export function getLogFilePath() {
56
- return sessionLogPath;
57
- }
58
- function writeLog(level, emoji, args) {
59
- const redactedArgs = args.map((a) => (typeof a === 'object' && a !== null ? redactCredentials(a) : a));
60
- const msg = redactedArgs.map((a) => prepareMessage(a)).join(' ');
61
- // Write to console if debug enabled
62
- if (debugEnabled && !isJsonMode()) {
63
- const color = level === 'ERROR' ? chalk.red : level === 'WARN' ? chalk.yellow : chalk.dim;
64
- ui.log.info(color(`${emoji} ${msg}`));
65
- }
66
- // Write to log file
67
- if (sessionLogPath) {
68
- try {
69
- const timestamp = new Date().toISOString();
70
- appendFileSync(sessionLogPath, `[${timestamp}] ${emoji} ${level}: ${msg}\n`);
71
- }
72
- catch {
73
- // Ignore write failures
74
- }
75
- }
76
- return msg;
77
- }
78
- export function logInfo(...args) {
79
- writeLog('INFO', 'ℹ️ ', args);
80
- }
81
- export function logWarn(...args) {
82
- writeLog('WARN', '⚠️ ', args);
83
- }
84
- export function logVisibleWarn(...args) {
85
- const msg = writeLog('WARN', '⚠️ ', args);
86
- if (!debugEnabled && !isJsonMode()) {
87
- console.error(chalk.yellow(`⚠️ ${msg}`));
88
- }
89
- }
90
- export function logError(...args) {
91
- writeLog('ERROR', '❌', args);
92
- }
93
- export function debug(...args) {
94
- if (!isDebugEnabled())
95
- return;
96
- const msg = args.map((a) => prepareMessage(a)).join(' ');
97
- ui.log.info(chalk.dim(msg));
98
- }
99
- export function isDebugEnabled() {
100
- return debugEnabled && !isJsonMode();
101
- }
102
- export function enableDebugLogs() {
103
- debugEnabled = true;
104
- }
105
- //# sourceMappingURL=debug.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/utils/debug.ts"],"names":[],"mappings":"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","sourcesContent":["import { appendFileSync, existsSync, mkdirSync, readdirSync, unlinkSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\nimport chalk from 'chalk';\nimport { prepareMessage } from './logging.js';\nimport { redactCredentials } from './redact.js';\nimport ui from './ui.js';\nimport { isJsonMode } from './output.js';\n\nlet debugEnabled = false;\nlet sessionLogPath: string | null = null;\n\nconst LOG_DIR = join(homedir(), '.workos', 'logs');\nconst MAX_LOG_FILES = 10;\n\nfunction ensureLogDir(): string {\n if (!existsSync(LOG_DIR)) {\n mkdirSync(LOG_DIR, { recursive: true });\n }\n return LOG_DIR;\n}\n\nfunction getSafeTimestamp(): string {\n return new Date().toISOString().replace(/:/g, '-');\n}\n\nfunction rotateLogFiles(): void {\n try {\n const dir = ensureLogDir();\n const files = readdirSync(dir)\n .filter((f) => f.startsWith('workos-') && f.endsWith('.log'))\n .sort();\n\n const toDelete = files.slice(0, Math.max(0, files.length - MAX_LOG_FILES + 1));\n for (const file of toDelete) {\n try {\n unlinkSync(join(dir, file));\n } catch {\n // Ignore deletion failures\n }\n }\n } catch {\n // Ignore rotation failures\n }\n}\n\nexport function initLogFile(): void {\n try {\n rotateLogFiles();\n const dir = ensureLogDir();\n const timestamp = getSafeTimestamp();\n sessionLogPath = join(dir, `workos-${timestamp}.log`);\n\n const header = `${'='.repeat(60)}\\nWorkOS AuthKit Installer Run: ${new Date().toISOString()}\\n${'='.repeat(60)}\\n`;\n appendFileSync(sessionLogPath, header);\n } catch {\n sessionLogPath = null;\n }\n}\n\nexport function getLogFilePath(): string | null {\n return sessionLogPath;\n}\n\nfunction writeLog(level: 'INFO' | 'WARN' | 'ERROR', emoji: string, args: unknown[]): string {\n const redactedArgs = args.map((a) => (typeof a === 'object' && a !== null ? redactCredentials(a) : a));\n const msg = redactedArgs.map((a) => prepareMessage(a)).join(' ');\n\n // Write to console if debug enabled\n if (debugEnabled && !isJsonMode()) {\n const color = level === 'ERROR' ? chalk.red : level === 'WARN' ? chalk.yellow : chalk.dim;\n ui.log.info(color(`${emoji} ${msg}`));\n }\n\n // Write to log file\n if (sessionLogPath) {\n try {\n const timestamp = new Date().toISOString();\n appendFileSync(sessionLogPath, `[${timestamp}] ${emoji} ${level}: ${msg}\\n`);\n } catch {\n // Ignore write failures\n }\n }\n\n return msg;\n}\n\nexport function logInfo(...args: unknown[]): void {\n writeLog('INFO', 'ℹ️ ', args);\n}\n\nexport function logWarn(...args: unknown[]): void {\n writeLog('WARN', '⚠️ ', args);\n}\n\nexport function logVisibleWarn(...args: unknown[]): void {\n const msg = writeLog('WARN', '⚠️ ', args);\n if (!debugEnabled && !isJsonMode()) {\n console.error(chalk.yellow(`⚠️ ${msg}`));\n }\n}\n\nexport function logError(...args: unknown[]): void {\n writeLog('ERROR', '❌', args);\n}\n\nexport function debug(...args: unknown[]): void {\n if (!isDebugEnabled()) return;\n const msg = args.map((a) => prepareMessage(a)).join(' ');\n ui.log.info(chalk.dim(msg));\n}\n\nexport function isDebugEnabled(): boolean {\n return debugEnabled && !isJsonMode();\n}\n\nexport function enableDebugLogs(): void {\n debugEnabled = true;\n}\n"]}
@@ -1,5 +0,0 @@
1
- /**
2
- * Parse a .env file into key-value pairs.
3
- * Handles comments, empty lines, and values containing '='.
4
- */
5
- export declare function parseEnvFile(content: string): Record<string, string>;
@@ -1,18 +0,0 @@
1
- /**
2
- * Parse a .env file into key-value pairs.
3
- * Handles comments, empty lines, and values containing '='.
4
- */
5
- export function parseEnvFile(content) {
6
- const result = {};
7
- for (const line of content.split(/\r?\n/)) {
8
- const trimmed = line.trim();
9
- if (trimmed && !trimmed.startsWith('#')) {
10
- const [key, ...valueParts] = trimmed.split('=');
11
- if (key) {
12
- result[key] = valueParts.join('=');
13
- }
14
- }
15
- }
16
- return result;
17
- }
18
- //# sourceMappingURL=env-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env-parser.js","sourceRoot":"","sources":["../../src/utils/env-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/**\n * Parse a .env file into key-value pairs.\n * Handles comments, empty lines, and values containing '='.\n */\nexport function parseEnvFile(content: string): Record<string, string> {\n const result: Record<string, string> = {};\n for (const line of content.split(/\\r?\\n/)) {\n const trimmed = line.trim();\n if (trimmed && !trimmed.startsWith('#')) {\n const [key, ...valueParts] = trimmed.split('=');\n if (key) {\n result[key] = valueParts.join('=');\n }\n }\n }\n return result;\n}\n"]}
@@ -1,10 +0,0 @@
1
- import type { InstallerOptions } from './types.js';
2
- /**
3
- * Compatibility wrapper for legacy call sites.
4
- *
5
- * Interaction mode now owns prompt/browser behavior. Keep this helper while
6
- * call sites migrate, but do not reimplement env/TTY detection here.
7
- */
8
- export declare function isNonInteractiveEnvironment(): boolean;
9
- export declare function readEnvironment(): Record<string, unknown>;
10
- export declare function detectEnvVarPrefix(options: InstallerOptions): Promise<string>;
@@ -1,69 +0,0 @@
1
- import { getPackageDotJson } from './ui-utils.js';
2
- import fg from 'fast-glob';
3
- import { isHumanMode } from './interaction-mode.js';
4
- /**
5
- * Compatibility wrapper for legacy call sites.
6
- *
7
- * Interaction mode now owns prompt/browser behavior. Keep this helper while
8
- * call sites migrate, but do not reimplement env/TTY detection here.
9
- */
10
- export function isNonInteractiveEnvironment() {
11
- return !isHumanMode();
12
- }
13
- export function readEnvironment() {
14
- const prefix = 'WORKOS_INSTALLER_';
15
- const result = {};
16
- for (const [key, value] of Object.entries(process.env)) {
17
- if (key.startsWith(prefix)) {
18
- const envKey = key.slice(prefix.length).toLowerCase();
19
- result[envKey] = value;
20
- }
21
- }
22
- return result;
23
- }
24
- export async function detectEnvVarPrefix(options) {
25
- const packageJson = await getPackageDotJson(options);
26
- const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
27
- const has = (name) => name in deps;
28
- const hasAnyFile = async (patterns) => {
29
- const matches = await fg(patterns, {
30
- cwd: options.installDir,
31
- absolute: false,
32
- onlyFiles: true,
33
- ignore: ['**/node_modules/**'],
34
- });
35
- return matches.length > 0;
36
- };
37
- // --- Next.js
38
- if (has('next') || (await hasAnyFile(['**/next.config.{js,ts,mjs,cjs}']))) {
39
- return 'NEXT_PUBLIC_';
40
- }
41
- // --- Create React App
42
- if (has('react-scripts') || has('create-react-app') || (await hasAnyFile(['**/config-overrides.js']))) {
43
- return 'REACT_APP_';
44
- }
45
- // --- Vite (vanilla, TanStack, Solid, etc.)
46
- // Note: Vite does not need PUBLIC_ but we use it to follow the docs, to improve the chances of an LLM getting it right.
47
- if (has('vite') || (await hasAnyFile(['**/vite.config.{js,ts,mjs,cjs}']))) {
48
- return 'VITE_PUBLIC_';
49
- }
50
- // --- SvelteKit
51
- if (has('@sveltejs/kit') || (await hasAnyFile(['**/svelte.config.{js,ts}']))) {
52
- return 'PUBLIC_';
53
- }
54
- // --- TanStack Start (uses Vite)
55
- if (has('@tanstack/start') || (await hasAnyFile(['**/tanstack.config.{js,ts}']))) {
56
- return 'VITE_PUBLIC_';
57
- }
58
- // --- SolidStart (uses Vite)
59
- if (has('solid-start') || (await hasAnyFile(['**/solid.config.{js,ts}']))) {
60
- return 'VITE_PUBLIC_';
61
- }
62
- // --- Astro
63
- if (has('astro') || (await hasAnyFile(['**/astro.config.{js,ts,mjs}']))) {
64
- return 'PUBLIC_';
65
- }
66
- // We default to Vite if we can't detect a specific framework, since it's the most commonly used.
67
- return 'VITE_PUBLIC_';
68
- }
69
- //# sourceMappingURL=environment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/utils/environment.ts"],"names":[],"mappings":"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","sourcesContent":["import { getPackageDotJson } from './ui-utils.js';\nimport type { InstallerOptions } from './types.js';\nimport fg from 'fast-glob';\nimport { isHumanMode } from './interaction-mode.js';\n\n/**\n * Compatibility wrapper for legacy call sites.\n *\n * Interaction mode now owns prompt/browser behavior. Keep this helper while\n * call sites migrate, but do not reimplement env/TTY detection here.\n */\nexport function isNonInteractiveEnvironment(): boolean {\n return !isHumanMode();\n}\n\nexport function readEnvironment(): Record<string, unknown> {\n const prefix = 'WORKOS_INSTALLER_';\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(process.env)) {\n if (key.startsWith(prefix)) {\n const envKey = key.slice(prefix.length).toLowerCase();\n result[envKey] = value;\n }\n }\n\n return result;\n}\n\nexport async function detectEnvVarPrefix(options: InstallerOptions): Promise<string> {\n const packageJson = await getPackageDotJson(options);\n\n const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };\n const has = (name: string) => name in deps;\n const hasAnyFile = async (patterns: string[]) => {\n const matches = await fg(patterns, {\n cwd: options.installDir,\n absolute: false,\n onlyFiles: true,\n ignore: ['**/node_modules/**'],\n });\n return matches.length > 0;\n };\n\n // --- Next.js\n if (has('next') || (await hasAnyFile(['**/next.config.{js,ts,mjs,cjs}']))) {\n return 'NEXT_PUBLIC_';\n }\n\n // --- Create React App\n if (has('react-scripts') || has('create-react-app') || (await hasAnyFile(['**/config-overrides.js']))) {\n return 'REACT_APP_';\n }\n\n // --- Vite (vanilla, TanStack, Solid, etc.)\n // Note: Vite does not need PUBLIC_ but we use it to follow the docs, to improve the chances of an LLM getting it right.\n if (has('vite') || (await hasAnyFile(['**/vite.config.{js,ts,mjs,cjs}']))) {\n return 'VITE_PUBLIC_';\n }\n\n // --- SvelteKit\n if (has('@sveltejs/kit') || (await hasAnyFile(['**/svelte.config.{js,ts}']))) {\n return 'PUBLIC_';\n }\n\n // --- TanStack Start (uses Vite)\n if (has('@tanstack/start') || (await hasAnyFile(['**/tanstack.config.{js,ts}']))) {\n return 'VITE_PUBLIC_';\n }\n\n // --- SolidStart (uses Vite)\n if (has('solid-start') || (await hasAnyFile(['**/solid.config.{js,ts}']))) {\n return 'VITE_PUBLIC_';\n }\n\n // --- Astro\n if (has('astro') || (await hasAnyFile(['**/astro.config.{js,ts,mjs}']))) {\n return 'PUBLIC_';\n }\n\n // We default to Vite if we can't detect a specific framework, since it's the most commonly used.\n return 'VITE_PUBLIC_';\n}\n"]}
@@ -1,3 +0,0 @@
1
- export declare class RateLimitError extends Error {
2
- constructor();
3
- }
@@ -1,7 +0,0 @@
1
- export class RateLimitError extends Error {
2
- constructor() {
3
- super('Installer usage limit reached.');
4
- this.name = 'RateLimitError';
5
- }
6
- }
7
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC;QACE,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF","sourcesContent":["export class RateLimitError extends Error {\n constructor() {\n super('Installer usage limit reached.');\n this.name = 'RateLimitError';\n }\n}\n"]}
@@ -1,15 +0,0 @@
1
- export interface ExecResult {
2
- status: number;
3
- stdout: string;
4
- stderr: string;
5
- }
6
- export interface ExecOptions {
7
- cwd?: string;
8
- timeout?: number;
9
- env?: NodeJS.ProcessEnv;
10
- }
11
- /**
12
- * Execute a command without throwing on non-zero exit codes.
13
- * Returns { status, stdout, stderr } for all outcomes.
14
- */
15
- export declare function execFileNoThrow(command: string, args: string[], options?: ExecOptions): Promise<ExecResult>;