From 036e04c15bef1785f207487785e2685325b99d32 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Thu, 21 May 2026 12:32:55 +0900 Subject: [PATCH] fix(look-at): allow stable idle after sync prompt --- src/tools/look-at/look-at-session-runner.ts | 32 ++++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/tools/look-at/look-at-session-runner.ts b/src/tools/look-at/look-at-session-runner.ts index 816f96fe4..746dc9682 100644 --- a/src/tools/look-at/look-at-session-runner.ts +++ b/src/tools/look-at/look-at-session-runner.ts @@ -86,24 +86,34 @@ Original error: ${createResult.error}` log("[look_at] Prompt error (ignored, will still fetch messages):", promptError) } + let observedMessages: unknown[] | undefined + let observedText: string | undefined if (typeof ctx.client.session.status === "function") { - await waitForLookAtSessionResult(ctx.client, sessionID) + const waitResult = await waitForLookAtSessionResult(ctx.client, sessionID, { + allowStableIdleWithoutActivity: true, + }) + observedText = waitResult.outcome.text ?? undefined + if (observedText) { + observedMessages = waitResult.messages + } } - log(`[look_at] Fetching messages from session ${sessionID}...`) - const messagesResult = await ctx.client.session.messages({ - path: { id: sessionID }, - }) + let messages = observedMessages + if (!messages) { + log(`[look_at] Fetching messages from session ${sessionID}...`) + const messagesResult = await ctx.client.session.messages({ + path: { id: sessionID }, + }) - if (messagesResult.error) { - log("[look_at] Messages error:", messagesResult.error) - return `Error: Failed to get messages: ${messagesResult.error}` + if (messagesResult.error) { + log("[look_at] Messages error:", messagesResult.error) + return `Error: Failed to get messages: ${messagesResult.error}` + } + messages = messagesResult.data } - - const messages = messagesResult.data log(`[look_at] Got ${messages.length} messages`) - const responseText = extractLatestAssistantText(messages) + const responseText = observedText ?? extractLatestAssistantText(messages) if (!responseText) { log("[look_at] No assistant message found") return "Error: No response from multimodal-looker agent"