agent_sdk_toolkit/resources/
resolver.rs1use std::sync::Arc;
7
8use agent_sdk_core::{
9 AgentError, PolicyRef, ResourceReadRequest, ResourceResolution, ResourceResolver,
10 ResourceScheme, RetentionClass, domain::ContentRef,
11};
12
13#[derive(Clone)]
14pub struct InMemoryResourceResolver {
17 scheme: ResourceScheme,
18 content_ref: ContentRef,
19 source: agent_sdk_core::SourceRef,
20 policy_ref: PolicyRef,
21}
22
23impl InMemoryResourceResolver {
24 pub fn new(
28 scheme: &str,
29 content_ref: ContentRef,
30 source: agent_sdk_core::SourceRef,
31 policy_ref: PolicyRef,
32 ) -> Arc<Self> {
33 Arc::new(Self {
34 scheme: ResourceScheme::new(scheme),
35 content_ref,
36 source,
37 policy_ref,
38 })
39 }
40}
41
42impl ResourceResolver for InMemoryResourceResolver {
43 fn scheme(&self) -> &ResourceScheme {
44 &self.scheme
45 }
46
47 fn resolve(&self, request: &ResourceReadRequest) -> Result<ResourceResolution, AgentError> {
48 Ok(ResourceResolution {
49 uri: request.uri.clone(),
50 scheme: self.scheme.clone(),
51 content_ref: self.content_ref.clone(),
52 source: self.source.clone(),
53 policy_refs: vec![self.policy_ref.clone()],
54 byte_len: 0,
55 truncated: false,
56 parser_version: "toolkit.in_memory_resource.v1".to_string(),
57 privacy: agent_sdk_core::PrivacyClass::ContentRefsOnly,
58 retention: RetentionClass::RunScoped,
59 redacted_summary: "in-memory resource resolved to content ref".to_string(),
60 })
61 }
62}