@sentry/warden 0.19.0 → 0.21.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/CHANGELOG.md +173 -0
- package/dist/cli/args.d.ts +7 -5
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +31 -17
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/runs.d.ts +26 -0
- package/dist/cli/commands/runs.d.ts.map +1 -0
- package/dist/cli/commands/runs.js +668 -0
- package/dist/cli/commands/runs.js.map +1 -0
- package/dist/cli/main.d.ts +15 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +236 -128
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/output/index.d.ts +1 -1
- package/dist/cli/output/index.d.ts.map +1 -1
- package/dist/cli/output/index.js +1 -1
- package/dist/cli/output/index.js.map +1 -1
- package/dist/cli/output/ink-runner.d.ts.map +1 -1
- package/dist/cli/output/ink-runner.js +32 -14
- package/dist/cli/output/ink-runner.js.map +1 -1
- package/dist/cli/output/jsonl-schema-gen.d.ts +16 -0
- package/dist/cli/output/jsonl-schema-gen.d.ts.map +1 -0
- package/dist/cli/output/jsonl-schema-gen.js +63 -0
- package/dist/cli/output/jsonl-schema-gen.js.map +1 -0
- package/dist/cli/output/jsonl.d.ts +168 -34
- package/dist/cli/output/jsonl.d.ts.map +1 -1
- package/dist/cli/output/jsonl.js +212 -144
- package/dist/cli/output/jsonl.js.map +1 -1
- package/dist/cli/output/tasks.d.ts +2 -0
- package/dist/cli/output/tasks.d.ts.map +1 -1
- package/dist/cli/output/tasks.js +167 -27
- package/dist/cli/output/tasks.js.map +1 -1
- package/dist/cli/terminal.d.ts.map +1 -1
- package/dist/cli/terminal.js +20 -0
- package/dist/cli/terminal.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/sdk/analyze.d.ts.map +1 -1
- package/dist/sdk/analyze.js +84 -10
- package/dist/sdk/analyze.js.map +1 -1
- package/dist/sdk/errors.d.ts +11 -0
- package/dist/sdk/errors.d.ts.map +1 -1
- package/dist/sdk/errors.js +50 -0
- package/dist/sdk/errors.js.map +1 -1
- package/dist/sdk/types.d.ts +9 -1
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +129 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +59 -3
- package/dist/types/index.js.map +1 -1
- package/package.json +2 -1
- package/agents.lock +0 -65
- package/dist/cli/commands/logs.d.ts +0 -19
- package/dist/cli/commands/logs.d.ts.map +0 -1
- package/dist/cli/commands/logs.js +0 -412
- package/dist/cli/commands/logs.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../../../src/cli/commands/runs.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import type { SkillReport, ConfidenceThreshold } from '../types/index.js';
|
|
2
|
+
import { type CLIOptions } from './args.js';
|
|
3
|
+
import { runSkillTasks } from './output/index.js';
|
|
1
4
|
/**
|
|
2
5
|
* Global abort controller for graceful shutdown on SIGINT.
|
|
3
6
|
* Used to cancel in-progress SDK queries.
|
|
@@ -10,5 +13,17 @@ export declare const abortController: AbortController;
|
|
|
10
13
|
export declare const interrupted: {
|
|
11
14
|
value: boolean;
|
|
12
15
|
};
|
|
16
|
+
interface ProcessedResults {
|
|
17
|
+
reports: SkillReport[];
|
|
18
|
+
filteredReports: SkillReport[];
|
|
19
|
+
hasFailure: boolean;
|
|
20
|
+
failureReasons: string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Process skill task results into reports and check for failures.
|
|
24
|
+
* Exported for testing; callers inside main.ts use it directly.
|
|
25
|
+
*/
|
|
26
|
+
export declare function processTaskResults(results: Awaited<ReturnType<typeof runSkillTasks>>, reportOn: CLIOptions['reportOn'], minConfidence?: ConfidenceThreshold): ProcessedResults;
|
|
13
27
|
export declare function main(): Promise<void>;
|
|
28
|
+
export {};
|
|
14
29
|
//# sourceMappingURL=main.d.ts.map
|
package/dist/cli/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAc,MAAM,mBAAmB,CAAC;AAGtF,OAAO,EAAwD,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAIlG,OAAO,EAKL,aAAa,EAcd,MAAM,mBAAmB,CAAC;AAe3B;;;GAGG;AACH,eAAO,MAAM,eAAe,iBAAwB,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,WAAW;;CAAmB,CAAC;AAsM5C,UAAU,gBAAgB;IACxB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,EAClD,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,EAChC,aAAa,CAAC,EAAE,mBAAmB,GAClC,gBAAgB,CA8BlB;AA6qBD,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA4F1C"}
|
package/dist/cli/main.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs';
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { dirname, join, resolve } from 'node:path';
|
|
3
3
|
import { config as dotenvConfig } from 'dotenv';
|
|
4
4
|
import { Sentry, flushSentry, setGlobalAttributes, emitRunMetric, getTraceId } from '../sentry.js';
|
|
@@ -12,7 +12,7 @@ import { parseCliArgs, showHelp, showVersion, classifyTargets } from './args.js'
|
|
|
12
12
|
import { buildLocalEventContext, buildFileEventContext } from './context.js';
|
|
13
13
|
import { getRepoRoot, getHeadSha, refExists, hasUncommittedChanges } from './git.js';
|
|
14
14
|
import { renderTerminalReport, filterReports } from './terminal.js';
|
|
15
|
-
import { Reporter, detectOutputMode, parseVerbosity, Verbosity, runSkillTasks, runSkillTasksWithInk, pluralize, MODEL_DEFAULT_SENTINEL, writeJsonlContent, renderJsonlString, getRepoLogPath, generateRunId, } from './output/index.js';
|
|
15
|
+
import { Reporter, detectOutputMode, parseVerbosity, Verbosity, runSkillTasks, runSkillTasksWithInk, pluralize, MODEL_DEFAULT_SENTINEL, writeJsonlContent, renderJsonlString, renderJsonlSkillLine, renderJsonlSummaryLine, initJsonlFile, appendJsonlLine, getRepoLogPath, generateRunId, } from './output/index.js';
|
|
16
16
|
import { cleanupArtifacts } from './log-cleanup.js';
|
|
17
17
|
import { collectFixableFindings, applyAllFixes, runInteractiveFixFlow, renderFixSummary, } from './fix.js';
|
|
18
18
|
import { UserAbortError } from './input.js';
|
|
@@ -20,7 +20,7 @@ import { runInit } from './commands/init.js';
|
|
|
20
20
|
import { runAdd } from './commands/add.js';
|
|
21
21
|
import { runSetupApp } from './commands/setup-app.js';
|
|
22
22
|
import { runSync } from './commands/sync.js';
|
|
23
|
-
import {
|
|
23
|
+
import { runRuns } from './commands/runs.js';
|
|
24
24
|
/**
|
|
25
25
|
* Global abort controller for graceful shutdown on SIGINT.
|
|
26
26
|
* Used to cancel in-progress SDK queries.
|
|
@@ -69,15 +69,18 @@ function resolveConfigPath(options, repoPath) {
|
|
|
69
69
|
return options.config ? resolve(cwd, options.config) : resolve(repoPath, 'warden.toml');
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
72
|
+
* Emit a minimal JSONL log (summary-only, 0 findings) for early-exit paths.
|
|
73
|
+
*
|
|
74
|
+
* Behavior:
|
|
75
|
+
* - `--json`: writes to stdout (the API contract for piping consumers).
|
|
76
|
+
* - `--output <path>`: writes to that explicit path (CI artifacts).
|
|
77
|
+
* - Default `.warden/logs/`: written only when `error` is set. Real
|
|
78
|
+
* failures (auth, config load, etc.) belong in the on-disk audit trail;
|
|
79
|
+
* pure no-ops (no files, no skills) would just clutter it.
|
|
76
80
|
*/
|
|
77
|
-
function
|
|
81
|
+
function emitEmptyRunLog(repoPath, options, error) {
|
|
78
82
|
const runId = generateRunId();
|
|
79
83
|
const timestamp = new Date();
|
|
80
|
-
const logPath = getRepoLogPath(repoPath, runId, timestamp);
|
|
81
84
|
let headSha;
|
|
82
85
|
try {
|
|
83
86
|
headSha = getHeadSha(repoPath);
|
|
@@ -85,43 +88,129 @@ function writeEmptyRunLog(repoPath, opts) {
|
|
|
85
88
|
catch {
|
|
86
89
|
// Not in a git repo or HEAD is unborn
|
|
87
90
|
}
|
|
88
|
-
const content = renderJsonlString([], 0, {
|
|
91
|
+
const content = renderJsonlString([], 0, {
|
|
92
|
+
runId,
|
|
93
|
+
traceId: getTraceId(),
|
|
94
|
+
timestamp,
|
|
95
|
+
headSha,
|
|
96
|
+
error,
|
|
97
|
+
});
|
|
98
|
+
if (error) {
|
|
99
|
+
const logPath = getRepoLogPath(repoPath, runId, timestamp);
|
|
100
|
+
try {
|
|
101
|
+
writeJsonlContent(logPath, content);
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
console.warn(`Warning: Failed to write run log: ${err instanceof Error ? err.message : String(err)}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (options.output) {
|
|
108
|
+
try {
|
|
109
|
+
writeJsonlContent(options.output, content);
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
console.warn(`Warning: Failed to write output file: ${err instanceof Error ? err.message : String(err)}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (options.json) {
|
|
116
|
+
process.stdout.write(content);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function initializeRunLog(args) {
|
|
120
|
+
const { repoPath, runId, timestamp, traceId, headSha, model, outputPath, reporter, startTime } = args;
|
|
121
|
+
const baseRun = {
|
|
122
|
+
timestamp: timestamp.toISOString(),
|
|
123
|
+
cwd: process.cwd(),
|
|
124
|
+
runId,
|
|
125
|
+
traceId,
|
|
126
|
+
model,
|
|
127
|
+
headSha,
|
|
128
|
+
};
|
|
129
|
+
const primaryLogPath = getRepoLogPath(repoPath, runId, timestamp);
|
|
130
|
+
let primaryLogWritten = false;
|
|
89
131
|
try {
|
|
90
|
-
|
|
132
|
+
initJsonlFile(primaryLogPath);
|
|
133
|
+
primaryLogWritten = true;
|
|
91
134
|
}
|
|
92
135
|
catch (err) {
|
|
93
|
-
|
|
136
|
+
reporter.warning(`Failed to write run log: ${err instanceof Error ? err.message : String(err)}`);
|
|
94
137
|
}
|
|
95
|
-
|
|
138
|
+
let resolvedOutputPath;
|
|
139
|
+
if (outputPath) {
|
|
96
140
|
try {
|
|
97
|
-
|
|
141
|
+
initJsonlFile(outputPath);
|
|
142
|
+
resolvedOutputPath = outputPath;
|
|
98
143
|
}
|
|
99
144
|
catch (err) {
|
|
100
|
-
|
|
145
|
+
reporter.warning(`Failed to write output file: ${err instanceof Error ? err.message : String(err)}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const paths = [];
|
|
149
|
+
if (primaryLogWritten)
|
|
150
|
+
paths.push(primaryLogPath);
|
|
151
|
+
if (resolvedOutputPath)
|
|
152
|
+
paths.push(resolvedOutputPath);
|
|
153
|
+
return { paths, primaryLogPath, primaryLogWritten, outputPath: resolvedOutputPath, startTime, baseRun };
|
|
154
|
+
}
|
|
155
|
+
function appendSkillToRunLog(log, report) {
|
|
156
|
+
if (log.paths.length === 0)
|
|
157
|
+
return;
|
|
158
|
+
const run = { ...log.baseRun, durationMs: Date.now() - log.startTime };
|
|
159
|
+
const line = renderJsonlSkillLine(report, run);
|
|
160
|
+
for (const p of log.paths) {
|
|
161
|
+
try {
|
|
162
|
+
appendJsonlLine(p, line);
|
|
101
163
|
}
|
|
164
|
+
catch { /* best-effort */ }
|
|
102
165
|
}
|
|
103
|
-
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Append the run-final summary record. Returns the set of paths that
|
|
169
|
+
* accepted the write, so the caller can decide whether to claim
|
|
170
|
+
* "wrote JSONL output to X" (only true when the summary actually landed).
|
|
171
|
+
*/
|
|
172
|
+
function finalizeRunLog(log, reports, totalDurationMs, error) {
|
|
173
|
+
const wrote = new Set();
|
|
174
|
+
if (log.paths.length === 0)
|
|
175
|
+
return wrote;
|
|
176
|
+
const run = { ...log.baseRun, durationMs: totalDurationMs };
|
|
177
|
+
const line = renderJsonlSummaryLine(reports, run, error);
|
|
178
|
+
for (const p of log.paths) {
|
|
179
|
+
try {
|
|
180
|
+
appendJsonlLine(p, line);
|
|
181
|
+
wrote.add(p);
|
|
182
|
+
}
|
|
183
|
+
catch { /* best-effort */ }
|
|
184
|
+
}
|
|
185
|
+
return wrote;
|
|
104
186
|
}
|
|
105
187
|
/**
|
|
106
188
|
* Process skill task results into reports and check for failures.
|
|
189
|
+
* Exported for testing; callers inside main.ts use it directly.
|
|
107
190
|
*/
|
|
108
|
-
function processTaskResults(results, reportOn, minConfidence) {
|
|
191
|
+
export function processTaskResults(results, reportOn, minConfidence) {
|
|
109
192
|
const reports = [];
|
|
110
193
|
let hasFailure = false;
|
|
111
194
|
const failureReasons = [];
|
|
112
195
|
for (const result of results) {
|
|
113
|
-
if (result.report)
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
196
|
+
if (!result.report)
|
|
197
|
+
continue;
|
|
198
|
+
reports.push(result.report);
|
|
199
|
+
// Skill-level errors always fail the run, independent of failOn thresholds.
|
|
200
|
+
if (result.report.error) {
|
|
201
|
+
hasFailure = true;
|
|
202
|
+
failureReasons.push(`${result.name}: ${result.report.error.code}: ${result.report.error.message}`);
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
// Apply confidence filtering before failOn evaluation so low-confidence findings
|
|
206
|
+
// don't cause exit code 1. Per-result minConfidence (from trigger config) takes
|
|
207
|
+
// precedence over the global default.
|
|
208
|
+
const effectiveConfidence = result.minConfidence ?? minConfidence;
|
|
209
|
+
const reportForFail = { ...result.report, findings: filterFindings(result.report.findings, undefined, effectiveConfidence) };
|
|
210
|
+
if (result.failOn && shouldFail(reportForFail, result.failOn)) {
|
|
211
|
+
hasFailure = true;
|
|
212
|
+
const count = countFindingsAtOrAbove(reportForFail, result.failOn);
|
|
213
|
+
failureReasons.push(`${result.name}: ${count} ${result.failOn}+ severity ${pluralize(count, 'issue')}`);
|
|
125
214
|
}
|
|
126
215
|
}
|
|
127
216
|
const filteredReports = filterReports(reports, reportOn, minConfidence);
|
|
@@ -130,39 +219,17 @@ function processTaskResults(results, reportOn, minConfidence) {
|
|
|
130
219
|
/**
|
|
131
220
|
* Output results and handle fixes. Returns exit code.
|
|
132
221
|
*/
|
|
133
|
-
async function outputResultsAndHandleFixes(processed, options, reporter,
|
|
222
|
+
async function outputResultsAndHandleFixes(processed, options, reporter, runLog, totalDuration, failFastAborted) {
|
|
134
223
|
const { reports, filteredReports, hasFailure, failureReasons } = processed;
|
|
135
|
-
const traceId =
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
headSha = getHeadSha(repoPath);
|
|
142
|
-
}
|
|
143
|
-
catch {
|
|
144
|
-
// Not in a git repo or HEAD is unborn
|
|
145
|
-
}
|
|
146
|
-
// Render JSONL content once so repo log and --output have identical timestamps
|
|
147
|
-
const jsonlContent = renderJsonlString(reports, totalDuration, { runId, traceId, timestamp, model: resolvedModel, headSha });
|
|
148
|
-
// Always write repo-local JSONL log (non-fatal — don't lose analysis output)
|
|
149
|
-
const logPath = getRepoLogPath(repoPath, runId, timestamp);
|
|
150
|
-
let logWritten = false;
|
|
151
|
-
try {
|
|
152
|
-
writeJsonlContent(logPath, jsonlContent);
|
|
153
|
-
logWritten = true;
|
|
154
|
-
}
|
|
155
|
-
catch (err) {
|
|
156
|
-
reporter.warning(`Failed to write run log: ${err instanceof Error ? err.message : String(err)}`);
|
|
157
|
-
}
|
|
158
|
-
// Write additional copy to --output path if specified
|
|
159
|
-
if (options.output) {
|
|
160
|
-
try {
|
|
161
|
-
writeJsonlContent(options.output, jsonlContent);
|
|
162
|
-
reporter.success(`Wrote JSONL output to ${options.output}`);
|
|
224
|
+
const traceId = runLog.baseRun.traceId;
|
|
225
|
+
const finalizedPaths = finalizeRunLog(runLog, reports, totalDuration);
|
|
226
|
+
// Only claim --output succeeded if the summary actually landed there.
|
|
227
|
+
if (runLog.outputPath) {
|
|
228
|
+
if (finalizedPaths.has(runLog.outputPath)) {
|
|
229
|
+
reporter.success(`Wrote JSONL output to ${runLog.outputPath}`);
|
|
163
230
|
}
|
|
164
|
-
|
|
165
|
-
reporter.warning(`Failed to write output file: ${
|
|
231
|
+
else {
|
|
232
|
+
reporter.warning(`Failed to write output file: ${runLog.outputPath}`);
|
|
166
233
|
}
|
|
167
234
|
}
|
|
168
235
|
// Collect fixable findings early so we know whether to suppress diffs in the report
|
|
@@ -175,14 +242,33 @@ async function outputResultsAndHandleFixes(processed, options, reporter, repoPat
|
|
|
175
242
|
&& reporter.verbosity !== Verbosity.Quiet
|
|
176
243
|
&& reporter.mode.isTTY
|
|
177
244
|
&& process.stdin.isTTY;
|
|
178
|
-
// Output results
|
|
179
245
|
reporter.blank();
|
|
180
246
|
if (options.json) {
|
|
181
|
-
//
|
|
247
|
+
// Prefer reading the on-disk log (per-skill durationMs is a snapshot).
|
|
248
|
+
// Only read it back if finalize actually landed the summary there;
|
|
249
|
+
// a half-written file should fall through to the in-memory render.
|
|
250
|
+
// The fallback uses the run total for every record — structurally
|
|
251
|
+
// valid but not byte-identical to the file.
|
|
252
|
+
let jsonlContent;
|
|
253
|
+
if (finalizedPaths.has(runLog.primaryLogPath)) {
|
|
254
|
+
try {
|
|
255
|
+
jsonlContent = readFileSync(runLog.primaryLogPath, 'utf-8');
|
|
256
|
+
}
|
|
257
|
+
catch { /* fall through */ }
|
|
258
|
+
}
|
|
259
|
+
if (!jsonlContent) {
|
|
260
|
+
jsonlContent = renderJsonlString(reports, totalDuration, {
|
|
261
|
+
runId: runLog.baseRun.runId,
|
|
262
|
+
traceId,
|
|
263
|
+
timestamp: new Date(runLog.baseRun.timestamp),
|
|
264
|
+
model: runLog.baseRun.model,
|
|
265
|
+
headSha: runLog.baseRun.headSha,
|
|
266
|
+
cwd: runLog.baseRun.cwd,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
182
269
|
process.stdout.write(jsonlContent);
|
|
183
270
|
}
|
|
184
271
|
else {
|
|
185
|
-
// Suppress fix diffs in report when interactive step-through will show them
|
|
186
272
|
console.log(renderTerminalReport(filteredReports, reporter.mode, { suppressFixDiffs: willStepThrough, verbosity: reporter.verbosity }));
|
|
187
273
|
}
|
|
188
274
|
// Show interrupted / fail-fast banner before summary
|
|
@@ -198,8 +284,8 @@ async function outputResultsAndHandleFixes(processed, options, reporter, repoPat
|
|
|
198
284
|
reporter.blank();
|
|
199
285
|
reporter.renderSummary(filteredReports, totalDuration, { traceId });
|
|
200
286
|
// Show log file path after summary (only if write succeeded)
|
|
201
|
-
if (!options.json &&
|
|
202
|
-
reporter.dim(`Log: ${
|
|
287
|
+
if (!options.json && runLog.primaryLogWritten) {
|
|
288
|
+
reporter.dim(`Log: ${runLog.primaryLogPath}`);
|
|
203
289
|
}
|
|
204
290
|
// Handle fixes: --fix (automatic) always runs, interactive step-through in TTY mode
|
|
205
291
|
if (fixableFindings.length > 0) {
|
|
@@ -250,15 +336,13 @@ async function runSkills(context, options, reporter) {
|
|
|
250
336
|
verifyAuth({ apiKey });
|
|
251
337
|
}
|
|
252
338
|
catch (error) {
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
writeEmptyRunLog(effectiveRepo, { traceId: getTraceId(), outputPath: options.output });
|
|
261
|
-
}
|
|
339
|
+
const message = error.message;
|
|
340
|
+
reporter.error(message);
|
|
341
|
+
emitEmptyRunLog(repoPath ?? cwd, options, {
|
|
342
|
+
code: 'auth_failed',
|
|
343
|
+
message,
|
|
344
|
+
timestamp: new Date().toISOString(),
|
|
345
|
+
});
|
|
262
346
|
return 1;
|
|
263
347
|
}
|
|
264
348
|
// Resolve config path
|
|
@@ -310,13 +394,8 @@ async function runSkills(context, options, reporter) {
|
|
|
310
394
|
emitRunMetric();
|
|
311
395
|
// Handle case where no skills to run
|
|
312
396
|
if (skillsToRun.length === 0) {
|
|
313
|
-
|
|
314
|
-
if (options.json) {
|
|
315
|
-
const { content } = writeEmptyRunLog(effectiveRepo, { traceId: getTraceId(), outputPath: options.output });
|
|
316
|
-
process.stdout.write(content);
|
|
317
|
-
}
|
|
318
|
-
else {
|
|
319
|
-
writeEmptyRunLog(effectiveRepo, { traceId: getTraceId(), outputPath: options.output });
|
|
397
|
+
emitEmptyRunLog(repoPath ?? cwd, options);
|
|
398
|
+
if (!options.json) {
|
|
320
399
|
reporter.warning('No triggers matched for the changed files');
|
|
321
400
|
reporter.tip('Specify a skill explicitly: warden <target> --skill <name>');
|
|
322
401
|
}
|
|
@@ -347,6 +426,29 @@ async function runSkills(context, options, reporter) {
|
|
|
347
426
|
context: filterContextByPaths(context, filters),
|
|
348
427
|
runnerOptions,
|
|
349
428
|
}));
|
|
429
|
+
// Open the run's JSONL log before launching skills so `warden runs
|
|
430
|
+
// follow <runId>` works from a second terminal while the run is live.
|
|
431
|
+
const runId = generateRunId();
|
|
432
|
+
const timestamp = new Date();
|
|
433
|
+
const traceId = getTraceId();
|
|
434
|
+
let headSha;
|
|
435
|
+
try {
|
|
436
|
+
headSha = getHeadSha(repoPath ?? cwd);
|
|
437
|
+
}
|
|
438
|
+
catch {
|
|
439
|
+
// Not a git repo or HEAD is unborn — non-fatal
|
|
440
|
+
}
|
|
441
|
+
const runLog = initializeRunLog({
|
|
442
|
+
repoPath: repoPath ?? cwd,
|
|
443
|
+
runId,
|
|
444
|
+
timestamp,
|
|
445
|
+
traceId,
|
|
446
|
+
headSha,
|
|
447
|
+
model: logModel,
|
|
448
|
+
outputPath: options.output,
|
|
449
|
+
reporter,
|
|
450
|
+
startTime,
|
|
451
|
+
});
|
|
350
452
|
// Run skills with Ink UI (TTY) or simple console output (non-TTY)
|
|
351
453
|
const concurrency = options.parallel ?? DEFAULT_CONCURRENCY;
|
|
352
454
|
failFastController = options.failFast ? new AbortController() : undefined;
|
|
@@ -355,6 +457,7 @@ async function runSkills(context, options, reporter) {
|
|
|
355
457
|
verbosity: reporter.verbosity,
|
|
356
458
|
concurrency,
|
|
357
459
|
failFastController,
|
|
460
|
+
onSkillComplete: (report) => appendSkillToRunLog(runLog, report),
|
|
358
461
|
};
|
|
359
462
|
const results = reporter.mode.isTTY
|
|
360
463
|
? await runSkillTasksWithInk(tasks, taskOptions)
|
|
@@ -363,7 +466,7 @@ async function runSkills(context, options, reporter) {
|
|
|
363
466
|
const totalDuration = Date.now() - startTime;
|
|
364
467
|
const effectiveMinConfidence = options.minConfidence ?? config?.defaults?.minConfidence ?? 'medium';
|
|
365
468
|
const processed = processTaskResults(results, options.reportOn, effectiveMinConfidence);
|
|
366
|
-
return outputResultsAndHandleFixes(processed, options, reporter,
|
|
469
|
+
return outputResultsAndHandleFixes(processed, options, reporter, runLog, totalDuration, failFastController?.signal.aborted);
|
|
367
470
|
}
|
|
368
471
|
/**
|
|
369
472
|
* Run in file mode: analyze specific files.
|
|
@@ -382,12 +485,8 @@ async function runFileMode(filePatterns, options, reporter) {
|
|
|
382
485
|
return 1;
|
|
383
486
|
}
|
|
384
487
|
if (pullRequest.files.length === 0) {
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
process.stdout.write(content);
|
|
388
|
-
}
|
|
389
|
-
else {
|
|
390
|
-
writeEmptyRunLog(cwd, { traceId: getTraceId(), outputPath: options.output });
|
|
488
|
+
emitEmptyRunLog(cwd, options);
|
|
489
|
+
if (!options.json) {
|
|
391
490
|
reporter.blank();
|
|
392
491
|
reporter.warning('No files matched the given patterns');
|
|
393
492
|
}
|
|
@@ -456,12 +555,8 @@ async function runGitRefMode(gitRef, options, reporter) {
|
|
|
456
555
|
return 1;
|
|
457
556
|
}
|
|
458
557
|
if (pullRequest.files.length === 0) {
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
process.stdout.write(content);
|
|
462
|
-
}
|
|
463
|
-
else {
|
|
464
|
-
writeEmptyRunLog(repoPath, { traceId: getTraceId(), outputPath: options.output });
|
|
558
|
+
emitEmptyRunLog(repoPath, options);
|
|
559
|
+
if (!options.json) {
|
|
465
560
|
reporter.renderEmptyState('No changes found');
|
|
466
561
|
reporter.blank();
|
|
467
562
|
}
|
|
@@ -509,12 +604,8 @@ async function runConfigMode(options, reporter) {
|
|
|
509
604
|
return 1;
|
|
510
605
|
}
|
|
511
606
|
if (pullRequest.files.length === 0) {
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
process.stdout.write(content);
|
|
515
|
-
}
|
|
516
|
-
else {
|
|
517
|
-
writeEmptyRunLog(repoPath, { traceId: getTraceId(), outputPath: options.output });
|
|
607
|
+
emitEmptyRunLog(repoPath, options);
|
|
608
|
+
if (!options.json) {
|
|
518
609
|
if (options.staged) {
|
|
519
610
|
reporter.renderEmptyState('No staged changes found');
|
|
520
611
|
}
|
|
@@ -549,12 +640,8 @@ async function runConfigMode(options, reporter) {
|
|
|
549
640
|
}
|
|
550
641
|
const triggersToRun = [...seen.values()];
|
|
551
642
|
if (triggersToRun.length === 0) {
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
process.stdout.write(content);
|
|
555
|
-
}
|
|
556
|
-
else {
|
|
557
|
-
writeEmptyRunLog(repoPath, { traceId: getTraceId(), outputPath: options.output });
|
|
643
|
+
emitEmptyRunLog(repoPath, options);
|
|
644
|
+
if (!options.json) {
|
|
558
645
|
reporter.blank();
|
|
559
646
|
if (options.skill) {
|
|
560
647
|
reporter.warning(`No triggers matched for skill: ${options.skill}`);
|
|
@@ -577,14 +664,13 @@ async function runConfigMode(options, reporter) {
|
|
|
577
664
|
verifyAuth({ apiKey });
|
|
578
665
|
}
|
|
579
666
|
catch (error) {
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
}
|
|
667
|
+
const message = error.message;
|
|
668
|
+
reporter.error(message);
|
|
669
|
+
emitEmptyRunLog(repoPath, options, {
|
|
670
|
+
code: 'auth_failed',
|
|
671
|
+
message,
|
|
672
|
+
timestamp: new Date().toISOString(),
|
|
673
|
+
});
|
|
588
674
|
return 1;
|
|
589
675
|
}
|
|
590
676
|
// Build trigger tasks
|
|
@@ -608,6 +694,33 @@ async function runConfigMode(options, reporter) {
|
|
|
608
694
|
auxiliaryMaxRetries: config.defaults?.auxiliaryMaxRetries,
|
|
609
695
|
},
|
|
610
696
|
}));
|
|
697
|
+
// Initialize the run's JSONL log up front so a second terminal can
|
|
698
|
+
// `warden runs follow <runId>` while skills are still running.
|
|
699
|
+
// Skill records are appended on each completion; the trailing summary
|
|
700
|
+
// is appended in `outputResultsAndHandleFixes`.
|
|
701
|
+
// Run-level model is the default (ignoring per-trigger overrides); per-skill models are on each report.
|
|
702
|
+
const defaultModel = config.defaults?.model ?? options.model ?? process.env['WARDEN_MODEL'] ?? MODEL_DEFAULT_SENTINEL;
|
|
703
|
+
const runId = generateRunId();
|
|
704
|
+
const timestamp = new Date();
|
|
705
|
+
const traceId = getTraceId();
|
|
706
|
+
let headSha;
|
|
707
|
+
try {
|
|
708
|
+
headSha = getHeadSha(repoPath);
|
|
709
|
+
}
|
|
710
|
+
catch {
|
|
711
|
+
// Not a git repo or HEAD is unborn — non-fatal
|
|
712
|
+
}
|
|
713
|
+
const runLog = initializeRunLog({
|
|
714
|
+
repoPath,
|
|
715
|
+
runId,
|
|
716
|
+
timestamp,
|
|
717
|
+
traceId,
|
|
718
|
+
headSha,
|
|
719
|
+
model: defaultModel,
|
|
720
|
+
outputPath: options.output,
|
|
721
|
+
reporter,
|
|
722
|
+
startTime,
|
|
723
|
+
});
|
|
611
724
|
// Run triggers with Ink UI (TTY) or simple console output (non-TTY)
|
|
612
725
|
const concurrency = options.parallel ?? config.runner?.concurrency ?? DEFAULT_CONCURRENCY;
|
|
613
726
|
failFastController = options.failFast ? new AbortController() : undefined;
|
|
@@ -616,6 +729,7 @@ async function runConfigMode(options, reporter) {
|
|
|
616
729
|
verbosity: reporter.verbosity,
|
|
617
730
|
concurrency,
|
|
618
731
|
failFastController,
|
|
732
|
+
onSkillComplete: (report) => appendSkillToRunLog(runLog, report),
|
|
619
733
|
};
|
|
620
734
|
const results = reporter.mode.isTTY
|
|
621
735
|
? await runSkillTasksWithInk(tasks, taskOptions)
|
|
@@ -623,9 +737,7 @@ async function runConfigMode(options, reporter) {
|
|
|
623
737
|
// Process results and output
|
|
624
738
|
const totalDuration = Date.now() - startTime;
|
|
625
739
|
const processed = processTaskResults(results, options.reportOn, effectiveMinConfidence);
|
|
626
|
-
|
|
627
|
-
const defaultModel = config.defaults?.model ?? options.model ?? process.env['WARDEN_MODEL'] ?? MODEL_DEFAULT_SENTINEL;
|
|
628
|
-
return outputResultsAndHandleFixes(processed, options, reporter, repoPath, totalDuration, failFastController?.signal.aborted, defaultModel);
|
|
740
|
+
return outputResultsAndHandleFixes(processed, options, reporter, runLog, totalDuration, failFastController?.signal.aborted);
|
|
629
741
|
}
|
|
630
742
|
/**
|
|
631
743
|
* Run in direct skill mode: run a specific skill on uncommitted changes.
|
|
@@ -660,12 +772,8 @@ async function runDirectSkillMode(options, reporter) {
|
|
|
660
772
|
return 1;
|
|
661
773
|
}
|
|
662
774
|
if (pullRequest.files.length === 0) {
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
process.stdout.write(content);
|
|
666
|
-
}
|
|
667
|
-
else {
|
|
668
|
-
writeEmptyRunLog(repoPath, { traceId: getTraceId(), outputPath: options.output });
|
|
775
|
+
emitEmptyRunLog(repoPath, options);
|
|
776
|
+
if (!options.json) {
|
|
669
777
|
if (options.staged) {
|
|
670
778
|
reporter.renderEmptyState('No staged changes found');
|
|
671
779
|
}
|
|
@@ -717,7 +825,7 @@ async function runCommand(options, reporter) {
|
|
|
717
825
|
return runFileMode(filePatterns, options, reporter);
|
|
718
826
|
}
|
|
719
827
|
export async function main() {
|
|
720
|
-
const { command, options, setupAppOptions,
|
|
828
|
+
const { command, options, setupAppOptions, runsOptions } = parseCliArgs();
|
|
721
829
|
if (command === 'help') {
|
|
722
830
|
showHelp();
|
|
723
831
|
process.exit(0);
|
|
@@ -762,12 +870,12 @@ export async function main() {
|
|
|
762
870
|
return runSetupApp(setupAppOptions, reporter);
|
|
763
871
|
case 'sync':
|
|
764
872
|
return runSync(options, reporter);
|
|
765
|
-
case '
|
|
766
|
-
if (!
|
|
767
|
-
reporter.error('Missing
|
|
873
|
+
case 'runs':
|
|
874
|
+
if (!runsOptions) {
|
|
875
|
+
reporter.error('Missing runs options');
|
|
768
876
|
process.exit(1);
|
|
769
877
|
}
|
|
770
|
-
return
|
|
878
|
+
return runRuns(runsOptions, options, reporter);
|
|
771
879
|
default:
|
|
772
880
|
return runCommand(options, reporter);
|
|
773
881
|
}
|