From 35754f83c2fca43f8742df91153a14d006dffbc0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 28 May 2026 02:58:13 +0000 Subject: [PATCH 1/2] Initial plan From e12e3e13a7c120547f44d327133769fe17e82caa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 28 May 2026 03:02:25 +0000 Subject: [PATCH 2/2] fix: preserve default undecoded result --- lib/MessageDecoder.test.ts | 26 ++++++++++++++++++++++++++ lib/MessageDecoder.ts | 5 +++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/lib/MessageDecoder.test.ts b/lib/MessageDecoder.test.ts index a679ed3..3788b4e 100644 --- a/lib/MessageDecoder.test.ts +++ b/lib/MessageDecoder.test.ts @@ -61,4 +61,30 @@ describe('MessageDecoder', () => { expect(decodeResult.message.label).toBe('H1'); expect(decodeResult.formatted.items.length).toBe(5); }); + + test('preserves default fallback result when no plugin decodes', () => { + const message = { + label: '44', + text: 'GARBAGE TEXT THAT SHOULD NOT MATCH', + }; + + const decodeResult = decoder.decode(message); + + expect(decodeResult.decoded).toBe(false); + expect(decodeResult.error).toBe('No known decoder plugin for this message'); + expect(decodeResult.decoder).toEqual({ + name: 'none', + type: 'none', + decodeLevel: 'none', + }); + expect(decodeResult.message).toBe(message); + expect(decodeResult.remaining).toEqual({ + text: message.text, + }); + expect(decodeResult.raw).toEqual({}); + expect(decodeResult.formatted).toEqual({ + description: 'Not Decoded', + items: [], + }); + }); }); diff --git a/lib/MessageDecoder.ts b/lib/MessageDecoder.ts index b40f43a..999f960 100644 --- a/lib/MessageDecoder.ts +++ b/lib/MessageDecoder.ts @@ -168,8 +168,9 @@ export class MessageDecoder { for (let i = 0; i < usablePlugins.length; i++) { const plugin = usablePlugins[i]; - result = plugin.decode(message, options); - if (result.decoded) { + const pluginResult = plugin.decode(message, options); + if (pluginResult.decoded) { + result = pluginResult; break; } }