@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.
Files changed (126) hide show
  1. package/.mcp.json +8 -0
  2. package/README.md +4 -0
  3. package/agents.toml +7 -0
  4. package/conductor.json +8 -0
  5. package/dist/cli/fix.d.ts +3 -1
  6. package/dist/cli/fix.d.ts.map +1 -1
  7. package/dist/cli/fix.js +91 -59
  8. package/dist/cli/fix.js.map +1 -1
  9. package/dist/cli/main.d.ts.map +1 -1
  10. package/dist/cli/main.js +29 -8
  11. package/dist/cli/main.js.map +1 -1
  12. package/dist/cli/output/ink-runner.d.ts +6 -17
  13. package/dist/cli/output/ink-runner.d.ts.map +1 -1
  14. package/dist/cli/output/ink-runner.js +138 -122
  15. package/dist/cli/output/ink-runner.js.map +1 -1
  16. package/dist/cli/output/jsonl.d.ts +211 -58
  17. package/dist/cli/output/jsonl.d.ts.map +1 -1
  18. package/dist/cli/output/jsonl.js +81 -4
  19. package/dist/cli/output/jsonl.js.map +1 -1
  20. package/dist/cli/output/reporter.d.ts +7 -3
  21. package/dist/cli/output/reporter.d.ts.map +1 -1
  22. package/dist/cli/output/reporter.js +15 -1
  23. package/dist/cli/output/reporter.js.map +1 -1
  24. package/dist/cli/output/tasks.d.ts +10 -1
  25. package/dist/cli/output/tasks.d.ts.map +1 -1
  26. package/dist/cli/output/tasks.js +145 -32
  27. package/dist/cli/output/tasks.js.map +1 -1
  28. package/dist/cli/terminal.d.ts +7 -1
  29. package/dist/cli/terminal.d.ts.map +1 -1
  30. package/dist/cli/terminal.js +31 -9
  31. package/dist/cli/terminal.js.map +1 -1
  32. package/dist/config/schema.d.ts +3 -1
  33. package/dist/config/schema.d.ts.map +1 -1
  34. package/dist/config/schema.js +3 -2
  35. package/dist/config/schema.js.map +1 -1
  36. package/dist/evals/index.d.ts +22 -0
  37. package/dist/evals/index.d.ts.map +1 -0
  38. package/dist/evals/index.js +92 -0
  39. package/dist/evals/index.js.map +1 -0
  40. package/dist/evals/judge.d.ts +12 -0
  41. package/dist/evals/judge.d.ts.map +1 -0
  42. package/dist/evals/judge.js +171 -0
  43. package/dist/evals/judge.js.map +1 -0
  44. package/dist/evals/runner.d.ts +18 -0
  45. package/dist/evals/runner.d.ts.map +1 -0
  46. package/dist/evals/runner.js +133 -0
  47. package/dist/evals/runner.js.map +1 -0
  48. package/dist/{examples → evals}/setup.d.ts.map +1 -1
  49. package/dist/evals/setup.js.map +1 -0
  50. package/dist/evals/types.d.ts +166 -0
  51. package/dist/evals/types.d.ts.map +1 -0
  52. package/dist/evals/types.js +134 -0
  53. package/dist/evals/types.js.map +1 -0
  54. package/dist/output/dedup.d.ts.map +1 -1
  55. package/dist/output/dedup.js +29 -57
  56. package/dist/output/dedup.js.map +1 -1
  57. package/dist/output/github-checks.d.ts.map +1 -1
  58. package/dist/output/github-checks.js +37 -8
  59. package/dist/output/github-checks.js.map +1 -1
  60. package/dist/output/renderer.d.ts.map +1 -1
  61. package/dist/output/renderer.js +16 -1
  62. package/dist/output/renderer.js.map +1 -1
  63. package/dist/output/stale.d.ts +1 -0
  64. package/dist/output/stale.d.ts.map +1 -1
  65. package/dist/output/stale.js +14 -8
  66. package/dist/output/stale.js.map +1 -1
  67. package/dist/sdk/analyze.d.ts +11 -0
  68. package/dist/sdk/analyze.d.ts.map +1 -1
  69. package/dist/sdk/analyze.js +99 -19
  70. package/dist/sdk/analyze.js.map +1 -1
  71. package/dist/sdk/extract.d.ts +54 -0
  72. package/dist/sdk/extract.d.ts.map +1 -1
  73. package/dist/sdk/extract.js +175 -2
  74. package/dist/sdk/extract.js.map +1 -1
  75. package/dist/sdk/model-pricing.json +6 -12
  76. package/dist/sdk/prompt.d.ts +2 -0
  77. package/dist/sdk/prompt.d.ts.map +1 -1
  78. package/dist/sdk/prompt.js +18 -8
  79. package/dist/sdk/prompt.js.map +1 -1
  80. package/dist/sdk/runner.d.ts +2 -2
  81. package/dist/sdk/runner.d.ts.map +1 -1
  82. package/dist/sdk/runner.js +1 -1
  83. package/dist/sdk/runner.js.map +1 -1
  84. package/dist/sdk/types.d.ts +11 -3
  85. package/dist/sdk/types.d.ts.map +1 -1
  86. package/dist/sdk/types.js +1 -1
  87. package/dist/sdk/types.js.map +1 -1
  88. package/dist/sentry.d.ts +15 -0
  89. package/dist/sentry.d.ts.map +1 -1
  90. package/dist/sentry.js +40 -1
  91. package/dist/sentry.js.map +1 -1
  92. package/dist/types/index.d.ts +19 -0
  93. package/dist/types/index.d.ts.map +1 -1
  94. package/dist/types/index.js +25 -0
  95. package/dist/types/index.js.map +1 -1
  96. package/dist/utils/async.d.ts +14 -0
  97. package/dist/utils/async.d.ts.map +1 -1
  98. package/dist/utils/async.js +33 -0
  99. package/dist/utils/async.js.map +1 -1
  100. package/dist/utils/index.d.ts +1 -1
  101. package/dist/utils/index.d.ts.map +1 -1
  102. package/dist/utils/index.js +1 -1
  103. package/dist/utils/index.js.map +1 -1
  104. package/evals/README.md +154 -0
  105. package/evals/bug-detection.yaml +56 -0
  106. package/evals/fixtures/ignores-style-issues/utils.ts +48 -0
  107. package/evals/fixtures/missing-await/cache.ts +45 -0
  108. package/evals/fixtures/null-property-access/handler.ts +36 -0
  109. package/evals/fixtures/off-by-one/paginator.ts +38 -0
  110. package/evals/fixtures/sql-injection/api.ts +59 -0
  111. package/evals/fixtures/stale-closure/counter.tsx +33 -0
  112. package/evals/fixtures/wrong-comparison/validator.ts +52 -0
  113. package/evals/fixtures/xss-reflected/server.ts +55 -0
  114. package/evals/precision.yaml +15 -0
  115. package/evals/security-scanning.yaml +24 -0
  116. package/evals/skills/bug-detection.md +33 -0
  117. package/evals/skills/precision.md +18 -0
  118. package/evals/skills/security-scanning.md +32 -0
  119. package/package.json +4 -2
  120. package/dist/examples/index.d.ts +0 -50
  121. package/dist/examples/index.d.ts.map +0 -1
  122. package/dist/examples/index.js +0 -104
  123. package/dist/examples/index.js.map +0 -1
  124. package/dist/examples/setup.js.map +0 -1
  125. /package/dist/{examples → evals}/setup.d.ts +0 -0
  126. /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":"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"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/cli/output/tasks.ts"],"names":[],"mappings":"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"}
@@ -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
- // Rate-limit: delay items beyond the first concurrent wave
170
- if (index >= fileConcurrency && batchDelayMs > 0) {
171
- await new Promise((resolve) => setTimeout(resolve, batchDelayMs));
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, uniqueFindings),
193
- findings: uniqueFindings,
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: uniqueFindings,
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
- logPlain(` ${displayNameFor(_skillName)} > ${filename} skipped`);
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
- // File-level concurrency (within each skill)
374
- const fileConcurrency = 5;
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
- const results = [];
388
- if (concurrency <= 1) {
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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"}
@@ -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;AAc3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAqMlD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAyBtF;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"}
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"}
@@ -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
  }