adk_session/lib.rs
1//! # adk-session
2//!
3//! Session management and state persistence for ADK agents.
4//!
5//! ## Overview
6//!
7//! This crate provides session and state management:
8//!
9//! - [`InMemorySessionService`] - Simple in-memory session storage
10//! - [`Session`] - Conversation session with state and events
11//! - [`State`] - Key-value state with typed prefixes
12//! - [`SessionService`] - Trait for custom session backends
13//!
14//! ## Quick Start
15//!
16//! ```rust,no_run
17//! use adk_session::InMemorySessionService;
18//!
19//! let service = InMemorySessionService::new();
20//!
21//! // Sessions are created and managed by the Runner
22//! // State is accessed via the session
23//! ```
24//!
25//! ## State Prefixes
26//!
27//! ADK uses prefixes to organize state:
28//!
29//! | Prefix | Constant | Purpose |
30//! |--------|----------|---------|
31//! | `user:` | [`KEY_PREFIX_USER`] | User preferences |
32//! | `app:` | [`KEY_PREFIX_APP`] | Application state |
33//! | `temp:` | [`KEY_PREFIX_TEMP`] | Temporary data |
34
35pub mod event;
36pub mod inmemory;
37pub mod service;
38pub mod session;
39pub mod state;
40
41#[cfg(feature = "database")]
42pub mod database;
43
44pub use event::{Event, EventActions, Events};
45pub use inmemory::InMemorySessionService;
46pub use service::{CreateRequest, DeleteRequest, GetRequest, ListRequest, SessionService};
47pub use session::{Session, KEY_PREFIX_APP, KEY_PREFIX_TEMP, KEY_PREFIX_USER};
48pub use state::{ReadonlyState, State};
49
50#[cfg(feature = "database")]
51pub use database::DatabaseSessionService;