feat: ollama check (#803)
This commit is contained in:
@@ -1,24 +1,38 @@
|
||||
import { Provider, ProviderResponse } from './types';
|
||||
import { getApiUrl, getSecretKey } from '../../../config';
|
||||
import { special_provider_cases } from '../providers/utils';
|
||||
|
||||
export async function getActiveProviders(): Promise<string[]> {
|
||||
try {
|
||||
// Fetch the secrets settings
|
||||
const secretsSettings = await getSecretsSettings();
|
||||
|
||||
// Check for special provider cases (e.g. ollama needs to be installed in Applications folder)
|
||||
const specialCasesResults = await Promise.all(
|
||||
Object.entries(special_provider_cases).map(async ([providerName, checkFunction]) => {
|
||||
const isActive = await checkFunction(); // Dynamically re-check status
|
||||
console.log(`Special case result for ${providerName}:`, isActive);
|
||||
return isActive ? providerName : null;
|
||||
})
|
||||
);
|
||||
|
||||
// Extract active providers based on `is_set` in `secret_status` or providers with no keys
|
||||
const activeProviders = Object.values(secretsSettings) // Convert object to array
|
||||
.filter((provider) => {
|
||||
const apiKeyStatus = Object.values(provider.secret_status || {}); // Get all key statuses
|
||||
|
||||
// Include providers if:
|
||||
// - They have at least one key set (`is_set: true`), OR
|
||||
// - They have no keys (`secret_status` is empty or undefined)
|
||||
return apiKeyStatus.some((key) => key.is_set) || apiKeyStatus.length === 0;
|
||||
// - They have at least one key set (`is_set: true`)
|
||||
return apiKeyStatus.some((key) => key.is_set);
|
||||
})
|
||||
.map((provider) => provider.name || 'Unknown Provider'); // Extract provider name
|
||||
|
||||
return activeProviders;
|
||||
// Combine active providers from secrets settings and special cases
|
||||
const allActiveProviders = [
|
||||
...activeProviders,
|
||||
...specialCasesResults.filter((provider) => provider !== null), // Filter out null results
|
||||
];
|
||||
return allActiveProviders;
|
||||
} catch (error) {
|
||||
console.error('Failed to get active providers:', error);
|
||||
return [];
|
||||
|
||||
Reference in New Issue
Block a user