From d84c0a84207eb63ea7088b72784e939117f4f568 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sun, 2 Aug 2026 22:25:15 +0000 Subject: [PATCH] fix(schedules): preserve idempotent deletion --- packages/server/src/server/schedule/service.test.ts | 4 ++++ packages/server/src/server/schedule/service.ts | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/server/src/server/schedule/service.test.ts b/packages/server/src/server/schedule/service.test.ts index 72c749da81..869701943f 100644 --- a/packages/server/src/server/schedule/service.test.ts +++ b/packages/server/src/server/schedule/service.test.ts @@ -2663,6 +2663,10 @@ describe("ScheduleService", () => { await service.delete(active.id); expect(changedTargets.at(-1)).toBe(activeAgentId); await expect(service.listActiveHeartbeatActivity()).resolves.toEqual([]); + + const notificationsAfterDelete = changedTargets.length; + await expect(service.delete(active.id)).resolves.toBeUndefined(); + expect(changedTargets).toHaveLength(notificationsAfterDelete); }); test("startup sweep completes agent-target schedules whose agent is gone", async () => { diff --git a/packages/server/src/server/schedule/service.ts b/packages/server/src/server/schedule/service.ts index 24f3b3fd48..7549f20003 100644 --- a/packages/server/src/server/schedule/service.ts +++ b/packages/server/src/server/schedule/service.ts @@ -506,9 +506,11 @@ export class ScheduleService { } async delete(id: string): Promise { - const schedule = await this.inspect(id); + const schedule = await this.store.get(id); await this.store.delete(id); - await this.notifyHeartbeatActivityChanged(schedule); + if (schedule) { + await this.notifyHeartbeatActivityChanged(schedule); + } } async completeForAgent(agentId: string): Promise {