feat(config): default thinking for sessions_spawn subagents (#7372)

* feat(config): add subagent default thinking

* fix: accept config subagents.thinking + stabilize test mocks (#7372) (thanks @tyler6204)

* fix: use findLast instead of clearAllMocks in test (#7372)

* fix: correct test assertions for tool result structure (#7372)

* fix: remove unnecessary type assertion after rebase
This commit is contained in:
Tyler Yust
2026-02-02 12:14:17 -08:00
committed by GitHub
parent d3bb32273e
commit 64849e81f5
8 changed files with 82 additions and 3 deletions

View File

@@ -172,15 +172,21 @@ export function createSessionsSpawnTool(opts?: {
normalizeModelSelection(modelOverride) ??
normalizeModelSelection(targetAgentConfig?.subagents?.model) ??
normalizeModelSelection(cfg.agents?.defaults?.subagents?.model);
const resolvedThinkingDefaultRaw =
readStringParam(targetAgentConfig?.subagents ?? {}, "thinking") ??
readStringParam(cfg.agents?.defaults?.subagents ?? {}, "thinking");
let thinkingOverride: string | undefined;
if (thinkingOverrideRaw) {
const normalized = normalizeThinkLevel(thinkingOverrideRaw);
const thinkingCandidateRaw = thinkingOverrideRaw || resolvedThinkingDefaultRaw;
if (thinkingCandidateRaw) {
const normalized = normalizeThinkLevel(thinkingCandidateRaw);
if (!normalized) {
const { provider, model } = splitModelRef(resolvedModel);
const hint = formatThinkingLevels(provider, model);
return jsonResult({
status: "error",
error: `Invalid thinking level "${thinkingOverrideRaw}". Use one of: ${hint}.`,
error: `Invalid thinking level "${thinkingCandidateRaw}". Use one of: ${hint}.`,
});
}
thinkingOverride = normalized;