From 579bc6e4f8016d7a33f4e766fde4e4337ba71646 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Sun, 26 Apr 2026 20:54:36 -0700 Subject: [PATCH 1/3] Fix duplicated question text from agent host Fix #311121 --- src/vs/platform/agentHost/common/state/protocol/.ahp-version | 2 +- src/vs/platform/agentHost/common/state/protocol/state.ts | 2 +- src/vs/platform/agentHost/node/copilot/copilotAgentSession.ts | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/vs/platform/agentHost/common/state/protocol/.ahp-version b/src/vs/platform/agentHost/common/state/protocol/.ahp-version index 6696950658362..400f64af3fd33 100644 --- a/src/vs/platform/agentHost/common/state/protocol/.ahp-version +++ b/src/vs/platform/agentHost/common/state/protocol/.ahp-version @@ -1 +1 @@ -8611f76 +e839321 diff --git a/src/vs/platform/agentHost/common/state/protocol/state.ts b/src/vs/platform/agentHost/common/state/protocol/state.ts index fe256b98ad7c9..088c8b1769c44 100644 --- a/src/vs/platform/agentHost/common/state/protocol/state.ts +++ b/src/vs/platform/agentHost/common/state/protocol/state.ts @@ -665,7 +665,7 @@ export interface SessionInputRequest { /** Stable request identifier */ id: string; /** Display message for the request as a whole */ - message: string; + message?: string; /** URL the user should review or open, for URL-style elicitations */ url?: URI; /** Ordered questions to ask the user */ diff --git a/src/vs/platform/agentHost/node/copilot/copilotAgentSession.ts b/src/vs/platform/agentHost/node/copilot/copilotAgentSession.ts index 4555cb5bf7ac2..bdacf85e37c2d 100644 --- a/src/vs/platform/agentHost/node/copilot/copilotAgentSession.ts +++ b/src/vs/platform/agentHost/node/copilot/copilotAgentSession.ts @@ -545,7 +545,6 @@ export class CopilotAgentSession extends Disposable { // Build the protocol SessionInputRequest from the SDK's simple format const inputRequest: SessionInputRequest = { id: requestId, - message: request.question, questions: [request.choices && request.choices.length > 0 ? { kind: SessionInputQuestionKind.SingleSelect, From 6fb00731d7b616bc1141a21dc468e985fba770f2 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Sun, 26 Apr 2026 21:03:47 -0700 Subject: [PATCH 2/3] fix --- .../agentSessions/agentHost/agentHostSessionHandler.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionHandler.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionHandler.ts index 16e9c93aa2b1a..e29847e79d21f 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionHandler.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionHandler.ts @@ -1736,7 +1736,7 @@ export class AgentHostSessionHandler extends Disposable implements IChatSessionC questions.push({ id: 'answer', type: 'text', - title: inputReq.message, + title: inputReq.message ?? '', required: true, }); } @@ -1747,7 +1747,7 @@ export class AgentHostSessionHandler extends Disposable implements IChatSessionC /* resolveId */ undefined, /* data */ undefined, /* isUsed */ undefined, - /* message */ rawMarkdownToString(inputReq.message, this._config.connectionAuthority), + /* message */ inputReq.message ? rawMarkdownToString(inputReq.message, this._config.connectionAuthority) : undefined, ); progress([carousel]); From b81c2999ca605c549f8ce6a11300aed66d83a7de Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Mon, 27 Apr 2026 09:23:16 -0700 Subject: [PATCH 3/3] fix test --- src/vs/platform/agentHost/test/node/copilotAgentSession.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/platform/agentHost/test/node/copilotAgentSession.test.ts b/src/vs/platform/agentHost/test/node/copilotAgentSession.test.ts index 93b8331262de3..3583f69d1ab00 100644 --- a/src/vs/platform/agentHost/test/node/copilotAgentSession.test.ts +++ b/src/vs/platform/agentHost/test/node/copilotAgentSession.test.ts @@ -737,9 +737,9 @@ suite('CopilotAgentSession', () => { assert.strictEqual(progressEvents.length, 1); const event = progressEvents[0]; assertUserInputEvent(event); - assert.strictEqual(event.request.message, 'What is your name?'); const requestId = event.request.id; assert.ok(event.request.questions); + assert.strictEqual(event.request.questions[0].message, 'What is your name?'); const questionId = event.request.questions[0].id; // Respond to unblock the promise