aws_sdk_bedrockagentcore/operation/
invoke_agent_runtime.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `InvokeAgentRuntime`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct InvokeAgentRuntime;
6impl InvokeAgentRuntime {
7    /// Creates a new `InvokeAgentRuntime`
8    pub fn new() -> Self {
9        Self
10    }
11    pub(crate) async fn orchestrate(
12        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
13        input: crate::operation::invoke_agent_runtime::InvokeAgentRuntimeInput,
14    ) -> ::std::result::Result<
15        crate::operation::invoke_agent_runtime::InvokeAgentRuntimeOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::invoke_agent_runtime::InvokeAgentRuntimeError,
18            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
19        >,
20    > {
21        let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<
22            ::aws_smithy_runtime_api::client::interceptors::context::Error,
23            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
24        >| {
25            err.map_service_error(|err| {
26                err.downcast::<crate::operation::invoke_agent_runtime::InvokeAgentRuntimeError>()
27                    .expect("correct error type")
28            })
29        };
30        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
31            .await
32            .map_err(map_err)?;
33        let output = context.finalize().map_err(map_err)?;
34        ::std::result::Result::Ok(
35            output
36                .downcast::<crate::operation::invoke_agent_runtime::InvokeAgentRuntimeOutput>()
37                .expect("correct output type"),
38        )
39    }
40
41    pub(crate) async fn orchestrate_with_stop_point(
42        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
43        input: crate::operation::invoke_agent_runtime::InvokeAgentRuntimeInput,
44        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
45    ) -> ::std::result::Result<
46        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
47        ::aws_smithy_runtime_api::client::result::SdkError<
48            ::aws_smithy_runtime_api::client::interceptors::context::Error,
49            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
50        >,
51    > {
52        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
53        use ::tracing::Instrument;
54        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
55            "Bedrock AgentCore",
56            "InvokeAgentRuntime",
57            input,
58            runtime_plugins,
59            stop_point,
60        )
61        // Create a parent span for the entire operation. Includes a random, internal-only,
62        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
63        .instrument(::tracing::debug_span!(
64            "Bedrock AgentCore.InvokeAgentRuntime",
65            "rpc.service" = "Bedrock AgentCore",
66            "rpc.method" = "InvokeAgentRuntime",
67            "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
68            "rpc.system" = "aws-api",
69        ))
70        .await
71    }
72
73    pub(crate) fn operation_runtime_plugins(
74        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
75        client_config: &crate::config::Config,
76        config_override: ::std::option::Option<crate::config::Builder>,
77    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
78        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
79        runtime_plugins = runtime_plugins.with_operation_plugin(crate::client_idempotency_token::IdempotencyTokenRuntimePlugin::new(
80            |token_provider, input| {
81                let input: &mut crate::operation::invoke_agent_runtime::InvokeAgentRuntimeInput = input.downcast_mut().expect("correct type");
82                if input.runtime_session_id.is_none() {
83                    input.runtime_session_id = ::std::option::Option::Some(token_provider.make_idempotency_token());
84                }
85            },
86        ));
87        if let ::std::option::Option::Some(config_override) = config_override {
88            for plugin in config_override.runtime_plugins.iter().cloned() {
89                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
90            }
91            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
92                config_override,
93                client_config.config.clone(),
94                &client_config.runtime_components,
95            ));
96        }
97        runtime_plugins
98    }
99}
100impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for InvokeAgentRuntime {
101    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
102        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("InvokeAgentRuntime");
103
104        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
105            InvokeAgentRuntimeRequestSerializer,
106        ));
107        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
108            InvokeAgentRuntimeResponseDeserializer,
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
112            crate::config::auth::Params::builder()
113                .operation_name("InvokeAgentRuntime")
114                .build()
115                .expect("required fields set"),
116        ));
117
118        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::SensitiveOutput);
119        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
120            "InvokeAgentRuntime",
121            "Bedrock AgentCore",
122        ));
123        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
124        signing_options.double_uri_encode = true;
125        signing_options.content_sha256_header = false;
126        signing_options.normalize_uri_path = true;
127        signing_options.payload_override = None;
128
129        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
130            signing_options,
131            ..::std::default::Default::default()
132        });
133
134        ::std::option::Option::Some(cfg.freeze())
135    }
136
137    fn runtime_components(
138        &self,
139        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
140    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
141        #[allow(unused_mut)]
142        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("InvokeAgentRuntime")
143            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
144            .with_interceptor(InvokeAgentRuntimeEndpointParamsInterceptor)
145            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
146                crate::operation::invoke_agent_runtime::InvokeAgentRuntimeError,
147            >::new())
148            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
149                crate::operation::invoke_agent_runtime::InvokeAgentRuntimeError,
150            >::new())
151            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
152                crate::operation::invoke_agent_runtime::InvokeAgentRuntimeError,
153            >::new());
154
155        ::std::borrow::Cow::Owned(rcb)
156    }
157}
158
159#[derive(Debug)]
160struct InvokeAgentRuntimeResponseDeserializer;
161impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for InvokeAgentRuntimeResponseDeserializer {
162    fn deserialize_streaming(
163        &self,
164        response: &mut ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
165    ) -> ::std::option::Option<::aws_smithy_runtime_api::client::interceptors::context::OutputOrError> {
166        #[allow(unused_mut)]
167        let mut force_error = false;
168        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
169
170        // If this is an error, defer to the non-streaming parser
171        if (!response.status().is_success() && response.status().as_u16() != 200) || force_error {
172            return ::std::option::Option::None;
173        }
174        ::std::option::Option::Some(crate::protocol_serde::type_erase_result(
175            crate::protocol_serde::shape_invoke_agent_runtime::de_invoke_agent_runtime_http_response(response),
176        ))
177    }
178
179    fn deserialize_nonstreaming(
180        &self,
181        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
182    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
183        // For streaming operations, we only hit this case if its an error
184        let body = response.body().bytes().expect("body loaded");
185        crate::protocol_serde::type_erase_result(crate::protocol_serde::shape_invoke_agent_runtime::de_invoke_agent_runtime_http_error(
186            response.status().as_u16(),
187            response.headers(),
188            body,
189        ))
190    }
191}
192#[derive(Debug)]
193struct InvokeAgentRuntimeRequestSerializer;
194impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for InvokeAgentRuntimeRequestSerializer {
195    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
196    fn serialize_input(
197        &self,
198        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
199        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
200    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
201        let input = input
202            .downcast::<crate::operation::invoke_agent_runtime::InvokeAgentRuntimeInput>()
203            .expect("correct type");
204        let _header_serialization_settings = _cfg
205            .load::<crate::serialization_settings::HeaderSerializationSettings>()
206            .cloned()
207            .unwrap_or_default();
208        let mut request_builder = {
209            #[allow(clippy::uninlined_format_args)]
210            fn uri_base(
211                _input: &crate::operation::invoke_agent_runtime::InvokeAgentRuntimeInput,
212                output: &mut ::std::string::String,
213            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
214                use ::std::fmt::Write as _;
215                let input_1 = &_input.agent_runtime_arn;
216                let input_1 = input_1.as_ref().ok_or_else(|| {
217                    ::aws_smithy_types::error::operation::BuildError::missing_field("agent_runtime_arn", "cannot be empty or unset")
218                })?;
219                let agent_runtime_arn = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
220                if agent_runtime_arn.is_empty() {
221                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
222                        "agent_runtime_arn",
223                        "cannot be empty or unset",
224                    ));
225                }
226                ::std::write!(output, "/runtimes/{agentRuntimeArn}/invocations", agentRuntimeArn = agent_runtime_arn)
227                    .expect("formatting should succeed");
228                ::std::result::Result::Ok(())
229            }
230            fn uri_query(
231                _input: &crate::operation::invoke_agent_runtime::InvokeAgentRuntimeInput,
232                mut output: &mut ::std::string::String,
233            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
234                let mut query = ::aws_smithy_http::query::Writer::new(output);
235                if let ::std::option::Option::Some(inner_2) = &_input.qualifier {
236                    {
237                        query.push_kv("qualifier", &::aws_smithy_http::query::fmt_string(inner_2));
238                    }
239                }
240                if let ::std::option::Option::Some(inner_3) = &_input.account_id {
241                    {
242                        query.push_kv("accountId", &::aws_smithy_http::query::fmt_string(inner_3));
243                    }
244                }
245                ::std::result::Result::Ok(())
246            }
247            #[allow(clippy::unnecessary_wraps)]
248            fn update_http_builder(
249                input: &crate::operation::invoke_agent_runtime::InvokeAgentRuntimeInput,
250                builder: ::http::request::Builder,
251            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
252                let mut uri = ::std::string::String::new();
253                uri_base(input, &mut uri)?;
254                uri_query(input, &mut uri)?;
255                let builder = crate::protocol_serde::shape_invoke_agent_runtime::ser_invoke_agent_runtime_headers(input, builder)?;
256                ::std::result::Result::Ok(builder.method("POST").uri(uri))
257            }
258            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
259            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/octet-stream");
260            builder
261        };
262        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_invoke_agent_runtime_input::ser_payload_http_payload(
263            input.payload,
264        )?);
265        if let Some(content_length) = body.content_length() {
266            let content_length = content_length.to_string();
267            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
268        }
269        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
270    }
271}
272#[derive(Debug)]
273struct InvokeAgentRuntimeEndpointParamsInterceptor;
274
275impl ::aws_smithy_runtime_api::client::interceptors::Intercept for InvokeAgentRuntimeEndpointParamsInterceptor {
276    fn name(&self) -> &'static str {
277        "InvokeAgentRuntimeEndpointParamsInterceptor"
278    }
279
280    fn read_before_execution(
281        &self,
282        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
283            '_,
284            ::aws_smithy_runtime_api::client::interceptors::context::Input,
285            ::aws_smithy_runtime_api::client::interceptors::context::Output,
286            ::aws_smithy_runtime_api::client::interceptors::context::Error,
287        >,
288        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
289    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
290        let _input = context
291            .input()
292            .downcast_ref::<InvokeAgentRuntimeInput>()
293            .ok_or("failed to downcast to InvokeAgentRuntimeInput")?;
294
295        let params = crate::config::endpoint::Params::builder()
296            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
297            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
298            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
299            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
300            .build()
301            .map_err(|err| {
302                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
303            })?;
304        cfg.interceptor_state()
305            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
306        ::std::result::Result::Ok(())
307    }
308}
309
310// The get_* functions below are generated from JMESPath expressions in the
311// operationContextParams trait. They target the operation's input shape.
312
313/// Error type for the `InvokeAgentRuntimeError` operation.
314#[non_exhaustive]
315#[derive(::std::fmt::Debug)]
316pub enum InvokeAgentRuntimeError {
317    /// <p>The exception that occurs when you do not have sufficient permissions to perform an action. Verify that your IAM policy includes the necessary permissions for the operation you are trying to perform.</p>
318    AccessDeniedException(crate::types::error::AccessDeniedException),
319    /// <p>The exception that occurs when the service encounters an unexpected internal error. This is a temporary condition that will resolve itself with retries. We recommend implementing exponential backoff retry logic in your application.</p>
320    InternalServerException(crate::types::error::InternalServerException),
321    /// <p>The exception that occurs when the specified resource does not exist. This can happen when using an invalid identifier or when trying to access a resource that has been deleted.</p>
322    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
323    /// <p>The exception that occurs when there is an error in the runtime client. This can happen due to network issues, invalid configuration, or other client-side problems. Check the error message for specific details about the error.</p>
324    RuntimeClientError(crate::types::error::RuntimeClientError),
325    /// <p>The exception that occurs when the request would cause a service quota to be exceeded. Review your service quotas and either reduce your request rate or request a quota increase.</p>
326    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
327    /// <p>The exception that occurs when the request was denied due to request throttling. This happens when you exceed the allowed request rate for an operation. Reduce the frequency of requests or implement exponential backoff retry logic in your application.</p>
328    ThrottlingException(crate::types::error::ThrottlingException),
329    /// <p>The exception that occurs when the input fails to satisfy the constraints specified by the service. Check the error message for details about which input parameter is invalid and correct your request.</p>
330    ValidationException(crate::types::error::ValidationException),
331    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
332    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
333    variable wildcard pattern and check `.code()`:
334     \
335    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
336     \
337    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-InvokeAgentRuntimeError) for what information is available for the error.")]
338    Unhandled(crate::error::sealed_unhandled::Unhandled),
339}
340impl InvokeAgentRuntimeError {
341    /// Creates the `InvokeAgentRuntimeError::Unhandled` variant from any error type.
342    pub fn unhandled(
343        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
344    ) -> Self {
345        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
346            source: err.into(),
347            meta: ::std::default::Default::default(),
348        })
349    }
350
351    /// Creates the `InvokeAgentRuntimeError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
352    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
353        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
354            source: err.clone().into(),
355            meta: err,
356        })
357    }
358    ///
359    /// Returns error metadata, which includes the error code, message,
360    /// request ID, and potentially additional information.
361    ///
362    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
363        match self {
364            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
365            Self::InternalServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
366            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
367            Self::RuntimeClientError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
368            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
369            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
370            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
371            Self::Unhandled(e) => &e.meta,
372        }
373    }
374    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::AccessDeniedException`.
375    pub fn is_access_denied_exception(&self) -> bool {
376        matches!(self, Self::AccessDeniedException(_))
377    }
378    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::InternalServerException`.
379    pub fn is_internal_server_exception(&self) -> bool {
380        matches!(self, Self::InternalServerException(_))
381    }
382    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::ResourceNotFoundException`.
383    pub fn is_resource_not_found_exception(&self) -> bool {
384        matches!(self, Self::ResourceNotFoundException(_))
385    }
386    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::RuntimeClientError`.
387    pub fn is_runtime_client_error(&self) -> bool {
388        matches!(self, Self::RuntimeClientError(_))
389    }
390    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::ServiceQuotaExceededException`.
391    pub fn is_service_quota_exceeded_exception(&self) -> bool {
392        matches!(self, Self::ServiceQuotaExceededException(_))
393    }
394    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::ThrottlingException`.
395    pub fn is_throttling_exception(&self) -> bool {
396        matches!(self, Self::ThrottlingException(_))
397    }
398    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::ValidationException`.
399    pub fn is_validation_exception(&self) -> bool {
400        matches!(self, Self::ValidationException(_))
401    }
402}
403impl ::std::error::Error for InvokeAgentRuntimeError {
404    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
405        match self {
406            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
407            Self::InternalServerException(_inner) => ::std::option::Option::Some(_inner),
408            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
409            Self::RuntimeClientError(_inner) => ::std::option::Option::Some(_inner),
410            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
411            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
412            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
413            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
414        }
415    }
416}
417impl ::std::fmt::Display for InvokeAgentRuntimeError {
418    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
419        match self {
420            Self::AccessDeniedException(_inner) => _inner.fmt(f),
421            Self::InternalServerException(_inner) => _inner.fmt(f),
422            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
423            Self::RuntimeClientError(_inner) => _inner.fmt(f),
424            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
425            Self::ThrottlingException(_inner) => _inner.fmt(f),
426            Self::ValidationException(_inner) => _inner.fmt(f),
427            Self::Unhandled(_inner) => {
428                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
429                    write!(f, "unhandled error ({code})")
430                } else {
431                    f.write_str("unhandled error")
432                }
433            }
434        }
435    }
436}
437impl ::aws_smithy_types::retry::ProvideErrorKind for InvokeAgentRuntimeError {
438    fn code(&self) -> ::std::option::Option<&str> {
439        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
440    }
441    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
442        ::std::option::Option::None
443    }
444}
445impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for InvokeAgentRuntimeError {
446    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
447        match self {
448            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
449            Self::InternalServerException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
450            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
451            Self::RuntimeClientError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
452            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
453            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
454            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
455            Self::Unhandled(_inner) => &_inner.meta,
456        }
457    }
458}
459impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for InvokeAgentRuntimeError {
460    fn create_unhandled_error(
461        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
462        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
463    ) -> Self {
464        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
465            source,
466            meta: meta.unwrap_or_default(),
467        })
468    }
469}
470impl ::aws_types::request_id::RequestId for crate::operation::invoke_agent_runtime::InvokeAgentRuntimeError {
471    fn request_id(&self) -> Option<&str> {
472        self.meta().request_id()
473    }
474}
475
476pub use crate::operation::invoke_agent_runtime::_invoke_agent_runtime_output::InvokeAgentRuntimeOutput;
477
478pub use crate::operation::invoke_agent_runtime::_invoke_agent_runtime_input::InvokeAgentRuntimeInput;
479
480mod _invoke_agent_runtime_input;
481
482mod _invoke_agent_runtime_output;
483
484/// Builders
485pub mod builders;