@workos/oagen 0.22.6 → 0.23.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 (44) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/index.mjs +271 -42
  3. package/dist/cli/index.mjs.map +1 -1
  4. package/dist/compat/index.d.mts +2 -2
  5. package/dist/compat/index.mjs +9 -8
  6. package/dist/compat/index.mjs.map +1 -1
  7. package/dist/{diff-CQzcGuFJ.mjs → diff-B7dMUCoJ.mjs} +235 -27
  8. package/dist/diff-B7dMUCoJ.mjs.map +1 -0
  9. package/dist/{differ-CC65Efzt.d.mts → differ-DMmw0tbA.d.mts} +5 -5
  10. package/dist/{differ-CC65Efzt.d.mts.map → differ-DMmw0tbA.d.mts.map} +1 -1
  11. package/dist/index.d.mts +64 -9
  12. package/dist/index.d.mts.map +1 -1
  13. package/dist/index.mjs +26 -11
  14. package/dist/index.mjs.map +1 -1
  15. package/dist/{overlay-cb32jDBS.mjs → overlay-sQHQoN0I.mjs} +4 -4
  16. package/dist/overlay-sQHQoN0I.mjs.map +1 -0
  17. package/dist/scripts/smoke/baseline.mjs +25 -10
  18. package/dist/scripts/smoke/baseline.mjs.map +1 -1
  19. package/dist/scripts/smoke/sdk-test.mjs +3 -3
  20. package/dist/scripts/smoke/sdk-test.mjs.map +1 -1
  21. package/dist/smoke.d.mts +19 -4
  22. package/dist/smoke.d.mts.map +1 -1
  23. package/dist/smoke.mjs +25 -10
  24. package/dist/smoke.mjs.map +1 -1
  25. package/dist/tree-sitter-DcUvm0KA.mjs.map +1 -1
  26. package/dist/{types-Cjh39AGQ.d.mts → types-nM5Kp7UP.d.mts} +16 -9
  27. package/dist/types-nM5Kp7UP.d.mts.map +1 -0
  28. package/dist/verify/index.d.mts +2 -2
  29. package/dist/verify/index.mjs +2 -2
  30. package/docs/architecture/extractor-contract.md +2 -2
  31. package/docs/architecture/pipeline.md +2 -2
  32. package/docs/cli.md +19 -19
  33. package/docs/core/compatibility-policy.md +1 -1
  34. package/docs/core/manifest-schema.md +2 -2
  35. package/package.json +1 -1
  36. package/skills/generate-emitter/SKILL.md +2 -2
  37. package/skills/generate-emitter/references/common-pitfalls.md +1 -1
  38. package/skills/generate-emitter/references/project-scaffold.md +3 -3
  39. package/skills/generate-extractor/SKILL.md +2 -2
  40. package/skills/generate-smoke-test/SKILL.md +1 -1
  41. package/skills/verify-smoke-test/SKILL.md +1 -1
  42. package/dist/diff-CQzcGuFJ.mjs.map +0 -1
  43. package/dist/overlay-cb32jDBS.mjs.map +0 -1
  44. package/dist/types-Cjh39AGQ.d.mts.map +0 -1
@@ -7,9 +7,9 @@ import { execFileSync } from "node:child_process";
7
7
  * Runs an SDK smoke test + diff against an existing raw baseline.
8
8
  *
9
9
  * Usage:
10
- * npm run smoke -- --lang node --sdk-path path/to/workos-node
11
- * npm run smoke -- --lang ruby --sdk-path path/to/workos-ruby
12
- * npm run smoke -- --lang node --sdk-path path/to/workos-node --raw-results custom-baseline.json
10
+ * npm run smoke -- --lang node --sdk-path path/to/acme-node
11
+ * npm run smoke -- --lang ruby --sdk-path path/to/acme-ruby
12
+ * npm run smoke -- --lang node --sdk-path path/to/acme-node --raw-results custom-baseline.json
13
13
  *
