Skip to main content

bamboo_engine/runtime/
runner.rs

1//! Agent loop runner implementation.
2//!
3//! This module provides the core agent execution loop that orchestrates LLM interactions,
4//! tool execution, and event streaming for conversational AI agents.
5
6use bamboo_agent_core::TokenUsage;
7use bamboo_agent_core::{AgentError, Session};
8
9pub(crate) mod auxiliary_budget;
10pub mod image_fallback;
11mod logging;
12mod loop_execution;
13mod metrics_lifecycle;
14pub(crate) mod prompt_context;
15pub(crate) mod round_frame;
16pub(crate) mod round_lifecycle;
17pub(crate) mod round_prelude;
18pub(crate) mod session_finalize;
19pub(crate) mod session_setup;
20pub(crate) mod state_bridge;
21mod task_lifecycle;
22pub(crate) mod tool_execution;
23mod workspace_context;
24
25pub use bamboo_agent_core::PromptSnapshot;
26pub(crate) use loop_execution::run_agent_loop_with_config;
27
28pub fn read_prompt_snapshot(session: &Session) -> Option<PromptSnapshot> {
29    session_setup::read_prompt_snapshot(session)
30}
31
32pub fn refresh_prompt_snapshot(session: &mut Session) {
33    session_setup::refresh_prompt_snapshot(session)
34}
35
36pub(super) fn to_event_token_usage(prompt_tokens: u64, completion_tokens: u64) -> TokenUsage {
37    let mut usage = TokenUsage {
38        prompt_tokens,
39        completion_tokens,
40        total_tokens: 0,
41    };
42    usage.recompute_total();
43    usage
44}
45
46/// Result type for agent loop operations.
47pub type Result<T> = std::result::Result<T, AgentError>;
48
49#[cfg(test)]
50mod tests;