MCPcopy Index your code
hub / github.com/sourcebot-dev/sourcebot / collectModelConfig

Function collectModelConfig

packages/setupWizard/src/models.ts:163–296  ·  view source on GitHub ↗
(
    provider: Provider,
    model: string,
    env: EnvVars,
)

Source from the content-addressed store, hash-verified

161}
162
163async function collectModelConfig(
164 provider: Provider,
165 model: string,
166 env: EnvVars,
167): Promise<LanguageModel> {
168 switch (provider) {
169 case 'anthropic':
170 case 'openai':
171 case 'google-generative-ai':
172 case 'deepseek':
173 case 'mistral':
174 case 'xai':
175 case 'openrouter': {
176 const envKey = await ensureApiKey(provider, env);
177 return { provider, model, token: { env: envKey } } satisfies LanguageModel;
178 }
179 case 'openai-compatible': {
180 const baseUrl = await input({
181 message: 'Base URL (e.g. https://your-endpoint.example.com/v1)',
182 validate: (v) => {
183 if (!v?.trim()) {
184 return 'Base URL is required';
185 }
186 if (!/^https?:\/\//.test(v)) {
187 return 'Must start with http:// or https://';
188 }
189 return true;
190 },
191 });
192 const envKey = await ensureApiKey(provider, env);
193 const config: OpenAICompatibleLanguageModel = {
194 provider,
195 model,
196 baseUrl,
197 token: { env: envKey },
198 };
199 return config;
200 }
201 case 'azure': {
202 const resourceName = await input({
203 message: 'Azure resource name',
204 validate: (v) => !v?.trim() ? 'Resource name is required' : true,
205 });
206 const apiVersion = await input({
207 message: 'API version',
208 default: '2024-08-01-preview',
209 theme: INPUT_THEME,
210 validate: (v) => !v?.trim() ? 'API version is required' : true,
211 });
212 const envKey = await ensureApiKey(provider, env);
213 const config: AzureLanguageModel = {
214 provider,
215 model,
216 resourceName,
217 apiVersion,
218 token: { env: envKey },
219 };
220 return config;

Callers 1

collectModelsFunction · 0.85

Calls 1

ensureApiKeyFunction · 0.85

Tested by

no test coverage detected