@devflow-tools/workflow-engine 0.18.19 → 0.18.20
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.
|
@@ -2,14 +2,32 @@ import { type ChildProcess } from 'node:child_process';
|
|
|
2
2
|
import type { HostAdapter, HostWorkerLaunchProjection } from '@devflow-tools/sdk';
|
|
3
3
|
import type { WorkerCoordinationPaths, WorkerHandoff, WorkerLaunchRequest, WorkerTaskEnvelope } from './types.js';
|
|
4
4
|
export interface WorkerProcessResult {
|
|
5
|
+
pid: number | undefined;
|
|
5
6
|
exitCode: number | null;
|
|
6
7
|
signal: NodeJS.Signals | null;
|
|
7
8
|
timedOut: boolean;
|
|
8
9
|
cancelled: boolean;
|
|
9
10
|
handoff?: WorkerHandoff;
|
|
11
|
+
failure?: {
|
|
12
|
+
code: string;
|
|
13
|
+
message: string;
|
|
14
|
+
retryable: boolean;
|
|
15
|
+
provider?: string;
|
|
16
|
+
exitCode?: number | null;
|
|
17
|
+
diagnosticHash?: string;
|
|
18
|
+
};
|
|
10
19
|
}
|
|
20
|
+
/** Converts provider/host diagnostics into a stable, actionable failure code. */
|
|
21
|
+
export declare function parseProviderFailure(message: string, exitCode?: number | null): WorkerProcessResult['failure'] | undefined;
|
|
11
22
|
export declare function createWorkerArtifacts(paths: WorkerCoordinationPaths, envelope: WorkerTaskEnvelope): void;
|
|
12
23
|
export declare function projectWorkerLaunch(adapter: HostAdapter, request: WorkerLaunchRequest): HostWorkerLaunchProjection;
|
|
24
|
+
export declare function preflightWorkerHost(adapter: HostAdapter, request: WorkerLaunchRequest, parentEnv?: NodeJS.ProcessEnv): Promise<{
|
|
25
|
+
passed: true;
|
|
26
|
+
outputHash: string;
|
|
27
|
+
} | {
|
|
28
|
+
passed: false;
|
|
29
|
+
failure: NonNullable<WorkerProcessResult['failure']>;
|
|
30
|
+
}>;
|
|
13
31
|
export declare function launchWorker(adapter: HostAdapter, request: WorkerLaunchRequest, paths: WorkerCoordinationPaths, options?: {
|
|
14
32
|
parentEnv?: NodeJS.ProcessEnv;
|
|
15
33
|
onHeartbeat?: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-launcher.d.ts","sourceRoot":"","sources":["../../src/workers/host-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"host-launcher.d.ts","sourceRoot":"","sources":["../../src/workers/host-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,KAAK,EACV,uBAAuB,EACvB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAYpB,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACvI;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,mBAAmB,CAAC,SAAS,CAAC,GAAG,SAAS,CAO1H;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,kBAAkB,GAC3B,IAAI,CAQN;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,mBAAmB,GAC3B,0BAA0B,CAgB5B;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,SAAS,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAA;CAAE,CAAC,CAkBjQ;AAMD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,uBAAuB,EAC9B,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CAAO,GACxE;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAwEvF"}
|
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
-
import { closeSync, mkdirSync, openSync } from 'node:fs';
|
|
2
|
+
import { closeSync, mkdirSync, openSync, readFileSync } from 'node:fs';
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
3
4
|
import { dirname } from 'node:path';
|
|
4
5
|
import { readWorkerHandoff, writeJsonAtomic, writeWorkerTask } from './handoff.js';
|
|
5
6
|
const ALLOWED_ENV_KEYS = new Set([
|
|
6
7
|
'PATH', 'HOME', 'USER', 'SHELL', 'TMPDIR', 'LANG', 'LC_ALL',
|
|
7
8
|
'CODEX_HOME', 'OPENAI_API_KEY',
|
|
8
|
-
'ANTHROPIC_API_KEY', 'ANTHROPIC_AUTH_TOKEN', 'ANTHROPIC_BASE_URL',
|
|
9
|
+
'ANTHROPIC_API_KEY', 'ANTHROPIC_AUTH_TOKEN', 'ANTHROPIC_BASE_URL',
|
|
9
10
|
// Explicit network routing is required for hosts running behind a proxy;
|
|
10
11
|
// keep the allowlist narrow instead of forwarding arbitrary parent env.
|
|
11
12
|
'HTTP_PROXY', 'HTTPS_PROXY', 'ALL_PROXY', 'NO_PROXY',
|
|
12
13
|
'http_proxy', 'https_proxy', 'all_proxy', 'no_proxy',
|
|
13
14
|
]);
|
|
15
|
+
/** Converts provider/host diagnostics into a stable, actionable failure code. */
|
|
16
|
+
export function parseProviderFailure(message, exitCode) {
|
|
17
|
+
const text = message.trim();
|
|
18
|
+
if (!text)
|
|
19
|
+
return exitCode && exitCode !== 0 ? { code: 'WORKER_EXIT_NONZERO', message: `Worker exited with code ${exitCode}`, retryable: false, exitCode } : undefined;
|
|
20
|
+
if (/model .* is not supported|unknown model|invalid model/i.test(text))
|
|
21
|
+
return { code: 'HOST_MODEL_UNAVAILABLE', message: text, retryable: false, provider: 'claude', exitCode, diagnosticHash: createHash('sha256').update(text).digest('hex') };
|
|
22
|
+
if (/unauthori[sz]ed|authentication|api key|401|403/i.test(text))
|
|
23
|
+
return { code: 'HOST_AUTHENTICATION_REQUIRED', message: text, retryable: false, provider: 'host', exitCode, diagnosticHash: createHash('sha256').update(text).digest('hex') };
|
|
24
|
+
if (/rate limit|temporar|timeout|overloaded|\b429\b|\b5\d\d\b/i.test(text))
|
|
25
|
+
return { code: 'HOST_PROVIDER_UNAVAILABLE', message: text, retryable: true, provider: 'host', exitCode, diagnosticHash: createHash('sha256').update(text).digest('hex') };
|
|
26
|
+
return { code: 'WORKER_FAILED', message: text.slice(0, 2_000), retryable: false, exitCode, diagnosticHash: createHash('sha256').update(text).digest('hex') };
|
|
27
|
+
}
|
|
14
28
|
export function createWorkerArtifacts(paths, envelope) {
|
|
15
29
|
mkdirSync(paths.root, { recursive: true, mode: 0o700 });
|
|
16
30
|
writeWorkerTask(paths.taskFile, envelope);
|
|
@@ -37,6 +51,31 @@ export function projectWorkerLaunch(adapter, request) {
|
|
|
37
51
|
.filter(([key, value]) => key.startsWith('DEVFLOW_') && typeof value === 'string')),
|
|
38
52
|
};
|
|
39
53
|
}
|
|
54
|
+
export async function preflightWorkerHost(adapter, request, parentEnv = process.env) {
|
|
55
|
+
const projectedLaunch = adapter.workers?.project(request);
|
|
56
|
+
const projection = adapter.workers?.preflight?.(request) ?? (projectedLaunch?.command ? { ...projectedLaunch, args: ['--version'], detached: false, completionFormat: 'json' } : undefined);
|
|
57
|
+
if (!projection?.command || projection.status !== 'supported')
|
|
58
|
+
return { passed: false, failure: { code: 'WORKER_PREFLIGHT_UNAVAILABLE', message: projection?.reason ?? `Host ${adapter.id} has no worker preflight`, retryable: false } };
|
|
59
|
+
const env = sanitizeWorkerEnv(parentEnv, projection.env);
|
|
60
|
+
return new Promise(resolve => {
|
|
61
|
+
const child = spawn(projection.command, projection.args, { cwd: request.worktreePath, shell: false, stdio: ['ignore', 'pipe', 'pipe'], env });
|
|
62
|
+
let output = '';
|
|
63
|
+
const append = (chunk) => { if (output.length < 100_000)
|
|
64
|
+
output += chunk.toString('utf8').slice(0, 100_000 - output.length); };
|
|
65
|
+
child.stdout?.on('data', append);
|
|
66
|
+
child.stderr?.on('data', append);
|
|
67
|
+
const timer = setTimeout(() => child.kill('SIGTERM'), Math.min(request.timeoutMs, 30_000));
|
|
68
|
+
child.on('error', error => { clearTimeout(timer); resolve({ passed: false, failure: { code: 'WORKER_PREFLIGHT_FAILED', message: error.message, retryable: false } }); });
|
|
69
|
+
child.on('close', exitCode => {
|
|
70
|
+
clearTimeout(timer);
|
|
71
|
+
const failure = exitCode === 0 ? undefined : parseProviderFailure(output, exitCode);
|
|
72
|
+
resolve(failure ? { passed: false, failure } : { passed: true, outputHash: createHash('sha256').update(output).digest('hex') });
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function sanitizeWorkerEnv(parentEnv, projected) {
|
|
77
|
+
return { ...Object.fromEntries(Object.entries(parentEnv).filter(([key, value]) => ALLOWED_ENV_KEYS.has(key) && typeof value === 'string')), ...projected };
|
|
78
|
+
}
|
|
40
79
|
export function launchWorker(adapter, request, paths, options = {}) {
|
|
41
80
|
const projection = projectWorkerLaunch(adapter, request);
|
|
42
81
|
if (projection.status !== 'supported' || !projection.command) {
|
|
@@ -45,15 +84,15 @@ export function launchWorker(adapter, request, paths, options = {}) {
|
|
|
45
84
|
mkdirSync(dirname(paths.stdoutFile), { recursive: true });
|
|
46
85
|
const stdoutFd = openSync(paths.stdoutFile, 'a', 0o600);
|
|
47
86
|
const stderrFd = openSync(paths.stderrFile, 'a', 0o600);
|
|
48
|
-
const parentEnv =
|
|
49
|
-
.filter(([key, value]) => ALLOWED_ENV_KEYS.has(key) && typeof value === 'string'));
|
|
87
|
+
const parentEnv = sanitizeWorkerEnv(options.parentEnv ?? process.env, projection.env);
|
|
50
88
|
const child = spawn(projection.command, projection.args, {
|
|
51
89
|
cwd: request.worktreePath,
|
|
52
90
|
shell: false,
|
|
53
91
|
detached: projection.detached,
|
|
54
92
|
stdio: ['ignore', stdoutFd, stderrFd],
|
|
55
|
-
env:
|
|
93
|
+
env: parentEnv,
|
|
56
94
|
});
|
|
95
|
+
writeJsonAtomic(paths.statusFile, { workerId: request.workerId, runId: request.runId, stepId: request.stepId, worktreePath: request.worktreePath, state: 'started', pid: child.pid, startedAt: Date.now(), updatedAt: Date.now() });
|
|
57
96
|
// Keep the child referenced until completion so callers can durably record
|
|
58
97
|
// the handoff. Detaching the process group is a host concern; unref would
|
|
59
98
|
// let Node exit before a real Claude worker writes its handoff file.
|
|
@@ -69,7 +108,11 @@ export function launchWorker(adapter, request, paths, options = {}) {
|
|
|
69
108
|
};
|
|
70
109
|
const timer = setTimeout(() => { timedOut = true; terminate(); }, request.timeoutMs);
|
|
71
110
|
timer.unref();
|
|
72
|
-
const heartbeat = setInterval(() =>
|
|
111
|
+
const heartbeat = setInterval(() => {
|
|
112
|
+
const heartbeatAt = Date.now();
|
|
113
|
+
writeJsonAtomic(paths.statusFile, { workerId: request.workerId, runId: request.runId, stepId: request.stepId, worktreePath: request.worktreePath, state: 'started', pid: child.pid, heartbeatAt, updatedAt: heartbeatAt });
|
|
114
|
+
options.onHeartbeat?.();
|
|
115
|
+
}, 10_000);
|
|
73
116
|
heartbeat.unref();
|
|
74
117
|
const completion = new Promise((resolve, reject) => {
|
|
75
118
|
child.on('error', error => {
|
|
@@ -93,7 +136,20 @@ export function launchWorker(adapter, request, paths, options = {}) {
|
|
|
93
136
|
catch {
|
|
94
137
|
// Process exit is only a report event; missing handoff is handled by verification.
|
|
95
138
|
}
|
|
96
|
-
|
|
139
|
+
let stdout = '';
|
|
140
|
+
let stderr = '';
|
|
141
|
+
try {
|
|
142
|
+
stdout = readFileSync(paths.stdoutFile, 'utf8');
|
|
143
|
+
}
|
|
144
|
+
catch { /* best effort */ }
|
|
145
|
+
try {
|
|
146
|
+
stderr = readFileSync(paths.stderrFile, 'utf8');
|
|
147
|
+
}
|
|
148
|
+
catch { /* best effort */ }
|
|
149
|
+
const diagnostics = [stdout, stderr].filter(Boolean).join('\n');
|
|
150
|
+
const failure = timedOut ? { code: 'WORKER_TIMED_OUT', message: 'Worker timed out', retryable: true, exitCode, diagnosticHash: createHash('sha256').update(diagnostics).digest('hex') } : parseProviderFailure(diagnostics, exitCode);
|
|
151
|
+
writeJsonAtomic(paths.statusFile, { workerId: request.workerId, runId: request.runId, stepId: request.stepId, worktreePath: request.worktreePath, state: handoff?.hostStatus === 'completed' ? 'completed' : failure ? 'failed' : 'exited', pid: child.pid, exitCode, signal, failure, updatedAt: Date.now() });
|
|
152
|
+
resolve({ pid: child.pid, exitCode, signal, timedOut, cancelled, handoff, failure });
|
|
97
153
|
});
|
|
98
154
|
});
|
|
99
155
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-launcher.js","sourceRoot":"","sources":["../../src/workers/host-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"host-launcher.js","sourceRoot":"","sources":["../../src/workers/host-launcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devflow-tools/workflow-engine",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.20",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"clean": "rm -rf dist"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@devflow-tools/sdk": "0.18.
|
|
25
|
-
"@devflow-tools/telemetry": "0.18.
|
|
24
|
+
"@devflow-tools/sdk": "0.18.20",
|
|
25
|
+
"@devflow-tools/telemetry": "0.18.20"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"typescript": "^5.5.0",
|