@workos/oagen 0.7.0 → 0.9.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/dist/cli/index.mjs +1190 -512
- package/dist/cli/index.mjs.map +1 -1
- package/dist/compat/index.d.mts +144 -57
- package/dist/compat/index.d.mts.map +1 -1
- package/dist/compat/index.mjs +362 -41
- package/dist/compat/index.mjs.map +1 -1
- package/dist/{diff-BYadQQV7.mjs → diff-DZvzV9p3.mjs} +31 -22
- package/dist/{diff-BYadQQV7.mjs.map → diff-DZvzV9p3.mjs.map} +1 -1
- package/dist/differ-CTl98yoS.d.mts +116 -0
- package/dist/differ-CTl98yoS.d.mts.map +1 -0
- package/dist/index.d.mts +13 -4
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +50 -10
- package/dist/index.mjs.map +1 -1
- package/dist/{differ-CG5ZErKl.mjs → overlay-Bt6oz0dg.mjs} +1112 -553
- package/dist/overlay-Bt6oz0dg.mjs.map +1 -0
- package/dist/scripts/smoke/baseline.mjs +49 -9
- package/dist/scripts/smoke/baseline.mjs.map +1 -1
- package/dist/smoke.d.mts +10 -0
- package/dist/smoke.d.mts.map +1 -1
- package/dist/smoke.mjs +49 -9
- package/dist/smoke.mjs.map +1 -1
- package/dist/tree-sitter-C53w_0WE.mjs.map +1 -1
- package/dist/{types-DJMbCtIO.d.mts → types-mTtkgy_h.d.mts} +180 -2
- package/dist/types-mTtkgy_h.d.mts.map +1 -0
- package/dist/verify/index.d.mts +4 -3
- package/dist/verify/index.d.mts.map +1 -1
- package/dist/verify/index.mjs +56 -39
- package/dist/verify/index.mjs.map +1 -1
- package/docs/architecture/emitter-contract.md +2 -2
- package/docs/architecture/extractor-contract.md +6 -5
- package/docs/architecture/pipeline.md +4 -3
- package/docs/architecture/workflows.md +5 -3
- package/docs/cli.md +148 -6
- package/docs/contributor/public-api.md +1 -1
- package/docs/core/compatibility-ir.md +200 -0
- package/docs/core/compatibility-policy.md +170 -0
- package/docs/core/compatibility.md +83 -0
- package/docs/core/index.md +5 -0
- package/docs/core/manifest-schema.md +76 -0
- package/docs/core/quickstart.md +9 -2
- package/docs/core/verify-compat.md +235 -0
- package/package.json +1 -1
- package/skills/generate-emitter/SKILL.md +12 -7
- package/skills/generate-emitter/references/project-scaffold.md +27 -6
- package/skills/generate-extractor/SKILL.md +14 -8
- package/skills/generate-sdk/SKILL.md +2 -2
- package/skills/generate-smoke-test/SKILL.md +9 -5
- package/skills/review-operations/SKILL.md +2 -2
- package/skills/verify-compat/SKILL.md +1 -1
- package/dist/differ-CG5ZErKl.mjs.map +0 -1
- package/dist/types-DJMbCtIO.d.mts.map +0 -1
package/dist/compat/index.d.mts
CHANGED
|
@@ -1,5 +1,143 @@
|
|
|
1
|
-
import { $ as
|
|
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
|
|
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,
|
|
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/
|
|
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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"}
|