@@ -11,6 +11,9 @@ import {
1111 LogLevel ,
1212 subAgentTool ,
1313 errorToString ,
14+ getModel ,
15+ AVAILABLE_MODELS ,
16+ DEFAULT_CONFIG ,
1417} from 'mycoder-agent' ;
1518import { TokenTracker } from 'mycoder-agent/dist/core/tokens.js' ;
1619
@@ -87,10 +90,33 @@ export const command: CommandModule<SharedOptions, DefaultArgs> = {
8790 ) ;
8891
8992 try {
90- // Early API key check
91- if ( ! process . env . ANTHROPIC_API_KEY ) {
93+ // Get configuration for model provider and name
94+ const userConfig = getConfig ( ) ;
95+ const userModelProvider = argv . modelProvider || userConfig . modelProvider ;
96+ const userModelName = argv . modelName || userConfig . modelName ;
97+
98+ // Early API key check based on model provider
99+ if ( userModelProvider === 'anthropic' && ! process . env . ANTHROPIC_API_KEY ) {
92100 logger . error ( getAnthropicApiKeyError ( ) ) ;
93101 throw new Error ( 'Anthropic API key not found' ) ;
102+ } else if (
103+ userModelProvider === 'openai' &&
104+ ! process . env . OPENAI_API_KEY
105+ ) {
106+ logger . error (
107+ 'No OpenAI API key found. Please set the OPENAI_API_KEY environment variable.' ,
108+ 'You can get an API key from https://platform.openai.com/api-keys' ,
109+ ) ;
110+ throw new Error ( 'OpenAI API key not found' ) ;
111+ }
112+
113+ // Validate model name
114+ if ( ! AVAILABLE_MODELS [ userModelProvider ] . includes ( userModelName ) ) {
115+ logger . error (
116+ `Invalid model name: ${ userModelName } for provider ${ userModelProvider } ` ,
117+ `Available models for ${ userModelProvider } : ${ AVAILABLE_MODELS [ userModelProvider ] . join ( ', ' ) } ` ,
118+ ) ;
119+ throw new Error ( `Invalid model name: ${ userModelName } ` ) ;
94120 }
95121
96122 let prompt : string | undefined ;
@@ -136,7 +162,16 @@ export const command: CommandModule<SharedOptions, DefaultArgs> = {
136162 } ) ;
137163 const config = await getConfig ( ) ;
138164
139- const result = await toolAgent ( prompt , tools , undefined , {
165+ // Create a config with the selected model
166+ const agentConfig = {
167+ ...DEFAULT_CONFIG ,
168+ model : getModel (
169+ userModelProvider as 'anthropic' | 'openai' ,
170+ userModelName ,
171+ ) ,
172+ } ;
173+
174+ const result = await toolAgent ( prompt , tools , agentConfig , {
140175 logger,
141176 headless : argv . headless ?? config . headless ,
142177 userSession : argv . userSession ?? config . userSession ,
0 commit comments