import type { Api, Model } from "./types.ts"; /** Persistent model catalogs keyed by provider ID. */ export interface ModelsStore { read(providerId: string): Promise[] | undefined>; write(providerId: string, models: readonly Model[]): Promise; delete(providerId: string): Promise; } /** ModelsStore scoped to one provider. Providers cannot access other providers' catalogs. */ export interface ProviderModelsStore { read(): Promise[] | undefined>; write(models: readonly Model[]): Promise; delete(): Promise; } export class InMemoryModelsStore implements ModelsStore { private readonly models = new Map[]>(); async read(providerId: string): Promise[] | undefined> { const models = this.models.get(providerId); return models?.map((model) => structuredClone(model)); } async write(providerId: string, models: readonly Model[]): Promise { this.models.set( providerId, models.map((model) => structuredClone(model)), ); } async delete(providerId: string): Promise { this.models.delete(providerId); } }