circle-ir-ai 2.7.1 → 2.7.2

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.
Files changed (146) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/package.json +2 -2
  3. package/dist/cli/args.d.ts +0 -86
  4. package/dist/cli/args.d.ts.map +0 -1
  5. package/dist/cli/args.js +0 -653
  6. package/dist/cli/args.js.map +0 -1
  7. package/dist/cli/colors.d.ts +0 -31
  8. package/dist/cli/colors.d.ts.map +0 -1
  9. package/dist/cli/colors.js +0 -80
  10. package/dist/cli/colors.js.map +0 -1
  11. package/dist/cli/commands/analyze-skill.d.ts +0 -33
  12. package/dist/cli/commands/analyze-skill.d.ts.map +0 -1
  13. package/dist/cli/commands/analyze-skill.js +0 -217
  14. package/dist/cli/commands/analyze-skill.js.map +0 -1
  15. package/dist/cli/commands/analyze.d.ts +0 -19
  16. package/dist/cli/commands/analyze.d.ts.map +0 -1
  17. package/dist/cli/commands/analyze.js +0 -303
  18. package/dist/cli/commands/analyze.js.map +0 -1
  19. package/dist/cli/commands/benchmark-runner.d.ts +0 -42
  20. package/dist/cli/commands/benchmark-runner.d.ts.map +0 -1
  21. package/dist/cli/commands/benchmark-runner.js +0 -18
  22. package/dist/cli/commands/benchmark-runner.js.map +0 -1
  23. package/dist/cli/commands/benchmark.d.ts +0 -11
  24. package/dist/cli/commands/benchmark.d.ts.map +0 -1
  25. package/dist/cli/commands/benchmark.js +0 -90
  26. package/dist/cli/commands/benchmark.js.map +0 -1
  27. package/dist/cli/commands/cluster.d.ts +0 -12
  28. package/dist/cli/commands/cluster.d.ts.map +0 -1
  29. package/dist/cli/commands/cluster.js +0 -203
  30. package/dist/cli/commands/cluster.js.map +0 -1
  31. package/dist/cli/commands/compare.d.ts +0 -13
  32. package/dist/cli/commands/compare.d.ts.map +0 -1
  33. package/dist/cli/commands/compare.js +0 -109
  34. package/dist/cli/commands/compare.js.map +0 -1
  35. package/dist/cli/commands/dead-code.d.ts +0 -11
  36. package/dist/cli/commands/dead-code.d.ts.map +0 -1
  37. package/dist/cli/commands/dead-code.js +0 -75
  38. package/dist/cli/commands/dead-code.js.map +0 -1
  39. package/dist/cli/commands/generate-spec.d.ts +0 -11
  40. package/dist/cli/commands/generate-spec.d.ts.map +0 -1
  41. package/dist/cli/commands/generate-spec.js +0 -120
  42. package/dist/cli/commands/generate-spec.js.map +0 -1
  43. package/dist/cli/commands/health.d.ts +0 -11
  44. package/dist/cli/commands/health.d.ts.map +0 -1
  45. package/dist/cli/commands/health.js +0 -76
  46. package/dist/cli/commands/health.js.map +0 -1
  47. package/dist/cli/commands/index.d.ts +0 -30
  48. package/dist/cli/commands/index.d.ts.map +0 -1
  49. package/dist/cli/commands/index.js +0 -36
  50. package/dist/cli/commands/index.js.map +0 -1
  51. package/dist/cli/commands/metrics.d.ts +0 -12
  52. package/dist/cli/commands/metrics.d.ts.map +0 -1
  53. package/dist/cli/commands/metrics.js +0 -231
  54. package/dist/cli/commands/metrics.js.map +0 -1
  55. package/dist/cli/commands/project.d.ts +0 -21
  56. package/dist/cli/commands/project.d.ts.map +0 -1
  57. package/dist/cli/commands/project.js +0 -92
  58. package/dist/cli/commands/project.js.map +0 -1
  59. package/dist/cli/commands/quality.d.ts +0 -15
  60. package/dist/cli/commands/quality.d.ts.map +0 -1
  61. package/dist/cli/commands/quality.js +0 -86
  62. package/dist/cli/commands/quality.js.map +0 -1
  63. package/dist/cli/commands/scan.d.ts +0 -11
  64. package/dist/cli/commands/scan.d.ts.map +0 -1
  65. package/dist/cli/commands/scan.js +0 -102
  66. package/dist/cli/commands/scan.js.map +0 -1
  67. package/dist/cli/commands/secrets.d.ts +0 -11
  68. package/dist/cli/commands/secrets.d.ts.map +0 -1
  69. package/dist/cli/commands/secrets.js +0 -79
  70. package/dist/cli/commands/secrets.js.map +0 -1
  71. package/dist/cli/commands/spec-diff.d.ts +0 -12
  72. package/dist/cli/commands/spec-diff.d.ts.map +0 -1
  73. package/dist/cli/commands/spec-diff.js +0 -150
  74. package/dist/cli/commands/spec-diff.js.map +0 -1
  75. package/dist/cli/commands/swarm.d.ts +0 -21
  76. package/dist/cli/commands/swarm.d.ts.map +0 -1
  77. package/dist/cli/commands/swarm.js +0 -175
  78. package/dist/cli/commands/swarm.js.map +0 -1
  79. package/dist/cli/commands/trust.d.ts +0 -23
  80. package/dist/cli/commands/trust.d.ts.map +0 -1
  81. package/dist/cli/commands/trust.js +0 -397
  82. package/dist/cli/commands/trust.js.map +0 -1
  83. package/dist/cli/commands/understand.d.ts +0 -12
  84. package/dist/cli/commands/understand.d.ts.map +0 -1
  85. package/dist/cli/commands/understand.js +0 -188
  86. package/dist/cli/commands/understand.js.map +0 -1
  87. package/dist/cli/config.d.ts +0 -161
  88. package/dist/cli/config.d.ts.map +0 -1
  89. package/dist/cli/config.js +0 -383
  90. package/dist/cli/config.js.map +0 -1
  91. package/dist/cli/discovery.d.ts +0 -31
  92. package/dist/cli/discovery.d.ts.map +0 -1
  93. package/dist/cli/discovery.js +0 -212
  94. package/dist/cli/discovery.js.map +0 -1
  95. package/dist/cli/effective-options.d.ts +0 -42
  96. package/dist/cli/effective-options.d.ts.map +0 -1
  97. package/dist/cli/effective-options.js +0 -80
  98. package/dist/cli/effective-options.js.map +0 -1
  99. package/dist/cli/file-collection.d.ts +0 -49
  100. package/dist/cli/file-collection.d.ts.map +0 -1
  101. package/dist/cli/file-collection.js +0 -142
  102. package/dist/cli/file-collection.js.map +0 -1
  103. package/dist/cli/formatters/index.d.ts +0 -15
  104. package/dist/cli/formatters/index.d.ts.map +0 -1
  105. package/dist/cli/formatters/index.js +0 -51
  106. package/dist/cli/formatters/index.js.map +0 -1
  107. package/dist/cli/formatters/json.d.ts +0 -11
  108. package/dist/cli/formatters/json.d.ts.map +0 -1
  109. package/dist/cli/formatters/json.js +0 -12
  110. package/dist/cli/formatters/json.js.map +0 -1
  111. package/dist/cli/formatters/project-json.d.ts +0 -11
  112. package/dist/cli/formatters/project-json.d.ts.map +0 -1
  113. package/dist/cli/formatters/project-json.js +0 -12
  114. package/dist/cli/formatters/project-json.js.map +0 -1
  115. package/dist/cli/formatters/project-sarif.d.ts +0 -11
  116. package/dist/cli/formatters/project-sarif.d.ts.map +0 -1
  117. package/dist/cli/formatters/project-sarif.js +0 -127
  118. package/dist/cli/formatters/project-sarif.js.map +0 -1
  119. package/dist/cli/formatters/project-summary.d.ts +0 -11
  120. package/dist/cli/formatters/project-summary.d.ts.map +0 -1
  121. package/dist/cli/formatters/project-summary.js +0 -202
  122. package/dist/cli/formatters/project-summary.js.map +0 -1
  123. package/dist/cli/formatters/sarif-shared.d.ts +0 -101
  124. package/dist/cli/formatters/sarif-shared.d.ts.map +0 -1
  125. package/dist/cli/formatters/sarif-shared.js +0 -57
  126. package/dist/cli/formatters/sarif-shared.js.map +0 -1
  127. package/dist/cli/formatters/sarif.d.ts +0 -12
  128. package/dist/cli/formatters/sarif.d.ts.map +0 -1
  129. package/dist/cli/formatters/sarif.js +0 -92
  130. package/dist/cli/formatters/sarif.js.map +0 -1
  131. package/dist/cli/formatters/summary.d.ts +0 -11
  132. package/dist/cli/formatters/summary.d.ts.map +0 -1
  133. package/dist/cli/formatters/summary.js +0 -240
  134. package/dist/cli/formatters/summary.js.map +0 -1
  135. package/dist/cli/formatters/two-phase-summary.d.ts +0 -11
  136. package/dist/cli/formatters/two-phase-summary.d.ts.map +0 -1
  137. package/dist/cli/formatters/two-phase-summary.js +0 -188
  138. package/dist/cli/formatters/two-phase-summary.js.map +0 -1
  139. package/dist/cli/index.d.ts +0 -10
  140. package/dist/cli/index.d.ts.map +0 -1
  141. package/dist/cli/index.js +0 -72
  142. package/dist/cli/index.js.map +0 -1
  143. package/dist/cli/program.d.ts +0 -117
  144. package/dist/cli/program.d.ts.map +0 -1
  145. package/dist/cli/program.js +0 -825
  146. package/dist/cli/program.js.map +0 -1
