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