fix: restore cron context window priming

This commit is contained in:
Shakker
2026-04-03 16:00:45 +01:00
committed by Shakker
parent f5276ed38b
commit b98ee01814
3 changed files with 20 additions and 13 deletions

View File

@@ -8,7 +8,7 @@ import {
buildWorkspaceSkillSnapshotMock,
getCliSessionIdMock,
isCliProviderMock,
lookupCachedContextTokensMock,
lookupContextTokensMock,
loadRunCronIsolatedAgentTurn,
logWarnMock,
makeCronSession,
@@ -325,14 +325,14 @@ describe("runCronIsolatedAgentTurn — skill filter", () => {
});
describe("context token fallback", () => {
it("preserves existing session contextTokens when no cached model window is loaded", async () => {
it("preserves existing session contextTokens when no configured or cached model window is loaded", async () => {
const session = makeCronSession({
sessionEntry: makeCronSessionEntry({
contextTokens: 222_000,
}),
});
resolveCronSessionMock.mockReturnValue(session);
lookupCachedContextTokensMock.mockReturnValue(undefined);
lookupContextTokensMock.mockReturnValue(undefined);
const result = await runSkillFilterCase();
@@ -340,19 +340,22 @@ describe("runCronIsolatedAgentTurn — skill filter", () => {
expect(session.sessionEntry.contextTokens).toBe(222_000);
});
it("prefers cached model contextTokens over the previous session value", async () => {
it("prefers sync-configured model contextTokens over the previous session value", async () => {
const session = makeCronSession({
sessionEntry: makeCronSessionEntry({
contextTokens: 222_000,
}),
});
resolveCronSessionMock.mockReturnValue(session);
lookupCachedContextTokensMock.mockReturnValue(512_000);
lookupContextTokensMock.mockReturnValue(512_000);
const result = await runSkillFilterCase();
expect(result.status).toBe("ok");
expect(session.sessionEntry.contextTokens).toBe(512_000);
expect(lookupContextTokensMock).toHaveBeenCalledWith("gpt-4", {
allowAsyncLoad: false,
});
});
});
});

View File

@@ -48,7 +48,7 @@ export const resolveThinkingDefaultMock = createMock();
export const runWithModelFallbackMock = createMock();
export const runEmbeddedPiAgentMock = createMock();
export const runCliAgentMock = createMock();
export const lookupCachedContextTokensMock = createMock();
export const lookupContextTokensMock = createMock();
export const getCliSessionIdMock = createMock();
export const updateSessionStoreMock = createMock();
export const resolveCronSessionMock = createMock();
@@ -117,9 +117,13 @@ vi.mock("../../agents/pi-embedded.js", () => ({
runEmbeddedPiAgent: runEmbeddedPiAgentMock,
}));
vi.mock("../../agents/context-cache.js", () => ({
lookupCachedContextTokens: lookupCachedContextTokensMock,
}));
vi.mock("../../agents/context.js", async (importOriginal) => {
const actual = await importOriginal<typeof import("../../agents/context.js")>();
return {
...actual,
lookupContextTokens: lookupContextTokensMock,
};
});
vi.mock("../../agents/date-time.js", async (importOriginal) => {
const actual = await importOriginal<typeof import("../../agents/date-time.js")>();
@@ -352,8 +356,8 @@ export function resetRunCronIsolatedAgentTurnHarness(): void {
runEmbeddedPiAgentMock.mockResolvedValue(makeDefaultEmbeddedResult());
runCliAgentMock.mockReset();
lookupCachedContextTokensMock.mockReset();
lookupCachedContextTokensMock.mockReturnValue(undefined);
lookupContextTokensMock.mockReset();
lookupContextTokensMock.mockReturnValue(undefined);
getCliSessionIdMock.mockReturnValue(undefined);
updateSessionStoreMock.mockReset();

View File

@@ -7,7 +7,7 @@ import {
} from "../../agents/agent-scope.js";
import { resolveSessionAuthProfileOverride } from "../../agents/auth-profiles/session-override.js";
import { resolveBootstrapWarningSignaturesSeen } from "../../agents/bootstrap-budget.js";
import { lookupCachedContextTokens } from "../../agents/context-cache.js";
import { lookupContextTokens } from "../../agents/context.js";
import { resolveCronStyleNow } from "../../agents/current-time.js";
import { DEFAULT_CONTEXT_TOKENS } from "../../agents/defaults.js";
import { resolveFastModeState } from "../../agents/fast-mode.js";
@@ -722,7 +722,7 @@ export async function runCronIsolatedAgentTurn(params: {
finalRunResult.meta?.agentMeta?.provider ?? fallbackProvider ?? liveSelection.provider;
const contextTokens =
resolvePositiveContextTokens(agentCfg?.contextTokens) ??
lookupCachedContextTokens(modelUsed) ??
lookupContextTokens(modelUsed, { allowAsyncLoad: false }) ??
resolvePositiveContextTokens(cronSession.sessionEntry.contextTokens) ??
DEFAULT_CONTEXT_TOKENS;