Skip to main content

bamboo_engine/
lib.rs

1//! Bamboo engine — runtime, agent loop, and orchestration.
2
3pub mod app_context;
4pub mod auto_dream;
5pub mod events;
6pub mod external_agents;
7pub mod gardener;
8pub mod gold_auto_answer;
9pub mod ledger_gardener;
10pub mod llm_summarizer;
11pub mod message_hooks;
12pub mod model_areas;
13pub mod model_config_helper;
14pub mod project_context;
15pub mod prompt_defaults;
16pub mod resolved_defaults;
17pub mod runtime;
18pub mod sdk;
19pub mod session_app;
20pub mod session_repository;
21pub use session_repository::SessionRepository;
22pub mod title_gen;
23pub mod token_usage_log;
24pub mod workflow_run;
25pub use token_usage_log::TokenUsageRecord;
26pub use workflow_run::{
27    AgentStepPort, AgentStepResult, FileWorkflowRunRepository, NamedAgentSpec, PermissionDecision,
28    WorkflowDefinitionPort, WorkflowPolicyPort, WorkflowPolicyTarget, WorkflowRunEngine,
29    WorkflowRunError, WorkflowRunRepository, WorkflowSecretMaterial, WorkflowSecretResolverPort,
30};
31
32pub use app_context::AgentSessionContext;
33pub use runtime::execution::agent_spawn::{read_cached_session, SessionCache};
34pub use session_app::child_completion_coordinator::ChildCompletionCoordinator;
35
36// Re-export commonly used types from agent (via dependency)
37pub use bamboo_agent_core::{
38    AgentError, AgentEvent, AgentHook, FunctionCall, FunctionSchema, Message, MessageContent,
39    MessagePart, MessagePhase, PromptSnapshot, Role, Session, TokenUsage, Tool, ToolCall,
40    ToolError, ToolExecutionContext, ToolExecutor, ToolRegistry, ToolResult, ToolSchema,
41};
42
43// Re-export hook contracts and runtime persistence so consumers can configure
44// lifecycle hooks without depending on the domain crate directly.
45pub use bamboo_domain::{
46    AgentHookPoint, HookPayload, HookResult, HookToolOutcome, RuntimeSessionPersistence,
47};
48pub use runtime::agent::AgentBuilder;
49// `AgentLoopConfig` is intentionally NOT re-exported: its fields are `pub(crate)`,
50// so it cannot be constructed outside the engine. Execution funnels solely through
51// `AgentRuntime::execute`.
52pub use runtime::config::{
53    ApprovalDelegate, AuxiliaryModelConfig, BashResumeHook, ChildApprovalOutcome,
54    ChildApprovalRequest, GuardianConfig, GuardianSpawner, ImageFallbackConfig, ImageFallbackMode,
55};
56pub use runtime::execution::runner_state::{AgentRunner, AgentStatus};
57pub use runtime::hooks::{
58    test_lifecycle_shell_command, HookRunner, ShellCommandHook, ShellHookEvent, ShellHookTestOutput,
59};
60pub use runtime::managers::{
61    LifecycleManager, LlmManager, MemoryManager, MiniLoopExecutor, PromptManager, ToolManager,
62};
63pub use runtime::model_roster::{ModelRoster, RoleModel};
64pub use runtime::runtime::{
65    AgentRuntime, AgentRuntimeBuilder, ExecuteRequest, ExecuteRequestBuilder,
66};
67pub use runtime::task_context::TaskLoopContext;
68pub use runtime::task_evaluation::{evaluate_task_progress, TaskEvaluationResult};
69pub use runtime::Agent;
70
71// Re-export from the ergonomic SDK surface (anti-fork single spawn core).
72pub use sdk::runner::{child_runner, ChildRunner, RunChildInput};
73pub use sdk::spawn::run_child_spawn;
74
75// Sub-module re-exports for engine's own runtime modules
76pub mod runner {
77    pub use crate::runtime::runner::*;
78}
79pub mod context {
80    pub use crate::runtime::context::*;
81}
82pub mod execution {
83    pub use crate::runtime::execution::*;
84}
85pub mod config {
86    pub use crate::runtime::config::*;
87}
88pub mod hooks {
89    pub use crate::runtime::hooks::*;
90}
91pub mod managers {
92    pub use crate::runtime::managers::*;
93}
94pub mod stream {
95    pub use crate::runtime::stream::*;
96}
97pub mod task_context {
98    pub use crate::runtime::task_context::*;
99}
100pub mod task_evaluation {
101    pub use crate::runtime::task_evaluation::*;
102}
103pub mod agent {
104    pub use crate::runtime::agent::*;
105}