@sentry/warden 0.9.0 → 0.11.0
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/.mcp.json +8 -0
- package/README.md +4 -0
- package/agents.toml +7 -0
- package/conductor.json +8 -0
- package/dist/cli/fix.d.ts +3 -1
- package/dist/cli/fix.d.ts.map +1 -1
- package/dist/cli/fix.js +91 -59
- package/dist/cli/fix.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +29 -8
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/output/ink-runner.d.ts +6 -17
- package/dist/cli/output/ink-runner.d.ts.map +1 -1
- package/dist/cli/output/ink-runner.js +138 -122
- package/dist/cli/output/ink-runner.js.map +1 -1
- package/dist/cli/output/jsonl.d.ts +211 -58
- package/dist/cli/output/jsonl.d.ts.map +1 -1
- package/dist/cli/output/jsonl.js +81 -4
- package/dist/cli/output/jsonl.js.map +1 -1
- package/dist/cli/output/reporter.d.ts +7 -3
- package/dist/cli/output/reporter.d.ts.map +1 -1
- package/dist/cli/output/reporter.js +15 -1
- package/dist/cli/output/reporter.js.map +1 -1
- package/dist/cli/output/tasks.d.ts +10 -1
- package/dist/cli/output/tasks.d.ts.map +1 -1
- package/dist/cli/output/tasks.js +145 -32
- package/dist/cli/output/tasks.js.map +1 -1
- package/dist/cli/terminal.d.ts +7 -1
- package/dist/cli/terminal.d.ts.map +1 -1
- package/dist/cli/terminal.js +31 -9
- package/dist/cli/terminal.js.map +1 -1
- package/dist/config/schema.d.ts +3 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +3 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/evals/index.d.ts +22 -0
- package/dist/evals/index.d.ts.map +1 -0
- package/dist/evals/index.js +92 -0
- package/dist/evals/index.js.map +1 -0
- package/dist/evals/judge.d.ts +12 -0
- package/dist/evals/judge.d.ts.map +1 -0
- package/dist/evals/judge.js +171 -0
- package/dist/evals/judge.js.map +1 -0
- package/dist/evals/runner.d.ts +18 -0
- package/dist/evals/runner.d.ts.map +1 -0
- package/dist/evals/runner.js +133 -0
- package/dist/evals/runner.js.map +1 -0
- package/dist/{examples → evals}/setup.d.ts.map +1 -1
- package/dist/evals/setup.js.map +1 -0
- package/dist/evals/types.d.ts +166 -0
- package/dist/evals/types.d.ts.map +1 -0
- package/dist/evals/types.js +134 -0
- package/dist/evals/types.js.map +1 -0
- package/dist/output/dedup.d.ts.map +1 -1
- package/dist/output/dedup.js +29 -57
- package/dist/output/dedup.js.map +1 -1
- package/dist/output/github-checks.d.ts.map +1 -1
- package/dist/output/github-checks.js +37 -8
- package/dist/output/github-checks.js.map +1 -1
- package/dist/output/renderer.d.ts.map +1 -1
- package/dist/output/renderer.js +16 -1
- package/dist/output/renderer.js.map +1 -1
- package/dist/output/stale.d.ts +1 -0
- package/dist/output/stale.d.ts.map +1 -1
- package/dist/output/stale.js +14 -8
- package/dist/output/stale.js.map +1 -1
- package/dist/sdk/analyze.d.ts +11 -0
- package/dist/sdk/analyze.d.ts.map +1 -1
- package/dist/sdk/analyze.js +99 -19
- package/dist/sdk/analyze.js.map +1 -1
- package/dist/sdk/extract.d.ts +54 -0
- package/dist/sdk/extract.d.ts.map +1 -1
- package/dist/sdk/extract.js +175 -2
- package/dist/sdk/extract.js.map +1 -1
- package/dist/sdk/model-pricing.json +6 -12
- package/dist/sdk/prompt.d.ts +2 -0
- package/dist/sdk/prompt.d.ts.map +1 -1
- package/dist/sdk/prompt.js +18 -8
- package/dist/sdk/prompt.js.map +1 -1
- package/dist/sdk/runner.d.ts +2 -2
- package/dist/sdk/runner.d.ts.map +1 -1
- package/dist/sdk/runner.js +1 -1
- package/dist/sdk/runner.js.map +1 -1
- package/dist/sdk/types.d.ts +11 -3
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/sdk/types.js +1 -1
- package/dist/sdk/types.js.map +1 -1
- package/dist/sentry.d.ts +15 -0
- package/dist/sentry.d.ts.map +1 -1
- package/dist/sentry.js +40 -1
- package/dist/sentry.js.map +1 -1
- package/dist/types/index.d.ts +19 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +25 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/async.d.ts +14 -0
- package/dist/utils/async.d.ts.map +1 -1
- package/dist/utils/async.js +33 -0
- package/dist/utils/async.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/evals/README.md +154 -0
- package/evals/bug-detection.yaml +56 -0
- package/evals/fixtures/ignores-style-issues/utils.ts +48 -0
- package/evals/fixtures/missing-await/cache.ts +45 -0
- package/evals/fixtures/null-property-access/handler.ts +36 -0
- package/evals/fixtures/off-by-one/paginator.ts +38 -0
- package/evals/fixtures/sql-injection/api.ts +59 -0
- package/evals/fixtures/stale-closure/counter.tsx +33 -0
- package/evals/fixtures/wrong-comparison/validator.ts +52 -0
- package/evals/fixtures/xss-reflected/server.ts +55 -0
- package/evals/precision.yaml +15 -0
- package/evals/security-scanning.yaml +24 -0
- package/evals/skills/bug-detection.md +33 -0
- package/evals/skills/precision.md +18 -0
- package/evals/skills/security-scanning.md +32 -0
- package/package.json +4 -2
- package/dist/examples/index.d.ts +0 -50
- package/dist/examples/index.d.ts.map +0 -1
- package/dist/examples/index.js +0 -104
- package/dist/examples/index.js.map +0 -1
- package/dist/examples/setup.js.map +0 -1
- /package/dist/{examples → evals}/setup.d.ts +0 -0
- /package/dist/{examples → evals}/setup.js +0 -0
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Task execution for skills.
|
|
3
3
|
* Callback-based state updates for CLI and Ink rendering.
|
|
4
|
+
*
|
|
5
|
+
* Reporter spec: specs/reporters.md
|
|
4
6
|
*/
|
|
5
7
|
import type { SkillReport, SeverityThreshold, Finding, UsageStats, EventContext } from '../../types/index.js';
|
|
6
8
|
import type { SkillDefinition } from '../../config/schema.js';
|
|
7
9
|
import { type SkillRunnerOptions } from '../../sdk/runner.js';
|
|
8
10
|
import { Verbosity } from './verbosity.js';
|
|
9
11
|
import type { OutputMode } from './tty.js';
|
|
12
|
+
import { Semaphore } from '../../utils/index.js';
|
|
10
13
|
/**
|
|
11
14
|
* State of a file being processed by a skill.
|
|
12
15
|
*/
|
|
@@ -82,11 +85,17 @@ export interface SkillProgressCallbacks {
|
|
|
82
85
|
onPromptSize?: (skillName: string, filename: string, lineRange: string, systemChars: number, userChars: number, totalChars: number, estimatedTokens: number) => void;
|
|
83
86
|
/** Called with extraction result details (debug mode) */
|
|
84
87
|
onExtractionResult?: (skillName: string, filename: string, lineRange: string, findingsCount: number, method: 'regex' | 'llm' | 'none') => void;
|
|
88
|
+
/** Called when hunk analysis fails (SDK error, API error, abort) */
|
|
89
|
+
onHunkFailed?: (skillName: string, filename: string, lineRange: string, error: string) => void;
|
|
90
|
+
/** Called when findings extraction fails (both regex and LLM fallback failed) */
|
|
91
|
+
onExtractionFailure?: (skillName: string, filename: string, lineRange: string, error: string, preview: string) => void;
|
|
92
|
+
/** Called when a retry attempt is made */
|
|
93
|
+
onRetry?: (skillName: string, filename: string, lineRange: string, attempt: number, maxRetries: number, error: string, delayMs: number) => void;
|
|
85
94
|
}
|
|
86
95
|
/**
|
|
87
96
|
* Run a single skill task.
|
|
88
97
|
*/
|
|
89
|
-
export declare function runSkillTask(options: SkillTaskOptions, fileConcurrency: number, callbacks: SkillProgressCallbacks): Promise<SkillTaskResult>;
|
|
98
|
+
export declare function runSkillTask(options: SkillTaskOptions, fileConcurrency: number, callbacks: SkillProgressCallbacks, semaphore?: Semaphore): Promise<SkillTaskResult>;
|
|
90
99
|
/**
|
|
91
100
|
* Create default progress callbacks for console output.
|
|
92
101
|
* In TTY mode: colored icons, chalk formatting.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/cli/output/tasks.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/cli/output/tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/output/tasks.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Task execution for skills.
|
|
3
3
|
* Callback-based state updates for CLI and Ink rendering.
|
|
4
|
+
*
|
|
5
|
+
* Reporter spec: specs/reporters.md
|
|
4
6
|
*/
|
|
5
7
|
import { Sentry, emitSkillMetrics, emitDedupMetrics, logger } from '../../sentry.js';
|
|
6
|
-
import { prepareFiles, analyzeFile, aggregateUsage, aggregateAuxiliaryUsage, deduplicateFindings, generateSummary, } from '../../sdk/runner.js';
|
|
8
|
+
import { prepareFiles, analyzeFile, aggregateUsage, aggregateAuxiliaryUsage, deduplicateFindings, mergeCrossLocationFindings, generateSummary, } from '../../sdk/runner.js';
|
|
7
9
|
import chalk from 'chalk';
|
|
8
10
|
import figures from 'figures';
|
|
9
11
|
import { Verbosity } from './verbosity.js';
|
|
10
12
|
import { ICON_CHECK, ICON_SKIPPED } from './icons.js';
|
|
11
13
|
import { timestamp } from './tty.js';
|
|
12
14
|
import { formatDuration, formatCost, formatLocation, formatSeverityPlain, formatFindingCountsPlain, countBySeverity, pluralize } from './formatters.js';
|
|
13
|
-
import { runPool } from '../../utils/index.js';
|
|
15
|
+
import { runPool, Semaphore } from '../../utils/index.js';
|
|
14
16
|
/**
|
|
15
17
|
* Write a log-mode message to stderr with timestamp prefix.
|
|
16
18
|
* Used for non-TTY / plain output.
|
|
@@ -41,7 +43,7 @@ function findingLocation(finding) {
|
|
|
41
43
|
/**
|
|
42
44
|
* Run a single skill task.
|
|
43
45
|
*/
|
|
44
|
-
export async function runSkillTask(options, fileConcurrency, callbacks) {
|
|
46
|
+
export async function runSkillTask(options, fileConcurrency, callbacks, semaphore) {
|
|
45
47
|
const { name, displayName = name, failOn, resolveSkill, context, runnerOptions = {} } = options;
|
|
46
48
|
return Sentry.startSpan({ op: 'skill.run', name: `run ${displayName}` }, async (span) => {
|
|
47
49
|
span.setAttribute('skill.name', name);
|
|
@@ -91,11 +93,15 @@ export async function runSkillTask(options, fileConcurrency, callbacks) {
|
|
|
91
93
|
findings: [],
|
|
92
94
|
});
|
|
93
95
|
// Build PR context for inclusion in prompts (if available)
|
|
96
|
+
// For non-PR contexts (CLI file/diff mode), skip the "Other Files" list to avoid
|
|
97
|
+
// bloating every hunk prompt with thousands of filenames.
|
|
98
|
+
const isPullRequest = context.pullRequest ? context.pullRequest.number !== 0 : false;
|
|
94
99
|
const prContext = context.pullRequest
|
|
95
100
|
? {
|
|
96
|
-
changedFiles: context.pullRequest.files.map((f) => f.filename),
|
|
101
|
+
changedFiles: isPullRequest ? context.pullRequest.files.map((f) => f.filename) : [],
|
|
97
102
|
title: context.pullRequest.title,
|
|
98
103
|
body: context.pullRequest.body,
|
|
104
|
+
maxContextFiles: runnerOptions.maxContextFiles,
|
|
99
105
|
}
|
|
100
106
|
: undefined;
|
|
101
107
|
// Process files with concurrency
|
|
@@ -116,11 +122,26 @@ export async function runSkillTask(options, fileConcurrency, callbacks) {
|
|
|
116
122
|
});
|
|
117
123
|
callbacks.onHunkStart?.(name, filename, hunkNum, totalHunks, lineRange);
|
|
118
124
|
},
|
|
119
|
-
onHunkComplete: (_hunkNum, findings) => {
|
|
120
|
-
// Accumulate findings for this file
|
|
125
|
+
onHunkComplete: (_hunkNum, findings, usage) => {
|
|
126
|
+
// Accumulate findings and usage for this file
|
|
121
127
|
const current = fileStates[index];
|
|
122
128
|
if (current) {
|
|
123
129
|
current.findings.push(...findings);
|
|
130
|
+
if (current.usage) {
|
|
131
|
+
current.usage.inputTokens += usage.inputTokens;
|
|
132
|
+
current.usage.outputTokens += usage.outputTokens;
|
|
133
|
+
current.usage.costUSD += usage.costUSD;
|
|
134
|
+
if (usage.cacheReadInputTokens) {
|
|
135
|
+
current.usage.cacheReadInputTokens = (current.usage.cacheReadInputTokens ?? 0) + usage.cacheReadInputTokens;
|
|
136
|
+
}
|
|
137
|
+
if (usage.cacheCreationInputTokens) {
|
|
138
|
+
current.usage.cacheCreationInputTokens = (current.usage.cacheCreationInputTokens ?? 0) + usage.cacheCreationInputTokens;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
current.usage = { ...usage };
|
|
143
|
+
}
|
|
144
|
+
callbacks.onFileUpdate(name, filename, { usage: current.usage });
|
|
124
145
|
}
|
|
125
146
|
},
|
|
126
147
|
onLargePrompt: callbacks.onLargePrompt
|
|
@@ -138,6 +159,21 @@ export async function runSkillTask(options, fileConcurrency, callbacks) {
|
|
|
138
159
|
callbacks.onExtractionResult?.(name, filename, lineRange, findingsCount, method);
|
|
139
160
|
}
|
|
140
161
|
: undefined,
|
|
162
|
+
onHunkFailed: callbacks.onHunkFailed
|
|
163
|
+
? (lineRange, error) => {
|
|
164
|
+
callbacks.onHunkFailed?.(name, filename, lineRange, error);
|
|
165
|
+
}
|
|
166
|
+
: undefined,
|
|
167
|
+
onExtractionFailure: callbacks.onExtractionFailure
|
|
168
|
+
? (lineRange, error, preview) => {
|
|
169
|
+
callbacks.onExtractionFailure?.(name, filename, lineRange, error, preview);
|
|
170
|
+
}
|
|
171
|
+
: undefined,
|
|
172
|
+
onRetry: callbacks.onRetry
|
|
173
|
+
? (lineRange, attempt, maxRetries, error, delayMs) => {
|
|
174
|
+
callbacks.onRetry?.(name, filename, lineRange, attempt, maxRetries, error, delayMs);
|
|
175
|
+
}
|
|
176
|
+
: undefined,
|
|
141
177
|
};
|
|
142
178
|
const result = await analyzeFile(skill, prepared, context.repoPath, runnerOptions, fileCallbacks, prContext);
|
|
143
179
|
// Detect if this file was aborted before any real work happened
|
|
@@ -162,15 +198,39 @@ export async function runSkillTask(options, fileConcurrency, callbacks) {
|
|
|
162
198
|
auxiliaryUsage: result.auxiliaryUsage,
|
|
163
199
|
};
|
|
164
200
|
};
|
|
201
|
+
// Return an empty result for files skipped due to abort
|
|
202
|
+
const processSkippedFile = (index) => {
|
|
203
|
+
const localState = fileStates[index];
|
|
204
|
+
if (localState)
|
|
205
|
+
localState.status = 'skipped';
|
|
206
|
+
const filename = preparedFiles[index]?.filename ?? 'unknown';
|
|
207
|
+
callbacks.onFileUpdate(name, filename, { status: 'skipped' });
|
|
208
|
+
return { findings: [], durationMs: 0, failedHunks: 0, failedExtractions: 0 };
|
|
209
|
+
};
|
|
165
210
|
// Process files with sliding-window concurrency pool
|
|
166
211
|
const batchDelayMs = runnerOptions.batchDelayMs ?? 0;
|
|
167
212
|
const shouldAbort = () => runnerOptions.abortController?.signal.aborted ?? false;
|
|
213
|
+
// The effective concurrency for batch delay: when a semaphore gates work,
|
|
214
|
+
// use its permit count (the actual concurrency limit) rather than fileConcurrency.
|
|
215
|
+
const effectiveConcurrency = semaphore ? semaphore.initialPermits : fileConcurrency;
|
|
168
216
|
const allResults = await runPool(preparedFiles, fileConcurrency, async (file, index) => {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
217
|
+
if (semaphore)
|
|
218
|
+
await semaphore.acquire();
|
|
219
|
+
try {
|
|
220
|
+
// Check abort after acquiring the semaphore -- the file may have
|
|
221
|
+
// been queued behind others and a SIGINT could have arrived while waiting.
|
|
222
|
+
if (shouldAbort())
|
|
223
|
+
return processSkippedFile(index);
|
|
224
|
+
// Rate-limit: delay items beyond the first concurrent wave
|
|
225
|
+
if (index >= effectiveConcurrency && batchDelayMs > 0) {
|
|
226
|
+
await new Promise((resolve) => setTimeout(resolve, batchDelayMs));
|
|
227
|
+
}
|
|
228
|
+
return await processFile(file, index);
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
if (semaphore)
|
|
232
|
+
semaphore.release();
|
|
172
233
|
}
|
|
173
|
-
return processFile(file, index);
|
|
174
234
|
}, { shouldAbort });
|
|
175
235
|
// Mark never-dispatched files as skipped
|
|
176
236
|
for (const fileState of fileStates) {
|
|
@@ -187,10 +247,19 @@ export async function runSkillTask(options, fileConcurrency, callbacks) {
|
|
|
187
247
|
const totalFailedExtractions = allResults.reduce((sum, r) => sum + r.failedExtractions, 0);
|
|
188
248
|
const uniqueFindings = deduplicateFindings(allFindings);
|
|
189
249
|
emitDedupMetrics(allFindings.length, uniqueFindings.length);
|
|
250
|
+
// Merge findings that describe the same issue at different locations
|
|
251
|
+
const mergeResult = await mergeCrossLocationFindings(uniqueFindings, {
|
|
252
|
+
apiKey: runnerOptions.apiKey,
|
|
253
|
+
repoPath: context.repoPath,
|
|
254
|
+
});
|
|
255
|
+
const mergedFindings = mergeResult.findings;
|
|
256
|
+
if (mergeResult.usage) {
|
|
257
|
+
allAuxEntries.push({ agent: 'merge', usage: mergeResult.usage });
|
|
258
|
+
}
|
|
190
259
|
const report = {
|
|
191
260
|
skill: skill.name,
|
|
192
|
-
summary: generateSummary(skill.name,
|
|
193
|
-
findings:
|
|
261
|
+
summary: generateSummary(skill.name, mergedFindings),
|
|
262
|
+
findings: mergedFindings,
|
|
194
263
|
usage: aggregateUsage(allUsage),
|
|
195
264
|
durationMs: duration,
|
|
196
265
|
files: preparedFiles.map((file, i) => {
|
|
@@ -226,7 +295,7 @@ export async function runSkillTask(options, fileConcurrency, callbacks) {
|
|
|
226
295
|
callbacks.onSkillUpdate(name, {
|
|
227
296
|
status: 'done',
|
|
228
297
|
durationMs: duration,
|
|
229
|
-
findings:
|
|
298
|
+
findings: mergedFindings,
|
|
230
299
|
usage: report.usage,
|
|
231
300
|
});
|
|
232
301
|
callbacks.onSkillComplete(name, report);
|
|
@@ -249,6 +318,8 @@ export function createDefaultCallbacks(tasks, mode, verbosity) {
|
|
|
249
318
|
function displayNameFor(name) {
|
|
250
319
|
return tasks.find((t) => t.name === name)?.displayName ?? name;
|
|
251
320
|
}
|
|
321
|
+
/** Track per-skill skipped file counts for collapsed summary in non-TTY mode. */
|
|
322
|
+
const skippedCounts = new Map();
|
|
252
323
|
return {
|
|
253
324
|
onSkillStart: (skill) => {
|
|
254
325
|
if (verbosity === Verbosity.Quiet)
|
|
@@ -260,12 +331,12 @@ export function createDefaultCallbacks(tasks, mode, verbosity) {
|
|
|
260
331
|
},
|
|
261
332
|
onSkillUpdate: () => { },
|
|
262
333
|
onFileUpdate: (_skillName, filename, updates) => {
|
|
263
|
-
if (verbosity === Verbosity.Quiet || mode.isTTY)
|
|
264
|
-
return;
|
|
265
334
|
if (updates.status === 'skipped') {
|
|
266
|
-
|
|
335
|
+
skippedCounts.set(_skillName, (skippedCounts.get(_skillName) ?? 0) + 1);
|
|
267
336
|
return;
|
|
268
337
|
}
|
|
338
|
+
if (verbosity === Verbosity.Quiet || mode.isTTY)
|
|
339
|
+
return;
|
|
269
340
|
if (updates.status !== 'done')
|
|
270
341
|
return;
|
|
271
342
|
const duration = updates.durationMs !== undefined ? formatDuration(updates.durationMs) : '?';
|
|
@@ -312,6 +383,10 @@ export function createDefaultCallbacks(tasks, mode, verbosity) {
|
|
|
312
383
|
}
|
|
313
384
|
}
|
|
314
385
|
}
|
|
386
|
+
const skipped = skippedCounts.get(name) ?? 0;
|
|
387
|
+
if (skipped > 0) {
|
|
388
|
+
logPlain(` ${skipped} ${pluralize(skipped, 'file')} skipped`);
|
|
389
|
+
}
|
|
315
390
|
}
|
|
316
391
|
},
|
|
317
392
|
onSkillSkipped: (name) => {
|
|
@@ -334,6 +409,10 @@ export function createDefaultCallbacks(tasks, mode, verbosity) {
|
|
|
334
409
|
}
|
|
335
410
|
else {
|
|
336
411
|
logPlain(`ERROR: ${displayName} - ${error}`);
|
|
412
|
+
const skipped = skippedCounts.get(name) ?? 0;
|
|
413
|
+
if (skipped > 0) {
|
|
414
|
+
logPlain(` ${skipped} ${pluralize(skipped, 'file')} skipped`);
|
|
415
|
+
}
|
|
337
416
|
}
|
|
338
417
|
},
|
|
339
418
|
// Warn about large prompts (always shown unless quiet)
|
|
@@ -362,6 +441,50 @@ export function createDefaultCallbacks(tasks, mode, verbosity) {
|
|
|
362
441
|
debugLog(mode, `Extracted ${findingsCount} ${pluralize(findingsCount, 'finding')} from ${filename}:${lineRange} via ${method}`);
|
|
363
442
|
}
|
|
364
443
|
: undefined,
|
|
444
|
+
// Verbose mode: show per-hunk analysis failures (spec: event #16 hunk_failed)
|
|
445
|
+
onHunkFailed: verbosity >= Verbosity.Verbose
|
|
446
|
+
? (_skillName, filename, lineRange, error) => {
|
|
447
|
+
const location = `${filename}:${lineRange}`;
|
|
448
|
+
if (mode.isTTY) {
|
|
449
|
+
console.error(`${chalk.yellow(figures.warning)} Chunk failed: ${location} ${chalk.dim(`\u2014 ${error}`)}`);
|
|
450
|
+
}
|
|
451
|
+
else {
|
|
452
|
+
logPlain(`WARN: Chunk failed: ${location} \u2014 ${error}`);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
: undefined,
|
|
456
|
+
// Verbose mode: show per-hunk extraction failures (spec: event #17 extraction_failure)
|
|
457
|
+
onExtractionFailure: verbosity >= Verbosity.Verbose
|
|
458
|
+
? (_skillName, filename, lineRange, error, preview) => {
|
|
459
|
+
const location = `${filename}:${lineRange}`;
|
|
460
|
+
if (mode.isTTY) {
|
|
461
|
+
console.error(`${chalk.yellow(figures.warning)} Extraction failed: ${location} ${chalk.dim(`\u2014 ${error}`)}`);
|
|
462
|
+
if (verbosity >= Verbosity.Debug && preview) {
|
|
463
|
+
debugLog(mode, ` Output preview: ${preview.slice(0, 200)}`);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
else {
|
|
467
|
+
logPlain(`WARN: Extraction failed: ${location} \u2014 ${error}`);
|
|
468
|
+
if (verbosity >= Verbosity.Debug && preview) {
|
|
469
|
+
logPlain(`DEBUG: Output preview: ${preview.slice(0, 200)}`);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
: undefined,
|
|
474
|
+
// Verbose mode: show retry attempts (spec: event #18 retry)
|
|
475
|
+
onRetry: verbosity >= Verbosity.Verbose
|
|
476
|
+
? (_skillName, filename, lineRange, attempt, maxRetries, error, delayMs) => {
|
|
477
|
+
const location = `${filename}:${lineRange}`;
|
|
478
|
+
const retryInfo = `attempt ${attempt}/${maxRetries}`;
|
|
479
|
+
const delay = delayMs > 0 ? `, retrying in ${Math.round(delayMs / 1000)}s` : '';
|
|
480
|
+
if (mode.isTTY) {
|
|
481
|
+
debugLog(mode, `Retry ${location} (${retryInfo}${delay}): ${error}`);
|
|
482
|
+
}
|
|
483
|
+
else {
|
|
484
|
+
logPlain(`WARN: Retry ${location} (${retryInfo}${delay}): ${error}`);
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
: undefined,
|
|
365
488
|
};
|
|
366
489
|
}
|
|
367
490
|
/**
|
|
@@ -370,8 +493,10 @@ export function createDefaultCallbacks(tasks, mode, verbosity) {
|
|
|
370
493
|
*/
|
|
371
494
|
export async function runSkillTasks(tasks, options, callbacks) {
|
|
372
495
|
const { mode, verbosity, concurrency } = options;
|
|
373
|
-
//
|
|
374
|
-
|
|
496
|
+
// Global semaphore gates file-level work across all skills.
|
|
497
|
+
// All skills launch immediately so the UI shows them as "running",
|
|
498
|
+
// but only `concurrency` files will be analysed at any time.
|
|
499
|
+
const semaphore = new Semaphore(concurrency);
|
|
375
500
|
const effectiveCallbacks = callbacks ?? createDefaultCallbacks(tasks, mode, verbosity);
|
|
376
501
|
// Output SKILLS header (TTY only - in log mode, "Running..." lines are sufficient)
|
|
377
502
|
if (verbosity !== Verbosity.Quiet && tasks.length > 0 && mode.isTTY) {
|
|
@@ -384,20 +509,8 @@ export async function runSkillTasks(tasks, options, callbacks) {
|
|
|
384
509
|
logPlain('Interrupted, finishing up... (press Ctrl+C again to force exit)');
|
|
385
510
|
}, { once: true });
|
|
386
511
|
}
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
// Sequential execution
|
|
390
|
-
for (const task of tasks) {
|
|
391
|
-
if (task.runnerOptions?.abortController?.signal.aborted)
|
|
392
|
-
break;
|
|
393
|
-
const result = await runSkillTask(task, fileConcurrency, effectiveCallbacks);
|
|
394
|
-
results.push(result);
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
else {
|
|
398
|
-
// Parallel execution with sliding-window concurrency pool
|
|
399
|
-
results.push(...await runPool(tasks, concurrency, (task) => runSkillTask(task, fileConcurrency, effectiveCallbacks), { shouldAbort: () => tasks[0]?.runnerOptions?.abortController?.signal.aborted ?? false }));
|
|
400
|
-
}
|
|
512
|
+
// Launch all skills in parallel; the semaphore is the sole concurrency gate.
|
|
513
|
+
const results = await runPool(tasks, tasks.length, (task) => runSkillTask(task, Number.MAX_SAFE_INTEGER, effectiveCallbacks, semaphore), { shouldAbort: () => tasks[0]?.runnerOptions?.abortController?.signal.aborted ?? false });
|
|
401
514
|
return results;
|
|
402
515
|
}
|
|
403
516
|
//# sourceMappingURL=tasks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/cli/output/tasks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/cli/output/tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/terminal.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import type { SkillReport, SeverityThreshold } from '../types/index.js';
|
|
2
|
+
import { Verbosity } from './output/verbosity.js';
|
|
2
3
|
import type { OutputMode } from './output/tty.js';
|
|
4
|
+
interface RenderOptions {
|
|
5
|
+
suppressFixDiffs?: boolean;
|
|
6
|
+
verbosity?: Verbosity;
|
|
7
|
+
}
|
|
3
8
|
/**
|
|
4
9
|
* Render skill reports for terminal output.
|
|
5
10
|
* @param reports - The skill reports to render
|
|
6
11
|
* @param mode - Output mode (TTY vs non-TTY)
|
|
7
12
|
*/
|
|
8
|
-
export declare function renderTerminalReport(reports: SkillReport[], mode?: OutputMode): string;
|
|
13
|
+
export declare function renderTerminalReport(reports: SkillReport[], mode?: OutputMode, options?: RenderOptions): string;
|
|
9
14
|
/**
|
|
10
15
|
* Filter reports to only include findings at or above the given severity threshold.
|
|
11
16
|
* Returns new report objects with filtered findings; does not mutate the originals.
|
|
@@ -16,4 +21,5 @@ export declare function filterReportsBySeverity(reports: SkillReport[], reportOn
|
|
|
16
21
|
* Render skill reports as JSON.
|
|
17
22
|
*/
|
|
18
23
|
export declare function renderJsonReport(reports: SkillReport[]): string;
|
|
24
|
+
export {};
|
|
19
25
|
//# sourceMappingURL=terminal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/cli/terminal.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAqB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/cli/terminal.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAqB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAa3F,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiClD,UAAU,aAAa;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AA6LD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAyB/G;AAkBD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,WAAW,EAAE,CAM3G;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAyC/D"}
|
package/dist/cli/terminal.js
CHANGED
|
@@ -2,6 +2,7 @@ import { readFileSync } from 'node:fs';
|
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { filterFindingsBySeverity } from '../types/index.js';
|
|
4
4
|
import { formatSeverityBadge, formatSeverityPlain, formatFindingCounts, formatFindingCountsPlain, formatDuration, formatElapsed, formatLocation, countBySeverity, pluralize, } from './output/index.js';
|
|
5
|
+
import { Verbosity } from './output/verbosity.js';
|
|
5
6
|
import { BoxRenderer } from './output/box.js';
|
|
6
7
|
const SEVERITY_COLORS = {
|
|
7
8
|
critical: chalk.red.bold,
|
|
@@ -31,7 +32,7 @@ function readFileLine(filePath, lineNumber) {
|
|
|
31
32
|
/**
|
|
32
33
|
* Format a finding for TTY display.
|
|
33
34
|
*/
|
|
34
|
-
function formatFindingTTY(finding) {
|
|
35
|
+
function formatFindingTTY(finding, options) {
|
|
35
36
|
const lines = [];
|
|
36
37
|
const badge = formatSeverityBadge(finding.severity);
|
|
37
38
|
const color = SEVERITY_COLORS[finding.severity];
|
|
@@ -58,11 +59,20 @@ function formatFindingTTY(finding) {
|
|
|
58
59
|
}
|
|
59
60
|
// For 'line_not_found', we silently skip - the line may not exist in this version
|
|
60
61
|
}
|
|
62
|
+
// Additional locations
|
|
63
|
+
if (finding.additionalLocations?.length) {
|
|
64
|
+
const count = finding.additionalLocations.length;
|
|
65
|
+
lines.push(` ${chalk.dim(`+${count} more ${pluralize(count, 'location')}:`)}`);
|
|
66
|
+
for (const loc of finding.additionalLocations) {
|
|
67
|
+
const range = loc.endLine ? `${loc.startLine}-${loc.endLine}` : `${loc.startLine}`;
|
|
68
|
+
lines.push(` ${chalk.dim(`${loc.path}:${range}`)}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
61
71
|
// Blank line, then description
|
|
62
72
|
lines.push('');
|
|
63
73
|
lines.push(` ${chalk.dim(finding.description)}`);
|
|
64
|
-
// Suggested fix diff if available
|
|
65
|
-
if (finding.suggestedFix?.diff) {
|
|
74
|
+
// Suggested fix diff if available (suppress when step-through will show it)
|
|
75
|
+
if (finding.suggestedFix?.diff && !options?.suppressFixDiffs) {
|
|
66
76
|
lines.push('');
|
|
67
77
|
lines.push(chalk.dim(' Suggested fix:'));
|
|
68
78
|
const diffLines = finding.suggestedFix.diff.split('\n').map((line) => {
|
|
@@ -101,6 +111,14 @@ function formatFindingCI(finding) {
|
|
|
101
111
|
if (finding.confidence) {
|
|
102
112
|
lines.push(` confidence: ${finding.confidence}`);
|
|
103
113
|
}
|
|
114
|
+
// Additional locations
|
|
115
|
+
if (finding.additionalLocations?.length) {
|
|
116
|
+
const locs = finding.additionalLocations.map((loc) => {
|
|
117
|
+
const range = loc.endLine ? `${loc.startLine}-${loc.endLine}` : `${loc.startLine}`;
|
|
118
|
+
return `${loc.path}:${range}`;
|
|
119
|
+
});
|
|
120
|
+
lines.push(` also at: ${locs.join(', ')}`);
|
|
121
|
+
}
|
|
104
122
|
// Description
|
|
105
123
|
lines.push(` ${finding.description}`);
|
|
106
124
|
// Suggested fix diff (plain text, no color)
|
|
@@ -116,7 +134,7 @@ function formatFindingCI(finding) {
|
|
|
116
134
|
/**
|
|
117
135
|
* Render a skill report as a box (TTY mode).
|
|
118
136
|
*/
|
|
119
|
-
function renderSkillBoxTTY(report, mode) {
|
|
137
|
+
function renderSkillBoxTTY(report, mode, options) {
|
|
120
138
|
const counts = countBySeverity(report.findings);
|
|
121
139
|
const durationStr = report.durationMs !== undefined ? formatDuration(report.durationMs) : undefined;
|
|
122
140
|
const box = new BoxRenderer({
|
|
@@ -137,7 +155,7 @@ function renderSkillBoxTTY(report, mode) {
|
|
|
137
155
|
for (const [index, finding] of report.findings.entries()) {
|
|
138
156
|
box.divider();
|
|
139
157
|
box.blank();
|
|
140
|
-
const findingLines = formatFindingTTY(finding);
|
|
158
|
+
const findingLines = formatFindingTTY(finding, options);
|
|
141
159
|
box.content(findingLines);
|
|
142
160
|
// Only add blank after finding if not the last one
|
|
143
161
|
if (index < report.findings.length - 1) {
|
|
@@ -150,8 +168,9 @@ function renderSkillBoxTTY(report, mode) {
|
|
|
150
168
|
}
|
|
151
169
|
/**
|
|
152
170
|
* Render a skill report for CI (non-TTY) mode.
|
|
171
|
+
* See specs/reporters.md "Plain" findings report section.
|
|
153
172
|
*/
|
|
154
|
-
function renderSkillCI(report) {
|
|
173
|
+
function renderSkillCI(report, verbosity = Verbosity.Normal) {
|
|
155
174
|
const lines = [];
|
|
156
175
|
const counts = countBySeverity(report.findings);
|
|
157
176
|
const durationStr = report.durationMs !== undefined ? ` (${formatDuration(report.durationMs)})` : '';
|
|
@@ -165,6 +184,9 @@ function renderSkillCI(report) {
|
|
|
165
184
|
if (report.failedExtractions) {
|
|
166
185
|
lines.push(` WARN: ${report.failedExtractions} finding ${pluralize(report.failedExtractions, 'extraction')} failed`);
|
|
167
186
|
}
|
|
187
|
+
if ((report.failedHunks || report.failedExtractions) && verbosity < Verbosity.Verbose) {
|
|
188
|
+
lines.push(' Use -v for failure details');
|
|
189
|
+
}
|
|
168
190
|
for (const [index, finding] of report.findings.entries()) {
|
|
169
191
|
if (index > 0)
|
|
170
192
|
lines.push('');
|
|
@@ -177,7 +199,7 @@ function renderSkillCI(report) {
|
|
|
177
199
|
* @param reports - The skill reports to render
|
|
178
200
|
* @param mode - Output mode (TTY vs non-TTY)
|
|
179
201
|
*/
|
|
180
|
-
export function renderTerminalReport(reports, mode) {
|
|
202
|
+
export function renderTerminalReport(reports, mode, options) {
|
|
181
203
|
const lines = [];
|
|
182
204
|
// Default to TTY mode if not specified (for backwards compatibility)
|
|
183
205
|
const outputMode = mode ?? {
|
|
@@ -188,14 +210,14 @@ export function renderTerminalReport(reports, mode) {
|
|
|
188
210
|
if (outputMode.isTTY) {
|
|
189
211
|
// TTY mode: use boxes
|
|
190
212
|
for (const report of reports) {
|
|
191
|
-
lines.push(...renderSkillBoxTTY(report, outputMode));
|
|
213
|
+
lines.push(...renderSkillBoxTTY(report, outputMode, options));
|
|
192
214
|
lines.push('');
|
|
193
215
|
}
|
|
194
216
|
}
|
|
195
217
|
else {
|
|
196
218
|
// CI mode: plain text
|
|
197
219
|
for (const report of reports) {
|
|
198
|
-
lines.push(...renderSkillCI(report));
|
|
220
|
+
lines.push(...renderSkillCI(report, options?.verbosity));
|
|
199
221
|
lines.push('');
|
|
200
222
|
}
|
|
201
223
|
}
|