import type { ModelProtocol } from "../protocol/canonical.js";
import { ModelConfigError } from "../protocol/errors.js";

export type ModelProviderAdapter = {
  protocol: ModelProtocol;
  name: string;
};

const adapters: Record<ModelProtocol, ModelProviderAdapter> = {
  anthropic: { protocol: "anthropic", name: "Anthropic Messages API" },
  openai: { protocol: "openai", name: "OpenAI Chat Completions API" },
};

export const ModelProviderRegistry = {
  get(protocol: ModelProtocol): ModelProviderAdapter {
    const adapter = adapters[protocol];
    if (!adapter) {
      throw new ModelConfigError("unsupported_protocol", `Unsupported model protocol ${protocol}.`);
    }
    return adapter;
  },

  list(): ModelProviderAdapter[] {
    return Object.values(adapters);
  },
};