import { schema } from '#triplit/schema'; import type { Entity } from '@triplit/client'; export type ModelWithProvider = Entity & { provider: Entity; }; export type ProviderWithModels = Entity & { models: Entity[]; }; export const useModels = async () => { const triplit = useTriplitClient(); const providersQuery = triplit .query('providers') .Include('models') const { results: providers, unsubscribe } = await useQuery('providers', triplit, providersQuery); console.log("GET PROVIDERS", providers.value); // const enabledProvidersWithModels = computed(() => { // if (!providers.value) return []; // return (providers.value as unknown as ProviderWithModels[]).filter( // (provider: ProviderWithModels) => provider.models && provider.models.length > 0 // ); // }); const allEnabledModels = computed(() => { return providers.value?.flatMap((provider) => provider.models.map((model) => ({ ...model, provider, })) ); }); const getFirstAvailableModel = (): ModelWithProvider | null => { if (allEnabledModels.value.length === 0) return null; return allEnabledModels.value[0]!; }; return { providers, allModels: allEnabledModels, getFirstAvailableModel, unsubscribe, }; };