fallow 3.22.0 → 3.23.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/capabilities.json +6 -1
- package/package.json +10 -10
- package/schema.json +1 -1
- package/skills/fallow/SKILL.md +1 -0
- package/skills/fallow/references/cli-reference.md +10 -10
- package/types/output-contract.d.ts +107 -2
package/capabilities.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fallow",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.23.0",
|
|
4
4
|
"manifest_version": "1",
|
|
5
5
|
"description": "Codebase analyzer for TypeScript/JavaScript: unused code, circular dependencies, code duplication, complexity hotspots, and architecture boundary violations",
|
|
6
6
|
"global_flags": [
|
|
@@ -906,6 +906,11 @@
|
|
|
906
906
|
"description": "Inspect the optional TypeScript semantic companion",
|
|
907
907
|
"flags": []
|
|
908
908
|
},
|
|
909
|
+
{
|
|
910
|
+
"name": "doctor",
|
|
911
|
+
"description": "Diagnose project readiness without analysis or mutation",
|
|
912
|
+
"flags": []
|
|
913
|
+
},
|
|
909
914
|
{
|
|
910
915
|
"name": "similar-code",
|
|
911
916
|
"description": "Find semantically similar functions with a pinned local model (opt-in)",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fallow",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.23.0",
|
|
4
4
|
"mcpName": "io.github.fallow-rs/fallow",
|
|
5
5
|
"description": "Codebase intelligence for TypeScript and JavaScript. Free static analysis of code and styles, optional paid runtime intelligence (Fallow Runtime). Quality, risk, architecture, dependencies, duplication, and design-system drift for humans, CI, and the agents writing your code. Zero-config framework support.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -88,14 +88,14 @@
|
|
|
88
88
|
"@tanstack/intent": "0.3.6"
|
|
89
89
|
},
|
|
90
90
|
"optionalDependencies": {
|
|
91
|
-
"@fallow-cli/darwin-arm64": "3.
|
|
92
|
-
"@fallow-cli/darwin-x64": "3.
|
|
93
|
-
"@fallow-cli/linux-x64-gnu": "3.
|
|
94
|
-
"@fallow-cli/linux-arm64-gnu": "3.
|
|
95
|
-
"@fallow-cli/linux-x64-musl": "3.
|
|
96
|
-
"@fallow-cli/linux-arm64-musl": "3.
|
|
97
|
-
"@fallow-cli/win32-arm64-msvc": "3.
|
|
98
|
-
"@fallow-cli/win32-x64-msvc": "3.
|
|
99
|
-
"fallow-type-aware": "3.
|
|
91
|
+
"@fallow-cli/darwin-arm64": "3.23.0",
|
|
92
|
+
"@fallow-cli/darwin-x64": "3.23.0",
|
|
93
|
+
"@fallow-cli/linux-x64-gnu": "3.23.0",
|
|
94
|
+
"@fallow-cli/linux-arm64-gnu": "3.23.0",
|
|
95
|
+
"@fallow-cli/linux-x64-musl": "3.23.0",
|
|
96
|
+
"@fallow-cli/linux-arm64-musl": "3.23.0",
|
|
97
|
+
"@fallow-cli/win32-arm64-msvc": "3.23.0",
|
|
98
|
+
"@fallow-cli/win32-x64-msvc": "3.23.0",
|
|
99
|
+
"fallow-type-aware": "3.23.0"
|
|
100
100
|
}
|
|
101
101
|
}
|
package/schema.json
CHANGED
|
@@ -905,7 +905,7 @@
|
|
|
905
905
|
"type": "array",
|
|
906
906
|
"items": {
|
|
907
907
|
"type": "string",
|
|
908
|
-
"pattern": "^dup:(?:[0-9a-f]{8}|[0-9a-f]{16}(?:-[1-9][0-9]*)?):(?:[2-9]|[1-9][0-9]+)$"
|
|
908
|
+
"pattern": "^dup:(?:[0-9a-f]{8}|[0-9a-f]{16}(?:-r?[1-9][0-9]*)?):(?:[2-9]|[1-9][0-9]+)$"
|
|
909
909
|
},
|
|
910
910
|
"default": []
|
|
911
911
|
},
|
package/skills/fallow/SKILL.md
CHANGED
|
@@ -87,6 +87,7 @@ Route by intent before reaching for the big analysis commands. Same matrix as `f
|
|
|
87
87
|
| `dead-code` | Dead code analysis (`check` is an alias) | `--unused-exports`, `--changed-since`, `--changed-workspaces`, `--production`, `--file`, `--include-entry-exports`, `--stale-suppressions`, `--ci`, `--group-by`, `--summary`, `--fail-on-regression`, `--tolerance`, `--regression-baseline`, `--save-regression-baseline` |
|
|
88
88
|
| `watch` | Watch for changes and re-run analysis | `--no-clear` |
|
|
89
89
|
| `type-aware` | Inspect the optional TypeScript semantic companion | |
|
|
90
|
+
| `doctor` | Diagnose project readiness without analysis or mutation | |
|
|
90
91
|
| `similar-code` | Find semantically similar functions with a pinned local model (opt-in) | `--threshold`, `--min-lines`, `--top`, `--file` |
|
|
91
92
|
| `inspect` | Compose one evidence bundle for a file or exported symbol | `--file <path>`, `--symbol <file>:<export>` |
|
|
92
93
|
| `trace` | Trace a symbol's call chain (best-effort, syntactic; OFF the ranked path) | `symbol`, `--callers`, `--callees`, `--depth` |
|
|
@@ -385,7 +385,7 @@ Human output groups paths under "Shared with your team (commit these)" and "Loca
|
|
|
385
385
|
{
|
|
386
386
|
"kind": "agent-install",
|
|
387
387
|
"schema_version": 1,
|
|
388
|
-
"fallow_version": "3.
|
|
388
|
+
"fallow_version": "3.23.0",
|
|
389
389
|
"root": "/abs/path",
|
|
390
390
|
"mode": "install",
|
|
391
391
|
"dry_run": false,
|
|
@@ -589,7 +589,7 @@ fallow health --format json --quiet --trend
|
|
|
589
589
|
{
|
|
590
590
|
"kind": "health",
|
|
591
591
|
"schema_version": 7,
|
|
592
|
-
"version": "3.
|
|
592
|
+
"version": "3.23.0",
|
|
593
593
|
"elapsed_ms": 32,
|
|
594
594
|
"summary": {
|
|
595
595
|
"files_analyzed": 482,
|
|
@@ -987,7 +987,7 @@ fallow audit \
|
|
|
987
987
|
{
|
|
988
988
|
"kind": "audit",
|
|
989
989
|
"schema_version": 7,
|
|
990
|
-
"version": "3.
|
|
990
|
+
"version": "3.23.0",
|
|
991
991
|
"command": "audit",
|
|
992
992
|
"verdict": "fail",
|
|
993
993
|
"changed_files_count": 12,
|
|
@@ -1064,7 +1064,7 @@ fallow flags --format json --quiet --workspace my-package
|
|
|
1064
1064
|
```json
|
|
1065
1065
|
{
|
|
1066
1066
|
"schema_version": 7,
|
|
1067
|
-
"version": "3.
|
|
1067
|
+
"version": "3.23.0",
|
|
1068
1068
|
"elapsed_ms": 116,
|
|
1069
1069
|
"feature_flags": [],
|
|
1070
1070
|
"total_flags": 0
|
|
@@ -1165,7 +1165,7 @@ fallow security --gate newly-reachable --changed-since origin/main
|
|
|
1165
1165
|
{
|
|
1166
1166
|
"kind": "security",
|
|
1167
1167
|
"schema_version": "4",
|
|
1168
|
-
"version": "3.
|
|
1168
|
+
"version": "3.23.0",
|
|
1169
1169
|
"elapsed_ms": 42,
|
|
1170
1170
|
"config": {
|
|
1171
1171
|
"rules": {
|
|
@@ -1194,7 +1194,7 @@ fallow security --gate newly-reachable --changed-since origin/main
|
|
|
1194
1194
|
{
|
|
1195
1195
|
"kind": "security",
|
|
1196
1196
|
"schema_version": "4",
|
|
1197
|
-
"version": "3.
|
|
1197
|
+
"version": "3.23.0",
|
|
1198
1198
|
"elapsed_ms": 42,
|
|
1199
1199
|
"config": {
|
|
1200
1200
|
"rules": {
|
|
@@ -1959,7 +1959,7 @@ The HTTP layer mirrors the bash `gh_api_retry` / `curl_retry` helpers: `FALLOW_A
|
|
|
1959
1959
|
{
|
|
1960
1960
|
"kind": "dead-code",
|
|
1961
1961
|
"schema_version": 7,
|
|
1962
|
-
"version": "3.
|
|
1962
|
+
"version": "3.23.0",
|
|
1963
1963
|
"elapsed_ms": 45,
|
|
1964
1964
|
"total_issues": 12,
|
|
1965
1965
|
"entry_points": {
|
|
@@ -2119,7 +2119,7 @@ When `--baseline` is used in combined output, the JSON includes a `baseline_delt
|
|
|
2119
2119
|
{
|
|
2120
2120
|
"kind": "dupes",
|
|
2121
2121
|
"schema_version": 7,
|
|
2122
|
-
"version": "3.
|
|
2122
|
+
"version": "3.23.0",
|
|
2123
2123
|
"elapsed_ms": 82,
|
|
2124
2124
|
"total_clones": 15,
|
|
2125
2125
|
"total_lines_duplicated": 230,
|
|
@@ -2163,11 +2163,11 @@ When running `fallow` with no subcommand (all analyses), the JSON output combine
|
|
|
2163
2163
|
{
|
|
2164
2164
|
"kind": "combined",
|
|
2165
2165
|
"schema_version": 7,
|
|
2166
|
-
"version": "3.
|
|
2166
|
+
"version": "3.23.0",
|
|
2167
2167
|
"elapsed_ms": 159,
|
|
2168
2168
|
"check": {
|
|
2169
2169
|
"schema_version": 7,
|
|
2170
|
-
"version": "3.
|
|
2170
|
+
"version": "3.23.0",
|
|
2171
2171
|
"elapsed_ms": 45,
|
|
2172
2172
|
"total_issues": 12,
|
|
2173
2173
|
"unused_files": [],
|
|
@@ -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`, `type-aware-status`, `similar-code`, `similar-code-inspect`, `similar-code-review`. 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`, `doctor`, `type-aware-status`, `similar-code`, `similar-code-inspect`, `similar-code-review`. 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
|
/**
|
|
@@ -96,6 +96,8 @@ kind: "review-walkthrough-guide"
|
|
|
96
96
|
kind: "review-walkthrough-validation"
|
|
97
97
|
}) | (SuppressionInventoryOutput & {
|
|
98
98
|
kind: "suppression-inventory"
|
|
99
|
+
}) | (DoctorOutput & {
|
|
100
|
+
kind: "doctor"
|
|
99
101
|
}) | (TypeAwareStatusOutput & {
|
|
100
102
|
kind: "type-aware-status"
|
|
101
103
|
}) | (SimilarCodeOutput & {
|
|
@@ -1059,6 +1061,30 @@ export type SuppressionInventoryLevel = ("file" | "line")
|
|
|
1059
1061
|
* How a suppression in the inventory was authored.
|
|
1060
1062
|
*/
|
|
1061
1063
|
export type SuppressionInventoryOrigin = "comment"
|
|
1064
|
+
/**
|
|
1065
|
+
* Schema projection for the exact doctor envelope version.
|
|
1066
|
+
*/
|
|
1067
|
+
export type DoctorSchemaVersion = 1
|
|
1068
|
+
/**
|
|
1069
|
+
* Schema projection for `.` as the privacy-safe diagnosed project root.
|
|
1070
|
+
*/
|
|
1071
|
+
export type DoctorProjectRoot = "."
|
|
1072
|
+
/**
|
|
1073
|
+
* Aggregate readiness outcome.
|
|
1074
|
+
*/
|
|
1075
|
+
export type DoctorStatus = ("pass" | "warn" | "fail")
|
|
1076
|
+
/**
|
|
1077
|
+
* Stable identifier for a doctor check. Declaration order is output order.
|
|
1078
|
+
*/
|
|
1079
|
+
export type DoctorCheckId = ("root" | "config" | "workspaces" | "plugins" | "type-aware")
|
|
1080
|
+
/**
|
|
1081
|
+
* Stable category for a doctor check.
|
|
1082
|
+
*/
|
|
1083
|
+
export type DoctorCheckCategory = ("project" | "configuration" | "workspace" | "plugin" | "companion")
|
|
1084
|
+
/**
|
|
1085
|
+
* Per-check readiness outcome.
|
|
1086
|
+
*/
|
|
1087
|
+
export type DoctorCheckStatus = ("pass" | "warn" | "fail" | "skipped")
|
|
1062
1088
|
/**
|
|
1063
1089
|
* Schema projection for the type-aware status envelope's exact version.
|
|
1064
1090
|
*/
|
|
@@ -13516,6 +13542,75 @@ reason?: (string | null)
|
|
|
13516
13542
|
*/
|
|
13517
13543
|
reason_present: boolean
|
|
13518
13544
|
}
|
|
13545
|
+
/**
|
|
13546
|
+
* Versioned readiness envelope emitted by `fallow doctor --format json`.
|
|
13547
|
+
*/
|
|
13548
|
+
export interface DoctorOutput {
|
|
13549
|
+
schema_version: DoctorSchemaVersion
|
|
13550
|
+
version: ToolVersion
|
|
13551
|
+
root: DoctorProjectRoot
|
|
13552
|
+
status: DoctorStatus
|
|
13553
|
+
summary: DoctorSummary
|
|
13554
|
+
/**
|
|
13555
|
+
* Checks in stable contract order.
|
|
13556
|
+
*/
|
|
13557
|
+
checks: DoctorCheck[]
|
|
13558
|
+
}
|
|
13559
|
+
/**
|
|
13560
|
+
* Counts for every per-check status.
|
|
13561
|
+
*/
|
|
13562
|
+
export interface DoctorSummary {
|
|
13563
|
+
/**
|
|
13564
|
+
* Successful checks.
|
|
13565
|
+
*/
|
|
13566
|
+
pass: number
|
|
13567
|
+
/**
|
|
13568
|
+
* Advisory checks.
|
|
13569
|
+
*/
|
|
13570
|
+
warn: number
|
|
13571
|
+
/**
|
|
13572
|
+
* Failed checks.
|
|
13573
|
+
*/
|
|
13574
|
+
fail: number
|
|
13575
|
+
/**
|
|
13576
|
+
* Inapplicable or prerequisite-blocked checks.
|
|
13577
|
+
*/
|
|
13578
|
+
skipped: number
|
|
13579
|
+
}
|
|
13580
|
+
/**
|
|
13581
|
+
* One deterministic doctor check result.
|
|
13582
|
+
*/
|
|
13583
|
+
export interface DoctorCheck {
|
|
13584
|
+
id: DoctorCheckId
|
|
13585
|
+
category: DoctorCheckCategory
|
|
13586
|
+
status: DoctorCheckStatus
|
|
13587
|
+
/**
|
|
13588
|
+
* Whether failure makes the project not ready.
|
|
13589
|
+
*/
|
|
13590
|
+
required: boolean
|
|
13591
|
+
/**
|
|
13592
|
+
* Human-readable result with no host-specific absolute paths.
|
|
13593
|
+
*/
|
|
13594
|
+
message: string
|
|
13595
|
+
/**
|
|
13596
|
+
* Optional actionable next command.
|
|
13597
|
+
*/
|
|
13598
|
+
remediation?: (DoctorRemediation | null)
|
|
13599
|
+
}
|
|
13600
|
+
/**
|
|
13601
|
+
* Actionable remediation attached to a doctor check.
|
|
13602
|
+
*/
|
|
13603
|
+
export interface DoctorRemediation {
|
|
13604
|
+
/**
|
|
13605
|
+
* Command the user or agent can choose to run.
|
|
13606
|
+
*/
|
|
13607
|
+
command: string
|
|
13608
|
+
cwd: DoctorProjectRoot
|
|
13609
|
+
/**
|
|
13610
|
+
* Whether running the command can modify project files or dependencies.
|
|
13611
|
+
*/
|
|
13612
|
+
mutating: boolean
|
|
13613
|
+
}
|
|
13519
13614
|
/**
|
|
13520
13615
|
* Envelope emitted by `fallow type-aware status --format json`.
|
|
13521
13616
|
*/
|
|
@@ -14121,6 +14216,12 @@ severity: CodeClimateSeverity
|
|
|
14121
14216
|
*/
|
|
14122
14217
|
fingerprint: string
|
|
14123
14218
|
location: CodeClimateLocation
|
|
14219
|
+
/**
|
|
14220
|
+
* Other source locations that provide evidence for the finding. GitLab's
|
|
14221
|
+
* Code Quality widget ignores this standard CodeClimate field, but Fallow
|
|
14222
|
+
* preserves it for review-comment rendering.
|
|
14223
|
+
*/
|
|
14224
|
+
other_locations?: CodeClimateLocation[]
|
|
14124
14225
|
/**
|
|
14125
14226
|
* Optional owner attribution used by grouped dead-code output.
|
|
14126
14227
|
*/
|
|
@@ -14142,13 +14243,17 @@ path: string
|
|
|
14142
14243
|
lines: CodeClimateLines
|
|
14143
14244
|
}
|
|
14144
14245
|
/**
|
|
14145
|
-
*
|
|
14246
|
+
* Inclusive line range for [`CodeClimateLocation`].
|
|
14146
14247
|
*/
|
|
14147
14248
|
export interface CodeClimateLines {
|
|
14148
14249
|
/**
|
|
14149
14250
|
* 1-based start line.
|
|
14150
14251
|
*/
|
|
14151
14252
|
begin: number
|
|
14253
|
+
/**
|
|
14254
|
+
* Inclusive 1-based end line. Omitted for point findings.
|
|
14255
|
+
*/
|
|
14256
|
+
end?: (number | null)
|
|
14152
14257
|
}
|
|
14153
14258
|
/**
|
|
14154
14259
|
* Structured JSON error emitted on stdout when `--format json` is active and a
|