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,86 +0,0 @@
1
- /**
2
- * Quality Score Command
3
- *
4
- * Calculates a quality score for a codebase using 5 quality passes:
5
- * code-complexity, test-coverage, documentation-coverage,
6
- * maintainability-index, and performance-patterns.
7
- *
8
- * Usage:
9
- * cognium-ai quality <path>
10
- * cognium-ai quality <path> --format json
11
- * cognium-ai quality <path> --format markdown -o quality-badge.svg
12
- */
13
- import * as fs from 'fs';
14
- import { calculateQualityScore, formatQualityReport, } from '../../quality/calculator.js';
15
- import { generateQualityBadge } from '../../quality/badge.js';
16
- export async function executeQuality(args) {
17
- const targetPath = args.directory || args.file;
18
- if (!targetPath) {
19
- console.error('Error: No path specified');
20
- console.error('Usage: cognium-ai quality <path>');
21
- return 1;
22
- }
23
- if (!fs.existsSync(targetPath)) {
24
- console.error(`Error: Path not found: ${targetPath}`);
25
- return 1;
26
- }
27
- try {
28
- const result = await calculateQualityScore(targetPath, {
29
- onProgress: args.quiet
30
- ? undefined
31
- : (phase, progress) => {
32
- console.error(` [${Math.round(progress * 100)}%] ${phase}`);
33
- },
34
- });
35
- if (args.format === 'json') {
36
- const jsonOutput = JSON.stringify(result, null, 2);
37
- if (args.output) {
38
- fs.writeFileSync(args.output, jsonOutput);
39
- if (!args.quiet) {
40
- console.error(`Output written to ${args.output}`);
41
- }
42
- }
43
- else {
44
- console.log(jsonOutput);
45
- }
46
- }
47
- else if (args.format === 'markdown' || (args.output && args.output.endsWith('.svg'))) {
48
- // Badge output
49
- const svg = generateQualityBadge(result.score, result.tier);
50
- if (args.output) {
51
- fs.writeFileSync(args.output, svg);
52
- if (!args.quiet) {
53
- console.error(`Badge written to ${args.output}`);
54
- }
55
- }
56
- else {
57
- console.log(svg);
58
- }
59
- }
60
- else {
61
- // Text report (default)
62
- const report = formatQualityReport(result);
63
- if (args.output) {
64
- fs.writeFileSync(args.output, report);
65
- if (!args.quiet) {
66
- console.error(`Output written to ${args.output}`);
67
- }
68
- }
69
- else {
70
- console.log(report);
71
- }
72
- }
73
- if (args.exitCode && result.score < args.threshold) {
74
- if (!args.quiet) {
75
- console.error(`Quality score ${result.score} is below threshold ${args.threshold}`);
76
- }
77
- return 1;
78
- }
79
- return 0;
80
- }
81
- catch (error) {
82
- console.error('Error:', error instanceof Error ? error.message : error);
83
- return 1;
84
- }
85
- }
86
- //# sourceMappingURL=quality.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quality.js","sourceRoot":"","sources":["../../../src/cli/commands/quality.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Security Scan Command
3
- *
4
- * Runs continuous security scanning with OWASP Top 10 mapping.
5
- */
6
- import type { CliArgs } from '../args.js';
7
- /**
8
- * Execute security scan command.
9
- */
10
- export declare function executeScan(args: CliArgs): Promise<number>;
11
- //# sourceMappingURL=scan.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA0FhE"}
@@ -1,102 +0,0 @@
1
- /**
2
- * Security Scan Command
3
- *
4
- * Runs continuous security scanning with OWASP Top 10 mapping.
5
- */
6
- import * as fs from 'fs';
7
- import { scanDirectory, formatScanReport } from '../../security-scan/index.js';
8
- import { getDefaultLLMConfig, validateLLMConfig } from '../../llm/config.js';
9
- import { getEffectiveOptions } from '../effective-options.js';
10
- /**
11
- * Execute security scan command.
12
- */
13
- export async function executeScan(args) {
14
- const targetPath = args.directory || process.cwd();
15
- if (!fs.existsSync(targetPath)) {
16
- console.error(`Error: Path not found: ${targetPath}`);
17
- return 1;
18
- }
19
- // Check if LLM is enabled. Validate config; on failure, warn and fall back
20
- // to static-only rather than hard-failing — so the CLI works out of the box.
21
- let llmEnabled = !args.noLlm && (args.llmEnrich || args.llmVerify || args.llmDiscovery);
22
- if (llmEnabled) {
23
- const llmConfig = getDefaultLLMConfig();
24
- try {
25
- validateLLMConfig(llmConfig);
26
- if (!args.quiet) {
27
- console.error(`Scanning ${targetPath} for security vulnerabilities...`);
28
- console.error(`LLM enabled: ${llmConfig.phases.enrichment.model} via ${llmConfig.baseUrl}`);
29
- }
30
- }
31
- catch (error) {
32
- llmEnabled = false;
33
- if (!args.quiet) {
34
- console.error(`Note: LLM disabled (${error instanceof Error ? error.message : error}). Continuing with static analysis.`);
35
- console.error(`Scanning ${targetPath} for security vulnerabilities...`);
36
- }
37
- }
38
- }
39
- else {
40
- if (!args.quiet) {
41
- console.error(`Scanning ${targetPath} for security vulnerabilities...`);
42
- }
43
- }
44
- // Effective include/exclude (CLI overrides config) and severity/categories
45
- const eff = getEffectiveOptions(args, targetPath);
46
- const options = {
47
- target: targetPath,
48
- languages: args.language ? [args.language] : ['java', 'javascript', 'typescript', 'python', 'rust', 'bash', 'html'],
49
- categories: eff.categories.length > 0 ? eff.categories : undefined,
50
- enableLLM: llmEnabled,
51
- verbose: !args.quiet,
52
- fileTimeoutMs: args.fileTimeout * 1000,
53
- maxFiles: args.maxFiles ?? undefined,
54
- minSeverity: eff.severity,
55
- includePatterns: eff.include.length > 0 ? eff.include : undefined,
56
- excludePatterns: eff.exclude.length > 0 ? eff.exclude : undefined,
57
- onProgress: args.quiet ? undefined : (progress) => {
58
- if (progress.phase === 'analyze') {
59
- console.error(`[${progress.filesProcessed}/${progress.totalFiles}] ${progress.currentFile || ''}`);
60
- }
61
- },
62
- };
63
- try {
64
- const result = await scanDirectory(targetPath, options);
65
- // Output results
66
- if (args.format === 'json') {
67
- const output = JSON.stringify(result, null, 2);
68
- if (args.output) {
69
- fs.writeFileSync(args.output, output);
70
- if (!args.quiet) {
71
- console.error(`Output written to ${args.output}`);
72
- }
73
- }
74
- else {
75
- console.log(output);
76
- }
77
- }
78
- else {
79
- // Summary format
80
- const report = formatScanReport(result);
81
- if (args.output) {
82
- fs.writeFileSync(args.output, report);
83
- if (!args.quiet) {
84
- console.error(`Output written to ${args.output}`);
85
- }
86
- }
87
- else {
88
- console.log(report);
89
- }
90
- }
91
- // Exit with error code if vulnerabilities found
92
- if (args.exitCode && result.findings.length > 0) {
93
- return 1;
94
- }
95
- return 0;
96
- }
97
- catch (error) {
98
- console.error('Error:', error instanceof Error ? error.message : error);
99
- return 1;
100
- }
101
- }
102
- //# sourceMappingURL=scan.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Secret Scanning Command
3
- *
4
- * Scans for secrets in code and Git history.
5
- */
6
- import type { CliArgs } from '../args.js';
7
- /**
8
- * Execute secret scanning command.
9
- */
10
- export declare function executeSecrets(args: CliArgs): Promise<number>;
11
- //# sourceMappingURL=secrets.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/secrets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAqEnE"}
@@ -1,79 +0,0 @@
1
- /**
2
- * Secret Scanning Command
3
- *
4
- * Scans for secrets in code and Git history.
5
- */
6
- import * as fs from 'fs';
7
- import { scanForSecrets, formatSecretReport, } from '../../secret-scan/index.js';
8
- import { getEffectiveOptions } from '../effective-options.js';
9
- /**
10
- * Execute secret scanning command.
11
- */
12
- export async function executeSecrets(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
- const histLabel = args.history ? `working tree + last ${args.maxCommits} Git commits` : 'working tree only';
20
- console.error(`Scanning ${targetPath} for secrets (${histLabel})...`);
21
- }
22
- const eff = getEffectiveOptions(args, targetPath);
23
- const options = {
24
- scanHistory: args.history,
25
- maxCommits: args.maxCommits,
26
- minSeverity: eff.severity ?? undefined,
27
- includeCategories: args.includeCategory.length > 0 ? args.includeCategory : undefined,
28
- excludeCategories: args.excludeCategory.length > 0 ? args.excludeCategory : undefined,
29
- includeFiles: eff.include.length > 0 ? eff.include : undefined,
30
- excludeFiles: eff.exclude.length > 0 ? eff.exclude : undefined,
31
- onProgress: args.quiet ? undefined : (progress) => {
32
- if (progress.phase === 'scanning-files') {
33
- console.error(`[${progress.filesScanned}/${progress.totalFiles}] ${progress.currentFile || ''}`);
34
- }
35
- else if (progress.phase === 'scanning-history') {
36
- console.error(`[history] ${progress.commitsScanned ?? 0}/${progress.totalCommits ?? 0} commits`);
37
- }
38
- },
39
- };
40
- try {
41
- const result = await scanForSecrets(targetPath, options);
42
- // Output results
43
- if (args.format === 'json') {
44
- const output = JSON.stringify(result, null, 2);
45
- if (args.output) {
46
- fs.writeFileSync(args.output, output);
47
- if (!args.quiet) {
48
- console.error(`Output written to ${args.output}`);
49
- }
50
- }
51
- else {
52
- console.log(output);
53
- }
54
- }
55
- else {
56
- // Summary format
57
- const report = formatSecretReport(result);
58
- if (args.output) {
59
- fs.writeFileSync(args.output, report);
60
- if (!args.quiet) {
61
- console.error(`Output written to ${args.output}`);
62
- }
63
- }
64
- else {
65
- console.log(report);
66
- }
67
- }
68
- // Exit with error code if secrets found
69
- if (args.exitCode && result.secrets.length > 0) {
70
- return 1;
71
- }
72
- return 0;
73
- }
74
- catch (error) {
75
- console.error('Error:', error instanceof Error ? error.message : error);
76
- return 1;
77
- }
78
- }
79
- //# sourceMappingURL=secrets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/cli/commands/secrets.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Spec-Diff Command
3
- *
4
- * Compares code behavior against Specifica spec requirements.
5
- * Identifies uncovered requirements and undocumented behaviors.
6
- *
7
- * Usage:
8
- * cognium-ai spec-diff <path> [--spec <dir>] [--format json]
9
- */
10
- import type { CliArgs } from '../args.js';
11
- export declare function executeSpecDiff(args: CliArgs): Promise<number>;
12
- //# sourceMappingURL=spec-diff.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec-diff.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/spec-diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AA2D1C,wBAAsB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA8FpE"}
@@ -1,150 +0,0 @@
1
- /**
2
- * Spec-Diff Command
3
- *
4
- * Compares code behavior against Specifica spec requirements.
5
- * Identifies uncovered requirements and undocumented behaviors.
6
- *
7
- * Usage:
8
- * cognium-ai spec-diff <path> [--spec <dir>] [--format json]
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 { analyzeSpecGap } from '../../spec-gap/analyzer.js';
15
- import { collectFiles as collectSourceFiles } from '../file-collection.js';
16
- import { getEffectiveOptions } from '../effective-options.js';
17
- // ---------------------------------------------------------------------------
18
- // Text formatting
19
- // ---------------------------------------------------------------------------
20
- function formatTextReport(result) {
21
- const lines = [];
22
- lines.push('===============================================================');
23
- lines.push(' SPEC ALIGNMENT REPORT');
24
- lines.push('===============================================================');
25
- lines.push('');
26
- lines.push(` Spec Alignment: ${result.specAlignmentScore}/100`);
27
- lines.push('');
28
- // Covered requirements
29
- if (result.coveredRequirements.length > 0) {
30
- lines.push(`Covered Requirements (${result.summary.covered}/${result.summary.totalRequirements}):`);
31
- for (const match of result.coveredRequirements) {
32
- const conf = Math.round(match.confidence * 100);
33
- lines.push(` [x] ${match.requirement.id}: ${match.requirement.description}`);
34
- lines.push(` -> ${match.matchedFunction}() (${conf}% confidence)`);
35
- }
36
- lines.push('');
37
- }
38
- // Uncovered requirements
39
- if (result.uncoveredRequirements.length > 0) {
40
- lines.push(`Uncovered Requirements (${result.summary.uncovered}/${result.summary.totalRequirements}):`);
41
- for (const uncovered of result.uncoveredRequirements) {
42
- lines.push(` [ ] ${uncovered.requirement.id}: ${uncovered.requirement.description}`);
43
- }
44
- lines.push('');
45
- }
46
- // Undocumented behaviors
47
- if (result.undocumentedBehaviors.length > 0) {
48
- lines.push(`Undocumented Behaviors (${result.summary.undocumented}):`);
49
- for (const behavior of result.undocumentedBehaviors) {
50
- const icon = behavior.severity === 'warning' ? '!' : 'i';
51
- lines.push(` ${icon} ${behavior.description}`);
52
- lines.push(` Suggestion: ${behavior.suggestion}`);
53
- }
54
- lines.push('');
55
- }
56
- lines.push('===============================================================');
57
- return lines.join('\n');
58
- }
59
- // ---------------------------------------------------------------------------
60
- // Main command
61
- // ---------------------------------------------------------------------------
62
- export async function executeSpecDiff(args) {
63
- const targetPath = args.directory || args.file || process.cwd();
64
- if (!fs.existsSync(targetPath)) {
65
- console.error(`Error: Path not found: ${targetPath}`);
66
- return 1;
67
- }
68
- // Determine spec directory
69
- const specDir = args.specDir || path.join(fs.statSync(targetPath).isDirectory() ? targetPath : path.dirname(targetPath), '.specifica');
70
- if (!fs.existsSync(specDir)) {
71
- console.error(`Error: No .specifica/ directory found at ${specDir}`);
72
- console.error('Run "cognium-ai generate-spec" first to create specifications.');
73
- return 1;
74
- }
75
- if (!args.quiet) {
76
- console.error(`Running spec-gap analysis on ${targetPath}...`);
77
- console.error(` Spec directory: ${specDir}`);
78
- }
79
- try {
80
- // Initialize analyzer
81
- if (!isAnalyzerInitialized()) {
82
- if (!args.quiet)
83
- console.error(' Initializing analyzer...');
84
- await ensureAnalyzerInitialized();
85
- }
86
- // Collect and analyze files (respects --include/--exclude and config)
87
- const codePath = fs.statSync(targetPath).isDirectory() ? targetPath : path.dirname(targetPath);
88
- const eff = getEffectiveOptions(args, targetPath);
89
- const files = collectSourceFiles(targetPath, {
90
- include: eff.include,
91
- exclude: eff.exclude,
92
- maxFiles: args.maxFiles ?? 500,
93
- });
94
- if (!args.quiet) {
95
- console.error(` Analyzing ${files.length} source file(s)...`);
96
- }
97
- const circleIRResults = [];
98
- for (const file of files) {
99
- try {
100
- const content = fs.readFileSync(file.path, 'utf-8');
101
- const ir = await analyze(content, path.basename(file.path), file.language);
102
- circleIRResults.push(ir);
103
- }
104
- catch {
105
- // Skip files that fail analysis
106
- }
107
- }
108
- // Run spec-gap analysis
109
- const result = await analyzeSpecGap(codePath, circleIRResults, { specDir });
110
- if (!args.quiet) {
111
- console.error(` Analysis complete: ${result.summary.covered}/${result.summary.totalRequirements} requirements covered`);
112
- }
113
- // Output
114
- if (args.format === 'json') {
115
- const output = JSON.stringify(result, null, 2);
116
- if (args.output) {
117
- fs.writeFileSync(args.output, output);
118
- if (!args.quiet)
119
- console.error(`Output written to ${args.output}`);
120
- }
121
- else {
122
- console.log(output);
123
- }
124
- }
125
- else {
126
- const report = formatTextReport(result);
127
- if (args.output) {
128
- fs.writeFileSync(args.output, report);
129
- if (!args.quiet)
130
- console.error(`Output written to ${args.output}`);
131
- }
132
- else {
133
- console.log(report);
134
- }
135
- }
136
- // Exit with error code if alignment below configurable threshold
137
- if (args.exitCode && result.specAlignmentScore < args.threshold) {
138
- if (!args.quiet) {
139
- console.error(`Spec alignment ${result.specAlignmentScore} is below threshold ${args.threshold}`);
140
- }
141
- return 1;
142
- }
143
- return 0;
144
- }
145
- catch (error) {
146
- console.error('Error:', error instanceof Error ? error.message : error);
147
- return 1;
148
- }
149
- }
150
- //# sourceMappingURL=spec-diff.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec-diff.js","sourceRoot":"","sources":["../../../src/cli/commands/spec-diff.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Swarm Command - Parallel multi-file analysis using Mastra
3
- */
4
- import { type SwarmResult } from '../../agents/mastra/swarm.js';
5
- export interface SwarmOptions {
6
- directory: string;
7
- include: string[];
8
- exclude: string[];
9
- quiet: boolean;
10
- maxConcurrency: number;
11
- enableEnrichment: boolean;
12
- enableVerification: boolean;
13
- cacheEnabled?: boolean;
14
- cacheDir?: string;
15
- clearCache?: boolean;
16
- streamOutput?: string;
17
- memoryEfficient?: boolean;
18
- disabledPasses?: string[];
19
- }
20
- export declare function runSwarmAnalysis(options: SwarmOptions): Promise<SwarmResult>;
21
- //# sourceMappingURL=swarm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/swarm.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAsD,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAOpH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAE5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAuHlF"}