@shapeshift-labs/frontier-lang-compiler 0.2.100 → 0.2.101

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 (43) hide show
  1. package/dist/declarations/bidirectional-target-change-evidence.d.ts +299 -0
  2. package/dist/declarations/bidirectional-target-change.d.ts +19 -120
  3. package/dist/declarations/native-project-admission.d.ts +43 -22
  4. package/dist/declarations/semantic-edit-replay-diagnostics.d.ts +24 -0
  5. package/dist/declarations/semantic-edit-script.d.ts +20 -15
  6. package/dist/declarations/semantic-lineage.d.ts +3 -21
  7. package/dist/declarations/semantic-merge-candidates.d.ts +39 -0
  8. package/dist/declarations/semantic-sidecar-admission.d.ts +14 -0
  9. package/dist/declarations/semantic-sidecar.d.ts +12 -14
  10. package/dist/internal/index-impl/bidirectionalTargetRoundtripEvidence.js +200 -0
  11. package/dist/internal/index-impl/createBidirectionalTargetChangeRecord.js +62 -17
  12. package/dist/internal/index-impl/createNativeSourcePreservation.js +16 -1
  13. package/dist/internal/index-impl/createProjectImportAdmissionRecord.js +151 -1
  14. package/dist/internal/index-impl/createSemanticImportSidecar.js +5 -0
  15. package/dist/internal/index-impl/createSemanticImportSidecarAdmission.js +29 -11
  16. package/dist/internal/index-impl/nativeChangeProjectionEndpoint.js +56 -16
  17. package/dist/internal/index-impl/projectImportAdmissionMergeScore.js +26 -74
  18. package/dist/internal/index-impl/projectImportAdmissionProjectionCoverage.js +74 -0
  19. package/dist/internal/index-impl/projectSemanticEditScriptToSource.js +39 -13
  20. package/dist/internal/index-impl/replaySemanticEditProjection.js +65 -23
  21. package/dist/internal/index-impl/semanticEditInsertionAnchors.js +8 -5
  22. package/dist/internal/index-impl/semanticEditReplayDiagnostics.js +167 -0
  23. package/dist/internal/index-impl/semanticEditSourceRanges.js +94 -15
  24. package/dist/internal/index-impl/semanticHistoryLineageResolution.js +21 -2
  25. package/dist/internal/index-impl/semanticLineageHashEvidence.js +97 -0
  26. package/dist/internal/index-impl/semanticLineageInferenceMatching.js +8 -0
  27. package/dist/internal/index-impl/semanticLineageResolutionRecords.js +18 -1
  28. package/dist/internal/index-impl/semanticMergeCandidateRecords.js +22 -2
  29. package/dist/internal/index-impl/semanticMergeCandidateScoreFacets.js +221 -0
  30. package/dist/internal/index-impl/semanticPatchBundleOverlaps.js +23 -1
  31. package/dist/internal/index-impl/sourcePreservationFromProjectionContext.js +9 -2
  32. package/dist/native-import-language-profiles.js +10 -2
  33. package/dist/native-region-scanner-js-helpers.js +8 -2
  34. package/dist/native-region-scanner-js-imports.js +7 -0
  35. package/dist/native-region-scanner-js.js +4 -4
  36. package/dist/native-region-scanner.js +2 -1
  37. package/dist/semantic-import-regions.js +6 -4
  38. package/dist/semantic-import-sidecar-admission-types.d.ts +14 -0
  39. package/dist/semantic-import-sidecar-entry.js +151 -7
  40. package/dist/semantic-import-sidecar-types.d.ts +18 -13
  41. package/dist/semantic-import-source-preservation-utils.js +55 -0
  42. package/dist/semantic-import-source-preservation.js +98 -3
  43. package/package.json +1 -1
