ai-agent 0.88.0

Idiomatic agent sdk inspired by the claude code source leak
Documentation
// Source: ~/claudecode/openclaudecode/src/utils/model/contextWindowUpgradeCheck.ts

/// Available model upgrade for more context.
pub struct AvailableUpgrade {
    pub alias: String,
    pub name: String,
    pub multiplier: u32,
}

/// Get available model upgrade for more context.
/// Returns None if no upgrade available or user already has max context.
fn get_available_upgrade() -> Option<AvailableUpgrade> {
    // This depends on getUserSpecifiedModelSetting and checkX1mAccess
    // which require integration with the model/auth modules.
    // For now, return None as the stub implementation.
    None
}

/// Get upgrade message for different contexts.
pub fn get_upgrade_message(context: &str) -> Option<String> {
    let upgrade = get_available_upgrade()?;

    match context {
        "warning" => Some(format!("/model {}", upgrade.alias)),
        "tip" => Some(format!(
            "Tip: You have access to {} with {}x more context",
            upgrade.name, upgrade.multiplier
        )),
        _ => None,
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_get_upgrade_message_no_upgrade() {
        assert!(get_upgrade_message("warning").is_none());
        assert!(get_upgrade_message("tip").is_none());
    }

    #[test]
    fn test_get_upgrade_message_unknown_context() {
        assert!(get_upgrade_message("unknown").is_none());
    }
}