fix(core#2723 client-side): raise chat-send timeout 120s→30min to match #2727 server-side raise #2731
Reference in New Issue
Block a user
Delete Branch "fix/core2723-client-side-chat-timeout-align"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why this is a separate, completing PR
#2727 (commit
cd3666d7, MERGED) raised the server-side canvas idle watchdog from 5min to 30min. That's half of the #2723 fix. The other half — the client-sideAbortSignal.timeoutinuseChatSend.ts:240— was left at 120s.Why 120s was a problem pre-#2727 too: the 120s timeout was BELOW the prior 5min server idle, so the
isClientTimeouthandler atuseChatSend.ts:261-280had to silently swallow the AbortSignal firing (surface as 'agent may be unreachable' was wrong for a still-working agent). With the 30min server raise, a 300s chain still dies client-side at 120s — half-fixed #2723.Fix
Raise the client-side
AbortSignal.timeoutfrom 120s to 30min, matching #2727. TheisClientTimeoutsilent-swallow handler is unchanged — it's the right defense-in-depth path for the rare case where the client really does time out (browser tab suspended, network gone for 30+ min, etc).Diff
Refs
useChatSend.ts:240(the site being patched)useChatSend.ts:261-280(theisClientTimeouthandler — unchanged; the silent-swallow contract is the right behavior at 30min too)a2a_proxy.go:1002 const defaultIdleTimeoutDuration = 30 * time.Minute(the server-side target this PR aligns to)APPROVED on head
cbb373a1.5-axis review: the client timeout is now
30 * 60 * 1000, matching the merged server-side defaultdefaultIdleTimeoutDuration = 30 * time.Minutefrom #2727, so the browser no longer races the server watchdog for long 300s+ tool chains. TheisClientTimeoutsilent-swallow path is unchanged, which preserves the defense-in-depth behavior if the browser/network really does time out after the larger window. No auth/security surface changes and no performance concern beyond deliberately allowing the already-server-permitted long turn.On test judgment: a value-pin test would be nice but I do not require it for this one-line client alignment; the load-bearing contract is the existing timeout-swallow behavior plus matching the server constant, and current CI covers the touched Canvas path. CI / Canvas, Canvas Deploy Status, and CI / all-required are green on
cbb373a1. /sop-ack/sop-ack