if ("spawnedBy" in patch) { const raw = patch.spawnedBy; if (raw === null) { if (existing?.spawnedBy) { return invalid("spawnedBy cannot be cleared once set");
}
} elseif (raw !== undefined) { const trimmed = normalizeOptionalString(raw) ?? ""; if (!trimmed) { return invalid("invalid spawnedBy: empty");
} if (!supportsSpawnLineage(storeKey)) { return invalid("spawnedBy is only supported for subagent:* or acp:* sessions");
} if (existing?.spawnedBy && existing.spawnedBy !== trimmed) { return invalid("spawnedBy cannot be changed once set");
}
next.spawnedBy = trimmed;
}
}
if ("spawnedWorkspaceDir" in patch) { const raw = patch.spawnedWorkspaceDir; if (raw === null) { if (existing?.spawnedWorkspaceDir) { return invalid("spawnedWorkspaceDir cannot be cleared once set");
}
} elseif (raw !== undefined) { if (!supportsSpawnLineage(storeKey)) { return invalid("spawnedWorkspaceDir is only supported for subagent:* or acp:* sessions");
} const trimmed = normalizeOptionalString(raw) ?? ""; if (!trimmed) { return invalid("invalid spawnedWorkspaceDir: empty");
} if (existing?.spawnedWorkspaceDir && existing.spawnedWorkspaceDir !== trimmed) { return invalid("spawnedWorkspaceDir cannot be changed once set");
}
next.spawnedWorkspaceDir = trimmed;
}
}
if ("spawnDepth" in patch) { const raw = patch.spawnDepth; if (raw === null) { if (typeof existing?.spawnDepth === "number") { return invalid("spawnDepth cannot be cleared once set");
}
} elseif (raw !== undefined) { if (!supportsSpawnLineage(storeKey)) { return invalid("spawnDepth is only supported for subagent:* or acp:* sessions");
} const numeric = raw; if (!Number.isInteger(numeric) || numeric < 0) { return invalid("invalid spawnDepth (use an integer >= 0)");
} const normalized = numeric; if (typeof existing?.spawnDepth === "number" && existing.spawnDepth !== normalized) { return invalid("spawnDepth cannot be changed once set");
}
next.spawnDepth = normalized;
}
}
if ("subagentRole" in patch) { const raw = patch.subagentRole; if (raw === null) { if (existing?.subagentRole) { return invalid("subagentRole cannot be cleared once set");
}
} elseif (raw !== undefined) { if (!supportsSpawnLineage(storeKey)) { return invalid("subagentRole is only supported for subagent:* or acp:* sessions");
} const normalized = normalizeSubagentRole(raw); if (!normalized) { return invalid('invalid subagentRole (use "orchestrator" or "leaf")');
} if (existing?.subagentRole && existing.subagentRole !== normalized) { return invalid("subagentRole cannot be changed once set");
}
next.subagentRole = normalized;
}
}
if ("subagentControlScope" in patch) { const raw = patch.subagentControlScope; if (raw === null) { if (existing?.subagentControlScope) { return invalid("subagentControlScope cannot be cleared once set");
}
} elseif (raw !== undefined) { if (!supportsSpawnLineage(storeKey)) { return invalid("subagentControlScope is only supported for subagent:* or acp:* sessions");
} const normalized = normalizeSubagentControlScope(raw); if (!normalized) { return invalid('invalid subagentControlScope (use "children" or "none")');
} if (existing?.subagentControlScope && existing.subagentControlScope !== normalized) { return invalid("subagentControlScope cannot be changed once set");
}
next.subagentControlScope = normalized;
}
}
if ("label" in patch) { const raw = patch.label; if (raw === null) { delete next.label;
} elseif (raw !== undefined) { const parsed = parseSessionLabel(raw); if (!parsed.ok) { return invalid(parsed.error);
} for (const [key, entry] of Object.entries(store)) { if (key === storeKey) { continue;
} if (entry?.label === parsed.label) { return invalid(`label already in use: ${parsed.label}`);
}
}
next.label = parsed.label;
}
}
if ("thinkingLevel" in patch) { const raw = patch.thinkingLevel; if (raw === null) { // Clear the override and fall back to model default delete next.thinkingLevel;
} elseif (raw !== undefined) { const normalized = normalizeThinkLevel(raw); if (!normalized) { const hintProvider =
normalizeOptionalString(existing?.providerOverride) || resolvedDefault.provider; const hintModel = normalizeOptionalString(existing?.modelOverride) || resolvedDefault.model; return invalid(
`invalid thinkingLevel (use ${formatThinkingLevels(hintProvider, hintModel, "|")})`,
);
}
next.thinkingLevel = normalized;
}
}
if ("fastMode" in patch) { const raw = patch.fastMode; if (raw === null) { delete next.fastMode;
} elseif (raw !== undefined) { const normalized = normalizeFastMode(raw); if (normalized === undefined) { return invalid("invalid fastMode (use true or false)");
}
next.fastMode = normalized;
}
}
if ("verboseLevel" in patch) { const raw = patch.verboseLevel; const parsed = parseVerboseOverride(raw); if (!parsed.ok) { return invalid(parsed.error);
}
applyVerboseOverride(next, parsed.value);
}
if ("traceLevel" in patch) { const raw = patch.traceLevel; const parsed = parseTraceOverride(raw); if (!parsed.ok) { return invalid(parsed.error);
}
applyTraceOverride(next, parsed.value);
}
if ("reasoningLevel" in patch) { const raw = patch.reasoningLevel; if (raw === null) { delete next.reasoningLevel;
} elseif (raw !== undefined) { const normalized = normalizeReasoningLevel(raw); if (!normalized) { return invalid('invalid reasoningLevel (use "on"|"off"|"stream")');
} // Persist "off" explicitly so that resolveDefaultReasoningLevel() // does not re-enable reasoning for capable models (#24406).
next.reasoningLevel = normalized;
}
}
if ("responseUsage" in patch) { const raw = patch.responseUsage; if (raw === null) { delete next.responseUsage;
} elseif (raw !== undefined) { const normalized = normalizeUsageDisplay(raw); if (!normalized) { return invalid('invalid responseUsage (use "off"|"tokens"|"full")');
} if (normalized === "off") { delete next.responseUsage;
} else {
next.responseUsage = normalized;
}
}
}
if ("elevatedLevel" in patch) { const raw = patch.elevatedLevel; if (raw === null) { delete next.elevatedLevel;
} elseif (raw !== undefined) { const normalized = normalizeElevatedLevel(raw); if (!normalized) { return invalid('invalid elevatedLevel (use "on"|"off"|"ask"|"full")');
} // Persist "off" explicitly so patches can override defaults.
next.elevatedLevel = normalized;
}
}
if ("execHost" in patch) { const raw = patch.execHost; if (raw === null) { delete next.execHost;
} elseif (raw !== undefined) { const normalized = normalizeExecTarget(raw) ?? undefined; if (!normalized) { return invalid('invalid execHost (use "auto"|"sandbox"|"gateway"|"node")');
}
next.execHost = normalized;
}
}
if ("execSecurity" in patch) { const raw = patch.execSecurity; if (raw === null) { delete next.execSecurity;
} elseif (raw !== undefined) { const normalized = normalizeExecSecurity(raw); if (!normalized) { return invalid('invalid execSecurity (use "deny"|"allowlist"|"full")');
}
next.execSecurity = normalized;
}
}
if ("execAsk" in patch) { const raw = patch.execAsk; if (raw === null) { delete next.execAsk;
} elseif (raw !== undefined) { const normalized = normalizeExecAsk(raw); if (!normalized) { return invalid('invalid execAsk (use "off"|"on-miss"|"always")');
}
next.execAsk = normalized;
}
}
if ("execNode" in patch) { const raw = patch.execNode; if (raw === null) { delete next.execNode;
} elseif (raw !== undefined) { const trimmed = normalizeOptionalString(raw) ?? ""; if (!trimmed) { return invalid("invalid execNode: empty");
}
next.execNode = trimmed;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.