agent-relay 3.1.14 → 3.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +126 -11
- package/dist/src/cli/commands/core.d.ts +3 -0
- package/dist/src/cli/commands/core.d.ts.map +1 -1
- package/dist/src/cli/commands/core.js +17 -0
- package/dist/src/cli/commands/core.js.map +1 -1
- package/dist/src/cli/lib/broker-lifecycle.d.ts.map +1 -1
- package/dist/src/cli/lib/broker-lifecycle.js +47 -81
- package/dist/src/cli/lib/broker-lifecycle.js.map +1 -1
- package/dist/src/cli/lib/core-maintenance.js +1 -1
- package/dist/src/cli/lib/core-maintenance.js.map +1 -1
- package/package.json +8 -8
- package/packages/acp-bridge/package.json +2 -2
- package/packages/config/package.json +1 -1
- package/packages/hooks/package.json +4 -4
- package/packages/memory/package.json +2 -2
- package/packages/openclaw/README.md +4 -7
- package/packages/openclaw/dist/setup.d.ts.map +1 -1
- package/packages/openclaw/dist/setup.js +10 -3
- package/packages/openclaw/dist/setup.js.map +1 -1
- package/packages/openclaw/package.json +2 -2
- package/packages/openclaw/skill/SKILL.md +27 -5
- package/packages/openclaw/src/setup.ts +10 -3
- package/packages/policy/package.json +2 -2
- package/packages/sdk/dist/client.d.ts +1 -0
- package/packages/sdk/dist/client.d.ts.map +1 -1
- package/packages/sdk/dist/client.js +9 -1
- package/packages/sdk/dist/client.js.map +1 -1
- package/packages/sdk/dist/workflows/runner.d.ts +20 -0
- package/packages/sdk/dist/workflows/runner.d.ts.map +1 -1
- package/packages/sdk/dist/workflows/runner.js +130 -11
- package/packages/sdk/dist/workflows/runner.js.map +1 -1
- package/packages/sdk/dist/workflows/types.d.ts +26 -0
- package/packages/sdk/dist/workflows/types.d.ts.map +1 -1
- package/packages/sdk/dist/workflows/types.js.map +1 -1
- package/packages/sdk/package.json +2 -2
- package/packages/sdk/src/client.ts +10 -1
- package/packages/sdk/src/workflows/runner.ts +158 -11
- package/packages/sdk/src/workflows/schema.json +219 -40
- package/packages/sdk/src/workflows/types.ts +29 -0
- package/packages/sdk-py/pyproject.toml +1 -1
- package/packages/sdk-py/src/agent_relay/__init__.py +2 -0
- package/packages/sdk-py/src/agent_relay/types.py +33 -0
- package/packages/telemetry/package.json +1 -1
- package/packages/trajectory/package.json +2 -2
- package/packages/user-directory/package.json +2 -2
- package/packages/utils/package.json +2 -2
- package/bin/agent-relay-broker-linux-arm64 +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workflows/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workflows/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/workflows/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/workflows/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoRH,2EAA2E;AAC3E,MAAM,UAAU,mBAAmB,CAAC,IAAkB;IACpD,OAAO,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC;AACvC,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,cAAc,CAAC,IAAkB;IAC/C,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;AAClC,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,YAAY,CAAC,IAAkB;IAC7C,OAAO,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC;AAChC,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,WAAW,CAAC,IAAkB;IAC5C,OAAO,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;AACnE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/sdk",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.16",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"typescript": "^5.7.3"
|
|
82
82
|
},
|
|
83
83
|
"dependencies": {
|
|
84
|
-
"@agent-relay/config": "3.1.
|
|
84
|
+
"@agent-relay/config": "3.1.16",
|
|
85
85
|
"@relaycast/sdk": "^0.4.0",
|
|
86
86
|
"yaml": "^2.7.0"
|
|
87
87
|
}
|
|
@@ -222,6 +222,10 @@ export class AgentRelayClient {
|
|
|
222
222
|
};
|
|
223
223
|
}
|
|
224
224
|
|
|
225
|
+
get brokerPid(): number | undefined {
|
|
226
|
+
return this.child?.pid;
|
|
227
|
+
}
|
|
228
|
+
|
|
225
229
|
async start(): Promise<void> {
|
|
226
230
|
if (this.child) {
|
|
227
231
|
return;
|
|
@@ -496,7 +500,12 @@ export class AgentRelayClient {
|
|
|
496
500
|
});
|
|
497
501
|
|
|
498
502
|
this.exitPromise = new Promise<void>((resolve) => {
|
|
499
|
-
|
|
503
|
+
// Use 'close' instead of 'exit' so that all buffered stderr/stdout
|
|
504
|
+
// data has been consumed before we build the error message. The
|
|
505
|
+
// 'exit' event fires when the process terminates, but stdio streams
|
|
506
|
+
// may still have unread data; 'close' fires after both the process
|
|
507
|
+
// exits AND all stdio streams have ended.
|
|
508
|
+
child.once('close', (code, signal) => {
|
|
500
509
|
const detail = this.lastStderrLine ? `: ${this.lastStderrLine}` : '';
|
|
501
510
|
const error = new AgentRelayProcessError(
|
|
502
511
|
`broker exited (code=${code ?? 'null'}, signal=${signal ?? 'null'})${detail}`
|
|
@@ -30,6 +30,7 @@ import type {
|
|
|
30
30
|
DryRunWave,
|
|
31
31
|
ErrorHandlingConfig,
|
|
32
32
|
IdleNudgeConfig,
|
|
33
|
+
PathDefinition,
|
|
33
34
|
PreflightCheck,
|
|
34
35
|
RelayYamlConfig,
|
|
35
36
|
SwarmPattern,
|
|
@@ -202,6 +203,8 @@ export class WorkflowRunner {
|
|
|
202
203
|
private readonly lastIdleLog = new Map<string, number>();
|
|
203
204
|
/** Tracks last logged activity type per agent to avoid duplicate status lines. */
|
|
204
205
|
private readonly lastActivity = new Map<string, string>();
|
|
206
|
+
/** Resolved named paths from the top-level `paths` config, keyed by name → absolute directory. */
|
|
207
|
+
private resolvedPaths = new Map<string, string>();
|
|
205
208
|
|
|
206
209
|
constructor(options: WorkflowRunnerOptions = {}) {
|
|
207
210
|
this.db = options.db ?? new InMemoryWorkflowDb();
|
|
@@ -213,6 +216,89 @@ export class WorkflowRunner {
|
|
|
213
216
|
this.executor = options.executor;
|
|
214
217
|
}
|
|
215
218
|
|
|
219
|
+
// ── Path resolution ─────────────────────────────────────────────────────
|
|
220
|
+
|
|
221
|
+
/** Expand environment variables like $HOME or $VAR in a path string. */
|
|
222
|
+
private static resolveEnvVars(p: string): string {
|
|
223
|
+
return p.replace(/\$([A-Za-z_][A-Za-z0-9_]*)/g, (_match, varName: string) => {
|
|
224
|
+
return process.env[varName] ?? _match;
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Resolve and validate the top-level `paths` definitions from the config.
|
|
230
|
+
* Returns a map of name → absolute directory path.
|
|
231
|
+
* Throws if a required path does not exist.
|
|
232
|
+
*/
|
|
233
|
+
private resolvePathDefinitions(
|
|
234
|
+
pathDefs: PathDefinition[] | undefined,
|
|
235
|
+
baseCwd: string
|
|
236
|
+
): { resolved: Map<string, string>; errors: string[]; warnings: string[] } {
|
|
237
|
+
const resolved = new Map<string, string>();
|
|
238
|
+
const errors: string[] = [];
|
|
239
|
+
const warnings: string[] = [];
|
|
240
|
+
if (!pathDefs || pathDefs.length === 0) return { resolved, errors, warnings };
|
|
241
|
+
|
|
242
|
+
const seenNames = new Set<string>();
|
|
243
|
+
for (const pd of pathDefs) {
|
|
244
|
+
if (seenNames.has(pd.name)) {
|
|
245
|
+
errors.push(`Duplicate path name "${pd.name}"`);
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
seenNames.add(pd.name);
|
|
249
|
+
|
|
250
|
+
const expanded = WorkflowRunner.resolveEnvVars(pd.path);
|
|
251
|
+
const abs = path.resolve(baseCwd, expanded);
|
|
252
|
+
resolved.set(pd.name, abs);
|
|
253
|
+
|
|
254
|
+
const isRequired = pd.required !== false; // default true
|
|
255
|
+
if (!existsSync(abs)) {
|
|
256
|
+
if (isRequired) {
|
|
257
|
+
errors.push(`Path "${pd.name}" resolves to "${abs}" which does not exist (required)`);
|
|
258
|
+
} else {
|
|
259
|
+
warnings.push(`Path "${pd.name}" resolves to "${abs}" which does not exist (optional)`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
return { resolved, errors, warnings };
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Resolve an agent's effective working directory, considering `workdir` (named path reference)
|
|
269
|
+
* and `cwd` (explicit path). `workdir` takes precedence when both are set.
|
|
270
|
+
*/
|
|
271
|
+
private resolveAgentCwd(agent: AgentDefinition): string {
|
|
272
|
+
if (agent.workdir) {
|
|
273
|
+
const resolved = this.resolvedPaths.get(agent.workdir);
|
|
274
|
+
if (!resolved) {
|
|
275
|
+
throw new Error(
|
|
276
|
+
`Agent "${agent.name}" references workdir "${agent.workdir}" which is not defined in paths`
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
return resolved;
|
|
280
|
+
}
|
|
281
|
+
if (agent.cwd) {
|
|
282
|
+
return path.resolve(this.cwd, agent.cwd);
|
|
283
|
+
}
|
|
284
|
+
return this.cwd;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Resolve a step's working directory from its `workdir` field (named path reference).
|
|
289
|
+
* Returns undefined if no workdir is set.
|
|
290
|
+
*/
|
|
291
|
+
private resolveStepWorkdir(step: WorkflowStep): string | undefined {
|
|
292
|
+
if (!step.workdir) return undefined;
|
|
293
|
+
const resolved = this.resolvedPaths.get(step.workdir);
|
|
294
|
+
if (!resolved) {
|
|
295
|
+
throw new Error(
|
|
296
|
+
`Step "${step.name}" references workdir "${step.workdir}" which is not defined in paths`
|
|
297
|
+
);
|
|
298
|
+
}
|
|
299
|
+
return resolved;
|
|
300
|
+
}
|
|
301
|
+
|
|
216
302
|
// ── Progress logging ────────────────────────────────────────────────────
|
|
217
303
|
|
|
218
304
|
/** Log a progress message with elapsed time since run start. */
|
|
@@ -496,6 +582,21 @@ export class WorkflowRunner {
|
|
|
496
582
|
};
|
|
497
583
|
}
|
|
498
584
|
|
|
585
|
+
// 1b. Resolve and validate named paths
|
|
586
|
+
const pathResult = this.resolvePathDefinitions(resolved.paths, this.cwd);
|
|
587
|
+
errors.push(...pathResult.errors);
|
|
588
|
+
warnings.push(...pathResult.warnings);
|
|
589
|
+
const dryRunPaths = pathResult.resolved;
|
|
590
|
+
|
|
591
|
+
// Validate workdir references on agents
|
|
592
|
+
for (const agent of resolved.agents) {
|
|
593
|
+
if (agent.workdir && !dryRunPaths.has(agent.workdir)) {
|
|
594
|
+
errors.push(
|
|
595
|
+
`Agent "${agent.name}" references workdir "${agent.workdir}" which is not defined in paths`
|
|
596
|
+
);
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
|
|
499
600
|
// 2. Find target workflow
|
|
500
601
|
const workflows = resolved.workflows ?? [];
|
|
501
602
|
const workflow = workflowName ? workflows.find((w) => w.name === workflowName) : workflows[0];
|
|
@@ -566,6 +667,15 @@ export class WorkflowRunner {
|
|
|
566
667
|
}
|
|
567
668
|
}
|
|
568
669
|
|
|
670
|
+
// Validate workdir references on steps
|
|
671
|
+
for (const step of resolvedSteps) {
|
|
672
|
+
if (step.workdir && !dryRunPaths.has(step.workdir)) {
|
|
673
|
+
errors.push(
|
|
674
|
+
`Step "${step.name}" references workdir "${step.workdir}" which is not defined in paths`
|
|
675
|
+
);
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
|
|
569
679
|
// Validate cwd paths
|
|
570
680
|
for (const agent of resolved.agents) {
|
|
571
681
|
if (agent.cwd) {
|
|
@@ -668,7 +778,7 @@ export class WorkflowRunner {
|
|
|
668
778
|
name: a.name,
|
|
669
779
|
cli: a.cli,
|
|
670
780
|
role: a.role,
|
|
671
|
-
cwd: a.cwd,
|
|
781
|
+
cwd: a.workdir ? dryRunPaths.get(a.workdir) : a.cwd,
|
|
672
782
|
stepCount: stepAgentCounts.get(a.name) ?? 0,
|
|
673
783
|
}));
|
|
674
784
|
|
|
@@ -992,6 +1102,19 @@ export class WorkflowRunner {
|
|
|
992
1102
|
vars?: VariableContext
|
|
993
1103
|
): Promise<WorkflowRunRow> {
|
|
994
1104
|
const resolved = vars ? this.resolveVariables(config, vars) : config;
|
|
1105
|
+
|
|
1106
|
+
// Resolve and validate named paths from the top-level `paths` config
|
|
1107
|
+
const pathResult = this.resolvePathDefinitions(resolved.paths, this.cwd);
|
|
1108
|
+
if (pathResult.errors.length > 0) {
|
|
1109
|
+
throw new Error(`Path validation failed:\n ${pathResult.errors.join('\n ')}`);
|
|
1110
|
+
}
|
|
1111
|
+
this.resolvedPaths = pathResult.resolved;
|
|
1112
|
+
if (this.resolvedPaths.size > 0) {
|
|
1113
|
+
for (const [name, abs] of this.resolvedPaths) {
|
|
1114
|
+
console.log(`[workflow] path "${name}" → ${abs}`);
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
|
|
995
1118
|
const workflows = resolved.workflows ?? [];
|
|
996
1119
|
|
|
997
1120
|
const workflow = workflowName ? workflows.find((w) => w.name === workflowName) : workflows[0];
|
|
@@ -1073,6 +1196,14 @@ export class WorkflowRunner {
|
|
|
1073
1196
|
}
|
|
1074
1197
|
|
|
1075
1198
|
const config = vars ? this.resolveVariables(run.config, vars) : run.config;
|
|
1199
|
+
|
|
1200
|
+
// Resolve path definitions (same as execute()) so workdir lookups work on resume
|
|
1201
|
+
const pathResult = this.resolvePathDefinitions(config.paths, this.cwd);
|
|
1202
|
+
if (pathResult.errors.length > 0) {
|
|
1203
|
+
throw new Error(`Path validation failed:\n ${pathResult.errors.join('\n ')}`);
|
|
1204
|
+
}
|
|
1205
|
+
this.resolvedPaths = pathResult.resolved;
|
|
1206
|
+
|
|
1076
1207
|
const workflows = config.workflows ?? [];
|
|
1077
1208
|
const workflow = workflows.find((w) => w.name === run.workflowName);
|
|
1078
1209
|
if (!workflow) {
|
|
@@ -1732,10 +1863,13 @@ export class WorkflowRunner {
|
|
|
1732
1863
|
return value !== undefined ? String(value) : _match;
|
|
1733
1864
|
});
|
|
1734
1865
|
|
|
1866
|
+
// Resolve step workdir (named path reference) for deterministic steps
|
|
1867
|
+
const stepCwd = this.resolveStepWorkdir(step) ?? this.cwd;
|
|
1868
|
+
|
|
1735
1869
|
try {
|
|
1736
1870
|
// Delegate to executor if present
|
|
1737
1871
|
if (this.executor?.executeDeterministicStep) {
|
|
1738
|
-
const result = await this.executor.executeDeterministicStep(step, resolvedCommand,
|
|
1872
|
+
const result = await this.executor.executeDeterministicStep(step, resolvedCommand, stepCwd);
|
|
1739
1873
|
const failOnError = step.failOnError !== false;
|
|
1740
1874
|
if (failOnError && result.exitCode !== 0) {
|
|
1741
1875
|
throw new Error(`Command failed with exit code ${result.exitCode}: ${result.output.slice(0, 500)}`);
|
|
@@ -1761,7 +1895,7 @@ export class WorkflowRunner {
|
|
|
1761
1895
|
const output = await new Promise<string>((resolve, reject) => {
|
|
1762
1896
|
const child = cpSpawn('sh', ['-c', resolvedCommand], {
|
|
1763
1897
|
stdio: 'pipe',
|
|
1764
|
-
cwd:
|
|
1898
|
+
cwd: stepCwd,
|
|
1765
1899
|
env: { ...process.env },
|
|
1766
1900
|
});
|
|
1767
1901
|
|
|
@@ -1900,6 +2034,9 @@ export class WorkflowRunner {
|
|
|
1900
2034
|
: path.join('.worktrees', step.name);
|
|
1901
2035
|
const createBranch = step.createBranch !== false;
|
|
1902
2036
|
|
|
2037
|
+
// Resolve workdir for worktree steps (same as deterministic/agent steps)
|
|
2038
|
+
const stepCwd = this.resolveStepWorkdir(step) ?? this.cwd;
|
|
2039
|
+
|
|
1903
2040
|
if (!branch) {
|
|
1904
2041
|
const errorMsg = 'Worktree step missing required "branch" field';
|
|
1905
2042
|
await this.markStepFailed(state, errorMsg, runId);
|
|
@@ -1909,7 +2046,7 @@ export class WorkflowRunner {
|
|
|
1909
2046
|
try {
|
|
1910
2047
|
// Build the git worktree command
|
|
1911
2048
|
// If createBranch is true and branch doesn't exist, use -b flag
|
|
1912
|
-
const absoluteWorktreePath = path.resolve(
|
|
2049
|
+
const absoluteWorktreePath = path.resolve(stepCwd, worktreePath);
|
|
1913
2050
|
|
|
1914
2051
|
// First, check if the branch already exists
|
|
1915
2052
|
const checkBranchCmd = `git rev-parse --verify --quiet ${branch} 2>/dev/null`;
|
|
@@ -1918,7 +2055,7 @@ export class WorkflowRunner {
|
|
|
1918
2055
|
await new Promise<void>((resolve) => {
|
|
1919
2056
|
const checkChild = cpSpawn('sh', ['-c', checkBranchCmd], {
|
|
1920
2057
|
stdio: 'pipe',
|
|
1921
|
-
cwd:
|
|
2058
|
+
cwd: stepCwd,
|
|
1922
2059
|
env: { ...process.env },
|
|
1923
2060
|
});
|
|
1924
2061
|
checkChild.on('close', (code) => {
|
|
@@ -1946,7 +2083,7 @@ export class WorkflowRunner {
|
|
|
1946
2083
|
const output = await new Promise<string>((resolve, reject) => {
|
|
1947
2084
|
const child = cpSpawn('sh', ['-c', worktreeCmd], {
|
|
1948
2085
|
stdio: 'pipe',
|
|
1949
|
-
cwd:
|
|
2086
|
+
cwd: stepCwd,
|
|
1950
2087
|
env: { ...process.env },
|
|
1951
2088
|
});
|
|
1952
2089
|
|
|
@@ -2122,12 +2259,21 @@ export class WorkflowRunner {
|
|
|
2122
2259
|
}
|
|
2123
2260
|
}
|
|
2124
2261
|
|
|
2262
|
+
// Apply step-level workdir override to agent definition if present
|
|
2263
|
+
let effectiveAgentDef = agentDef;
|
|
2264
|
+
if (step.workdir) {
|
|
2265
|
+
const stepWorkdir = this.resolveStepWorkdir(step);
|
|
2266
|
+
if (stepWorkdir) {
|
|
2267
|
+
effectiveAgentDef = { ...agentDef, cwd: stepWorkdir, workdir: undefined };
|
|
2268
|
+
}
|
|
2269
|
+
}
|
|
2270
|
+
|
|
2125
2271
|
// Spawn agent via AgentRelay
|
|
2126
|
-
this.log(`[${step.name}] Spawning agent "${
|
|
2272
|
+
this.log(`[${step.name}] Spawning agent "${effectiveAgentDef.name}" (cli: ${effectiveAgentDef.cli})${step.workdir ? ` [workdir: ${step.workdir}]` : ''}`);
|
|
2127
2273
|
const resolvedStep = { ...step, task: resolvedTask };
|
|
2128
2274
|
const output = this.executor
|
|
2129
|
-
? await this.executor.executeAgentStep(resolvedStep,
|
|
2130
|
-
: await this.spawnAndWait(
|
|
2275
|
+
? await this.executor.executeAgentStep(resolvedStep, effectiveAgentDef, resolvedTask, timeoutMs)
|
|
2276
|
+
: await this.spawnAndWait(effectiveAgentDef, resolvedStep, timeoutMs);
|
|
2131
2277
|
this.log(`[${step.name}] Agent "${agentDef.name}" exited`);
|
|
2132
2278
|
|
|
2133
2279
|
// Run verification if configured
|
|
@@ -2336,7 +2482,7 @@ export class WorkflowRunner {
|
|
|
2336
2482
|
const output = await new Promise<string>((resolve, reject) => {
|
|
2337
2483
|
const child = cpSpawn(cmd, args, {
|
|
2338
2484
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
2339
|
-
cwd:
|
|
2485
|
+
cwd: this.resolveAgentCwd(agentDef),
|
|
2340
2486
|
env: this.getRelayEnv() ?? { ...process.env },
|
|
2341
2487
|
});
|
|
2342
2488
|
|
|
@@ -2515,6 +2661,7 @@ export class WorkflowRunner {
|
|
|
2515
2661
|
let ptyChunks: string[] = [];
|
|
2516
2662
|
|
|
2517
2663
|
try {
|
|
2664
|
+
const agentCwd = this.resolveAgentCwd(agentDef);
|
|
2518
2665
|
agent = await this.relay.spawnPty({
|
|
2519
2666
|
name: agentName,
|
|
2520
2667
|
cli: agentDef.cli,
|
|
@@ -2523,7 +2670,7 @@ export class WorkflowRunner {
|
|
|
2523
2670
|
channels: agentChannels,
|
|
2524
2671
|
task: taskWithExit,
|
|
2525
2672
|
idleThresholdSecs: agentDef.constraints?.idleThresholdSecs,
|
|
2526
|
-
cwd:
|
|
2673
|
+
cwd: agentCwd !== this.cwd ? agentCwd : undefined,
|
|
2527
2674
|
});
|
|
2528
2675
|
|
|
2529
2676
|
// Re-key PTY maps if broker assigned a different name than requested
|