


















@@ -327,6 +327,9 @@ describe("runCodexAppServerAttempt context-engine lifecycle", () => {
327327const params = createParams(sessionFile, workspaceDir);
328328params.contextEngine = contextEngine;
329329params.contextTokenBudget = 321;
330+params.requestedModelId = "gpt-5.4-codex-primary";
331+params.fallbackReason = "provider_unavailable";
332+params.degradedReason = "context_overflow";
330333params.config = { memory: { citations: "on" } } as EmbeddedRunAttemptParams["config"];
331334332335const run = runCodexAppServerAttempt(params);
@@ -343,6 +346,17 @@ describe("runCodexAppServerAttempt context-engine lifecycle", () => {
343346expect(bootstrapParams.sessionId).toBe("session-1");
344347expect(bootstrapParams.sessionKey).toBe("agent:main:session-1");
345348expect(bootstrapParams.sessionFile).toBe(sessionFile);
349+expect(bootstrapParams.runtimeSettings).toMatchObject({
350+runtime: { mode: "degraded" },
351+model: {
352+requested: "gpt-5.4-codex-primary",
353+resolved: "gpt-5.4-codex",
354+},
355+diagnostics: {
356+fallbackReason: "provider_unavailable",
357+degradedReason: "context_overflow",
358+},
359+});
346360347361expect(contextEngine["assemble"]).toHaveBeenCalledTimes(1);
348362const assembleParams = requireFirstCallArg(contextEngine["assemble"], "assemble") as Parameters<
@@ -353,6 +367,17 @@ describe("runCodexAppServerAttempt context-engine lifecycle", () => {
353367expect(assembleParams.tokenBudget).toBe(321);
354368expect(assembleParams.citationsMode).toBe("on");
355369expect(assembleParams.model).toBe("gpt-5.4-codex");
370+expect(assembleParams.runtimeSettings).toMatchObject({
371+runtime: { mode: "degraded" },
372+model: {
373+requested: "gpt-5.4-codex-primary",
374+resolved: "gpt-5.4-codex",
375+},
376+diagnostics: {
377+fallbackReason: "provider_unavailable",
378+degradedReason: "context_overflow",
379+},
380+});
356381expect(assembleParams.prompt).toBe("hello");
357382expect(assembleParams.messages.map((message) => message.role)).toEqual(["assistant"]);
358383expect(assembleParams.availableTools).toEqual(new Set());
@@ -1639,6 +1664,9 @@ describe("runCodexAppServerAttempt context-engine lifecycle", () => {
16391664const params = createParams(sessionFile, workspaceDir);
16401665params.contextEngine = contextEngine;
16411666params.contextTokenBudget = 111;
1667+params.requestedModelId = "gpt-5.4-codex-primary";
1668+params.fallbackReason = "provider_unavailable";
1669+params.degradedReason = "context_overflow";
1642167016431671const run = runCodexAppServerAttempt(params);
16441672await harness.waitForMethod("turn/start");
@@ -1653,9 +1681,24 @@ describe("runCodexAppServerAttempt context-engine lifecycle", () => {
16531681expect(afterTurnCall.sessionKey).toBe("agent:main:session-1");
16541682expect(afterTurnCall.prePromptMessageCount).toBe(0);
16551683expect(afterTurnCall.tokenBudget).toBe(111);
1684+expect(afterTurnCall.runtimeSettings).toMatchObject({
1685+runtime: { mode: "degraded" },
1686+model: {
1687+requested: "gpt-5.4-codex-primary",
1688+resolved: "gpt-5.4-codex",
1689+},
1690+diagnostics: {
1691+fallbackReason: "provider_unavailable",
1692+degradedReason: "context_overflow",
1693+},
1694+});
16561695expect(afterTurnCall.messages.some((message) => message.role === "user")).toBe(true);
16571696expect(afterTurnCall.messages.some((message) => message.role === "assistant")).toBe(true);
16581697expect(maintain).toHaveBeenCalledTimes(1);
1698+const maintainCall = requireFirstCallArg(maintain, "maintain") as Parameters<
1699+NonNullable<ContextEngine["maintain"]>
1700+>[0];
1701+expect(maintainCall.runtimeSettings).toBe(afterTurnCall.runtimeSettings);
16591702});
1660170316611704it("reloads mirrored history after bootstrap mutates the session transcript", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。