@@ -1,203 +0,0 @@
1
- /**
2
- * Cluster Command
3
- *
4
- * Wires existing src/components/ analyzeComponents() to CLI.
5
- * Performs two-phase component enrichment and clustering.
6
- *
7
- * Usage:
8
- * cognium-ai cluster <path> [--format json] [--llm]
9
- */
10
- import * as fs from 'fs';
11
- import * as path from 'path';
12
- import { isAnalyzerInitialized, analyze } from 'circle-ir';
13
- import { ensureAnalyzerInitialized } from '../../utils/analyzer-init.js';
14
- import { analyzeComponents } from '../../components/index.js';
15
- import { collectFiles as collectSourceFiles } from '../file-collection.js';
16
- import { getEffectiveOptions } from '../effective-options.js';
17
- // ---------------------------------------------------------------------------
18
- // Extract components from CircleIR
19
- // ---------------------------------------------------------------------------
20
- function inferComponentType(type) {
21
- const name = type.name.toLowerCase();
22
- const annos = type.annotations.map(a => a.toLowerCase());
23
- if (annos.some(a => a.includes('controller') || a.includes('restcontroller')))
24
- return 'controller';
25
- if (annos.some(a => a.includes('service')))
26
- return 'service';
27
- if (annos.some(a => a.includes('repository')))
28
- return 'repository';
29
- if (name.endsWith('controller') || name.endsWith('handler'))
30
- return 'controller';
31
- if (name.endsWith('service') || name.endsWith('manager'))
32
- return 'service';
33
- if (name.endsWith('repository') || name.endsWith('dao'))
34
- return 'repository';
35
- if (name.endsWith('model') || name.endsWith('entity') || name.endsWith('dto'))
36
- return 'model';
37
- return 'utility';
38
- }
39
- function extractComponents(filePath, ir) {
40
- const components = [];
41
- for (const type of ir.types) {
42
- const methods = type.methods.map(m => m.name);
43
- components.push({
44
- id: `${path.basename(filePath)}:${type.name}`,
45
- name: type.name,
46
- file: filePath,
47
- type: inferComponentType(type),
48
- line_start: type.start_line,
49
- line_end: type.end_line,
50
- methods,
51
- annotations: type.annotations,
52
- });
53
- }
54
- return components;
55
- }
56
- // ---------------------------------------------------------------------------
57
- // Text formatting
58
- // ---------------------------------------------------------------------------
59
- function formatTextReport(result) {
60
- const lines = [];
61
- lines.push('===============================================================');
62
- lines.push(' COMPONENT CLUSTER REPORT');
63
- lines.push('===============================================================');
64
- lines.push('');
65
- // Components
66
- lines.push(`Components: ${result.components.length}`);
67
- lines.push('');
68
- for (const comp of result.components) {
69
- const role = comp.semantic?.architectural_role ?? 'unknown';
70
- const purpose = comp.semantic?.business_purpose ?? '';
71
- lines.push(` ${comp.name} [${role}]`);
72
- if (purpose)
73
- lines.push(` Purpose: ${purpose}`);
74
- }
75
- lines.push('');
76
- // Clusters
77
- if (result.clustering) {
78
- lines.push('---------------------------------------------------------------');
79
- lines.push(`Feature Clusters: ${result.clustering.features.length}`);
80
- lines.push('---------------------------------------------------------------');
81
- for (const feature of result.clustering.features) {
82
- lines.push(` ${feature.name} (${feature.components.length} components)`);
83
- for (const comp of feature.components) {
84
- lines.push(` - ${comp}`);
85
- }
86
- }
87
- lines.push('');
88
- if (result.clustering.flows.length > 0) {
89
- lines.push(`Flows: ${result.clustering.flows.length}`);
90
- for (const flow of result.clustering.flows) {
91
- lines.push(` ${flow.name} [${flow.type}] — ${flow.components_involved.length} components`);
92
- }
93
- lines.push('');
94
- }
95
- if (result.clustering.architecture) {
96
- lines.push('Architecture Insights:');
97
- lines.push(` Pattern: ${result.clustering.architecture.pattern}`);
98
- if (result.clustering.architecture.design_patterns?.length) {
99
- lines.push(` Design Patterns: ${result.clustering.architecture.design_patterns.join(', ')}`);
100
- }
101
- const { strengths, weaknesses, recommendations } = result.clustering.architecture.insights;
102
- if (strengths?.length)
103
- lines.push(` Strengths: ${strengths.join(', ')}`);
104
- if (weaknesses?.length)
105
- lines.push(` Weaknesses: ${weaknesses.join(', ')}`);
106
- if (recommendations?.length)
107
- lines.push(` Recommendations: ${recommendations.join(', ')}`);
108
- }
109
- }
110
- lines.push('');
111
- lines.push('===============================================================');
112
- return lines.join('\n');
113
- }
114
- // ---------------------------------------------------------------------------
115
- // Main command
116
- // ---------------------------------------------------------------------------
117
- export async function executeCluster(args) {
118
- const targetPath = args.directory || args.file || process.cwd();
119
- if (!fs.existsSync(targetPath)) {
120
- console.error(`Error: Path not found: ${targetPath}`);
121
- return 1;
122
- }
123
- if (!fs.statSync(targetPath).isDirectory()) {
124
- console.error('Error: cluster command requires a directory path');
125
- return 1;
126
- }
127
- if (!args.quiet) {
128
- console.error(`Running component clustering on ${targetPath}...`);
129
- }
130
- try {
131
- // Initialize analyzer
132
- if (!isAnalyzerInitialized()) {
133
- if (!args.quiet)
134
- console.error(' Initializing analyzer...');
135
- await ensureAnalyzerInitialized();
136
- }
137
- // Collect and analyze files (respects --include/--exclude and config)
138
- const eff = getEffectiveOptions(args, targetPath);
139
- const files = collectSourceFiles(targetPath, {
140
- include: eff.include,
141
- exclude: eff.exclude,
142
- maxFiles: args.maxFiles ?? 500,
143
- });
144
- if (!args.quiet) {
145
- console.error(` Found ${files.length} source file(s)`);
146
- }
147
- const allComponents = [];
148
- for (const file of files) {
149
- try {
150
- const content = fs.readFileSync(file.path, 'utf-8');
151
- const ir = await analyze(content, path.basename(file.path), file.language);
152
- allComponents.push(...extractComponents(file.path, ir));
153
- }
154
- catch {
155
- // Skip files that fail analysis
156
- }
157
- }
158
- if (!args.quiet) {
159
- console.error(` Extracted ${allComponents.length} components`);
160
- }
161
- // Run component analysis. The richer feature-clustering and
162
- // architecture-pattern detection (Phase 1/2) needs LLM; without LLM we
163
- // only get the static component list.
164
- const enableLLM = !args.noLlm && (args.llmEnrich || args.llmVerify);
165
- if (!enableLLM && !args.quiet) {
166
- console.error(' Note: --no-llm — feature clustering and architecture analysis are skipped.');
167
- console.error(' Re-run without --no-llm for richer output.');
168
- }
169
- const result = await analyzeComponents(allComponents, {
170
- enablePhase1: enableLLM,
171
- enablePhase2: enableLLM,
172
- });
173
- // Output
174
- if (args.format === 'json') {
175
- const output = JSON.stringify(result, null, 2);
176
- if (args.output) {
177
- fs.writeFileSync(args.output, output);
178
- if (!args.quiet)
179
- console.error(`Output written to ${args.output}`);
180
- }
181
- else {
182
- console.log(output);
183
- }
184
- }
185
- else {
186
- const report = formatTextReport(result);
187
- if (args.output) {
188
- fs.writeFileSync(args.output, report);
189
- if (!args.quiet)
190
- console.error(`Output written to ${args.output}`);
191
- }
192
- else {
193
- console.log(report);
194
- }
195
- }
196
- return 0;
197
- }
198
- catch (error) {
199
- console.error('Error:', error instanceof Error ? error.message : error);
200
- return 1;
201
- }
202
- }
203
- //# sourceMappingURL=cluster.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../../src/cli/commands/cluster.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Trust Score Comparison Command
3
- *
4
- * Compares trust scores of two paths (A = baseline, B = current).
5
- *
6
- * Usage:
7
- * cognium-ai compare <pathA> <pathB>
8
- * cognium-ai compare <pathA> <pathB> --format json
9
- * cognium-ai compare <pathA> <pathB> -o comparison.json
10
- */
11
- import type { CliArgs } from '../args.js';
12
- export declare function executeCompare(args: CliArgs): Promise<number>;
13
- //# sourceMappingURL=compare.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/compare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAY1C,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA2HnE"}
@@ -1,109 +0,0 @@
1
- /**
2
- * Trust Score Comparison Command
3
- *
4
- * Compares trust scores of two paths (A = baseline, B = current).
5
- *
6
- * Usage:
7
- * cognium-ai compare <pathA> <pathB>
8
- * cognium-ai compare <pathA> <pathB> --format json
9
- * cognium-ai compare <pathA> <pathB> -o comparison.json
10
- */
11
- import * as fs from 'fs';
12
- import { runTrustAnalysis } from './trust.js';
13
- import { getEffectiveOptions } from '../effective-options.js';
14
- import { compareTrustResults, formatComparisonReport, } from '../../trust/compare.js';
15
- // ---------------------------------------------------------------------------
16
- // Main command
17
- // ---------------------------------------------------------------------------
18
- export async function executeCompare(args) {
19
- // Both paths must be set explicitly on CliArgs. The Commander program
20
- // (cli/program.ts) populates them from `<pathA> <pathB>` positional args.
21
- // Programmatic consumers must set both `args.directory` and `args.pathB`.
22
- if (!args.directory || !args.pathB) {
23
- console.error('Error: compare requires two paths');
24
- console.error('Usage: cognium-ai compare <pathA> <pathB>');
25
- return 1;
26
- }
27
- const pathA = args.directory;
28
- const pathB = args.pathB;
29
- // Validate both paths exist
30
- if (!fs.existsSync(pathA)) {
31
- console.error(`Error: Path A not found: ${pathA}`);
32
- return 1;
33
- }
34
- if (!fs.existsSync(pathB)) {
35
- console.error(`Error: Path B not found: ${pathB}`);
36
- return 1;
37
- }
38
- if (!args.quiet) {
39
- console.error(`Comparing trust scores:`);
40
- console.error(` A (baseline): ${pathA}`);
41
- console.error(` B (current): ${pathB}`);
42
- console.error('');
43
- }
44
- try {
45
- // Effective options (cognium.config.json + .circle-ir.yaml + CLI) — apply
46
- // to both sides so the comparison is symmetric.
47
- const effA = getEffectiveOptions(args, pathA);
48
- const effB = getEffectiveOptions({ ...args, config: args.config }, pathB);
49
- // Run trust analysis on path A
50
- if (!args.quiet) {
51
- console.error('--- Analyzing path A ---');
52
- }
53
- const resultA = await runTrustAnalysis(pathA, true, effA.analyzerOptions, effA.trustDisabledPasses, effA.include, effA.exclude, args.maxFiles ?? 1000);
54
- // Run trust analysis on path B
55
- if (!args.quiet) {
56
- console.error('--- Analyzing path B ---');
57
- }
58
- const resultB = await runTrustAnalysis(pathB, true, effB.analyzerOptions, effB.trustDisabledPasses, effB.include, effB.exclude, args.maxFiles ?? 1000);
59
- // Compare
60
- const comparison = compareTrustResults(resultA.trustResult, resultB.trustResult);
61
- // Output
62
- if (args.format === 'json') {
63
- const jsonOutput = JSON.stringify({
64
- scoreDelta: comparison.scoreDelta,
65
- tierA: comparison.tierA,
66
- tierB: comparison.tierB,
67
- tierChanged: comparison.tierChanged,
68
- trend: comparison.trend,
69
- scoreA: comparison.resultA.score,
70
- scoreB: comparison.resultB.score,
71
- passDeltas: comparison.passDeltas,
72
- newFindingsCount: comparison.newFindings.length,
73
- fixedFindingsCount: comparison.fixedFindings.length,
74
- newFindings: comparison.newFindings,
75
- fixedFindings: comparison.fixedFindings,
76
- timestamp: new Date().toISOString(),
77
- }, null, 2);
78
- if (args.output) {
79
- fs.writeFileSync(args.output, jsonOutput);
80
- if (!args.quiet) {
81
- console.error(`Output written to ${args.output}`);
82
- }
83
- }
84
- else {
85
- console.log(jsonOutput);
86
- }
87
- }
88
- else {
89
- // Text report (default)
90
- const report = formatComparisonReport(comparison);
91
- if (args.output) {
92
- fs.writeFileSync(args.output, report);
93
- if (!args.quiet) {
94
- console.error(`Output written to ${args.output}`);
95
- }
96
- }
97
- else {
98
- console.log(report);
99
- }
100
- }
101
- // Exit code: 0 if stable/improved, 1 if degraded
102
- return comparison.trend === 'degraded' ? 1 : 0;
103
- }
104
- catch (error) {
105
- console.error('Error:', error instanceof Error ? error.message : error);
106
- return 1;
107
- }
108
- }
109
- //# sourceMappingURL=compare.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/cli/commands/compare.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Dead Code Detection Command
3
- *
4
- * Detects unreachable code via call graph analysis.
5
- */
6
- import type { CliArgs } from '../args.js';
7
- /**
8
- * Execute dead code detection command.
9
- */
10
- export declare function executeDeadCode(args: CliArgs): Promise<number>;
11
- //# sourceMappingURL=dead-code.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dead-code.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dead-code.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAiEpE"}
@@ -1,75 +0,0 @@
1
- /**
2
- * Dead Code Detection Command
3
- *
4
- * Detects unreachable code via call graph analysis.
5
- */
6
- import * as fs from 'fs';
7
- import { detectDeadCode, formatDeadCodeReport, } from '../../dead-code/index.js';
8
- import { getEffectiveOptions } from '../effective-options.js';
9
- /**
10
- * Execute dead code detection command.
11
- */
12
- export async function executeDeadCode(args) {
13
- const targetPath = args.directory || process.cwd();
14
- if (!fs.existsSync(targetPath)) {
15
- console.error(`Error: Path not found: ${targetPath}`);
16
- return 1;
17
- }
18
- if (!args.quiet) {
19
- console.error(`Detecting dead code in ${targetPath}...`);
20
- }
21
- const eff = getEffectiveOptions(args, targetPath);
22
- const options = {
23
- target: targetPath,
24
- includePatterns: eff.include.length > 0 ? eff.include : undefined,
25
- excludePatterns: eff.exclude.length > 0 ? eff.exclude : undefined,
26
- includeTests: args.includeTests,
27
- publicMethodsAsEntryPoints: args.publicAsEntry,
28
- onProgress: args.quiet ? undefined : (progress) => {
29
- console.error(`[${progress.phase}] ${progress.message || ''}`);
30
- },
31
- };
32
- try {
33
- const result = await detectDeadCode(options);
34
- // Output results
35
- if (args.format === 'json') {
36
- const output = JSON.stringify(result, null, 2);
37
- if (args.output) {
38
- fs.writeFileSync(args.output, output);
39
- if (!args.quiet) {
40
- console.error(`Output written to ${args.output}`);
41
- }
42
- }
43
- else {
44
- console.log(output);
45
- }
46
- }
47
- else {
48
- // Summary format — honor --full / --top <n> for truncation
49
- const report = formatDeadCodeReport(result, {
50
- full: args.full,
51
- topPerFile: args.top ?? undefined,
52
- topEntryPoints: args.top ?? undefined,
53
- });
54
- if (args.output) {
55
- fs.writeFileSync(args.output, report);
56
- if (!args.quiet) {
57
- console.error(`Output written to ${args.output}`);
58
- }
59
- }
60
- else {
61
- console.log(report);
62
- }
63
- }
64
- // Exit with error code if dead code found
65
- if (args.exitCode && result.deadCode.length > 0) {
66
- return 1;
67
- }
68
- return 0;
69
- }
70
- catch (error) {
71
- console.error('Error:', error instanceof Error ? error.message : error);
72
- return 1;
73
- }
74
- }
75
- //# sourceMappingURL=dead-code.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dead-code.js","sourceRoot":"","sources":["../../../src/cli/commands/dead-code.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Specifica Generation Command
3
- *
4
- * Generate Specifica-format specifications from existing code.
5
- */
6
- import type { CliArgs } from '../args.js';
7
- /**
8
- * Execute Specifica generation command.
9
- */
10
- export declare function executeGenerateSpec(args: CliArgs): Promise<number>;
11
- //# sourceMappingURL=generate-spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-spec.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate-spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAgHxE"}
@@ -1,120 +0,0 @@
1
- /**
2
- * Specifica Generation Command
3
- *
4
- * Generate Specifica-format specifications from existing code.
5
- */
6
- import * as fs from 'fs';
7
- import { ensureAnalyzerInitialized } from '../../utils/analyzer-init.js';
8
- import { generateSpecifica, generateSpecificaForDirectory, } from '../../specifica/index.js';
9
- import { getEffectiveOptions } from '../effective-options.js';
10
- /**
11
- * Execute Specifica generation command.
12
- */
13
- export async function executeGenerateSpec(args) {
14
- const targetPath = args.file || args.directory;
15
- if (!targetPath) {
16
- console.error('Error: No path specified');
17
- console.error('Usage: cognium-ai generate-spec <file|directory> [options]');
18
- return 1;
19
- }
20
- if (!fs.existsSync(targetPath)) {
21
- console.error(`Error: Path not found: ${targetPath}`);
22
- return 1;
23
- }
24
- // generate-spec is fundamentally LLM-driven (the engine calls an LLM to
25
- // describe components, principles, tasks). Honoring --no-llm here means
26
- // doing nothing useful, so reject explicitly rather than producing empty
27
- // specs or silently calling the LLM despite the user's flag.
28
- if (args.noLlm) {
29
- console.error('Error: generate-spec requires LLM configuration; --no-llm is incompatible.');
30
- console.error(' Re-run without --no-llm, or unset env vars to clear --no-llm.');
31
- return 1;
32
- }
33
- const isDirectory = fs.statSync(targetPath).isDirectory();
34
- if (!args.quiet) {
35
- console.error(`Generating Specifica specification for ${targetPath}...`);
36
- }
37
- const eff = getEffectiveOptions(args, targetPath);
38
- const options = {
39
- specModel: args.specModel || 'cognium/gpt-oss-120b',
40
- overwrite: args.specOverwrite,
41
- quiet: args.quiet,
42
- // S2 Phase 2-3 options
43
- generateDesign: args.specDesign,
44
- generatePrinciples: args.specPrinciples,
45
- generateTasks: args.specTasks,
46
- enableDesignLLM: args.specDesignLLM,
47
- enablePrinciplesLLM: args.specPrinciplesLLM,
48
- enableTasksLLM: args.specTasksLLM,
49
- includePatterns: eff.include.length > 0 ? eff.include : undefined,
50
- excludePatterns: eff.exclude.length > 0 ? eff.exclude : undefined,
51
- maxFiles: args.maxFiles ?? undefined,
52
- };
53
- // Initialize WASM analyzer
54
- await ensureAnalyzerInitialized();
55
- try {
56
- if (isDirectory) {
57
- const results = await generateSpecificaForDirectory(targetPath, options);
58
- if (!args.quiet) {
59
- console.error('');
60
- console.error(`✓ Generated ${results.length} specification(s)`);
61
- for (const result of results) {
62
- console.error(` - ${result.featureName}: ${result.outputPath}/spec.md`);
63
- }
64
- // Show additional generated files
65
- const extras = [];
66
- if (args.specDesign)
67
- extras.push('design.md');
68
- if (args.specPrinciples)
69
- extras.push('principles.md');
70
- if (args.specTasks)
71
- extras.push('tasks.md');
72
- if (extras.length > 0) {
73
- console.error(` + Project-level: ${extras.join(', ')}`);
74
- }
75
- console.error('');
76
- console.error('Review required: specifications were automatically generated.');
77
- }
78
- if (args.format === 'json') {
79
- const output = JSON.stringify(results, null, 2);
80
- if (args.output) {
81
- fs.writeFileSync(args.output, output);
82
- if (!args.quiet)
83
- console.error(`JSON output written to ${args.output}`);
84
- }
85
- else {
86
- console.log(output);
87
- }
88
- }
89
- }
90
- else {
91
- const result = await generateSpecifica(targetPath, options);
92
- if (!args.quiet) {
93
- console.error('');
94
- console.error('✓ Specification generated successfully!');
95
- console.error('');
96
- console.error(`Feature: ${result.featureName}`);
97
- console.error(`Output: ${result.outputPath}/spec.md`);
98
- console.error('');
99
- console.error('Review required: This specification was automatically generated.');
100
- }
101
- if (args.format === 'json') {
102
- const output = JSON.stringify(result, null, 2);
103
- if (args.output) {
104
- fs.writeFileSync(args.output, output);
105
- if (!args.quiet)
106
- console.error(`JSON output written to ${args.output}`);
107
- }
108
- else {
109
- console.log(output);
110
- }
111
- }
112
- }
113
- return 0;
114
- }
115
- catch (error) {
116
- console.error('Error:', error instanceof Error ? error.message : error);
117
- return 1;
118
- }
119
- }
120
- //# sourceMappingURL=generate-spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-spec.js","sourceRoot":"","sources":["../../../src/cli/commands/generate-spec.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Health Score Command
3
- *
4
- * Calculates codebase health score across multiple dimensions.
5
- */
6
- import type { CliArgs } from '../args.js';
7
- /**
8
- * Execute health score command.
9
- */
10
- export declare function executeHealth(args: CliArgs): Promise<number>;
11
- //# sourceMappingURL=health.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/health.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAkElE"}