agentic-orchestrator 0.1.8 → 0.1.9
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/apps/control-plane/src/cli/dashboard-command-handler.ts +42 -5
- package/apps/control-plane/src/cli/retry-command-handler.ts +0 -1
- package/apps/control-plane/src/core/tool-caller.ts +18 -3
- package/apps/control-plane/src/supervisor/build-wave-executor.ts +21 -4
- package/apps/control-plane/src/supervisor/qa-wave-executor.ts +21 -4
- package/apps/control-plane/src/supervisor/runtime.ts +9 -4
- package/apps/control-plane/src/supervisor/types.ts +1 -0
- package/apps/control-plane/test/cli-helpers.spec.ts +4 -0
- package/apps/control-plane/test/dashboard-command.spec.ts +36 -0
- package/apps/control-plane/test/supervisor-collaborators.spec.ts +86 -0
- package/apps/control-plane/test/supervisor.unit.spec.ts +1 -1
- package/config/agentic/orchestrator/agents.yaml +0 -1
- package/dist/apps/control-plane/cli/dashboard-command-handler.js +32 -5
- package/dist/apps/control-plane/cli/dashboard-command-handler.js.map +1 -1
- package/dist/apps/control-plane/cli/retry-command-handler.js +0 -1
- package/dist/apps/control-plane/cli/retry-command-handler.js.map +1 -1
- package/dist/apps/control-plane/core/tool-caller.d.ts +11 -1
- package/dist/apps/control-plane/supervisor/build-wave-executor.js +20 -4
- package/dist/apps/control-plane/supervisor/build-wave-executor.js.map +1 -1
- package/dist/apps/control-plane/supervisor/qa-wave-executor.js +20 -4
- package/dist/apps/control-plane/supervisor/qa-wave-executor.js.map +1 -1
- package/dist/apps/control-plane/supervisor/runtime.d.ts +2 -2
- package/dist/apps/control-plane/supervisor/runtime.js.map +1 -1
- package/dist/apps/control-plane/supervisor/types.d.ts +1 -1
- package/dist/apps/control-plane/supervisor/types.js.map +1 -1
- package/package.json +1 -1
- package/spec-files/progress.md +19 -0
|
@@ -1,10 +1,46 @@
|
|
|
1
1
|
import { execFile, spawn } from 'node:child_process';
|
|
2
|
+
import fs from 'node:fs/promises';
|
|
2
3
|
import path from 'node:path';
|
|
3
4
|
import { fileURLToPath } from 'node:url';
|
|
4
5
|
import { promisify } from 'node:util';
|
|
5
6
|
|
|
6
7
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
7
8
|
const execFileAsync = promisify(execFile);
|
|
9
|
+
const DASHBOARD_WORKSPACE = '@aop/web-dashboard';
|
|
10
|
+
|
|
11
|
+
async function hasDashboardCli(repoRoot: string): Promise<boolean> {
|
|
12
|
+
const candidates = [
|
|
13
|
+
path.join(repoRoot, 'node_modules', '.bin', 'next'),
|
|
14
|
+
path.join(repoRoot, 'packages', 'web-dashboard', 'node_modules', '.bin', 'next'),
|
|
15
|
+
];
|
|
16
|
+
for (const candidate of candidates) {
|
|
17
|
+
try {
|
|
18
|
+
await fs.access(candidate);
|
|
19
|
+
return true;
|
|
20
|
+
} catch {
|
|
21
|
+
// continue
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async function ensureDashboardDependencies(
|
|
28
|
+
repoRoot: string,
|
|
29
|
+
env: NodeJS.ProcessEnv,
|
|
30
|
+
): Promise<void> {
|
|
31
|
+
if (await hasDashboardCli(repoRoot)) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
await execFileAsync(
|
|
36
|
+
'npm',
|
|
37
|
+
['install', '--workspace', DASHBOARD_WORKSPACE, '--no-audit', '--no-fund'],
|
|
38
|
+
{
|
|
39
|
+
cwd: repoRoot,
|
|
40
|
+
env,
|
|
41
|
+
},
|
|
42
|
+
);
|
|
43
|
+
}
|
|
8
44
|
|
|
9
45
|
export class DashboardCommandHandler {
|
|
10
46
|
async execute(options: {
|
|
@@ -14,7 +50,6 @@ export class DashboardCommandHandler {
|
|
|
14
50
|
}): Promise<Record<string, unknown>> {
|
|
15
51
|
const port = options.port ?? 3000;
|
|
16
52
|
const repoRoot = path.resolve(__dirname, '../../../../');
|
|
17
|
-
const dashboardWorkspace = '@aop/web-dashboard';
|
|
18
53
|
const devMode = options.dev === true;
|
|
19
54
|
const foreground = options.foreground === true || devMode;
|
|
20
55
|
|
|
@@ -25,8 +60,10 @@ export class DashboardCommandHandler {
|
|
|
25
60
|
AOP_ROOT: process.cwd(),
|
|
26
61
|
};
|
|
27
62
|
|
|
63
|
+
await ensureDashboardDependencies(repoRoot, env);
|
|
64
|
+
|
|
28
65
|
if (devMode) {
|
|
29
|
-
const child = spawn('npm', ['run', '--workspace',
|
|
66
|
+
const child = spawn('npm', ['run', '--workspace', DASHBOARD_WORKSPACE, 'dev'], {
|
|
30
67
|
cwd: repoRoot,
|
|
31
68
|
env,
|
|
32
69
|
stdio: 'inherit',
|
|
@@ -38,13 +75,13 @@ export class DashboardCommandHandler {
|
|
|
38
75
|
return { ok: true, data: { message: 'Dashboard stopped', port, mode: 'dev' } };
|
|
39
76
|
}
|
|
40
77
|
|
|
41
|
-
await execFileAsync('npm', ['run', '--workspace',
|
|
78
|
+
await execFileAsync('npm', ['run', '--workspace', DASHBOARD_WORKSPACE, 'build'], {
|
|
42
79
|
cwd: repoRoot,
|
|
43
80
|
env,
|
|
44
81
|
});
|
|
45
82
|
|
|
46
83
|
if (foreground) {
|
|
47
|
-
const child = spawn('npm', ['run', '--workspace',
|
|
84
|
+
const child = spawn('npm', ['run', '--workspace', DASHBOARD_WORKSPACE, 'start'], {
|
|
48
85
|
cwd: repoRoot,
|
|
49
86
|
env,
|
|
50
87
|
stdio: 'inherit',
|
|
@@ -56,7 +93,7 @@ export class DashboardCommandHandler {
|
|
|
56
93
|
return { ok: true, data: { message: 'Dashboard stopped', port, mode: 'production' } };
|
|
57
94
|
}
|
|
58
95
|
|
|
59
|
-
const child = spawn('npm', ['run', '--workspace',
|
|
96
|
+
const child = spawn('npm', ['run', '--workspace', DASHBOARD_WORKSPACE, 'start'], {
|
|
60
97
|
cwd: repoRoot,
|
|
61
98
|
env,
|
|
62
99
|
detached: true,
|
|
@@ -1,10 +1,25 @@
|
|
|
1
1
|
export type RuntimeRole = 'orchestrator' | 'planner' | 'builder' | 'qa';
|
|
2
2
|
|
|
3
|
+
export interface GatesRunToolArgs {
|
|
4
|
+
feature_id: string;
|
|
5
|
+
mode: string;
|
|
6
|
+
profile?: string;
|
|
7
|
+
operation_id?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface ToolArgsByName {
|
|
11
|
+
'gates.run': GatesRunToolArgs;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type ToolArgs<TToolName extends string> = TToolName extends keyof ToolArgsByName
|
|
15
|
+
? ToolArgsByName[TToolName]
|
|
16
|
+
: Record<string, unknown>;
|
|
17
|
+
|
|
3
18
|
export interface ToolCaller {
|
|
4
|
-
callTool<TData = Record<string, unknown
|
|
19
|
+
callTool<TData = Record<string, unknown>, TToolName extends string = string>(
|
|
5
20
|
role: RuntimeRole,
|
|
6
|
-
toolName:
|
|
7
|
-
args:
|
|
21
|
+
toolName: TToolName,
|
|
22
|
+
args: ToolArgs<TToolName>,
|
|
8
23
|
): Promise<{ ok: true; data: TData }>;
|
|
9
24
|
}
|
|
10
25
|
|
|
@@ -17,6 +17,17 @@ interface BuildWaveExecutorDependencies {
|
|
|
17
17
|
reactionsService?: ReactionsService;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
+
function isRetryableToolError(error: unknown): boolean {
|
|
21
|
+
if (!error || typeof error !== 'object') {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
const details = (error as { details?: unknown }).details;
|
|
25
|
+
if (!details || typeof details !== 'object') {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
return (details as { retryable?: unknown }).retryable === true;
|
|
29
|
+
}
|
|
30
|
+
|
|
20
31
|
export class BuildWaveExecutor {
|
|
21
32
|
private readonly toolCaller: SupervisorToolCaller;
|
|
22
33
|
private readonly workerDecisionRunner: WorkerDecisionRunner;
|
|
@@ -72,6 +83,7 @@ export class BuildWaveExecutor {
|
|
|
72
83
|
let gateExitCode: number;
|
|
73
84
|
let gateEvidencePath = '';
|
|
74
85
|
let gateLogs = '';
|
|
86
|
+
let gateRetryEligible: boolean;
|
|
75
87
|
const failureHistory: GateRepairContext['failureHistory'] = [];
|
|
76
88
|
|
|
77
89
|
try {
|
|
@@ -80,18 +92,19 @@ export class BuildWaveExecutor {
|
|
|
80
92
|
TOOLS.GATES_RUN,
|
|
81
93
|
{
|
|
82
94
|
feature_id: featureId,
|
|
83
|
-
profile: null,
|
|
84
95
|
mode: 'fast',
|
|
85
96
|
},
|
|
86
97
|
);
|
|
87
98
|
gateOverall = gateResult.data.overall ?? GATE_RESULT.PASS;
|
|
88
99
|
gateExitCode = gateOverall === GATE_RESULT.FAIL ? 1 : 0;
|
|
89
100
|
gateEvidencePath = gateResult.data.evidence_path ?? '';
|
|
101
|
+
gateRetryEligible = gateOverall === GATE_RESULT.FAIL;
|
|
90
102
|
} catch (error) {
|
|
91
103
|
gateOverall = GATE_RESULT.FAIL;
|
|
92
104
|
gateExitCode = 1;
|
|
93
105
|
const typed = error as { message?: string };
|
|
94
106
|
gateLogs = typed.message ?? '';
|
|
107
|
+
gateRetryEligible = isRetryableToolError(error);
|
|
95
108
|
}
|
|
96
109
|
|
|
97
110
|
if (gateOverall === GATE_RESULT.FAIL) {
|
|
@@ -106,13 +119,13 @@ export class BuildWaveExecutor {
|
|
|
106
119
|
});
|
|
107
120
|
}
|
|
108
121
|
|
|
109
|
-
if (this.reactionsService && gateOverall === GATE_RESULT.FAIL) {
|
|
122
|
+
if (this.reactionsService && gateOverall === GATE_RESULT.FAIL && gateRetryEligible) {
|
|
110
123
|
const context = await this.toolCaller.callTool('builder', TOOLS.FEATURE_GET_CONTEXT, {
|
|
111
124
|
feature_id: featureId,
|
|
112
125
|
});
|
|
113
126
|
let retryCount = initialRetryCount;
|
|
114
127
|
const retryDelayMs = this.reactionsService.retryDelayMs();
|
|
115
|
-
while (this.reactionsService.shouldRetry(featureId, retryCount)) {
|
|
128
|
+
while (gateRetryEligible && this.reactionsService.shouldRetry(featureId, retryCount)) {
|
|
116
129
|
if (typeof this.reactionsService.waitBeforeRetry === 'function') {
|
|
117
130
|
await this.reactionsService.waitBeforeRetry();
|
|
118
131
|
}
|
|
@@ -140,7 +153,6 @@ export class BuildWaveExecutor {
|
|
|
140
153
|
TOOLS.GATES_RUN,
|
|
141
154
|
{
|
|
142
155
|
feature_id: featureId,
|
|
143
|
-
profile: null,
|
|
144
156
|
mode: 'fast',
|
|
145
157
|
},
|
|
146
158
|
);
|
|
@@ -148,11 +160,13 @@ export class BuildWaveExecutor {
|
|
|
148
160
|
gateExitCode = gateOverall === GATE_RESULT.FAIL ? 1 : 0;
|
|
149
161
|
gateEvidencePath = retryResult.data.evidence_path ?? gateEvidencePath;
|
|
150
162
|
gateLogs = '';
|
|
163
|
+
gateRetryEligible = gateOverall === GATE_RESULT.FAIL;
|
|
151
164
|
} catch (error) {
|
|
152
165
|
gateOverall = GATE_RESULT.FAIL;
|
|
153
166
|
gateExitCode = 1;
|
|
154
167
|
const typed = error as { message?: string };
|
|
155
168
|
gateLogs = typed.message ?? '';
|
|
169
|
+
gateRetryEligible = isRetryableToolError(error);
|
|
156
170
|
}
|
|
157
171
|
|
|
158
172
|
retryCount += 1;
|
|
@@ -173,6 +187,9 @@ export class BuildWaveExecutor {
|
|
|
173
187
|
if (gateOverall === GATE_RESULT.PASS) {
|
|
174
188
|
break;
|
|
175
189
|
}
|
|
190
|
+
if (!gateRetryEligible) {
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
176
193
|
}
|
|
177
194
|
|
|
178
195
|
if (gateOverall === GATE_RESULT.FAIL && this.reactionsService.shouldEscalate(retryCount)) {
|
|
@@ -31,6 +31,17 @@ interface QaWaveExecutorDependencies {
|
|
|
31
31
|
reactionsService?: ReactionsService;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
function isRetryableToolError(error: unknown): boolean {
|
|
35
|
+
if (!error || typeof error !== 'object') {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const details = (error as { details?: unknown }).details;
|
|
39
|
+
if (!details || typeof details !== 'object') {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
return (details as { retryable?: unknown }).retryable === true;
|
|
43
|
+
}
|
|
44
|
+
|
|
34
45
|
export class QaWaveExecutor {
|
|
35
46
|
private readonly kernel: FeatureOrchestrationPort;
|
|
36
47
|
private readonly provider: WorkerProvider;
|
|
@@ -93,22 +104,24 @@ export class QaWaveExecutor {
|
|
|
93
104
|
let gateExitCode: number;
|
|
94
105
|
let gateEvidencePath = '';
|
|
95
106
|
let gateLogs = '';
|
|
107
|
+
let gateRetryEligible: boolean;
|
|
96
108
|
const failureHistory: GateRepairContext['failureHistory'] = [];
|
|
97
109
|
|
|
98
110
|
try {
|
|
99
111
|
const gateResult = await this.toolCaller.callTool<GatesRunData>('qa', TOOLS.GATES_RUN, {
|
|
100
112
|
feature_id: featureId,
|
|
101
|
-
profile: null,
|
|
102
113
|
mode: 'full',
|
|
103
114
|
});
|
|
104
115
|
gateOverall = gateResult.data.overall ?? GATE_RESULT.PASS;
|
|
105
116
|
gateExitCode = gateOverall === GATE_RESULT.FAIL ? 1 : 0;
|
|
106
117
|
gateEvidencePath = gateResult.data.evidence_path ?? '';
|
|
118
|
+
gateRetryEligible = gateOverall === GATE_RESULT.FAIL;
|
|
107
119
|
} catch (error) {
|
|
108
120
|
gateOverall = GATE_RESULT.FAIL;
|
|
109
121
|
gateExitCode = 1;
|
|
110
122
|
const typed = error as { message?: string };
|
|
111
123
|
gateLogs = typed.message ?? '';
|
|
124
|
+
gateRetryEligible = isRetryableToolError(error);
|
|
112
125
|
}
|
|
113
126
|
|
|
114
127
|
if (gateOverall === GATE_RESULT.FAIL) {
|
|
@@ -123,10 +136,10 @@ export class QaWaveExecutor {
|
|
|
123
136
|
});
|
|
124
137
|
}
|
|
125
138
|
|
|
126
|
-
if (this.reactionsService && gateOverall === GATE_RESULT.FAIL) {
|
|
139
|
+
if (this.reactionsService && gateOverall === GATE_RESULT.FAIL && gateRetryEligible) {
|
|
127
140
|
let retryCount = initialRetryCount;
|
|
128
141
|
const retryDelayMs = this.reactionsService.retryDelayMs();
|
|
129
|
-
while (this.reactionsService.shouldRetry(featureId, retryCount)) {
|
|
142
|
+
while (gateRetryEligible && this.reactionsService.shouldRetry(featureId, retryCount)) {
|
|
130
143
|
if (typeof this.reactionsService.waitBeforeRetry === 'function') {
|
|
131
144
|
await this.reactionsService.waitBeforeRetry();
|
|
132
145
|
}
|
|
@@ -154,7 +167,6 @@ export class QaWaveExecutor {
|
|
|
154
167
|
TOOLS.GATES_RUN,
|
|
155
168
|
{
|
|
156
169
|
feature_id: featureId,
|
|
157
|
-
profile: null,
|
|
158
170
|
mode: 'full',
|
|
159
171
|
},
|
|
160
172
|
);
|
|
@@ -162,11 +174,13 @@ export class QaWaveExecutor {
|
|
|
162
174
|
gateExitCode = gateOverall === GATE_RESULT.FAIL ? 1 : 0;
|
|
163
175
|
gateEvidencePath = retryResult.data.evidence_path ?? gateEvidencePath;
|
|
164
176
|
gateLogs = '';
|
|
177
|
+
gateRetryEligible = gateOverall === GATE_RESULT.FAIL;
|
|
165
178
|
} catch (error) {
|
|
166
179
|
gateOverall = GATE_RESULT.FAIL;
|
|
167
180
|
gateExitCode = 1;
|
|
168
181
|
const typed = error as { message?: string };
|
|
169
182
|
gateLogs = typed.message ?? '';
|
|
183
|
+
gateRetryEligible = isRetryableToolError(error);
|
|
170
184
|
}
|
|
171
185
|
|
|
172
186
|
retryCount += 1;
|
|
@@ -187,6 +201,9 @@ export class QaWaveExecutor {
|
|
|
187
201
|
if (gateOverall === GATE_RESULT.PASS) {
|
|
188
202
|
break;
|
|
189
203
|
}
|
|
204
|
+
if (!gateRetryEligible) {
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
190
207
|
}
|
|
191
208
|
|
|
192
209
|
if (gateOverall === GATE_RESULT.FAIL && this.reactionsService.shouldEscalate(retryCount)) {
|
|
@@ -32,6 +32,7 @@ import type {
|
|
|
32
32
|
InitialPlanGenerator,
|
|
33
33
|
PromptBundle,
|
|
34
34
|
RuntimeRole,
|
|
35
|
+
ToolArgs,
|
|
35
36
|
SupervisorKernelPort,
|
|
36
37
|
SupervisorOptions,
|
|
37
38
|
SupervisorRuntimeState,
|
|
@@ -472,12 +473,16 @@ export class SupervisorRuntime
|
|
|
472
473
|
}
|
|
473
474
|
}
|
|
474
475
|
|
|
475
|
-
async callTool<TData = Record<string, unknown
|
|
476
|
+
async callTool<TData = Record<string, unknown>, TToolName extends string = string>(
|
|
476
477
|
role: RuntimeRole,
|
|
477
|
-
toolName:
|
|
478
|
-
args:
|
|
478
|
+
toolName: TToolName,
|
|
479
|
+
args: ToolArgs<TToolName>,
|
|
479
480
|
): Promise<{ ok: true; data: TData }> {
|
|
480
|
-
const payload = withOperationIdIfRequired(
|
|
481
|
+
const payload = withOperationIdIfRequired(
|
|
482
|
+
toolName,
|
|
483
|
+
args as Record<string, unknown>,
|
|
484
|
+
createOperationId,
|
|
485
|
+
);
|
|
481
486
|
const roleSessionId = this.resolveRoleSessionId(role, payload);
|
|
482
487
|
|
|
483
488
|
const response = await this.toolClient.call(toolName, payload, {
|
|
@@ -221,6 +221,8 @@ describe('RetryCommandHandler', () => {
|
|
|
221
221
|
expect.objectContaining({ feature_id: 'feature_abc', mode: 'full' }),
|
|
222
222
|
expect.any(Object),
|
|
223
223
|
);
|
|
224
|
+
const gatesRunCall = callMock.mock.calls.find((call) => call[0] === TOOLS.GATES_RUN);
|
|
225
|
+
expect(gatesRunCall?.[1]).not.toHaveProperty('profile');
|
|
224
226
|
});
|
|
225
227
|
|
|
226
228
|
it('GIVEN_valid_feature_id_with_force_WHEN_execute_called_THEN_gets_current_state_and_patches_retry_count', async () => {
|
|
@@ -259,6 +261,8 @@ describe('RetryCommandHandler', () => {
|
|
|
259
261
|
expect.objectContaining({ feature_id: 'feature_abc' }),
|
|
260
262
|
expect.any(Object),
|
|
261
263
|
);
|
|
264
|
+
const gatesRunCall = callMock.mock.calls.find((call) => call[0] === TOOLS.GATES_RUN);
|
|
265
|
+
expect(gatesRunCall?.[1]).not.toHaveProperty('profile');
|
|
262
266
|
});
|
|
263
267
|
});
|
|
264
268
|
|
|
@@ -2,6 +2,12 @@ import { describe, expect, it, vi, afterEach } from 'vitest';
|
|
|
2
2
|
import { DashboardCommandHandler } from '../src/cli/dashboard-command-handler.js';
|
|
3
3
|
import type { ChildProcess } from 'node:child_process';
|
|
4
4
|
|
|
5
|
+
vi.mock('node:fs/promises', () => ({
|
|
6
|
+
default: {
|
|
7
|
+
access: vi.fn(async () => undefined),
|
|
8
|
+
},
|
|
9
|
+
}));
|
|
10
|
+
|
|
5
11
|
vi.mock('node:child_process', () => ({
|
|
6
12
|
execFile: vi.fn(),
|
|
7
13
|
spawn: vi.fn(),
|
|
@@ -104,4 +110,34 @@ describe('DashboardCommandHandler', () => {
|
|
|
104
110
|
);
|
|
105
111
|
expect(result).toMatchObject({ ok: true, data: { mode: 'dev' } });
|
|
106
112
|
});
|
|
113
|
+
|
|
114
|
+
it('GIVEN_dashboard_cli_missing_WHEN_dashboard_command_THEN_installs_workspace_dependencies_before_build', async () => {
|
|
115
|
+
const { default: fs } = await import('node:fs/promises');
|
|
116
|
+
const { execFile, spawn } = await import('node:child_process');
|
|
117
|
+
const mockChild = { unref: vi.fn(), on: vi.fn() } as unknown as ChildProcess;
|
|
118
|
+
|
|
119
|
+
vi.mocked(fs.access).mockRejectedValue(new Error('missing'));
|
|
120
|
+
vi.mocked(execFile).mockImplementation((_file, _args, _opts, cb) => {
|
|
121
|
+
cb?.(null, '', '');
|
|
122
|
+
return {} as never;
|
|
123
|
+
});
|
|
124
|
+
vi.mocked(spawn).mockReturnValue(mockChild);
|
|
125
|
+
|
|
126
|
+
const handler = new DashboardCommandHandler();
|
|
127
|
+
const result = await handler.execute({ foreground: false });
|
|
128
|
+
|
|
129
|
+
expect(execFile).toHaveBeenCalledWith(
|
|
130
|
+
'npm',
|
|
131
|
+
['install', '--workspace', '@aop/web-dashboard', '--no-audit', '--no-fund'],
|
|
132
|
+
expect.any(Object),
|
|
133
|
+
expect.any(Function),
|
|
134
|
+
);
|
|
135
|
+
expect(execFile).toHaveBeenCalledWith(
|
|
136
|
+
'npm',
|
|
137
|
+
['run', '--workspace', '@aop/web-dashboard', 'build'],
|
|
138
|
+
expect.any(Object),
|
|
139
|
+
expect.any(Function),
|
|
140
|
+
);
|
|
141
|
+
expect(result).toMatchObject({ ok: true, data: { built: true } });
|
|
142
|
+
});
|
|
107
143
|
});
|
|
@@ -124,6 +124,48 @@ describe('QaWaveExecutor collaborator branches', () => {
|
|
|
124
124
|
expect(provider.createSession).toHaveBeenCalledWith('qa', 'feature_x', 'qa-prompt');
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
+
it('GIVEN_non_retryable_gate_error_WHEN_qa_wave_runs_THEN_skips_retry_loop', async () => {
|
|
128
|
+
const { state, provider, kernel, promptProvider, featureClusterPatcher } = makeBaseDeps();
|
|
129
|
+
const nonRetryableError = new Error('tool_input_schema_validation_failed') as Error & {
|
|
130
|
+
details?: { retryable?: boolean };
|
|
131
|
+
};
|
|
132
|
+
nonRetryableError.details = { retryable: false };
|
|
133
|
+
const toolCaller = {
|
|
134
|
+
callTool: vi.fn(async (_role: string, toolName: string) => {
|
|
135
|
+
if (toolName === TOOLS.FEATURE_STATE_GET) {
|
|
136
|
+
return { ok: true, data: { front_matter: { status: STATUS.QA, gate_retry_count: 0 } } };
|
|
137
|
+
}
|
|
138
|
+
if (toolName === TOOLS.GATES_RUN) {
|
|
139
|
+
throw nonRetryableError;
|
|
140
|
+
}
|
|
141
|
+
return { ok: true, data: {} };
|
|
142
|
+
}),
|
|
143
|
+
};
|
|
144
|
+
const reactionsService = {
|
|
145
|
+
retryDelayMs: vi.fn(() => 5),
|
|
146
|
+
shouldRetry: vi.fn().mockReturnValue(true),
|
|
147
|
+
buildRepairPrompt: vi.fn(() => 'repair prompt'),
|
|
148
|
+
recordRetry: vi.fn(async () => undefined),
|
|
149
|
+
shouldEscalate: vi.fn(() => false),
|
|
150
|
+
notifyEscalation: vi.fn(async () => undefined),
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
const executor = new QaWaveExecutor({
|
|
154
|
+
kernel: kernel as never,
|
|
155
|
+
provider: provider as never,
|
|
156
|
+
toolCaller: toolCaller as never,
|
|
157
|
+
promptProvider: promptProvider as never,
|
|
158
|
+
featureClusterPatcher: featureClusterPatcher as never,
|
|
159
|
+
state: state as never,
|
|
160
|
+
reactionsService: reactionsService as never,
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
await executor.run(['feature_x'], 1);
|
|
164
|
+
|
|
165
|
+
expect(reactionsService.shouldRetry).not.toHaveBeenCalled();
|
|
166
|
+
expect(reactionsService.recordRetry).not.toHaveBeenCalled();
|
|
167
|
+
});
|
|
168
|
+
|
|
127
169
|
it('GIVEN_reactions_service_with_retries_WHEN_gate_fails_initially_THEN_retries_until_pass', async () => {
|
|
128
170
|
const { state, provider, kernel, promptProvider, featureClusterPatcher } = makeBaseDeps();
|
|
129
171
|
let gateCallCount = 0;
|
|
@@ -552,6 +594,50 @@ describe('BuildWaveExecutor catch and reactions branches', () => {
|
|
|
552
594
|
expect(reactionsService.shouldEscalate).not.toHaveBeenCalled();
|
|
553
595
|
expect(reactionsService.notifyEscalation).not.toHaveBeenCalled();
|
|
554
596
|
});
|
|
597
|
+
|
|
598
|
+
it('GIVEN_non_retryable_gate_error_WHEN_build_wave_runs_THEN_skips_retry_loop', async () => {
|
|
599
|
+
const { workerDecisionRunner } = makeBaseBuildDeps();
|
|
600
|
+
const nonRetryableError = new Error('tool_input_schema_validation_failed') as Error & {
|
|
601
|
+
details?: { retryable?: boolean };
|
|
602
|
+
};
|
|
603
|
+
nonRetryableError.details = { retryable: false };
|
|
604
|
+
const toolCaller = {
|
|
605
|
+
callTool: vi.fn(async (_role: string, toolName: string) => {
|
|
606
|
+
if (toolName === TOOLS.FEATURE_STATE_GET) {
|
|
607
|
+
return {
|
|
608
|
+
ok: true,
|
|
609
|
+
data: { front_matter: { status: STATUS.BUILDING, gate_retry_count: 0 } },
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
if (toolName === TOOLS.FEATURE_GET_CONTEXT) {
|
|
613
|
+
return { ok: true, data: {} };
|
|
614
|
+
}
|
|
615
|
+
if (toolName === TOOLS.GATES_RUN) {
|
|
616
|
+
throw nonRetryableError;
|
|
617
|
+
}
|
|
618
|
+
return { ok: true, data: {} };
|
|
619
|
+
}),
|
|
620
|
+
};
|
|
621
|
+
const reactionsService = {
|
|
622
|
+
retryDelayMs: vi.fn(() => 5),
|
|
623
|
+
shouldRetry: vi.fn().mockReturnValue(true),
|
|
624
|
+
buildRepairPrompt: vi.fn(() => 'repair prompt'),
|
|
625
|
+
recordRetry: vi.fn(async () => undefined),
|
|
626
|
+
shouldEscalate: vi.fn(() => false),
|
|
627
|
+
notifyEscalation: vi.fn(async () => undefined),
|
|
628
|
+
};
|
|
629
|
+
|
|
630
|
+
const executor = new BuildWaveExecutor({
|
|
631
|
+
toolCaller: toolCaller as never,
|
|
632
|
+
workerDecisionRunner: workerDecisionRunner as never,
|
|
633
|
+
reactionsService: reactionsService as never,
|
|
634
|
+
});
|
|
635
|
+
|
|
636
|
+
await executor.run(['feature_build'], 1);
|
|
637
|
+
|
|
638
|
+
expect(reactionsService.shouldRetry).not.toHaveBeenCalled();
|
|
639
|
+
expect(reactionsService.recordRetry).not.toHaveBeenCalled();
|
|
640
|
+
});
|
|
555
641
|
});
|
|
556
642
|
|
|
557
643
|
describe('PromptBundleLoader behavior', () => {
|
|
@@ -441,7 +441,7 @@ describe('SupervisorRuntime unit behavior', () => {
|
|
|
441
441
|
});
|
|
442
442
|
|
|
443
443
|
await expect(
|
|
444
|
-
runtime.callTool('builder', TOOLS.GATES_RUN, { feature_id: 'feature_a' }),
|
|
444
|
+
runtime.callTool('builder', TOOLS.GATES_RUN, { feature_id: 'feature_a', mode: 'fast' }),
|
|
445
445
|
).rejects.toMatchObject({
|
|
446
446
|
code: ERROR_CODES.LOCK_CONFLICT,
|
|
447
447
|
details: { holder: 'feature_b' },
|
|
@@ -1,14 +1,40 @@
|
|
|
1
1
|
import { execFile, spawn } from 'node:child_process';
|
|
2
|
+
import fs from 'node:fs/promises';
|
|
2
3
|
import path from 'node:path';
|
|
3
4
|
import { fileURLToPath } from 'node:url';
|
|
4
5
|
import { promisify } from 'node:util';
|
|
5
6
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
6
7
|
const execFileAsync = promisify(execFile);
|
|
8
|
+
const DASHBOARD_WORKSPACE = '@aop/web-dashboard';
|
|
9
|
+
async function hasDashboardCli(repoRoot) {
|
|
10
|
+
const candidates = [
|
|
11
|
+
path.join(repoRoot, 'node_modules', '.bin', 'next'),
|
|
12
|
+
path.join(repoRoot, 'packages', 'web-dashboard', 'node_modules', '.bin', 'next'),
|
|
13
|
+
];
|
|
14
|
+
for (const candidate of candidates) {
|
|
15
|
+
try {
|
|
16
|
+
await fs.access(candidate);
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// continue
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
async function ensureDashboardDependencies(repoRoot, env) {
|
|
26
|
+
if (await hasDashboardCli(repoRoot)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
await execFileAsync('npm', ['install', '--workspace', DASHBOARD_WORKSPACE, '--no-audit', '--no-fund'], {
|
|
30
|
+
cwd: repoRoot,
|
|
31
|
+
env,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
7
34
|
export class DashboardCommandHandler {
|
|
8
35
|
async execute(options) {
|
|
9
36
|
const port = options.port ?? 3000;
|
|
10
37
|
const repoRoot = path.resolve(__dirname, '../../../../');
|
|
11
|
-
const dashboardWorkspace = '@aop/web-dashboard';
|
|
12
38
|
const devMode = options.dev === true;
|
|
13
39
|
const foreground = options.foreground === true || devMode;
|
|
14
40
|
const env = {
|
|
@@ -17,8 +43,9 @@ export class DashboardCommandHandler {
|
|
|
17
43
|
HOSTNAME: '0.0.0.0',
|
|
18
44
|
AOP_ROOT: process.cwd(),
|
|
19
45
|
};
|
|
46
|
+
await ensureDashboardDependencies(repoRoot, env);
|
|
20
47
|
if (devMode) {
|
|
21
|
-
const child = spawn('npm', ['run', '--workspace',
|
|
48
|
+
const child = spawn('npm', ['run', '--workspace', DASHBOARD_WORKSPACE, 'dev'], {
|
|
22
49
|
cwd: repoRoot,
|
|
23
50
|
env,
|
|
24
51
|
stdio: 'inherit',
|
|
@@ -29,12 +56,12 @@ export class DashboardCommandHandler {
|
|
|
29
56
|
});
|
|
30
57
|
return { ok: true, data: { message: 'Dashboard stopped', port, mode: 'dev' } };
|
|
31
58
|
}
|
|
32
|
-
await execFileAsync('npm', ['run', '--workspace',
|
|
59
|
+
await execFileAsync('npm', ['run', '--workspace', DASHBOARD_WORKSPACE, 'build'], {
|
|
33
60
|
cwd: repoRoot,
|
|
34
61
|
env,
|
|
35
62
|
});
|
|
36
63
|
if (foreground) {
|
|
37
|
-
const child = spawn('npm', ['run', '--workspace',
|
|
64
|
+
const child = spawn('npm', ['run', '--workspace', DASHBOARD_WORKSPACE, 'start'], {
|
|
38
65
|
cwd: repoRoot,
|
|
39
66
|
env,
|
|
40
67
|
stdio: 'inherit',
|
|
@@ -45,7 +72,7 @@ export class DashboardCommandHandler {
|
|
|
45
72
|
});
|
|
46
73
|
return { ok: true, data: { message: 'Dashboard stopped', port, mode: 'production' } };
|
|
47
74
|
}
|
|
48
|
-
const child = spawn('npm', ['run', '--workspace',
|
|
75
|
+
const child = spawn('npm', ['run', '--workspace', DASHBOARD_WORKSPACE, 'start'], {
|
|
49
76
|
cwd: repoRoot,
|
|
50
77
|
env,
|
|
51
78
|
detached: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-command-handler.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/cli/dashboard-command-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"dashboard-command-handler.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/cli/dashboard-command-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry-command-handler.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/cli/retry-command-handler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"retry-command-handler.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/cli/retry-command-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
export type RuntimeRole = 'orchestrator' | 'planner' | 'builder' | 'qa';
|
|
2
|
+
export interface GatesRunToolArgs {
|
|
3
|
+
feature_id: string;
|
|
4
|
+
mode: string;
|
|
5
|
+
profile?: string;
|
|
6
|
+
operation_id?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ToolArgsByName {
|
|
9
|
+
'gates.run': GatesRunToolArgs;
|
|
10
|
+
}
|
|
11
|
+
export type ToolArgs<TToolName extends string> = TToolName extends keyof ToolArgsByName ? ToolArgsByName[TToolName] : Record<string, unknown>;
|
|
2
12
|
export interface ToolCaller {
|
|
3
|
-
callTool<TData = Record<string, unknown
|
|
13
|
+
callTool<TData = Record<string, unknown>, TToolName extends string = string>(role: RuntimeRole, toolName: TToolName, args: ToolArgs<TToolName>): Promise<{
|
|
4
14
|
ok: true;
|
|
5
15
|
data: TData;
|
|
6
16
|
}>;
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { GATE_RESULT, STATUS, TOOLS } from '../core/constants.js';
|
|
2
2
|
import { NOOP_WORKER_DECISION_RUNNER } from './worker-decision-loop.js';
|
|
3
|
+
function isRetryableToolError(error) {
|
|
4
|
+
if (!error || typeof error !== 'object') {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
const details = error.details;
|
|
8
|
+
if (!details || typeof details !== 'object') {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
return details.retryable === true;
|
|
12
|
+
}
|
|
3
13
|
export class BuildWaveExecutor {
|
|
4
14
|
toolCaller;
|
|
5
15
|
workerDecisionRunner;
|
|
@@ -40,22 +50,24 @@ export class BuildWaveExecutor {
|
|
|
40
50
|
let gateExitCode;
|
|
41
51
|
let gateEvidencePath = '';
|
|
42
52
|
let gateLogs = '';
|
|
53
|
+
let gateRetryEligible;
|
|
43
54
|
const failureHistory = [];
|
|
44
55
|
try {
|
|
45
56
|
const gateResult = await this.toolCaller.callTool('builder', TOOLS.GATES_RUN, {
|
|
46
57
|
feature_id: featureId,
|
|
47
|
-
profile: null,
|
|
48
58
|
mode: 'fast',
|
|
49
59
|
});
|
|
50
60
|
gateOverall = gateResult.data.overall ?? GATE_RESULT.PASS;
|
|
51
61
|
gateExitCode = gateOverall === GATE_RESULT.FAIL ? 1 : 0;
|
|
52
62
|
gateEvidencePath = gateResult.data.evidence_path ?? '';
|
|
63
|
+
gateRetryEligible = gateOverall === GATE_RESULT.FAIL;
|
|
53
64
|
}
|
|
54
65
|
catch (error) {
|
|
55
66
|
gateOverall = GATE_RESULT.FAIL;
|
|
56
67
|
gateExitCode = 1;
|
|
57
68
|
const typed = error;
|
|
58
69
|
gateLogs = typed.message ?? '';
|
|
70
|
+
gateRetryEligible = isRetryableToolError(error);
|
|
59
71
|
}
|
|
60
72
|
if (gateOverall === GATE_RESULT.FAIL) {
|
|
61
73
|
failureHistory.push({
|
|
@@ -68,13 +80,13 @@ export class BuildWaveExecutor {
|
|
|
68
80
|
retry_delay_ms: this.reactionsService?.retryDelayMs(),
|
|
69
81
|
});
|
|
70
82
|
}
|
|
71
|
-
if (this.reactionsService && gateOverall === GATE_RESULT.FAIL) {
|
|
83
|
+
if (this.reactionsService && gateOverall === GATE_RESULT.FAIL && gateRetryEligible) {
|
|
72
84
|
const context = await this.toolCaller.callTool('builder', TOOLS.FEATURE_GET_CONTEXT, {
|
|
73
85
|
feature_id: featureId,
|
|
74
86
|
});
|
|
75
87
|
let retryCount = initialRetryCount;
|
|
76
88
|
const retryDelayMs = this.reactionsService.retryDelayMs();
|
|
77
|
-
while (this.reactionsService.shouldRetry(featureId, retryCount)) {
|
|
89
|
+
while (gateRetryEligible && this.reactionsService.shouldRetry(featureId, retryCount)) {
|
|
78
90
|
if (typeof this.reactionsService.waitBeforeRetry === 'function') {
|
|
79
91
|
await this.reactionsService.waitBeforeRetry();
|
|
80
92
|
}
|
|
@@ -98,19 +110,20 @@ export class BuildWaveExecutor {
|
|
|
98
110
|
try {
|
|
99
111
|
const retryResult = await this.toolCaller.callTool('builder', TOOLS.GATES_RUN, {
|
|
100
112
|
feature_id: featureId,
|
|
101
|
-
profile: null,
|
|
102
113
|
mode: 'fast',
|
|
103
114
|
});
|
|
104
115
|
gateOverall = retryResult.data.overall ?? GATE_RESULT.PASS;
|
|
105
116
|
gateExitCode = gateOverall === GATE_RESULT.FAIL ? 1 : 0;
|
|
106
117
|
gateEvidencePath = retryResult.data.evidence_path ?? gateEvidencePath;
|
|
107
118
|
gateLogs = '';
|
|
119
|
+
gateRetryEligible = gateOverall === GATE_RESULT.FAIL;
|
|
108
120
|
}
|
|
109
121
|
catch (error) {
|
|
110
122
|
gateOverall = GATE_RESULT.FAIL;
|
|
111
123
|
gateExitCode = 1;
|
|
112
124
|
const typed = error;
|
|
113
125
|
gateLogs = typed.message ?? '';
|
|
126
|
+
gateRetryEligible = isRetryableToolError(error);
|
|
114
127
|
}
|
|
115
128
|
retryCount += 1;
|
|
116
129
|
await this.reactionsService.recordRetry(featureId, retryCount);
|
|
@@ -128,6 +141,9 @@ export class BuildWaveExecutor {
|
|
|
128
141
|
if (gateOverall === GATE_RESULT.PASS) {
|
|
129
142
|
break;
|
|
130
143
|
}
|
|
144
|
+
if (!gateRetryEligible) {
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
131
147
|
}
|
|
132
148
|
if (gateOverall === GATE_RESULT.FAIL && this.reactionsService.shouldEscalate(retryCount)) {
|
|
133
149
|
const escalateCtx = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-wave-executor.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/supervisor/build-wave-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,2BAA2B,EAA6B,MAAM,2BAA2B,CAAC;AAiBnG,MAAM,OAAO,iBAAiB;IACX,UAAU,CAAuB;IACjC,oBAAoB,CAAuB;IAC3C,gBAAgB,CAA+B;IAEhE,YAAY,YAA2C;QACrD,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;QAC1C,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC,oBAAoB,IAAI,2BAA2B,CAAC;QAC7F,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,UAAoB,EAAE,mBAA2B;QACzD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAC1C,SAAS,EACT,KAAK,CAAC,iBAAiB,EACvB;gBACE,UAAU,EAAE,SAAS;aACtB,CACF,CAAC;YAEF,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACvD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACrD,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,mBAAmB,EAAE;gBACnF,UAAU,EAAE,SAAS;aACtB,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;gBACtC,IAAI,EAAE,SAAS;gBACf,SAAS;gBACT,aAAa,EAAE,OAAO,CAAC,IAAI;gBAC3B,YAAY,EACV,qHAAqH;aACxH,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YACjD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAClD,SAAS,EACT,KAAK,CAAC,iBAAiB,EACvB;gBACE,UAAU,EAAE,SAAS;aACtB,CACF,CAAC;YACF,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,IAAI,CAAC,CAAC;YAEhF,IAAI,WAAmB,CAAC;YACxB,IAAI,YAAoB,CAAC;YACzB,IAAI,gBAAgB,GAAG,EAAE,CAAC;YAC1B,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,MAAM,cAAc,GAAwC,EAAE,CAAC;YAE/D,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAC/C,SAAS,EACT,KAAK,CAAC,SAAS,EACf;oBACE,UAAU,EAAE,SAAS;oBACrB,
|
|
1
|
+
{"version":3,"file":"build-wave-executor.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/supervisor/build-wave-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { GATE_RESULT, STATUS, TOOLS } from '../core/constants.js';
|
|
2
2
|
import { UNASSIGNED_SESSION_ID } from './types.js';
|
|
3
3
|
import { NOOP_WORKER_DECISION_RUNNER } from './worker-decision-loop.js';
|
|
4
|
+
function isRetryableToolError(error) {
|
|
5
|
+
if (!error || typeof error !== 'object') {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
const details = error.details;
|
|
9
|
+
if (!details || typeof details !== 'object') {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
return details.retryable === true;
|
|
13
|
+
}
|
|
4
14
|
export class QaWaveExecutor {
|
|
5
15
|
kernel;
|
|
6
16
|
provider;
|
|
@@ -48,22 +58,24 @@ export class QaWaveExecutor {
|
|
|
48
58
|
let gateExitCode;
|
|
49
59
|
let gateEvidencePath = '';
|
|
50
60
|
let gateLogs = '';
|
|
61
|
+
let gateRetryEligible;
|
|
51
62
|
const failureHistory = [];
|
|
52
63
|
try {
|
|
53
64
|
const gateResult = await this.toolCaller.callTool('qa', TOOLS.GATES_RUN, {
|
|
54
65
|
feature_id: featureId,
|
|
55
|
-
profile: null,
|
|
56
66
|
mode: 'full',
|
|
57
67
|
});
|
|
58
68
|
gateOverall = gateResult.data.overall ?? GATE_RESULT.PASS;
|
|
59
69
|
gateExitCode = gateOverall === GATE_RESULT.FAIL ? 1 : 0;
|
|
60
70
|
gateEvidencePath = gateResult.data.evidence_path ?? '';
|
|
71
|
+
gateRetryEligible = gateOverall === GATE_RESULT.FAIL;
|
|
61
72
|
}
|
|
62
73
|
catch (error) {
|
|
63
74
|
gateOverall = GATE_RESULT.FAIL;
|
|
64
75
|
gateExitCode = 1;
|
|
65
76
|
const typed = error;
|
|
66
77
|
gateLogs = typed.message ?? '';
|
|
78
|
+
gateRetryEligible = isRetryableToolError(error);
|
|
67
79
|
}
|
|
68
80
|
if (gateOverall === GATE_RESULT.FAIL) {
|
|
69
81
|
failureHistory.push({
|
|
@@ -76,10 +88,10 @@ export class QaWaveExecutor {
|
|
|
76
88
|
retry_delay_ms: this.reactionsService?.retryDelayMs(),
|
|
77
89
|
});
|
|
78
90
|
}
|
|
79
|
-
if (this.reactionsService && gateOverall === GATE_RESULT.FAIL) {
|
|
91
|
+
if (this.reactionsService && gateOverall === GATE_RESULT.FAIL && gateRetryEligible) {
|
|
80
92
|
let retryCount = initialRetryCount;
|
|
81
93
|
const retryDelayMs = this.reactionsService.retryDelayMs();
|
|
82
|
-
while (this.reactionsService.shouldRetry(featureId, retryCount)) {
|
|
94
|
+
while (gateRetryEligible && this.reactionsService.shouldRetry(featureId, retryCount)) {
|
|
83
95
|
if (typeof this.reactionsService.waitBeforeRetry === 'function') {
|
|
84
96
|
await this.reactionsService.waitBeforeRetry();
|
|
85
97
|
}
|
|
@@ -103,19 +115,20 @@ export class QaWaveExecutor {
|
|
|
103
115
|
try {
|
|
104
116
|
const retryResult = await this.toolCaller.callTool('qa', TOOLS.GATES_RUN, {
|
|
105
117
|
feature_id: featureId,
|
|
106
|
-
profile: null,
|
|
107
118
|
mode: 'full',
|
|
108
119
|
});
|
|
109
120
|
gateOverall = retryResult.data.overall ?? GATE_RESULT.PASS;
|
|
110
121
|
gateExitCode = gateOverall === GATE_RESULT.FAIL ? 1 : 0;
|
|
111
122
|
gateEvidencePath = retryResult.data.evidence_path ?? gateEvidencePath;
|
|
112
123
|
gateLogs = '';
|
|
124
|
+
gateRetryEligible = gateOverall === GATE_RESULT.FAIL;
|
|
113
125
|
}
|
|
114
126
|
catch (error) {
|
|
115
127
|
gateOverall = GATE_RESULT.FAIL;
|
|
116
128
|
gateExitCode = 1;
|
|
117
129
|
const typed = error;
|
|
118
130
|
gateLogs = typed.message ?? '';
|
|
131
|
+
gateRetryEligible = isRetryableToolError(error);
|
|
119
132
|
}
|
|
120
133
|
retryCount += 1;
|
|
121
134
|
await this.reactionsService.recordRetry(featureId, retryCount);
|
|
@@ -133,6 +146,9 @@ export class QaWaveExecutor {
|
|
|
133
146
|
if (gateOverall === GATE_RESULT.PASS) {
|
|
134
147
|
break;
|
|
135
148
|
}
|
|
149
|
+
if (!gateRetryEligible) {
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
136
152
|
}
|
|
137
153
|
if (gateOverall === GATE_RESULT.FAIL && this.reactionsService.shouldEscalate(retryCount)) {
|
|
138
154
|
const escalateCtx = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qa-wave-executor.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/supervisor/qa-wave-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAUlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAA6B,MAAM,2BAA2B,CAAC;AAsBnG,MAAM,OAAO,cAAc;IACR,MAAM,CAA2B;IACjC,QAAQ,CAAiB;IACzB,UAAU,CAAuB;IACjC,cAAc,CAAsB;IACpC,qBAAqB,CAAwB;IAC7C,KAAK,CAAyB;IAC9B,oBAAoB,CAAuB;IAC3C,gBAAgB,CAA+B;IAEhE,YAAY,YAAwC;QAClD,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;QAClD,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC,qBAAqB,CAAC;QAChE,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC,oBAAoB,IAAI,2BAA2B,CAAC;QAC7F,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,UAAoB,EAAE,mBAA2B;QACzD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAC1C,IAAI,EACJ,KAAK,CAAC,iBAAiB,EACvB;gBACE,UAAU,EAAE,SAAS;aACtB,CACF,CAAC;YAEF,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,EAAE,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,mBAAmB,EAAE;gBAC9E,UAAU,EAAE,SAAS;aACtB,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;gBACtC,IAAI,EAAE,IAAI;gBACV,SAAS;gBACT,aAAa,EAAE,OAAO,CAAC,IAAI;gBAC3B,YAAY,EACV,8HAA8H;aACjI,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAClD,IAAI,EACJ,KAAK,CAAC,iBAAiB,EACvB;gBACE,UAAU,EAAE,SAAS;aACtB,CACF,CAAC;YACF,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,IAAI,CAAC,CAAC;YAEhF,IAAI,WAAmB,CAAC;YACxB,IAAI,YAAoB,CAAC;YACzB,IAAI,gBAAgB,GAAG,EAAE,CAAC;YAC1B,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,MAAM,cAAc,GAAwC,EAAE,CAAC;YAE/D,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAe,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE;oBACrF,UAAU,EAAE,SAAS;oBACrB,
|
|
1
|
+
{"version":3,"file":"qa-wave-executor.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/supervisor/qa-wave-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { WorkerProvider } from '../providers/providers.js';
|
|
2
2
|
import { type ToolClient } from '../mcp/tool-client.js';
|
|
3
|
-
import type { AgentPromptProvider, FeatureClusterPatcher, FeatureInput, InitialPlanGenerator, PromptBundle, RuntimeRole, SupervisorKernelPort, SupervisorOptions, SupervisorToolCaller, WorkerSessions } from './types.js';
|
|
3
|
+
import type { AgentPromptProvider, FeatureClusterPatcher, FeatureInput, InitialPlanGenerator, PromptBundle, RuntimeRole, ToolArgs, SupervisorKernelPort, SupervisorOptions, SupervisorToolCaller, WorkerSessions } from './types.js';
|
|
4
4
|
export declare class SupervisorRuntime implements SupervisorToolCaller, AgentPromptProvider, InitialPlanGenerator, FeatureClusterPatcher {
|
|
5
5
|
kernel: SupervisorKernelPort;
|
|
6
6
|
provider: WorkerProvider;
|
|
@@ -54,7 +54,7 @@ export declare class SupervisorRuntime implements SupervisorToolCaller, AgentPro
|
|
|
54
54
|
renewLeaseHeartbeats(): Promise<void>;
|
|
55
55
|
generateInitialPlan(featureId: string): Promise<Record<string, unknown>>;
|
|
56
56
|
private resolveRoleSessionId;
|
|
57
|
-
callTool<TData = Record<string, unknown
|
|
57
|
+
callTool<TData = Record<string, unknown>, TToolName extends string = string>(role: RuntimeRole, toolName: TToolName, args: ToolArgs<TToolName>): Promise<{
|
|
58
58
|
ok: true;
|
|
59
59
|
data: TData;
|
|
60
60
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/supervisor/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAmB,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,GAElB,MAAM,6CAA6C,CAAC;AAmBrD,SAAS,kBAAkB,CACzB,IAAgC,EAChC,eAAwB,EACxB,QAAuB;IAEvB,MAAM,UAAU,GACd,OAAO,eAAe,KAAK,QAAQ,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7F,MAAM,SAAS,GAAG,UAAU,IAAI,QAAQ,CAAC;IACzC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,OAAO,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,QAAQ,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,OAAO,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,OAAO,iBAAiB;IAG5B,MAAM,CAAuB;IAC7B,QAAQ,CAAiB;IACzB,UAAU,CAAa;IACvB,iBAAiB,CAAS;IAC1B,mBAAmB,CAAS;IAC5B,qBAAqB,CAAS;IAC9B,gBAAgB,CAAU;IAET,KAAK,CAAyB;IAC9B,kBAAkB,CAAqB;IACvC,mBAAmB,CAAsB;IACzC,oBAAoB,CAAuB;IAC3C,iBAAiB,CAAoB;IACrC,cAAc,CAAiB;IAC/B,kBAAkB,CAAqB;IACvC,qBAAqB,CAAwB;IAC7C,cAAc,CAAiB;IACxC,MAAM,CAAU,gCAAgC,GAAG,CAAC,CAAC;IAE7D,YACE,MAA4B,EAC5B,QAAwB,EACxB,UAAsB,EACtB,UAA6B,EAAE;QAE/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAC3F,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,4BAA4B,CAC5D,OAAO,CAAC,wBAAwB,CACjC,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACpD,MAAM,eAAe,GACnB,OAAO,CAAC,iBAAiB,IAAI,cAAc,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QAClF,MAAM,cAAc,GAClB,OAAQ,IAAI,CAAC,MAAgE;aAC1E,iBAAiB,KAAK,UAAU;YACjC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;YACjC,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,mBAAmB,GAAG,kBAAkB,CAC5C,yBAAyB,EACzB,cAAc,CAAC,sBAAsB,CAAC,EACtC,IAAI,CACL,CAAC;QACF,MAAM,gBAAgB,GAAG,kBAAkB,CACzC,sBAAsB,EACtB,cAAc,CAAC,mBAAmB,CAAC,EACnC,cAAc,CACf,CAAC;QACF,MAAM,WAAW,GAAG,kBAAkB,CACpC,iBAAiB,EACjB,cAAc,CAAC,cAAc,CAAC,EAC9B,QAAQ,CACT,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG;YACX,KAAK;YACL,eAAe;YACf,qBAAqB,EAAE,IAAI;YAC3B,iBAAiB,EAAE,IAAI,GAAG,EAAE;YAC5B,KAAK,EAAE,EAAE;YACT,WAAW,EAAE;gBACX,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,iBAAiB,EAAE,eAAe;gBAClC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB;gBACzC,iBAAiB,EAAE,QAAQ,CAAC,SAAS;gBACrC,QAAQ,EAAE;oBACR,oBAAoB,EAAE,mBAAmB;oBACzC,iBAAiB,EAAE,gBAAgB;oBACnC,YAAY,EAAE,WAAW;iBAC1B;aACF;SACF,CAAC;QAEF,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC;YACjD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,kBAAkB,EAAE,IAAI,CAAC,MAAM;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,mBAAmB,CAAC,CAAC;QAC7F,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACtD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;YAC5C,UAAU,EAAE,IAAI;YAChB,QAAQ;YACR,MAAM,EAAE,eAAe;SACxB,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,IAAI,sBAAsB,CAAC;YACjD,UAAU,EAAE,IAAI;YAChB,QAAQ;YACR,eAAe;YACf,eAAe,EAAE,IAAI,CAAC,8BAA8B,EAAE;YACtD,YAAY,EAAE,gBAAgB,IAAI,cAAc;SACjD,CAAC,CAAC;QAEH,MAAM,SAAS,GACb,WAAW,KAAK,QAAQ;YACtB,CAAC,CAAC,IAAI,gBAAgB,CAAC;gBACnB,UAAU,EAAE,IAAI;gBAChB,QAAQ;gBACR,eAAe;gBACf,QAAQ,EAAE,cAAc,EAAE;aAC3B,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC/C,MAAM,qBAAqB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QACtD,MAAM,kBAAkB,GACtB,OAAO,qBAAqB,KAAK,QAAQ,IAAI,qBAAqB,KAAK,IAAI;YACzE,CAAC,CAAE,qBAA2E;YAC9E,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,YAAY,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;QAE5D,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC;YAC/C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI;YAChB,eAAe;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAAC;YACnD,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,IAAI;YACnB,oBAAoB,EAAE,IAAI,CAAC,kBAAkB;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;YAC7C,UAAU,EAAE,IAAI;YAChB,oBAAoB,EAAE,IAAI,CAAC,kBAAkB;YAC7C,gBAAgB;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI;YAChB,cAAc,EAAE,IAAI;YACpB,qBAAqB,EAAE,IAAI;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,oBAAoB,EAAE,IAAI,CAAC,kBAAkB;YAC7C,gBAAgB;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,GAAG,IAAI,qBAAqB,CAAC;YACrD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACzD,oBAAoB,EAAE,IAAI,CAAC,kBAAkB;YAC7C,QAAQ;YACR,SAAS;YACT,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;IACpC,CAAC;IAED,IAAI,eAAe,CAAC,KAAa;QAC/B,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,IAAI,qBAAqB;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAC1C,CAAC;IAED,IAAI,qBAAqB,CAAC,KAAoB;QAC5C,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC;IAC3C,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACtC,CAAC;IAED,IAAI,iBAAiB,CAAC,KAAkC;QACtD,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACvC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK,CAAC,KAAqB;QAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;IAChC,CAAC;IAED,IAAI,WAAW,CAAC,KAA8B;QAC5C,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;IACjC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,YAAY,CAAC,KAA0B;QACzC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAwB;QAClC,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,qBAAqB;QACnB,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,IAAI,MAAM,CAAC,CAAC;IAC3E,CAAC;IAEO,4BAA4B,CAAC,WAA+B;QAClE,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACxF,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC/C,MAAM,UAAU,GACd,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;YACxD,CAAC,CAAE,MAAM,CAAC,UAAsC;YAChD,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,UAAU,GAAG,UAAU,EAAE,wBAAwB,CAAC;QACxD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACrF,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,iBAAiB,CAAC,gCAAgC,CAAC;IAC5D,CAAC;IAEO,0BAA0B,CAAC,WAA+B;QAChE,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACxF,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC/C,MAAM,UAAU,GACd,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;YACxD,CAAC,CAAE,MAAM,CAAC,UAAsC;YAChD,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,UAAU,GAAG,UAAU,EAAE,sBAAsB,CAAC;QACtD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACrF,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,sBAAsB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC/C,IAAI,MAAM,CAAC,SAAS,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC7D,OAAO,MAAM,CAAC,SAA4B,CAAC;QAC7C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,8BAA8B;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC/C,MAAM,UAAU,GACd,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;YACxD,CAAC,CAAE,MAAM,CAAC,UAAsC;YAChD,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,UAAU,GAAG,UAAU,EAAE,uBAAuB,CAAC;QACvD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACpF,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,+BAA+B;QACnC,MAAM,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,EAAE,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,gBAA0B;QAC1D,MAAM,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,SAAiB;QAC9C,MAAM,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,gBAA0B;QAC5D,MAAM,IAAI,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,gBAAgB,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,SAAiB,EACjB,YAAoC;QAEpC,MAAM,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,UAAoB;QACxC,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,UAAoB,EAAE,SAAiB;QACvE,MAAM,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAoB;QACrC,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAoB;QAClC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM;aAC9B,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;aAC/B,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;aAClB,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO;YACL,UAAU,EAAE,SAAS;YACrB,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,mCAAmC,SAAS,EAAE;YACvD,aAAa,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,SAAS,EAAE,CAAC;YACnE,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,EAAE;aACX;YACD,SAAS,EAAE;gBACT,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE,MAAM;gBACd,EAAE,EAAE,MAAM;aACX;YACD,mBAAmB,EAAE,CAAC,oEAAoE,CAAC;YAC3F,YAAY,EAAE,SAAS;SACxB,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,IAAiB,EAAE,OAAgC;QAC9E,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;QAC1C,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS;gBACZ,OAAO,OAAO,CAAC,OAAO,CAAC;YACzB,KAAK,SAAS;gBACZ,OAAO,OAAO,CAAC,OAAO,CAAC;YACzB,KAAK,IAAI;gBACP,OAAO,OAAO,CAAC,EAAE,CAAC;YACpB;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,IAAiB,EACjB,QAAgB,EAChB,IAA6B;QAE7B,MAAM,OAAO,GAAG,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;YAC7D,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACxB,UAAU,EAAE,aAAa,IAAI,aAAa,IAAI,EAAE;YAChD,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,cAAc,IAAI,EAAE;SAC/B,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAa,CAAC;YACxD,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YAC7B,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;YACnC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAa,EAAE,CAAC;IACpD,CAAC"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/supervisor/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AgentsConfigSnapshot } from '../core/kernel.js';
|
|
2
2
|
import type { FeatureStatePayload } from '../core/tool-caller.js';
|
|
3
3
|
import type { BudgetCheckResult } from '../application/services/cost-tracking-service.js';
|
|
4
|
-
export type { FeatureStateFrontMatter, FeatureStatePayload, RuntimeRole, ToolCaller as SupervisorToolCaller, } from '../core/tool-caller.js';
|
|
4
|
+
export type { FeatureStateFrontMatter, FeatureStatePayload, RuntimeRole, ToolArgs, ToolCaller as SupervisorToolCaller, } from '../core/tool-caller.js';
|
|
5
5
|
export interface AppError extends Error {
|
|
6
6
|
code?: string;
|
|
7
7
|
details?: Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/supervisor/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/supervisor/types.ts"],"names":[],"mappings":"AA2JA,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC"}
|
package/package.json
CHANGED
package/spec-files/progress.md
CHANGED
|
@@ -987,3 +987,22 @@ Open blockers:
|
|
|
987
987
|
- `agentic/orchestrator/schemas/adapters.schema.json` — added root description + descriptions on all 4 adapter slot properties.
|
|
988
988
|
- `agentic/orchestrator/schemas/multi-project.schema.json` — added root description + descriptions on all defaults and projects properties.
|
|
989
989
|
- **Result:** `npm run validate:mcp-contracts` ✅. `npm run validate:architecture` ✅. No structural changes; only `description` annotations added.
|
|
990
|
+
|
|
991
|
+
✅ **Entry 179 — MCP-First `gates.run` Contract Enforcement and Retry Guarding**
|
|
992
|
+
|
|
993
|
+
- **Goal:** Eliminate kernel-style nullable argument semantics on gate execution paths so all orchestration traffic is valid against MCP tool schemas first.
|
|
994
|
+
- **Changes made:**
|
|
995
|
+
- Added tool-name keyed argument typing in `apps/control-plane/src/core/tool-caller.ts`:
|
|
996
|
+
- `ToolArgsByName` + `ToolArgs<TToolName>` map with strict `gates.run` args (`feature_id`, `mode`, optional string `profile`, optional `operation_id`).
|
|
997
|
+
- Updated `ToolCaller.callTool(...)` generic signature to enforce tool-specific arg shapes.
|
|
998
|
+
- Updated supervisor caller implementation in `apps/control-plane/src/supervisor/runtime.ts` to use `ToolArgs<TToolName>` so typed MCP argument contracts apply at compile time in runtime orchestration code.
|
|
999
|
+
- Removed invalid nullable profile payloads (`profile: null`) from all `gates.run` call sites:
|
|
1000
|
+
- `apps/control-plane/src/supervisor/build-wave-executor.ts`
|
|
1001
|
+
- `apps/control-plane/src/supervisor/qa-wave-executor.ts`
|
|
1002
|
+
- `apps/control-plane/src/cli/retry-command-handler.ts`
|
|
1003
|
+
- Added retry eligibility guards in build/qa executors:
|
|
1004
|
+
- retries now proceed only when a gate failure is explicitly retryable (`error.details.retryable === true`) or when the gate returns an explicit `overall: fail` result envelope.
|
|
1005
|
+
- non-retryable MCP errors (for example, schema validation `invalid_argument`) no longer enter auto-repair retry loops.
|
|
1006
|
+
- Expanded tests:
|
|
1007
|
+
- `apps/control-plane/test/cli-helpers.spec.ts` now asserts retry command omits `profile` from `gates.run` payload.
|
|
1008
|
+
- `apps/control-plane/test/supervisor-collaborators.spec.ts` adds regressions proving build/qa skip retries on non-retryable gate errors.
|