@aiready/cli 0.7.19 → 0.7.21

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.
@@ -1,6 +1,6 @@
1
1
 
2
2
  
3
- > @aiready/cli@0.7.19 build /Users/pengcao/projects/aiready/packages/cli
3
+ > @aiready/cli@0.7.21 build /Users/pengcao/projects/aiready/packages/cli
4
4
  > tsup src/index.ts src/cli.ts --format cjs,esm --dts
5
5
 
6
6
  CLI Building entry: src/cli.ts, src/index.ts
@@ -9,16 +9,16 @@
9
9
  CLI Target: es2020
10
10
  CJS Build start
11
11
  ESM Build start
12
+ CJS dist/cli.js 43.96 KB
13
+ CJS dist/index.js 4.93 KB
14
+ CJS ⚡️ Build success in 51ms
12
15
  ESM dist/index.mjs 138.00 B
13
- ESM dist/chunk-P3XAXCTK.mjs 3.46 KB
14
- ESM dist/cli.mjs 28.57 KB
15
- ESM ⚡️ Build success in 14ms
16
- CJS dist/cli.js 35.44 KB
17
- CJS dist/index.js 4.60 KB
18
- CJS ⚡️ Build success in 14ms
16
+ ESM dist/cli.mjs 36.91 KB
17
+ ESM dist/chunk-3SG2GLFJ.mjs 3.80 KB
18
+ ESM ⚡️ Build success in 52ms
19
19
  DTS Build start
20
- DTS ⚡️ Build success in 502ms
20
+ DTS ⚡️ Build success in 611ms
21
21
  DTS dist/cli.d.ts 20.00 B
22
- DTS dist/index.d.ts 1.06 KB
22
+ DTS dist/index.d.ts 1.22 KB
23
23
  DTS dist/cli.d.mts 20.00 B
24
- DTS dist/index.d.mts 1.06 KB
24
+ DTS dist/index.d.mts 1.22 KB
@@ -1,6 +1,6 @@
1
1
 
2
2
  
3
- > @aiready/cli@0.7.19 test /Users/pengcao/projects/aiready/packages/cli
3
+ > @aiready/cli@0.7.21 test /Users/pengcao/projects/aiready/packages/cli
4
4
  > vitest run
5
5
 
