@@ -3,13 +3,6 @@ import type { CompletionUsage } from 'openai/resources/completions'
33import { getEnv , isTruthy } from '@/lib/core/config/env'
44import { isHosted } from '@/lib/core/config/feature-flags'
55import { createLogger , type Logger } from '@/lib/logs/console/logger'
6- import { anthropicProvider } from '@/providers/anthropic'
7- import { azureOpenAIProvider } from '@/providers/azure-openai'
8- import { cerebrasProvider } from '@/providers/cerebras'
9- import { deepseekProvider } from '@/providers/deepseek'
10- import { googleProvider } from '@/providers/google'
11- import { groqProvider } from '@/providers/groq'
12- import { mistralProvider } from '@/providers/mistral'
136import {
147 getComputerUseModels ,
158 getEmbeddingModelPricing ,
@@ -22,6 +15,7 @@ import {
2215 getModelsWithTempRange02 ,
2316 getModelsWithThinking ,
2417 getModelsWithVerbosity ,
18+ getProviderDefaultModel as getProviderDefaultModelFromDefinitions ,
2519 getProviderModels as getProviderModelsFromDefinitions ,
2620 getProvidersWithToolUsageControl ,
2721 getReasoningEffortValuesForModel as getReasoningEffortValuesForModelFromDefinitions ,
@@ -32,107 +26,69 @@ import {
3226 supportsToolUsageControl as supportsToolUsageControlFromDefinitions ,
3327 updateOllamaModels as updateOllamaModelsInDefinitions ,
3428} from '@/providers/models'
35- import { ollamaProvider } from '@/providers/ollama'
36- import { openaiProvider } from '@/providers/openai'
37- import { openRouterProvider } from '@/providers/openrouter'
38- import type { ProviderConfig , ProviderId , ProviderToolConfig } from '@/providers/types'
39- import { vertexProvider } from '@/providers/vertex'
40- import { vllmProvider } from '@/providers/vllm'
41- import { xAIProvider } from '@/providers/xai'
29+ import type { ProviderId , ProviderToolConfig } from '@/providers/types'
4230import { useCustomToolsStore } from '@/stores/custom-tools/store'
4331import { useProvidersStore } from '@/stores/providers/store'
4432
4533const logger = createLogger ( 'ProviderUtils' )
4634
47- export const providers : Record <
48- ProviderId ,
49- ProviderConfig & {
50- models : string [ ]
51- computerUseModels ?: string [ ]
52- modelPatterns ?: RegExp [ ]
35+ /**
36+ * Client-safe provider metadata.
37+ * This object contains only model lists and patterns - no executeRequest implementations.
38+ * For server-side execution, use @/providers/registry.
39+ */
40+ export interface ProviderMetadata {
41+ id : string
42+ name : string
43+ description : string
44+ version : string
45+ models : string [ ]
46+ defaultModel : string
47+ computerUseModels ?: string [ ]
48+ modelPatterns ?: RegExp [ ]
49+ }
50+
51+ /**
52+ * Build provider metadata from PROVIDER_DEFINITIONS.
53+ * This is client-safe as it doesn't import any provider implementations.
54+ */
55+ function buildProviderMetadata ( providerId : ProviderId ) : ProviderMetadata {
56+ const def = PROVIDER_DEFINITIONS [ providerId ]
57+ return {
58+ id : providerId ,
59+ name : def ?. name || providerId ,
60+ description : def ?. description || '' ,
61+ version : '1.0.0' ,
62+ models : getProviderModelsFromDefinitions ( providerId ) ,
63+ defaultModel : getProviderDefaultModelFromDefinitions ( providerId ) ,
64+ modelPatterns : def ?. modelPatterns ,
5365 }
54- > = {
66+ }
67+
68+ export const providers : Record < ProviderId , ProviderMetadata > = {
5569 openai : {
56- ...openaiProvider ,
57- models : getProviderModelsFromDefinitions ( 'openai' ) ,
70+ ...buildProviderMetadata ( 'openai' ) ,
5871 computerUseModels : [ 'computer-use-preview' ] ,
59- modelPatterns : PROVIDER_DEFINITIONS . openai . modelPatterns ,
6072 } ,
6173 anthropic : {
62- ...anthropicProvider ,
63- models : getProviderModelsFromDefinitions ( 'anthropic' ) ,
74+ ...buildProviderMetadata ( 'anthropic' ) ,
6475 computerUseModels : getComputerUseModels ( ) . filter ( ( model ) =>
6576 getProviderModelsFromDefinitions ( 'anthropic' ) . includes ( model )
6677 ) ,
67- modelPatterns : PROVIDER_DEFINITIONS . anthropic . modelPatterns ,
68- } ,
69- google : {
70- ...googleProvider ,
71- models : getProviderModelsFromDefinitions ( 'google' ) ,
72- modelPatterns : PROVIDER_DEFINITIONS . google . modelPatterns ,
73- } ,
74- vertex : {
75- ...vertexProvider ,
76- models : getProviderModelsFromDefinitions ( 'vertex' ) ,
77- modelPatterns : PROVIDER_DEFINITIONS . vertex . modelPatterns ,
78- } ,
79- deepseek : {
80- ...deepseekProvider ,
81- models : getProviderModelsFromDefinitions ( 'deepseek' ) ,
82- modelPatterns : PROVIDER_DEFINITIONS . deepseek . modelPatterns ,
83- } ,
84- xai : {
85- ...xAIProvider ,
86- models : getProviderModelsFromDefinitions ( 'xai' ) ,
87- modelPatterns : PROVIDER_DEFINITIONS . xai . modelPatterns ,
88- } ,
89- cerebras : {
90- ...cerebrasProvider ,
91- models : getProviderModelsFromDefinitions ( 'cerebras' ) ,
92- modelPatterns : PROVIDER_DEFINITIONS . cerebras . modelPatterns ,
93- } ,
94- groq : {
95- ...groqProvider ,
96- models : getProviderModelsFromDefinitions ( 'groq' ) ,
97- modelPatterns : PROVIDER_DEFINITIONS . groq . modelPatterns ,
98- } ,
99- vllm : {
100- ...vllmProvider ,
101- models : getProviderModelsFromDefinitions ( 'vllm' ) ,
102- modelPatterns : PROVIDER_DEFINITIONS . vllm . modelPatterns ,
103- } ,
104- mistral : {
105- ...mistralProvider ,
106- models : getProviderModelsFromDefinitions ( 'mistral' ) ,
107- modelPatterns : PROVIDER_DEFINITIONS . mistral . modelPatterns ,
108- } ,
109- 'azure-openai' : {
110- ...azureOpenAIProvider ,
111- models : getProviderModelsFromDefinitions ( 'azure-openai' ) ,
112- modelPatterns : PROVIDER_DEFINITIONS [ 'azure-openai' ] . modelPatterns ,
113- } ,
114- openrouter : {
115- ...openRouterProvider ,
116- models : getProviderModelsFromDefinitions ( 'openrouter' ) ,
117- modelPatterns : PROVIDER_DEFINITIONS . openrouter . modelPatterns ,
118- } ,
119- ollama : {
120- ...ollamaProvider ,
121- models : getProviderModelsFromDefinitions ( 'ollama' ) ,
122- modelPatterns : PROVIDER_DEFINITIONS . ollama . modelPatterns ,
12378 } ,
79+ google : buildProviderMetadata ( 'google' ) ,
80+ vertex : buildProviderMetadata ( 'vertex' ) ,
81+ deepseek : buildProviderMetadata ( 'deepseek' ) ,
82+ xai : buildProviderMetadata ( 'xai' ) ,
83+ cerebras : buildProviderMetadata ( 'cerebras' ) ,
84+ groq : buildProviderMetadata ( 'groq' ) ,
85+ vllm : buildProviderMetadata ( 'vllm' ) ,
86+ mistral : buildProviderMetadata ( 'mistral' ) ,
87+ 'azure-openai' : buildProviderMetadata ( 'azure-openai' ) ,
88+ openrouter : buildProviderMetadata ( 'openrouter' ) ,
89+ ollama : buildProviderMetadata ( 'ollama' ) ,
12490}
12591
126- Object . entries ( providers ) . forEach ( ( [ id , provider ] ) => {
127- if ( provider . initialize ) {
128- provider . initialize ( ) . catch ( ( error ) => {
129- logger . error ( `Failed to initialize ${ id } provider` , {
130- error : error instanceof Error ? error . message : 'Unknown error' ,
131- } )
132- } )
133- }
134- } )
135-
13692export function updateOllamaProviderModels ( models : string [ ] ) : void {
13793 updateOllamaModelsInDefinitions ( models )
13894 providers . ollama . models = getProviderModelsFromDefinitions ( 'ollama' )
@@ -213,12 +169,12 @@ export function getProviderFromModel(model: string): ProviderId {
213169 return 'ollama'
214170}
215171
216- export function getProvider ( id : string ) : ProviderConfig | undefined {
172+ export function getProvider ( id : string ) : ProviderMetadata | undefined {
217173 const providerId = id . split ( '/' ) [ 0 ] as ProviderId
218174 return providers [ providerId ]
219175}
220176
221- export function getProviderConfigFromModel ( model : string ) : ProviderConfig | undefined {
177+ export function getProviderConfigFromModel ( model : string ) : ProviderMetadata | undefined {
222178 const providerId = getProviderFromModel ( model )
223179 return providers [ providerId ]
224180}
0 commit comments