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