fallow 3.9.1 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -1
- package/capabilities.json +99 -3
- package/package.json +10 -9
- package/schema.json +169 -0
- package/scripts/run-binary.js +29 -1
- package/scripts/run-binary.test.js +16 -0
- package/skills/fallow/SKILL.md +25 -2
- package/skills/fallow/references/cli-reference.md +21 -2
- package/skills/fallow/references/mcp.md +2 -0
- package/skills/fallow/references/patterns.md +4 -1
- package/types/output-contract.d.ts +1333 -68
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
|
-
* Schemas for the JSON output of fallow commands. Object-shaped envelopes covered by the `FallowOutput` contract carry a top-level `kind` discriminator. Current kind values: `audit`, `explain`, `inspect_target`, `trace`, `review-envelope`, `review-reconcile`, `coverage-setup`, `coverage-analyze`, `list-boundaries`, `list-workspaces`, `health`, `dupes`, `dead-code-grouped`, `impact`, `impact-cross-repo`, `security`, `security-survivors`, `security-blind-spots`, `dead-code`, `combined`, `feature-flags`, `audit-brief`, `decision-surface`, `review-walkthrough-guide`, `review-walkthrough-validation`, `suppression-inventory`. Consumers should branch on `kind` instead of probing for unique field presence. `CodeClimateOutput` is a bare JSON array (per the Code Climate / GitLab Code Quality spec) and stays a sibling root branch discriminated by checking whether the document root is an array. `ErrorOutput` is the `--format json` failure document, emitted on stdout with a non-zero exit; it carries no `kind` and is discriminated by the `error: true` field.
|
|
27
|
+
* Schemas for the JSON output of fallow commands. Object-shaped envelopes covered by the `FallowOutput` contract carry a top-level `kind` discriminator. Current kind values: `audit`, `explain`, `inspect_target`, `trace`, `review-envelope`, `review-reconcile`, `coverage-setup`, `coverage-analyze`, `list-boundaries`, `list-workspaces`, `health`, `dupes`, `dead-code-grouped`, `impact`, `impact-cross-repo`, `security`, `security-survivors`, `security-blind-spots`, `dead-code`, `combined`, `feature-flags`, `audit-brief`, `decision-surface`, `review-walkthrough-guide`, `review-walkthrough-validation`, `suppression-inventory`, `type-aware-status`. Consumers should branch on `kind` instead of probing for unique field presence. `CodeClimateOutput` is a bare JSON array (per the Code Climate / GitLab Code Quality spec) and stays a sibling root branch discriminated by checking whether the document root is an array. `ErrorOutput` is the `--format json` failure document, emitted on stdout with a non-zero exit; it carries no `kind` and is discriminated by the `error: true` field.
|
|
28
28
|
*/
|
|
29
29
|
export type FallowJsonOutput = (FallowOutput | CodeClimateOutput | ErrorOutput)
|
|
30
30
|
/**
|
|
@@ -50,7 +50,7 @@ kind: "audit"
|
|
|
50
50
|
kind: "explain"
|
|
51
51
|
}) | (InspectOutput & {
|
|
52
52
|
kind: "inspect_target"
|
|
53
|
-
}) | (SymbolChainTrace & {
|
|
53
|
+
}) | ((ExportTrace | ClassMemberTrace | FileTrace | DependencyTrace | CloneTrace | ImpactClosureTrace | SymbolChainTrace | SemanticSymbolTrace) & {
|
|
54
54
|
kind: "trace"
|
|
55
55
|
}) | (ReviewEnvelopeOutput & {
|
|
56
56
|
kind: "review-envelope"
|
|
@@ -70,7 +70,7 @@ kind: "health"
|
|
|
70
70
|
kind: "dupes"
|
|
71
71
|
}) | (CheckGroupedOutput & {
|
|
72
72
|
kind: "dead-code-grouped"
|
|
73
|
-
}) | (ImpactReport & {
|
|
73
|
+
}) | ((ImpactReport | SemanticSymbolImpact) & {
|
|
74
74
|
kind: "impact"
|
|
75
75
|
}) | (CrossRepoImpactReport & {
|
|
76
76
|
kind: "impact-cross-repo"
|
|
@@ -96,6 +96,8 @@ kind: "review-walkthrough-guide"
|
|
|
96
96
|
kind: "review-walkthrough-validation"
|
|
97
97
|
}) | (SuppressionInventoryOutput & {
|
|
98
98
|
kind: "suppression-inventory"
|
|
99
|
+
}) | (TypeAwareStatusOutput & {
|
|
100
|
+
kind: "type-aware-status"
|
|
99
101
|
}))
|
|
100
102
|
/**
|
|
101
103
|
* Schema version for this output format (independent of tool version). Bump
|
|
@@ -138,6 +140,62 @@ export type AuditVerdict = ("pass" | "warn" | "fail")
|
|
|
138
140
|
*/
|
|
139
141
|
export type ElapsedMs = number
|
|
140
142
|
export type AuditGate = ("new-only" | "all")
|
|
143
|
+
/**
|
|
144
|
+
* Analysis mode stored with baselines, snapshots, audit sides, and impact data.
|
|
145
|
+
*/
|
|
146
|
+
export type SemanticAnalysisMode = ("syntactic" | "type-aware")
|
|
147
|
+
/**
|
|
148
|
+
* Semantic capabilities that can share one TypeScript Program session.
|
|
149
|
+
*/
|
|
150
|
+
export type SemanticCapability = ("symbol-use" | "symbol-trace" | "api-surface" | "symbol-impact" | "type-coupling")
|
|
151
|
+
/**
|
|
152
|
+
* Whether the semantic backend answered every requested query safely.
|
|
153
|
+
*/
|
|
154
|
+
export type SemanticCompleteness = ("complete" | "partial" | "unavailable")
|
|
155
|
+
/**
|
|
156
|
+
* Effective policy applied when semantic evidence is incomplete.
|
|
157
|
+
*/
|
|
158
|
+
export type SemanticCompletenessRequirement = ("best-effort" | "complete")
|
|
159
|
+
/**
|
|
160
|
+
* Stable reason why semantic evidence is partial or unavailable.
|
|
161
|
+
*/
|
|
162
|
+
export type SemanticGapReason = ("no-project" | "ambiguous-project" | "blocking-diagnostics" | "unknown-symbol" | "unknown-entry-point" | "evidence-limit" | "dynamic-behavior" | "virtual-dispatch" | "dynamic-member-access" | "decorated-declaration" | "optional-contract" | "accessor-pair" | "overload-set" | "attached-comment" | "abstract-declaration" | "incomplete-project-coverage" | "framework-contract-provenance" | "capacity" | "unsupported-syntax")
|
|
163
|
+
/**
|
|
164
|
+
* Value or type namespace for one exact declaration or reference.
|
|
165
|
+
*/
|
|
166
|
+
export type SemanticNamespace = ("value" | "type")
|
|
167
|
+
/**
|
|
168
|
+
* Conservative outcome for one existing Fallow dead-code candidate.
|
|
169
|
+
*/
|
|
170
|
+
export type SemanticCandidateDecisionKind = ("confirmed-used" | "contract-preserved" | "confirmed-no-static-references" | "retained-abstained" | "retained-unresolved")
|
|
171
|
+
/**
|
|
172
|
+
* How a class member participates in an inherited or implemented relation.
|
|
173
|
+
*/
|
|
174
|
+
export type SemanticContractRelation = ("interface-implementation" | "abstract-implementation" | "override" | "optional-contract")
|
|
175
|
+
/**
|
|
176
|
+
* Heritage relation used by a framework-owned class-member contract.
|
|
177
|
+
*/
|
|
178
|
+
export type SemanticFrameworkRelation = ("extends" | "implements")
|
|
179
|
+
/**
|
|
180
|
+
* Confidence of exact-symbol impact analysis after known dynamic gaps.
|
|
181
|
+
*/
|
|
182
|
+
export type SemanticImpactConfidence = ("high" | "bounded" | "unavailable")
|
|
183
|
+
/**
|
|
184
|
+
* How a TypeScript project was selected for semantic refinement.
|
|
185
|
+
*/
|
|
186
|
+
export type TypeAwareProjectSource = ("auto" | "explicit")
|
|
187
|
+
/**
|
|
188
|
+
* Outcome of semantic refinement for one TypeScript project.
|
|
189
|
+
*/
|
|
190
|
+
export type TypeAwareProjectStatus = ("refined" | "abstained" | "complete" | "unavailable")
|
|
191
|
+
/**
|
|
192
|
+
* How a persistent semantic snapshot was refreshed.
|
|
193
|
+
*/
|
|
194
|
+
export type TypeAwareInvalidationKind = ("full" | "incremental" | "none")
|
|
195
|
+
/**
|
|
196
|
+
* Closed set of reasons for retaining a candidate without semantic scanning.
|
|
197
|
+
*/
|
|
198
|
+
export type TypeAwareAbstentionReason = ("no-project" | "ambiguous-project" | "blocking-diagnostics")
|
|
141
199
|
/**
|
|
142
200
|
* A suggested action attached to a finding in the JSON output. Each finding
|
|
143
201
|
* carries an `actions` array; consumers (agents, IDE clients, CI bots) can
|
|
@@ -651,7 +709,7 @@ export_name: string
|
|
|
651
709
|
type: "symbol"
|
|
652
710
|
})
|
|
653
711
|
export type InspectIdentity = (InspectFileIdentity | InspectSymbolIdentity)
|
|
654
|
-
export type InspectSectionStatus = ("ok" | "unavailable" | "error")
|
|
712
|
+
export type InspectSectionStatus = ("ok" | "partial" | "unavailable" | "error")
|
|
655
713
|
export type InspectEvidenceScope = ("symbol" | "file" | "project_filtered_to_file")
|
|
656
714
|
/**
|
|
657
715
|
* Best-effort classification of why a callee did not resolve to an edge.
|
|
@@ -689,6 +747,11 @@ export type ReviewProvider = ("github" | "gitlab")
|
|
|
689
747
|
* GitHub Checks API conclusion field.
|
|
690
748
|
*/
|
|
691
749
|
export type ReviewCheckConclusion = ("success" | "neutral" | "failure")
|
|
750
|
+
/**
|
|
751
|
+
* Stable identifier used to isolate independent review integrations on the
|
|
752
|
+
* same pull or merge request.
|
|
753
|
+
*/
|
|
754
|
+
export type ReviewId = string
|
|
692
755
|
/**
|
|
693
756
|
* Schema-version discriminator for the review reconcile envelope.
|
|
694
757
|
*/
|
|
@@ -935,78 +998,906 @@ dead_code?: (CheckOutput | null)
|
|
|
935
998
|
duplication?: (DupesReportPayload | null)
|
|
936
999
|
complexity?: (HealthReport | null)
|
|
937
1000
|
/**
|
|
938
|
-
* Read-only follow-up commands computed from this run's findings. See
|
|
939
|
-
* `CheckOutput::next_steps` for the contract.
|
|
1001
|
+
* Read-only follow-up commands computed from this run's findings. See
|
|
1002
|
+
* `CheckOutput::next_steps` for the contract.
|
|
1003
|
+
*/
|
|
1004
|
+
next_steps?: NextStep[]
|
|
1005
|
+
}
|
|
1006
|
+
/**
|
|
1007
|
+
* Per-category summary counts for the audit result.
|
|
1008
|
+
*/
|
|
1009
|
+
export interface AuditSummary {
|
|
1010
|
+
dead_code_issues: number
|
|
1011
|
+
dead_code_has_errors: boolean
|
|
1012
|
+
complexity_findings: number
|
|
1013
|
+
max_cyclomatic?: (number | null)
|
|
1014
|
+
duplication_clone_groups: number
|
|
1015
|
+
}
|
|
1016
|
+
/**
|
|
1017
|
+
* New-vs-inherited issue counts for audit.
|
|
1018
|
+
*/
|
|
1019
|
+
export interface AuditAttribution {
|
|
1020
|
+
gate: AuditGate
|
|
1021
|
+
dead_code_introduced: number
|
|
1022
|
+
dead_code_inherited: number
|
|
1023
|
+
complexity_introduced: number
|
|
1024
|
+
complexity_inherited: number
|
|
1025
|
+
duplication_introduced: number
|
|
1026
|
+
duplication_inherited: number
|
|
1027
|
+
styling_introduced: number
|
|
1028
|
+
styling_inherited: number
|
|
1029
|
+
}
|
|
1030
|
+
/**
|
|
1031
|
+
* Metric and rule definitions emitted under `_meta` when `--explain` is
|
|
1032
|
+
* passed (always present in MCP responses). Helps AI agents and CI systems
|
|
1033
|
+
* interpret metric values without re-reading the docs site.
|
|
1034
|
+
*/
|
|
1035
|
+
export interface Meta {
|
|
1036
|
+
/**
|
|
1037
|
+
* URL to the documentation page for this command.
|
|
1038
|
+
*/
|
|
1039
|
+
docs?: (string | null)
|
|
1040
|
+
/**
|
|
1041
|
+
* Local telemetry correlation metadata for agent follow-up runs.
|
|
1042
|
+
*/
|
|
1043
|
+
telemetry?: (TelemetryMeta | null)
|
|
1044
|
+
/**
|
|
1045
|
+
* Provenance for the opt-in TypeScript semantic analysis pass.
|
|
1046
|
+
*/
|
|
1047
|
+
type_aware?: (TypeAwareMeta | null)
|
|
1048
|
+
/**
|
|
1049
|
+
* Per-field definitions for envelope fields and action payload fields.
|
|
1050
|
+
*/
|
|
1051
|
+
field_definitions?: {
|
|
1052
|
+
[k: string]: string
|
|
1053
|
+
}
|
|
1054
|
+
/**
|
|
1055
|
+
* Per-metric definitions: name, description, range, interpretation.
|
|
1056
|
+
*/
|
|
1057
|
+
metrics?: {
|
|
1058
|
+
[k: string]: MetaMetric
|
|
1059
|
+
}
|
|
1060
|
+
/**
|
|
1061
|
+
* Per-rule definitions for check command output.
|
|
1062
|
+
*/
|
|
1063
|
+
rules?: {
|
|
1064
|
+
[k: string]: MetaRule
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
/**
|
|
1068
|
+
* Privacy-safe local run metadata emitted for JSON consumers.
|
|
1069
|
+
*/
|
|
1070
|
+
export interface TelemetryMeta {
|
|
1071
|
+
/**
|
|
1072
|
+
* Ephemeral local token that may be passed to the hidden `--parent-run`
|
|
1073
|
+
* flag on a later command. It is not derived from repository, path, user,
|
|
1074
|
+
* machine, project, or cloud data.
|
|
1075
|
+
*/
|
|
1076
|
+
analysis_run_id?: (string | null)
|
|
1077
|
+
}
|
|
1078
|
+
/**
|
|
1079
|
+
* Bounded provenance emitted when the opt-in type-aware pass runs.
|
|
1080
|
+
*/
|
|
1081
|
+
export interface TypeAwareMeta {
|
|
1082
|
+
/**
|
|
1083
|
+
* Compatibility identity used by audit, baselines, snapshots, and stores.
|
|
1084
|
+
*/
|
|
1085
|
+
identity?: (SemanticAnalysisIdentity | null)
|
|
1086
|
+
/**
|
|
1087
|
+
* Effective CLI or repository policy for incomplete semantic evidence.
|
|
1088
|
+
*/
|
|
1089
|
+
required_completeness?: (SemanticCompletenessRequirement | null)
|
|
1090
|
+
/**
|
|
1091
|
+
* Compact status for every requested semantic query.
|
|
1092
|
+
*/
|
|
1093
|
+
queries?: SemanticQuerySummary[]
|
|
1094
|
+
/**
|
|
1095
|
+
* Bounded decision and evidence for each semantic dead-code candidate.
|
|
1096
|
+
*/
|
|
1097
|
+
candidate_decisions?: SemanticCandidateDecision[]
|
|
1098
|
+
/**
|
|
1099
|
+
* Checker-backed trace evidence requested by focused symbol queries.
|
|
1100
|
+
*/
|
|
1101
|
+
symbol_traces?: SemanticSymbolTrace[]
|
|
1102
|
+
/**
|
|
1103
|
+
* Package-public surface and confirmed private type leaks.
|
|
1104
|
+
*/
|
|
1105
|
+
api_surface?: (ApiSurfaceResult | null)
|
|
1106
|
+
/**
|
|
1107
|
+
* Exact-symbol blast radius and targeted-test recommendations.
|
|
1108
|
+
*/
|
|
1109
|
+
symbol_impacts?: SemanticSymbolImpact[]
|
|
1110
|
+
/**
|
|
1111
|
+
* Advisory project-local public-signature coupling.
|
|
1112
|
+
*/
|
|
1113
|
+
type_coupling?: (TypeCouplingReport | null)
|
|
1114
|
+
/**
|
|
1115
|
+
* Whether the semantic companion executed at least one query.
|
|
1116
|
+
*/
|
|
1117
|
+
executed: boolean
|
|
1118
|
+
/**
|
|
1119
|
+
* Version of Fallow's backend-neutral sidecar protocol.
|
|
1120
|
+
*/
|
|
1121
|
+
protocol_version: number
|
|
1122
|
+
/**
|
|
1123
|
+
* Version of the sidecar package that executed the query.
|
|
1124
|
+
*/
|
|
1125
|
+
sidecar_version?: (string | null)
|
|
1126
|
+
/**
|
|
1127
|
+
* Semantic backend capability identifier.
|
|
1128
|
+
*/
|
|
1129
|
+
backend: string
|
|
1130
|
+
/**
|
|
1131
|
+
* Backend compiler or engine version that executed the query.
|
|
1132
|
+
*/
|
|
1133
|
+
backend_version?: (string | null)
|
|
1134
|
+
/**
|
|
1135
|
+
* TypeScript project configs selected for candidate files.
|
|
1136
|
+
*/
|
|
1137
|
+
selected_tsconfigs: string[]
|
|
1138
|
+
/**
|
|
1139
|
+
* Number of candidate findings sent to the sidecar.
|
|
1140
|
+
*/
|
|
1141
|
+
candidate_count: number
|
|
1142
|
+
/**
|
|
1143
|
+
* Number of candidates confirmed as used and removed.
|
|
1144
|
+
*/
|
|
1145
|
+
confirmed_used_count: number
|
|
1146
|
+
/**
|
|
1147
|
+
* Number of candidates preserved because they implement or override a contract.
|
|
1148
|
+
*/
|
|
1149
|
+
contract_preserved_count: number
|
|
1150
|
+
/**
|
|
1151
|
+
* Number of candidates with complete, closed-world no-static-reference evidence.
|
|
1152
|
+
*/
|
|
1153
|
+
no_static_references_count: number
|
|
1154
|
+
/**
|
|
1155
|
+
* Number of retained class members eligible for a guarded type-aware fix.
|
|
1156
|
+
*/
|
|
1157
|
+
fix_eligible_count: number
|
|
1158
|
+
/**
|
|
1159
|
+
* Number of candidates retained because semantic use was unresolved.
|
|
1160
|
+
*/
|
|
1161
|
+
unresolved_count: number
|
|
1162
|
+
/**
|
|
1163
|
+
* Number of candidates retained because semantic analysis abstained.
|
|
1164
|
+
*/
|
|
1165
|
+
abstained_count: number
|
|
1166
|
+
abstention_reasons: TypeAwareAbstentionCounts
|
|
1167
|
+
/**
|
|
1168
|
+
* Per-project semantic refinement status and evidence.
|
|
1169
|
+
*/
|
|
1170
|
+
projects: TypeAwareProjectMeta[]
|
|
1171
|
+
/**
|
|
1172
|
+
* Number of bounded warnings returned by the sidecar.
|
|
1173
|
+
*/
|
|
1174
|
+
warning_count: number
|
|
1175
|
+
/**
|
|
1176
|
+
* Bounded semantic warnings. Findings mentioned here were retained.
|
|
1177
|
+
*/
|
|
1178
|
+
warnings: string[]
|
|
1179
|
+
/**
|
|
1180
|
+
* Semantic pass duration as reported by the sidecar.
|
|
1181
|
+
*/
|
|
1182
|
+
elapsed_ms: number
|
|
1183
|
+
phase_timings_ms: TypeAwarePhaseTimings
|
|
1184
|
+
}
|
|
1185
|
+
/**
|
|
1186
|
+
* Compatibility identity for comparing two analysis results.
|
|
1187
|
+
*/
|
|
1188
|
+
export interface SemanticAnalysisIdentity {
|
|
1189
|
+
mode: SemanticAnalysisMode
|
|
1190
|
+
/**
|
|
1191
|
+
* Version of the semantic result schema, independent of tool versions.
|
|
1192
|
+
*/
|
|
1193
|
+
semantic_schema_version: number
|
|
1194
|
+
/**
|
|
1195
|
+
* Sorted capability set requested for the analysis.
|
|
1196
|
+
*/
|
|
1197
|
+
capabilities: SemanticCapability[]
|
|
1198
|
+
/**
|
|
1199
|
+
* Hash of normalized project ownership and compiler configuration.
|
|
1200
|
+
*/
|
|
1201
|
+
project_config_hash: string
|
|
1202
|
+
/**
|
|
1203
|
+
* Backend family, such as `typescript-go`.
|
|
1204
|
+
*/
|
|
1205
|
+
backend_family: string
|
|
1206
|
+
completeness: SemanticCompleteness
|
|
1207
|
+
}
|
|
1208
|
+
/**
|
|
1209
|
+
* Compact per-query status embedded in run metadata.
|
|
1210
|
+
*/
|
|
1211
|
+
export interface SemanticQuerySummary {
|
|
1212
|
+
/**
|
|
1213
|
+
* Stable query identifier within this analysis run.
|
|
1214
|
+
*/
|
|
1215
|
+
query_id: number
|
|
1216
|
+
capability: SemanticCapability
|
|
1217
|
+
/**
|
|
1218
|
+
* Operation-specific assertion, never a generic compiler verdict.
|
|
1219
|
+
*/
|
|
1220
|
+
assertion: string
|
|
1221
|
+
status: SemanticCompleteness
|
|
1222
|
+
/**
|
|
1223
|
+
* Stable primary gap reason when partial or unavailable.
|
|
1224
|
+
*/
|
|
1225
|
+
reason_code?: (SemanticGapReason | null)
|
|
1226
|
+
/**
|
|
1227
|
+
* Evidence count before bounding.
|
|
1228
|
+
*/
|
|
1229
|
+
total_evidence_count: number
|
|
1230
|
+
/**
|
|
1231
|
+
* Whether evidence or payload arrays were truncated.
|
|
1232
|
+
*/
|
|
1233
|
+
truncated: boolean
|
|
1234
|
+
/**
|
|
1235
|
+
* Counted omissions.
|
|
1236
|
+
*/
|
|
1237
|
+
omissions?: SemanticOmission[]
|
|
1238
|
+
/**
|
|
1239
|
+
* Plain next actions.
|
|
1240
|
+
*/
|
|
1241
|
+
actions?: string[]
|
|
1242
|
+
}
|
|
1243
|
+
/**
|
|
1244
|
+
* Counted omission attached to a partial or unavailable result.
|
|
1245
|
+
*/
|
|
1246
|
+
export interface SemanticOmission {
|
|
1247
|
+
reason_code: SemanticGapReason
|
|
1248
|
+
/**
|
|
1249
|
+
* Number of omitted items or relations.
|
|
1250
|
+
*/
|
|
1251
|
+
count: number
|
|
1252
|
+
}
|
|
1253
|
+
/**
|
|
1254
|
+
* Bounded, inspectable decision record for one semantic dead-code candidate.
|
|
1255
|
+
*/
|
|
1256
|
+
export interface SemanticCandidateDecision {
|
|
1257
|
+
/**
|
|
1258
|
+
* Query identifier used to correlate low-level query metadata.
|
|
1259
|
+
*/
|
|
1260
|
+
query_id: number
|
|
1261
|
+
subject: SemanticSymbol
|
|
1262
|
+
decision: SemanticCandidateDecisionKind
|
|
1263
|
+
status: SemanticCompleteness
|
|
1264
|
+
/**
|
|
1265
|
+
* Every selected TypeScript project that owns the declaration.
|
|
1266
|
+
*/
|
|
1267
|
+
owning_projects: string[]
|
|
1268
|
+
/**
|
|
1269
|
+
* Bounded checker-resolved reference or uncertainty evidence.
|
|
1270
|
+
*/
|
|
1271
|
+
evidence?: SemanticReference[]
|
|
1272
|
+
/**
|
|
1273
|
+
* Inherited contract evidence, when present.
|
|
1274
|
+
*/
|
|
1275
|
+
contract?: (SemanticContractEvidence | null)
|
|
1276
|
+
/**
|
|
1277
|
+
* Framework-owned contract evidence, distinct from TypeScript contracts.
|
|
1278
|
+
*/
|
|
1279
|
+
framework_contract?: (SemanticFrameworkContractEvidence | null)
|
|
1280
|
+
/**
|
|
1281
|
+
* Whether this exact decision may enable a guarded class-member fix.
|
|
1282
|
+
*/
|
|
1283
|
+
closed_world_eligible: boolean
|
|
1284
|
+
/**
|
|
1285
|
+
* Exact declaration guard required before a source edit.
|
|
1286
|
+
*/
|
|
1287
|
+
edit_guard?: (SemanticEditGuard | null)
|
|
1288
|
+
/**
|
|
1289
|
+
* Primary reason when the candidate remains unresolved or abstained.
|
|
1290
|
+
*/
|
|
1291
|
+
reason_code?: (SemanticGapReason | null)
|
|
1292
|
+
/**
|
|
1293
|
+
* Concise explanation suitable for dry-run and agent output.
|
|
1294
|
+
*/
|
|
1295
|
+
explanation: string
|
|
1296
|
+
/**
|
|
1297
|
+
* Plain next actions.
|
|
1298
|
+
*/
|
|
1299
|
+
actions?: string[]
|
|
1300
|
+
/**
|
|
1301
|
+
* Evidence count before bounding.
|
|
1302
|
+
*/
|
|
1303
|
+
total_evidence_count: number
|
|
1304
|
+
/**
|
|
1305
|
+
* Whether evidence was truncated.
|
|
1306
|
+
*/
|
|
1307
|
+
truncated: boolean
|
|
1308
|
+
/**
|
|
1309
|
+
* Counted omissions.
|
|
1310
|
+
*/
|
|
1311
|
+
omissions?: SemanticOmission[]
|
|
1312
|
+
}
|
|
1313
|
+
/**
|
|
1314
|
+
* Stable identity for a declaration sent to or returned by the backend.
|
|
1315
|
+
*/
|
|
1316
|
+
export interface SemanticSymbol {
|
|
1317
|
+
/**
|
|
1318
|
+
* Project-root-relative declaration path.
|
|
1319
|
+
*/
|
|
1320
|
+
path: string
|
|
1321
|
+
namespace: SemanticNamespace
|
|
1322
|
+
/**
|
|
1323
|
+
* Stable declaration kind, such as `function` or `class-method`.
|
|
1324
|
+
*/
|
|
1325
|
+
declaration_kind: string
|
|
1326
|
+
/**
|
|
1327
|
+
* Name exposed to consumers.
|
|
1328
|
+
*/
|
|
1329
|
+
exported_name: string
|
|
1330
|
+
/**
|
|
1331
|
+
* Local declaration name.
|
|
1332
|
+
*/
|
|
1333
|
+
local_name: string
|
|
1334
|
+
/**
|
|
1335
|
+
* Optional owning class or namespace.
|
|
1336
|
+
*/
|
|
1337
|
+
owner?: (string | null)
|
|
1338
|
+
/**
|
|
1339
|
+
* One-based declaration line.
|
|
1340
|
+
*/
|
|
1341
|
+
line: number
|
|
1342
|
+
/**
|
|
1343
|
+
* Zero-based UTF-8 byte column.
|
|
1344
|
+
*/
|
|
1345
|
+
col: number
|
|
1346
|
+
}
|
|
1347
|
+
/**
|
|
1348
|
+
* Located semantic reference evidence.
|
|
1349
|
+
*/
|
|
1350
|
+
export interface SemanticReference {
|
|
1351
|
+
/**
|
|
1352
|
+
* Project-root-relative reference path.
|
|
1353
|
+
*/
|
|
1354
|
+
path: string
|
|
1355
|
+
/**
|
|
1356
|
+
* One-based source line.
|
|
1357
|
+
*/
|
|
1358
|
+
line: number
|
|
1359
|
+
/**
|
|
1360
|
+
* Zero-based UTF-8 byte column.
|
|
1361
|
+
*/
|
|
1362
|
+
col: number
|
|
1363
|
+
/**
|
|
1364
|
+
* Reference role, such as `read`, `type`, `alias`, or `re-export`.
|
|
1365
|
+
*/
|
|
1366
|
+
role: string
|
|
1367
|
+
namespace: SemanticNamespace
|
|
1368
|
+
/**
|
|
1369
|
+
* Alias and re-export hops between the reference and declaration.
|
|
1370
|
+
*/
|
|
1371
|
+
via?: SemanticAliasHop[]
|
|
1372
|
+
}
|
|
1373
|
+
/**
|
|
1374
|
+
* One alias or re-export hop in semantic provenance.
|
|
1375
|
+
*/
|
|
1376
|
+
export interface SemanticAliasHop {
|
|
1377
|
+
/**
|
|
1378
|
+
* Project-root-relative hop path.
|
|
1379
|
+
*/
|
|
1380
|
+
path: string
|
|
1381
|
+
/**
|
|
1382
|
+
* Name before this hop.
|
|
1383
|
+
*/
|
|
1384
|
+
from_name: string
|
|
1385
|
+
/**
|
|
1386
|
+
* Name exposed after this hop.
|
|
1387
|
+
*/
|
|
1388
|
+
to_name: string
|
|
1389
|
+
/**
|
|
1390
|
+
* Relation, such as `import-alias` or `re-export`.
|
|
1391
|
+
*/
|
|
1392
|
+
relation: string
|
|
1393
|
+
}
|
|
1394
|
+
/**
|
|
1395
|
+
* Exact declaration evidence for an inherited or implemented class-member relation.
|
|
1396
|
+
*/
|
|
1397
|
+
export interface SemanticContractEvidence {
|
|
1398
|
+
relation: SemanticContractRelation
|
|
1399
|
+
declaration: SemanticSymbol
|
|
1400
|
+
/**
|
|
1401
|
+
* Whether the source contract marks this member optional.
|
|
1402
|
+
*/
|
|
1403
|
+
optional: boolean
|
|
1404
|
+
}
|
|
1405
|
+
/**
|
|
1406
|
+
* Checker-validated evidence that a framework contract preserves a member.
|
|
1407
|
+
*/
|
|
1408
|
+
export interface SemanticFrameworkContractEvidence {
|
|
1409
|
+
/**
|
|
1410
|
+
* Fallow plugin that supplied the contract.
|
|
1411
|
+
*/
|
|
1412
|
+
framework: string
|
|
1413
|
+
/**
|
|
1414
|
+
* Exact package that owns the heritage declaration.
|
|
1415
|
+
*/
|
|
1416
|
+
package: string
|
|
1417
|
+
relation: SemanticFrameworkRelation
|
|
1418
|
+
declaration: SemanticSymbol
|
|
1419
|
+
}
|
|
1420
|
+
/**
|
|
1421
|
+
* Exact source span and content hash used to guard semantic source edits.
|
|
1422
|
+
*/
|
|
1423
|
+
export interface SemanticEditGuard {
|
|
1424
|
+
/**
|
|
1425
|
+
* Zero-based UTF-8 byte offset where the declaration starts.
|
|
1426
|
+
*/
|
|
1427
|
+
start: number
|
|
1428
|
+
/**
|
|
1429
|
+
* Exclusive zero-based UTF-8 byte offset where the declaration ends.
|
|
1430
|
+
*/
|
|
1431
|
+
end: number
|
|
1432
|
+
/**
|
|
1433
|
+
* Lowercase SHA-256 digest of the exact declaration text.
|
|
1434
|
+
*/
|
|
1435
|
+
declaration_sha256: string
|
|
1436
|
+
}
|
|
1437
|
+
/**
|
|
1438
|
+
* Typed semantic trace attached to an existing syntactic trace.
|
|
1439
|
+
*/
|
|
1440
|
+
export interface SemanticSymbolTrace {
|
|
1441
|
+
target: SemanticSymbol
|
|
1442
|
+
identity: SemanticAnalysisIdentity
|
|
1443
|
+
/**
|
|
1444
|
+
* TypeScript project selected for this symbol.
|
|
1445
|
+
*/
|
|
1446
|
+
selected_project: string
|
|
1447
|
+
/**
|
|
1448
|
+
* Concrete assertion, such as `references-found`.
|
|
1449
|
+
*/
|
|
1450
|
+
assertion: string
|
|
1451
|
+
status: SemanticCompleteness
|
|
1452
|
+
/**
|
|
1453
|
+
* Bounded reference evidence.
|
|
1454
|
+
*/
|
|
1455
|
+
references: SemanticReference[]
|
|
1456
|
+
/**
|
|
1457
|
+
* Count before evidence bounding.
|
|
1458
|
+
*/
|
|
1459
|
+
total_reference_count: number
|
|
1460
|
+
/**
|
|
1461
|
+
* Exact reference locations found by the TypeScript checker.
|
|
1462
|
+
*/
|
|
1463
|
+
checker_evidence_count: number
|
|
1464
|
+
/**
|
|
1465
|
+
* Alias and re-export hops derived from the semantic graph.
|
|
1466
|
+
*/
|
|
1467
|
+
graph_evidence_count: number
|
|
1468
|
+
/**
|
|
1469
|
+
* Whether reference evidence was truncated.
|
|
1470
|
+
*/
|
|
1471
|
+
truncated: boolean
|
|
1472
|
+
/**
|
|
1473
|
+
* Counted omissions.
|
|
1474
|
+
*/
|
|
1475
|
+
omissions?: SemanticOmission[]
|
|
1476
|
+
/**
|
|
1477
|
+
* Plain next actions for a user or automation consumer.
|
|
1478
|
+
*/
|
|
1479
|
+
actions?: string[]
|
|
1480
|
+
}
|
|
1481
|
+
/**
|
|
1482
|
+
* Package API surface result shared by inspect and private-leak analysis.
|
|
1483
|
+
*/
|
|
1484
|
+
export interface ApiSurfaceResult {
|
|
1485
|
+
/**
|
|
1486
|
+
* Concrete assertion, such as `leak-confirmed`.
|
|
1487
|
+
*/
|
|
1488
|
+
assertion: string
|
|
1489
|
+
status: SemanticCompleteness
|
|
1490
|
+
/**
|
|
1491
|
+
* Public API entries.
|
|
1492
|
+
*/
|
|
1493
|
+
entries: ApiSurfaceEntry[]
|
|
1494
|
+
/**
|
|
1495
|
+
* Confirmed private type leaks.
|
|
1496
|
+
*/
|
|
1497
|
+
private_type_leaks: SemanticPrivateTypeLeak[]
|
|
1498
|
+
/**
|
|
1499
|
+
* Counted omissions.
|
|
1500
|
+
*/
|
|
1501
|
+
omissions?: SemanticOmission[]
|
|
1502
|
+
/**
|
|
1503
|
+
* Plain next actions.
|
|
1504
|
+
*/
|
|
1505
|
+
actions?: string[]
|
|
1506
|
+
}
|
|
1507
|
+
/**
|
|
1508
|
+
* One package-public API entry described by the semantic backend.
|
|
1509
|
+
*/
|
|
1510
|
+
export interface ApiSurfaceEntry {
|
|
1511
|
+
exposed: SemanticSymbol
|
|
1512
|
+
origin: SemanticSymbol
|
|
1513
|
+
/**
|
|
1514
|
+
* Stable normalized signature fingerprint.
|
|
1515
|
+
*/
|
|
1516
|
+
signature_fingerprint: string
|
|
1517
|
+
/**
|
|
1518
|
+
* Project-local types referenced by the signature.
|
|
1519
|
+
*/
|
|
1520
|
+
referenced_types: PublicTypeReference[]
|
|
1521
|
+
}
|
|
1522
|
+
/**
|
|
1523
|
+
* One project-local type referenced by a public signature.
|
|
1524
|
+
*/
|
|
1525
|
+
export interface PublicTypeReference {
|
|
1526
|
+
declaration: SemanticSymbol
|
|
1527
|
+
/**
|
|
1528
|
+
* Signature relation, such as return type or generic constraint.
|
|
1529
|
+
*/
|
|
1530
|
+
relation: string
|
|
1531
|
+
}
|
|
1532
|
+
/**
|
|
1533
|
+
* Exact semantic evidence for a private type leak.
|
|
1534
|
+
*/
|
|
1535
|
+
export interface SemanticPrivateTypeLeak {
|
|
1536
|
+
exposed: SemanticSymbol
|
|
1537
|
+
private_declaration: SemanticSymbol
|
|
1538
|
+
/**
|
|
1539
|
+
* Signature relation through which the type is exposed.
|
|
1540
|
+
*/
|
|
1541
|
+
relation: string
|
|
1542
|
+
/**
|
|
1543
|
+
* Stable TypeScript diagnostic code used as supporting evidence.
|
|
1544
|
+
*/
|
|
1545
|
+
diagnostic_code?: (number | null)
|
|
1546
|
+
}
|
|
1547
|
+
/**
|
|
1548
|
+
* Exact-symbol impact and targeted-test recommendation.
|
|
1549
|
+
*/
|
|
1550
|
+
export interface SemanticSymbolImpact {
|
|
1551
|
+
target: SemanticSymbol
|
|
1552
|
+
identity: SemanticAnalysisIdentity
|
|
1553
|
+
/**
|
|
1554
|
+
* TypeScript project selected for this symbol.
|
|
1555
|
+
*/
|
|
1556
|
+
selected_project: string
|
|
1557
|
+
/**
|
|
1558
|
+
* Concrete assertion, such as `consumers-found`.
|
|
1559
|
+
*/
|
|
1560
|
+
assertion: string
|
|
1561
|
+
status: SemanticCompleteness
|
|
1562
|
+
/**
|
|
1563
|
+
* Files that reference the exact symbol directly.
|
|
1564
|
+
*/
|
|
1565
|
+
direct_consumers: SemanticImpactPath[]
|
|
1566
|
+
/**
|
|
1567
|
+
* Direct consumer count before evidence bounding.
|
|
1568
|
+
*/
|
|
1569
|
+
total_direct_consumer_count: number
|
|
1570
|
+
/**
|
|
1571
|
+
* Transitively affected production files.
|
|
1572
|
+
*/
|
|
1573
|
+
affected_files: SemanticImpactPath[]
|
|
1574
|
+
/**
|
|
1575
|
+
* Transitive affected-file count before evidence bounding.
|
|
1576
|
+
*/
|
|
1577
|
+
total_affected_file_count: number
|
|
1578
|
+
/**
|
|
1579
|
+
* Directly relevant test entry points.
|
|
1580
|
+
*/
|
|
1581
|
+
targeted_tests: SemanticImpactPath[]
|
|
1582
|
+
/**
|
|
1583
|
+
* Targeted-test count before evidence bounding.
|
|
1584
|
+
*/
|
|
1585
|
+
total_targeted_test_count: number
|
|
1586
|
+
confidence: SemanticImpactConfidence
|
|
1587
|
+
/**
|
|
1588
|
+
* Counted omissions, including dynamic behavior.
|
|
1589
|
+
*/
|
|
1590
|
+
omissions?: SemanticOmission[]
|
|
1591
|
+
/**
|
|
1592
|
+
* Plain next actions.
|
|
1593
|
+
*/
|
|
1594
|
+
actions?: string[]
|
|
1595
|
+
}
|
|
1596
|
+
/**
|
|
1597
|
+
* One production file or test reached by exact-symbol impact analysis.
|
|
1598
|
+
*/
|
|
1599
|
+
export interface SemanticImpactPath {
|
|
1600
|
+
/**
|
|
1601
|
+
* Project-root-relative affected path.
|
|
1602
|
+
*/
|
|
1603
|
+
path: string
|
|
1604
|
+
/**
|
|
1605
|
+
* Relation to the target, such as `direct-value-consumer`.
|
|
1606
|
+
*/
|
|
1607
|
+
relation: string
|
|
1608
|
+
/**
|
|
1609
|
+
* Shortest graph distance from the target.
|
|
1610
|
+
*/
|
|
1611
|
+
distance: number
|
|
1612
|
+
/**
|
|
1613
|
+
* Located provenance path.
|
|
1614
|
+
*/
|
|
1615
|
+
via?: string[]
|
|
1616
|
+
}
|
|
1617
|
+
/**
|
|
1618
|
+
* Advisory project-local public-signature coupling report.
|
|
1619
|
+
*/
|
|
1620
|
+
export interface TypeCouplingReport {
|
|
1621
|
+
identity: SemanticAnalysisIdentity
|
|
1622
|
+
/**
|
|
1623
|
+
* Concrete assertion, such as `coupling-found`.
|
|
1624
|
+
*/
|
|
1625
|
+
assertion: string
|
|
1626
|
+
status: SemanticCompleteness
|
|
1627
|
+
/**
|
|
1628
|
+
* Project summary. Absent when analysis is unavailable, never a fake zero.
|
|
1629
|
+
*/
|
|
1630
|
+
summary?: (TypeCouplingSummary | null)
|
|
1631
|
+
/**
|
|
1632
|
+
* Per-file coupling details.
|
|
1633
|
+
*/
|
|
1634
|
+
files: TypeCouplingFile[]
|
|
1635
|
+
/**
|
|
1636
|
+
* Highest-degree files contributing to project coupling.
|
|
1637
|
+
*/
|
|
1638
|
+
top_contributors?: TypeCouplingFile[]
|
|
1639
|
+
/**
|
|
1640
|
+
* Located project-local type cycles.
|
|
1641
|
+
*/
|
|
1642
|
+
cycles?: TypeCouplingCycle[]
|
|
1643
|
+
/**
|
|
1644
|
+
* Counted omissions.
|
|
1645
|
+
*/
|
|
1646
|
+
omissions?: SemanticOmission[]
|
|
1647
|
+
/**
|
|
1648
|
+
* Plain next actions.
|
|
1649
|
+
*/
|
|
1650
|
+
actions?: string[]
|
|
1651
|
+
}
|
|
1652
|
+
/**
|
|
1653
|
+
* Project summary for advisory type coupling.
|
|
1654
|
+
*/
|
|
1655
|
+
export interface TypeCouplingSummary {
|
|
1656
|
+
/**
|
|
1657
|
+
* Measurement boundary, currently project-local public signatures.
|
|
1658
|
+
*/
|
|
1659
|
+
scope: string
|
|
1660
|
+
/**
|
|
1661
|
+
* Edge direction, currently directed.
|
|
1662
|
+
*/
|
|
1663
|
+
direction: string
|
|
1664
|
+
/**
|
|
1665
|
+
* Distinct project files in the selected TypeScript projects.
|
|
1666
|
+
*/
|
|
1667
|
+
project_size: number
|
|
1668
|
+
/**
|
|
1669
|
+
* Distinct project files included in the denominator.
|
|
1670
|
+
*/
|
|
1671
|
+
files_analyzed: number
|
|
1672
|
+
/**
|
|
1673
|
+
* Files participating in at least one project-local type edge.
|
|
1674
|
+
*/
|
|
1675
|
+
distinct_coupled_files: number
|
|
1676
|
+
/**
|
|
1677
|
+
* Project-local public-signature edge count before evidence bounding.
|
|
1678
|
+
*/
|
|
1679
|
+
edge_count: number
|
|
1680
|
+
/**
|
|
1681
|
+
* Percentage of analyzed files participating in a type edge.
|
|
1682
|
+
*/
|
|
1683
|
+
coupled_file_pct: number
|
|
1684
|
+
/**
|
|
1685
|
+
* Median distinct-file type connections.
|
|
1686
|
+
*/
|
|
1687
|
+
p50_distinct_connections: number
|
|
1688
|
+
/**
|
|
1689
|
+
* P90 distinct-file type connections.
|
|
1690
|
+
*/
|
|
1691
|
+
p90_distinct_connections: number
|
|
1692
|
+
/**
|
|
1693
|
+
* P95 incoming distinct-file type coupling.
|
|
1694
|
+
*/
|
|
1695
|
+
p95_public_types_used_by: number
|
|
1696
|
+
/**
|
|
1697
|
+
* P95 outgoing distinct-file type coupling.
|
|
1698
|
+
*/
|
|
1699
|
+
p95_public_api_depends_on: number
|
|
1700
|
+
/**
|
|
1701
|
+
* Percentage of files above the adaptive high-coupling threshold.
|
|
1702
|
+
*/
|
|
1703
|
+
high_coupling_pct: number
|
|
1704
|
+
/**
|
|
1705
|
+
* Share of edge endpoints represented by the top contributors.
|
|
1706
|
+
*/
|
|
1707
|
+
concentration: number
|
|
1708
|
+
/**
|
|
1709
|
+
* Number of project-local public-signature cycles.
|
|
1710
|
+
*/
|
|
1711
|
+
cycle_count: number
|
|
1712
|
+
}
|
|
1713
|
+
/**
|
|
1714
|
+
* Per-file project-local public-signature coupling.
|
|
1715
|
+
*/
|
|
1716
|
+
export interface TypeCouplingFile {
|
|
1717
|
+
/**
|
|
1718
|
+
* Project-root-relative file path.
|
|
1719
|
+
*/
|
|
1720
|
+
path: string
|
|
1721
|
+
/**
|
|
1722
|
+
* Distinct files this file's public API depends on.
|
|
1723
|
+
*/
|
|
1724
|
+
public_api_depends_on: number
|
|
1725
|
+
/**
|
|
1726
|
+
* Located project files this file's public API depends on.
|
|
1727
|
+
*/
|
|
1728
|
+
public_api_depends_on_files?: string[]
|
|
1729
|
+
/**
|
|
1730
|
+
* Distinct files whose public types use this file.
|
|
1731
|
+
*/
|
|
1732
|
+
public_types_used_by: number
|
|
1733
|
+
/**
|
|
1734
|
+
* Located project files whose public types use this file.
|
|
1735
|
+
*/
|
|
1736
|
+
public_types_used_by_files?: string[]
|
|
1737
|
+
/**
|
|
1738
|
+
* Located public-signature edges.
|
|
1739
|
+
*/
|
|
1740
|
+
edges: TypeCouplingEdge[]
|
|
1741
|
+
}
|
|
1742
|
+
/**
|
|
1743
|
+
* One project-local public-signature type edge.
|
|
1744
|
+
*/
|
|
1745
|
+
export interface TypeCouplingEdge {
|
|
1746
|
+
source: SemanticSymbol
|
|
1747
|
+
target: SemanticSymbol
|
|
1748
|
+
/**
|
|
1749
|
+
* Signature relation.
|
|
1750
|
+
*/
|
|
1751
|
+
relation: string
|
|
1752
|
+
evidence: SemanticSourceLocation
|
|
1753
|
+
/**
|
|
1754
|
+
* Scope, such as `module-export` or `package-public`.
|
|
1755
|
+
*/
|
|
1756
|
+
scope: string
|
|
1757
|
+
}
|
|
1758
|
+
/**
|
|
1759
|
+
* One project-root-relative source location used as semantic evidence.
|
|
1760
|
+
*/
|
|
1761
|
+
export interface SemanticSourceLocation {
|
|
1762
|
+
/**
|
|
1763
|
+
* Project-root-relative source path.
|
|
1764
|
+
*/
|
|
1765
|
+
path: string
|
|
1766
|
+
/**
|
|
1767
|
+
* One-based source line.
|
|
1768
|
+
*/
|
|
1769
|
+
line: number
|
|
1770
|
+
/**
|
|
1771
|
+
* Zero-based UTF-8 byte column.
|
|
1772
|
+
*/
|
|
1773
|
+
col: number
|
|
1774
|
+
}
|
|
1775
|
+
/**
|
|
1776
|
+
* One project-local cycle through public-signature type dependencies.
|
|
1777
|
+
*/
|
|
1778
|
+
export interface TypeCouplingCycle {
|
|
1779
|
+
/**
|
|
1780
|
+
* Ordered project-root-relative files, ending at the start file.
|
|
1781
|
+
*/
|
|
1782
|
+
files: string[]
|
|
1783
|
+
}
|
|
1784
|
+
/**
|
|
1785
|
+
* Closed abstention reason counts for stable machine consumption.
|
|
1786
|
+
*/
|
|
1787
|
+
export interface TypeAwareAbstentionCounts {
|
|
1788
|
+
/**
|
|
1789
|
+
* Candidates not contained by a selected TypeScript project.
|
|
1790
|
+
*/
|
|
1791
|
+
no_project: number
|
|
1792
|
+
/**
|
|
1793
|
+
* Candidates contained by more than one explicit TypeScript project.
|
|
1794
|
+
*/
|
|
1795
|
+
ambiguous_project: number
|
|
1796
|
+
/**
|
|
1797
|
+
* Candidates retained because structural diagnostics block scanning.
|
|
1798
|
+
*/
|
|
1799
|
+
blocking_diagnostics: number
|
|
1800
|
+
/**
|
|
1801
|
+
* Candidates whose exact declaration identity could not be resolved.
|
|
1802
|
+
*/
|
|
1803
|
+
unknown_symbol: number
|
|
1804
|
+
/**
|
|
1805
|
+
* Candidates using declaration syntax unsupported by the semantic backend.
|
|
1806
|
+
*/
|
|
1807
|
+
unsupported_syntax: number
|
|
1808
|
+
/**
|
|
1809
|
+
* Candidates retained because the bounded semantic request reached capacity.
|
|
1810
|
+
*/
|
|
1811
|
+
capacity: number
|
|
1812
|
+
}
|
|
1813
|
+
/**
|
|
1814
|
+
* Bounded provenance for one TypeScript project handled by the sidecar.
|
|
1815
|
+
*/
|
|
1816
|
+
export interface TypeAwareProjectMeta {
|
|
1817
|
+
/**
|
|
1818
|
+
* Project config relative to the analysis root, or `<inferred>`.
|
|
1819
|
+
*/
|
|
1820
|
+
config: string
|
|
1821
|
+
source: TypeAwareProjectSource
|
|
1822
|
+
status: TypeAwareProjectStatus
|
|
1823
|
+
/**
|
|
1824
|
+
* Candidates assigned to this project.
|
|
1825
|
+
*/
|
|
1826
|
+
candidate_count: number
|
|
1827
|
+
/**
|
|
1828
|
+
* Candidates confirmed as used and removed.
|
|
1829
|
+
*/
|
|
1830
|
+
confirmed_used_count: number
|
|
1831
|
+
/**
|
|
1832
|
+
* Candidates retained because they implement or override a contract.
|
|
1833
|
+
*/
|
|
1834
|
+
contract_preserved_count: number
|
|
1835
|
+
/**
|
|
1836
|
+
* Candidates with complete no-static-reference evidence.
|
|
1837
|
+
*/
|
|
1838
|
+
no_static_references_count: number
|
|
1839
|
+
/**
|
|
1840
|
+
* Candidates eligible for a guarded class-member fix.
|
|
1841
|
+
*/
|
|
1842
|
+
fix_eligible_count: number
|
|
1843
|
+
/**
|
|
1844
|
+
* Candidates whose exact semantic outcome remained unresolved.
|
|
1845
|
+
*/
|
|
1846
|
+
unresolved_count: number
|
|
1847
|
+
/**
|
|
1848
|
+
* Candidates retained without scanning because the project was unsafe.
|
|
1849
|
+
*/
|
|
1850
|
+
abstained_count: number
|
|
1851
|
+
/**
|
|
1852
|
+
* Config, program, syntactic, and bind diagnostics that block scanning.
|
|
940
1853
|
*/
|
|
941
|
-
|
|
942
|
-
}
|
|
1854
|
+
blocking_diagnostic_count: number
|
|
943
1855
|
/**
|
|
944
|
-
*
|
|
1856
|
+
* Source files loaded into this TypeScript program.
|
|
945
1857
|
*/
|
|
946
|
-
|
|
947
|
-
dead_code_issues: number
|
|
948
|
-
dead_code_has_errors: boolean
|
|
949
|
-
complexity_findings: number
|
|
950
|
-
max_cyclomatic?: (number | null)
|
|
951
|
-
duplication_clone_groups: number
|
|
952
|
-
}
|
|
1858
|
+
source_file_count: number
|
|
953
1859
|
/**
|
|
954
|
-
*
|
|
1860
|
+
* Whether this Program served more than one semantic query in the batch.
|
|
955
1861
|
*/
|
|
956
|
-
|
|
957
|
-
gate: AuditGate
|
|
958
|
-
dead_code_introduced: number
|
|
959
|
-
dead_code_inherited: number
|
|
960
|
-
complexity_introduced: number
|
|
961
|
-
complexity_inherited: number
|
|
962
|
-
duplication_introduced: number
|
|
963
|
-
duplication_inherited: number
|
|
964
|
-
styling_introduced: number
|
|
965
|
-
styling_inherited: number
|
|
966
|
-
}
|
|
1862
|
+
program_reused?: (boolean | null)
|
|
967
1863
|
/**
|
|
968
|
-
*
|
|
969
|
-
* passed (always present in MCP responses). Helps AI agents and CI systems
|
|
970
|
-
* interpret metric values without re-reading the docs site.
|
|
1864
|
+
* Whether this Program served more than one query in the current batch.
|
|
971
1865
|
*/
|
|
972
|
-
|
|
1866
|
+
program_shared_across_queries?: (boolean | null)
|
|
973
1867
|
/**
|
|
974
|
-
*
|
|
1868
|
+
* Whether the root-bound semantic session reused the prior snapshot.
|
|
975
1869
|
*/
|
|
976
|
-
|
|
1870
|
+
program_reused_from_previous_snapshot?: (boolean | null)
|
|
977
1871
|
/**
|
|
978
|
-
*
|
|
1872
|
+
* Monotonic revision within the root-bound semantic session.
|
|
979
1873
|
*/
|
|
980
|
-
|
|
1874
|
+
snapshot_revision?: (number | null)
|
|
981
1875
|
/**
|
|
982
|
-
*
|
|
1876
|
+
* Full, incremental, or no invalidation before this query.
|
|
983
1877
|
*/
|
|
984
|
-
|
|
985
|
-
[k: string]: string
|
|
986
|
-
}
|
|
1878
|
+
invalidation_kind?: (TypeAwareInvalidationKind | null)
|
|
987
1879
|
/**
|
|
988
|
-
*
|
|
1880
|
+
* Stable project-level gap reason.
|
|
989
1881
|
*/
|
|
990
|
-
|
|
991
|
-
|
|
1882
|
+
reason_code?: (SemanticGapReason | null)
|
|
1883
|
+
abstain_reason?: TypeAwareAbstentionReason
|
|
992
1884
|
}
|
|
993
1885
|
/**
|
|
994
|
-
*
|
|
1886
|
+
* Semantic sidecar timings, separated from Fallow's syntactic pipeline.
|
|
995
1887
|
*/
|
|
996
|
-
|
|
997
|
-
[k: string]: MetaRule
|
|
998
|
-
}
|
|
999
|
-
}
|
|
1888
|
+
export interface TypeAwarePhaseTimings {
|
|
1000
1889
|
/**
|
|
1001
|
-
*
|
|
1890
|
+
* TypeScript API construction and project snapshot selection.
|
|
1002
1891
|
*/
|
|
1003
|
-
|
|
1892
|
+
project_setup: number
|
|
1004
1893
|
/**
|
|
1005
|
-
*
|
|
1006
|
-
* flag on a later command. It is not derived from repository, path, user,
|
|
1007
|
-
* machine, project, or cloud data.
|
|
1894
|
+
* TypeScript diagnostics collected before any candidate refinement.
|
|
1008
1895
|
*/
|
|
1009
|
-
|
|
1896
|
+
diagnostics: number
|
|
1897
|
+
/**
|
|
1898
|
+
* Batched symbol lookup and exact declaration matching.
|
|
1899
|
+
*/
|
|
1900
|
+
symbol_scan: number
|
|
1010
1901
|
}
|
|
1011
1902
|
/**
|
|
1012
1903
|
* Single-metric definition inside [`Meta::metrics`].
|
|
@@ -1238,19 +2129,21 @@ empty_catalog_groups?: EmptyCatalogGroupFinding[]
|
|
|
1238
2129
|
*/
|
|
1239
2130
|
unresolved_catalog_references?: UnresolvedCatalogReferenceFinding[]
|
|
1240
2131
|
/**
|
|
1241
|
-
* Entries in pnpm-workspace.yaml's overrides: section,
|
|
1242
|
-
* pnpm.overrides block,
|
|
1243
|
-
*
|
|
2132
|
+
* Entries in pnpm-workspace.yaml's overrides: section, package.json's
|
|
2133
|
+
* pnpm.overrides block, or package.json's top-level npm overrides object,
|
|
2134
|
+
* whose target package is not declared by any workspace package and is
|
|
2135
|
+
* not present in pnpm-lock.yaml or package-lock.json. Default severity
|
|
1244
2136
|
* is warn because projects without a readable lockfile fall back to
|
|
1245
2137
|
* manifest-only checks; the hint field flags those conservative cases.
|
|
1246
2138
|
* Wrapped in [`UnusedDependencyOverrideFinding`].
|
|
1247
2139
|
*/
|
|
1248
2140
|
unused_dependency_overrides?: UnusedDependencyOverrideFinding[]
|
|
1249
2141
|
/**
|
|
1250
|
-
* pnpm.overrides entries whose key or value does not
|
|
1251
|
-
* override spec (empty key, empty value, malformed
|
|
1252
|
-
* parent matcher).
|
|
1253
|
-
* error. Wrapped in
|
|
2142
|
+
* pnpm.overrides or npm overrides entries whose key or value does not
|
|
2143
|
+
* parse as a valid override spec (empty key, empty value, malformed
|
|
2144
|
+
* selector, unbalanced parent matcher). The package manager will reject
|
|
2145
|
+
* these at install time. Default severity is error. Wrapped in
|
|
2146
|
+
* [`MisconfiguredDependencyOverrideFinding`].
|
|
1254
2147
|
*/
|
|
1255
2148
|
misconfigured_dependency_overrides?: MisconfiguredDependencyOverrideFinding[]
|
|
1256
2149
|
/**
|
|
@@ -1821,6 +2714,10 @@ is_re_export: boolean
|
|
|
1821
2714
|
* forward-compat).
|
|
1822
2715
|
*/
|
|
1823
2716
|
actions: IssueAction[]
|
|
2717
|
+
/**
|
|
2718
|
+
* Type-aware evidence for this exact candidate when requested.
|
|
2719
|
+
*/
|
|
2720
|
+
semantic?: (SemanticCandidateDecision | null)
|
|
1824
2721
|
/**
|
|
1825
2722
|
* Set by the audit pass when this finding is introduced relative to
|
|
1826
2723
|
* the merge-base.
|
|
@@ -1867,6 +2764,10 @@ is_re_export: boolean
|
|
|
1867
2764
|
* forward-compat).
|
|
1868
2765
|
*/
|
|
1869
2766
|
actions: IssueAction[]
|
|
2767
|
+
/**
|
|
2768
|
+
* Type-aware evidence for this exact candidate when requested.
|
|
2769
|
+
*/
|
|
2770
|
+
semantic?: (SemanticCandidateDecision | null)
|
|
1870
2771
|
/**
|
|
1871
2772
|
* Set by the audit pass when this finding is introduced relative to
|
|
1872
2773
|
* the merge-base.
|
|
@@ -1903,6 +2804,11 @@ col: number
|
|
|
1903
2804
|
* Byte offset of the type reference.
|
|
1904
2805
|
*/
|
|
1905
2806
|
span_start: number
|
|
2807
|
+
/**
|
|
2808
|
+
* Exact checker-backed provenance when type-aware analysis confirmed the
|
|
2809
|
+
* package-public leak across files or re-exports.
|
|
2810
|
+
*/
|
|
2811
|
+
semantic?: (SemanticPrivateTypeLeak | null)
|
|
1906
2812
|
/**
|
|
1907
2813
|
* Suggested next steps. Always emitted (possibly empty for
|
|
1908
2814
|
* forward-compat).
|
|
@@ -2095,6 +3001,10 @@ col: number
|
|
|
2095
3001
|
* forward-compat).
|
|
2096
3002
|
*/
|
|
2097
3003
|
actions: IssueAction[]
|
|
3004
|
+
/**
|
|
3005
|
+
* Type-aware evidence for this exact candidate when requested.
|
|
3006
|
+
*/
|
|
3007
|
+
semantic?: (SemanticCandidateDecision | null)
|
|
2098
3008
|
/**
|
|
2099
3009
|
* Set by the audit pass when this finding is introduced relative to
|
|
2100
3010
|
* the merge-base.
|
|
@@ -7187,6 +8097,7 @@ target: InspectTargetDescriptor
|
|
|
7187
8097
|
identity: InspectIdentity
|
|
7188
8098
|
evidence: InspectEvidence
|
|
7189
8099
|
warnings: string[]
|
|
8100
|
+
_meta?: (Meta | null)
|
|
7190
8101
|
}
|
|
7191
8102
|
export interface InspectFileIdentity {
|
|
7192
8103
|
file: string
|
|
@@ -7224,6 +8135,26 @@ churn?: (InspectEvidenceSection | null)
|
|
|
7224
8135
|
* best-effort and not part of the trusted ranked evidence.
|
|
7225
8136
|
*/
|
|
7226
8137
|
symbol_chain?: (InspectEvidenceSection | null)
|
|
8138
|
+
/**
|
|
8139
|
+
* Checker-backed declaration, alias, re-export, and use-site evidence.
|
|
8140
|
+
* Present only for a symbol target in type-aware mode.
|
|
8141
|
+
*/
|
|
8142
|
+
semantic_trace?: (InspectEvidenceSection | null)
|
|
8143
|
+
/**
|
|
8144
|
+
* Package-public TypeScript surface and private-type reachability.
|
|
8145
|
+
* Present only for a symbol target in type-aware mode.
|
|
8146
|
+
*/
|
|
8147
|
+
api_surface?: (InspectEvidenceSection | null)
|
|
8148
|
+
/**
|
|
8149
|
+
* Exact-symbol consumers and transitive affected files.
|
|
8150
|
+
* Present only for a symbol target in type-aware mode.
|
|
8151
|
+
*/
|
|
8152
|
+
symbol_impact?: (InspectEvidenceSection | null)
|
|
8153
|
+
/**
|
|
8154
|
+
* Test entry points reachable from the exact symbol, with provenance.
|
|
8155
|
+
* Present only for a symbol target in type-aware mode.
|
|
8156
|
+
*/
|
|
8157
|
+
targeted_tests?: (InspectEvidenceSection | null)
|
|
7227
8158
|
}
|
|
7228
8159
|
export interface InspectEvidenceSection {
|
|
7229
8160
|
status: InspectSectionStatus
|
|
@@ -7231,6 +8162,318 @@ scope: InspectEvidenceScope
|
|
|
7231
8162
|
message?: (string | null)
|
|
7232
8163
|
data?: unknown
|
|
7233
8164
|
}
|
|
8165
|
+
/**
|
|
8166
|
+
* Result of tracing an export: why it is considered used or unused.
|
|
8167
|
+
*/
|
|
8168
|
+
export interface ExportTrace {
|
|
8169
|
+
/**
|
|
8170
|
+
* The file containing the export.
|
|
8171
|
+
*/
|
|
8172
|
+
file: string
|
|
8173
|
+
/**
|
|
8174
|
+
* The export name being traced.
|
|
8175
|
+
*/
|
|
8176
|
+
export_name: string
|
|
8177
|
+
/**
|
|
8178
|
+
* Whether the file is reachable from an entry point.
|
|
8179
|
+
*/
|
|
8180
|
+
file_reachable: boolean
|
|
8181
|
+
/**
|
|
8182
|
+
* Whether the file is an entry point.
|
|
8183
|
+
*/
|
|
8184
|
+
is_entry_point: boolean
|
|
8185
|
+
/**
|
|
8186
|
+
* Whether the export is considered used.
|
|
8187
|
+
*/
|
|
8188
|
+
is_used: boolean
|
|
8189
|
+
/**
|
|
8190
|
+
* Files that reference this export directly.
|
|
8191
|
+
*/
|
|
8192
|
+
direct_references: ExportReference[]
|
|
8193
|
+
/**
|
|
8194
|
+
* Re-export chains that pass through this export.
|
|
8195
|
+
*/
|
|
8196
|
+
re_export_chains: ReExportChain[]
|
|
8197
|
+
/**
|
|
8198
|
+
* Human-readable reason summary.
|
|
8199
|
+
*/
|
|
8200
|
+
reason: string
|
|
8201
|
+
/**
|
|
8202
|
+
* Exact checker-backed references when type-aware tracing is enabled.
|
|
8203
|
+
*/
|
|
8204
|
+
semantic?: (SemanticSymbolTrace | null)
|
|
8205
|
+
}
|
|
8206
|
+
/**
|
|
8207
|
+
* A direct reference to an export.
|
|
8208
|
+
*/
|
|
8209
|
+
export interface ExportReference {
|
|
8210
|
+
/**
|
|
8211
|
+
* File that contains the reference.
|
|
8212
|
+
*/
|
|
8213
|
+
from_file: string
|
|
8214
|
+
/**
|
|
8215
|
+
* Reference kind, such as named import, default import, or re-export.
|
|
8216
|
+
*/
|
|
8217
|
+
kind: string
|
|
8218
|
+
}
|
|
8219
|
+
/**
|
|
8220
|
+
* A re-export chain showing how an export is propagated.
|
|
8221
|
+
*/
|
|
8222
|
+
export interface ReExportChain {
|
|
8223
|
+
/**
|
|
8224
|
+
* The barrel file that re-exports this symbol.
|
|
8225
|
+
*/
|
|
8226
|
+
barrel_file: string
|
|
8227
|
+
/**
|
|
8228
|
+
* The name it is re-exported as.
|
|
8229
|
+
*/
|
|
8230
|
+
exported_as: string
|
|
8231
|
+
/**
|
|
8232
|
+
* Number of references on the barrel's re-exported symbol.
|
|
8233
|
+
*/
|
|
8234
|
+
reference_count: number
|
|
8235
|
+
}
|
|
8236
|
+
/**
|
|
8237
|
+
* Result of tracing a class / enum / store MEMBER: the `--trace FILE:NAME`
|
|
8238
|
+
* fallback when `NAME` is not a top-level export but a member declared on one
|
|
8239
|
+
* (issue #1744). The trace runs on the module graph only, so it reports the
|
|
8240
|
+
* OWNING export's reachability and usage (the gating precondition for
|
|
8241
|
+
* member-level crediting) plus a pointer to the right `--unused-*-members`
|
|
8242
|
+
* command, rather than per-member crediting provenance.
|
|
8243
|
+
*/
|
|
8244
|
+
export interface ClassMemberTrace {
|
|
8245
|
+
/**
|
|
8246
|
+
* The file containing the member.
|
|
8247
|
+
*/
|
|
8248
|
+
file: string
|
|
8249
|
+
/**
|
|
8250
|
+
* The member name being traced.
|
|
8251
|
+
*/
|
|
8252
|
+
member_name: string
|
|
8253
|
+
/**
|
|
8254
|
+
* The member kind: `class-method`, `class-property`, `enum-member`,
|
|
8255
|
+
* `store-member`, or `namespace-member`.
|
|
8256
|
+
*/
|
|
8257
|
+
member_kind: string
|
|
8258
|
+
/**
|
|
8259
|
+
* The export that declares this member (the class / enum / store name).
|
|
8260
|
+
*/
|
|
8261
|
+
owner_export: string
|
|
8262
|
+
/**
|
|
8263
|
+
* Whether the owning export is considered used.
|
|
8264
|
+
*/
|
|
8265
|
+
owner_is_used: boolean
|
|
8266
|
+
/**
|
|
8267
|
+
* Whether the file is reachable from an entry point.
|
|
8268
|
+
*/
|
|
8269
|
+
owner_file_reachable: boolean
|
|
8270
|
+
/**
|
|
8271
|
+
* Whether the file is an entry point.
|
|
8272
|
+
*/
|
|
8273
|
+
owner_is_entry_point: boolean
|
|
8274
|
+
/**
|
|
8275
|
+
* Files that reference the owning export directly.
|
|
8276
|
+
*/
|
|
8277
|
+
owner_direct_references: ExportReference[]
|
|
8278
|
+
/**
|
|
8279
|
+
* Re-export chains through which the owning export is reachable. Populated
|
|
8280
|
+
* so a machine consumer can tell "used via a barrel" (empty direct refs but
|
|
8281
|
+
* non-empty chains) from "genuinely unreferenced".
|
|
8282
|
+
*/
|
|
8283
|
+
owner_re_export_chains: ReExportChain[]
|
|
8284
|
+
/**
|
|
8285
|
+
* Human-readable reason summary plus the follow-up command to inspect the
|
|
8286
|
+
* member finding.
|
|
8287
|
+
*/
|
|
8288
|
+
reason: string
|
|
8289
|
+
/**
|
|
8290
|
+
* Exact checker-backed member references when type-aware tracing is enabled.
|
|
8291
|
+
*/
|
|
8292
|
+
semantic?: (SemanticSymbolTrace | null)
|
|
8293
|
+
}
|
|
8294
|
+
/**
|
|
8295
|
+
* Result of tracing all edges for a file.
|
|
8296
|
+
*/
|
|
8297
|
+
export interface FileTrace {
|
|
8298
|
+
/**
|
|
8299
|
+
* The traced file.
|
|
8300
|
+
*/
|
|
8301
|
+
file: string
|
|
8302
|
+
/**
|
|
8303
|
+
* Whether this file is reachable from entry points.
|
|
8304
|
+
*/
|
|
8305
|
+
is_reachable: boolean
|
|
8306
|
+
/**
|
|
8307
|
+
* Whether this file is an entry point.
|
|
8308
|
+
*/
|
|
8309
|
+
is_entry_point: boolean
|
|
8310
|
+
/**
|
|
8311
|
+
* Exports declared by this file.
|
|
8312
|
+
*/
|
|
8313
|
+
exports: TracedExport[]
|
|
8314
|
+
/**
|
|
8315
|
+
* Files that this file imports from.
|
|
8316
|
+
*/
|
|
8317
|
+
imports_from: string[]
|
|
8318
|
+
/**
|
|
8319
|
+
* Files that import from this file.
|
|
8320
|
+
*/
|
|
8321
|
+
imported_by: string[]
|
|
8322
|
+
/**
|
|
8323
|
+
* Re-exports declared by this file.
|
|
8324
|
+
*/
|
|
8325
|
+
re_exports: TracedReExport[]
|
|
8326
|
+
}
|
|
8327
|
+
/**
|
|
8328
|
+
* An export with usage information.
|
|
8329
|
+
*/
|
|
8330
|
+
export interface TracedExport {
|
|
8331
|
+
/**
|
|
8332
|
+
* Export name.
|
|
8333
|
+
*/
|
|
8334
|
+
name: string
|
|
8335
|
+
/**
|
|
8336
|
+
* Whether the export is type-only.
|
|
8337
|
+
*/
|
|
8338
|
+
is_type_only: boolean
|
|
8339
|
+
/**
|
|
8340
|
+
* Number of references to this export.
|
|
8341
|
+
*/
|
|
8342
|
+
reference_count: number
|
|
8343
|
+
/**
|
|
8344
|
+
* Files that reference this export.
|
|
8345
|
+
*/
|
|
8346
|
+
referenced_by: ExportReference[]
|
|
8347
|
+
}
|
|
8348
|
+
/**
|
|
8349
|
+
* A re-export with source information.
|
|
8350
|
+
*/
|
|
8351
|
+
export interface TracedReExport {
|
|
8352
|
+
/**
|
|
8353
|
+
* Source file being re-exported from.
|
|
8354
|
+
*/
|
|
8355
|
+
source_file: string
|
|
8356
|
+
/**
|
|
8357
|
+
* Imported symbol name.
|
|
8358
|
+
*/
|
|
8359
|
+
imported_name: string
|
|
8360
|
+
/**
|
|
8361
|
+
* Exported symbol name.
|
|
8362
|
+
*/
|
|
8363
|
+
exported_name: string
|
|
8364
|
+
}
|
|
8365
|
+
/**
|
|
8366
|
+
* Result of tracing a dependency: where it is used.
|
|
8367
|
+
*/
|
|
8368
|
+
export interface DependencyTrace {
|
|
8369
|
+
/**
|
|
8370
|
+
* The dependency name being traced.
|
|
8371
|
+
*/
|
|
8372
|
+
package_name: string
|
|
8373
|
+
/**
|
|
8374
|
+
* Files that import this dependency.
|
|
8375
|
+
*/
|
|
8376
|
+
imported_by: string[]
|
|
8377
|
+
/**
|
|
8378
|
+
* Files that import this dependency with type-only imports.
|
|
8379
|
+
*/
|
|
8380
|
+
type_only_imported_by: string[]
|
|
8381
|
+
/**
|
|
8382
|
+
* Whether the dependency is invoked from package.json scripts or CI configs.
|
|
8383
|
+
*/
|
|
8384
|
+
used_in_scripts: boolean
|
|
8385
|
+
/**
|
|
8386
|
+
* Whether the dependency is used at all.
|
|
8387
|
+
*/
|
|
8388
|
+
is_used: boolean
|
|
8389
|
+
/**
|
|
8390
|
+
* Total import count.
|
|
8391
|
+
*/
|
|
8392
|
+
import_count: number
|
|
8393
|
+
}
|
|
8394
|
+
/**
|
|
8395
|
+
* Result of tracing a clone: all groups containing the code at a source
|
|
8396
|
+
* location or addressed by a stable clone fingerprint.
|
|
8397
|
+
*/
|
|
8398
|
+
export interface CloneTrace {
|
|
8399
|
+
/**
|
|
8400
|
+
* File passed to the trace request, root-relative when a group matches.
|
|
8401
|
+
*/
|
|
8402
|
+
file: string
|
|
8403
|
+
/**
|
|
8404
|
+
* 1-based line passed to the trace request or representative group line.
|
|
8405
|
+
*/
|
|
8406
|
+
line: number
|
|
8407
|
+
/**
|
|
8408
|
+
* The matched clone instance, if one exists.
|
|
8409
|
+
*/
|
|
8410
|
+
matched_instance?: (CloneInstance | null)
|
|
8411
|
+
/**
|
|
8412
|
+
* Clone groups matched by the trace request.
|
|
8413
|
+
*/
|
|
8414
|
+
clone_groups: TracedCloneGroup[]
|
|
8415
|
+
}
|
|
8416
|
+
/**
|
|
8417
|
+
* One clone group returned from a clone trace request.
|
|
8418
|
+
*/
|
|
8419
|
+
export interface TracedCloneGroup {
|
|
8420
|
+
/**
|
|
8421
|
+
* Stable content fingerprint, usually `dup:<8hex>` and widened on rare
|
|
8422
|
+
* report collisions.
|
|
8423
|
+
*/
|
|
8424
|
+
fingerprint: string
|
|
8425
|
+
/**
|
|
8426
|
+
* Number of tokens in the duplicated block.
|
|
8427
|
+
*/
|
|
8428
|
+
token_count: number
|
|
8429
|
+
/**
|
|
8430
|
+
* Number of lines in the duplicated block.
|
|
8431
|
+
*/
|
|
8432
|
+
line_count: number
|
|
8433
|
+
/**
|
|
8434
|
+
* Root-relative clone instances in this group.
|
|
8435
|
+
*/
|
|
8436
|
+
instances: CloneInstance[]
|
|
8437
|
+
suggestion: RefactoringSuggestion
|
|
8438
|
+
/**
|
|
8439
|
+
* Best-effort name for the extracted function. Advisory only.
|
|
8440
|
+
*/
|
|
8441
|
+
suggested_name?: (string | null)
|
|
8442
|
+
}
|
|
8443
|
+
/**
|
|
8444
|
+
* Result of computing the impact closure for a single file as the seed.
|
|
8445
|
+
*/
|
|
8446
|
+
export interface ImpactClosureTrace {
|
|
8447
|
+
/**
|
|
8448
|
+
* The seed file, root-relative.
|
|
8449
|
+
*/
|
|
8450
|
+
seed: string
|
|
8451
|
+
/**
|
|
8452
|
+
* Root-relative paths transitively affected by the seed.
|
|
8453
|
+
*/
|
|
8454
|
+
affected_not_shown: string[]
|
|
8455
|
+
/**
|
|
8456
|
+
* Coordination gaps between the seed and consumers.
|
|
8457
|
+
*/
|
|
8458
|
+
coordination_gap: ImpactClosureGap[]
|
|
8459
|
+
}
|
|
8460
|
+
/**
|
|
8461
|
+
* One coordination-gap entry in an [`ImpactClosureTrace`].
|
|
8462
|
+
*/
|
|
8463
|
+
export interface ImpactClosureGap {
|
|
8464
|
+
/**
|
|
8465
|
+
* Root-relative path of the consumer module.
|
|
8466
|
+
*/
|
|
8467
|
+
consumer_file: string
|
|
8468
|
+
/**
|
|
8469
|
+
* Exported symbol names the consumer references.
|
|
8470
|
+
*/
|
|
8471
|
+
consumed_symbols: string[]
|
|
8472
|
+
/**
|
|
8473
|
+
* Scope note for the syntactic trace.
|
|
8474
|
+
*/
|
|
8475
|
+
note: string
|
|
8476
|
+
}
|
|
7234
8477
|
/**
|
|
7235
8478
|
* The result of a symbol-level call-chain trace. Its own surface (`kind:
|
|
7236
8479
|
* "trace"`), NOT folded into the ranked brief.
|
|
@@ -7377,6 +8620,7 @@ export interface ReviewEnvelopeMeta {
|
|
|
7377
8620
|
schema: ReviewEnvelopeSchema
|
|
7378
8621
|
provider: ReviewProvider
|
|
7379
8622
|
check_conclusion?: (ReviewCheckConclusion | null)
|
|
8623
|
+
review_id?: (ReviewId | null)
|
|
7380
8624
|
}
|
|
7381
8625
|
/**
|
|
7382
8626
|
* Envelope emitted by `fallow ci reconcile-review --format json`. Used by
|
|
@@ -8165,19 +9409,21 @@ empty_catalog_groups?: EmptyCatalogGroupFinding[]
|
|
|
8165
9409
|
*/
|
|
8166
9410
|
unresolved_catalog_references?: UnresolvedCatalogReferenceFinding[]
|
|
8167
9411
|
/**
|
|
8168
|
-
* Entries in pnpm-workspace.yaml's overrides: section,
|
|
8169
|
-
* pnpm.overrides block,
|
|
8170
|
-
*
|
|
9412
|
+
* Entries in pnpm-workspace.yaml's overrides: section, package.json's
|
|
9413
|
+
* pnpm.overrides block, or package.json's top-level npm overrides object,
|
|
9414
|
+
* whose target package is not declared by any workspace package and is
|
|
9415
|
+
* not present in pnpm-lock.yaml or package-lock.json. Default severity
|
|
8171
9416
|
* is warn because projects without a readable lockfile fall back to
|
|
8172
9417
|
* manifest-only checks; the hint field flags those conservative cases.
|
|
8173
9418
|
* Wrapped in [`UnusedDependencyOverrideFinding`].
|
|
8174
9419
|
*/
|
|
8175
9420
|
unused_dependency_overrides?: UnusedDependencyOverrideFinding[]
|
|
8176
9421
|
/**
|
|
8177
|
-
* pnpm.overrides entries whose key or value does not
|
|
8178
|
-
* override spec (empty key, empty value, malformed
|
|
8179
|
-
* parent matcher).
|
|
8180
|
-
* error. Wrapped in
|
|
9422
|
+
* pnpm.overrides or npm overrides entries whose key or value does not
|
|
9423
|
+
* parse as a valid override spec (empty key, empty value, malformed
|
|
9424
|
+
* selector, unbalanced parent matcher). The package manager will reject
|
|
9425
|
+
* these at install time. Default severity is error. Wrapped in
|
|
9426
|
+
* [`MisconfiguredDependencyOverrideFinding`].
|
|
8181
9427
|
*/
|
|
8182
9428
|
misconfigured_dependency_overrides?: MisconfiguredDependencyOverrideFinding[]
|
|
8183
9429
|
/**
|
|
@@ -10352,6 +11598,25 @@ reason?: (string | null)
|
|
|
10352
11598
|
*/
|
|
10353
11599
|
reason_present: boolean
|
|
10354
11600
|
}
|
|
11601
|
+
/**
|
|
11602
|
+
* Envelope emitted by `fallow type-aware status --format json`.
|
|
11603
|
+
*/
|
|
11604
|
+
export interface TypeAwareStatusOutput {
|
|
11605
|
+
schema_version: SchemaVersion
|
|
11606
|
+
version: ToolVersion
|
|
11607
|
+
available: boolean
|
|
11608
|
+
discovery_source?: (string | null)
|
|
11609
|
+
/**
|
|
11610
|
+
* Root-relative companion path, or only the executable name when the
|
|
11611
|
+
* companion lives outside the analyzed project.
|
|
11612
|
+
*/
|
|
11613
|
+
companion_path?: (string | null)
|
|
11614
|
+
package_version?: (string | null)
|
|
11615
|
+
protocol_version: number
|
|
11616
|
+
backend_family?: (string | null)
|
|
11617
|
+
backend_version?: (string | null)
|
|
11618
|
+
remediation?: (string | null)
|
|
11619
|
+
}
|
|
10355
11620
|
/**
|
|
10356
11621
|
* Single CodeClimate-compatible issue inside [`CodeClimateOutput`].
|
|
10357
11622
|
*/
|