From 2cf0c75a045b7f59efb0bae21d3a25f1625e7ac6 Mon Sep 17 00:00:00 2001 From: Adam Weidman <65992621+adamfweidman@users.noreply.github.com> Date: Wed, 29 Apr 2026 13:06:18 -0400 Subject: [PATCH] fix(core): add explicit empty log guard in A2A pushMessage (#26198) --- packages/core/src/agents/a2aUtils.test.ts | 22 ++++++++++++++++++++++ packages/core/src/agents/a2aUtils.ts | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/core/src/agents/a2aUtils.test.ts b/packages/core/src/agents/a2aUtils.test.ts index 14d9fd061e..543acd1050 100644 --- a/packages/core/src/agents/a2aUtils.test.ts +++ b/packages/core/src/agents/a2aUtils.test.ts @@ -585,5 +585,27 @@ describe('a2aUtils', () => { status: 'completed', }); }); + + it('should correctly push the first message when messageLog is empty (Issue #24894)', () => { + const reassembler = new A2AResultReassembler(); + + const message: Message = { + kind: 'message', + role: 'agent', + messageId: 'm1', + parts: [{ kind: 'text', text: 'First message' }], + }; + + reassembler.update({ + kind: 'status-update', + contextId: 'ctx1', + status: { + state: 'working', + message, + }, + } as unknown as SendMessageResult); + + expect(reassembler.toString()).toBe('First message'); + }); }); }); diff --git a/packages/core/src/agents/a2aUtils.ts b/packages/core/src/agents/a2aUtils.ts index db08fdb871..2d146fc420 100644 --- a/packages/core/src/agents/a2aUtils.ts +++ b/packages/core/src/agents/a2aUtils.ts @@ -126,7 +126,7 @@ export class A2AResultReassembler { if (!message) return; if (message.role === 'user') return; // Skip user messages reflected by server const text = extractPartsText(message.parts, ''); - if (text && this.messageLog[this.messageLog.length - 1] !== text) { + if (text && this.messageLog.at(-1) !== text) { this.messageLog.push(text); } }