File size: 1,273 Bytes
1f21206 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | // Provider presets inspired by cc-switch (https://github.com/farion1231/cc-switch)
// Original work by Jason Young, MIT License
import { z } from 'zod'
import providerPresetsJson from './providerPresets.json'
import { ApiFormatSchema, ProviderAuthStrategySchema } from '../types/provider.js'
const ModelMappingSchema = z.object({
main: z.string(),
haiku: z.string(),
sonnet: z.string(),
opus: z.string(),
})
const ProviderPresetSchema = z.object({
id: z.string().min(1),
name: z.string().min(1),
baseUrl: z.string(),
apiFormat: ApiFormatSchema,
defaultModels: ModelMappingSchema,
needsApiKey: z.boolean(),
websiteUrl: z.string(),
apiKeyUrl: z.string().optional(),
promoText: z.string().optional(),
featured: z.boolean().optional(),
authStrategy: ProviderAuthStrategySchema.optional(),
defaultEnv: z.record(z.string(), z.string()).optional(),
modelContextWindows: z.record(
z.string().min(1),
z.number().int().min(16000).max(10000000),
).optional(),
})
const ProviderPresetsSchema = z.array(ProviderPresetSchema)
export type ModelMapping = z.infer<typeof ModelMappingSchema>
export type ProviderPreset = z.infer<typeof ProviderPresetSchema>
export const PROVIDER_PRESETS = ProviderPresetsSchema.parse(providerPresetsJson)
|