agent_runtime_core/
provider.rs1use crate::schema::{
7 AuthStateRequest, AuthStateResponse, CapabilitiesRequest, CapabilitiesResponse, ExecuteRequest,
8 ExecuteResponse, HealthcheckRequest, HealthcheckResponse, LimitsRequest, LimitsResponse,
9 ProviderEnvelope, ProviderMetadata, ProviderOperation, ProviderResult,
10};
11
12pub trait ProviderAdapterV1: Send + Sync {
17 fn metadata(&self) -> ProviderMetadata;
19
20 fn capabilities(&self, request: CapabilitiesRequest) -> ProviderResult<CapabilitiesResponse>;
22
23 fn healthcheck(&self, request: HealthcheckRequest) -> ProviderResult<HealthcheckResponse>;
25
26 fn execute(&self, request: ExecuteRequest) -> ProviderResult<ExecuteResponse>;
28
29 fn limits(&self, request: LimitsRequest) -> ProviderResult<LimitsResponse>;
31
32 fn auth_state(&self, request: AuthStateRequest) -> ProviderResult<AuthStateResponse>;
34
35 fn capabilities_envelope(
37 &self,
38 request: CapabilitiesRequest,
39 ) -> ProviderEnvelope<CapabilitiesResponse> {
40 ProviderEnvelope::from_result(
41 self.metadata().provider_ref(),
42 ProviderOperation::Capabilities,
43 self.capabilities(request),
44 )
45 }
46
47 fn healthcheck_envelope(
49 &self,
50 request: HealthcheckRequest,
51 ) -> ProviderEnvelope<HealthcheckResponse> {
52 ProviderEnvelope::from_result(
53 self.metadata().provider_ref(),
54 ProviderOperation::Healthcheck,
55 self.healthcheck(request),
56 )
57 }
58
59 fn execute_envelope(&self, request: ExecuteRequest) -> ProviderEnvelope<ExecuteResponse> {
61 ProviderEnvelope::from_result(
62 self.metadata().provider_ref(),
63 ProviderOperation::Execute,
64 self.execute(request),
65 )
66 }
67
68 fn limits_envelope(&self, request: LimitsRequest) -> ProviderEnvelope<LimitsResponse> {
70 ProviderEnvelope::from_result(
71 self.metadata().provider_ref(),
72 ProviderOperation::Limits,
73 self.limits(request),
74 )
75 }
76
77 fn auth_state_envelope(
79 &self,
80 request: AuthStateRequest,
81 ) -> ProviderEnvelope<AuthStateResponse> {
82 ProviderEnvelope::from_result(
83 self.metadata().provider_ref(),
84 ProviderOperation::AuthState,
85 self.auth_state(request),
86 )
87 }
88}
89
90pub trait ProviderAdapter: ProviderAdapterV1 {}
92
93impl<T: ProviderAdapterV1 + ?Sized> ProviderAdapter for T {}