new flow for Pi provider/model settings
This commit is contained in:
@@ -30,7 +30,7 @@ export function usePiModels() {
|
||||
console.log('[usePiModels] Fetched models:', {
|
||||
modelCount: data.models.length,
|
||||
providerNames: data.providerNames,
|
||||
providers: [...new Set(data.models.map(m => m.provider))]
|
||||
providers: [...new Set(data.models.map((m: ModelOption) => m.provider))]
|
||||
});
|
||||
|
||||
// Store provider names for later use
|
||||
@@ -51,34 +51,29 @@ export function useVisiblePiModels() {
|
||||
const models = usePiModels();
|
||||
const { settings } = useSettings();
|
||||
const enabled = settings.ai?.enabledModels ?? [];
|
||||
const disabledProviders = new Set(settings.ai?.disabledProviders ?? []);
|
||||
|
||||
// If no enabled models list exists, show all models
|
||||
// First filter out disabled providers
|
||||
const providerFiltered = disabledProviders.size > 0
|
||||
? models.filter((m) => !disabledProviders.has(m.provider))
|
||||
: models;
|
||||
|
||||
// If no enabled models list, show all (after provider filtering)
|
||||
if (enabled.length === 0) {
|
||||
console.log('[useVisiblePiModels] No enabled models list, showing all');
|
||||
return models;
|
||||
return providerFiltered;
|
||||
}
|
||||
|
||||
// Get all providers from enabled models
|
||||
const enabledProviders = new Set(
|
||||
enabled.map(key => key.split(':')[0])
|
||||
const enabledProviderSet = new Set(
|
||||
enabled.map(key => key.split(':')[0]),
|
||||
);
|
||||
|
||||
// Filter to include:
|
||||
// 1. Models that are explicitly enabled
|
||||
// 2. Models from providers that aren't in the enabled list at all (new providers)
|
||||
const filtered = models.filter((m) => {
|
||||
return providerFiltered.filter((m) => {
|
||||
const isExplicitlyEnabled = enabled.includes(modelKey(m));
|
||||
const isFromNewProvider = !enabledProviders.has(m.provider);
|
||||
const isFromNewProvider = !enabledProviderSet.has(m.provider);
|
||||
return isExplicitlyEnabled || isFromNewProvider;
|
||||
});
|
||||
|
||||
console.log('[useVisiblePiModels]', {
|
||||
allModels: models.length,
|
||||
enabledModels: enabled,
|
||||
enabledProviders: Array.from(enabledProviders),
|
||||
filtered: filtered.length,
|
||||
finalCount: filtered.length
|
||||
});
|
||||
|
||||
return filtered;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ const mergeWithDefaults = (saved: Partial<UserSettings>): UserSettings => ({
|
||||
ai: {
|
||||
enabledModels: saved.ai?.enabledModels?.length ? saved.ai.enabledModels : DEFAULT_SETTINGS.ai.enabledModels,
|
||||
enabledProviders: saved.ai?.enabledProviders ?? DEFAULT_SETTINGS.ai.enabledProviders,
|
||||
disabledProviders: saved.ai?.disabledProviders ?? DEFAULT_SETTINGS.ai.disabledProviders,
|
||||
},
|
||||
tasks: { ...DEFAULT_SETTINGS.tasks, ...saved.tasks },
|
||||
appearance: { ...DEFAULT_SETTINGS.appearance, ...saved.appearance },
|
||||
@@ -55,6 +56,7 @@ export type UserSettings = {
|
||||
ai: {
|
||||
enabledModels: string[];
|
||||
enabledProviders: string[];
|
||||
disabledProviders: string[];
|
||||
};
|
||||
tasks: {
|
||||
defaultProvider: 'pi';
|
||||
@@ -84,6 +86,7 @@ export const DEFAULT_SETTINGS: UserSettings = {
|
||||
ai: {
|
||||
enabledModels: [],
|
||||
enabledProviders: [],
|
||||
disabledProviders: [],
|
||||
},
|
||||
tasks: {
|
||||
defaultProvider: 'pi',
|
||||
|
||||
Reference in New Issue
Block a user