14
14
  * Requires OPENAPI_SPEC_PATH env var (or --spec <path>) pointing to the OpenAPI spec.
15
15
  * The --lang flag is required and selects which SDK runner to use
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-test.mjs","names":[],"sources":["../../../scripts/smoke/sdk-test.ts"],"sourcesContent":["/**\n * Runs an SDK smoke test + diff against an existing raw baseline.\n *\n * Usage:\n * npm run smoke -- --lang node --sdk-path path/to/workos-node\n * npm run smoke -- --lang ruby --sdk-path path/to/workos-ruby\n * npm run smoke -- --lang node --sdk-path path/to/workos-node --raw-results custom-baseline.json\n *\n * Requires OPENAPI_SPEC_PATH env var (or --spec <path>) pointing to the OpenAPI spec.\n * The --lang flag is required and selects which SDK runner to use\n * (e.g. \"node\" → scripts/smoke/sdk-node.ts).\n */\n\nimport { existsSync, writeFileSync } from 'node:fs';\nimport { execFileSync } from 'node:child_process';\nimport { resolve, dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nconst args = process.argv.slice(2);\n\n// Extract --lang <name> (required)\nconst langIdx = args.indexOf('--lang');\nconst forwardedArgs = [...args];\n\nif (langIdx === -1 || !args[langIdx + 1]) {\n console.error('--lang is required (e.g. --lang node, --lang ruby)');\n process.exit(1);\n}\n\nconst lang = args[langIdx + 1];\nforwardedArgs.splice(langIdx, 2);\n\n// Extract --raw-results <path>\nconst rawResultsIdx = forwardedArgs.indexOf('--raw-results');\nlet rawResultsPath = 'smoke-results-raw.json';\n\nif (rawResultsIdx !== -1 && forwardedArgs[rawResultsIdx + 1]) {\n rawResultsPath = forwardedArgs[rawResultsIdx + 1];\n forwardedArgs.splice(rawResultsIdx, 2);\n}\n\n// Resolve the SDK runner script relative to this file's directory\nconst sdkScript = resolve(__dirname, `sdk-${lang}.ts`);\nif (!existsSync(sdkScript)) {\n console.error(`No smoke runner found for language \"${lang}\" (expected ${sdkScript})`);\n console.error(`Available runners:`);\n const { readdirSync } = await import('node:fs');\n for (const f of readdirSync(__dirname)) {\n const match = f.match(/^sdk-(.+)\\.ts$/);\n if (match && match[1] !== 'test') {\n console.error(` --lang ${match[1]}`);\n }\n }\n process.exit(1);\n}\n\nconst sdkResultsPath = `smoke-results-sdk-${lang}.json`;\n\nconst diffArgs = ['--raw', rawResultsPath, '--sdk', sdkResultsPath];\n\n// Pre-flight: tsc compile check on SDK if tsconfig.json exists\nconst sdkPathIdx = forwardedArgs.indexOf('--sdk-path');\nconst sdkPathValue = sdkPathIdx !== -1 && forwardedArgs[sdkPathIdx + 1] ? forwardedArgs[sdkPathIdx + 1] : undefined;\n\nif (sdkPathValue) {\n const tsconfigPath = resolve(sdkPathValue, 'tsconfig.json');\n if (existsSync(tsconfigPath)) {\n console.log(`\\n${'='.repeat(60)}`);\n console.log(`Type-checking SDK at ${sdkPathValue}`);\n console.log('='.repeat(60));\n\n try {\n execFileSync('npx', ['tsc', '--noEmit', '--project', sdkPathValue], {\n stdio: 'pipe',\n env: process.env,\n });\n console.log(' Type check passed');\n } catch (err) {\n const output = (err as { stdout?: Buffer; stderr?: Buffer }).stdout?.toString() ?? '';\n const findings = parseTscOutput(output);\n writeFileSync('smoke-compile-errors.json', JSON.stringify(findings, null, 2));\n console.error(` Type check failed (${findings.length} errors). See smoke-compile-errors.json`);\n process.exit(2);\n }\n }\n}\n\nconst steps: [string, string[]][] = [\n [sdkScript, forwardedArgs],\n [resolve(__dirname, 'diff.ts'), diffArgs],\n];\n\nfor (const [script, scriptArgs] of steps) {\n console.log(`\\n${'='.repeat(60)}`);\n console.log(`Running ${script}`);\n console.log('='.repeat(60));\n\n try {\n execFileSync('npx', ['tsx', script, ...scriptArgs], {\n stdio: 'inherit',\n env: process.env,\n });\n } catch {\n process.exit(1);\n }\n}\n\nfunction parseTscOutput(output: string): Array<{ file: string; line: number; code: string; message: string }> {\n const errors: Array<{ file: string; line: number; code: string; message: string }> = [];\n const re = /^(.+)\\((\\d+),\\d+\\): error (TS\\d+): (.+)$/gm;\n let match;\n while ((match = re.exec(output)) !== null) {\n errors.push({\n file: match[1],\n line: Number(match[2]),\n code: match[3],\n message: match[4],\n });\n }\n return errors;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,MAAM,YAAY,QADC,cAAc,OAAO,KAAK,IAAI,CACZ;AAErC,MAAM,OAAO,QAAQ,KAAK,MAAM,EAAE;AAGlC,MAAM,UAAU,KAAK,QAAQ,SAAS;AACtC,MAAM,gBAAgB,CAAC,GAAG,KAAK;AAE/B,IAAI,YAAY,MAAM,CAAC,KAAK,UAAU,IAAI;AACxC,SAAQ,MAAM,qDAAqD;AACnE,SAAQ,KAAK,EAAE;;AAGjB,MAAM,OAAO,KAAK,UAAU;AAC5B,cAAc,OAAO,SAAS,EAAE;AAGhC,MAAM,gBAAgB,cAAc,QAAQ,gBAAgB;AAC5D,IAAI,iBAAiB;AAErB,IAAI,kBAAkB,MAAM,cAAc,gBAAgB,IAAI;AAC5D,kBAAiB,cAAc,gBAAgB;AAC/C,eAAc,OAAO,eAAe,EAAE;;AAIxC,MAAM,YAAY,QAAQ,WAAW,OAAO,KAAK,KAAK;AACtD,IAAI,CAAC,WAAW,UAAU,EAAE;AAC1B,SAAQ,MAAM,uCAAuC,KAAK,cAAc,UAAU,GAAG;AACrF,SAAQ,MAAM,qBAAqB;CACnC,MAAM,EAAE,gBAAgB,MAAM,OAAO;AACrC,MAAK,MAAM,KAAK,YAAY,UAAU,EAAE;EACtC,MAAM,QAAQ,EAAE,MAAM,iBAAiB;AACvC,MAAI,SAAS,MAAM,OAAO,OACxB,SAAQ,MAAM,YAAY,MAAM,KAAK;;AAGzC,SAAQ,KAAK,EAAE;;AAGjB,MAAM,iBAAiB,qBAAqB,KAAK;AAEjD,MAAM,WAAW;CAAC;CAAS;CAAgB;CAAS;CAAe;AAGnE,MAAM,aAAa,cAAc,QAAQ,aAAa;AACtD,MAAM,eAAe,eAAe,MAAM,cAAc,aAAa,KAAK,cAAc,aAAa,KAAK,KAAA;AAE1G,IAAI;KAEE,WADiB,QAAQ,cAAc,gBAAgB,CAC/B,EAAE;AAC5B,UAAQ,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG;AAClC,UAAQ,IAAI,wBAAwB,eAAe;AACnD,UAAQ,IAAI,IAAI,OAAO,GAAG,CAAC;AAE3B,MAAI;AACF,gBAAa,OAAO;IAAC;IAAO;IAAY;IAAa;IAAa,EAAE;IAClE,OAAO;IACP,KAAK,QAAQ;IACd,CAAC;AACF,WAAQ,IAAI,sBAAsB;WAC3B,KAAK;GAEZ,MAAM,WAAW,eADD,IAA6C,QAAQ,UAAU,IAAI,GAC5C;AACvC,iBAAc,6BAA6B,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;AAC7E,WAAQ,MAAM,wBAAwB,SAAS,OAAO,yCAAyC;AAC/F,WAAQ,KAAK,EAAE;;;;AAKrB,MAAM,QAA8B,CAClC,CAAC,WAAW,cAAc,EAC1B,CAAC,QAAQ,WAAW,UAAU,EAAE,SAAS,CAC1C;AAED,KAAK,MAAM,CAAC,QAAQ,eAAe,OAAO;AACxC,SAAQ,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG;AAClC,SAAQ,IAAI,WAAW,SAAS;AAChC,SAAQ,IAAI,IAAI,OAAO,GAAG,CAAC;AAE3B,KAAI;AACF,eAAa,OAAO;GAAC;GAAO;GAAQ,GAAG;GAAW,EAAE;GAClD,OAAO;GACP,KAAK,QAAQ;GACd,CAAC;SACI;AACN,UAAQ,KAAK,EAAE;;;AAInB,SAAS,eAAe,QAAsF;CAC5G,MAAM,SAA+E,EAAE;CACvF,MAAM,KAAK;CACX,IAAI;AACJ,SAAQ,QAAQ,GAAG,KAAK,OAAO,MAAM,KACnC,QAAO,KAAK;EACV,MAAM,MAAM;EACZ,MAAM,OAAO,MAAM,GAAG;EACtB,MAAM,MAAM;EACZ,SAAS,MAAM;EAChB,CAAC;AAEJ,QAAO"}
1
+ {"version":3,"file":"sdk-test.mjs","names":[],"sources":["../../../scripts/smoke/sdk-test.ts"],"sourcesContent":["/**\n * Runs an SDK smoke test + diff against an existing raw baseline.\n *\n * Usage:\n * npm run smoke -- --lang node --sdk-path path/to/acme-node\n * npm run smoke -- --lang ruby --sdk-path path/to/acme-ruby\n * npm run smoke -- --lang node --sdk-path path/to/acme-node --raw-results custom-baseline.json\n *\n * Requires OPENAPI_SPEC_PATH env var (or --spec <path>) pointing to the OpenAPI spec.\n * The --lang flag is required and selects which SDK runner to use\n * (e.g. \"node\" → scripts/smoke/sdk-node.ts).\n */\n\nimport { existsSync, writeFileSync } from 'node:fs';\nimport { execFileSync } from 'node:child_process';\nimport { resolve, dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nconst args = process.argv.slice(2);\n\n// Extract --lang <name> (required)\nconst langIdx = args.indexOf('--lang');\nconst forwardedArgs = [...args];\n\nif (langIdx === -1 || !args[langIdx + 1]) {\n console.error('--lang is required (e.g. --lang node, --lang ruby)');\n process.exit(1);\n}\n\nconst lang = args[langIdx + 1];\nforwardedArgs.splice(langIdx, 2);\n\n// Extract --raw-results <path>\nconst rawResultsIdx = forwardedArgs.indexOf('--raw-results');\nlet rawResultsPath = 'smoke-results-raw.json';\n\nif (rawResultsIdx !== -1 && forwardedArgs[rawResultsIdx + 1]) {\n rawResultsPath = forwardedArgs[rawResultsIdx + 1];\n forwardedArgs.splice(rawResultsIdx, 2);\n}\n\n// Resolve the SDK runner script relative to this file's directory\nconst sdkScript = resolve(__dirname, `sdk-${lang}.ts`);\nif (!existsSync(sdkScript)) {\n console.error(`No smoke runner found for language \"${lang}\" (expected ${sdkScript})`);\n console.error(`Available runners:`);\n const { readdirSync } = await import('node:fs');\n for (const f of readdirSync(__dirname)) {\n const match = f.match(/^sdk-(.+)\\.ts$/);\n if (match && match[1] !== 'test') {\n console.error(` --lang ${match[1]}`);\n }\n }\n process.exit(1);\n}\n\nconst sdkResultsPath = `smoke-results-sdk-${lang}.json`;\n\nconst diffArgs = ['--raw', rawResultsPath, '--sdk', sdkResultsPath];\n\n// Pre-flight: tsc compile check on SDK if tsconfig.json exists\nconst sdkPathIdx = forwardedArgs.indexOf('--sdk-path');\nconst sdkPathValue = sdkPathIdx !== -1 && forwardedArgs[sdkPathIdx + 1] ? forwardedArgs[sdkPathIdx + 1] : undefined;\n\nif (sdkPathValue) {\n const tsconfigPath = resolve(sdkPathValue, 'tsconfig.json');\n if (existsSync(tsconfigPath)) {\n console.log(`\\n${'='.repeat(60)}`);\n console.log(`Type-checking SDK at ${sdkPathValue}`);\n console.log('='.repeat(60));\n\n try {\n execFileSync('npx', ['tsc', '--noEmit', '--project', sdkPathValue], {\n stdio: 'pipe',\n env: process.env,\n });\n console.log(' Type check passed');\n } catch (err) {\n const output = (err as { stdout?: Buffer; stderr?: Buffer }).stdout?.toString() ?? '';\n const findings = parseTscOutput(output);\n writeFileSync('smoke-compile-errors.json', JSON.stringify(findings, null, 2));\n console.error(` Type check failed (${findings.length} errors). See smoke-compile-errors.json`);\n process.exit(2);\n }\n }\n}\n\nconst steps: [string, string[]][] = [\n [sdkScript, forwardedArgs],\n [resolve(__dirname, 'diff.ts'), diffArgs],\n];\n\nfor (const [script, scriptArgs] of steps) {\n console.log(`\\n${'='.repeat(60)}`);\n console.log(`Running ${script}`);\n console.log('='.repeat(60));\n\n try {\n execFileSync('npx', ['tsx', script, ...scriptArgs], {\n stdio: 'inherit',\n env: process.env,\n });\n } catch {\n process.exit(1);\n }\n}\n\nfunction parseTscOutput(output: string): Array<{ file: string; line: number; code: string; message: string }> {\n const errors: Array<{ file: string; line: number; code: string; message: string }> = [];\n const re = /^(.+)\\((\\d+),\\d+\\): error (TS\\d+): (.+)$/gm;\n let match;\n while ((match = re.exec(output)) !== null) {\n errors.push({\n file: match[1],\n line: Number(match[2]),\n code: match[3],\n message: match[4],\n });\n }\n return errors;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,MAAM,YAAY,QADC,cAAc,OAAO,KAAK,IAAI,CACZ;AAErC,MAAM,OAAO,QAAQ,KAAK,MAAM,EAAE;AAGlC,MAAM,UAAU,KAAK,QAAQ,SAAS;AACtC,MAAM,gBAAgB,CAAC,GAAG,KAAK;AAE/B,IAAI,YAAY,MAAM,CAAC,KAAK,UAAU,IAAI;AACxC,SAAQ,MAAM,qDAAqD;AACnE,SAAQ,KAAK,EAAE;;AAGjB,MAAM,OAAO,KAAK,UAAU;AAC5B,cAAc,OAAO,SAAS,EAAE;AAGhC,MAAM,gBAAgB,cAAc,QAAQ,gBAAgB;AAC5D,IAAI,iBAAiB;AAErB,IAAI,kBAAkB,MAAM,cAAc,gBAAgB,IAAI;AAC5D,kBAAiB,cAAc,gBAAgB;AAC/C,eAAc,OAAO,eAAe,EAAE;;AAIxC,MAAM,YAAY,QAAQ,WAAW,OAAO,KAAK,KAAK;AACtD,IAAI,CAAC,WAAW,UAAU,EAAE;AAC1B,SAAQ,MAAM,uCAAuC,KAAK,cAAc,UAAU,GAAG;AACrF,SAAQ,MAAM,qBAAqB;CACnC,MAAM,EAAE,gBAAgB,MAAM,OAAO;AACrC,MAAK,MAAM,KAAK,YAAY,UAAU,EAAE;EACtC,MAAM,QAAQ,EAAE,MAAM,iBAAiB;AACvC,MAAI,SAAS,MAAM,OAAO,OACxB,SAAQ,MAAM,YAAY,MAAM,KAAK;;AAGzC,SAAQ,KAAK,EAAE;;AAGjB,MAAM,iBAAiB,qBAAqB,KAAK;AAEjD,MAAM,WAAW;CAAC;CAAS;CAAgB;CAAS;CAAe;AAGnE,MAAM,aAAa,cAAc,QAAQ,aAAa;AACtD,MAAM,eAAe,eAAe,MAAM,cAAc,aAAa,KAAK,cAAc,aAAa,KAAK,KAAA;AAE1G,IAAI;KAEE,WADiB,QAAQ,cAAc,gBAAgB,CAC/B,EAAE;AAC5B,UAAQ,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG;AAClC,UAAQ,IAAI,wBAAwB,eAAe;AACnD,UAAQ,IAAI,IAAI,OAAO,GAAG,CAAC;AAE3B,MAAI;AACF,gBAAa,OAAO;IAAC;IAAO;IAAY;IAAa;IAAa,EAAE;IAClE,OAAO;IACP,KAAK,QAAQ;IACd,CAAC;AACF,WAAQ,IAAI,sBAAsB;WAC3B,KAAK;GAEZ,MAAM,WAAW,eADD,IAA6C,QAAQ,UAAU,IAAI,GAC5C;AACvC,iBAAc,6BAA6B,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;AAC7E,WAAQ,MAAM,wBAAwB,SAAS,OAAO,yCAAyC;AAC/F,WAAQ,KAAK,EAAE;;;;AAKrB,MAAM,QAA8B,CAClC,CAAC,WAAW,cAAc,EAC1B,CAAC,QAAQ,WAAW,UAAU,EAAE,SAAS,CAC1C;AAED,KAAK,MAAM,CAAC,QAAQ,eAAe,OAAO;AACxC,SAAQ,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG;AAClC,SAAQ,IAAI,WAAW,SAAS;AAChC,SAAQ,IAAI,IAAI,OAAO,GAAG,CAAC;AAE3B,KAAI;AACF,eAAa,OAAO;GAAC;GAAO;GAAQ,GAAG;GAAW,EAAE;GAClD,OAAO;GACP,KAAK,QAAQ;GACd,CAAC;SACI;AACN,UAAQ,KAAK,EAAE;;;AAInB,SAAS,eAAe,QAAsF;CAC5G,MAAM,SAA+E,EAAE;CACvF,MAAM,KAAK;CACX,IAAI;AACJ,SAAQ,QAAQ,GAAG,KAAK,OAAO,MAAM,KACnC,QAAO,KAAK;EACV,MAAM,MAAM;EACZ,MAAM,OAAO,MAAM,GAAG;EACtB,MAAM,MAAM;EACZ,SAAS,MAAM;EAChB,CAAC;AAEJ,QAAO"}
package/dist/smoke.d.mts CHANGED
@@ -44,8 +44,7 @@ interface ErrorPolicy {
44
44
  serverErrorKind: string;
45
45
  /** Catch-all error kind for unrecognized status codes. */
46
46
  clientErrorKind: string;
47
- /** URL template for error documentation. Use {code} as placeholder for the API error code.
48
- * Example: 'https://workos.com/docs/errors/{code}' */
47
+ /** URL template for error documentation. Use {code} as placeholder for the API error code. */
49
48
  errorDocUrlTemplate?: string;
50
49
  }
51
50
  /** Telemetry — what request metrics to track and send. */
@@ -83,7 +82,7 @@ interface UserAgentPolicy {
83
82
  /** Template for the SDK identifier string.
84
83
  * Placeholders: {name} = spec name, {lang} = emitter language, {version} = SDK version.
85
84
  * Each emitter interpolates with its own language string and casing conventions.
86
- * Example: '{name} {lang}/{version}' → 'WorkOS PHP/4.32.0' */
85
+ * Example: '{name} {lang}/{version}' → 'Acme PHP/4.32.0' */
87
86
  sdkIdentifierTemplate: string;
88
87
  /** Whether to append the runtime/language version (e.g. PHP 8.2, Python 3.12). */
89
88
  includeRuntimeVersion: boolean;
@@ -109,7 +108,7 @@ interface RequestGuardPolicy {
109
108
  interface TimeoutPolicy {
110
109
  /** Default HTTP request timeout in seconds. */
111
110
  defaultTimeoutSeconds: number;
112
- /** Environment variable name to override the timeout (e.g. 'WORKOS_REQUEST_TIMEOUT'). */
111
+ /** Environment variable name to override the timeout (e.g. 'SDK_REQUEST_TIMEOUT'). */
113
112
  timeoutEnvVar?: string;
114
113
  }
115
114
  /** Language-agnostic runtime policies for generated SDKs.
@@ -318,6 +317,15 @@ interface Model {
318
317
  }
319
318
  interface Field {
320
319
  name: string;
320
+ /**
321
+ * Optional domain-facing name override. When set, emitters derive the
322
+ * domain-side identifier (in their own casing) from this instead of `name`,
323
+ * while serialization still uses `name` for the wire key. Lets an SDK expose
324
+ * a wire field under a friendlier name (e.g. `connection_type` → `type`)
325
+ * without changing the API contract. Set via the `fieldHints` config and
326
+ * honored by any emitter that reads it.
327
+ */
328
+ domainName?: string;
321
329
  type: TypeRef;
322
330
  required: boolean;
323
331
  description?: string;
@@ -363,6 +371,13 @@ type OpenApiDocument = Record<string, unknown>;
363
371
  interface ParseOptions {
364
372
  operationIdTransform?: (id: string) => string;
365
373
  schemaNameTransform?: (name: string) => string;
374
+ /**
375
+ * Domain-facing field-name overrides, keyed by IR model name then wire field
376
+ * name: `{ Connection: { connection_type: 'type' } }`. Sets `Field.domainName`
377
+ * so emitters expose the field under the friendlier name while keeping the
378
+ * wire key. Language-agnostic — honored by any emitter that reads `domainName`.
379
+ */
380
+ fieldHints?: Record<string, Record<string, string>>;
366
381
  /**
367
382
  * Pre-IR overlay applied to the bundled OpenAPI document before any IR
368
383
  * extraction runs. Use this when the upstream spec can't be changed but you
@@ -1 +1 @@
1
- {"version":3,"file":"smoke.d.mts","names":[],"sources":["../src/ir/sdk-behavior.ts","../src/ir/types.ts","../src/parser/parse.ts","../src/utils/naming.ts","../scripts/smoke/shared.ts"],"mappings":"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"}
1
+ {"version":3,"file":"smoke.d.mts","names":[],"sources":["../src/ir/sdk-behavior.ts","../src/ir/types.ts","../src/parser/parse.ts","../src/utils/naming.ts","../scripts/smoke/shared.ts"],"mappings":"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"}
package/dist/smoke.mjs CHANGED
@@ -145,9 +145,8 @@ function cleanSchemaName(name) {
145
145
  //#endregion
146
146
  //#region src/ir/sdk-behavior.ts
147
147
  /**
148
- * Canonical SDK behavior defaults. These match the PHP emitter's current
149
- * implementation (the most complete). Per-language overrides can be applied
150
- * via `mergeSdkBehavior()` in each SDK's `oagen.config.ts`.
148
+ * Canonical SDK behavior defaults. Per-language or per-project overrides can
149
+ * be applied via `mergeSdkBehavior()` in each SDK's `oagen.config.ts`.
151
150
  *
152
151
  * - Retry: exponential backoff with jitter, retries on 429/5xx
153
152
  * - Errors: standard HTTP status → exception kind mapping
@@ -190,12 +189,11 @@ function defaultSdkBehavior() {
190
189
  429: "RateLimitExceeded"
191
190
  },
192
191
  serverErrorKind: "Server",
193
- clientErrorKind: "Api",
194
- errorDocUrlTemplate: "https://workos.com/docs/errors/{code}"
192
+ clientErrorKind: "Api"
195
193
  },
196
194
  telemetry: {
197
195
  enabledByDefault: true,
198
- headerName: "X-WorkOS-Client-Telemetry",
196
+ headerName: "X-Client-Telemetry",
199
197
  requestIdHeader: "X-Request-ID"
200
198
  },
201
199
  pagination: { autoPageDelayMs: 0 },
@@ -1993,11 +1991,11 @@ function inferVerb(method, path) {
1993
1991
  * Uses the last non-param segment (the resource being operated on).
1994
1992
  *
1995
1993
  * Examples:
1996
- * /user_management/users → "Users"
1997
- * /user_management/users/{id} → "User" (singular for item operations)
1998
- * /user_management/users/{id}/auth_factors → "AuthFactors"
1994
+ * /accounts/users → "Users"
1995
+ * /accounts/users/{id} → "User" (singular for item operations)
1996
+ * /accounts/users/{id}/auth_factors → "AuthFactors"
1999
1997
  * /organizations/{id}/api_keys → "ApiKeys"
2000
- * /sso/authorize → "Authorize" (action endpoint)
1998
+ * /auth/authorize → "Authorize" (action endpoint)
2001
1999
  */
2002
2000
  function inferResourceFromPath(path) {
2003
2001
  const segments = path.split("/").filter(Boolean);
@@ -2643,6 +2641,7 @@ async function parseSpec(specPath, options) {
2643
2641
  const fieldInlineModels = extractInlineModelsFromSchemas(spec.components?.schemas);
2644
2642
  clearSchemaNameTransform();
2645
2643
  const finalModels = collapseJsonSuffixModels(mergeFieldInlineModels(responseNormalizedModels, fieldInlineModels), services);
2644
+ applyFieldHints(finalModels, options?.fieldHints);
2646
2645
  collectInlineEnumsFromModels(finalModels, enums);
2647
2646
  collectInlineEnumsFromOperations(services, enums);
2648
2647
  const auth = extractAuthSchemes(spec.components?.securitySchemes);
@@ -2665,6 +2664,22 @@ async function parseSpec(specPath, options) {
2665
2664
  validateModelRefs(result);
2666
2665
  return result;
2667
2666
  }
2667
+ /**
2668
+ * Apply `fieldHints` onto the built models, setting `Field.domainName` for each
2669
+ * matching (model name, wire field name) pair. Serialization still uses
2670
+ * `Field.name`; only the domain-facing identifier changes.
2671
+ */
2672
+ function applyFieldHints(models, fieldHints) {
2673
+ if (!fieldHints) return;
2674
+ for (const model of models) {
2675
+ const hints = fieldHints[model.name];
2676
+ if (!hints) continue;
2677
+ for (const field of model.fields) {
2678
+ const domainName = hints[field.name];
2679
+ if (domainName) field.domainName = domainName;
2680
+ }
2681
+ }
2682
+ }
2668
2683
  /** Extract authentication schemes from OpenAPI securitySchemes. */
2669
2684
  function extractAuthSchemes(securitySchemes) {
2670
2685
  if (!securitySchemes) return void 0;