Crate adk_core

Crate adk_core 

Source
Expand description

§adk-core

Core traits and types for ADK agents, tools, sessions, and events.

§Overview

This crate provides the foundational abstractions for the Agent Development Kit:

  • Agent - The fundamental trait for all agents
  • Tool / Toolset - For extending agents with custom capabilities
  • Session / State - For managing conversation context
  • Event - For streaming agent responses
  • AdkError / Result - Unified error handling

§Quick Start

use adk_core::{Agent, Tool, Event, Result};
use std::sync::Arc;

// All agents implement the Agent trait
// All tools implement the Tool trait
// Events are streamed as the agent executes

§Core Traits

§Agent

The Agent trait defines the interface for all agents:

#[async_trait]
pub trait Agent: Send + Sync {
    fn name(&self) -> &str;
    fn description(&self) -> Option<&str>;
    async fn run(&self, ctx: Arc<dyn InvocationContext>) -> Result<EventStream>;
}

§Tool

The Tool trait defines custom capabilities:

#[async_trait]
pub trait Tool: Send + Sync {
    fn name(&self) -> &str;
    fn description(&self) -> &str;
    async fn execute(&self, ctx: Arc<dyn ToolContext>, args: Value) -> Result<Value>;
}

§State Management

State uses typed prefixes for organization:

  • user: - User preferences (persists across sessions)
  • app: - Application state (application-wide)
  • temp: - Temporary data (cleared each turn)

Re-exports§

pub use agent::Agent;
pub use agent::EventStream;
pub use agent_loader::AgentLoader;
pub use agent_loader::MultiAgentLoader;
pub use agent_loader::SingleAgentLoader;
pub use callbacks::AfterAgentCallback;
pub use callbacks::AfterModelCallback;
pub use callbacks::AfterToolCallback;
pub use callbacks::BeforeAgentCallback;
pub use callbacks::BeforeModelCallback;
pub use callbacks::BeforeModelResult;
pub use callbacks::BeforeToolCallback;
pub use callbacks::GlobalInstructionProvider;
pub use callbacks::InstructionProvider;
pub use context::Artifacts;
pub use context::CallbackContext;
pub use context::IncludeContents;
pub use context::InvocationContext;
pub use context::Memory;
pub use context::MemoryEntry;
pub use context::ReadonlyContext;
pub use context::ReadonlyState;
pub use context::RunConfig;
pub use context::Session;
pub use context::State;
pub use context::StreamingMode;
pub use error::AdkError;
pub use error::Result;
pub use event::Event;
pub use event::EventActions;
pub use event::KEY_PREFIX_APP;
pub use event::KEY_PREFIX_TEMP;
pub use event::KEY_PREFIX_USER;
pub use instruction_template::inject_session_state;
pub use model::FinishReason;
pub use model::GenerateContentConfig;
pub use model::Llm;
pub use model::LlmRequest;
pub use model::LlmResponse;
pub use model::LlmResponseStream;
pub use model::UsageMetadata;
pub use tool::Tool;
pub use tool::ToolContext;
pub use tool::ToolPredicate;
pub use tool::Toolset;
pub use types::Content;
pub use types::Part;

Modules§

agent
agent_loader
callbacks
context
error
event
instruction_template
model
tool
types