circle-ir-ai 2.7.0 → 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.
- package/CHANGELOG.md +63 -0
- package/dist/llm/ax-client.d.ts.map +1 -1
- package/dist/llm/ax-client.js +36 -10
- package/dist/llm/ax-client.js.map +1 -1
- package/package.json +2 -2
- package/dist/cli/args.d.ts +0 -86
- package/dist/cli/args.d.ts.map +0 -1
- package/dist/cli/args.js +0 -653
- package/dist/cli/args.js.map +0 -1
- package/dist/cli/colors.d.ts +0 -31
- package/dist/cli/colors.d.ts.map +0 -1
- package/dist/cli/colors.js +0 -80
- package/dist/cli/colors.js.map +0 -1
- package/dist/cli/commands/analyze-skill.d.ts +0 -33
- package/dist/cli/commands/analyze-skill.d.ts.map +0 -1
- package/dist/cli/commands/analyze-skill.js +0 -217
- package/dist/cli/commands/analyze-skill.js.map +0 -1
- package/dist/cli/commands/analyze.d.ts +0 -19
- package/dist/cli/commands/analyze.d.ts.map +0 -1
- package/dist/cli/commands/analyze.js +0 -303
- package/dist/cli/commands/analyze.js.map +0 -1
- package/dist/cli/commands/benchmark-runner.d.ts +0 -42
- package/dist/cli/commands/benchmark-runner.d.ts.map +0 -1
- package/dist/cli/commands/benchmark-runner.js +0 -18
- package/dist/cli/commands/benchmark-runner.js.map +0 -1
- package/dist/cli/commands/benchmark.d.ts +0 -11
- package/dist/cli/commands/benchmark.d.ts.map +0 -1
- package/dist/cli/commands/benchmark.js +0 -90
- package/dist/cli/commands/benchmark.js.map +0 -1
- package/dist/cli/commands/cluster.d.ts +0 -12
- package/dist/cli/commands/cluster.d.ts.map +0 -1
- package/dist/cli/commands/cluster.js +0 -203
- package/dist/cli/commands/cluster.js.map +0 -1
- package/dist/cli/commands/compare.d.ts +0 -13
- package/dist/cli/commands/compare.d.ts.map +0 -1
- package/dist/cli/commands/compare.js +0 -109
- package/dist/cli/commands/compare.js.map +0 -1
- package/dist/cli/commands/dead-code.d.ts +0 -11
- package/dist/cli/commands/dead-code.d.ts.map +0 -1
- package/dist/cli/commands/dead-code.js +0 -75
- package/dist/cli/commands/dead-code.js.map +0 -1
- package/dist/cli/commands/generate-spec.d.ts +0 -11
- package/dist/cli/commands/generate-spec.d.ts.map +0 -1
- package/dist/cli/commands/generate-spec.js +0 -120
- package/dist/cli/commands/generate-spec.js.map +0 -1
- package/dist/cli/commands/health.d.ts +0 -11
- package/dist/cli/commands/health.d.ts.map +0 -1
- package/dist/cli/commands/health.js +0 -76
- package/dist/cli/commands/health.js.map +0 -1
- package/dist/cli/commands/index.d.ts +0 -30
- package/dist/cli/commands/index.d.ts.map +0 -1
- package/dist/cli/commands/index.js +0 -36
- package/dist/cli/commands/index.js.map +0 -1
- package/dist/cli/commands/metrics.d.ts +0 -12
- package/dist/cli/commands/metrics.d.ts.map +0 -1
- package/dist/cli/commands/metrics.js +0 -231
- package/dist/cli/commands/metrics.js.map +0 -1
- package/dist/cli/commands/project.d.ts +0 -21
- package/dist/cli/commands/project.d.ts.map +0 -1
- package/dist/cli/commands/project.js +0 -92
- package/dist/cli/commands/project.js.map +0 -1
- package/dist/cli/commands/quality.d.ts +0 -15
- package/dist/cli/commands/quality.d.ts.map +0 -1
- package/dist/cli/commands/quality.js +0 -86
- package/dist/cli/commands/quality.js.map +0 -1
- package/dist/cli/commands/scan.d.ts +0 -11
- package/dist/cli/commands/scan.d.ts.map +0 -1
- package/dist/cli/commands/scan.js +0 -102
- package/dist/cli/commands/scan.js.map +0 -1
- package/dist/cli/commands/secrets.d.ts +0 -11
- package/dist/cli/commands/secrets.d.ts.map +0 -1
- package/dist/cli/commands/secrets.js +0 -79
- package/dist/cli/commands/secrets.js.map +0 -1
- package/dist/cli/commands/spec-diff.d.ts +0 -12
- package/dist/cli/commands/spec-diff.d.ts.map +0 -1
- package/dist/cli/commands/spec-diff.js +0 -150
- package/dist/cli/commands/spec-diff.js.map +0 -1
- package/dist/cli/commands/swarm.d.ts +0 -21
- package/dist/cli/commands/swarm.d.ts.map +0 -1
- package/dist/cli/commands/swarm.js +0 -175
- package/dist/cli/commands/swarm.js.map +0 -1
- package/dist/cli/commands/trust.d.ts +0 -23
- package/dist/cli/commands/trust.d.ts.map +0 -1
- package/dist/cli/commands/trust.js +0 -397
- package/dist/cli/commands/trust.js.map +0 -1
- package/dist/cli/commands/understand.d.ts +0 -12
- package/dist/cli/commands/understand.d.ts.map +0 -1
- package/dist/cli/commands/understand.js +0 -188
- package/dist/cli/commands/understand.js.map +0 -1
- package/dist/cli/config.d.ts +0 -161
- package/dist/cli/config.d.ts.map +0 -1
- package/dist/cli/config.js +0 -383
- package/dist/cli/config.js.map +0 -1
- package/dist/cli/discovery.d.ts +0 -31
- package/dist/cli/discovery.d.ts.map +0 -1
- package/dist/cli/discovery.js +0 -212
- package/dist/cli/discovery.js.map +0 -1
- package/dist/cli/effective-options.d.ts +0 -42
- package/dist/cli/effective-options.d.ts.map +0 -1
- package/dist/cli/effective-options.js +0 -80
- package/dist/cli/effective-options.js.map +0 -1
- package/dist/cli/file-collection.d.ts +0 -49
- package/dist/cli/file-collection.d.ts.map +0 -1
- package/dist/cli/file-collection.js +0 -142
- package/dist/cli/file-collection.js.map +0 -1
- package/dist/cli/formatters/index.d.ts +0 -15
- package/dist/cli/formatters/index.d.ts.map +0 -1
- package/dist/cli/formatters/index.js +0 -51
- package/dist/cli/formatters/index.js.map +0 -1
- package/dist/cli/formatters/json.d.ts +0 -11
- package/dist/cli/formatters/json.d.ts.map +0 -1
- package/dist/cli/formatters/json.js +0 -12
- package/dist/cli/formatters/json.js.map +0 -1
- package/dist/cli/formatters/project-json.d.ts +0 -11
- package/dist/cli/formatters/project-json.d.ts.map +0 -1
- package/dist/cli/formatters/project-json.js +0 -12
- package/dist/cli/formatters/project-json.js.map +0 -1
- package/dist/cli/formatters/project-sarif.d.ts +0 -11
- package/dist/cli/formatters/project-sarif.d.ts.map +0 -1
- package/dist/cli/formatters/project-sarif.js +0 -127
- package/dist/cli/formatters/project-sarif.js.map +0 -1
- package/dist/cli/formatters/project-summary.d.ts +0 -11
- package/dist/cli/formatters/project-summary.d.ts.map +0 -1
- package/dist/cli/formatters/project-summary.js +0 -202
- package/dist/cli/formatters/project-summary.js.map +0 -1
- package/dist/cli/formatters/sarif-shared.d.ts +0 -101
- package/dist/cli/formatters/sarif-shared.d.ts.map +0 -1
- package/dist/cli/formatters/sarif-shared.js +0 -57
- package/dist/cli/formatters/sarif-shared.js.map +0 -1
- package/dist/cli/formatters/sarif.d.ts +0 -12
- package/dist/cli/formatters/sarif.d.ts.map +0 -1
- package/dist/cli/formatters/sarif.js +0 -92
- package/dist/cli/formatters/sarif.js.map +0 -1
- package/dist/cli/formatters/summary.d.ts +0 -11
- package/dist/cli/formatters/summary.d.ts.map +0 -1
- package/dist/cli/formatters/summary.js +0 -240
- package/dist/cli/formatters/summary.js.map +0 -1
- package/dist/cli/formatters/two-phase-summary.d.ts +0 -11
- package/dist/cli/formatters/two-phase-summary.d.ts.map +0 -1
- package/dist/cli/formatters/two-phase-summary.js +0 -188
- package/dist/cli/formatters/two-phase-summary.js.map +0 -1
- package/dist/cli/index.d.ts +0 -10
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -72
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/program.d.ts +0 -117
- package/dist/cli/program.d.ts.map +0 -1
- package/dist/cli/program.js +0 -825
- package/dist/cli/program.js.map +0 -1
package/dist/cli/args.js
DELETED
|
@@ -1,653 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI Argument Parser
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Parse command-line arguments.
|
|
6
|
-
*/
|
|
7
|
-
export function parseArgs(argv) {
|
|
8
|
-
const args = {
|
|
9
|
-
command: 'analyze',
|
|
10
|
-
file: null,
|
|
11
|
-
directory: null,
|
|
12
|
-
format: 'summary',
|
|
13
|
-
output: null,
|
|
14
|
-
config: null,
|
|
15
|
-
include: [],
|
|
16
|
-
exclude: [],
|
|
17
|
-
exitCode: false,
|
|
18
|
-
quiet: false,
|
|
19
|
-
help: false,
|
|
20
|
-
version: false,
|
|
21
|
-
logLevel: null,
|
|
22
|
-
discoverPatterns: false,
|
|
23
|
-
patternThreshold: 0.6,
|
|
24
|
-
noLlm: false,
|
|
25
|
-
llmEnrich: false,
|
|
26
|
-
llmVerify: false,
|
|
27
|
-
llmBaseUrl: null,
|
|
28
|
-
llmApiKey: null,
|
|
29
|
-
llmModel: null,
|
|
30
|
-
language: null,
|
|
31
|
-
threads: 10,
|
|
32
|
-
bundle: null,
|
|
33
|
-
expectedResults: null,
|
|
34
|
-
limit: null,
|
|
35
|
-
categories: [],
|
|
36
|
-
parallel: null,
|
|
37
|
-
cache: true,
|
|
38
|
-
cacheDir: null,
|
|
39
|
-
clearCache: false,
|
|
40
|
-
streamOutput: null,
|
|
41
|
-
memoryEfficient: false,
|
|
42
|
-
specModel: null,
|
|
43
|
-
specOverwrite: false,
|
|
44
|
-
specSkip: false,
|
|
45
|
-
specNoBackup: false,
|
|
46
|
-
specDesign: false,
|
|
47
|
-
specPrinciples: false,
|
|
48
|
-
specTasks: false,
|
|
49
|
-
specDesignLLM: false,
|
|
50
|
-
specPrinciplesLLM: false,
|
|
51
|
-
specTasksLLM: false,
|
|
52
|
-
specDir: null,
|
|
53
|
-
severity: null,
|
|
54
|
-
excludeTests: false,
|
|
55
|
-
llmDiscovery: false,
|
|
56
|
-
disablePass: [],
|
|
57
|
-
fileTimeout: 30,
|
|
58
|
-
maxFiles: null,
|
|
59
|
-
pathB: null,
|
|
60
|
-
history: true,
|
|
61
|
-
maxCommits: 100,
|
|
62
|
-
includeCategory: [],
|
|
63
|
-
excludeCategory: [],
|
|
64
|
-
includeTests: false,
|
|
65
|
-
publicAsEntry: false,
|
|
66
|
-
top: null,
|
|
67
|
-
full: false,
|
|
68
|
-
metricCategory: [],
|
|
69
|
-
role: [],
|
|
70
|
-
securityOnly: false,
|
|
71
|
-
healthSecurity: true,
|
|
72
|
-
healthSecrets: true,
|
|
73
|
-
healthDeadCode: true,
|
|
74
|
-
healthQuality: true,
|
|
75
|
-
healthPerformance: true,
|
|
76
|
-
threshold: 50,
|
|
77
|
-
};
|
|
78
|
-
let i = 0;
|
|
79
|
-
while (i < argv.length) {
|
|
80
|
-
const arg = argv[i];
|
|
81
|
-
switch (arg) {
|
|
82
|
-
case 'benchmark':
|
|
83
|
-
args.command = 'benchmark';
|
|
84
|
-
break;
|
|
85
|
-
case 'scan':
|
|
86
|
-
args.command = 'scan';
|
|
87
|
-
break;
|
|
88
|
-
case 'health':
|
|
89
|
-
args.command = 'health';
|
|
90
|
-
break;
|
|
91
|
-
case 'secrets':
|
|
92
|
-
args.command = 'secrets';
|
|
93
|
-
break;
|
|
94
|
-
case 'dead-code':
|
|
95
|
-
args.command = 'dead-code';
|
|
96
|
-
break;
|
|
97
|
-
case 'generate-spec':
|
|
98
|
-
args.command = 'generate-spec';
|
|
99
|
-
break;
|
|
100
|
-
case 'analyze-skill':
|
|
101
|
-
args.command = 'analyze-skill';
|
|
102
|
-
break;
|
|
103
|
-
case 'metrics':
|
|
104
|
-
args.command = 'metrics';
|
|
105
|
-
break;
|
|
106
|
-
case 'trust':
|
|
107
|
-
args.command = 'trust';
|
|
108
|
-
break;
|
|
109
|
-
case 'compare':
|
|
110
|
-
args.command = 'compare';
|
|
111
|
-
break;
|
|
112
|
-
case 'quality':
|
|
113
|
-
args.command = 'quality';
|
|
114
|
-
break;
|
|
115
|
-
case 'understand':
|
|
116
|
-
args.command = 'understand';
|
|
117
|
-
break;
|
|
118
|
-
case 'spec-diff':
|
|
119
|
-
args.command = 'spec-diff';
|
|
120
|
-
break;
|
|
121
|
-
case 'cluster':
|
|
122
|
-
args.command = 'cluster';
|
|
123
|
-
break;
|
|
124
|
-
case '-h':
|
|
125
|
-
case '--help':
|
|
126
|
-
args.help = true;
|
|
127
|
-
break;
|
|
128
|
-
case '-v':
|
|
129
|
-
case '--version':
|
|
130
|
-
args.version = true;
|
|
131
|
-
break;
|
|
132
|
-
case '-f':
|
|
133
|
-
case '--format':
|
|
134
|
-
i++;
|
|
135
|
-
if (i >= argv.length) {
|
|
136
|
-
throw new Error('Missing value for --format');
|
|
137
|
-
}
|
|
138
|
-
const format = argv[i].toLowerCase();
|
|
139
|
-
if (!['json', 'summary', 'sarif', 'markdown'].includes(format)) {
|
|
140
|
-
throw new Error(`Invalid format: ${format}. Use json, summary, sarif, or markdown.`);
|
|
141
|
-
}
|
|
142
|
-
args.format = format;
|
|
143
|
-
break;
|
|
144
|
-
case '-o':
|
|
145
|
-
case '--output':
|
|
146
|
-
i++;
|
|
147
|
-
if (i >= argv.length) {
|
|
148
|
-
throw new Error('Missing value for --output');
|
|
149
|
-
}
|
|
150
|
-
args.output = argv[i];
|
|
151
|
-
break;
|
|
152
|
-
case '-c':
|
|
153
|
-
case '--config':
|
|
154
|
-
i++;
|
|
155
|
-
if (i >= argv.length) {
|
|
156
|
-
throw new Error('Missing value for --config');
|
|
157
|
-
}
|
|
158
|
-
args.config = argv[i];
|
|
159
|
-
break;
|
|
160
|
-
case '-i':
|
|
161
|
-
case '--include':
|
|
162
|
-
i++;
|
|
163
|
-
if (i >= argv.length) {
|
|
164
|
-
throw new Error('Missing value for --include');
|
|
165
|
-
}
|
|
166
|
-
args.include.push(argv[i]);
|
|
167
|
-
break;
|
|
168
|
-
case '-x':
|
|
169
|
-
case '--exclude':
|
|
170
|
-
i++;
|
|
171
|
-
if (i >= argv.length) {
|
|
172
|
-
throw new Error('Missing value for --exclude');
|
|
173
|
-
}
|
|
174
|
-
args.exclude.push(argv[i]);
|
|
175
|
-
break;
|
|
176
|
-
case '-e':
|
|
177
|
-
case '--exit-code':
|
|
178
|
-
args.exitCode = true;
|
|
179
|
-
break;
|
|
180
|
-
case '-q':
|
|
181
|
-
case '--quiet':
|
|
182
|
-
args.quiet = true;
|
|
183
|
-
break;
|
|
184
|
-
case '-d':
|
|
185
|
-
case '--discover-patterns':
|
|
186
|
-
args.discoverPatterns = true;
|
|
187
|
-
break;
|
|
188
|
-
case '--pattern-threshold':
|
|
189
|
-
i++;
|
|
190
|
-
if (i >= argv.length) {
|
|
191
|
-
throw new Error('Missing value for --pattern-threshold');
|
|
192
|
-
}
|
|
193
|
-
args.patternThreshold = parseFloat(argv[i]);
|
|
194
|
-
if (isNaN(args.patternThreshold) || args.patternThreshold < 0 || args.patternThreshold > 1) {
|
|
195
|
-
throw new Error('--pattern-threshold must be a number between 0 and 1');
|
|
196
|
-
}
|
|
197
|
-
break;
|
|
198
|
-
case '--llm-enrich':
|
|
199
|
-
args.llmEnrich = true;
|
|
200
|
-
break;
|
|
201
|
-
case '--llm-verify':
|
|
202
|
-
args.llmVerify = true;
|
|
203
|
-
break;
|
|
204
|
-
case '--llm':
|
|
205
|
-
// Enable both enrichment and verification
|
|
206
|
-
args.llmEnrich = true;
|
|
207
|
-
args.llmVerify = true;
|
|
208
|
-
break;
|
|
209
|
-
case '--no-llm':
|
|
210
|
-
// Explicitly disable LLM (static analysis only)
|
|
211
|
-
args.noLlm = true;
|
|
212
|
-
args.llmEnrich = false;
|
|
213
|
-
args.llmVerify = false;
|
|
214
|
-
break;
|
|
215
|
-
case '--llm-discovery':
|
|
216
|
-
// Enable LLM discovery mode (deeper analysis)
|
|
217
|
-
args.llmDiscovery = true;
|
|
218
|
-
args.llmEnrich = true;
|
|
219
|
-
break;
|
|
220
|
-
case '--severity':
|
|
221
|
-
i++;
|
|
222
|
-
if (i >= argv.length) {
|
|
223
|
-
throw new Error('Missing value for --severity');
|
|
224
|
-
}
|
|
225
|
-
const severity = argv[i].toLowerCase();
|
|
226
|
-
if (!['critical', 'high', 'medium', 'low'].includes(severity)) {
|
|
227
|
-
throw new Error(`Invalid severity: ${severity}. Use critical, high, medium, or low.`);
|
|
228
|
-
}
|
|
229
|
-
args.severity = severity;
|
|
230
|
-
break;
|
|
231
|
-
case '--exclude-tests':
|
|
232
|
-
args.excludeTests = true;
|
|
233
|
-
break;
|
|
234
|
-
case '--llm-base-url':
|
|
235
|
-
i++;
|
|
236
|
-
if (i >= argv.length) {
|
|
237
|
-
throw new Error('Missing value for --llm-base-url');
|
|
238
|
-
}
|
|
239
|
-
args.llmBaseUrl = argv[i];
|
|
240
|
-
break;
|
|
241
|
-
case '--llm-api-key':
|
|
242
|
-
i++;
|
|
243
|
-
if (i >= argv.length) {
|
|
244
|
-
throw new Error('Missing value for --llm-api-key');
|
|
245
|
-
}
|
|
246
|
-
args.llmApiKey = argv[i];
|
|
247
|
-
break;
|
|
248
|
-
case '--llm-model':
|
|
249
|
-
i++;
|
|
250
|
-
if (i >= argv.length) {
|
|
251
|
-
throw new Error('Missing value for --llm-model');
|
|
252
|
-
}
|
|
253
|
-
args.llmModel = argv[i];
|
|
254
|
-
break;
|
|
255
|
-
case '-l':
|
|
256
|
-
case '--language':
|
|
257
|
-
i++;
|
|
258
|
-
if (i >= argv.length) {
|
|
259
|
-
throw new Error('Missing value for --language');
|
|
260
|
-
}
|
|
261
|
-
args.language = argv[i].toLowerCase();
|
|
262
|
-
break;
|
|
263
|
-
case '-t':
|
|
264
|
-
case '--threads':
|
|
265
|
-
i++;
|
|
266
|
-
if (i >= argv.length) {
|
|
267
|
-
throw new Error('Missing value for --threads');
|
|
268
|
-
}
|
|
269
|
-
args.threads = parseInt(argv[i], 10);
|
|
270
|
-
if (isNaN(args.threads) || args.threads < 1) {
|
|
271
|
-
throw new Error('--threads must be a positive number');
|
|
272
|
-
}
|
|
273
|
-
break;
|
|
274
|
-
case '-b':
|
|
275
|
-
case '--bundle':
|
|
276
|
-
i++;
|
|
277
|
-
if (i >= argv.length) {
|
|
278
|
-
throw new Error('Missing value for --bundle');
|
|
279
|
-
}
|
|
280
|
-
const bundle = argv[i].toLowerCase();
|
|
281
|
-
if (!['jr-dev', 'sr-dev', 'architect', 'security-review', 'full-review'].includes(bundle)) {
|
|
282
|
-
throw new Error(`Invalid bundle: ${bundle}. Use jr-dev, sr-dev, architect, security-review, or full-review.`);
|
|
283
|
-
}
|
|
284
|
-
args.bundle = bundle;
|
|
285
|
-
break;
|
|
286
|
-
case '--log-level':
|
|
287
|
-
i++;
|
|
288
|
-
if (i >= argv.length) {
|
|
289
|
-
throw new Error('Missing value for --log-level');
|
|
290
|
-
}
|
|
291
|
-
const logLevel = argv[i].toLowerCase();
|
|
292
|
-
if (!['trace', 'debug', 'info', 'warn', 'error', 'silent'].includes(logLevel)) {
|
|
293
|
-
throw new Error(`Invalid log level: ${logLevel}. Use trace, debug, info, warn, error, or silent.`);
|
|
294
|
-
}
|
|
295
|
-
args.logLevel = logLevel;
|
|
296
|
-
break;
|
|
297
|
-
case '--expected':
|
|
298
|
-
case '--expected-results':
|
|
299
|
-
i++;
|
|
300
|
-
if (i >= argv.length) {
|
|
301
|
-
throw new Error('Missing value for --expected-results');
|
|
302
|
-
}
|
|
303
|
-
args.expectedResults = argv[i];
|
|
304
|
-
break;
|
|
305
|
-
case '--limit':
|
|
306
|
-
i++;
|
|
307
|
-
if (i >= argv.length) {
|
|
308
|
-
throw new Error('Missing value for --limit');
|
|
309
|
-
}
|
|
310
|
-
args.limit = parseInt(argv[i], 10);
|
|
311
|
-
if (isNaN(args.limit)) {
|
|
312
|
-
throw new Error('--limit must be a number');
|
|
313
|
-
}
|
|
314
|
-
break;
|
|
315
|
-
case '--category':
|
|
316
|
-
i++;
|
|
317
|
-
if (i >= argv.length) {
|
|
318
|
-
throw new Error('Missing value for --category');
|
|
319
|
-
}
|
|
320
|
-
args.categories.push(argv[i]);
|
|
321
|
-
break;
|
|
322
|
-
case '--parallel':
|
|
323
|
-
i++;
|
|
324
|
-
if (i >= argv.length) {
|
|
325
|
-
throw new Error('Missing value for --parallel');
|
|
326
|
-
}
|
|
327
|
-
args.parallel = parseInt(argv[i], 10);
|
|
328
|
-
if (isNaN(args.parallel) || args.parallel < 1) {
|
|
329
|
-
throw new Error('--parallel must be a positive number');
|
|
330
|
-
}
|
|
331
|
-
break;
|
|
332
|
-
case '--cache':
|
|
333
|
-
args.cache = true;
|
|
334
|
-
break;
|
|
335
|
-
case '--no-cache':
|
|
336
|
-
args.cache = false;
|
|
337
|
-
break;
|
|
338
|
-
case '--cache-dir':
|
|
339
|
-
i++;
|
|
340
|
-
if (i >= argv.length) {
|
|
341
|
-
throw new Error('Missing value for --cache-dir');
|
|
342
|
-
}
|
|
343
|
-
args.cacheDir = argv[i];
|
|
344
|
-
break;
|
|
345
|
-
case '--clear-cache':
|
|
346
|
-
args.clearCache = true;
|
|
347
|
-
break;
|
|
348
|
-
case '--stream-output':
|
|
349
|
-
i++;
|
|
350
|
-
if (i >= argv.length) {
|
|
351
|
-
throw new Error('Missing value for --stream-output');
|
|
352
|
-
}
|
|
353
|
-
args.streamOutput = argv[i];
|
|
354
|
-
break;
|
|
355
|
-
case '--memory-efficient':
|
|
356
|
-
args.memoryEfficient = true;
|
|
357
|
-
break;
|
|
358
|
-
case '--spec-model':
|
|
359
|
-
i++;
|
|
360
|
-
if (i >= argv.length) {
|
|
361
|
-
throw new Error('Missing value for --spec-model');
|
|
362
|
-
}
|
|
363
|
-
args.specModel = argv[i];
|
|
364
|
-
break;
|
|
365
|
-
case '--spec-overwrite':
|
|
366
|
-
args.specOverwrite = true;
|
|
367
|
-
break;
|
|
368
|
-
case '--spec-skip':
|
|
369
|
-
args.specSkip = true;
|
|
370
|
-
break;
|
|
371
|
-
case '--spec-no-backup':
|
|
372
|
-
args.specNoBackup = true;
|
|
373
|
-
break;
|
|
374
|
-
case '--design':
|
|
375
|
-
args.specDesign = true;
|
|
376
|
-
break;
|
|
377
|
-
case '--principles':
|
|
378
|
-
args.specPrinciples = true;
|
|
379
|
-
break;
|
|
380
|
-
case '--tasks':
|
|
381
|
-
args.specTasks = true;
|
|
382
|
-
break;
|
|
383
|
-
case '--design-llm':
|
|
384
|
-
args.specDesignLLM = true;
|
|
385
|
-
args.specDesign = true; // Implied
|
|
386
|
-
break;
|
|
387
|
-
case '--principles-llm':
|
|
388
|
-
args.specPrinciplesLLM = true;
|
|
389
|
-
args.specPrinciples = true; // Implied
|
|
390
|
-
break;
|
|
391
|
-
case '--tasks-llm':
|
|
392
|
-
args.specTasksLLM = true;
|
|
393
|
-
args.specTasks = true; // Implied
|
|
394
|
-
break;
|
|
395
|
-
case '--all':
|
|
396
|
-
// Generate all outputs (design + principles + tasks)
|
|
397
|
-
args.specDesign = true;
|
|
398
|
-
args.specPrinciples = true;
|
|
399
|
-
args.specTasks = true;
|
|
400
|
-
break;
|
|
401
|
-
case '--spec':
|
|
402
|
-
i++;
|
|
403
|
-
if (i >= argv.length) {
|
|
404
|
-
throw new Error('Missing value for --spec');
|
|
405
|
-
}
|
|
406
|
-
args.specDir = argv[i];
|
|
407
|
-
break;
|
|
408
|
-
case '--disable-pass':
|
|
409
|
-
i++;
|
|
410
|
-
if (i >= argv.length) {
|
|
411
|
-
throw new Error('Missing value for --disable-pass');
|
|
412
|
-
}
|
|
413
|
-
args.disablePass.push(...argv[i].split(',').map(s => s.trim()).filter(Boolean));
|
|
414
|
-
break;
|
|
415
|
-
case '--file-timeout':
|
|
416
|
-
i++;
|
|
417
|
-
if (i >= argv.length) {
|
|
418
|
-
throw new Error('Missing value for --file-timeout');
|
|
419
|
-
}
|
|
420
|
-
args.fileTimeout = parseInt(argv[i], 10);
|
|
421
|
-
if (isNaN(args.fileTimeout) || args.fileTimeout < 1) {
|
|
422
|
-
throw new Error('--file-timeout must be a positive number (seconds)');
|
|
423
|
-
}
|
|
424
|
-
break;
|
|
425
|
-
case '--max-files':
|
|
426
|
-
i++;
|
|
427
|
-
if (i >= argv.length) {
|
|
428
|
-
throw new Error('Missing value for --max-files');
|
|
429
|
-
}
|
|
430
|
-
args.maxFiles = parseInt(argv[i], 10);
|
|
431
|
-
if (isNaN(args.maxFiles) || args.maxFiles < 1) {
|
|
432
|
-
throw new Error('--max-files must be a positive number');
|
|
433
|
-
}
|
|
434
|
-
break;
|
|
435
|
-
default:
|
|
436
|
-
// Check for --key=value style
|
|
437
|
-
if (arg.startsWith('--format=')) {
|
|
438
|
-
const format = arg.substring(9).toLowerCase();
|
|
439
|
-
if (!['json', 'summary', 'sarif', 'markdown'].includes(format)) {
|
|
440
|
-
throw new Error(`Invalid format: ${format}. Use json, summary, or sarif.`);
|
|
441
|
-
}
|
|
442
|
-
args.format = format;
|
|
443
|
-
}
|
|
444
|
-
else if (arg.startsWith('--output=')) {
|
|
445
|
-
args.output = arg.substring(9);
|
|
446
|
-
}
|
|
447
|
-
else if (arg.startsWith('--config=')) {
|
|
448
|
-
args.config = arg.substring(9);
|
|
449
|
-
}
|
|
450
|
-
else if (arg.startsWith('--include=')) {
|
|
451
|
-
args.include.push(arg.substring(10));
|
|
452
|
-
}
|
|
453
|
-
else if (arg.startsWith('--exclude=')) {
|
|
454
|
-
args.exclude.push(arg.substring(10));
|
|
455
|
-
}
|
|
456
|
-
else if (arg.startsWith('--expected=') || arg.startsWith('--expected-results=')) {
|
|
457
|
-
const value = arg.includes('--expected-results=')
|
|
458
|
-
? arg.substring(19)
|
|
459
|
-
: arg.substring(11);
|
|
460
|
-
args.expectedResults = value;
|
|
461
|
-
}
|
|
462
|
-
else if (arg.startsWith('--limit=')) {
|
|
463
|
-
const value = parseInt(arg.substring(8), 10);
|
|
464
|
-
if (isNaN(value)) {
|
|
465
|
-
throw new Error('--limit must be a number');
|
|
466
|
-
}
|
|
467
|
-
args.limit = value;
|
|
468
|
-
}
|
|
469
|
-
else if (arg.startsWith('--category=')) {
|
|
470
|
-
args.categories.push(arg.substring(11));
|
|
471
|
-
}
|
|
472
|
-
else if (arg.startsWith('--parallel=')) {
|
|
473
|
-
const value = parseInt(arg.substring(11), 10);
|
|
474
|
-
if (isNaN(value) || value < 1) {
|
|
475
|
-
throw new Error('--parallel must be a positive number');
|
|
476
|
-
}
|
|
477
|
-
args.parallel = value;
|
|
478
|
-
}
|
|
479
|
-
else if (arg.startsWith('--log-level=')) {
|
|
480
|
-
const logLevel = arg.substring(12).toLowerCase();
|
|
481
|
-
if (!['trace', 'debug', 'info', 'warn', 'error', 'silent'].includes(logLevel)) {
|
|
482
|
-
throw new Error(`Invalid log level: ${logLevel}. Use trace, debug, info, warn, error, or silent.`);
|
|
483
|
-
}
|
|
484
|
-
args.logLevel = logLevel;
|
|
485
|
-
}
|
|
486
|
-
else if (arg === '--discover-patterns') {
|
|
487
|
-
args.discoverPatterns = true;
|
|
488
|
-
}
|
|
489
|
-
else if (arg.startsWith('--pattern-threshold=')) {
|
|
490
|
-
const value = parseFloat(arg.substring(20));
|
|
491
|
-
if (isNaN(value) || value < 0 || value > 1) {
|
|
492
|
-
throw new Error('--pattern-threshold must be a number between 0 and 1');
|
|
493
|
-
}
|
|
494
|
-
args.patternThreshold = value;
|
|
495
|
-
}
|
|
496
|
-
else if (arg === '--llm-enrich') {
|
|
497
|
-
args.llmEnrich = true;
|
|
498
|
-
}
|
|
499
|
-
else if (arg === '--llm-verify') {
|
|
500
|
-
args.llmVerify = true;
|
|
501
|
-
}
|
|
502
|
-
else if (arg === '--llm') {
|
|
503
|
-
args.llmEnrich = true;
|
|
504
|
-
args.llmVerify = true;
|
|
505
|
-
}
|
|
506
|
-
else if (arg === '--no-llm') {
|
|
507
|
-
args.noLlm = true;
|
|
508
|
-
args.llmEnrich = false;
|
|
509
|
-
args.llmVerify = false;
|
|
510
|
-
}
|
|
511
|
-
else if (arg === '--llm-discovery') {
|
|
512
|
-
args.llmDiscovery = true;
|
|
513
|
-
args.llmEnrich = true;
|
|
514
|
-
}
|
|
515
|
-
else if (arg.startsWith('--severity=')) {
|
|
516
|
-
const sev = arg.substring(11).toLowerCase();
|
|
517
|
-
if (!['critical', 'high', 'medium', 'low'].includes(sev)) {
|
|
518
|
-
throw new Error(`Invalid severity: ${sev}. Use critical, high, medium, or low.`);
|
|
519
|
-
}
|
|
520
|
-
args.severity = sev;
|
|
521
|
-
}
|
|
522
|
-
else if (arg === '--exclude-tests') {
|
|
523
|
-
args.excludeTests = true;
|
|
524
|
-
}
|
|
525
|
-
else if (arg.startsWith('--llm-base-url=')) {
|
|
526
|
-
args.llmBaseUrl = arg.substring(15);
|
|
527
|
-
}
|
|
528
|
-
else if (arg.startsWith('--llm-api-key=')) {
|
|
529
|
-
args.llmApiKey = arg.substring(14);
|
|
530
|
-
}
|
|
531
|
-
else if (arg.startsWith('--llm-model=')) {
|
|
532
|
-
args.llmModel = arg.substring(12);
|
|
533
|
-
}
|
|
534
|
-
else if (arg.startsWith('--language=')) {
|
|
535
|
-
args.language = arg.substring(11).toLowerCase();
|
|
536
|
-
}
|
|
537
|
-
else if (arg.startsWith('--threads=')) {
|
|
538
|
-
const value = parseInt(arg.substring(10), 10);
|
|
539
|
-
if (isNaN(value) || value < 1) {
|
|
540
|
-
throw new Error('--threads must be a positive number');
|
|
541
|
-
}
|
|
542
|
-
args.threads = value;
|
|
543
|
-
}
|
|
544
|
-
else if (arg.startsWith('--bundle=')) {
|
|
545
|
-
const bundle = arg.substring(9).toLowerCase();
|
|
546
|
-
if (!['jr-dev', 'sr-dev', 'architect', 'security-review', 'full-review'].includes(bundle)) {
|
|
547
|
-
throw new Error(`Invalid bundle: ${bundle}. Use jr-dev, sr-dev, architect, security-review, or full-review.`);
|
|
548
|
-
}
|
|
549
|
-
args.bundle = bundle;
|
|
550
|
-
}
|
|
551
|
-
else if (arg === '--cache') {
|
|
552
|
-
args.cache = true;
|
|
553
|
-
}
|
|
554
|
-
else if (arg === '--no-cache') {
|
|
555
|
-
args.cache = false;
|
|
556
|
-
}
|
|
557
|
-
else if (arg.startsWith('--cache-dir=')) {
|
|
558
|
-
args.cacheDir = arg.substring(12);
|
|
559
|
-
}
|
|
560
|
-
else if (arg === '--clear-cache') {
|
|
561
|
-
args.clearCache = true;
|
|
562
|
-
}
|
|
563
|
-
else if (arg.startsWith('--stream-output=')) {
|
|
564
|
-
args.streamOutput = arg.substring(16);
|
|
565
|
-
}
|
|
566
|
-
else if (arg === '--memory-efficient') {
|
|
567
|
-
args.memoryEfficient = true;
|
|
568
|
-
}
|
|
569
|
-
else if (arg.startsWith('--spec-model=')) {
|
|
570
|
-
args.specModel = arg.substring(13);
|
|
571
|
-
}
|
|
572
|
-
else if (arg === '--spec-overwrite') {
|
|
573
|
-
args.specOverwrite = true;
|
|
574
|
-
}
|
|
575
|
-
else if (arg === '--spec-skip') {
|
|
576
|
-
args.specSkip = true;
|
|
577
|
-
}
|
|
578
|
-
else if (arg === '--spec-no-backup') {
|
|
579
|
-
args.specNoBackup = true;
|
|
580
|
-
}
|
|
581
|
-
else if (arg === '--design') {
|
|
582
|
-
args.specDesign = true;
|
|
583
|
-
}
|
|
584
|
-
else if (arg === '--principles') {
|
|
585
|
-
args.specPrinciples = true;
|
|
586
|
-
}
|
|
587
|
-
else if (arg === '--tasks') {
|
|
588
|
-
args.specTasks = true;
|
|
589
|
-
}
|
|
590
|
-
else if (arg === '--design-llm') {
|
|
591
|
-
args.specDesignLLM = true;
|
|
592
|
-
args.specDesign = true;
|
|
593
|
-
}
|
|
594
|
-
else if (arg === '--principles-llm') {
|
|
595
|
-
args.specPrinciplesLLM = true;
|
|
596
|
-
args.specPrinciples = true;
|
|
597
|
-
}
|
|
598
|
-
else if (arg === '--tasks-llm') {
|
|
599
|
-
args.specTasksLLM = true;
|
|
600
|
-
args.specTasks = true;
|
|
601
|
-
}
|
|
602
|
-
else if (arg === '--all') {
|
|
603
|
-
args.specDesign = true;
|
|
604
|
-
args.specPrinciples = true;
|
|
605
|
-
args.specTasks = true;
|
|
606
|
-
}
|
|
607
|
-
else if (arg.startsWith('--spec=')) {
|
|
608
|
-
args.specDir = arg.substring(7);
|
|
609
|
-
}
|
|
610
|
-
else if (arg.startsWith('--disable-pass=')) {
|
|
611
|
-
args.disablePass.push(...arg.substring(15).split(',').map(s => s.trim()).filter(Boolean));
|
|
612
|
-
}
|
|
613
|
-
else if (arg.startsWith('--file-timeout=')) {
|
|
614
|
-
const value = parseInt(arg.substring(15), 10);
|
|
615
|
-
if (isNaN(value) || value < 1) {
|
|
616
|
-
throw new Error('--file-timeout must be a positive number (seconds)');
|
|
617
|
-
}
|
|
618
|
-
args.fileTimeout = value;
|
|
619
|
-
}
|
|
620
|
-
else if (arg.startsWith('--max-files=')) {
|
|
621
|
-
const value = parseInt(arg.substring(12), 10);
|
|
622
|
-
if (isNaN(value) || value < 1) {
|
|
623
|
-
throw new Error('--max-files must be a positive number');
|
|
624
|
-
}
|
|
625
|
-
args.maxFiles = value;
|
|
626
|
-
}
|
|
627
|
-
else if (arg.startsWith('-')) {
|
|
628
|
-
throw new Error(`Unknown option: ${arg}`);
|
|
629
|
-
}
|
|
630
|
-
else {
|
|
631
|
-
// Positional argument (file or directory)
|
|
632
|
-
if (args.file === null && args.directory === null) {
|
|
633
|
-
args.file = arg;
|
|
634
|
-
}
|
|
635
|
-
else if (args.command === 'compare') {
|
|
636
|
-
// compare takes two positional args — ignore extra here
|
|
637
|
-
// (compare command extracts both from process.argv directly)
|
|
638
|
-
}
|
|
639
|
-
else {
|
|
640
|
-
throw new Error(`Unexpected argument: ${arg}`);
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
|
-
}
|
|
644
|
-
i++;
|
|
645
|
-
}
|
|
646
|
-
// For directory-based commands, treat file as directory
|
|
647
|
-
if (['benchmark', 'scan', 'health', 'secrets', 'dead-code', 'analyze-skill', 'trust', 'compare', 'quality', 'understand', 'spec-diff', 'cluster'].includes(args.command) && args.file) {
|
|
648
|
-
args.directory = args.file;
|
|
649
|
-
args.file = null;
|
|
650
|
-
}
|
|
651
|
-
return args;
|
|
652
|
-
}
|
|
653
|
-
//# sourceMappingURL=args.js.map
|