"use strict";
/**
 * SupportedModelsCatalog -- centralized LLM model metadata registry.
 *
 * Single source of truth for:
 *   - UI dashboard: "what models can this customer use"
 *   - White-label capability matrix
 *   - Adapter selection logic (which adapter handles which model)
 *   - Documentation auto-generation
 *
 * Design notes:
 *   - No $/token pricing -- rates are volatile and would rot. Use `pricingTier` (qualitative).
 *   - `releasedAt` is YYYY-MM only -- avoids stale exact-date drift.
 *   - Capability flags are conservative. When in doubt, false.
 *   - Azure OpenAI: customer-specific deployment names are runtime-resolved;
 *     we document the underlying OpenAI model family, not per-customer deployment names.
 *   - Ollama: models are runtime-discovered from the local instance;
 *     the catalog lists canonical upstream names only.
 *
 * Spec: P3-LLM-CATALOG (SupportedModelsCatalog)
 *
 * @connexum/ai-governance
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.SUPPORTED_MODELS_CATALOG = void 0;
exports.getModelById = getModelById;
exports.getModelsByProvider = getModelsByProvider;
exports.getModelsByGovernanceProfile = getModelsByGovernanceProfile;
exports.getModelsByCapability = getModelsByCapability;
// ---------------------------------------------------------------------------
// Helper: derive modality array from capability flags
// ---------------------------------------------------------------------------
function modalities(vision, audio) {
    const result = ['text'];
    if (vision)
        result.push('vision');
    if (audio)
        result.push('audio');
    return result;
}
// ---------------------------------------------------------------------------
// Catalog entries
//
// Model IDs verified against adapter source files in this repo:
//   - src/llm-adapters/bedrock.ts  (defaultModelId, error message examples)
//   - src/llm-adapters/google.ts   (defaultModelId: 'gemini-1.5-pro')
//   - src/orchestrator-adapters/claude-agent-sdk.ts (approvedModels examples)
//   - tests/claude-agent-sdk-adapter.test.ts (model strings)
//   - tests/google-adk-adapter.test.ts (model strings)
//
// Conservative choices:
//   - Context windows: lower of commonly-cited figures
//   - Tool call / streaming support: confirmed only where adapter source or
//     official docs clearly indicate support
//   - DeepSeek: `deepseek-reasoner` has limited streaming support on some
//     endpoints; flagged in notes
//   - o1 / o1-mini: OpenAI released these without streaming support for tool
//     calls; flagged in notes
// ---------------------------------------------------------------------------
const _CATALOG_INTERNAL = [
    // =========================================================================
    // Anthropic -- Claude 4 family
    // Verified: tests/claude-agent-sdk-adapter.test.ts lines 67, 101, 299, 376
    // Source memory invariant: "most recent Claude model family is Claude 4.X"
    // =========================================================================
    {
        modelId: 'claude-opus-4-7',
        displayName: 'Claude Opus 4.7',
        provider: 'anthropic',
        family: 'claude-4',
        maxContextTokens: 200000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: false,
        modality: modalities(true, false),
        pricingTier: 'frontier',
        releasedAt: '2026-01',
        status: 'general-availability',
        governanceProfile: 'tier-1-primary',
        notes: 'Anthropic flagship model; highest capability; full tool use and vision support.',
    },
    {
        modelId: 'claude-sonnet-4-6',
        displayName: 'Claude Sonnet 4.6',
        provider: 'anthropic',
        family: 'claude-4',
        maxContextTokens: 200000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: false,
        modality: modalities(true, false),
        pricingTier: 'frontier',
        releasedAt: '2025-10',
        status: 'general-availability',
        governanceProfile: 'tier-1-primary',
        notes: 'Strong balance of capability and cost within the Claude 4 family.',
    },
    {
        modelId: 'claude-haiku-4-5',
        displayName: 'Claude Haiku 4.5',
        provider: 'anthropic',
        family: 'claude-4',
        maxContextTokens: 200000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: false,
        modality: modalities(true, false),
        pricingTier: 'efficient',
        releasedAt: '2025-10',
        status: 'general-availability',
        governanceProfile: 'tier-1-primary',
        notes: 'Fast, efficient model suitable for high-volume governance classification tasks.',
    },
    // =========================================================================
    // OpenAI -- GPT-4o family and o1 reasoning
    // Verified: tests/claude-agent-sdk-adapter.test.ts line 203 (gpt-4-turbo),
    //           tests/orchestrators/haystack.test.ts line 185 (gpt-4o),
    //           tests/google-adk-adapter.test.ts line 189 (gpt-4o)
    // =========================================================================
    {
        modelId: 'gpt-4o',
        displayName: 'GPT-4o',
        provider: 'openai',
        family: 'gpt-4',
        maxContextTokens: 128000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: false,
        modality: modalities(true, false),
        pricingTier: 'standard',
        releasedAt: '2024-05',
        status: 'general-availability',
        governanceProfile: 'tier-1-primary',
        notes: 'OpenAI omni model; strong multimodal capability; default for OpenAI production workloads.',
    },
    {
        modelId: 'gpt-4o-mini',
        displayName: 'GPT-4o Mini',
        provider: 'openai',
        family: 'gpt-4',
        maxContextTokens: 128000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: false,
        modality: modalities(true, false),
        pricingTier: 'efficient',
        releasedAt: '2024-07',
        status: 'general-availability',
        governanceProfile: 'tier-1-primary',
        notes: 'Lightweight GPT-4o variant; suitable for high-volume classification and routing.',
    },
    {
        modelId: 'gpt-4-turbo',
        displayName: 'GPT-4 Turbo',
        provider: 'openai',
        family: 'gpt-4',
        maxContextTokens: 128000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: false,
        modality: modalities(true, false),
        pricingTier: 'standard',
        releasedAt: '2023-11',
        status: 'general-availability',
        governanceProfile: 'tier-1-primary',
        notes: 'Prior-generation large context GPT-4; prefer gpt-4o for new deployments.',
    },
    {
        modelId: 'o1',
        displayName: 'OpenAI o1',
        provider: 'openai',
        family: 'o1',
        maxContextTokens: 128000,
        supportsToolCalls: true,
        supportsStreaming: false,
        supportsVision: true,
        supportsAudio: false,
        modality: modalities(true, false),
        pricingTier: 'frontier',
        releasedAt: '2024-12',
        status: 'general-availability',
        governanceProfile: 'tier-1-primary',
        notes: 'Reasoning model. Does NOT support streaming for tool calls. Higher latency by design.',
    },
    {
        modelId: 'o1-mini',
        displayName: 'OpenAI o1-mini',
        provider: 'openai',
        family: 'o1',
        maxContextTokens: 128000,
        supportsToolCalls: false,
        supportsStreaming: false,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'standard',
        releasedAt: '2024-09',
        status: 'general-availability',
        governanceProfile: 'tier-1-primary',
        notes: 'Smaller reasoning model. No streaming, no tool calls, no vision in initial release. Verify with provider before enabling tool use.',
    },
    // =========================================================================
    // Google Gemini -- via GoogleAdapter (provider 'google') and gemini SDK
    // Verified: src/llm-adapters/google.ts defaultModelId='gemini-1.5-pro',
    //           tests/google-adk-adapter.test.ts approvedModels list,
    //           src/orchestrator-adapters/google-adk.ts docstring
    // =========================================================================
    {
        modelId: 'gemini-1.5-pro',
        displayName: 'Gemini 1.5 Pro',
        provider: 'google',
        family: 'gemini-1.5',
        maxContextTokens: 1000000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: true,
        modality: modalities(true, true),
        pricingTier: 'standard',
        releasedAt: '2024-05',
        status: 'general-availability',
        governanceProfile: 'tier-2-supported',
        notes: 'Very long context window (1M tokens). Full multimodal including audio. HIPAA BAA available via Vertex AI path only.',
    },
    {
        modelId: 'gemini-1.5-flash',
        displayName: 'Gemini 1.5 Flash',
        provider: 'google',
        family: 'gemini-1.5',
        maxContextTokens: 1000000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: true,
        modality: modalities(true, true),
        pricingTier: 'efficient',
        releasedAt: '2024-05',
        status: 'general-availability',
        governanceProfile: 'tier-2-supported',
        notes: 'Fast, efficient variant of Gemini 1.5. Good for high-throughput multimodal tasks.',
    },
    {
        modelId: 'gemini-2.0-flash-exp',
        displayName: 'Gemini 2.0 Flash (Experimental)',
        provider: 'google',
        family: 'gemini-2.0',
        maxContextTokens: 1000000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: true,
        modality: modalities(true, true),
        pricingTier: 'efficient',
        releasedAt: '2024-12',
        status: 'preview',
        governanceProfile: 'tier-2-supported',
        notes: 'Experimental release of Gemini 2.0 Flash. Preview status -- not recommended for regulated production workloads until GA.',
    },
    // Gemini API (direct SDK path, provider 'gemini') -- same underlying models,
    // different adapter routing (GeminiAdapter vs GoogleAdapter/VertexAI).
    {
        modelId: 'gemini-1.5-pro',
        displayName: 'Gemini 1.5 Pro (Gemini API)',
        provider: 'gemini',
        family: 'gemini-1.5',
        maxContextTokens: 1000000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: true,
        modality: modalities(true, true),
        pricingTier: 'standard',
        releasedAt: '2024-05',
        status: 'general-availability',
        governanceProfile: 'tier-2-supported',
        notes: 'Gemini API (direct SDK path). No HIPAA BAA via this path. Use google provider + Vertex for regulated workloads.',
    },
    {
        modelId: 'gemini-1.5-flash',
        displayName: 'Gemini 1.5 Flash (Gemini API)',
        provider: 'gemini',
        family: 'gemini-1.5',
        maxContextTokens: 1000000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: true,
        modality: modalities(true, true),
        pricingTier: 'efficient',
        releasedAt: '2024-05',
        status: 'general-availability',
        governanceProfile: 'tier-2-supported',
        notes: 'Gemini API (direct SDK path). No HIPAA BAA via this path.',
    },
    // =========================================================================
    // Azure OpenAI -- provider 'azure-openai'
    // Verified: src/llm-adapters/azure-openai.ts (deployment name validation logic)
    // Note: Azure deployment names are customer-defined at runtime.
    //       We document the underlying model family, not per-customer deployment IDs.
    //       The catalog IDs below use a canonical convention; actual deployment names
    //       are resolved at runtime from LlmAdapterConfig.deploymentName.
    // =========================================================================
    {
        modelId: 'azure-gpt-4o',
        displayName: 'Azure OpenAI GPT-4o',
        provider: 'azure-openai',
        family: 'gpt-4',
        maxContextTokens: 128000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: false,
        modality: modalities(true, false),
        pricingTier: 'standard',
        releasedAt: '2024-07',
        status: 'general-availability',
        governanceProfile: 'tier-1-primary',
        notes: 'Azure-hosted GPT-4o. Deployment name is customer-defined at runtime (LlmAdapterConfig.deploymentName). HIPAA BAA available via Microsoft Azure DPA.',
    },
    {
        modelId: 'azure-gpt-4o-mini',
        displayName: 'Azure OpenAI GPT-4o Mini',
        provider: 'azure-openai',
        family: 'gpt-4',
        maxContextTokens: 128000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: false,
        modality: modalities(true, false),
        pricingTier: 'efficient',
        releasedAt: '2024-07',
        status: 'general-availability',
        governanceProfile: 'tier-1-primary',
        notes: 'Azure-hosted GPT-4o Mini. Deployment name is customer-defined at runtime.',
    },
    {
        modelId: 'azure-gpt-4-turbo',
        displayName: 'Azure OpenAI GPT-4 Turbo',
        provider: 'azure-openai',
        family: 'gpt-4',
        maxContextTokens: 128000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: false,
        modality: modalities(true, false),
        pricingTier: 'standard',
        releasedAt: '2024-01',
        status: 'general-availability',
        governanceProfile: 'tier-1-primary',
        notes: 'Azure-hosted GPT-4 Turbo. Deployment name is customer-defined at runtime. Prefer azure-gpt-4o for new deployments.',
    },
    // =========================================================================
    // AWS Bedrock -- provider 'bedrock'
    // Verified: src/llm-adapters/bedrock.ts
    //   - defaultModelId: 'anthropic.claude-3-5-sonnet-20241022-v2:0' (line 785)
    //   - error message: 'anthropic.claude-3-5-sonnet-20241022-v2:0' (line 505)
    //   - model family prefixes: anthropic.*, meta.*, mistral.* (lines 371-374)
    // =========================================================================
    {
        modelId: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
        displayName: 'Claude 3.5 Sonnet v2 (Bedrock)',
        provider: 'bedrock',
        family: 'claude-3.5',
        maxContextTokens: 200000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: true,
        supportsAudio: false,
        modality: modalities(true, false),
        pricingTier: 'standard',
        releasedAt: '2024-10',
        status: 'general-availability',
        governanceProfile: 'tier-1-primary',
        notes: 'Default Bedrock model in BedrockAdapter. AWS region must be explicitly set (no env fallback). HIPAA BAA available via AWS BAA.',
    },
    {
        modelId: 'meta.llama3-1-70b-instruct-v1:0',
        displayName: 'Llama 3.1 70B Instruct (Bedrock)',
        provider: 'bedrock',
        family: 'llama-3.1',
        maxContextTokens: 128000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'standard',
        releasedAt: '2024-07',
        status: 'general-availability',
        governanceProfile: 'tier-2-supported',
        notes: 'Meta Llama 3.1 70B via Bedrock. AWS region required. Tool call support via Bedrock Converse API.',
    },
    {
        modelId: 'meta.llama3-1-8b-instruct-v1:0',
        displayName: 'Llama 3.1 8B Instruct (Bedrock)',
        provider: 'bedrock',
        family: 'llama-3.1',
        maxContextTokens: 128000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'efficient',
        releasedAt: '2024-07',
        status: 'general-availability',
        governanceProfile: 'tier-2-supported',
        notes: 'Meta Llama 3.1 8B via Bedrock. Smallest Llama 3.1 on Bedrock; suitable for classification.',
    },
    {
        modelId: 'mistral.mistral-large-2407-v1:0',
        displayName: 'Mistral Large 2407 (Bedrock)',
        provider: 'bedrock',
        family: 'mistral-large',
        maxContextTokens: 128000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'standard',
        releasedAt: '2024-07',
        status: 'general-availability',
        governanceProfile: 'tier-2-supported',
        notes: 'Mistral Large via Bedrock Converse API. SOC 2 Type II via Mistral trust portal.',
    },
    // =========================================================================
    // DeepSeek -- provider 'deepseek'
    // Verified: src/packs/*.ts (deepseek appears as blockedProviders in several
    //           compliance packs -- confirms the provider ID 'deepseek' is
    //           canonical in this codebase)
    // Note: DeepSeek is blocked by multiple compliance packs (HIPAA, EU-MDR,
    //       FDA, UK AI, DORA, NIS2, PCI DSS) due to PRC jurisdiction risk.
    //       Tier-2 only; not suitable for regulated workloads.
    // =========================================================================
    {
        modelId: 'deepseek-chat',
        displayName: 'DeepSeek Chat',
        provider: 'deepseek',
        family: 'deepseek-v3',
        maxContextTokens: 64000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'standard',
        releasedAt: '2024-12',
        status: 'general-availability',
        governanceProfile: 'tier-2-supported',
        notes: 'BLOCKED by HIPAA, EU-MDR, FDA 21 CFR 56, UK AI Framework, DORA, NIS2, PCI DSS, DE-BDSG, and Illinois AIVIA packs due to PRC National Intelligence Law jurisdiction risk. Use only for non-regulated, non-PHI workloads.',
    },
    {
        modelId: 'deepseek-reasoner',
        displayName: 'DeepSeek Reasoner (R1)',
        provider: 'deepseek',
        family: 'deepseek-r1',
        maxContextTokens: 64000,
        supportsToolCalls: false,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'frontier',
        releasedAt: '2025-01',
        status: 'general-availability',
        governanceProfile: 'tier-2-supported',
        notes: 'Chain-of-thought reasoning model. Does NOT support tool calls. Streaming available on some endpoints. Subject to same compliance pack blocks as deepseek-chat.',
    },
    // =========================================================================
    // Replicate -- Llama models via Replicate API, provider 'replicate-llama'
    // Verified: task specification; consistent with llama model family
    //           naming used in codebase tests
    // =========================================================================
    {
        modelId: 'meta/meta-llama-3.1-8b-instruct',
        displayName: 'Llama 3.1 8B Instruct (Replicate)',
        provider: 'replicate-llama',
        family: 'llama-3.1',
        maxContextTokens: 128000,
        supportsToolCalls: false,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'efficient',
        releasedAt: '2024-07',
        status: 'general-availability',
        governanceProfile: 'tier-3-experimental',
        notes: 'Meta Llama 3.1 8B via Replicate API. Tool call support is adapter-dependent and not guaranteed. Experimental -- not for regulated workloads.',
    },
    {
        modelId: 'meta/meta-llama-3.1-70b-instruct',
        displayName: 'Llama 3.1 70B Instruct (Replicate)',
        provider: 'replicate-llama',
        family: 'llama-3.1',
        maxContextTokens: 128000,
        supportsToolCalls: false,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'standard',
        releasedAt: '2024-07',
        status: 'general-availability',
        governanceProfile: 'tier-3-experimental',
        notes: 'Meta Llama 3.1 70B via Replicate API. Tool call support is adapter-dependent.',
    },
    {
        modelId: 'meta/meta-llama-3.1-405b-instruct',
        displayName: 'Llama 3.1 405B Instruct (Replicate)',
        provider: 'replicate-llama',
        family: 'llama-3.1',
        maxContextTokens: 128000,
        supportsToolCalls: false,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'frontier',
        releasedAt: '2024-07',
        status: 'general-availability',
        governanceProfile: 'tier-3-experimental',
        notes: 'Largest Llama 3.1 variant via Replicate. High latency and cost. Experimental only.',
    },
    {
        modelId: 'meta/meta-llama-3.3-70b-instruct',
        displayName: 'Llama 3.3 70B Instruct (Replicate)',
        provider: 'replicate-llama',
        family: 'llama-3.3',
        maxContextTokens: 128000,
        supportsToolCalls: false,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'standard',
        releasedAt: '2024-12',
        status: 'general-availability',
        governanceProfile: 'tier-3-experimental',
        notes: 'Meta Llama 3.3 70B via Replicate. Improved over 3.1 70B. Experimental governance tier.',
    },
    // =========================================================================
    // HuggingFace -- open models via HuggingFace Inference API, provider 'huggingface'
    // Verified: task specification; conservative capability flags applied
    //           (HuggingFace API tool call support varies by model and endpoint type)
    // =========================================================================
    {
        modelId: 'mistralai/Mistral-7B-Instruct-v0.3',
        displayName: 'Mistral 7B Instruct v0.3 (HuggingFace)',
        provider: 'huggingface',
        family: 'mistral-7b',
        maxContextTokens: 32000,
        supportsToolCalls: false,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'efficient',
        releasedAt: '2024-05',
        status: 'general-availability',
        governanceProfile: 'tier-3-experimental',
        notes: 'Mistral 7B via HuggingFace Inference API. Tool call support not guaranteed through HF API endpoints. Experimental governance tier.',
    },
    {
        modelId: 'mistralai/Mixtral-8x7B-Instruct-v0.1',
        displayName: 'Mixtral 8x7B Instruct v0.1 (HuggingFace)',
        provider: 'huggingface',
        family: 'mixtral-8x7b',
        maxContextTokens: 32000,
        supportsToolCalls: false,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'standard',
        releasedAt: '2023-12',
        status: 'general-availability',
        governanceProfile: 'tier-3-experimental',
        notes: 'Mixtral sparse MoE model via HuggingFace. Good multi-lingual capability. Experimental governance tier.',
    },
    {
        modelId: 'meta-llama/Meta-Llama-3.1-70B-Instruct',
        displayName: 'Llama 3.1 70B Instruct (HuggingFace)',
        provider: 'huggingface',
        family: 'llama-3.1',
        maxContextTokens: 128000,
        supportsToolCalls: false,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'standard',
        releasedAt: '2024-07',
        status: 'general-availability',
        governanceProfile: 'tier-3-experimental',
        notes: 'Meta Llama 3.1 70B via HuggingFace. Requires HF PRO or dedicated endpoint for this model size.',
    },
    {
        modelId: 'Qwen/Qwen2.5-72B-Instruct',
        displayName: 'Qwen 2.5 72B Instruct (HuggingFace)',
        provider: 'huggingface',
        family: 'qwen-2.5',
        maxContextTokens: 131072,
        supportsToolCalls: false,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'standard',
        releasedAt: '2024-09',
        status: 'general-availability',
        governanceProfile: 'tier-3-experimental',
        notes: 'Qwen 2.5 72B via HuggingFace. Strong coding and reasoning. PRC-origin model -- verify compliance pack constraints before deployment.',
    },
    // =========================================================================
    // Ollama -- self-hosted models, provider 'ollama'
    // Verified: src/llm-adapters/ollama.ts (defaultModelId: 'llama3', line 668)
    // Note: Ollama models are runtime-discovered from the local instance.
    //       This catalog documents canonical upstream model names that the
    //       OllamaAdapter can pull and run. The user's available models depend
    //       on what is loaded on their local Ollama instance (run `ollama list`).
    // =========================================================================
    {
        modelId: 'llama3.1',
        displayName: 'Llama 3.1 (Ollama)',
        provider: 'ollama',
        family: 'llama-3.1',
        maxContextTokens: 128000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'embedded',
        releasedAt: '2024-07',
        status: 'general-availability',
        governanceProfile: 'tier-3-experimental',
        notes: 'Ollama canonical tag for Llama 3.1. Model must be pulled on local instance. No BAA available (self-hosted). Tool use requires Ollama 0.3.x+.',
    },
    {
        modelId: 'mistral',
        displayName: 'Mistral 7B (Ollama)',
        provider: 'ollama',
        family: 'mistral-7b',
        maxContextTokens: 32000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'embedded',
        releasedAt: '2023-09',
        status: 'general-availability',
        governanceProfile: 'tier-3-experimental',
        notes: 'Ollama canonical tag for Mistral 7B. Self-hosted. Tool use requires Ollama 0.3.x+.',
    },
    {
        modelId: 'qwen2.5',
        displayName: 'Qwen 2.5 (Ollama)',
        provider: 'ollama',
        family: 'qwen-2.5',
        maxContextTokens: 32000,
        supportsToolCalls: true,
        supportsStreaming: true,
        supportsVision: false,
        supportsAudio: false,
        modality: modalities(false, false),
        pricingTier: 'embedded',
        releasedAt: '2024-09',
        status: 'general-availability',
        governanceProfile: 'tier-3-experimental',
        notes: 'Ollama canonical tag for Qwen 2.5 (default size). Self-hosted. PRC-origin model -- verify compliance pack constraints before deployment.',
    },
];
// ---------------------------------------------------------------------------
// Deep-freeze the catalog so runtime consumers cannot mutate registry state.
// PT-CATALOG-1 invariant: array returned by query functions is a frozen copy.
// ---------------------------------------------------------------------------
Object.freeze(_CATALOG_INTERNAL);
_CATALOG_INTERNAL.forEach(entry => Object.freeze(entry));
/**
 * The canonical model catalog. Frozen at module load time.
 * Do NOT mutate. Access via query functions below.
 */
