Skip to main content

bamboo_engine/
lib.rs

1//! Bamboo engine — runtime, agent loop, and orchestration.
2
3// The lib-test harness checks Send through the complete guarded tool-dispatch
4// future. Its nested task-local scopes exceed the default trait recursion depth.
5#![cfg_attr(test, recursion_limit = "256")]
6
7pub mod app_context;
8pub mod auto_dream;
9mod auto_dream_privacy;
10pub mod capability_discovery;
11pub mod events;
12pub mod external_agents;
13pub mod gardener;
14pub mod gold_auto_answer;
15pub mod ledger_gardener;
16pub mod llm_summarizer;
17pub mod message_hooks;
18pub mod model_areas;
19pub mod model_config_helper;
20pub mod placement_scheduler;
21pub mod project_context;
22pub mod prompt_defaults;
23pub mod resolved_defaults;
24pub mod runtime;
25pub mod sdk;
26pub mod session_activation;
27pub mod session_app;
28pub mod session_cache;
29pub mod ticket_runtime;
30pub mod ticket_token_budget;
31pub mod ticket_worker_plan;
32pub use session_cache::SessionSnapshot;
33pub mod session_messaging;
34pub mod session_repository;
35pub use session_repository::SessionRepository;
36#[cfg(feature = "test-utils")]
37pub mod test_utils;
38pub mod title_gen;
39pub mod token_usage_log;
40pub mod workflow_run;
41pub use token_usage_log::TokenUsageRecord;
42pub use workflow_run::{
43    AgentStepPort, AgentStepResult, FileWorkflowRunRepository, NamedAgentSpec, PermissionDecision,
44    WorkflowDefinitionPort, WorkflowPolicyPort, WorkflowPolicyTarget, WorkflowRunEngine,
45    WorkflowRunError, WorkflowRunRepository, WorkflowSecretMaterial, WorkflowSecretResolverPort,
46    WorkflowSessionPermissionPort,
47};
48
49pub use app_context::AgentSessionContext;
50pub use runtime::execution::agent_spawn::{read_cached_session, SessionCache};
51pub use session_activation::{
52    SessionActivationLaunch, SessionActivationReserveOutcome, SessionActivationRouter,
53    SessionActivationSpawner, SessionRunRegistration, SessionRunRegistrationError,
54};
55pub use session_app::child_completion_coordinator::ChildCompletionCoordinator;
56pub use session_messaging::{
57    SessionMessagingMetrics, SessionMessagingMetricsSnapshot, SessionMessenger,
58    SessionMessengerAdmission, SessionMessengerError, SessionMessengerReceipt,
59    SessionPeerDeliveryReceipt,
60};
61
62// Re-export commonly used types from agent (via dependency)
63pub use bamboo_agent_core::{
64    AgentError, AgentEvent, AgentHook, FunctionCall, FunctionSchema, Message, MessageContent,
65    MessagePart, MessagePhase, PromptSnapshot, Role, Session, TokenUsage, Tool, ToolCall,
66    ToolError, ToolExecutionContext, ToolExecutor, ToolRegistry, ToolResult, ToolSchema,
67};
68
69// Re-export hook contracts and runtime persistence so consumers can configure
70// lifecycle hooks without depending on the domain crate directly.
71pub use bamboo_domain::{
72    AgentHookPoint, HookPayload, HookResult, HookToolOutcome, RuntimeSessionPersistence,
73};
74pub use runtime::agent::{AgentBuilder, DirectExecutionLease};
75// `AgentLoopConfig` is intentionally NOT re-exported: its fields are `pub(crate)`,
76// so it cannot be constructed outside the engine. Execution funnels solely through
77// `AgentRuntime::execute`.
78pub use runtime::config::{
79    ApprovalDelegate, AuxiliaryModelConfig, BashResumeHook, ChildApprovalOutcome,
80    ChildApprovalRequest, DisabledFilterResolver, DisabledFilterSets, GuardianConfig,
81    GuardianSpawner, ImageFallbackConfig, ImageFallbackMode,
82};
83pub use runtime::counted_loop::CountedLoopConfig;
84pub use runtime::execution::runner_state::{AgentRunner, AgentStatus};
85pub use runtime::execution::{
86    VisibleAssistantMessage, VisibleMessageEvent, VisibleMessageEventKind, VisibleMessageSnapshot,
87    VisibleMessageStream,
88};
89pub use runtime::hooks::{
90    test_lifecycle_handler, test_lifecycle_shell_command, HookRunner, LifecycleHookEvent,
91    LifecycleHookTestOutput, LifecycleScriptRunner, ScriptHook, ShellCommandHook, ShellHookEvent,
92    ShellHookTestOutput,
93};
94pub use runtime::loop_control::{LoopControlConfig, SupervisorLoopControlGrant};
95pub use runtime::managers::{
96    LifecycleManager, LlmManager, MemoryManager, MiniLoopExecutor, PromptManager, ToolManager,
97};
98pub use runtime::model_roster::{ModelRoster, RoleModel};
99pub use runtime::runtime::{
100    AgentRuntime, AgentRuntimeBuilder, ExecuteRequest, ExecuteRequestBuilder,
101};
102pub use runtime::task_context::TaskLoopContext;
103pub use runtime::task_evaluation::{evaluate_task_progress, TaskEvaluationResult};
104pub use runtime::Agent;
105
106// Re-export from the ergonomic SDK surface (anti-fork single spawn core).
107pub use sdk::runner::{child_runner, ChildRunner, RunChildInput};
108pub use sdk::spawn::run_child_spawn;
109
110// Sub-module re-exports for engine's own runtime modules
111pub mod runner {
112    pub use crate::runtime::runner::*;
113}
114pub mod context {
115    pub use crate::runtime::context::*;
116}
117pub mod execution {
118    pub use crate::runtime::execution::*;
119}
120pub mod config {
121    pub use crate::runtime::config::*;
122}
123pub mod hooks {
124    pub use crate::runtime::hooks::*;
125}
126pub mod managers {
127    pub use crate::runtime::managers::*;
128}
129pub mod stream {
130    pub use crate::runtime::stream::*;
131}
132pub mod task_context {
133    pub use crate::runtime::task_context::*;
134}
135pub mod task_evaluation {
136    pub use crate::runtime::task_evaluation::*;
137}
138pub mod agent {
139    pub use crate::runtime::agent::*;
140}
141
142#[cfg(test)]
143mod inherited_wait_regression_tests;