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            fn uri_base(
210                _input: &crate::operation::invoke_agent_runtime::InvokeAgentRuntimeInput,
211                output: &mut ::std::string::String,
212            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
213                use ::std::fmt::Write as _;
214                let input_1 = &_input.agent_runtime_arn;
215                let input_1 = input_1.as_ref().ok_or_else(|| {
216                    ::aws_smithy_types::error::operation::BuildError::missing_field("agent_runtime_arn", "cannot be empty or unset")
217                })?;
218                let agent_runtime_arn = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
219                if agent_runtime_arn.is_empty() {
220                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
221                        "agent_runtime_arn",
222                        "cannot be empty or unset",
223                    ));
224                }
225                ::std::write!(output, "/runtimes/{agentRuntimeArn}/invocations", agentRuntimeArn = agent_runtime_arn)
226                    .expect("formatting should succeed");
227                ::std::result::Result::Ok(())
228            }
229            fn uri_query(
230                _input: &crate::operation::invoke_agent_runtime::InvokeAgentRuntimeInput,
231                mut output: &mut ::std::string::String,
232            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
233                let mut query = ::aws_smithy_http::query::Writer::new(output);
234                if let ::std::option::Option::Some(inner_2) = &_input.qualifier {
235                    {
236                        query.push_kv("qualifier", &::aws_smithy_http::query::fmt_string(inner_2));
237                    }
238                }
239                ::std::result::Result::Ok(())
240            }
241            #[allow(clippy::unnecessary_wraps)]
242            fn update_http_builder(
243                input: &crate::operation::invoke_agent_runtime::InvokeAgentRuntimeInput,
244                builder: ::http::request::Builder,
245            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
246                let mut uri = ::std::string::String::new();
247                uri_base(input, &mut uri)?;
248                uri_query(input, &mut uri)?;
249                let builder = crate::protocol_serde::shape_invoke_agent_runtime::ser_invoke_agent_runtime_headers(input, builder)?;
250                ::std::result::Result::Ok(builder.method("POST").uri(uri))
251            }
252            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
253            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/octet-stream");
254            builder
255        };
256        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_invoke_agent_runtime_input::ser_payload_http_payload(
257            input.payload,
258        )?);
259        if let Some(content_length) = body.content_length() {
260            let content_length = content_length.to_string();
261            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
262        }
263        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
264    }
265}
266#[derive(Debug)]
267struct InvokeAgentRuntimeEndpointParamsInterceptor;
268
269impl ::aws_smithy_runtime_api::client::interceptors::Intercept for InvokeAgentRuntimeEndpointParamsInterceptor {
270    fn name(&self) -> &'static str {
271        "InvokeAgentRuntimeEndpointParamsInterceptor"
272    }
273
274    fn read_before_execution(
275        &self,
276        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
277            '_,
278            ::aws_smithy_runtime_api::client::interceptors::context::Input,
279            ::aws_smithy_runtime_api::client::interceptors::context::Output,
280            ::aws_smithy_runtime_api::client::interceptors::context::Error,
281        >,
282        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
283    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
284        let _input = context
285            .input()
286            .downcast_ref::<InvokeAgentRuntimeInput>()
287            .ok_or("failed to downcast to InvokeAgentRuntimeInput")?;
288
289        let params = crate::config::endpoint::Params::builder()
290            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
291            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
292            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
293            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
294            .build()
295            .map_err(|err| {
296                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
297            })?;
298        cfg.interceptor_state()
299            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
300        ::std::result::Result::Ok(())
301    }
302}
303
304// The get_* functions below are generated from JMESPath expressions in the
305// operationContextParams trait. They target the operation's input shape.
306
307/// Error type for the `InvokeAgentRuntimeError` operation.
308#[non_exhaustive]
309#[derive(::std::fmt::Debug)]
310pub enum InvokeAgentRuntimeError {
311    /// <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>
312    AccessDeniedException(crate::types::error::AccessDeniedException),
313    /// <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>
314    InternalServerException(crate::types::error::InternalServerException),
315    /// <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>
316    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
317    /// <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>
318    RuntimeClientError(crate::types::error::RuntimeClientError),
319    /// <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>
320    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
321    /// <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>
322    ThrottlingException(crate::types::error::ThrottlingException),
323    /// <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>
324    ValidationException(crate::types::error::ValidationException),
325    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
326    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
327    variable wildcard pattern and check `.code()`:
328     \
329    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
330     \
331    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-InvokeAgentRuntimeError) for what information is available for the error.")]
332    Unhandled(crate::error::sealed_unhandled::Unhandled),
333}
334impl InvokeAgentRuntimeError {
335    /// Creates the `InvokeAgentRuntimeError::Unhandled` variant from any error type.
336    pub fn unhandled(
337        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
338    ) -> Self {
339        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
340            source: err.into(),
341            meta: ::std::default::Default::default(),
342        })
343    }
344
345    /// Creates the `InvokeAgentRuntimeError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
346    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
347        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
348            source: err.clone().into(),
349            meta: err,
350        })
351    }
352    ///
353    /// Returns error metadata, which includes the error code, message,
354    /// request ID, and potentially additional information.
355    ///
356    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
357        match self {
358            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
359            Self::InternalServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
360            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
361            Self::RuntimeClientError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
362            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
363            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
364            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
365            Self::Unhandled(e) => &e.meta,
366        }
367    }
368    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::AccessDeniedException`.
369    pub fn is_access_denied_exception(&self) -> bool {
370        matches!(self, Self::AccessDeniedException(_))
371    }
372    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::InternalServerException`.
373    pub fn is_internal_server_exception(&self) -> bool {
374        matches!(self, Self::InternalServerException(_))
375    }
376    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::ResourceNotFoundException`.
377    pub fn is_resource_not_found_exception(&self) -> bool {
378        matches!(self, Self::ResourceNotFoundException(_))
379    }
380    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::RuntimeClientError`.
381    pub fn is_runtime_client_error(&self) -> bool {
382        matches!(self, Self::RuntimeClientError(_))
383    }
384    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::ServiceQuotaExceededException`.
385    pub fn is_service_quota_exceeded_exception(&self) -> bool {
386        matches!(self, Self::ServiceQuotaExceededException(_))
387    }
388    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::ThrottlingException`.
389    pub fn is_throttling_exception(&self) -> bool {
390        matches!(self, Self::ThrottlingException(_))
391    }
392    /// Returns `true` if the error kind is `InvokeAgentRuntimeError::ValidationException`.
393    pub fn is_validation_exception(&self) -> bool {
394        matches!(self, Self::ValidationException(_))
395    }
396}
397impl ::std::error::Error for InvokeAgentRuntimeError {
398    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
399        match self {
400            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
401            Self::InternalServerException(_inner) => ::std::option::Option::Some(_inner),
402            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
403            Self::RuntimeClientError(_inner) => ::std::option::Option::Some(_inner),
404            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
405            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
406            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
407            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
408        }
409    }
410}
411impl ::std::fmt::Display for InvokeAgentRuntimeError {
412    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
413        match self {
414            Self::AccessDeniedException(_inner) => _inner.fmt(f),
415            Self::InternalServerException(_inner) => _inner.fmt(f),
416            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
417            Self::RuntimeClientError(_inner) => _inner.fmt(f),
418            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
419            Self::ThrottlingException(_inner) => _inner.fmt(f),
420            Self::ValidationException(_inner) => _inner.fmt(f),
421            Self::Unhandled(_inner) => {
422                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
423                    write!(f, "unhandled error ({code})")
424                } else {
425                    f.write_str("unhandled error")
426                }
427            }
428        }
429    }
430}
431impl ::aws_smithy_types::retry::ProvideErrorKind for InvokeAgentRuntimeError {
432    fn code(&self) -> ::std::option::Option<&str> {
433        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
434    }
435    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
436        ::std::option::Option::None
437    }
438}
439impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for InvokeAgentRuntimeError {
440    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
441        match self {
442            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
443            Self::InternalServerException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
444            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
445            Self::RuntimeClientError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
446            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
447            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
448            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
449            Self::Unhandled(_inner) => &_inner.meta,
450        }
451    }
452}
453impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for InvokeAgentRuntimeError {
454    fn create_unhandled_error(
455        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
456        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
457    ) -> Self {
458        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
459            source,
460            meta: meta.unwrap_or_default(),
461        })
462    }
463}
464impl ::aws_types::request_id::RequestId for crate::operation::invoke_agent_runtime::InvokeAgentRuntimeError {
465    fn request_id(&self) -> Option<&str> {
466        self.meta().request_id()
467    }
468}
469
470pub use crate::operation::invoke_agent_runtime::_invoke_agent_runtime_output::InvokeAgentRuntimeOutput;
471
472pub use crate::operation::invoke_agent_runtime::_invoke_agent_runtime_input::InvokeAgentRuntimeInput;
473
474mod _invoke_agent_runtime_input;
475
476mod _invoke_agent_runtime_output;
477
478/// Builders
479pub mod builders;