@aiready/cli 0.10.3 → 0.10.4
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/.turbo/turbo-build.log +7 -7
- package/.turbo/turbo-test.log +3 -3
- package/dist/chunk-R3O7QPKD.mjs +419 -0
- package/dist/cli.js +97 -25
- package/dist/cli.mjs +88 -16
- package/dist/index.js +13 -11
- package/dist/index.mjs +1 -1
- package/package.json +12 -12
- package/src/.aiready/aiready-report-20260306-191804.json +8281 -0
- package/src/.aiready/aiready-report-20260306-191824.json +8281 -0
- package/src/.aiready/aiready-report-20260306-191838.json +8281 -0
- package/src/.aiready/aiready-report-20260306-192002.json +15942 -0
- package/src/.aiready/aiready-report-20260306-192102.json +15048 -0
- package/src/.aiready/aiready-report-20260306-202328.json +19961 -0
- package/src/commands/scan.ts +124 -14
- package/src/index.ts +27 -13
package/dist/cli.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
__require,
|
|
4
4
|
analyzeUnified,
|
|
5
5
|
scoreUnified
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-R3O7QPKD.mjs";
|
|
7
7
|
|
|
8
8
|
// src/cli.ts
|
|
9
9
|
import { Command } from "commander";
|
|
@@ -28,7 +28,9 @@ import {
|
|
|
28
28
|
getModelPreset,
|
|
29
29
|
getRating,
|
|
30
30
|
getRatingDisplay,
|
|
31
|
-
getRepoMetadata
|
|
31
|
+
getRepoMetadata,
|
|
32
|
+
Severity,
|
|
33
|
+
IssueType
|
|
32
34
|
} from "@aiready/core";
|
|
33
35
|
|
|
34
36
|
// src/utils/helpers.ts
|
|
@@ -533,18 +535,18 @@ async function scanAction(directory, options) {
|
|
|
533
535
|
topFiles.forEach(([file, issues], idx) => {
|
|
534
536
|
const counts = issues.reduce(
|
|
535
537
|
(acc, it) => {
|
|
536
|
-
const s = (it.severity ||
|
|
538
|
+
const s = (it.severity || Severity.Info).toLowerCase();
|
|
537
539
|
acc[s] = (acc[s] || 0) + 1;
|
|
538
540
|
return acc;
|
|
539
541
|
},
|
|
540
542
|
{}
|
|
541
543
|
);
|
|
542
544
|
const sample = issues.find(
|
|
543
|
-
(it) => it.severity ===
|
|
545
|
+
(it) => it.severity === Severity.Critical || it.severity === Severity.Major
|
|
544
546
|
) || issues[0];
|
|
545
547
|
const sampleMsg = sample ? ` \u2014 ${sample.message}` : "";
|
|
546
548
|
console.log(
|
|
547
|
-
` ${idx + 1}. ${file} \u2014 ${issues.length} issue(s) (critical:${counts.
|
|
549
|
+
` ${idx + 1}. ${file} \u2014 ${issues.length} issue(s) (critical:${counts[Severity.Critical] || 0} major:${counts[Severity.Major] || 0} minor:${counts[Severity.Minor] || 0} info:${counts[Severity.Info] || 0})${sampleMsg}`
|
|
548
550
|
);
|
|
549
551
|
});
|
|
550
552
|
const remaining = files.length - topFiles.length;
|
|
@@ -777,6 +779,78 @@ async function scanAction(directory, options) {
|
|
|
777
779
|
}
|
|
778
780
|
}
|
|
779
781
|
}
|
|
782
|
+
const mapToUnifiedReport = (res, scoring) => {
|
|
783
|
+
const allResults = [];
|
|
784
|
+
let totalFilesSet = /* @__PURE__ */ new Set();
|
|
785
|
+
let criticalCount = 0;
|
|
786
|
+
let majorCount = 0;
|
|
787
|
+
const collect = (spokeRes, defaultType = IssueType.AiSignalClarity) => {
|
|
788
|
+
if (!spokeRes || !spokeRes.results) return;
|
|
789
|
+
spokeRes.results.forEach((r) => {
|
|
790
|
+
const fileName = r.fileName || r.file || "unknown";
|
|
791
|
+
totalFilesSet.add(fileName);
|
|
792
|
+
const normalizedResult = {
|
|
793
|
+
fileName,
|
|
794
|
+
issues: [],
|
|
795
|
+
metrics: r.metrics || { tokenCost: r.tokenCost || 0 }
|
|
796
|
+
};
|
|
797
|
+
if (r.issues && Array.isArray(r.issues)) {
|
|
798
|
+
r.issues.forEach((i) => {
|
|
799
|
+
const normalizedIssue = typeof i === "string" ? {
|
|
800
|
+
type: defaultType,
|
|
801
|
+
severity: r.severity || Severity.Info,
|
|
802
|
+
message: i,
|
|
803
|
+
location: { file: fileName, line: 1 }
|
|
804
|
+
} : {
|
|
805
|
+
type: i.type || defaultType,
|
|
806
|
+
severity: i.severity || r.severity || Severity.Info,
|
|
807
|
+
message: i.message || String(i),
|
|
808
|
+
location: i.location || { file: fileName, line: 1 },
|
|
809
|
+
suggestion: i.suggestion
|
|
810
|
+
};
|
|
811
|
+
if (normalizedIssue.severity === Severity.Critical || normalizedIssue.severity === "critical")
|
|
812
|
+
criticalCount++;
|
|
813
|
+
if (normalizedIssue.severity === Severity.Major || normalizedIssue.severity === "major")
|
|
814
|
+
majorCount++;
|
|
815
|
+
normalizedResult.issues.push(normalizedIssue);
|
|
816
|
+
});
|
|
817
|
+
} else if (r.severity) {
|
|
818
|
+
const normalizedIssue = {
|
|
819
|
+
type: defaultType,
|
|
820
|
+
severity: r.severity,
|
|
821
|
+
message: r.message || "General issue",
|
|
822
|
+
location: { file: fileName, line: 1 }
|
|
823
|
+
};
|
|
824
|
+
if (normalizedIssue.severity === Severity.Critical || normalizedIssue.severity === "critical")
|
|
825
|
+
criticalCount++;
|
|
826
|
+
if (normalizedIssue.severity === Severity.Major || normalizedIssue.severity === "major")
|
|
827
|
+
majorCount++;
|
|
828
|
+
normalizedResult.issues.push(normalizedIssue);
|
|
829
|
+
}
|
|
830
|
+
allResults.push(normalizedResult);
|
|
831
|
+
});
|
|
832
|
+
};
|
|
833
|
+
collect(res.patternDetect, IssueType.DuplicatePattern);
|
|
834
|
+
collect(res.contextAnalyzer, IssueType.ContextFragmentation);
|
|
835
|
+
collect(res.consistency, IssueType.NamingInconsistency);
|
|
836
|
+
collect(res.docDrift, IssueType.DocDrift);
|
|
837
|
+
collect(res.dependencyHealth, IssueType.DependencyHealth);
|
|
838
|
+
collect(res.aiSignalClarity, IssueType.AiSignalClarity);
|
|
839
|
+
collect(res.agentGrounding, IssueType.AgentNavigationFailure);
|
|
840
|
+
collect(res.testability, IssueType.LowTestability);
|
|
841
|
+
collect(res.changeAmplification, IssueType.ChangeAmplification);
|
|
842
|
+
return {
|
|
843
|
+
...res,
|
|
844
|
+
results: allResults,
|
|
845
|
+
summary: {
|
|
846
|
+
...res.summary,
|
|
847
|
+
totalFiles: totalFilesSet.size,
|
|
848
|
+
criticalIssues: criticalCount,
|
|
849
|
+
majorIssues: majorCount
|
|
850
|
+
},
|
|
851
|
+
scoring
|
|
852
|
+
};
|
|
853
|
+
};
|
|
780
854
|
const outputFormat = options.output || finalOptions.output?.format || "console";
|
|
781
855
|
const userOutputFile = options.outputFile || finalOptions.output?.file;
|
|
782
856
|
if (outputFormat === "json") {
|
|
@@ -788,8 +862,7 @@ async function scanAction(directory, options) {
|
|
|
788
862
|
resolvedDir
|
|
789
863
|
);
|
|
790
864
|
const outputData = {
|
|
791
|
-
...results,
|
|
792
|
-
scoring: scoringResult,
|
|
865
|
+
...mapToUnifiedReport(results, scoringResult),
|
|
793
866
|
repository: repoMetadata
|
|
794
867
|
};
|
|
795
868
|
handleJSONOutput(
|
|
@@ -814,8 +887,7 @@ async function scanAction(directory, options) {
|
|
|
814
887
|
resolvedDir
|
|
815
888
|
);
|
|
816
889
|
const outputData = {
|
|
817
|
-
...results,
|
|
818
|
-
scoring: scoringResult,
|
|
890
|
+
...mapToUnifiedReport(results, scoringResult),
|
|
819
891
|
repository: repoMetadata
|
|
820
892
|
};
|
|
821
893
|
try {
|
|
@@ -858,7 +930,7 @@ async function scanAction(directory, options) {
|
|
|
858
930
|
}
|
|
859
931
|
if (results.patternDetect) {
|
|
860
932
|
const criticalPatterns = results.patternDetect.results.flatMap(
|
|
861
|
-
(p) => p.issues.filter((i) => i.severity ===
|
|
933
|
+
(p) => p.issues.filter((i) => i.severity === Severity.Critical)
|
|
862
934
|
);
|
|
863
935
|
criticalPatterns.slice(0, 10).forEach((issue) => {
|
|
864
936
|
console.log(
|
|
@@ -881,22 +953,22 @@ async function scanAction(directory, options) {
|
|
|
881
953
|
if (results.patternDetect) {
|
|
882
954
|
results.patternDetect.results.forEach((p) => {
|
|
883
955
|
p.issues.forEach((i) => {
|
|
884
|
-
if (i.severity ===
|
|
885
|
-
if (i.severity ===
|
|
956
|
+
if (i.severity === Severity.Critical) criticalCount++;
|
|
957
|
+
if (i.severity === Severity.Major) majorCount++;
|
|
886
958
|
});
|
|
887
959
|
});
|
|
888
960
|
}
|
|
889
961
|
if (results.contextAnalyzer) {
|
|
890
962
|
results.contextAnalyzer.results.forEach((c) => {
|
|
891
|
-
if (c.severity ===
|
|
892
|
-
if (c.severity ===
|
|
963
|
+
if (c.severity === Severity.Critical) criticalCount++;
|
|
964
|
+
if (c.severity === Severity.Major) majorCount++;
|
|
893
965
|
});
|
|
894
966
|
}
|
|
895
967
|
if (results.consistency) {
|
|
896
968
|
results.consistency.results.forEach((r) => {
|
|
897
969
|
r.issues?.forEach((i) => {
|
|
898
|
-
if (i.severity ===
|
|
899
|
-
if (i.severity ===
|
|
970
|
+
if (i.severity === Severity.Critical) criticalCount++;
|
|
971
|
+
if (i.severity === Severity.Major) majorCount++;
|
|
900
972
|
});
|
|
901
973
|
});
|
|
902
974
|
}
|
package/dist/index.js
CHANGED
|
@@ -143,10 +143,11 @@ async function analyzeUnified(options) {
|
|
|
143
143
|
options.progressCallback({ tool: "doc-drift", data: report });
|
|
144
144
|
}
|
|
145
145
|
result.docDrift = {
|
|
146
|
-
results: report.results || [],
|
|
146
|
+
results: report.results || report.issues || [],
|
|
147
147
|
summary: report.summary || {}
|
|
148
148
|
};
|
|
149
|
-
|
|
149
|
+
const issueCount = report.issues?.length || (report.results ? report.results.length : 0);
|
|
150
|
+
result.summary.totalIssues += issueCount;
|
|
150
151
|
}
|
|
151
152
|
if (tools.includes("deps-health")) {
|
|
152
153
|
const { analyzeDeps } = await import("@aiready/deps");
|
|
@@ -160,10 +161,11 @@ async function analyzeUnified(options) {
|
|
|
160
161
|
options.progressCallback({ tool: "deps-health", data: report });
|
|
161
162
|
}
|
|
162
163
|
result.dependencyHealth = {
|
|
163
|
-
results: report.results || [],
|
|
164
|
+
results: report.results || report.issues || [],
|
|
164
165
|
summary: report.summary || {}
|
|
165
166
|
};
|
|
166
|
-
|
|
167
|
+
const issueCount = report.issues?.length || (report.results ? report.results.length : 0);
|
|
168
|
+
result.summary.totalIssues += issueCount;
|
|
167
169
|
}
|
|
168
170
|
if (tools.includes("ai-signal-clarity")) {
|
|
169
171
|
const { analyzeAiSignalClarity } = await import("@aiready/ai-signal-clarity");
|
|
@@ -178,11 +180,11 @@ async function analyzeUnified(options) {
|
|
|
178
180
|
}
|
|
179
181
|
result.aiSignalClarity = {
|
|
180
182
|
...report,
|
|
181
|
-
results: report.results || [],
|
|
183
|
+
results: report.results || report.issues || [],
|
|
182
184
|
summary: report.summary || {}
|
|
183
185
|
};
|
|
184
|
-
result.summary.totalIssues += report.results?.reduce(
|
|
185
|
-
(sum, r) => sum + (r.issues?.length ||
|
|
186
|
+
result.summary.totalIssues += (report.results || report.issues)?.reduce(
|
|
187
|
+
(sum, r) => sum + (r.issues?.length || 1),
|
|
186
188
|
0
|
|
187
189
|
) || 0;
|
|
188
190
|
}
|
|
@@ -199,10 +201,10 @@ async function analyzeUnified(options) {
|
|
|
199
201
|
}
|
|
200
202
|
result.agentGrounding = {
|
|
201
203
|
...report,
|
|
202
|
-
results: report.results || [],
|
|
204
|
+
results: report.results || report.issues || [],
|
|
203
205
|
summary: report.summary || {}
|
|
204
206
|
};
|
|
205
|
-
result.summary.totalIssues += report.issues
|
|
207
|
+
result.summary.totalIssues += (report.issues || report.results || []).length;
|
|
206
208
|
}
|
|
207
209
|
if (tools.includes("testability")) {
|
|
208
210
|
const { analyzeTestability } = await import("@aiready/testability");
|
|
@@ -217,10 +219,10 @@ async function analyzeUnified(options) {
|
|
|
217
219
|
}
|
|
218
220
|
result.testability = {
|
|
219
221
|
...report,
|
|
220
|
-
results: report.results || [],
|
|
222
|
+
results: report.results || report.issues || [],
|
|
221
223
|
summary: report.summary || {}
|
|
222
224
|
};
|
|
223
|
-
result.summary.totalIssues += report.issues
|
|
225
|
+
result.summary.totalIssues += (report.issues || report.results || []).length;
|
|
224
226
|
}
|
|
225
227
|
if (tools.includes("change-amplification")) {
|
|
226
228
|
const { analyzeChangeAmplification } = await import("@aiready/change-amplification");
|
package/dist/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiready/cli",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.4",
|
|
4
4
|
"description": "Unified CLI for AIReady analysis tools",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -11,17 +11,17 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"chalk": "^5.3.0",
|
|
13
13
|
"commander": "^14.0.0",
|
|
14
|
-
"@aiready/
|
|
15
|
-
"@aiready/
|
|
16
|
-
"@aiready/
|
|
17
|
-
"@aiready/
|
|
18
|
-
"@aiready/
|
|
19
|
-
"@aiready/
|
|
20
|
-
"@aiready/
|
|
21
|
-
"@aiready/
|
|
22
|
-
"@aiready/
|
|
23
|
-
"@aiready/
|
|
24
|
-
"@aiready/
|
|
14
|
+
"@aiready/core": "0.19.3",
|
|
15
|
+
"@aiready/agent-grounding": "0.9.3",
|
|
16
|
+
"@aiready/consistency": "0.16.3",
|
|
17
|
+
"@aiready/change-amplification": "0.9.3",
|
|
18
|
+
"@aiready/context-analyzer": "0.17.3",
|
|
19
|
+
"@aiready/deps": "0.9.3",
|
|
20
|
+
"@aiready/visualizer": "0.2.4",
|
|
21
|
+
"@aiready/pattern-detect": "0.12.3",
|
|
22
|
+
"@aiready/ai-signal-clarity": "0.9.3",
|
|
23
|
+
"@aiready/testability": "0.2.3",
|
|
24
|
+
"@aiready/doc-drift": "0.9.3"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "^24.0.0",
|