link-assistant-router 1.4.3

Link.Assistant.Router — Claude MAX OAuth proxy and token gateway for Anthropic APIs
Documentation
//! One account-filtered health/catalog view used by a complete model listing.

use std::collections::HashMap;

use crate::subscription::SubscriptionProvider;

use super::{ProviderHealthReport, ProviderHealthState};

pub struct ConfiguredCatalogSnapshot {
    pub(super) health: Vec<ProviderHealthReport>,
    pub(super) records: HashMap<SubscriptionProvider, Vec<crate::model_catalog::CatalogRecord>>,
}

impl ConfiguredCatalogSnapshot {
    pub fn health(&self) -> &[ProviderHealthReport] {
        &self.health
    }

    pub fn records(
        &self,
        provider: SubscriptionProvider,
    ) -> Vec<crate::model_catalog::CatalogRecord> {
        self.records.get(&provider).cloned().unwrap_or_default()
    }

    pub fn healthy_providers(&self) -> Vec<SubscriptionProvider> {
        self.health
            .iter()
            .filter(|entry| entry.state == ProviderHealthState::Healthy)
            .map(|entry| entry.provider)
            .collect()
    }
}