From 35cf9bcdb307de1ac94a58b2586a74b8bf28fa7f Mon Sep 17 00:00:00 2001 From: Connor Peet Date: Mon, 15 Dec 2025 11:59:37 -0800 Subject: [PATCH] chat: cleanup unnecessary isPendingConfirmation triggers (#283651) * chat: cleanup unnecessary isPendingConfirmation triggers * fix tests --- src/vs/workbench/contrib/chat/common/chatModel.ts | 11 ++++++----- .../contrib/chat/test/common/chatModel.test.ts | 1 + 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/contrib/chat/common/chatModel.ts b/src/vs/workbench/contrib/chat/common/chatModel.ts index b392884bd1a6..0ffcf336cdd6 100644 --- a/src/vs/workbench/contrib/chat/common/chatModel.ts +++ b/src/vs/workbench/contrib/chat/common/chatModel.ts @@ -973,27 +973,28 @@ export class ChatResponseModel extends Disposable implements IChatResponseModel const signal = observableSignalFromEvent(this, this.onDidChange); - const _pendingInfo = signal.map((_value, r): { detail?: string } | undefined => { + const _pendingInfo = signal.map((_value, r): string | undefined => { signal.read(r); for (const part of this._response.value) { if (part.kind === 'toolInvocation' && part.state.read(r).type === IChatToolInvocation.StateKind.WaitingForConfirmation) { const title = part.confirmationMessages?.title; - return { detail: title ? (isMarkdownString(title) ? title.value : title) : undefined }; + return title ? (isMarkdownString(title) ? title.value : title) : undefined; } if (part.kind === 'confirmation' && !part.isUsed) { - return { detail: part.title }; + return part.title; } if (part.kind === 'elicitation2' && part.state.read(r) === ElicitationState.Pending) { const title = part.title; - return { detail: isMarkdownString(title) ? title.value : title }; + return isMarkdownString(title) ? title.value : title; } } + return undefined; }); const _startedWaitingAt = _pendingInfo.map(p => !!p).map(p => p ? Date.now() : undefined); - this.isPendingConfirmation = _startedWaitingAt.map((waiting, r) => waiting ? { startedWaitingAt: waiting, detail: _pendingInfo.read(r)?.detail } : undefined); + this.isPendingConfirmation = _startedWaitingAt.map((waiting, r) => waiting ? { startedWaitingAt: waiting, detail: _pendingInfo.read(r) } : undefined); this.isInProgress = signal.map((_value, r) => { diff --git a/src/vs/workbench/contrib/chat/test/common/chatModel.test.ts b/src/vs/workbench/contrib/chat/test/common/chatModel.test.ts index 8ec2eda2cbbe..88220e568ee2 100644 --- a/src/vs/workbench/contrib/chat/test/common/chatModel.test.ts +++ b/src/vs/workbench/contrib/chat/test/common/chatModel.test.ts @@ -519,6 +519,7 @@ suite('ChatResponseModel', () => { const toolInvocation = { kind: 'toolInvocation', invocationMessage: 'calling tool', + confirmationMessages: { title: 'Please confirm' }, state: toolState } as Partial as IChatToolInvocation;