1#![cfg_attr(docsrs, feature(doc_cfg))]
2#![warn(unreachable_pub)]
3#![cfg_attr(not(test), forbid(unsafe_code))]
4#![cfg_attr(test, deny(unsafe_code))]
5#![warn(missing_docs)]
6extern crate self as gemini_adk_rs;
68
69pub mod a2a;
70pub mod agent;
71pub mod agent_config;
72pub mod agent_session;
73pub mod agent_tool;
74pub mod agents;
75pub mod artifacts;
76pub mod auth;
77pub mod code_executors;
78pub mod confirmation;
79pub mod context;
80pub mod credentials;
81pub mod error;
82pub mod evaluation;
83pub mod events;
84pub mod expr;
85pub mod extract;
86pub mod flow;
87pub mod frame;
88pub mod instruction;
89pub mod live;
90pub mod llm;
91pub mod llm_agent;
92pub mod memory;
93pub mod middleware;
94pub mod optimization;
95pub mod orchestration;
96pub mod planners;
97pub mod plugin;
98pub mod primitives;
99pub mod processors;
100pub mod router;
101pub mod run_config;
102pub mod runner;
103pub mod session;
104pub mod skills;
105pub mod state;
106pub mod telemetry;
107pub mod text;
108pub mod text_agent_tool;
109pub mod text_runner;
110pub mod tool;
111pub mod tools;
112pub mod toolset;
113pub mod utils;
114pub mod workflow;
115
116#[cfg(test)]
117pub(crate) mod test_helpers;
118
119pub type BoxFuture<T> = std::pin::Pin<Box<dyn std::future::Future<Output = T> + Send + 'static>>;
126
127pub type StatePredicate = std::sync::Arc<dyn Fn(&State) -> bool + Send + Sync>;
130
131pub type AsyncSourceFn<In = State> = std::sync::Arc<
139 dyn Fn(
140 In,
141 ) -> std::pin::Pin<
142 Box<dyn std::future::Future<Output = Result<serde_json::Value, String>> + Send>,
143 > + Send
144 + Sync,
145>;
146
147pub use a2a::{A2aMessage, A2aPart, to_a2a_message, to_a2a_parts, to_adk_event, to_genai_parts};
149pub use agent::Agent;
150pub use agent_tool::AgentTool;
151pub use agents::{LoopAgent, ParallelAgent, SequentialAgent};
152#[cfg(feature = "gcs-artifacts")]
153pub use artifacts::GcsArtifactService;
154pub use artifacts::{Artifact, ArtifactService, FileArtifactService, InMemoryArtifactService};
155pub use auth::{
156 AuthConfig, AuthHandler, AuthScheme, CredentialExchanger, CredentialExchangerRegistry,
157 OAuthGrantType,
158};
159pub use code_executors::{
160 BuiltInCodeExecutor, CodeExecutionInput, CodeExecutionResult, CodeExecutor, CodeFile,
161};
162pub use confirmation::{
163 ConfirmationProvider, ConfirmationRequest, StaticConfirmation, ToolConfirmation,
164};
165pub use context::{AgentEvent, CallbackContext, InvocationContext, ToolContext};
166pub use credentials::{
167 AuthCredential, CredentialError, CredentialService, InMemoryCredentialService,
168};
169pub use error::{AgentError, AgentResult, ConfigError, ToolError};
170pub use events::{Event, EventActions, EventType, StructuredEvent};
171pub use extract::{Extract, Recognizer, RecordExtractor};
172pub use flow::{
173 CompiledFlow, Enforcement, Flow, FlowError, FlowErrors, FlowExplanation, FlowMonitor, Guard,
174 SharedFlowMonitor, StepAction, ToolSurface, Verdict, Violation, on_enter,
175};
176pub use frame::{ConfirmPolicy, Frame, FrameSpec, SlotRecognizer, SlotSpec, SlotValidator};
177#[doc(hidden)]
182pub mod __macros {
183 pub use async_trait;
184 pub use schemars;
185 pub use serde;
186 pub use serde_json;
187}
188
189pub use gemini_adk_macros_rs::Extract;
196pub use gemini_adk_macros_rs::Frame;
200pub use gemini_adk_macros_rs::tool;
204pub use instruction::inject_session_state;
205pub use live::{
206 EventCallbacks, ExecutionMode, LiveHandle, LiveSessionBuilder, LlmExtractor, PersistenceError,
207 SessionHook, ToolCallSummary, TranscriptBuffer, TranscriptTurn, TurnExtractor,
208};
209pub use llm::{BaseLlm, GeminiLlm, GeminiLlmParams, LlmRegistry, LlmRequest, LlmResponse};
210pub use llm_agent::{LlmAgent, LlmAgentBuilder};
211pub use memory::{InMemoryMemoryService, MemoryEntry, MemoryService};
212pub use middleware::{Middleware, MiddlewareChain};
213pub use orchestration::{AgentMode, Resolver, call_agent, provenance};
214pub use plugin::{Plugin, PluginManager, PluginResult};
215pub use processors::{
216 ContentFilter, InstructionInserter, RequestProcessor, RequestProcessorChain, ResponseProcessor,
217 ResponseProcessorChain,
218};
219pub use router::AgentRegistry;
220pub use run_config::{RunConfig, StreamingMode};
221pub use runner::Runner;
222#[cfg(feature = "database-sessions")]
223pub use session::DatabaseSessionService;
224pub use session::{InMemorySessionService, Session, SessionId, SessionService, db_schema};
225pub use state::{FileJournalSink, JournalSink, MemoryJournalSink};
226pub use state::{PrefixedState, ReadOnlyPrefixedState, StateError};
227pub use state::{SlotEvidence, State, StateMutation, StateMutationOrigin};
228pub use text::{
229 DispatchTextAgent, FallbackTextAgent, FnTextAgent, JoinTextAgent, LlmTextAgent, LoopTextAgent,
230 MapOverTextAgent, ParallelTextAgent, RaceTextAgent, RouteRule, RouteTextAgent,
231 SequentialTextAgent, TapTextAgent, TaskRegistry, TextAgent, TimeoutTextAgent,
232};
233pub use text_agent_tool::TextAgentTool;
234pub use text_runner::{RunEvent, TextRunner};
235pub use tool::{SimpleTool, ToolDispatcher, ToolFunction, ToolPolicy, TypedTool};
236pub use tools::GoogleSearchTool;
237pub use tools::long_running::LongRunningFunctionTool;
238pub use tools::mcp::{McpConnectionParams, McpTool, McpToolset};
239pub use toolset::{StaticToolset, Toolset};
240pub use utils::model_name::{extract_model_name, is_gemini_model, is_gemini2_or_above};
241pub use utils::variant::{GoogleLlmVariant, get_google_llm_variant};
242
243pub use a2a::{AgentCard, AgentSkill, RemoteA2aAgent, RemoteA2aAgentConfig};
245
246pub use evaluation::{
248 EvalCase, EvalMetric, EvalResult, EvalSet, Evaluator, Invocation, LlmAsJudge,
249 PerInvocationResult, ResponseEvaluator, TrajectoryEvaluator,
250};
251
252pub use planners::{BuiltInPlanner, PlanReActPlanner, Planner, PlannerError};
254
255pub use optimization::{
257 AgentOptimizer, EvalSample, OptimizerError, OptimizerResult, Sampler, SimplePromptOptimizer,
258 SimplePromptOptimizerConfig,
259};
260
261pub use code_executors::{
263 ContainerCodeExecutor, ContainerCodeExecutorConfig, UnsafeLocalCodeExecutor,
264};
265#[cfg(feature = "vertex-ai-code-executor")]
266pub use code_executors::{VertexAiCodeExecutor, VertexAiCodeExecutorConfig};
267
268pub use plugin::{ContextFilterPlugin, GlobalInstructionPlugin, ReflectRetryToolPlugin};
270
271pub use memory::{VertexAiMemoryBankConfig, VertexAiMemoryBankService};
273#[cfg(feature = "vertex-ai-rag")]
274pub use memory::{VertexAiRagMemoryConfig, VertexAiRagMemoryService};
275
276#[cfg(feature = "postgres-sessions")]
278pub use session::{PostgresSessionConfig, PostgresSessionService};
279pub use session::{SqliteSessionConfig, SqliteSessionService};
280#[cfg(feature = "vertex-ai-sessions")]
281pub use session::{VertexAiSessionConfig, VertexAiSessionService};
282
283pub use tools::retrieval::{BaseRetrievalTool, FilesRetrievalTool, RetrievalResult};
285#[cfg(feature = "vertex-ai-rag")]
286pub use tools::retrieval::{VertexAiRagConfig, VertexAiRagRetrievalTool};
287pub use tools::{
288 BashToolPolicy, DiscoveryEngineSearchTool, Example, ExampleTool, ExecuteBashTool, ExitLoopTool,
289 GetUserChoiceTool, LoadMemoryTool, PreloadMemoryTool, TransferToAgentTool, UrlContextTool,
290 VertexAiSearchConfig, VertexAiSearchTool,
291};
292
293pub use agent_config::{
295 AgentConfig, AgentConfigError, ToolConfig as AgentToolConfig, discover_agent_configs,
296};
297
298pub use gemini_genai_rs;