gitdataai/lib/ai/agent/mod.rs
2026-05-30 01:38:40 +08:00

99 lines
2.5 KiB
Rust

pub mod agent;
pub mod compression;
pub mod config;
pub mod error_classifier;
pub mod events;
pub mod helpers;
pub mod hooks;
pub mod iteration_budget;
pub mod r#loop;
pub mod persistence;
pub mod prompt;
pub mod prompt_builder;
pub mod request;
pub mod session;
pub mod subagent;
pub mod tool;
use serde::{Deserialize, Serialize};
pub use agent::RigAgent;
pub use compression::{
CompactionResult, CompressionStrategy, build_branch_summary_prompt,
build_compression_prompt, build_compression_prompt_with_options,
estimate_truncation, plan_compaction,
};
pub use config::AgentConfig;
pub use error_classifier::{
ErrorCategory, RetryPolicy, classify_error, retry_policy_for,
should_compact_before_retry, should_switch_to_fallback,
};
pub use events::{
AgentEvent, AgentEventMessage, EventSink, EventToolCall, MessageRole,
};
pub use hooks::{AgentHook, HookChain, ToolCallOutcome, ToolGuardrailDecision};
pub use iteration_budget::IterationBudget;
pub use r#loop::{
AgentLoopConfig, EnhancedAgent, PrepareNextTurnFn, ShouldStopFn,
ToolExecutionMode, TurnContext, TurnUpdate,
};
pub use persistence::{
AgentRealtime, AgentRunContext, AgentRuntime, AgentStreamEvent,
};
pub use prompt_builder::SystemPromptBuilder;
pub use request::{
AgentContextChunk, AgentExpert, AgentExpertOutput, AgentMessage,
AgentRequest, AgentResult, AgentStep, ToolCallRecord,
};
pub use session::{
CompactionOptions, Session, SessionEntry, SessionHeader,
SessionMessageRole, SessionToolCall, SessionToolResult,
};
pub use tool::{RigTool, RigToolSet};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum RigStreamChunk {
TextDelta {
index: usize,
content: String,
},
Thinking {
index: usize,
content: String,
},
ToolCallStarted {
tool_call_id: String,
tool_name: String,
arguments: String,
},
ToolCallFinished {
tool_call_id: String,
tool_name: String,
output: String,
error: Option<String>,
},
SubagentStarted {
subagent_id: String,
role: String,
task: String,
},
SubagentCompleted {
subagent_id: String,
role: String,
task: String,
output: String,
},
SubagentFailed {
error: String,
},
Final {
content: String,
input_tokens: u64,
output_tokens: u64,
},
Failed {
error: String,
},
}