ui: default model support (#2015)

This commit is contained in:
Lily Delalande
2025-04-07 14:32:30 -04:00
committed by GitHub
parent d249d69ed3
commit 2164c6c7d8
5 changed files with 35 additions and 7 deletions
@@ -74,10 +74,12 @@ export async function changeModel({
interface getCurrentModelAndProviderProps {
readFromConfig: (key: string, is_secret: boolean) => Promise<unknown>;
writeToConfig?: (key: string, value: unknown, is_secret: boolean) => Promise<void>;
}
export async function getCurrentModelAndProvider({
readFromConfig,
writeToConfig,
}: getCurrentModelAndProviderProps) {
let model: string;
let provider: string;
@@ -90,6 +92,26 @@ export async function getCurrentModelAndProvider({
console.error(`Failed to read GOOSE_MODEL or GOOSE_PROVIDER from config`);
throw error;
}
if (!model || !provider) {
console.log('[getCurrentModelAndProvider] Checking app environment as fallback');
return getFallbackModelAndProvider(writeToConfig);
}
return { model: model, provider: provider };
}
export async function getFallbackModelAndProvider(
writeToConfig: (key: string, value: unknown, is_secret: boolean) => Promise<void>
) {
const provider = window.appConfig.get('GOOSE_DEFAULT_PROVIDER');
const model = window.appConfig.get('GOOSE_DEFAULT_MODEL');
if (provider && model && writeToConfig) {
try {
await writeToConfig('GOOSE_MODEL', model, false);
await writeToConfig('GOOSE_PROVIDER', provider, false);
} catch (error) {
console.error('[getFallbackModelAndProvider] Failed to write to config', error);
}
}
return { model: model, provider: provider };
}
@@ -40,7 +40,10 @@ export function BaseModelsList({
const initializeCurrentModel = async () => {
try {
const result = await getCurrentModelAndProvider({ readFromConfig: read });
const result = await getCurrentModelAndProvider({
readFromConfig: read,
writeToConfig: upsert,
});
if (isMounted) {
// try to look up the model in the modelList
let currentModel: Model;
@@ -118,7 +118,10 @@ export default function ProviderConfigurationModal() {
const handleDelete = async () => {
// Check if this is the currently active provider
try {
const providerModel = await getCurrentModelAndProvider({ readFromConfig: read });
const providerModel = await getCurrentModelAndProvider({
readFromConfig: read,
writeToConfig: upsert,
});
if (currentProvider.name === providerModel.provider) {
// It's the active provider - set state and show warning
setIsActiveProvider(true);