@revisium/orchestrator 0.1.0-alpha.9 → 0.1.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 +143 -157
- package/control-plane/default-playbook/catalog/pipelines.json +217 -8
- package/control-plane/default-playbook/package.json +1 -1
- package/control-plane/default-playbook/prompts/developer.md +1 -0
- package/control-plane/default-playbook/prompts/triager.md +3 -0
- package/dist/api/graphql-api/graphql-ws/subscription-mappers.js +3 -0
- package/dist/api/graphql-api/graphql-ws/subscription-mappers.js.map +1 -1
- package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js +6 -0
- package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js.map +1 -1
- package/dist/api/graphql-api/pr/model/pr-readiness.model.js +30 -0
- package/dist/api/graphql-api/pr/model/pr-readiness.model.js.map +1 -1
- package/dist/api/graphql-api/runs/inputs/create-run.input.js +6 -0
- package/dist/api/graphql-api/runs/inputs/create-run.input.js.map +1 -1
- package/dist/api/graphql-api/runs/model/run.model.js +6 -0
- package/dist/api/graphql-api/runs/model/run.model.js.map +1 -1
- package/dist/api/graphql-api/share/model/issue-ref.model.js +53 -0
- package/dist/api/graphql-api/share/model/issue-ref.model.js.map +1 -0
- package/dist/control-plane/bootstrap.js +14 -1
- package/dist/control-plane/bootstrap.js.map +1 -1
- package/dist/control-plane/client-transport.js +1 -1
- package/dist/control-plane/client-transport.js.map +1 -1
- package/dist/control-plane/default-playbook-policy.js +593 -0
- package/dist/control-plane/default-playbook-policy.js.map +1 -0
- package/dist/control-plane/seed-default-playbook.js +77 -8
- package/dist/control-plane/seed-default-playbook.js.map +1 -1
- package/dist/e2e/kit/agents.js +15 -21
- package/dist/e2e/kit/agents.js.map +1 -1
- package/dist/e2e/kit/assertions.js +12 -8
- package/dist/e2e/kit/assertions.js.map +1 -1
- package/dist/e2e/kit/fake-integrator.js +11 -2
- package/dist/e2e/kit/fake-integrator.js.map +1 -1
- package/dist/e2e/kit/git-target-repo.js +1 -1
- package/dist/engine/dbos.service.js +3 -0
- package/dist/engine/dbos.service.js.map +1 -1
- package/dist/features/pr/queries/impl/get-pr-readiness.query.js.map +1 -1
- package/dist/features/runs/commands/impl/create-run.command.js.map +1 -1
- package/dist/features/runs/queries/handlers/runs-query.handlers.js +1 -0
- package/dist/features/runs/queries/handlers/runs-query.handlers.js.map +1 -1
- package/dist/mcp/mcp-capabilities.js +14 -1
- package/dist/mcp/mcp-capabilities.js.map +1 -1
- package/dist/mcp/mcp-facade.service.js +306 -11
- package/dist/mcp/mcp-facade.service.js.map +1 -1
- package/dist/mcp/mcp-tools.js +41 -14
- package/dist/mcp/mcp-tools.js.map +1 -1
- package/dist/observability/activity-signal.js +107 -0
- package/dist/observability/activity-signal.js.map +1 -0
- package/dist/observability/index.js +1 -0
- package/dist/observability/index.js.map +1 -1
- package/dist/pipeline/data-driven-task.workflow.js +482 -40
- package/dist/pipeline/data-driven-task.workflow.js.map +1 -1
- package/dist/pipeline/pipeline.service.js +195 -101
- package/dist/pipeline/pipeline.service.js.map +1 -1
- package/dist/pipeline/route-contract.js +4 -3
- package/dist/pipeline/route-contract.js.map +1 -1
- package/dist/pipeline-core/kit/fixtures.js +72 -21
- package/dist/pipeline-core/kit/fixtures.js.map +1 -1
- package/dist/playbook/import-mapper.js +8 -1
- package/dist/playbook/import-mapper.js.map +1 -1
- package/dist/poller/pr-readiness-core.js +299 -28
- package/dist/poller/pr-readiness-core.js.map +1 -1
- package/dist/revisium/playbooks.service.js +17 -2
- package/dist/revisium/playbooks.service.js.map +1 -1
- package/dist/revisium/run.service.js +1 -0
- package/dist/revisium/run.service.js.map +1 -1
- package/dist/run/append-event.js +8 -5
- package/dist/run/append-event.js.map +1 -1
- package/dist/run/create-run.js +5 -1
- package/dist/run/create-run.js.map +1 -1
- package/dist/run/inspect-run.js +10 -3
- package/dist/run/inspect-run.js.map +1 -1
- package/dist/run/issue-ref.js +88 -0
- package/dist/run/issue-ref.js.map +1 -0
- package/dist/runners/claude-code.service.js +2 -2
- package/dist/runners/claude-code.service.js.map +1 -1
- package/dist/runners/codex.service.js +2 -2
- package/dist/runners/codex.service.js.map +1 -1
- package/dist/runners/integrator-branch-naming.js +13 -8
- package/dist/runners/integrator-branch-naming.js.map +1 -1
- package/dist/runners/integrator.js +254 -89
- package/dist/runners/integrator.js.map +1 -1
- package/dist/runners/worktree.service.js +2 -2
- package/dist/runners/worktree.service.js.map +1 -1
- package/dist/task-control-plane/pr-readiness.service.js +15 -13
- package/dist/task-control-plane/pr-readiness.service.js.map +1 -1
- package/dist/task-control-plane/run-watch.service.js +234 -3
- package/dist/task-control-plane/run-watch.service.js.map +1 -1
- package/dist/task-control-plane/task-control-plane-api.service.js +272 -25
- package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
- package/dist/worker/artifact-store.js +21 -3
- package/dist/worker/artifact-store.js.map +1 -1
- package/dist/worker/build-context.js +19 -3
- package/dist/worker/build-context.js.map +1 -1
- package/dist/worker/claude-code-runner.js +76 -15
- package/dist/worker/claude-code-runner.js.map +1 -1
- package/dist/worker/codex-runner.js +40 -13
- package/dist/worker/codex-runner.js.map +1 -1
- package/dist/worker/process-executor.js +149 -20
- package/dist/worker/process-executor.js.map +1 -1
- package/dist/worker/runner-common.js +29 -0
- package/dist/worker/runner-common.js.map +1 -1
- package/dist/worker/runner.js +16 -1
- package/dist/worker/runner.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,49 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import { createRunnerActivityTracker, } from '../observability/activity-signal.js';
|
|
3
|
+
export const RUNNER_IDLE_TIMEOUT_KIND = 'runner-idle-timeout';
|
|
4
|
+
export const RUNNER_WALL_CLOCK_LIMIT_KIND = 'runner-wall-clock-limit';
|
|
5
|
+
export const DEFAULT_RUNNER_IDLE_TIMEOUT_MS = 600_000;
|
|
6
|
+
export const DEFAULT_RUNNER_WALL_CLOCK_LIMIT_MS = 3_600_000;
|
|
7
|
+
function readPositiveIntEnv(env, key) {
|
|
8
|
+
const raw = env[key];
|
|
9
|
+
if (raw === undefined)
|
|
10
|
+
return undefined;
|
|
11
|
+
if (!/^\d+$/.test(raw)) {
|
|
12
|
+
throw new Error(`${key} must be a positive integer number of milliseconds`);
|
|
13
|
+
}
|
|
14
|
+
const parsed = Number(raw);
|
|
15
|
+
if (!Number.isSafeInteger(parsed) || parsed <= 0) {
|
|
16
|
+
throw new Error(`${key} must be a positive integer number of milliseconds`);
|
|
17
|
+
}
|
|
18
|
+
return parsed;
|
|
19
|
+
}
|
|
20
|
+
function positiveInt(value, label) {
|
|
21
|
+
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
22
|
+
throw new Error(`${label} must be a positive integer number of milliseconds`);
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
export function resolveRunnerTimeoutPolicy(opts = {}) {
|
|
27
|
+
return resolveEffectiveRunnerTimeoutPolicy(opts);
|
|
28
|
+
}
|
|
29
|
+
export function resolveEffectiveRunnerTimeoutPolicy(opts = {}) {
|
|
30
|
+
const env = opts.env ?? process.env;
|
|
31
|
+
const roleWallClockLimitMs = typeof opts.roleTimeoutMs === 'number' && opts.roleTimeoutMs > 0
|
|
32
|
+
? opts.roleTimeoutMs
|
|
33
|
+
: undefined;
|
|
34
|
+
return {
|
|
35
|
+
idleTimeoutMs: positiveInt(readPositiveIntEnv(env, 'REVO_RUNNER_IDLE_TIMEOUT_MS')
|
|
36
|
+
?? opts.idleTimeoutMs
|
|
37
|
+
?? DEFAULT_RUNNER_IDLE_TIMEOUT_MS, 'idleTimeoutMs'),
|
|
38
|
+
wallClockLimitMs: positiveInt(readPositiveIntEnv(env, 'REVO_RUNNER_WALL_CLOCK_LIMIT_MS')
|
|
39
|
+
?? roleWallClockLimitMs
|
|
40
|
+
?? opts.wallClockLimitMs
|
|
41
|
+
?? DEFAULT_RUNNER_WALL_CLOCK_LIMIT_MS, 'wallClockLimitMs'),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// Kill the whole process group, not just the leader: external runners can spawn subprocesses, and
|
|
45
|
+
// only a negative-PID signal reaches the group. `detached: true` below makes the child its own group
|
|
46
|
+
// leader. Fall back to a direct kill if the group send throws.
|
|
5
47
|
function killGroup(child) {
|
|
6
48
|
const pid = child.pid;
|
|
7
49
|
if (pid === undefined) {
|
|
@@ -17,10 +59,24 @@ function killGroup(child) {
|
|
|
17
59
|
}
|
|
18
60
|
// Real implementation, used only in production wiring (never in unit tests).
|
|
19
61
|
export const spawnExecutor = (req) => new Promise((resolve, reject) => {
|
|
62
|
+
const policy = resolveRunnerTimeoutPolicy({
|
|
63
|
+
idleTimeoutMs: req.idleTimeoutMs,
|
|
64
|
+
wallClockLimitMs: req.timeoutMs,
|
|
65
|
+
});
|
|
66
|
+
const startedAt = Date.now();
|
|
67
|
+
const timers = {};
|
|
68
|
+
let latestActivity;
|
|
69
|
+
const activity = createRunnerActivityTracker({
|
|
70
|
+
startedAt,
|
|
71
|
+
onChange: (snapshot) => {
|
|
72
|
+
latestActivity = snapshot;
|
|
73
|
+
scheduleIdleTimer();
|
|
74
|
+
},
|
|
75
|
+
});
|
|
20
76
|
const child = spawn(req.command, req.args, {
|
|
21
77
|
cwd: req.cwd,
|
|
22
78
|
env: req.env ? { ...process.env, ...req.env } : process.env,
|
|
23
|
-
// Own process group → a negative-PID SIGKILL reaps
|
|
79
|
+
// Own process group → a negative-PID SIGKILL reaps the runner and its children on timeout.
|
|
24
80
|
// Do NOT unref(): the parent must stay attached to collect stdout/stderr and observe exit.
|
|
25
81
|
detached: true,
|
|
26
82
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
@@ -28,9 +84,81 @@ export const spawnExecutor = (req) => new Promise((resolve, reject) => {
|
|
|
28
84
|
let stdout = '';
|
|
29
85
|
let stderr = '';
|
|
30
86
|
let timedOut = false;
|
|
87
|
+
let timeoutKind;
|
|
88
|
+
let timeoutEvidence;
|
|
31
89
|
let settled = false;
|
|
32
|
-
|
|
33
|
-
|
|
90
|
+
function clearTimers() {
|
|
91
|
+
if (timers.idle)
|
|
92
|
+
clearTimeout(timers.idle);
|
|
93
|
+
if (timers.wallClock)
|
|
94
|
+
clearTimeout(timers.wallClock);
|
|
95
|
+
}
|
|
96
|
+
function rejectFromSetup(err) {
|
|
97
|
+
if (settled)
|
|
98
|
+
return;
|
|
99
|
+
settled = true;
|
|
100
|
+
clearTimers();
|
|
101
|
+
killGroup(child);
|
|
102
|
+
reject(err);
|
|
103
|
+
}
|
|
104
|
+
// Spawn-level errors (binary missing) reject — the runner converts that to a lesson.
|
|
105
|
+
child.on('error', (err) => {
|
|
106
|
+
if (settled)
|
|
107
|
+
return;
|
|
108
|
+
settled = true;
|
|
109
|
+
clearTimers();
|
|
110
|
+
reject(err);
|
|
111
|
+
});
|
|
112
|
+
try {
|
|
113
|
+
if (child.pid !== undefined)
|
|
114
|
+
req.onSpawn?.(child.pid);
|
|
115
|
+
req.onActivityTracker?.(activity);
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
rejectFromSetup(err);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
function buildTimeoutEvidence(snapshot) {
|
|
122
|
+
const now = Date.now();
|
|
123
|
+
return {
|
|
124
|
+
idleTimeoutMs: policy.idleTimeoutMs,
|
|
125
|
+
wallClockLimitMs: policy.wallClockLimitMs,
|
|
126
|
+
elapsedMs: Math.max(0, now - startedAt),
|
|
127
|
+
idleMs: Math.max(0, now - snapshot.lastActivityAt),
|
|
128
|
+
lastActivityAt: new Date(snapshot.lastActivityAt).toISOString(),
|
|
129
|
+
inFlightOperationCount: snapshot.inFlightOperationCount,
|
|
130
|
+
stdoutBytes: snapshot.stdoutBytes,
|
|
131
|
+
stderrBytes: snapshot.stderrBytes,
|
|
132
|
+
eventCount: snapshot.eventCount,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function killFor(kind) {
|
|
136
|
+
if (settled || timedOut)
|
|
137
|
+
return;
|
|
138
|
+
timedOut = true;
|
|
139
|
+
timeoutKind = kind;
|
|
140
|
+
timeoutEvidence = buildTimeoutEvidence(activity.snapshot());
|
|
141
|
+
clearTimers();
|
|
142
|
+
killGroup(child);
|
|
143
|
+
}
|
|
144
|
+
function scheduleIdleTimer() {
|
|
145
|
+
if (settled || timedOut)
|
|
146
|
+
return;
|
|
147
|
+
if (timers.idle)
|
|
148
|
+
clearTimeout(timers.idle);
|
|
149
|
+
const snapshot = latestActivity ?? activity.snapshot();
|
|
150
|
+
if (snapshot.inFlightOperationCount > 0) {
|
|
151
|
+
timers.idle = setTimeout(scheduleIdleTimer, policy.idleTimeoutMs);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const idleMs = Math.max(0, Date.now() - snapshot.lastActivityAt);
|
|
155
|
+
const remainingMs = policy.idleTimeoutMs - idleMs;
|
|
156
|
+
if (remainingMs <= 0) {
|
|
157
|
+
killFor(RUNNER_IDLE_TIMEOUT_KIND);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
timers.idle = setTimeout(scheduleIdleTimer, remainingMs);
|
|
161
|
+
}
|
|
34
162
|
child.stdout?.setEncoding('utf8');
|
|
35
163
|
child.stderr?.setEncoding('utf8');
|
|
36
164
|
// Guard the sink callbacks: a throw here (e.g. a failed artifact write) would otherwise
|
|
@@ -38,6 +166,7 @@ export const spawnExecutor = (req) => new Promise((resolve, reject) => {
|
|
|
38
166
|
// in-memory capture above is unaffected, so the result envelope is still collected.
|
|
39
167
|
child.stdout?.on('data', (chunk) => {
|
|
40
168
|
stdout += chunk;
|
|
169
|
+
activity.recordOutput('stdout', Buffer.byteLength(chunk, 'utf8'));
|
|
41
170
|
try {
|
|
42
171
|
req.onStdoutChunk?.(chunk);
|
|
43
172
|
}
|
|
@@ -47,6 +176,7 @@ export const spawnExecutor = (req) => new Promise((resolve, reject) => {
|
|
|
47
176
|
});
|
|
48
177
|
child.stderr?.on('data', (chunk) => {
|
|
49
178
|
stderr += chunk;
|
|
179
|
+
activity.recordOutput('stderr', Buffer.byteLength(chunk, 'utf8'));
|
|
50
180
|
try {
|
|
51
181
|
req.onStderrChunk?.(chunk);
|
|
52
182
|
}
|
|
@@ -54,25 +184,24 @@ export const spawnExecutor = (req) => new Promise((resolve, reject) => {
|
|
|
54
184
|
console.warn(`Warning: onStderrChunk sink failed: ${String(err)}`);
|
|
55
185
|
}
|
|
56
186
|
});
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
// Spawn-level errors (binary missing) reject — the runner converts that to a lesson.
|
|
62
|
-
child.on('error', (err) => {
|
|
63
|
-
if (settled)
|
|
64
|
-
return;
|
|
65
|
-
settled = true;
|
|
66
|
-
clearTimeout(timer);
|
|
67
|
-
reject(err);
|
|
68
|
-
});
|
|
187
|
+
timers.wallClock = setTimeout(() => {
|
|
188
|
+
killFor(RUNNER_WALL_CLOCK_LIMIT_KIND);
|
|
189
|
+
}, policy.wallClockLimitMs);
|
|
190
|
+
scheduleIdleTimer();
|
|
69
191
|
// Never reject for a non-zero exit; return the result and let the runner decide how to map it.
|
|
70
192
|
child.on('close', (code) => {
|
|
71
193
|
if (settled)
|
|
72
194
|
return;
|
|
73
195
|
settled = true;
|
|
74
|
-
|
|
75
|
-
resolve({
|
|
196
|
+
clearTimers();
|
|
197
|
+
resolve({
|
|
198
|
+
code,
|
|
199
|
+
stdout,
|
|
200
|
+
stderr,
|
|
201
|
+
timedOut,
|
|
202
|
+
...(timeoutKind ? { timeoutKind } : {}),
|
|
203
|
+
...(timeoutEvidence ? { timeoutEvidence } : {}),
|
|
204
|
+
});
|
|
76
205
|
});
|
|
77
206
|
// Swallow EPIPE: the child may exit before draining stdin; the 'close' handler reports the result.
|
|
78
207
|
child.stdin?.on('error', () => { });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-executor.js","sourceRoot":"","sources":["../../src/worker/process-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"process-executor.js","sourceRoot":"","sources":["../../src/worker/process-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RunAgentError } from './runner.js';
|
|
2
2
|
import { normalizeNextSteps } from './result-envelope.js';
|
|
3
|
+
import { RUNNER_IDLE_TIMEOUT_KIND, RUNNER_WALL_CLOCK_LIMIT_KIND, } from './process-executor.js';
|
|
3
4
|
const ERROR_TAIL = 2_000;
|
|
4
5
|
const OBSERVABILITY_PREVIEW_MAX_CHARS = 1_000;
|
|
5
6
|
const OBSERVABILITY_ARRAY_MAX_ITEMS = 5;
|
|
@@ -63,6 +64,34 @@ export function withProcessArtifact(agentArtifacts, process) {
|
|
|
63
64
|
export function runnerError(message, process) {
|
|
64
65
|
return new RunAgentError(message, withProcessArtifact(undefined, process));
|
|
65
66
|
}
|
|
67
|
+
export function runnerFailure(message, process, metadata = {}) {
|
|
68
|
+
return new RunAgentError(message, withProcessArtifact(undefined, process), metadata);
|
|
69
|
+
}
|
|
70
|
+
function fallbackTimeoutEvidence(result, policy, failureKind) {
|
|
71
|
+
const fallbackElapsedMs = failureKind === RUNNER_IDLE_TIMEOUT_KIND ? policy.idleTimeoutMs : policy.wallClockLimitMs;
|
|
72
|
+
return {
|
|
73
|
+
idleTimeoutMs: policy.idleTimeoutMs,
|
|
74
|
+
wallClockLimitMs: policy.wallClockLimitMs,
|
|
75
|
+
elapsedMs: fallbackElapsedMs,
|
|
76
|
+
idleMs: fallbackElapsedMs,
|
|
77
|
+
lastActivityAt: new Date(0).toISOString(),
|
|
78
|
+
inFlightOperationCount: 0,
|
|
79
|
+
stdoutBytes: Buffer.byteLength(result.stdout, 'utf8'),
|
|
80
|
+
stderrBytes: Buffer.byteLength(result.stderr, 'utf8'),
|
|
81
|
+
eventCount: 0,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export function runnerTimeoutFailure(runnerName, result, process, policy) {
|
|
85
|
+
const failureKind = result.timeoutKind ?? RUNNER_WALL_CLOCK_LIMIT_KIND;
|
|
86
|
+
const timing = result.timeoutEvidence ?? fallbackTimeoutEvidence(result, policy, failureKind);
|
|
87
|
+
const message = `${runnerName} runner ${failureKind}: elapsed ${timing.elapsedMs}ms, ` +
|
|
88
|
+
`idle ${timing.idleMs}ms, in-flight operations ${timing.inFlightOperationCount}`;
|
|
89
|
+
return runnerFailure(message, process, {
|
|
90
|
+
failureKind,
|
|
91
|
+
retryableCandidate: true,
|
|
92
|
+
timing,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
66
95
|
export function buildUsageCosts(step, profile, usage) {
|
|
67
96
|
const inputTokens = usage.inputTokens ?? 0;
|
|
68
97
|
const outputTokens = usage.outputTokens ?? 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-common.js","sourceRoot":"","sources":["../../src/worker/runner-common.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner-common.js","sourceRoot":"","sources":["../../src/worker/runner-common.ts"],"names":[],"mappings":"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"}
|
package/dist/worker/runner.js
CHANGED
|
@@ -1,12 +1,27 @@
|
|
|
1
1
|
export class RunAgentError extends Error {
|
|
2
2
|
artifacts;
|
|
3
|
-
|
|
3
|
+
failureKind;
|
|
4
|
+
retryableCandidate;
|
|
5
|
+
timing;
|
|
6
|
+
constructor(message, artifacts, metadata = {}) {
|
|
4
7
|
super(message);
|
|
5
8
|
this.name = 'RunAgentError';
|
|
6
9
|
this.artifacts = artifacts;
|
|
10
|
+
this.failureKind = metadata.failureKind;
|
|
11
|
+
this.retryableCandidate = metadata.retryableCandidate;
|
|
12
|
+
this.timing = metadata.timing;
|
|
7
13
|
}
|
|
8
14
|
}
|
|
9
15
|
export function artifactsFromRunAgentError(err) {
|
|
10
16
|
return err instanceof RunAgentError ? err.artifacts : undefined;
|
|
11
17
|
}
|
|
18
|
+
export function failureMetadataFromRunAgentError(err) {
|
|
19
|
+
if (!(err instanceof RunAgentError))
|
|
20
|
+
return {};
|
|
21
|
+
return {
|
|
22
|
+
...(err.failureKind ? { failureKind: err.failureKind } : {}),
|
|
23
|
+
...(err.retryableCandidate === undefined ? {} : { retryableCandidate: err.retryableCandidate }),
|
|
24
|
+
...(err.timing ? { timing: err.timing } : {}),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
12
27
|
//# sourceMappingURL=runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/worker/runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/worker/runner.ts"],"names":[],"mappings":"AA4BA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,SAAS,CAAW;IACpB,WAAW,CAA4B;IACvC,kBAAkB,CAAW;IAC7B,MAAM,CAAyB;IAExC,YACE,OAAe,EACf,SAAmB,EACnB,WAII,EAAE;QAEN,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAChC,CAAC;CACF;AAED,MAAM,UAAU,0BAA0B,CAAC,GAAY;IACrD,OAAO,GAAG,YAAY,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,GAAY;IAK3D,IAAI,CAAC,CAAC,GAAG,YAAY,aAAa,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/C,OAAO;QACL,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC/F,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC"}
|