From e0110bd8c93a8ca2678309e0116e77eecddee3db Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 17 May 2026 04:30:56 +0100 Subject: [PATCH] fix: forward chat send run overrides --- src/gateway/server-methods/chat.ts | 3 ++ .../server.chat.gateway-server-chat-b.test.ts | 31 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/gateway/server-methods/chat.ts b/src/gateway/server-methods/chat.ts index 3e114fc1cbd..fbd74dbc432 100644 --- a/src/gateway/server-methods/chat.ts +++ b/src/gateway/server-methods/chat.ts @@ -2159,6 +2159,7 @@ export const chatHandlers: GatewayRequestHandlers = { sessionId?: string; message: string; thinking?: string; + fastMode?: boolean; deliver?: boolean; originatingChannel?: string; originatingTo?: string; @@ -2822,6 +2823,8 @@ export const chatHandlers: GatewayRequestHandlers = { abortSignal: activeRunAbort.controller.signal, images: replyOptionImages, imageOrder: imageOrder.length > 0 ? imageOrder : undefined, + thinkingLevelOverride: p.thinking, + fastModeOverride: p.fastMode, onAgentRunStart: (runId) => { agentRunStarted = true; const connId = typeof client?.connId === "string" ? client.connId : undefined; diff --git a/src/gateway/server.chat.gateway-server-chat-b.test.ts b/src/gateway/server.chat.gateway-server-chat-b.test.ts index 635f18a4a79..8b5d103b1c6 100644 --- a/src/gateway/server.chat.gateway-server-chat-b.test.ts +++ b/src/gateway/server.chat.gateway-server-chat-b.test.ts @@ -851,6 +851,37 @@ describe("gateway server chat", () => { }); }); + test("chat.send forwards one-shot thinking and fast mode overrides", async () => { + await withGatewayChatHarness(async ({ ws, createSessionDir }) => { + const spy = getReplyFromConfig; + await connectOk(ws); + + await createSessionDir(); + await seedMainSessionEntry(); + let capturedOpts: GetReplyOptions | undefined; + mockGetReplyFromConfigOnce(async (_ctx, opts) => { + capturedOpts = opts; + return undefined; + }); + + const sendRes = await rpcReq(ws, "chat.send", { + sessionKey: "main", + message: "hello", + thinking: "high", + fastMode: true, + idempotencyKey: "idem-thinking-fast", + }); + expect(sendRes.ok).toBe(true); + + await vi.waitFor(() => { + expect(spy.mock.calls.length).toBeGreaterThan(0); + }, FAST_WAIT_OPTS); + + expect(capturedOpts?.thinkingLevelOverride).toBe("high"); + expect(capturedOpts?.fastModeOverride).toBe(true); + }); + }); + test("chat.history hard-caps single oversized nested payloads", async () => { await withGatewayChatHarness(async ({ ws, createSessionDir }) => { const historyMaxBytes = 64 * 1024;