From 211efffa102b5130cc7562b3efe2bb1d2ee69426 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 12 Dec 2025 21:05:26 +0000 Subject: [PATCH] fix(gateway): treat webchat last as whatsapp --- src/gateway/server.test.ts | 10 ++++++---- src/gateway/server.ts | 10 ++++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/gateway/server.test.ts b/src/gateway/server.test.ts index 0567f6a62..6cbd27805 100644 --- a/src/gateway/server.test.ts +++ b/src/gateway/server.test.ts @@ -300,7 +300,8 @@ describe("gateway server", () => { await server.close(); }); - test("agent forces no-deliver when last-channel is webchat", async () => { + test("agent ignores webchat last-channel for routing", async () => { + testAllowFrom = ["+1555"]; const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-gw-")); testSessionStorePath = path.join(dir, "sessions.json"); await fs.writeFile( @@ -311,7 +312,7 @@ describe("gateway server", () => { sessionId: "sess-main-webchat", updatedAt: Date.now(), lastChannel: "webchat", - lastTo: "ignored", + lastTo: "+1555", }, }, null, @@ -351,8 +352,9 @@ describe("gateway server", () => { const spy = vi.mocked(agentCommand); expect(spy).toHaveBeenCalled(); const call = spy.mock.calls.at(-1)?.[0] as Record; - expect(call.provider).toBe("webchat"); - expect(call.deliver).toBe(false); + expect(call.provider).toBe("whatsapp"); + expect(call.to).toBe("+1555"); + expect(call.deliver).toBe(true); expect(call.bestEffortDeliver).toBe(true); expect(call.sessionId).toBe("sess-main-webchat"); diff --git a/src/gateway/server.ts b/src/gateway/server.ts index 1cfcb6de7..2eba1041d 100644 --- a/src/gateway/server.ts +++ b/src/gateway/server.ts @@ -1174,7 +1174,11 @@ export async function startGatewayServer( const resolvedChannel = (() => { if (requestedChannel === "last") { - return lastChannel ?? "whatsapp"; + // WebChat is not a deliverable surface. Treat it as "unset" for routing, + // so VoiceWake and CLI callers don't get stuck with deliver=false. + return lastChannel && lastChannel !== "webchat" + ? lastChannel + : "whatsapp"; } if ( requestedChannel === "whatsapp" || @@ -1183,7 +1187,9 @@ export async function startGatewayServer( ) { return requestedChannel; } - return lastChannel ?? "whatsapp"; + return lastChannel && lastChannel !== "webchat" + ? lastChannel + : "whatsapp"; })(); const resolvedTo = (() => {