codetether-agent 4.7.0-a-002.4

A2A-native AI coding agent for the CodeTether ecosystem
Documentation
//! Tests for budget-aware message flattening.

use super::flatten::flatten_messages_with_budget;
use crate::provider::{ContentPart, Message, Role};

#[test]
fn respects_token_budget() {
    let msgs: Vec<Message> = (0..100)
        .map(|i| Message {
            role: Role::User,
            content: vec![ContentPart::Text {
                text: format!("message number {i} with some content"),
            }],
        })
        .collect();
    let (ctx, truncated) = flatten_messages_with_budget(&msgs, 100);
    assert!(truncated);
    assert!(ctx.contains("message number 0"));
}

#[test]
fn skips_thinking_blocks() {
    let messages = vec![Message {
        role: Role::Assistant,
        content: vec![
            ContentPart::Thinking {
                text: "long internal reasoning".into(),
            },
            ContentPart::Text {
                text: "visible answer".into(),
            },
        ],
    }];
    let (ctx, truncated) = flatten_messages_with_budget(&messages, 10_000);
    assert!(!truncated);
    assert!(!ctx.contains("[Thinking]"));
    assert!(ctx.contains("visible answer"));
}