kcode-intelligence-router 0.2.2

Typed routing for model calls with exact-model and per-user usage accounting
Documentation
use std::time::Duration;

use kcode_codex_runtime::{ReasoningEffort, SearchDepth, WebSearchContext};

pub(crate) const DEFAULT_MODEL: &str = "gpt-5.6-sol";
pub(crate) const GENERATION_REASONING_EFFORT: ReasoningEffort = ReasoningEffort::XHigh;
pub(crate) const MEDIA_ANNOTATION_TIMEOUT: Duration = Duration::from_secs(30 * 60);
pub(crate) const IMAGE_OPERATION_TIMEOUT: Duration = Duration::from_secs(30 * 60);
pub(crate) const MODEL_DISCOVERY_TIMEOUT: Duration = Duration::from_secs(90);
pub(crate) const MAX_MEDIA_ANNOTATION_BYTES: usize = 20 * 1024 * 1024;
pub(crate) const MAX_MEDIA_ANNOTATION_PROMPT_CHARACTERS: usize = 4_000;
pub(crate) const MAX_IMAGE_PROMPT_CHARACTERS: usize = 32_000;
pub(crate) const KENNEDY_CODEX_BASE_INSTRUCTION: &str = concat!(
    "Use call_ktool for Kennedy application tools. ",
    "Each call invokes one Ktool."
);

pub(crate) const QUALITY_SEARCH_MODEL: &str = "gpt-5.6-sol";
pub(crate) const QUALITY_SEARCH_REASONING: ReasoningEffort = ReasoningEffort::XHigh;
pub(crate) const QUALITY_SEARCH_CONTEXT: WebSearchContext = WebSearchContext::High;
pub(crate) const QUALITY_SEARCH_DEPTH: SearchDepth = SearchDepth::Thorough;
pub(crate) const QUALITY_SEARCH_TIMEOUT: Duration = Duration::from_secs(120 * 60);

pub(crate) const BALANCED_SEARCH_MODEL: &str = "gpt-5.6-terra";
pub(crate) const BALANCED_SEARCH_REASONING: ReasoningEffort = ReasoningEffort::Low;
pub(crate) const BALANCED_SEARCH_CONTEXT: WebSearchContext = WebSearchContext::Low;
pub(crate) const BALANCED_SEARCH_DEPTH: SearchDepth = SearchDepth::Focused;
pub(crate) const BALANCED_SEARCH_TIMEOUT: Duration = Duration::from_secs(9 * 60);

pub(crate) const FAST_SEARCH_TIMEOUT: Duration = Duration::from_secs(270);