diff --git a/src/gateway/protocol/schema.ts b/src/gateway/protocol/schema.ts index b2c5f8eeb..ffd1c025d 100644 --- a/src/gateway/protocol/schema.ts +++ b/src/gateway/protocol/schema.ts @@ -458,7 +458,7 @@ export const CronRunLogEntrySchema = Type.Object( export const ChatHistoryParamsSchema = Type.Object( { sessionKey: NonEmptyString, - limit: Type.Optional(Type.Integer({ minimum: 1 })), + limit: Type.Optional(Type.Integer({ minimum: 1, maximum: 1000 })), }, { additionalProperties: false }, ); diff --git a/src/gateway/server.test.ts b/src/gateway/server.test.ts index cbc1705bb..3992165b1 100644 --- a/src/gateway/server.test.ts +++ b/src/gateway/server.test.ts @@ -1786,8 +1786,8 @@ describe("gateway server", () => { ); expect(defaultRes.ok).toBe(true); const defaultMsgs = defaultRes.payload?.messages ?? []; - expect(defaultMsgs.length).toBe(300); - expect(firstContentText(defaultMsgs[0])).toBe("m0"); + expect(defaultMsgs.length).toBe(200); + expect(firstContentText(defaultMsgs[0])).toBe("m100"); const limitedRes = await rpcReq<{ messages?: unknown[] }>( ws, @@ -1829,21 +1829,21 @@ describe("gateway server", () => { ); expect(cappedRes.ok).toBe(true); const cappedMsgs = cappedRes.payload?.messages ?? []; - expect(cappedMsgs.length).toBe(1000); - expect(firstContentText(cappedMsgs[0])).toBe("b500"); + expect(cappedMsgs.length).toBe(200); + expect(firstContentText(cappedMsgs[0])).toBe("b1300"); - const overLimitRes = await rpcReq<{ messages?: unknown[] }>( + const maxRes = await rpcReq<{ messages?: unknown[] }>( ws, "chat.history", { sessionKey: "main", - limit: 5000, + limit: 1000, }, ); - expect(overLimitRes.ok).toBe(true); - const overLimitMsgs = overLimitRes.payload?.messages ?? []; - expect(overLimitMsgs.length).toBe(1000); - expect(firstContentText(overLimitMsgs[0])).toBe("b500"); + expect(maxRes.ok).toBe(true); + const maxMsgs = maxRes.payload?.messages ?? []; + expect(maxMsgs.length).toBe(1000); + expect(firstContentText(maxMsgs[0])).toBe("b500"); ws.close(); await server.close(); diff --git a/src/gateway/server.ts b/src/gateway/server.ts index 28d2a8b50..fe648b737 100644 --- a/src/gateway/server.ts +++ b/src/gateway/server.ts @@ -1824,7 +1824,8 @@ export async function startGatewayServer( ? readSessionMessages(sessionId, storePath) : []; const hardMax = 1000; - const requested = typeof limit === "number" ? limit : hardMax; + const defaultLimit = 200; + const requested = typeof limit === "number" ? limit : defaultLimit; const max = Math.min(hardMax, requested); const messages = rawMessages.length > max ? rawMessages.slice(-max) : rawMessages;