#[cfg(not(target_arch = "wasm32"))]
use tracing::instrument;
#[cfg(not(target_arch = "wasm32"))]
use crate::auth::TokenProvider;
use crate::error::AptuError;
#[cfg(not(target_arch = "wasm32"))]
#[instrument(skip(provider), fields(provider_name))]
pub async fn list_models(
provider: &dyn TokenProvider,
provider_name: &str,
) -> crate::Result<Vec<crate::ai::registry::CachedModel>> {
use crate::ai::registry::{CachedModelRegistry, ModelRegistry};
use crate::cache::cache_dir;
let cache_dir = cache_dir();
let registry =
CachedModelRegistry::new(cache_dir, crate::cache::DEFAULT_MODEL_TTL_SECS, provider);
registry
.list_models(provider_name)
.await
.map_err(|e| AptuError::ModelRegistry {
message: format!("Failed to list models: {e}"),
})
}
#[cfg(target_arch = "wasm32")]
pub async fn list_models(
_provider: &dyn crate::auth::TokenProvider,
_provider_name: &str,
) -> crate::Result<Vec<crate::ai::registry::CachedModel>> {
crate::facade::wasm_unsupported!("list_models");
}
#[cfg(not(target_arch = "wasm32"))]
#[instrument(skip(provider), fields(provider_name, model_id))]
pub async fn validate_model(
provider: &dyn TokenProvider,
provider_name: &str,
model_id: &str,
) -> crate::Result<bool> {
use crate::ai::registry::{CachedModelRegistry, ModelRegistry};
use crate::cache::cache_dir;
let cache_dir = cache_dir();
let registry =
CachedModelRegistry::new(cache_dir, crate::cache::DEFAULT_MODEL_TTL_SECS, provider);
registry
.model_exists(provider_name, model_id)
.await
.map_err(|e| AptuError::ModelRegistry {
message: format!("Failed to validate model: {e}"),
})
}
#[cfg(target_arch = "wasm32")]
pub async fn validate_model(
_provider: &dyn crate::auth::TokenProvider,
_provider_name: &str,
_model_id: &str,
) -> crate::Result<bool> {
crate::facade::wasm_unsupported!("validate_model");
}