fix(coding-agent): fixed role override regression by consolidating multiple override calls

- Fixed role override regression by consolidating multiple override calls into a single operation to prevent intermediate state loss.
- Changed model role assignment in buildSessionOptions to use override with merged state instead of deprecated setModelRole method.
- Refactored multiple conditional override calls for smol, slow, and plan model roles to batch them into a single override call.
This commit is contained in:
can1357
2026-02-01 12:36:56 +01:00
parent ce80cb8b94
commit a8bfd2ebe1
+6 -4
View File
@@ -385,7 +385,8 @@ async function buildSessionOptions(
process.exit(1);
}
options.model = model;
settings.setModelRole("default", `${model.provider}/${model.id}`);
const currentRoles = settings.get("modelRoles") as Record<string, string>;
settings.override("modelRoles", { ...currentRoles, default: `${model.provider}/${model.id}` });
} else if (scopedModels.length > 0 && !parsed.continue && !parsed.resume) {
const remembered = settings.getModelRole("default");
if (remembered) {
@@ -637,9 +638,10 @@ export async function main(args: string[]) {
const planModel = parsed.plan ?? process.env.OMP_PLAN_MODEL;
if (smolModel || slowModel || planModel) {
const currentRoles = settings.get("modelRoles") as Record<string, string>;
if (smolModel) settings.override("modelRoles", { ...currentRoles, smol: smolModel });
if (slowModel) settings.override("modelRoles", { ...currentRoles, slow: slowModel });
if (planModel) settings.override("modelRoles", { ...currentRoles, plan: planModel });
if (smolModel) currentRoles.smol = smolModel;
if (slowModel) currentRoles.slow = slowModel;
if (planModel) currentRoles.plan = planModel;
settings.override("modelRoles", currentRoles);
}
await initTheme(settings.get("theme"), isInteractive, settings.get("symbolPreset"), settings.get("colorBlindMode"));