@algosuite/vo-mcp 0.2.0-beta.15 → 0.2.0-beta.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.
@@ -8467,6 +8467,7 @@ async function main({ env: env2 = process.env, once: once2 = false } = {}) {
8467
8467
  }
8468
8468
  });
8469
8469
  const capacityController = createRunnerCapacityController({ configuredMax: cfg.maxConcurrency });
8470
+ const watchCyclesEnabled = cfg.watchEnabled && !once2;
8470
8471
  log2(
8471
8472
  `up as ${cfg.runnerId} \u2192 ${env2.VO_CONTROL_PLANE_URL} (agent ${cfg.agent} [${cfg.runnerBin}], concurrency ${capacityController.current()}/${cfg.maxConcurrency}, poll ${cfg.pollSec}s, once=${once2})`
8472
8473
  );
@@ -8475,7 +8476,7 @@ async function main({ env: env2 = process.env, once: once2 = false } = {}) {
8475
8476
  cfg.armAutoMerge ? "PR auto-merge arming ON for complete PRs (VO_CODE_RUNNER_ARM_AUTOMERGE=1)" : "PR auto-merge arming OFF (set VO_CODE_RUNNER_ARM_AUTOMERGE=1 for internal dogfood autonomy)"
8476
8477
  );
8477
8478
  log2(
8478
- cfg.watchEnabled ? `PR watcher ON \u2014 auto-fix ${cfg.watchMaxFix}/PR; ${cfg.armAutoMerge ? "receipt-gated merge enabled" : "merge disabled"}; every ${cfg.watchIntervalSec}s (VO_CODE_RUNNER_WATCH=0 to disable)` : "PR watcher OFF (VO_CODE_RUNNER_WATCH=0)"
8479
+ watchCyclesEnabled ? `PR watcher ON \u2014 auto-fix ${cfg.watchMaxFix}/PR; ${cfg.armAutoMerge ? "receipt-gated merge enabled" : "merge disabled"}; every ${cfg.watchIntervalSec}s (VO_CODE_RUNNER_WATCH=0 to disable)` : once2 ? "PR watcher bypassed for --once; dispatched PRs remain tracked" : "PR watcher OFF (VO_CODE_RUNNER_WATCH=0)"
8479
8480
  );
8480
8481
  const runWatch = makeWatchRunner({ client, log: log2, maxFixAttempts: cfg.watchMaxFix, autoMergeEnabled: cfg.armAutoMerge });
8481
8482
  const watchCoordinator = makeWatchCycleCoordinator({ runWatch, log: log2, intervalMs: cfg.watchIntervalSec * 1e3 });
@@ -8485,17 +8486,22 @@ async function main({ env: env2 = process.env, once: once2 = false } = {}) {
8485
8486
  const backoff = makeReconnectBackoff({ baseMs: cfg.pollSec * 1e3, log: log2 });
8486
8487
  while (!stopping) {
8487
8488
  const heartbeatCompletion = loopTick();
8488
- if (cfg.watchEnabled) watchCoordinator.start();
8489
- if (active >= capacityController.current()) {
8490
- await sleep2(cfg.pollSec * 1e3);
8491
- continue;
8492
- }
8489
+ if (watchCyclesEnabled) watchCoordinator.start();
8493
8490
  const claimAgents = resolveAgentClaimContext(agentAvailability, cfg.agent);
8494
8491
  if (!claimAgents) {
8492
+ await heartbeatCompletion;
8495
8493
  await sleep2(cfg.pollSec * 1e3);
8496
8494
  continue;
8497
8495
  }
8498
8496
  await heartbeatCompletion;
8497
+ if (active >= capacityController.current()) {
8498
+ if (once2) {
8499
+ log2("no local execution capacity; --once exiting");
8500
+ break;
8501
+ }
8502
+ await sleep2(cfg.pollSec * 1e3);
8503
+ continue;
8504
+ }
8499
8505
  let task;
8500
8506
  try {
8501
8507
  task = await client.claim(cfg.runnerId, cfg.servedRepos, cfg.servedOperators, { runnerInstanceId, reconcileStale, ...claimAgents });