Merge ef3f4f8443e89dc92196815f7af1beea22e0d875 into 598f1826d8b2bc969aace2c6459824737667218c

This commit is contained in:
Bin Deng 2026-03-21 11:39:58 +08:00 committed by GitHub
commit ea74352a72
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 16 additions and 25 deletions

View File

@ -168,13 +168,13 @@ describe("runCronIsolatedAgentTurn — cron model override (#21057)", () => {
it("returns error without persisting model when payload model is disallowed", async () => {
resolveAllowedModelRefMock.mockReturnValueOnce({
error: "Model not allowed: anthropic/claude-sonnet-4-6",
error: "model not allowed: anthropic/claude-sonnet-4-6",
});
const result = await runCronIsolatedAgentTurn(makeParams());
expect(result.status).toBe("error");
expect(result.error).toContain("Model not allowed");
expect(result.error).toContain("model not allowed");
// Model should remain undefined — the early return happens before the
// pre-run persist block, so neither the session entry nor the store
// should be touched with a rejected model.

View File

@ -207,30 +207,27 @@ describe("runCronIsolatedAgentTurn — skill filter", () => {
expect(runParams.model).toBe("claude-sonnet-4-6");
});
it("falls back to agent defaults when payload.model is not allowed", async () => {
it("returns error when payload.model is not allowed", async () => {
resolveAllowedModelRefMock.mockReturnValueOnce({
error: "model not allowed: anthropic/claude-sonnet-4-6",
});
await runSkillFilterCase({
cfg: {
agents: {
defaults: {
model: { primary: "openai-codex/gpt-5.3-codex", fallbacks: defaultFallbacks },
const result = await runCronIsolatedAgentTurn(
makeSkillParams({
cfg: {
agents: {
defaults: {
model: { primary: "openai-codex/gpt-5.3-codex", fallbacks: defaultFallbacks },
},
},
},
},
job: makeSkillJob({
payload: { kind: "agentTurn", message: "test", model: "anthropic/claude-sonnet-4-6" },
job: makeSkillJob({
payload: { kind: "agentTurn", message: "test", model: "anthropic/claude-sonnet-4-6" },
}),
}),
});
expect(logWarnMock).toHaveBeenCalledWith(
"cron: payload.model 'anthropic/claude-sonnet-4-6' not allowed, falling back to agent defaults",
);
expectDefaultModelCall({
primary: "openai-codex/gpt-5.3-codex",
fallbacks: defaultFallbacks,
});
expect(result.status).toBe("error");
expect(result.error).toContain("model not allowed");
});
it("returns an error when payload.model is invalid", async () => {

View File

@ -351,13 +351,7 @@ export async function runCronIsolatedAgentTurn(params: {
defaultModel: resolvedDefault.model,
});
if ("error" in resolvedOverride) {
if (resolvedOverride.error.startsWith("model not allowed:")) {
logWarn(
`cron: payload.model '${modelOverride}' not allowed, falling back to agent defaults`,
);
} else {
return { status: "error", error: resolvedOverride.error };
}
return { status: "error", error: resolvedOverride.error };
} else {
provider = resolvedOverride.ref.provider;
model = resolvedOverride.ref.model;