diff --git a/src/shared/model-suggestion-retry.ts b/src/shared/model-suggestion-retry.ts index d8eb71b6..6a34deac 100644 --- a/src/shared/model-suggestion-retry.ts +++ b/src/shared/model-suggestion-retry.ts @@ -86,7 +86,22 @@ export async function promptWithModelSuggestionRetry( ): Promise { // NOTE: Model suggestion retry removed — promptAsync returns 204 immediately, // model errors happen asynchronously server-side and cannot be caught here - await client.session.promptAsync(args as Parameters[0]) + const promptPromise = client.session.promptAsync( + args as Parameters[0], + ) + + let timeoutID: ReturnType | null = null + const timeoutPromise = new Promise((_, reject) => { + timeoutID = setTimeout(() => { + reject(new Error("promptAsync timed out after 120000ms")) + }, 120000) + }) + + try { + await Promise.race([promptPromise, timeoutPromise]) + } finally { + if (timeoutID !== null) clearTimeout(timeoutID) + } } /**