convex 1.31.4 → 1.31.6-alpha.0

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 (179) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/browser.bundle.js +1 -1
  3. package/dist/browser.bundle.js.map +1 -1
  4. package/dist/cjs/bundler/debugBundle.js +1 -1
  5. package/dist/cjs/bundler/debugBundle.js.map +1 -1
  6. package/dist/cjs/bundler/index.js +1 -1
  7. package/dist/cjs/bundler/index.js.map +1 -1
  8. package/dist/cjs/cli/configure.js +2 -10
  9. package/dist/cjs/cli/configure.js.map +2 -2
  10. package/dist/cjs/cli/deploy.js +16 -2
  11. package/dist/cjs/cli/deploy.js.map +2 -2
  12. package/dist/cjs/cli/dev.js +4 -1
  13. package/dist/cjs/cli/dev.js.map +2 -2
  14. package/dist/cjs/cli/generatedApi.js.map +1 -1
  15. package/dist/cjs/cli/integration.js +198 -10
  16. package/dist/cjs/cli/integration.js.map +2 -2
  17. package/dist/cjs/cli/lib/command.js +9 -4
  18. package/dist/cjs/cli/lib/command.js.map +2 -2
  19. package/dist/cjs/cli/lib/components/definition/bundle.js +1 -1
  20. package/dist/cjs/cli/lib/components/definition/bundle.js.map +1 -1
  21. package/dist/cjs/cli/lib/components.js +2 -1
  22. package/dist/cjs/cli/lib/components.js.map +2 -2
  23. package/dist/cjs/cli/lib/config.js +87 -212
  24. package/dist/cjs/cli/lib/config.js.map +3 -3
  25. package/dist/cjs/cli/lib/deploy2.js +27 -4
  26. package/dist/cjs/cli/lib/deploy2.js.map +2 -2
  27. package/dist/cjs/cli/lib/deploymentSelection.js +0 -12
  28. package/dist/cjs/cli/lib/deploymentSelection.js.map +2 -2
  29. package/dist/cjs/cli/lib/dev.js +30 -0
  30. package/dist/cjs/cli/lib/dev.js.map +2 -2
  31. package/dist/cjs/cli/lib/mcp/tools/index.js.map +2 -2
  32. package/dist/cjs/cli/lib/utils/prompts.js +1 -1
  33. package/dist/cjs/cli/lib/utils/prompts.js.map +2 -2
  34. package/dist/cjs/cli/lib/workos/environmentApi.js +27 -1
  35. package/dist/cjs/cli/lib/workos/environmentApi.js.map +2 -2
  36. package/dist/cjs/cli/lib/workos/platformApi.js +41 -7
  37. package/dist/cjs/cli/lib/workos/platformApi.js.map +2 -2
  38. package/dist/cjs/cli/lib/workos/workos.js +532 -93
  39. package/dist/cjs/cli/lib/workos/workos.js.map +2 -2
  40. package/dist/cjs/index.js +1 -1
  41. package/dist/cjs/index.js.map +1 -1
  42. package/dist/cjs-types/bundler/debugBundle.d.ts.map +1 -1
  43. package/dist/cjs-types/bundler/index.d.ts.map +1 -1
  44. package/dist/cjs-types/cli/configure.d.ts.map +1 -1
  45. package/dist/cjs-types/cli/deploy.d.ts.map +1 -1
  46. package/dist/cjs-types/cli/dev.d.ts.map +1 -1
  47. package/dist/cjs-types/cli/generatedApi.d.ts +260 -1
  48. package/dist/cjs-types/cli/generatedApi.d.ts.map +1 -1
  49. package/dist/cjs-types/cli/integration.d.ts.map +1 -1
  50. package/dist/cjs-types/cli/lib/command.d.ts +7 -1
  51. package/dist/cjs-types/cli/lib/command.d.ts.map +1 -1
  52. package/dist/cjs-types/cli/lib/components/definition/bundle.d.ts.map +1 -1
  53. package/dist/cjs-types/cli/lib/components.d.ts +2 -0
  54. package/dist/cjs-types/cli/lib/components.d.ts.map +1 -1
  55. package/dist/cjs-types/cli/lib/config.d.ts +38 -26
  56. package/dist/cjs-types/cli/lib/config.d.ts.map +1 -1
  57. package/dist/cjs-types/cli/lib/deploy2.d.ts +5 -0
  58. package/dist/cjs-types/cli/lib/deploy2.d.ts.map +1 -1
  59. package/dist/cjs-types/cli/lib/deployment.d.ts +1 -1
  60. package/dist/cjs-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  61. package/dist/cjs-types/cli/lib/dev.d.ts +2 -0
  62. package/dist/cjs-types/cli/lib/dev.d.ts.map +1 -1
  63. package/dist/cjs-types/cli/lib/mcp/tools/index.d.ts.map +1 -1
  64. package/dist/cjs-types/cli/lib/utils/prompts.d.ts +1 -0
  65. package/dist/cjs-types/cli/lib/utils/prompts.d.ts.map +1 -1
  66. package/dist/cjs-types/cli/lib/workos/environmentApi.d.ts +4 -0
  67. package/dist/cjs-types/cli/lib/workos/environmentApi.d.ts.map +1 -1
  68. package/dist/cjs-types/cli/lib/workos/platformApi.d.ts +9 -1
  69. package/dist/cjs-types/cli/lib/workos/platformApi.d.ts.map +1 -1
  70. package/dist/cjs-types/cli/lib/workos/workos.d.ts +39 -8
  71. package/dist/cjs-types/cli/lib/workos/workos.d.ts.map +1 -1
  72. package/dist/cjs-types/cli/lib/workos/workos.test.d.ts +2 -0
  73. package/dist/cjs-types/cli/lib/workos/workos.test.d.ts.map +1 -0
  74. package/dist/cjs-types/cli/network_test.d.ts +1 -0
  75. package/dist/cjs-types/cli/network_test.d.ts.map +1 -1
  76. package/dist/cjs-types/index.d.ts +1 -1
  77. package/dist/cjs-types/index.d.ts.map +1 -1
  78. package/dist/cli.bundle.cjs +3337 -5468
  79. package/dist/cli.bundle.cjs.map +4 -4
  80. package/dist/esm/bundler/debugBundle.js +1 -1
  81. package/dist/esm/bundler/debugBundle.js.map +1 -1
  82. package/dist/esm/bundler/index.js +1 -1
  83. package/dist/esm/bundler/index.js.map +1 -1
  84. package/dist/esm/cli/configure.js +3 -16
  85. package/dist/esm/cli/configure.js.map +2 -2
  86. package/dist/esm/cli/deploy.js +16 -2
  87. package/dist/esm/cli/deploy.js.map +2 -2
  88. package/dist/esm/cli/dev.js +4 -1
  89. package/dist/esm/cli/dev.js.map +2 -2
  90. package/dist/esm/cli/integration.js +209 -12
  91. package/dist/esm/cli/integration.js.map +2 -2
  92. package/dist/esm/cli/lib/command.js +9 -4
  93. package/dist/esm/cli/lib/command.js.map +2 -2
  94. package/dist/esm/cli/lib/components/definition/bundle.js +1 -1
  95. package/dist/esm/cli/lib/components/definition/bundle.js.map +1 -1
  96. package/dist/esm/cli/lib/components.js +2 -1
  97. package/dist/esm/cli/lib/components.js.map +2 -2
  98. package/dist/esm/cli/lib/config.js +86 -210
  99. package/dist/esm/cli/lib/config.js.map +3 -3
  100. package/dist/esm/cli/lib/deploy2.js +32 -5
  101. package/dist/esm/cli/lib/deploy2.js.map +2 -2
  102. package/dist/esm/cli/lib/deploymentSelection.js +0 -12
  103. package/dist/esm/cli/lib/deploymentSelection.js.map +2 -2
  104. package/dist/esm/cli/lib/dev.js +33 -0
  105. package/dist/esm/cli/lib/dev.js.map +2 -2
  106. package/dist/esm/cli/lib/mcp/tools/index.js.map +2 -2
  107. package/dist/esm/cli/lib/utils/prompts.js +1 -1
  108. package/dist/esm/cli/lib/utils/prompts.js.map +2 -2
  109. package/dist/esm/cli/lib/workos/environmentApi.js +25 -0
  110. package/dist/esm/cli/lib/workos/environmentApi.js.map +2 -2
  111. package/dist/esm/cli/lib/workos/platformApi.js +36 -6
  112. package/dist/esm/cli/lib/workos/platformApi.js.map +2 -2
  113. package/dist/esm/cli/lib/workos/workos.js +535 -94
  114. package/dist/esm/cli/lib/workos/workos.js.map +2 -2
  115. package/dist/esm/index.js +1 -1
  116. package/dist/esm/index.js.map +1 -1
  117. package/dist/esm-types/bundler/debugBundle.d.ts.map +1 -1
  118. package/dist/esm-types/bundler/index.d.ts.map +1 -1
  119. package/dist/esm-types/cli/configure.d.ts.map +1 -1
  120. package/dist/esm-types/cli/deploy.d.ts.map +1 -1
  121. package/dist/esm-types/cli/dev.d.ts.map +1 -1
  122. package/dist/esm-types/cli/generatedApi.d.ts +260 -1
  123. package/dist/esm-types/cli/generatedApi.d.ts.map +1 -1
  124. package/dist/esm-types/cli/integration.d.ts.map +1 -1
  125. package/dist/esm-types/cli/lib/command.d.ts +7 -1
  126. package/dist/esm-types/cli/lib/command.d.ts.map +1 -1
  127. package/dist/esm-types/cli/lib/components/definition/bundle.d.ts.map +1 -1
  128. package/dist/esm-types/cli/lib/components.d.ts +2 -0
  129. package/dist/esm-types/cli/lib/components.d.ts.map +1 -1
  130. package/dist/esm-types/cli/lib/config.d.ts +38 -26
  131. package/dist/esm-types/cli/lib/config.d.ts.map +1 -1
  132. package/dist/esm-types/cli/lib/deploy2.d.ts +5 -0
  133. package/dist/esm-types/cli/lib/deploy2.d.ts.map +1 -1
  134. package/dist/esm-types/cli/lib/deployment.d.ts +1 -1
  135. package/dist/esm-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  136. package/dist/esm-types/cli/lib/dev.d.ts +2 -0
  137. package/dist/esm-types/cli/lib/dev.d.ts.map +1 -1
  138. package/dist/esm-types/cli/lib/mcp/tools/index.d.ts.map +1 -1
  139. package/dist/esm-types/cli/lib/utils/prompts.d.ts +1 -0
  140. package/dist/esm-types/cli/lib/utils/prompts.d.ts.map +1 -1
  141. package/dist/esm-types/cli/lib/workos/environmentApi.d.ts +4 -0
  142. package/dist/esm-types/cli/lib/workos/environmentApi.d.ts.map +1 -1
  143. package/dist/esm-types/cli/lib/workos/platformApi.d.ts +9 -1
  144. package/dist/esm-types/cli/lib/workos/platformApi.d.ts.map +1 -1
  145. package/dist/esm-types/cli/lib/workos/workos.d.ts +39 -8
  146. package/dist/esm-types/cli/lib/workos/workos.d.ts.map +1 -1
  147. package/dist/esm-types/cli/lib/workos/workos.test.d.ts +2 -0
  148. package/dist/esm-types/cli/lib/workos/workos.test.d.ts.map +1 -0
  149. package/dist/esm-types/cli/network_test.d.ts +1 -0
  150. package/dist/esm-types/cli/network_test.d.ts.map +1 -1
  151. package/dist/esm-types/index.d.ts +1 -1
  152. package/dist/esm-types/index.d.ts.map +1 -1
  153. package/dist/react.bundle.js +1 -1
  154. package/dist/react.bundle.js.map +1 -1
  155. package/package.json +5 -5
  156. package/schemas/convex.schema.json +2 -1
  157. package/src/bundler/debugBundle.ts +1 -1
  158. package/src/bundler/index.ts +1 -1
  159. package/src/cli/configure.ts +3 -18
  160. package/src/cli/deploy.ts +23 -1
  161. package/src/cli/dev.ts +6 -0
  162. package/src/cli/generatedApi.ts +260 -1
  163. package/src/cli/integration.ts +289 -15
  164. package/src/cli/lib/command.ts +19 -6
  165. package/src/cli/lib/components/definition/bundle.ts +1 -1
  166. package/src/cli/lib/components.ts +7 -1
  167. package/src/cli/lib/config.test.ts +444 -547
  168. package/src/cli/lib/config.ts +166 -309
  169. package/src/cli/lib/deploy2.ts +47 -4
  170. package/src/cli/lib/deploymentSelection.ts +0 -14
  171. package/src/cli/lib/dev.ts +58 -0
  172. package/src/cli/lib/mcp/tools/index.ts +1 -2
  173. package/src/cli/lib/utils/prompts.ts +4 -1
  174. package/src/cli/lib/workos/environmentApi.ts +38 -0
  175. package/src/cli/lib/workos/platformApi.ts +69 -6
  176. package/src/cli/lib/workos/workos.test.ts +242 -0
  177. package/src/cli/lib/workos/workos.ts +807 -134
  178. package/src/cli/network_test.ts +1 -1
  179. package/src/index.ts +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/dev.ts"],
