feat(task): add per-spawn effort ceiling
This commit is contained in:
@@ -233,6 +233,48 @@ describe("runSubprocess parent-discovery pass-through (issue #2190)", () => {
|
||||
expect(Object.hasOwn(result, "structuredOutput")).toBe(false);
|
||||
});
|
||||
|
||||
it("caps caller-requested effort at task.maxEffort", async () => {
|
||||
const model = getBundledModel("openai-codex", "gpt-5.6-sol");
|
||||
if (!model) throw new Error("Expected gpt-5.6-sol model to exist");
|
||||
const settings = Settings.isolated({ "task.maxEffort": "low" });
|
||||
settings.setModelRole("task", `${model.provider}/${model.id}`);
|
||||
const session = yieldEmittingSession();
|
||||
const spy = vi.spyOn(sdkModule, "createAgentSession").mockResolvedValue(createSessionResult(session));
|
||||
|
||||
const result = await runSubprocess({
|
||||
...baseOptions,
|
||||
agent: { ...baseAgent, model: ["@task"] },
|
||||
id: "subagent-effort-ceiling",
|
||||
effort: "hi",
|
||||
settings,
|
||||
modelRegistry: createModelRegistry(model),
|
||||
});
|
||||
|
||||
expect(result.exitCode).toBe(0);
|
||||
expect(spy.mock.calls[0]?.[0]?.thinkingLevel).toBe(ThinkingLevel.Low);
|
||||
});
|
||||
|
||||
it("preserves the model's full effort range by default", async () => {
|
||||
const model = getBundledModel("openai-codex", "gpt-5.6-sol");
|
||||
if (!model) throw new Error("Expected gpt-5.6-sol model to exist");
|
||||
const settings = Settings.isolated();
|
||||
settings.setModelRole("task", `${model.provider}/${model.id}`);
|
||||
const session = yieldEmittingSession();
|
||||
const spy = vi.spyOn(sdkModule, "createAgentSession").mockResolvedValue(createSessionResult(session));
|
||||
|
||||
const result = await runSubprocess({
|
||||
...baseOptions,
|
||||
agent: { ...baseAgent, model: ["@task"] },
|
||||
id: "subagent-default-effort-ceiling",
|
||||
effort: "hi",
|
||||
settings,
|
||||
modelRegistry: createModelRegistry(model),
|
||||
});
|
||||
|
||||
expect(result.exitCode).toBe(0);
|
||||
expect(spy.mock.calls[0]?.[0]?.thinkingLevel).toBe(ThinkingLevel.Max);
|
||||
});
|
||||
|
||||
it("resolves an explicit task-role effort suffix over the agent-definition default", async () => {
|
||||
const model = getBundledModel("anthropic", "claude-sonnet-4-5");
|
||||
if (!model) throw new Error("Expected claude-sonnet-4-5 model to exist");
|
||||
|
||||
Reference in New Issue
Block a user