@shapeshift-labs/frontier-lang-compiler 0.2.99 → 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 (57) 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-bundle.d.ts +13 -1
  5. package/dist/declarations/semantic-edit-replay-diagnostics.d.ts +24 -0
  6. package/dist/declarations/semantic-edit-script.d.ts +53 -51
  7. package/dist/declarations/semantic-lineage.d.ts +62 -51
  8. package/dist/declarations/semantic-merge-candidates.d.ts +39 -0
  9. package/dist/declarations/semantic-patch-bundle.d.ts +13 -0
  10. package/dist/declarations/semantic-sidecar-admission.d.ts +14 -0
  11. package/dist/declarations/semantic-sidecar.d.ts +12 -14
  12. package/dist/internal/index-impl/bidirectionalTargetRoundtripEvidence.js +200 -0
  13. package/dist/internal/index-impl/createBidirectionalTargetChangeRecord.js +62 -17
  14. package/dist/internal/index-impl/createNativeSourcePreservation.js +16 -1
  15. package/dist/internal/index-impl/createProjectImportAdmissionRecord.js +151 -1
  16. package/dist/internal/index-impl/createSemanticImportSidecar.js +5 -0
  17. package/dist/internal/index-impl/createSemanticImportSidecarAdmission.js +29 -11
  18. package/dist/internal/index-impl/declarationRecord.js +2 -2
  19. package/dist/internal/index-impl/inferSemanticLineageEvents.js +8 -0
  20. package/dist/internal/index-impl/nativeChangeProjectionEndpoint.js +56 -16
  21. package/dist/internal/index-impl/projectImportAdmissionMergeScore.js +26 -74
  22. package/dist/internal/index-impl/projectImportAdmissionProjectionCoverage.js +74 -0
  23. package/dist/internal/index-impl/projectSemanticEditScriptToSource.js +92 -74
  24. package/dist/internal/index-impl/replaySemanticEditProjection.js +114 -40
  25. package/dist/internal/index-impl/semanticEditBundleAdmission.js +95 -12
  26. package/dist/internal/index-impl/semanticEditBundleIndex.js +16 -10
  27. package/dist/internal/index-impl/semanticEditInsertionAnchors.js +8 -5
  28. package/dist/internal/index-impl/semanticEditReplayDiagnostics.js +167 -0
  29. package/dist/internal/index-impl/semanticEditSourceRanges.js +283 -0
  30. package/dist/internal/index-impl/semanticHistoryLineageResolution.js +56 -3
  31. package/dist/internal/index-impl/semanticIndexFromNativeDeclarations.js +2 -2
  32. package/dist/internal/index-impl/semanticLineageHashEvidence.js +97 -0
  33. package/dist/internal/index-impl/semanticLineageInferenceMatching.js +158 -13
  34. package/dist/internal/index-impl/semanticLineageResolutionRecords.js +46 -2
  35. package/dist/internal/index-impl/semanticMergeCandidateRecords.js +22 -2
  36. package/dist/internal/index-impl/semanticMergeCandidateScoreFacets.js +221 -0
  37. package/dist/internal/index-impl/semanticPatchBundleAdmission.js +122 -20
  38. package/dist/internal/index-impl/semanticPatchBundleLineageLinks.js +199 -0
  39. package/dist/internal/index-impl/semanticPatchBundleOverlaps.js +29 -3
  40. package/dist/internal/index-impl/semanticPatchBundleRecords.js +28 -104
  41. package/dist/internal/index-impl/semanticPatchBundleSourceRecords.js +127 -0
  42. package/dist/internal/index-impl/sourcePreservationFromProjectionContext.js +9 -2
  43. package/dist/internal/index-impl/sourceTextForSpan.js +4 -9
  44. package/dist/lightweight-dependency-relations.js +113 -7
  45. package/dist/native-import-language-profiles.js +10 -2
  46. package/dist/native-import-utils.js +15 -1
  47. package/dist/native-region-scanner-js-helpers.js +68 -18
  48. package/dist/native-region-scanner-js-imports.js +7 -0
  49. package/dist/native-region-scanner-js.js +16 -8
  50. package/dist/native-region-scanner.js +2 -1
  51. package/dist/semantic-import-regions.js +8 -6
  52. package/dist/semantic-import-sidecar-admission-types.d.ts +14 -0
  53. package/dist/semantic-import-sidecar-entry.js +151 -7
  54. package/dist/semantic-import-sidecar-types.d.ts +18 -13
  55. package/dist/semantic-import-source-preservation-utils.js +55 -0
  56. package/dist/semantic-import-source-preservation.js +98 -3
  57. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import type { SemanticMergeReadiness } from '@shapeshift-labs/frontier-lang-kernel';
1
+ import type { EvidenceRecord, SemanticMergeReadiness } from '@shapeshift-labs/frontier-lang-kernel';
2
2
  import type { SemanticEditProjection, SemanticEditReplay, SemanticEditScript } from './semantic-edit-script.js';
3
3
 
4
4
  export type SemanticEditBundleAdmissionStatus =
