



























@@ -1273,6 +1273,67 @@ describe("OpenAI-compatible HTTP API (e2e)", () => {
12731273}
12741274});
127512751276+it("forwards inbound max_completion_tokens and max_tokens into streamParams", async () => {
1277+const port = enabledPort;
1278+const mockAgentOnce = (payloads: Array<{ text: string }>) => {
1279+agentCommand.mockClear();
1280+agentCommand.mockResolvedValueOnce({ payloads } as never);
1281+};
1282+const getFirstAgentMaxTokens = () => {
1283+const opts = (agentCommand.mock.calls[0] as unknown[] | undefined)?.[0];
1284+return (opts as { streamParams?: { maxTokens?: number } } | undefined)?.streamParams
1285+?.maxTokens;
1286+};
1287+1288+{
1289+mockAgentOnce([{ text: "hello" }]);
1290+const res = await postChatCompletions(port, {
1291+model: "openclaw",
1292+max_completion_tokens: 256,
1293+messages: [{ role: "user", content: "hi" }],
1294+});
1295+expect(res.status).toBe(200);
1296+expect(getFirstAgentMaxTokens()).toBe(256);
1297+await res.text();
1298+}
1299+1300+{
1301+mockAgentOnce([{ text: "hello" }]);
1302+const res = await postChatCompletions(port, {
1303+model: "openclaw",
1304+max_tokens: 128,
1305+messages: [{ role: "user", content: "hi" }],
1306+});
1307+expect(res.status).toBe(200);
1308+expect(getFirstAgentMaxTokens()).toBe(128);
1309+await res.text();
1310+}
1311+1312+{
1313+mockAgentOnce([{ text: "hello" }]);
1314+const res = await postChatCompletions(port, {
1315+model: "openclaw",
1316+max_completion_tokens: 64,
1317+max_tokens: 999,
1318+messages: [{ role: "user", content: "hi" }],
1319+});
1320+expect(res.status).toBe(200);
1321+expect(getFirstAgentMaxTokens()).toBe(64);
1322+await res.text();
1323+}
1324+1325+{
1326+mockAgentOnce([{ text: "hello" }]);
1327+const res = await postChatCompletions(port, {
1328+model: "openclaw",
1329+messages: [{ role: "user", content: "hi" }],
1330+});
1331+expect(res.status).toBe(200);
1332+expect(getFirstAgentMaxTokens()).toBeUndefined();
1333+await res.text();
1334+}
1335+});
1336+12761337it("returns 429 for repeated failed auth when gateway.auth.rateLimit is configured", async () => {
12771338testState.gatewayAuth = {
12781339mode: "token",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。