import { InvalidModelError } from './DomainError.js';
export class ModelName {
private static readonly ALLOWED_MODELS = [
'gemini-2.0-flash-exp',
'gemini-1.5-flash',
'gemini-1.5-pro',
'gemini-1.5-flash-8b'
] as const;
private static readonly DEFAULT_MODEL = 'gemini-2.0-flash-exp';
private constructor(private readonly modelName: string) {}
static create(modelName?: string): ModelName {
const name = modelName || ModelName.DEFAULT_MODEL;
if (!ModelName.ALLOWED_MODELS.includes(name as any)) {
throw new InvalidModelError(name, [...ModelName.ALLOWED_MODELS]);
}
return new ModelName(name);
}
toString(): string {
return this.modelName;
}
equals(other: ModelName): boolean {
return this.modelName === other.modelName;
}
static getAllowedModels(): readonly string[] {
return ModelName.ALLOWED_MODELS;
}
}