@workos/oagen 0.7.0 → 0.8.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 (52) hide show
  1. package/dist/cli/index.mjs +1123 -436
  2. package/dist/cli/index.mjs.map +1 -1
  3. package/dist/compat/index.d.mts +144 -57
  4. package/dist/compat/index.d.mts.map +1 -1
  5. package/dist/compat/index.mjs +362 -41
  6. package/dist/compat/index.mjs.map +1 -1
  7. package/dist/{diff-BYadQQV7.mjs → diff-BaH9qa8k.mjs} +11 -2
  8. package/dist/{diff-BYadQQV7.mjs.map → diff-BaH9qa8k.mjs.map} +1 -1
  9. package/dist/differ-CTl98yoS.d.mts +116 -0
  10. package/dist/differ-CTl98yoS.d.mts.map +1 -0
  11. package/dist/index.d.mts +3 -1
  12. package/dist/index.d.mts.map +1 -1
  13. package/dist/index.mjs +50 -10
  14. package/dist/index.mjs.map +1 -1
  15. package/dist/{differ-CG5ZErKl.mjs → overlay-TYxHOCow.mjs} +1112 -553
  16. package/dist/overlay-TYxHOCow.mjs.map +1 -0
  17. package/dist/scripts/smoke/baseline.mjs +49 -9
  18. package/dist/scripts/smoke/baseline.mjs.map +1 -1
  19. package/dist/smoke.d.mts +10 -0
  20. package/dist/smoke.d.mts.map +1 -1
  21. package/dist/smoke.mjs +49 -9
  22. package/dist/smoke.mjs.map +1 -1
  23. package/dist/tree-sitter-C53w_0WE.mjs.map +1 -1
  24. package/dist/{types-DJMbCtIO.d.mts → types-mTtkgy_h.d.mts} +180 -2
  25. package/dist/types-mTtkgy_h.d.mts.map +1 -0
  26. package/dist/verify/index.d.mts +4 -3
  27. package/dist/verify/index.d.mts.map +1 -1
  28. package/dist/verify/index.mjs +12 -10
  29. package/dist/verify/index.mjs.map +1 -1
  30. package/docs/architecture/emitter-contract.md +2 -2
  31. package/docs/architecture/extractor-contract.md +6 -5
  32. package/docs/architecture/pipeline.md +4 -3
  33. package/docs/architecture/workflows.md +5 -3
  34. package/docs/cli.md +148 -6
  35. package/docs/contributor/public-api.md +1 -1
  36. package/docs/core/compatibility-ir.md +200 -0
  37. package/docs/core/compatibility-policy.md +170 -0
  38. package/docs/core/compatibility.md +83 -0
  39. package/docs/core/index.md +5 -0
  40. package/docs/core/manifest-schema.md +76 -0
  41. package/docs/core/quickstart.md +9 -2
  42. package/docs/core/verify-compat.md +235 -0
  43. package/package.json +1 -1
  44. package/skills/generate-emitter/SKILL.md +12 -7
  45. package/skills/generate-emitter/references/project-scaffold.md +27 -6
  46. package/skills/generate-extractor/SKILL.md +14 -8
  47. package/skills/generate-sdk/SKILL.md +2 -2
  48. package/skills/generate-smoke-test/SKILL.md +9 -5
  49. package/skills/review-operations/SKILL.md +2 -2
  50. package/skills/verify-compat/SKILL.md +1 -1
  51. package/dist/differ-CG5ZErKl.mjs.map +0 -1
  52. package/dist/types-DJMbCtIO.d.mts.map +0 -1
