ai-agent 0.88.0

Idiomatic agent sdk inspired by the claude code source leak
Documentation
use std::collections::VecDeque;

pub struct PriorityQueue<T> {
    items: VecDeque<T>,
    priority_fn: Box<dyn Fn(&T, &T) -> bool>,
}

impl<T> PriorityQueue<T> {
    pub fn new(priority_fn: impl Fn(&T, &T) -> bool + 'static) -> Self {
        Self {
            items: VecDeque::new(),
            priority_fn: Box::new(priority_fn),
        }
    }
    
    pub fn push(&mut self, item: T) {
        let mut inserted = false;
        for (i, existing) in self.items.iter().enumerate() {
            if (self.priority_fn)(&item, existing) {
                self.items.insert(i, item);
                inserted = true;
                break;
            }
        }
        if !inserted {
            self.items.push_back(item);
        }
    }
    
    pub fn pop(&mut Option<T> {
        self.items.pop_front()
    }
    
    pub fn peek(&self) -> Option<&T> {
        self.items.front()
    }
    
    pub fn len(&self) -> usize {
        self.items.len()
    }
    
    pub fn is_empty(&self) -> bool {
        self.items.is_empty()
    }
}