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.
Files changed (47) hide show
  1. package/dist/index.cjs +126 -11
  2. package/dist/src/cli/commands/core.d.ts +3 -0
  3. package/dist/src/cli/commands/core.d.ts.map +1 -1
  4. package/dist/src/cli/commands/core.js +17 -0
  5. package/dist/src/cli/commands/core.js.map +1 -1
  6. package/dist/src/cli/lib/broker-lifecycle.d.ts.map +1 -1
  7. package/dist/src/cli/lib/broker-lifecycle.js +47 -81
  8. package/dist/src/cli/lib/broker-lifecycle.js.map +1 -1
  9. package/dist/src/cli/lib/core-maintenance.js +1 -1
  10. package/dist/src/cli/lib/core-maintenance.js.map +1 -1
  11. package/package.json +8 -8
  12. package/packages/acp-bridge/package.json +2 -2
  13. package/packages/config/package.json +1 -1
  14. package/packages/hooks/package.json +4 -4
  15. package/packages/memory/package.json +2 -2
  16. package/packages/openclaw/README.md +4 -7
  17. package/packages/openclaw/dist/setup.d.ts.map +1 -1
  18. package/packages/openclaw/dist/setup.js +10 -3
  19. package/packages/openclaw/dist/setup.js.map +1 -1
  20. package/packages/openclaw/package.json +2 -2
  21. package/packages/openclaw/skill/SKILL.md +27 -5
  22. package/packages/openclaw/src/setup.ts +10 -3
  23. package/packages/policy/package.json +2 -2
  24. package/packages/sdk/dist/client.d.ts +1 -0
  25. package/packages/sdk/dist/client.d.ts.map +1 -1
  26. package/packages/sdk/dist/client.js +9 -1
  27. package/packages/sdk/dist/client.js.map +1 -1
  28. package/packages/sdk/dist/workflows/runner.d.ts +20 -0
  29. package/packages/sdk/dist/workflows/runner.d.ts.map +1 -1
  30. package/packages/sdk/dist/workflows/runner.js +130 -11
  31. package/packages/sdk/dist/workflows/runner.js.map +1 -1
  32. package/packages/sdk/dist/workflows/types.d.ts +26 -0
  33. package/packages/sdk/dist/workflows/types.d.ts.map +1 -1
  34. package/packages/sdk/dist/workflows/types.js.map +1 -1
  35. package/packages/sdk/package.json +2 -2
  36. package/packages/sdk/src/client.ts +10 -1
  37. package/packages/sdk/src/workflows/runner.ts +158 -11
  38. package/packages/sdk/src/workflows/schema.json +219 -40
  39. package/packages/sdk/src/workflows/types.ts +29 -0
  40. package/packages/sdk-py/pyproject.toml +1 -1
  41. package/packages/sdk-py/src/agent_relay/__init__.py +2 -0
  42. package/packages/sdk-py/src/agent_relay/types.py +33 -0
  43. package/packages/telemetry/package.json +1 -1
  44. package/packages/trajectory/package.json +2 -2
  45. package/packages/user-directory/package.json +2 -2
  46. package/packages/utils/package.json +2 -2
  47. package/bin/agent-relay-broker-linux-arm64 +0 -0
package/dist/index.cjs CHANGED
@@ -9052,6 +9052,9 @@ var AgentRelayClient = class _AgentRelayClient {
9052
9052
  this.stderrListeners.delete(listener);
9053
9053
  };
9054
9054
  }
9055
+ get brokerPid() {
9056
+ return this.child?.pid;
9057
+ }
9055
9058
  async start() {
9056
9059
  if (this.child) {
9057
9060
  return;
@@ -9279,7 +9282,7 @@ var AgentRelayClient = class _AgentRelayClient {
9279
9282
  }
9280
9283
  });
