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
+2 -2
View File
@@ -93,8 +93,8 @@ export default function App() {
try {
const config = window.electron.getConfig();
const provider = config.GOOSE_PROVIDER ?? (await read('GOOSE_PROVIDER', false));
const model = config.GOOSE_MODEL ?? (await read('GOOSE_MODEL', false));
const provider = (await read('GOOSE_PROVIDER', false)) ?? config.GOOSE_DEFAULT_PROVIDER;
const model = (await read('GOOSE_MODEL', false)) ?? config.GOOSE_DEFAULT_MODEL;
if (provider && model) {
setView('chat');
@@ -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);
+3 -3
View File
@@ -113,7 +113,7 @@ const getGooseProvider = () => {
//{env-macro-start}//
//needed when goose is bundled for a specific provider
//{env-macro-end}//
return [process.env.GOOSE_PROVIDER, process.env.GOOSE_MODEL];
return [process.env.GOOSE_DEFAULT_PROVIDER, process.env.GOOSE_DEFAULT_MODEL];
};
const generateSecretKey = () => {
@@ -144,8 +144,8 @@ let sharingUrl = getSharingUrl();
let gooseVersion = getVersion();
let appConfig = {
GOOSE_PROVIDER: provider,
GOOSE_MODEL: model,
GOOSE_DEFAULT_PROVIDER: provider,
GOOSE_DEFAULT_MODEL: model,
GOOSE_API_HOST: 'http://127.0.0.1',
GOOSE_PORT: 0,
GOOSE_WORKING_DIR: '',