exports.SUPPORTED_MODELS_CATALOG = _CATALOG_INTERNAL;
// ---------------------------------------------------------------------------
// Query functions
// All functions return a new array (never a reference to the internal store).
// Empty / invalid input returns [] (never throws, never returns undefined).
// ---------------------------------------------------------------------------
/**
 * Look up a model by its exact provider-canonical model ID.
 * Returns null if not found.
 */
function getModelById(modelId) {
    if (!modelId || typeof modelId !== 'string')
        return null;
    return _CATALOG_INTERNAL.find(m => m.modelId === modelId) ?? null;
}
/**
 * Return all models for a given provider.
 * Returns [] for unknown or empty provider.
 */
function getModelsByProvider(provider) {
    if (!provider || typeof provider !== 'string')
        return [];
    return _CATALOG_INTERNAL.filter(m => m.provider === provider).map(m => ({ ...m }));
}
/**
 * Return all models with a given governance profile.
 * Returns [] for unknown or empty profile.
 */
function getModelsByGovernanceProfile(profile) {
    if (!profile || typeof profile !== 'string')
        return [];
    return _CATALOG_INTERNAL
        .filter(m => m.governanceProfile === profile)
        .map(m => ({ ...m }));
}
/**
 * Return all models supporting a given capability.
 * Returns [] for unknown capability or empty input.
 */
function getModelsByCapability(capability) {
    if (!capability || typeof capability !== 'string')
        return [];
    return _CATALOG_INTERNAL
        .filter(m => {
        switch (capability) {
            case 'tool-calls': return m.supportsToolCalls;
            case 'streaming': return m.supportsStreaming;
            case 'vision': return m.supportsVision;
            case 'audio': return m.supportsAudio;
            default: return false;
        }
    })
        .map(m => ({ ...m }));
}
//# sourceMappingURL=supported-models-catalog.js.map