4
- "sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport { oneoffContext } from \"../bundler/context.js\";\nimport { logVerbose } from \"../bundler/log.js\";\nimport { deploymentCredentialsOrConfigure } from \"./configure.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\nimport { normalizeDevOptions } from \"./lib/command.js\";\nimport { devAgainstDeployment } from \"./lib/dev.js\";\nimport { deploymentSelectionWithinProjectFromOptions } from \"./lib/api.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n} from \"./lib/utils/utils.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\nimport { detectSuspiciousEnvironmentVariables } from \"./lib/envvars.js\";\nimport { checkVersion } from \"./lib/updates.js\";\n\nexport const dev = new Command(\"dev\")\n .summary(\"Develop against a dev deployment, watching for changes\")\n .description(\n \"Develop against a dev deployment, watching for changes\\n\\n\" +\n \" 1. Configures a new or existing project (if needed)\\n\" +\n \" 2. Updates generated types and pushes code to the configured dev deployment\\n\" +\n \" 3. Runs the provided command (if `--run` or `--run-sh` is used)\\n\" +\n \" 4. Watches for file changes, and repeats step 2\\n\",\n )\n .allowExcessArguments(false)\n .option(\"-v, --verbose\", \"Show full listing of changes\")\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Check TypeScript files with \\`tsc --noEmit\\`.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\"--codegen <mode>\", \"Regenerate code in `convex/_generated/`\")\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .option(\n \"--once\",\n \"Execute only the first 3 steps, stop on any failure\",\n false,\n )\n .option(\n \"--until-success\",\n \"Execute only the first 3 steps, on failure watch for local and remote changes and retry steps 2 and 3\",\n false,\n )\n .addOption(\n new Option(\n \"--run <functionName>\",\n \"The identifier of the function to run in step 3, \" +\n \"like `api.init.createData` or `myDir/myFile:myFunction`\",\n ).conflicts([\"--run-sh\"]),\n )\n .option(\n \"--run-component <functionName>\",\n \"If --run is used and the function is in a component, the path the component tree defined in convex.config.ts. \" +\n \"Components are a beta feature. This flag is unstable and may change in subsequent releases.\",\n )\n .addOption(\n new Option(\n \"--run-sh <command>\",\n \"A shell command to run in step 3, like `node myScript.js`. \" +\n \"If you just want to run a Convex function, use `--run` instead.\",\n ).conflicts([\"--run\"]),\n )\n .addOption(\n new Option(\n \"--tail-logs [mode]\",\n \"Choose whether to tail Convex function logs in this terminal\",\n )\n .choices([\"always\", \"pause-on-deploy\", \"disable\"] as const)\n .default(\"pause-on-deploy\"),\n )\n .addOption(new Option(\"--trace-events\").default(false).hideHelp())\n .addOption(new Option(\"--debug-bundle-path <path>\").hideHelp())\n .addOption(new Option(\"--debug-node-apis\").hideHelp())\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n .addOption(\n new Option(\n \"--configure [choice]\",\n \"Ignore existing configuration and configure new or existing project, interactively or set by --team <team_slug>, --project <project_slug>, and --dev-deployment local|cloud\",\n )\n .choices([\"new\", \"existing\"] as const)\n .conflicts([\"--local\", \"--cloud\"]),\n )\n .addOption(\n new Option(\n \"--team <team_slug>\",\n \"The team you'd like to use for this project\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--project <project_slug>\",\n \"The name of the project you'd like to configure\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--dev-deployment <mode>\",\n \"Use a local or cloud deployment for dev for this project\",\n )\n .choices([\"cloud\", \"local\"] as const)\n .conflicts([\"--prod\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--prod\",\n \"Develop live against this project's production deployment.\",\n )\n .default(false)\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ),\n )\n .addOption(new Option(\"--skip-push\").default(false).hideHelp())\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(new Option(\"--url <url>\").hideHelp())\n // Options for testing\n .addOption(new Option(\"--override-auth-url <url>\").hideHelp())\n .addOption(new Option(\"--override-auth-client <id>\").hideHelp())\n .addOption(new Option(\"--override-auth-username <username>\").hideHelp())\n .addOption(new Option(\"--override-auth-password <password>\").hideHelp())\n .addOption(new Option(\"--local-cloud-port <port>\").hideHelp())\n .addOption(new Option(\"--local-site-port <port>\").hideHelp())\n .addOption(new Option(\"--local-backend-version <version>\").hideHelp())\n .addOption(new Option(\"--local-force-upgrade\").default(false).hideHelp())\n .addOption(\n new Option(\n \"--local\",\n \"Use local deployment regardless of last used backend. DB data will not be downloaded from any cloud deployment.\",\n )\n .default(false)\n .conflicts([\"--prod\", \"--url\", \"--admin-key\", \"--cloud\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--cloud\",\n \"Use cloud deployment regardles of last used backend. DB data will not be uploaded from local.\",\n )\n .default(false)\n .conflicts([\"--prod\", \"--url\", \"--admin-key\", \"--local\"])\n .hideHelp(),\n )\n .showHelpAfterError()\n .action(async (cmdOptions) => {\n const ctx = await oneoffContext(cmdOptions);\n process.on(\"SIGINT\", async () => {\n logVerbose(\"Received SIGINT, cleaning up...\");\n await ctx.flushAndExit(-2);\n });\n\n await detectSuspiciousEnvironmentVariables(\n ctx,\n !!process.env.CONVEX_IGNORE_SUSPICIOUS_ENV_VARS,\n );\n\n const devOptions = await normalizeDevOptions(ctx, cmdOptions);\n\n const selectionWithinProject =\n deploymentSelectionWithinProjectFromOptions(cmdOptions);\n\n if (cmdOptions.configure === undefined) {\n if (cmdOptions.team || cmdOptions.project || cmdOptions.devDeployment)\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--team, --project, and --dev-deployment can can only be used with `--configure`.\",\n });\n }\n\n const localOptions: {\n ports?: { cloud: number; site: number };\n backendVersion?: string | undefined;\n forceUpgrade: boolean;\n } = { forceUpgrade: false };\n if (!cmdOptions.local && cmdOptions.devDeployment !== \"local\") {\n if (\n cmdOptions.localCloudPort !== undefined ||\n cmdOptions.localSitePort !== undefined ||\n cmdOptions.localBackendVersion !== undefined ||\n cmdOptions.localForceUpgrade === true\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--local-*` options can only be used with `--configure --dev-deployment local` or `--local`.\",\n });\n }\n } else {\n if (cmdOptions.localCloudPort !== undefined) {\n if (cmdOptions.localSitePort === undefined) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--local-cloud-port` requires `--local-site-port` to be set.\",\n });\n }\n localOptions[\"ports\"] = {\n cloud: parseInt(cmdOptions.localCloudPort),\n site: parseInt(cmdOptions.localSitePort),\n };\n }\n localOptions[\"backendVersion\"] = cmdOptions.localBackendVersion;\n localOptions[\"forceUpgrade\"] = cmdOptions.localForceUpgrade;\n }\n\n const configure =\n cmdOptions.configure === true ? \"ask\" : (cmdOptions.configure ?? null);\n const deploymentSelection = await getDeploymentSelection(ctx, cmdOptions);\n const credentials = await deploymentCredentialsOrConfigure(\n ctx,\n deploymentSelection,\n configure,\n {\n ...cmdOptions,\n localOptions,\n selectionWithinProject,\n },\n );\n\n await Promise.all([\n ...(!cmdOptions.skipPush\n ? [\n devAgainstDeployment(\n ctx,\n {\n url: credentials.url,\n adminKey: credentials.adminKey,\n deploymentName:\n credentials.deploymentFields?.deploymentName ?? null,\n },\n devOptions,\n ),\n ]\n : []),\n ...(credentials.deploymentFields !== null\n ? [\n usageStateWarning(ctx, credentials.deploymentFields.deploymentName),\n checkVersion(),\n ]\n : []),\n ]);\n });\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport { oneoffContext } from \"../bundler/context.js\";\nimport { logVerbose } from \"../bundler/log.js\";\nimport { deploymentCredentialsOrConfigure } from \"./configure.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\nimport { normalizeDevOptions } from \"./lib/command.js\";\nimport { devAgainstDeployment } from \"./lib/dev.js\";\nimport { deploymentSelectionWithinProjectFromOptions } from \"./lib/api.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n} from \"./lib/utils/utils.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\nimport { detectSuspiciousEnvironmentVariables } from \"./lib/envvars.js\";\nimport { checkVersion } from \"./lib/updates.js\";\n\nexport const dev = new Command(\"dev\")\n .summary(\"Develop against a dev deployment, watching for changes\")\n .description(\n \"Develop against a dev deployment, watching for changes\\n\\n\" +\n \" 1. Configures a new or existing project (if needed)\\n\" +\n \" 2. Updates generated types and pushes code to the configured dev deployment\\n\" +\n \" 3. Runs the provided command (if `--run` or `--run-sh` is used)\\n\" +\n \" 4. Watches for file changes, and repeats step 2\\n\",\n )\n .allowExcessArguments(false)\n .option(\"-v, --verbose\", \"Show full listing of changes\")\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Check TypeScript files with \\`tsc --noEmit\\`.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\"--codegen <mode>\", \"Regenerate code in `convex/_generated/`\")\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .option(\n \"--once\",\n \"Execute only the first 3 steps, stop on any failure\",\n false,\n )\n .option(\n \"--until-success\",\n \"Execute only the first 3 steps, on failure watch for local and remote changes and retry steps 2 and 3\",\n false,\n )\n .addOption(\n new Option(\n \"--run <functionName>\",\n \"The identifier of the function to run in step 3, \" +\n \"like `api.init.createData` or `myDir/myFile:myFunction`\",\n ).conflicts([\"--run-sh\"]),\n )\n .option(\n \"--run-component <functionName>\",\n \"If --run is used and the function is in a component, the path the component tree defined in convex.config.ts. \" +\n \"Components are a beta feature. This flag is unstable and may change in subsequent releases.\",\n )\n .addOption(\n new Option(\n \"--run-sh <command>\",\n \"A shell command to run in step 3, like `node myScript.js`. \" +\n \"If you just want to run a Convex function, use `--run` instead.\",\n ).conflicts([\"--run\"]),\n )\n .addOption(\n new Option(\n \"--tail-logs [mode]\",\n \"Choose whether to tail Convex function logs in this terminal\",\n )\n .choices([\"always\", \"pause-on-deploy\", \"disable\"] as const)\n .default(\"pause-on-deploy\"),\n )\n .addOption(new Option(\"--trace-events\").default(false).hideHelp())\n .addOption(new Option(\"--debug-bundle-path <path>\").hideHelp())\n .addOption(new Option(\"--debug-node-apis\").hideHelp())\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n .addOption(\n new Option(\n \"--configure [choice]\",\n \"Ignore existing configuration and configure new or existing project, interactively or set by --team <team_slug>, --project <project_slug>, and --dev-deployment local|cloud\",\n )\n .choices([\"new\", \"existing\"] as const)\n .conflicts([\"--local\", \"--cloud\"]),\n )\n .addOption(\n new Option(\n \"--team <team_slug>\",\n \"The team you'd like to use for this project\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--project <project_slug>\",\n \"The name of the project you'd like to configure\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--dev-deployment <mode>\",\n \"Use a local or cloud deployment for dev for this project\",\n )\n .choices([\"cloud\", \"local\"] as const)\n .conflicts([\"--prod\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--prod\",\n \"Develop live against this project's production deployment.\",\n )\n .default(false)\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ),\n )\n .addOption(new Option(\"--skip-push\").default(false).hideHelp())\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(new Option(\"--url <url>\").hideHelp())\n // Options for testing\n .addOption(new Option(\"--override-auth-url <url>\").hideHelp())\n .addOption(new Option(\"--override-auth-client <id>\").hideHelp())\n .addOption(new Option(\"--override-auth-username <username>\").hideHelp())\n .addOption(new Option(\"--override-auth-password <password>\").hideHelp())\n .addOption(new Option(\"--local-cloud-port <port>\").hideHelp())\n .addOption(new Option(\"--local-site-port <port>\").hideHelp())\n .addOption(new Option(\"--local-backend-version <version>\").hideHelp())\n .addOption(new Option(\"--local-force-upgrade\").default(false).hideHelp())\n .addOption(\n new Option(\n \"--local\",\n \"Use local deployment regardless of last used backend. DB data will not be downloaded from any cloud deployment.\",\n )\n .default(false)\n .conflicts([\"--prod\", \"--url\", \"--admin-key\", \"--cloud\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--cloud\",\n \"Use cloud deployment regardles of last used backend. DB data will not be uploaded from local.\",\n )\n .default(false)\n .conflicts([\"--prod\", \"--url\", \"--admin-key\", \"--local\"])\n .hideHelp(),\n )\n .showHelpAfterError()\n .action(async (cmdOptions) => {\n const ctx = await oneoffContext(cmdOptions);\n process.on(\"SIGINT\", async () => {\n logVerbose(\"Received SIGINT, cleaning up...\");\n await ctx.flushAndExit(-2);\n });\n\n await detectSuspiciousEnvironmentVariables(\n ctx,\n !!process.env.CONVEX_IGNORE_SUSPICIOUS_ENV_VARS,\n );\n\n const devOptions = await normalizeDevOptions(ctx, cmdOptions);\n\n const selectionWithinProject =\n deploymentSelectionWithinProjectFromOptions(cmdOptions);\n\n if (cmdOptions.configure === undefined) {\n if (cmdOptions.team || cmdOptions.project || cmdOptions.devDeployment)\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--team, --project, and --dev-deployment can can only be used with `--configure`.\",\n });\n }\n\n const localOptions: {\n ports?: { cloud: number; site: number };\n backendVersion?: string | undefined;\n forceUpgrade: boolean;\n } = { forceUpgrade: false };\n if (!cmdOptions.local && cmdOptions.devDeployment !== \"local\") {\n if (\n cmdOptions.localCloudPort !== undefined ||\n cmdOptions.localSitePort !== undefined ||\n cmdOptions.localBackendVersion !== undefined ||\n cmdOptions.localForceUpgrade === true\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--local-*` options can only be used with `--configure --dev-deployment local` or `--local`.\",\n });\n }\n } else {\n if (cmdOptions.localCloudPort !== undefined) {\n if (cmdOptions.localSitePort === undefined) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--local-cloud-port` requires `--local-site-port` to be set.\",\n });\n }\n localOptions[\"ports\"] = {\n cloud: parseInt(cmdOptions.localCloudPort),\n site: parseInt(cmdOptions.localSitePort),\n };\n }\n localOptions[\"backendVersion\"] = cmdOptions.localBackendVersion;\n localOptions[\"forceUpgrade\"] = cmdOptions.localForceUpgrade;\n }\n\n const configure =\n cmdOptions.configure === true ? \"ask\" : (cmdOptions.configure ?? null);\n const deploymentSelection = await getDeploymentSelection(ctx, cmdOptions);\n const credentials = await deploymentCredentialsOrConfigure(\n ctx,\n deploymentSelection,\n configure,\n {\n ...cmdOptions,\n localOptions,\n selectionWithinProject,\n },\n );\n\n await Promise.all([\n ...(!cmdOptions.skipPush\n ? [\n devAgainstDeployment(\n ctx,\n {\n url: credentials.url,\n adminKey: credentials.adminKey,\n deploymentName:\n credentials.deploymentFields?.deploymentName ?? null,\n ...(credentials.deploymentFields?.deploymentType !== undefined\n ? {\n deploymentType:\n credentials.deploymentFields.deploymentType,\n }\n : {}),\n },\n devOptions,\n ),\n ]\n : []),\n ...(credentials.deploymentFields !== null\n ? [\n usageStateWarning(ctx, credentials.deploymentFields.deploymentName),\n checkVersion(),\n ]\n : []),\n ]);\n });\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/generatedApi.ts"],
4
- "sourcesContent": ["/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport interface paths {\n \"/teams\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get: operations[\"get_teams_for_member\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_slug}/projects\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get: operations[\"get_cli_projects_for_team\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/delete_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Delete a WorkOS environment. This removes the environment from both WorkOS and the Convex database. */\n post: operations[\"delete_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/disconnect_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Disconnect a WorkOS team from a Convex team. This is a destructive action that will prevent new WorkOS environments from being provisioned, though existing environments will continue to work. */\n post: operations[\"disconnect_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/available_workos_team_emails\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get candidate email addresses to be WorkOS admins. */\n get: operations[\"get_available_workos_team_emails\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/deployments/{deployment_name}/has_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if a deployment has an associated WorkOS team */\n get: operations[\"get_has_associated_workos_team\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/get_or_provision_workos_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Get or provision a WorkOS environment for a deployment */\n post: operations[\"get_or_provision_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/deployments/{deployment_name}/workos_environment_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if the WorkOS environment associated with this deployment is still accessible */\n get: operations[\"get_workos_environment_health\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_id}/workos_invitation_eligible_emails\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get emails eligible for WorkOS team invitation (all verified emails except those that are admin of a different WorkOS team) */\n get: operations[\"get_workos_invitation_eligible_emails\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_id}/workos_team_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if the WorkOS team associated with this Convex team is still accessible */\n get: operations[\"get_workos_team_health\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/invite_team_member\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Invite a member to the WorkOS team associated with a Convex team */\n post: operations[\"invite_workos_team_member\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/has_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Check if a deployment has an associated WorkOS team */\n post: operations[\"has_associated_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/provision_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Provision a WorkOS team for a Convex team */\n post: operations[\"provision_associated_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n}\nexport type webhooks = Record<string, never>;\nexport interface components {\n schemas: {\n AvailableWorkOSTeamEmailsResponse: {\n availableEmails: string[];\n usedEmails: string[];\n };\n DeleteWorkOSEnvironmentRequest: {\n /** @description Deployment name for the environment to delete */\n deploymentName: string;\n };\n DeleteWorkOSEnvironmentResponse: {\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n workosTeamId: string;\n };\n DisconnectWorkOSTeamRequest: {\n /** @description Convex team ID to disconnect from WorkOS */\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n DisconnectWorkOSTeamResponse: {\n workosTeamId: string;\n workosTeamName: string;\n };\n GetOrProvisionEnvironmentRequest: {\n deploymentName: string;\n environmentName?: string | null;\n isProduction?: boolean | null;\n };\n HasAssociatedWorkOSTeamRequest: {\n deploymentName: string;\n };\n HasAssociatedWorkOSTeamResponse: {\n /** @description Email of Convex team member who created the WorkOS account.\n * This field should always be present when has_associated_workos_team is\n * true. */\n adminConvexEmail?: string | null;\n /** @description Email address used to provision the WorkOS account. This field should\n * always be present if has_associated_workos_team is true. */\n adminEmail?: string | null;\n /** @description Name of Convex team member who created the WorkOS account.\n * This field is optional even when has_associated_workos_team is true. */\n adminName?: string | null;\n hasAssociatedWorkosTeam: boolean;\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n InvitationEligibleEmailsResponse: {\n /** @description The admin email used to create this team's WorkOS account (always\n * eligible for re-invitation) */\n adminEmail?: string | null;\n eligibleEmails: string[];\n };\n InviteWorkOSTeamMemberRequest: {\n /** @description Email address to invite to the WorkOS team,\n * must be a verified email address associated with the user's account */\n email: string;\n /** @description Convex team ID that has an associated WorkOS team */\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n InviteWorkOSTeamMemberResponse: {\n email: string;\n roleSlug: string;\n };\n /** @enum {string} */\n ManagedBy: \"vercel\";\n /** Format: int64 */\n MemberId: number;\n ProjectDetails: {\n /** Format: int64 */\n createTime: number;\n devDeploymentName?: string | null;\n id: components[\"schemas\"][\"ProjectId\"];\n isDemo: boolean;\n name: components[\"schemas\"][\"ProjectName\"];\n prodDeploymentName?: string | null;\n slug: components[\"schemas\"][\"ProjectSlug\"];\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n /** Format: int64 */\n ProjectId: number;\n ProjectName: string;\n ProjectSlug: string;\n ProvisionEnvironmentResponse: {\n apiKey: string;\n clientId: string;\n environmentId: string;\n environmentName: string;\n newlyProvisioned: boolean;\n };\n ProvisionWorkOSTeamRequest: {\n /** @description Email address to use for the WorkOS team admin,\n * must be a verified email address associated with the user's account */\n email: string;\n /** @description Convex team ID, no WorkOS team exists at this point */\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n ProvisionWorkOSTeamResponse: {\n adminEmail: string;\n workosTeamId: string;\n workosTeamName: string;\n };\n ReferralCode: string;\n /** Format: int64 */\n TeamId: number;\n TeamName: string;\n TeamResponse: {\n creator?: null | components[\"schemas\"][\"MemberId\"];\n id: components[\"schemas\"][\"TeamId\"];\n managedBy?: null | components[\"schemas\"][\"ManagedBy\"];\n managedByUrl?: string | null;\n name: components[\"schemas\"][\"TeamName\"];\n referralCode: components[\"schemas\"][\"ReferralCode\"];\n referredBy?: null | components[\"schemas\"][\"TeamId\"];\n slug: components[\"schemas\"][\"TeamSlug\"];\n ssoLoginId?: string | null;\n suspended: boolean;\n };\n TeamSlug: string;\n WorkOSEnvironmentHealthResponse: {\n clientId: string;\n id: string;\n name: string;\n };\n /** @enum {string} */\n WorkOSProductionState: \"active\" | \"inactive\";\n WorkOSTeamHealthResponse: {\n teamInfo?: null | components[\"schemas\"][\"WorkOSTeamInfo\"];\n /** @description Whether a WorkOS team has been provisioned for this Convex team */\n teamProvisioned: boolean;\n };\n WorkOSTeamInfo: {\n id: string;\n name: string;\n productionState: components[\"schemas\"][\"WorkOSProductionState\"];\n };\n };\n responses: never;\n parameters: never;\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type AvailableWorkOsTeamEmailsResponse = components['schemas']['AvailableWorkOSTeamEmailsResponse'];\nexport type DeleteWorkOsEnvironmentRequest = components['schemas']['DeleteWorkOSEnvironmentRequest'];\nexport type DeleteWorkOsEnvironmentResponse = components['schemas']['DeleteWorkOSEnvironmentResponse'];\nexport type DisconnectWorkOsTeamRequest = components['schemas']['DisconnectWorkOSTeamRequest'];\nexport type DisconnectWorkOsTeamResponse = components['schemas']['DisconnectWorkOSTeamResponse'];\nexport type GetOrProvisionEnvironmentRequest = components['schemas']['GetOrProvisionEnvironmentRequest'];\nexport type HasAssociatedWorkOsTeamRequest = components['schemas']['HasAssociatedWorkOSTeamRequest'];\nexport type HasAssociatedWorkOsTeamResponse = components['schemas']['HasAssociatedWorkOSTeamResponse'];\nexport type InvitationEligibleEmailsResponse = components['schemas']['InvitationEligibleEmailsResponse'];\nexport type InviteWorkOsTeamMemberRequest = components['schemas']['InviteWorkOSTeamMemberRequest'];\nexport type InviteWorkOsTeamMemberResponse = components['schemas']['InviteWorkOSTeamMemberResponse'];\nexport type ManagedBy = components['schemas']['ManagedBy'];\nexport type MemberId = components['schemas']['MemberId'];\nexport type ProjectDetails = components['schemas']['ProjectDetails'];\nexport type ProjectId = components['schemas']['ProjectId'];\nexport type ProjectName = components['schemas']['ProjectName'];\nexport type ProjectSlug = components['schemas']['ProjectSlug'];\nexport type ProvisionEnvironmentResponse = components['schemas']['ProvisionEnvironmentResponse'];\nexport type ProvisionWorkOsTeamRequest = components['schemas']['ProvisionWorkOSTeamRequest'];\nexport type ProvisionWorkOsTeamResponse = components['schemas']['ProvisionWorkOSTeamResponse'];\nexport type ReferralCode = components['schemas']['ReferralCode'];\nexport type TeamId = components['schemas']['TeamId'];\nexport type TeamName = components['schemas']['TeamName'];\nexport type TeamResponse = components['schemas']['TeamResponse'];\nexport type TeamSlug = components['schemas']['TeamSlug'];\nexport type WorkOsEnvironmentHealthResponse = components['schemas']['WorkOSEnvironmentHealthResponse'];\nexport type WorkOsProductionState = components['schemas']['WorkOSProductionState'];\nexport type WorkOsTeamHealthResponse = components['schemas']['WorkOSTeamHealthResponse'];\nexport type WorkOsTeamInfo = components['schemas']['WorkOSTeamInfo'];\nexport type $defs = Record<string, never>;\nexport interface operations {\n get_teams_for_member: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"TeamResponse\"][];\n };\n };\n };\n };\n get_cli_projects_for_team: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Team slug identifier */\n team_slug: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProjectDetails\"][];\n };\n };\n };\n };\n delete_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteWorkOSEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteWorkOSEnvironmentResponse\"];\n };\n };\n };\n };\n disconnect_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DisconnectWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DisconnectWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_available_workos_team_emails: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"AvailableWorkOSTeamEmailsResponse\"];\n };\n };\n };\n };\n get_has_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Deployment name */\n deployment_name: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_or_provision_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"GetOrProvisionEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionEnvironmentResponse\"];\n };\n };\n };\n };\n get_workos_environment_health: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Deployment name */\n deployment_name: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSEnvironmentHealthResponse\"];\n };\n };\n };\n };\n get_workos_invitation_eligible_emails: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InvitationEligibleEmailsResponse\"];\n };\n };\n };\n };\n get_workos_team_health: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Convex team ID */\n team_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSTeamHealthResponse\"];\n };\n };\n };\n };\n invite_workos_team_member: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"InviteWorkOSTeamMemberRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InviteWorkOSTeamMemberResponse\"];\n };\n };\n };\n };\n has_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamResponse\"];\n };\n };\n };\n };\n provision_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionWorkOSTeamResponse\"];\n };\n };\n };\n };\n}\n"],
4
+ "sourcesContent": ["/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport interface paths {\n \"/teams\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get: operations[\"get_teams_for_member\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_slug}/projects\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get: operations[\"get_cli_projects_for_team\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/delete_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Delete a WorkOS environment. This removes the environment from both WorkOS and the Convex database. */\n post: operations[\"delete_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/disconnect_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Disconnect a WorkOS team from a Convex team. This is a destructive action that will prevent new WorkOS environments from being provisioned, though existing environments will continue to work. */\n post: operations[\"disconnect_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/available_workos_team_emails\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get candidate email addresses to be WorkOS admins. */\n get: operations[\"get_available_workos_team_emails\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/deployments/{deployment_name}/has_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if a deployment has an associated WorkOS team */\n get: operations[\"get_has_associated_workos_team\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/get_or_provision_workos_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Get or provision a WorkOS environment for a deployment */\n post: operations[\"get_or_provision_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/deployments/{deployment_name}/workos_environment_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if the WorkOS environment associated with this deployment is still accessible */\n get: operations[\"get_workos_environment_health\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_id}/workos_invitation_eligible_emails\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get emails eligible for WorkOS team invitation (all verified emails except those that are admin of a different WorkOS team) */\n get: operations[\"get_workos_invitation_eligible_emails\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_id}/workos_team_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if the WorkOS team associated with this Convex team is still accessible */\n get: operations[\"get_workos_team_health\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/invite_team_member\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Invite a member to the WorkOS team associated with a Convex team */\n post: operations[\"invite_workos_team_member\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/has_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Check if a deployment has an associated WorkOS team */\n post: operations[\"has_associated_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/provision_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Provision a WorkOS team for a Convex team */\n post: operations[\"provision_associated_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/projects/{project_id}/workos_environments\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description List all WorkOS environments for a project */\n get: operations[\"get_project_workos_environments\"];\n put?: never;\n /** @description Create a new WorkOS environment for a project */\n post: operations[\"provision_project_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/projects/{project_id}/workos_environments/{client_id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get a specific WorkOS environment for a project including credentials. This action is audited. */\n get: operations[\"get_project_workos_environment\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/delete_project_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Delete a WorkOS environment from a project */\n post: operations[\"delete_project_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/check_project_environment_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Check the health of a project WorkOS environment. Returns HTTP error on failure. */\n post: operations[\"check_project_environment_health\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n}\nexport type webhooks = Record<string, never>;\nexport interface components {\n schemas: {\n AvailableWorkOSTeamEmailsResponse: {\n availableEmails: string[];\n usedEmails: string[];\n };\n CheckProjectEnvironmentHealthRequest: {\n /** @description WorkOS client ID */\n clientId: string;\n /**\n * Format: int64\n * @description Project ID\n */\n projectId: number;\n };\n DeleteProjectEnvironmentRequest: {\n /** @description WorkOS client ID of the environment to delete */\n clientId: string;\n /**\n * Format: int64\n * @description Project ID for the environment to delete\n */\n projectId: number;\n };\n /** @description Response for deleting a project environment - matches\n * DeleteWorkOSEnvironmentResponse */\n DeleteProjectEnvironmentResponse: {\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n workosTeamId: string;\n };\n DeleteWorkOSEnvironmentRequest: {\n /** @description Deployment name for the environment to delete */\n deploymentName: string;\n };\n DeleteWorkOSEnvironmentResponse: {\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n workosTeamId: string;\n };\n DisconnectWorkOSTeamRequest: {\n /** @description Convex team ID to disconnect from WorkOS */\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n DisconnectWorkOSTeamResponse: {\n workosTeamId: string;\n workosTeamName: string;\n };\n GetOrProvisionEnvironmentRequest: {\n deploymentName: string;\n environmentName?: string | null;\n isProduction?: boolean | null;\n };\n /** @description Response for getting a project WorkOS environment with credentials - matches\n * ProvisionProjectEnvironmentResponse pattern with workos_ prefix */\n GetProjectEnvironmentResponse: {\n isProduction: boolean;\n /** @description The user-provided environment name (e.g., \"staging\", \"development\") */\n userEnvironmentName: string;\n workosApiKey: string;\n workosClientId: string;\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n };\n GetProjectEnvironmentsResponse: {\n environments: components[\"schemas\"][\"ProjectEnvironmentSummary\"][];\n };\n HasAssociatedWorkOSTeamRequest: {\n deploymentName: string;\n };\n HasAssociatedWorkOSTeamResponse: {\n /** @description Email of Convex team member who created the WorkOS account.\n * This field should always be present when has_associated_workos_team is\n * true. */\n adminConvexEmail?: string | null;\n /** @description Email address used to provision the WorkOS account. This field should\n * always be present if has_associated_workos_team is true. */\n adminEmail?: string | null;\n /** @description Name of Convex team member who created the WorkOS account.\n * This field is optional even when has_associated_workos_team is true. */\n adminName?: string | null;\n hasAssociatedWorkosTeam: boolean;\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n InvitationEligibleEmailsResponse: {\n /** @description The admin email used to create this team's WorkOS account (always\n * eligible for re-invitation) */\n adminEmail?: string | null;\n eligibleEmails: string[];\n };\n InviteWorkOSTeamMemberRequest: {\n /** @description Email address to invite to the WorkOS team,\n * must be a verified email address associated with the user's account */\n email: string;\n /** @description Convex team ID that has an associated WorkOS team */\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n InviteWorkOSTeamMemberResponse: {\n email: string;\n roleSlug: string;\n };\n /** @enum {string} */\n ManagedBy: \"vercel\";\n /** Format: int64 */\n MemberId: number;\n ProjectDetails: {\n /** Format: int64 */\n createTime: number;\n devDeploymentName?: string | null;\n id: components[\"schemas\"][\"ProjectId\"];\n isDemo: boolean;\n name: components[\"schemas\"][\"ProjectName\"];\n prodDeploymentName?: string | null;\n slug: components[\"schemas\"][\"ProjectSlug\"];\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n /** @description Summary of a project WorkOS environment for list responses - slimmer than\n * full environment details, uses workos_ prefix for consistency with\n * deployment */\n ProjectEnvironmentSummary: {\n isProduction: boolean;\n /** @description The user-provided environment name (e.g., \"staging\", \"development\") */\n userEnvironmentName: string;\n workosClientId: string;\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n };\n /** Format: int64 */\n ProjectId: number;\n ProjectName: string;\n ProjectSlug: string;\n ProvisionEnvironmentResponse: {\n apiKey: string;\n clientId: string;\n environmentId: string;\n environmentName: string;\n newlyProvisioned: boolean;\n };\n ProvisionProjectEnvironmentRequest: {\n environmentName: string;\n isProduction?: boolean | null;\n };\n /** @description Response for provisioning a project WorkOS environment - matches\n * ProvisionEnvironmentResponse pattern with workos_ prefix for consistency */\n ProvisionProjectEnvironmentResponse: {\n newlyProvisioned: boolean;\n /** @description The user-provided environment name (e.g., \"staging\", \"development\") */\n userEnvironmentName: string;\n workosApiKey: string;\n workosClientId: string;\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n };\n ProvisionWorkOSTeamRequest: {\n /** @description Email address to use for the WorkOS team admin,\n * must be a verified email address associated with the user's account */\n email: string;\n /** @description Convex team ID, no WorkOS team exists at this point */\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n ProvisionWorkOSTeamResponse: {\n adminEmail: string;\n workosTeamId: string;\n workosTeamName: string;\n };\n ReferralCode: string;\n /** Format: int64 */\n TeamId: number;\n TeamName: string;\n TeamResponse: {\n creator?: null | components[\"schemas\"][\"MemberId\"];\n id: components[\"schemas\"][\"TeamId\"];\n managedBy?: null | components[\"schemas\"][\"ManagedBy\"];\n managedByUrl?: string | null;\n name: components[\"schemas\"][\"TeamName\"];\n referralCode: components[\"schemas\"][\"ReferralCode\"];\n referredBy?: null | components[\"schemas\"][\"TeamId\"];\n slug: components[\"schemas\"][\"TeamSlug\"];\n ssoLoginId?: string | null;\n suspended: boolean;\n };\n TeamSlug: string;\n WorkOSEnvironmentHealthResponse: {\n clientId: string;\n id: string;\n name: string;\n };\n /** @enum {string} */\n WorkOSProductionState: \"active\" | \"inactive\";\n WorkOSTeamHealthResponse: {\n teamInfo?: null | components[\"schemas\"][\"WorkOSTeamInfo\"];\n /** @description Whether a WorkOS team has been provisioned for this Convex team */\n teamProvisioned: boolean;\n };\n WorkOSTeamInfo: {\n id: string;\n name: string;\n productionState: components[\"schemas\"][\"WorkOSProductionState\"];\n };\n };\n responses: never;\n parameters: never;\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type AvailableWorkOsTeamEmailsResponse = components['schemas']['AvailableWorkOSTeamEmailsResponse'];\nexport type CheckProjectEnvironmentHealthRequest = components['schemas']['CheckProjectEnvironmentHealthRequest'];\nexport type DeleteProjectEnvironmentRequest = components['schemas']['DeleteProjectEnvironmentRequest'];\nexport type DeleteProjectEnvironmentResponse = components['schemas']['DeleteProjectEnvironmentResponse'];\nexport type DeleteWorkOsEnvironmentRequest = components['schemas']['DeleteWorkOSEnvironmentRequest'];\nexport type DeleteWorkOsEnvironmentResponse = components['schemas']['DeleteWorkOSEnvironmentResponse'];\nexport type DisconnectWorkOsTeamRequest = components['schemas']['DisconnectWorkOSTeamRequest'];\nexport type DisconnectWorkOsTeamResponse = components['schemas']['DisconnectWorkOSTeamResponse'];\nexport type GetOrProvisionEnvironmentRequest = components['schemas']['GetOrProvisionEnvironmentRequest'];\nexport type GetProjectEnvironmentResponse = components['schemas']['GetProjectEnvironmentResponse'];\nexport type GetProjectEnvironmentsResponse = components['schemas']['GetProjectEnvironmentsResponse'];\nexport type HasAssociatedWorkOsTeamRequest = components['schemas']['HasAssociatedWorkOSTeamRequest'];\nexport type HasAssociatedWorkOsTeamResponse = components['schemas']['HasAssociatedWorkOSTeamResponse'];\nexport type InvitationEligibleEmailsResponse = components['schemas']['InvitationEligibleEmailsResponse'];\nexport type InviteWorkOsTeamMemberRequest = components['schemas']['InviteWorkOSTeamMemberRequest'];\nexport type InviteWorkOsTeamMemberResponse = components['schemas']['InviteWorkOSTeamMemberResponse'];\nexport type ManagedBy = components['schemas']['ManagedBy'];\nexport type MemberId = components['schemas']['MemberId'];\nexport type ProjectDetails = components['schemas']['ProjectDetails'];\nexport type ProjectEnvironmentSummary = components['schemas']['ProjectEnvironmentSummary'];\nexport type ProjectId = components['schemas']['ProjectId'];\nexport type ProjectName = components['schemas']['ProjectName'];\nexport type ProjectSlug = components['schemas']['ProjectSlug'];\nexport type ProvisionEnvironmentResponse = components['schemas']['ProvisionEnvironmentResponse'];\nexport type ProvisionProjectEnvironmentRequest = components['schemas']['ProvisionProjectEnvironmentRequest'];\nexport type ProvisionProjectEnvironmentResponse = components['schemas']['ProvisionProjectEnvironmentResponse'];\nexport type ProvisionWorkOsTeamRequest = components['schemas']['ProvisionWorkOSTeamRequest'];\nexport type ProvisionWorkOsTeamResponse = components['schemas']['ProvisionWorkOSTeamResponse'];\nexport type ReferralCode = components['schemas']['ReferralCode'];\nexport type TeamId = components['schemas']['TeamId'];\nexport type TeamName = components['schemas']['TeamName'];\nexport type TeamResponse = components['schemas']['TeamResponse'];\nexport type TeamSlug = components['schemas']['TeamSlug'];\nexport type WorkOsEnvironmentHealthResponse = components['schemas']['WorkOSEnvironmentHealthResponse'];\nexport type WorkOsProductionState = components['schemas']['WorkOSProductionState'];\nexport type WorkOsTeamHealthResponse = components['schemas']['WorkOSTeamHealthResponse'];\nexport type WorkOsTeamInfo = components['schemas']['WorkOSTeamInfo'];\nexport type $defs = Record<string, never>;\nexport interface operations {\n get_teams_for_member: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"TeamResponse\"][];\n };\n };\n };\n };\n get_cli_projects_for_team: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Team slug identifier */\n team_slug: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProjectDetails\"][];\n };\n };\n };\n };\n delete_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteWorkOSEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteWorkOSEnvironmentResponse\"];\n };\n };\n };\n };\n disconnect_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DisconnectWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DisconnectWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_available_workos_team_emails: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"AvailableWorkOSTeamEmailsResponse\"];\n };\n };\n };\n };\n get_has_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Deployment name */\n deployment_name: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_or_provision_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"GetOrProvisionEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionEnvironmentResponse\"];\n };\n };\n };\n };\n get_workos_environment_health: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Deployment name */\n deployment_name: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSEnvironmentHealthResponse\"];\n };\n };\n };\n };\n get_workos_invitation_eligible_emails: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Convex team ID */\n team_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InvitationEligibleEmailsResponse\"];\n };\n };\n };\n };\n get_workos_team_health: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Convex team ID */\n team_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSTeamHealthResponse\"];\n };\n };\n };\n };\n invite_workos_team_member: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"InviteWorkOSTeamMemberRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InviteWorkOSTeamMemberResponse\"];\n };\n };\n };\n };\n has_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamResponse\"];\n };\n };\n };\n };\n provision_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_project_workos_environments: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"GetProjectEnvironmentsResponse\"];\n };\n };\n };\n };\n provision_project_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionProjectEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionProjectEnvironmentResponse\"];\n };\n };\n };\n };\n get_project_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n client_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"GetProjectEnvironmentResponse\"];\n };\n };\n };\n };\n delete_project_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteProjectEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteProjectEnvironmentResponse\"];\n };\n };\n };\n };\n check_project_environment_health: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CheckProjectEnvironmentHealthRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSEnvironmentHealthResponse\"];\n };\n };\n };\n };\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -31,6 +31,7 @@ var import_deploymentSelection = require("./lib/deploymentSelection.js");
31
31
  var import_workos = require("./lib/workos/workos.js");
32
32
  var import_platformApi = require("./lib/workos/platformApi.js");
33
33
  var import_log = require("../bundler/log.js");
34
+ var import_config = require("./lib/config.js");
34
35
  var import_prompts = require("./lib/utils/prompts.js");
35
36
  async function selectEnvDeployment(options) {
36
37
  const ctx = await (0, import_context.oneoffContext)(options);
@@ -45,11 +46,27 @@ async function selectEnvDeployment(options) {
45
46
  deploymentSelection,
46
47
  selectionWithinProject
47
48
  );
48
- const deploymentNotice = deploymentFields !== null ? ` (on ${import_chalk.chalkStderr.bold(deploymentFields.deploymentType)} deployment ${import_chalk.chalkStderr.bold(deploymentFields.deploymentName)})` : "";
49
+ if (!deploymentFields) {
50
+ return await ctx.crash({
51
+ exitCode: 1,
52
+ errorType: "fatal",
53
+ printedMessage: "WorkOS integration requires a configured deployment"
54
+ });
55
+ }
56
+ const deploymentNotice = ` (on ${import_chalk.chalkStderr.bold(deploymentFields.deploymentType)} deployment ${import_chalk.chalkStderr.bold(deploymentFields.deploymentName)})`;
57
+ const deploymentType = deploymentFields.deploymentType;
58
+ if (deploymentType !== "dev" && deploymentType !== "preview" && deploymentType !== "prod") {
59
+ return await ctx.crash({
60
+ exitCode: 1,
61
+ errorType: "fatal",
62
+ printedMessage: `WorkOS integration is only available for cloud deployments (dev, preview, prod), not ${deploymentType}`
63
+ });
64
+ }
49
65
  return {
50
66
  ctx,
51
67
  deployment: {
52
68
  deploymentName: deploymentFields.deploymentName,
69
+ deploymentType,
53
70
  deploymentUrl,
54
71
  adminKey,
55
72
  deploymentNotice
@@ -87,6 +104,38 @@ const workosTeamStatus = new import_extra_typings.Command("status").summary("Sta
87
104
  const workosUrl = `https://dashboard.workos.com/${envHealth.id}/authentication`;
88
105
  (0, import_log.logMessage)(`${workosUrl}`);
89
106
  }
107
+ try {
108
+ const { projectConfig } = await (0, import_config.readProjectConfig)(ctx);
109
+ const authKitConfig = await (0, import_config.getAuthKitConfig)(ctx, projectConfig);
110
+ if (!authKitConfig) {
111
+ (0, import_log.logMessage)(
112
+ `AuthKit config: ${import_chalk.chalkStderr.dim("Not configured in convex.json")}`
113
+ );
114
+ } else {
115
+ (0, import_log.logMessage)(`AuthKit config:`);
116
+ for (const deploymentType of ["dev", "preview", "prod"]) {
117
+ const envConfig = authKitConfig[deploymentType];
118
+ if (!envConfig) {
119
+ (0, import_log.logMessage)(
120
+ ` ${deploymentType}: ${import_chalk.chalkStderr.dim("not configured")}`
121
+ );
122
+ continue;
123
+ }
124
+ let description = "";
125
+ if (deploymentType === "prod" && envConfig.environmentType) {
126
+ description = `environment type: ${envConfig.environmentType}`;
127
+ }
128
+ const configureStatus = envConfig.configure === false ? ", configure: disabled" : envConfig.configure ? ", will configure WorkOS" : "";
129
+ const localEnvVarsStatus = envConfig.localEnvVars === false ? "" : envConfig.localEnvVars ? `, ${Object.keys(envConfig.localEnvVars).length} local env vars` : "";
130
+ const configInfo = [description, configureStatus, localEnvVarsStatus].filter((s) => s).join("");
131
+ (0, import_log.logMessage)(` ${deploymentType}: ${configInfo || "configured"}`);
132
+ }
133
+ }
134
+ } catch (error) {
135
+ (0, import_log.logMessage)(
136
+ `AuthKit config: ${import_chalk.chalkStderr.yellow(`Error reading config: ${String(error)}`)}`
137
+ );
138
+ }
90
139
  });
91
140
  const workosProvisionEnvironment = new import_extra_typings.Command("provision-environment").summary("Provision a WorkOS environment").description(
92
141
  "Create or get the WorkOS environment and API key for this deployment"
@@ -102,18 +151,25 @@ const workosProvisionEnvironment = new import_extra_typings.Command("provision-e
102
151
  ctx,
103
152
  "integration workos provision-environment"
104
153
  );
105
- const environmentName = options.name;
106
154
  try {
155
+ const { projectConfig } = await (0, import_config.readProjectConfig)(ctx);
156
+ const authKitConfig = await (0, import_config.getAuthKitConfig)(ctx, projectConfig);
157
+ const config = authKitConfig || { dev: {} };
158
+ if (!authKitConfig) {
159
+ (0, import_log.logWarning)(
160
+ "Consider using the 'authKit' config in convex.json for automatic provisioning."
161
+ );
162
+ (0, import_log.logMessage)(
163
+ "Learn more at https://docs.convex.dev/auth/authkit/auto-provision"
164
+ );
165
+ (0, import_log.logMessage)("");
166
+ }
107
167
  await (0, import_workos.ensureWorkosEnvironmentProvisioned)(
108
168
  ctx,
109
169
  deployment.deploymentName,
110
170
  deployment,
111
- {
112
- offerToAssociateWorkOSTeam: true,
113
- autoProvisionIfWorkOSTeamAssociated: true,
114
- autoConfigureAuthkitConfig: true,
115
- ...environmentName !== void 0 && { environmentName }
116
- }
171
+ config,
172
+ deployment.deploymentType
117
173
  );
118
174
  } catch (error) {
119
175
  await ctx.crash({
@@ -149,7 +205,8 @@ const workosProvisionTeam = new import_extra_typings.Command("provision-team").s
149
205
  const result = await (0, import_workos.provisionWorkosTeamInteractive)(
150
206
  ctx,
151
207
  deployment.deploymentName,
152
- teamId
208
+ teamId,
209
+ deployment.deploymentType
153
210
  );
154
211
  if (!result.success) {
155
212
  (0, import_log.logMessage)(import_chalk.chalkStderr.gray("Cancelled."));
@@ -295,6 +352,137 @@ const workosInvite = new import_extra_typings.Command("invite").summary("Invite
295
352
  );
296
353
  }
297
354
  });
298
- const workos = new import_extra_typings.Command("workos").summary("WorkOS integration commands").description("Manage WorkOS team provisioning and environment setup").addCommand(workosProvisionEnvironment).addCommand(workosTeamStatus).addCommand(workosProvisionTeam).addCommand(workosDisconnectTeam).addCommand(workosInvite);
355
+ const workosProjectEnvList = new import_extra_typings.Command("list-project-environments").summary("List WorkOS environments for current project").description(
356
+ "List all WorkOS AuthKit environments created for the current project.\nThese environments can be used across multiple deployments."
357
+ ).addDeploymentSelectionOptions(
358
+ (0, import_command.actionDescription)("List project environments for")
359
+ ).action(async (_options, cmd) => {
360
+ const options = cmd.optsWithGlobals();
361
+ const { ctx, deployment } = await selectEnvDeployment(options);
362
+ const info = await (0, import_api.fetchTeamAndProject)(ctx, deployment.deploymentName);
363
+ (0, import_log.logMessage)("Fetching project WorkOS environments...");
364
+ try {
365
+ const environments = await (0, import_platformApi.listProjectWorkOSEnvironments)(
366
+ ctx,
367
+ info.projectId
368
+ );
369
+ if (environments.length === 0) {
370
+ (0, import_log.logMessage)("No WorkOS environments found for this project.");
371
+ (0, import_log.logMessage)(
372
+ import_chalk.chalkStderr.gray(
373
+ "Create one with: npx convex integration workos create-project-environment --name <name>"
374
+ )
375
+ );
376
+ } else {
377
+ (0, import_log.logMessage)(import_chalk.chalkStderr.bold("WorkOS Project Environments:"));
378
+ for (const env of environments) {
379
+ const prodLabel = env.isProduction ? import_chalk.chalkStderr.yellow(" (production)") : "";
380
+ (0, import_log.logMessage)(
381
+ ` ${import_chalk.chalkStderr.green(env.userEnvironmentName)}${prodLabel} - Client ID: ${env.workosClientId}`
382
+ );
383
+ }
384
+ }
385
+ } catch (error) {
386
+ (0, import_log.logMessage)(
387
+ import_chalk.chalkStderr.red(`Failed to list environments: ${String(error)}`)
388
+ );
389
+ }
390
+ });
391
+ const workosProjectEnvCreate = new import_extra_typings.Command("create-project-environment").summary("Create a new WorkOS environment for the project").description(
392
+ "Create a new WorkOS AuthKit environment for this project.\nThe environment can be used across multiple deployments."
393
+ ).requiredOption("--name <name>", "Name for the new environment").option("--production", "Mark this environment as a production environment").addDeploymentSelectionOptions(
394
+ (0, import_command.actionDescription)("Create project environment for")
395
+ ).action(async (_options, cmd) => {
396
+ const options = cmd.optsWithGlobals();
397
+ const environmentName = options.name;
398
+ const isProduction = options.production;
399
+ const { ctx, deployment } = await selectEnvDeployment(options);
400
+ const info = await (0, import_api.fetchTeamAndProject)(ctx, deployment.deploymentName);
401
+ (0, import_log.showSpinner)(
402
+ `Creating project-level WorkOS environment '${environmentName}'...`
403
+ );
404
+ try {
405
+ const response = await (0, import_platformApi.createProjectWorkOSEnvironment)(
406
+ ctx,
407
+ info.projectId,
408
+ environmentName,
409
+ isProduction
410
+ );
411
+ (0, import_log.stopSpinner)();
412
+ (0, import_log.logFinishedStep)(`Created WorkOS environment '${environmentName}'`);
413
+ (0, import_log.logMessage)("");
414
+ (0, import_log.logMessage)(import_chalk.chalkStderr.bold("Environment Details:"));
415
+ (0, import_log.logMessage)(` Name: ${response.userEnvironmentName}`);
416
+ (0, import_log.logMessage)(` Client ID: ${response.workosClientId}`);
417
+ (0, import_log.logMessage)(` API Key: ${response.workosApiKey}`);
418
+ } catch (error) {
419
+ (0, import_log.stopSpinner)();
420
+ if (error?.message?.includes("NoWorkOSTeam")) {
421
+ (0, import_log.logMessage)(
422
+ import_chalk.chalkStderr.red(
423
+ "Your team doesn't have a WorkOS integration configured yet."
424
+ )
425
+ );
426
+ (0, import_log.logMessage)(
427
+ "Please run 'npx convex integration workos provision-team' first."
428
+ );
429
+ } else if (error?.message?.includes("duplicate")) {
430
+ (0, import_log.logMessage)(
431
+ import_chalk.chalkStderr.red(
432
+ `An environment named '${environmentName}' already exists for this project.`
433
+ )
434
+ );
435
+ } else if (error?.message?.includes("TooManyEnvironments")) {
436
+ (0, import_log.logMessage)(
437
+ import_chalk.chalkStderr.red(
438
+ "You've reached the limit of 10 WorkOS environments per project. If you need more, please contact support."
439
+ )
440
+ );
441
+ } else {
442
+ (0, import_log.logMessage)(import_chalk.chalkStderr.red(`Failed to create environment: ${error}`));
443
+ }
444
+ }
445
+ });
446
+ const workosProjectEnvDelete = new import_extra_typings.Command("delete-project-environment").summary("Delete a WorkOS environment from the project").description(
447
+ "Delete a WorkOS environment from this project.\nThis will permanently remove the environment and its credentials.\nUse the client ID shown in list-project-environments output."
448
+ ).requiredOption(
449
+ "--client-id <clientId>",
450
+ "WorkOS client ID of the environment to delete (shown in list output)"
451
+ ).addDeploymentSelectionOptions(
452
+ (0, import_command.actionDescription)("Delete project environment for")
453
+ ).action(async (_options, cmd) => {
454
+ const options = cmd.optsWithGlobals();
455
+ const clientId = options.clientId;
456
+ const { ctx, deployment } = await selectEnvDeployment(options);
457
+ const info = await (0, import_api.fetchTeamAndProject)(ctx, deployment.deploymentName);
458
+ const confirmed = await (0, import_prompts.promptYesNo)(ctx, {
459
+ message: `Are you sure you want to delete environment with client ID '${clientId}'?`,
460
+ default: false
461
+ });
462
+ if (!confirmed) {
463
+ (0, import_log.logMessage)("Deletion cancelled.");
464
+ return;
465
+ }
466
+ (0, import_log.showSpinner)(
467
+ `Deleting project WorkOS environment (this can take a while)...`
468
+ );
469
+ try {
470
+ await (0, import_platformApi.deleteProjectWorkOSEnvironment)(ctx, info.projectId, clientId);
471
+ (0, import_log.stopSpinner)();
472
+ (0, import_log.logFinishedStep)(`Deleted environment with client ID '${clientId}'`);
473
+ } catch (error) {
474
+ (0, import_log.stopSpinner)();
475
+ if (error?.message?.includes("not found")) {
476
+ (0, import_log.logMessage)(
477
+ import_chalk.chalkStderr.red(
478
+ `Environment with client ID '${clientId}' not found.`
479
+ )
480
+ );
481
+ } else {
482
+ (0, import_log.logMessage)(import_chalk.chalkStderr.red(`Failed to delete environment: ${error}`));
483
+ }
484
+ }
485
+ });
486
+ const workos = new import_extra_typings.Command("workos").summary("WorkOS integration commands").description("Manage WorkOS team provisioning and environment setup").addCommand(workosProvisionEnvironment).addCommand(workosTeamStatus).addCommand(workosProvisionTeam).addCommand(workosDisconnectTeam).addCommand(workosInvite).addCommand(workosProjectEnvList).addCommand(workosProjectEnvCreate).addCommand(workosProjectEnvDelete);
299
487
  const integration = new import_extra_typings.Command("integration").summary("Integration commands").description("Commands for managing third-party integrations").addCommand(workos);
300
488
  //# sourceMappingURL=integration.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/integration.ts"],
4
- "sourcesContent": ["/**\n * Debugging commands for the WorkOS integration; these are unstable, undocumented, and will change or disappear as the WorkOS integration evolves.\n **/\nimport { Command } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { chalkStderr } from \"chalk\";\nimport {\n DeploymentSelectionOptions,\n deploymentSelectionWithinProjectFromOptions,\n fetchTeamAndProject,\n getTeamAndProjectSlugForDeployment,\n loadSelectedDeploymentCredentials,\n} from \"./lib/api.js\";\nimport { actionDescription } from \"./lib/command.js\";\nimport { ensureHasConvexDependency } from \"./lib/utils/utils.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\nimport {\n ensureWorkosEnvironmentProvisioned,\n provisionWorkosTeamInteractive,\n} from \"./lib/workos/workos.js\";\nimport {\n disconnectWorkOSTeam,\n getCandidateEmailsForWorkIntegration,\n getDeploymentCanProvisionWorkOSEnvironments,\n getInvitationEligibleEmails,\n getWorkosEnvironmentHealth,\n getWorkosTeamHealth,\n inviteToWorkosTeam,\n} from \"./lib/workos/platformApi.js\";\nimport { logFinishedStep, logMessage } from \"../bundler/log.js\";\nimport { promptOptions, promptYesNo } from \"./lib/utils/prompts.js\";\n\nasync function selectEnvDeployment(\n options: DeploymentSelectionOptions,\n): Promise<{\n ctx: Context;\n deployment: {\n deploymentUrl: string;\n deploymentName: string;\n adminKey: string;\n deploymentNotice: string;\n };\n}> {\n const ctx = await oneoffContext(options);\n const deploymentSelection = await getDeploymentSelection(ctx, options);\n const selectionWithinProject =\n deploymentSelectionWithinProjectFromOptions(options);\n const {\n adminKey,\n url: deploymentUrl,\n deploymentFields,\n } = await loadSelectedDeploymentCredentials(\n ctx,\n deploymentSelection,\n selectionWithinProject,\n );\n const deploymentNotice =\n deploymentFields !== null\n ? ` (on ${chalkStderr.bold(deploymentFields.deploymentType)} deployment ${chalkStderr.bold(deploymentFields.deploymentName)})`\n : \"\";\n return {\n ctx,\n deployment: {\n deploymentName: deploymentFields!.deploymentName,\n deploymentUrl,\n adminKey,\n deploymentNotice,\n },\n };\n}\n\nconst workosTeamStatus = new Command(\"status\")\n .summary(\"Status of associated WorkOS team and environment\")\n .addDeploymentSelectionOptions(actionDescription(\"Check WorkOS status for\"))\n .action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(options);\n\n const info = await fetchTeamAndProject(ctx, deployment.deploymentName);\n\n // Check team status\n const teamHealth = await getWorkosTeamHealth(ctx, info.teamId);\n if (!teamHealth) {\n logMessage(`WorkOS team: Not provisioned`);\n const { availableEmails } =\n await getCandidateEmailsForWorkIntegration(ctx);\n if (availableEmails.length > 0) {\n logMessage(\n ` Verified emails that can provision: ${availableEmails.join(\", \")}`,\n );\n }\n } else if (teamHealth.productionState === \"inactive\") {\n logMessage(\n `WorkOS team: ${teamHealth.name} (no credit card added on workos.com, so production auth environments cannot be created)`,\n );\n } else {\n logMessage(`WorkOS team: ${teamHealth.name}`);\n }\n\n // Check environment status\n const envHealth = await getWorkosEnvironmentHealth(\n ctx,\n deployment.deploymentName,\n );\n if (!envHealth) {\n logMessage(`WorkOS environment: Not provisioned`);\n } else {\n logMessage(`WorkOS environment: ${envHealth.name}`);\n const workosUrl = `https://dashboard.workos.com/${envHealth.id}/authentication`;\n logMessage(`${workosUrl}`);\n }\n });\n\nconst workosProvisionEnvironment = new Command(\"provision-environment\")\n .summary(\"Provision a WorkOS environment\")\n .description(\n \"Create or get the WorkOS environment and API key for this deployment\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .addDeploymentSelectionOptions(\n actionDescription(\"Provision WorkOS environment for\"),\n )\n .option(\n \"--name <name>\",\n \"Custom name for the WorkOS environment (if not provided, uses deployment name)\",\n )\n .action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(options);\n await ensureHasConvexDependency(\n ctx,\n \"integration workos provision-environment\",\n );\n\n const environmentName = options.name as string | undefined;\n\n try {\n await ensureWorkosEnvironmentProvisioned(\n ctx,\n deployment.deploymentName,\n deployment,\n {\n offerToAssociateWorkOSTeam: true,\n autoProvisionIfWorkOSTeamAssociated: true,\n autoConfigureAuthkitConfig: true,\n ...(environmentName !== undefined && { environmentName }),\n },\n );\n } catch (error) {\n await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n errForSentry: error,\n printedMessage: `Failed to provision WorkOS environment: ${String(error)}`,\n });\n }\n });\n\nconst workosProvisionTeam = new Command(\"provision-team\")\n .summary(\"Provision a WorkOS team for this Convex team\")\n .description(\n \"Create a WorkOS team and associate it with this Convex team. \" +\n \"This enables automatic provisioning of WorkOS environments for deployments on this team.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .addDeploymentSelectionOptions(actionDescription(\"Provision WorkOS team for\"))\n .action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(options);\n\n // Check if there's already an associated WorkOS team\n const { hasAssociatedWorkosTeam, teamId } =\n await getDeploymentCanProvisionWorkOSEnvironments(\n ctx,\n deployment.deploymentName,\n );\n\n if (hasAssociatedWorkosTeam) {\n logMessage(\n chalkStderr.yellow(\n \"This Convex team already has an associated WorkOS team.\",\n ),\n );\n logMessage(\n chalkStderr.dim(\n \"Use 'npx convex integration workos status' to view details.\",\n ),\n );\n return;\n }\n\n // Use the shared provisioning flow\n const result = await provisionWorkosTeamInteractive(\n ctx,\n deployment.deploymentName,\n teamId,\n );\n\n if (!result.success) {\n logMessage(chalkStderr.gray(\"Cancelled.\"));\n return;\n }\n\n // Success!\n logMessage(\n chalkStderr.green(\n `\\n\u2713 Successfully created WorkOS team \"${result.workosTeamName}\" (${result.workosTeamId})`,\n ),\n );\n logMessage(\n chalkStderr.dim(\n \"You can now provision WorkOS environments for deployments on this team.\",\n ),\n );\n });\n\nconst workosDisconnectTeam = new Command(\"disconnect-team\")\n .summary(\"Disconnect WorkOS team from Convex team\")\n .description(\n \"Remove the associated WorkOS team from this Convex team. \" +\n \"This is a destructive action that will prevent new WorkOS environments from being provisioned. \" +\n \"Existing environments will continue to work with their current API keys.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .addDeploymentSelectionOptions(\n actionDescription(\"Disconnect WorkOS team for\"),\n )\n .action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(options);\n\n // Check if there's an associated WorkOS team\n const { hasAssociatedWorkosTeam, teamId } =\n await getDeploymentCanProvisionWorkOSEnvironments(\n ctx,\n deployment.deploymentName,\n );\n\n if (!hasAssociatedWorkosTeam) {\n logMessage(\n chalkStderr.yellow(\n \"This Convex team does not have an associated WorkOS team.\",\n ),\n );\n return;\n }\n\n const info = await getTeamAndProjectSlugForDeployment(ctx, {\n deploymentName: deployment.deploymentName,\n });\n\n logMessage(\n chalkStderr.yellow(\n `Warning: This will disconnect the WorkOS team from Convex team \"${info?.teamSlug}\".`,\n ),\n );\n logMessage(\n \"AuthKit environments provisioned for Convex deployments on this team will no longer use this WorkOS team to provision environments.\",\n );\n logMessage(\n chalkStderr.dim(\n \"Existing WorkOS environments will continue to work with their current API keys.\",\n ),\n );\n\n const confirmed = await promptYesNo(ctx, {\n message: \"Are you sure you want to disconnect this WorkOS team?\",\n default: false,\n });\n\n if (!confirmed) {\n logMessage(chalkStderr.gray(\"Cancelled.\"));\n return;\n }\n\n const result = await disconnectWorkOSTeam(ctx, teamId);\n\n if (!result.success) {\n if (result.error === \"not_associated\") {\n logMessage(\n chalkStderr.yellow(\n \"This Convex team does not have an associated WorkOS team.\",\n ),\n );\n return;\n }\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Failed to disconnect WorkOS team: ${result.message}`,\n });\n }\n\n logFinishedStep(\n `Successfully disconnected WorkOS team \"${result.workosTeamName}\" (${result.workosTeamId})`,\n );\n });\n\nconst workosInvite = new Command(\"invite\")\n .summary(\"Invite yourself to the WorkOS team\")\n .description(\n \"Send an invitation to join the WorkOS team associated with your Convex team\",\n )\n .option(\"--email <email>\", \"Email address to invite (skips validation)\")\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .addDeploymentSelectionOptions(\n actionDescription(\"Invite yourself to WorkOS team for\"),\n )\n .action(async (options, cmd) => {\n const allOptions = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(allOptions);\n\n // Get team info first\n const info = await fetchTeamAndProject(ctx, deployment.deploymentName);\n\n let emailToInvite: string;\n\n // If email was provided as flag, use it directly (skip CLI validation)\n if (options.email) {\n emailToInvite = options.email;\n } else {\n // Get emails eligible for invitation (all verified emails except those that are admin of a different team)\n const { eligibleEmails, adminEmail } = await getInvitationEligibleEmails(\n ctx,\n info.teamId,\n );\n\n // Combine eligible emails with admin email (admin email is always an option for re-invitation)\n const allInvitableEmails = [...eligibleEmails];\n if (adminEmail && !allInvitableEmails.includes(adminEmail)) {\n allInvitableEmails.push(adminEmail);\n }\n\n if (allInvitableEmails.length === 0) {\n logMessage(\n \"You don't have any verified emails available for invitation.\",\n );\n logMessage(\n \"This could be because all your verified emails are already admin of other WorkOS teams.\",\n );\n return;\n }\n\n // Let user select which email to use\n emailToInvite = await promptOptions(ctx, {\n message: \"Which email would you like to invite to the WorkOS team?\",\n choices: allInvitableEmails.map((email) => ({\n name: email + (email === adminEmail ? \" (admin email)\" : \"\"),\n value: email,\n })),\n default: allInvitableEmails[0],\n });\n\n // Confirm before sending\n const confirmed = await promptYesNo(ctx, {\n message: `Send invitation to ${emailToInvite}?`,\n default: true,\n });\n\n if (!confirmed) {\n logMessage(\"Invitation cancelled.\");\n return;\n }\n }\n\n logMessage(`Sending invitation to ${emailToInvite}...`);\n\n const result = await inviteToWorkosTeam(ctx, info.teamId, emailToInvite);\n\n if (result.result === \"success\") {\n logMessage(\n `\u2713 Successfully sent invitation to ${result.email} with role ${result.roleSlug}`,\n );\n logMessage(\n \"Check your email for the invitation link to join the WorkOS team.\",\n );\n } else if (result.result === \"teamNotProvisioned\") {\n logMessage(\n `\u2717 ${result.message}. Run 'npx convex integration workos provision-environment' first.`,\n );\n } else if (result.result === \"alreadyInWorkspace\") {\n logMessage(\n `\u2717 ${result.message}. This usually means the email is already used in another WorkOS workspace.`,\n );\n }\n });\n\nconst workos = new Command(\"workos\")\n .summary(\"WorkOS integration commands\")\n .description(\"Manage WorkOS team provisioning and environment setup\")\n .addCommand(workosProvisionEnvironment)\n .addCommand(workosTeamStatus)\n .addCommand(workosProvisionTeam)\n .addCommand(workosDisconnectTeam)\n .addCommand(workosInvite);\n\nexport const integration = new Command(\"integration\")\n .summary(\"Integration commands\")\n .description(\"Commands for managing third-party integrations\")\n .addCommand(workos);\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Debugging commands for the WorkOS integration; these are unstable, undocumented, and will change or disappear as the WorkOS integration evolves.\n **/\nimport { Command } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { chalkStderr } from \"chalk\";\nimport {\n CloudDeploymentType,\n DeploymentSelectionOptions,\n deploymentSelectionWithinProjectFromOptions,\n fetchTeamAndProject,\n getTeamAndProjectSlugForDeployment,\n loadSelectedDeploymentCredentials,\n} from \"./lib/api.js\";\nimport { actionDescription } from \"./lib/command.js\";\nimport { ensureHasConvexDependency } from \"./lib/utils/utils.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\nimport {\n ensureWorkosEnvironmentProvisioned,\n provisionWorkosTeamInteractive,\n} from \"./lib/workos/workos.js\";\nimport {\n disconnectWorkOSTeam,\n getCandidateEmailsForWorkIntegration,\n getDeploymentCanProvisionWorkOSEnvironments,\n getInvitationEligibleEmails,\n getWorkosEnvironmentHealth,\n getWorkosTeamHealth,\n inviteToWorkosTeam,\n listProjectWorkOSEnvironments,\n createProjectWorkOSEnvironment,\n deleteProjectWorkOSEnvironment,\n} from \"./lib/workos/platformApi.js\";\nimport {\n logFinishedStep,\n logMessage,\n logWarning,\n showSpinner,\n stopSpinner,\n} from \"../bundler/log.js\";\nimport { readProjectConfig, getAuthKitConfig } from \"./lib/config.js\";\nimport { promptOptions, promptYesNo } from \"./lib/utils/prompts.js\";\n\nasync function selectEnvDeployment(\n options: DeploymentSelectionOptions,\n): Promise<{\n ctx: Context;\n deployment: {\n deploymentUrl: string;\n deploymentName: string;\n deploymentType: CloudDeploymentType;\n adminKey: string;\n deploymentNotice: string;\n };\n}> {\n const ctx = await oneoffContext(options);\n const deploymentSelection = await getDeploymentSelection(ctx, options);\n const selectionWithinProject =\n deploymentSelectionWithinProjectFromOptions(options);\n const {\n adminKey,\n url: deploymentUrl,\n deploymentFields,\n } = await loadSelectedDeploymentCredentials(\n ctx,\n deploymentSelection,\n selectionWithinProject,\n );\n // WorkOS integration only works with cloud deployments\n if (!deploymentFields) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"WorkOS integration requires a configured deployment\",\n });\n }\n\n const deploymentNotice = ` (on ${chalkStderr.bold(deploymentFields.deploymentType)} deployment ${chalkStderr.bold(deploymentFields.deploymentName)})`;\n\n const deploymentType = deploymentFields.deploymentType;\n if (\n deploymentType !== \"dev\" &&\n deploymentType !== \"preview\" &&\n deploymentType !== \"prod\"\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `WorkOS integration is only available for cloud deployments (dev, preview, prod), not ${deploymentType}`,\n });\n }\n\n // Now TypeScript knows deploymentType is CloudDeploymentType\n return {\n ctx,\n deployment: {\n deploymentName: deploymentFields.deploymentName,\n deploymentType,\n deploymentUrl,\n adminKey,\n deploymentNotice,\n },\n };\n}\n\nconst workosTeamStatus = new Command(\"status\")\n .summary(\"Status of associated WorkOS team and environment\")\n .addDeploymentSelectionOptions(actionDescription(\"Check WorkOS status for\"))\n .action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(options);\n\n const info = await fetchTeamAndProject(ctx, deployment.deploymentName);\n\n // Check team status\n const teamHealth = await getWorkosTeamHealth(ctx, info.teamId);\n if (!teamHealth) {\n logMessage(`WorkOS team: Not provisioned`);\n const { availableEmails } =\n await getCandidateEmailsForWorkIntegration(ctx);\n if (availableEmails.length > 0) {\n logMessage(\n ` Verified emails that can provision: ${availableEmails.join(\", \")}`,\n );\n }\n } else if (teamHealth.productionState === \"inactive\") {\n logMessage(\n `WorkOS team: ${teamHealth.name} (no credit card added on workos.com, so production auth environments cannot be created)`,\n );\n } else {\n logMessage(`WorkOS team: ${teamHealth.name}`);\n }\n\n // Check environment status\n const envHealth = await getWorkosEnvironmentHealth(\n ctx,\n deployment.deploymentName,\n );\n if (!envHealth) {\n logMessage(`WorkOS environment: Not provisioned`);\n } else {\n logMessage(`WorkOS environment: ${envHealth.name}`);\n const workosUrl = `https://dashboard.workos.com/${envHealth.id}/authentication`;\n logMessage(`${workosUrl}`);\n }\n\n try {\n const { projectConfig } = await readProjectConfig(ctx);\n const authKitConfig = await getAuthKitConfig(ctx, projectConfig);\n\n if (!authKitConfig) {\n logMessage(\n `AuthKit config: ${chalkStderr.dim(\"Not configured in convex.json\")}`,\n );\n } else {\n logMessage(`AuthKit config:`);\n\n // Show config for each deployment type\n for (const deploymentType of [\"dev\", \"preview\", \"prod\"] as const) {\n const envConfig = authKitConfig[deploymentType];\n if (!envConfig) {\n logMessage(\n ` ${deploymentType}: ${chalkStderr.dim(\"not configured\")}`,\n );\n continue;\n }\n\n // Build description based on what's configured\n let description = \"\";\n\n // Show environment type for prod deployments\n if (deploymentType === \"prod\" && envConfig.environmentType) {\n description = `environment type: ${envConfig.environmentType}`;\n }\n\n const configureStatus =\n envConfig.configure === false\n ? \", configure: disabled\"\n : envConfig.configure\n ? \", will configure WorkOS\"\n : \"\";\n\n const localEnvVarsStatus =\n envConfig.localEnvVars === false\n ? \"\"\n : envConfig.localEnvVars\n ? `, ${Object.keys(envConfig.localEnvVars).length} local env vars`\n : \"\";\n\n // Show deployment type with its configuration\n const configInfo = [description, configureStatus, localEnvVarsStatus]\n .filter((s) => s)\n .join(\"\");\n\n logMessage(` ${deploymentType}: ${configInfo || \"configured\"}`);\n }\n }\n } catch (error) {\n logMessage(\n `AuthKit config: ${chalkStderr.yellow(`Error reading config: ${String(error)}`)}`,\n );\n }\n });\n\nconst workosProvisionEnvironment = new Command(\"provision-environment\")\n .summary(\"Provision a WorkOS environment\")\n .description(\n \"Create or get the WorkOS environment and API key for this deployment\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .addDeploymentSelectionOptions(\n actionDescription(\"Provision WorkOS environment for\"),\n )\n .option(\n \"--name <name>\",\n \"Custom name for the WorkOS environment (if not provided, uses deployment name)\",\n )\n .action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(options);\n await ensureHasConvexDependency(\n ctx,\n \"integration workos provision-environment\",\n );\n\n try {\n const { projectConfig } = await readProjectConfig(ctx);\n const authKitConfig = await getAuthKitConfig(ctx, projectConfig);\n const config = authKitConfig || { dev: {} };\n\n if (!authKitConfig) {\n logWarning(\n \"Consider using the 'authKit' config in convex.json for automatic provisioning.\",\n );\n logMessage(\n \"Learn more at https://docs.convex.dev/auth/authkit/auto-provision\",\n );\n logMessage(\"\");\n }\n\n await ensureWorkosEnvironmentProvisioned(\n ctx,\n deployment.deploymentName,\n deployment,\n config,\n deployment.deploymentType,\n );\n } catch (error) {\n await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n errForSentry: error,\n printedMessage: `Failed to provision WorkOS environment: ${String(error)}`,\n });\n }\n });\n\nconst workosProvisionTeam = new Command(\"provision-team\")\n .summary(\"Provision a WorkOS team for this Convex team\")\n .description(\n \"Create a WorkOS team and associate it with this Convex team. \" +\n \"This enables automatic provisioning of WorkOS environments for deployments on this team.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .addDeploymentSelectionOptions(actionDescription(\"Provision WorkOS team for\"))\n .action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(options);\n\n // Check if there's already an associated WorkOS team\n const { hasAssociatedWorkosTeam, teamId } =\n await getDeploymentCanProvisionWorkOSEnvironments(\n ctx,\n deployment.deploymentName,\n );\n\n if (hasAssociatedWorkosTeam) {\n logMessage(\n chalkStderr.yellow(\n \"This Convex team already has an associated WorkOS team.\",\n ),\n );\n logMessage(\n chalkStderr.dim(\n \"Use 'npx convex integration workos status' to view details.\",\n ),\n );\n return;\n }\n\n // Use the shared provisioning flow\n const result = await provisionWorkosTeamInteractive(\n ctx,\n deployment.deploymentName,\n teamId,\n deployment.deploymentType,\n );\n\n if (!result.success) {\n logMessage(chalkStderr.gray(\"Cancelled.\"));\n return;\n }\n\n // Success!\n logMessage(\n chalkStderr.green(\n `\\n\u2713 Successfully created WorkOS team \"${result.workosTeamName}\" (${result.workosTeamId})`,\n ),\n );\n logMessage(\n chalkStderr.dim(\n \"You can now provision WorkOS environments for deployments on this team.\",\n ),\n );\n });\n\nconst workosDisconnectTeam = new Command(\"disconnect-team\")\n .summary(\"Disconnect WorkOS team from Convex team\")\n .description(\n \"Remove the associated WorkOS team from this Convex team. \" +\n \"This is a destructive action that will prevent new WorkOS environments from being provisioned. \" +\n \"Existing environments will continue to work with their current API keys.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .addDeploymentSelectionOptions(\n actionDescription(\"Disconnect WorkOS team for\"),\n )\n .action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(options);\n\n // Check if there's an associated WorkOS team\n const { hasAssociatedWorkosTeam, teamId } =\n await getDeploymentCanProvisionWorkOSEnvironments(\n ctx,\n deployment.deploymentName,\n );\n\n if (!hasAssociatedWorkosTeam) {\n logMessage(\n chalkStderr.yellow(\n \"This Convex team does not have an associated WorkOS team.\",\n ),\n );\n return;\n }\n\n const info = await getTeamAndProjectSlugForDeployment(ctx, {\n deploymentName: deployment.deploymentName,\n });\n\n logMessage(\n chalkStderr.yellow(\n `Warning: This will disconnect the WorkOS team from Convex team \"${info?.teamSlug}\".`,\n ),\n );\n logMessage(\n \"AuthKit environments provisioned for Convex deployments on this team will no longer use this WorkOS team to provision environments.\",\n );\n logMessage(\n chalkStderr.dim(\n \"Existing WorkOS environments will continue to work with their current API keys.\",\n ),\n );\n\n const confirmed = await promptYesNo(ctx, {\n message: \"Are you sure you want to disconnect this WorkOS team?\",\n default: false,\n });\n\n if (!confirmed) {\n logMessage(chalkStderr.gray(\"Cancelled.\"));\n return;\n }\n\n const result = await disconnectWorkOSTeam(ctx, teamId);\n\n if (!result.success) {\n if (result.error === \"not_associated\") {\n logMessage(\n chalkStderr.yellow(\n \"This Convex team does not have an associated WorkOS team.\",\n ),\n );\n return;\n }\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Failed to disconnect WorkOS team: ${result.message}`,\n });\n }\n\n logFinishedStep(\n `Successfully disconnected WorkOS team \"${result.workosTeamName}\" (${result.workosTeamId})`,\n );\n });\n\nconst workosInvite = new Command(\"invite\")\n .summary(\"Invite yourself to the WorkOS team\")\n .description(\n \"Send an invitation to join the WorkOS team associated with your Convex team\",\n )\n .option(\"--email <email>\", \"Email address to invite (skips validation)\")\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .addDeploymentSelectionOptions(\n actionDescription(\"Invite yourself to WorkOS team for\"),\n )\n .action(async (options, cmd) => {\n const allOptions = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(allOptions);\n\n // Get team info first\n const info = await fetchTeamAndProject(ctx, deployment.deploymentName);\n\n let emailToInvite: string;\n\n // If email was provided as flag, use it directly (skip CLI validation)\n if (options.email) {\n emailToInvite = options.email;\n } else {\n // Get emails eligible for invitation (all verified emails except those that are admin of a different team)\n const { eligibleEmails, adminEmail } = await getInvitationEligibleEmails(\n ctx,\n info.teamId,\n );\n\n // Combine eligible emails with admin email (admin email is always an option for re-invitation)\n const allInvitableEmails = [...eligibleEmails];\n if (adminEmail && !allInvitableEmails.includes(adminEmail)) {\n allInvitableEmails.push(adminEmail);\n }\n\n if (allInvitableEmails.length === 0) {\n logMessage(\n \"You don't have any verified emails available for invitation.\",\n );\n logMessage(\n \"This could be because all your verified emails are already admin of other WorkOS teams.\",\n );\n return;\n }\n\n // Let user select which email to use\n emailToInvite = await promptOptions(ctx, {\n message: \"Which email would you like to invite to the WorkOS team?\",\n choices: allInvitableEmails.map((email) => ({\n name: email + (email === adminEmail ? \" (admin email)\" : \"\"),\n value: email,\n })),\n default: allInvitableEmails[0],\n });\n\n // Confirm before sending\n const confirmed = await promptYesNo(ctx, {\n message: `Send invitation to ${emailToInvite}?`,\n default: true,\n });\n\n if (!confirmed) {\n logMessage(\"Invitation cancelled.\");\n return;\n }\n }\n\n logMessage(`Sending invitation to ${emailToInvite}...`);\n\n const result = await inviteToWorkosTeam(ctx, info.teamId, emailToInvite);\n\n if (result.result === \"success\") {\n logMessage(\n `\u2713 Successfully sent invitation to ${result.email} with role ${result.roleSlug}`,\n );\n logMessage(\n \"Check your email for the invitation link to join the WorkOS team.\",\n );\n } else if (result.result === \"teamNotProvisioned\") {\n logMessage(\n `\u2717 ${result.message}. Run 'npx convex integration workos provision-environment' first.`,\n );\n } else if (result.result === \"alreadyInWorkspace\") {\n logMessage(\n `\u2717 ${result.message}. This usually means the email is already used in another WorkOS workspace.`,\n );\n }\n });\n\n// Project environment commands\nconst workosProjectEnvList = new Command(\"list-project-environments\")\n .summary(\"List WorkOS environments for current project\")\n .description(\n \"List all WorkOS AuthKit environments created for the current project.\\n\" +\n \"These environments can be used across multiple deployments.\",\n )\n .addDeploymentSelectionOptions(\n actionDescription(\"List project environments for\"),\n )\n .action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals();\n const { ctx, deployment } = await selectEnvDeployment(options);\n\n const info = await fetchTeamAndProject(ctx, deployment.deploymentName);\n\n logMessage(\"Fetching project WorkOS environments...\");\n\n try {\n const environments = await listProjectWorkOSEnvironments(\n ctx,\n info.projectId,\n );\n\n if (environments.length === 0) {\n logMessage(\"No WorkOS environments found for this project.\");\n logMessage(\n chalkStderr.gray(\n \"Create one with: npx convex integration workos create-project-environment --name <name>\",\n ),\n );\n } else {\n logMessage(chalkStderr.bold(\"WorkOS Project Environments:\"));\n for (const env of environments) {\n const prodLabel = env.isProduction\n ? chalkStderr.yellow(\" (production)\")\n : \"\";\n logMessage(\n ` ${chalkStderr.green(env.userEnvironmentName)}${prodLabel} - Client ID: ${env.workosClientId}`,\n );\n }\n }\n } catch (error) {\n logMessage(\n chalkStderr.red(`Failed to list environments: ${String(error)}`),\n );\n }\n });\n\nconst workosProjectEnvCreate = new Command(\"create-project-environment\")\n .summary(\"Create a new WorkOS environment for the project\")\n .description(\n \"Create a new WorkOS AuthKit environment for this project.\\n\" +\n \"The environment can be used across multiple deployments.\",\n )\n .requiredOption(\"--name <name>\", \"Name for the new environment\")\n .option(\"--production\", \"Mark this environment as a production environment\")\n .addDeploymentSelectionOptions(\n actionDescription(\"Create project environment for\"),\n )\n .action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals();\n const environmentName = options.name as string;\n const isProduction = options.production as boolean | undefined;\n const { ctx, deployment } = await selectEnvDeployment(options);\n\n const info = await fetchTeamAndProject(ctx, deployment.deploymentName);\n\n showSpinner(\n `Creating project-level WorkOS environment '${environmentName}'...`,\n );\n\n try {\n const response = await createProjectWorkOSEnvironment(\n ctx,\n info.projectId,\n environmentName,\n isProduction,\n );\n\n stopSpinner();\n logFinishedStep(`Created WorkOS environment '${environmentName}'`);\n\n logMessage(\"\");\n logMessage(chalkStderr.bold(\"Environment Details:\"));\n logMessage(` Name: ${response.userEnvironmentName}`);\n logMessage(` Client ID: ${response.workosClientId}`);\n logMessage(` API Key: ${response.workosApiKey}`);\n } catch (error: any) {\n stopSpinner();\n if (error?.message?.includes(\"NoWorkOSTeam\")) {\n logMessage(\n chalkStderr.red(\n \"Your team doesn't have a WorkOS integration configured yet.\",\n ),\n );\n logMessage(\n \"Please run 'npx convex integration workos provision-team' first.\",\n );\n } else if (error?.message?.includes(\"duplicate\")) {\n logMessage(\n chalkStderr.red(\n `An environment named '${environmentName}' already exists for this project.`,\n ),\n );\n } else if (error?.message?.includes(\"TooManyEnvironments\")) {\n logMessage(\n chalkStderr.red(\n \"You've reached the limit of 10 WorkOS environments per project. If you need more, please contact support.\",\n ),\n );\n } else {\n logMessage(chalkStderr.red(`Failed to create environment: ${error}`));\n }\n }\n });\n\nconst workosProjectEnvDelete = new Command(\"delete-project-environment\")\n .summary(\"Delete a WorkOS environment from the project\")\n .description(\n \"Delete a WorkOS environment from this project.\\n\" +\n \"This will permanently remove the environment and its credentials.\\n\" +\n \"Use the client ID shown in list-project-environments output.\",\n )\n .requiredOption(\n \"--client-id <clientId>\",\n \"WorkOS client ID of the environment to delete (shown in list output)\",\n )\n .addDeploymentSelectionOptions(\n actionDescription(\"Delete project environment for\"),\n )\n .action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals();\n const clientId = options.clientId as string;\n const { ctx, deployment } = await selectEnvDeployment(options);\n\n const info = await fetchTeamAndProject(ctx, deployment.deploymentName);\n\n // Confirm deletion\n const confirmed = await promptYesNo(ctx, {\n message: `Are you sure you want to delete environment with client ID '${clientId}'?`,\n default: false,\n });\n\n if (!confirmed) {\n logMessage(\"Deletion cancelled.\");\n return;\n }\n\n showSpinner(\n `Deleting project WorkOS environment (this can take a while)...`,\n );\n\n try {\n await deleteProjectWorkOSEnvironment(ctx, info.projectId, clientId);\n stopSpinner();\n logFinishedStep(`Deleted environment with client ID '${clientId}'`);\n } catch (error: any) {\n stopSpinner();\n if (error?.message?.includes(\"not found\")) {\n logMessage(\n chalkStderr.red(\n `Environment with client ID '${clientId}' not found.`,\n ),\n );\n } else {\n logMessage(chalkStderr.red(`Failed to delete environment: ${error}`));\n }\n }\n });\n\nconst workos = new Command(\"workos\")\n .summary(\"WorkOS integration commands\")\n .description(\"Manage WorkOS team provisioning and environment setup\")\n .addCommand(workosProvisionEnvironment)\n .addCommand(workosTeamStatus)\n .addCommand(workosProvisionTeam)\n .addCommand(workosDisconnectTeam)\n .addCommand(workosInvite)\n .addCommand(workosProjectEnvList)\n .addCommand(workosProjectEnvCreate)\n .addCommand(workosProjectEnvDelete);\n\nexport const integration = new Command(\"integration\")\n .summary(\"Integration commands\")\n .description(\"Commands for managing third-party integrations\")\n .addCommand(workos);\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }