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 DECOMPOSE_TIMEOUT: Duration = Duration::from_secs(120);
pub const MCP_INIT_TIMEOUT: Duration = Duration::from_secs(90);
pub const STREAM_CHUNK_TIMEOUT: Duration = Duration::from_secs(60);
pub const WORKFLOW_TIMEOUT: Duration = Duration::from_secs(300);
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!(MCP_INIT_TIMEOUT.as_secs() > 0);
assert!(STREAM_CHUNK_TIMEOUT.as_secs() > 0);
assert!(WORKFLOW_TIMEOUT.as_secs() > 0);
assert!(DECOMPOSE_TIMEOUT.as_secs() > 0);
}
#[test]
fn mcp_init_timeout_is_longer_than_call_timeout() {
assert!(MCP_INIT_TIMEOUT > MCP_CALL_TIMEOUT);
assert!(MCP_INIT_TIMEOUT > CONNECT_TIMEOUT);
}
#[test]
fn workflow_timeout_is_longest() {
assert!(WORKFLOW_TIMEOUT > INFER_TIMEOUT);
assert!(WORKFLOW_TIMEOUT > EXEC_TIMEOUT);
assert!(WORKFLOW_TIMEOUT > FETCH_TIMEOUT);
}
#[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);
}
}