9281
9284
  this.exitPromise = new Promise((resolve3) => {
9282
- child.once("exit", (code, signal) => {
9285
+ child.once("close", (code, signal) => {
9283
9286
  const detail = this.lastStderrLine ? `: ${this.lastStderrLine}` : "";
9284
9287
  const error95 = new AgentRelayProcessError(`broker exited (code=${code ?? "null"}, signal=${signal ?? "null"})${detail}`);
9285
9288
  this.failAllPending(error95);
@@ -47610,6 +47613,8 @@ var WorkflowRunner = class _WorkflowRunner {
47610
47613
  lastIdleLog = /* @__PURE__ */ new Map();
47611
47614
  /** Tracks last logged activity type per agent to avoid duplicate status lines. */
47612
47615
  lastActivity = /* @__PURE__ */ new Map();
47616
+ /** Resolved named paths from the top-level `paths` config, keyed by name → absolute directory. */
47617
+ resolvedPaths = /* @__PURE__ */ new Map();
47613
47618
  constructor(options = {}) {
47614
47619
  this.db = options.db ?? new InMemoryWorkflowDb();
47615
47620
  this.workspaceId = options.workspaceId ?? "local";
@@ -47619,6 +47624,75 @@ var WorkflowRunner = class _WorkflowRunner {
47619
47624
  this.workersPath = import_node_path8.default.join(this.cwd, ".agent-relay", "team", "workers.json");
47620
47625
  this.executor = options.executor;
47621
47626
  }
47627
+ // ── Path resolution ─────────────────────────────────────────────────────
47628
+ /** Expand environment variables like $HOME or $VAR in a path string. */
47629
+ static resolveEnvVars(p) {
47630
+ return p.replace(/\$([A-Za-z_][A-Za-z0-9_]*)/g, (_match, varName) => {
47631
+ return process.env[varName] ?? _match;
47632
+ });
47633
+ }
47634
+ /**
47635
+ * Resolve and validate the top-level `paths` definitions from the config.
47636
+ * Returns a map of name → absolute directory path.
47637
+ * Throws if a required path does not exist.
47638
+ */
47639
+ resolvePathDefinitions(pathDefs, baseCwd) {
47640
+ const resolved = /* @__PURE__ */ new Map();
47641
+ const errors = [];
47642
+ const warnings = [];
47643
+ if (!pathDefs || pathDefs.length === 0)
47644
+ return { resolved, errors, warnings };
47645
+ const seenNames = /* @__PURE__ */ new Set();
47646
+ for (const pd of pathDefs) {
47647
+ if (seenNames.has(pd.name)) {
47648
+ errors.push(`Duplicate path name "${pd.name}"`);
47649
+ continue;
47650
+ }
47651
+ seenNames.add(pd.name);
47652
+ const expanded = _WorkflowRunner.resolveEnvVars(pd.path);
47653
+ const abs = import_node_path8.default.resolve(baseCwd, expanded);
47654
+ resolved.set(pd.name, abs);
47655
+ const isRequired = pd.required !== false;
47656
+ if (!(0, import_node_fs4.existsSync)(abs)) {
47657
+ if (isRequired) {
47658
+ errors.push(`Path "${pd.name}" resolves to "${abs}" which does not exist (required)`);
47659
+ } else {
47660
+ warnings.push(`Path "${pd.name}" resolves to "${abs}" which does not exist (optional)`);
47661
+ }
47662
+ }
47663
+ }
47664
+ return { resolved, errors, warnings };
47665
+ }
47666
+ /**
47667
+ * Resolve an agent's effective working directory, considering `workdir` (named path reference)
47668
+ * and `cwd` (explicit path). `workdir` takes precedence when both are set.
47669
+ */
47670
+ resolveAgentCwd(agent) {
47671
+ if (agent.workdir) {
47672
+ const resolved = this.resolvedPaths.get(agent.workdir);
47673
+ if (!resolved) {
47674
+ throw new Error(`Agent "${agent.name}" references workdir "${agent.workdir}" which is not defined in paths`);
47675
+ }
47676
+ return resolved;
47677
+ }
47678
+ if (agent.cwd) {
47679
+ return import_node_path8.default.resolve(this.cwd, agent.cwd);
47680
+ }
47681
+ return this.cwd;
47682
+ }
47683
+ /**
47684
+ * Resolve a step's working directory from its `workdir` field (named path reference).
47685
+ * Returns undefined if no workdir is set.
47686
+ */
47687
+ resolveStepWorkdir(step) {
47688
+ if (!step.workdir)
47689
+ return void 0;
47690
+ const resolved = this.resolvedPaths.get(step.workdir);
47691
+ if (!resolved) {
47692
+ throw new Error(`Step "${step.name}" references workdir "${step.workdir}" which is not defined in paths`);
47693
+ }
47694
+ return resolved;
47695
+ }
47622
47696
  // ── Progress logging ────────────────────────────────────────────────────
47623
47697
  /** Log a progress message with elapsed time since run start. */
47624
47698
  log(msg) {
@@ -47852,6 +47926,15 @@ var WorkflowRunner = class _WorkflowRunner {
47852
47926
  estimatedWaves: 0
47853
47927
  };
47854
47928
  }
47929
+ const pathResult = this.resolvePathDefinitions(resolved.paths, this.cwd);
47930
+ errors.push(...pathResult.errors);
47931
+ warnings.push(...pathResult.warnings);
47932
+ const dryRunPaths = pathResult.resolved;
47933
+ for (const agent of resolved.agents) {
47934
+ if (agent.workdir && !dryRunPaths.has(agent.workdir)) {
47935
+ errors.push(`Agent "${agent.name}" references workdir "${agent.workdir}" which is not defined in paths`);
47936
+ }
47937
+ }
47855
47938
  const workflows = resolved.workflows ?? [];
47856
47939
  const workflow2 = workflowName ? workflows.find((w) => w.name === workflowName) : workflows[0];
47857
47940
  if (!workflow2) {
@@ -47909,6 +47992,11 @@ ${err.suggestion}`);
47909
47992
  stepAgentCounts.set(step.agent, (stepAgentCounts.get(step.agent) ?? 0) + 1);
47910
47993
  }
47911
47994
  }
47995
+ for (const step of resolvedSteps) {
47996
+ if (step.workdir && !dryRunPaths.has(step.workdir)) {
47997
+ errors.push(`Step "${step.name}" references workdir "${step.workdir}" which is not defined in paths`);
47998
+ }
47999
+ }
47912
48000
  for (const agent of resolved.agents) {
47913
48001
  if (agent.cwd) {
47914
48002
  const resolvedCwd = import_node_path8.default.resolve(this.cwd, agent.cwd);
@@ -47989,7 +48077,7 @@ ${err.suggestion}`);
47989
48077
  name: a.name,
47990
48078
  cli: a.cli,
47991
48079
  role: a.role,
47992
- cwd: a.cwd,
48080
+ cwd: a.workdir ? dryRunPaths.get(a.workdir) : a.cwd,
47993
48081
  stepCount: stepAgentCounts.get(a.name) ?? 0
47994
48082
  }));
47995
48083
  const waves = [];
@@ -48235,6 +48323,17 @@ ${err.suggestion}`);
48235
48323
  /** Execute a named workflow from a validated config. */
48236
48324
  async execute(config3, workflowName, vars) {
48237
48325
  const resolved = vars ? this.resolveVariables(config3, vars) : config3;
48326
+ const pathResult = this.resolvePathDefinitions(resolved.paths, this.cwd);
48327
+ if (pathResult.errors.length > 0) {
48328
+ throw new Error(`Path validation failed:
48329
+ ${pathResult.errors.join("\n ")}`);
48330
+ }
48331
+ this.resolvedPaths = pathResult.resolved;
48332
+ if (this.resolvedPaths.size > 0) {
48333
+ for (const [name, abs] of this.resolvedPaths) {
48334
+ console.log(`[workflow] path "${name}" \u2192 ${abs}`);
48335
+ }
48336
+ }
48238
48337
  const workflows = resolved.workflows ?? [];
48239
48338
  const workflow2 = workflowName ? workflows.find((w) => w.name === workflowName) : workflows[0];
48240
48339
  if (!workflow2) {
@@ -48294,6 +48393,12 @@ ${err.suggestion}`);
48294
48393
  throw new Error(`Run "${runId}" is in status "${run.status}" and cannot be resumed`);
48295
48394
  }
48296
48395
  const config3 = vars ? this.resolveVariables(run.config, vars) : run.config;
48396
+ const pathResult = this.resolvePathDefinitions(config3.paths, this.cwd);
48397
+ if (pathResult.errors.length > 0) {
48398
+ throw new Error(`Path validation failed:
48399
+ ${pathResult.errors.join("\n ")}`);
48400
+ }
48401
+ this.resolvedPaths = pathResult.resolved;
48297
48402
  const workflows = config3.workflows ?? [];
48298
48403
  const workflow2 = workflows.find((w) => w.name === run.workflowName);
48299
48404
  if (!workflow2) {
@@ -48769,9 +48874,10 @@ ${trimmedOutput.slice(0, 200)}`);
48769
48874
  const value = this.resolveDotPath(key, stepOutputContext);
48770
48875
  return value !== void 0 ? String(value) : _match;
48771
48876
  });
48877
+ const stepCwd = this.resolveStepWorkdir(step) ?? this.cwd;
48772
48878
  try {
48773
48879
  if (this.executor?.executeDeterministicStep) {
48774
- const result = await this.executor.executeDeterministicStep(step, resolvedCommand, this.cwd);
48880
+ const result = await this.executor.executeDeterministicStep(step, resolvedCommand, stepCwd);
48775
48881
  const failOnError = step.failOnError !== false;
48776
48882
  if (failOnError && result.exitCode !== 0) {
48777
48883
  throw new Error(`Command failed with exit code ${result.exitCode}: ${result.output.slice(0, 500)}`);
@@ -48793,7 +48899,7 @@ ${trimmedOutput.slice(0, 200)}`);
48793
48899
  const output = await new Promise((resolve3, reject) => {
48794
48900
  const child = (0, import_node_child_process3.spawn)("sh", ["-c", resolvedCommand], {
48795
48901
  stdio: "pipe",
48796
- cwd: this.cwd,
48902
+ cwd: stepCwd,
48797
48903
  env: { ...process.env }
48798
48904
  });
48799
48905
  const stdoutChunks = [];
@@ -48896,19 +49002,20 @@ ${trimmedOutput.slice(0, 200)}`);
48896
49002
  const baseBranch = step.baseBranch ? this.interpolateStepTask(step.baseBranch, stepOutputContext) : "HEAD";
48897
49003
  const worktreePath = step.path ? this.interpolateStepTask(step.path, stepOutputContext) : import_node_path8.default.join(".worktrees", step.name);
48898
49004
  const createBranch = step.createBranch !== false;
49005
+ const stepCwd = this.resolveStepWorkdir(step) ?? this.cwd;
48899
49006
  if (!branch) {
48900
49007
  const errorMsg = 'Worktree step missing required "branch" field';
48901
49008
  await this.markStepFailed(state, errorMsg, runId);
48902
49009
  throw new Error(`Step "${step.name}" failed: ${errorMsg}`);
48903
49010
  }
48904
49011
  try {
48905
- const absoluteWorktreePath = import_node_path8.default.resolve(this.cwd, worktreePath);
49012
+ const absoluteWorktreePath = import_node_path8.default.resolve(stepCwd, worktreePath);
48906
49013
  const checkBranchCmd = `git rev-parse --verify --quiet ${branch} 2>/dev/null`;
48907
49014
  let branchExists = false;
48908
49015
  await new Promise((resolve3) => {
48909
49016
  const checkChild = (0, import_node_child_process3.spawn)("sh", ["-c", checkBranchCmd], {
48910
49017
  stdio: "pipe",
48911
- cwd: this.cwd,
49018
+ cwd: stepCwd,
48912
49019
  env: { ...process.env }
48913
49020
  });
48914
49021
  checkChild.on("close", (code) => {
@@ -48930,7 +49037,7 @@ ${trimmedOutput.slice(0, 200)}`);
48930
49037
  const output = await new Promise((resolve3, reject) => {
48931
49038
  const child = (0, import_node_child_process3.spawn)("sh", ["-c", worktreeCmd], {
48932
49039
  stdio: "pipe",
48933
- cwd: this.cwd,
49040
+ cwd: stepCwd,
48934
49041
  env: { ...process.env }
48935
49042
  });
48936
49043
  const stdoutChunks = [];
@@ -49061,9 +49168,16 @@ ${trimmedOutput.slice(0, 200)}`);
49061
49168
  resolvedTask += nonInteractiveInfo;
49062
49169
  }
49063
49170
  }
49064
- this.log(`[${step.name}] Spawning agent "${agentDef.name}" (cli: ${agentDef.cli})`);
49171
+ let effectiveAgentDef = agentDef;
49172
+ if (step.workdir) {
49173
+ const stepWorkdir = this.resolveStepWorkdir(step);
49174
+ if (stepWorkdir) {
49175
+ effectiveAgentDef = { ...agentDef, cwd: stepWorkdir, workdir: void 0 };
49176
+ }
49177
+ }
49178
+ this.log(`[${step.name}] Spawning agent "${effectiveAgentDef.name}" (cli: ${effectiveAgentDef.cli})${step.workdir ? ` [workdir: ${step.workdir}]` : ""}`);
49065
49179
  const resolvedStep = { ...step, task: resolvedTask };
49066
- const output = this.executor ? await this.executor.executeAgentStep(resolvedStep, agentDef, resolvedTask, timeoutMs) : await this.spawnAndWait(agentDef, resolvedStep, timeoutMs);
49180
+ const output = this.executor ? await this.executor.executeAgentStep(resolvedStep, effectiveAgentDef, resolvedTask, timeoutMs) : await this.spawnAndWait(effectiveAgentDef, resolvedStep, timeoutMs);
49067
49181
  this.log(`[${step.name}] Agent "${agentDef.name}" exited`);
49068
49182
  if (step.verification) {
49069
49183
  this.runVerification(step.verification, output, step.name, resolvedTask);
@@ -49206,7 +49320,7 @@ DO NOT:
49206
49320
  const output = await new Promise((resolve3, reject) => {
49207
49321
  const child = (0, import_node_child_process3.spawn)(cmd, args, {
49208
49322
  stdio: ["ignore", "pipe", "pipe"],
49209
- cwd: agentDef.cwd ? import_node_path8.default.resolve(this.cwd, agentDef.cwd) : this.cwd,
49323
+ cwd: this.resolveAgentCwd(agentDef),
49210
49324
  env: this.getRelayEnv() ?? { ...process.env }
49211
49325
  });
49212
49326
  this.registerWorker(agentName, agentDef.cli, step.task ?? "", child.pid, false);
@@ -49320,6 +49434,7 @@ DO NOT:
49320
49434
  let stopHeartbeat;
49321
49435
  let ptyChunks = [];
49322
49436
  try {
49437
+ const agentCwd = this.resolveAgentCwd(agentDef);
49323
49438
  agent = await this.relay.spawnPty({
49324
49439
  name: agentName,
49325
49440
  cli: agentDef.cli,
@@ -49328,7 +49443,7 @@ DO NOT:
49328
49443
  channels: agentChannels,
49329
49444
  task: taskWithExit,
49330
49445
  idleThresholdSecs: agentDef.constraints?.idleThresholdSecs,
49331
- cwd: agentDef.cwd ? import_node_path8.default.resolve(this.cwd, agentDef.cwd) : void 0
49446
+ cwd: agentCwd !== this.cwd ? agentCwd : void 0
49332
49447
  });
49333
49448
  if (agent.name !== agentName) {
49334
49449
  const oldName = agentName;
@@ -47,6 +47,8 @@ export interface CoreRelay {
47
47
  onBrokerStderr?: (listener: (line: string) => void) => () => void;
48
48
  /** Relaycast workspace API key, available after the hello handshake. */
49
49
  workspaceKey?: string;
50
+ /** PID of the underlying broker process, when available. */
51
+ brokerPid?: number;
50
52
  }
51
53
  export interface CoreFileSystem {
52
54
  existsSync: (path: string) => boolean;
@@ -99,6 +101,7 @@ export interface CoreDependencies {
99
101
  onSignal: (signal: NodeJS.Signals, handler: () => void | Promise<void>) => void;
100
102
  holdOpen: () => Promise<void>;
101
103
  resolveTemplatesDir: () => string;
104
+ isPortInUse: (port: number) => Promise<boolean>;
102
105
  log: (...args: unknown[]) => void;
103
106
  error: (...args: unknown[]) => void;
104
107
  warn: (...args: unknown[]) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/core.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import fs from 'node:fs';
2
+ import net from 'node:net';
2
3
  import path from 'node:path';
3
4
  import { fileURLToPath } from 'node:url';
4
5
  import { exec, spawn as spawnProcess } from 'node:child_process';
@@ -118,6 +119,7 @@ function createDefaultRelay(cwd, apiPort = 0) {
118
119
  shutdown: () => client.shutdown(),
119
120
  onBrokerStderr: (listener) => client.onBrokerStderr(listener),
120
121
  get workspaceKey() { return client.workspaceKey; },
122
+ get brokerPid() { return client.brokerPid; },
121
123
  };
122
124
  return relay;
123
125
  }
@@ -159,6 +161,21 @@ function withDefaults(overrides = {}) {
159
161
  execPath: process.execPath,
160
162
  cliScript: process.argv[1] || 'dist/src/cli/bootstrap.js',
161
163
  pid: process.pid,
164
+ isPortInUse: (port) => new Promise((resolve) => {
165
+ // Use a connect probe instead of a bind probe. On macOS,
166
+ // net.createServer().listen() sets SO_REUSEADDR which can succeed
167
+ // even when another process is already listening on the port.
168
+ // A connect() call reliably detects whether something is listening.
169
+ const socket = net.createConnection({ port, host: '127.0.0.1' });
170
+ socket.once('connect', () => {
171
+ socket.destroy();
172
+ resolve(true); // something is listening → port is in use
173
+ });
174
+ socket.once('error', () => {
175
+ socket.destroy();
176
+ resolve(false); // nothing listening → port is free
177
+ });
178
+ }),
162
179
  now: () => Date.now(),
163
180
  sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
164
181
  onSignal: (signal, handler) => {
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/cli/commands/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/cli/commands/core.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"broker-lifecycle.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/broker-lifecycle.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAA+C,MAAM,qBAAqB,CAAC;AAEzG,KAAK,SAAS,GAAG;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAgBF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG7D;AA6sBD,wBAAsB,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuS5F;AAGD,wBAAsB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsHhG;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwD5E"}
1
+ {"version":3,"file":"broker-lifecycle.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/broker-lifecycle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAA+C,MAAM,qBAAqB,CAAC;AAEzG,KAAK,SAAS,GAAG;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAgBF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG7D;AAkqBD,wBAAsB,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuS5F;AAGD,wBAAsB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwHhG;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwD5E"}
@@ -1,5 +1,4 @@
1
1
  import path from 'node:path';
2
- import net from 'node:net';
3
2
  const MAX_API_PORT_ATTEMPTS = 25;
4
3
  const MAX_DASHBOARD_PORT_ATTEMPTS = 25;
5
4
  const MAX_PORT = 65535;
@@ -23,95 +22,43 @@ export function brokerPidFilename(projectRoot) {
23
22
  function toErrorMessage(err) {
24
23
  return err instanceof Error ? err.message : String(err);
25
24
  }
26
- function parseApiPortFromLog(line) {
27
- const match = line.match(/failed to bind API on port (\d+)/i);
28
- if (!match?.[1]) {
29
- return null;
30
- }
31
- const parsed = Number.parseInt(match[1], 10);
32
- return Number.isNaN(parsed) ? null : parsed;
33
- }
34
- function isAddressInUseError(message) {
35
- return /Address already in use/i.test(message) || /EADDRINUSE/i.test(message);
36
- }
37
- function isApiPortBindingError(message, attemptedApiPort, detectedApiPort) {
38
- if (detectedApiPort === attemptedApiPort) {
39
- return true;
40
- }
41
- const extracted = parseApiPortFromLog(message);
42
- if (extracted !== null) {
43
- return extracted === attemptedApiPort;
44
- }
45
- return isAddressInUseError(message);
46
- }
47
- async function startBrokerWithPortFallback(paths, dashboardPort, wantsDashboard, deps, verbose) {
48
- const startApiPort = wantsDashboard ? dashboardPort + 1 : 0;
49
- let apiPort = startApiPort;
50
- let relay = null;
51
- const attempts = wantsDashboard ? Math.max(1, MAX_API_PORT_ATTEMPTS) : 1;
52
- for (let attempt = 0; attempt < attempts; attempt += 1) {
53
- const currentApiPort = startApiPort + attempt;
54
- let detectedBindPort = null;
55
- const candidate = deps.createRelay(paths.projectRoot, currentApiPort);
56
- candidate.onBrokerStderr?.((line) => {
57
- const parsedPort = parseApiPortFromLog(line);
58
- if (parsedPort !== null) {
59
- detectedBindPort = parsedPort;
60
- }
61
- if (verbose) {
62
- deps.error(`[broker] ${line}`);
63
- }
64
- });
65
- try {
66
- await candidate.getStatus();
67
- relay = candidate;
25
+ async function resolveApiPortWithFallback(startApiPort, maxAttempts, deps) {
26
+ for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
27
+ const candidatePort = startApiPort + attempt;
28
+ if (candidatePort > MAX_PORT) {
68
29
  break;
69
30
  }
70
- catch (error) {
71
- await candidate.shutdown().catch(() => undefined);
72
- // Brief delay to ensure OS-level cleanup (process table, flock release)
73
- // is complete before the next attempt.
74
- await new Promise((resolve) => setTimeout(resolve, 200));
75
- const message = toErrorMessage(error);
76
- const shouldRetryApiPort = wantsDashboard &&
77
- currentApiPort > 0 &&
78
- currentApiPort < MAX_PORT &&
79
- attempt + 1 < attempts &&
80
- isApiPortBindingError(message, currentApiPort, detectedBindPort);
81
- if (!shouldRetryApiPort) {
82
- throw error;
31
+ const inUse = await deps.isPortInUse(candidatePort);
32
+ if (!inUse) {
33
+ if (attempt > 0) {
34
+ deps.warn(`API port ${startApiPort} is already in use; trying ${candidatePort}`);
83
35
  }
84
- apiPort = currentApiPort + 1;
85
- deps.warn(`API port ${currentApiPort} is already in use; trying ${apiPort}`);
36
+ return candidatePort;
86
37
  }
87
38
  }
88
- if (!relay) {
89
- throw new Error('Failed to start broker on an available API port.');
90
- }
91
- return { relay, apiPort };
39
+ throw new Error(`Failed to find an available API port near ${startApiPort}.`);
92
40
  }
93
- function isPortInUse(port) {
94
- return new Promise((resolve) => {
95
- const server = net.createServer();
96
- server.once('error', (error) => {
97
- if (error.code === 'EADDRINUSE' || error.code === 'EACCES') {
98
- resolve(true);
99
- return;
100
- }
101
- resolve(false);
102
- });
103
- server.once('listening', () => {
104
- server.close(() => {
105
- resolve(false);
106
- });
107
- });
108
- server.listen(port);
41
+ async function startBrokerWithPortFallback(paths, dashboardPort, wantsDashboard, deps, verbose) {
42
+ // Resolve a free API port BEFORE spawning the broker. This avoids
43
+ // spawning (and flocking) multiple --persist brokers during retry,
44
+ // which caused stale-flock "already running" errors.
45
+ const startApiPort = wantsDashboard ? dashboardPort + 1 : 0;
46
+ const apiPort = wantsDashboard
47
+ ? await resolveApiPortWithFallback(startApiPort, MAX_API_PORT_ATTEMPTS, deps)
48
+ : startApiPort;
49
+ const candidate = deps.createRelay(paths.projectRoot, apiPort);
50
+ candidate.onBrokerStderr?.((line) => {
51
+ if (verbose) {
52
+ deps.error(`[broker] ${line}`);
53
+ }
109
54
  });
55
+ await candidate.getStatus();
56
+ return { relay: candidate, apiPort };
110
57
  }
111
58
  async function resolveDashboardPortWithFallback(dashboardPort, dashboardPortCandidates, deps) {
112
59
  for (let attempt = 0; attempt < dashboardPortCandidates; attempt += 1) {
113
60
  const candidatePort = dashboardPort + attempt;
114
- const inUse = await isPortInUse(candidatePort);
61
+ const inUse = await deps.isPortInUse(candidatePort);
115
62
  if (!inUse) {
116
63
  if (attempt > 0) {
117
64
  deps.warn(`Dashboard port ${dashboardPort} is already in use; trying ${candidatePort}`);
@@ -178,7 +125,24 @@ function isProcessRunning(pid, deps) {
178
125
  async function killOrphanedBrokerProcesses(projectRoot, deps) {
179
126
  try {
180
127
  const shellQuote = (s) => "'" + s.replace(/'/g, "'\\''") + "'";
181
- const { stdout } = await deps.execCommand(`ps aux | grep '[a]gent-relay-broker' | grep -F ${shellQuote(projectRoot)}`);
128
+ const brokerName = path.basename(projectRoot) || 'project';
129
+ let stdout = '';
130
+ try {
131
+ const byName = await deps.execCommand(`ps aux | grep '[a]gent-relay-broker' | grep -F ${shellQuote('--name ' + brokerName)}`);
132
+ stdout = byName.stdout;
133
+ }
134
+ catch {
135
+ // Name filter may not match older process invocations; try legacy path-based filter.
136
+ }
137
+ if (!stdout.trim()) {
138
+ try {
139
+ const byPath = await deps.execCommand(`ps aux | grep '[a]gent-relay-broker' | grep -F ${shellQuote(projectRoot)}`);
140
+ stdout = byPath.stdout;
141
+ }
142
+ catch {
143
+ // Expected when no orphaned processes are matched by either strategy.
144
+ }
145
+ }
182
146
  const lines = stdout.trim().split('\n').filter(Boolean);
183
147
  for (const line of lines) {
184
148
  const parts = line.trim().split(/\s+/);
@@ -722,7 +686,7 @@ export async function runUpCommand(options, deps) {
722
686
  const started = await startBrokerWithPortFallback(paths, dashboardPort, wantsDashboard, deps, Boolean(options.verbose) || isDebugLikeLoggingEnabled(deps));
723
687
  relay = started.relay;
724
688
  apiPort = started.apiPort;
725
- writeBrokerPid(brokerPidPath, deps.pid, deps);
689
+ writeBrokerPid(brokerPidPath, relay.brokerPid ?? deps.pid, deps);
726
690
  const dashboardRelayUrl = resolveDashboardRelayUrl(apiPort, deps);
727
691
  const expectedRelayUrl = getDefaultDashboardRelayUrl(apiPort);
728
692
  if (deps.env.RELAY_DASHBOARD_RELAY_URL &&
@@ -876,6 +840,8 @@ export async function runDownCommand(options, deps) {
876
840
  }
877
841
  if (!deps.fs.existsSync(activePidPath)) {
878
842
  if (options.force) {
843
+ // Also kill any orphaned broker processes that lost their PID files
844
+ await killOrphanedBrokerProcesses(paths.projectRoot, deps);
879
845
  cleanupBrokerFiles(paths, deps);
880
846
  deps.log('Cleaned up (was not running)');
881
847
  }