fix: deep custom config should be optional
CI / verify (pull_request) Successful in 11s

This commit is contained in:
2026-09-28 12:52:05 +02:00
parent 0e99dfbaec
commit 7da94c9223
6 changed files with 54 additions and 13 deletions
+2 -2
View File
@@ -57,8 +57,8 @@ export const settings = z.discriminatedUnion("mode", [
"fast-hi": customAssignment,
"good-lo": customAssignment,
"good-hi": customAssignment,
"deep-lo": customAssignment,
"deep-hi": customAssignment,
"deep-lo": customAssignment.optional(),
"deep-hi": customAssignment.optional(),
// Deprecated compatibility field. Coordinate is derived from deep-lo/good-lo.
coordinate: customAssignment.optional(),
}),
+10 -7
View File
@@ -204,17 +204,20 @@ const makeBasePlugin = (permissionsChanged: (permissions: Agent.Info["permission
model: assignment.model.slice(slash + 1),
};
};
const availableFor = (
assignment: (typeof assignments)[(typeof workerNames)[number]],
) => {
const availableFor = (assignment: { model: string }) => {
const { provider, model } = coordinates(assignment);
return models.get(modelKey(provider, model));
};
const deep = availableFor(assignments["deep-lo"]) !== undefined;
const deepLo = assignments["deep-lo"];
const deep =
deepLo !== undefined &&
assignments["deep-hi"] !== undefined &&
availableFor(deepLo) !== undefined;
const candidates = workerNames.filter((name) => deep || !name.startsWith("deep-"));
const coordinate = assignments[deep ? "deep-lo" : "good-lo"];
const coordinate = deep ? deepLo : assignments["good-lo"];
workers = [coordinate, ...candidates.map((name) => assignments[name])].every(
(assignment) => availableFor(assignment) !== undefined,
(assignment) =>
assignment !== undefined && availableFor(assignment) !== undefined,
)
? candidates
: [];
@@ -222,7 +225,7 @@ const makeBasePlugin = (permissionsChanged: (permissions: Agent.Info["permission
for (const name of workers) active.add(name);
if (workers.length === 0) return;
for (const name of workers) {
const assignment = assignments[name];
const assignment = assignments[name]!;
const available = availableFor(assignment)!;
editor.update(name, (agent) => {
const hasVariant = available.model.variants.some(