pub fn compact_messages( messages: Vec<Message>, budget: TokenBudget, ) -> Vec<Message>
Truncate older messages when over budget. Keeps system prompt and recent turns.