





















@@ -94,6 +94,30 @@ function parseSseDataLines(text: string): string[] {
9494.map((line) => line.slice("data: ".length));
9595}
969697+type FirstAgentCommandOptions = {
98+clientTools?: Array<{
99+function?: {
100+description?: string;
101+name?: string;
102+parameters?: Record<string, unknown>;
103+strict?: boolean;
104+};
105+type?: string;
106+}>;
107+extraSystemPrompt?: string;
108+images?: Array<{ data: string; mimeType: string; type: string }>;
109+message?: string;
110+messageChannel?: string;
111+model?: string;
112+senderIsOwner?: boolean;
113+sessionKey?: string;
114+streamParams?: { maxTokens?: number };
115+};
116+117+function firstAgentCommandOptions() {
118+return agentCommand.mock.calls.at(0)?.[0] as FirstAgentCommandOptions | undefined;
119+}
120+97121describe("OpenAI-compatible HTTP API (e2e)", () => {
98122it("handles request validation and routing", async () => {
99123const port = enabledPort;
@@ -110,10 +134,7 @@ describe("OpenAI-compatible HTTP API (e2e)", () => {
110134const res = await postChatCompletions(port, request.body, request.headers);
111135expect(res.status).toBe(200);
112136expect(agentCommand).toHaveBeenCalledTimes(1);
113-const opts = (agentCommand.mock.calls[0] as unknown[] | undefined)?.[0];
114-expect((opts as { sessionKey?: string } | undefined)?.sessionKey ?? "").toMatch(
115-request.matcher,
116-);
137+expect(firstAgentCommandOptions()?.sessionKey ?? "").toMatch(request.matcher);
117138await res.text();
118139};
119140const expectMessageContext = (
@@ -129,26 +150,7 @@ describe("OpenAI-compatible HTTP API (e2e)", () => {
129150expect(message).toContain(line);
130151}
131152};
132-const getFirstAgentCall = () =>
133-(agentCommand.mock.calls[0] as unknown[] | undefined)?.[0] as
134-| {
135-sessionKey?: string;
136-messageChannel?: string;
137-message?: string;
138-extraSystemPrompt?: string;
139-images?: Array<{ type: string; data: string; mimeType: string }>;
140-clientTools?: Array<{
141-type?: string;
142-function?: {
143-name?: string;
144-description?: string;
145-parameters?: Record<string, unknown>;
146-strict?: boolean;
147-};
148-}>;
149-senderIsOwner?: boolean;
150-}
151-| undefined;
153+const getFirstAgentCall = () => firstAgentCommandOptions();
152154const getFirstAgentMessage = () => getFirstAgentCall()?.message ?? "";
153155const expectInvalidRequestNoDispatch = async (messages: unknown[]) => {
154156agentCommand.mockClear();
@@ -233,10 +235,7 @@ describe("OpenAI-compatible HTTP API (e2e)", () => {
233235);
234236expect(res.status).toBe(200);
235237236-const opts = (agentCommand.mock.calls[0] as unknown[] | undefined)?.[0];
237-expect((opts as { sessionKey?: string } | undefined)?.sessionKey).toBe(
238-"agent:beta:openai:custom",
239-);
238+expect(firstAgentCommandOptions()?.sessionKey).toBe("agent:beta:openai:custom");
240239await res.text();
241240}
242241@@ -249,10 +248,7 @@ describe("OpenAI-compatible HTTP API (e2e)", () => {
249248});
250249expect(res.status).toBe(200);
251250252-const opts = (agentCommand.mock.calls[0] as unknown[] | undefined)?.[0];
253-expect((opts as { sessionKey?: string } | undefined)?.sessionKey ?? "").toContain(
254-"openai-user:alice",
255-);
251+expect(firstAgentCommandOptions()?.sessionKey ?? "").toContain("openai-user:alice");
256252await res.text();
257253}
258254@@ -284,8 +280,7 @@ describe("OpenAI-compatible HTTP API (e2e)", () => {
284280},
285281);
286282expect(res.status).toBe(200);
287-const opts = (agentCommand.mock.calls[0] as unknown[] | undefined)?.[0];
288-expect((opts as { model?: string } | undefined)?.model).toBe("openai/gpt-5.4");
283+expect(firstAgentCommandOptions()?.model).toBe("openai/gpt-5.4");
289284await res.text();
290285}
291286@@ -312,8 +307,7 @@ describe("OpenAI-compatible HTTP API (e2e)", () => {
312307},
313308);
314309expect(res.status).toBe(200);
315-const opts = (agentCommand.mock.calls[0] as unknown[] | undefined)?.[0];
316-expect((opts as { model?: string } | undefined)?.model).toBe("gpt-5.4");
310+expect(firstAgentCommandOptions()?.model).toBe("gpt-5.4");
317311await res.text();
318312await writeGatewayConfig({});
319313}
@@ -366,8 +360,7 @@ describe("OpenAI-compatible HTTP API (e2e)", () => {
366360});
367361expect(res.status).toBe(200);
368362369-const opts = (agentCommand.mock.calls[0] as unknown[] | undefined)?.[0];
370-expect((opts as { message?: string } | undefined)?.message).toBe("hello\nworld");
363+expect(firstAgentCommandOptions()?.message).toBe("hello\nworld");
371364await res.text();
372365}
373366@@ -1279,11 +1272,7 @@ describe("OpenAI-compatible HTTP API (e2e)", () => {
12791272agentCommand.mockClear();
12801273agentCommand.mockResolvedValueOnce({ payloads } as never);
12811274};
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-};
1275+const getFirstAgentMaxTokens = () => firstAgentCommandOptions()?.streamParams?.maxTokens;
1287127612881277{
12891278mockAgentOnce([{ text: "hello" }]);
@@ -2037,10 +2026,7 @@ describe("OpenAI-compatible HTTP API (e2e)", () => {
20372026});
2038202720392028expect(res.status).toBe(200);
2040-const firstCall = (agentCommand.mock.calls[0] as unknown[] | undefined)?.[0] as
2041-| { senderIsOwner?: boolean }
2042-| undefined;
2043-expect(firstCall?.senderIsOwner).toBe(true);
2029+expect(firstAgentCommandOptions()?.senderIsOwner).toBe(true);
20442030await res.text();
20452031} finally {
20462032await server.close({ reason: "openai token auth owner test done" });
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。