























@@ -4018,6 +4018,69 @@ describe("runAgentTurnWithFallback", () => {
40184018expect(sessionStore.main.authProfileOverride).toBeUndefined();
40194019});
402040204021+it("does not persist fallback selection for one-turn image model overrides", async () => {
4022+state.runWithModelFallbackMock.mockImplementation(
4023+async (params: { run: (provider: string, model: string) => Promise<unknown> }) => ({
4024+result: await params.run("openai", "gpt-4o-mini"),
4025+provider: "openai",
4026+model: "gpt-4o-mini",
4027+attempts: [],
4028+}),
4029+);
4030+state.runEmbeddedPiAgentMock.mockResolvedValue({
4031+payloads: [{ text: "ok" }],
4032+meta: {},
4033+});
4034+4035+const followupRun = createFollowupRun();
4036+followupRun.run.provider = "openai";
4037+followupRun.run.model = "gpt-4o";
4038+followupRun.run.hasOneTurnModelOverride = true;
4039+4040+const sessionEntry: SessionEntry = {
4041+sessionId: "session",
4042+updatedAt: Date.now(),
4043+totalTokens: 1,
4044+compactionCount: 0,
4045+};
4046+const sessionStore = { main: sessionEntry };
4047+4048+const runAgentTurnWithFallback = await getRunAgentTurnWithFallback();
4049+const result = await runAgentTurnWithFallback({
4050+commandBody: "hello",
4051+ followupRun,
4052+sessionCtx: {
4053+Provider: "telegram",
4054+MessageSid: "msg",
4055+} as unknown as TemplateContext,
4056+opts: {},
4057+typingSignals: createMockTypingSignaler(),
4058+blockReplyPipeline: null,
4059+blockStreamingEnabled: false,
4060+resolvedBlockStreamingBreak: "message_end",
4061+applyReplyToMode: (payload) => payload,
4062+shouldEmitToolResult: () => true,
4063+shouldEmitToolOutput: () => false,
4064+pendingToolTasks: new Set(),
4065+resetSessionAfterCompactionFailure: async () => false,
4066+resetSessionAfterRoleOrderingConflict: async () => false,
4067+isHeartbeat: false,
4068+sessionKey: "main",
4069+getActiveSessionEntry: () => sessionEntry,
4070+activeSessionStore: sessionStore,
4071+resolvedVerboseLevel: "off",
4072+});
4073+4074+expect(result.kind).toBe("success");
4075+expectMockCallArgFields(state.runEmbeddedPiAgentMock, 0, "embedded run params", {
4076+provider: "openai",
4077+model: "gpt-4o-mini",
4078+});
4079+expect(sessionEntry.providerOverride).toBeUndefined();
4080+expect(sessionEntry.modelOverride).toBeUndefined();
4081+expect(sessionEntry.modelOverrideSource).toBeUndefined();
4082+});
4083+40214084it("does not persist fallback selection for legacy user overrides without modelOverrideSource", async () => {
40224085// Regression: older persisted sessions can have a user-selected override
40234086// (modelOverride set) but no modelOverrideSource field, because the field
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。