agentic-engineering-harness 0.6.12 → 0.6.14
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/dist/agents/outputContracts.d.ts +44 -1
- package/dist/agents/outputContracts.js +12 -2
- package/dist/agents/outputContracts.js.map +1 -1
- package/dist/agents/reviewLifecycle.js +54 -14
- package/dist/agents/reviewLifecycle.js.map +1 -1
- package/dist/agents/waveExecutor.d.ts +2 -13
- package/dist/audit/run.d.ts +7 -0
- package/dist/audit/run.js +198 -32
- package/dist/audit/run.js.map +1 -1
- package/dist/core/run.js +103 -28
- package/dist/core/run.js.map +1 -1
- package/dist/main.js +118 -23
- package/dist/main.js.map +1 -1
- package/dist/operations/artifacts.d.ts +13 -0
- package/dist/operations/artifacts.js +45 -0
- package/dist/operations/artifacts.js.map +1 -0
- package/dist/operations/change.d.ts +11 -0
- package/dist/operations/change.js +144 -0
- package/dist/operations/change.js.map +1 -0
- package/dist/operations/completion.d.ts +4 -1
- package/dist/operations/completion.js +69 -89
- package/dist/operations/completion.js.map +1 -1
- package/dist/operations/controller.d.ts +8 -5
- package/dist/operations/controller.js +270 -131
- package/dist/operations/controller.js.map +1 -1
- package/dist/operations/executionContext.d.ts +15 -0
- package/dist/operations/executionContext.js +91 -0
- package/dist/operations/executionContext.js.map +1 -0
- package/dist/operations/interactive.js +6 -1
- package/dist/operations/interactive.js.map +1 -1
- package/dist/operations/leadBinding.d.ts +2 -0
- package/dist/operations/leadBinding.js +22 -0
- package/dist/operations/leadBinding.js.map +1 -0
- package/dist/operations/liveness.d.ts +35 -0
- package/dist/operations/liveness.js +308 -0
- package/dist/operations/liveness.js.map +1 -0
- package/dist/operations/mcp.js +72 -55
- package/dist/operations/mcp.js.map +1 -1
- package/dist/operations/monitorProcess.d.ts +8 -0
- package/dist/operations/monitorProcess.js +33 -0
- package/dist/operations/monitorProcess.js.map +1 -0
- package/dist/operations/portfolio.d.ts +35 -0
- package/dist/operations/portfolio.js +158 -0
- package/dist/operations/portfolio.js.map +1 -0
- package/dist/operations/state.d.ts +174 -17
- package/dist/operations/state.js +178 -163
- package/dist/operations/state.js.map +1 -1
- package/dist/operations/supervisor.d.ts +38 -0
- package/dist/operations/supervisor.js +195 -0
- package/dist/operations/supervisor.js.map +1 -0
- package/dist/paseo/launchSpec.d.ts +4 -0
- package/dist/paseo/launchSpec.js +32 -25
- package/dist/paseo/launchSpec.js.map +1 -1
- package/dist/paseo/sdk.d.ts +5 -0
- package/dist/paseo/sdk.js +35 -87
- package/dist/paseo/sdk.js.map +1 -1
- package/dist/paseo/start.d.ts +1 -1
- package/dist/paseo/start.js +46 -86
- package/dist/paseo/start.js.map +1 -1
- package/dist/workers/agentPrompt.d.ts +2 -0
- package/dist/workers/agentPrompt.js +157 -183
- package/dist/workers/agentPrompt.js.map +1 -1
- package/docs/OPERATION_SUPERVISION.md +198 -0
- package/package.json +1 -1
- package/presets/agents/orchestration.jsonc +14 -4
- package/skills/engineering-workflow/SKILL.md +149 -104
- package/templates/AGENTS.md +8 -0
package/dist/audit/run.js
CHANGED
|
@@ -11,14 +11,21 @@ import { calculateQuality, evaluateFinalQualityGate } from "../agents/qualityCon
|
|
|
11
11
|
import { createWorktreeCheckpoint, rollbackWorktreeCheckpoint } from "../agents/gitCheckpoint.js";
|
|
12
12
|
import { createControlPlaneSnapshot } from "../core/controlPlane.js";
|
|
13
13
|
import { sealTask } from "../core/seal.js";
|
|
14
|
-
import {
|
|
14
|
+
import { currentOperationContext, loadOperation, resolveOperationStateRoot, setOperationStage } from "../operations/state.js";
|
|
15
|
+
import { consolidateWithOperationSupervisor, ensureOperationSupervisor, maybeRotateOperationSupervisor, settleDrainingSupervisorGenerations } from "../operations/supervisor.js";
|
|
15
16
|
import { runValidationCommand } from "../validators/commands.js";
|
|
16
17
|
import { runConfiguredValidators } from "../validators/registry.js";
|
|
17
18
|
import { dispatchMaterializedAgentPrompt, materializeAgentPrompt } from "../workers/agentPrompt.js";
|
|
18
19
|
import { recordEvent } from "../telemetry/events.js";
|
|
19
20
|
import { runProcess } from "../utils/process.js";
|
|
20
21
|
const AUDIT_OUTPUT_DIR = ".harness/audits";
|
|
21
|
-
const DEFAULT_AUDIT_REVIEWERS = [
|
|
22
|
+
const DEFAULT_AUDIT_REVIEWERS = [
|
|
23
|
+
"code-quality-reviewer",
|
|
24
|
+
"architecture-reviewer",
|
|
25
|
+
"security-reviewer",
|
|
26
|
+
"test-quality-reviewer",
|
|
27
|
+
"test-reviewer"
|
|
28
|
+
];
|
|
22
29
|
const AUDIT_REVIEWER_BUDGET = { low: 5, medium: 6, high: 8 };
|
|
23
30
|
export async function runAudit(root, config, input) {
|
|
24
31
|
const startedAt = new Date().toISOString();
|
|
@@ -35,32 +42,77 @@ export async function runAudit(root, config, input) {
|
|
|
35
42
|
const reviewers = selectAuditReviewers(topology, input);
|
|
36
43
|
const sessions = [];
|
|
37
44
|
const validationChecks = [];
|
|
38
|
-
const
|
|
45
|
+
const rawFindings = [];
|
|
39
46
|
let restoredPaths = [];
|
|
40
|
-
await recordEvent(root, config, "harness.audit.start", {
|
|
47
|
+
await recordEvent(root, config, "harness.audit.start", {
|
|
48
|
+
auditId,
|
|
49
|
+
request: input.request,
|
|
50
|
+
reviewers,
|
|
51
|
+
dirtyPaths,
|
|
52
|
+
commit
|
|
53
|
+
});
|
|
54
|
+
await operationStage(root, "supervision", "RUNNING");
|
|
55
|
+
const supervisor = await ensureOperationSupervisor(root, config, contract, topology, {
|
|
56
|
+
required: true,
|
|
57
|
+
forceMaterialize: true
|
|
58
|
+
});
|
|
59
|
+
if (!supervisor?.agentId) {
|
|
60
|
+
throw new Error("AEH_OPERATION_SUPERVISOR_UNAVAILABLE: AUDIT requires a materialized semantic supervisor.");
|
|
61
|
+
}
|
|
62
|
+
await operationStage(root, "supervision", "COMPLETED");
|
|
63
|
+
let outputs = [];
|
|
41
64
|
try {
|
|
42
|
-
await
|
|
65
|
+
await operationStage(root, "materializing-reviewers", "RUNNING");
|
|
43
66
|
const prepared = await Promise.all(reviewers.map((reviewer) => prepareAuditReviewer(root, config, contract, topology, reviewer)));
|
|
44
|
-
await
|
|
45
|
-
|
|
67
|
+
await operationStage(root, "materializing-reviewers", "COMPLETED");
|
|
68
|
+
await operationStage(root, "validating", "RUNNING");
|
|
69
|
+
for (const command of config.validation?.commands ?? []) {
|
|
46
70
|
validationChecks.push(classifyValidationCheck(await runValidationCommand(root, command)));
|
|
71
|
+
}
|
|
47
72
|
validationChecks.push(...(await runConfiguredValidators(root, config, contract, baseRef, [])).map(classifyValidationCheck));
|
|
48
|
-
await
|
|
49
|
-
|
|
73
|
+
await operationStage(root, "validating", "COMPLETED");
|
|
74
|
+
await operationStage(root, "reviewing", "RUNNING");
|
|
75
|
+
outputs = await Promise.all(prepared.map((reviewer) => runPreparedAuditReviewer(root, config, contract, reviewer, input, validationChecks, dirtyPaths)));
|
|
50
76
|
for (const output of outputs) {
|
|
51
77
|
sessions.push(output.session);
|
|
52
|
-
|
|
78
|
+
// Reviewer-local finding IDs are not guaranteed globally unique. Prefix
|
|
79
|
+
// them before supervisor consolidation so provenance is deterministic.
|
|
80
|
+
rawFindings.push(...output.findings.map((finding) => ({
|
|
81
|
+
...finding,
|
|
82
|
+
id: `${output.reviewer}:${finding.id}`
|
|
83
|
+
})));
|
|
53
84
|
}
|
|
85
|
+
await operationStage(root, "reviewing", "COMPLETED");
|
|
54
86
|
}
|
|
55
87
|
finally {
|
|
56
88
|
restoredPaths = await rollbackWorktreeCheckpoint(root, checkpoint);
|
|
57
89
|
}
|
|
58
|
-
await
|
|
59
|
-
const
|
|
90
|
+
await operationStage(root, "consolidating", "RUNNING");
|
|
91
|
+
const sourceArtifacts = await reviewerArtifacts(root, outputs);
|
|
92
|
+
const consolidation = await consolidateWithOperationSupervisor(root, config, contract, topology, {
|
|
93
|
+
key: "audit-reviewers",
|
|
94
|
+
purpose: "AUDIT reviewer findings",
|
|
95
|
+
findings: rawFindings,
|
|
96
|
+
sourceArtifacts,
|
|
97
|
+
deterministicEvidence: validationChecks
|
|
98
|
+
});
|
|
99
|
+
sessions.push(consolidation.session);
|
|
100
|
+
const deduped = dedupeFindings(consolidation.output.consolidatedFindings);
|
|
101
|
+
await operationStage(root, "consolidating", "COMPLETED", {
|
|
102
|
+
artifact: consolidation.artifact
|
|
103
|
+
});
|
|
104
|
+
await maybeRotateOperationSupervisor(root, config, contract, topology);
|
|
105
|
+
const operationId = currentOperationContext().id;
|
|
106
|
+
if (operationId)
|
|
107
|
+
await settleDrainingSupervisorGenerations(root, operationId);
|
|
60
108
|
const quality = calculateQuality(deduped.findings, config);
|
|
61
109
|
const qualityGate = evaluateFinalQualityGate(deduped.findings, config);
|
|
62
110
|
const validationDegraded = validationChecks.some((check) => check.status === "FAIL" || check.status === "WARN");
|
|
63
|
-
const status = validationDegraded
|
|
111
|
+
const status = validationDegraded
|
|
112
|
+
? "DEGRADED"
|
|
113
|
+
: deduped.findings.length
|
|
114
|
+
? "FINDINGS"
|
|
115
|
+
: "CLEAN";
|
|
64
116
|
const report = {
|
|
65
117
|
version: 1,
|
|
66
118
|
auditId,
|
|
@@ -80,21 +132,46 @@ export async function runAudit(root, config, input) {
|
|
|
80
132
|
productionSafe: !validationChecks.some((check) => check.status === "FAIL") && qualityGate.pass,
|
|
81
133
|
sessions,
|
|
82
134
|
restoredPaths,
|
|
83
|
-
controlPlaneSha256: snapshot.compositeSha256
|
|
135
|
+
controlPlaneSha256: snapshot.compositeSha256,
|
|
136
|
+
supervisor: {
|
|
137
|
+
generation: supervisor.generation,
|
|
138
|
+
consolidationArtifact: consolidation.artifact,
|
|
139
|
+
summary: consolidation.output.summary,
|
|
140
|
+
conflicts: consolidation.output.conflicts.length,
|
|
141
|
+
missingEvidence: consolidation.output.missingEvidence
|
|
142
|
+
}
|
|
84
143
|
};
|
|
85
144
|
await persistAudit(root, report);
|
|
86
|
-
await recordEvent(root, config, "harness.audit.finish", {
|
|
145
|
+
await recordEvent(root, config, "harness.audit.finish", {
|
|
146
|
+
auditId,
|
|
147
|
+
status,
|
|
148
|
+
findings: report.findings.length,
|
|
149
|
+
rawFindings: rawFindings.length,
|
|
150
|
+
debtPoints: report.debtPoints,
|
|
151
|
+
productionSafe: report.productionSafe,
|
|
152
|
+
supervisorGeneration: supervisor.generation,
|
|
153
|
+
consolidationArtifact: consolidation.artifact
|
|
154
|
+
});
|
|
87
155
|
return report;
|
|
88
156
|
}
|
|
89
157
|
export async function loadAuditReport(root, auditId) {
|
|
90
158
|
return JSON.parse(await fs.readFile(path.resolve(root, AUDIT_OUTPUT_DIR, `${auditId}.json`), "utf8"));
|
|
91
159
|
}
|
|
92
|
-
export function classifyValidationCheck(check) {
|
|
160
|
+
export function classifyValidationCheck(check) {
|
|
161
|
+
return { ...check, failureClass: classifyAuditFailure(check) };
|
|
162
|
+
}
|
|
93
163
|
export function classifyAuditFailure(check) {
|
|
94
164
|
if (check.status === "PASS" || check.status === "SKIP")
|
|
95
165
|
return "NONE";
|
|
96
166
|
const details = check.details ?? {};
|
|
97
|
-
const text = [
|
|
167
|
+
const text = [
|
|
168
|
+
check.message,
|
|
169
|
+
String(details.stderr ?? ""),
|
|
170
|
+
String(details.stdout ?? ""),
|
|
171
|
+
String(details.error ?? "")
|
|
172
|
+
]
|
|
173
|
+
.join("\n")
|
|
174
|
+
.toLowerCase();
|
|
98
175
|
if (/\b(eperm|eacces|permission denied|operation not permitted|sandbox|seccomp|denied by policy)\b/.test(text))
|
|
99
176
|
return "SANDBOX_DENIAL";
|
|
100
177
|
if (/\b(enoent|command not found|not found:|cannot find module|module not found|missing dependency|no such file or directory)\b/.test(text))
|
|
@@ -106,7 +183,23 @@ export function classifyAuditFailure(check) {
|
|
|
106
183
|
return "TOOL_FAILURE";
|
|
107
184
|
}
|
|
108
185
|
function auditContract(auditId, input, baseRef) {
|
|
109
|
-
return {
|
|
186
|
+
return {
|
|
187
|
+
version: 1,
|
|
188
|
+
task: { id: auditId, title: `Audit: ${input.request.slice(0, 120)}` },
|
|
189
|
+
git: { baseRef },
|
|
190
|
+
scope: { allowed: input.files ?? [] },
|
|
191
|
+
routing: {
|
|
192
|
+
intent: "audit",
|
|
193
|
+
domains: input.domains ?? [],
|
|
194
|
+
risk: input.risk ?? "low",
|
|
195
|
+
reviewers: input.reviewers ?? []
|
|
196
|
+
},
|
|
197
|
+
constraints: {
|
|
198
|
+
breakingApiChanges: false,
|
|
199
|
+
newDependencies: false,
|
|
200
|
+
schemaChanges: false
|
|
201
|
+
}
|
|
202
|
+
};
|
|
110
203
|
}
|
|
111
204
|
async function materializeAuditContract(root, config, contract) {
|
|
112
205
|
const contractsDir = path.resolve(root, config.sdd?.contractsDir ?? ".harness/contracts");
|
|
@@ -115,39 +208,102 @@ async function materializeAuditContract(root, config, contract) {
|
|
|
115
208
|
}
|
|
116
209
|
export function selectAuditReviewers(topology, input) {
|
|
117
210
|
const risk = input.risk ?? "low";
|
|
118
|
-
const routed = resolveRoute(topology, {
|
|
211
|
+
const routed = resolveRoute(topology, {
|
|
212
|
+
intent: "audit",
|
|
213
|
+
domains: input.domains ?? [],
|
|
214
|
+
files: input.files ?? [],
|
|
215
|
+
risk
|
|
216
|
+
}).reviewers;
|
|
119
217
|
const explicitlyRequested = [...new Set(input.reviewers ?? [])];
|
|
120
|
-
const ordered = [
|
|
218
|
+
const ordered = [
|
|
219
|
+
...new Set([...explicitlyRequested, ...routed, ...DEFAULT_AUDIT_REVIEWERS])
|
|
220
|
+
];
|
|
121
221
|
const available = ordered.filter((name) => topology.agents[name]?.role === "reviewer" && !topology.agents[name]?.disabled);
|
|
122
|
-
const fallback = Object.values(topology.agents)
|
|
222
|
+
const fallback = Object.values(topology.agents)
|
|
223
|
+
.filter((agent) => agent.role === "reviewer" && !agent.disabled)
|
|
224
|
+
.map((agent) => agent.name);
|
|
123
225
|
const candidates = available.length ? available : fallback;
|
|
124
226
|
const budget = Math.max(AUDIT_REVIEWER_BUDGET[risk], explicitlyRequested.length);
|
|
125
227
|
return candidates.slice(0, budget);
|
|
126
228
|
}
|
|
127
229
|
async function prepareAuditReviewer(root, config, contract, topology, reviewer) {
|
|
128
230
|
const base = executionSelectionForAgent(topology, reviewer);
|
|
129
|
-
const selection = {
|
|
130
|
-
|
|
231
|
+
const selection = {
|
|
232
|
+
...base,
|
|
233
|
+
permissions: { ...base.permissions, write: "deny", gitWrite: "deny", delegate: "deny" }
|
|
234
|
+
};
|
|
235
|
+
const materialized = await materializeAgentPrompt(root, config, contract, selection, {
|
|
236
|
+
outputContract: "reviewer",
|
|
237
|
+
phase: "review",
|
|
238
|
+
operationKind: "audit"
|
|
239
|
+
});
|
|
131
240
|
return { reviewer, selection, materialized };
|
|
132
241
|
}
|
|
133
242
|
async function runPreparedAuditReviewer(root, config, contract, prepared, input, checks, dirtyPaths) {
|
|
134
243
|
const session = await dispatchMaterializedAgentPrompt(root, config, contract, prepared.selection, prepared.materialized, buildAuditReviewerPrompt(input, prepared.reviewer, checks, dirtyPaths), { outputContract: "reviewer", phase: "review", operationKind: "audit" });
|
|
135
|
-
if (session.exitCode !== 0)
|
|
136
|
-
return {
|
|
244
|
+
if (session.exitCode !== 0) {
|
|
245
|
+
return {
|
|
246
|
+
reviewer: prepared.reviewer,
|
|
247
|
+
session,
|
|
248
|
+
findings: [
|
|
249
|
+
syntheticFinding(prepared.reviewer, `Audit reviewer runtime exited with code ${session.exitCode}.`)
|
|
250
|
+
]
|
|
251
|
+
};
|
|
252
|
+
}
|
|
137
253
|
try {
|
|
138
254
|
const output = reviewerOutputSchema.parse(extractMarkedJson(session.stdout, session.stderr));
|
|
139
|
-
if (output.verdict === "FAIL" && output.findings.length === 0)
|
|
140
|
-
return {
|
|
141
|
-
|
|
255
|
+
if (output.verdict === "FAIL" && output.findings.length === 0) {
|
|
256
|
+
return {
|
|
257
|
+
reviewer: prepared.reviewer,
|
|
258
|
+
session,
|
|
259
|
+
findings: [
|
|
260
|
+
syntheticFinding(prepared.reviewer, "Audit reviewer returned FAIL without a structured finding.")
|
|
261
|
+
]
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
return { reviewer: prepared.reviewer, session, findings: output.findings };
|
|
142
265
|
}
|
|
143
266
|
catch (error) {
|
|
144
|
-
return {
|
|
267
|
+
return {
|
|
268
|
+
reviewer: prepared.reviewer,
|
|
269
|
+
session,
|
|
270
|
+
findings: [
|
|
271
|
+
syntheticFinding(prepared.reviewer, `Invalid audit reviewer output contract: ${String(error)}`)
|
|
272
|
+
]
|
|
273
|
+
};
|
|
145
274
|
}
|
|
146
275
|
}
|
|
147
276
|
function buildAuditReviewerPrompt(input, reviewer, checks, dirtyPaths) {
|
|
148
277
|
return `You are ${reviewer} performing an AEH read-only engineering AUDIT.\n\nRequest:\n${input.request}\n\nScope hints: ${(input.files ?? []).join(", ") || "repository-wide"}\nDomains: ${(input.domains ?? []).join(", ") || "unspecified"}\nRisk: ${input.risk ?? "low"}\n\nThis is analysis only. Do not edit, create, delete, format, stage or commit repository files. Findings must be concrete, evidenced and actionable. Do not report style-only noise already enforced by deterministic tooling. Do not silently dismiss a deterministic failure as environment noise; use the supplied failure classification as evidence and state uncertainty when code correctness cannot be established.\n\nThe worktree had these pre-existing dirty paths when the audit started: ${dirtyPaths.join(", ") || "none"}. Do not treat pre-existing local diffs as committed source truth; inspect HEAD versions when a finding depends on one of those paths.\n\nDeterministic validation evidence:\n${JSON.stringify(checks, null, 2)}\n\nReturn the reviewer output contract as native JSON when supported, otherwise exactly one marker line:\nAEH_RESULT_JSON={"verdict":"PASS|FAIL|PASS_WITH_WARNINGS","findings":[],"finalizationSafety":"SAFE|BLOCKED|RISK_KNOWN","followUp":[]}`;
|
|
149
278
|
}
|
|
150
|
-
function syntheticFinding(agent, evidence) {
|
|
279
|
+
function syntheticFinding(agent, evidence) {
|
|
280
|
+
return {
|
|
281
|
+
id: `AUDIT-${agent}-SYSTEM`,
|
|
282
|
+
severity: "critical",
|
|
283
|
+
category: "audit-system",
|
|
284
|
+
location: { file: ".harness" },
|
|
285
|
+
evidence,
|
|
286
|
+
impact: "The requested audit could not be completed reliably.",
|
|
287
|
+
recommendedFix: "Repair the reviewer/runtime contract and rerun the audit.",
|
|
288
|
+
suggestedAgent: agent,
|
|
289
|
+
exceptionType: "SYSTEM_FAILURE"
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
async function reviewerArtifacts(root, outputs) {
|
|
293
|
+
const operationId = currentOperationContext().id;
|
|
294
|
+
if (!operationId)
|
|
295
|
+
return [];
|
|
296
|
+
const operation = await loadOperation(resolveOperationStateRoot(root), operationId);
|
|
297
|
+
return outputs
|
|
298
|
+
.map((output) => output.session.id ? operation.participants[output.session.id]?.resultArtifact : undefined)
|
|
299
|
+
.filter((value) => Boolean(value));
|
|
300
|
+
}
|
|
301
|
+
async function operationStage(root, name, status, options = {}) {
|
|
302
|
+
const operationId = currentOperationContext().id;
|
|
303
|
+
if (!operationId)
|
|
304
|
+
return;
|
|
305
|
+
await setOperationStage(resolveOperationStateRoot(root), operationId, name, status, options);
|
|
306
|
+
}
|
|
151
307
|
async function persistAudit(root, report) {
|
|
152
308
|
const outputDir = path.resolve(root, AUDIT_OUTPUT_DIR);
|
|
153
309
|
await fs.mkdir(outputDir, { recursive: true });
|
|
@@ -155,6 +311,16 @@ async function persistAudit(root, report) {
|
|
|
155
311
|
await fs.writeFile(file, `${JSON.stringify(report, null, 2)}\n`);
|
|
156
312
|
await fs.writeFile(path.join(outputDir, "latest.json"), `${JSON.stringify({ auditId: report.auditId, report: path.relative(root, file), finishedAt: report.finishedAt }, null, 2)}\n`);
|
|
157
313
|
}
|
|
158
|
-
function createAuditId(request) {
|
|
159
|
-
|
|
314
|
+
function createAuditId(request) {
|
|
315
|
+
const stamp = new Date()
|
|
316
|
+
.toISOString()
|
|
317
|
+
.replace(/[-:]/g, "")
|
|
318
|
+
.replace(/\.\d{3}Z$/, "Z");
|
|
319
|
+
const hash = crypto.createHash("sha256").update(request).digest("hex").slice(0, 8);
|
|
320
|
+
return `AUDIT-${stamp}-${hash}`;
|
|
321
|
+
}
|
|
322
|
+
async function gitCommit(root) {
|
|
323
|
+
const result = await runProcess("git rev-parse HEAD", { cwd: root, timeoutMs: 10_000 });
|
|
324
|
+
return result.exitCode === 0 ? result.stdout.trim() || undefined : undefined;
|
|
325
|
+
}
|
|
160
326
|
//# sourceMappingURL=run.js.map
|
package/dist/audit/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/audit/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/audit/run.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAA0B,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EAGzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAQ3C,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kCAAkC,EAClC,yBAAyB,EACzB,8BAA8B,EAC9B,mCAAmC,EACpC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAiEjD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAC3C,MAAM,uBAAuB,GAAG;IAC9B,uBAAuB;IACvB,uBAAuB;IACvB,mBAAmB;IACnB,uBAAuB;IACvB,eAAe;CAChB,CAAC;AACF,MAAM,qBAAqB,GAA6B,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAEvF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAY,EACZ,MAA4B,EAC5B,KAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,OAAO,IAAI,MAAM,CAAC;IACrD,MAAM,UAAU,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvD,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7F,MAAM,SAAS,GAAG,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,gBAAgB,GAA2B,EAAE,CAAC;IACpD,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,IAAI,aAAa,GAAa,EAAE,CAAC;IAEjC,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,qBAAqB,EAAE;QACrD,OAAO;QACP,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS;QACT,UAAU;QACV,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,MAAM,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;QACnF,QAAQ,EAAE,IAAI;QACd,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IACH,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IAEvD,IAAI,OAAO,GAA0B,EAAE,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,IAAI,EAAE,yBAAyB,EAAE,SAAS,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAC9F,CAAC;QACF,MAAM,cAAc,CAAC,IAAI,EAAE,yBAAyB,EAAE,WAAW,CAAC,CAAC;QAEnE,MAAM,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QACpD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;YACxD,gBAAgB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5F,CAAC;QACD,gBAAgB,CAAC,IAAI,CACnB,GAAG,CAAC,MAAM,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CACzE,uBAAuB,CACxB,CACF,CAAC;QACF,MAAM,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAEtD,MAAM,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACnD,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CACzB,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACxB,wBAAwB,CACtB,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,gBAAgB,EAChB,UAAU,CACX,CACF,CACF,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,wEAAwE;YACxE,uEAAuE;YACvE,WAAW,CAAC,IAAI,CACd,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACnC,GAAG,OAAO;gBACV,EAAE,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE,EAAE;aACvC,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;QACD,MAAM,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;YAAS,CAAC;QACT,aAAa,GAAG,MAAM,0BAA0B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,MAAM,kCAAkC,CAC5D,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR;QACE,GAAG,EAAE,iBAAiB;QACtB,OAAO,EAAE,yBAAyB;QAClC,QAAQ,EAAE,WAAW;QACrB,eAAe;QACf,qBAAqB,EAAE,gBAAgB;KACxC,CACF,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC1E,MAAM,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE;QACvD,QAAQ,EAAE,aAAa,CAAC,QAAQ;KACjC,CAAC,CAAC;IACH,MAAM,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,uBAAuB,EAAE,CAAC,EAAE,CAAC;IACjD,IAAI,WAAW;QAAE,MAAM,mCAAmC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAE9E,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,wBAAwB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvE,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,IAAI,CAC9C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAC9D,CAAC;IACF,MAAM,MAAM,GAAgB,kBAAkB;QAC5C,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM;YACvB,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,OAAO,CAAC;IACd,MAAM,MAAM,GAAgB;QAC1B,OAAO,EAAE,CAAC;QACV,OAAO;QACP,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM;QACN,SAAS;QACT,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;QACrE,SAAS;QACT,gBAAgB;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,WAAW;QACX,cAAc,EACZ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI;QAChF,QAAQ;QACR,aAAa;QACb,kBAAkB,EAAE,QAAQ,CAAC,eAAe;QAC5C,UAAU,EAAE;YACV,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,qBAAqB,EAAE,aAAa,CAAC,QAAQ;YAC7C,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO;YACrC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM;YAChD,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,eAAe;SACtD;KACF,CAAC;IACF,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,sBAAsB,EAAE;QACtD,OAAO;QACP,MAAM;QACN,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;QAChC,WAAW,EAAE,WAAW,CAAC,MAAM;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,oBAAoB,EAAE,UAAU,CAAC,UAAU;QAC3C,qBAAqB,EAAE,aAAa,CAAC,QAAQ;KAC9C,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,OAAe;IACjE,OAAO,IAAI,CAAC,KAAK,CACf,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,OAAO,OAAO,CAAC,EAAE,MAAM,CAAC,CACpE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAsB;IAC5D,OAAO,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAsB;IACzD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACtE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG;QACX,KAAK,CAAC,OAAO;QACb,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;KAC5B;SACE,IAAI,CAAC,IAAI,CAAC;SACV,WAAW,EAAE,CAAC;IACjB,IAAI,+FAA+F,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,gBAAgB,CAAC;IACxI,IAAI,4HAA4H,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,oBAAoB,CAAC;IACzK,IAAI,gHAAgH,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,qBAAqB,CAAC;IAC9J,IAAI,4DAA4D,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,mBAAmB,CAAC;IACxG,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,aAAa,CAAC,OAAe,EAAE,KAAmB,EAAE,OAAe;IAC1E,OAAO;QACL,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE;QACrE,GAAG,EAAE,EAAE,OAAO,EAAE;QAChB,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;QACrC,OAAO,EAAE;YACP,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;YAC5B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK;YACzB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;SACjC;QACD,WAAW,EAAE;YACX,kBAAkB,EAAE,KAAK;YACzB,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,KAAK;SACrB;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,IAAY,EACZ,MAA4B,EAC5B,QAAsB;IAEtB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,YAAY,IAAI,oBAAoB,CAAC,CAAC;IAC1F,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,QAA+B,EAC/B,KAAmB;IAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC;IACjC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE;QACpC,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;QACxB,IAAI;KACL,CAAC,CAAC,SAAS,CAAC;IACb,MAAM,mBAAmB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG;QACd,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,mBAAmB,EAAE,GAAG,MAAM,EAAE,GAAG,uBAAuB,CAAC,CAAC;KAC5E,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAC9B,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,CACzF,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;SAC5C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;SAC/D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACjF,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,IAAY,EACZ,MAA4B,EAC5B,QAAsB,EACtB,QAA+B,EAC/B,QAAgB;IAEhB,MAAM,IAAI,GAAG,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,SAAS,GAA4B;QACzC,GAAG,IAAI;QACP,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;KACxF,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE;QACnF,cAAc,EAAE,UAAU;QAC1B,KAAK,EAAE,QAAQ;QACf,aAAa,EAAE,OAAO;KACvB,CAAC,CAAC;IACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,IAAY,EACZ,MAA4B,EAC5B,QAAsB,EACtB,QAA+B,EAC/B,KAAmB,EACnB,MAA8B,EAC9B,UAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,+BAA+B,CACnD,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,YAAY,EACrB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EACtE,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,CACxE,CAAC;IACF,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,OAAO;YACP,QAAQ,EAAE;gBACR,gBAAgB,CACd,QAAQ,CAAC,QAAQ,EACjB,2CAA2C,OAAO,CAAC,QAAQ,GAAG,CAC/D;aACF;SACF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7F,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9D,OAAO;gBACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,OAAO;gBACP,QAAQ,EAAE;oBACR,gBAAgB,CACd,QAAQ,CAAC,QAAQ,EACjB,4DAA4D,CAC7D;iBACF;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC7E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,OAAO;YACP,QAAQ,EAAE;gBACR,gBAAgB,CACd,QAAQ,CAAC,QAAQ,EACjB,2CAA2C,MAAM,CAAC,KAAK,CAAC,EAAE,CAC3D;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAmB,EACnB,QAAgB,EAChB,MAA8B,EAC9B,UAAoB;IAEpB,OAAO,WAAW,QAAQ,gEAAgE,KAAK,CAAC,OAAO,oBAAoB,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,iBAAiB,cAAc,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,WAAW,KAAK,CAAC,IAAI,IAAI,KAAK,4eAA4e,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,iLAAiL,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,kPAAkP,CAAC;AAC3tC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,QAAgB;IACvD,OAAO;QACL,EAAE,EAAE,SAAS,KAAK,SAAS;QAC3B,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QAC9B,QAAQ;QACR,MAAM,EAAE,sDAAsD;QAC9D,cAAc,EAAE,2DAA2D;QAC3E,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,gBAAgB;KAChC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,IAAY,EACZ,OAA8B;IAE9B,MAAM,WAAW,GAAG,uBAAuB,EAAE,CAAC,EAAE,CAAC;IACjD,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IACpF,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACd,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAC1F;SACA,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,IAAY,EACZ,IAAY,EACZ,MAAkE,EAClE,UAAmD,EAAE;IAErD,MAAM,WAAW,GAAG,uBAAuB,EAAE,CAAC,EAAE,CAAC;IACjD,IAAI,CAAC,WAAW;QAAE,OAAO;IACzB,MAAM,iBAAiB,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC/F,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,MAAmB;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC;IAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EACnC,GAAG,IAAI,CAAC,SAAS,CACf,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,EAC7F,IAAI,EACJ,CAAC,CACF,IAAI,CACN,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;SACrB,WAAW,EAAE;SACb,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnF,OAAO,SAAS,KAAK,IAAI,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/E,CAAC"}
|
package/dist/core/run.js
CHANGED
|
@@ -26,8 +26,12 @@ import { createControlPlaneSnapshot, detectControlPlaneDrift, materializeControl
|
|
|
26
26
|
import { resolveOrganizationPolicyBundles, withOrganizationPolicies } from "../policy/bundles.js";
|
|
27
27
|
import { buildRequirementEvidenceGraph, evidenceValidationCheck } from "../evidence/graph.js";
|
|
28
28
|
import { enforceSandboxPolicy } from "../security/sandbox.js";
|
|
29
|
+
import { currentOperationContext, resolveOperationStateRoot, setOperationStage } from "../operations/state.js";
|
|
30
|
+
import { ensureOperationSupervisor, maybeRotateOperationSupervisor, settleDrainingSupervisorGenerations } from "../operations/supervisor.js";
|
|
29
31
|
export async function runTask(root, config, contract, options) {
|
|
30
32
|
const controlRoot = path.resolve(root);
|
|
33
|
+
const operationStateRoot = resolveOperationStateRoot(root);
|
|
34
|
+
const operationId = currentOperationContext().id;
|
|
31
35
|
const policyResolution = await resolveOrganizationPolicyBundles(controlRoot, config);
|
|
32
36
|
const effectiveConfig = withOrganizationPolicies(config, policyResolution);
|
|
33
37
|
const workspaceRoot = path.resolve(await deliveryWorkspacePath(controlRoot, effectiveConfig, contract.task.id) ?? controlRoot);
|
|
@@ -62,6 +66,14 @@ export async function runTask(root, config, contract, options) {
|
|
|
62
66
|
let selection = topologyState.selection;
|
|
63
67
|
if (selection)
|
|
64
68
|
selection = enforceSandboxPolicy(selection, effectiveConfig, effectiveContract.routing?.risk ?? "low").selection;
|
|
69
|
+
// SPEC/RUN is multi-phase by construction. QUICK remains cheap for a single
|
|
70
|
+
// worker and materializes its LLM supervisor only if review/remediation is needed.
|
|
71
|
+
const quickReviewEnabled = effectiveContract.mode === "quick" && effectiveConfig.workflow?.reviews?.reviewQuick === true && Boolean(route?.reviewers.length);
|
|
72
|
+
if (operationId && topology && (effectiveContract.mode !== "quick" || quickReviewEnabled)) {
|
|
73
|
+
await runStage(operationStateRoot, operationId, "supervision", "RUNNING");
|
|
74
|
+
await ensureOperationSupervisor(workspaceRoot, effectiveConfig, effectiveContract, topology, { required: true, forceMaterialize: true });
|
|
75
|
+
await runStage(operationStateRoot, operationId, "supervision", "COMPLETED");
|
|
76
|
+
}
|
|
65
77
|
let controller;
|
|
66
78
|
try {
|
|
67
79
|
controller = await createControlPlaneSnapshot(controlRoot, effectiveConfig, effectiveContract.task.id);
|
|
@@ -82,10 +94,19 @@ export async function runTask(root, config, contract, options) {
|
|
|
82
94
|
let waveResult;
|
|
83
95
|
let executionSessions = [];
|
|
84
96
|
let report;
|
|
85
|
-
|
|
97
|
+
const planningEnabled = topology && route && selection && effectiveConfig.workflow?.planning?.enabled !== false && effectiveContract.mode !== "quick";
|
|
98
|
+
if (planningEnabled) {
|
|
99
|
+
if (operationId)
|
|
100
|
+
await runStage(operationStateRoot, operationId, "planning", "RUNNING");
|
|
86
101
|
waveResult = await executePlannerWaves({ root: workspaceRoot, stateRoot: controlRoot, config: effectiveConfig, contract: effectiveContract, topology, implementationSelection: selection, controller, revalidate: async () => verifyAfterWorker(workspaceRoot, controlRoot, effectiveConfig, effectiveContract, controller) });
|
|
87
102
|
executionSessions = [...waveResult.sessions];
|
|
103
|
+
if (operationId) {
|
|
104
|
+
await runStage(operationStateRoot, operationId, "planning", waveResult.aggregateSession?.exitCode === 0 || !waveResult.aggregateSession ? "COMPLETED" : "FAILED");
|
|
105
|
+
await maybeRotateOperationSupervisor(workspaceRoot, effectiveConfig, effectiveContract, topology);
|
|
106
|
+
}
|
|
88
107
|
}
|
|
108
|
+
if (operationId)
|
|
109
|
+
await runStage(operationStateRoot, operationId, "implementation", "RUNNING");
|
|
89
110
|
if (waveResult?.used && waveResult.aggregateSession) {
|
|
90
111
|
worker = waveResult.aggregateSession;
|
|
91
112
|
report = withWorkerExecutionCheck(waveResult.report ?? await verifyAfterWorker(workspaceRoot, controlRoot, effectiveConfig, effectiveContract, controller), worker);
|
|
@@ -99,6 +120,8 @@ export async function runTask(root, config, contract, options) {
|
|
|
99
120
|
executionSessions.push(worker);
|
|
100
121
|
report = withWorkerExecutionCheck(await verifyAfterWorker(workspaceRoot, controlRoot, effectiveConfig, effectiveContract, controller), worker);
|
|
101
122
|
}
|
|
123
|
+
if (operationId)
|
|
124
|
+
await runStage(operationStateRoot, operationId, "implementation", report.status === "PASS" ? "COMPLETED" : "FAILED");
|
|
102
125
|
let evidenceGraph;
|
|
103
126
|
const attachEvidence = async (candidate) => {
|
|
104
127
|
if (candidate.status !== "PASS" || effectiveConfig.evidence?.enabled !== true)
|
|
@@ -112,6 +135,10 @@ export async function runTask(root, config, contract, options) {
|
|
|
112
135
|
let attempts = 0;
|
|
113
136
|
let executor = createWorkerExecutor(effectiveConfig, selection);
|
|
114
137
|
while (report.status === "FAIL" && attempts < maxRepairs) {
|
|
138
|
+
if (operationId && topology) {
|
|
139
|
+
await ensureOperationSupervisor(workspaceRoot, effectiveConfig, effectiveContract, topology, { required: true, forceMaterialize: true });
|
|
140
|
+
await runStage(operationStateRoot, operationId, "remediation", "RUNNING");
|
|
141
|
+
}
|
|
115
142
|
attempts += 1;
|
|
116
143
|
const failureType = classifyFailure({ report, worker });
|
|
117
144
|
const recovery = topology ? resolveRecoveryStep(topology, failureType, attempts) : { action: "same-agent" };
|
|
@@ -147,11 +174,20 @@ export async function runTask(root, config, contract, options) {
|
|
|
147
174
|
report = withWorkerExecutionCheck(await verifyAfterWorker(workspaceRoot, controlRoot, effectiveConfig, effectiveContract, controller), worker);
|
|
148
175
|
report = await attachEvidence(report);
|
|
149
176
|
await recordEvent(controlRoot, effectiveConfig, "harness.repair.finish", { taskId: effectiveContract.task.id, attempt: attempts, status: report.status, agent: selection?.logicalAgent });
|
|
177
|
+
if (operationId && topology)
|
|
178
|
+
await maybeRotateOperationSupervisor(workspaceRoot, effectiveConfig, effectiveContract, topology);
|
|
150
179
|
}
|
|
180
|
+
if (operationId && attempts > 0)
|
|
181
|
+
await runStage(operationStateRoot, operationId, "remediation", report.status === "PASS" ? "COMPLETED" : "FAILED");
|
|
151
182
|
let reviewSummary;
|
|
152
183
|
let reviewFindings = [];
|
|
153
184
|
let reviewSessions = [];
|
|
154
185
|
if (report.status === "PASS" && topology && route && selection) {
|
|
186
|
+
const willRunReviewers = effectiveContract.mode !== "quick" || effectiveConfig.workflow?.reviews?.reviewQuick === true;
|
|
187
|
+
if (operationId && willRunReviewers && route.reviewers.length) {
|
|
188
|
+
await ensureOperationSupervisor(workspaceRoot, effectiveConfig, effectiveContract, topology, { required: true, forceMaterialize: true });
|
|
189
|
+
await runStage(operationStateRoot, operationId, "review", "RUNNING");
|
|
190
|
+
}
|
|
155
191
|
const review = await runReviewLifecycle({ root: workspaceRoot, stateRoot: controlRoot, config: effectiveConfig, contract: effectiveContract, topology, route, implementationSelection: selection, report, revalidate: async () => verifyAfterWorker(workspaceRoot, controlRoot, effectiveConfig, effectiveContract, controller) });
|
|
156
192
|
report = mergeChecks(withWorkerExecutionCheck(review.report, worker), review.checks);
|
|
157
193
|
reviewFindings = review.findings.findings;
|
|
@@ -159,6 +195,10 @@ export async function runTask(root, config, contract, options) {
|
|
|
159
195
|
const quality = review.qualityHistory.at(-1);
|
|
160
196
|
reviewSummary = { status: review.status, finalState: review.finalState, humanRequired: review.humanRequired, rounds: review.rounds, findings: review.findings.outputCount, debtScore: quality.debtScore, debtPoints: quality.debtPoints, counts: quality.counts, convergence: quality.convergence, leadAccepted: review.leadAccepted, reviewerSessions: review.sessions.length };
|
|
161
197
|
await recordEvent(controlRoot, effectiveConfig, "harness.review.finish", { taskId: effectiveContract.task.id, status: review.status, finalState: review.finalState, humanRequired: review.humanRequired, rounds: review.rounds, findings: review.findings.outputCount, debtScore: quality.debtScore, convergence: quality.convergence, leadAccepted: review.leadAccepted, sessions: review.sessions.length });
|
|
198
|
+
if (operationId && willRunReviewers && route.reviewers.length) {
|
|
199
|
+
await runStage(operationStateRoot, operationId, "review", review.status === "PASS" ? "COMPLETED" : review.humanRequired ? "BLOCKED" : "FAILED");
|
|
200
|
+
await maybeRotateOperationSupervisor(workspaceRoot, effectiveConfig, effectiveContract, topology);
|
|
201
|
+
}
|
|
162
202
|
if (report.status === "PASS" && effectiveConfig.evidence?.enabled === true) {
|
|
163
203
|
evidenceGraph = await buildRequirementEvidenceGraph({ root: workspaceRoot, stateRoot: controlRoot, config: effectiveConfig, contract: effectiveContract, report, plan: waveResult?.plan, findings: reviewFindings, sessions: [...executionSessions, ...reviewSessions] });
|
|
164
204
|
report = mergeChecks(report, [evidenceValidationCheck(evidenceGraph, effectiveConfig)]);
|
|
@@ -166,10 +206,14 @@ export async function runTask(root, config, contract, options) {
|
|
|
166
206
|
}
|
|
167
207
|
let deliverySummary;
|
|
168
208
|
if (report.status === "PASS") {
|
|
209
|
+
if (operationId)
|
|
210
|
+
await runStage(operationStateRoot, operationId, "delivery", "RUNNING");
|
|
169
211
|
try {
|
|
170
212
|
deliverySummary = await finalizeAcceptedIssue(workspaceRoot, effectiveConfig, effectiveContract);
|
|
171
213
|
if (deliverySummary.status !== "SKIPPED")
|
|
172
214
|
await recordEvent(controlRoot, effectiveConfig, "harness.delivery.finalize", { taskId: effectiveContract.task.id, status: deliverySummary.status, commitSha: deliverySummary.commitSha, pullRequest: deliverySummary.pullRequest });
|
|
215
|
+
if (operationId)
|
|
216
|
+
await runStage(operationStateRoot, operationId, "delivery", "COMPLETED");
|
|
173
217
|
}
|
|
174
218
|
catch (error) {
|
|
175
219
|
deliverySummary = deliveryFinalizationFailure(error);
|
|
@@ -177,6 +221,8 @@ export async function runTask(root, config, contract, options) {
|
|
|
177
221
|
if (reviewSummary && deliverySummary.humanRequired)
|
|
178
222
|
reviewSummary = { ...reviewSummary, status: "FAIL", finalState: "BLOCKED_EXTERNAL", humanRequired: true };
|
|
179
223
|
await recordEvent(controlRoot, effectiveConfig, "harness.delivery.finalize", { taskId: effectiveContract.task.id, status: deliverySummary.status, humanRequired: deliverySummary.humanRequired, message: deliverySummary.message });
|
|
224
|
+
if (operationId)
|
|
225
|
+
await runStage(operationStateRoot, operationId, "delivery", deliverySummary.humanRequired ? "BLOCKED" : "FAILED", { message: deliverySummary.message });
|
|
180
226
|
}
|
|
181
227
|
}
|
|
182
228
|
if (report.status === "PASS" && effectiveConfig.evidence?.enabled === true) {
|
|
@@ -186,6 +232,8 @@ export async function runTask(root, config, contract, options) {
|
|
|
186
232
|
const drift = controller ? await detectControlPlaneDrift(controlRoot, controller) : { changed: [], missing: [], added: [], drifted: false };
|
|
187
233
|
if (controller)
|
|
188
234
|
report = mergeChecks(report, [{ id: "trust.control-plane-freeze", category: "trust-boundary", status: "PASS", message: drift.drifted ? "Control-plane files changed during the run, but the run remained governed by its frozen controller snapshot; changes activate next run." : "Control-plane snapshot remained unchanged during the run.", details: { controllerSha256: controller.compositeSha256, gitCommit: controller.gitCommit, drift } }]);
|
|
235
|
+
if (operationId && topology)
|
|
236
|
+
await settleDrainingSupervisorGenerations(workspaceRoot, operationId);
|
|
189
237
|
const usageText = [...executionSessions, ...reviewSessions].map((session) => `${session.stdout}\n${session.stderr}`).join("\n");
|
|
190
238
|
worker.metrics = extractUsageMetrics(usageText || `${worker.stdout}\n${worker.stderr}`);
|
|
191
239
|
const metrics = buildRunMetrics({ firstPassSuccess, repairCount: attempts, humanInterventions: await countHumanInterventions(controlRoot, effectiveConfig, effectiveContract.task.id, startedAt), durationMs: Date.now() - startedMs, usage: worker.metrics });
|
|
@@ -197,32 +245,59 @@ export async function runTask(root, config, contract, options) {
|
|
|
197
245
|
await recordEvent(controlRoot, effectiveConfig, "harness.run.finish", { taskId: effectiveContract.task.id, status: result.status, attempts, mode: effectiveContract.mode ?? "spec", workspaceRoot: workspaceRoot === controlRoot ? undefined : workspaceRoot, agent: selection?.logicalAgent, runtime: selection?.runtimeName, model: selection?.modelId, profile: selection?.profile, waves: result.planning?.waves, controllerSha256: result.controlPlane?.sha256, controllerDrifted: result.controlPlane?.drifted, evidenceComplete: result.evidence?.complete, evidenceSha256: result.evidence?.sha256, reviewStatus: reviewSummary?.status, reviewFinalState: reviewSummary?.finalState, humanRequired: reviewSummary?.humanRequired ?? deliverySummary?.humanRequired, debtScore: reviewSummary?.debtScore, deliveryStatus: deliverySummary?.status, pullRequest: deliverySummary?.pullRequest, durationMs: metrics.durationMs, totalTokens: metrics.usage.totalTokens ?? 0, costUsd: metrics.usage.costUsd ?? 0 });
|
|
198
246
|
return result;
|
|
199
247
|
}
|
|
200
|
-
async function resolveTopology(root, config, contract, profileOverride) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
248
|
+
async function resolveTopology(root, config, contract, profileOverride) {
|
|
249
|
+
if (!config.agents)
|
|
250
|
+
return {};
|
|
251
|
+
const explicitProfile = profileOverride ?? contract.routing?.profile;
|
|
252
|
+
const profile = explicitProfile ?? config.agents.activeProfile;
|
|
253
|
+
try {
|
|
254
|
+
const audit = await auditAgentTopology(root, config, profile, { checkGenerated: !explicitProfile });
|
|
255
|
+
if (!audit.ok)
|
|
256
|
+
throw new Error(`Agent topology audit failed:\n${audit.checks.filter((check) => check.status === "FAIL").map((check) => `- ${check.id}: ${check.message}`).join("\n")}`);
|
|
257
|
+
const topology = await loadResolvedAgentTopology(root, config, profile);
|
|
258
|
+
const { route, selection } = selectExecutionForTask(topology, contract);
|
|
259
|
+
const transport = selection.transport === "inherit" ? (config.orchestration?.provider ?? "none") : selection.transport;
|
|
260
|
+
const issues = validateExecutionCapabilities(selection, transport);
|
|
261
|
+
if (issues.length)
|
|
262
|
+
throw new Error(`Selected agent ${selection.logicalAgent} is not executable: ${issues.join("; ")}`);
|
|
263
|
+
await recordEvent(root, config, "harness.agent.route", { taskId: contract.task.id, profile, agent: selection.logicalAgent, runtime: selection.runtimeName, model: selection.modelId, nativeAgent: selection.nativeAgent, transport, ruleIds: route.ruleIds, reviewers: route.reviewers });
|
|
264
|
+
return { topology, route, selection };
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
if (config.agents.required)
|
|
268
|
+
throw error;
|
|
269
|
+
await recordEvent(root, config, "harness.agent.topology-fallback", { taskId: contract.task.id, error: String(error) });
|
|
270
|
+
return {};
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
function withWorkerExecutionCheck(report, worker) {
|
|
274
|
+
const checks = report.checks.filter((check) => check.id !== "agent.execution");
|
|
275
|
+
checks.unshift({ id: "agent.execution", category: "agent-runtime", status: worker.exitCode === 0 ? "PASS" : "FAIL", message: worker.exitCode === 0 ? `Agent ${worker.logicalAgent ?? worker.provider} completed successfully.` : `Agent runtime exited with code ${worker.exitCode}.`, details: worker.exitCode === 0 ? undefined : { stderr: worker.stderr.slice(-4000), stdout: worker.stdout.slice(-4000), logicalAgent: worker.logicalAgent, runtime: worker.runtime, model: worker.model } });
|
|
276
|
+
return { ...report, checks, status: checks.some((check) => check.status === "FAIL") ? "FAIL" : "PASS" };
|
|
277
|
+
}
|
|
278
|
+
function mergeChecks(report, extra) {
|
|
279
|
+
const byId = new Map(report.checks.map((check) => [check.id, check]));
|
|
280
|
+
for (const check of extra)
|
|
281
|
+
byId.set(check.id, check);
|
|
282
|
+
const checks = [...byId.values()];
|
|
283
|
+
return { ...report, checks, status: checks.some((check) => check.status === "FAIL") ? "FAIL" : "PASS" };
|
|
284
|
+
}
|
|
285
|
+
async function verifyAfterWorker(workspaceRoot, controlRoot, config, contract, controller) {
|
|
286
|
+
await refreshGraphIfConfigured(workspaceRoot, config);
|
|
287
|
+
const afterSnapshot = await snapshotGraph(workspaceRoot, config, contract.task.id, "after");
|
|
288
|
+
if (!afterSnapshot && config.codeIntelligence?.required)
|
|
289
|
+
throw new Error("Code intelligence is required but the Graphify after snapshot could not be created.");
|
|
290
|
+
return verifyTask(workspaceRoot, config, contract, { stateRoot: controlRoot, policyRoot: controller?.materializedRoot ?? controlRoot });
|
|
291
|
+
}
|
|
292
|
+
async function refreshGraphIfConfigured(root, config) {
|
|
293
|
+
const command = config.codeIntelligence?.refreshCommand;
|
|
294
|
+
if (!command)
|
|
295
|
+
return;
|
|
296
|
+
const result = await runProcess(command, { cwd: root, timeoutMs: 300_000 });
|
|
297
|
+
if (result.exitCode !== 0 && config.codeIntelligence?.required)
|
|
298
|
+
throw new Error(`Code intelligence refresh failed: ${result.stderr || result.stdout}`);
|
|
299
|
+
}
|
|
300
|
+
async function runStage(stateRoot, operationId, name, status, options = {}) {
|
|
301
|
+
await setOperationStage(stateRoot, operationId, name, status, options);
|
|
213
302
|
}
|
|
214
|
-
catch (error) {
|
|
215
|
-
if (config.agents.required)
|
|
216
|
-
throw error;
|
|
217
|
-
await recordEvent(root, config, "harness.agent.topology-fallback", { taskId: contract.task.id, error: String(error) });
|
|
218
|
-
return {};
|
|
219
|
-
} }
|
|
220
|
-
function withWorkerExecutionCheck(report, worker) { const checks = report.checks.filter((check) => check.id !== "agent.execution"); checks.unshift({ id: "agent.execution", category: "agent-runtime", status: worker.exitCode === 0 ? "PASS" : "FAIL", message: worker.exitCode === 0 ? `Agent ${worker.logicalAgent ?? worker.provider} completed successfully.` : `Agent runtime exited with code ${worker.exitCode}.`, details: worker.exitCode === 0 ? undefined : { stderr: worker.stderr.slice(-4000), stdout: worker.stdout.slice(-4000), logicalAgent: worker.logicalAgent, runtime: worker.runtime, model: worker.model } }); return { ...report, checks, status: checks.some((check) => check.status === "FAIL") ? "FAIL" : "PASS" }; }
|
|
221
|
-
function mergeChecks(report, extra) { const byId = new Map(report.checks.map((check) => [check.id, check])); for (const check of extra)
|
|
222
|
-
byId.set(check.id, check); const checks = [...byId.values()]; return { ...report, checks, status: checks.some((check) => check.status === "FAIL") ? "FAIL" : "PASS" }; }
|
|
223
|
-
async function verifyAfterWorker(workspaceRoot, controlRoot, config, contract, controller) { await refreshGraphIfConfigured(workspaceRoot, config); const afterSnapshot = await snapshotGraph(workspaceRoot, config, contract.task.id, "after"); if (!afterSnapshot && config.codeIntelligence?.required)
|
|
224
|
-
throw new Error("Code intelligence is required but the Graphify after snapshot could not be created."); return verifyTask(workspaceRoot, config, contract, { stateRoot: controlRoot, policyRoot: controller?.materializedRoot ?? controlRoot }); }
|
|
225
|
-
async function refreshGraphIfConfigured(root, config) { const command = config.codeIntelligence?.refreshCommand; if (!command)
|
|
226
|
-
return; const result = await runProcess(command, { cwd: root, timeoutMs: 300_000 }); if (result.exitCode !== 0 && config.codeIntelligence?.required)
|
|
227
|
-
throw new Error(`Code intelligence refresh failed: ${result.stderr || result.stdout}`); }
|
|
228
303
|
//# sourceMappingURL=run.js.map
|