@@ -13,16 +13,15 @@ interface ProviderInfo {
1313 envVar : string ;
1414}
1515
16- function detectProvider ( model : string ) : ProviderInfo {
16+ /** Supported providers. Returns null for any unsupported model. */
17+ function detectProvider ( model : string ) : ProviderInfo | null {
1718 const m = model . toLowerCase ( ) ;
18- if ( m . startsWith ( 'claude' ) ) return { provider : 'anthropic' , pipPackage : 'langchain-anthropic' , envVar : 'ANTHROPIC_API_KEY' } ;
19- if ( m . startsWith ( 'gemini' ) ) return { provider : 'google_genai' , pipPackage : 'langchain-google-genai' , envVar : 'GOOGLE_API_KEY' } ;
20- if ( m . startsWith ( 'grok' ) ) return { provider : 'xai' , pipPackage : 'langchain-xai' , envVar : 'XAI_API_KEY' } ;
21- if ( m . startsWith ( 'mistral' ) ) return { provider : 'mistralai' , pipPackage : 'langchain-mistralai' , envVar : 'MISTRAL_API_KEY' } ;
22- if ( m . startsWith ( 'deepseek' ) ) return { provider : 'deepseek' , pipPackage : 'langchain-deepseek' , envVar : 'DEEPSEEK_API_KEY' } ;
23- if ( m . startsWith ( 'command' ) ) return { provider : 'cohere' , pipPackage : 'langchain-cohere' , envVar : 'COHERE_API_KEY' } ;
24- // Default: OpenAI (covers gpt-*, o1-*, o3-*, etc.)
25- return { provider : 'openai' , pipPackage : 'langchain-openai' , envVar : 'OPENAI_API_KEY' } ;
19+ // Anthropic — claude-*
20+ if ( m . startsWith ( 'claude' ) ) return { provider : 'anthropic' , pipPackage : 'langchain-anthropic' , envVar : 'ANTHROPIC_API_KEY' } ;
21+ // OpenAI — gpt-*, o1-*, o2-*, o3-*, o4-*
22+ if ( m . startsWith ( 'gpt' ) || / ^ o \d / . test ( m ) ) return { provider : 'openai' , pipPackage : 'langchain-openai' , envVar : 'OPENAI_API_KEY' } ;
23+ // Unsupported model
24+ return null ;
2625}
2726
2827// Make detectProvider available for tests
@@ -52,11 +51,23 @@ export function exportToLangChain(dir: string): string {
5251
5352 // Collect all providers needed (main + sub-agents)
5453 const mainProvider = detectProvider ( model ) ;
54+ if ( ! mainProvider ) {
55+ throw new Error (
56+ `Model "${ model } " is not supported by the LangChain adapter.\n` +
57+ 'gitagent with LangChain currently supports OpenAI (gpt-*, o1-*, o3-*, …) and Anthropic (claude-*) only.'
58+ ) ;
59+ }
5560 const allPipPackages = new Set < string > ( [ mainProvider . pipPackage ] ) ;
5661 const allEnvVars = new Set < string > ( [ mainProvider . envVar ] ) ;
5762
5863 for ( const sub of subAgents ) {
5964 const subProv = detectProvider ( sub . model ?? model ) ;
65+ if ( ! subProv ) {
66+ throw new Error (
67+ `Sub-agent model "${ sub . model ?? model } " is not supported by the LangChain adapter.\n` +
68+ 'gitagent with LangChain currently supports OpenAI (gpt-*, o1-*, o3-*, …) and Anthropic (claude-*) only.'
69+ ) ;
70+ }
6071 allPipPackages . add ( subProv . pipPackage ) ;
6172 allEnvVars . add ( subProv . envVar ) ;
6273 }
0 commit comments