From f9d3a9493ae7a0088d6cadd08917e74b5761b0e4 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Wed, 11 Feb 2026 00:43:48 +0900 Subject: [PATCH] fix(model-suggestion-retry): add 120s timeout to promptAsync call Wraps promptAsync with Promise.race to prevent indefinite hangs when the interactive prompt never resolves. --- src/shared/model-suggestion-retry.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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) + } } /**