@@ -1,5 +1,143 @@
1
- import { $ as ApiClass, Q as Addition, at as ApiProperty, ct as DiffResult, dt as MethodOverlay, et as ApiEnum, ft as OverlayLookup, ht as ViolationSeverity, it as ApiParam, lt as Extractor, mt as ViolationCategory, nt as ApiInterface, ot as ApiSurface, pt as Violation, rt as ApiMethod, st as ApiTypeAlias, t as ApiSpec, tt as ApiField, ut as LanguageHints } from "../types-DJMbCtIO.mjs";
1
+ import { $ as BreakingChangeCategory, At as CompatSourceKind, Bt as CompatPolicyHints, Ct as OverlayLookup, Dt as CompatParameter, Et as ViolationSeverity, Ft as CompatVisibility, Ht as mergePolicy, It as LanguageId, Lt as ParameterSensitivity, Mt as CompatSymbol, Nt as CompatSymbolKind, Ot as CompatPassingStyle, Pt as CompatTypeRef, Q as AdditiveChangeCategory, Rt as apiSurfaceToSnapshot, St as MethodOverlay, Tt as ViolationCategory, Vt as getDefaultPolicy, _t as ApiSurface, at as CompatProvenance, bt as Extractor, ct as severityMeetsThreshold, dt as ApiEnum, et as CompatApproval, ft as ApiField, gt as ApiProperty, ht as ApiParam, it as CompatFailLevel, jt as CompatStability, kt as CompatSnapshot, lt as Addition, mt as ApiMethod, nt as CompatChangeSeverity, ot as SoftRiskChangeCategory, pt as ApiInterface, rt as CompatConfig, st as defaultSeverityForCategory, t as ApiSpec, tt as CompatChangeCategory, ut as ApiClass, vt as ApiTypeAlias, wt as Violation, xt as LanguageHints, yt as DiffResult, zt as ALL_LANGUAGE_IDS } from "../types-mTtkgy_h.mjs";
2
+ import { a as specDerivedEnumValues, c as specDerivedMethodPaths, d as ClassifiedChange, f as classifyAddedSymbol, i as filterSurface, l as specDerivedNames, m as summarizeChanges, n as diffSnapshots, o as specDerivedFieldPaths, p as classifySymbolChanges, r as diffSurfaces, s as specDerivedHttpKeys, t as CompatDiffResult, u as ClassificationResult } from "../differ-CTl98yoS.mjs";
2
3
 
