diff --git a/acp/Cargo.lock b/acp/Cargo.lock index 641ffce5..e245c89b 100644 --- a/acp/Cargo.lock +++ b/acp/Cargo.lock @@ -748,9 +748,9 @@ dependencies = [ [[package]] name = "iii-sdk" -version = "0.11.3" +version = "0.13.0-next.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0226f7ce0d9071f9cb75ea7b7ac1241b15282915ccd41d9bbd2ee0db94f90c6" +checksum = "17cf728e12b30b11c37295304e0a5807cf677cca430b66609b7ae3c6044c358d" dependencies = [ "async-trait", "futures-util", diff --git a/acp/Cargo.toml b/acp/Cargo.toml index 57407eb5..651e2418 100644 --- a/acp/Cargo.toml +++ b/acp/Cargo.toml @@ -23,7 +23,7 @@ name = "iii-acp" path = "src/main.rs" [dependencies] -iii-sdk = "=0.11.3" +iii-sdk = "=0.13.0-next.1" tokio = { version = "1", features = ["macros", "rt-multi-thread", "io-std", "io-util", "sync", "time", "signal"] } serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/console/Cargo.lock b/console/Cargo.lock index f7694ea4..9f9b8ec9 100644 --- a/console/Cargo.lock +++ b/console/Cargo.lock @@ -827,9 +827,9 @@ dependencies = [ [[package]] name = "iii-sdk" -version = "0.12.0-next.1" +version = "0.13.0-next.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60ce447ddd571bfa8fc40270a9de6e7655a91d2b949f0d5c12842cde14e107bd" +checksum = "17cf728e12b30b11c37295304e0a5807cf677cca430b66609b7ae3c6044c358d" dependencies = [ "async-trait", "futures-util", diff --git a/console/Cargo.toml b/console/Cargo.toml index 2c0ef076..397d0d72 100644 --- a/console/Cargo.toml +++ b/console/Cargo.toml @@ -14,7 +14,7 @@ path = "src/main.rs" path = "src/lib.rs" [dependencies] -iii-sdk = "=0.12.0-next.1" +iii-sdk = "=0.13.0-next.1" tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "signal", "net", "io-util", "time"] } serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/console/src/main.rs b/console/src/main.rs index 955e40e4..19e8a7d8 100644 --- a/console/src/main.rs +++ b/console/src/main.rs @@ -96,6 +96,7 @@ async fn main() -> Result<()> { os: std::env::consts::OS.to_string(), pid: Some(std::process::id()), telemetry: None, + ..WorkerMetadata::default() }), ..InitOptions::default() }, diff --git a/database/Cargo.lock b/database/Cargo.lock index cde4513c..85a97347 100644 --- a/database/Cargo.lock +++ b/database/Cargo.lock @@ -596,7 +596,7 @@ checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" [[package]] name = "database" -version = "0.0.4" +version = "0.2.1" dependencies = [ "anyhow", "async-trait", @@ -1310,9 +1310,9 @@ dependencies = [ [[package]] name = "iii-sdk" -version = "0.12.0-next.1" +version = "0.13.0-next.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60ce447ddd571bfa8fc40270a9de6e7655a91d2b949f0d5c12842cde14e107bd" +checksum = "17cf728e12b30b11c37295304e0a5807cf677cca430b66609b7ae3c6044c358d" dependencies = [ "async-trait", "futures-util", diff --git a/database/Cargo.toml b/database/Cargo.toml index 61000385..cbbf26e3 100644 --- a/database/Cargo.toml +++ b/database/Cargo.toml @@ -14,7 +14,7 @@ path = "src/main.rs" path = "src/lib.rs" [dependencies] -iii-sdk = "=0.12.0-next.1" +iii-sdk = "=0.13.0-next.1" tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "signal", "time"] } serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/iii-directory/Cargo.lock b/iii-directory/Cargo.lock index fd24dbd0..8dfbe84e 100644 --- a/iii-directory/Cargo.lock +++ b/iii-directory/Cargo.lock @@ -1070,9 +1070,9 @@ dependencies = [ [[package]] name = "iii-sdk" -version = "0.11.6" +version = "0.13.0-next.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6feab7af22d4f583024c5515139b3430c8f4ad1b7a7956351fa52079f05b2dab" +checksum = "17cf728e12b30b11c37295304e0a5807cf677cca430b66609b7ae3c6044c358d" dependencies = [ "async-trait", "futures-util", diff --git a/iii-directory/Cargo.toml b/iii-directory/Cargo.toml index db96874d..108f0be4 100644 --- a/iii-directory/Cargo.toml +++ b/iii-directory/Cargo.toml @@ -15,7 +15,7 @@ name = "iii_directory" path = "src/lib.rs" [dependencies] -iii-sdk = "=0.11.6" +iii-sdk = "=0.13.0-next.1" tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "signal", "time", "fs", "process"] } serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/iii-directory/src/functions/directory.rs b/iii-directory/src/functions/directory.rs index e8dfbb9a..f4344342 100644 --- a/iii-directory/src/functions/directory.rs +++ b/iii-directory/src/functions/directory.rs @@ -32,10 +32,7 @@ use std::sync::Arc; -use iii_sdk::{ - FunctionInfo as SdkFunctionInfo, IIIError, RegisterFunction, TriggerInfo as SdkTriggerInfo, - TriggerRequest, TriggerTypeInfo, WorkerInfo, III, -}; +use iii_sdk::{IIIError, RegisterFunction, TriggerRequest, III}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -43,6 +40,55 @@ use serde_json::Value; use crate::config::SkillsConfig; use crate::how_to::{self, RelatedSkillRef}; +/// Function information returned by `engine::functions::list`. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub(crate) struct SdkFunctionInfo { + pub function_id: String, + pub description: Option, + pub request_format: Option, + pub response_format: Option, + pub metadata: Option, +} + +/// Trigger information returned by `engine::triggers::list`. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub(crate) struct SdkTriggerInfo { + pub id: String, + pub trigger_type: String, + pub function_id: String, + pub config: Value, + pub metadata: Option, +} + +/// Trigger type information returned by `engine::trigger-types::list`. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub(crate) struct TriggerTypeInfo { + pub id: String, + pub description: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub trigger_request_format: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub call_request_format: Option, +} + +/// Worker information returned by `engine::workers::list`. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub(crate) struct WorkerInfo { + pub id: String, + pub name: Option, + pub runtime: Option, + pub version: Option, + pub os: Option, + pub ip_address: Option, + pub status: String, + pub connected_at_ms: u64, + pub function_count: usize, + pub functions: Vec, + pub active_invocations: usize, + #[serde(default)] + pub isolation: Option, +} + // ---------- shared input/output shapes ---------- #[derive(Debug, Default, Deserialize, JsonSchema)] @@ -788,7 +834,7 @@ pub async fn worker_info(iii: &III, input: WorkerInfoInput) -> Result Worker { +pub(crate) fn worker_envelope_from_sdk(w: WorkerInfo) -> Worker { Worker { name: w.name, description: None, @@ -808,7 +854,7 @@ pub fn worker_envelope_from_sdk(w: WorkerInfo) -> Worker { /// Build a `function_id → worker_name` map from `WorkerInfo.functions[]`. /// This is the canonical attribution; the namespace-segment fallback is /// used only for unknown ids. -pub fn build_function_owner_map( +pub(crate) fn build_function_owner_map( workers: &[WorkerInfo], ) -> std::collections::HashMap { let mut map = std::collections::HashMap::new(); @@ -852,7 +898,7 @@ fn truncate_chars(s: &str, max_chars: usize) -> String { /// Internal: assemble `FunctionInfoOutput` from already-fetched lists. /// The composite `registered-trigger-info` calls this so the bus isn't /// hit twice for the same data. -pub fn function_info_core( +pub(crate) fn function_info_core( functions: &[SdkFunctionInfo], workers: &[WorkerInfo], triggers: &[SdkTriggerInfo], @@ -906,7 +952,7 @@ pub fn function_info_core( } /// Internal: assemble `TriggerInfoOutput` from already-fetched lists. -pub fn trigger_info_core( +pub(crate) fn trigger_info_core( trigger_types: &[TriggerTypeInfo], triggers: &[SdkTriggerInfo], id: &str, diff --git a/iii-lsp/Cargo.lock b/iii-lsp/Cargo.lock index d7e12fce..92ba2958 100644 --- a/iii-lsp/Cargo.lock +++ b/iii-lsp/Cargo.lock @@ -775,11 +775,12 @@ dependencies = [ [[package]] name = "iii-lsp" -version = "0.1.0" +version = "0.1.1" dependencies = [ "clap", "dashmap", "iii-sdk", + "serde", "serde_json", "tokio", "tower-lsp-server", @@ -793,9 +794,9 @@ dependencies = [ [[package]] name = "iii-sdk" -version = "0.11.3" +version = "0.13.0-next.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0226f7ce0d9071f9cb75ea7b7ac1241b15282915ccd41d9bbd2ee0db94f90c6" +checksum = "17cf728e12b30b11c37295304e0a5807cf677cca430b66609b7ae3c6044c358d" dependencies = [ "async-trait", "futures-util", diff --git a/iii-lsp/Cargo.toml b/iii-lsp/Cargo.toml index 8fc50811..f2b84a2b 100644 --- a/iii-lsp/Cargo.toml +++ b/iii-lsp/Cargo.toml @@ -9,7 +9,7 @@ name = "iii-lsp" path = "src/main.rs" [dependencies] -iii-sdk = "=0.11.3" +iii-sdk = "=0.13.0-next.1" tower-lsp-server = "0.23" tree-sitter = "0.24" tree-sitter-typescript = "0.23" @@ -18,6 +18,7 @@ tree-sitter-rust = "0.23" tokio = { version = "1", features = ["rt-multi-thread", "macros", "io-std", "signal"] } dashmap = "6" serde_json = "1" +serde = { version = "1", features = ["derive"] } clap = { version = "4", features = ["derive", "env"] } tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["fmt", "env-filter"] } diff --git a/iii-lsp/src/completions.rs b/iii-lsp/src/completions.rs index aef30316..eebd4179 100644 --- a/iii-lsp/src/completions.rs +++ b/iii-lsp/src/completions.rs @@ -1,6 +1,6 @@ use crate::analyzer::CompletionContext; use crate::engine_client::EngineClient; -use iii_sdk::{FunctionInfo, TriggerTypeInfo}; +use crate::engine_introspection::{FunctionInfo, TriggerTypeInfo}; use std::sync::Arc; use tower_lsp_server::ls_types::*; diff --git a/iii-lsp/src/engine_client.rs b/iii-lsp/src/engine_client.rs index 74e0e49e..29bb49f5 100644 --- a/iii-lsp/src/engine_client.rs +++ b/iii-lsp/src/engine_client.rs @@ -1,10 +1,9 @@ use dashmap::{DashMap, DashSet}; -use iii_sdk::{ - register_worker, FunctionInfo, FunctionsAvailableGuard, IIIConnectionState, InitOptions, - TriggerInfo, TriggerTypeInfo, WorkerInfo, WorkerMetadata, III, -}; +use iii_sdk::{register_worker, IIIConnectionState, InitOptions, WorkerMetadata, III}; use std::sync::{Arc, Mutex}; +use crate::engine_introspection::{self, FunctionInfo, TriggerInfo, TriggerTypeInfo, WorkerInfo}; + pub struct EngineClient { iii: III, pub functions: DashMap, @@ -15,7 +14,7 @@ pub struct EngineClient { pub known_topics: DashSet, pub known_api_paths: DashSet, pub known_scopes: DashSet, - guard: Mutex>, + poll_task: Mutex>>, } impl EngineClient { @@ -45,7 +44,7 @@ impl EngineClient { known_topics: DashSet::new(), known_api_paths: DashSet::new(), known_scopes: DashSet::new(), - guard: Mutex::new(None), + poll_task: Mutex::new(None), }) } @@ -53,31 +52,40 @@ impl EngineClient { self.seed_cache().await; let weak = Arc::downgrade(self); - let guard = self.iii.on_functions_available(move |functions| { - let Some(client) = weak.upgrade() else { - return; - }; - client.functions.clear(); - for func in &functions { - client - .functions - .insert(func.function_id.clone(), func.clone()); - } - - let weak = Arc::downgrade(&client); - tokio::task::spawn(async move { + let handle = tokio::spawn(async move { + let mut interval = tokio::time::interval(std::time::Duration::from_secs(5)); + loop { + interval.tick().await; let Some(client) = weak.upgrade() else { - return; + break; }; - client.reseed_secondary_caches().await; - }); + if !client.is_connected() { + continue; + } + if let Ok(functions) = engine_introspection::list_functions(&client.iii).await { + let changed = functions.len() != client.functions.len() + || functions.iter().any(|f| { + client + .functions + .get(&f.function_id) + .is_none_or(|existing| existing.value() != f) + }); + if changed { + client.functions.clear(); + for func in functions { + client.functions.insert(func.function_id.clone(), func); + } + client.reseed_secondary_caches().await; + } + } + } }); - *self.guard.lock().unwrap() = Some(guard); + *self.poll_task.lock().unwrap() = Some(handle); } async fn seed_cache(&self) { - if let Ok(functions) = self.iii.list_functions().await { + if let Ok(functions) = engine_introspection::list_functions(&self.iii).await { for func in functions { self.functions.insert(func.function_id.clone(), func); } @@ -86,14 +94,15 @@ impl EngineClient { } async fn reseed_secondary_caches(&self) { - if let Ok(trigger_types) = self.iii.list_trigger_types(false).await { + if let Ok(trigger_types) = engine_introspection::list_trigger_types(&self.iii, false).await + { self.trigger_types.clear(); for tt in trigger_types { self.trigger_types.insert(tt.id.clone(), tt); } } - if let Ok(workers) = self.iii.list_workers().await { + if let Ok(workers) = engine_introspection::list_workers(&self.iii).await { self.workers.clear(); for w in workers { self.workers.insert(w.id.clone(), w); @@ -101,7 +110,7 @@ impl EngineClient { } // Extract known names from trigger configs - if let Ok(triggers) = self.iii.list_triggers(false).await { + if let Ok(triggers) = engine_introspection::list_triggers(&self.iii, false).await { self.extract_known_values(&triggers); } } @@ -180,8 +189,10 @@ impl EngineClient { } pub async fn shutdown(&self) { - if let Ok(mut guard) = self.guard.lock() { - *guard = None; + if let Ok(mut guard) = self.poll_task.lock() { + if let Some(handle) = guard.take() { + handle.abort(); + } } self.iii.shutdown_async().await; } diff --git a/iii-lsp/src/engine_introspection.rs b/iii-lsp/src/engine_introspection.rs new file mode 100644 index 00000000..f182e1f7 --- /dev/null +++ b/iii-lsp/src/engine_introspection.rs @@ -0,0 +1,118 @@ +use iii_sdk::{IIIError, TriggerRequest, III}; +use serde::{Deserialize, Serialize}; +use serde_json::Value; + +/// Function information returned by `engine::functions::list`. +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct FunctionInfo { + pub function_id: String, + pub description: Option, + pub request_format: Option, + pub response_format: Option, + pub metadata: Option, +} + +/// Trigger information returned by `engine::triggers::list`. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct TriggerInfo { + pub id: String, + pub trigger_type: String, + pub function_id: String, + pub config: Value, + pub metadata: Option, +} + +/// Trigger type information returned by `engine::trigger-types::list`. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct TriggerTypeInfo { + pub id: String, + pub description: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub trigger_request_format: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub call_request_format: Option, +} + +/// Worker information returned by `engine::workers::list`. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct WorkerInfo { + pub id: String, + pub name: Option, + pub runtime: Option, + pub version: Option, + pub os: Option, + pub ip_address: Option, + pub status: String, + pub connected_at_ms: u64, + pub function_count: usize, + pub functions: Vec, + pub active_invocations: usize, + #[serde(default)] + pub isolation: Option, +} + +pub async fn list_functions(iii: &III) -> Result, IIIError> { + let result = iii + .trigger(TriggerRequest { + function_id: "engine::functions::list".into(), + payload: serde_json::json!({}), + action: None, + timeout_ms: None, + }) + .await?; + Ok(result + .get("functions") + .and_then(|v| serde_json::from_value(v.clone()).ok()) + .unwrap_or_default()) +} + +pub async fn list_workers(iii: &III) -> Result, IIIError> { + let result = iii + .trigger(TriggerRequest { + function_id: "engine::workers::list".into(), + payload: serde_json::json!({}), + action: None, + timeout_ms: None, + }) + .await?; + Ok(result + .get("workers") + .and_then(|v| serde_json::from_value(v.clone()).ok()) + .unwrap_or_default()) +} + +pub async fn list_triggers( + iii: &III, + include_internal: bool, +) -> Result, IIIError> { + let result = iii + .trigger(TriggerRequest { + function_id: "engine::triggers::list".into(), + payload: serde_json::json!({ "include_internal": include_internal }), + action: None, + timeout_ms: None, + }) + .await?; + Ok(result + .get("triggers") + .and_then(|v| serde_json::from_value(v.clone()).ok()) + .unwrap_or_default()) +} + +pub async fn list_trigger_types( + iii: &III, + include_internal: bool, +) -> Result, IIIError> { + let result = iii + .trigger(TriggerRequest { + function_id: "engine::trigger-types::list".into(), + payload: serde_json::json!({ "include_internal": include_internal }), + action: None, + timeout_ms: None, + }) + .await?; + Ok(result + .get("trigger_types") + .and_then(|v| serde_json::from_value(v.clone()).ok()) + .unwrap_or_default()) +} diff --git a/iii-lsp/src/main.rs b/iii-lsp/src/main.rs index 138d31ba..dab053b0 100644 --- a/iii-lsp/src/main.rs +++ b/iii-lsp/src/main.rs @@ -9,6 +9,7 @@ mod analyzer; mod completions; mod diagnostics; mod engine_client; +mod engine_introspection; mod hover; #[derive(ClapParser, Debug)] diff --git a/image-resize/Cargo.lock b/image-resize/Cargo.lock index db6cd6f7..dcf104ce 100644 --- a/image-resize/Cargo.lock +++ b/image-resize/Cargo.lock @@ -754,9 +754,9 @@ dependencies = [ [[package]] name = "iii-sdk" -version = "0.12.0-next.1" +version = "0.13.0-next.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60ce447ddd571bfa8fc40270a9de6e7655a91d2b949f0d5c12842cde14e107bd" +checksum = "17cf728e12b30b11c37295304e0a5807cf677cca430b66609b7ae3c6044c358d" dependencies = [ "async-trait", "futures-util", @@ -796,7 +796,7 @@ dependencies = [ [[package]] name = "image-resize" -version = "0.1.4" +version = "0.1.9" dependencies = [ "anyhow", "clap", diff --git a/image-resize/Cargo.toml b/image-resize/Cargo.toml index d983ce3f..cbb23aa0 100644 --- a/image-resize/Cargo.toml +++ b/image-resize/Cargo.toml @@ -11,7 +11,7 @@ name = "image-resize" path = "src/main.rs" [dependencies] -iii-sdk = "=0.12.0-next.1" +iii-sdk = "=0.13.0-next.1" image = { version = "0.25", default-features = false, features = ["jpeg", "png", "webp"] } kamadak-exif = "0.6" tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "signal"] } diff --git a/mcp/Cargo.lock b/mcp/Cargo.lock index b07b8222..3ae7cddf 100644 --- a/mcp/Cargo.lock +++ b/mcp/Cargo.lock @@ -944,9 +944,9 @@ dependencies = [ [[package]] name = "iii-sdk" -version = "0.11.3" +version = "0.13.0-next.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0226f7ce0d9071f9cb75ea7b7ac1241b15282915ccd41d9bbd2ee0db94f90c6" +checksum = "17cf728e12b30b11c37295304e0a5807cf677cca430b66609b7ae3c6044c358d" dependencies = [ "async-trait", "futures-util", @@ -1093,7 +1093,7 @@ dependencies = [ [[package]] name = "mcp" -version = "0.5.3" +version = "0.5.5" dependencies = [ "anyhow", "clap", diff --git a/mcp/Cargo.toml b/mcp/Cargo.toml index 14d77858..004a9e8f 100644 --- a/mcp/Cargo.toml +++ b/mcp/Cargo.toml @@ -15,7 +15,7 @@ name = "iii_mcp" path = "src/lib.rs" [dependencies] -iii-sdk = "=0.11.3" +iii-sdk = "=0.13.0-next.1" tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "signal"] } serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/shell/Cargo.lock b/shell/Cargo.lock index 3d694e6f..e5bcfb47 100644 --- a/shell/Cargo.lock +++ b/shell/Cargo.lock @@ -707,9 +707,9 @@ dependencies = [ [[package]] name = "iii-sdk" -version = "0.11.3" +version = "0.13.0-next.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0226f7ce0d9071f9cb75ea7b7ac1241b15282915ccd41d9bbd2ee0db94f90c6" +checksum = "17cf728e12b30b11c37295304e0a5807cf677cca430b66609b7ae3c6044c358d" dependencies = [ "async-trait", "futures-util", diff --git a/shell/Cargo.toml b/shell/Cargo.toml index ddba0c12..06b04481 100644 --- a/shell/Cargo.toml +++ b/shell/Cargo.toml @@ -11,7 +11,7 @@ name = "shell" path = "src/main.rs" [dependencies] -iii-sdk = "=0.11.3" +iii-sdk = "=0.13.0-next.1" schemars = { version = "0.8", features = ["uuid1"] } libc = "0.2" tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "signal", "process", "time", "io-util", "fs"] } diff --git a/storage/Cargo.lock b/storage/Cargo.lock index a2ef355a..2ce024b1 100644 --- a/storage/Cargo.lock +++ b/storage/Cargo.lock @@ -1934,9 +1934,9 @@ dependencies = [ [[package]] name = "iii-sdk" -version = "0.12.0-next.1" +version = "0.13.0-next.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60ce447ddd571bfa8fc40270a9de6e7655a91d2b949f0d5c12842cde14e107bd" +checksum = "17cf728e12b30b11c37295304e0a5807cf677cca430b66609b7ae3c6044c358d" dependencies = [ "async-trait", "futures-util", diff --git a/storage/Cargo.toml b/storage/Cargo.toml index 730da3c9..5bf4ea34 100644 --- a/storage/Cargo.toml +++ b/storage/Cargo.toml @@ -14,7 +14,7 @@ path = "src/main.rs" path = "src/lib.rs" [dependencies] -iii-sdk = "=0.12.0-next.1" +iii-sdk = "=0.13.0-next.1" tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "signal", "time", "process", "io-util", "net"] } serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/storage/src/main.rs b/storage/src/main.rs index 4da4ec03..c2355618 100644 --- a/storage/src/main.rs +++ b/storage/src/main.rs @@ -170,6 +170,7 @@ async fn main() -> Result<()> { os: std::env::consts::OS.to_string(), pid: Some(std::process::id()), telemetry: None, + ..WorkerMetadata::default() }), ..Default::default() },