From 7b46d609017071abc72e8d02f6bb3c3e3c8648c0 Mon Sep 17 00:00:00 2001 From: daniel-lxs Date: Mon, 3 Nov 2025 16:18:18 -0500 Subject: [PATCH] fix(rate-limit): mark retry status updates non-interactive to avoid ask race --- src/core/task/Task.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index cb7576befd..01ea935d82 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -2679,6 +2679,7 @@ export class Task extends EventEmitter implements TaskLike { const sendRateLimitUpdate = async (payload: RateLimitRetryPayload, isPartial: boolean): Promise => { await this.say("api_req_retry_delayed", undefined, undefined, isPartial, undefined, undefined, { + isNonInteractive: true, metadata: { rateLimitRetry: payload }, }) } @@ -2988,7 +2989,7 @@ export class Task extends EventEmitter implements TaskLike { `[Task#attemptApiRequest] task ${this.taskId}.${this.instanceId} aborted during retry`, ) } - + // Delegate generator output from the recursive call with // incremented retry count. yield* this.attemptApiRequest(retryAttempt + 1) @@ -3086,11 +3087,9 @@ export class Task extends EventEmitter implements TaskLike { })() // Helper to send rate limit updates with structured metadata - const sendRateLimitUpdate = async ( - payload: RateLimitRetryPayload, - isPartial: boolean, - ): Promise => { + const sendRateLimitUpdate = async (payload: RateLimitRetryPayload, isPartial: boolean): Promise => { await this.say("api_req_retry_delayed", undefined, undefined, isPartial, undefined, undefined, { + isNonInteractive: true, metadata: { rateLimitRetry: payload }, }) }