@workos/oagen 0.2.0 → 0.4.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.
- package/README.md +72 -0
- package/dist/cli/index.mjs +1076 -73
- package/dist/cli/index.mjs.map +1 -1
- package/dist/compat/index.d.mts +1 -1
- package/dist/compat/index.mjs +9 -4
- package/dist/compat/index.mjs.map +1 -1
- package/dist/{diff-DyQF4sel.mjs → diff-DcY93sii.mjs} +619 -18
- package/dist/diff-DcY93sii.mjs.map +1 -0
- package/dist/{differ-BwelBJN0.mjs → differ-CG5ZErKl.mjs} +2 -2
- package/dist/{differ-BwelBJN0.mjs.map → differ-CG5ZErKl.mjs.map} +1 -1
- package/dist/index.d.mts +136 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +337 -29
- package/dist/index.mjs.map +1 -1
- package/dist/scripts/smoke/baseline.mjs +351 -34
- package/dist/scripts/smoke/baseline.mjs.map +1 -1
- package/dist/smoke.d.mts +138 -0
- package/dist/smoke.d.mts.map +1 -1
- package/dist/smoke.mjs +351 -34
- package/dist/smoke.mjs.map +1 -1
- package/dist/{tree-sitter-BPNfbEzY.mjs → tree-sitter-C53w_0WE.mjs} +42 -9
- package/dist/tree-sitter-C53w_0WE.mjs.map +1 -0
- package/dist/{types-O25qZxMl.d.mts → types-D1tMqLVB.d.mts} +165 -2
- package/dist/types-D1tMqLVB.d.mts.map +1 -0
- package/dist/verify/index.d.mts +1 -1
- package/dist/verify/index.mjs +5 -5
- package/dist/verify/index.mjs.map +1 -1
- package/docs/architecture/ir-types.md +73 -1
- package/docs/cli.md +29 -8
- package/package.json +4 -4
- package/skills/review-operations/SKILL.md +83 -0
- package/dist/diff-DyQF4sel.mjs.map +0 -1
- package/dist/tree-sitter-BPNfbEzY.mjs.map +0 -1
- package/dist/types-O25qZxMl.d.mts.map +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,81 @@
|
|
|
1
|
-
import { A as
|
|
1
|
+
import { A as collectModelRefs, B as LoggingPolicy, C as TypeParam, D as assignModelsToServices, E as assertNever, F as BackoffStrategy, G as TelemetryPolicy, H as RequestGuardPolicy, I as DeepPartial, J as defaultSdkBehavior, K as TimeoutPolicy, L as ErrorPolicy, M as mapTypeRef, N as walkTypeRef, O as collectEnumRefs, P as AiAgentEnvVar, R as IdempotencyPolicy, S as SuccessResponse, T as UnionType, U as RetryPolicy, V as PaginationPolicy, W as SdkBehavior, Y as mergeSdkBehavior, _ as Parameter, a as EnumRef, b as ServerEntry, c as Field, d as MapType, f as Model, g as PaginationMeta, h as Operation, i as Enum, it as ApiSurface, j as collectRequestBodyModels, k as collectFieldDependencies, l as HttpMethod, m as NullableType, n as ArrayType, o as EnumValue, p as ModelRef, q as UserAgentPolicy, r as AuthScheme, s as ErrorResponse, st as Extractor, t as ApiSpec, u as LiteralType, ut as OverlayLookup, v as PrimitiveType, w as TypeRef, x as Service, y as SecurityRequirement, z as LogEvent } from "./types-D1tMqLVB.mjs";
|
|
2
2
|
|
|
3
|
+
//#region src/ir/operation-hints.d.ts
|
|
4
|
+
/** Per-operation override keyed by "METHOD /path" (e.g. "POST /sso/token"). */
|
|
5
|
+
interface OperationHint {
|
|
6
|
+
/** Override the algorithm-derived method name. */
|
|
7
|
+
name?: string;
|
|
8
|
+
/** Remount this operation to a different service/namespace (PascalCase). */
|
|
9
|
+
mountOn?: string;
|
|
10
|
+
/** Split a union-body operation into N typed wrapper methods. */
|
|
11
|
+
split?: SplitHint[];
|
|
12
|
+
/** Inject constant body defaults (e.g. { grant_type: 'password' }). */
|
|
13
|
+
defaults?: Record<string, string | number | boolean>;
|
|
14
|
+
/** Fields the SDK reads from client config at runtime (e.g. ['client_id']). */
|
|
15
|
+
inferFromClient?: string[];
|
|
16
|
+
}
|
|
17
|
+
interface SplitHint {
|
|
18
|
+
/** Wrapper method name (snake_case). */
|
|
19
|
+
name: string;
|
|
20
|
+
/** The discriminated union variant model name (e.g. 'PasswordSessionAuthenticateRequest'). */
|
|
21
|
+
targetVariant: string;
|
|
22
|
+
/** Constant body fields injected by the wrapper. */
|
|
23
|
+
defaults?: Record<string, string | number | boolean>;
|
|
24
|
+
/** Fields the SDK reads from client config at runtime. */
|
|
25
|
+
inferFromClient?: string[];
|
|
26
|
+
/** Only these body fields are exposed as method params. If omitted, all non-default/non-inferred fields are exposed. */
|
|
27
|
+
exposedParams?: string[];
|
|
28
|
+
}
|
|
29
|
+
interface ResolvedOperation {
|
|
30
|
+
/** The original IR operation (preserves description, params, types, etc.). */
|
|
31
|
+
operation: Operation;
|
|
32
|
+
/** The original IR service that owns this operation. */
|
|
33
|
+
service: Service;
|
|
34
|
+
/** Resolved snake_case method name (emitters convert to their convention). */
|
|
35
|
+
methodName: string;
|
|
36
|
+
/** Resolved target service/namespace (PascalCase). */
|
|
37
|
+
mountOn: string;
|
|
38
|
+
/** For split operations: one wrapper per union variant. */
|
|
39
|
+
wrappers?: ResolvedWrapper[];
|
|
40
|
+
}
|
|
41
|
+
interface ResolvedWrapper {
|
|
42
|
+
/** Wrapper method name (snake_case). */
|
|
43
|
+
name: string;
|
|
44
|
+
/** The discriminated union variant model name. */
|
|
45
|
+
targetVariant: string;
|
|
46
|
+
/** Constant body defaults injected by the wrapper. */
|
|
47
|
+
defaults: Record<string, string | number | boolean>;
|
|
48
|
+
/** Fields read from client config at runtime. */
|
|
49
|
+
inferFromClient: string[];
|
|
50
|
+
/** Body fields exposed as method params. */
|
|
51
|
+
exposedParams: string[];
|
|
52
|
+
/** Optional body fields (not required in the variant). */
|
|
53
|
+
optionalParams: string[];
|
|
54
|
+
/** Response model name (if any). */
|
|
55
|
+
responseModelName: string | null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Derive a snake_case method name from an operation's HTTP method and path.
|
|
59
|
+
*
|
|
60
|
+
* Rules:
|
|
61
|
+
* 1. Strip path-param segments (`{id}`, `{slug}`, etc.)
|
|
62
|
+
* 2. If the terminal segment is an action verb, use it as the verb
|
|
63
|
+
* 3. Otherwise, use the CRUD verb for the HTTP method
|
|
64
|
+
* 4. For GET on a collection (no trailing {id}), use "list"; with {id}, use "get"
|
|
65
|
+
* 5. For POST on a resource path, if only one path param, use "create" singular
|
|
66
|
+
* 6. Singularize the resource noun for single-resource operations
|
|
67
|
+
*/
|
|
68
|
+
declare function deriveMethodName(op: Operation, _service: Service): string;
|
|
69
|
+
/**
|
|
70
|
+
* Resolve all operations in the spec, applying hints and mount rules.
|
|
71
|
+
*
|
|
72
|
+
* @param spec - The parsed API spec
|
|
73
|
+
* @param hints - Per-operation overrides keyed by "METHOD /path"
|
|
74
|
+
* @param mountRules - Service name → target service mappings
|
|
75
|
+
* @returns Resolved operations ready for emitter consumption
|
|
76
|
+
*/
|
|
77
|
+
declare function resolveOperations(spec: ApiSpec, hints?: Record<string, OperationHint>, mountRules?: Record<string, string>): ResolvedOperation[];
|
|
78
|
+
//#endregion
|
|
3
79
|
//#region src/errors.d.ts
|
|
4
80
|
/**
|
|
5
81
|
* Structured error hierarchy for oagen.
|
|
@@ -64,6 +140,16 @@ interface EmitterContext {
|
|
|
64
140
|
outputDir?: string;
|
|
65
141
|
apiSurface?: ApiSurface;
|
|
66
142
|
overlayLookup?: OverlayLookup;
|
|
143
|
+
/** Resolved operations from the hint-aware resolver. Populated by buildEmitterContext(). */
|
|
144
|
+
resolvedOperations?: ResolvedOperation[];
|
|
145
|
+
}
|
|
146
|
+
interface FormatCommand {
|
|
147
|
+
/** The executable to run (e.g., "npx", "gofmt", "bundle"). */
|
|
148
|
+
cmd: string;
|
|
149
|
+
/** Arguments before the file list (e.g., ["prettier", "--write"]). */
|
|
150
|
+
args: string[];
|
|
151
|
+
/** Max files per invocation (to avoid OS arg-length limits). Defaults to 100. */
|
|
152
|
+
batchSize?: number;
|
|
67
153
|
}
|
|
68
154
|
interface Emitter {
|
|
69
155
|
language: string;
|
|
@@ -78,6 +164,13 @@ interface Emitter {
|
|
|
78
164
|
/** Optional: generate a smoke-manifest.json mapping operationIds to SDK methods */
|
|
79
165
|
generateManifest?(spec: ApiSpec, ctx: EmitterContext): GeneratedFile[];
|
|
80
166
|
fileHeader(): string;
|
|
167
|
+
/**
|
|
168
|
+
* Optional: return a format command to run on generated files after target
|
|
169
|
+
* integration. The emitter can inspect the target directory to detect the
|
|
170
|
+
* project's formatter (e.g., prettier config, .editorconfig, Gemfile).
|
|
171
|
+
* Return null to skip formatting.
|
|
172
|
+
*/
|
|
173
|
+
formatCommand?(targetDir: string): FormatCommand | null;
|
|
81
174
|
}
|
|
82
175
|
//#endregion
|
|
83
176
|
//#region src/differ/types.d.ts
|
|
@@ -183,6 +276,7 @@ interface ParamChange {
|
|
|
183
276
|
//#region src/parser/parse.d.ts
|
|
184
277
|
interface ParseOptions {
|
|
185
278
|
operationIdTransform?: (id: string) => string;
|
|
279
|
+
schemaNameTransform?: (name: string) => string;
|
|
186
280
|
}
|
|
187
281
|
declare function parseSpec(specPath: string, options?: ParseOptions): Promise<ApiSpec>;
|
|
188
282
|
//#endregion
|
|
@@ -194,6 +288,8 @@ declare function generate(spec: ApiSpec, emitter: Emitter, options: {
|
|
|
194
288
|
target?: string;
|
|
195
289
|
apiSurface?: ApiSurface;
|
|
196
290
|
overlayLookup?: OverlayLookup;
|
|
291
|
+
operationHints?: Record<string, OperationHint>;
|
|
292
|
+
mountRules?: Record<string, string>;
|
|
197
293
|
}): Promise<GeneratedFile[]>;
|
|
198
294
|
//#endregion
|
|
199
295
|
//#region src/engine/generate-files.d.ts
|
|
@@ -202,7 +298,18 @@ declare function buildEmitterContext(spec: ApiSpec, options: {
|
|
|
202
298
|
outputDir: string;
|
|
203
299
|
apiSurface?: ApiSurface;
|
|
204
300
|
overlayLookup?: OverlayLookup;
|
|
301
|
+
operationHints?: Record<string, OperationHint>;
|
|
302
|
+
mountRules?: Record<string, string>;
|
|
205
303
|
}): EmitterContext;
|
|
304
|
+
/**
|
|
305
|
+
* Collect model and enum names transitively referenced by service operations.
|
|
306
|
+
* Walks operation parameters, request bodies, responses, and pagination item
|
|
307
|
+
* types, then chases model field references until the set stabilizes.
|
|
308
|
+
*/
|
|
309
|
+
declare function collectReferencedNames(services: Service[], models: Model[]): {
|
|
310
|
+
models: Set<string>;
|
|
311
|
+
enums: Set<string>;
|
|
312
|
+
};
|
|
206
313
|
/** Collect all generated files from an emitter (no headers, no path prefixes). */
|
|
207
314
|
declare function generateAllFiles(spec: ApiSpec, emitter: Emitter, ctx: EmitterContext): GeneratedFile[];
|
|
208
315
|
/** Apply file header to generated files, respecting headerPlacement and JSON files. */
|
|
@@ -212,6 +319,8 @@ declare function generateFiles(spec: ApiSpec, emitter: Emitter, options: {
|
|
|
212
319
|
outputDir: string;
|
|
213
320
|
apiSurface?: ApiSurface;
|
|
214
321
|
overlayLookup?: OverlayLookup;
|
|
322
|
+
operationHints?: Record<string, OperationHint>;
|
|
323
|
+
mountRules?: Record<string, string>;
|
|
215
324
|
}): {
|
|
216
325
|
files: GeneratedFile[];
|
|
217
326
|
ctx: EmitterContext;
|
|
@@ -228,6 +337,11 @@ interface WriteResult {
|
|
|
228
337
|
}
|
|
229
338
|
//#endregion
|
|
230
339
|
//#region src/engine/integrate.d.ts
|
|
340
|
+
/**
|
|
341
|
+
* Build a file-level dependency graph from generated files and return only
|
|
342
|
+
* files reachable from root entry points. Uses tree-sitter to parse imports.
|
|
343
|
+
*/
|
|
344
|
+
declare function treeShakeFiles(files: GeneratedFile[], language: string): Promise<GeneratedFile[]>;
|
|
231
345
|
declare function mapFilesForTargetIntegration(files: GeneratedFile[], language: string): GeneratedFile[];
|
|
232
346
|
declare function integrateGeneratedFiles(opts: {
|
|
233
347
|
files: GeneratedFile[];
|
|
@@ -286,10 +400,30 @@ interface OagenConfig {
|
|
|
286
400
|
*
|
|
287
401
|
*/
|
|
288
402
|
operationIdTransform?: (id: string) => string;
|
|
403
|
+
/**
|
|
404
|
+
* Custom transform for schema (model/enum) names. Applied after the built-in
|
|
405
|
+
* cleanSchemaName normalization. Receives the cleaned PascalCase name; return
|
|
406
|
+
* the desired name. Collisions are detected automatically -- if a transform
|
|
407
|
+
* would produce a duplicate name, the original is kept.
|
|
408
|
+
*/
|
|
409
|
+
schemaNameTransform?: (name: string) => string;
|
|
289
410
|
/** Base URL for documentation links. When set, relative paths in descriptions
|
|
290
411
|
* (e.g. `/reference/authkit/user`) are expanded to full URLs. */
|
|
291
412
|
docUrl?: string;
|
|
413
|
+
/**
|
|
414
|
+
* Per-operation overrides keyed by "METHOD /path" (e.g. "POST /sso/token").
|
|
415
|
+
* Used by the operation resolver to override derived method names, mount
|
|
416
|
+
* targets, and to split union-body operations into typed wrappers.
|
|
417
|
+
*/
|
|
418
|
+
operationHints?: Record<string, OperationHint>;
|
|
419
|
+
/**
|
|
420
|
+
* Service-level mount rules: maps an IR service name to a target
|
|
421
|
+
* service/namespace (PascalCase). All operations in the source service
|
|
422
|
+
* are mounted on the target. Per-operation mountOn in operationHints
|
|
423
|
+
* takes priority.
|
|
424
|
+
*/
|
|
425
|
+
mountRules?: Record<string, string>;
|
|
292
426
|
}
|
|
293
427
|
//#endregion
|
|
294
|
-
export { ACRONYM_SET, type ApiSpec, type ArrayType, type AuthScheme, type Change, CommandError, ConfigError, ConfigLoadError, ConfigVersionMismatchError, type DiffReport, type Emitter, type EmitterContext, type Enum, type EnumAdded, type EnumModified, type EnumRef, type EnumRemoved, type EnumValue, type EnumValueChange, type ErrorResponse, ExtractorError, type Field, type FieldChange, type GeneratedFile, type HttpMethod, InternalError, type LiteralType, type MapType, type Model, type ModelAdded, type ModelModified, type ModelRef, type ModelRemoved, type NullableType, type OagenConfig, OagenError, type Operation, type OperationAdded, type OperationModified, type OperationPlan, type OperationRemoved, type PaginationMeta, type ParamChange, type Parameter, type PrimitiveType, RegistryError, type ServerEntry, type Service, type ServiceAdded, type ServiceRemoved, SpecParseError, type SuccessResponse, type TypeParam, type TypeRef, type UnionType, applyFileHeaders, assertNever, assignModelsToServices, buildEmitterContext, cleanSchemaName, collectEnumRefs, collectFieldDependencies, collectModelRefs, collectRequestBodyModels, diffSpecs, generate, generateAllFiles, generateFiles, getEmitter, integrateGeneratedFiles, mapFilesForTargetIntegration, mapTypeRef, parseSpec, planOperation, registerEmitter, stripBackendPrefixes, toCamelCase, toKebabCase, toPascalCase, toSnakeCase, toUpperSnakeCase, walkTypeRef };
|
|
428
|
+
export { ACRONYM_SET, type AiAgentEnvVar, type ApiSpec, type ArrayType, type AuthScheme, type BackoffStrategy, type Change, CommandError, ConfigError, ConfigLoadError, ConfigVersionMismatchError, type DeepPartial, type DiffReport, type Emitter, type EmitterContext, type Enum, type EnumAdded, type EnumModified, type EnumRef, type EnumRemoved, type EnumValue, type EnumValueChange, type ErrorPolicy, type ErrorResponse, ExtractorError, type Field, type FieldChange, type FormatCommand, type GeneratedFile, type HttpMethod, type IdempotencyPolicy, InternalError, type LiteralType, type LogEvent, type LoggingPolicy, type MapType, type Model, type ModelAdded, type ModelModified, type ModelRef, type ModelRemoved, type NullableType, type OagenConfig, OagenError, type Operation, type OperationAdded, type OperationHint, type OperationModified, type OperationPlan, type OperationRemoved, type PaginationMeta, type PaginationPolicy, type ParamChange, type Parameter, type PrimitiveType, RegistryError, type RequestGuardPolicy, type ResolvedOperation, type ResolvedWrapper, type RetryPolicy, type SdkBehavior, type SecurityRequirement, type ServerEntry, type Service, type ServiceAdded, type ServiceRemoved, SpecParseError, type SplitHint, type SuccessResponse, type TelemetryPolicy, type TimeoutPolicy, type TypeParam, type TypeRef, type UnionType, type UserAgentPolicy, applyFileHeaders, assertNever, assignModelsToServices, buildEmitterContext, cleanSchemaName, collectEnumRefs, collectFieldDependencies, collectModelRefs, collectReferencedNames, collectRequestBodyModels, defaultSdkBehavior, deriveMethodName, diffSpecs, generate, generateAllFiles, generateFiles, getEmitter, integrateGeneratedFiles, mapFilesForTargetIntegration, mapTypeRef, mergeSdkBehavior, parseSpec, planOperation, registerEmitter, resolveOperations, stripBackendPrefixes, toCamelCase, toKebabCase, toPascalCase, toSnakeCase, toUpperSnakeCase, treeShakeFiles, walkTypeRef };
|
|
295
429
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/errors.ts","../src/engine/types.ts","../src/differ/types.ts","../src/parser/parse.ts","../src/engine/orchestrator.ts","../src/engine/generate-files.ts","../src/engine/writer.ts","../src/engine/integrate.ts","../src/engine/registry.ts","../src/differ/diff.ts","../src/utils/naming.ts","../src/engine/operation-plan.ts","../src/cli/config-loader.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/ir/operation-hints.ts","../src/errors.ts","../src/engine/types.ts","../src/differ/types.ts","../src/parser/parse.ts","../src/engine/orchestrator.ts","../src/engine/generate-files.ts","../src/engine/writer.ts","../src/engine/integrate.ts","../src/engine/registry.ts","../src/differ/diff.ts","../src/utils/naming.ts","../src/engine/operation-plan.ts","../src/cli/config-loader.ts"],"mappings":"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"}
|