fix: validate workspace drafts and reconcile models

This commit is contained in:
2026-08-04 05:38:43 +02:00
parent cee4cfa63d
commit 959c6871ee
4 changed files with 279 additions and 80 deletions
+23 -1
View File
@@ -189,6 +189,27 @@ export function ComposerFooter() {
? models.filter((candidate) => allowedModels.includes(`${candidate.provider}/${candidate.id}`))
: models;
useEffect(() => {
if (!allowedModels?.length) return;
const selected = preferences.provider && preferences.model
? `${preferences.provider}/${preferences.model}`
: undefined;
if (selected && allowedModels.some((allowed) => allowed === selected)) return;
const replacement = workspaceRecord?.workspace.llm_policy.default
&& allowedModels.includes(workspaceRecord.workspace.llm_policy.default)
? workspaceRecord.workspace.llm_policy.default
: allowedModels[0];
const separator = replacement.indexOf("/");
if (separator <= 0 || separator === replacement.length - 1) return;
const next = {
...preferences,
provider: replacement.slice(0, separator),
model: replacement.slice(separator + 1),
};
workspacePreferences.save(next);
setPreferences(next);
}, [allowedModels, preferences, workspaceRecord]);
function update(patch: WorkspacePreference) {
const next = workspacePreferences.save({ ...preferences, ...patch });
setPreferences(next);
@@ -200,6 +221,7 @@ export function ComposerFooter() {
}
const knownModel = policyModels.some((m) => m.id === model);
const showModelFallback = !allowedModels && !knownModel;
const contextPct = tokenUsage && tokenUsage.contextWindow > 0
? tokenUsage.totalTokens / tokenUsage.contextWindow
: 0;
@@ -232,7 +254,7 @@ export function ComposerFooter() {
<option value={model}>{model || "— model —"}</option>
) : (
<>
{!knownModel && <option value={model}>{model || "— model —"}</option>}
{showModelFallback && <option value={model}>{model || "— model —"}</option>}
{policyModels.map((m) => (
<option key={`${m.provider}/${m.id}`} value={m.id}>
{m.name}