From 3c80e6f9cd7e10b4df305759fb232594d1856387 Mon Sep 17 00:00:00 2001 From: can1357 Date: Fri, 24 Jul 2026 16:29:27 +0200 Subject: [PATCH] fix(coding-agent): expose live tool rebuild options --- packages/coding-agent/src/modes/interactive-mode.ts | 6 ++---- packages/coding-agent/src/modes/types.ts | 13 +++++++++---- packages/coding-agent/src/modes/utils/ui-helpers.ts | 10 +--------- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/packages/coding-agent/src/modes/interactive-mode.ts b/packages/coding-agent/src/modes/interactive-mode.ts index 3a2c6cd4a..e58199a4f 100644 --- a/packages/coding-agent/src/modes/interactive-mode.ts +++ b/packages/coding-agent/src/modes/interactive-mode.ts @@ -209,6 +209,7 @@ import type { InteractiveModeContext, InteractiveModeInitOptions, InteractiveSelectorDialogOptions, + RenderSessionContextOptions, SubmittedUserInput, TodoItem, TodoPhase, @@ -4351,10 +4352,7 @@ export class InteractiveMode implements InteractiveModeContext { return this.#uiHelpers.addMessageToChat(message, options); } - renderSessionContext( - sessionContext: SessionContext, - options?: { updateFooter?: boolean; populateHistory?: boolean; reuseSettledComponents?: boolean }, - ): void { + renderSessionContext(sessionContext: SessionContext, options?: RenderSessionContextOptions): void { for (const message of sessionContext.messages) { this.noteDisplayableThinkingContent(message); } diff --git a/packages/coding-agent/src/modes/types.ts b/packages/coding-agent/src/modes/types.ts index be70396c0..ae3066867 100644 --- a/packages/coding-agent/src/modes/types.ts +++ b/packages/coding-agent/src/modes/types.ts @@ -92,6 +92,14 @@ export interface InteractiveModeInitOptions { export type InteractiveSelectorDialogOptions = ExtensionUIDialogOptions & Pick; +export interface RenderSessionContextOptions { + updateFooter?: boolean; + populateHistory?: boolean; + reuseSettledComponents?: boolean; + /** Tool calls whose existing live component remains the sole render owner across a rebuild. */ + preservedLiveToolCallIds?: ReadonlySet; +} + export interface InteractiveModeContext { // UI access ui: TUI; @@ -310,10 +318,7 @@ export interface InteractiveModeContext { reuseSettledComponent?: boolean; }, ): Component[]; - renderSessionContext( - sessionContext: SessionContext, - options?: { updateFooter?: boolean; populateHistory?: boolean; reuseSettledComponents?: boolean }, - ): void; + renderSessionContext(sessionContext: SessionContext, options?: RenderSessionContextOptions): void; renderInitialMessages(options?: { preserveExistingChat?: boolean; clearTerminalHistory?: boolean }): void; getUserMessageText(message: Message): string; findLastAssistantMessage(): AssistantMessage | undefined; diff --git a/packages/coding-agent/src/modes/utils/ui-helpers.ts b/packages/coding-agent/src/modes/utils/ui-helpers.ts index 5ebecba94..2a4eb48e9 100644 --- a/packages/coding-agent/src/modes/utils/ui-helpers.ts +++ b/packages/coding-agent/src/modes/utils/ui-helpers.ts @@ -33,7 +33,7 @@ import { UserMessageComponent } from "../../modes/components/user-message"; import { decodeStreamedToolArgs, streamingStringKeysForTool } from "../../modes/controllers/tool-args-reveal"; import { materializeImageReferenceLinksSync } from "../../modes/image-references"; import { theme } from "../../modes/theme/theme"; -import type { CompactionQueuedMessage, InteractiveModeContext } from "../../modes/types"; +import type { CompactionQueuedMessage, InteractiveModeContext, RenderSessionContextOptions } from "../../modes/types"; import { BACKGROUND_TAN_DISPATCH_MESSAGE_TYPE, type CustomMessage, @@ -72,14 +72,6 @@ type AddMessageOptions = { reuseSettledComponent?: boolean; }; -type RenderSessionContextOptions = { - updateFooter?: boolean; - populateHistory?: boolean; - reuseSettledComponents?: boolean; - /** Tool calls whose existing live component remains the sole render owner across a rebuild. */ - preservedLiveToolCallIds?: ReadonlySet; -}; - function imageLinksForMessage( message: Extract, putBlobSync: InteractiveModeContext["sessionManager"]["putBlobSync"],