@sentry/warden 0.8.0 → 0.10.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/README.md +4 -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 +37 -9
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/output/formatters.d.ts.map +1 -1
- package/dist/cli/output/formatters.js +3 -8
- package/dist/cli/output/formatters.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 +124 -115
- package/dist/cli/output/ink-runner.js.map +1 -1
- package/dist/cli/output/jsonl.d.ts +7 -1
- package/dist/cli/output/jsonl.d.ts.map +1 -1
- package/dist/cli/output/jsonl.js +4 -1
- 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 +127 -28
- 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 +0 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +1 -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 +38 -10
- 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 +185 -27
- package/dist/sdk/analyze.js.map +1 -1
- package/dist/sdk/extract.d.ts +55 -1
- package/dist/sdk/extract.d.ts.map +1 -1
- package/dist/sdk/extract.js +222 -32
- package/dist/sdk/extract.js.map +1 -1
- package/dist/sdk/haiku.d.ts +20 -0
- package/dist/sdk/haiku.d.ts.map +1 -1
- package/dist/sdk/haiku.js +159 -77
- package/dist/sdk/haiku.js.map +1 -1
- package/dist/sdk/model-pricing.json +6 -12
- package/dist/sdk/pricing.d.ts +5 -0
- package/dist/sdk/pricing.d.ts.map +1 -1
- package/dist/sdk/pricing.js +11 -2
- package/dist/sdk/pricing.js.map +1 -1
- package/dist/sdk/prompt.d.ts.map +1 -1
- package/dist/sdk/prompt.js +4 -1
- 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 +9 -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/sdk/usage.d.ts +5 -0
- package/dist/sdk/usage.d.ts.map +1 -1
- package/dist/sdk/usage.js +11 -3
- package/dist/sdk/usage.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/triggers/matcher.d.ts +2 -2
- package/dist/triggers/matcher.d.ts.map +1 -1
- package/dist/triggers/matcher.js +10 -8
- package/dist/triggers/matcher.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/plugins/warden/skills/warden/references/config-schema.md +4 -2
- package/plugins/warden/skills/warden/references/configuration.md +2 -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,25 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Ink-based skill runner with real-time progress display.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* While skills run, the dynamic Ink area shows running skills and active files.
|
|
5
|
+
* After Ink unmounts, the full per-skill + per-file breakdown is printed to
|
|
6
|
+
* stderr, followed by the normal findings report.
|
|
5
7
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
+
* UI updates are batched via setImmediate() to prevent rapid consecutive
|
|
9
|
+
* rerender() calls from producing duplicate output lines.
|
|
8
10
|
*
|
|
9
|
-
*
|
|
10
|
-
* Multiple Static components cause layout conflicts. We print the header
|
|
11
|
-
* before Ink starts to avoid needing a second Static.
|
|
12
|
-
*
|
|
13
|
-
* 2. **Stable item references**: Static tracks items by reference equality.
|
|
14
|
-
* Never wrap items in new objects (e.g., `{ type: 'skill', skill }`) on
|
|
15
|
-
* each render. Pass the original objects directly.
|
|
16
|
-
*
|
|
17
|
-
* 3. **Batched updates**: Rapid consecutive rerender() calls cause duplicate
|
|
18
|
-
* output. The updateUI() function batches updates using setImmediate().
|
|
19
|
-
*
|
|
20
|
-
* 4. **No direct writes to stderr**: Writing to process.stderr while Ink is
|
|
21
|
-
* running corrupts cursor tracking. The onLargePrompt/onPromptSize callbacks
|
|
22
|
-
* are exceptions that may cause minor display glitches in edge cases.
|
|
11
|
+
* Reporter spec: specs/reporters.md
|
|
23
12
|
*/
|
|
24
13
|
import { type SkillTaskOptions, type SkillTaskResult, type RunTasksOptions } from './tasks.js';
|
|
25
14
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ink-runner.d.ts","sourceRoot":"","sources":["../../../src/cli/output/ink-runner.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ink-runner.d.ts","sourceRoot":"","sources":["../../../src/cli/output/ink-runner.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EAIrB,MAAM,YAAY,CAAC;AAoMpB;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,gBAAgB,EAAE,EACzB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,eAAe,EAAE,CAAC,CAyJ5B"}
|
|
@@ -2,31 +2,21 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
/**
|
|
3
3
|
* Ink-based skill runner with real-time progress display.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* While skills run, the dynamic Ink area shows running skills and active files.
|
|
6
|
+
* After Ink unmounts, the full per-skill + per-file breakdown is printed to
|
|
7
|
+
* stderr, followed by the normal findings report.
|
|
6
8
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
+
* UI updates are batched via setImmediate() to prevent rapid consecutive
|
|
10
|
+
* rerender() calls from producing duplicate output lines.
|
|
9
11
|
*
|
|
10
|
-
*
|
|
11
|
-
* Multiple Static components cause layout conflicts. We print the header
|
|
12
|
-
* before Ink starts to avoid needing a second Static.
|
|
13
|
-
*
|
|
14
|
-
* 2. **Stable item references**: Static tracks items by reference equality.
|
|
15
|
-
* Never wrap items in new objects (e.g., `{ type: 'skill', skill }`) on
|
|
16
|
-
* each render. Pass the original objects directly.
|
|
17
|
-
*
|
|
18
|
-
* 3. **Batched updates**: Rapid consecutive rerender() calls cause duplicate
|
|
19
|
-
* output. The updateUI() function batches updates using setImmediate().
|
|
20
|
-
*
|
|
21
|
-
* 4. **No direct writes to stderr**: Writing to process.stderr while Ink is
|
|
22
|
-
* running corrupts cursor tracking. The onLargePrompt/onPromptSize callbacks
|
|
23
|
-
* are exceptions that may cause minor display glitches in edge cases.
|
|
12
|
+
* Reporter spec: specs/reporters.md
|
|
24
13
|
*/
|
|
25
14
|
import { useState, useEffect } from 'react';
|
|
26
|
-
import { render, Box, Text
|
|
15
|
+
import { render, Box, Text } from 'ink';
|
|
16
|
+
import chalk from 'chalk';
|
|
27
17
|
import { runSkillTask, } from './tasks.js';
|
|
28
18
|
import { formatDuration, formatCost, truncate, countBySeverity, formatSeverityDot } from './formatters.js';
|
|
29
|
-
import { runPool } from '../../utils/index.js';
|
|
19
|
+
import { runPool, Semaphore } from '../../utils/index.js';
|
|
30
20
|
import { Verbosity } from './verbosity.js';
|
|
31
21
|
import { ICON_CHECK, ICON_SKIPPED, ICON_PENDING, ICON_ERROR, SPINNER_FRAMES } from './icons.js';
|
|
32
22
|
import figures from 'figures';
|
|
@@ -41,49 +31,46 @@ function Spinner() {
|
|
|
41
31
|
return _jsx(Text, { color: "yellow", children: SPINNER_FRAMES[frame] });
|
|
42
32
|
}
|
|
43
33
|
function FileProgress({ file }) {
|
|
44
|
-
if (file.status === 'pending')
|
|
45
|
-
return null;
|
|
46
34
|
const filename = truncate(file.filename, 50);
|
|
47
|
-
if (file.status === 'skipped') {
|
|
48
|
-
return (_jsxs(Box, { children: [_jsx(Text, { color: "yellow", children: ICON_SKIPPED }), _jsxs(Text, { children: [" ", filename] }), _jsx(Text, { dimColor: true, children: " [skipped]" })] }));
|
|
49
|
-
}
|
|
50
|
-
if (file.status === 'done') {
|
|
51
|
-
const counts = countBySeverity(file.findings);
|
|
52
|
-
const hasFindings = file.findings.length > 0;
|
|
53
|
-
return (_jsxs(Box, { children: [_jsx(Text, { color: "green", children: ICON_CHECK }), _jsxs(Text, { children: [" ", filename] }), _jsxs(Text, { dimColor: true, children: [" [", file.totalHunks, "/", file.totalHunks, "]"] }), hasFindings && (_jsxs(Text, { children: [' ', counts.critical > 0 && _jsxs(Text, { children: [formatSeverityDot('critical'), " ", counts.critical, " "] }), counts.high > 0 && _jsxs(Text, { children: [formatSeverityDot('high'), " ", counts.high, " "] }), counts.medium > 0 && _jsxs(Text, { children: [formatSeverityDot('medium'), " ", counts.medium, " "] }), counts.low > 0 && _jsxs(Text, { children: [formatSeverityDot('low'), " ", counts.low, " "] }), counts.info > 0 && _jsxs(Text, { children: [formatSeverityDot('info'), " ", counts.info] })] })), file.durationMs !== undefined && _jsxs(Text, { dimColor: true, children: [" ", formatDuration(file.durationMs)] }), file.usage !== undefined && _jsxs(Text, { dimColor: true, children: [" ", formatCost(file.usage.costUSD)] })] }));
|
|
54
|
-
}
|
|
55
|
-
// Running
|
|
56
35
|
return (_jsxs(Box, { children: [_jsx(Spinner, {}), _jsxs(Text, { children: [" ", filename, " [", file.currentHunk, "/", file.totalHunks, "]"] })] }));
|
|
57
36
|
}
|
|
37
|
+
function RunningSkill({ skill }) {
|
|
38
|
+
const activeFiles = skill.files.filter((f) => f.status === 'running');
|
|
39
|
+
const doneCount = skill.files.filter((f) => f.status === 'done' || f.status === 'skipped').length;
|
|
40
|
+
const totalCount = skill.files.length;
|
|
41
|
+
const findingCount = skill.files.reduce((sum, f) => sum + f.findings.length, 0);
|
|
42
|
+
const cost = skill.files.reduce((sum, f) => sum + (f.usage?.costUSD ?? 0), 0);
|
|
43
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Spinner, {}), _jsxs(Text, { children: [" ", skill.displayName] }), totalCount > 0 && _jsxs(Text, { dimColor: true, children: [" [", doneCount, "/", totalCount, " files]"] }), findingCount > 0 && _jsxs(Text, { children: [" ", findingCount, " ", findingCount === 1 ? 'finding' : 'findings'] }), cost > 0 && _jsxs(Text, { dimColor: true, children: [" ", formatCost(cost)] })] }), activeFiles.map((file) => (_jsx(Box, { marginLeft: 2, children: _jsx(FileProgress, { file: file }) }, file.filename)))] }));
|
|
44
|
+
}
|
|
58
45
|
function CompletedSkill({ skill }) {
|
|
59
|
-
const duration = skill.durationMs ? formatDuration(skill.durationMs) : '';
|
|
60
46
|
if (skill.status === 'skipped') {
|
|
61
|
-
return (_jsxs(
|
|
47
|
+
return (_jsxs(Text, { children: [_jsx(Text, { color: "yellow", children: ICON_SKIPPED }), " ", skill.displayName, " ", _jsx(Text, { dimColor: true, children: "[skipped]" })] }));
|
|
62
48
|
}
|
|
49
|
+
const findingCount = skill.findings.length;
|
|
50
|
+
const cost = skill.usage?.costUSD;
|
|
51
|
+
const duration = skill.durationMs ? formatDuration(skill.durationMs) : undefined;
|
|
63
52
|
if (skill.status === 'error') {
|
|
64
|
-
return (_jsxs(
|
|
53
|
+
return (_jsxs(Text, { children: [_jsx(Text, { color: "red", children: ICON_ERROR }), " ", skill.displayName, duration && _jsxs(Text, { dimColor: true, children: [" [", duration, "]"] })] }));
|
|
65
54
|
}
|
|
66
|
-
return (_jsxs(
|
|
55
|
+
return (_jsxs(Text, { children: [_jsx(Text, { color: "green", children: ICON_CHECK }), " ", skill.displayName, duration && _jsxs(Text, { dimColor: true, children: [" [", duration, "]"] }), findingCount > 0 && _jsxs(Text, { children: [" ", findingCount, " ", findingCount === 1 ? 'finding' : 'findings'] }), cost !== undefined && cost > 0 && _jsxs(Text, { dimColor: true, children: [" ", formatCost(cost)] })] }));
|
|
67
56
|
}
|
|
68
|
-
function
|
|
69
|
-
const
|
|
70
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Spinner, {}), _jsxs(Text, { children: [" ", skill.displayName] })] }), visibleFiles.map((file) => (_jsx(Box, { marginLeft: 2, children: _jsx(FileProgress, { file: file }) }, file.filename)))] }));
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Renders the skill execution UI.
|
|
74
|
-
*
|
|
75
|
-
* IMPORTANT: Ink's Static component tracks items by reference equality.
|
|
76
|
-
* Items passed to Static must have stable references across renders.
|
|
77
|
-
* Creating new wrapper objects causes Static to mishandle its internal
|
|
78
|
-
* state, resulting in duplicate output lines.
|
|
79
|
-
*
|
|
80
|
-
* We use a SINGLE Static component to avoid layout conflicts from multiple
|
|
81
|
-
* absolutely-positioned Static containers.
|
|
82
|
-
*/
|
|
83
|
-
function SkillRunner({ skills, completedItems, interrupted }) {
|
|
57
|
+
function SkillRunner({ skills, interrupted }) {
|
|
58
|
+
const completed = skills.filter((s) => s.status === 'done' || s.status === 'skipped' || s.status === 'error');
|
|
84
59
|
const running = skills.filter((s) => s.status === 'running');
|
|
85
60
|
const pending = skills.filter((s) => s.status === 'pending');
|
|
86
|
-
return (_jsxs(Box, { flexDirection: "column", children: [
|
|
61
|
+
return (_jsxs(Box, { flexDirection: "column", children: [completed.map((skill) => (_jsx(CompletedSkill, { skill: skill }, skill.name))), running.map((skill) => (_jsx(RunningSkill, { skill: skill }, skill.name))), pending.map((skill) => (_jsxs(Text, { dimColor: true, children: [ICON_PENDING, " ", skill.displayName] }, skill.name))), interrupted && (_jsxs(Text, { color: "yellow", dimColor: true, children: [figures.warning, " Interrupted, finishing up... (press Ctrl+C again to force exit)"] }))] }));
|
|
62
|
+
}
|
|
63
|
+
/** Create a terminal skill state for skills that were skipped or errored before starting. */
|
|
64
|
+
function makeTerminalSkillState(tasks, name, overrides) {
|
|
65
|
+
const task = tasks.find((t) => t.name === name);
|
|
66
|
+
return {
|
|
67
|
+
name,
|
|
68
|
+
displayName: task?.displayName ?? name,
|
|
69
|
+
status: 'pending',
|
|
70
|
+
files: [],
|
|
71
|
+
findings: [],
|
|
72
|
+
...overrides,
|
|
73
|
+
};
|
|
87
74
|
}
|
|
88
75
|
/** No-op callbacks for quiet mode. */
|
|
89
76
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
@@ -96,33 +83,72 @@ const noopCallbacks = {
|
|
|
96
83
|
onSkillSkipped: noop,
|
|
97
84
|
onSkillError: noop,
|
|
98
85
|
};
|
|
86
|
+
/** Severity levels in display order. */
|
|
87
|
+
const SEVERITY_LEVELS = ['critical', 'high', 'medium', 'low', 'info'];
|
|
88
|
+
/** Print the per-file line within a skill summary. */
|
|
89
|
+
function printFileSummary(file) {
|
|
90
|
+
if (file.status === 'done') {
|
|
91
|
+
const filename = truncate(file.filename, 50);
|
|
92
|
+
const counts = countBySeverity(file.findings);
|
|
93
|
+
let line = ` ${chalk.green(ICON_CHECK)} ${filename} ${chalk.dim(`[${file.totalHunks}/${file.totalHunks}]`)}`;
|
|
94
|
+
const severityParts = SEVERITY_LEVELS
|
|
95
|
+
.filter((s) => counts[s] > 0)
|
|
96
|
+
.map((s) => `${formatSeverityDot(s)} ${counts[s]}`);
|
|
97
|
+
if (severityParts.length > 0)
|
|
98
|
+
line += ` ${severityParts.join(' ')}`;
|
|
99
|
+
if (file.durationMs !== undefined)
|
|
100
|
+
line += chalk.dim(` ${formatDuration(file.durationMs)}`);
|
|
101
|
+
if (file.usage !== undefined)
|
|
102
|
+
line += chalk.dim(` ${formatCost(file.usage.costUSD)}`);
|
|
103
|
+
process.stderr.write(`${line}\n`);
|
|
104
|
+
}
|
|
105
|
+
else if (file.status === 'skipped') {
|
|
106
|
+
const filename = truncate(file.filename, 50);
|
|
107
|
+
process.stderr.write(` ${chalk.yellow(ICON_SKIPPED)} ${filename} ${chalk.dim('[skipped]')}\n`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/** Print the full skill + file breakdown to stderr after Ink unmounts. */
|
|
111
|
+
function printSkillSummary(skillStates) {
|
|
112
|
+
for (const skill of skillStates) {
|
|
113
|
+
const duration = skill.durationMs ? chalk.dim(` [${formatDuration(skill.durationMs)}]`) : '';
|
|
114
|
+
if (skill.status === 'done') {
|
|
115
|
+
process.stderr.write(`${chalk.green(ICON_CHECK)} ${skill.displayName}${duration}\n`);
|
|
116
|
+
}
|
|
117
|
+
else if (skill.status === 'skipped') {
|
|
118
|
+
process.stderr.write(`${chalk.yellow(ICON_SKIPPED)} ${skill.displayName} ${chalk.dim('[skipped]')}\n`);
|
|
119
|
+
}
|
|
120
|
+
else if (skill.status === 'error') {
|
|
121
|
+
process.stderr.write(`${chalk.red(ICON_ERROR)} ${skill.displayName}${duration}\n`);
|
|
122
|
+
if (skill.error) {
|
|
123
|
+
process.stderr.write(`${chalk.red(` Error: ${skill.error}`)}\n`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (skill.status === 'done' || skill.status === 'error') {
|
|
127
|
+
for (const file of skill.files) {
|
|
128
|
+
printFileSummary(file);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
99
133
|
/**
|
|
100
134
|
* Run skill tasks with Ink-based real-time progress display.
|
|
101
135
|
*/
|
|
102
136
|
export async function runSkillTasksWithInk(tasks, options) {
|
|
103
137
|
const { verbosity, concurrency } = options;
|
|
104
138
|
if (tasks.length === 0 || verbosity === Verbosity.Quiet) {
|
|
105
|
-
// No tasks or quiet mode - run without UI
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
if (task.runnerOptions?.abortController?.signal.aborted)
|
|
109
|
-
break;
|
|
110
|
-
const result = await runSkillTask(task, 5, noopCallbacks);
|
|
111
|
-
results.push(result);
|
|
112
|
-
}
|
|
139
|
+
// No tasks or quiet mode - run without UI using global semaphore
|
|
140
|
+
const semaphore = new Semaphore(concurrency);
|
|
141
|
+
const results = await runPool(tasks, tasks.length, (task) => runSkillTask(task, Number.MAX_SAFE_INTEGER, noopCallbacks, semaphore), { shouldAbort: () => tasks[0]?.runnerOptions?.abortController?.signal.aborted ?? false });
|
|
113
142
|
return results;
|
|
114
143
|
}
|
|
115
144
|
// Track skill states
|
|
116
145
|
const skillStates = [];
|
|
117
|
-
|
|
118
|
-
const completedNames = new Set();
|
|
119
|
-
// Print header before Ink starts - this avoids multiple Static components
|
|
120
|
-
// which can cause layout conflicts due to absolute positioning
|
|
146
|
+
// Print header before Ink starts
|
|
121
147
|
process.stderr.write('\x1b[1mSKILLS\x1b[0m\n');
|
|
122
148
|
// Track interrupt state for rendering in the Ink component
|
|
123
149
|
let interrupted = false;
|
|
124
150
|
// Create Ink instance
|
|
125
|
-
const { rerender, unmount } = render(_jsx(SkillRunner, { skills: skillStates,
|
|
151
|
+
const { rerender, unmount, clear } = render(_jsx(SkillRunner, { skills: skillStates, interrupted: false }), { stdout: process.stderr });
|
|
126
152
|
// Batch UI updates to prevent rapid consecutive rerenders that cause duplicate lines.
|
|
127
153
|
// Without batching, multiple callbacks firing in quick succession (e.g., 5 files
|
|
128
154
|
// starting simultaneously) trigger 5 immediate rerenders, which Ink cannot
|
|
@@ -137,7 +163,7 @@ export async function runSkillTasksWithInk(tasks, options) {
|
|
|
137
163
|
updatePending = false;
|
|
138
164
|
if (unmounted)
|
|
139
165
|
return;
|
|
140
|
-
rerender(_jsx(SkillRunner, { skills: [...skillStates],
|
|
166
|
+
rerender(_jsx(SkillRunner, { skills: [...skillStates], interrupted: interrupted }));
|
|
141
167
|
});
|
|
142
168
|
};
|
|
143
169
|
// Listen for abort signal to show interrupt message in the Ink UI
|
|
@@ -158,13 +184,7 @@ export async function runSkillTasksWithInk(tasks, options) {
|
|
|
158
184
|
const idx = skillStates.findIndex((s) => s.name === name);
|
|
159
185
|
const existing = skillStates[idx];
|
|
160
186
|
if (idx >= 0 && existing) {
|
|
161
|
-
|
|
162
|
-
skillStates[idx] = updated;
|
|
163
|
-
// If skill just completed, add to completedItems (only once)
|
|
164
|
-
if (updates.status === 'done' && !completedNames.has(name)) {
|
|
165
|
-
completedNames.add(name);
|
|
166
|
-
completedItems.push(updated);
|
|
167
|
-
}
|
|
187
|
+
skillStates[idx] = { ...existing, ...updates };
|
|
168
188
|
updateUI();
|
|
169
189
|
}
|
|
170
190
|
},
|
|
@@ -182,44 +202,17 @@ export async function runSkillTasksWithInk(tasks, options) {
|
|
|
182
202
|
updateUI();
|
|
183
203
|
},
|
|
184
204
|
onSkillSkipped: (name) => {
|
|
185
|
-
|
|
186
|
-
const state = {
|
|
187
|
-
name,
|
|
188
|
-
displayName: task?.displayName ?? name,
|
|
189
|
-
status: 'skipped',
|
|
190
|
-
files: [],
|
|
191
|
-
findings: [],
|
|
192
|
-
};
|
|
193
|
-
skillStates.push(state);
|
|
194
|
-
if (!completedNames.has(name)) {
|
|
195
|
-
completedNames.add(name);
|
|
196
|
-
completedItems.push(state);
|
|
197
|
-
}
|
|
205
|
+
skillStates.push(makeTerminalSkillState(tasks, name, { status: 'skipped' }));
|
|
198
206
|
updateUI();
|
|
199
207
|
},
|
|
200
208
|
onSkillError: (name, error) => {
|
|
201
209
|
const idx = skillStates.findIndex((s) => s.name === name);
|
|
202
210
|
const existing = skillStates[idx];
|
|
203
|
-
let state;
|
|
204
211
|
if (idx >= 0 && existing) {
|
|
205
|
-
|
|
206
|
-
skillStates[idx] = state;
|
|
212
|
+
skillStates[idx] = { ...existing, status: 'error', error };
|
|
207
213
|
}
|
|
208
214
|
else {
|
|
209
|
-
|
|
210
|
-
state = {
|
|
211
|
-
name,
|
|
212
|
-
displayName: task?.displayName ?? name,
|
|
213
|
-
status: 'error',
|
|
214
|
-
error,
|
|
215
|
-
files: [],
|
|
216
|
-
findings: [],
|
|
217
|
-
};
|
|
218
|
-
skillStates.push(state);
|
|
219
|
-
}
|
|
220
|
-
if (!completedNames.has(name)) {
|
|
221
|
-
completedNames.add(name);
|
|
222
|
-
completedItems.push(state);
|
|
215
|
+
skillStates.push(makeTerminalSkillState(tasks, name, { status: 'error', error }));
|
|
223
216
|
}
|
|
224
217
|
updateUI();
|
|
225
218
|
},
|
|
@@ -237,24 +230,40 @@ export async function runSkillTasksWithInk(tasks, options) {
|
|
|
237
230
|
process.stderr.write(`\x1b[2m[debug] Prompt for ${location}: system=${systemChars}, user=${userChars}, total=${totalChars} chars (~${estimatedTokens} tokens)\x1b[0m\n`);
|
|
238
231
|
}
|
|
239
232
|
: undefined,
|
|
233
|
+
onHunkFailed: verbosity >= Verbosity.Verbose
|
|
234
|
+
? (_skillName, filename, lineRange, error) => {
|
|
235
|
+
const location = `${filename}:${lineRange}`;
|
|
236
|
+
process.stderr.write(`\x1b[33m${figures.warning}\x1b[0m Chunk failed: ${location} \x1b[2m\u2014 ${error}\x1b[0m\n`);
|
|
237
|
+
}
|
|
238
|
+
: undefined,
|
|
239
|
+
onExtractionFailure: verbosity >= Verbosity.Verbose
|
|
240
|
+
? (_skillName, filename, lineRange, error, preview) => {
|
|
241
|
+
const location = `${filename}:${lineRange}`;
|
|
242
|
+
process.stderr.write(`\x1b[33m${figures.warning}\x1b[0m Extraction failed: ${location} \x1b[2m\u2014 ${error}\x1b[0m\n`);
|
|
243
|
+
if (verbosity >= Verbosity.Debug && preview) {
|
|
244
|
+
process.stderr.write(`\x1b[2m[debug] Output preview: ${preview.slice(0, 200)}\x1b[0m\n`);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
: undefined,
|
|
248
|
+
onRetry: verbosity >= Verbosity.Verbose
|
|
249
|
+
? (_skillName, filename, lineRange, attempt, maxRetries, error, delayMs) => {
|
|
250
|
+
const location = `${filename}:${lineRange}`;
|
|
251
|
+
const retryInfo = `attempt ${attempt}/${maxRetries}`;
|
|
252
|
+
const delay = delayMs > 0 ? `, retrying in ${Math.round(delayMs / 1000)}s` : '';
|
|
253
|
+
process.stderr.write(`\x1b[2m[debug] Retry ${location} (${retryInfo}${delay}): ${error}\x1b[0m\n`);
|
|
254
|
+
}
|
|
255
|
+
: undefined,
|
|
240
256
|
};
|
|
241
|
-
|
|
242
|
-
const
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
if (task.runnerOptions?.abortController?.signal.aborted)
|
|
246
|
-
break;
|
|
247
|
-
const result = await runSkillTask(task, fileConcurrency, callbacks);
|
|
248
|
-
results.push(result);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
results.push(...await runPool(tasks, concurrency, (task) => runSkillTask(task, fileConcurrency, callbacks), { shouldAbort: () => tasks[0]?.runnerOptions?.abortController?.signal.aborted ?? false }));
|
|
253
|
-
}
|
|
257
|
+
// Global semaphore gates file-level work across all skills.
|
|
258
|
+
const semaphore = new Semaphore(concurrency);
|
|
259
|
+
// Launch all skills in parallel; the semaphore is the sole concurrency gate.
|
|
260
|
+
const results = await runPool(tasks, tasks.length, (task) => runSkillTask(task, Number.MAX_SAFE_INTEGER, callbacks, semaphore), { shouldAbort: () => tasks[0]?.runnerOptions?.abortController?.signal.aborted ?? false });
|
|
254
261
|
// Cleanup - set unmounted flag before unmount to prevent pending setImmediate
|
|
255
262
|
// callbacks from calling rerender on the unmounted Ink instance
|
|
256
263
|
unmounted = true;
|
|
264
|
+
clear();
|
|
257
265
|
unmount();
|
|
266
|
+
printSkillSummary(skillStates);
|
|
258
267
|
return results;
|
|
259
268
|
}
|
|
260
269
|
//# sourceMappingURL=ink-runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ink-runner.js","sourceRoot":"","sources":["../../../src/cli/output/ink-runner.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ink-runner.js","sourceRoot":"","sources":["../../../src/cli/output/ink-runner.tsx"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ export interface JsonlRunMetadata {
|
|
|
22
22
|
timestamp: string;
|
|
23
23
|
durationMs: number;
|
|
24
24
|
cwd: string;
|
|
25
|
+
traceId?: string;
|
|
25
26
|
}
|
|
26
27
|
/**
|
|
27
28
|
* Per-file record within a JSONL skill record.
|
|
@@ -34,6 +35,7 @@ export interface JsonlFileRecord {
|
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
36
37
|
* A single JSONL record representing one skill's report.
|
|
38
|
+
* See specs/reporters.md Section 3 "JSONL Specification" for schema.
|
|
37
39
|
*/
|
|
38
40
|
export interface JsonlRecord {
|
|
39
41
|
run: JsonlRunMetadata;
|
|
@@ -45,6 +47,8 @@ export interface JsonlRecord {
|
|
|
45
47
|
usage?: UsageStats;
|
|
46
48
|
auxiliaryUsage?: AuxiliaryUsageMap;
|
|
47
49
|
files?: JsonlFileRecord[];
|
|
50
|
+
failedHunks?: number;
|
|
51
|
+
failedExtractions?: number;
|
|
48
52
|
}
|
|
49
53
|
/**
|
|
50
54
|
* Per-evaluation detail for JSONL fix evaluation records.
|
|
@@ -77,5 +81,7 @@ export interface JsonlFixEvaluationRecord {
|
|
|
77
81
|
* Each line contains one skill report with run metadata.
|
|
78
82
|
* A final summary line is appended at the end.
|
|
79
83
|
*/
|
|
80
|
-
export declare function writeJsonlReport(outputPath: string, reports: SkillReport[], durationMs: number
|
|
84
|
+
export declare function writeJsonlReport(outputPath: string, reports: SkillReport[], durationMs: number, options?: {
|
|
85
|
+
traceId?: string;
|
|
86
|
+
}): void;
|
|
81
87
|
//# sourceMappingURL=jsonl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../../src/cli/output/jsonl.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAItE;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,IAAiB,GAAG,MAAM,CAIxF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,IAAiB,GAAG,MAAM,CAE/E;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../../src/cli/output/jsonl.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAItE;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,IAAiB,GAAG,MAAM,CAIxF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,IAAiB,GAAG,MAAM,CAE/E;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,gBAAgB,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,SAAS,GAAG,aAAa,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,gBAAgB,CAAC;IACtB,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACpC;AAkBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,EAAE,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B,IAAI,CA2DN"}
|
package/dist/cli/output/jsonl.js
CHANGED
|
@@ -50,7 +50,7 @@ function aggregateUsage(reports) {
|
|
|
50
50
|
* Each line contains one skill report with run metadata.
|
|
51
51
|
* A final summary line is appended at the end.
|
|
52
52
|
*/
|
|
53
|
-
export function writeJsonlReport(outputPath, reports, durationMs) {
|
|
53
|
+
export function writeJsonlReport(outputPath, reports, durationMs, options) {
|
|
54
54
|
const resolvedPath = resolve(process.cwd(), outputPath);
|
|
55
55
|
const timestamp = new Date().toISOString();
|
|
56
56
|
const cwd = process.cwd();
|
|
@@ -58,6 +58,7 @@ export function writeJsonlReport(outputPath, reports, durationMs) {
|
|
|
58
58
|
timestamp,
|
|
59
59
|
durationMs,
|
|
60
60
|
cwd,
|
|
61
|
+
traceId: options?.traceId,
|
|
61
62
|
};
|
|
62
63
|
const lines = [];
|
|
63
64
|
// Write one line per skill report
|
|
@@ -77,6 +78,8 @@ export function writeJsonlReport(outputPath, reports, durationMs) {
|
|
|
77
78
|
durationMs: f.durationMs,
|
|
78
79
|
usage: f.usage,
|
|
79
80
|
})),
|
|
81
|
+
failedHunks: report.failedHunks || undefined,
|
|
82
|
+
failedExtractions: report.failedExtractions || undefined,
|
|
80
83
|
};
|
|
81
84
|
lines.push(JSON.stringify(record));
|
|
82
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonl.js","sourceRoot":"","sources":["../../../src/cli/output/jsonl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACjD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAW,EAAE,YAAkB,IAAI,IAAI,EAAE;IAC9E,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;IAC3C,MAAM,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,GAAG,OAAO,IAAI,EAAE,QAAQ,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,YAAkB,IAAI,IAAI,EAAE;IACrE,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,sBAAsB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;AACvE,CAAC;
|
|
1
|
+
{"version":3,"file":"jsonl.js","sourceRoot":"","sources":["../../../src/cli/output/jsonl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SkillReport, Finding, FileChange } from '../../types/index.js';
|
|
1
|
+
import type { SkillReport, Finding, FileChange, UsageStats } from '../../types/index.js';
|
|
2
2
|
import { Verbosity } from './verbosity.js';
|
|
3
3
|
import { type OutputMode } from './tty.js';
|
|
4
4
|
/**
|
|
@@ -9,12 +9,14 @@ export interface SkillRunnerCallbacks {
|
|
|
9
9
|
skillStartTime?: number;
|
|
10
10
|
onFileStart?: (file: string, index: number, total: number) => void;
|
|
11
11
|
onHunkStart?: (file: string, hunkNum: number, total: number, lineRange: string) => void;
|
|
12
|
-
onHunkComplete?: (file: string, hunkNum: number, findings: Finding[]) => void;
|
|
12
|
+
onHunkComplete?: (file: string, hunkNum: number, findings: Finding[], usage: UsageStats) => void;
|
|
13
13
|
onFileComplete?: (file: string, index: number, total: number) => void;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Main reporter class for CLI output.
|
|
17
17
|
* Handles different verbosity levels and TTY/non-TTY modes.
|
|
18
|
+
*
|
|
19
|
+
* Reporter spec: specs/reporters.md
|
|
18
20
|
*/
|
|
19
21
|
export declare class Reporter {
|
|
20
22
|
readonly mode: OutputMode;
|
|
@@ -47,7 +49,9 @@ export declare class Reporter {
|
|
|
47
49
|
/**
|
|
48
50
|
* Render the summary section.
|
|
49
51
|
*/
|
|
50
|
-
renderSummary(reports: SkillReport[], totalDuration: number
|
|
52
|
+
renderSummary(reports: SkillReport[], totalDuration: number, options?: {
|
|
53
|
+
traceId?: string;
|
|
54
|
+
}): void;
|
|
51
55
|
/**
|
|
52
56
|
* Display the configuration section with triggers.
|
|
53
57
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../src/cli/output/reporter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../src/cli/output/reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,8 @@ const LOGO = `
|
|
|
40
40
|
/**
|
|
41
41
|
* Main reporter class for CLI output.
|
|
42
42
|
* Handles different verbosity levels and TTY/non-TTY modes.
|
|
43
|
+
*
|
|
44
|
+
* Reporter spec: specs/reporters.md
|
|
43
45
|
*/
|
|
44
46
|
export class Reporter {
|
|
45
47
|
mode;
|
|
@@ -148,7 +150,7 @@ export class Reporter {
|
|
|
148
150
|
/**
|
|
149
151
|
* Render the summary section.
|
|
150
152
|
*/
|
|
151
|
-
renderSummary(reports, totalDuration) {
|
|
153
|
+
renderSummary(reports, totalDuration, options) {
|
|
152
154
|
const allFindings = [];
|
|
153
155
|
let totalFailedHunks = 0;
|
|
154
156
|
let totalFailedExtractions = 0;
|
|
@@ -176,6 +178,9 @@ export class Reporter {
|
|
|
176
178
|
if (totalFailedExtractions > 0) {
|
|
177
179
|
this.log(chalk.yellow(`${figures.warning} ${totalFailedExtractions} finding ${pluralize(totalFailedExtractions, 'extraction')} failed`));
|
|
178
180
|
}
|
|
181
|
+
if ((totalFailedHunks > 0 || totalFailedExtractions > 0) && this.verbosity < Verbosity.Verbose) {
|
|
182
|
+
this.log(chalk.dim(' Use -v for failure details'));
|
|
183
|
+
}
|
|
179
184
|
if (totalSkippedFiles > 0) {
|
|
180
185
|
this.log(chalk.dim(`${totalSkippedFiles} ${pluralize(totalSkippedFiles, 'file')} skipped`));
|
|
181
186
|
}
|
|
@@ -186,6 +191,9 @@ export class Reporter {
|
|
|
186
191
|
else {
|
|
187
192
|
this.log(chalk.dim(durationLine));
|
|
188
193
|
}
|
|
194
|
+
if (options?.traceId && this.verbosity >= Verbosity.Verbose) {
|
|
195
|
+
this.log(chalk.dim(`Trace: ${options.traceId}`));
|
|
196
|
+
}
|
|
189
197
|
}
|
|
190
198
|
else {
|
|
191
199
|
this.logPlain(`Summary: ${formatFindingCountsPlain(counts)}`);
|
|
@@ -195,6 +203,9 @@ export class Reporter {
|
|
|
195
203
|
if (totalFailedExtractions > 0) {
|
|
196
204
|
this.logPlain(`WARN: ${totalFailedExtractions} finding ${pluralize(totalFailedExtractions, 'extraction')} failed`);
|
|
197
205
|
}
|
|
206
|
+
if ((totalFailedHunks > 0 || totalFailedExtractions > 0) && this.verbosity < Verbosity.Verbose) {
|
|
207
|
+
this.logPlain('Use -v for failure details');
|
|
208
|
+
}
|
|
198
209
|
if (totalSkippedFiles > 0) {
|
|
199
210
|
this.logPlain(`${totalSkippedFiles} ${pluralize(totalSkippedFiles, 'file')} skipped`);
|
|
200
211
|
}
|
|
@@ -202,6 +213,9 @@ export class Reporter {
|
|
|
202
213
|
this.logPlain(`Usage: ${formatUsagePlain(totalUsage)}`);
|
|
203
214
|
}
|
|
204
215
|
this.logPlain(`Total time: ${formatDuration(totalDuration)}`);
|
|
216
|
+
if (options?.traceId && this.verbosity >= Verbosity.Verbose) {
|
|
217
|
+
this.logPlain(`Trace: ${options.traceId}`);
|
|
218
|
+
}
|
|
205
219
|
}
|
|
206
220
|
}
|
|
207
221
|
/**
|