From b0040415f72b1295b6e4594fbea286e1a1d22435 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:20 +0000 Subject: [PATCH 1/3] Initial plan From 7cde9c8420b977aecf6f2cd21c37cc19b6404aed 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:23 +0000 Subject: [PATCH 2/3] fix: keep RP route status stable --- lib/utils/flight_plan_utils.test.ts | 28 ++++++++++++++++++++++++++++ lib/utils/flight_plan_utils.ts | 4 +++- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 lib/utils/flight_plan_utils.test.ts diff --git a/lib/utils/flight_plan_utils.test.ts b/lib/utils/flight_plan_utils.test.ts new file mode 100644 index 0000000..947fb12 --- /dev/null +++ b/lib/utils/flight_plan_utils.test.ts @@ -0,0 +1,28 @@ +import { DecodeResult } from '../DecoderPluginInterface'; +import { FlightPlanUtils } from './flight_plan_utils'; + +describe('FlightPlanUtils.parseHeader', () => { + test('keeps RP as route_status while parsing embedded route content', () => { + const decodeResult: DecodeResult = { + decoded: true, + decoder: { name: 'test', type: 'pattern-match', decodeLevel: 'full' }, + formatted: { description: 'Test', items: [] }, + raw: {}, + remaining: {}, + }; + + const allKnownFields = FlightPlanUtils.parseHeader( + decodeResult, + 'RPKSEA.BTG.KPDX', + ); + + expect(allKnownFields).toBe(true); + expect(decodeResult.raw.route_status).toBe('RP'); + expect(decodeResult.raw.route?.waypoints.map((waypoint) => waypoint.name)).toEqual( + ['KSEA', 'BTG', 'KPDX'], + ); + expect(decodeResult.formatted.items).toHaveLength(2); + expect(decodeResult.formatted.items[0].value).toBe('Route Planned'); + expect(decodeResult.formatted.items[1].label).toBe('Aircraft Route'); + }); +}); diff --git a/lib/utils/flight_plan_utils.ts b/lib/utils/flight_plan_utils.ts index 7294adb..4eb9f1d 100644 --- a/lib/utils/flight_plan_utils.ts +++ b/lib/utils/flight_plan_utils.ts @@ -87,7 +87,9 @@ export class FlightPlanUtils { label: 'Route Status', value: 'Route Planned', }); - decodeResult.raw.route_status = header; + if (header.length > 2) { + addRoute(decodeResult, header.substring(2)); + } } else if (header.startsWith('RI')) { decodeResult.raw.route_status = 'RI'; decodeResult.formatted.items.push({ From 237192448dc555b43b3bad8aee3131b711d5686c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 28 May 2026 03:04:48 +0000 Subject: [PATCH 3/3] test: cover RP inline route parsing --- lib/utils/flight_plan_utils.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/utils/flight_plan_utils.test.ts b/lib/utils/flight_plan_utils.test.ts index 947fb12..1c80f21 100644 --- a/lib/utils/flight_plan_utils.test.ts +++ b/lib/utils/flight_plan_utils.test.ts @@ -18,9 +18,9 @@ describe('FlightPlanUtils.parseHeader', () => { expect(allKnownFields).toBe(true); expect(decodeResult.raw.route_status).toBe('RP'); - expect(decodeResult.raw.route?.waypoints.map((waypoint) => waypoint.name)).toEqual( - ['KSEA', 'BTG', 'KPDX'], - ); + expect( + decodeResult.raw.route?.waypoints.map((waypoint) => waypoint.name), + ).toEqual(['KSEA', 'BTG', 'KPDX']); expect(decodeResult.formatted.items).toHaveLength(2); expect(decodeResult.formatted.items[0].value).toBe('Route Planned'); expect(decodeResult.formatted.items[1].label).toBe('Aircraft Route');