diff --git a/src/gateway/server.test.ts b/src/gateway/server.test.ts index 181e6e7b2..8784796ea 100644 --- a/src/gateway/server.test.ts +++ b/src/gateway/server.test.ts @@ -1682,7 +1682,7 @@ describe("gateway server", () => { { main: { sessionId: "sess-main", - updatedAt: now - 60_000, + updatedAt: now - 30_000, inputTokens: 10, outputTokens: 20, thinkingLevel: "low", @@ -1705,7 +1705,11 @@ describe("gateway server", () => { ); const { server, ws } = await startServerWithClient(); - await connectOk(ws); + const hello = await connectOk(ws); + expect( + (hello as unknown as { features?: { methods?: string[] } }).features + ?.methods, + ).toEqual(expect.arrayContaining(["sessions.list", "sessions.patch"])); const list1 = await rpcReq<{ path: string; @@ -1725,6 +1729,27 @@ describe("gateway server", () => { expect(main?.thinkingLevel).toBe("low"); expect(main?.verboseLevel).toBe("on"); + const active = await rpcReq<{ + sessions: Array<{ key: string }>; + }>(ws, "sessions.list", { + includeGlobal: false, + includeUnknown: false, + activeMinutes: 1, + }); + expect(active.ok).toBe(true); + expect(active.payload?.sessions.map((s) => s.key)).toEqual(["main"]); + + const limited = await rpcReq<{ + sessions: Array<{ key: string }>; + }>(ws, "sessions.list", { + includeGlobal: true, + includeUnknown: false, + limit: 1, + }); + expect(limited.ok).toBe(true); + expect(limited.payload?.sessions).toHaveLength(1); + expect(limited.payload?.sessions[0]?.key).toBe("global"); + const patched = await rpcReq<{ ok: true; key: string }>( ws, "sessions.patch", @@ -1746,6 +1771,15 @@ describe("gateway server", () => { expect(main2?.thinkingLevel).toBe("medium"); expect(main2?.verboseLevel).toBeUndefined(); + const badThinking = await rpcReq(ws, "sessions.patch", { + key: "main", + thinkingLevel: "banana", + }); + expect(badThinking.ok).toBe(false); + expect( + (badThinking.error as { message?: unknown } | undefined)?.message ?? "", + ).toMatch(/invalid thinkinglevel/i); + ws.close(); await server.close(); });