4
+ //#region src/compat/schema.d.ts
5
+ /** Current schema version for compatibility snapshots. */
6
+ declare const COMPAT_SCHEMA_VERSION = "1";
7
+ /** Validate that a parsed snapshot has a compatible schema version. */
8
+ declare function isCompatibleSchemaVersion(snapshot: {
9
+ schemaVersion?: string;
10
+ }): boolean;
11
+ /** Validate the basic structure of a parsed compat snapshot. */
12
+ declare function validateSnapshot(data: unknown): data is CompatSnapshot;
13
+ //#endregion
14
+ //#region src/compat/concepts.d.ts
15
+ /** A conceptual change with per-language severity. */
16
+ interface ConceptualChange {
17
+ /** Deterministic ID from symbol + category + match details. */
18
+ id: string;
19
+ /** IR-level symbol path (language-neutral). */
20
+ symbol: string;
21
+ /** The kind of change. */
22
+ category: CompatChangeCategory;
23
+ /** Per-language severity mapping. */
24
+ impact: Partial<Record<LanguageId, CompatChangeSeverity>>;
25
+ /** Human-readable description (from first language that reported it). */
26
+ message: string;
27
+ /** Old state details. */
28
+ old: Record<string, string>;
29
+ /** New state details. */
30
+ new: Record<string, string>;
31
+ }
32
+ /** Cross-language conceptual rollup. */
33
+ interface ConceptualRollup {
34
+ conceptualChanges: ConceptualChange[];
35
+ }
36
+ /**
37
+ * Group classified changes from multiple languages into conceptual changes.
38
+ *
39
+ * Changes are grouped by their `conceptualChangeId` — a deterministic ID
40
+ * derived from the symbol, category, and match details. Changes with the
41
+ * same ID across different languages represent the same conceptual change.
42
+ */
43
+ declare function buildConceptualRollup(perLanguageResults: Array<{
44
+ diff: CompatDiffResult;
45
+ language: LanguageId;
46
+ }>): ConceptualRollup;
47
+ /** Get the highest severity across all languages for a conceptual change. */
48
+ declare function highestSeverity(change: ConceptualChange): CompatChangeSeverity;
49
+ /** Count conceptual changes by highest severity. */
50
+ declare function summarizeConceptualChanges(rollup: ConceptualRollup): {
51
+ breaking: number;
52
+ softRisk: number;
53
+ additive: number;
54
+ };
55
+ //#endregion
56
+ //#region src/compat/report.d.ts
57
+ /** Machine-readable compat report for a single language. */
58
+ interface CompatReport {
59
+ schemaVersion: string;
60
+ language: string;
61
+ summary: {
62
+ breaking: number;
63
+ softRisk: number;
64
+ additive: number;
65
+ };
66
+ changes: CompatReportChange[];
67
+ }
68
+ /** A single change entry in the machine-readable report. */
69
+ interface CompatReportChange {
70
+ severity: CompatChangeSeverity;
71
+ category: CompatChangeCategory;
72
+ symbol: string;
73
+ conceptualChangeId: string;
74
+ provenance: CompatProvenance;
75
+ old: Record<string, string>;
76
+ new: Record<string, string>;
77
+ message?: string;
78
+ }
79
+ /** Generate a machine-readable compat report from a diff result. */
80
+ declare function generateReport(diff: CompatDiffResult, language?: string): CompatReport;
81
+ /** Generate a human-readable summary string for terminal output. */
82
+ declare function formatHumanSummary(diff: CompatDiffResult, opts?: {
83
+ explain?: boolean;
84
+ language?: string;
85
+ }): string;
86
+ /** Conceptual cross-language report. */
87
+ interface ConceptualReport {
88
+ conceptualChanges: {
89
+ id: string;
90
+ symbol: string;
91
+ category: CompatChangeCategory;
92
+ impact: Partial<Record<LanguageId, CompatChangeSeverity>>;
93
+ }[];
94
+ }
95
+ /** Generate a conceptual cross-language report from multiple per-language results. */
96
+ declare function generateConceptualReport(perLanguageResults: Array<{
97
+ diff: CompatDiffResult;
98
+ language: LanguageId;
99
+ }>): ConceptualReport;
100
+ /** Format a conceptual cross-language summary for terminal output. */
101
+ declare function formatConceptualSummary(perLanguageResults: Array<{
102
+ diff: CompatDiffResult;
103
+ language: LanguageId;
104
+ }>): string;
105
+ //#endregion
106
+ //#region src/compat/approvals.d.ts
107
+ /** Result of matching a change against approvals. */
108
+ interface ApprovalMatch {
109
+ /** The change that was matched. */
110
+ change: ClassifiedChange;
111
+ /** The approval that matched. null if no approval covers this change. */
112
+ approval: CompatApproval | null;
113
+ /** Whether the change is covered by an approval. */
114
+ approved: boolean;
115
+ }
116
+ /** Result of validating an approval for broadness. */
117
+ interface ApprovalValidation {
118
+ valid: boolean;
119
+ errors: string[];
120
+ }
121
+ /** Validate that an approval is narrow enough to be accepted. */
122
+ declare function validateApproval(approval: CompatApproval): ApprovalValidation;
123
+ /** Validate all approvals in a config. Returns errors keyed by index. */
124
+ declare function validateApprovals(approvals: CompatApproval[]): Map<number, string[]>;
125
+ /**
126
+ * Match a classified change against a list of approvals.
127
+ * Returns the first matching approval, or null if none match.
128
+ */
129
+ declare function matchApproval(change: ClassifiedChange, approvals: CompatApproval[], language: LanguageId): CompatApproval | null;
130
+ /**
131
+ * Apply approvals to a list of changes.
132
+ * Returns matches for every change (approved or not).
133
+ */
134
+ declare function applyApprovals(changes: ClassifiedChange[], approvals: CompatApproval[], language: LanguageId): ApprovalMatch[];
135
+ /**
136
+ * Filter changes to only those NOT covered by approvals.
137
+ * These are the remaining unapproved changes that may cause failure.
138
+ */
139
+ declare function unapprovedChanges(changes: ClassifiedChange[], approvals: CompatApproval[], language: LanguageId): ClassifiedChange[];
140
+ //#endregion
3
141
  //#region src/compat/extractor-registry.d.ts
