agents_aws/
lib.rs

1//! AWS integration helpers: wiring for Secrets Manager, DynamoDB, and CloudWatch.
2//! Concrete implementations will live behind feature flags, so the core remains
3//! lightweight when running outside AWS.
4//!
5//! ## Features
6//!
7//! - `dynamodb`: Enable DynamoDB checkpointer for state persistence
8//! - `secrets`: Enable AWS Secrets Manager integration
9//! - `aws-sdk`: Enable all AWS integrations
10//!
11//! ## Examples
12//!
13//! ### DynamoDB Checkpointer
14//!
15//! ```rust,no_run
16//! # #[cfg(feature = "dynamodb")]
17//! # {
18//! use agents_aws::{DynamoDbCheckpointer, Checkpointer};
19//! use agents_core::state::AgentStateSnapshot;
20//!
21//! # async fn example() -> anyhow::Result<()> {
22//! // Create a DynamoDB checkpointer
23//! let checkpointer = DynamoDbCheckpointer::new("agent-checkpoints").await?;
24//!
25//! // Save agent state
26//! let state = AgentStateSnapshot::default();
27//! checkpointer.save_state(&"thread-id".to_string(), &state).await?;
28//!
29//! // Load agent state
30//! let loaded = checkpointer.load_state(&"thread-id".to_string()).await?;
31//! # Ok(())
32//! # }
33//! # }
34//! ```
35
36#[cfg(feature = "dynamodb")]
37pub mod dynamodb_checkpointer;
38
39#[cfg(feature = "dynamodb")]
40pub use dynamodb_checkpointer::{DynamoDbCheckpointer, DynamoDbCheckpointerBuilder};
41
42// Re-export core types for convenience
43pub use agents_core::persistence::{Checkpointer, ThreadId};
44
45/// Placeholder trait for loading configuration secrets.
46pub trait SecretsProvider {
47    fn fetch(&self, key: &str) -> anyhow::Result<String>;
48}
49
50/// Stub Secrets Manager provider; real implementation will sit behind the `secrets` feature.
51pub struct UnimplementedSecretsProvider;
52
53impl SecretsProvider for UnimplementedSecretsProvider {
54    fn fetch(&self, key: &str) -> anyhow::Result<String> {
55        Err(anyhow::anyhow!("Secrets provider not implemented: {key}"))
56    }
57}