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,171 +0,0 @@
1
- import { mkdirSync, writeFileSync } from 'node:fs';
2
- import { dirname } from 'node:path';
3
- import { debug, isDebugEnabled } from './debug.js';
4
- import { getCredentials, isTokenExpired } from '../lib/credentials.js';
5
- function summarizeEvent(event) {
6
- switch (event.type) {
7
- case 'session.start':
8
- return `session.start(mode=${event.attributes['installer.mode']}, os=${event.attributes['env.os']})`;
9
- case 'session.end':
10
- return `session.end(outcome=${event.attributes['installer.outcome']}, duration=${event.attributes['installer.duration_ms']}ms)`;
11
- case 'step':
12
- return `step(${event.name}, ${event.durationMs}ms, success=${event.success})`;
13
- case 'agent.tool':
14
- return `agent.tool(${event.toolName}, ${event.durationMs}ms)`;
15
- case 'agent.llm':
16
- return `agent.llm(${event.model}, in=${event.inputTokens}, out=${event.outputTokens})`;
17
- case 'command':
18
- return `command(${event.attributes['command.name']}, ${event.attributes['command.duration_ms']}ms, success=${event.attributes['command.success']})`;
19
- case 'crash':
20
- return `crash(${event.attributes['crash.error_type']}: ${event.attributes['crash.error_message']})`;
21
- }
22
- }
23
- /**
24
- * HTTP client that queues telemetry events and flushes them to the API.
25
- * Failures are silent—telemetry should never crash the wizard.
26
- */
27
- export class TelemetryClient {
28
- events = [];
29
- flushInFlight = null;
30
- accessToken = null;
31
- claimToken = null;
32
- clientId = null;
33
- apiKey = null;
34
- gatewayUrl = null;
35
- setGatewayUrl(url) {
36
- this.gatewayUrl = url;
37
- }
38
- setAccessToken(token) {
39
- this.accessToken = token;
40
- }
41
- setApiKeyAuth(apiKey) {
42
- this.apiKey = apiKey;
43
- }
44
- /**
45
- * Set claim-token auth for unclaimed environments.
46
- * The API accepts either a JWT (Bearer), claim token
47
- * (x-workos-claim-token + x-workos-client-id), or API key
48
- * (x-workos-api-key).
49
- */
50
- setClaimTokenAuth(clientId, claimToken) {
51
- this.clientId = clientId;
52
- this.claimToken = claimToken;
53
- }
54
- queueEvent(event) {
55
- this.events.push(event);
56
- }
57
- /**
58
- * Queue multiple pre-formed events (used by store-forward recovery).
59
- */
60
- queueEvents(events) {
61
- this.events.push(...events);
62
- }
63
- /**
64
- * Flush queued events. Returns true if events were sent or intentionally
65
- * dropped (4xx), false if they should be retried (5xx/network error).
66
- * Uses splice to only remove the events that were in the snapshot,
67
- * protecting any events queued concurrently during the fetch.
68
- */
69
- async flush() {
70
- // Coalesce overlapping flushes: a second caller during an in-flight flush
71
- // would otherwise snapshot and POST the same events again (duplicate send),
72
- // and its splice() could drop events queued after the first flush started.
73
- if (this.flushInFlight)
74
- return this.flushInFlight;
75
- this.flushInFlight = this.flushInternal();
76
- try {
77
- return await this.flushInFlight;
78
- }
79
- finally {
80
- this.flushInFlight = null;
81
- }
82
- }
83
- async flushInternal() {
84
- if (this.events.length === 0)
85
- return true;
86
- if (!this.gatewayUrl) {
87
- debug('[Telemetry] No telemetry URL configured, skipping flush');
88
- return false;
89
- }
90
- const count = this.events.length;
91
- const payload = { events: this.events.slice(0, count) };
92
- const headers = {
93
- 'Content-Type': 'application/json',
94
- };
95
- // Read fresh credentials to handle token refresh mid-session. Skip an
96
- // expired stored token — sending a dead Bearer 401s and the event is
97
- // dropped, so fall through to claim-token / api-key auth instead.
98
- const freshCreds = getCredentials();
99
- const token = freshCreds?.accessToken
100
- ? isTokenExpired(freshCreds)
101
- ? null
102
- : freshCreds.accessToken
103
- : this.accessToken;
104
- if (token) {
105
- headers['Authorization'] = `Bearer ${token}`;
106
- }
107
- else if (this.claimToken && this.clientId) {
108
- // Unclaimed environment auth path — guard accepts this instead of JWT
109
- headers['x-workos-claim-token'] = this.claimToken;
110
- headers['x-workos-client-id'] = this.clientId;
111
- }
112
- else if (this.apiKey) {
113
- headers['x-workos-api-key'] = this.apiKey;
114
- }
115
- const controller = new AbortController();
116
- const timeout = setTimeout(() => controller.abort(), 3000);
117
- try {
118
- if (isDebugEnabled()) {
119
- const eventSummary = payload.events.map(summarizeEvent).join('\n ');
120
- debug(`[Telemetry] Sending ${payload.events.length} events to ${this.gatewayUrl}/telemetry:\n ${eventSummary}`);
121
- }
122
- const response = await fetch(`${this.gatewayUrl}/telemetry`, {
123
- method: 'POST',
124
- headers,
125
- body: JSON.stringify(payload),
126
- signal: controller.signal,
127
- });
128
- if (response.ok) {
129
- this.events.splice(0, count);
130
- return true;
131
- }
132
- else {
133
- debug(`[Telemetry] Failed to send: ${response.status}`);
134
- // Drop on 4xx (permanent failures like 401/403 won't succeed on retry).
135
- // Retain on 5xx (transient server errors) for store-forward.
136
- if (response.status >= 400 && response.status < 500) {
137
- this.events.splice(0, count);
138
- return true; // intentionally dropped
139
- }
140
- return false;
141
- }
142
- }
143
- catch (error) {
144
- debug(`[Telemetry] Error sending events: ${error}`);
145
- // Events remain in queue for store-forward to persist
146
- return false;
147
- }
148
- finally {
149
- clearTimeout(timeout);
150
- }
151
- }
152
- /**
153
- * Synchronously write pending events to a file.
154
- * Used as last resort in process.on('exit') handler.
155
- */
156
- persistToFile(filePath) {
157
- if (this.events.length === 0)
158
- return;
159
- try {
160
- // Restrictive modes — the payload carries device/user identifiers.
161
- mkdirSync(dirname(filePath), { recursive: true, mode: 0o700 });
162
- writeFileSync(filePath, JSON.stringify(this.events), { encoding: 'utf-8', mode: 0o600 });
163
- this.events = [];
164
- }
165
- catch {
166
- // Silent failure — telemetry must never block exit
167
- }
168
- }
169
- }
170
- export const telemetryClient = new TelemetryClient();
171
- //# sourceMappingURL=telemetry-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry-client.js","sourceRoot":"","sources":["../../src/utils/telemetry-client.ts"],"names":[],"mappings":"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","sourcesContent":["import { mkdirSync, writeFileSync } from 'node:fs';\nimport { dirname } from 'node:path';\nimport { debug, isDebugEnabled } from './debug.js';\nimport type { TelemetryEvent, TelemetryRequest } from './telemetry-types.js';\nimport { getCredentials, isTokenExpired } from '../lib/credentials.js';\n\nfunction summarizeEvent(event: TelemetryEvent): string {\n switch (event.type) {\n case 'session.start':\n return `session.start(mode=${event.attributes['installer.mode']}, os=${event.attributes['env.os']})`;\n case 'session.end':\n return `session.end(outcome=${event.attributes['installer.outcome']}, duration=${event.attributes['installer.duration_ms']}ms)`;\n case 'step':\n return `step(${event.name}, ${event.durationMs}ms, success=${event.success})`;\n case 'agent.tool':\n return `agent.tool(${event.toolName}, ${event.durationMs}ms)`;\n case 'agent.llm':\n return `agent.llm(${event.model}, in=${event.inputTokens}, out=${event.outputTokens})`;\n case 'command':\n return `command(${event.attributes['command.name']}, ${event.attributes['command.duration_ms']}ms, success=${event.attributes['command.success']})`;\n case 'crash':\n return `crash(${event.attributes['crash.error_type']}: ${event.attributes['crash.error_message']})`;\n }\n}\n\n/**\n * HTTP client that queues telemetry events and flushes them to the API.\n * Failures are silent—telemetry should never crash the wizard.\n */\nexport class TelemetryClient {\n private events: TelemetryEvent[] = [];\n private flushInFlight: Promise<boolean> | null = null;\n private accessToken: string | null = null;\n private claimToken: string | null = null;\n private clientId: string | null = null;\n private apiKey: string | null = null;\n private gatewayUrl: string | null = null;\n\n setGatewayUrl(url: string) {\n this.gatewayUrl = url;\n }\n\n setAccessToken(token: string) {\n this.accessToken = token;\n }\n\n setApiKeyAuth(apiKey: string) {\n this.apiKey = apiKey;\n }\n\n /**\n * Set claim-token auth for unclaimed environments.\n * The API accepts either a JWT (Bearer), claim token\n * (x-workos-claim-token + x-workos-client-id), or API key\n * (x-workos-api-key).\n */\n setClaimTokenAuth(clientId: string, claimToken: string) {\n this.clientId = clientId;\n this.claimToken = claimToken;\n }\n\n queueEvent(event: TelemetryEvent) {\n this.events.push(event);\n }\n\n /**\n * Queue multiple pre-formed events (used by store-forward recovery).\n */\n queueEvents(events: TelemetryEvent[]): void {\n this.events.push(...events);\n }\n\n /**\n * Flush queued events. Returns true if events were sent or intentionally\n * dropped (4xx), false if they should be retried (5xx/network error).\n * Uses splice to only remove the events that were in the snapshot,\n * protecting any events queued concurrently during the fetch.\n */\n async flush(): Promise<boolean> {\n // Coalesce overlapping flushes: a second caller during an in-flight flush\n // would otherwise snapshot and POST the same events again (duplicate send),\n // and its splice() could drop events queued after the first flush started.\n if (this.flushInFlight) return this.flushInFlight;\n this.flushInFlight = this.flushInternal();\n try {\n return await this.flushInFlight;\n } finally {\n this.flushInFlight = null;\n }\n }\n\n private async flushInternal(): Promise<boolean> {\n if (this.events.length === 0) return true;\n if (!this.gatewayUrl) {\n debug('[Telemetry] No telemetry URL configured, skipping flush');\n return false;\n }\n\n const count = this.events.length;\n const payload: TelemetryRequest = { events: this.events.slice(0, count) };\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n // Read fresh credentials to handle token refresh mid-session. Skip an\n // expired stored token — sending a dead Bearer 401s and the event is\n // dropped, so fall through to claim-token / api-key auth instead.\n const freshCreds = getCredentials();\n const token = freshCreds?.accessToken\n ? isTokenExpired(freshCreds)\n ? null\n : freshCreds.accessToken\n : this.accessToken;\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n } else if (this.claimToken && this.clientId) {\n // Unclaimed environment auth path — guard accepts this instead of JWT\n headers['x-workos-claim-token'] = this.claimToken;\n headers['x-workos-client-id'] = this.clientId;\n } else if (this.apiKey) {\n headers['x-workos-api-key'] = this.apiKey;\n }\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 3000);\n\n try {\n if (isDebugEnabled()) {\n const eventSummary = payload.events.map(summarizeEvent).join('\\n ');\n debug(\n `[Telemetry] Sending ${payload.events.length} events to ${this.gatewayUrl}/telemetry:\\n ${eventSummary}`,\n );\n }\n\n const response = await fetch(`${this.gatewayUrl}/telemetry`, {\n method: 'POST',\n headers,\n body: JSON.stringify(payload),\n signal: controller.signal,\n });\n\n if (response.ok) {\n this.events.splice(0, count);\n return true;\n } else {\n debug(`[Telemetry] Failed to send: ${response.status}`);\n // Drop on 4xx (permanent failures like 401/403 won't succeed on retry).\n // Retain on 5xx (transient server errors) for store-forward.\n if (response.status >= 400 && response.status < 500) {\n this.events.splice(0, count);\n return true; // intentionally dropped\n }\n return false;\n }\n } catch (error) {\n debug(`[Telemetry] Error sending events: ${error}`);\n // Events remain in queue for store-forward to persist\n return false;\n } finally {\n clearTimeout(timeout);\n }\n }\n\n /**\n * Synchronously write pending events to a file.\n * Used as last resort in process.on('exit') handler.\n */\n persistToFile(filePath: string): void {\n if (this.events.length === 0) return;\n try {\n // Restrictive modes — the payload carries device/user identifiers.\n mkdirSync(dirname(filePath), { recursive: true, mode: 0o700 });\n writeFileSync(filePath, JSON.stringify(this.events), { encoding: 'utf-8', mode: 0o600 });\n this.events = [];\n } catch {\n // Silent failure — telemetry must never block exit\n }\n }\n}\n\nexport const telemetryClient = new TelemetryClient();\n"]}
@@ -1,11 +0,0 @@
1
- /**
2
- * Register a sync exit handler that persists unsent events to disk.
3
- * Called once at startup. Uses PID in filename to prevent concurrent
4
- * CLI invocations from colliding.
5
- */
6
- export declare function installStoreForward(): void;
7
- /**
8
- * On startup, check for ANY pending files from previous invocations
9
- * (could be from different PIDs) and send them. Non-blocking, fire-and-forget.
10
- */
11
- export declare function recoverPendingEvents(): Promise<void>;
@@ -1,94 +0,0 @@
1
- import { readFileSync, readdirSync, statSync, unlinkSync, existsSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { tmpdir } from 'node:os';
4
- import { telemetryClient } from './telemetry-client.js';
5
- import { debug } from './debug.js';
6
- const PENDING_DIR = join(tmpdir(), 'workos-cli-telemetry');
7
- const PENDING_FILE = join(PENDING_DIR, `pending-${process.pid}.json`);
8
- const MAX_PENDING_FILES = 100;
9
- const MAX_PENDING_AGE_MS = 7 * 24 * 60 * 60 * 1000;
10
- function safeUnlink(filePath) {
11
- try {
12
- unlinkSync(filePath);
13
- }
14
- catch {
15
- /* ignore */
16
- }
17
- }
18
- /**
19
- * Register a sync exit handler that persists unsent events to disk.
20
- * Called once at startup. Uses PID in filename to prevent concurrent
21
- * CLI invocations from colliding.
22
- */
23
- export function installStoreForward() {
24
- process.on('exit', () => {
25
- telemetryClient.persistToFile(PENDING_FILE);
26
- });
27
- }
28
- /**
29
- * On startup, check for ANY pending files from previous invocations
30
- * (could be from different PIDs) and send them. Non-blocking, fire-and-forget.
31
- */
32
- export async function recoverPendingEvents() {
33
- try {
34
- if (!existsSync(PENDING_DIR))
35
- return;
36
- const files = readdirSync(PENDING_DIR).filter((f) => f.startsWith('pending-') && f.endsWith('.json'));
37
- const now = Date.now();
38
- const pendingFiles = [];
39
- for (const file of files) {
40
- const filePath = join(PENDING_DIR, file);
41
- try {
42
- const { mtimeMs } = statSync(filePath);
43
- if (now - mtimeMs > MAX_PENDING_AGE_MS) {
44
- debug(`[Telemetry] Dropping stale pending file: ${file}`);
45
- safeUnlink(filePath);
46
- }
47
- else {
48
- pendingFiles.push({ file, filePath, mtimeMs });
49
- }
50
- }
51
- catch {
52
- debug(`[Telemetry] Dropping unreadable pending file: ${file}`);
53
- safeUnlink(filePath);
54
- }
55
- }
56
- pendingFiles.sort((a, b) => b.mtimeMs - a.mtimeMs);
57
- const filesToRecover = pendingFiles.slice(0, MAX_PENDING_FILES);
58
- for (const dropped of pendingFiles.slice(MAX_PENDING_FILES)) {
59
- debug(`[Telemetry] Dropping excess pending file: ${dropped.file}`);
60
- safeUnlink(dropped.filePath);
61
- }
62
- const recoveredFiles = [];
63
- for (const { filePath } of filesToRecover) {
64
- try {
65
- const raw = readFileSync(filePath, 'utf-8');
66
- const events = JSON.parse(raw);
67
- if (Array.isArray(events) && events.length > 0) {
68
- telemetryClient.queueEvents(events);
69
- recoveredFiles.push(filePath);
70
- }
71
- else {
72
- // Empty file — delete immediately
73
- safeUnlink(filePath);
74
- }
75
- }
76
- catch {
77
- // Corrupted file — delete and move on
78
- safeUnlink(filePath);
79
- }
80
- }
81
- // Delete source files — events are now in memory regardless of flush outcome.
82
- // If flush succeeds: events sent, done.
83
- // If flush fails: events stay in memory, exit handler re-persists to new PID file.
84
- for (const filePath of recoveredFiles) {
85
- safeUnlink(filePath);
86
- }
87
- // Flush all recovered events in one batch
88
- await telemetryClient.flush();
89
- }
90
- catch {
91
- debug('[Telemetry] Store-forward recovery failed silently');
92
- }
93
- }
94
- //# sourceMappingURL=telemetry-store-forward.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry-store-forward.js","sourceRoot":"","sources":["../../src/utils/telemetry-store-forward.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFileSync, readdirSync, statSync, unlinkSync, existsSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { tmpdir } from 'node:os';\nimport { telemetryClient } from './telemetry-client.js';\nimport { debug } from './debug.js';\n\nconst PENDING_DIR = join(tmpdir(), 'workos-cli-telemetry');\nconst PENDING_FILE = join(PENDING_DIR, `pending-${process.pid}.json`);\nconst MAX_PENDING_FILES = 100;\nconst MAX_PENDING_AGE_MS = 7 * 24 * 60 * 60 * 1000;\n\nfunction safeUnlink(filePath: string): void {\n try {\n unlinkSync(filePath);\n } catch {\n /* ignore */\n }\n}\n\n/**\n * Register a sync exit handler that persists unsent events to disk.\n * Called once at startup. Uses PID in filename to prevent concurrent\n * CLI invocations from colliding.\n */\nexport function installStoreForward(): void {\n process.on('exit', () => {\n telemetryClient.persistToFile(PENDING_FILE);\n });\n}\n\n/**\n * On startup, check for ANY pending files from previous invocations\n * (could be from different PIDs) and send them. Non-blocking, fire-and-forget.\n */\nexport async function recoverPendingEvents(): Promise<void> {\n try {\n if (!existsSync(PENDING_DIR)) return;\n const files = readdirSync(PENDING_DIR).filter((f) => f.startsWith('pending-') && f.endsWith('.json'));\n const now = Date.now();\n const pendingFiles: Array<{ file: string; filePath: string; mtimeMs: number }> = [];\n\n for (const file of files) {\n const filePath = join(PENDING_DIR, file);\n try {\n const { mtimeMs } = statSync(filePath);\n if (now - mtimeMs > MAX_PENDING_AGE_MS) {\n debug(`[Telemetry] Dropping stale pending file: ${file}`);\n safeUnlink(filePath);\n } else {\n pendingFiles.push({ file, filePath, mtimeMs });\n }\n } catch {\n debug(`[Telemetry] Dropping unreadable pending file: ${file}`);\n safeUnlink(filePath);\n }\n }\n\n pendingFiles.sort((a, b) => b.mtimeMs - a.mtimeMs);\n const filesToRecover = pendingFiles.slice(0, MAX_PENDING_FILES);\n for (const dropped of pendingFiles.slice(MAX_PENDING_FILES)) {\n debug(`[Telemetry] Dropping excess pending file: ${dropped.file}`);\n safeUnlink(dropped.filePath);\n }\n\n const recoveredFiles: string[] = [];\n for (const { filePath } of filesToRecover) {\n try {\n const raw = readFileSync(filePath, 'utf-8');\n const events = JSON.parse(raw);\n if (Array.isArray(events) && events.length > 0) {\n telemetryClient.queueEvents(events);\n recoveredFiles.push(filePath);\n } else {\n // Empty file — delete immediately\n safeUnlink(filePath);\n }\n } catch {\n // Corrupted file — delete and move on\n safeUnlink(filePath);\n }\n }\n\n // Delete source files — events are now in memory regardless of flush outcome.\n // If flush succeeds: events sent, done.\n // If flush fails: events stay in memory, exit handler re-persists to new PID file.\n for (const filePath of recoveredFiles) {\n safeUnlink(filePath);\n }\n\n // Flush all recovered events in one batch\n await telemetryClient.flush();\n } catch {\n debug('[Telemetry] Store-forward recovery failed silently');\n }\n}\n"]}
@@ -1,100 +0,0 @@
1
- /**
2
- * Telemetry event types for installer → gateway communication.
3
- * The gateway converts these to OTel format.
4
- */
5
- export interface BaseTelemetryEvent {
6
- type: 'session.start' | 'session.end' | 'step' | 'agent.tool' | 'agent.llm' | 'command' | 'crash';
7
- sessionId: string;
8
- timestamp: string;
9
- }
10
- export type AuthMode = 'jwt' | 'claim_token' | 'api_key' | 'none';
11
- /**
12
- * Structured outcome dimension for command events. Supersedes the boolean
13
- * `command.success` as the primary categorization (`command.success` remains
14
- * for backward-compat). Populated by `analytics.emitCommandEvent()` from the
15
- * top-level command lifecycle.
16
- */
17
- export type TerminationReason = 'success' | 'cancelled' | 'auth_required' | 'validation_error' | 'api_error' | 'crash';
18
- export interface EnvFingerprint {
19
- 'device.id': string;
20
- 'auth.mode': AuthMode;
21
- 'env.os': string;
22
- 'env.os_version': string;
23
- 'env.node_version': string;
24
- 'env.shell': string;
25
- 'env.ci': boolean;
26
- 'env.ci_provider'?: string;
27
- }
28
- export interface SessionStartEvent extends BaseTelemetryEvent {
29
- type: 'session.start';
30
- attributes: {
31
- 'installer.version': string;
32
- 'installer.mode': 'cli' | 'tui' | 'headless';
33
- 'workos.user_id'?: string;
34
- 'workos.org_id'?: string;
35
- } & EnvFingerprint;
36
- }
37
- export interface SessionEndEvent extends BaseTelemetryEvent {
38
- type: 'session.end';
39
- attributes: {
40
- 'installer.outcome': 'success' | 'error' | 'cancelled';
41
- 'installer.duration_ms': number;
42
- } & Record<string, string | number | boolean>;
43
- }
44
- export interface StepEvent extends BaseTelemetryEvent {
45
- type: 'step';
46
- name: string;
47
- startTimestamp: string;
48
- durationMs: number;
49
- success: boolean;
50
- error?: {
51
- type: string;
52
- message: string;
53
- };
54
- }
55
- export interface AgentToolEvent extends BaseTelemetryEvent {
56
- type: 'agent.tool';
57
- toolName: string;
58
- startTimestamp: string;
59
- durationMs: number;
60
- success: boolean;
61
- }
62
- export interface AgentLLMEvent extends BaseTelemetryEvent {
63
- type: 'agent.llm';
64
- model: string;
65
- inputTokens: number;
66
- outputTokens: number;
67
- }
68
- export interface CommandEvent extends BaseTelemetryEvent {
69
- type: 'command';
70
- attributes: {
71
- 'command.name': string;
72
- 'command.duration_ms': number;
73
- 'command.success': boolean;
74
- 'command.error_type'?: string;
75
- 'command.error_message'?: string;
76
- 'command.flags'?: string;
77
- 'termination.reason'?: TerminationReason;
78
- 'error.code'?: string;
79
- 'api.status'?: number;
80
- 'api.code'?: string;
81
- 'api.resource'?: string;
82
- 'cli.version': string;
83
- 'workos.user_id'?: string;
84
- } & EnvFingerprint & Record<string, string | number | boolean | undefined>;
85
- }
86
- export interface CrashEvent extends BaseTelemetryEvent {
87
- type: 'crash';
88
- attributes: {
89
- 'crash.error_type': string;
90
- 'crash.error_message': string;
91
- 'crash.stack': string;
92
- 'crash.command'?: string;
93
- 'cli.version': string;
94
- 'workos.user_id'?: string;
95
- } & EnvFingerprint;
96
- }
97
- export interface TelemetryRequest {
98
- events: TelemetryEvent[];
99
- }
100
- export type TelemetryEvent = SessionStartEvent | SessionEndEvent | StepEvent | AgentToolEvent | AgentLLMEvent | CommandEvent | CrashEvent;
@@ -1,6 +0,0 @@
1
- /**
2
- * Telemetry event types for installer → gateway communication.
3
- * The gateway converts these to OTel format.
4
- */
5
- export {};
6
- //# sourceMappingURL=telemetry-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry-types.js","sourceRoot":"","sources":["../../src/utils/telemetry-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * Telemetry event types for installer → gateway communication.\n * The gateway converts these to OTel format.\n */\n\nexport interface BaseTelemetryEvent {\n type: 'session.start' | 'session.end' | 'step' | 'agent.tool' | 'agent.llm' | 'command' | 'crash';\n sessionId: string;\n timestamp: string;\n}\n\nexport type AuthMode = 'jwt' | 'claim_token' | 'api_key' | 'none';\n\n/**\n * Structured outcome dimension for command events. Supersedes the boolean\n * `command.success` as the primary categorization (`command.success` remains\n * for backward-compat). Populated by `analytics.emitCommandEvent()` from the\n * top-level command lifecycle.\n */\nexport type TerminationReason = 'success' | 'cancelled' | 'auth_required' | 'validation_error' | 'api_error' | 'crash';\n\nexport interface EnvFingerprint {\n 'device.id': string;\n 'auth.mode': AuthMode;\n 'env.os': string;\n 'env.os_version': string;\n 'env.node_version': string;\n 'env.shell': string;\n 'env.ci': boolean;\n 'env.ci_provider'?: string;\n}\n\nexport interface SessionStartEvent extends BaseTelemetryEvent {\n type: 'session.start';\n attributes: {\n 'installer.version': string;\n 'installer.mode': 'cli' | 'tui' | 'headless';\n 'workos.user_id'?: string;\n 'workos.org_id'?: string;\n } & EnvFingerprint;\n}\n\nexport interface SessionEndEvent extends BaseTelemetryEvent {\n type: 'session.end';\n attributes: {\n 'installer.outcome': 'success' | 'error' | 'cancelled';\n 'installer.duration_ms': number;\n } & Record<string, string | number | boolean>;\n}\n\nexport interface StepEvent extends BaseTelemetryEvent {\n type: 'step';\n name: string;\n startTimestamp: string;\n durationMs: number;\n success: boolean;\n error?: {\n type: string;\n message: string;\n };\n}\n\nexport interface AgentToolEvent extends BaseTelemetryEvent {\n type: 'agent.tool';\n toolName: string;\n startTimestamp: string;\n durationMs: number;\n success: boolean;\n}\n\nexport interface AgentLLMEvent extends BaseTelemetryEvent {\n type: 'agent.llm';\n model: string;\n inputTokens: number;\n outputTokens: number;\n}\n\nexport interface CommandEvent extends BaseTelemetryEvent {\n type: 'command';\n attributes: {\n 'command.name': string;\n 'command.duration_ms': number;\n 'command.success': boolean;\n 'command.error_type'?: string;\n 'command.error_message'?: string;\n 'command.flags'?: string;\n 'termination.reason'?: TerminationReason;\n 'error.code'?: string;\n 'api.status'?: number;\n 'api.code'?: string;\n 'api.resource'?: string;\n 'cli.version': string;\n 'workos.user_id'?: string;\n // Open for caller-supplied dimensions (e.g. mcp.*) — the gateway schema is\n // passthrough and flattens unknown attributes onto the command span.\n } & EnvFingerprint &\n Record<string, string | number | boolean | undefined>;\n}\n\nexport interface CrashEvent extends BaseTelemetryEvent {\n type: 'crash';\n attributes: {\n 'crash.error_type': string;\n 'crash.error_message': string;\n 'crash.stack': string;\n 'crash.command'?: string;\n 'cli.version': string;\n 'workos.user_id'?: string;\n } & EnvFingerprint;\n}\n\nexport interface TelemetryRequest {\n events: TelemetryEvent[];\n}\n\nexport type TelemetryEvent =\n | SessionStartEvent\n | SessionEndEvent\n | StepEvent\n | AgentToolEvent\n | AgentLLMEvent\n | CommandEvent\n | CrashEvent;\n"]}
@@ -1,123 +0,0 @@
1
- import type { CredentialSource } from '../lib/installer-core.types.js';
2
- export type InstallerOptions = {
3
- /**
4
- * Whether to enable debug mode.
5
- */
6
- debug: boolean;
7
- /**
8
- * Whether to force install the SDK package to continue with the installation in case
9
- * any package manager checks are failing (e.g. peer dependency versions).
10
- *
11
- * Use with caution and only if you know what you're doing.
12
- *
13
- * Does not apply to all wizard flows (currently NPM only)
14
- */
15
- forceInstall: boolean;
16
- /**
17
- * The directory to run the wizard in.
18
- */
19
- installDir: string;
20
- /**
21
- * Whether to use local services (LLM gateway on localhost:8000)
22
- */
23
- local: boolean;
24
- /**
25
- * CI mode - non-interactive execution
26
- */
27
- ci: boolean;
28
- /**
29
- * Skip authentication check (for local development only)
30
- */
31
- skipAuth: boolean;
32
- /**
33
- * WorkOS API key (sk_xxx)
34
- */
35
- apiKey?: string;
36
- /**
37
- * WorkOS Client ID (client_xxx)
38
- */
39
- clientId?: string;
40
- /**
41
- * How the WorkOS credentials were resolved by the state machine
42
- * (`cli`|`env`|`stored`|`device`|`manual`). Threaded downstream so
43
- * user-facing copy can be source-accurate (e.g. avoid claiming the user
44
- * "provided" credentials on the auto-provisioned path).
45
- */
46
- credentialSource?: CredentialSource;
47
- /**
48
- * App homepage URL for WorkOS dashboard config.
49
- * Defaults to http://localhost:{detected_port}
50
- */
51
- homepageUrl?: string;
52
- /**
53
- * Redirect URI for WorkOS callback.
54
- * Defaults to framework-specific convention (e.g., /api/auth/callback)
55
- */
56
- redirectUri?: string;
57
- /**
58
- * [Experimental] Enable visual dashboard mode
59
- */
60
- dashboard?: boolean;
61
- /**
62
- * Event emitter for dashboard mode
63
- */
64
- emitter?: import('../lib/events.js').InstallerEventEmitter;
65
- /**
66
- * Enable XState inspector - opens browser to visualize state machine live
67
- */
68
- inspect?: boolean;
69
- /**
70
- * Skip post-installation validation (includes build check)
71
- */
72
- noValidate?: boolean;
73
- /**
74
- * Skip post-install commit and PR workflow
75
- */
76
- noCommit?: boolean;
77
- /**
78
- * Skip branch creation (continue on current branch)
79
- */
80
- noBranch?: boolean;
81
- /**
82
- * Auto-create pull request after installation
83
- */
84
- createPr?: boolean;
85
- /**
86
- * Skip git dirty working tree check
87
- */
88
- noGitCheck?: boolean;
89
- /**
90
- * Direct mode - bypass llm-gateway and use user's own Anthropic API key.
91
- * Requires ANTHROPIC_API_KEY environment variable.
92
- */
93
- direct?: boolean;
94
- /**
95
- * Max correction attempts after initial agent run.
96
- * The agent gets this many chances to fix validation failures (typecheck/build).
97
- * Default: 2. Set to 0 to disable retries entirely.
98
- */
99
- maxRetries?: number;
100
- /**
101
- * Scaffold a new Next.js app when run in an empty directory.
102
- * Auto-enabled in headless mode; opt-in via --scaffold in interactive mode.
103
- */
104
- scaffold?: boolean;
105
- /**
106
- * Package manager for the scaffolded app (npm/pnpm/yarn/bun).
107
- * Overrides detection from npm_config_user_agent.
108
- */
109
- pm?: string;
110
- /** Next.js router to target when detection is ambiguous (from --router). */
111
- router?: 'app' | 'pages';
112
- };
113
- export interface Feature {
114
- id: string;
115
- prompt: string;
116
- enabledHint?: string;
117
- disabledHint?: string;
118
- }
119
- export type FileChange = {
120
- filePath: string;
121
- oldContent?: string;
122
- newContent: string;
123
- };
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { CredentialSource } from '../lib/installer-core.types.js';\n\nexport type InstallerOptions = {\n /**\n * Whether to enable debug mode.\n */\n debug: boolean;\n\n /**\n * Whether to force install the SDK package to continue with the installation in case\n * any package manager checks are failing (e.g. peer dependency versions).\n *\n * Use with caution and only if you know what you're doing.\n *\n * Does not apply to all wizard flows (currently NPM only)\n */\n forceInstall: boolean;\n\n /**\n * The directory to run the wizard in.\n */\n installDir: string;\n\n /**\n * Whether to use local services (LLM gateway on localhost:8000)\n */\n local: boolean;\n\n /**\n * CI mode - non-interactive execution\n */\n ci: boolean;\n\n /**\n * Skip authentication check (for local development only)\n */\n skipAuth: boolean;\n\n /**\n * WorkOS API key (sk_xxx)\n */\n apiKey?: string;\n\n /**\n * WorkOS Client ID (client_xxx)\n */\n clientId?: string;\n\n /**\n * How the WorkOS credentials were resolved by the state machine\n * (`cli`|`env`|`stored`|`device`|`manual`). Threaded downstream so\n * user-facing copy can be source-accurate (e.g. avoid claiming the user\n * \"provided\" credentials on the auto-provisioned path).\n */\n credentialSource?: CredentialSource;\n\n /**\n * App homepage URL for WorkOS dashboard config.\n * Defaults to http://localhost:{detected_port}\n */\n homepageUrl?: string;\n\n /**\n * Redirect URI for WorkOS callback.\n * Defaults to framework-specific convention (e.g., /api/auth/callback)\n */\n redirectUri?: string;\n\n /**\n * [Experimental] Enable visual dashboard mode\n */\n dashboard?: boolean;\n\n /**\n * Event emitter for dashboard mode\n */\n emitter?: import('../lib/events.js').InstallerEventEmitter;\n\n /**\n * Enable XState inspector - opens browser to visualize state machine live\n */\n inspect?: boolean;\n\n /**\n * Skip post-installation validation (includes build check)\n */\n noValidate?: boolean;\n\n /**\n * Skip post-install commit and PR workflow\n */\n noCommit?: boolean;\n\n /**\n * Skip branch creation (continue on current branch)\n */\n noBranch?: boolean;\n\n /**\n * Auto-create pull request after installation\n */\n createPr?: boolean;\n\n /**\n * Skip git dirty working tree check\n */\n noGitCheck?: boolean;\n\n /**\n * Direct mode - bypass llm-gateway and use user's own Anthropic API key.\n * Requires ANTHROPIC_API_KEY environment variable.\n */\n direct?: boolean;\n\n /**\n * Max correction attempts after initial agent run.\n * The agent gets this many chances to fix validation failures (typecheck/build).\n * Default: 2. Set to 0 to disable retries entirely.\n */\n maxRetries?: number;\n\n /**\n * Scaffold a new Next.js app when run in an empty directory.\n * Auto-enabled in headless mode; opt-in via --scaffold in interactive mode.\n */\n scaffold?: boolean;\n\n /**\n * Package manager for the scaffolded app (npm/pnpm/yarn/bun).\n * Overrides detection from npm_config_user_agent.\n */\n pm?: string;\n\n /** Next.js router to target when detection is ambiguous (from --router). */\n router?: 'app' | 'pages';\n};\n\nexport interface Feature {\n id: string;\n prompt: string;\n enabledHint?: string;\n disabledHint?: string;\n}\n\nexport type FileChange = {\n filePath: string;\n oldContent?: string;\n newContent: string;\n};\n"]}