fix: validate workspace drafts and reconcile models
This commit is contained in:
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user