From 8eedeb665cf221f81c0e50145b921a4838537530 Mon Sep 17 00:00:00 2001 From: Raphael Date: Sun, 7 Jun 2026 17:20:37 +0200 Subject: [PATCH 1/4] deps: updated code0-flow and tucana --- Cargo.lock | 100 +++++++---------------------------------------------- Cargo.toml | 4 +-- 2 files changed, 14 insertions(+), 90 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dad7cfa..425f97a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -76,42 +76,6 @@ version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" -[[package]] -name = "async-nats" -version = "0.47.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07d6f157065c3461096d51aacde0c326fa49f3f6e0199e204c566842cdaa5299" -dependencies = [ - "base64", - "bytes", - "futures-util", - "memchr", - "nkeys", - "nuid", - "pin-project", - "portable-atomic", - "rand 0.8.5", - "regex", - "ring", - "rustls-native-certs", - "rustls-pki-types", - "rustls-webpki", - "serde", - "serde_json", - "serde_nanos", - "serde_repr", - "thiserror 1.0.69", - "time", - "tokio", - "tokio-rustls", - "tokio-stream", - "tokio-util", - "tokio-websockets", - "tracing", - "tryhard", - "url", -] - [[package]] name = "async-nats" version = "0.49.1" @@ -136,7 +100,7 @@ dependencies = [ "serde_json", "serde_nanos", "serde_repr", - "thiserror 2.0.18", + "thiserror", "time", "tokio", "tokio-rustls", @@ -221,7 +185,7 @@ name = "base" version = "0.0.0" dependencies = [ "anyhow", - "async-nats 0.49.1", + "async-nats", "async-trait", "code0-flow", "env_logger", @@ -231,7 +195,7 @@ dependencies = [ "tokio", "tonic", "tonic-health", - "tucana 0.0.73", + "tucana", "uuid", ] @@ -318,11 +282,11 @@ dependencies = [ [[package]] name = "code0-flow" -version = "0.0.33" +version = "0.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e8a97ac31e8340a97ab6468dbcab82d835346182ca309d8518245acb1f6ffd3" +checksum = "b91a94cc5ff9392ea98ad89d2e5dbccca6129d664d0d80a55e0e73781b928401" dependencies = [ - "async-nats 0.47.0", + "async-nats", "async-trait", "dotenv", "futures-core", @@ -333,7 +297,7 @@ dependencies = [ "tokio", "tonic", "tonic-health", - "tucana 0.0.70", + "tucana", "walkdir", ] @@ -394,7 +358,7 @@ dependencies = [ "cron 0.16.0", "log", "tokio", - "tucana 0.0.73", + "tucana", ] [[package]] @@ -1580,7 +1544,7 @@ dependencies = [ "serde_json", "tokio", "tonic", - "tucana 0.0.73", + "tucana", ] [[package]] @@ -1923,33 +1887,13 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - [[package]] name = "thiserror" version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.18", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "thiserror-impl", ] [[package]] @@ -2248,29 +2192,9 @@ dependencies = [ [[package]] name = "tucana" -version = "0.0.70" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ececdc8eeccd39a9ba82a4ee78e9663d9871a9ca9da65013477536360322392" -dependencies = [ - "pbjson", - "pbjson-build", - "pbjson-types", - "prost", - "prost-build", - "prost-types", - "serde", - "serde_json", - "tonic", - "tonic-build", - "tonic-prost", - "tonic-prost-build", -] - -[[package]] -name = "tucana" -version = "0.0.73" +version = "0.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb8c3882c50dad78a4ec128e9c0d80a681c0203e0ca55169361c49b31ad9161f" +checksum = "f015be0f6f1b5be9d5b650a432a1f731b70342506a452418bbc57441bd6cc7d1" dependencies = [ "pbjson", "pbjson-build", diff --git a/Cargo.toml b/Cargo.toml index fafec43..be4d535 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,8 +7,8 @@ version = "0.0.0" edition = "2024" [workspace.dependencies] -code0-flow = { version = "0.0.33" } -tucana = { version = "0.0.73", features = ["aquila"] } +code0-flow = { version = "0.0.36" } +tucana = { version = "0.0.74", features = ["aquila"] } serde_json = { version = "1.0.138" } log = "0.4.27" env_logger = "0.11.8" From a553fbc4a6b9e220c4666e98002c2532ff180658 Mon Sep 17 00:00:00 2001 From: Raphael Date: Sun, 7 Jun 2026 17:26:09 +0200 Subject: [PATCH 2/4] feat: added appendix for rest module --- adapter/rest/src/main.rs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/adapter/rest/src/main.rs b/adapter/rest/src/main.rs index e0708a7..717c69f 100644 --- a/adapter/rest/src/main.rs +++ b/adapter/rest/src/main.rs @@ -3,6 +3,7 @@ use base::{ store::{FlowExecutionResult, FlowIdentifyResult}, traits::Server as ServerTrait, }; +use code0_flow::flow_service::ModuleDefinitionAppendix; use http_body_util::{BodyExt, Full}; use hyper::server::conn::http1; use hyper::{Request, Response}; @@ -17,7 +18,7 @@ use std::sync::Arc; use tokio::net::TcpListener; use tonic::async_trait; use tucana::shared::{ - AdapterStatusConfiguration, Struct, ValidationFlow, Value, helper::value::ToValue, value::Kind, + Endpoint, ModuleDefinition, Struct, ValidationFlow, Value, helper::value::ToValue, value::Kind, }; use crate::response::{error_to_http_response, value_to_http_response}; @@ -42,14 +43,18 @@ async fn main() { let addr = runner.get_server_config().port; let host = runner.get_server_config().host.clone(); - let configs = vec![AdapterStatusConfiguration { - flow_type_identifiers: vec![String::from("REST")], - data: Some( - tucana::shared::adapter_status_configuration::Data::Endpoint(format!( - r"{}:{}/${{project_slug}}/${{flow_setting_identifier}}", - host, addr + let configs = vec![ModuleDefinitionAppendix { + module_identifier: String::from("draco-rest"), + definitions: vec![ModuleDefinition { + flow_type_identifier: vec![String::from("REST")], + value: Some(tucana::shared::module_definition::Value::Endpoint( + Endpoint { + host, + port: addr as i64, + endpoint: String::from(r"/${{project_slug}}${{httpURL}}"), + }, )), - ), + }], }]; match runner.serve(configs).await { Ok(_) => (), From 90b26529421ceb7f0a908acb65d4e0d108f36444 Mon Sep 17 00:00:00 2001 From: Raphael Date: Sun, 7 Jun 2026 17:26:29 +0200 Subject: [PATCH 3/4] feat: made changes to runner for support of module configuration --- crates/base/src/client/mod.rs | 17 +++++------------ crates/base/src/runner.rs | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/crates/base/src/client/mod.rs b/crates/base/src/client/mod.rs index 875f1ae..fe3dd8b 100644 --- a/crates/base/src/client/mod.rs +++ b/crates/base/src/client/mod.rs @@ -9,15 +9,12 @@ use tonic::{ use tucana::{ aquila::{ RuntimeStatusUpdateRequest, runtime_status_service_client::RuntimeStatusServiceClient, - runtime_status_update_request::Status, - }, - shared::{AdapterRuntimeStatus, AdapterStatusConfiguration}, + }, shared::ModuleStatus, }; pub struct DracoRuntimeStatusService { channel: Channel, identifier: String, - configs: Vec, aquila_token: String, } @@ -73,29 +70,26 @@ impl DracoRuntimeStatusService { aquila_url: String, aquila_token: String, identifier: String, - configs: Vec, ) -> Self { let channel = create_channel_with_retry("Aquila", aquila_url).await; - Self::new(channel, identifier, configs, aquila_token) + Self::new(channel, identifier, aquila_token) } pub fn new( channel: Channel, identifier: String, - configs: Vec, aquila_token: String, ) -> Self { DracoRuntimeStatusService { channel, identifier, - configs, aquila_token, } } pub async fn update_runtime_status_by_status( &self, - status: tucana::shared::adapter_runtime_status::Status, + status: tucana::shared::module_status::StatusVariant, ) { log::info!("Updating the current runtime status!"); let mut client = RuntimeStatusServiceClient::new(self.channel.clone()); @@ -113,12 +107,11 @@ impl DracoRuntimeStatusService { get_authorization_metadata(&self.aquila_token), Extensions::new(), RuntimeStatusUpdateRequest { - status: Some(Status::AdapterRuntimeStatus(AdapterRuntimeStatus { + status: Some(ModuleStatus { status: status.into(), timestamp: timestamp as i64, identifier: self.identifier.clone(), - configurations: self.configs.clone(), - })), + }), }, ); diff --git a/crates/base/src/runner.rs b/crates/base/src/runner.rs index 0db8a86..4d2a994 100644 --- a/crates/base/src/runner.rs +++ b/crates/base/src/runner.rs @@ -1,15 +1,14 @@ use crate::{ - client::DracoRuntimeStatusService, + client::{DracoRuntimeStatusService}, config::AdapterConfig, store::AdapterStore, traits::{LoadConfig, Server as AdapterServer}, }; -use code0_flow::flow_service::FlowUpdateService; +use code0_flow::flow_service::{FlowUpdateService, ModuleDefinitionAppendix}; use std::{sync::Arc, time::Duration}; use tokio::{signal, task::JoinHandle, time::sleep}; use tonic::transport::Server; use tonic_health::pb::health_server::HealthServer; -use tucana::shared::AdapterStatusConfiguration; /// Context passed to adapter server implementations containing all shared resources pub struct ServerContext { @@ -58,7 +57,7 @@ impl ServerRunner { pub async fn serve( self, - runtime_config: Vec, + appendix: Vec, ) -> anyhow::Result<()> { let config = self.context.adapter_config.clone(); let mut runtime_status_service: Option> = None; @@ -71,26 +70,27 @@ impl ServerRunner { config.aquila_url.clone(), config.aquila_token.clone(), config.draco_variant.clone(), - runtime_config, ) .await, )); if let Some(ser) = &runtime_status_service { ser.update_runtime_status_by_status( - tucana::shared::adapter_runtime_status::Status::NotReady, + tucana::shared::module_status::StatusVariant::NotReady, ) .await; }; let service_name = format!("draco-{}", config.draco_variant.to_lowercase()); + let mut definition_service = FlowUpdateService::from_url( config.aquila_url.clone(), config.definition_path.as_str(), config.aquila_token.clone(), ) .await - .with_definition_source(service_name); + .with_definition_source(service_name) + .with_appendix(appendix); let mut success = false; let mut count = 1; @@ -144,7 +144,7 @@ impl ServerRunner { if let Some(ser) = &runtime_status_service { ser.update_runtime_status_by_status( - tucana::shared::adapter_runtime_status::Status::Running, + tucana::shared::module_status::StatusVariant::Running, ) .await; @@ -163,7 +163,7 @@ impl ServerRunner { interval.tick().await; status_service .update_runtime_status_by_status( - tucana::shared::adapter_runtime_status::Status::Running, + tucana::shared::module_status::StatusVariant::Running, ) .await; } @@ -251,7 +251,7 @@ impl ServerRunner { if let Some(ser) = &runtime_status_service { ser.update_runtime_status_by_status( - tucana::shared::adapter_runtime_status::Status::Stopped, + tucana::shared::module_status::StatusVariant::Stopped, ) .await; }; From 10c089795fcc052e064339765829a3ee1ae5393c Mon Sep 17 00:00:00 2001 From: Raphael Date: Sun, 7 Jun 2026 17:27:25 +0200 Subject: [PATCH 4/4] ref: cargo fmt --- crates/base/src/client/mod.rs | 15 ++++----------- crates/base/src/runner.rs | 7 ++----- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/crates/base/src/client/mod.rs b/crates/base/src/client/mod.rs index fe3dd8b..9189f74 100644 --- a/crates/base/src/client/mod.rs +++ b/crates/base/src/client/mod.rs @@ -9,7 +9,8 @@ use tonic::{ use tucana::{ aquila::{ RuntimeStatusUpdateRequest, runtime_status_service_client::RuntimeStatusServiceClient, - }, shared::ModuleStatus, + }, + shared::ModuleStatus, }; pub struct DracoRuntimeStatusService { @@ -66,20 +67,12 @@ pub async fn create_channel_with_retry(channel_name: &str, url: String) -> Chann } } impl DracoRuntimeStatusService { - pub async fn from_url( - aquila_url: String, - aquila_token: String, - identifier: String, - ) -> Self { + pub async fn from_url(aquila_url: String, aquila_token: String, identifier: String) -> Self { let channel = create_channel_with_retry("Aquila", aquila_url).await; Self::new(channel, identifier, aquila_token) } - pub fn new( - channel: Channel, - identifier: String, - aquila_token: String, - ) -> Self { + pub fn new(channel: Channel, identifier: String, aquila_token: String) -> Self { DracoRuntimeStatusService { channel, identifier, diff --git a/crates/base/src/runner.rs b/crates/base/src/runner.rs index 4d2a994..348a33c 100644 --- a/crates/base/src/runner.rs +++ b/crates/base/src/runner.rs @@ -1,5 +1,5 @@ use crate::{ - client::{DracoRuntimeStatusService}, + client::DracoRuntimeStatusService, config::AdapterConfig, store::AdapterStore, traits::{LoadConfig, Server as AdapterServer}, @@ -55,10 +55,7 @@ impl ServerRunner { }) } - pub async fn serve( - self, - appendix: Vec, - ) -> anyhow::Result<()> { + pub async fn serve(self, appendix: Vec) -> anyhow::Result<()> { let config = self.context.adapter_config.clone(); let mut runtime_status_service: Option> = None; let mut runtime_status_heartbeat_task: Option> = None;