@shapeshift-labs/frontier-lang-compiler 0.2.65 → 0.2.67
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 +37 -8
- package/bench/smoke.mjs +15 -1
- package/bench/universal-fixture-suite.mjs +183 -0
- package/dist/declarations/import-adapter-core.d.ts +3 -0
- package/dist/declarations/native-project-admission.d.ts +133 -0
- package/dist/declarations/roundtrip-audit.d.ts +177 -0
- package/dist/declarations/roundtrip.d.ts +2 -53
- package/dist/declarations/semantic-history-records.d.ts +277 -0
- package/dist/declarations/semantic-history.d.ts +45 -92
- package/dist/declarations/semantic-merge-candidates.d.ts +200 -0
- package/dist/declarations/semantic-merge-conflicts.d.ts +12 -0
- package/dist/declarations/semantic-sidecar.d.ts +8 -3
- package/dist/declarations/semantic-slice-admission.d.ts +111 -0
- package/dist/declarations/semantic-slice.d.ts +36 -1
- package/dist/declarations/universal-conversion-plan.d.ts +59 -0
- package/dist/declarations/universal-runtime-capabilities.d.ts +171 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/internal/index-impl/attachExternalOwnership.js +18 -10
- package/dist/internal/index-impl/createNativeRoundtripEvidence.js +54 -49
- package/dist/internal/index-impl/createSemanticImportSidecar.js +6 -0
- package/dist/internal/index-impl/createSemanticSlice.js +4 -3
- package/dist/internal/index-impl/createSemanticSliceAdmissionRecord.js +10 -1
- package/dist/internal/index-impl/diffNativeSourceImports.js +3 -2
- package/dist/internal/index-impl/expandSemanticSliceSelection.js +0 -1
- package/dist/internal/index-impl/externalSemanticBase.js +1 -0
- package/dist/internal/index-impl/importExternalSemanticIndex.js +4 -0
- package/dist/internal/index-impl/nativeRoundtripAudit.js +217 -0
- package/dist/internal/index-impl/projectImportAdmissionImportEvidence.js +160 -0
- package/dist/internal/index-impl/projectImportAdmissionLanguageSummaries.js +247 -0
- package/dist/internal/index-impl/projectImportAdmissionRanks.js +52 -0
- package/dist/internal/index-impl/projectImportAdmissionSummaries.js +77 -117
- package/dist/internal/index-impl/projectImportAdmissionTasks.js +239 -0
- package/dist/internal/index-impl/semanticHistoryRecordNormalizers.js +151 -0
- package/dist/internal/index-impl/semanticHistoryRecordOverlaps.js +113 -0
- package/dist/internal/index-impl/semanticHistoryRecords.js +210 -149
- package/dist/internal/index-impl/semanticMergeCandidateRecordInternals.js +314 -0
- package/dist/internal/index-impl/semanticMergeCandidateRecords.js +241 -0
- package/dist/internal/index-impl/semanticSliceAdmissionSurface.js +142 -0
- package/dist/internal/index-impl/semanticSliceExpectationAssertions.js +100 -0
- package/dist/internal/index-impl/semanticSliceExpectationRecords.js +75 -0
- package/dist/internal/index-impl/semanticSliceExpectedAssertions.js +5 -2
- package/dist/internal/index-impl/testSemanticSlice.js +4 -1
- package/dist/internal/index-impl/withExternalEmptyLoss.js +1 -0
- package/dist/language-adapter-package-contracts.js +12 -57
- package/dist/language-adapter-package-rows.js +116 -0
- package/dist/lightweight-dependency-language.js +8 -0
- package/dist/native-region-scanner-core.js +42 -10
- package/dist/native-region-scanner-js-helpers.js +2 -0
- package/dist/native-region-scanner-js-imports.js +111 -0
- package/dist/native-region-scanner-js.js +111 -28
- package/dist/universal-conversion-plan-summary.js +42 -0
- package/dist/universal-conversion-plan.js +46 -40
- package/dist/universal-runtime-capabilities.js +92 -0
- package/dist/universal-runtime-host-selectors.js +192 -0
- package/dist/universal-runtime-profiles.js +109 -0
- package/dist/universal-runtime-route-records.js +162 -0
- package/examples/js-frontier-rust-workbench-adapters.mjs +89 -0
- package/examples/js-frontier-rust-workbench-bounds.mjs +4 -3
- package/examples/js-frontier-rust-workbench-client.mjs +135 -59
- package/examples/js-frontier-rust-workbench-convert.mjs +161 -0
- package/examples/js-frontier-rust-workbench-html.mjs +20 -13
- package/examples/js-frontier-rust-workbench-route-styles.mjs +126 -0
- package/examples/js-frontier-rust-workbench-route.mjs +190 -0
- package/examples/js-frontier-rust-workbench-styles.mjs +12 -54
- package/examples/js-frontier-rust-workbench.mjs +54 -214
- package/package.json +1 -1
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
EvidenceRecord,
|
|
3
|
+
FrontierSourceLanguage,
|
|
4
|
+
SemanticMergeCandidateRecord,
|
|
5
|
+
SemanticMergeReadiness,
|
|
6
|
+
SourceSpan
|
|
7
|
+
} from '@shapeshift-labs/frontier-lang-kernel';
|
|
8
|
+
import type { NativeSourceChangeKind, NativeSourceChangeSet } from './native-diff.js';
|
|
9
|
+
import type { SemanticMergeConflictSummary } from './semantic-merge-conflicts.js';
|
|
10
|
+
|
|
11
|
+
export type SemanticMergeCandidateProjectionRisk = 'low' | 'medium' | 'high' | 'unknown';
|
|
12
|
+
|
|
13
|
+
export interface SemanticMergeCandidateChangedRegion {
|
|
14
|
+
readonly id?: string;
|
|
15
|
+
readonly key?: string;
|
|
16
|
+
readonly conflictKey?: string;
|
|
17
|
+
readonly changeKind?: NativeSourceChangeKind | string;
|
|
18
|
+
readonly regionKind?: string;
|
|
19
|
+
readonly granularity?: string;
|
|
20
|
+
readonly precision?: string;
|
|
21
|
+
readonly projectionRisk?: SemanticMergeCandidateProjectionRisk;
|
|
22
|
+
readonly language?: FrontierSourceLanguage | string;
|
|
23
|
+
readonly sourcePath?: string;
|
|
24
|
+
readonly sourceHash?: string;
|
|
25
|
+
readonly baseHash?: string;
|
|
26
|
+
readonly targetHash?: string;
|
|
27
|
+
readonly symbolId?: string;
|
|
28
|
+
readonly symbolName?: string;
|
|
29
|
+
readonly symbolKind?: string;
|
|
30
|
+
readonly semanticNodeId?: string;
|
|
31
|
+
readonly nativeAstNodeId?: string;
|
|
32
|
+
readonly sourceSpan?: SourceSpan;
|
|
33
|
+
readonly sourceMapLinkIds?: readonly string[];
|
|
34
|
+
readonly sourceMapIds?: readonly string[];
|
|
35
|
+
readonly sourceMapMappingIds?: readonly string[];
|
|
36
|
+
readonly admission?: {
|
|
37
|
+
readonly readiness?: SemanticMergeReadiness | string;
|
|
38
|
+
readonly action?: string;
|
|
39
|
+
readonly reasonCodes?: readonly string[];
|
|
40
|
+
readonly conflictKeys?: readonly string[];
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface SemanticMergeCandidateOverlapRecord {
|
|
45
|
+
readonly schema: 'frontier.lang.semanticMergeCandidateOverlap.v1';
|
|
46
|
+
readonly id: string;
|
|
47
|
+
readonly overlapKind: 'conflict-key' | 'region-key' | 'source-span' | string;
|
|
48
|
+
readonly risk: 'medium' | 'high' | string;
|
|
49
|
+
readonly readiness: SemanticMergeReadiness | string;
|
|
50
|
+
readonly recordIds: readonly string[];
|
|
51
|
+
readonly candidateIds: readonly string[];
|
|
52
|
+
readonly regionIds: readonly string[];
|
|
53
|
+
readonly regionKeys: readonly string[];
|
|
54
|
+
readonly conflictKeys: readonly string[];
|
|
55
|
+
readonly sourcePath?: string;
|
|
56
|
+
readonly leftRegion: Partial<SemanticMergeCandidateChangedRegion>;
|
|
57
|
+
readonly rightRegion: Partial<SemanticMergeCandidateChangedRegion>;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface SemanticMergeCandidateAdmissionRecord {
|
|
61
|
+
readonly kind: 'frontier.lang.semanticMergeCandidateAdmissionRecord';
|
|
62
|
+
readonly version: 1;
|
|
63
|
+
readonly schema: 'frontier.lang.semanticMergeCandidateAdmissionRecord.v1';
|
|
64
|
+
readonly id: string;
|
|
65
|
+
readonly candidateId?: string;
|
|
66
|
+
readonly importResultId?: string;
|
|
67
|
+
readonly patchId?: string;
|
|
68
|
+
readonly language?: FrontierSourceLanguage | string;
|
|
69
|
+
readonly sourcePath?: string;
|
|
70
|
+
readonly readiness: SemanticMergeReadiness | string;
|
|
71
|
+
readonly readinessSortKey: number;
|
|
72
|
+
readonly projectionRisk: SemanticMergeCandidateProjectionRisk;
|
|
73
|
+
readonly sourceHashes: {
|
|
74
|
+
readonly baseHash?: string;
|
|
75
|
+
readonly targetHash?: string;
|
|
76
|
+
readonly values: readonly string[];
|
|
77
|
+
};
|
|
78
|
+
readonly baseHash?: string;
|
|
79
|
+
readonly targetHash?: string;
|
|
80
|
+
readonly changedSemanticRegions: readonly SemanticMergeCandidateChangedRegion[];
|
|
81
|
+
readonly conflictKeys: readonly string[];
|
|
82
|
+
readonly evidenceIds: readonly string[];
|
|
83
|
+
readonly proofIds: readonly string[];
|
|
84
|
+
readonly overlapSummary: {
|
|
85
|
+
readonly total: number;
|
|
86
|
+
readonly hasOverlaps: boolean;
|
|
87
|
+
readonly byKind: Readonly<Record<string, number>>;
|
|
88
|
+
readonly conflictKeys: readonly string[];
|
|
89
|
+
readonly pairs: readonly SemanticMergeCandidateOverlapRecord[];
|
|
90
|
+
};
|
|
91
|
+
readonly admission: {
|
|
92
|
+
readonly readiness: SemanticMergeReadiness | string;
|
|
93
|
+
readonly reviewRequired: boolean;
|
|
94
|
+
readonly action: 'admit' | 'prioritize-review' | 'block' | string;
|
|
95
|
+
readonly sortKey: number;
|
|
96
|
+
readonly reasonCodes: readonly string[];
|
|
97
|
+
readonly conflictKeys: readonly string[];
|
|
98
|
+
};
|
|
99
|
+
readonly index: {
|
|
100
|
+
readonly candidateIds: readonly string[];
|
|
101
|
+
readonly importResultIds: readonly string[];
|
|
102
|
+
readonly patchIds: readonly string[];
|
|
103
|
+
readonly sourcePaths: readonly string[];
|
|
104
|
+
readonly sourceHashes: readonly string[];
|
|
105
|
+
readonly baseHashes: readonly string[];
|
|
106
|
+
readonly targetHashes: readonly string[];
|
|
107
|
+
readonly regionIds: readonly string[];
|
|
108
|
+
readonly regionKeys: readonly string[];
|
|
109
|
+
readonly regionKinds: readonly string[];
|
|
110
|
+
readonly conflictKeys: readonly string[];
|
|
111
|
+
readonly evidenceIds: readonly string[];
|
|
112
|
+
readonly proofIds: readonly string[];
|
|
113
|
+
readonly readinesses: readonly string[];
|
|
114
|
+
readonly projectionRisks: readonly string[];
|
|
115
|
+
};
|
|
116
|
+
readonly summary: {
|
|
117
|
+
readonly changedSemanticRegions: number;
|
|
118
|
+
readonly conflictKeys: number;
|
|
119
|
+
readonly evidenceIds: number;
|
|
120
|
+
readonly proofIds: number;
|
|
121
|
+
readonly overlaps: number;
|
|
122
|
+
readonly readiness: SemanticMergeReadiness | string;
|
|
123
|
+
readonly projectionRisk: SemanticMergeCandidateProjectionRisk;
|
|
124
|
+
readonly reviewRequired: boolean;
|
|
125
|
+
};
|
|
126
|
+
readonly metadata?: Record<string, unknown> & {
|
|
127
|
+
readonly conflictSummary?: SemanticMergeConflictSummary;
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export type SemanticMergeCandidateAdmissionInput =
|
|
132
|
+
| NativeSourceChangeSet
|
|
133
|
+
| SemanticMergeCandidateRecord
|
|
134
|
+
| SemanticMergeCandidateAdmissionRecord
|
|
135
|
+
| Record<string, unknown>;
|
|
136
|
+
|
|
137
|
+
export interface CreateSemanticMergeCandidateAdmissionRecordOptions {
|
|
138
|
+
readonly id?: string;
|
|
139
|
+
readonly changeSet?: NativeSourceChangeSet;
|
|
140
|
+
readonly candidate?: SemanticMergeCandidateRecord | Record<string, unknown>;
|
|
141
|
+
readonly patch?: unknown;
|
|
142
|
+
readonly candidateId?: string;
|
|
143
|
+
readonly importResultId?: string;
|
|
144
|
+
readonly patchId?: string;
|
|
145
|
+
readonly language?: FrontierSourceLanguage | string;
|
|
146
|
+
readonly sourcePath?: string;
|
|
147
|
+
readonly sourceHash?: string;
|
|
148
|
+
readonly sourceHashes?: readonly string[] | string;
|
|
149
|
+
readonly baseHash?: string;
|
|
150
|
+
readonly targetHash?: string;
|
|
151
|
+
readonly readiness?: SemanticMergeReadiness | string;
|
|
152
|
+
readonly projectionRisk?: SemanticMergeCandidateProjectionRisk | string;
|
|
153
|
+
readonly changedRegions?: readonly unknown[] | unknown;
|
|
154
|
+
readonly conflictKeys?: readonly string[] | string;
|
|
155
|
+
readonly evidence?: readonly EvidenceRecord[] | EvidenceRecord;
|
|
156
|
+
readonly evidenceIds?: readonly string[] | string;
|
|
157
|
+
readonly proofIds?: readonly string[] | string;
|
|
158
|
+
readonly reasonCodes?: readonly string[] | string;
|
|
159
|
+
readonly metadata?: Record<string, unknown>;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export type SemanticMergeCandidateWithAdmission = SemanticMergeCandidateRecord & {
|
|
163
|
+
readonly changedSemanticRegions?: readonly SemanticMergeCandidateChangedRegion[];
|
|
164
|
+
readonly sourceHashes?: SemanticMergeCandidateAdmissionRecord['sourceHashes'];
|
|
165
|
+
readonly evidenceIds?: readonly string[];
|
|
166
|
+
readonly proofIds?: readonly string[];
|
|
167
|
+
readonly projectionRisk?: SemanticMergeCandidateProjectionRisk;
|
|
168
|
+
readonly readinessSortKey?: number;
|
|
169
|
+
readonly mergeAdmission?: SemanticMergeCandidateAdmissionRecord;
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
export interface SemanticMergeCandidateAdmissionOverlapQuery {
|
|
173
|
+
readonly id?: string | readonly string[];
|
|
174
|
+
readonly ids?: readonly string[];
|
|
175
|
+
readonly candidateId?: string | readonly string[];
|
|
176
|
+
readonly candidateIds?: readonly string[];
|
|
177
|
+
readonly recordId?: string | readonly string[];
|
|
178
|
+
readonly recordIds?: readonly string[];
|
|
179
|
+
readonly regionId?: string | readonly string[];
|
|
180
|
+
readonly regionIds?: readonly string[];
|
|
181
|
+
readonly regionKey?: string | readonly string[];
|
|
182
|
+
readonly regionKeys?: readonly string[];
|
|
183
|
+
readonly conflictKey?: string | readonly string[];
|
|
184
|
+
readonly conflictKeys?: readonly string[];
|
|
185
|
+
readonly sourcePath?: string | readonly string[];
|
|
186
|
+
readonly sourcePaths?: readonly string[];
|
|
187
|
+
readonly overlapKind?: string | readonly string[];
|
|
188
|
+
readonly overlapKinds?: readonly string[];
|
|
189
|
+
readonly readiness?: SemanticMergeReadiness | string | readonly string[];
|
|
190
|
+
readonly readinesses?: readonly string[];
|
|
191
|
+
readonly risk?: string | readonly string[];
|
|
192
|
+
readonly risks?: readonly string[];
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export declare const SemanticMergeCandidateProjectionRisks: readonly SemanticMergeCandidateProjectionRisk[];
|
|
196
|
+
export declare function createSemanticMergeCandidateAdmissionRecord(input?: SemanticMergeCandidateAdmissionInput, options?: CreateSemanticMergeCandidateAdmissionRecordOptions): SemanticMergeCandidateAdmissionRecord;
|
|
197
|
+
export declare function decorateSemanticMergeCandidateForAdmission<T extends SemanticMergeCandidateRecord | Record<string, unknown>>(input?: T, options?: CreateSemanticMergeCandidateAdmissionRecordOptions): T & SemanticMergeCandidateWithAdmission;
|
|
198
|
+
export declare function querySemanticMergeCandidateAdmissionOverlaps(records: SemanticMergeCandidateAdmissionInput | readonly SemanticMergeCandidateAdmissionInput[], query?: SemanticMergeCandidateAdmissionOverlapQuery): readonly SemanticMergeCandidateOverlapRecord[];
|
|
199
|
+
export declare function semanticMergeCandidateReadinessSortKey(candidateOrRecord: Partial<SemanticMergeCandidateAdmissionRecord> | Partial<SemanticMergeCandidateWithAdmission>): number;
|
|
200
|
+
export declare function sortSemanticMergeCandidateAdmissionRecords<T extends SemanticMergeCandidateAdmissionInput>(records: readonly T[], options?: { readonly desc?: boolean }): readonly SemanticMergeCandidateAdmissionRecord[];
|
|
@@ -3,6 +3,11 @@ import type {
|
|
|
3
3
|
SemanticMergeCandidateRecord,
|
|
4
4
|
SemanticMergeReadiness
|
|
5
5
|
} from '@shapeshift-labs/frontier-lang-kernel';
|
|
6
|
+
import type {
|
|
7
|
+
SemanticMergeCandidateAdmissionRecord,
|
|
8
|
+
SemanticMergeCandidateChangedRegion,
|
|
9
|
+
SemanticMergeCandidateProjectionRisk
|
|
10
|
+
} from './semantic-merge-candidates.js';
|
|
6
11
|
|
|
7
12
|
export type SemanticMergeConflictClass =
|
|
8
13
|
| 'same-symbol-edit'
|
|
@@ -45,6 +50,13 @@ export interface SemanticMergeConflictSummary {
|
|
|
45
50
|
}
|
|
46
51
|
|
|
47
52
|
export type SemanticMergeCandidateWithConflicts = SemanticMergeCandidateRecord & {
|
|
53
|
+
readonly changedSemanticRegions?: readonly SemanticMergeCandidateChangedRegion[];
|
|
54
|
+
readonly sourceHashes?: SemanticMergeCandidateAdmissionRecord['sourceHashes'];
|
|
55
|
+
readonly evidenceIds?: readonly string[];
|
|
56
|
+
readonly proofIds?: readonly string[];
|
|
57
|
+
readonly projectionRisk?: SemanticMergeCandidateProjectionRisk;
|
|
58
|
+
readonly readinessSortKey?: number;
|
|
59
|
+
readonly mergeAdmission?: SemanticMergeCandidateAdmissionRecord;
|
|
48
60
|
readonly conflictClasses?: readonly SemanticMergeConflictClassRecord[];
|
|
49
61
|
readonly conflictSummary?: SemanticMergeConflictSummary;
|
|
50
62
|
readonly metadata?: SemanticMergeCandidateRecord['metadata'] & {
|
|
@@ -25,6 +25,7 @@ import type {
|
|
|
25
25
|
UniversalAstLayerRecord
|
|
26
26
|
} from '@shapeshift-labs/frontier-lang-kernel';
|
|
27
27
|
import type { SemanticImportSidecarAdmission, SemanticImportSidecarQuality } from './semantic-sidecar-admission.js';
|
|
28
|
+
import type { SemanticMergeCandidateAdmissionRecord, SemanticMergeCandidateProjectionRisk } from './semantic-merge-candidates.js';
|
|
28
29
|
import type { SemanticMergeConflictClass, SemanticMergeConflictSummary } from './semantic-merge-conflicts.js';
|
|
29
30
|
import type { SemanticImportImpactSummary } from './semantic-impact.js';
|
|
30
31
|
import type { Diagnostic } from '@shapeshift-labs/frontier-lang-checker';
|
|
@@ -274,6 +275,12 @@ export interface SemanticImportSidecar {
|
|
|
274
275
|
readonly reasons: readonly string[];
|
|
275
276
|
readonly conflictClasses?: readonly SemanticMergeConflictClass[];
|
|
276
277
|
readonly conflictSummary?: SemanticMergeConflictSummary;
|
|
278
|
+
readonly changedSemanticRegions?: number;
|
|
279
|
+
readonly sourceHashes?: SemanticMergeCandidateAdmissionRecord['sourceHashes'];
|
|
280
|
+
readonly evidenceIds?: readonly string[];
|
|
281
|
+
readonly projectionRisk?: SemanticMergeCandidateProjectionRisk;
|
|
282
|
+
readonly readinessSortKey?: number;
|
|
283
|
+
readonly overlapSummary?: SemanticMergeCandidateAdmissionRecord['overlapSummary'];
|
|
277
284
|
readonly risk?: string;
|
|
278
285
|
readonly operationCount: number;
|
|
279
286
|
}[];
|
|
@@ -309,7 +316,5 @@ export interface SemanticImportSidecar {
|
|
|
309
316
|
readonly semanticImportExpected: boolean; readonly semanticImportExpectedSatisfied: boolean; readonly semanticImportExpectedMissingReasonCodes: readonly string[];
|
|
310
317
|
readonly readiness: SemanticMergeReadiness; readonly emptySemanticIndex: boolean;
|
|
311
318
|
};
|
|
312
|
-
readonly metadata?: Record<string, unknown>;
|
|
313
|
-
}
|
|
314
|
-
|
|
319
|
+
readonly metadata?: Record<string, unknown>; }
|
|
315
320
|
export interface SemanticImportSidecarOptions { readonly id?: string; readonly generatedAt?: number; readonly regionPrefix?: string; readonly targetPath?: string; readonly expected?: boolean; readonly semanticImportExpected?: boolean; readonly metadata?: Record<string, unknown>; }
|
|
@@ -36,6 +36,115 @@ export interface SemanticSliceAdmissionMergeScore {
|
|
|
36
36
|
readonly penalties: readonly string[];
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
export interface SemanticSliceAdmissionSpan {
|
|
40
|
+
readonly path?: string;
|
|
41
|
+
readonly sourceId?: string;
|
|
42
|
+
readonly sourceHash?: string;
|
|
43
|
+
readonly startLine?: number;
|
|
44
|
+
readonly startColumn?: number;
|
|
45
|
+
readonly endLine?: number;
|
|
46
|
+
readonly endColumn?: number;
|
|
47
|
+
readonly startOffset?: number;
|
|
48
|
+
readonly endOffset?: number;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface SemanticSliceAdmissionSelectedSymbol {
|
|
52
|
+
readonly id?: string;
|
|
53
|
+
readonly name?: string;
|
|
54
|
+
readonly displayName?: string;
|
|
55
|
+
readonly kind?: string;
|
|
56
|
+
readonly signature?: string;
|
|
57
|
+
readonly nativeAstNodeId?: string;
|
|
58
|
+
readonly sourcePath?: string;
|
|
59
|
+
readonly sourceSpan?: SemanticSliceAdmissionSpan;
|
|
60
|
+
readonly ownershipRegionId?: string;
|
|
61
|
+
readonly ownershipRegionKey?: string;
|
|
62
|
+
readonly ownershipRegionKind?: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface SemanticSliceAdmissionSelectedRegion {
|
|
66
|
+
readonly id?: string;
|
|
67
|
+
readonly key?: string;
|
|
68
|
+
readonly conflictKey?: string;
|
|
69
|
+
readonly kind?: string;
|
|
70
|
+
readonly granularity?: string;
|
|
71
|
+
readonly symbolId?: string;
|
|
72
|
+
readonly symbolName?: string;
|
|
73
|
+
readonly nativeAstNodeId?: string;
|
|
74
|
+
readonly sourcePath?: string;
|
|
75
|
+
readonly sourceSpan?: SemanticSliceAdmissionSpan;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface SemanticSliceAdmissionSelectedNativeNode {
|
|
79
|
+
readonly id?: string;
|
|
80
|
+
readonly kind?: string;
|
|
81
|
+
readonly languageKind?: string;
|
|
82
|
+
readonly sourcePath?: string;
|
|
83
|
+
readonly sourceSpan?: SemanticSliceAdmissionSpan;
|
|
84
|
+
readonly parentId?: string;
|
|
85
|
+
readonly childCount: number;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface SemanticSliceAdmissionSelectedRelation {
|
|
89
|
+
readonly id?: string;
|
|
90
|
+
readonly predicate?: string;
|
|
91
|
+
readonly kind?: string;
|
|
92
|
+
readonly sourceId?: string;
|
|
93
|
+
readonly targetId?: string;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface SemanticSliceAdmissionSelectedOccurrence {
|
|
97
|
+
readonly id?: string;
|
|
98
|
+
readonly symbolId?: string;
|
|
99
|
+
readonly nativeAstNodeId?: string;
|
|
100
|
+
readonly role?: string;
|
|
101
|
+
readonly sourcePath?: string;
|
|
102
|
+
readonly sourceSpan?: SemanticSliceAdmissionSpan;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export interface SemanticSliceAdmissionSelectedSourceMapLink {
|
|
106
|
+
readonly id?: string;
|
|
107
|
+
readonly sourceMapId?: string;
|
|
108
|
+
readonly sourcePath?: string;
|
|
109
|
+
readonly sourceHash?: string;
|
|
110
|
+
readonly targetPath?: string;
|
|
111
|
+
readonly targetHash?: string;
|
|
112
|
+
readonly semanticSymbolId?: string;
|
|
113
|
+
readonly semanticOccurrenceId?: string;
|
|
114
|
+
readonly semanticNodeId?: string;
|
|
115
|
+
readonly nativeAstNodeId?: string;
|
|
116
|
+
readonly ownershipRegionId?: string;
|
|
117
|
+
readonly ownershipRegionKey?: string;
|
|
118
|
+
readonly ownershipRegionKind?: string;
|
|
119
|
+
readonly precision?: string;
|
|
120
|
+
readonly sourceSpan?: SemanticSliceAdmissionSpan;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export interface SemanticSliceAdmissionSelectedSourceFile {
|
|
124
|
+
readonly path?: string;
|
|
125
|
+
readonly sourceHash?: string;
|
|
126
|
+
readonly spanCount: number;
|
|
127
|
+
readonly excerptCount: number;
|
|
128
|
+
readonly sourceTextAvailable: boolean;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export interface SemanticSliceAdmissionSelectedSurface {
|
|
132
|
+
readonly entryRefs: readonly string[];
|
|
133
|
+
readonly matchedEntryRefs: readonly string[];
|
|
134
|
+
readonly unresolvedEntryRefs: readonly string[];
|
|
135
|
+
readonly symbols: readonly SemanticSliceAdmissionSelectedSymbol[];
|
|
136
|
+
readonly ownershipRegions: readonly SemanticSliceAdmissionSelectedRegion[];
|
|
137
|
+
readonly nativeNodes: readonly SemanticSliceAdmissionSelectedNativeNode[];
|
|
138
|
+
readonly relations: readonly SemanticSliceAdmissionSelectedRelation[];
|
|
139
|
+
readonly occurrences: readonly SemanticSliceAdmissionSelectedOccurrence[];
|
|
140
|
+
readonly sourceMapLinks: readonly SemanticSliceAdmissionSelectedSourceMapLink[];
|
|
141
|
+
readonly sourceSpans: readonly SemanticSliceAdmissionSpan[];
|
|
142
|
+
readonly sourceFiles: readonly SemanticSliceAdmissionSelectedSourceFile[];
|
|
143
|
+
readonly sourceHashes: SemanticSlice['mergeAdmission']['sourceHashes'];
|
|
144
|
+
readonly conflictKeys: readonly string[];
|
|
145
|
+
readonly ownershipKeys: readonly string[];
|
|
146
|
+
}
|
|
147
|
+
|
|
39
148
|
export interface SemanticSliceAdmissionRecord {
|
|
40
149
|
readonly kind: 'frontier.lang.semanticSliceAdmission';
|
|
41
150
|
readonly version: 1;
|
|
@@ -66,6 +175,8 @@ export interface SemanticSliceAdmissionRecord {
|
|
|
66
175
|
readonly conflictKeys: readonly string[];
|
|
67
176
|
readonly ownershipKeys: readonly string[];
|
|
68
177
|
readonly sourceHashes: SemanticSlice['mergeAdmission']['sourceHashes'];
|
|
178
|
+
readonly selectedSurface: SemanticSliceAdmissionSelectedSurface;
|
|
179
|
+
readonly evidence: readonly EvidenceRecord[];
|
|
69
180
|
readonly testResult?: SemanticSliceTestResult;
|
|
70
181
|
readonly reasons: readonly string[];
|
|
71
182
|
readonly metadata: Record<string, unknown>;
|
|
@@ -63,6 +63,19 @@ export type SemanticSliceInput =
|
|
|
63
63
|
readonly source?: ImportNativeSourceOptions;
|
|
64
64
|
};
|
|
65
65
|
|
|
66
|
+
export interface SemanticSliceSourceHashExpectation {
|
|
67
|
+
readonly path?: string;
|
|
68
|
+
readonly sourcePath?: string;
|
|
69
|
+
readonly sourceHash?: string;
|
|
70
|
+
readonly hash?: string;
|
|
71
|
+
readonly expected?: string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export type SemanticSliceSourceHashExpectations =
|
|
75
|
+
| Readonly<Record<string, string>>
|
|
76
|
+
| ReadonlyMap<string, string>
|
|
77
|
+
| readonly (SemanticSliceSourceHashExpectation | readonly [string | undefined, string])[];
|
|
78
|
+
|
|
66
79
|
export interface CreateSemanticSliceOptions {
|
|
67
80
|
readonly id?: string;
|
|
68
81
|
readonly generatedAt?: number;
|
|
@@ -73,6 +86,14 @@ export interface CreateSemanticSliceOptions {
|
|
|
73
86
|
readonly symbol?: string;
|
|
74
87
|
readonly region?: string;
|
|
75
88
|
readonly nativeNodeId?: string;
|
|
89
|
+
readonly expectedSymbols?: readonly string[] | string;
|
|
90
|
+
readonly expectedSymbolRefs?: readonly string[] | string;
|
|
91
|
+
readonly expectedRegions?: readonly string[] | string;
|
|
92
|
+
readonly expectedRegionRefs?: readonly string[] | string;
|
|
93
|
+
readonly expectedSourceHashes?: SemanticSliceSourceHashExpectations;
|
|
94
|
+
readonly expectedSymbolCount?: number;
|
|
95
|
+
readonly expectedRegionCount?: number;
|
|
96
|
+
readonly expectedSourceFileCount?: number;
|
|
76
97
|
readonly entryRefs?: readonly string[] | string;
|
|
77
98
|
readonly semanticRefs?: readonly string[] | string;
|
|
78
99
|
readonly refs?: readonly string[] | string;
|
|
@@ -126,7 +147,12 @@ export interface SemanticSliceSourceFile {
|
|
|
126
147
|
|
|
127
148
|
export interface SemanticSliceExpectedAssertion {
|
|
128
149
|
readonly id: string;
|
|
129
|
-
readonly
|
|
150
|
+
readonly category?: 'symbol' | 'region' | 'sourceHash' | 'summaryCount' | string;
|
|
151
|
+
readonly ref?: string;
|
|
152
|
+
readonly path?: string;
|
|
153
|
+
readonly key?: string;
|
|
154
|
+
readonly expected: unknown;
|
|
155
|
+
readonly actual?: unknown;
|
|
130
156
|
}
|
|
131
157
|
|
|
132
158
|
export interface SemanticSlice {
|
|
@@ -195,6 +221,14 @@ export interface TestSemanticSliceOptions {
|
|
|
195
221
|
readonly generatedAt?: number;
|
|
196
222
|
readonly requireSourceMapLinks?: boolean;
|
|
197
223
|
readonly currentSources?: Readonly<Record<string, string>> | ReadonlyMap<string, string>;
|
|
224
|
+
readonly expectedSymbols?: readonly string[] | string;
|
|
225
|
+
readonly expectedSymbolRefs?: readonly string[] | string;
|
|
226
|
+
readonly expectedRegions?: readonly string[] | string;
|
|
227
|
+
readonly expectedRegionRefs?: readonly string[] | string;
|
|
228
|
+
readonly expectedSourceHashes?: SemanticSliceSourceHashExpectations;
|
|
229
|
+
readonly expectedSymbolCount?: number;
|
|
230
|
+
readonly expectedRegionCount?: number;
|
|
231
|
+
readonly expectedSourceFileCount?: number;
|
|
198
232
|
readonly metadata?: Record<string, unknown>;
|
|
199
233
|
}
|
|
200
234
|
|
|
@@ -220,6 +254,7 @@ export interface SemanticSliceTestResult {
|
|
|
220
254
|
readonly warnings: number;
|
|
221
255
|
readonly failed: number;
|
|
222
256
|
readonly sourceHashChecks: number;
|
|
257
|
+
readonly expectedAssertions: number;
|
|
223
258
|
readonly symbols: number;
|
|
224
259
|
readonly ownershipRegions: number;
|
|
225
260
|
readonly sourceMapLinks: number;
|
|
@@ -9,6 +9,13 @@ import type { NativeParserFeatureCategory } from './native-parser-features.js';
|
|
|
9
9
|
import type { ProjectionSourceProjectionCoverage, ProjectionTargetCoverageEntry } from './projection-coverage.js';
|
|
10
10
|
import type { ProjectionReadinessTargetCell } from './projection-readiness.js';
|
|
11
11
|
import type { UniversalCapabilityMatrix, UniversalCapabilityMatrixOptions } from './universal-capability.js';
|
|
12
|
+
import type {
|
|
13
|
+
UniversalRuntimeAdapterRequirement,
|
|
14
|
+
UniversalRuntimeCapabilityKind,
|
|
15
|
+
UniversalRuntimeCapabilityMatrix,
|
|
16
|
+
UniversalRuntimeCapabilityRoute,
|
|
17
|
+
UniversalRuntimeHostProfile
|
|
18
|
+
} from './universal-runtime-capabilities.js';
|
|
12
19
|
|
|
13
20
|
export type UniversalConversionRouteMode =
|
|
14
21
|
| 'preserve-source'
|
|
@@ -76,6 +83,19 @@ export interface UniversalConversionRouteEvidence {
|
|
|
76
83
|
readonly targetLossKinds: readonly NativeImportKnownLossKind[];
|
|
77
84
|
}
|
|
78
85
|
|
|
86
|
+
export interface UniversalConversionRouteRuntime {
|
|
87
|
+
readonly routeId?: string;
|
|
88
|
+
readonly source?: UniversalRuntimeCapabilityRoute['source'];
|
|
89
|
+
readonly target?: UniversalRuntimeCapabilityRoute['target'];
|
|
90
|
+
readonly requiredCapabilities: readonly UniversalRuntimeCapabilityKind[];
|
|
91
|
+
readonly satisfiedCapabilities: readonly UniversalRuntimeCapabilityKind[];
|
|
92
|
+
readonly adapterRequirements: readonly UniversalRuntimeAdapterRequirement[];
|
|
93
|
+
readonly missingCapabilities: readonly UniversalRuntimeCapabilityKind[];
|
|
94
|
+
readonly readiness: SemanticMergeReadiness;
|
|
95
|
+
readonly blockers: readonly string[];
|
|
96
|
+
readonly review: readonly string[];
|
|
97
|
+
}
|
|
98
|
+
|
|
79
99
|
export interface UniversalConversionRouteMergeRefs {
|
|
80
100
|
readonly planId: string;
|
|
81
101
|
readonly routeId: string;
|
|
@@ -122,6 +142,8 @@ export interface UniversalConversionRoute {
|
|
|
122
142
|
readonly stubs: ProjectionSourceProjectionCoverage;
|
|
123
143
|
};
|
|
124
144
|
readonly projectionReadiness?: ProjectionReadinessTargetCell;
|
|
145
|
+
readonly runtime: UniversalConversionRouteRuntime;
|
|
146
|
+
readonly runtimeAdapterRequirements: readonly UniversalRuntimeAdapterRequirement[];
|
|
125
147
|
readonly evidence: UniversalConversionRouteEvidence;
|
|
126
148
|
readonly missingEvidence: readonly string[];
|
|
127
149
|
readonly blockers: readonly string[];
|
|
@@ -153,6 +175,8 @@ export interface UniversalConversionPlan {
|
|
|
153
175
|
readonly stubOnlyRoutes: number;
|
|
154
176
|
readonly semanticIndexOnlyRoutes: number;
|
|
155
177
|
readonly missingEvidence: number;
|
|
178
|
+
readonly runtimeAdapterRequirements: number;
|
|
179
|
+
readonly runtimeRoutesWithAdapters: number;
|
|
156
180
|
readonly blockers: number;
|
|
157
181
|
readonly reviewReasons: number;
|
|
158
182
|
readonly autoMergeClaims: 0;
|
|
@@ -160,6 +184,7 @@ export interface UniversalConversionPlan {
|
|
|
160
184
|
};
|
|
161
185
|
readonly matrices: {
|
|
162
186
|
readonly universalCapability: UniversalCapabilityMatrix;
|
|
187
|
+
readonly runtimeCapabilities: UniversalRuntimeCapabilityMatrix;
|
|
163
188
|
readonly projectionReadiness?: UniversalCapabilityMatrix['matrices']['projectionReadiness'];
|
|
164
189
|
readonly projectionTargets?: UniversalCapabilityMatrix['matrices']['projectionTargets'];
|
|
165
190
|
};
|
|
@@ -175,6 +200,40 @@ export interface UniversalConversionPlan {
|
|
|
175
200
|
export interface UniversalConversionPlanOptions extends UniversalCapabilityMatrixOptions {
|
|
176
201
|
readonly id?: string;
|
|
177
202
|
readonly universalCapabilityMatrix?: UniversalCapabilityMatrix;
|
|
203
|
+
readonly universalRuntimeCapabilityMatrix?: UniversalRuntimeCapabilityMatrix;
|
|
204
|
+
readonly hostProfiles?: readonly UniversalRuntimeHostProfile[];
|
|
205
|
+
readonly runtimeHosts?: readonly UniversalRuntimeHostProfile[];
|
|
206
|
+
readonly sourceHosts?: readonly (string | UniversalRuntimeHostProfile)[] | Readonly<Record<string, string | UniversalRuntimeHostProfile>>;
|
|
207
|
+
readonly sourceRuntimeHosts?: readonly (string | UniversalRuntimeHostProfile)[] | Readonly<Record<string, string | UniversalRuntimeHostProfile>>;
|
|
208
|
+
readonly targetHosts?: readonly (string | UniversalRuntimeHostProfile)[] | Readonly<Record<string, string | UniversalRuntimeHostProfile>>;
|
|
209
|
+
readonly targetRuntimeHosts?: readonly (string | UniversalRuntimeHostProfile)[] | Readonly<Record<string, string | UniversalRuntimeHostProfile>>;
|
|
210
|
+
readonly sourceRuntime?: string;
|
|
211
|
+
readonly targetRuntime?: string;
|
|
212
|
+
readonly sourceRuntimes?: Readonly<Record<string, string>>;
|
|
213
|
+
readonly targetRuntimes?: Readonly<Record<string, string>>;
|
|
214
|
+
readonly runtimeRequirements?: readonly (
|
|
215
|
+
| UniversalRuntimeCapabilityKind
|
|
216
|
+
| {
|
|
217
|
+
readonly capability?: UniversalRuntimeCapabilityKind;
|
|
218
|
+
readonly kind?: UniversalRuntimeCapabilityKind;
|
|
219
|
+
readonly capabilities?: readonly UniversalRuntimeCapabilityKind[];
|
|
220
|
+
readonly requiredCapabilities?: readonly UniversalRuntimeCapabilityKind[];
|
|
221
|
+
readonly sourceLanguage?: FrontierSourceLanguage | string;
|
|
222
|
+
readonly language?: FrontierSourceLanguage | string;
|
|
223
|
+
readonly sourceRuntime?: string;
|
|
224
|
+
readonly runtime?: string;
|
|
225
|
+
readonly sourceHost?: string | UniversalRuntimeHostProfile;
|
|
226
|
+
readonly sourceRuntimeHost?: string | UniversalRuntimeHostProfile;
|
|
227
|
+
readonly target?: FrontierCompileTarget | string;
|
|
228
|
+
readonly targetRuntime?: string;
|
|
229
|
+
readonly targetHost?: string | UniversalRuntimeHostProfile;
|
|
230
|
+
readonly targetRuntimeHost?: string | UniversalRuntimeHostProfile;
|
|
231
|
+
readonly reason?: string;
|
|
232
|
+
readonly evidenceIds?: readonly string[];
|
|
233
|
+
}
|
|
234
|
+
)[];
|
|
235
|
+
readonly requiredRuntimeCapabilities?: UniversalConversionPlanOptions['runtimeRequirements'];
|
|
236
|
+
readonly effects?: UniversalConversionPlanOptions['runtimeRequirements'];
|
|
178
237
|
readonly evidence?: readonly EvidenceRecord[];
|
|
179
238
|
}
|
|
180
239
|
|