fixed /chat

This commit is contained in:
2026-02-23 08:00:53 +00:00
parent 3e2c8090d5
commit d9b69c8209
10 changed files with 194 additions and 26 deletions
+22 -10
View File
@@ -31,23 +31,15 @@ export function usePiModels() {
enabled: isAuthenticated,
queryFn: async () => {
const data = await client.get<{ models: ModelOption[]; providerNames?: Record<string, string>; hostHome?: string }>('/pi/models');
console.log('[usePiModels] Fetched models:', {
modelCount: data.models.length,
providerNames: data.providerNames,
providers: [...new Set(data.models.map((m: ModelOption) => m.provider))]
});
// Store provider names for later use
if (data.providerNames) {
globalProviderNames = data.providerNames;
console.log('[usePiModels] Stored provider names:', globalProviderNames);
}
if (data.hostHome) {
globalHostHome = data.hostHome;
}
return data.models;
},
staleTime: 5 * 60 * 1000,
@@ -86,3 +78,23 @@ export function useVisiblePiModels() {
return isExplicitlyEnabled || isFromNewProvider;
});
}
/** Strict filtering — only explicitly enabled models, no "new provider" passthrough. */
export function useEnabledPiModels() {
const models = usePiModels();
const { settings } = useSettings();
const enabled = settings.ai?.enabledModels ?? [];
const disabledProviders = new Set(settings.ai?.disabledProviders ?? []);
const providerFiltered = disabledProviders.size > 0
? models.filter((m) => !disabledProviders.has(m.provider))
: models;
if (enabled.length === 0) return providerFiltered;
// Match by modelKey (new format), model id, or model name (legacy formats)
const enabledSet = new Set(enabled);
return providerFiltered.filter((m) =>
enabledSet.has(modelKey(m)) || enabledSet.has(m.id) || enabledSet.has(m.name),
);
}
+2
View File
@@ -49,6 +49,7 @@ export type UserSettings = {
chat: {
defaultProvider: 'pi';
defaultModel: string | null;
defaultProjectModel: string | null;
systemPrompt: string;
temperature: number;
defaultPwd: string;
@@ -79,6 +80,7 @@ export const DEFAULT_SETTINGS: UserSettings = {
chat: {
defaultProvider: 'pi',
defaultModel: null,
defaultProjectModel: null,
systemPrompt: '',
temperature: 1,
defaultPwd: '~',