use super::*;
use crate::metrics::TokenUsage;
fn dummy_metrics() -> TurnMetrics {
TurnMetrics {
elapsed_ms: 100,
usage: Some(TokenUsage {
input_tokens: 10,
output_tokens: 5,
}),
cost_usd: Some(0.0),
model_id: "test".into(),
endpoint: "http://localhost".into(),
..Default::default()
}
}
fn metrics_with_input(input_tokens: u32) -> TurnMetrics {
let mut m = dummy_metrics();
m.usage = Some(TokenUsage {
input_tokens,
output_tokens: 20,
});
m
}
fn stub_summarizer(
reply: &'static str,
) -> impl Fn(String) -> crate::agentic::SummarizeFuture + Send + Sync {
move |_req: String| -> crate::agentic::SummarizeFuture {
Box::pin(async move { Ok((reply.to_string(), None)) })
}
}
fn capturing_summarizer(
reply: &'static str,
calls: std::sync::Arc<std::sync::Mutex<Vec<String>>>,
) -> impl Fn(String) -> crate::agentic::SummarizeFuture + Send + Sync {
move |req: String| -> crate::agentic::SummarizeFuture {
calls.lock().unwrap().push(req);
Box::pin(async move { Ok((reply.to_string(), None)) })
}
}
#[cfg(test)]
#[path = "budget.rs"]
mod budget;
#[cfg(test)]
#[path = "compaction_prompt.rs"]
mod compaction_prompt;
#[cfg(test)]
#[path = "compaction_trigger.rs"]
mod compaction_trigger;
#[cfg(test)]
#[path = "continuity.rs"]
mod continuity;
#[cfg(test)]
#[path = "manager.rs"]
mod manager;
#[cfg(test)]
#[path = "memory_index.rs"]
mod memory_index;
#[cfg(test)]
#[path = "note_routing.rs"]
mod note_routing;
#[cfg(test)]
#[path = "rolling_window.rs"]
mod rolling_window;
#[cfg(test)]
#[path = "soul.rs"]
mod soul;
#[cfg(test)]
#[path = "token_accounting.rs"]
mod token_accounting;