From 1cdcc272cee318ce7bbff2acef8205d59fd5a525 Mon Sep 17 00:00:00 2001 From: Mike Nguyen Date: Mon, 10 Mar 2025 15:47:21 +0000 Subject: [PATCH 01/13] chore: remove pinned release versions validation (#270) Signed-off-by: Mike Nguyen --- .github/workflows/validate-examples.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/validate-examples.yml b/.github/workflows/validate-examples.yml index 9c335cd..b4d03f5 100644 --- a/.github/workflows/validate-examples.yml +++ b/.github/workflows/validate-examples.yml @@ -52,8 +52,8 @@ jobs: CHECKOUT_REF: ${{ github.ref }} outputs: DAPR_INSTALL_URL: ${{ env.DAPR_INSTALL_URL }} - DAPR_CLI_VERSION: 1.15.0-rc.4 - DAPR_RUNTIME_VERSION: 1.15.0-rc.9 + DAPR_CLI_VERSION: ${{ steps.outputs.outputs.DAPR_CLI_VERSION }} + DAPR_RUNTIME_VERSION: ${{ steps.outputs.outputs.DAPR_RUNTIME_VERSION }} CHECKOUT_REPO: ${{ steps.outputs.outputs.CHECKOUT_REPO }} CHECKOUT_REF: ${{ steps.outputs.outputs.CHECKOUT_REF }} GITHUB_SHA: ${{ steps.outputs.outputs.GITHUB_SHA }} From f1e469cf57e3ff99b5cf9230b8e943ac7211a1ab Mon Sep 17 00:00:00 2001 From: Mike Nguyen Date: Tue, 1 Apr 2025 19:11:27 +0100 Subject: [PATCH 02/13] fix(deps): pin axum-test crate to 16.4.0 Signed-off-by: Mike Nguyen --- dapr/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dapr/Cargo.toml b/dapr/Cargo.toml index 128f87d..bc00862 100644 --- a/dapr/Cargo.toml +++ b/dapr/Cargo.toml @@ -26,7 +26,7 @@ tokio-util = { workspace = true, features = ["io"] } [dev-dependencies] -axum-test = "16.4.0" # TODO: Remove problematic dep +axum-test = "=16.4.0" # TODO: Remove problematic dep litemap = "=0.7.4" # TODO: Remove pinned - linked to axum_test zerofrom = "=0.1.5" # TODO: Remove pinned - linked to axum_test once_cell = "1.19" From 4fb85abcea83d1eafbaee3bc1254fb5d2451d96f Mon Sep 17 00:00:00 2001 From: Mike Nguyen Date: Tue, 1 Apr 2025 19:15:40 +0100 Subject: [PATCH 03/13] fix(deps): pin reserve-port to 2.1.0 Signed-off-by: Mike Nguyen --- dapr/Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/dapr/Cargo.toml b/dapr/Cargo.toml index bc00862..18f7047 100644 --- a/dapr/Cargo.toml +++ b/dapr/Cargo.toml @@ -29,6 +29,7 @@ tokio-util = { workspace = true, features = ["io"] } axum-test = "=16.4.0" # TODO: Remove problematic dep litemap = "=0.7.4" # TODO: Remove pinned - linked to axum_test zerofrom = "=0.1.5" # TODO: Remove pinned - linked to axum_test +reserve-port = "=2.1.0" # TODO: Remove pinned - linked to axum_test once_cell = "1.19" dapr = { path = "./" } dapr-macros = { path = "../dapr-macros" } From 26f4ee6d32118af7054f39f3b2f2ec6ba3f8b0eb Mon Sep 17 00:00:00 2001 From: Mike Nguyen Date: Wed, 9 Apr 2025 11:04:09 +0100 Subject: [PATCH 04/13] fix(docs): over indented docs (#274) Signed-off-by: Mike Nguyen --- dapr/src/server/actor/runtime/mod.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dapr/src/server/actor/runtime/mod.rs b/dapr/src/server/actor/runtime/mod.rs index 56efcb2..86ee352 100644 --- a/dapr/src/server/actor/runtime/mod.rs +++ b/dapr/src/server/actor/runtime/mod.rs @@ -102,9 +102,9 @@ impl ActorTypeRegistration { /// # Arguments: /// * `method_name` - The name of the method to be registered. This name will be used by actor clients to invoke the method. /// * `handler` - The handler function to be invoked when the method is called. - /// Can be any valid [Axum handler](https://docs.rs/axum/latest/axum/handler/index.html), - /// use [Axum extractors](https://docs.rs/axum/latest/axum/extract/index.html) to access the incoming request and return an [`impl IntoResponse`](https://docs.rs/axum/latest/axum/response/trait.IntoResponse.html). - /// Use the `DaprJson` extractor to deserialize the request from Json coming from a Dapr sidecar. + /// Can be any valid [Axum handler](https://docs.rs/axum/latest/axum/handler/index.html), + /// use [Axum extractors](https://docs.rs/axum/latest/axum/extract/index.html) to access the incoming request and return an [`impl IntoResponse`](https://docs.rs/axum/latest/axum/response/trait.IntoResponse.html). + /// Use the `DaprJson` extractor to deserialize the request from Json coming from a Dapr sidecar. /// # Example: /// ```ignore /// # use std::sync::Arc; From acb829cdb52359fed0869a6b0885fe54f33ef0da Mon Sep 17 00:00:00 2001 From: Mike Nguyen Date: Wed, 14 May 2025 13:04:17 +0100 Subject: [PATCH 05/13] chore: pin idna_adapter (#278) Signed-off-by: Mike Nguyen --- dapr/Cargo.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dapr/Cargo.toml b/dapr/Cargo.toml index 18f7047..cf41fb0 100644 --- a/dapr/Cargo.toml +++ b/dapr/Cargo.toml @@ -30,6 +30,8 @@ axum-test = "=16.4.0" # TODO: Remove problematic dep litemap = "=0.7.4" # TODO: Remove pinned - linked to axum_test zerofrom = "=0.1.5" # TODO: Remove pinned - linked to axum_test reserve-port = "=2.1.0" # TODO: Remove pinned - linked to axum_test +idna_adapter = "=1.2.0" + once_cell = "1.19" dapr = { path = "./" } dapr-macros = { path = "../dapr-macros" } From 35930ebc5fab4a26cf1982c03e722723b51aeb70 Mon Sep 17 00:00:00 2001 From: Mike Nguyen Date: Wed, 14 May 2025 13:56:31 +0100 Subject: [PATCH 06/13] docs: fix typo (#279) Signed-off-by: Mike Nguyen --- daprdocs/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/daprdocs/README.md b/daprdocs/README.md index b7565d2..0e369fc 100644 --- a/daprdocs/README.md +++ b/daprdocs/README.md @@ -14,7 +14,8 @@ This allows separation of roles and expertise between maintainers, and makes it ## Writing Rust SDK docs -To get up and running to write Go SDK docs, visit the [docs repo](https://github.com/dapr/docs) to initialize your environment. It will clone both the docs repo and this repo, so you can make changes and see it rendered within the site instantly, as well as commit and PR into this repo. +To get up and running to write Rust SDK docs, visit the [docs repo](https://github.com/dapr/docs) to initialize your +environment. It will clone both the docs repo and this repo, so you can make changes and see it rendered within the site instantly, as well as commit and PR into this repo. Make sure to read the [docs contributing guide](https://docs.dapr.io/contributing/contributing-docs/) for information on style/semantics/etc. From 9537a3b826e14d76bf30660a8bb5983fd5e872b0 Mon Sep 17 00:00:00 2001 From: Mike Nguyen Date: Wed, 14 May 2025 15:49:35 +0100 Subject: [PATCH 07/13] chore: limit the visibility of the cargo token (#280) Addresses #218 Signed-off-by: Mike Nguyen --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8ba36b4..f2220ee 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,6 @@ on: env: CARGO_TERM_COLOR: always - CARGO_TOKEN: ${{ secrets.CRATES_IO_TOKEN }} PROTOC_VERSION: 24.4 RUSTFLAGS: "-D warnings" @@ -145,4 +144,6 @@ jobs: version: ${{ env.PROTOC_VERSION }} - uses: actions/checkout@v4 - name: cargo publish - ${{ matrix.crate }} + env: + CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }} run: cargo publish --manifest-path ${{ matrix.crate }}/Cargo.toml --token ${{ env.CARGO_TOKEN }} From 942263938ab195ab1ef0320cf7418e3ccbb12075 Mon Sep 17 00:00:00 2001 From: Mike Nguyen Date: Tue, 3 Jun 2025 16:16:31 +0100 Subject: [PATCH 08/13] fix(chore): allow large size difference between variants in generated enums (#283) Signed-off-by: Mike Nguyen --- dapr/src/lib.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dapr/src/lib.rs b/dapr/src/lib.rs index 7424de8..d55162b 100644 --- a/dapr/src/lib.rs +++ b/dapr/src/lib.rs @@ -9,8 +9,10 @@ pub use client::Client; pub mod appcallback; /// Module containing the 'Client' implementation. pub mod client; + /// Module importing the Dapr runtime implementation. pub mod dapr { + #![allow(clippy::large_enum_variant)] pub mod proto { pub mod common { pub mod v1 { From 06ea44e8d3feeaf6d42154856e70350af285b653 Mon Sep 17 00:00:00 2001 From: Mike Nguyen Date: Fri, 27 Jun 2025 14:56:05 +0100 Subject: [PATCH 09/13] fix: refactor log formatting (#285) * fix: refactor log formatting Signed-off-by: mikeee * fix: refactor all print formatting Signed-off-by: mikeee --------- Signed-off-by: mikeee --- dapr-macros/src/lib.rs | 2 +- dapr/src/client.rs | 4 +-- dapr/src/error.rs | 4 +-- dapr/src/server/actor/mod.rs | 2 +- dapr/src/server/actor/runtime/mod.rs | 4 +-- dapr/src/server/actor/tests.rs | 14 ++++----- dapr/src/server/http.rs | 32 +++++++-------------- dapr/src/server/utils.rs | 4 +-- examples/src/actors/client.rs | 2 +- examples/src/actors/server.rs | 2 +- examples/src/bindings/input.rs | 2 +- examples/src/configuration/main.rs | 2 +- examples/src/invoke/grpc-proxying/client.rs | 4 +-- examples/src/invoke/grpc-proxying/server.rs | 2 +- examples/src/invoke/grpc/client.rs | 2 +- examples/src/invoke/grpc/server.rs | 2 +- examples/src/jobs/jobs.rs | 8 +++--- examples/src/pubsub/publisher.rs | 2 +- examples/src/pubsub/subscriber.rs | 6 ++-- examples/src/query_state/query1.rs | 4 +-- examples/src/query_state/query2.rs | 4 +-- proto-gen/src/main.rs | 6 ++-- 22 files changed, 49 insertions(+), 65 deletions(-) diff --git a/dapr-macros/src/lib.rs b/dapr-macros/src/lib.rs index e23754d..261063d 100644 --- a/dapr-macros/src/lib.rs +++ b/dapr-macros/src/lib.rs @@ -81,7 +81,7 @@ pub fn actor(_attr: TokenStream, item: TokenStream) -> TokenStream { Ok(actor_struct) => actor_struct.ident.clone(), Err(_) => match syn::parse::(item.clone()) { Ok(ty) => ty.ident.clone(), - Err(e) => panic!("Error parsing actor struct: {}", e), + Err(e) => panic!("Error parsing actor struct: {e}"), }, }; diff --git a/dapr/src/client.rs b/dapr/src/client.rs index 17e25b8..14209e1 100644 --- a/dapr/src/client.rs +++ b/dapr/src/client.rs @@ -25,7 +25,7 @@ impl Client { pub async fn connect(addr: String) -> Result { // Get the Dapr port to create a connection let port: u16 = std::env::var("DAPR_GRPC_PORT")?.parse()?; - let address = format!("{}:{}", addr, port); + let address = format!("{addr}:{port}"); Ok(Client(T::connect(address).await?)) } @@ -45,7 +45,7 @@ impl Client { } }; - let address = format!("{}:{}", addr, port); + let address = format!("{addr}:{port}"); Ok(Client(T::connect(address).await?)) } diff --git a/dapr/src/error.rs b/dapr/src/error.rs index 0178eae..3363725 100644 --- a/dapr/src/error.rs +++ b/dapr/src/error.rs @@ -13,7 +13,7 @@ pub enum Error { impl Display for Error { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{:?}", self) + write!(f, "{self:?}") } } @@ -50,6 +50,6 @@ pub struct GrpcError { impl Display for GrpcError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{:?}", self) + write!(f, "{self:?}") } } diff --git a/dapr/src/server/actor/mod.rs b/dapr/src/server/actor/mod.rs index 42f4a32..dde8d74 100644 --- a/dapr/src/server/actor/mod.rs +++ b/dapr/src/server/actor/mod.rs @@ -37,7 +37,7 @@ impl Display for ActorError { ActorError::CorruptedState => write!(f, "Actor state corrupted"), ActorError::MethodNotFound => write!(f, "Method not found"), ActorError::ActorNotFound => write!(f, "Actor not found"), - ActorError::MethodError(e) => write!(f, "Method error: {}", e), + ActorError::MethodError(e) => write!(f, "Method error: {e}"), ActorError::SerializationError() => write!(f, "Serialization error"), } } diff --git a/dapr/src/server/actor/runtime/mod.rs b/dapr/src/server/actor/runtime/mod.rs index 86ee352..75253fb 100644 --- a/dapr/src/server/actor/runtime/mod.rs +++ b/dapr/src/server/actor/runtime/mod.rs @@ -174,7 +174,7 @@ impl ActorTypeRegistration { T: 'static, { let actor_type = self.name.clone(); - let method_path = format!("/actors/{}/:actor_id/method/{}", actor_type, method_name); + let method_path = format!("/actors/{actor_type}/:actor_id/method/{method_name}"); let reg_func = move |router: Router, runtime: Arc| { router.route( @@ -224,7 +224,7 @@ impl ActorRuntime { let name = registration.name.clone(); let mut g = self.registered_actors_types.write().await; g.insert(name.clone(), registration); - log::info!("registered actor {}", name); + log::info!("registered actor {name}"); } pub async fn configure_method_routes( diff --git a/dapr/src/server/actor/tests.rs b/dapr/src/server/actor/tests.rs index cf97114..de8f882 100644 --- a/dapr/src/server/actor/tests.rs +++ b/dapr/src/server/actor/tests.rs @@ -97,7 +97,7 @@ async fn test_actor_invoke() { let server = TestServer::new(app.into_make_service()).unwrap(); let invoke_resp = server - .put(&format!("/actors/MyActor/{}/method/do_stuff", actor_id)) + .put(&format!("/actors/MyActor/{actor_id}/method/do_stuff")) .json(&json!({ "name": "foo" })) .await; invoke_resp.assert_status_ok(); @@ -118,7 +118,7 @@ async fn test_actor_invoke() { ); let invoke_resp2 = server - .put(&format!("/actors/MyActor/{}/method/do_stuff", actor_id)) + .put(&format!("/actors/MyActor/{actor_id}/method/do_stuff")) .json(&json!({ "name": "foo" })) .await; invoke_resp2.assert_status_ok(); @@ -169,19 +169,15 @@ async fn test_actor_deactivate() { let actor_id = Uuid::new_v4().to_string(); let invoke_resp = server - .put(&format!("/actors/MyActor/{}/method/do_stuff", actor_id)) + .put(&format!("/actors/MyActor/{actor_id}/method/do_stuff")) .json(&json!({ "name": "foo" })) .await; invoke_resp.assert_status_ok(); - let deactivate_resp1 = server - .delete(&format!("/actors/MyActor/{}", actor_id)) - .await; + let deactivate_resp1 = server.delete(&format!("/actors/MyActor/{actor_id}")).await; deactivate_resp1.assert_status_ok(); - let deactivate_resp2 = server - .delete(&format!("/actors/MyActor/{}", actor_id)) - .await; + let deactivate_resp2 = server.delete(&format!("/actors/MyActor/{actor_id}")).await; deactivate_resp2.assert_status_not_found(); assert_eq!( diff --git a/dapr/src/server/http.rs b/dapr/src/server/http.rs index 5ccc43e..fc75f49 100644 --- a/dapr/src/server/http.rs +++ b/dapr/src/server/http.rs @@ -109,7 +109,7 @@ impl DaprHttpServer { pub async fn with_dapr_port(dapr_port: u16) -> Self { match Self::try_new_with_dapr_port(dapr_port).await { Ok(c) => c, - Err(err) => panic!("failed to connect to dapr: {}", err), + Err(err) => panic!("failed to connect to dapr: {err}"), } } @@ -121,7 +121,7 @@ impl DaprHttpServer { pub async fn try_new_with_dapr_port( dapr_port: u16, ) -> Result> { - let dapr_addr = format!("https://127.0.0.1:{}", dapr_port); + let dapr_addr = format!("https://127.0.0.1:{dapr_port}"); let cc = TonicClient::connect(dapr_addr).await?; let rt = ActorRuntime::new(cc); @@ -244,11 +244,11 @@ async fn deactivate_actor( match runtime.deactivate_actor(&actor_type, &actor_id).await { Ok(_) => StatusCode::OK, Err(err) => { - log::error!("invoke_actor: {:?}", err); + log::error!("invoke_actor: {err:?}"); match err { super::actor::ActorError::ActorNotFound => StatusCode::NOT_FOUND, _ => { - log::error!("deactivate_actor: {:?}", err); + log::error!("deactivate_actor: {err:?}"); StatusCode::INTERNAL_SERVER_ERROR } } @@ -261,13 +261,7 @@ async fn invoke_reminder( Path((actor_type, actor_id, reminder_name)): Path<(String, String, String)>, Json(payload): Json, ) -> impl IntoResponse { - log::debug!( - "invoke_reminder: {} {} {} {:?}", - actor_type, - actor_id, - reminder_name, - payload - ); + log::debug!("invoke_reminder: {actor_type} {actor_id} {reminder_name} {payload:?}"); match runtime .invoke_reminder( @@ -280,11 +274,11 @@ async fn invoke_reminder( { Ok(_output) => StatusCode::OK, Err(err) => { - log::error!("invoke_actor: {:?}", err); + log::error!("invoke_actor: {err:?}"); match err { super::actor::ActorError::ActorNotFound => StatusCode::NOT_FOUND, _ => { - log::error!("invoke_reminder: {:?}", err); + log::error!("invoke_reminder: {err:?}"); StatusCode::INTERNAL_SERVER_ERROR } } @@ -297,13 +291,7 @@ async fn invoke_timer( Path((actor_type, actor_id, timer_name)): Path<(String, String, String)>, Json(payload): Json, ) -> impl IntoResponse { - log::debug!( - "invoke_timer: {} {} {}, {:?}", - actor_type, - actor_id, - timer_name, - payload - ); + log::debug!("invoke_timer: {actor_type} {actor_id} {timer_name}, {payload:?}"); match runtime .invoke_timer( @@ -316,11 +304,11 @@ async fn invoke_timer( { Ok(_output) => StatusCode::OK, Err(err) => { - log::error!("invoke_actor: {:?}", err); + log::error!("invoke_actor: {err:?}"); match err { super::actor::ActorError::ActorNotFound => StatusCode::NOT_FOUND, _ => { - log::error!("invoke_timer: {:?}", err); + log::error!("invoke_timer: {err:?}"); StatusCode::INTERNAL_SERVER_ERROR } } diff --git a/dapr/src/server/utils.rs b/dapr/src/server/utils.rs index 44b5717..cd01a2b 100644 --- a/dapr/src/server/utils.rs +++ b/dapr/src/server/utils.rs @@ -28,14 +28,14 @@ where let bytes = match axum::body::Bytes::from_request(req, state).await { Ok(bytes) => bytes, Err(e) => { - log::error!("Error getting bytes: {}", e); + log::error!("Error getting bytes: {e}"); return Err(JsonRejection::JsonError(e.to_string())); } }; let value = match serde_json::from_slice::(&bytes) { Ok(value) => value, Err(e) => { - log::error!("Error deserializing JSON: {}", e); + log::error!("Error deserializing JSON: {e}"); return Err(JsonRejection::JsonError(e.to_string())); } }; diff --git a/examples/src/actors/client.rs b/examples/src/actors/client.rs index fd5ff19..8cc6888 100644 --- a/examples/src/actors/client.rs +++ b/examples/src/actors/client.rs @@ -30,7 +30,7 @@ async fn main() -> Result<(), Box> { .invoke_actor("MyActor", "a1", "do_stuff", data, None) .await; - println!("Response: {:#?}", resp); + println!("Response: {resp:#?}"); Ok(()) } diff --git a/examples/src/actors/server.rs b/examples/src/actors/server.rs index d55c65f..06c3034 100644 --- a/examples/src/actors/server.rs +++ b/examples/src/actors/server.rs @@ -31,7 +31,7 @@ impl MyActor { println!("doing stuff with {}", req.name); let mut dapr = self.client.clone(); let r = dapr.get_actor_state("key1").await.unwrap(); - println!("get_actor_state {:?}", r); + println!("get_actor_state {r:?}"); Json(MyResponse { available: true }) } } diff --git a/examples/src/bindings/input.rs b/examples/src/bindings/input.rs index 39aed46..0e5289b 100644 --- a/examples/src/bindings/input.rs +++ b/examples/src/bindings/input.rs @@ -75,7 +75,7 @@ async fn main() -> Result<(), Box> { let callback_service = AppCallbackService::default(); - println!("AppCallback server listening on: {}", addr); + println!("AppCallback server listening on: {addr}"); // Create a gRPC server with the callback_service. Server::builder() diff --git a/examples/src/configuration/main.rs b/examples/src/configuration/main.rs index 0f202dc..14fde13 100644 --- a/examples/src/configuration/main.rs +++ b/examples/src/configuration/main.rs @@ -52,7 +52,7 @@ async fn unsubscribe(client: &mut DaprClient, subscription_id: &str) { .await { Ok(_) => println!("App unsubscribed from config changes"), - Err(e) => println!("Error unsubscribing from config updates: {}", e), + Err(e) => println!("Error unsubscribing from config updates: {e}"), } std::process::exit(0); } diff --git a/examples/src/invoke/grpc-proxying/client.rs b/examples/src/invoke/grpc-proxying/client.rs index 35c66e5..405b560 100644 --- a/examples/src/invoke/grpc-proxying/client.rs +++ b/examples/src/invoke/grpc-proxying/client.rs @@ -15,7 +15,7 @@ async fn main() -> Result<(), Box> { // Get the Dapr port and create a connection let port: u16 = std::env::var("DAPR_GRPC_PORT").unwrap().parse().unwrap(); - let address = format!("https://127.0.0.1:{}", port); + let address = format!("https://127.0.0.1:{port}"); let mut client = GreeterClient::connect(address).await?; @@ -31,7 +31,7 @@ async fn main() -> Result<(), Box> { let response = client.say_hello(request).await.unwrap(); let hello_reply = response.into_inner(); - println!("Response: {:#?}", hello_reply); + println!("Response: {hello_reply:#?}"); Ok(()) } diff --git a/examples/src/invoke/grpc-proxying/server.rs b/examples/src/invoke/grpc-proxying/server.rs index b0ceadf..f9397fe 100644 --- a/examples/src/invoke/grpc-proxying/server.rs +++ b/examples/src/invoke/grpc-proxying/server.rs @@ -33,7 +33,7 @@ async fn main() -> Result<(), Box> { let greeter_service = GreeterService::default(); - println!("AppCallback server listening on: {}", server_address); + println!("AppCallback server listening on: {server_address}"); // Create a gRPC server with the callback_service. Server::builder() .add_service(GreeterServer::new(greeter_service)) diff --git a/examples/src/invoke/grpc/client.rs b/examples/src/invoke/grpc/client.rs index c05ef29..753cf71 100644 --- a/examples/src/invoke/grpc/client.rs +++ b/examples/src/invoke/grpc/client.rs @@ -39,7 +39,7 @@ async fn main() -> Result<(), Box> { println!("Message: {:#?}", &resp.message); }; - println!("Response: {:#?}", response); + println!("Response: {response:#?}"); Ok(()) } diff --git a/examples/src/invoke/grpc/server.rs b/examples/src/invoke/grpc/server.rs index 1f5bd00..4587753 100644 --- a/examples/src/invoke/grpc/server.rs +++ b/examples/src/invoke/grpc/server.rs @@ -97,7 +97,7 @@ async fn main() -> Result<(), Box> { let callback_service = AppCallbackService {}; - println!("AppCallback server listening on: {}", server_address); + println!("AppCallback server listening on: {server_address}"); // Create a gRPC server with the callback_service. Server::builder() .add_service(AppCallbackServer::new(callback_service)) diff --git a/examples/src/jobs/jobs.rs b/examples/src/jobs/jobs.rs index d8cbf07..1c2a7b1 100644 --- a/examples/src/jobs/jobs.rs +++ b/examples/src/jobs/jobs.rs @@ -44,7 +44,7 @@ async fn backup_job_handler(request: JobEventRequest) -> Result Result<(), Box> { let client_addr = "https://127.0.0.1".to_string(); let port: u16 = std::env::var("DAPR_GRPC_PORT")?.parse()?; - let address = format!("{}:{}", client_addr, port); + let address = format!("{client_addr}:{port}"); - println!("attempting to create a dapr client: {}", address); + println!("attempting to create a dapr client: {address}"); // Create the client let mut client = DaprClient::connect(client_addr).await?; @@ -127,7 +127,7 @@ async fn main() -> Result<(), Box> { let get_resp_backup: Backup = serde_json::from_slice(&get_resp.clone().job.unwrap().data.unwrap().value).unwrap(); - println!("job retrieved: {:?}", get_resp_backup); + println!("job retrieved: {get_resp_backup:?}"); let _delete_resp = client.delete_job_alpha1("prod-db-backup").await?; diff --git a/examples/src/pubsub/publisher.rs b/examples/src/pubsub/publisher.rs index 1d64516..0f584a6 100644 --- a/examples/src/pubsub/publisher.rs +++ b/examples/src/pubsub/publisher.rs @@ -45,7 +45,7 @@ async fn main() -> Result<(), Box> { for count in 0..10 { let order = Order { order_number: count, - order_details: format!("Count is {}", count), + order_details: format!("Count is {count}"), }; // message metadata let mut metadata = HashMap::::new(); diff --git a/examples/src/pubsub/subscriber.rs b/examples/src/pubsub/subscriber.rs index 3383041..a25ad36 100644 --- a/examples/src/pubsub/subscriber.rs +++ b/examples/src/pubsub/subscriber.rs @@ -18,12 +18,12 @@ struct Refund { #[topic(pub_sub_name = "pubsub", topic = "A")] async fn handle_a_event(order: Order) { - println!("Topic A - {:#?}", order) + println!("Topic A - {order:#?}") } #[topic(pub_sub_name = "pubsub", topic = "B")] async fn handle_b_event(refund: Refund) { - println!("Topic B - {:#?}", refund) + println!("Topic B - {refund:#?}") } #[tokio::main] @@ -36,7 +36,7 @@ async fn main() -> Result<(), Box> { callback_service.add_handler(HandleBEvent.get_handler()); - println!("AppCallback server listening on: {}", addr); + println!("AppCallback server listening on: {addr}"); // Create a gRPC server with the callback_service. Server::builder() diff --git a/examples/src/query_state/query1.rs b/examples/src/query_state/query1.rs index bc68237..9d3cd70 100644 --- a/examples/src/query_state/query1.rs +++ b/examples/src/query_state/query1.rs @@ -29,7 +29,7 @@ async fn main() -> Result<(), Box> { { Ok(response) => response.results, Err(e) => { - println!("Error: {:?}", e); + println!("Error: {e:?}"); return Ok(()); } }; @@ -43,7 +43,7 @@ async fn main() -> Result<(), Box> { "value": value })); } - println!("Query results: {:?}", results); + println!("Query results: {results:?}"); Ok(()) } diff --git a/examples/src/query_state/query2.rs b/examples/src/query_state/query2.rs index 35c6d10..d290b10 100644 --- a/examples/src/query_state/query2.rs +++ b/examples/src/query_state/query2.rs @@ -23,7 +23,7 @@ async fn main() -> Result<(), Box> { { Ok(response) => response.results, Err(e) => { - println!("Error: {:?}", e); + println!("Error: {e:?}"); return Ok(()); } }; @@ -37,7 +37,7 @@ async fn main() -> Result<(), Box> { "value": value })); } - println!("Query results: {:?}", results); + println!("Query results: {results:?}"); Ok(()) } diff --git a/proto-gen/src/main.rs b/proto-gen/src/main.rs index 3a1b49f..fce9180 100644 --- a/proto-gen/src/main.rs +++ b/proto-gen/src/main.rs @@ -51,16 +51,16 @@ fn proto_gen( .map(|path| format!("{}/{}", root_dir.to_str().unwrap(), path)) .collect::>(); - println!("included {:?}", include_dirs); + println!("included {include_dirs:?}"); let interface = interface .iter() .map(|path| format!("{}/{}", root_dir.to_str().unwrap(), path)) .collect::>(); - println!("interface {:?}", interface); + println!("interface {interface:?}"); let out_dir = root_dir.join(out_dir); - println!("outdir {:?}", out_dir); + println!("outdir {out_dir:?}"); tonic_build::configure() .build_client(build_client) From 407447816c2107860af98897802c4491306e95d0 Mon Sep 17 00:00:00 2001 From: Marc Duiker Date: Thu, 10 Jul 2025 10:15:57 +0200 Subject: [PATCH 10/13] Update markdown files to be compatible with latest Hugo (#287) Signed-off-by: Marc Duiker --- .../en/rust-sdk-contributing/rust-contributing.md | 4 ++-- daprdocs/content/en/rust-sdk-docs/_index.md | 2 +- .../content/en/rust-sdk-docs/rust-client/_index.md | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/daprdocs/content/en/rust-sdk-contributing/rust-contributing.md b/daprdocs/content/en/rust-sdk-contributing/rust-contributing.md index 41fd32b..e5db901 100644 --- a/daprdocs/content/en/rust-sdk-contributing/rust-contributing.md +++ b/daprdocs/content/en/rust-sdk-contributing/rust-contributing.md @@ -12,7 +12,7 @@ When contributing to the [Rust SDK](https://github.com/dapr/rust-sdk) the follow The `examples` directory contains code samples for users to run to try out specific functionality of the various Rust SDK packages and extensions. It also hosts component examples used for validation. When writing new and updated samples keep in mind: -- All examples should be runnable on Windows, Linux, and MacOS. While Rust code is consistent among operating systems aside from minor OS-feature gating, any pre/post example commands should provide options through [codetabs]({{< ref "contributing-docs.md#tabbed-content" >}}) +- All examples should be runnable on Windows, Linux, and MacOS. While Rust code is consistent among operating systems aside from minor OS-feature gating, any pre/post example commands should provide options through [tabpane]({{% ref "contributing-docs.md#tabbed-content" %}}) - Contain steps to download/install any required pre-requisites. Someone coming in with a fresh OS install should be able to start on the example and complete it without an error. Links to external download pages are fine. - Examples should be pass validation and include mechanical markdown steps and be added to the validation workflow [TBA](#) @@ -20,7 +20,7 @@ The `examples` directory contains code samples for users to run to try out speci The `daprdocs` directory contains the markdown files that are rendered into the [Dapr Docs](https://docs.dapr.io) website. When the documentation website is built this repo is cloned and configured so that its contents are rendered with the docs content. When writing docs keep in mind: - - All rules in the [docs guide]({{< ref contributing-docs.md >}}) should be followed in addition to these. + - All rules in the [docs guide]({{% ref contributing-docs.md %}}) should be followed in addition to these. - All files and directories should be prefixed with `rust-` to ensure all file/directory names are globally unique across all Dapr documentation. ## Update Protobufs diff --git a/daprdocs/content/en/rust-sdk-docs/_index.md b/daprdocs/content/en/rust-sdk-docs/_index.md index a59afdc..ba310dc 100644 --- a/daprdocs/content/en/rust-sdk-docs/_index.md +++ b/daprdocs/content/en/rust-sdk-docs/_index.md @@ -22,6 +22,6 @@ A client library to help build Dapr applications using Rust. This client is targ {{< card title="**Client**">}} Use the Rust Client SDK for invoking public Dapr APIs - [**Learn more about the Rust Client SDK**]({{< ref rust-client >}}) + [**Learn more about the Rust Client SDK**]({{% ref rust-client %}}) {{< /card >}} {{< /cardpane >}} diff --git a/daprdocs/content/en/rust-sdk-docs/rust-client/_index.md b/daprdocs/content/en/rust-sdk-docs/rust-client/_index.md index 017d0b7..d93848f 100644 --- a/daprdocs/content/en/rust-sdk-docs/rust-client/_index.md +++ b/daprdocs/content/en/rust-sdk-docs/rust-client/_index.md @@ -17,8 +17,8 @@ stable release and will likely involve breaking changes. ## Prerequisites -- [Dapr CLI]({{< ref install-dapr-cli.md >}}) installed -- Initialized [Dapr environment]({{< ref install-dapr-selfhost.md >}}) +- [Dapr CLI]({{% ref install-dapr-cli.md %}}) installed +- Initialized [Dapr environment]({{% ref install-dapr-selfhost.md %}}) - [Rust installed](https://www.rust-lang.org/tools/install) ## Import the client package @@ -55,7 +55,7 @@ let mut client = dapr::Client::::connect_with_port(ad ## Building blocks The Rust SDK allows you to interface with the -[Dapr building blocks]({{< ref building-blocks >}}). +[Dapr building blocks]({{% ref building-blocks %}}). ### Service Invocation (gRPC) @@ -72,7 +72,7 @@ let response = client ``` For a full guide on service invocation, visit -[How-To: Invoke a service]({{< ref howto-invoke-discover-services.md >}}). +[How-To: Invoke a service]({{% ref howto-invoke-discover-services.md %}}). ### State Management @@ -103,7 +103,7 @@ client Multiple states can be sent with the `save_bulk_states` method. For a full guide on state management, visit -[How-To: Save & get state]({{< ref howto-get-save-state.md >}}). +[How-To: Save & get state]({{% ref howto-get-save-state.md %}}). ### Publish Messages @@ -121,7 +121,7 @@ client ``` For a full guide on pub/sub, visit -[How-To: Publish & subscribe]({{< ref howto-publish-subscribe.md >}}). +[How-To: Publish & subscribe]({{% ref howto-publish-subscribe.md %}}). ## Related links From f795e2fe71c414dabf1f3398e5015fdb10d85173 Mon Sep 17 00:00:00 2001 From: Mike Nguyen Date: Thu, 24 Jul 2025 15:01:31 +0100 Subject: [PATCH 11/13] fix: cleanup dead code (#288) Signed-off-by: Mike Nguyen --- examples/src/jobs/jobs.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/examples/src/jobs/jobs.rs b/examples/src/jobs/jobs.rs index 1c2a7b1..5725108 100644 --- a/examples/src/jobs/jobs.rs +++ b/examples/src/jobs/jobs.rs @@ -26,12 +26,6 @@ struct Metadata { backup_location: String, } -#[derive(Serialize, Deserialize, Debug)] -struct JsonAny { - type_url: String, - value: String, -} - async fn ping_pong_handler(_request: JobEventRequest) -> Result { println!("received job on ping_pong_handler"); From 4475ed57cfdcb912a828f43cace8c0bea3eb99e1 Mon Sep 17 00:00:00 2001 From: Mike Nguyen Date: Mon, 11 Aug 2025 13:05:50 +0100 Subject: [PATCH 12/13] feat!: jobs failure policy and proto bump (#289) * chore: bump protos Signed-off-by: Mike Nguyen * feat: add override job parameter Signed-off-by: Mike Nguyen * feat: job failure policy Signed-off-by: Mike Nguyen * feat: add failurepolicy job example and add option Signed-off-by: Mike Nguyen * fix: typo Signed-off-by: Mike Nguyen * chore: fix proto linter issue Signed-off-by: Mike Nguyen * fix: job failure policy assertion Signed-off-by: Mike Nguyen --------- Signed-off-by: Mike Nguyen --- .github/workflows/validate-examples.yml | 2 +- dapr/src/client.rs | 80 +- dapr/src/dapr/dapr.proto.common.v1.rs | 80 +- dapr/src/dapr/dapr.proto.runtime.v1.rs | 3489 +++++++---------- dapr/src/dapr/types.bin | Bin 124849 -> 145837 bytes examples/Cargo.toml | 4 + examples/src/jobs-failurepolicy/README.md | 49 + examples/src/jobs-failurepolicy/dapr.yaml | 11 + .../jobs-failurepolicy/jobs_failurepolicy.rs | 145 + examples/src/jobs/jobs.rs | 4 +- proto/dapr/proto/common/v1/common.proto | 28 +- proto/dapr/proto/runtime/v1/dapr.proto | 282 +- 12 files changed, 2003 insertions(+), 2171 deletions(-) create mode 100644 examples/src/jobs-failurepolicy/README.md create mode 100644 examples/src/jobs-failurepolicy/dapr.yaml create mode 100644 examples/src/jobs-failurepolicy/jobs_failurepolicy.rs diff --git a/.github/workflows/validate-examples.yml b/.github/workflows/validate-examples.yml index b4d03f5..0904821 100644 --- a/.github/workflows/validate-examples.yml +++ b/.github/workflows/validate-examples.yml @@ -220,7 +220,7 @@ jobs: fail-fast: false matrix: examples: - [ "actors", "bindings", "client", "configuration", "conversation", "crypto", "invoke/grpc", "invoke/grpc-proxying", "jobs", "pubsub", "query_state", "secrets-bulk" ] + [ "actors", "bindings", "client", "configuration", "conversation", "crypto", "invoke/grpc", "invoke/grpc-proxying", "jobs", "jobs-failurepolicy", "pubsub", "query_state", "secrets-bulk" ] steps: - name: Check out code uses: actions/checkout@v4 diff --git a/dapr/src/client.rs b/dapr/src/client.rs index 14209e1..9d3d0f7 100644 --- a/dapr/src/client.rs +++ b/dapr/src/client.rs @@ -1,18 +1,19 @@ -use std::collections::HashMap; - +use crate::dapr::proto::common::v1::job_failure_policy::Policy; +use crate::dapr::proto::common::v1::JobFailurePolicyConstant; +use crate::dapr::proto::{common::v1 as common_v1, runtime::v1 as dapr_v1}; +use crate::error::Error; use async_trait::async_trait; use futures::StreamExt; use prost_types::Any; use serde::{Deserialize, Serialize}; use serde_json::Value; +use std::collections::HashMap; +use std::time::Duration; use tokio::io::AsyncRead; use tonic::codegen::tokio_stream; use tonic::{transport::Channel as TonicChannel, Request}; use tonic::{Status, Streaming}; -use crate::dapr::proto::{common::v1 as common_v1, runtime::v1 as dapr_v1}; -use crate::error::Error; - #[derive(Clone)] pub struct Client(T); @@ -559,9 +560,15 @@ impl Client { /// # Arguments /// /// * job - The job to schedule - pub async fn schedule_job_alpha1(&mut self, job: Job) -> Result { + /// * overwrite - Optional flag to overwrite an existing job with the same name + pub async fn schedule_job_alpha1( + &mut self, + job: Job, + overwrite: Option, + ) -> Result { let request = ScheduleJobRequest { job: Some(job.clone()), + overwrite: overwrite.unwrap_or(false), }; self.0.schedule_job_alpha1(request).await } @@ -981,6 +988,9 @@ pub type DecryptRequestOptions = crate::dapr::proto::runtime::v1::DecryptRequest /// The basic job structure pub type Job = crate::dapr::proto::runtime::v1::Job; +/// A failure policy for a job +pub type JobFailurePolicy = crate::dapr::proto::common::v1::JobFailurePolicy; + /// A request to schedule a job pub type ScheduleJobRequest = crate::dapr::proto::runtime::v1::ScheduleJobRequest; @@ -1040,6 +1050,7 @@ pub struct JobBuilder { ttl: Option, repeats: Option, due_time: Option, + failure_policy: Option, } impl JobBuilder { @@ -1052,6 +1063,7 @@ impl JobBuilder { ttl: None, repeats: None, due_time: None, + failure_policy: None, } } @@ -1080,6 +1092,11 @@ impl JobBuilder { self } + pub fn with_failure_policy(mut self, policy: JobFailurePolicy) -> Self { + self.failure_policy = Some(policy); + self + } + pub fn build(self) -> Job { Job { schedule: self.schedule, @@ -1088,6 +1105,57 @@ impl JobBuilder { ttl: self.ttl, repeats: self.repeats, due_time: self.due_time, + failure_policy: self.failure_policy, + } + } +} + +// Enum for a job failure policy +pub enum JobFailurePolicyType { + Drop {}, + Constant {}, +} + +pub struct JobFailurePolicyBuilder { + policy: JobFailurePolicyType, + pub retry_interval: Option, + pub max_retries: Option, +} + +impl JobFailurePolicyBuilder { + pub fn new(policy: JobFailurePolicyType) -> Self { + JobFailurePolicyBuilder { + policy, + retry_interval: None, + max_retries: None, + } + } + + pub fn with_retry_interval(mut self, interval: Duration) -> Self { + // Convert interval string (e.g., "5s") to ProstDuration + self.retry_interval = Some(interval); + self + } + + pub fn with_max_retries(mut self, max_retries: u32) -> Self { + self.max_retries = Some(max_retries); + self + } + + pub fn build(self) -> common_v1::JobFailurePolicy { + match self.policy { + JobFailurePolicyType::Drop {} => common_v1::JobFailurePolicy { + policy: Some(Policy::Drop(Default::default())), + }, + JobFailurePolicyType::Constant {} => JobFailurePolicy { + policy: Some(Policy::Constant(JobFailurePolicyConstant { + interval: self.retry_interval.map(|interval| { + prost_types::Duration::try_from(interval) + .expect("Failed to convert Duration") + }), + max_retries: self.max_retries, + })), + }, } } } diff --git a/dapr/src/dapr/dapr.proto.common.v1.rs b/dapr/src/dapr/dapr.proto.common.v1.rs index f668176..9636dd4 100644 --- a/dapr/src/dapr/dapr.proto.common.v1.rs +++ b/dapr/src/dapr/dapr.proto.common.v1.rs @@ -20,17 +20,7 @@ pub mod http_extension { /// Type of HTTP 1.1 Methods /// RFC 7231: /// RFC 5789: - #[derive( - Clone, - Copy, - Debug, - PartialEq, - Eq, - Hash, - PartialOrd, - Ord, - ::prost::Enumeration - )] + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum Verb { None = 0, @@ -148,10 +138,8 @@ pub struct StateItem { pub etag: ::core::option::Option, /// The metadata which will be passed to state store component. #[prost(map = "string, string", tag = "4")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, /// Options for concurrency and consistency to save the state. #[prost(message, optional, tag = "5")] pub options: ::core::option::Option, @@ -174,17 +162,7 @@ pub struct StateOptions { /// Nested message and enum types in `StateOptions`. pub mod state_options { /// Enum describing the supported concurrency for state. - #[derive( - Clone, - Copy, - Debug, - PartialEq, - Eq, - Hash, - PartialOrd, - Ord, - ::prost::Enumeration - )] + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum StateConcurrency { ConcurrencyUnspecified = 0, @@ -214,17 +192,7 @@ pub mod state_options { } } /// Enum describing the supported consistency for state. - #[derive( - Clone, - Copy, - Debug, - PartialEq, - Eq, - Hash, - PartialOrd, - Ord, - ::prost::Enumeration - )] + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum StateConsistency { ConsistencyUnspecified = 0, @@ -265,8 +233,38 @@ pub struct ConfigurationItem { pub version: ::prost::alloc::string::String, /// the metadata which will be passed to/from configuration store component. #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, +} +/// JobFailurePolicy defines the policy to apply when a job fails to trigger. +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct JobFailurePolicy { + /// policy is the policy to apply when a job fails to trigger. + #[prost(oneof = "job_failure_policy::Policy", tags = "1, 2")] + pub policy: ::core::option::Option, +} +/// Nested message and enum types in `JobFailurePolicy`. +pub mod job_failure_policy { + /// policy is the policy to apply when a job fails to trigger. + #[derive(Clone, Copy, PartialEq, ::prost::Oneof)] + pub enum Policy { + #[prost(message, tag = "1")] + Drop(super::JobFailurePolicyDrop), + #[prost(message, tag = "2")] + Constant(super::JobFailurePolicyConstant), + } +} +/// JobFailurePolicyDrop is a policy which drops the job tick when the job fails to trigger. +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct JobFailurePolicyDrop {} +/// JobFailurePolicyConstant is a policy which retries the job at a consistent interval when the job fails to trigger. +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct JobFailurePolicyConstant { + /// interval is the constant delay to wait before retrying the job. + #[prost(message, optional, tag = "1")] + pub interval: ::core::option::Option<::prost_types::Duration>, + /// max_retries is the optional maximum number of retries to attempt before giving up. + /// If unset, the Job will be retried indefinitely. + #[prost(uint32, optional, tag = "2")] + pub max_retries: ::core::option::Option, } diff --git a/dapr/src/dapr/dapr.proto.runtime.v1.rs b/dapr/src/dapr/dapr.proto.runtime.v1.rs index 2e912b4..0f27b65 100644 --- a/dapr/src/dapr/dapr.proto.runtime.v1.rs +++ b/dapr/src/dapr/dapr.proto.runtime.v1.rs @@ -72,23 +72,16 @@ pub struct TopicEventRequest { #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct TopicEventResponse { /// The list of output bindings. - #[prost(enumeration = "topic_event_response::TopicEventResponseStatus", tag = "1")] + #[prost( + enumeration = "topic_event_response::TopicEventResponseStatus", + tag = "1" + )] pub status: i32, } /// Nested message and enum types in `TopicEventResponse`. pub mod topic_event_response { /// TopicEventResponseStatus allows apps to have finer control over handling of the message. - #[derive( - Clone, - Copy, - Debug, - PartialEq, - Eq, - Hash, - PartialOrd, - Ord, - ::prost::Enumeration - )] + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum TopicEventResponseStatus { /// SUCCESS is the default behavior: message is acknowledged and not retried or logged. @@ -157,10 +150,8 @@ pub struct TopicEventBulkRequestEntry { pub content_type: ::prost::alloc::string::String, /// The metadata associated with the event. #[prost(map = "string, string", tag = "5")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, /// The content of the event. #[prost(oneof = "topic_event_bulk_request_entry::Event", tags = "2, 3")] pub event: ::core::option::Option, @@ -187,10 +178,8 @@ pub struct TopicEventBulkRequest { pub entries: ::prost::alloc::vec::Vec, /// The metadata associated with the this bulk request. #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, /// The pubsub topic which publisher sent to. #[prost(string, tag = "4")] pub topic: ::prost::alloc::string::String, @@ -213,7 +202,10 @@ pub struct TopicEventBulkResponseEntry { #[prost(string, tag = "1")] pub entry_id: ::prost::alloc::string::String, /// The status of the response. - #[prost(enumeration = "topic_event_response::TopicEventResponseStatus", tag = "2")] + #[prost( + enumeration = "topic_event_response::TopicEventResponseStatus", + tag = "2" + )] pub status: i32, } /// AppBulkResponse is response from app on published message @@ -234,10 +226,8 @@ pub struct BindingEventRequest { pub data: ::prost::alloc::vec::Vec, /// The metadata set by the input binging components. #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// BindingEventResponse includes operations to save state or /// send data to output bindings optionally. @@ -257,23 +247,16 @@ pub struct BindingEventResponse { pub data: ::prost::alloc::vec::Vec, /// The concurrency of output bindings to send data to /// "to" output bindings list. The default is SEQUENTIAL. - #[prost(enumeration = "binding_event_response::BindingEventConcurrency", tag = "5")] + #[prost( + enumeration = "binding_event_response::BindingEventConcurrency", + tag = "5" + )] pub concurrency: i32, } /// Nested message and enum types in `BindingEventResponse`. pub mod binding_event_response { /// BindingEventConcurrency is the kind of concurrency - #[derive( - Clone, - Copy, - Debug, - PartialEq, - Eq, - Hash, - PartialOrd, - Ord, - ::prost::Enumeration - )] + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum BindingEventConcurrency { /// SEQUENTIAL sends data to output bindings specified in "to" sequentially. @@ -320,10 +303,8 @@ pub struct TopicSubscription { pub topic: ::prost::alloc::string::String, /// The optional properties used for this topic's subscription e.g. session id #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, /// The optional routing rules to match against. In the gRPC interface, OnTopicEvent /// is still invoked but the matching path is sent in the TopicEventRequest. #[prost(message, optional, tag = "5")] @@ -388,10 +369,10 @@ pub mod app_callback_client { dead_code, missing_docs, clippy::wildcard_imports, - clippy::let_unit_value, + clippy::let_unit_value )] - use tonic::codegen::*; use tonic::codegen::http::Uri; + use tonic::codegen::*; /// AppCallback V1 allows user application to interact with Dapr runtime. /// User application needs to implement AppCallback service if it needs to /// receive message from dapr runtime. @@ -438,9 +419,8 @@ pub mod app_callback_client { >::ResponseBody, >, >, - , - >>::Error: Into + std::marker::Send + std::marker::Sync, + >>::Error: + Into + std::marker::Send + std::marker::Sync, { AppCallbackClient::new(InterceptedService::new(inner, interceptor)) } @@ -478,30 +458,22 @@ pub mod app_callback_client { /// Invokes service method with InvokeRequest. pub async fn on_invoke( &mut self, - request: impl tonic::IntoRequest< - super::super::super::common::v1::InvokeRequest, - >, + request: impl tonic::IntoRequest, ) -> std::result::Result< tonic::Response, tonic::Status, > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.AppCallback/OnInvoke", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.AppCallback/OnInvoke"); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.AppCallback", "OnInvoke"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.AppCallback", + "OnInvoke", + )); self.inner.unary(req, path, codec).await } /// Lists all topics subscribed by this app. @@ -512,83 +484,58 @@ pub mod app_callback_client { tonic::Response, tonic::Status, > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.AppCallback/ListTopicSubscriptions", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.AppCallback", - "ListTopicSubscriptions", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.AppCallback", + "ListTopicSubscriptions", + )); self.inner.unary(req, path, codec).await } /// Subscribes events from Pubsub pub async fn on_topic_event( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.AppCallback/OnTopicEvent", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.AppCallback", "OnTopicEvent"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.AppCallback", + "OnTopicEvent", + )); self.inner.unary(req, path, codec).await } /// Lists all input bindings subscribed by this app. pub async fn list_input_bindings( &mut self, request: impl tonic::IntoRequest<()>, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.AppCallback/ListInputBindings", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.AppCallback", - "ListInputBindings", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.AppCallback", + "ListInputBindings", + )); self.inner.unary(req, path, codec).await } /// Listens events from the input bindings @@ -598,30 +545,20 @@ pub mod app_callback_client { pub async fn on_binding_event( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.AppCallback/OnBindingEvent", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.AppCallback", - "OnBindingEvent", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.AppCallback", + "OnBindingEvent", + )); self.inner.unary(req, path, codec).await } } @@ -633,10 +570,10 @@ pub mod app_callback_health_check_client { dead_code, missing_docs, clippy::wildcard_imports, - clippy::let_unit_value, + clippy::let_unit_value )] - use tonic::codegen::*; use tonic::codegen::http::Uri; + use tonic::codegen::*; /// AppCallbackHealthCheck V1 is an optional extension to AppCallback V1 to implement /// the HealthCheck method. #[derive(Debug, Clone)] @@ -682,13 +619,10 @@ pub mod app_callback_health_check_client { >::ResponseBody, >, >, - , - >>::Error: Into + std::marker::Send + std::marker::Sync, + >>::Error: + Into + std::marker::Send + std::marker::Sync, { - AppCallbackHealthCheckClient::new( - InterceptedService::new(inner, interceptor), - ) + AppCallbackHealthCheckClient::new(InterceptedService::new(inner, interceptor)) } /// Compress requests with the given encoding. /// @@ -725,30 +659,20 @@ pub mod app_callback_health_check_client { pub async fn health_check( &mut self, request: impl tonic::IntoRequest<()>, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.AppCallbackHealthCheck/HealthCheck", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.AppCallbackHealthCheck", - "HealthCheck", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.AppCallbackHealthCheck", + "HealthCheck", + )); self.inner.unary(req, path, codec).await } } @@ -760,10 +684,10 @@ pub mod app_callback_alpha_client { dead_code, missing_docs, clippy::wildcard_imports, - clippy::let_unit_value, + clippy::let_unit_value )] - use tonic::codegen::*; use tonic::codegen::http::Uri; + use tonic::codegen::*; /// AppCallbackAlpha V1 is an optional extension to AppCallback V1 to opt /// for Alpha RPCs. #[derive(Debug, Clone)] @@ -809,9 +733,8 @@ pub mod app_callback_alpha_client { >::ResponseBody, >, >, - , - >>::Error: Into + std::marker::Send + std::marker::Sync, + >>::Error: + Into + std::marker::Send + std::marker::Sync, { AppCallbackAlphaClient::new(InterceptedService::new(inner, interceptor)) } @@ -850,60 +773,39 @@ pub mod app_callback_alpha_client { pub async fn on_bulk_topic_event_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.AppCallbackAlpha/OnBulkTopicEventAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.AppCallbackAlpha", - "OnBulkTopicEventAlpha1", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.AppCallbackAlpha", + "OnBulkTopicEventAlpha1", + )); self.inner.unary(req, path, codec).await } /// Sends job back to the app's endpoint at trigger time. pub async fn on_job_event_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.AppCallbackAlpha/OnJobEventAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.AppCallbackAlpha", - "OnJobEventAlpha1", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.AppCallbackAlpha", + "OnJobEventAlpha1", + )); self.inner.unary(req, path, codec).await } } @@ -915,7 +817,7 @@ pub mod app_callback_server { dead_code, missing_docs, clippy::wildcard_imports, - clippy::let_unit_value, + clippy::let_unit_value )] use tonic::codegen::*; /// Generated trait containing gRPC methods that should be implemented for use with AppCallbackServer. @@ -941,18 +843,12 @@ pub mod app_callback_server { async fn on_topic_event( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Lists all input bindings subscribed by this app. async fn list_input_bindings( &self, request: tonic::Request<()>, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Listens events from the input bindings /// /// User application can save the states or send the events to the output @@ -960,10 +856,7 @@ pub mod app_callback_server { async fn on_binding_event( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; } /// AppCallback V1 allows user application to interact with Dapr runtime. /// User application needs to implement AppCallback service if it needs to @@ -989,10 +882,7 @@ pub mod app_callback_server { max_encoding_message_size: None, } } - pub fn with_interceptor( - inner: T, - interceptor: F, - ) -> InterceptedService + pub fn with_interceptor(inner: T, interceptor: F) -> InterceptedService where F: tonic::service::Interceptor, { @@ -1047,26 +937,19 @@ pub mod app_callback_server { "/dapr.proto.runtime.v1.AppCallback/OnInvoke" => { #[allow(non_camel_case_types)] struct OnInvokeSvc(pub Arc); - impl< - T: AppCallback, - > tonic::server::UnaryService< - super::super::super::common::v1::InvokeRequest, - > for OnInvokeSvc { + impl + tonic::server::UnaryService + for OnInvokeSvc + { type Response = super::super::super::common::v1::InvokeResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, - request: tonic::Request< - super::super::super::common::v1::InvokeRequest, - >, + request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::on_invoke(&inner, request).await - }; + let fut = + async move { ::on_invoke(&inner, request).await }; Box::pin(fut) } } @@ -1095,21 +978,13 @@ pub mod app_callback_server { "/dapr.proto.runtime.v1.AppCallback/ListTopicSubscriptions" => { #[allow(non_camel_case_types)] struct ListTopicSubscriptionsSvc(pub Arc); - impl tonic::server::UnaryService<()> - for ListTopicSubscriptionsSvc { + impl tonic::server::UnaryService<()> for ListTopicSubscriptionsSvc { type Response = super::ListTopicSubscriptionsResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call(&mut self, request: tonic::Request<()>) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::list_topic_subscriptions( - &inner, - request, - ) - .await + ::list_topic_subscriptions(&inner, request).await }; Box::pin(fut) } @@ -1139,15 +1014,9 @@ pub mod app_callback_server { "/dapr.proto.runtime.v1.AppCallback/OnTopicEvent" => { #[allow(non_camel_case_types)] struct OnTopicEventSvc(pub Arc); - impl< - T: AppCallback, - > tonic::server::UnaryService - for OnTopicEventSvc { + impl tonic::server::UnaryService for OnTopicEventSvc { type Response = super::TopicEventResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -1184,18 +1053,13 @@ pub mod app_callback_server { "/dapr.proto.runtime.v1.AppCallback/ListInputBindings" => { #[allow(non_camel_case_types)] struct ListInputBindingsSvc(pub Arc); - impl tonic::server::UnaryService<()> - for ListInputBindingsSvc { + impl tonic::server::UnaryService<()> for ListInputBindingsSvc { type Response = super::ListInputBindingsResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call(&mut self, request: tonic::Request<()>) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::list_input_bindings(&inner, request) - .await + ::list_input_bindings(&inner, request).await }; Box::pin(fut) } @@ -1225,15 +1089,11 @@ pub mod app_callback_server { "/dapr.proto.runtime.v1.AppCallback/OnBindingEvent" => { #[allow(non_camel_case_types)] struct OnBindingEventSvc(pub Arc); - impl< - T: AppCallback, - > tonic::server::UnaryService - for OnBindingEventSvc { + impl tonic::server::UnaryService + for OnBindingEventSvc + { type Response = super::BindingEventResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -1267,23 +1127,19 @@ pub mod app_callback_server { }; Box::pin(fut) } - _ => { - Box::pin(async move { - let mut response = http::Response::new(empty_body()); - let headers = response.headers_mut(); - headers - .insert( - tonic::Status::GRPC_STATUS, - (tonic::Code::Unimplemented as i32).into(), - ); - headers - .insert( - http::header::CONTENT_TYPE, - tonic::metadata::GRPC_CONTENT_TYPE, - ); - Ok(response) - }) - } + _ => Box::pin(async move { + let mut response = http::Response::new(empty_body()); + let headers = response.headers_mut(); + headers.insert( + tonic::Status::GRPC_STATUS, + (tonic::Code::Unimplemented as i32).into(), + ); + headers.insert( + http::header::CONTENT_TYPE, + tonic::metadata::GRPC_CONTENT_TYPE, + ); + Ok(response) + }), } } } @@ -1312,7 +1168,7 @@ pub mod app_callback_health_check_server { dead_code, missing_docs, clippy::wildcard_imports, - clippy::let_unit_value, + clippy::let_unit_value )] use tonic::codegen::*; /// Generated trait containing gRPC methods that should be implemented for use with AppCallbackHealthCheckServer. @@ -1322,10 +1178,7 @@ pub mod app_callback_health_check_server { async fn health_check( &self, request: tonic::Request<()>, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; } /// AppCallbackHealthCheck V1 is an optional extension to AppCallback V1 to implement /// the HealthCheck method. @@ -1350,10 +1203,7 @@ pub mod app_callback_health_check_server { max_encoding_message_size: None, } } - pub fn with_interceptor( - inner: T, - interceptor: F, - ) -> InterceptedService + pub fn with_interceptor(inner: T, interceptor: F) -> InterceptedService where F: tonic::service::Interceptor, { @@ -1388,8 +1238,7 @@ pub mod app_callback_health_check_server { self } } - impl tonic::codegen::Service> - for AppCallbackHealthCheckServer + impl tonic::codegen::Service> for AppCallbackHealthCheckServer where T: AppCallbackHealthCheck, B: Body + std::marker::Send + 'static, @@ -1409,18 +1258,13 @@ pub mod app_callback_health_check_server { "/dapr.proto.runtime.v1.AppCallbackHealthCheck/HealthCheck" => { #[allow(non_camel_case_types)] struct HealthCheckSvc(pub Arc); - impl tonic::server::UnaryService<()> - for HealthCheckSvc { + impl tonic::server::UnaryService<()> for HealthCheckSvc { type Response = super::HealthCheckResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call(&mut self, request: tonic::Request<()>) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::health_check(&inner, request) - .await + ::health_check(&inner, request).await }; Box::pin(fut) } @@ -1447,23 +1291,19 @@ pub mod app_callback_health_check_server { }; Box::pin(fut) } - _ => { - Box::pin(async move { - let mut response = http::Response::new(empty_body()); - let headers = response.headers_mut(); - headers - .insert( - tonic::Status::GRPC_STATUS, - (tonic::Code::Unimplemented as i32).into(), - ); - headers - .insert( - http::header::CONTENT_TYPE, - tonic::metadata::GRPC_CONTENT_TYPE, - ); - Ok(response) - }) - } + _ => Box::pin(async move { + let mut response = http::Response::new(empty_body()); + let headers = response.headers_mut(); + headers.insert( + tonic::Status::GRPC_STATUS, + (tonic::Code::Unimplemented as i32).into(), + ); + headers.insert( + http::header::CONTENT_TYPE, + tonic::metadata::GRPC_CONTENT_TYPE, + ); + Ok(response) + }), } } } @@ -1492,7 +1332,7 @@ pub mod app_callback_alpha_server { dead_code, missing_docs, clippy::wildcard_imports, - clippy::let_unit_value, + clippy::let_unit_value )] use tonic::codegen::*; /// Generated trait containing gRPC methods that should be implemented for use with AppCallbackAlphaServer. @@ -1502,18 +1342,12 @@ pub mod app_callback_alpha_server { async fn on_bulk_topic_event_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Sends job back to the app's endpoint at trigger time. async fn on_job_event_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; } /// AppCallbackAlpha V1 is an optional extension to AppCallback V1 to opt /// for Alpha RPCs. @@ -1538,10 +1372,7 @@ pub mod app_callback_alpha_server { max_encoding_message_size: None, } } - pub fn with_interceptor( - inner: T, - interceptor: F, - ) -> InterceptedService + pub fn with_interceptor(inner: T, interceptor: F) -> InterceptedService where F: tonic::service::Interceptor, { @@ -1596,25 +1427,19 @@ pub mod app_callback_alpha_server { "/dapr.proto.runtime.v1.AppCallbackAlpha/OnBulkTopicEventAlpha1" => { #[allow(non_camel_case_types)] struct OnBulkTopicEventAlpha1Svc(pub Arc); - impl< - T: AppCallbackAlpha, - > tonic::server::UnaryService - for OnBulkTopicEventAlpha1Svc { + impl + tonic::server::UnaryService + for OnBulkTopicEventAlpha1Svc + { type Response = super::TopicEventBulkResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::on_bulk_topic_event_alpha1( - &inner, - request, - ) + ::on_bulk_topic_event_alpha1(&inner, request) .await }; Box::pin(fut) @@ -1645,26 +1470,18 @@ pub mod app_callback_alpha_server { "/dapr.proto.runtime.v1.AppCallbackAlpha/OnJobEventAlpha1" => { #[allow(non_camel_case_types)] struct OnJobEventAlpha1Svc(pub Arc); - impl< - T: AppCallbackAlpha, - > tonic::server::UnaryService - for OnJobEventAlpha1Svc { + impl tonic::server::UnaryService + for OnJobEventAlpha1Svc + { type Response = super::JobEventResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::on_job_event_alpha1( - &inner, - request, - ) - .await + ::on_job_event_alpha1(&inner, request).await }; Box::pin(fut) } @@ -1691,23 +1508,19 @@ pub mod app_callback_alpha_server { }; Box::pin(fut) } - _ => { - Box::pin(async move { - let mut response = http::Response::new(empty_body()); - let headers = response.headers_mut(); - headers - .insert( - tonic::Status::GRPC_STATUS, - (tonic::Code::Unimplemented as i32).into(), - ); - headers - .insert( - http::header::CONTENT_TYPE, - tonic::metadata::GRPC_CONTENT_TYPE, - ); - Ok(response) - }) - } + _ => Box::pin(async move { + let mut response = http::Response::new(empty_body()); + let headers = response.headers_mut(); + headers.insert( + tonic::Status::GRPC_STATUS, + (tonic::Code::Unimplemented as i32).into(), + ); + headers.insert( + http::header::CONTENT_TYPE, + tonic::metadata::GRPC_CONTENT_TYPE, + ); + Ok(response) + }), } } } @@ -1756,10 +1569,8 @@ pub struct GetStateRequest { pub consistency: i32, /// The metadata which will be sent to state store components. #[prost(map = "string, string", tag = "4")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// GetBulkStateRequest is the message to get a list of key-value states from specific state store. #[derive(Clone, PartialEq, ::prost::Message)] @@ -1775,10 +1586,8 @@ pub struct GetBulkStateRequest { pub parallelism: i32, /// The metadata which will be sent to state store components. #[prost(map = "string, string", tag = "4")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// GetBulkStateResponse is the response conveying the list of state values. #[derive(Clone, PartialEq, ::prost::Message)] @@ -1806,10 +1615,8 @@ pub struct BulkStateItem { pub error: ::prost::alloc::string::String, /// The metadata which will be sent to app. #[prost(map = "string, string", tag = "5")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// GetStateResponse is the response conveying the state value and etag. #[derive(Clone, PartialEq, ::prost::Message)] @@ -1823,10 +1630,8 @@ pub struct GetStateResponse { pub etag: ::prost::alloc::string::String, /// The metadata which will be sent to app. #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// DeleteStateRequest is the message to delete key-value states in the specific state store. #[derive(Clone, PartialEq, ::prost::Message)] @@ -1847,10 +1652,8 @@ pub struct DeleteStateRequest { pub options: ::core::option::Option, /// The metadata which will be sent to state store components. #[prost(map = "string, string", tag = "5")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// DeleteBulkStateRequest is the message to delete a list of key-value states from specific state store. #[derive(Clone, PartialEq, ::prost::Message)] @@ -1883,10 +1686,8 @@ pub struct QueryStateRequest { pub query: ::prost::alloc::string::String, /// The metadata which will be sent to state store components. #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueryStateItem { @@ -1915,10 +1716,8 @@ pub struct QueryStateResponse { pub token: ::prost::alloc::string::String, /// The metadata which will be sent to app. #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// PublishEventRequest is the message to publish event data to pubsub topic #[derive(Clone, PartialEq, ::prost::Message)] @@ -1940,10 +1739,8 @@ pub struct PublishEventRequest { /// metadata property: /// - key : the key of the message. #[prost(map = "string, string", tag = "5")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// BulkPublishRequest is the message to bulk publish events to pubsub topic #[derive(Clone, PartialEq, ::prost::Message)] @@ -1959,10 +1756,8 @@ pub struct BulkPublishRequest { pub entries: ::prost::alloc::vec::Vec, /// The request level metadata passing to to the pubsub components #[prost(map = "string, string", tag = "4")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// BulkPublishRequestEntry is the message containing the event to be bulk published #[derive(Clone, PartialEq, ::prost::Message)] @@ -1978,10 +1773,8 @@ pub struct BulkPublishRequestEntry { pub content_type: ::prost::alloc::string::String, /// The event level metadata passing to the pubsub component #[prost(map = "string, string", tag = "4")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// BulkPublishResponse is the message returned from a BulkPublishEvent call #[derive(Clone, PartialEq, ::prost::Message)] @@ -2039,10 +1832,8 @@ pub struct SubscribeTopicEventsRequestInitialAlpha1 { /// metadata property: /// - key : the key of the message. #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, /// dead_letter_topic is the topic to which messages that fail to be processed /// are sent. #[prost(string, optional, tag = "4")] @@ -2103,10 +1894,8 @@ pub struct InvokeBindingRequest { /// have a default time to live. The message ttl overrides any value /// in the binding definition. #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, /// The name of the operation type for the binding to invoke #[prost(string, tag = "4")] pub operation: ::prost::alloc::string::String, @@ -2119,10 +1908,8 @@ pub struct InvokeBindingResponse { pub data: ::prost::alloc::vec::Vec, /// The metadata returned from an external system #[prost(map = "string, string", tag = "2")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// GetSecretRequest is the message to get secret from secret store. #[derive(Clone, PartialEq, ::prost::Message)] @@ -2135,10 +1922,8 @@ pub struct GetSecretRequest { pub key: ::prost::alloc::string::String, /// The metadata which will be sent to secret store components. #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// GetSecretResponse is the response message to convey the requested secret. #[derive(Clone, PartialEq, ::prost::Message)] @@ -2146,10 +1931,8 @@ pub struct GetSecretResponse { /// data is the secret value. Some secret store, such as kubernetes secret /// store, can save multiple secrets for single secret key. #[prost(map = "string, string", tag = "1")] - pub data: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub data: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// GetBulkSecretRequest is the message to get the secrets from secret store. #[derive(Clone, PartialEq, ::prost::Message)] @@ -2159,19 +1942,15 @@ pub struct GetBulkSecretRequest { pub store_name: ::prost::alloc::string::String, /// The metadata which will be sent to secret store components. #[prost(map = "string, string", tag = "2")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// SecretResponse is a map of decrypted string/string values #[derive(Clone, PartialEq, ::prost::Message)] pub struct SecretResponse { #[prost(map = "string, string", tag = "1")] - pub secrets: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub secrets: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// GetBulkSecretResponse is the response message to convey the requested secrets. #[derive(Clone, PartialEq, ::prost::Message)] @@ -2179,10 +1958,7 @@ pub struct GetBulkSecretResponse { /// data hold the secret values. Some secret store, such as kubernetes secret /// store, can save multiple secrets for single secret key. #[prost(map = "string, message", tag = "1")] - pub data: ::std::collections::HashMap< - ::prost::alloc::string::String, - SecretResponse, - >, + pub data: ::std::collections::HashMap<::prost::alloc::string::String, SecretResponse>, } /// TransactionalStateOperation is the message to execute a specified operation with a key-value pair. #[derive(Clone, PartialEq, ::prost::Message)] @@ -2205,10 +1981,8 @@ pub struct ExecuteStateTransactionRequest { pub operations: ::prost::alloc::vec::Vec, /// The metadata used for transactional operations. #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// RegisterActorTimerRequest is the message to register a timer for an actor of a given type and id. #[derive(Clone, PartialEq, ::prost::Message)] @@ -2285,10 +2059,8 @@ pub struct GetActorStateResponse { pub data: ::prost::alloc::vec::Vec, /// The metadata which will be sent to app. #[prost(map = "string, string", tag = "2")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// ExecuteActorStateTransactionRequest is the message to execute multiple operations on a specified actor. #[derive(Clone, PartialEq, ::prost::Message)] @@ -2314,10 +2086,8 @@ pub struct TransactionalActorStateOperation { /// Common metadata property: /// - ttlInSeconds : the time to live in seconds for the stored value. #[prost(map = "string, string", tag = "4")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// InvokeActorRequest is the message to call an actor. #[derive(Clone, PartialEq, ::prost::Message)] @@ -2331,10 +2101,8 @@ pub struct InvokeActorRequest { #[prost(bytes = "vec", tag = "4")] pub data: ::prost::alloc::vec::Vec, #[prost(map = "string, string", tag = "5")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// InvokeActorResponse is the method that returns an actor invocation response. #[derive(Clone, PartialEq, ::prost::Message)] @@ -2359,10 +2127,8 @@ pub struct GetMetadataResponse { #[prost(message, repeated, tag = "3")] pub registered_components: ::prost::alloc::vec::Vec, #[prost(map = "string, string", tag = "4")] - pub extended_metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub extended_metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, #[prost(message, repeated, tag = "5")] pub subscriptions: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag = "6")] @@ -2403,17 +2169,7 @@ pub struct ActorRuntime { } /// Nested message and enum types in `ActorRuntime`. pub mod actor_runtime { - #[derive( - Clone, - Copy, - Debug, - PartialEq, - Eq, - Hash, - PartialOrd, - Ord, - ::prost::Enumeration - )] + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum ActorRuntimeStatus { /// Indicates that the actor runtime is still being initialized. @@ -2501,10 +2257,8 @@ pub struct PubsubSubscription { #[prost(string, tag = "2")] pub topic: ::prost::alloc::string::String, #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, #[prost(message, optional, tag = "4")] pub rules: ::core::option::Option, #[prost(string, tag = "5")] @@ -2544,10 +2298,8 @@ pub struct GetConfigurationRequest { pub keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, /// Optional. The metadata which will be sent to configuration store components. #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// GetConfigurationResponse is the response conveying the list of configuration values. /// It should be the FULL configuration of specified application which contains all of its configuration items. @@ -2572,10 +2324,8 @@ pub struct SubscribeConfigurationRequest { pub keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, /// The metadata which will be sent to configuration store components. #[prost(map = "string, string", tag = "3")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// UnSubscribeConfigurationRequest is the message to stop watching the key-value configuration. #[derive(Clone, PartialEq, ::prost::Message)] @@ -2658,17 +2408,7 @@ pub struct UnlockResponse { } /// Nested message and enum types in `UnlockResponse`. pub mod unlock_response { - #[derive( - Clone, - Copy, - Debug, - PartialEq, - Eq, - Hash, - PartialOrd, - Ord, - ::prost::Enumeration - )] + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum Status { Success = 0, @@ -2716,17 +2456,7 @@ pub struct SubtleGetKeyRequest { } /// Nested message and enum types in `SubtleGetKeyRequest`. pub mod subtle_get_key_request { - #[derive( - Clone, - Copy, - Debug, - PartialEq, - Eq, - Hash, - PartialOrd, - Ord, - ::prost::Enumeration - )] + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum KeyFormat { /// PEM (PKIX) (default) @@ -3055,10 +2785,8 @@ pub struct GetWorkflowResponse { pub runtime_status: ::prost::alloc::string::String, /// Additional component-specific properties of the workflow instance. #[prost(map = "string, string", tag = "6")] - pub properties: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub properties: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } /// StartWorkflowRequest is the request for StartWorkflowBeta1. #[derive(Clone, PartialEq, ::prost::Message)] @@ -3074,10 +2802,8 @@ pub struct StartWorkflowRequest { pub workflow_name: ::prost::alloc::string::String, /// Additional component-specific options for starting the workflow instance. #[prost(map = "string, string", tag = "4")] - pub options: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub options: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, /// Input data for the workflow instance. #[prost(bytes = "vec", tag = "5")] pub input: ::prost::alloc::vec::Vec, @@ -3198,6 +2924,9 @@ pub struct Job { /// when the job is triggered. #[prost(message, optional, tag = "6")] pub data: ::core::option::Option<::prost_types::Any>, + /// failure_policy is the optional policy for handling job failures. + #[prost(message, optional, tag = "7")] + pub failure_policy: ::core::option::Option, } /// ScheduleJobRequest is the message to create/schedule the job. #[derive(Clone, PartialEq, ::prost::Message)] @@ -3205,6 +2934,9 @@ pub struct ScheduleJobRequest { /// The job details. #[prost(message, optional, tag = "1")] pub job: ::core::option::Option, + /// If true, allows this job to overwrite an existing job with the same name. + #[prost(bool, tag = "2")] + pub overwrite: bool, } /// ScheduleJobResponse is the message response to create/schedule the job. /// @@ -3251,16 +2983,11 @@ pub struct ConversationRequest { pub inputs: ::prost::alloc::vec::Vec, /// Parameters for all custom fields. #[prost(map = "string, message", tag = "4")] - pub parameters: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost_types::Any, - >, + pub parameters: ::std::collections::HashMap<::prost::alloc::string::String, ::prost_types::Any>, /// The metadata passing to conversation components. #[prost(map = "string, string", tag = "5")] - pub metadata: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost::alloc::string::String, - >, + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, /// Scrub PII data that comes back from the LLM #[prost(bool, optional, tag = "6")] pub scrub_pii: ::core::option::Option, @@ -3268,6 +2995,53 @@ pub struct ConversationRequest { #[prost(double, optional, tag = "7")] pub temperature: ::core::option::Option, } +/// ConversationRequestAlpha2 is the new request object for Conversation. +/// Many of these fields are inspired by openai.ChatCompletionNewParams +/// +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationRequestAlpha2 { + /// The name of Conversation component + #[prost(string, tag = "1")] + pub name: ::prost::alloc::string::String, + /// The ID of an existing chat (like in ChatGPT) + #[prost(string, optional, tag = "2")] + pub context_id: ::core::option::Option<::prost::alloc::string::String>, + /// Inputs for the conversation, support multiple input in one time. + /// This is the revamped conversation inputs better matching openai. + #[prost(message, repeated, tag = "3")] + pub inputs: ::prost::alloc::vec::Vec, + /// Parameters for all custom fields. + #[prost(map = "string, message", tag = "4")] + pub parameters: ::std::collections::HashMap<::prost::alloc::string::String, ::prost_types::Any>, + /// The metadata passing to conversation components. + #[prost(map = "string, string", tag = "5")] + pub metadata: + ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, + /// Scrub PII data that comes back from the LLM + #[prost(bool, optional, tag = "6")] + pub scrub_pii: ::core::option::Option, + /// Temperature for the LLM to optimize for creativity or predictability + #[prost(double, optional, tag = "7")] + pub temperature: ::core::option::Option, + /// Tools register the tools available to be used by the LLM during the conversation. + /// These are sent on a per request basis. + /// The tools available during the first round of the conversation + /// may be different than tools specified later on. + #[prost(message, repeated, tag = "8")] + pub tools: ::prost::alloc::vec::Vec, + /// Controls which (if any) tool is called by the model. + /// `none` means the model will not call any tool and instead generates a message. + /// `auto` means the model can pick between generating a message or calling one or more tools. + /// Alternatively, a specific tool name may be used here, and casing/syntax must match on tool name. + /// `none` is the default when no tools are present. + /// `auto` is the default if tools are present. + /// `required` requires one or more functions to be called. + /// ref: + /// ref: + #[prost(string, optional, tag = "9")] + pub tool_choice: ::core::option::Option<::prost::alloc::string::String>, +} +/// maintained for backwards compatibility #[derive(Clone, PartialEq, ::prost::Message)] pub struct ConversationInput { /// The content to send to the llm @@ -3280,6 +3054,152 @@ pub struct ConversationInput { #[prost(bool, optional, tag = "3")] pub scrub_pii: ::core::option::Option, } +/// directly inspired by openai.ChatCompletionNewParams +/// +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationInputAlpha2 { + /// The content to send to the llm + #[prost(message, repeated, tag = "1")] + pub messages: ::prost::alloc::vec::Vec, + /// Scrub PII data that goes into the LLM + #[prost(bool, optional, tag = "2")] + pub scrub_pii: ::core::option::Option, +} +/// inspired by openai.ChatCompletionMessageParamUnion +/// +/// The role field is inherent to the type of ConversationMessage, +/// and is propagated in the backend according to the underlying LLM provider type. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationMessage { + #[prost(oneof = "conversation_message::MessageTypes", tags = "1, 2, 3, 4, 5")] + pub message_types: ::core::option::Option, +} +/// Nested message and enum types in `ConversationMessage`. +pub mod conversation_message { + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum MessageTypes { + #[prost(message, tag = "1")] + OfDeveloper(super::ConversationMessageOfDeveloper), + #[prost(message, tag = "2")] + OfSystem(super::ConversationMessageOfSystem), + #[prost(message, tag = "3")] + OfUser(super::ConversationMessageOfUser), + #[prost(message, tag = "4")] + OfAssistant(super::ConversationMessageOfAssistant), + /// Note: there could be a ConversationMessageOfFunction type here too, + /// but that is deprecated in openai, so we will not support this. + #[prost(message, tag = "5")] + OfTool(super::ConversationMessageOfTool), + } +} +/// inspired by openai.ChatCompletionDeveloperMessageParam +/// +/// ConversationMessageOfDeveloper is intended to be the contents of a conversation message, +/// as the role of a developer. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationMessageOfDeveloper { + /// The name of the participant in the message. + #[prost(string, optional, tag = "1")] + pub name: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, repeated, tag = "2")] + pub content: ::prost::alloc::vec::Vec, +} +/// inspired by openai.ChatCompletionSystemMessageParam +/// +/// ConversationMessageOfSystem is intended to be the contents of a conversation message, +/// as the role of a system. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationMessageOfSystem { + #[prost(string, optional, tag = "1")] + pub name: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, repeated, tag = "2")] + pub content: ::prost::alloc::vec::Vec, +} +/// inspired by openai.ChatCompletionUserMessageParam +/// +/// ConversationMessageOfUser is intended to be the contents of a conversation message, +/// as the role of an end user. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationMessageOfUser { + #[prost(string, optional, tag = "1")] + pub name: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, repeated, tag = "2")] + pub content: ::prost::alloc::vec::Vec, +} +/// inspired by openai.ChatCompletionAssistantMessageParam +/// +/// +/// ConversationMessageOfAssistant is intended to be the contents of a conversation message, +/// as the role of an assistant. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationMessageOfAssistant { + #[prost(string, optional, tag = "1")] + pub name: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, repeated, tag = "2")] + pub content: ::prost::alloc::vec::Vec, + /// Tool calls generated by the model, such as function calls for the client to then make. + #[prost(message, repeated, tag = "3")] + pub tool_calls: ::prost::alloc::vec::Vec, +} +/// inspired by openai.ChatCompletionToolMessageParam +/// +/// ConversationMessageOfTool is intended to be the contents of a conversation message, +/// as the role of a tool. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationMessageOfTool { + /// Tool ID is helpful for tracking tool history + #[prost(string, optional, tag = "1")] + pub tool_id: ::core::option::Option<::prost::alloc::string::String>, + /// Name of tool associated with the message + #[prost(string, tag = "2")] + pub name: ::prost::alloc::string::String, + #[prost(message, repeated, tag = "3")] + pub content: ::prost::alloc::vec::Vec, +} +/// inspired by openai.ChatCompletionMessageToolCallParam and openai.ChatCompletionMessageToolCall +/// +/// +/// ConversationToolCalls is the tool call request sent from the llm to the client to then call to execute. +/// This assumes that in our api if a client makes a request that would get a tool call response from the llm, +/// that this client can also have the tool handy itself to execute it. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationToolCalls { + #[prost(string, optional, tag = "1")] + pub id: ::core::option::Option<::prost::alloc::string::String>, + #[prost(oneof = "conversation_tool_calls::ToolTypes", tags = "2")] + pub tool_types: ::core::option::Option, +} +/// Nested message and enum types in `ConversationToolCalls`. +pub mod conversation_tool_calls { + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum ToolTypes { + #[prost(message, tag = "2")] + Function(super::ConversationToolCallsOfFunction), + } +} +/// inspired by openai.ChatCompletionMessageToolCallFunctionParam +/// +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationToolCallsOfFunction { + #[prost(string, tag = "1")] + pub name: ::prost::alloc::string::String, + /// The arguments to call the function with, as generated by the model in JSON + /// format. Note that the model does not always generate valid JSON, and may + /// hallucinate parameters not defined by your function schema. Validate the + /// arguments in your code before calling your function. + #[prost(string, tag = "2")] + pub arguments: ::prost::alloc::string::String, +} +/// inspired by openai.ChatCompletionContentPartTextParam & openai.ChatCompletionDeveloperMessageParamContentUnion +/// +/// +/// Note: openai has this message be either a message of string or message of array type, +/// so instead of this, we support that in one message type instead. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationMessageContent { + #[prost(string, tag = "1")] + pub text: ::prost::alloc::string::String, +} /// ConversationResult is the result for one input. #[derive(Clone, PartialEq, ::prost::Message)] pub struct ConversationResult { @@ -3288,10 +3208,44 @@ pub struct ConversationResult { pub result: ::prost::alloc::string::String, /// Parameters for all custom fields. #[prost(map = "string, message", tag = "2")] - pub parameters: ::std::collections::HashMap< - ::prost::alloc::string::String, - ::prost_types::Any, - >, + pub parameters: ::std::collections::HashMap<::prost::alloc::string::String, ::prost_types::Any>, +} +/// inspired by openai.ChatCompletion +/// ConversationResultAlpha2 is the result for one input. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationResultAlpha2 { + /// Result for the conversation input. + #[prost(message, repeated, tag = "1")] + pub choices: ::prost::alloc::vec::Vec, +} +/// inspired by openai.ChatCompletionChoice +/// based on +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationResultChoices { + /// The reason the model stopped generating tokens. This will be `stop` if the model + /// hit a natural stop point or a provided stop sequence, `length` if the maximum + /// number of tokens specified in the request was reached, `content_filter` if + /// content was omitted due to a flag from our content filters, `tool_calls` if the + /// model called a tool. + /// Any of "stop", "length", "tool_calls", "content_filter". + #[prost(string, tag = "1")] + pub finish_reason: ::prost::alloc::string::String, + /// The index of the choice in the list of choices. + #[prost(int64, tag = "2")] + pub index: i64, + #[prost(message, optional, tag = "3")] + pub message: ::core::option::Option, +} +/// inspired by openai.ChatCompletionMessage +/// based on +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationResultMessage { + /// The contents of the message. + #[prost(string, tag = "1")] + pub content: ::prost::alloc::string::String, + /// The tool calls generated by the model. + #[prost(message, repeated, tag = "2")] + pub tool_calls: ::prost::alloc::vec::Vec, } /// ConversationResponse is the response for Conversation. #[derive(Clone, PartialEq, ::prost::Message)] @@ -3303,6 +3257,51 @@ pub struct ConversationResponse { #[prost(message, repeated, tag = "2")] pub outputs: ::prost::alloc::vec::Vec, } +/// ConversationResponseAlpha2 is the Alpha2 response for Conversation. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationResponseAlpha2 { + /// The ID of an existing chat (like in ChatGPT) + #[prost(string, optional, tag = "1")] + pub context_id: ::core::option::Option<::prost::alloc::string::String>, + /// An array of results. + #[prost(message, repeated, tag = "2")] + pub outputs: ::prost::alloc::vec::Vec, +} +/// ConversationTools are the typed tools available to be called. +/// inspired by openai.ChatCompletionToolParam +/// +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationTools { + #[prost(oneof = "conversation_tools::ToolTypes", tags = "1")] + pub tool_types: ::core::option::Option, +} +/// Nested message and enum types in `ConversationTools`. +pub mod conversation_tools { + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum ToolTypes { + #[prost(message, tag = "1")] + Function(super::ConversationToolsFunction), + } +} +/// ConversationToolsFunction is the main tool type to be used in a conversation. +/// inspired by openai.FunctionDefinitionParam +/// +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConversationToolsFunction { + /// The name of the function to be called. + #[prost(string, tag = "1")] + pub name: ::prost::alloc::string::String, + /// A description of what the function does, + /// used by the model to choose when and how to call the function. + #[prost(string, optional, tag = "2")] + pub description: ::core::option::Option<::prost::alloc::string::String>, + /// The parameters the functions accepts, described as a JSON Schema object. + /// See the [guide]() for examples, + /// and the [JSON Schema reference]() for documentation about the format. + /// Omitting `parameters` defines a function with an empty parameter list. + #[prost(message, optional, tag = "3")] + pub parameters: ::core::option::Option<::prost_types::Struct>, +} /// PubsubSubscriptionType indicates the type of subscription #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] @@ -3347,10 +3346,10 @@ pub mod dapr_client { dead_code, missing_docs, clippy::wildcard_imports, - clippy::let_unit_value, + clippy::let_unit_value )] - use tonic::codegen::*; use tonic::codegen::http::Uri; + use tonic::codegen::*; /// Dapr service provides APIs to user application to access Dapr building blocks. #[derive(Debug, Clone)] pub struct DaprClient { @@ -3382,10 +3381,7 @@ pub mod dapr_client { let inner = tonic::client::Grpc::with_origin(inner, origin); Self { inner } } - pub fn with_interceptor( - inner: T, - interceptor: F, - ) -> DaprClient> + pub fn with_interceptor(inner: T, interceptor: F) -> DaprClient> where F: tonic::service::Interceptor, T::ResponseBody: Default, @@ -3395,9 +3391,8 @@ pub mod dapr_client { >::ResponseBody, >, >, - , - >>::Error: Into + std::marker::Send + std::marker::Sync, + >>::Error: + Into + std::marker::Send + std::marker::Sync, { DaprClient::new(InterceptedService::new(inner, interceptor)) } @@ -3441,43 +3436,29 @@ pub mod dapr_client { tonic::Response, tonic::Status, > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/InvokeService", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/InvokeService"); let mut req = request.into_request(); - req.extensions_mut() - .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "InvokeService")); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "InvokeService", + )); self.inner.unary(req, path, codec).await } /// Gets the state for a specific key. pub async fn get_state( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/GetState", - ); + let path = http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/GetState"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "GetState")); @@ -3487,25 +3468,19 @@ pub mod dapr_client { pub async fn get_bulk_state( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/GetBulkState", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/GetBulkState"); let mut req = request.into_request(); - req.extensions_mut() - .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "GetBulkState")); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "GetBulkState", + )); self.inner.unary(req, path, codec).await } /// Saves the state for a specific key. @@ -3513,18 +3488,12 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/SaveState", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/SaveState"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "SaveState")); @@ -3534,27 +3503,20 @@ pub mod dapr_client { pub async fn query_state_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/QueryStateAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "QueryStateAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "QueryStateAlpha1", + )); self.inner.unary(req, path, codec).await } /// Deletes the state for a specific key. @@ -3562,18 +3524,12 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/DeleteState", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/DeleteState"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "DeleteState")); @@ -3584,23 +3540,17 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/DeleteBulkState", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/DeleteBulkState"); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "DeleteBulkState"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "DeleteBulkState", + )); self.inner.unary(req, path, codec).await } /// Executes transactions for a specified store @@ -3608,26 +3558,18 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/ExecuteStateTransaction", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "ExecuteStateTransaction", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "ExecuteStateTransaction", + )); self.inner.unary(req, path, codec).await } /// Publishes events to the specific topic. @@ -3635,51 +3577,37 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/PublishEvent", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/PublishEvent"); let mut req = request.into_request(); - req.extensions_mut() - .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "PublishEvent")); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "PublishEvent", + )); self.inner.unary(req, path, codec).await } /// Bulk Publishes multiple events to the specified topic. pub async fn bulk_publish_event_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/BulkPublishEventAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "BulkPublishEventAlpha1", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "BulkPublishEventAlpha1", + )); self.inner.unary(req, path, codec).await } /// SubscribeTopicEventsAlpha1 subscribes to a PubSub topic and receives topic @@ -3690,78 +3618,53 @@ pub mod dapr_client { Message = super::SubscribeTopicEventsRequestAlpha1, >, ) -> std::result::Result< - tonic::Response< - tonic::codec::Streaming, - >, + tonic::Response>, tonic::Status, > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/SubscribeTopicEventsAlpha1", ); let mut req = request.into_streaming_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "SubscribeTopicEventsAlpha1", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "SubscribeTopicEventsAlpha1", + )); self.inner.streaming(req, path, codec).await } /// Invokes binding data to specific output bindings pub async fn invoke_binding( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/InvokeBinding", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/InvokeBinding"); let mut req = request.into_request(); - req.extensions_mut() - .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "InvokeBinding")); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "InvokeBinding", + )); self.inner.unary(req, path, codec).await } /// Gets secrets from secret stores. pub async fn get_secret( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/GetSecret", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/GetSecret"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "GetSecret")); @@ -3771,25 +3674,19 @@ pub mod dapr_client { pub async fn get_bulk_secret( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/GetBulkSecret", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/GetBulkSecret"); let mut req = request.into_request(); - req.extensions_mut() - .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "GetBulkSecret")); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "GetBulkSecret", + )); self.inner.unary(req, path, codec).await } /// Register an actor timer. @@ -3797,23 +3694,18 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/RegisterActorTimer", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "RegisterActorTimer"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "RegisterActorTimer", + )); self.inner.unary(req, path, codec).await } /// Unregister an actor timer. @@ -3821,23 +3713,18 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/UnregisterActorTimer", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "UnregisterActorTimer"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "UnregisterActorTimer", + )); self.inner.unary(req, path, codec).await } /// Register an actor reminder. @@ -3845,26 +3732,18 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/RegisterActorReminder", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "RegisterActorReminder", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "RegisterActorReminder", + )); self.inner.unary(req, path, codec).await } /// Unregister an actor reminder. @@ -3872,51 +3751,37 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/UnregisterActorReminder", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "UnregisterActorReminder", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "UnregisterActorReminder", + )); self.inner.unary(req, path, codec).await } /// Gets the state for a specific actor. pub async fn get_actor_state( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/GetActorState", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/GetActorState"); let mut req = request.into_request(); - req.extensions_mut() - .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "GetActorState")); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "GetActorState", + )); self.inner.unary(req, path, codec).await } /// Executes state transactions for a specified actor @@ -3924,48 +3789,32 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/ExecuteActorStateTransaction", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "ExecuteActorStateTransaction", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "ExecuteActorStateTransaction", + )); self.inner.unary(req, path, codec).await } /// InvokeActor calls a method on an actor. pub async fn invoke_actor( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/InvokeActor", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/InvokeActor"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "InvokeActor")); @@ -3975,57 +3824,40 @@ pub mod dapr_client { pub async fn get_configuration_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/GetConfigurationAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "GetConfigurationAlpha1", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "GetConfigurationAlpha1", + )); self.inner.unary(req, path, codec).await } /// GetConfiguration gets configuration from configuration store. pub async fn get_configuration( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/GetConfiguration", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "GetConfiguration"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "GetConfiguration", + )); self.inner.unary(req, path, codec).await } /// SubscribeConfiguration gets configuration from configuration store and subscribe the updates event by grpc stream @@ -4033,31 +3865,21 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result< - tonic::Response< - tonic::codec::Streaming, - >, + tonic::Response>, tonic::Status, > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/SubscribeConfigurationAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "SubscribeConfigurationAlpha1", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "SubscribeConfigurationAlpha1", + )); self.inner.server_streaming(req, path, codec).await } /// SubscribeConfiguration gets configuration from configuration store and subscribe the updates event by grpc stream @@ -4065,31 +3887,21 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result< - tonic::Response< - tonic::codec::Streaming, - >, + tonic::Response>, tonic::Status, > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/SubscribeConfiguration", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "SubscribeConfiguration", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "SubscribeConfiguration", + )); self.inner.server_streaming(req, path, codec).await } /// UnSubscribeConfiguration unsubscribe the subscription of configuration @@ -4100,26 +3912,18 @@ pub mod dapr_client { tonic::Response, tonic::Status, > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/UnsubscribeConfigurationAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "UnsubscribeConfigurationAlpha1", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "UnsubscribeConfigurationAlpha1", + )); self.inner.unary(req, path, codec).await } /// UnSubscribeConfiguration unsubscribe the subscription of configuration @@ -4130,51 +3934,36 @@ pub mod dapr_client { tonic::Response, tonic::Status, > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/UnsubscribeConfiguration", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "UnsubscribeConfiguration", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "UnsubscribeConfiguration", + )); self.inner.unary(req, path, codec).await } /// TryLockAlpha1 tries to get a lock with an expiry. pub async fn try_lock_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/TryLockAlpha1", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/TryLockAlpha1"); let mut req = request.into_request(); - req.extensions_mut() - .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "TryLockAlpha1")); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "TryLockAlpha1", + )); self.inner.unary(req, path, codec).await } /// UnlockAlpha1 unlocks a lock. @@ -4182,21 +3971,17 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/UnlockAlpha1", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/UnlockAlpha1"); let mut req = request.into_request(); - req.extensions_mut() - .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "UnlockAlpha1")); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "UnlockAlpha1", + )); self.inner.unary(req, path, codec).await } /// EncryptAlpha1 encrypts a message using the Dapr encryption scheme and a key stored in the vault. @@ -4207,21 +3992,17 @@ pub mod dapr_client { tonic::Response>, tonic::Status, > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/EncryptAlpha1", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/EncryptAlpha1"); let mut req = request.into_streaming_request(); - req.extensions_mut() - .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "EncryptAlpha1")); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "EncryptAlpha1", + )); self.inner.streaming(req, path, codec).await } /// DecryptAlpha1 decrypts a message using the Dapr encryption scheme and a key stored in the vault. @@ -4232,43 +4013,31 @@ pub mod dapr_client { tonic::Response>, tonic::Status, > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/DecryptAlpha1", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/DecryptAlpha1"); let mut req = request.into_streaming_request(); - req.extensions_mut() - .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "DecryptAlpha1")); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "DecryptAlpha1", + )); self.inner.streaming(req, path, codec).await } /// Gets metadata of the sidecar pub async fn get_metadata( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/GetMetadata", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/GetMetadata"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "GetMetadata")); @@ -4279,18 +4048,12 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/SetMetadata", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/SetMetadata"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "SetMetadata")); @@ -4300,192 +4063,140 @@ pub mod dapr_client { pub async fn subtle_get_key_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/SubtleGetKeyAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "SubtleGetKeyAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "SubtleGetKeyAlpha1", + )); self.inner.unary(req, path, codec).await } /// SubtleEncryptAlpha1 encrypts a small message using a key stored in the vault. pub async fn subtle_encrypt_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/SubtleEncryptAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "SubtleEncryptAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "SubtleEncryptAlpha1", + )); self.inner.unary(req, path, codec).await } /// SubtleDecryptAlpha1 decrypts a small message using a key stored in the vault. pub async fn subtle_decrypt_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/SubtleDecryptAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "SubtleDecryptAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "SubtleDecryptAlpha1", + )); self.inner.unary(req, path, codec).await } /// SubtleWrapKeyAlpha1 wraps a key using a key stored in the vault. pub async fn subtle_wrap_key_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/SubtleWrapKeyAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "SubtleWrapKeyAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "SubtleWrapKeyAlpha1", + )); self.inner.unary(req, path, codec).await } /// SubtleUnwrapKeyAlpha1 unwraps a key using a key stored in the vault. pub async fn subtle_unwrap_key_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/SubtleUnwrapKeyAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "SubtleUnwrapKeyAlpha1", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "SubtleUnwrapKeyAlpha1", + )); self.inner.unary(req, path, codec).await } /// SubtleSignAlpha1 signs a message using a key stored in the vault. pub async fn subtle_sign_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/SubtleSignAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "SubtleSignAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "SubtleSignAlpha1", + )); self.inner.unary(req, path, codec).await } /// SubtleVerifyAlpha1 verifies the signature of a message using a key stored in the vault. pub async fn subtle_verify_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/SubtleVerifyAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "SubtleVerifyAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "SubtleVerifyAlpha1", + )); self.inner.unary(req, path, codec).await } /// Starts a new instance of a workflow @@ -4493,27 +4204,20 @@ pub mod dapr_client { pub async fn start_workflow_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/StartWorkflowAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "StartWorkflowAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "StartWorkflowAlpha1", + )); self.inner.unary(req, path, codec).await } /// Gets details about a started workflow instance @@ -4521,27 +4225,20 @@ pub mod dapr_client { pub async fn get_workflow_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/GetWorkflowAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "GetWorkflowAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "GetWorkflowAlpha1", + )); self.inner.unary(req, path, codec).await } /// Purge Workflow @@ -4550,23 +4247,18 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/PurgeWorkflowAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "PurgeWorkflowAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "PurgeWorkflowAlpha1", + )); self.inner.unary(req, path, codec).await } /// Terminates a running workflow instance @@ -4575,26 +4267,18 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/TerminateWorkflowAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "TerminateWorkflowAlpha1", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "TerminateWorkflowAlpha1", + )); self.inner.unary(req, path, codec).await } /// Pauses a running workflow instance @@ -4603,23 +4287,18 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/PauseWorkflowAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "PauseWorkflowAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "PauseWorkflowAlpha1", + )); self.inner.unary(req, path, codec).await } /// Resumes a paused workflow instance @@ -4628,23 +4307,18 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/ResumeWorkflowAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "ResumeWorkflowAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "ResumeWorkflowAlpha1", + )); self.inner.unary(req, path, codec).await } /// Raise an event to a running workflow instance @@ -4653,80 +4327,58 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/RaiseEventWorkflowAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "RaiseEventWorkflowAlpha1", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "RaiseEventWorkflowAlpha1", + )); self.inner.unary(req, path, codec).await } /// Starts a new instance of a workflow pub async fn start_workflow_beta1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/StartWorkflowBeta1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "StartWorkflowBeta1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "StartWorkflowBeta1", + )); self.inner.unary(req, path, codec).await } /// Gets details about a started workflow instance pub async fn get_workflow_beta1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/GetWorkflowBeta1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "GetWorkflowBeta1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "GetWorkflowBeta1", + )); self.inner.unary(req, path, codec).await } /// Purge Workflow @@ -4734,23 +4386,18 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/PurgeWorkflowBeta1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "PurgeWorkflowBeta1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "PurgeWorkflowBeta1", + )); self.inner.unary(req, path, codec).await } /// Terminates a running workflow instance @@ -4758,26 +4405,18 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/TerminateWorkflowBeta1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "TerminateWorkflowBeta1", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "TerminateWorkflowBeta1", + )); self.inner.unary(req, path, codec).await } /// Pauses a running workflow instance @@ -4785,23 +4424,18 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/PauseWorkflowBeta1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "PauseWorkflowBeta1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "PauseWorkflowBeta1", + )); self.inner.unary(req, path, codec).await } /// Resumes a paused workflow instance @@ -4809,23 +4443,18 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/ResumeWorkflowBeta1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "ResumeWorkflowBeta1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "ResumeWorkflowBeta1", + )); self.inner.unary(req, path, codec).await } /// Raise an event to a running workflow instance @@ -4833,26 +4462,18 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/RaiseEventWorkflowBeta1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new( - "dapr.proto.runtime.v1.Dapr", - "RaiseEventWorkflowBeta1", - ), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "RaiseEventWorkflowBeta1", + )); self.inner.unary(req, path, codec).await } /// Shutdown the sidecar @@ -4860,18 +4481,11 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/Shutdown", - ); + let path = http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/Shutdown"); let mut req = request.into_request(); req.extensions_mut() .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "Shutdown")); @@ -4881,27 +4495,20 @@ pub mod dapr_client { pub async fn schedule_job_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static( "/dapr.proto.runtime.v1.Dapr/ScheduleJobAlpha1", ); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "ScheduleJobAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "ScheduleJobAlpha1", + )); self.inner.unary(req, path, codec).await } /// Gets a scheduled job @@ -4909,73 +4516,73 @@ pub mod dapr_client { &mut self, request: impl tonic::IntoRequest, ) -> std::result::Result, tonic::Status> { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/GetJobAlpha1", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/GetJobAlpha1"); let mut req = request.into_request(); - req.extensions_mut() - .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "GetJobAlpha1")); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "GetJobAlpha1", + )); self.inner.unary(req, path, codec).await } /// Delete a job pub async fn delete_job_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/DeleteJobAlpha1", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/DeleteJobAlpha1"); let mut req = request.into_request(); - req.extensions_mut() - .insert( - GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "DeleteJobAlpha1"), - ); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "DeleteJobAlpha1", + )); self.inner.unary(req, path, codec).await } /// Converse with a LLM service pub async fn converse_alpha1( &mut self, request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::unknown( - format!("Service was not ready: {}", e.into()), - ) - })?; + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static( - "/dapr.proto.runtime.v1.Dapr/ConverseAlpha1", - ); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/ConverseAlpha1"); let mut req = request.into_request(); - req.extensions_mut() - .insert(GrpcMethod::new("dapr.proto.runtime.v1.Dapr", "ConverseAlpha1")); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "ConverseAlpha1", + )); + self.inner.unary(req, path, codec).await + } + /// Converse with a LLM service via alpha2 api + pub async fn converse_alpha2( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result, tonic::Status> + { + self.inner.ready().await.map_err(|e| { + tonic::Status::unknown(format!("Service was not ready: {}", e.into())) + })?; + let codec = tonic::codec::ProstCodec::default(); + let path = + http::uri::PathAndQuery::from_static("/dapr.proto.runtime.v1.Dapr/ConverseAlpha2"); + let mut req = request.into_request(); + req.extensions_mut().insert(GrpcMethod::new( + "dapr.proto.runtime.v1.Dapr", + "ConverseAlpha2", + )); self.inner.unary(req, path, codec).await } } @@ -4987,7 +4594,7 @@ pub mod dapr_server { dead_code, missing_docs, clippy::wildcard_imports, - clippy::let_unit_value, + clippy::let_unit_value )] use tonic::codegen::*; /// Generated trait containing gRPC methods that should be implemented for use with DaprServer. @@ -5006,18 +4613,12 @@ pub mod dapr_server { async fn get_state( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Gets a bulk of state items for a list of keys async fn get_bulk_state( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Saves the state for a specific key. async fn save_state( &self, @@ -5027,10 +4628,7 @@ pub mod dapr_server { async fn query_state_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Deletes the state for a specific key. async fn delete_state( &self, @@ -5055,26 +4653,20 @@ pub mod dapr_server { async fn bulk_publish_event_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Server streaming response type for the SubscribeTopicEventsAlpha1 method. type SubscribeTopicEventsAlpha1Stream: tonic::codegen::tokio_stream::Stream< Item = std::result::Result< super::SubscribeTopicEventsResponseAlpha1, tonic::Status, >, - > - + std::marker::Send + > + std::marker::Send + 'static; /// SubscribeTopicEventsAlpha1 subscribes to a PubSub topic and receives topic /// events from it. async fn subscribe_topic_events_alpha1( &self, - request: tonic::Request< - tonic::Streaming, - >, + request: tonic::Request>, ) -> std::result::Result< tonic::Response, tonic::Status, @@ -5083,26 +4675,17 @@ pub mod dapr_server { async fn invoke_binding( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Gets secrets from secret stores. async fn get_secret( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Gets a bulk of secrets async fn get_bulk_secret( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Register an actor timer. async fn register_actor_timer( &self, @@ -5127,10 +4710,7 @@ pub mod dapr_server { async fn get_actor_state( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Executes state transactions for a specified actor async fn execute_actor_state_transaction( &self, @@ -5140,34 +4720,21 @@ pub mod dapr_server { async fn invoke_actor( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// GetConfiguration gets configuration from configuration store. async fn get_configuration_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// GetConfiguration gets configuration from configuration store. async fn get_configuration( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Server streaming response type for the SubscribeConfigurationAlpha1 method. type SubscribeConfigurationAlpha1Stream: tonic::codegen::tokio_stream::Stream< - Item = std::result::Result< - super::SubscribeConfigurationResponse, - tonic::Status, - >, - > - + std::marker::Send + Item = std::result::Result, + > + std::marker::Send + 'static; /// SubscribeConfiguration gets configuration from configuration store and subscribe the updates event by grpc stream async fn subscribe_configuration_alpha1( @@ -5179,21 +4746,14 @@ pub mod dapr_server { >; /// Server streaming response type for the SubscribeConfiguration method. type SubscribeConfigurationStream: tonic::codegen::tokio_stream::Stream< - Item = std::result::Result< - super::SubscribeConfigurationResponse, - tonic::Status, - >, - > - + std::marker::Send + Item = std::result::Result, + > + std::marker::Send + 'static; /// SubscribeConfiguration gets configuration from configuration store and subscribe the updates event by grpc stream async fn subscribe_configuration( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// UnSubscribeConfiguration unsubscribe the subscription of configuration async fn unsubscribe_configuration_alpha1( &self, @@ -5223,39 +4783,28 @@ pub mod dapr_server { /// Server streaming response type for the EncryptAlpha1 method. type EncryptAlpha1Stream: tonic::codegen::tokio_stream::Stream< Item = std::result::Result, - > - + std::marker::Send + > + std::marker::Send + 'static; /// EncryptAlpha1 encrypts a message using the Dapr encryption scheme and a key stored in the vault. async fn encrypt_alpha1( &self, request: tonic::Request>, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Server streaming response type for the DecryptAlpha1 method. type DecryptAlpha1Stream: tonic::codegen::tokio_stream::Stream< Item = std::result::Result, - > - + std::marker::Send + > + std::marker::Send + 'static; /// DecryptAlpha1 decrypts a message using the Dapr encryption scheme and a key stored in the vault. async fn decrypt_alpha1( &self, request: tonic::Request>, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Gets metadata of the sidecar async fn get_metadata( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Sets value in extended metadata of the sidecar async fn set_metadata( &self, @@ -5265,74 +4814,47 @@ pub mod dapr_server { async fn subtle_get_key_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// SubtleEncryptAlpha1 encrypts a small message using a key stored in the vault. async fn subtle_encrypt_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// SubtleDecryptAlpha1 decrypts a small message using a key stored in the vault. async fn subtle_decrypt_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// SubtleWrapKeyAlpha1 wraps a key using a key stored in the vault. async fn subtle_wrap_key_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// SubtleUnwrapKeyAlpha1 unwraps a key using a key stored in the vault. async fn subtle_unwrap_key_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// SubtleSignAlpha1 signs a message using a key stored in the vault. async fn subtle_sign_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// SubtleVerifyAlpha1 verifies the signature of a message using a key stored in the vault. async fn subtle_verify_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Starts a new instance of a workflow async fn start_workflow_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Gets details about a started workflow instance async fn get_workflow_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Purge Workflow async fn purge_workflow_alpha1( &self, @@ -5362,18 +4884,12 @@ pub mod dapr_server { async fn start_workflow_beta1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Gets details about a started workflow instance async fn get_workflow_beta1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Purge Workflow async fn purge_workflow_beta1( &self, @@ -5408,10 +4924,7 @@ pub mod dapr_server { async fn schedule_job_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Gets a scheduled job async fn get_job_alpha1( &self, @@ -5421,18 +4934,17 @@ pub mod dapr_server { async fn delete_job_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; /// Converse with a LLM service async fn converse_alpha1( &self, request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; + ) -> std::result::Result, tonic::Status>; + /// Converse with a LLM service via alpha2 api + async fn converse_alpha2( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status>; } /// Dapr service provides APIs to user application to access Dapr building blocks. #[derive(Debug)] @@ -5456,10 +4968,7 @@ pub mod dapr_server { max_encoding_message_size: None, } } - pub fn with_interceptor( - inner: T, - interceptor: F, - ) -> InterceptedService + pub fn with_interceptor(inner: T, interceptor: F) -> InterceptedService where F: tonic::service::Interceptor, { @@ -5514,23 +5023,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/InvokeService" => { #[allow(non_camel_case_types)] struct InvokeServiceSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for InvokeServiceSvc { + impl tonic::server::UnaryService for InvokeServiceSvc { type Response = super::super::super::common::v1::InvokeResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::invoke_service(&inner, request).await - }; + let fut = + async move { ::invoke_service(&inner, request).await }; Box::pin(fut) } } @@ -5559,21 +5061,15 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/GetState" => { #[allow(non_camel_case_types)] struct GetStateSvc(pub Arc); - impl tonic::server::UnaryService - for GetStateSvc { + impl tonic::server::UnaryService for GetStateSvc { type Response = super::GetStateResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_state(&inner, request).await - }; + let fut = async move { ::get_state(&inner, request).await }; Box::pin(fut) } } @@ -5602,21 +5098,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/GetBulkState" => { #[allow(non_camel_case_types)] struct GetBulkStateSvc(pub Arc); - impl tonic::server::UnaryService - for GetBulkStateSvc { + impl tonic::server::UnaryService for GetBulkStateSvc { type Response = super::GetBulkStateResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_bulk_state(&inner, request).await - }; + let fut = + async move { ::get_bulk_state(&inner, request).await }; Box::pin(fut) } } @@ -5645,21 +5136,15 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/SaveState" => { #[allow(non_camel_case_types)] struct SaveStateSvc(pub Arc); - impl tonic::server::UnaryService - for SaveStateSvc { + impl tonic::server::UnaryService for SaveStateSvc { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::save_state(&inner, request).await - }; + let fut = async move { ::save_state(&inner, request).await }; Box::pin(fut) } } @@ -5688,13 +5173,9 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/QueryStateAlpha1" => { #[allow(non_camel_case_types)] struct QueryStateAlpha1Svc(pub Arc); - impl tonic::server::UnaryService - for QueryStateAlpha1Svc { + impl tonic::server::UnaryService for QueryStateAlpha1Svc { type Response = super::QueryStateResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -5731,21 +5212,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/DeleteState" => { #[allow(non_camel_case_types)] struct DeleteStateSvc(pub Arc); - impl tonic::server::UnaryService - for DeleteStateSvc { + impl tonic::server::UnaryService for DeleteStateSvc { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::delete_state(&inner, request).await - }; + let fut = + async move { ::delete_state(&inner, request).await }; Box::pin(fut) } } @@ -5774,15 +5250,9 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/DeleteBulkState" => { #[allow(non_camel_case_types)] struct DeleteBulkStateSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for DeleteBulkStateSvc { + impl tonic::server::UnaryService for DeleteBulkStateSvc { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -5819,25 +5289,18 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/ExecuteStateTransaction" => { #[allow(non_camel_case_types)] struct ExecuteStateTransactionSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for ExecuteStateTransactionSvc { + impl tonic::server::UnaryService + for ExecuteStateTransactionSvc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, - request: tonic::Request< - super::ExecuteStateTransactionRequest, - >, + request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::execute_state_transaction(&inner, request) - .await + ::execute_state_transaction(&inner, request).await }; Box::pin(fut) } @@ -5867,21 +5330,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/PublishEvent" => { #[allow(non_camel_case_types)] struct PublishEventSvc(pub Arc); - impl tonic::server::UnaryService - for PublishEventSvc { + impl tonic::server::UnaryService for PublishEventSvc { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::publish_event(&inner, request).await - }; + let fut = + async move { ::publish_event(&inner, request).await }; Box::pin(fut) } } @@ -5911,20 +5369,17 @@ pub mod dapr_server { #[allow(non_camel_case_types)] struct BulkPublishEventAlpha1Svc(pub Arc); impl tonic::server::UnaryService - for BulkPublishEventAlpha1Svc { + for BulkPublishEventAlpha1Svc + { type Response = super::BulkPublishResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::bulk_publish_event_alpha1(&inner, request) - .await + ::bulk_publish_event_alpha1(&inner, request).await }; Box::pin(fut) } @@ -5954,17 +5409,14 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/SubscribeTopicEventsAlpha1" => { #[allow(non_camel_case_types)] struct SubscribeTopicEventsAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::StreamingService< - super::SubscribeTopicEventsRequestAlpha1, - > for SubscribeTopicEventsAlpha1Svc { + impl + tonic::server::StreamingService + for SubscribeTopicEventsAlpha1Svc + { type Response = super::SubscribeTopicEventsResponseAlpha1; type ResponseStream = T::SubscribeTopicEventsAlpha1Stream; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = + BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request< @@ -5973,8 +5425,7 @@ pub mod dapr_server { ) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::subscribe_topic_events_alpha1(&inner, request) - .await + ::subscribe_topic_events_alpha1(&inner, request).await }; Box::pin(fut) } @@ -6004,23 +5455,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/InvokeBinding" => { #[allow(non_camel_case_types)] struct InvokeBindingSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for InvokeBindingSvc { + impl tonic::server::UnaryService for InvokeBindingSvc { type Response = super::InvokeBindingResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::invoke_binding(&inner, request).await - }; + let fut = + async move { ::invoke_binding(&inner, request).await }; Box::pin(fut) } } @@ -6049,21 +5493,15 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/GetSecret" => { #[allow(non_camel_case_types)] struct GetSecretSvc(pub Arc); - impl tonic::server::UnaryService - for GetSecretSvc { + impl tonic::server::UnaryService for GetSecretSvc { type Response = super::GetSecretResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_secret(&inner, request).await - }; + let fut = async move { ::get_secret(&inner, request).await }; Box::pin(fut) } } @@ -6092,23 +5530,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/GetBulkSecret" => { #[allow(non_camel_case_types)] struct GetBulkSecretSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for GetBulkSecretSvc { + impl tonic::server::UnaryService for GetBulkSecretSvc { type Response = super::GetBulkSecretResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_bulk_secret(&inner, request).await - }; + let fut = + async move { ::get_bulk_secret(&inner, request).await }; Box::pin(fut) } } @@ -6137,15 +5568,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/RegisterActorTimer" => { #[allow(non_camel_case_types)] struct RegisterActorTimerSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for RegisterActorTimerSvc { + impl tonic::server::UnaryService + for RegisterActorTimerSvc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -6182,15 +5609,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/UnregisterActorTimer" => { #[allow(non_camel_case_types)] struct UnregisterActorTimerSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for UnregisterActorTimerSvc { + impl tonic::server::UnaryService + for UnregisterActorTimerSvc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -6227,15 +5650,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/RegisterActorReminder" => { #[allow(non_camel_case_types)] struct RegisterActorReminderSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for RegisterActorReminderSvc { + impl tonic::server::UnaryService + for RegisterActorReminderSvc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -6272,25 +5691,18 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/UnregisterActorReminder" => { #[allow(non_camel_case_types)] struct UnregisterActorReminderSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for UnregisterActorReminderSvc { + impl tonic::server::UnaryService + for UnregisterActorReminderSvc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, - request: tonic::Request< - super::UnregisterActorReminderRequest, - >, + request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::unregister_actor_reminder(&inner, request) - .await + ::unregister_actor_reminder(&inner, request).await }; Box::pin(fut) } @@ -6320,23 +5732,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/GetActorState" => { #[allow(non_camel_case_types)] struct GetActorStateSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for GetActorStateSvc { + impl tonic::server::UnaryService for GetActorStateSvc { type Response = super::GetActorStateResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_actor_state(&inner, request).await - }; + let fut = + async move { ::get_actor_state(&inner, request).await }; Box::pin(fut) } } @@ -6365,29 +5770,19 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/ExecuteActorStateTransaction" => { #[allow(non_camel_case_types)] struct ExecuteActorStateTransactionSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService< - super::ExecuteActorStateTransactionRequest, - > for ExecuteActorStateTransactionSvc { + impl + tonic::server::UnaryService + for ExecuteActorStateTransactionSvc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, - request: tonic::Request< - super::ExecuteActorStateTransactionRequest, - >, + request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::execute_actor_state_transaction( - &inner, - request, - ) - .await + ::execute_actor_state_transaction(&inner, request).await }; Box::pin(fut) } @@ -6417,21 +5812,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/InvokeActor" => { #[allow(non_camel_case_types)] struct InvokeActorSvc(pub Arc); - impl tonic::server::UnaryService - for InvokeActorSvc { + impl tonic::server::UnaryService for InvokeActorSvc { type Response = super::InvokeActorResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::invoke_actor(&inner, request).await - }; + let fut = + async move { ::invoke_actor(&inner, request).await }; Box::pin(fut) } } @@ -6460,15 +5850,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/GetConfigurationAlpha1" => { #[allow(non_camel_case_types)] struct GetConfigurationAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for GetConfigurationAlpha1Svc { + impl tonic::server::UnaryService + for GetConfigurationAlpha1Svc + { type Response = super::GetConfigurationResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -6505,15 +5891,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/GetConfiguration" => { #[allow(non_camel_case_types)] struct GetConfigurationSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for GetConfigurationSvc { + impl tonic::server::UnaryService + for GetConfigurationSvc + { type Response = super::GetConfigurationResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -6550,25 +5932,21 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/SubscribeConfigurationAlpha1" => { #[allow(non_camel_case_types)] struct SubscribeConfigurationAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::ServerStreamingService< - super::SubscribeConfigurationRequest, - > for SubscribeConfigurationAlpha1Svc { + impl + tonic::server::ServerStreamingService + for SubscribeConfigurationAlpha1Svc + { type Response = super::SubscribeConfigurationResponse; type ResponseStream = T::SubscribeConfigurationAlpha1Stream; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = + BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::subscribe_configuration_alpha1(&inner, request) - .await + ::subscribe_configuration_alpha1(&inner, request).await }; Box::pin(fut) } @@ -6598,17 +5976,14 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/SubscribeConfiguration" => { #[allow(non_camel_case_types)] struct SubscribeConfigurationSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::ServerStreamingService< - super::SubscribeConfigurationRequest, - > for SubscribeConfigurationSvc { + impl + tonic::server::ServerStreamingService + for SubscribeConfigurationSvc + { type Response = super::SubscribeConfigurationResponse; type ResponseStream = T::SubscribeConfigurationStream; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = + BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -6645,28 +6020,19 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/UnsubscribeConfigurationAlpha1" => { #[allow(non_camel_case_types)] struct UnsubscribeConfigurationAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for UnsubscribeConfigurationAlpha1Svc { + impl + tonic::server::UnaryService + for UnsubscribeConfigurationAlpha1Svc + { type Response = super::UnsubscribeConfigurationResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, - request: tonic::Request< - super::UnsubscribeConfigurationRequest, - >, + request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::unsubscribe_configuration_alpha1( - &inner, - request, - ) - .await + ::unsubscribe_configuration_alpha1(&inner, request).await }; Box::pin(fut) } @@ -6696,25 +6062,19 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/UnsubscribeConfiguration" => { #[allow(non_camel_case_types)] struct UnsubscribeConfigurationSvc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for UnsubscribeConfigurationSvc { + impl + tonic::server::UnaryService + for UnsubscribeConfigurationSvc + { type Response = super::UnsubscribeConfigurationResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, - request: tonic::Request< - super::UnsubscribeConfigurationRequest, - >, + request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::unsubscribe_configuration(&inner, request) - .await + ::unsubscribe_configuration(&inner, request).await }; Box::pin(fut) } @@ -6744,21 +6104,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/TryLockAlpha1" => { #[allow(non_camel_case_types)] struct TryLockAlpha1Svc(pub Arc); - impl tonic::server::UnaryService - for TryLockAlpha1Svc { + impl tonic::server::UnaryService for TryLockAlpha1Svc { type Response = super::TryLockResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::try_lock_alpha1(&inner, request).await - }; + let fut = + async move { ::try_lock_alpha1(&inner, request).await }; Box::pin(fut) } } @@ -6787,21 +6142,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/UnlockAlpha1" => { #[allow(non_camel_case_types)] struct UnlockAlpha1Svc(pub Arc); - impl tonic::server::UnaryService - for UnlockAlpha1Svc { + impl tonic::server::UnaryService for UnlockAlpha1Svc { type Response = super::UnlockResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::unlock_alpha1(&inner, request).await - }; + let fut = + async move { ::unlock_alpha1(&inner, request).await }; Box::pin(fut) } } @@ -6830,24 +6180,18 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/EncryptAlpha1" => { #[allow(non_camel_case_types)] struct EncryptAlpha1Svc(pub Arc); - impl tonic::server::StreamingService - for EncryptAlpha1Svc { + impl tonic::server::StreamingService for EncryptAlpha1Svc { type Response = super::EncryptResponse; type ResponseStream = T::EncryptAlpha1Stream; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = + BoxFuture, tonic::Status>; fn call( &mut self, - request: tonic::Request< - tonic::Streaming, - >, + request: tonic::Request>, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::encrypt_alpha1(&inner, request).await - }; + let fut = + async move { ::encrypt_alpha1(&inner, request).await }; Box::pin(fut) } } @@ -6876,24 +6220,18 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/DecryptAlpha1" => { #[allow(non_camel_case_types)] struct DecryptAlpha1Svc(pub Arc); - impl tonic::server::StreamingService - for DecryptAlpha1Svc { + impl tonic::server::StreamingService for DecryptAlpha1Svc { type Response = super::DecryptResponse; type ResponseStream = T::DecryptAlpha1Stream; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = + BoxFuture, tonic::Status>; fn call( &mut self, - request: tonic::Request< - tonic::Streaming, - >, + request: tonic::Request>, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::decrypt_alpha1(&inner, request).await - }; + let fut = + async move { ::decrypt_alpha1(&inner, request).await }; Box::pin(fut) } } @@ -6922,21 +6260,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/GetMetadata" => { #[allow(non_camel_case_types)] struct GetMetadataSvc(pub Arc); - impl tonic::server::UnaryService - for GetMetadataSvc { + impl tonic::server::UnaryService for GetMetadataSvc { type Response = super::GetMetadataResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_metadata(&inner, request).await - }; + let fut = + async move { ::get_metadata(&inner, request).await }; Box::pin(fut) } } @@ -6965,21 +6298,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/SetMetadata" => { #[allow(non_camel_case_types)] struct SetMetadataSvc(pub Arc); - impl tonic::server::UnaryService - for SetMetadataSvc { + impl tonic::server::UnaryService for SetMetadataSvc { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::set_metadata(&inner, request).await - }; + let fut = + async move { ::set_metadata(&inner, request).await }; Box::pin(fut) } } @@ -7008,13 +6336,9 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/SubtleGetKeyAlpha1" => { #[allow(non_camel_case_types)] struct SubtleGetKeyAlpha1Svc(pub Arc); - impl tonic::server::UnaryService - for SubtleGetKeyAlpha1Svc { + impl tonic::server::UnaryService for SubtleGetKeyAlpha1Svc { type Response = super::SubtleGetKeyResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7051,15 +6375,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/SubtleEncryptAlpha1" => { #[allow(non_camel_case_types)] struct SubtleEncryptAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for SubtleEncryptAlpha1Svc { + impl tonic::server::UnaryService + for SubtleEncryptAlpha1Svc + { type Response = super::SubtleEncryptResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7096,15 +6416,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/SubtleDecryptAlpha1" => { #[allow(non_camel_case_types)] struct SubtleDecryptAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for SubtleDecryptAlpha1Svc { + impl tonic::server::UnaryService + for SubtleDecryptAlpha1Svc + { type Response = super::SubtleDecryptResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7141,15 +6457,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/SubtleWrapKeyAlpha1" => { #[allow(non_camel_case_types)] struct SubtleWrapKeyAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for SubtleWrapKeyAlpha1Svc { + impl tonic::server::UnaryService + for SubtleWrapKeyAlpha1Svc + { type Response = super::SubtleWrapKeyResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7186,15 +6498,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/SubtleUnwrapKeyAlpha1" => { #[allow(non_camel_case_types)] struct SubtleUnwrapKeyAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for SubtleUnwrapKeyAlpha1Svc { + impl tonic::server::UnaryService + for SubtleUnwrapKeyAlpha1Svc + { type Response = super::SubtleUnwrapKeyResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7231,13 +6539,9 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/SubtleSignAlpha1" => { #[allow(non_camel_case_types)] struct SubtleSignAlpha1Svc(pub Arc); - impl tonic::server::UnaryService - for SubtleSignAlpha1Svc { + impl tonic::server::UnaryService for SubtleSignAlpha1Svc { type Response = super::SubtleSignResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7274,13 +6578,9 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/SubtleVerifyAlpha1" => { #[allow(non_camel_case_types)] struct SubtleVerifyAlpha1Svc(pub Arc); - impl tonic::server::UnaryService - for SubtleVerifyAlpha1Svc { + impl tonic::server::UnaryService for SubtleVerifyAlpha1Svc { type Response = super::SubtleVerifyResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7317,15 +6617,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/StartWorkflowAlpha1" => { #[allow(non_camel_case_types)] struct StartWorkflowAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for StartWorkflowAlpha1Svc { + impl tonic::server::UnaryService + for StartWorkflowAlpha1Svc + { type Response = super::StartWorkflowResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7362,13 +6658,9 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/GetWorkflowAlpha1" => { #[allow(non_camel_case_types)] struct GetWorkflowAlpha1Svc(pub Arc); - impl tonic::server::UnaryService - for GetWorkflowAlpha1Svc { + impl tonic::server::UnaryService for GetWorkflowAlpha1Svc { type Response = super::GetWorkflowResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7405,15 +6697,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/PurgeWorkflowAlpha1" => { #[allow(non_camel_case_types)] struct PurgeWorkflowAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for PurgeWorkflowAlpha1Svc { + impl tonic::server::UnaryService + for PurgeWorkflowAlpha1Svc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7450,23 +6738,18 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/TerminateWorkflowAlpha1" => { #[allow(non_camel_case_types)] struct TerminateWorkflowAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for TerminateWorkflowAlpha1Svc { + impl tonic::server::UnaryService + for TerminateWorkflowAlpha1Svc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::terminate_workflow_alpha1(&inner, request) - .await + ::terminate_workflow_alpha1(&inner, request).await }; Box::pin(fut) } @@ -7496,15 +6779,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/PauseWorkflowAlpha1" => { #[allow(non_camel_case_types)] struct PauseWorkflowAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for PauseWorkflowAlpha1Svc { + impl tonic::server::UnaryService + for PauseWorkflowAlpha1Svc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7541,15 +6820,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/ResumeWorkflowAlpha1" => { #[allow(non_camel_case_types)] struct ResumeWorkflowAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for ResumeWorkflowAlpha1Svc { + impl tonic::server::UnaryService + for ResumeWorkflowAlpha1Svc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7586,23 +6861,18 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/RaiseEventWorkflowAlpha1" => { #[allow(non_camel_case_types)] struct RaiseEventWorkflowAlpha1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for RaiseEventWorkflowAlpha1Svc { + impl tonic::server::UnaryService + for RaiseEventWorkflowAlpha1Svc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::raise_event_workflow_alpha1(&inner, request) - .await + ::raise_event_workflow_alpha1(&inner, request).await }; Box::pin(fut) } @@ -7632,15 +6902,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/StartWorkflowBeta1" => { #[allow(non_camel_case_types)] struct StartWorkflowBeta1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for StartWorkflowBeta1Svc { + impl tonic::server::UnaryService + for StartWorkflowBeta1Svc + { type Response = super::StartWorkflowResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7677,13 +6943,9 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/GetWorkflowBeta1" => { #[allow(non_camel_case_types)] struct GetWorkflowBeta1Svc(pub Arc); - impl tonic::server::UnaryService - for GetWorkflowBeta1Svc { + impl tonic::server::UnaryService for GetWorkflowBeta1Svc { type Response = super::GetWorkflowResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7720,15 +6982,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/PurgeWorkflowBeta1" => { #[allow(non_camel_case_types)] struct PurgeWorkflowBeta1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for PurgeWorkflowBeta1Svc { + impl tonic::server::UnaryService + for PurgeWorkflowBeta1Svc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7765,15 +7023,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/TerminateWorkflowBeta1" => { #[allow(non_camel_case_types)] struct TerminateWorkflowBeta1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for TerminateWorkflowBeta1Svc { + impl tonic::server::UnaryService + for TerminateWorkflowBeta1Svc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7810,15 +7064,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/PauseWorkflowBeta1" => { #[allow(non_camel_case_types)] struct PauseWorkflowBeta1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for PauseWorkflowBeta1Svc { + impl tonic::server::UnaryService + for PauseWorkflowBeta1Svc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7855,15 +7105,11 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/ResumeWorkflowBeta1" => { #[allow(non_camel_case_types)] struct ResumeWorkflowBeta1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for ResumeWorkflowBeta1Svc { + impl tonic::server::UnaryService + for ResumeWorkflowBeta1Svc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -7900,23 +7146,18 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/RaiseEventWorkflowBeta1" => { #[allow(non_camel_case_types)] struct RaiseEventWorkflowBeta1Svc(pub Arc); - impl< - T: Dapr, - > tonic::server::UnaryService - for RaiseEventWorkflowBeta1Svc { + impl tonic::server::UnaryService + for RaiseEventWorkflowBeta1Svc + { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); let fut = async move { - ::raise_event_workflow_beta1(&inner, request) - .await + ::raise_event_workflow_beta1(&inner, request).await }; Box::pin(fut) } @@ -7946,21 +7187,15 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/Shutdown" => { #[allow(non_camel_case_types)] struct ShutdownSvc(pub Arc); - impl tonic::server::UnaryService - for ShutdownSvc { + impl tonic::server::UnaryService for ShutdownSvc { type Response = (); - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::shutdown(&inner, request).await - }; + let fut = async move { ::shutdown(&inner, request).await }; Box::pin(fut) } } @@ -7989,13 +7224,9 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/ScheduleJobAlpha1" => { #[allow(non_camel_case_types)] struct ScheduleJobAlpha1Svc(pub Arc); - impl tonic::server::UnaryService - for ScheduleJobAlpha1Svc { + impl tonic::server::UnaryService for ScheduleJobAlpha1Svc { type Response = super::ScheduleJobResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -8032,21 +7263,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/GetJobAlpha1" => { #[allow(non_camel_case_types)] struct GetJobAlpha1Svc(pub Arc); - impl tonic::server::UnaryService - for GetJobAlpha1Svc { + impl tonic::server::UnaryService for GetJobAlpha1Svc { type Response = super::GetJobResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::get_job_alpha1(&inner, request).await - }; + let fut = + async move { ::get_job_alpha1(&inner, request).await }; Box::pin(fut) } } @@ -8075,13 +7301,9 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/DeleteJobAlpha1" => { #[allow(non_camel_case_types)] struct DeleteJobAlpha1Svc(pub Arc); - impl tonic::server::UnaryService - for DeleteJobAlpha1Svc { + impl tonic::server::UnaryService for DeleteJobAlpha1Svc { type Response = super::DeleteJobResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, @@ -8118,21 +7340,16 @@ pub mod dapr_server { "/dapr.proto.runtime.v1.Dapr/ConverseAlpha1" => { #[allow(non_camel_case_types)] struct ConverseAlpha1Svc(pub Arc); - impl tonic::server::UnaryService - for ConverseAlpha1Svc { + impl tonic::server::UnaryService for ConverseAlpha1Svc { type Response = super::ConversationResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; + type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = Arc::clone(&self.0); - let fut = async move { - ::converse_alpha1(&inner, request).await - }; + let fut = + async move { ::converse_alpha1(&inner, request).await }; Box::pin(fut) } } @@ -8158,23 +7375,59 @@ pub mod dapr_server { }; Box::pin(fut) } - _ => { - Box::pin(async move { - let mut response = http::Response::new(empty_body()); - let headers = response.headers_mut(); - headers - .insert( - tonic::Status::GRPC_STATUS, - (tonic::Code::Unimplemented as i32).into(), - ); - headers - .insert( - http::header::CONTENT_TYPE, - tonic::metadata::GRPC_CONTENT_TYPE, + "/dapr.proto.runtime.v1.Dapr/ConverseAlpha2" => { + #[allow(non_camel_case_types)] + struct ConverseAlpha2Svc(pub Arc); + impl tonic::server::UnaryService + for ConverseAlpha2Svc + { + type Response = super::ConversationResponseAlpha2; + type Future = BoxFuture, tonic::Status>; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = + async move { ::converse_alpha2(&inner, request).await }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let method = ConverseAlpha2Svc(inner); + let codec = tonic::codec::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, ); - Ok(response) - }) + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) } + _ => Box::pin(async move { + let mut response = http::Response::new(empty_body()); + let headers = response.headers_mut(); + headers.insert( + tonic::Status::GRPC_STATUS, + (tonic::Code::Unimplemented as i32).into(), + ); + headers.insert( + http::header::CONTENT_TYPE, + tonic::metadata::GRPC_CONTENT_TYPE, + ); + Ok(response) + }), } } } diff --git a/dapr/src/dapr/types.bin b/dapr/src/dapr/types.bin index 851cd04e05875d42bae8ee5b5038bc3c57f1dac1..900c3eb5f0115cfe1f81459bd003e6d3700d5ed1 100644 GIT binary patch delta 48846 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
  • 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 V7>J- + +```bash +cargo build --examples +``` + + + +2. Run the multi-app run template: + + + +```bash +dapr run -f . +``` + + + +3. Stop with `ctrl + c` diff --git a/examples/src/jobs-failurepolicy/dapr.yaml b/examples/src/jobs-failurepolicy/dapr.yaml new file mode 100644 index 0000000..363e0e9 --- /dev/null +++ b/examples/src/jobs-failurepolicy/dapr.yaml @@ -0,0 +1,11 @@ +version: 1 +common: + daprdLogDestination: console +apps: + - appID: jobs-example + appDirPath: ./ + appProtocol: grpc + appPort: 50051 + logLevel: debug + schedulerHostAddress: localhost + command: [ "cargo", "run", "--example", "jobs" ] diff --git a/examples/src/jobs-failurepolicy/jobs_failurepolicy.rs b/examples/src/jobs-failurepolicy/jobs_failurepolicy.rs new file mode 100644 index 0000000..3c27aca --- /dev/null +++ b/examples/src/jobs-failurepolicy/jobs_failurepolicy.rs @@ -0,0 +1,145 @@ +use std::time::Duration; + +use dapr::client::{JobBuilder, JobFailurePolicyBuilder, JobFailurePolicyType}; +use dapr::dapr::proto::runtime::v1::{ + app_callback_alpha_server::AppCallbackAlphaServer, JobEventRequest, JobEventResponse, +}; +use dapr::server::appcallbackalpha::{AppCallbackServiceAlpha, JobHandlerMethod}; +use dapr::{add_job_handler_alpha, serde_json}; +use prost_types::Any; +use serde::{Deserialize, Serialize}; +use tokio::time::sleep; +use tonic::transport::Server; +use tonic::Status; + +type DaprClient = dapr::Client; + +#[derive(Serialize, Deserialize, Debug)] +struct Backup { + task: String, + metadata: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +struct Metadata { + db_name: String, + backup_location: String, +} + +async fn ping_pong_handler(_request: JobEventRequest) -> Result { + println!("received job on ping_pong_handler"); + + Ok(JobEventResponse::default()) +} +async fn backup_job_handler(request: JobEventRequest) -> Result { + // The logic for handling the backup job request + + if request.data.is_some() { + // Deserialize the decoded value into a Backup struct + let backup_val: Backup = serde_json::from_slice(&request.data.unwrap().value).unwrap(); + + println!("job received: {backup_val:?}"); + } + + // Return a failure response to simulate a job failure + Err(Status::internal("Simulated job failure")) +} + +#[tokio::main] +#[allow(non_camel_case_types)] +async fn main() -> Result<(), Box> { + tokio::spawn(async move { + let server_addr = "127.0.0.1:50051".parse().unwrap(); + + println!("AppCallbackAlpha server listening on {server_addr}"); + + let mut alpha_callback_service = AppCallbackServiceAlpha::new(); + + let backup_job_handler_name = "prod-db-backup"; + add_job_handler_alpha!( + alpha_callback_service, + backup_job_handler_name, + backup_job_handler + ); + + let ping_pong_handler_name = "ping-pong"; + add_job_handler_alpha!( + alpha_callback_service, + ping_pong_handler_name, + ping_pong_handler + ); + + Server::builder() + .add_service(AppCallbackAlphaServer::new(alpha_callback_service)) + .serve(server_addr) + .await + .unwrap(); + }); + + sleep(Duration::from_secs(5)).await; + + // Client + + let client_addr = "https://127.0.0.1".to_string(); + + let port: u16 = std::env::var("DAPR_GRPC_PORT")?.parse()?; + let address = format!("{client_addr}:{port}"); + + println!("attempting to create a dapr client: {address}"); + + // Create the client + let mut client = DaprClient::connect(client_addr).await?; + + println!("client created"); + + // define job data in json + let job = Backup { + task: "db-backup".to_string(), + metadata: Some(Metadata { + db_name: "prod-db".to_string(), + backup_location: "/path/to/backup".to_string(), + }), + }; + + let any = Any { + type_url: "type.googleapis.com/io.dapr.RustTest".to_string(), + value: serde_json::to_vec(&job).unwrap(), + }; + + let job = JobBuilder::new("prod-db-backup") + .with_schedule("@every 1s") + .with_data(any) + .with_failure_policy(JobFailurePolicyBuilder::new(JobFailurePolicyType::Drop {}).build()) + .build(); + + let _schedule_resp = client.schedule_job_alpha1(job, None).await?; + + println!("job scheduled successfully"); + + sleep(Duration::from_secs(3)).await; + + let get_resp = client.get_job_alpha1("prod-db-backup").await?; + + let get_resp_backup: Backup = + serde_json::from_slice(&get_resp.clone().job.unwrap().data.unwrap().value).unwrap(); + + println!("job retrieved: {get_resp_backup:?}"); + + let _delete_resp = client.delete_job_alpha1("prod-db-backup").await?; + + println!("job deleted"); + + sleep(Duration::from_secs(5)).await; + + // Second handler + + let ping_pong_job = JobBuilder::new("ping-pong") + .with_schedule("@every 1s") + .with_repeats(5) + .build(); + let _schedule_resp = client.schedule_job_alpha1(ping_pong_job, None).await?; + + sleep(Duration::from_secs(10)).await; + + Ok(()) +} diff --git a/examples/src/jobs/jobs.rs b/examples/src/jobs/jobs.rs index 5725108..0236d5b 100644 --- a/examples/src/jobs/jobs.rs +++ b/examples/src/jobs/jobs.rs @@ -110,7 +110,7 @@ async fn main() -> Result<(), Box> { .with_data(any) .build(); - let _schedule_resp = client.schedule_job_alpha1(job).await?; + let _schedule_resp = client.schedule_job_alpha1(job, None).await?; println!("job scheduled successfully"); @@ -135,7 +135,7 @@ async fn main() -> Result<(), Box> { .with_schedule("@every 1s") .with_repeats(5) .build(); - let _schedule_resp = client.schedule_job_alpha1(ping_pong_job).await?; + let _schedule_resp = client.schedule_job_alpha1(ping_pong_job, None).await?; sleep(Duration::from_secs(10)).await; diff --git a/proto/dapr/proto/common/v1/common.proto b/proto/dapr/proto/common/v1/common.proto index dd41298..776ae61 100644 --- a/proto/dapr/proto/common/v1/common.proto +++ b/proto/dapr/proto/common/v1/common.proto @@ -16,6 +16,7 @@ syntax = "proto3"; package dapr.proto.common.v1; import "google/protobuf/any.proto"; +import "google/protobuf/duration.proto"; option csharp_namespace = "Dapr.Client.Autogen.Grpc.v1"; option java_outer_classname = "CommonProtos"; @@ -24,10 +25,10 @@ option go_package = "github.com/dapr/dapr/pkg/proto/common/v1;common"; // HTTPExtension includes HTTP verb and querystring // when Dapr runtime delivers HTTP content. -// +// // For example, when callers calls http invoke api // `POST http://localhost:3500/v1.0/invoke//method/?query1=value1&query2=value2` -// +// // Dapr runtime will parse POST as a verb and extract querystring to quersytring map. message HTTPExtension { // Type of HTTP 1.1 Methods @@ -158,3 +159,26 @@ message ConfigurationItem { // the metadata which will be passed to/from configuration store component. map metadata = 3; } + +// JobFailurePolicy defines the policy to apply when a job fails to trigger. +message JobFailurePolicy { + // policy is the policy to apply when a job fails to trigger. + oneof policy { + JobFailurePolicyDrop drop = 1; + JobFailurePolicyConstant constant = 2; + } +} + +// JobFailurePolicyDrop is a policy which drops the job tick when the job fails to trigger. +message JobFailurePolicyDrop {} + +// JobFailurePolicyConstant is a policy which retries the job at a consistent interval when the job fails to trigger. +message JobFailurePolicyConstant { + // interval is the constant delay to wait before retrying the job. + google.protobuf.Duration interval = 1; + + // max_retries is the optional maximum number of retries to attempt before giving up. + // If unset, the Job will be retried indefinitely. + optional uint32 max_retries = 2; +} + diff --git a/proto/dapr/proto/runtime/v1/dapr.proto b/proto/dapr/proto/runtime/v1/dapr.proto index f51ec0a..9fbc909 100644 --- a/proto/dapr/proto/runtime/v1/dapr.proto +++ b/proto/dapr/proto/runtime/v1/dapr.proto @@ -18,6 +18,7 @@ package dapr.proto.runtime.v1; import "google/protobuf/any.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; +import "google/protobuf/struct.proto"; import "dapr/proto/common/v1/common.proto"; import "dapr/proto/runtime/v1/appcallback.proto"; @@ -205,7 +206,7 @@ service Dapr { // Raise an event to a running workflow instance rpc RaiseEventWorkflowBeta1 (RaiseEventWorkflowRequest) returns (google.protobuf.Empty) {} - + // Shutdown the sidecar rpc Shutdown (ShutdownRequest) returns (google.protobuf.Empty) {} @@ -220,6 +221,9 @@ service Dapr { // Converse with a LLM service rpc ConverseAlpha1(ConversationRequest) returns (ConversationResponse) {} + + // Converse with a LLM service via alpha2 api + rpc ConverseAlpha2(ConversationRequestAlpha2) returns (ConversationResponseAlpha2) {} } // InvokeServiceRequest represents the request message for Service invocation. @@ -1265,12 +1269,17 @@ message Job { // payload is the serialized job payload that will be sent to the recipient // when the job is triggered. google.protobuf.Any data = 6 [json_name = "data"]; + + // failure_policy is the optional policy for handling job failures. + optional common.v1.JobFailurePolicy failure_policy = 7 [json_name = "failurePolicy"]; } // ScheduleJobRequest is the message to create/schedule the job. message ScheduleJobRequest { // The job details. Job job = 1; + // If true, allows this job to overwrite an existing job with the same name. + bool overwrite = 2 [json_name = "overwrite"]; } // ScheduleJobResponse is the message response to create/schedule the job. @@ -1303,6 +1312,8 @@ message DeleteJobResponse { // ConversationRequest is the request object for Conversation. message ConversationRequest { + option deprecated = true; + // The name of Conversation component string name = 1; @@ -1325,7 +1336,65 @@ message ConversationRequest { optional double temperature = 7; } +// ConversationRequestAlpha2 is the new request object for Conversation. +// Many of these fields are inspired by openai.ChatCompletionNewParams +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L2106 +message ConversationRequestAlpha2 { + // The name of Conversation component + string name = 1; + + // The ID of an existing chat (like in ChatGPT) + optional string context_id = 2; + + // Inputs for the conversation, support multiple input in one time. + // This is the revamped conversation inputs better matching openai. + repeated ConversationInputAlpha2 inputs = 3; + + // Parameters for all custom fields. + map parameters = 4; + + // The metadata passing to conversation components. + map metadata = 5; + + // Scrub PII data that comes back from the LLM + optional bool scrub_pii = 6; + + // Temperature for the LLM to optimize for creativity or predictability + optional double temperature = 7; + + // Tools register the tools available to be used by the LLM during the conversation. + // These are sent on a per request basis. + // The tools available during the first round of the conversation + // may be different than tools specified later on. + repeated ConversationTools tools = 8; + + // Controls which (if any) tool is called by the model. + // `none` means the model will not call any tool and instead generates a message. + // `auto` means the model can pick between generating a message or calling one or more tools. + // Alternatively, a specific tool name may be used here, and casing/syntax must match on tool name. + // `none` is the default when no tools are present. + // `auto` is the default if tools are present. + // `required` requires one or more functions to be called. + // ref: https://github.com/openai/openai-go/blob/main/chatcompletion.go#L1976 + // ref: https://python.langchain.com/docs/how_to/tool_choice/ + optional string tool_choice = 9; + + /* TODO: fields to bring in from openai.ChatCompletionNewParams after Dapr 1.16. + Note: They can be within the other messages, not necessarily top level here. + MaxCompletionTokens: https://github.com/openai/openai-go/blob/main/chatcompletion.go#L2131 + Audio: https://github.com/openai/openai-go/blob/main/chatcompletion.go#L2186 + Modalities: https://github.com/openai/openai-go/blob/main/chatcompletion.go#L2215 + ReasoningEffort: https://github.com/openai/openai-go/blob/main/chatcompletion.go#L2224 + Stop: https://github.com/openai/openai-go/blob/main/chatcompletion.go#L2249 <----------------should we bring this in? + StreamOptions: https://github.com/openai/openai-go/blob/main/chatcompletion.go#L2251 + ResponseFormat: https://github.com/openai/openai-go/blob/main/chatcompletion.go#L2284 + */ +} + +// maintained for backwards compatibility message ConversationInput { + option deprecated = true; + // The content to send to the llm string content = 1; @@ -1336,19 +1405,230 @@ message ConversationInput { optional bool scrubPII = 3; } +// directly inspired by openai.ChatCompletionNewParams +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L2106 +message ConversationInputAlpha2 { + // The content to send to the llm + repeated ConversationMessage messages = 1; + + // Scrub PII data that goes into the LLM + optional bool scrub_pii = 2; +} + +// inspired by openai.ChatCompletionMessageParamUnion +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L1449 +// The role field is inherent to the type of ConversationMessage, +// and is propagated in the backend according to the underlying LLM provider type. +message ConversationMessage { + oneof message_types { + ConversationMessageOfDeveloper of_developer = 1; + ConversationMessageOfSystem of_system = 2; + ConversationMessageOfUser of_user = 3; + ConversationMessageOfAssistant of_assistant = 4; + ConversationMessageOfTool of_tool = 5; + // Note: there could be a ConversationMessageOfFunction type here too, + // but that is deprecated in openai, so we will not support this. + } +} + +// inspired by openai.ChatCompletionDeveloperMessageParam +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L1130 +// ConversationMessageOfDeveloper is intended to be the contents of a conversation message, +// as the role of a developer. +message ConversationMessageOfDeveloper { + // The name of the participant in the message. + optional string name = 1; + repeated ConversationMessageContent content = 2; +} + +// inspired by openai.ChatCompletionSystemMessageParam +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L1842 +// ConversationMessageOfSystem is intended to be the contents of a conversation message, +// as the role of a system. +message ConversationMessageOfSystem { + optional string name = 1; + repeated ConversationMessageContent content = 2; +} + +// inspired by openai.ChatCompletionUserMessageParam +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L2060C6-L2060C36 +// ConversationMessageOfUser is intended to be the contents of a conversation message, +// as the role of an end user. +message ConversationMessageOfUser { + optional string name = 1; + repeated ConversationMessageContent content = 2; +} + +// inspired by openai.ChatCompletionAssistantMessageParam +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L310 +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L2060C6-L2060C36 +// ConversationMessageOfAssistant is intended to be the contents of a conversation message, +// as the role of an assistant. +message ConversationMessageOfAssistant { + optional string name = 1; + + // TODO: there is an audio field here to bring in when the time comes 1.17 or later. + + repeated ConversationMessageContent content = 2; + + // Tool calls generated by the model, such as function calls for the client to then make. + repeated ConversationToolCalls tool_calls = 3; + + // TODO: after 1.16 there is a refusal field that openai has here, + // but langchain does not have support for this yet, + // so we do not add to our api. + + // Note: There is a FunctionCall type too that is deprecated, + // so we are not bringing that to dapr. +} + +// inspired by openai.ChatCompletionToolMessageParam +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L2011 +// ConversationMessageOfTool is intended to be the contents of a conversation message, +// as the role of a tool. +message ConversationMessageOfTool { + // Tool ID is helpful for tracking tool history + optional string tool_id = 1; + + // Name of tool associated with the message + string name = 2; + + repeated ConversationMessageContent content = 3; + +} + +// inspired by openai.ChatCompletionMessageToolCallParam and openai.ChatCompletionMessageToolCall +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L1669 +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L1611 +// ConversationToolCalls is the tool call request sent from the llm to the client to then call to execute. +// This assumes that in our api if a client makes a request that would get a tool call response from the llm, +// that this client can also have the tool handy itself to execute it. +message ConversationToolCalls { + optional string id = 1; + oneof tool_types { + ConversationToolCallsOfFunction function = 2; + } +} + +// inspired by openai.ChatCompletionMessageToolCallFunctionParam +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L1692 +message ConversationToolCallsOfFunction { + string name = 1; + // The arguments to call the function with, as generated by the model in JSON + // format. Note that the model does not always generate valid JSON, and may + // hallucinate parameters not defined by your function schema. Validate the + // arguments in your code before calling your function. + string arguments = 2; +} + +// inspired by openai.ChatCompletionContentPartTextParam & openai.ChatCompletionDeveloperMessageParamContentUnion +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L1084 +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L1154C6-L1154C53 +// Note: openai has this message be either a message of string or message of array type, +// so instead of this, we support that in one message type instead. +message ConversationMessageContent { + string text = 1; +} + // ConversationResult is the result for one input. message ConversationResult { + option deprecated = true; + // Result for the one conversation input. string result = 1; // Parameters for all custom fields. map parameters = 2; } +// inspired by openai.ChatCompletion +// ConversationResultAlpha2 is the result for one input. +message ConversationResultAlpha2 { + // Result for the conversation input. + repeated ConversationResultChoices choices = 1; + + /* TODO bring in for 1.17 based on openai + https://github.com/openai/openai-go/blob/main/chatcompletion.go#L166 + Usage https://github.com/openai/openai-go/blob/main/chatcompletion.go#L204 + + Bring in 1.16: + Created (timestamp): https://github.com/openai/openai-go/blob/main/chatcompletion.go#L173 + Model: https://github.com/openai/openai-go/blob/main/chatcompletion.go#L175 + */ +} + +// inspired by openai.ChatCompletionChoice +// based on https://github.com/openai/openai-go/blob/main/chatcompletion.go#L226 +message ConversationResultChoices { + // The reason the model stopped generating tokens. This will be `stop` if the model + // hit a natural stop point or a provided stop sequence, `length` if the maximum + // number of tokens specified in the request was reached, `content_filter` if + // content was omitted due to a flag from our content filters, `tool_calls` if the + // model called a tool. + // Any of "stop", "length", "tool_calls", "content_filter". + string finish_reason = 1; + + // The index of the choice in the list of choices. + int64 index = 2; + + ConversationResultMessage message = 3; +} + +// inspired by openai.ChatCompletionMessage +// based on https://github.com/openai/openai-go/blob/main/chatcompletion.go#L1218C6-L1218C27 +message ConversationResultMessage { + // The contents of the message. + string content = 1; + // The tool calls generated by the model. + repeated ConversationToolCalls tool_calls = 2; + + // TODO: after 1.16 there is a refusal field that openai has here, + // but langchain does not have support for this yet, + // so we do not add to our api. +} + // ConversationResponse is the response for Conversation. message ConversationResponse { + option deprecated = true; + // The ID of an existing chat (like in ChatGPT) optional string contextID = 1; // An array of results. repeated ConversationResult outputs = 2; } + +// ConversationResponseAlpha2 is the Alpha2 response for Conversation. +message ConversationResponseAlpha2 { + // The ID of an existing chat (like in ChatGPT) + optional string context_id = 1; + + // An array of results. + repeated ConversationResultAlpha2 outputs = 2; +} + +// ConversationTools are the typed tools available to be called. +// inspired by openai.ChatCompletionToolParam +// https://github.com/openai/openai-go/blob/main/chatcompletion.go#L1950 +message ConversationTools { + oneof tool_types { + ConversationToolsFunction function = 1; + } +} + +// ConversationToolsFunction is the main tool type to be used in a conversation. +// inspired by openai.FunctionDefinitionParam +// https://pkg.go.dev/github.com/openai/openai-go/shared#FunctionDefinitionParam +message ConversationToolsFunction { + // The name of the function to be called. + string name = 1; + + // A description of what the function does, + // used by the model to choose when and how to call the function. + optional string description = 2; + + // The parameters the functions accepts, described as a JSON Schema object. + // See the [guide](https://platform.openai.com/docs/guides/function-calling) for examples, + // and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format. + // Omitting `parameters` defines a function with an empty parameter list. + google.protobuf.Struct parameters = 3; +} From 1bc4db41943a2102345e0ba1f67f3b2c4edb8976 Mon Sep 17 00:00:00 2001 From: Mike Nguyen Date: Wed, 3 Sep 2025 14:50:22 +0100 Subject: [PATCH 13/13] fix: pin dev deps related to axum_test (#291) Signed-off-by: Mike Nguyen --- dapr/Cargo.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dapr/Cargo.toml b/dapr/Cargo.toml index cf41fb0..d5b1436 100644 --- a/dapr/Cargo.toml +++ b/dapr/Cargo.toml @@ -30,7 +30,11 @@ axum-test = "=16.4.0" # TODO: Remove problematic dep litemap = "=0.7.4" # TODO: Remove pinned - linked to axum_test zerofrom = "=0.1.5" # TODO: Remove pinned - linked to axum_test reserve-port = "=2.1.0" # TODO: Remove pinned - linked to axum_test -idna_adapter = "=1.2.0" +idna_adapter = "=1.2.0" # TODO: Remove pinned - linked to axum_test +deranged = "=0.4.0" # TODO: Remove pinned - linked to axum_test +time = "=0.3.41" # TODO: Remove pinned - linked to axum_test +time-core = "=0.1.4" # TODO: Remove pinned - linked to axum_test +time-macros = "=0.2.22" # TODO: Remove pinned - linked to axum_test once_cell = "1.19" dapr = { path = "./" }