























@@ -1,4 +1,4 @@
1-import { beforeEach, describe, expect, it, vi } from "vitest";
1+import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2233const completeSimple = vi.hoisted(() => vi.fn());
44const getRuntimeAuthForModel = vi.hoisted(() => vi.fn());
@@ -63,6 +63,10 @@ describe("generateConversationLabel", () => {
6363});
6464});
656566+afterEach(() => {
67+vi.useRealTimers();
68+});
69+6670it("uses routed agentDir for model and auth resolution", async () => {
6771await generateConversationLabel({
6872userMessage: "Need help with invoices",
@@ -94,31 +98,35 @@ describe("generateConversationLabel", () => {
9498});
959996100it("passes the label prompt as systemPrompt and the user text as message content", async () => {
101+vi.useFakeTimers();
102+vi.setSystemTime(1_710_000_000_000);
103+97104await generateConversationLabel({
98105userMessage: "Need help with invoices",
99106prompt: "Generate a label",
100107cfg: {},
101108});
102109103-expect(completeSimple).toHaveBeenCalledWith(
104-{ provider: "openai" },
105-{
106-systemPrompt: "Generate a label",
107-messages: [
108-{
109-role: "user",
110-content: "Need help with invoices",
111-timestamp: expect.any(Number),
112-},
113-],
114-},
115-expect.objectContaining({
116-apiKey: "resolved-key",
117-maxTokens: 100,
118-temperature: 0.3,
119-signal: expect.any(AbortSignal),
120-}),
121-);
110+expect(completeSimple).toHaveBeenCalledOnce();
111+const call = completeSimple.mock.calls[0];
112+if (!call) {
113+throw new Error("expected simple completion call");
114+}
115+expect(call[0]).toStrictEqual({ provider: "openai" });
116+expect(call[1]).toStrictEqual({
117+systemPrompt: "Generate a label",
118+messages: [
119+{
120+role: "user",
121+content: "Need help with invoices",
122+timestamp: 1_710_000_000_000,
123+},
124+],
125+});
126+expect(call[2].apiKey).toBe("resolved-key");
127+expect(call[2].maxTokens).toBe(100);
128+expect(call[2].temperature).toBe(0.3);
129+expect(call[2].signal).toBeInstanceOf(AbortSignal);
122130});
123131124132it("omits temperature for Codex Responses simple completions", async () => {
@@ -135,9 +143,12 @@ describe("generateConversationLabel", () => {
135143cfg: {},
136144});
137145138-expect(completeSimple.mock.calls[0]?.[2]).toEqual(
139-expect.not.objectContaining({ temperature: expect.anything() }),
140-);
146+expect(completeSimple).toHaveBeenCalledOnce();
147+const options = completeSimple.mock.calls[0]?.[2];
148+if (!options) {
149+throw new Error("expected simple completion options");
150+}
151+expect(Object.hasOwn(options, "temperature")).toBe(false);
141152});
142153143154it("logs completion errors instead of treating them as empty labels", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。