Fix subagent announce failover race (always emit lifecycle end + treat timeout=0 as no-timeout) (#6621)

* Fix subagent announce race and timeout handling

Bug 1: Subagent announce fires before model failover retries finish
- Problem: CLI provider emitted lifecycle error on each attempt, causing
  subagent registry to prematurely call beginSubagentCleanup() and announce
  with incorrect status before failover retries completed
- Fix: Removed lifecycle error emission from CLI provider's attempt-level
  .catch() in agent-runner-execution.ts. Errors still propagate to
  runWithModelFallback for retry, but no intermediate lifecycle events
  are emitted. Only the final outcome (after all retries) emits lifecycle
  events.

Bug 2: Hard 600s per-prompt timeout ignores runTimeoutSeconds=0
- Problem: When runTimeoutSeconds=0 (meaning 'no timeout'), the code
  returned the default 600s timeout instead of respecting the 0 setting
- Fix: Modified resolveAgentTimeoutMs() to treat 0 as 'no timeout' and
  return a very large timeout value (30 days) instead of the default.
  This avoids setTimeout issues with Infinity while effectively providing
  unlimited time for long-running tasks.

* fix: emit lifecycle:error for CLI failures (#6621) (thanks @tyler6204)

* chore: satisfy format/lint gates (#6621) (thanks @tyler6204)

* fix: restore build after upstream type changes (#6621) (thanks @tyler6204)

* test: fix createSystemPromptOverride tests to match new return type (#6621) (thanks @tyler6204)
This commit is contained in:
Tyler Yust
2026-02-02 02:06:14 -08:00
committed by GitHub
parent d5f6caba3f
commit 8d2f98fb01
14 changed files with 81 additions and 42 deletions

View File

@@ -2167,10 +2167,9 @@ async function processMessage(
sendBlueBubblesTyping(chatGuidForActions, true, {
cfg: config,
accountId: account.accountId,
})
.catch((err) => {
runtime.error?.(`[bluebubbles] typing restart failed: ${String(err)}`);
});
}).catch((err) => {
runtime.error?.(`[bluebubbles] typing restart failed: ${String(err)}`);
});
}, typingRestartDelayMs);
};
try {

View File

@@ -3,11 +3,13 @@
## 2026.2.1
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.31
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.30

View File

@@ -3,11 +3,13 @@
## 2026.2.1
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.31
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.30

View File

@@ -3,11 +3,13 @@
## 2026.2.1
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.31
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.30

View File

@@ -3,11 +3,13 @@
## 2026.2.1
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.31
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.30

View File

@@ -3,11 +3,13 @@
## 2026.2.1
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.31
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.30

View File

@@ -3,11 +3,13 @@
## 2026.2.1
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.31
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.30

View File

@@ -3,11 +3,13 @@
## 2026.2.1
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.31
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.1.30