Skip to main content

ai_agents_runtime/
lib.rs

1//! Runtime agent and builder for AI Agents framework
2
3mod builder;
4pub mod optimization;
5mod runtime;
6mod streaming;
7mod turn_context;
8
9pub mod orchestration;
10pub mod spawner;
11pub mod spec;
12
13pub use builder::AgentBuilder;
14pub use optimization::{
15    AwaitBeforeNextTurn, BackgroundOverflowPolicy, MainResponseDraft, MaintenanceMode,
16    MaintenanceTaskPolicy, PostTurnOptimizationConfig, RuntimeBranch, RuntimeBranchOutcome,
17    RuntimeBranchResult, RuntimeBranchStatus, RuntimeCommitBehavior, RuntimeConfig,
18    RuntimeOptimizationConfig, RuntimeOptimizationKind, RuntimeTaskPriority, RuntimeTaskPurpose,
19    ScheduledBranchSet, SkillCandidate, StreamBranchBuffer, StreamingDraftResult,
20    StreamingOptimizationPolicy, TurnBranchScheduler, TurnOptimizationContext,
21};
22pub use runtime::{RuntimeAgent, RuntimeControlHandle};
23pub use streaming::{StreamChunk, StreamingConfig};
24pub use turn_context::TurnActorContext;
25
26pub use ai_agents_core::{AgentInfo, AgentResponse, Result, ToolCall};
27
28use async_trait::async_trait;
29use serde::{Deserialize, Serialize};
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct ParallelToolsConfig {
33    #[serde(default = "default_parallel_enabled")]
34    pub enabled: bool,
35    #[serde(default = "default_max_parallel")]
36    pub max_parallel: usize,
37}
38
39fn default_parallel_enabled() -> bool {
40    true
41}
42
43fn default_max_parallel() -> usize {
44    5
45}
46
47impl Default for ParallelToolsConfig {
48    fn default() -> Self {
49        Self {
50            enabled: true,
51            max_parallel: 5,
52        }
53    }
54}
55
56#[async_trait]
57pub trait Agent: Send + Sync {
58    async fn chat(&self, input: &str) -> Result<AgentResponse>;
59    fn info(&self) -> AgentInfo;
60    async fn reset(&self) -> Result<()>;
61}