@@ -16,6 +16,8 @@ export interface SemanticEditBundleAdmissionSummary {
16
16
  readonly projections: number;
17
17
  readonly replays: number;
18
18
  readonly files: number;
19
+ readonly portableScripts: number;
20
+ readonly portableProjections: number;
19
21
  readonly acceptedClean: number;
20
22
  readonly alreadyApplied: number;
21
23
  readonly conflicts: number;
@@ -32,6 +34,11 @@ export interface SemanticEditBundleAdmissionSummary {
32
34
  readonly scriptIds: readonly string[];
33
35
  readonly projectionIds: readonly string[];
34
36
  readonly replayIds: readonly string[];
37
+ readonly evidenceIds: readonly string[];
38
+ readonly passedTestEvidence: number;
39
+ readonly failedTestEvidence: number;
40
+ readonly conflictEvidence: number;
41
+ readonly staleEvidence: number;
35
42
  readonly reasonCodes: readonly string[];
36
43
  }
37
44
 
@@ -68,6 +75,11 @@ export interface CreateSemanticEditBundleAdmissionInput {
68
75
  readonly semanticEditReplay?: SemanticEditReplay;
69
76
  readonly semanticEditReplays?: readonly SemanticEditReplay[] | SemanticEditReplay;
70
77
  readonly replays?: readonly SemanticEditReplay[] | SemanticEditReplay;
78
+ readonly evidence?: readonly EvidenceRecord[] | EvidenceRecord;
79
+ readonly testEvidence?: readonly EvidenceRecord[] | EvidenceRecord;
80
+ readonly testResults?: readonly EvidenceRecord[] | EvidenceRecord;
81
+ readonly gateEvidence?: readonly EvidenceRecord[] | EvidenceRecord;
82
+ readonly proofEvidence?: readonly EvidenceRecord[] | EvidenceRecord;
71
83
  readonly metadata?: Record<string, unknown>;
72
84
  }
73
85
 
@@ -0,0 +1,24 @@
1
+ import type { SemanticEditReplayStatus } from './semantic-edit-script.js';
2
+
3
+ export type SemanticEditReplayDiagnosticCategory = 'stale-anchor' | 'overlap' | 'missing-source' | 'projection-mismatch' | 'matched-source' | 'reanchored' | 'replay' | string;
4
+ export type SemanticEditReplayDiagnosticSeverity = 'info' | 'warning' | 'error' | string;
5
+ export type SemanticEditReplayDiagnosticScope = 'replay' | 'edit' | string;
6
+
7
+ export interface SemanticEditReplayDiagnostic {
8
+ readonly code: string;
9
+ readonly category: SemanticEditReplayDiagnosticCategory;
10
+ readonly severity: SemanticEditReplayDiagnosticSeverity;
11
+ readonly scope: SemanticEditReplayDiagnosticScope;
12
+ readonly status?: SemanticEditReplayStatus | string;
13
+ readonly operationId?: string;
14
+ readonly sourcePath?: string;
15
+ readonly symbolName?: string;
16
+ readonly symbolKind?: string;
17
+ readonly editKind?: 'replace' | 'insert' | 'delete' | string;
18
+ readonly start?: number;
19
+ readonly end?: number;
20
+ readonly expectedHash?: string;
21
+ readonly actualHash?: string;
22
+ readonly replacementHash?: string;
23
+ readonly overlapOperationIds?: readonly string[];
24
+ }
@@ -1,29 +1,21 @@
1
- import type {
2
- EvidenceRecord,
3
- FrontierSourceLanguage,
4
- SemanticMergeReadiness,
5
- SourceSpan
6
- } from '@shapeshift-labs/frontier-lang-kernel';
1
+ import type { EvidenceRecord, FrontierSourceLanguage, SemanticMergeReadiness, SourceSpan } from '@shapeshift-labs/frontier-lang-kernel';
7
2
  import type { ImportNativeSourceOptions, NativeSourceImportResult } from './import-adapter-core.js';
8
-
9
- export type SemanticEditScriptOperationStatus =
10
- | 'candidate'
11
- | 'portable'
12
- | 'already-applied'
13
- | 'covered'
14
- | 'needs-port'
15
- | 'conflict'
16
- | 'stale'
17
- | 'blocked';
18
-
19
- export type SemanticEditScriptAdmissionStatus =
20
- | 'auto-merge-candidate'
21
- | 'needs-port'
22
- | 'conflict'
23
- | 'stale'
24
- | 'blocked'
25
- | 'evidence-only';
26
-
3
+ import type { SemanticEditReplayDiagnostic } from './semantic-edit-replay-diagnostics.js';
4
+ export type * from './semantic-edit-replay-diagnostics.js';
5
+ export type SemanticEditScriptOperationStatus = 'candidate' | 'portable' | 'already-applied' | 'covered' | 'needs-port' | 'conflict' | 'stale' | 'blocked';
6
+ export type SemanticEditScriptAdmissionStatus = 'auto-merge-candidate' | 'needs-port' | 'conflict' | 'stale' | 'blocked' | 'evidence-only';
7
+ export interface SemanticEditInsertionAnchorCandidate {
8
+ readonly mode?: 'before' | 'after' | 'file-start' | 'file-end' | string;
9
+ readonly anchorKey?: string;
10
+ readonly anchorSymbolId?: string;
11
+ readonly anchorSymbolName?: string;
12
+ readonly anchorSymbolKind?: string;
13
+ readonly baseSpan?: SourceSpan;
14
+ readonly workerAnchorSpan?: SourceSpan;
15
+ readonly headSpan?: SourceSpan;
16
+ readonly sourcePath?: string;
17
+ readonly reasonCodes?: readonly string[];
18
+ }
27
19
  export interface SemanticEditScriptOperation {
28
20
  readonly id: string;
29
21
  readonly kind: string;
@@ -39,6 +31,7 @@ export interface SemanticEditScriptOperation {
39
31
  readonly mode?: 'before' | 'after' | 'file-start' | 'file-end' | string;
40
32
  readonly anchorKey?: string; readonly anchorSymbolId?: string; readonly anchorSymbolName?: string; readonly anchorSymbolKind?: string;
41
33
  readonly baseSpan?: SourceSpan; readonly workerAnchorSpan?: SourceSpan; readonly headSpan?: SourceSpan; readonly sourcePath?: string;
34
+ readonly anchorCandidates?: readonly SemanticEditInsertionAnchorCandidate[];
42
35
  readonly insertedSymbolId?: string; readonly insertedSymbolName?: string; readonly insertedSymbolKind?: string;
43
36
  readonly insertedSourceSpan?: SourceSpan; readonly insertedSourcePath?: string;
44
37
  readonly reasonCodes?: readonly string[];
@@ -72,7 +65,6 @@ export interface SemanticEditScriptOperation {
72
65
  readonly evidenceIds?: readonly string[];
73
66
  readonly metadata?: Record<string, unknown>;
74
67
  }
75
-
76
68
  export interface SemanticEditScriptSummary {
77
69
  readonly operations: number;
78
70
  readonly byStatus: Readonly<Record<string, number>>;
@@ -91,7 +83,6 @@ export interface SemanticEditScriptSummary {
91
83
  readonly sourceIdentityHashes?: readonly string[];
92
84
  readonly operationContentHashes?: readonly string[];
93
85
  }
94
-
95
86
  export interface SemanticEditScriptAdmission {
96
87
  readonly status: SemanticEditScriptAdmissionStatus;
97
88
  readonly action: 'run-gates-and-apply' | 'reanchor-or-human-port' | 'record-evidence' | 'block' | string;
@@ -103,7 +94,6 @@ export interface SemanticEditScriptAdmission {
103
94
  readonly conflictKeys: readonly string[];
104
95
  readonly evidenceIds: readonly string[];
105
96
  }
106
-
107
97
  export interface SemanticEditScript {
108
98
  readonly kind: 'frontier.lang.semanticEditScript';
109
99
  readonly version: 1;
@@ -125,12 +115,11 @@ export interface SemanticEditScript {
125
115
  readonly evidence: readonly EvidenceRecord[];
126
116
  readonly metadata?: Record<string, unknown>;
127
117
  }
128
-
129
118
  export interface SemanticEditProjectionEdit {
130
119
  readonly operationId?: string;
131
120
  readonly status: 'applied' | 'already-applied';
132
121
  readonly kind?: string;
133
- readonly editKind?: 'replace' | 'insert' | string;
122
+ readonly editKind?: 'replace' | 'insert' | 'delete' | string;
134
123
  readonly changeKind?: string;
135
124
  readonly anchorKey?: string;
136
125
  readonly conflictKey?: string;
@@ -163,9 +152,9 @@ export interface SemanticEditProjectionEdit {
163
152
  readonly insertionAnchorKey?: string;
164
153
  readonly insertionAnchorSymbolName?: string;
165
154
  readonly insertionAnchorSymbolKind?: string;
155
+ readonly insertionAnchorCandidates?: readonly SemanticEditInsertionAnchorCandidate[];
166
156
  readonly replacementText?: string;
167
157
  }
168
-
169
158
  export interface SemanticEditProjection {
170
159
  readonly kind: 'frontier.lang.semanticEditProjection';
171
160
  readonly version: 1;
@@ -191,23 +180,16 @@ export interface SemanticEditProjection {
191
180
  };
192
181
  readonly metadata?: Record<string, unknown>;
193
182
  }
194
-
195
- export type SemanticEditReplayStatus =
196
- | 'accepted-clean'
197
- | 'already-applied'
198
- | 'conflict'
199
- | 'stale'
200
- | 'blocked'
201
- | 'needs-port'
202
- | 'evidence-only';
203
-
183
+ export type SemanticEditReplayStatus = 'accepted-clean' | 'already-applied' | 'conflict' | 'stale' | 'blocked' | 'needs-port' | 'evidence-only';
204
184
  export interface SemanticEditReplayEdit {
205
185
  readonly operationId?: string;
206
186
  readonly semanticKey?: string;
207
187
  readonly semanticIdentityHash?: string;
208
188
  readonly sourceIdentityHash?: string;
209
189
  readonly editContentHash?: string;
210
- readonly editKind?: 'replace' | 'insert' | string;
190
+ readonly editKind?: 'replace' | 'insert' | 'delete' | string;
191
+ readonly editOrder?: number;
192
+ readonly sourceRangeKind?: string;
211
193
  readonly sourcePath?: string;
212
194
  readonly symbolName?: string;
213
195
  readonly symbolKind?: string;
@@ -217,8 +199,8 @@ export interface SemanticEditReplayEdit {
217
199
  readonly replacementBytes?: number;
218
200
  readonly replacementText?: string;
219
201
  readonly reasonCodes: readonly string[];
202
+ readonly diagnostics?: readonly SemanticEditReplayDiagnostic[];
220
203
  }
221
-
222
204
  export interface SemanticEditReplay {
223
205
  readonly kind: 'frontier.lang.semanticEditReplay';
224
206
  readonly version: 1;
@@ -236,6 +218,7 @@ export interface SemanticEditReplay {
236
218
  readonly edits: readonly SemanticEditReplayEdit[];
237
219
  readonly appliedOperations: readonly string[];
238
220
  readonly skippedOperations: readonly string[];
221
+ readonly diagnostics?: readonly SemanticEditReplayDiagnostic[];
239
222
  readonly admission: {
240
223
  readonly status: SemanticEditReplayStatus;
241
224
  readonly action: 'apply' | 'skip' | 'rerun-semantic-import' | 'human-review' | 'block' | string;
@@ -257,7 +240,6 @@ export interface SemanticEditReplay {
257
240
  };
258
241
  readonly metadata?: Record<string, unknown>;
259
242
  }
260
-
261
243
  export interface ProjectSemanticEditScriptToSourceOptions {
262
244
  readonly id?: string;
263
245
  readonly script: SemanticEditScript;
@@ -266,18 +248,19 @@ export interface ProjectSemanticEditScriptToSourceOptions {
266
248
  readonly headSourcePath?: string;
267
249
  readonly metadata?: Record<string, unknown>;
268
250
  }
269
-
270
251
  export interface ReplaySemanticEditProjectionOptions {
271
252
  readonly id?: string;
272
- readonly projection: SemanticEditProjection;
273
- readonly currentSourceText: string;
253
+ readonly projection?: SemanticEditProjection;
254
+ readonly semanticEditProjection?: SemanticEditProjection;
255
+ readonly currentSourceText?: string;
256
+ readonly headSourceText?: string;
274
257
  readonly currentSourcePath?: string;
258
+ readonly headSourcePath?: string;
275
259
  readonly currentSourceHash?: string;
276
260
  readonly language?: FrontierSourceLanguage | string;
277
261
  readonly parser?: string;
278
262
  readonly metadata?: Record<string, unknown>;
279
263
  }
280
-
281
264
  export interface CreateSemanticEditScriptOptions {
282
265
  readonly id?: string;
283
266
  readonly language?: FrontierSourceLanguage | string;
@@ -294,17 +277,36 @@ export interface CreateSemanticEditScriptOptions {
294
277
  readonly workerSourceText?: string;
295
278
  readonly afterSourceText?: string;
296
279
  readonly headSourceText?: string;
280
+ readonly baseSourcePath?: string;
281
+ readonly beforeSourcePath?: string;
282
+ readonly workerSourcePath?: string;
283
+ readonly afterSourcePath?: string;
297
284
  readonly headSourcePath?: string;
298
285
  readonly currentSourceText?: string;
286
+ readonly currentSourcePath?: string;
299
287
  readonly baseSourceHash?: string;
288
+ readonly beforeSourceHash?: string;
300
289
  readonly workerSourceHash?: string;
290
+ readonly afterSourceHash?: string;
301
291
  readonly headSourceHash?: string;
302
- readonly generatedAt?: number;
292
+ readonly currentSourceHash?: string;
293
+ readonly baseMetadata?: Record<string, unknown>;
294
+ readonly beforeMetadata?: Record<string, unknown>;
295
+ readonly workerMetadata?: Record<string, unknown>;
296
+ readonly afterMetadata?: Record<string, unknown>;
297
+ readonly headMetadata?: Record<string, unknown>;
298
+ readonly currentMetadata?: Record<string, unknown>;
299
+ readonly workerChangeSetId?: string;
300
+ readonly headChangeSetId?: string;
301
+ readonly lineageInferenceId?: string;
302
+ readonly generatedAt?: number | string;
303
303
  readonly evidenceId?: string;
304
304
  readonly metadata?: Record<string, unknown>;
305
305
  }
306
-
306
+ export interface CreateSemanticEditScriptRuntimeOptions {
307
+ readonly metadata?: Record<string, unknown>;
308
+ }
307
309
  export declare const SemanticEditScriptAdmissionStatuses: readonly SemanticEditScriptAdmissionStatus[];
308
- export declare function createSemanticEditScript(input?: CreateSemanticEditScriptOptions): SemanticEditScript;
310
+ export declare function createSemanticEditScript(input?: CreateSemanticEditScriptOptions, options?: CreateSemanticEditScriptRuntimeOptions): SemanticEditScript;
309
311
  export declare function projectSemanticEditScriptToSource(input: ProjectSemanticEditScriptToSourceOptions): SemanticEditProjection;
310
312
  export declare function replaySemanticEditProjection(input: ReplaySemanticEditProjectionOptions): SemanticEditReplay;
@@ -1,26 +1,32 @@
1
- import type { FrontierSourceLanguage, SourceSpan } from '@shapeshift-labs/frontier-lang-kernel';
2
- import type { EvidenceRecord, SemanticMergeReadiness } from '@shapeshift-labs/frontier-lang-kernel';
1
+ import type { EvidenceRecord, FrontierSourceLanguage, SemanticMergeReadiness, SourceSpan } from '@shapeshift-labs/frontier-lang-kernel';
3
2
  import type { ImportNativeSourceOptions, NativeSourceImportResult } from './import-adapter-core.js';
4
-
5
3
  export type SemanticLineageEventKind = 'unchanged' | 'moved' | 'renamed' | 'split' | 'merged' | 'deleted' | 'recreated' | 'unknown' | string;
6
4
  export type SemanticLineageResolutionStatus = 'unchanged' | 'resolved' | 'ambiguous' | 'deleted' | 'recreated' | 'cycle' | 'max-depth' | 'not-found' | string;
7
-
8
5
  export interface SemanticAnchor {
9
- readonly id?: string;
10
- readonly key?: string;
11
- readonly kind?: string;
12
- readonly language?: FrontierSourceLanguage | string;
13
- readonly sourcePath?: string;
14
- readonly sourceHash?: string;
15
- readonly symbolId?: string;
16
- readonly symbolName?: string;
6
+ readonly id?: string; readonly key?: string; readonly kind?: string;
7
+ readonly language?: FrontierSourceLanguage | string; readonly sourcePath?: string; readonly sourceHash?: string;
8
+ readonly symbolId?: string; readonly symbolName?: string;
17
9
  readonly semanticPath?: readonly string[];
18
- readonly signatureHash?: string;
19
- readonly bodyHash?: string;
10
+ readonly signatureHash?: string; readonly bodyHash?: string;
20
11
  readonly sourceSpan?: SourceSpan;
12
+ readonly lineageEventIds?: readonly string[]; readonly terminalLineageEventIds?: readonly string[];
13
+ readonly lineageSourcePaths?: readonly string[]; readonly evidenceIds?: readonly string[];
14
+ readonly proofIds?: readonly string[]; readonly crdtOperationIds?: readonly string[]; readonly crdtHeads?: readonly string[];
15
+ readonly lineageEventKinds?: readonly SemanticLineageEventKind[]; readonly lineageReasonCodes?: readonly string[];
21
16
  readonly metadata?: Record<string, unknown>;
22
17
  }
23
-
18
+ export interface CreateSemanticAnchorInput extends SemanticAnchor {
19
+ readonly ownershipKey?: string;
20
+ readonly conflictKey?: string;
21
+ readonly semanticKey?: string;
22
+ readonly anchorKind?: string;
23
+ readonly regionKind?: string;
24
+ readonly symbolKind?: string;
25
+ readonly pathSegments?: readonly string[];
26
+ readonly name?: string;
27
+ readonly hash?: string;
28
+ readonly span?: SourceSpan;
29
+ }
24
30
  export interface SemanticLineageCrdtClock {
25
31
  readonly operationId?: string;
26
32
  readonly actor?: string;
@@ -30,7 +36,18 @@ export interface SemanticLineageCrdtClock {
30
36
  readonly stateVector?: Record<string, number>;
31
37
  readonly versionFrame?: Record<string, unknown>;
32
38
  }
33
-
39
+ export interface SemanticLineageCrdtClockInput {
40
+ readonly operationId?: string;
41
+ readonly id?: string;
42
+ readonly actor?: string;
43
+ readonly actorId?: string;
44
+ readonly seq?: number;
45
+ readonly deps?: readonly string[] | string;
46
+ readonly heads?: readonly string[] | string;
47
+ readonly stateVector?: Record<string, number>;
48
+ readonly versionFrame?: Record<string, unknown>;
49
+ readonly frame?: Record<string, unknown>;
50
+ }
34
51
  export interface SemanticLineageEvidence {
35
52
  readonly pathMatch?: boolean;
36
53
  readonly signatureHashMatch?: boolean;
@@ -40,7 +57,9 @@ export interface SemanticLineageEvidence {
40
57
  readonly confidence?: number;
41
58
  readonly command?: string;
42
59
  }
43
-
60
+ export interface SemanticLineageEvidenceInput extends SemanticLineageEvidence {
61
+ readonly id?: string;
62
+ }
44
63
  export interface SemanticLineageActor {
45
64
  readonly id?: string;
46
65
  readonly role?: string;
@@ -49,7 +68,9 @@ export interface SemanticLineageActor {
49
68
  readonly runId?: string;
50
69
  readonly metadata?: Record<string, unknown>;
51
70
  }
52
-
71
+ export interface SemanticLineageActorInput extends SemanticLineageActor {
72
+ readonly actorId?: string;
73
+ }
53
74
  export interface SemanticLineageEvent {
54
75
  readonly kind: 'frontier.lang.semanticLineageEvent';
55
76
  readonly version: 1;
@@ -69,34 +90,28 @@ export interface SemanticLineageEvent {
69
90
  readonly conflictKeys: readonly string[];
70
91
  readonly metadata?: Record<string, unknown>;
71
92
  }
72
-
73
93
  export interface CreateSemanticLineageEventInput {
74
- readonly id?: string;
75
- readonly hash?: string;
76
- readonly createdAt?: number | string;
77
- readonly eventKind?: SemanticLineageEventKind;
78
- readonly event?: SemanticLineageEventKind;
79
- readonly kind?: SemanticLineageEventKind;
80
- readonly from?: SemanticAnchor | string;
81
- readonly fromAnchor?: SemanticAnchor | string;
82
- readonly before?: SemanticAnchor | string;
83
- readonly to?: readonly (SemanticAnchor | string)[] | SemanticAnchor | string;
84
- readonly toAnchors?: readonly (SemanticAnchor | string)[] | SemanticAnchor | string;
85
- readonly after?: readonly (SemanticAnchor | string)[] | SemanticAnchor | string;
86
- readonly confidence?: number;
87
- readonly actor?: SemanticLineageActor | string;
88
- readonly actorId?: string;
89
- readonly actorRole?: string;
90
- readonly crdt?: SemanticLineageCrdtClock;
91
- readonly clock?: SemanticLineageCrdtClock;
92
- readonly operation?: SemanticLineageCrdtClock;
94
+ readonly id?: string; readonly hash?: string; readonly createdAt?: number | string;
95
+ readonly eventKind?: SemanticLineageEventKind; readonly event?: SemanticLineageEventKind; readonly kind?: SemanticLineageEventKind;
96
+ readonly from?: CreateSemanticAnchorInput | string;
97
+ readonly fromAnchor?: CreateSemanticAnchorInput | string;
98
+ readonly before?: CreateSemanticAnchorInput | string;
99
+ readonly to?: readonly (CreateSemanticAnchorInput | string)[] | CreateSemanticAnchorInput | string;
100
+ readonly toAnchors?: readonly (CreateSemanticAnchorInput | string)[] | CreateSemanticAnchorInput | string;
101
+ readonly after?: readonly (CreateSemanticAnchorInput | string)[] | CreateSemanticAnchorInput | string;
102
+ readonly confidence?: number; readonly actor?: SemanticLineageActorInput | string;
103
+ readonly actorId?: string; readonly actorRole?: string;
104
+ readonly crdt?: SemanticLineageCrdtClockInput;
105
+ readonly clock?: SemanticLineageCrdtClockInput;
106
+ readonly operation?: SemanticLineageCrdtClockInput;
93
107
  readonly operationId?: string;
94
108
  readonly seq?: number;
95
109
  readonly deps?: readonly string[] | string;
96
110
  readonly heads?: readonly string[] | string;
97
111
  readonly stateVector?: Record<string, number>;
98
112
  readonly versionFrame?: Record<string, unknown>;
99
- readonly evidence?: SemanticLineageEvidence | readonly { readonly id?: string }[];
113
+ readonly frame?: Record<string, unknown>;
114
+ readonly evidence?: SemanticLineageEvidenceInput | readonly SemanticLineageEvidenceInput[];
100
115
  readonly pathMatch?: boolean;
101
116
  readonly signatureHashMatch?: boolean;
102
117
  readonly bodyHashMatch?: boolean;
@@ -110,7 +125,6 @@ export interface CreateSemanticLineageEventInput {
110
125
  readonly conflictKeys?: readonly string[] | string;
111
126
  readonly metadata?: Record<string, unknown>;
112
127
  }
113
-
114
128
  export interface SemanticLineageMap {
115
129
  readonly kind: 'frontier.lang.semanticLineageMap';
116
130
  readonly version: 1;
@@ -128,7 +142,6 @@ export interface SemanticLineageMap {
128
142
  readonly eventKinds: readonly string[];
129
143
  };
130
144
  }
131
-
132
145
  export interface SemanticLineageResolutionQuery {
133
146
  readonly id?: string;
134
147
  readonly anchor?: SemanticAnchor | string;
@@ -142,7 +155,6 @@ export interface SemanticLineageResolutionQuery {
142
155
  readonly generatedAt?: number | string;
143
156
  readonly metadata?: Record<string, unknown>;
144
157
  }
145
-
146
158
  export interface SemanticLineageResolution {
147
159
  readonly kind: 'frontier.lang.semanticLineageResolution';
148
160
  readonly version: 1;
@@ -161,6 +173,7 @@ export interface SemanticLineageResolution {
161
173
  readonly currentAnchors: readonly SemanticAnchor[];
162
174
  readonly traversedEventIds: readonly string[];
163
175
  readonly terminalEventIds: readonly string[];
176
+ readonly sourcePaths: readonly string[];
164
177
  readonly status: SemanticLineageResolutionStatus;
165
178
  readonly confidence?: number;
166
179
  readonly conflictKeys: readonly string[];
@@ -172,7 +185,6 @@ export interface SemanticLineageResolution {
172
185
  readonly reasonCodes: readonly string[];
173
186
  readonly metadata?: Record<string, unknown>;
174
187
  }
175
-
176
188
  export interface SemanticLineageQuery {
177
189
  readonly eventKind?: SemanticLineageEventKind | readonly string[];
178
190
  readonly anchorKey?: string | readonly string[];
@@ -184,7 +196,6 @@ export interface SemanticLineageQuery {
184
196
  readonly conflictKey?: string | readonly string[];
185
197
  readonly evidenceId?: string | readonly string[];
186
198
  }
187
-
188
199
  export interface SemanticLineageInferredAnchorSummary {
189
200
  readonly key?: string;
190
201
  readonly id?: string;
@@ -193,24 +204,24 @@ export interface SemanticLineageInferredAnchorSummary {
193
204
  readonly language?: FrontierSourceLanguage | string;
194
205
  readonly sourcePath?: string;
195
206
  readonly sourceHash?: string;
207
+ readonly identityHash?: string;
208
+ readonly semanticIdentityHash?: string;
209
+ readonly sourceIdentityHash?: string;
196
210
  readonly sourceSpan?: SourceSpan;
197
211
  readonly signatureHash?: string;
198
212
  readonly bodyHash?: string;
199
213
  readonly ownershipRegionKind?: string;
200
214
  }
201
-
202
215
  export interface SemanticLineageAmbiguousCandidate {
203
216
  readonly after: SemanticLineageInferredAnchorSummary;
204
217
  readonly confidence: number;
205
218
  readonly reasons: readonly string[];
206
219
  }
207
-
208
220
  export interface SemanticLineageAmbiguousMatch {
209
221
  readonly before: SemanticLineageInferredAnchorSummary;
210
222
  readonly candidates: readonly SemanticLineageAmbiguousCandidate[];
211
223
  readonly reasonCodes: readonly string[];
212
224
  }
213
-
214
225
  export interface SemanticLineageInferenceResult {
215
226
  readonly kind: 'frontier.lang.semanticLineageInference';
216
227
  readonly version: 1;
@@ -236,6 +247,8 @@ export interface SemanticLineageInferenceResult {
236
247
  readonly inferredEvents: number;
237
248
  readonly moved: number;
238
249
  readonly renamed: number;
250
+ readonly split: number;
251
+ readonly recreated: number;
239
252
  readonly deleted: number;
240
253
  readonly ambiguous: number;
241
254
  readonly unmatchedAdded: number;
@@ -251,7 +264,6 @@ export interface SemanticLineageInferenceResult {
251
264
  readonly [key: string]: unknown;
252
265
  };
253
266
  }
254
-
255
267
  export interface InferSemanticLineageEventsOptions {
256
268
  readonly id?: string;
257
269
  readonly before?: NativeSourceImportResult | ImportNativeSourceOptions;
@@ -277,11 +289,10 @@ export interface InferSemanticLineageEventsOptions {
277
289
  readonly stateVector?: Record<string, number>;
278
290
  readonly metadata?: Record<string, unknown>;
279
291
  }
280
-
281
292
  export declare const SemanticLineageEventKinds: readonly SemanticLineageEventKind[];
282
293
  export declare const SemanticLineageResolutionStatuses: readonly SemanticLineageResolutionStatus[];
283
- export declare function createSemanticAnchor(input?: SemanticAnchor | string, defaults?: Partial<SemanticAnchor>): SemanticAnchor | undefined;
284
- export declare function createSemanticLineageEvent(input?: CreateSemanticLineageEventInput, options?: { readonly id?: string; readonly createdAt?: number | string; readonly actor?: SemanticLineageActor | string; readonly actorId?: string; readonly actorRole?: string }): SemanticLineageEvent;
294
+ export declare function createSemanticAnchor(input?: CreateSemanticAnchorInput | string, defaults?: Partial<SemanticAnchor>): SemanticAnchor | undefined;
295
+ export declare function createSemanticLineageEvent(input?: CreateSemanticLineageEventInput, options?: { readonly id?: string; readonly createdAt?: number | string; readonly actor?: SemanticLineageActorInput | string; readonly actorId?: string; readonly actorRole?: string }): SemanticLineageEvent;
285
296
  export declare function createSemanticLineageMap(events?: readonly (SemanticLineageEvent | CreateSemanticLineageEventInput)[], options?: { readonly id?: string; readonly generatedAt?: number | string }): SemanticLineageMap;
286
297
  export declare function inferSemanticLineageEvents(input?: InferSemanticLineageEventsOptions, options?: { readonly metadata?: Record<string, unknown>; readonly deletedConfidence?: number }): SemanticLineageInferenceResult;
287
298
  export declare function querySemanticLineageEvents(events: SemanticLineageEvent | readonly SemanticLineageEvent[], query?: SemanticLineageQuery): readonly SemanticLineageEvent[];
@@ -9,6 +9,41 @@ import type { NativeSourceChangeKind, NativeSourceChangeSet } from './native-dif
9
9
  import type { SemanticMergeConflictSummary } from './semantic-merge-conflicts.js';
10
10
 
11
11
  export type SemanticMergeCandidateProjectionRisk = 'low' | 'medium' | 'high' | 'unknown';
12
+ export type SemanticMergeCandidateScoreFacetKey =
13
+ | 'ownership'
14
+ | 'staleStatus'
15
+ | 'testEvidence'
16
+ | 'overlap'
17
+ | 'size'
18
+ | 'semanticSidecarQuality';
19
+ export type SemanticMergeCandidateScoreFacetStatus = 'strong' | 'partial' | 'weak' | 'blocked';
20
+
21
+ export interface SemanticMergeCandidateScoreFacet {
22
+ readonly key: SemanticMergeCandidateScoreFacetKey;
23
+ readonly score: number;
24
+ readonly weight: number;
25
+ readonly weightedScore: number;
26
+ readonly status: SemanticMergeCandidateScoreFacetStatus;
27
+ readonly reasonCodes: readonly string[];
28
+ readonly signals: Record<string, unknown>;
29
+ }
30
+
31
+ export interface SemanticMergeCandidateScoreFacets {
32
+ readonly schema: 'frontier.lang.semanticMergeCandidateScoreFacets.v1';
33
+ readonly version: 1;
34
+ readonly higherIsBetter: true;
35
+ readonly value: number;
36
+ readonly risk: 'low' | 'medium' | 'high';
37
+ readonly components: Record<SemanticMergeCandidateScoreFacetKey, SemanticMergeCandidateScoreFacet>;
38
+ readonly summary: {
39
+ readonly value: number;
40
+ readonly risk: 'low' | 'medium' | 'high';
41
+ readonly lowestScore: number;
42
+ readonly weakFacets: readonly SemanticMergeCandidateScoreFacetKey[];
43
+ readonly blockedFacets: readonly SemanticMergeCandidateScoreFacetKey[];
44
+ readonly availableFacets: readonly SemanticMergeCandidateScoreFacetKey[];
45
+ };
46
+ }
12
47
 
13
48
  export interface SemanticMergeCandidateChangedRegion {
14
49
  readonly id?: string;
@@ -88,11 +123,13 @@ export interface SemanticMergeCandidateAdmissionRecord {
88
123
  readonly conflictKeys: readonly string[];
89
124
  readonly pairs: readonly SemanticMergeCandidateOverlapRecord[];
90
125
  };
126
+ readonly scoreFacets: SemanticMergeCandidateScoreFacets;
91
127
  readonly admission: {
92
128
  readonly readiness: SemanticMergeReadiness | string;
93
129
  readonly reviewRequired: boolean;
94
130
  readonly action: 'admit' | 'prioritize-review' | 'block' | string;
95
131
  readonly sortKey: number;
132
+ readonly scoreFacets: SemanticMergeCandidateScoreFacets;
96
133
  readonly reasonCodes: readonly string[];
97
134
  readonly conflictKeys: readonly string[];
98
135
  };
@@ -122,6 +159,7 @@ export interface SemanticMergeCandidateAdmissionRecord {
122
159
  readonly readiness: SemanticMergeReadiness | string;
123
160
  readonly projectionRisk: SemanticMergeCandidateProjectionRisk;
124
161
  readonly reviewRequired: boolean;
162
+ readonly scoreFacets: SemanticMergeCandidateScoreFacets['summary'];
125
163
  };
126
164
  readonly metadata?: Record<string, unknown> & {
127
165
  readonly conflictSummary?: SemanticMergeConflictSummary;
@@ -166,6 +204,7 @@ export type SemanticMergeCandidateWithAdmission = SemanticMergeCandidateRecord &
166
204
  readonly proofIds?: readonly string[];
167
205
  readonly projectionRisk?: SemanticMergeCandidateProjectionRisk;
168
206
  readonly readinessSortKey?: number;
207
+ readonly scoreFacets?: SemanticMergeCandidateScoreFacets;
169
208
  readonly mergeAdmission?: SemanticMergeCandidateAdmissionRecord;
170
209
  };
171
210
 
@@ -90,6 +90,7 @@ export interface SemanticPatchBundleAdmission {
90
90
  readonly autoApplyCandidate?: boolean;
91
91
  readonly transformAdmission?: SemanticPatchBundleTransformAdmission;
92
92
  readonly semanticEditAdmission?: SemanticEditBundleAdmission;
93
+ readonly evidenceAdmission?: SemanticPatchBundleEvidenceAdmission;
93
94
  readonly reasonCodes?: readonly string[];
94
95
  readonly conflictKeys?: readonly string[];
95
96
  readonly admittedAt?: number | string;
@@ -98,6 +99,18 @@ export interface SemanticPatchBundleAdmission {
98
99
  readonly metadata?: Record<string, unknown>;
99
100
  }
100
101
 
102
+ export interface SemanticPatchBundleEvidenceAdmission {
103
+ readonly status: 'none' | 'ready' | 'needs-review' | 'stale' | 'blocked' | string;
104
+ readonly action: 'none' | 'admit' | 'review' | 'rerun-semantic-import' | 'block' | string;
105
+ readonly readiness: SemanticMergeReadiness | string;
106
+ readonly reasonCodes?: readonly string[];
107
+ readonly evidenceIds?: readonly string[];
108
+ readonly passed?: number;
109
+ readonly failed?: number;
110
+ readonly conflict?: number;
111
+ readonly stale?: number;
112
+ }
113
+
101
114
  export interface SemanticPatchBundleTransformAdmission {
102
115
  readonly status: 'none' | 'ready' | 'needs-review' | 'blocked' | string;
103
116
  readonly action: 'none' | 'admit' | 'review' | 'block' | string;
@@ -8,6 +8,16 @@ export interface SemanticImportSidecarQualityWarning {
8
8
  readonly sourcePaths: readonly string[];
9
9
  }
10
10
 
11
+ export type SemanticImportSidecarRecordClassification = 'useful' | 'expected-empty' | 'unexpectedly-empty' | 'missing' | string;
12
+
13
+ export interface SemanticImportSidecarQualityRecord {
14
+ readonly classification: SemanticImportSidecarRecordClassification;
15
+ readonly reasonCode: string;
16
+ readonly message: string;
17
+ readonly action: string;
18
+ readonly sourcePaths: readonly string[];
19
+ }
20
+
11
21
  export interface SemanticImportSidecarProofAdmissionSummary {
12
22
  readonly total: number;
13
23
  readonly obligations: number;
@@ -26,12 +36,14 @@ export interface SemanticImportSidecarProofAdmissionSummary {
26
36
  export interface SemanticImportSidecarQuality {
27
37
  readonly schema: 'frontier.lang.semanticSidecarQuality.v1';
28
38
  readonly expected: boolean;
39
+ readonly expectedEmpty: boolean;
29
40
  readonly expectedSatisfied: boolean;
30
41
  readonly expectedMissingReasonCodes: readonly string[];
31
42
  readonly selected: boolean;
32
43
  readonly eligible: boolean;
33
44
  readonly imported: boolean;
34
45
  readonly importCount: number;
46
+ readonly record: SemanticImportSidecarQualityRecord;
35
47
  readonly symbolCount: number;
36
48
  readonly ownershipRegionCount: number;
37
49
  readonly patchHintCount: number;
@@ -45,6 +57,7 @@ export interface SemanticImportSidecarQuality {
45
57
  export interface SemanticImportSidecarAdmission {
46
58
  readonly schema: 'frontier.lang.semanticSidecarAdmission.v1';
47
59
  readonly expected: boolean;
60
+ readonly expectedEmpty: boolean;
48
61
  readonly expectedSatisfied: boolean;
49
62
  readonly expectedMissingReasonCodes: readonly string[];
50
63
  readonly selected: boolean;
@@ -53,6 +66,7 @@ export interface SemanticImportSidecarAdmission {
53
66
  readonly importCount: number;
54
67
  readonly readiness: SemanticMergeReadiness;
55
68
  readonly action: string;
69
+ readonly record: SemanticImportSidecarQualityRecord;
56
70
  readonly counts: {
57
71
  readonly symbols: number;
58
72
  readonly ownershipRegions: number;