6
6
  [?25l
@@ -11,15 +11,15 @@
11
11
 
12
12
   Test Files 0 passed (1)
13
13
   Tests 0 passed (0)
14
-  Start at 13:53:07
14
+  Start at 10:41:17
15
15
   Duration 0ms
16
16
  [?2026l[?2026h
17
17
   ❯ src/__tests__/cli.test.ts 0/3
18
18
 
19
19
   Test Files 0 passed (1)
20
20
   Tests 0 passed (3)
21
-  Start at 13:53:07
22
-  Duration 202ms
21
+  Start at 10:41:17
22
+  Duration 301ms
23
23
  [?2026l ✓ src/__tests__/cli.test.ts (3 tests) 2ms
24
24
  ✓ CLI Unified Analysis (3)
25
25
  ✓ should run unified analysis with both tools 1ms
@@ -28,7 +28,7 @@
28
28
 
29
29
   Test Files  1 passed (1)
30
30
   Tests  3 passed (3)
31
-  Start at  13:53:07
32
-  Duration  278ms (transform 50ms, setup 0ms, import 205ms, tests 2ms, environment 0ms)
31
+  Start at  10:41:17
32
+  Duration  314ms (transform 57ms, setup 0ms, import 237ms, tests 2ms, environment 0ms)
33
33
 
34
34
  [?25h
@@ -41,6 +41,7 @@ async function analyzeUnified(options) {
41
41
  if (tools.includes("patterns")) {
42
42
  const patternResult = await analyzePatterns(options);
43
43
  result.patterns = sortBySeverity(patternResult.results);
44
+ result.duplicates = patternResult.duplicates;
44
45
  result.summary.totalIssues += patternResult.results.reduce(
45
46
  (sum, file) => sum + file.issues.length,
46
47
  0
@@ -57,14 +58,13 @@ async function analyzeUnified(options) {
57
58
  result.summary.totalIssues += result.context?.length || 0;
58
59
  }
59
60
  if (tools.includes("consistency")) {
60
- const report = await analyzeConsistency({
61
+ const consistencyOptions = {
61
62
  rootDir: options.rootDir,
62
63
  include: options.include,
63
64
  exclude: options.exclude,
64
- checkNaming: true,
65
- checkPatterns: true,
66
- minSeverity: "info"
67
- });
65
+ ...options.consistency || {}
66
+ };
67
+ const report = await analyzeConsistency(consistencyOptions);
68
68
  if (report.results) {
69
69
  report.results = sortBySeverity(report.results);
70
70
  }
@@ -0,0 +1,118 @@
1
+ // src/index.ts
2
+ import { analyzePatterns } from "@aiready/pattern-detect";
3
+ import { analyzeContext } from "@aiready/context-analyzer";
4
+ import { analyzeConsistency } from "@aiready/consistency";
5
+ var severityOrder = {
6
+ critical: 4,
7
+ major: 3,
8
+ minor: 2,
9
+ info: 1
10
+ };
11
+ function sortBySeverity(results) {
12
+ return results.map((file) => {
13
+ const sortedIssues = [...file.issues].sort((a, b) => {
14
+ const severityDiff = (severityOrder[b.severity] || 0) - (severityOrder[a.severity] || 0);
15
+ if (severityDiff !== 0) return severityDiff;
16
+ return (a.location?.line || 0) - (b.location?.line || 0);
17
+ });
18
+ return { ...file, issues: sortedIssues };
19
+ }).sort((a, b) => {
20
+ const aMaxSeverity = Math.max(...a.issues.map((i) => severityOrder[i.severity] || 0), 0);
21
+ const bMaxSeverity = Math.max(...b.issues.map((i) => severityOrder[i.severity] || 0), 0);
22
+ if (aMaxSeverity !== bMaxSeverity) {
23
+ return bMaxSeverity - aMaxSeverity;
24
+ }
25
+ if (a.issues.length !== b.issues.length) {
26
+ return b.issues.length - a.issues.length;
27
+ }
28
+ return a.fileName.localeCompare(b.fileName);
29
+ });
30
+ }
31
+ async function analyzeUnified(options) {
32
+ const startTime = Date.now();
33
+ const tools = options.tools || ["patterns", "context", "consistency"];
34
+ const result = {
35
+ summary: {
36
+ totalIssues: 0,
37
+ toolsRun: tools,
38
+ executionTime: 0
39
+ }
40
+ };
41
+ if (tools.includes("patterns")) {
42
+ const patternResult = await analyzePatterns(options);
43
+ if (options.progressCallback) {
44
+ options.progressCallback({ tool: "patterns", data: patternResult });
45
+ }
46
+ result.patterns = sortBySeverity(patternResult.results);
47
+ result.duplicates = patternResult.duplicates;
48
+ result.summary.totalIssues += patternResult.results.reduce(
49
+ (sum, file) => sum + file.issues.length,
50
+ 0
51
+ );
52
+ }
53
+ if (tools.includes("context")) {
54
+ const contextResults = await analyzeContext(options);
55
+ if (options.progressCallback) {
56
+ options.progressCallback({ tool: "context", data: contextResults });
57
+ }
58
+ result.context = contextResults.sort((a, b) => {
59
+ const severityDiff = (severityOrder[b.severity] || 0) - (severityOrder[a.severity] || 0);
60
+ if (severityDiff !== 0) return severityDiff;
61
+ if (a.tokenCost !== b.tokenCost) return b.tokenCost - a.tokenCost;
62
+ return b.fragmentationScore - a.fragmentationScore;
63
+ });
64
+ result.summary.totalIssues += result.context?.length || 0;
65
+ }
66
+ if (tools.includes("consistency")) {
67
+ const consistencyOptions = {
68
+ rootDir: options.rootDir,
69
+ include: options.include,
70
+ exclude: options.exclude,
71
+ ...options.consistency || {}
72
+ };
73
+ const report = await analyzeConsistency(consistencyOptions);
74
+ if (options.progressCallback) {
75
+ options.progressCallback({ tool: "consistency", data: report });
76
+ }
77
+ if (report.results) {
78
+ report.results = sortBySeverity(report.results);
79
+ }
80
+ result.consistency = report;
81
+ result.summary.totalIssues += report.summary.totalIssues;
82
+ }
83
+ result.summary.executionTime = Date.now() - startTime;
84
+ return result;
85
+ }
86
+ function generateUnifiedSummary(result) {
87
+ const { summary } = result;
88
+ let output = `\u{1F680} AIReady Analysis Complete
89
+
90
+ `;
91
+ output += `\u{1F4CA} Summary:
92
+ `;
93
+ output += ` Tools run: ${summary.toolsRun.join(", ")}
94
+ `;
95
+ output += ` Total issues found: ${summary.totalIssues}
96
+ `;
97
+ output += ` Execution time: ${(summary.executionTime / 1e3).toFixed(2)}s
98
+
99
+ `;
100
+ if (result.patterns) {
101
+ output += `\u{1F50D} Pattern Analysis: ${result.patterns.length} issues
102
+ `;
103
+ }
104
+ if (result.context) {
105
+ output += `\u{1F9E0} Context Analysis: ${result.context.length} issues
106
+ `;
107
+ }
108
+ if (result.consistency) {
109
+ output += `\u{1F3F7}\uFE0F Consistency Analysis: ${result.consistency.summary.totalIssues} issues
110
+ `;
111
+ }
112
+ return output;
113
+ }
114
+
115
+ export {
116
+ analyzeUnified,
117
+ generateUnifiedSummary
118
+ };
@@ -0,0 +1,111 @@
1
+ // src/index.ts
2
+ import { analyzePatterns } from "@aiready/pattern-detect";
3
+ import { analyzeContext } from "@aiready/context-analyzer";
4
+ import { analyzeConsistency } from "@aiready/consistency";
5
+ var severityOrder = {
6
+ critical: 4,
7
+ major: 3,
8
+ minor: 2,
9
+ info: 1
10
+ };
11
+ function sortBySeverity(results) {
12
+ return results.map((file) => {
13
+ const sortedIssues = [...file.issues].sort((a, b) => {
14
+ const severityDiff = (severityOrder[b.severity] || 0) - (severityOrder[a.severity] || 0);
15
+ if (severityDiff !== 0) return severityDiff;
16
+ return (a.location?.line || 0) - (b.location?.line || 0);
17
+ });
18
+ return { ...file, issues: sortedIssues };
19
+ }).sort((a, b) => {
20
+ const aMaxSeverity = Math.max(...a.issues.map((i) => severityOrder[i.severity] || 0), 0);
21
+ const bMaxSeverity = Math.max(...b.issues.map((i) => severityOrder[i.severity] || 0), 0);
22
+ if (aMaxSeverity !== bMaxSeverity) {
23
+ return bMaxSeverity - aMaxSeverity;
24
+ }
25
+ if (a.issues.length !== b.issues.length) {
26
+ return b.issues.length - a.issues.length;
27
+ }
28
+ return a.fileName.localeCompare(b.fileName);
29
+ });
30
+ }
31
+ async function analyzeUnified(options) {
32
+ const startTime = Date.now();
33
+ const tools = options.tools || ["patterns", "context", "consistency"];
34
+ const result = {
35
+ summary: {
36
+ totalIssues: 0,
37
+ toolsRun: tools,
38
+ executionTime: 0
39
+ }
40
+ };
41
+ if (tools.includes("patterns")) {
42
+ const patternResult = await analyzePatterns(options);
43
+ result.patterns = sortBySeverity(patternResult.results);
44
+ result.duplicates = patternResult.duplicates;
45
+ result.summary.totalIssues += patternResult.results.reduce(
46
+ (sum, file) => sum + file.issues.length,
47
+ 0
48
+ );
49
+ }
50
+ if (tools.includes("context")) {
51
+ const contextResults = await analyzeContext(options);
52
+ result.context = contextResults.sort((a, b) => {
53
+ const severityDiff = (severityOrder[b.severity] || 0) - (severityOrder[a.severity] || 0);
54
+ if (severityDiff !== 0) return severityDiff;
55
+ if (a.tokenCost !== b.tokenCost) return b.tokenCost - a.tokenCost;
56
+ return b.fragmentationScore - a.fragmentationScore;
57
+ });
58
+ result.summary.totalIssues += result.context?.length || 0;
59
+ }
60
+ if (tools.includes("consistency")) {
61
+ const consistencyOptions = {
62
+ rootDir: options.rootDir,
63
+ include: options.include,
64
+ exclude: options.exclude,
65
+ ...options.consistency || {}
66
+ };
67
+ console.log("[DEBUG] Running consistency analysis with options:", consistencyOptions);
68
+ const report = await analyzeConsistency(consistencyOptions);
69
+ console.log("[DEBUG] Consistency report:", JSON.stringify(report, null, 2));
70
+ if (report.results) {
71
+ report.results = sortBySeverity(report.results);
72
+ }
73
+ result.consistency = report;
74
+ result.summary.totalIssues += report.summary.totalIssues;
75
+ }
76
+ result.summary.executionTime = Date.now() - startTime;
77
+ return result;
78
+ }
79
+ function generateUnifiedSummary(result) {
80
+ const { summary } = result;
81
+ let output = `\u{1F680} AIReady Analysis Complete
82
+
83
+ `;
84
+ output += `\u{1F4CA} Summary:
85
+ `;
86
+ output += ` Tools run: ${summary.toolsRun.join(", ")}
87
+ `;
88
+ output += ` Total issues found: ${summary.totalIssues}
89
+ `;
90
+ output += ` Execution time: ${(summary.executionTime / 1e3).toFixed(2)}s
91
+
92
+ `;
93
+ if (result.patterns) {
94
+ output += `\u{1F50D} Pattern Analysis: ${result.patterns.length} issues
95
+ `;
96
+ }
97
+ if (result.context) {
98
+ output += `\u{1F9E0} Context Analysis: ${result.context.length} issues
99
+ `;
100
+ }
101
+ if (result.consistency) {
102
+ output += `\u{1F3F7}\uFE0F Consistency Analysis: ${result.consistency.summary.totalIssues} issues
103
+ `;
104
+ }
105
+ return output;
106
+ }
107
+
108
+ export {
109
+ analyzeUnified,
110
+ generateUnifiedSummary
111
+ };
@@ -0,0 +1,112 @@
1
+ // src/index.ts
2
+ import { analyzePatterns } from "@aiready/pattern-detect";
3
+ import { analyzeContext } from "@aiready/context-analyzer";
4
+ import { analyzeConsistency } from "@aiready/consistency";
5
+ var severityOrder = {
6
+ critical: 4,
7
+ major: 3,
8
+ minor: 2,
9
+ info: 1
10
+ };
11
+ function sortBySeverity(results) {
12
+ return results.map((file) => {
13
+ const sortedIssues = [...file.issues].sort((a, b) => {
14
+ const severityDiff = (severityOrder[b.severity] || 0) - (severityOrder[a.severity] || 0);
15
+ if (severityDiff !== 0) return severityDiff;
16
+ return (a.location?.line || 0) - (b.location?.line || 0);
17
+ });
18
+ return { ...file, issues: sortedIssues };
19
+ }).sort((a, b) => {
20
+ const aMaxSeverity = Math.max(...a.issues.map((i) => severityOrder[i.severity] || 0), 0);
21
+ const bMaxSeverity = Math.max(...b.issues.map((i) => severityOrder[i.severity] || 0), 0);
22
+ if (aMaxSeverity !== bMaxSeverity) {
23
+ return bMaxSeverity - aMaxSeverity;
24
+ }
25
+ if (a.issues.length !== b.issues.length) {
26
+ return b.issues.length - a.issues.length;
27
+ }
28
+ return a.fileName.localeCompare(b.fileName);
29
+ });
30
+ }
31
+ async function analyzeUnified(options) {
32
+ const startTime = Date.now();
33
+ const tools = options.tools || ["patterns", "context", "consistency"];
34
+ console.log("[DEBUG] analyzeUnified invoked. tools=", tools, "options=", JSON.stringify(options));
35
+ const result = {
36
+ summary: {
37
+ totalIssues: 0,
38
+ toolsRun: tools,
39
+ executionTime: 0
40
+ }
41
+ };
42
+ if (tools.includes("patterns")) {
43
+ const patternResult = await analyzePatterns(options);
44
+ result.patterns = sortBySeverity(patternResult.results);
45
+ result.duplicates = patternResult.duplicates;
46
+ result.summary.totalIssues += patternResult.results.reduce(
47
+ (sum, file) => sum + file.issues.length,
48
+ 0
49
+ );
50
+ }
51
+ if (tools.includes("context")) {
52
+ const contextResults = await analyzeContext(options);
53
+ result.context = contextResults.sort((a, b) => {
54
+ const severityDiff = (severityOrder[b.severity] || 0) - (severityOrder[a.severity] || 0);
55
+ if (severityDiff !== 0) return severityDiff;
56
+ if (a.tokenCost !== b.tokenCost) return b.tokenCost - a.tokenCost;
57
+ return b.fragmentationScore - a.fragmentationScore;
58
+ });
59
+ result.summary.totalIssues += result.context?.length || 0;
60
+ }
61
+ if (tools.includes("consistency")) {
62
+ const consistencyOptions = {
63
+ rootDir: options.rootDir,
64
+ include: options.include,
65
+ exclude: options.exclude,
66
+ ...options.consistency || {}
67
+ };
68
+ console.log("[DEBUG] Running consistency analysis with options:", consistencyOptions);
69
+ const report = await analyzeConsistency(consistencyOptions);
70
+ console.log("[DEBUG] Consistency report:", JSON.stringify(report, null, 2));
71
+ if (report.results) {
72
+ report.results = sortBySeverity(report.results);
73
+ }
74
+ result.consistency = report;
75
+ result.summary.totalIssues += report.summary.totalIssues;
76
+ }
77
+ result.summary.executionTime = Date.now() - startTime;
78
+ return result;
79
+ }
80
+ function generateUnifiedSummary(result) {
81
+ const { summary } = result;
82
+ let output = `\u{1F680} AIReady Analysis Complete
83
+
84
+ `;
85
+ output += `\u{1F4CA} Summary:
86
+ `;
87
+ output += ` Tools run: ${summary.toolsRun.join(", ")}
88
+ `;
89
+ output += ` Total issues found: ${summary.totalIssues}
90
+ `;
91
+ output += ` Execution time: ${(summary.executionTime / 1e3).toFixed(2)}s
92
+
93
+ `;
94
+ if (result.patterns) {
95
+ output += `\u{1F50D} Pattern Analysis: ${result.patterns.length} issues
96
+ `;
97
+ }
98
+ if (result.context) {
99
+ output += `\u{1F9E0} Context Analysis: ${result.context.length} issues
100
+ `;
101
+ }
102
+ if (result.consistency) {
103
+ output += `\u{1F3F7}\uFE0F Consistency Analysis: ${result.consistency.summary.totalIssues} issues
104
+ `;
105
+ }
106
+ return output;
107
+ }
108
+
109
+ export {
110
+ analyzeUnified,
111
+ generateUnifiedSummary
112
+ };
@@ -41,24 +41,33 @@ async function analyzeUnified(options) {
41
41
  if (tools.includes("patterns")) {
42
42
  const patternResult = await analyzePatterns(options);
43
43
  result.patterns = sortBySeverity(patternResult.results);
44
+ result.duplicates = patternResult.duplicates;
44
45
  result.summary.totalIssues += patternResult.results.reduce(
45
46
  (sum, file) => sum + file.issues.length,
46
47
  0
47
48
  );
48
49
  }
49
50
  if (tools.includes("context")) {
50
- result.context = await analyzeContext(options);
51
+ const contextResults = await analyzeContext(options);
52
+ result.context = contextResults.sort((a, b) => {
53
+ const severityDiff = (severityOrder[b.severity] || 0) - (severityOrder[a.severity] || 0);
54
+ if (severityDiff !== 0) return severityDiff;
55
+ if (a.tokenCost !== b.tokenCost) return b.tokenCost - a.tokenCost;
56
+ return b.fragmentationScore - a.fragmentationScore;
57
+ });
51
58
  result.summary.totalIssues += result.context?.length || 0;
52
59
  }
53
60
  if (tools.includes("consistency")) {
54
- const report = await analyzeConsistency({
61
+ const consistencyOptions = {
55
62
  rootDir: options.rootDir,
56
63
  include: options.include,
57
64
  exclude: options.exclude,
58
- checkNaming: true,
59
- checkPatterns: true,
60
- minSeverity: "info"
61
- });
65
+ ...options.consistency || {}
66
+ };
67
+ const report = await analyzeConsistency(consistencyOptions);
68
+ if (report.results) {
69
+ report.results = sortBySeverity(report.results);
70
+ }
62
71
  result.consistency = report;
63
72
  result.summary.totalIssues += report.summary.totalIssues;
64
73
  }
@@ -79,11 +88,11 @@ function generateUnifiedSummary(result) {
79
88
  output += ` Execution time: ${(summary.executionTime / 1e3).toFixed(2)}s
80
89
 
81
90
  `;
82
- if (result.patterns?.length) {
91
+ if (result.patterns) {
83
92
  output += `\u{1F50D} Pattern Analysis: ${result.patterns.length} issues
84
93
  `;
85
94
  }
86
- if (result.context?.length) {
95
+ if (result.context) {
87
96
  output += `\u{1F9E0} Context Analysis: ${result.context.length} issues
88
97
  `;
89
98
  }