@@ -0,0 +1,299 @@
1
+ import type {
2
+ FrontierSourceLanguage,
3
+ SemanticMergeReadiness,
4
+ SourceMapMappingRecord,
5
+ SourceSpan
6
+ } from '@shapeshift-labs/frontier-lang-kernel';
7
+ import type { NativeSourceChangeRegion } from './native-diff.js';
8
+ import type { SemanticLineageResolution } from './semantic-lineage.js';
9
+
10
+ export type BidirectionalTargetChangeAnchorStatus = 'matched' | 'unmatched' | 'ambiguous' | 'deleted' | string;
11
+ export type BidirectionalTargetPortabilityStatus = 'portable' | 'needs-port' | 'stale' | 'conflict' | 'blocked' | 'evidence-only' | string;
12
+ export type BidirectionalTargetPortabilityAction =
13
+ | 'port-with-source-map-review'
14
+ | 'human-port'
15
+ | 'refresh-source-map'
16
+ | 'resolve-anchor-conflict'
17
+ | 'block'
18
+ | 'record-evidence'
19
+ | string;
20
+
21
+ export interface BidirectionalTargetChangeSourceAnchorMapping {
22
+ readonly targetAnchorKey?: string;
23
+ readonly targetRegionKey?: string;
24
+ readonly targetConflictKey?: string;
25
+ readonly targetKey?: string;
26
+ readonly targetSymbolName?: string;
27
+ readonly targetSymbolId?: string;
28
+ readonly sourceAnchorKey?: string;
29
+ readonly sourceRegionKey?: string;
30
+ readonly sourceConflictKey?: string;
31
+ readonly sourceKey?: string;
32
+ readonly sourceSymbolName?: string;
33
+ readonly sourceSymbolId?: string;
34
+ }
35
+
36
+ export interface BidirectionalTargetChangeSourceMapLink {
37
+ readonly id: string;
38
+ readonly sourceMapId?: string;
39
+ readonly sourceMapMappingId?: string;
40
+ readonly sourcePath?: string;
41
+ readonly sourceHash?: string;
42
+ readonly targetPath?: string;
43
+ readonly targetHash?: string;
44
+ readonly semanticSymbolId?: string;
45
+ readonly semanticOccurrenceId?: string;
46
+ readonly semanticNodeId?: string;
47
+ readonly nativeSourceId?: string;
48
+ readonly nativeAstNodeId?: string;
49
+ readonly precision?: string;
50
+ readonly sourceSpan?: SourceSpan;
51
+ readonly generatedSpan?: SourceMapMappingRecord['generatedSpan'];
52
+ readonly regionKey?: string;
53
+ readonly regionKind?: string;
54
+ }
55
+
56
+ export interface BidirectionalTargetChangeAnchor {
57
+ readonly id?: string;
58
+ readonly key?: string;
59
+ readonly kind?: string;
60
+ readonly language?: FrontierSourceLanguage | string;
61
+ readonly sourcePath?: string;
62
+ readonly sourceHash?: string;
63
+ readonly symbolId?: string;
64
+ readonly symbolName?: string;
65
+ readonly sourceSpan?: SourceSpan;
66
+ readonly metadata?: Record<string, unknown>;
67
+ }
68
+
69
+ export interface BidirectionalTargetMatchPortability {
70
+ readonly status: BidirectionalTargetPortabilityStatus;
71
+ readonly action: BidirectionalTargetPortabilityAction;
72
+ readonly readiness: SemanticMergeReadiness | string;
73
+ readonly confidence?: number;
74
+ readonly reviewRequired: true;
75
+ readonly autoMergeClaim: false;
76
+ readonly semanticEquivalenceClaim: false;
77
+ readonly reasonCodes: readonly string[];
78
+ readonly sourceMapLinkIds: readonly string[];
79
+ readonly sourceMapMappingIds: readonly string[];
80
+ readonly staleSourceMapLinkIds: readonly string[];
81
+ }
82
+
83
+ export interface BidirectionalTargetChangeSourceAnchorMatch {
84
+ readonly kind: 'frontier.lang.bidirectionalTargetChangeSourceAnchorMatch';
85
+ readonly version: 1;
86
+ readonly id: string;
87
+ readonly targetRegion: Partial<NativeSourceChangeRegion>;
88
+ readonly sourceAnchors: readonly BidirectionalTargetChangeAnchor[];
89
+ readonly lineageResolutions: readonly SemanticLineageResolution[];
90
+ readonly sourceMapLinks: readonly BidirectionalTargetChangeSourceMapLink[];
91
+ readonly portability?: BidirectionalTargetMatchPortability;
92
+ readonly status: BidirectionalTargetChangeAnchorStatus;
93
+ readonly confidence?: number;
94
+ readonly reasonCodes: readonly string[];
95
+ readonly reviewRequired: true;
96
+ readonly autoMergeClaim: false;
97
+ readonly semanticEquivalenceClaim: false;
98
+ readonly conflictKeys: readonly string[];
99
+ }
100
+
101
+ export interface BidirectionalTargetPortabilityRecord {
102
+ readonly kind: 'frontier.lang.bidirectionalTargetPortability';
103
+ readonly version: 1;
104
+ readonly id?: string;
105
+ readonly status: BidirectionalTargetPortabilityStatus;
106
+ readonly action: BidirectionalTargetPortabilityAction;
107
+ readonly readiness: SemanticMergeReadiness | string;
108
+ readonly confidence?: number;
109
+ readonly reviewRequired: true;
110
+ readonly autoMergeClaim: false;
111
+ readonly semanticEquivalenceClaim: false;
112
+ readonly reasonCodes: readonly string[];
113
+ readonly conflictKeys: readonly string[];
114
+ readonly sourceAnchorMatchIds: readonly string[];
115
+ readonly sourceMapLinkIds: readonly string[];
116
+ readonly sourceMapMappingIds: readonly string[];
117
+ readonly staleSourceMapLinkIds: readonly string[];
118
+ readonly targetChangedRegions: number;
119
+ readonly matchedTargetRegions: number;
120
+ readonly sourceMapBackedRegions: number;
121
+ readonly unmatchedTargetRegions: number;
122
+ readonly ambiguousTargetRegions: number;
123
+ readonly deletedSourceAnchors: number;
124
+ }
125
+
126
+ export interface BidirectionalTargetChangeEndpointIdentity {
127
+ readonly schema: 'frontier.lang.nativeChangeProjectionEndpointIdentity.v1';
128
+ readonly version: 1;
129
+ readonly side?: 'before' | 'after' | string;
130
+ readonly importId?: string;
131
+ readonly nativeSourceId?: string;
132
+ readonly nativeAstId?: string;
133
+ readonly semanticIndexId?: string;
134
+ readonly universalAstId?: string;
135
+ readonly sourcePath?: string;
136
+ readonly sourceHash?: string;
137
+ readonly sourcePreservationId?: string;
138
+ readonly exactSourceAvailable?: boolean;
139
+ readonly ownershipRegionId?: string;
140
+ readonly ownershipKey?: string;
141
+ readonly ownershipRegionKind?: string;
142
+ readonly sourceSpan?: SourceSpan;
143
+ readonly sourceMapIds?: readonly string[];
144
+ readonly sourceMapMappingIds?: readonly string[];
145
+ }
146
+
147
+ export interface BidirectionalTargetChangeSourceIdentity {
148
+ readonly importId?: string;
149
+ readonly language?: FrontierSourceLanguage | string;
150
+ readonly sourcePath?: string;
151
+ readonly sourceHash?: string;
152
+ readonly nativeSourceId?: string;
153
+ readonly nativeAstId?: string;
154
+ readonly semanticIndexId?: string;
155
+ readonly universalAstId?: string;
156
+ readonly sourceMapIds?: readonly string[];
157
+ }
158
+
159
+ export interface BidirectionalTargetChangeTargetIdentity {
160
+ readonly changeSetId: string;
161
+ readonly language?: FrontierSourceLanguage | string;
162
+ readonly sourcePath?: string;
163
+ readonly beforeHash?: string;
164
+ readonly afterHash?: string;
165
+ readonly beforeImportId?: string;
166
+ readonly afterImportId?: string;
167
+ readonly beforeNativeSourceId?: string;
168
+ readonly afterNativeSourceId?: string;
169
+ readonly beforeNativeAstId?: string;
170
+ readonly afterNativeAstId?: string;
171
+ readonly beforeSemanticIndexId?: string;
172
+ readonly afterSemanticIndexId?: string;
173
+ readonly patchId?: string;
174
+ readonly mergeCandidateId?: string;
175
+ readonly sourceMapIds?: readonly string[];
176
+ }
177
+
178
+ export interface BidirectionalTargetChangeTargetRegionEvidence {
179
+ readonly id?: string;
180
+ readonly key?: string;
181
+ readonly conflictKey?: string;
182
+ readonly changeKind?: string;
183
+ readonly regionKind?: string;
184
+ readonly language?: FrontierSourceLanguage | string;
185
+ readonly sourcePath?: string;
186
+ readonly sourceHash?: string;
187
+ readonly symbolId?: string;
188
+ readonly symbolName?: string;
189
+ readonly sourceSpan?: SourceSpan;
190
+ readonly changedRegionProjectionId?: string;
191
+ readonly beforeIdentity?: BidirectionalTargetChangeEndpointIdentity;
192
+ readonly afterIdentity?: BidirectionalTargetChangeEndpointIdentity;
193
+ readonly sourceMapLinkIds?: readonly string[];
194
+ readonly sourceMapIds?: readonly string[];
195
+ readonly sourceMapMappingIds?: readonly string[];
196
+ }
197
+
198
+ export interface BidirectionalTargetChangeMatchEvidence {
199
+ readonly id?: string;
200
+ readonly status?: BidirectionalTargetChangeAnchorStatus;
201
+ readonly targetRegionKey?: string;
202
+ readonly targetRegionConflictKey?: string;
203
+ readonly sourceAnchorKeys?: readonly string[];
204
+ readonly sourceMapLinkIds?: readonly string[];
205
+ readonly sourceMapMappingIds?: readonly string[];
206
+ readonly lineageResolutionIds?: readonly string[];
207
+ readonly portabilityStatus?: BidirectionalTargetPortabilityStatus;
208
+ readonly portabilityAction?: BidirectionalTargetPortabilityAction;
209
+ readonly reasonCodes?: readonly string[];
210
+ readonly conflictKeys?: readonly string[];
211
+ }
212
+
213
+ export interface BidirectionalTargetChangeSourceMapEvidence {
214
+ readonly sourceMapBackedMatches: number;
215
+ readonly sourceMapLinks: number;
216
+ readonly sourceMapIds: readonly string[];
217
+ readonly sourceMapMappingIds: readonly string[];
218
+ readonly sourceMapLinkIds: readonly string[];
219
+ readonly staleSourceMapLinkIds: readonly string[];
220
+ readonly targetProjectionSourceMapLinks: number;
221
+ readonly targetProjectionSourceMapLinkIds: readonly string[];
222
+ readonly targetProjectionSourceMapIds: readonly string[];
223
+ readonly targetProjectionSourceMapMappingIds: readonly string[];
224
+ }
225
+
226
+ export interface BidirectionalTargetChangeLineageEvidence {
227
+ readonly lineageResolutionIds: readonly string[];
228
+ readonly lineageEventIds: readonly string[];
229
+ readonly lineageEvidenceIds: readonly string[];
230
+ readonly lineageProofIds: readonly string[];
231
+ readonly lineageReasonCodes: readonly string[];
232
+ }
233
+
234
+ export interface BidirectionalTargetChangeSemanticMergeAdmissionEvidence {
235
+ readonly schema: 'frontier.lang.bidirectionalTargetChangeSemanticMergeAdmission.v1';
236
+ readonly version: 1;
237
+ readonly id: string;
238
+ readonly evidenceIds: readonly string[];
239
+ readonly sourcePatchBundleId: string;
240
+ readonly historyRecordId: string;
241
+ readonly targetChangeSetId: string;
242
+ readonly targetPatchId?: string;
243
+ readonly targetMergeCandidateId?: string;
244
+ readonly readiness: SemanticMergeReadiness | string;
245
+ readonly status: 'needs-review' | 'blocked' | string;
246
+ readonly action: BidirectionalTargetPortabilityAction;
247
+ readonly reasonCodes: readonly string[];
248
+ readonly conflictKeys: readonly string[];
249
+ readonly sourceAnchorMatchIds: readonly string[];
250
+ readonly sourceAnchorKeys: readonly string[];
251
+ readonly targetRegionKeys: readonly string[];
252
+ readonly sourceMapLinkIds: readonly string[];
253
+ readonly sourceMapIds: readonly string[];
254
+ readonly sourceMapMappingIds: readonly string[];
255
+ readonly staleSourceMapLinkIds: readonly string[];
256
+ readonly targetProjectionSourceMapLinkIds: readonly string[];
257
+ readonly targetProjectionSourceMapMappingIds: readonly string[];
258
+ readonly lineageResolutionIds: readonly string[];
259
+ readonly reviewRequired: true;
260
+ readonly autoMergeClaim: false;
261
+ readonly semanticEquivalenceClaim: false;
262
+ }
263
+
264
+ export interface BidirectionalTargetChangeRoundtripEvidence {
265
+ readonly schema: 'frontier.lang.bidirectionalTargetChangeRoundtripEvidence.v1';
266
+ readonly version: 1;
267
+ readonly id: string;
268
+ readonly evidenceId: string;
269
+ readonly sourcePatchBundleId: string;
270
+ readonly historyRecordId: string;
271
+ readonly source: BidirectionalTargetChangeSourceIdentity;
272
+ readonly target: BidirectionalTargetChangeTargetIdentity;
273
+ readonly targetRegions: readonly BidirectionalTargetChangeTargetRegionEvidence[];
274
+ readonly sourceAnchorMatches: readonly BidirectionalTargetChangeMatchEvidence[];
275
+ readonly sourceAnchors: readonly BidirectionalTargetChangeAnchor[];
276
+ readonly sourceMapEvidence: BidirectionalTargetChangeSourceMapEvidence;
277
+ readonly lineageEvidence: BidirectionalTargetChangeLineageEvidence;
278
+ readonly targetPortability: {
279
+ readonly status: BidirectionalTargetPortabilityStatus;
280
+ readonly action: BidirectionalTargetPortabilityAction;
281
+ readonly readiness: SemanticMergeReadiness | string;
282
+ readonly reasonCodes: readonly string[];
283
+ readonly conflictKeys: readonly string[];
284
+ };
285
+ readonly admission: {
286
+ readonly status: 'needs-review' | 'blocked' | string;
287
+ readonly readiness: SemanticMergeReadiness | string;
288
+ readonly action: BidirectionalTargetPortabilityAction;
289
+ readonly reasonCodes: readonly string[];
290
+ readonly conflictKeys: readonly string[];
291
+ readonly evidenceIds: readonly string[];
292
+ readonly reviewRequired: true;
293
+ readonly autoMergeClaim: false;
294
+ readonly semanticEquivalenceClaim: false;
295
+ };
296
+ readonly reviewRequired: true;
297
+ readonly autoMergeClaim: false;
298
+ readonly semanticEquivalenceClaim: false;
299
+ }
@@ -2,131 +2,23 @@ import type {
2
2
  EvidenceRecord,
3
3
  FrontierSourceLanguage,
4
4
  SemanticMergeReadiness,
5
- SourceMapMappingRecord,
6
- SourceMapRecord,
7
- SourceSpan
5
+ SourceMapRecord
8
6
  } from '@shapeshift-labs/frontier-lang-kernel';
