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