use std::time::Duration;
pub const EXEC_TIMEOUT: Duration = Duration::from_secs(60);
pub const FETCH_TIMEOUT: Duration = Duration::from_secs(30);
pub const INFER_TIMEOUT: Duration = Duration::from_secs(120);
pub const CONNECT_TIMEOUT: Duration = Duration::from_secs(20);
pub const MCP_CALL_TIMEOUT: Duration = Duration::from_secs(60);
pub const INVOKE_TASK_DEADLINE: Duration = Duration::from_secs(300);
pub const RECONNECT_TIMEOUT: Duration = Duration::from_secs(30);
pub const DECOMPOSE_TIMEOUT: Duration = Duration::from_secs(120);
pub const STREAM_CHUNK_TIMEOUT: Duration = Duration::from_secs(60);
pub const REDIRECT_LIMIT: usize = 5;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn timeouts_are_positive() {
assert!(EXEC_TIMEOUT.as_secs() > 0);
assert!(FETCH_TIMEOUT.as_secs() > 0);
assert!(INFER_TIMEOUT.as_secs() > 0);
assert!(CONNECT_TIMEOUT.as_secs() > 0);
assert!(MCP_CALL_TIMEOUT.as_secs() > 0);
assert!(STREAM_CHUNK_TIMEOUT.as_secs() > 0);
assert!(DECOMPOSE_TIMEOUT.as_secs() > 0);
assert!(INVOKE_TASK_DEADLINE.as_secs() > 0);
}
#[test]
fn infer_timeout_is_longer_than_exec() {
assert!(INFER_TIMEOUT > EXEC_TIMEOUT);
assert!(INFER_TIMEOUT > FETCH_TIMEOUT);
}
#[test]
fn connect_timeout_is_reasonable() {
assert!(CONNECT_TIMEOUT < INFER_TIMEOUT);
assert!(CONNECT_TIMEOUT <= EXEC_TIMEOUT);
}
#[test]
fn redirect_limit_is_reasonable() {
const _: () = {
assert!(REDIRECT_LIMIT >= 3);
assert!(REDIRECT_LIMIT <= 10);
};
assert_eq!(REDIRECT_LIMIT, 5);
}
#[test]
fn decompose_timeout_allows_multiple_mcp_calls() {
assert!(DECOMPOSE_TIMEOUT > MCP_CALL_TIMEOUT);
}
#[test]
fn reconnect_timeout_is_30_seconds() {
assert_eq!(RECONNECT_TIMEOUT.as_secs(), 30);
}
#[test]
fn reconnect_timeout_exceeds_connect_timeout() {
assert!(RECONNECT_TIMEOUT >= CONNECT_TIMEOUT);
}
#[test]
fn invoke_task_deadline_is_5_minutes() {
assert_eq!(INVOKE_TASK_DEADLINE.as_secs(), 300);
}
#[test]
fn invoke_task_deadline_exceeds_mcp_call_timeout() {
assert!(INVOKE_TASK_DEADLINE > MCP_CALL_TIMEOUT);
assert!(INVOKE_TASK_DEADLINE.as_secs() >= MCP_CALL_TIMEOUT.as_secs() * 4);
}
}