diff --git a/src/agents/pi-embedded-runner.ts b/src/agents/pi-embedded-runner.ts index 079b43eba..eb2bb78f9 100644 --- a/src/agents/pi-embedded-runner.ts +++ b/src/agents/pi-embedded-runner.ts @@ -808,8 +808,10 @@ export async function runEmbeddedPiAgent(params: { session.agent.replaceMessages(prior); } let aborted = Boolean(params.abortSignal?.aborted); - const abortRun = () => { + let timedOut = false; + const abortRun = (isTimeout = false) => { aborted = true; + if (isTimeout) timedOut = true; void session.abort(); }; const subscription = subscribeEmbeddedPiSession({ @@ -848,7 +850,7 @@ export async function runEmbeddedPiAgent(params: { log.warn( `embedded run timeout: runId=${params.runId} sessionId=${params.sessionId} timeoutMs=${params.timeoutMs}`, ); - abortRun(); + abortRun(true); if (!abortWarnTimer) { abortWarnTimer = setTimeout(() => { if (!session.isStreaming) return; @@ -953,16 +955,25 @@ export async function runEmbeddedPiAgent(params: { (params.config?.agent?.model?.fallbacks?.length ?? 0) > 0; const authFailure = isAuthAssistantError(lastAssistant); const rateLimitFailure = isRateLimitAssistantError(lastAssistant); - if (!aborted && (authFailure || rateLimitFailure)) { + + // Treat timeout as potential rate limit (Antigravity hangs on rate limit) + const shouldRotate = (!aborted && (authFailure || rateLimitFailure)) || timedOut; + + if (shouldRotate) { // Mark current profile for cooldown before rotating if (lastProfileId) { markAuthProfileCooldown({ store: authStore, profileId: lastProfileId }); + if (timedOut) { + log.warn( + `Profile ${lastProfileId} timed out (possible rate limit). Trying next account...`, + ); + } } const rotated = await advanceAuthProfile(); if (rotated) { continue; } - if (fallbackConfigured) { + if (fallbackConfigured && !timedOut) { const message = lastAssistant?.errorMessage?.trim() || (lastAssistant diff --git a/src/gateway/protocol/index.ts b/src/gateway/protocol/index.ts index 6dad0d7e3..6fc3d7ecd 100644 --- a/src/gateway/protocol/index.ts +++ b/src/gateway/protocol/index.ts @@ -395,5 +395,4 @@ export type { CronRunParams, CronRunsParams, CronRunLogEntry, - PollParams, };