Skip to main content

car_engine/
lib.rs

1//! Core runtime engine for Common Agent Runtime.
2//!
3//! The runtime loop:
4//! 1. Receive a proposal (batch of actions from a model)
5//! 2. Build a DAG from state_dependencies
6//! 3. Execute each level (concurrent if no ABORT actions, sequential otherwise)
7//! 4. Validate, execute with idempotency + timeout + retry, commit
8//! 5. On abort: rollback state to pre-proposal snapshot
9
10pub mod agent_basics;
11pub mod agent_capability;
12pub mod authz;
13pub mod builtin_agents;
14pub mod cache;
15pub mod capabilities;
16pub mod checkpoint;
17mod executor;
18pub mod mcp;
19pub mod rate_limit;
20pub mod registry;
21pub mod scope;
22pub mod subprocess;
23pub mod voice_turn;
24
25pub use agent_basics::entries as agent_basic_entries;
26pub use agent_capability::AgentCapabilityRegistry;
27pub use builtin_agents::{
28    agent_metadata, format_capability_payload, register_builtins, BuiltinAgent,
29    CapabilityPayloadError, BUILTIN_AGENTS,
30};
31pub use authz::{
32    AllowAllPermissions, AuthzDecision, AuthzPipeline, AuthzResult, AuthzStage, PermissionHandler,
33    Restriction,
34};
35pub use cache::ResultCache;
36pub use capabilities::CapabilitySet;
37pub use checkpoint::Checkpoint;
38pub use executor::{
39    format_tool_result, CostBudget, FailedActionSummary, ReplanCallback, ReplanConfig,
40    ReplanContext, Runtime, ToolExecutor, CANCELED_PREFIX,
41};
42pub use mcp::{McpServer, McpServerConfig, McpToolExecutor, McpToolInfo};
43pub use rate_limit::{RateLimit, RateLimiter};
44pub use registry::{ToolEntry, ToolPermission, ToolRegistry, ToolSource};
45pub use scope::RuntimeScope;
46pub use subprocess::{SubprocessTool, SubprocessToolExecutor};
47pub use voice_turn::{
48    dispatch_voice_turn, dispatch_voice_turn_sidecar_only,
49    dispatch_voice_turn_sidecar_only_with_classifier,
50    dispatch_voice_turn_sidecar_only_with_telemetry, dispatch_voice_turn_with_telemetry,
51    DirectDataFetcher, SidecarResult, VoiceTelemetry, VoiceTurnControl, VoiceTurnError,
52    VoiceTurnHandle,
53};
54
55#[cfg(test)]
56mod tests;