use atd_protocol::{ToolTier, ToolVisibility};
#[derive(Debug, Clone, Default)]
pub struct DiscoverFilter {
pub tier: Option<ToolTier>,
pub visibility: Option<ToolVisibility>,
pub domain: Option<String>,
pub limit: Option<usize>,
}
#[derive(Debug, Clone, Default)]
pub struct CallOptions {
pub dry_run: bool,
pub preferred_binding: Option<atd_protocol::BindingProtocol>,
}
#[derive(Debug, Clone)]
pub struct ConnectOptions {
pub max_attempts: u32,
pub backoff_base_ms: u64,
pub backoff_cap_ms: u64,
pub connect_timeout_ms: u64,
}
impl Default for ConnectOptions {
fn default() -> Self {
Self {
max_attempts: env_u32("ATD_CONNECT_RETRIES", 5),
backoff_base_ms: env_u64("ATD_CONNECT_BACKOFF_BASE_MS", 50),
backoff_cap_ms: env_u64("ATD_CONNECT_BACKOFF_CAP_MS", 800),
connect_timeout_ms: env_u64("ATD_CONNECT_TIMEOUT_MS", 10_000),
}
}
}
#[derive(Debug, Clone)]
pub struct PaginatedSdkResult {
pub value: serde_json::Value,
pub next_cursor: Option<String>,
}
#[derive(Debug, Clone)]
pub struct CallAllOptions {
pub max_pages: u32,
pub max_total_bytes: usize,
pub merge_policy: MergePolicy,
}
impl Default for CallAllOptions {
fn default() -> Self {
Self {
max_pages: 100,
max_total_bytes: 32 * 1024 * 1024,
merge_policy: MergePolicy::ConcatArray,
}
}
}
#[derive(Debug, Clone)]
pub enum MergePolicy {
ConcatArray,
ConcatField(String),
FirstPageOnly,
}
fn env_u32(key: &str, default: u32) -> u32 {
std::env::var(key)
.ok()
.and_then(|s| s.parse().ok())
.unwrap_or(default)
}
fn env_u64(key: &str, default: u64) -> u64 {
std::env::var(key)
.ok()
.and_then(|s| s.parse().ok())
.unwrap_or(default)
}