pub struct ScopedArtifacts { /* private fields */ }Available on crate feature
artifacts only.Expand description
Scoped wrapper around ArtifactService that binds session context.
This wrapper implements the simple adk_core::Artifacts trait by automatically
injecting app_name, user_id, and session_id into service requests. This mirrors
the adk-go architecture where agents use a simple API but service calls include
full session scoping.
§Example
use adk_artifact::{ScopedArtifacts, InMemoryArtifactService};
use adk_core::{Artifacts, Part};
use std::sync::Arc;
let service = Arc::new(InMemoryArtifactService::new());
let artifacts = ScopedArtifacts::new(
service,
"my_app".to_string(),
"user_123".to_string(),
"session_456".to_string(),
);
// Simple API - scoping is automatic
let part = Part::Text { text: "data".to_string() };
let version = artifacts.save("report.pdf", &part).await?;
let loaded = artifacts.load("report.pdf").await?;
let files = artifacts.list().await?;Implementations§
Source§impl ScopedArtifacts
impl ScopedArtifacts
Sourcepub fn new(
service: Arc<dyn ArtifactService>,
app_name: String,
user_id: String,
session_id: String,
) -> ScopedArtifacts
pub fn new( service: Arc<dyn ArtifactService>, app_name: String, user_id: String, session_id: String, ) -> ScopedArtifacts
Creates a new scoped artifacts instance.
§Arguments
service- The underlying artifact serviceapp_name- Application name for scopinguser_id- User ID for scopingsession_id- Session ID for scoping
Trait Implementations§
Source§impl Artifacts for ScopedArtifacts
impl Artifacts for ScopedArtifacts
fn save<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
name: &'life1 str,
data: &'life2 Part,
) -> Pin<Box<dyn Future<Output = Result<i64, AdkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
ScopedArtifacts: 'async_trait,
fn load<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Part, AdkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ScopedArtifacts: 'async_trait,
fn list<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>, AdkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
ScopedArtifacts: 'async_trait,
Auto Trait Implementations§
impl Freeze for ScopedArtifacts
impl !RefUnwindSafe for ScopedArtifacts
impl Send for ScopedArtifacts
impl Sync for ScopedArtifacts
impl Unpin for ScopedArtifacts
impl !UnwindSafe for ScopedArtifacts
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request