@workos/oagen 0.4.0 → 0.6.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 +0 -1
- package/dist/cli/index.mjs +471 -49
- package/dist/cli/index.mjs.map +1 -1
- package/dist/compat/index.d.mts +1 -1
- package/dist/compat/index.mjs +10 -1
- package/dist/compat/index.mjs.map +1 -1
- package/dist/{diff-DcY93sii.mjs → diff-CltJMcwG.mjs} +376 -42
- package/dist/diff-CltJMcwG.mjs.map +1 -0
- package/dist/index.d.mts +45 -4
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +95 -3
- package/dist/index.mjs.map +1 -1
- package/dist/scripts/smoke/baseline.mjs +93 -2
- package/dist/scripts/smoke/baseline.mjs.map +1 -1
- package/dist/smoke.d.mts +2 -0
- package/dist/smoke.d.mts.map +1 -1
- package/dist/smoke.mjs +93 -2
- package/dist/smoke.mjs.map +1 -1
- package/dist/tree-sitter-C53w_0WE.mjs.map +1 -1
- package/dist/{types-D1tMqLVB.d.mts → types-C7g5sLuX.d.mts} +8 -1
- package/dist/types-C7g5sLuX.d.mts.map +1 -0
- package/dist/verify/index.d.mts +1 -1
- package/dist/verify/index.mjs +1 -1
- package/docs/agents/architecture.md +1 -1
- package/docs/architecture/emitter-contract.md +1 -2
- package/docs/architecture/pipeline.md +0 -1
- package/docs/core/minimal-emitter.md +0 -4
- package/docs/core/quickstart.md +0 -1
- package/examples/reference-emitter/README.md +0 -1
- package/examples/reference-emitter/src/emitter.ts +0 -5
- package/package.json +1 -1
- package/dist/diff-DcY93sii.mjs.map +0 -1
- package/dist/types-D1tMqLVB.d.mts.map +0 -1
- package/examples/reference-emitter/src/generators/config.ts +0 -19
package/dist/smoke.d.mts
CHANGED
|
@@ -208,6 +208,8 @@ interface Parameter {
|
|
|
208
208
|
deprecated?: boolean;
|
|
209
209
|
default?: unknown;
|
|
210
210
|
example?: unknown;
|
|
211
|
+
style?: 'form' | 'simple' | 'label' | 'matrix';
|
|
212
|
+
explode?: boolean;
|
|
211
213
|
}
|
|
212
214
|
/** Type reference — the core type system of the IR */
|
|
213
215
|
type TypeRef = PrimitiveType | ArrayType | ModelRef | EnumRef | UnionType | NullableType | LiteralType | MapType;
|
package/dist/smoke.d.mts.map
CHANGED
|
@@ -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":";;;;AAYA;;;;;;UAAiB,WAAA;EAQf;EANA,oBAAA;EAQS;EANT,UAAA;EAMwB;EAJxB,sBAAA;EAY8B;EAV9B,cAAA;EAU8B;EAR9B,OAAA,EAAS,eAAA;AAAA;;;;;AAsBX;UAdiB,eAAA;;EAEf,YAAA;EAeA;EAbA,UAAA;EAeA;EAbA,QAAA;EAkBA;EAhBA,YAAA;AAAA;AAsBF;AAAA,UAhBiB,WAAA;;;EAGf,aAAA,EAAe,MAAA;EAiBf;EAfA,eAAA;EAiBe;EAff,eAAA;EAqBe;;EAlBf,mBAAA;AAAA;;UAMe,eAAA;EAoBiB;EAlBhC,gBAAA;EAoBA;EAlBA,UAAA;EA0Be;EAxBf,eAAA;AAAA;;UAMe,gBAAA;EAsBf;EApBA,eAAA;AAAA;;UAMe,iBAAA;EAkBG;EAhBlB,UAAA;EAgBkB;EAdlB,mBAAA;AAAA;;UAMe,aAAA;EA8Bc;EA5B7B,OAAA;EAwBA;EAtBA,MAAA,EAAQ,QAAA;AAAA;;KAIE,QAAA;;UAWK,eAAA;EAea;;;;EAV5B,qBAAA;EAoBiC;EAlBjC,qBAAA;EAqBA;EAnBA,YAAA;EAyBe;EAvBf,cAAA,EAAgB,aAAA;AAAA;;UAID,aAAA;EA8BA;EA5Bf,MAAA;;EAEA,SAAA;AAAA;;UAMe,kBAAA;EAyBF;;EAtBb,UAAA;AAAA;;UAMe,aAAA;EAoBO;EAlBtB,qBAAA;EAUO;EARP,aAAA;AAAA;;;UAOe,WAAA;EACf,KAAA,EAAO,WAAA;EACP,MAAA,EAAQ,WAAA;EACR,SAAA,EAAW,eAAA;EACX,UAAA,EAAY,gBAAA;EACZ,WAAA,EAAa,iBAAA;EACb,OAAA,EAAS,aAAA;EACT,SAAA,EAAW,eAAA;EACX,YAAA,EAAc,kBAAA;EACd,OAAA,EAAS,aAAA;AAAA;;;;KChKC,UAAA;EACN,IAAA;AAAA;EACA,IAAA;EAAgB,EAAA;EAAmC,IAAA;AAAA;EACnD,IAAA;EAAgB,KAAA,EAAO,MAAA;AAAA;;;UAIZ,WAAA;EACf,GAAA;EACA,WAAA;AAAA;;UAIe,OAAA;EACf,IAAA;EACA,OAAA;EACA,WAAA;EACA,OAAA;EACA,OAAA,GAAU,WAAA;EACV,QAAA,EAAU,OAAA;EACV,MAAA,EAAQ,KAAA;EACR,KAAA,EAAO,IAAA;EACP,IAAA,GAAO,UAAA;EDsBP;ECpBA,GAAA,EAAK,WAAA;AAAA;;UAIU,OAAA;EACf,IAAA;EACA,WAAA;EACA,UAAA,EAAY,SAAA;AAAA;;;UAKG,mBAAA;EACf,UAAA;EACA,MAAA;AAAA;AAAA,UAGe,SAAA;EACf,IAAA;EACA,WAAA;EACA,UAAA,EAAY,UAAA;EACZ,IAAA;EACA,UAAA,EAAY,SAAA;EACZ,WAAA,EAAa,SAAA;EACb,YAAA,EAAc,SAAA;EACd,YAAA,GAAe,SAAA;EACf,WAAA,GAAc,OAAA;EACd,mBAAA;EACA,QAAA,EAAU,OAAA;EACV,gBAAA,GAAmB,eAAA;EACnB,MAAA,EAAQ,aAAA;EACR,UAAA,GAAa,cAAA;EACb,oBAAA;EACA,UAAA;EACA,KAAA;EDiCgB;EC/BhB,QAAA,GAAW,mBAAA;AAAA;;UAII,cAAA;EACf,QAAA;EACA,KAAA;EACA,UAAA;EACA,QAAA;EACA,QAAA,EAAU,OAAA;AAAA;AAAA,KAGA,UAAA;AAAA,UAEK,SAAA;EACf,IAAA;EACA,IAAA,EAAM,OAAA;EACN,QAAA;EACA,WAAA;EACA,UAAA;EACA,OAAA;EACA,OAAA;AAAA
|
|
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
|
@@ -629,6 +629,86 @@ function buildFieldFromSchema(fieldName, fieldSchema, contextName, requiredSet)
|
|
|
629
629
|
example: fieldSchema.example
|
|
630
630
|
};
|
|
631
631
|
}
|
|
632
|
+
/**
|
|
633
|
+
* If every non-null oneOf/anyOf variant is a string-valued const, return the
|
|
634
|
+
* list of those const values so the union can collapse into a single enum.
|
|
635
|
+
* Returns null when any variant isn't a pure string-const (model ref,
|
|
636
|
+
* number const, nullable, etc.).
|
|
637
|
+
*/
|
|
638
|
+
function collectLiteralStringConsts(variants) {
|
|
639
|
+
if (variants.length === 0) return null;
|
|
640
|
+
const values = [];
|
|
641
|
+
for (const v of variants) {
|
|
642
|
+
if (typeof v.const === "string") {
|
|
643
|
+
values.push(v.const);
|
|
644
|
+
continue;
|
|
645
|
+
}
|
|
646
|
+
if (Array.isArray(v.enum) && v.enum.length === 1 && typeof v.enum[0] === "string") {
|
|
647
|
+
values.push(v.enum[0]);
|
|
648
|
+
continue;
|
|
649
|
+
}
|
|
650
|
+
return null;
|
|
651
|
+
}
|
|
652
|
+
return values;
|
|
653
|
+
}
|
|
654
|
+
/** Build an EnumRef the same way the regular enum path does for naming. */
|
|
655
|
+
function buildSyntheticEnumRef(values, contextName, parentModelName) {
|
|
656
|
+
const baseName = toPascalCase(contextName ?? "UnknownEnum");
|
|
657
|
+
const cleanParent = parentModelName ? stripListItemMarkers(parentModelName) : void 0;
|
|
658
|
+
return {
|
|
659
|
+
kind: "enum",
|
|
660
|
+
name: cleanParent && !baseName.startsWith(cleanParent) ? `${cleanParent}${baseName}` : baseName,
|
|
661
|
+
values
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
/**
|
|
665
|
+
* Detect an implicit discriminator on an oneOf where every variant is an
|
|
666
|
+
* object schema that pins the same property to a const value. Returns
|
|
667
|
+
* { property, mapping } so the IR can represent the union as discriminated
|
|
668
|
+
* without needing an explicit `discriminator:` key in the spec.
|
|
669
|
+
*
|
|
670
|
+
* Both shapes are supported:
|
|
671
|
+
* { properties: { event: { const: "x" } }, required: ["event"] }
|
|
672
|
+
* { properties: { event: { type: "string", enum: ["x"] } } }
|
|
673
|
+
*
|
|
674
|
+
* Returns null when any variant doesn't fit the pattern or when variants
|
|
675
|
+
* disagree on which property carries the discriminator.
|
|
676
|
+
*/
|
|
677
|
+
function detectConstPropertyDiscriminator(variants) {
|
|
678
|
+
if (variants.length < 2) return null;
|
|
679
|
+
let candidateProperty = null;
|
|
680
|
+
const candidates = Object.keys(variants[0]?.properties ?? {});
|
|
681
|
+
for (const propName of candidates) if (variants.every((v) => getConstPropertyValue(v, propName) !== null)) {
|
|
682
|
+
candidateProperty = propName;
|
|
683
|
+
break;
|
|
684
|
+
}
|
|
685
|
+
if (!candidateProperty) return null;
|
|
686
|
+
const mapping = {};
|
|
687
|
+
for (const v of variants) {
|
|
688
|
+
const value = getConstPropertyValue(v, candidateProperty);
|
|
689
|
+
if (value === null) return null;
|
|
690
|
+
const variantName = resolveVariantModelName(v);
|
|
691
|
+
if (!variantName) return null;
|
|
692
|
+
mapping[value] = variantName;
|
|
693
|
+
}
|
|
694
|
+
return {
|
|
695
|
+
property: candidateProperty,
|
|
696
|
+
mapping
|
|
697
|
+
};
|
|
698
|
+
}
|
|
699
|
+
function getConstPropertyValue(schema, property) {
|
|
700
|
+
const prop = schema.properties?.[property];
|
|
701
|
+
if (!prop) return null;
|
|
702
|
+
if (typeof prop.const === "string") return prop.const;
|
|
703
|
+
if (Array.isArray(prop.enum) && prop.enum.length === 1 && typeof prop.enum[0] === "string") return prop.enum[0];
|
|
704
|
+
return null;
|
|
705
|
+
}
|
|
706
|
+
function resolveVariantModelName(schema) {
|
|
707
|
+
if (schema.$ref) return resolveSchemaName(schema.$ref.replace(/^#\/components\/schemas\//, ""));
|
|
708
|
+
const title = typeof schema["title"] === "string" ? schema["title"] : null;
|
|
709
|
+
if (title) return resolveSchemaName(title);
|
|
710
|
+
return null;
|
|
711
|
+
}
|
|
632
712
|
function extractEnum(name, schema) {
|
|
633
713
|
return {
|
|
634
714
|
name,
|
|
@@ -852,6 +932,15 @@ function schemaToTypeRef(schema, contextName, parentModelName) {
|
|
|
852
932
|
kind: "nullable",
|
|
853
933
|
inner: schemaToTypeRef(nonNullVariants[0], contextName, parentModelName)
|
|
854
934
|
};
|
|
935
|
+
const literalStrings = collectLiteralStringConsts(nonNullVariants);
|
|
936
|
+
if (literalStrings !== null && literalStrings.length >= 2) {
|
|
937
|
+
const enumRef = buildSyntheticEnumRef(literalStrings, contextName, parentModelName);
|
|
938
|
+
return nullVariant ? {
|
|
939
|
+
kind: "nullable",
|
|
940
|
+
inner: enumRef
|
|
941
|
+
} : enumRef;
|
|
942
|
+
}
|
|
943
|
+
const syntheticDiscriminator = !schema.discriminator && compositionKind === "oneOf" ? detectConstPropertyDiscriminator(nonNullVariants) : null;
|
|
855
944
|
const variants = rawVariants.filter((v) => v.type !== "null").map((v) => schemaToTypeRef(v, contextName, parentModelName));
|
|
856
945
|
const hasNull = !!nullVariant;
|
|
857
946
|
const union = {
|
|
@@ -861,7 +950,7 @@ function schemaToTypeRef(schema, contextName, parentModelName) {
|
|
|
861
950
|
...schema.discriminator ? { discriminator: {
|
|
862
951
|
property: schema.discriminator.propertyName,
|
|
863
952
|
mapping: Object.fromEntries(Object.entries(schema.discriminator.mapping ?? {}).map(([k, v]) => [k, v.replace(/^#\/components\/schemas\//, "")]))
|
|
864
|
-
} } : {}
|
|
953
|
+
} } : syntheticDiscriminator ? { discriminator: syntheticDiscriminator } : {}
|
|
865
954
|
};
|
|
866
955
|
return hasNull ? {
|
|
867
956
|
kind: "nullable",
|
|
@@ -1612,7 +1701,9 @@ function extractParams(params, location, operationContext) {
|
|
|
1612
1701
|
description: p.description,
|
|
1613
1702
|
deprecated: p.deprecated || p.schema?.deprecated || void 0,
|
|
1614
1703
|
default: p.schema?.default,
|
|
1615
|
-
example: p.example ?? p.schema?.example
|
|
1704
|
+
example: p.example ?? p.schema?.example,
|
|
1705
|
+
style: p.style,
|
|
1706
|
+
explode: p.explode
|
|
1616
1707
|
}));
|
|
1617
1708
|
}
|
|
1618
1709
|
function extractRequestBody(body, op, inlineModels) {
|