pub mod agent;
pub mod analytics;
pub mod client;
pub mod config;
pub mod error;
pub mod executions;
pub mod feedback;
pub mod search;
pub mod services;
pub mod skills;
pub mod types;
pub use agent::AgentApi;
pub use analytics::AnalyticsApi;
pub use client::ApiClient;
pub use config::ConfigApi;
pub use error::{ApiError, ApiResult};
pub use executions::ExecutionsApi;
pub use feedback::{
FeedbackApi, FeedbackEntry, GetFeedbackRequest, GetFeedbackResponse, SubmitFeedbackRequest,
SubmitFeedbackResponse,
};
pub use search::SearchApi;
pub use services::ServicesApi;
pub use skills::SkillsApi;
pub use types::*;
#[derive(Clone)]
pub struct Api {
pub skills: SkillsApi,
pub executions: ExecutionsApi,
pub search: SearchApi,
pub config: ConfigApi,
pub services: ServicesApi,
pub agent: AgentApi,
pub feedback: FeedbackApi,
pub analytics: AnalyticsApi,
}
impl Default for Api {
fn default() -> Self {
Self::new()
}
}
impl Api {
pub fn new() -> Self {
let client = ApiClient::local();
Self::with_client(client)
}
pub fn with_base_url(base_url: impl Into<String>) -> Self {
let client = ApiClient::new(base_url);
Self::with_client(client)
}
pub fn with_host(host: &str, port: u16) -> Self {
let client = ApiClient::with_host(host, port);
Self::with_client(client)
}
pub fn with_client(client: ApiClient) -> Self {
Self {
skills: SkillsApi::new(client.clone()),
executions: ExecutionsApi::new(client.clone()),
search: SearchApi::new(client.clone()),
config: ConfigApi::new(client.clone()),
services: ServicesApi::new(client.clone()),
agent: AgentApi::new(client.clone()),
feedback: FeedbackApi::new(client.clone()),
analytics: AnalyticsApi::new(client),
}
}
pub async fn is_available(&self) -> bool {
self.config.is_healthy().await
}
pub async fn server_version(&self) -> ApiResult<String> {
let version = self.config.version().await?;
Ok(version.version)
}
}
pub fn api() -> Api {
Api::new()
}