9
7
  import type { ImportNativeSourceOptions, NativeSourceImportResult } from './import-adapter-core.js';
10
- import type { NativeSourceChangeRegion, NativeSourceChangeSet } from './native-diff.js';
8
+ import type { NativeSourceChangeSet } from './native-diff.js';
11
9
  import type { SemanticHistoryRecord } from './semantic-history.js';
12
- import type { SemanticLineageEvent, SemanticLineageResolution } from './semantic-lineage.js';
10
+ import type { SemanticLineageEvent } from './semantic-lineage.js';
13
11
  import type { SemanticPatchBundleRecord } from './semantic-patch-bundle.js';
12
+ import type {
13
+ BidirectionalTargetChangeRoundtripEvidence,
14
+ BidirectionalTargetChangeSemanticMergeAdmissionEvidence,
15
+ BidirectionalTargetChangeSourceAnchorMapping,
16
+ BidirectionalTargetChangeSourceAnchorMatch,
17
+ BidirectionalTargetPortabilityRecord,
18
+ BidirectionalTargetPortabilityStatus
19
+ } from './bidirectional-target-change-evidence.js';
14
20
 
15
- export type BidirectionalTargetChangeAnchorStatus = 'matched' | 'unmatched' | 'ambiguous' | 'deleted' | string;
16
- export type BidirectionalTargetPortabilityStatus = 'portable' | 'needs-port' | 'stale' | 'conflict' | 'blocked' | 'evidence-only' | string;
17
- export type BidirectionalTargetPortabilityAction =
18
- | 'port-with-source-map-review'
19
- | 'human-port'
20
- | 'refresh-source-map'
21
- | 'resolve-anchor-conflict'
22
- | 'block'
23
- | 'record-evidence'
24
- | string;
25
-
26
- export interface BidirectionalTargetChangeSourceAnchorMapping {
27
- readonly targetAnchorKey?: string;
28
- readonly targetRegionKey?: string;
29
- readonly targetConflictKey?: string;
30
- readonly targetKey?: string;
31
- readonly targetSymbolName?: string;
32
- readonly targetSymbolId?: string;
33
- readonly sourceAnchorKey?: string;
34
- readonly sourceRegionKey?: string;
35
- readonly sourceConflictKey?: string;
36
- readonly sourceKey?: string;
37
- readonly sourceSymbolName?: string;
38
- readonly sourceSymbolId?: string;
39
- }
40
-
41
- export interface BidirectionalTargetChangeSourceMapLink {
42
- readonly id: string;
43
- readonly sourceMapId?: string;
44
- readonly sourceMapMappingId?: string;
45
- readonly sourcePath?: string;
46
- readonly sourceHash?: string;
47
- readonly targetPath?: string;
48
- readonly targetHash?: string;
49
- readonly semanticSymbolId?: string;
50
- readonly semanticOccurrenceId?: string;
51
- readonly semanticNodeId?: string;
52
- readonly nativeSourceId?: string;
53
- readonly nativeAstNodeId?: string;
54
- readonly precision?: string;
55
- readonly sourceSpan?: SourceSpan;
56
- readonly generatedSpan?: SourceMapMappingRecord['generatedSpan'];
57
- readonly regionKey?: string;
58
- readonly regionKind?: string;
59
- }
60
-
61
- export interface BidirectionalTargetChangeAnchor {
62
- readonly id?: string;
63
- readonly key?: string;
64
- readonly kind?: string;
65
- readonly language?: FrontierSourceLanguage | string;
66
- readonly sourcePath?: string;
67
- readonly sourceHash?: string;
68
- readonly symbolId?: string;
69
- readonly symbolName?: string;
70
- readonly sourceSpan?: SourceSpan;
71
- readonly metadata?: Record<string, unknown>;
72
- }
73
-
74
- export interface BidirectionalTargetMatchPortability {
75
- readonly status: BidirectionalTargetPortabilityStatus;
76
- readonly action: BidirectionalTargetPortabilityAction;
77
- readonly readiness: SemanticMergeReadiness | string;
78
- readonly confidence?: number;
79
- readonly reviewRequired: true;
80
- readonly autoMergeClaim: false;
81
- readonly semanticEquivalenceClaim: false;
82
- readonly reasonCodes: readonly string[];
83
- readonly sourceMapLinkIds: readonly string[];
84
- readonly sourceMapMappingIds: readonly string[];
85
- readonly staleSourceMapLinkIds: readonly string[];
86
- }
87
-
88
- export interface BidirectionalTargetChangeSourceAnchorMatch {
89
- readonly kind: 'frontier.lang.bidirectionalTargetChangeSourceAnchorMatch';
90
- readonly version: 1;
91
- readonly id: string;
92
- readonly targetRegion: Partial<NativeSourceChangeRegion>;
93
- readonly sourceAnchors: readonly BidirectionalTargetChangeAnchor[];
94
- readonly lineageResolutions: readonly SemanticLineageResolution[];
95
- readonly sourceMapLinks: readonly BidirectionalTargetChangeSourceMapLink[];
96
- readonly portability?: BidirectionalTargetMatchPortability;
97
- readonly status: BidirectionalTargetChangeAnchorStatus;
98
- readonly confidence?: number;
99
- readonly reasonCodes: readonly string[];
100
- readonly reviewRequired: true;
101
- readonly autoMergeClaim: false;
102
- readonly semanticEquivalenceClaim: false;
103
- readonly conflictKeys: readonly string[];
104
- }
105
-
106
- export interface BidirectionalTargetPortabilityRecord {
107
- readonly kind: 'frontier.lang.bidirectionalTargetPortability';
108
- readonly version: 1;
109
- readonly id?: string;
110
- readonly status: BidirectionalTargetPortabilityStatus;
111
- readonly action: BidirectionalTargetPortabilityAction;
112
- readonly readiness: SemanticMergeReadiness | string;
113
- readonly confidence?: number;
114
- readonly reviewRequired: true;
115
- readonly autoMergeClaim: false;
116
- readonly semanticEquivalenceClaim: false;
117
- readonly reasonCodes: readonly string[];
118
- readonly conflictKeys: readonly string[];
119
- readonly sourceAnchorMatchIds: readonly string[];
120
- readonly sourceMapLinkIds: readonly string[];
121
- readonly sourceMapMappingIds: readonly string[];
122
- readonly staleSourceMapLinkIds: readonly string[];
123
- readonly targetChangedRegions: number;
124
- readonly matchedTargetRegions: number;
125
- readonly sourceMapBackedRegions: number;
126
- readonly unmatchedTargetRegions: number;
127
- readonly ambiguousTargetRegions: number;
128
- readonly deletedSourceAnchors: number;
129
- }
21
+ export type * from './bidirectional-target-change-evidence.js';
130
22
 