4
142
  declare function registerExtractor(extractor: Extractor): void;
5
143
  declare function getExtractor(language: string): Extractor;
@@ -18,65 +156,14 @@ interface ManifestEntry {
18
156
  declare function buildOverlayLookup(surface: ApiSurface, manifest?: ManifestEntry[], spec?: ApiSpec, hints?: LanguageHints, options?: {
19
157
  strictModelMatch?: boolean;
20
158
  }): OverlayLookup;
159
+ /** Check if a classified change is patchable by the overlay loop. */
160
+ declare function isPatchableChange(change: ClassifiedChange): boolean;
21
161
  /**
22
- * Patch overlay with violations from a failed verification.
162
+ * Patch overlay with classified changes from a failed verification.
23
163
  * Adds explicit name mappings for symbols that were generated with wrong names.
24
164
  * Returns a new OverlayLookup (immutable).
25
165
  */
26
- declare function patchOverlay(overlay: OverlayLookup, violations: Violation[], baseline: ApiSurface): OverlayLookup;
27
- //#endregion
28
- //#region src/compat/spec-filter.d.ts
29
- /**
30
- * Compute the set of symbol names that are derivable from the OpenAPI spec.
31
- * Only these names should be compared during compat verification — everything
32
- * else in the baseline is hand-written and out of scope for generation.
33
- */
34
- declare function specDerivedNames(spec: ApiSpec, hints: LanguageHints): Set<string>;
35
- /**
36
- * Compute a map of enum name → set of wire values that appear in the spec.
37
- * Used by filterSurface to exclude hand-added enum members that aren't in the spec.
38
- */
39
- declare function specDerivedEnumValues(spec: ApiSpec): Map<string, Set<string | number>>;
40
- /**
41
- * Compute the set of field paths (e.g., "Organization.name") that are defined
42
- * in the OpenAPI spec's model schemas. Used by filterSurface to exclude
43
- * hand-added SDK fields that reference spec-derived types.
44
- */
45
- declare function specDerivedFieldPaths(spec: ApiSpec, hints: LanguageHints): Set<string>;
46
- /**
47
- * Compute the set of method paths (e.g., "SSO.authorize") that are defined
48
- * as operations in the OpenAPI spec's services. Used by filterSurface to
49
- * exclude hand-written SDK methods that don't correspond to spec operations.
50
- */
51
- declare function specDerivedMethodPaths(spec: ApiSpec): Set<string>;
52
- /**
53
- * Compute the set of HTTP operation keys (e.g., "GET /sso/authorize") that
54
- * exist in the spec. Used for overlay-based method matching.
55
- */
56
- declare function specDerivedHttpKeys(spec: ApiSpec): Set<string>;
57
- /**
58
- * Filter an ApiSurface to only include symbols whose names appear in the
59
- * allowed set. Symbols not in the set are dropped entirely — they won't
60
- * count toward the total or produce violations.
61
- *
62
- * For interfaces: when fieldPaths is provided, only keeps fields that appear
63
- * in the spec-derived field paths. This prevents false positives from hand-added
64
- * SDK fields that reference spec-derived types but aren't defined in the spec.
65
- *
66
- * For classes: when methodPaths is provided, only keeps methods whose names
67
- * appear in the spec-derived method paths. This prevents false positives from
68
- * hand-written SDK methods (e.g., SSO.authorization_url, Webhooks.construct_event)
69
- * that don't correspond to spec operations. Properties on service classes are
70
- * also filtered: only UPPER_CASE constants that are spec-derivable are kept.
71
- */
72
- declare function filterSurface(surface: ApiSurface, allowedNames: Set<string>, opts?: {
73
- fieldPaths?: Set<string>;
74
- methodPaths?: Set<string>;
75
- enumValues?: Map<string, Set<string | number>>;
76
- }): ApiSurface;
77
- //#endregion
78
- //#region src/compat/differ.d.ts
79
- declare function diffSurfaces(baseline: ApiSurface, candidate: ApiSurface, hints: LanguageHints): DiffResult;
166
+ declare function patchOverlay(overlay: OverlayLookup, changes: ClassifiedChange[], baseline: ApiSurface): OverlayLookup;
80
167
  //#endregion
81
168
  //#region src/compat/extractors/node.d.ts
82
169
  declare const nodeExtractor: Extractor;
@@ -120,5 +207,5 @@ declare const nodeHints: LanguageHints;
120
207
  */
121
208
  declare function resolveHints(overrides: Partial<LanguageHints>): LanguageHints;
122
209
  //#endregion
123
- export { type Addition, type ApiClass, type ApiEnum, type ApiField, type ApiInterface, type ApiMethod, type ApiParam, type ApiProperty, type ApiSurface, type ApiTypeAlias, type DiffResult, type Extractor, type LanguageHints, type MethodOverlay, type OverlayLookup, type Violation, type ViolationCategory, type ViolationSeverity, buildOverlayLookup, diffSurfaces, dotnetExtractor, elixirExtractor, filterSurface, getExtractor, goExtractor, kotlinExtractor, nodeExtractor, nodeHints, patchOverlay, phpExtractor, pythonExtractor, registerExtractor, resolveHints, rubyExtractor, rustExtractor, specDerivedEnumValues, specDerivedFieldPaths, specDerivedHttpKeys, specDerivedMethodPaths, specDerivedNames };
210
+ export { ALL_LANGUAGE_IDS, type Addition, type AdditiveChangeCategory, type ApiClass, type ApiEnum, type ApiField, type ApiInterface, type ApiMethod, type ApiParam, type ApiProperty, type ApiSurface, type ApiTypeAlias, type ApprovalMatch, type ApprovalValidation, type BreakingChangeCategory, COMPAT_SCHEMA_VERSION, type ClassificationResult, type ClassifiedChange, type CompatApproval, type CompatChangeCategory, type CompatChangeSeverity, type CompatConfig, type CompatDiffResult, type CompatFailLevel, type CompatParameter, type CompatPassingStyle, type CompatPolicyHints, type CompatProvenance, type CompatReport, type CompatReportChange, type CompatSnapshot, type CompatSourceKind, type CompatStability, type CompatSymbol, type CompatSymbolKind, type CompatTypeRef, type CompatVisibility, type ConceptualChange, type ConceptualReport, type ConceptualRollup, type DiffResult, type Extractor, type LanguageHints, type LanguageId, type MethodOverlay, type OverlayLookup, type ParameterSensitivity, type SoftRiskChangeCategory, type Violation, type ViolationCategory, type ViolationSeverity, apiSurfaceToSnapshot, applyApprovals, buildConceptualRollup, buildOverlayLookup, classifyAddedSymbol, classifySymbolChanges, defaultSeverityForCategory, diffSnapshots, diffSurfaces, dotnetExtractor, elixirExtractor, filterSurface, formatConceptualSummary, formatHumanSummary, generateConceptualReport, generateReport, getDefaultPolicy, getExtractor, goExtractor, highestSeverity, isCompatibleSchemaVersion, isPatchableChange, kotlinExtractor, matchApproval, mergePolicy, nodeExtractor, nodeHints, patchOverlay, phpExtractor, pythonExtractor, registerExtractor, resolveHints, rubyExtractor, rustExtractor, severityMeetsThreshold, specDerivedEnumValues, specDerivedFieldPaths, specDerivedHttpKeys, specDerivedMethodPaths, specDerivedNames, summarizeChanges, summarizeConceptualChanges, unapprovedChanges, validateApproval, validateApprovals, validateSnapshot };
124
211
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/compat/extractor-registry.ts","../../src/compat/overlay.ts","../../src/compat/spec-filter.ts","../../src/compat/differ.ts","../../src/compat/extractors/node.ts","../../src/compat/extractors/php.ts","../../src/compat/extractors/python.ts","../../src/compat/extractors/ruby.ts","../../src/compat/extractors/go.ts","../../src/compat/extractors/rust.ts","../../src/compat/extractors/kotlin.ts","../../src/compat/extractors/dotnet.ts","../../src/compat/extractors/elixir.ts","../../src/compat/language-hints.ts"],"mappings":";;;iBAKgB,iBAAA,CAAkB,SAAA,EAAW,SAAA;AAAA,iBAI7B,YAAA,CAAa,QAAA,WAAmB,SAAA;;;UCF/B,aAAA;EACf,WAAA;EACA,mBAAA;EACA,aAAA;EACA,UAAA;EACA,IAAA;EACA,UAAA;EACA,UAAA;EACA,WAAA;AAAA;AAAA,iBAoDc,kBAAA,CACd,OAAA,EAAS,UAAA,EACT,QAAA,GAAW,aAAA,IACX,IAAA,GAAO,OAAA,EACP,KAAA,GAAQ,aAAA,EACR,OAAA;EAAY,gBAAA;AAAA,IACX,aAAA;AAlEH;;;;;AAAA,iBAgfgB,YAAA,CAAa,OAAA,EAAS,aAAA,EAAe,UAAA,EAAY,SAAA,IAAa,QAAA,EAAU,UAAA,GAAa,aAAA;;;;ADlfrG;;;;iBEIgB,gBAAA,CAAiB,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,aAAA,GAAgB,GAAA;AFAvE;;;;AAAA,iBE0CgB,qBAAA,CAAsB,IAAA,EAAM,OAAA,GAAU,GAAA,SAAY,GAAA;;;;AD5ClE;;iBCyDgB,qBAAA,CAAsB,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,aAAA,GAAgB,GAAA;;;;;;iBAqB5D,sBAAA,CAAuB,IAAA,EAAM,OAAA,GAAU,GAAA;;;;;iBAcvC,mBAAA,CAAoB,IAAA,EAAM,OAAA,GAAU,GAAA;ADhCpD;;;;;;;;;;;;;;;AAAA,iBCoFgB,aAAA,CACd,OAAA,EAAS,UAAA,EACT,YAAA,EAAc,GAAA,UACd,IAAA;EACE,UAAA,GAAa,GAAA;EACb,WAAA,GAAc,GAAA;EACd,UAAA,GAAa,GAAA,SAAY,GAAA;AAAA,IAE1B,UAAA;;;iBCnJa,YAAA,CAAa,QAAA,EAAU,UAAA,EAAY,SAAA,EAAW,UAAA,EAAY,KAAA,EAAO,aAAA,GAAgB,UAAA;;;cCOpF,aAAA,EAAe,SAAA;;;;cCgMf,YAAA,EAAc,SAAA;;;;cCwJd,eAAA,EAAiB,SAAA;;;cCxRjB,aAAA,EAAe,SAAA;;;cC2Df,WAAA,EAAa,SAAA;;;cCjEb,aAAA,EAAe,SAAA;;;cCJf,eAAA,EAAiB,SAAA;;;;cCiLjB,eAAA,EAAiB,SAAA;;;cC9JjB,eAAA,EAAiB,SAAA;;;AXrF9B;;;;AAAA,cYwDa,SAAA,EAAW,aAAA;;;;;iBAuJR,YAAA,CAAa,SAAA,EAAW,OAAA,CAAQ,aAAA,IAAiB,aAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/compat/schema.ts","../../src/compat/concepts.ts","../../src/compat/report.ts","../../src/compat/approvals.ts","../../src/compat/extractor-registry.ts","../../src/compat/overlay.ts","../../src/compat/extractors/node.ts","../../src/compat/extractors/php.ts","../../src/compat/extractors/python.ts","../../src/compat/extractors/ruby.ts","../../src/compat/extractors/go.ts","../../src/compat/extractors/rust.ts","../../src/compat/extractors/kotlin.ts","../../src/compat/extractors/dotnet.ts","../../src/compat/extractors/elixir.ts","../../src/compat/language-hints.ts"],"mappings":"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"}