Skip to main content

rs_adk/
lib.rs

1#![warn(missing_docs)]
2//! # rs-adk
3//!
4//! Full Rust equivalent of Google's `@google/adk` framework.
5//! Agents, tools, sessions, events, middleware, and runtime.
6
7pub mod a2a;
8pub mod agent;
9pub mod agent_config;
10pub mod agent_session;
11pub mod agent_tool;
12pub mod agents;
13pub mod artifacts;
14pub mod auth;
15pub mod callback;
16pub mod code_executors;
17pub mod confirmation;
18pub mod context;
19pub mod credentials;
20pub mod error;
21pub mod evaluation;
22pub mod events;
23pub mod instruction;
24pub mod live;
25pub mod llm;
26pub mod llm_agent;
27pub mod memory;
28pub mod middleware;
29pub mod optimization;
30pub mod planners;
31pub mod plugin;
32pub mod processors;
33pub mod router;
34pub mod run_config;
35pub mod runner;
36pub mod session;
37pub mod state;
38pub mod telemetry;
39pub mod text;
40pub mod text_agent_tool;
41pub mod text_runner;
42pub mod tool;
43pub mod tools;
44pub mod toolset;
45pub mod utils;
46
47#[cfg(test)]
48pub(crate) mod test_helpers;
49
50// Ergonomic re-exports — existing
51pub use a2a::{to_a2a_message, to_a2a_parts, to_adk_event, to_genai_parts, A2aMessage, A2aPart};
52pub use agent::Agent;
53pub use agent_tool::AgentTool;
54pub use agents::{LoopAgent, ParallelAgent, SequentialAgent};
55#[cfg(feature = "gcs-artifacts")]
56pub use artifacts::GcsArtifactService;
57pub use artifacts::{Artifact, ArtifactService, FileArtifactService, InMemoryArtifactService};
58pub use auth::{
59    AuthConfig, AuthHandler, AuthScheme, CredentialExchanger, CredentialExchangerRegistry,
60    OAuthGrantType,
61};
62pub use callback::{AfterToolCallback, BeforeToolCallback, BeforeToolResult, ToolCallResult};
63pub use code_executors::{
64    BuiltInCodeExecutor, CodeExecutionInput, CodeExecutionResult, CodeExecutor, CodeFile,
65};
66pub use confirmation::ToolConfirmation;
67pub use context::{AgentEvent, CallbackContext, InvocationContext, ToolContext};
68pub use credentials::{
69    AuthCredential, CredentialError, CredentialService, InMemoryCredentialService,
70};
71pub use error::{AgentError, ToolError};
72pub use events::{Event, EventActions, EventType, StructuredEvent};
73pub use instruction::inject_session_state;
74pub use live::{
75    CallbackMode, EventCallbacks, LiveHandle, LiveSessionBuilder, LlmExtractor, ToolCallSummary,
76    TranscriptBuffer, TranscriptTurn, TurnExtractor,
77};
78pub use llm::{BaseLlm, GeminiLlm, GeminiLlmParams, LlmRegistry, LlmRequest, LlmResponse};
79pub use llm_agent::{LlmAgent, LlmAgentBuilder};
80pub use memory::{InMemoryMemoryService, MemoryEntry, MemoryService};
81pub use middleware::{Middleware, MiddlewareChain};
82pub use plugin::{Plugin, PluginManager, PluginResult};
83pub use processors::{
84    ContentFilter, InstructionInserter, RequestProcessor, RequestProcessorChain, ResponseProcessor,
85    ResponseProcessorChain,
86};
87pub use router::AgentRegistry;
88pub use run_config::{RunConfig, StreamingMode};
89pub use runner::Runner;
90#[cfg(feature = "database-sessions")]
91pub use session::DatabaseSessionService;
92pub use session::{db_schema, InMemorySessionService, Session, SessionId, SessionService};
93pub use state::PrefixedState;
94pub use state::State;
95pub use text::{
96    DispatchTextAgent, FallbackTextAgent, FnTextAgent, JoinTextAgent, LlmTextAgent, LoopTextAgent,
97    MapOverTextAgent, ParallelTextAgent, RaceTextAgent, RouteRule, RouteTextAgent,
98    SequentialTextAgent, TapTextAgent, TaskRegistry, TextAgent, TimeoutTextAgent,
99};
100pub use text_agent_tool::TextAgentTool;
101pub use text_runner::InMemoryRunner;
102pub use tool::{SimpleTool, ToolDispatcher, ToolFunction, TypedTool};
103pub use tools::long_running::LongRunningFunctionTool;
104pub use tools::mcp::{McpConnectionParams, McpTool, McpToolset};
105pub use tools::GoogleSearchTool;
106pub use toolset::{StaticToolset, Toolset};
107pub use utils::model_name::{extract_model_name, is_gemini2_or_above, is_gemini_model};
108pub use utils::variant::{get_google_llm_variant, GoogleLlmVariant};
109
110// New re-exports — A2A
111pub use a2a::{AgentCard, AgentSkill, RemoteA2aAgent, RemoteA2aAgentConfig};
112
113// New re-exports — Evaluation
114pub use evaluation::{
115    EvalCase, EvalMetric, EvalResult, EvalSet, Evaluator, Invocation, LlmAsJudge,
116    PerInvocationResult, ResponseEvaluator, TrajectoryEvaluator,
117};
118
119// New re-exports — Planners
120pub use planners::{BuiltInPlanner, PlanReActPlanner, Planner, PlannerError};
121
122// New re-exports — Optimization
123pub use optimization::{
124    AgentOptimizer, EvalSample, OptimizerError, OptimizerResult, Sampler, SimplePromptOptimizer,
125    SimplePromptOptimizerConfig,
126};
127
128// New re-exports — Code Executors
129pub use code_executors::{
130    ContainerCodeExecutor, ContainerCodeExecutorConfig, UnsafeLocalCodeExecutor,
131    VertexAiCodeExecutor, VertexAiCodeExecutorConfig,
132};
133
134// New re-exports — Plugins
135pub use plugin::{ContextFilterPlugin, GlobalInstructionPlugin, ReflectRetryToolPlugin};
136
137// New re-exports — Memory
138pub use memory::{
139    VertexAiMemoryBankConfig, VertexAiMemoryBankService, VertexAiRagMemoryConfig,
140    VertexAiRagMemoryService,
141};
142
143// New re-exports — Sessions
144#[cfg(feature = "postgres-sessions")]
145pub use session::{PostgresSessionConfig, PostgresSessionService};
146pub use session::{SqliteSessionConfig, SqliteSessionService};
147pub use session::{VertexAiSessionConfig, VertexAiSessionService};
148
149// New re-exports — Tools
150pub use tools::retrieval::{
151    BaseRetrievalTool, FilesRetrievalTool, RetrievalResult, VertexAiRagRetrievalTool,
152};
153pub use tools::{
154    BashToolPolicy, DiscoveryEngineSearchTool, Example, ExampleTool, ExecuteBashTool, ExitLoopTool,
155    GetUserChoiceTool, LoadMemoryTool, PreloadMemoryTool, TransferToAgentTool, UrlContextTool,
156    VertexAiSearchConfig, VertexAiSearchTool,
157};
158
159// New re-exports — Agent Config
160pub use agent_config::{
161    discover_agent_configs, AgentConfig, AgentConfigError, ToolConfig as AgentToolConfig,
162};
163
164// Wire re-export
165pub use rs_genai;