From 3bc56d0ef55050c29d8479eeb81b4e273b8101c8 Mon Sep 17 00:00:00 2001 From: Adib234 <30782825+Adib234@users.noreply.github.com> Date: Wed, 29 Apr 2026 13:51:09 -0400 Subject: [PATCH] test(core): add regression test for issue for ToolConfirmationResponse (#26194) --- .../core/src/scheduler/confirmation.test.ts | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/packages/core/src/scheduler/confirmation.test.ts b/packages/core/src/scheduler/confirmation.test.ts index abd07ba86e..d286ede8df 100644 --- a/packages/core/src/scheduler/confirmation.test.ts +++ b/packages/core/src/scheduler/confirmation.test.ts @@ -357,6 +357,45 @@ describe('confirmation.ts', () => { expect(mockState.updateArgs).toHaveBeenCalled(); }); + it('should pass payload to onConfirm callback', async () => { + const details = { + type: 'ask_user' as const, + questions: [], + title: 'Title', + onConfirm: vi.fn(), + }; + invocationMock.shouldConfirmExecute.mockResolvedValue(details); + + const listenerPromise = waitForListener( + MessageBusType.TOOL_CONFIRMATION_RESPONSE, + ); + const promise = resolveConfirmation(toolCall, signal, { + config: mockConfig, + messageBus: mockMessageBus, + state: mockState, + modifier: mockModifier, + getPreferredEditor, + schedulerId: ROOT_SCHEDULER_ID, + }); + + await listenerPromise; + + const payload = { answers: { '0': 'user choice' } }; + emitResponse({ + type: MessageBusType.TOOL_CONFIRMATION_RESPONSE, + correlationId: '123e4567-e89b-12d3-a456-426614174000', + confirmed: true, + outcome: ToolConfirmationOutcome.ProceedOnce, + payload, + }); + + await promise; + expect(details.onConfirm).toHaveBeenCalledWith( + ToolConfirmationOutcome.ProceedOnce, + payload, + ); + }); + it('should resolve immediately if IDE confirmation resolves first', async () => { const idePromise = Promise.resolve({ status: 'accepted' as const,