131
23
  export interface CreateBidirectionalTargetChangeRecordOptions {
132
24
  readonly id?: string;
@@ -180,6 +72,7 @@ export interface BidirectionalTargetChangeRecord {
180
72
  readonly targetChangeSet: NativeSourceChangeSet;
181
73
  readonly sourceAnchorMatches: readonly BidirectionalTargetChangeSourceAnchorMatch[];
182
74
  readonly targetPortability: BidirectionalTargetPortabilityRecord;
75
+ readonly roundtripEvidence: BidirectionalTargetChangeRoundtripEvidence;
183
76
  readonly sourcePatchBundle: SemanticPatchBundleRecord;
184
77
  readonly historyRecord: SemanticHistoryRecord;
185
78
  readonly evidence: readonly EvidenceRecord[];
@@ -193,6 +86,9 @@ export interface BidirectionalTargetChangeRecord {
193
86
  readonly deletedSourceAnchors: number;
194
87
  readonly sourceChangedRegions: number;
195
88
  readonly sourceMapBackedMatches: number;
89
+ readonly sourceMapLinks: number;
90
+ readonly sourceMapMappingIds: number;
91
+ readonly lineageResolutions: number;
196
92
  readonly targetPortabilityStatus: BidirectionalTargetPortabilityStatus;
197
93
  readonly portableTargetRegions: number;
198
94
  readonly staleTargetRegions: number;
@@ -202,6 +98,9 @@ export interface BidirectionalTargetChangeRecord {
202
98
  readonly autoMergeClaim: false;
203
99
  readonly semanticEquivalenceClaim: false;
204
100
  readonly reviewRequired: true;
101
+ readonly targetPortability?: BidirectionalTargetPortabilityRecord;
102
+ readonly roundtripEvidenceId?: string;
103
+ readonly semanticMergeAdmission?: BidirectionalTargetChangeSemanticMergeAdmissionEvidence;
205
104
  readonly [key: string]: unknown;
206
105
  };
207
106
  }
@@ -3,12 +3,10 @@ import type { NativeImportLossSummary } from './native-import-losses.js';
3
3
  import type { NativeImportResultContract } from './native-import-contracts.js';
4
4
  import type { NativeProjectImportResult } from './native-project.js';
5
5
  import type { SemanticMergeCandidateAdmissionRecord, SemanticMergeCandidateOverlapRecord, SemanticMergeCandidateProjectionRisk } from './semantic-merge-candidates.js';
6
-
7
6
  export type NativeProjectImportAdmissionAction = 'admit' | 'prioritize' | 'reject';
8
7
  export type NativeProjectImportAdmissionPriority = 'low' | 'normal' | 'high' | 'critical' | 'blocker';
9
8
  export type NativeProjectImportAdmissionRisk = 'low' | 'medium' | 'high' | 'unknown';
10
9
  export type NativeProjectSourcePreservationQuality = 'exact' | 'lossy' | 'missing' | 'stale' | 'empty';
11
-
12
10
  export interface NativeProjectAdmissionParserEvidence {
13
11
  readonly parser?: string;
14
12
  readonly astFormat?: string;
@@ -24,7 +22,6 @@ export interface NativeProjectAdmissionParserEvidence {
24
22
  readonly evidenceRecords: number;
25
23
  readonly missing: boolean;
26
24
  }
27
-
28
25
  export interface NativeProjectAdmissionParserEvidenceSummary {
29
26
  readonly parsers: readonly string[];
30
27
  readonly byParser: Readonly<Record<string, number>>;
@@ -39,7 +36,6 @@ export interface NativeProjectAdmissionParserEvidenceSummary {
39
36
  readonly missingParserSources: number;
40
37
  readonly evidenceRecords: number;
41
38
  }
42
-
43
39
  export interface NativeProjectAdmissionSemanticMergeScoreSummary {
44
40
  readonly sourceCount: number;
45
41
  readonly min: number;
@@ -48,7 +44,6 @@ export interface NativeProjectAdmissionSemanticMergeScoreSummary {
48
44
  readonly sortKey: number;
49
45
  readonly lowestSourcePaths: readonly string[];
50
46
  }
51
-
52
47
  export interface NativeProjectAdmissionMissingEvidenceHint {
53
48
  readonly evidenceKey?: string;
54
49
  readonly task: string;
@@ -60,7 +55,6 @@ export interface NativeProjectAdmissionMissingEvidenceHint {
60
55
  readonly lossClasses: readonly string[];
61
56
  readonly readiness: SemanticMergeReadiness;
62
57
  }
63
-
64
58
  export interface NativeProjectAdmissionTaskHint {
65
59
  readonly id?: string;
66
60
  readonly task: string;
@@ -73,7 +67,6 @@ export interface NativeProjectAdmissionTaskHint {
73
67
  readonly lossClasses: readonly string[];
74
68
  readonly evidenceKeys: readonly string[];
75
69
  }
76
-
77
70
  export interface NativeProjectAdmissionSourceSummary {
78
71
  readonly id?: string;
79
72
  readonly language: FrontierSourceLanguage | string;
@@ -97,7 +90,6 @@ export interface NativeProjectAdmissionSourceSummary {
97
90
  readonly nextMissingTask?: NativeProjectAdmissionTaskHint;
98
91
  readonly nextMissingTasks: readonly NativeProjectAdmissionTaskHint[];
99
92
  }
100
-
101
93
  export interface NativeProjectAdmissionLanguageReadinessSummary {
102
94
  readonly language: FrontierSourceLanguage | string;
103
95
  readonly readiness: SemanticMergeReadiness;
@@ -109,7 +101,6 @@ export interface NativeProjectAdmissionLanguageReadinessSummary {
109
101
  readonly topMissingEvidence: readonly NativeProjectAdmissionMissingEvidenceHint[];
110
102
  readonly nextMissingTasks: readonly NativeProjectAdmissionTaskHint[];
111
103
  }
112
-
113
104
  export interface NativeProjectAdmissionLanguageSummary {
114
105
  readonly language: FrontierSourceLanguage | string;
115
106
  readonly sourceCount: number;
@@ -128,7 +119,6 @@ export interface NativeProjectAdmissionLanguageSummary {
128
119
  readonly topMissingEvidence: readonly NativeProjectAdmissionMissingEvidenceHint[];
129
120
  readonly nextMissingTasks: readonly NativeProjectAdmissionTaskHint[];
130
121
  }
131
-
132
122
  export interface NativeProjectAdmissionLanguages {
133
123
  readonly total: number;
134
124
  readonly byReadiness: Readonly<Record<string, number>>;
@@ -143,7 +133,6 @@ export interface NativeProjectAdmissionLanguages {
143
133
  readonly readinessRows: readonly NativeProjectAdmissionLanguageReadinessSummary[];
144
134
  readonly rows: readonly NativeProjectAdmissionLanguageSummary[];
145
135
  }
146
-
147
136
  export interface NativeProjectAdmissionSemanticEvidence {
148
137
  readonly empty: boolean;
149
138
  readonly emptySourceCount: number;
@@ -154,7 +143,42 @@ export interface NativeProjectAdmissionSemanticEvidence {
154
143
  readonly facts: number;
155
144
  readonly evidenceRecords: number;
156
145
  }
157
-
146
+ export type NativeProjectAdmissionSourceStalenessReason =
147
+ | 'source-hash-mismatch'
148
+ | 'content-hash-mismatch'
149
+ | 'source-preservation-hash-mismatch'
150
+ | 'source-hash-unverified'
151
+ | 'base-hash-mismatch'
152
+ | 'dirty-workspace';
153
+ export interface NativeProjectAdmissionSourceStalenessRecord {
154
+ readonly sourcePath?: string;
155
+ readonly sourceHash?: string;
156
+ readonly declaredSourceHash?: string;
157
+ readonly contentHash?: string;
158
+ readonly declaredContentHash?: string;
159
+ readonly baseHash?: string;
160
+ readonly expectedBaseHash?: string;
161
+ readonly currentBaseHash?: string;
162
+ readonly staleByContentHash: boolean;
163
+ readonly staleByBaseHash: boolean;
164
+ readonly dirtyWorkspace: boolean;
165
+ readonly unverifiedSourceHash: boolean;
166
+ readonly reasonCodes: readonly NativeProjectAdmissionSourceStalenessReason[];
167
+ }
168
+ export interface NativeProjectAdmissionSourceStaleness {
169
+ readonly total: number;
170
+ readonly stale: number;
171
+ readonly contentHashStale: number;
172
+ readonly baseHashStale: number;
173
+ readonly dirtyWorkspace: number;
174
+ readonly unverified: number;
175
+ readonly staleSourcePaths: readonly string[];
176
+ readonly contentHashStaleSourcePaths: readonly string[];
177
+ readonly baseHashStaleSourcePaths: readonly string[];
178
+ readonly dirtyWorkspaceSourcePaths: readonly string[];
179
+ readonly unverifiedSourcePaths: readonly string[];
180
+ readonly records: readonly NativeProjectAdmissionSourceStalenessRecord[];
181
+ }
158
182
  export interface NativeProjectAdmissionSourcePreservation {
159
183
  readonly quality: NativeProjectSourcePreservationQuality;
160
184
  readonly total: number;
@@ -168,11 +192,16 @@ export interface NativeProjectAdmissionSourcePreservation {
168
192
  readonly stale: number;
169
193
  readonly missing: number;
170
194
  readonly lossy: number;
195
+ readonly contentHashStale: number;
196
+ readonly baseHashStale: number;
197
+ readonly dirtyWorkspace: number;
171
198
  readonly staleSourcePaths: readonly string[];
199
+ readonly contentHashStaleSourcePaths: readonly string[];
200
+ readonly baseHashStaleSourcePaths: readonly string[];
201
+ readonly dirtyWorkspaceSourcePaths: readonly string[];
172
202
  readonly lossySourcePaths: readonly string[];
173
203
  readonly byQuality: Readonly<Record<string, number>>;
174
204
  }
175
-
176
205
  export interface NativeProjectAdmissionOwnership {
177
206
  readonly total: number;
178
207
  readonly changed: number;
@@ -187,7 +216,6 @@ export interface NativeProjectAdmissionOwnership {
187
216
  readonly byPrecision: Readonly<Record<string, number>>;
188
217
  readonly byLanguage: Readonly<Record<string, number>>;
189
218
  }
190
-
191
219
  export interface NativeProjectAdmissionMergeCandidates {
192
220
  readonly total: number;
193
221
  readonly readiness: SemanticMergeReadiness;
@@ -217,7 +245,6 @@ export interface NativeProjectAdmissionMergeCandidates {
217
245
  readonly projectionRisk?: SemanticMergeCandidateProjectionRisk;
218
246
  readonly patchRisk?: NativeProjectImportAdmissionRisk;
219
247
  }
220
-
221
248
  export type NativeProjectAdmissionScoreComponentKey =
222
249
  | 'semanticEvidence'
223
250
  | 'sourcePreservation'
@@ -225,9 +252,7 @@ export type NativeProjectAdmissionScoreComponentKey =
225
252
  | 'ownershipChange'
226
253
  | 'proofReadiness'
227
254
  | 'targetProjectionCoverage';
228
-
229
255
  export type NativeProjectAdmissionScoreComponentStatus = 'strong' | 'partial' | 'weak' | 'blocked';
230
-
231
256
  export interface NativeProjectAdmissionScoreComponent {
232
257
  readonly key: NativeProjectAdmissionScoreComponentKey;
233
258
  readonly score: number;
@@ -237,7 +262,6 @@ export interface NativeProjectAdmissionScoreComponent {
237
262
  readonly reasons: readonly string[];
238
263
  readonly signals: Record<string, unknown>;
239
264
  }
240
-
241
265
  export interface NativeProjectAdmissionMergeScoreComponents {
242
266
  readonly semanticEvidence: NativeProjectAdmissionScoreComponent;
243
267
  readonly sourcePreservation: NativeProjectAdmissionScoreComponent;
@@ -246,7 +270,6 @@ export interface NativeProjectAdmissionMergeScoreComponents {
246
270
  readonly proofReadiness: NativeProjectAdmissionScoreComponent;
247
271
  readonly targetProjectionCoverage: NativeProjectAdmissionScoreComponent;
248
272
  }
249
-
250
273
  export interface NativeProjectAdmissionMergeScore {
251
274
  readonly schema: 'frontier.lang.semanticMergeScore.v1';
252
275
  readonly version: 1;
@@ -261,7 +284,6 @@ export interface NativeProjectAdmissionMergeScore {
261
284
  readonly components: NativeProjectAdmissionMergeScoreComponents;
262
285
  readonly penalties: readonly string[];
263
286
  }
264
-
265
287
  export interface NativeProjectImportAdmission {
266
288
  readonly kind: 'frontier.lang.projectImportAdmission';
267
289
  readonly version: 1;
@@ -274,6 +296,7 @@ export interface NativeProjectImportAdmission {
274
296
  readonly sourceCount: number;
275
297
  readonly languages: NativeProjectAdmissionLanguages;
276
298
  readonly semanticEvidence: NativeProjectAdmissionSemanticEvidence;
299
+ readonly sourceStaleness: NativeProjectAdmissionSourceStaleness;
277
300
  readonly sourcePreservation: NativeProjectAdmissionSourcePreservation;
278
301
  readonly ownership: NativeProjectAdmissionOwnership;
279
302
  readonly mergeCandidates: NativeProjectAdmissionMergeCandidates;
@@ -281,12 +304,10 @@ export interface NativeProjectImportAdmission {
281
304
  readonly reasons: readonly string[];
282
305
  readonly metadata: Record<string, unknown>;
283
306
  }
284
-
285
307
  export interface CreateProjectImportAdmissionRecordOptions {
286
308
  readonly importResultContract?: NativeImportResultContract;
287
309
  readonly lossSummary?: NativeImportLossSummary;
288
310
  }
289
-
290
311
  export declare function createProjectImportAdmissionRecord(
291
312
  projectResult: NativeProjectImportResult,
292
313
  options?: CreateProjectImportAdmissionRecordOptions