From e89133f492ebe6934a51809b369e816edbfbe025 Mon Sep 17 00:00:00 2001 From: Nexussyn Date: Sun, 21 Jun 2026 13:49:56 +0200 Subject: [PATCH 1/6] feat(#18): mod.rs --- backend/src/config/mod.rs | 251 ++++++++++++++++++++++++++------------ 1 file changed, 170 insertions(+), 81 deletions(-) diff --git a/backend/src/config/mod.rs b/backend/src/config/mod.rs index 7f19a8f2f..fe0889bf6 100644 --- a/backend/src/config/mod.rs +++ b/backend/src/config/mod.rs @@ -1,106 +1,195 @@ -use anyhow::Result; +//! Configuration loader module +//! +//! Provides multi-format configuration loading with environment variable overrides. + use serde::{Deserialize, Serialize}; +use std::env; +use std::fs; use std::path::Path; +use thiserror::Error; + +/// Configuration error types +#[derive(Error, Debug)] +pub enum ConfigError { + #[error("Failed to read config file: {0}")] + FileRead(#[from] std::io::Error), + + #[error("Failed to parse TOML: {0}")] + TomlParse(#[from] toml::de::Error), + + #[error("Failed to parse JSON: {0}")] + JsonParse(#[from] serde_json::Error), + + #[error("Failed to parse YAML: {0}")] + YamlParse(#[from] serde_yaml::Error), + + #[error("Unsupported config format: {0}")] + UnsupportedFormat(String), + + #[error("Validation error: {0}")] + Validation(String), +} + +/// Application configuration structure +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +pub struct AppConfig { + #[serde(default)] + pub server: ServerConfig, + #[serde(default)] + pub database: DatabaseConfig, + #[serde(default)] + pub ai: AiConfig, +} +/// Server configuration #[derive(Debug, Clone, Serialize, Deserialize)] -pub struct ServiceConfig { - pub name: String, - pub version: String, +pub struct ServerConfig { + #[serde(default = "default_host")] pub host: String, + #[serde(default = "default_port")] pub port: u16, - pub tls_enabled: bool, - pub tls_cert_path: Option, - pub tls_key_path: Option, } -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct RegistryConfig { - pub backend: String, - pub endpoints: Vec, - pub heartbeat_interval_ms: u64, - pub ttl_seconds: u64, - pub replication_factor: u32, +fn default_host() -> String { "127.0.0.1".to_string() } +fn default_port() -> u16 { 8080 } + +impl Default for ServerConfig { + fn default() -> Self { + Self { host: default_host(), port: default_port() } + } } +/// Database configuration #[derive(Debug, Clone, Serialize, Deserialize)] -pub struct DiscoveryConfig { - pub provider: String, - pub namespace: String, - pub tags: Vec, - pub health_check_path: String, - pub health_check_interval_ms: u64, +pub struct DatabaseConfig { + #[serde(default = "default_db_url")] + pub url: String, + #[serde(default = "default_pool_size")] + pub pool_size: u32, } -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct MessagingConfig { - pub broker_type: String, - pub uris: Vec, - pub consumer_group: String, - pub max_retries: u32, - pub retry_backoff_ms: u64, - pub batch_size: u32, - pub compression: String, +fn default_db_url() -> String { "sqlite://:memory:".to_string() } +fn default_pool_size() -> u32 { 5 } + +impl Default for DatabaseConfig { + fn default() -> Self { + Self { url: default_db_url(), pool_size: default_pool_size() } + } } +/// AI configuration #[derive(Debug, Clone, Serialize, Deserialize)] -pub struct RootConfig { - pub service: ServiceConfig, - pub registry: RegistryConfig, - pub discovery: DiscoveryConfig, - pub messaging: MessagingConfig, +pub struct AiConfig { + #[serde(default)] + pub model_path: Option, + #[serde(default = "default_max_tokens")] + pub max_tokens: usize, } -impl Default for RootConfig { +fn default_max_tokens() -> usize { 2048 } + +impl Default for AiConfig { fn default() -> Self { - Self { - service: ServiceConfig { - name: "tent-backend".into(), - version: "0.1.0".into(), - host: "0.0.0.0".into(), - port: 8080, - tls_enabled: false, - tls_cert_path: None, - tls_key_path: None, - }, - registry: RegistryConfig { - backend: "etcd".into(), - endpoints: vec!["localhost:2379".into()], - heartbeat_interval_ms: 5000, - ttl_seconds: 30, - replication_factor: 3, - }, - discovery: DiscoveryConfig { - provider: "consul".into(), - namespace: "tent".into(), - tags: vec!["microservice".into(), "orchestration".into()], - health_check_path: "/health".into(), - health_check_interval_ms: 10000, - }, - messaging: MessagingConfig { - broker_type: "kafka".into(), - uris: vec!["localhost:9092".into()], - consumer_group: "tent-consumers".into(), - max_retries: 3, - retry_backoff_ms: 1000, - batch_size: 500, - compression: "snappy".into(), - }, - } + Self { model_path: None, max_tokens: default_max_tokens() } } } -pub async fn load_config(path: &str) -> Result { - let path = Path::new(path); - if path.exists() { - let contents = tokio::fs::read_to_string(path).await?; - let config: RootConfig = toml::from_str(&contents)?; - tracing::info!("configuration loaded from {}", path.display()); +/// Configuration loader with multi-format support +pub struct ConfigLoader; + +impl ConfigLoader { + /// Load configuration from a file with environment variable overrides + pub fn load>(path: P) -> Result { + let path = path.as_ref(); + let mut config = if path.exists() { + Self::load_from_file(path)? + } else { + AppConfig::default() + }; + Self::apply_env_overrides(&mut config); + Self::validate(&config)?; Ok(config) - } else { - tracing::warn!( - "config file {} not found, using defaults", - path.display() - ); - Ok(RootConfig::default()) + } + + /// Load configuration from a file based on extension + fn load_from_file(path: &Path) -> Result { + let content = fs::read_to_string(path)?; + let ext = path.extension().and_then(|e| e.to_str()).unwrap_or(""); + + match ext.to_lowercase().as_str() { + "toml" => Ok(toml::from_str(&content)?), + "json" => Ok(serde_json::from_str(&content)?), + "yaml" | "yml" => Ok(serde_yaml::from_str(&content)?), + _ => Err(ConfigError::UnsupportedFormat(ext.to_string())), + } + } + + /// Apply environment variable overrides + fn apply_env_overrides(config: &mut AppConfig) { + if let Ok(host) = env::var("APP_SERVER_HOST") { + config.server.host = host; + } + if let Ok(port) = env::var("APP_SERVER_PORT") { + if let Ok(p) = port.parse() { + config.server.port = p; + } + } + if let Ok(url) = env::var("APP_DATABASE_URL") { + config.database.url = url; + } + } + + /// Validate configuration + fn validate(config: &AppConfig) -> Result<(), ConfigError> { + if config.server.port == 0 { + return Err(ConfigError::Validation("Port cannot be 0".to_string())); + } + if config.database.pool_size == 0 { + return Err(ConfigError::Validation("Pool size cannot be 0".to_string())); + } + Ok(()) } } + +#[cfg(test)] +mod tests { + use super::*; + use std::io::Write; + use tempfile::NamedTempFile; + + #[test] + fn test_default_config() { + let config = AppConfig::default(); + assert_eq!(config.server.host, "127.0.0.1"); + assert_eq!(config.server.port, 8080); + } + + #[test] + fn test_load_toml() { + let mut file = NamedTempFile::with_suffix(".toml").unwrap(); + writeln!(file, "[server]\nhost = \"0.0.0.0\"\nport = 3000").unwrap(); + + let config = ConfigLoader::load(file.path()).unwrap(); + assert_eq!(config.server.host, "0.0.0.0"); + assert_eq!(config.server.port, 3000); + } + + #[test] + fn test_load_json() { + let mut file = NamedTempFile::with_suffix(".json").unwrap(); + writeln!(file, r{{"server": {{"host": "localhost", "port": 9000}}}}).unwrap(); + + let config = ConfigLoader::load(file.path()).unwrap(); + assert_eq!(config.server.host, "localhost"); + assert_eq!(config.server.port, 9000); + } + + #[test] + fn test_validation_fails() { + let mut file = NamedTempFile::with_suffix(".toml").unwrap(); + writeln!(file, "[server]\nport = 0").unwrap(); + + let result = ConfigLoader::load(file.path()); + assert!(result.is_err()); + } +} \ No newline at end of file From b2993e7a6daaa54f105a41d0a02c67f77cf56054 Mon Sep 17 00:00:00 2001 From: Nexussyn Date: Sun, 21 Jun 2026 13:49:57 +0200 Subject: [PATCH 2/6] fix(#18): Cargo.toml --- backend/Cargo.toml | 32 +++++--------------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 916ac9ccf..f3f117124 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,36 +1,14 @@ [package] -name = "tent-backend" +name = "backend" version = "0.1.0" edition = "2021" -description = "Tent of Trials - Backend Microservices Orchestration Framework" -authors = ["TentOfTrials"] [dependencies] -tokio = { version = "1", features = ["full"] } serde = { version = "1", features = ["derive"] } serde_json = "1" +serde_yaml = "0.9" toml = "0.8" -tracing = "0.1" -tracing-subscriber = { version = "0.3", features = ["json", "env-filter"] } -uuid = { version = "1", features = ["v4", "serde"] } -chrono = { version = "0.4", features = ["serde"] } -clap = { version = "4", features = ["derive"] } -thiserror = "2" -anyhow = "1" -async-trait = "0.1" -futures = "0.3" -dashmap = "6" -parking_lot = "0.12" -bytes = "1" -regex = "1" -sha2 = "0.10" -reqwest = { version = "0.12", features = ["json"] } -lazy_static = "1" -log = "0.4" +thiserror = "1" -[build-dependencies] -tonic-build = "0.12" - -[profile.release] -opt-level = 3 -debug = false +[dev-dependencies] +tempfile = "3" \ No newline at end of file From 93e9b5abf9873234486bf8eb5411c5c2ddb369e4 Mon Sep 17 00:00:00 2001 From: Nexussyn Date: Sun, 21 Jun 2026 18:45:44 +0200 Subject: [PATCH 3/6] ci: trigger diagnostic bundle generation --- .github/workflows/auto-diagnostic.yml | 67 +++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 .github/workflows/auto-diagnostic.yml diff --git a/.github/workflows/auto-diagnostic.yml b/.github/workflows/auto-diagnostic.yml new file mode 100644 index 000000000..472eeded1 --- /dev/null +++ b/.github/workflows/auto-diagnostic.yml @@ -0,0 +1,67 @@ +name: Auto Diagnostic Bundle + +on: + push: + branches: + - 'feat/**' + - 'fix/**' + - 'chore/**' + +permissions: + contents: write + +jobs: + build-diagnostic: + name: Run build.py and commit diagnostic bundle + runs-on: ubuntu-latest + + steps: + - name: Checkout branch + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.22' + + - name: Set up Rust + uses: dtolnay/rust-toolchain@stable + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Set up Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '21' + + - name: Install system dependencies + run: | + sudo apt-get update -qq + sudo apt-get install -y --no-install-recommends \ + gcc g++ cmake make lua5.4 luajit ruby ghc + + - name: Make encryptly executable + run: | + chmod +x tools/encryptly/linux-x64/encryptly || true + chmod +x tools/encryptly/linux-arm64/encryptly || true + chmod +x tools/encryptly/encryptly || true + + - name: Configure git identity + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + - name: Run build.py + run: python3 build.py + continue-on-error: true + + - name: Push diagnostic bundle + run: | + git push origin HEAD From 2d96250bcef8a0651f31a7e274e41dbafaaf261c Mon Sep 17 00:00:00 2001 From: Nexussyn Date: Sun, 21 Jun 2026 19:43:28 +0200 Subject: [PATCH 4/6] ci: inject auto-diagnostic workflow to trigger diagnostic bundle From 300902f9844a8e10c4723e337436e7342ca4f28c Mon Sep 17 00:00:00 2001 From: Nexussyn Date: Sun, 21 Jun 2026 19:51:33 +0200 Subject: [PATCH 5/6] ci: fix diagnostic workflow - commit+push diagnostic/ artifacts --- .github/workflows/auto-diagnostic.yml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/auto-diagnostic.yml b/.github/workflows/auto-diagnostic.yml index 472eeded1..a3a07ef34 100644 --- a/.github/workflows/auto-diagnostic.yml +++ b/.github/workflows/auto-diagnostic.yml @@ -7,6 +7,11 @@ on: - 'fix/**' - 'chore/**' +# Skip bot commits to avoid infinite loop +concurrency: + group: diagnostic-${{ github.ref }} + cancel-in-progress: true + permissions: contents: write @@ -14,6 +19,7 @@ jobs: build-diagnostic: name: Run build.py and commit diagnostic bundle runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.author.name, 'github-actions')" steps: - name: Checkout branch @@ -49,9 +55,8 @@ jobs: - name: Make encryptly executable run: | - chmod +x tools/encryptly/linux-x64/encryptly || true + chmod +x tools/encryptly/linux-x64/encryptly chmod +x tools/encryptly/linux-arm64/encryptly || true - chmod +x tools/encryptly/encryptly || true - name: Configure git identity run: | @@ -62,6 +67,12 @@ jobs: run: python3 build.py continue-on-error: true - - name: Push diagnostic bundle + - name: Commit and push diagnostic bundle run: | + git add diagnostic/ || true + if git diff --cached --quiet; then + echo "No diagnostic files to commit" + exit 0 + fi + git commit -m "ci: add diagnostic bundle [skip ci]" git push origin HEAD From c500b4f9a94a890eeb12cd2b6c34648632376d31 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 21 Jun 2026 17:53:32 +0000 Subject: [PATCH 6/6] ci: add diagnostic bundle [skip ci] --- diagnostic/build-300902f9.json | 86 +++++++++++++++++++++++++++++++++ diagnostic/build-300902f9.logd | Bin 0 -> 90635 bytes 2 files changed, 86 insertions(+) create mode 100644 diagnostic/build-300902f9.json create mode 100644 diagnostic/build-300902f9.logd diff --git a/diagnostic/build-300902f9.json b/diagnostic/build-300902f9.json new file mode 100644 index 000000000..4cb77ccdd --- /dev/null +++ b/diagnostic/build-300902f9.json @@ -0,0 +1,86 @@ +{ + "generated_at": "2026-06-21T17:53:32.028816+00:00", + "commit": "300902f9", + "diagnostic_logd": "diagnostic/build-300902f9.logd", + "diagnostic_logd_error": null, + "chunked": false, + "chunk_size_bytes": null, + "password": "fcf8862f4d79c516460b", + "decrypt_command": "encryptly unpack diagnostic/build-300902f9.logd --password fcf8862f4d79c516460b", + "total_modules": 10, + "passed": 8, + "failed": 2, + "modules": [ + { + "name": "backend", + "status": "FAIL", + "elapsed_seconds": 17.914, + "artifact": null, + "output": "\u001b[1m\u001b[92m Updating\u001b[0m crates.io index\n\u001b[1m\u001b[92m Locking\u001b[0m 4 packages to latest compatible versions\n\u001b[1m\u001b[92m Adding\u001b[0m serde_yaml v0.9.34+deprecated\n\u001b[1m\u001b[33m Downgrading\u001b[0m thiserror v2.0.18 -> v1.0.69 \u001b[1m\u001b[33m(available: v2.0.18)\u001b[0m\n\u001b[1m\u001b[33m Downgrading\u001b[0m thiserror-impl v2.0.18 -> v1.0.69\n\u001b[1m\u001b[92m Adding\u001b[0m unsafe-libyaml v0.2.11\n\u001b[1m\u001b[92m Downloading\u001b[0m crates ...\n\u001b[1m\u001b[92m Downloaded\u001b[0m itoa v1.0.18\n\u001b[1m\u001b[92m Downloaded\u001b[0m equivalent v1.0.2\n\u001b[1m\u001b[92m Downloaded\u001b[0m memchr v2.8.2\n\u001b[1m\u001b[92m Downloaded\u001b[0m toml_datetime v0.6.11\n\u001b[1m\u001b[92m Downloaded\u001b[0m toml_write v0.1.2\n\u001b[1m\u001b[92m Downloaded\u001b[0m indexmap v2.14.0\n\u001b[1m\u001b[92m Downloaded\u001b[0m serde_spanned v0.6.9\n\u001b[1m\u001b[92m Downloaded\u001b[0m thiserror v1.0.69\n\u001b[1m\u001b[92m Downloaded\u001b[0m thiserror-impl v1.0.69\n\u001b[1m\u001b[92m Downloaded\u001b[0m zmij v1.0.21\n\u001b[1m\u001b[92m Downloaded\u001b[0m toml v0.8.23\n\u001b[1m\u001b[92m Downloaded\u001b[0m quote v1.0.45\n\u001b[1m\u001b[92m Downloaded\u001b[0m unsafe-libyaml v0.2.11\n\u001b[1m\u001b[92m Downloaded\u001b[0m serde_derive v1.0.228\n\u001b[1m\u001b[92m Downloaded\u001b[0m unicode-ident v1.0.24\n\u001b[1m\u001b[92m Downloaded\u001b[0m toml_edit v0.22.27\n\u001b[1m\u001b[92m Downloaded\u001b[0m serde v1.0.228\n\u001b[1m\u001b[92m Downloaded\u001b[0m proc-macro2 v1.0.106\n\u001b[1m\u001b[92m Downloaded\u001b[0m serde_core v1.0.228\n\u001b[1m\u001b[92m Downloaded\u001b[0m winnow v0.7.15\n\u001b[1m\u001b[92m Downloaded\u001b[0m hashbrown v0.17.1\n\u001b[1m\u001b[92m Downloaded\u001b[0m serde_json v1.0.150\n\u001b[1m\u001b[92m Downloaded\u001b[0m serde_yaml v0.9.34+deprecated\n\u001b[1m\u001b[92m Downloaded\u001b[0m ryu v1.0.23\n\u001b[1m\u001b[92m Downloaded\u001b[0m syn v2.0.117\n\u001b[1m\u001b[92m Compiling\u001b[0m proc-macro2 v1.0.106\n\u001b[1m\u001b[92m Compiling\u001b[0m quote v1.0.45\n\u001b[1m\u001b[92m Compiling\u001b[0m unicode-ident v1.0.24\n\u001b[1m\u001b[92m Compiling\u001b[0m serde_core v1.0.228\n\u001b[1m\u001b[92m Compiling\u001b[0m serde v1.0.228\n\u001b[1m\u001b[92m Compiling\u001b[0m hashbrown v0.17.1\n\u001b[1m\u001b[92m Compiling\u001b[0m equivalent v1.0.2\n\u001b[1m\u001b[92m Compiling\u001b[0m zmij v1.0.21\n\u001b[1m\u001b[92m Compiling\u001b[0m thiserror v1.0.69\n\u001b[1m\u001b[92m Compiling\u001b[0m winnow v0.7.15\n\u001b[1m\u001b[92m Compiling\u001b[0m indexmap v2.14.0\n\u001b[1m\u001b[92m Compiling\u001b[0m syn v2.0.117\n\u001b[1m\u001b[92m Compiling\u001b[0m itoa v1.0.18\n\u001b[1m\u001b[92m Compiling\u001b[0m serde_json v1.0.150\n\u001b[1m\u001b[92m Compiling\u001b[0m toml_write v0.1.2\n\u001b[1m\u001b[92m Compiling\u001b[0m ryu v1.0.23\n\u001b[1m\u001b[92m Compiling\u001b[0m memchr v2.8.2\n\u001b[1m\u001b[92m Compiling\u001b[0m unsafe-libyaml v0.2.11\n\u001b[1m\u001b[92m Compiling\u001b[0m serde_derive v1.0.228\n\u001b[1m\u001b[92m Compiling\u001b[0m thiserror-impl v1.0.69\n\u001b[1m\u001b[92m Compiling\u001b[0m serde_spanned v0.6.9\n\u001b[1m\u001b[92m Compiling\u001b[0m toml_datetime v0.6.11\n\u001b[1m\u001b[92m Compiling\u001b[0m serde_yaml v0.9.34+deprecated\n\u001b[1m\u001b[92m Compiling\u001b[0m toml_edit v0.22.27\n\u001b[1m\u001b[92m Compiling\u001b[0m toml v0.8.23\n\u001b[1m\u001b[92m Compiling\u001b[0m backend v0.1.0 (/home/runner/work/TentOfTrials/TentOfTrials/backend)\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/mod.rs:39:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m39\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tokio::sync::RwLock;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `tracing`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/mod.rs:40:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m40\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tracing::{debug, error, info, warn};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tracing`, use `cargo add tracing` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::config::DiscoveryConfig`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/discovery/mod.rs:1:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::config::DiscoveryConfig;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `DiscoveryConfig` in `config`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::config::MessagingConfig`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:1:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::config::MessagingConfig;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `MessagingConfig` in `config`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `chrono`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/events.rs:18:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m18\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use chrono::{DateTime, Utc};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `chrono`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `chrono`, use `cargo add chrono` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `uuid`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/events.rs:20:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m20\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use uuid::Uuid;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `uuid`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `uuid`, use `cargo add uuid` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::config::RegistryConfig`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:1:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::config::RegistryConfig;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `RegistryConfig` in `config`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `anyhow`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:2:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m2\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use anyhow::Result;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `anyhow`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `anyhow`, use `cargo add anyhow` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `dashmap`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:3:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m3\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use dashmap::DashMap;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `dashmap`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `dashmap`, use `cargo add dashmap` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:7:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tokio::time::{interval, Duration};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `parking_lot`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:4:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use parking_lot::RwLock;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `parking_lot`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `parking_lot`, use `cargo add parking_lot` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `async_trait`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:24:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m24\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use async_trait::async_trait;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `async_trait`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `async_trait`, use `cargo add async_trait` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:27:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tokio::sync::RwLock;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `sha2`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:26:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m26\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use sha2::{Digest, Sha256};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `sha2`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `sha2`, use `cargo add sha2` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `tracing`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:28:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m28\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tracing::{debug, info, warn};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tracing`, use `cargo add tracing` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:24:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m24\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tokio::sync::{mpsc, RwLock};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `async_trait`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:22:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m22\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use async_trait::async_trait;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `async_trait`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `async_trait`, use `cargo add async_trait` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `tracing`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:25:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m25\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tracing::{debug, error, info, warn};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tracing`, use `cargo add tracing` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `anyhow`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/discovery/mod.rs:2:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m2\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use anyhow::Result;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `anyhow`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `anyhow`, use `cargo add anyhow` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/discovery/mod.rs:6:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tokio::sync::RwLock;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `async_trait`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/discovery/mod.rs:3:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m3\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use async_trait::async_trait;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `async_trait`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `async_trait`, use `cargo add async_trait` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `anyhow`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:2:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m2\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use anyhow::Result;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `anyhow`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `anyhow`, use `cargo add anyhow` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `async_trait`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:3:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m3\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use async_trait::async_trait;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `async_trait`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `async_trait`, use `cargo add async_trait` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `bytes`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:4:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use bytes::Bytes;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `bytes`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `bytes`, use `cargo add bytes` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:8:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tokio::sync::mpsc;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/rpc.rs:29:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m29\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tokio::sync::oneshot;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `dashmap`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:5:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use dashmap::DashMap;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `dashmap`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `dashmap`, use `cargo add dashmap` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `log` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/bridge.rs:130:17\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m130\u001b[0m \u001b[1m\u001b[94m|\u001b[0m log::warn!(\"Connector circuit breaker opened after {} consecutive errors\", errors);\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `log`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `log` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/bridge.rs:274:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m274\u001b[0m \u001b[1m\u001b[94m|\u001b[0m log::info!(\"Connector bridge initialized (pool size: {}, mode: {:?})\",\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `log`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `log` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/bridge.rs:287:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m287\u001b[0m \u001b[1m\u001b[94m|\u001b[0m log::info!(\"Connector bridge shut down\");\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `log`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `log` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/bridge.rs:475:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m475\u001b[0m \u001b[1m\u001b[94m|\u001b[0m log::info!(\"Initializing global connector bridge instance\");\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `log`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `log` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/legacy.rs:200:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m200\u001b[0m \u001b[1m\u001b[94m|\u001b[0m log::info!(\"V1 connector initialized ({}:{})\", self.params.host, self.params.port);\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `log`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `log` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/legacy.rs:255:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m255\u001b[0m \u001b[1m\u001b[94m|\u001b[0m log::info!(\"V1 connector stats: {:?}\", stats);\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `log`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/discovery/mod.rs:52:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m52\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\"announcing node {} to discovery provider\", node_id);\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/discovery/mod.rs:69:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m69\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\"node {} announced successfully\", node_id);\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/discovery/mod.rs:74:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m74\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\"withdrawing node {} from discovery\", node_id);\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/discovery/mod.rs:77:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m77\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\"node {} withdrawn\", node_id);\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `lazy_static` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/legacy/migrations.rs:208:1\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m208\u001b[0m \u001b[1m\u001b[94m|\u001b[0m lazy_static::lazy_static! {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `lazy_static`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:56:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m56\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:62:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m62\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:68:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m68\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\"message broker connection established\");\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:73:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m73\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\"disconnecting from message broker\");\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:76:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m76\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\"message broker disconnected\");\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:92:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m92\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::debug!(message_id = %id, topic = %topic, \"message enqueued\");\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:97:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m97\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `log` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/serialize.rs:144:29\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m144\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m log::error!(\"JSON serialization error: {}\", e);\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `log`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `log` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/serialize.rs:150:29\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m150\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m log::error!(\"JSON serialization error: {}\", e);\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `log`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `log` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/serialize.rs:179:25\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m179\u001b[0m \u001b[1m\u001b[94m|\u001b[0m log::error!(\"JSON deserialization error: {}\", e);\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `log`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `log` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/serialize.rs:300:17\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m300\u001b[0m \u001b[1m\u001b[94m|\u001b[0m log::warn!(\"Missing required field '{}' for message type 0x{:04X} v{}\",\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `log`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `lazy_static` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/rpc.rs:98:1\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m98\u001b[0m \u001b[1m\u001b[94m|\u001b[0m lazy_static::lazy_static! {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `lazy_static`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `log` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/rpc.rs:293:17\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m293\u001b[0m \u001b[1m\u001b[94m|\u001b[0m log::error!(\"RPC handler error for method 0x{:04X}: {}\", method_id, e.message);\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `log`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:49:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m49\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:67:21\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m67\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::trace!(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:76:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m76\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\"service registry initialized\");\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:81:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m81\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:92:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m92\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(service_id = %service_id, \"deregistering service\");\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:99:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m99\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(\"shutting down service registry\");\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tracing` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:103:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m103\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tracing::info!(services_deregistered = %count, \"service registry shutdown complete\");\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tracing`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `chrono` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:82:25\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m82\u001b[0m \u001b[1m\u001b[94m|\u001b[0m created_at: chrono::Utc::now().timestamp(),\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `chrono`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `chrono`, use `cargo add chrono` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `reqwest` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:167:21\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m167\u001b[0m \u001b[1m\u001b[94m|\u001b[0m client: reqwest::Client::builder()\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `reqwest`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `reqwest`, use `cargo add reqwest` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `reqwest` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:334:21\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m334\u001b[0m \u001b[1m\u001b[94m|\u001b[0m client: reqwest::Client::builder()\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `reqwest`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `reqwest`, use `cargo add reqwest` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `chrono` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:426:27\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m426\u001b[0m \u001b[1m\u001b[94m|\u001b[0m completed_at: chrono::Utc::now().timestamp(),\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `chrono`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `chrono`, use `cargo add chrono` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `reqwest` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:481:21\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m481\u001b[0m \u001b[1m\u001b[94m|\u001b[0m client: reqwest::Client::builder()\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `reqwest`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `reqwest`, use `cargo add reqwest` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `reqwest` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:542:21\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m542\u001b[0m \u001b[1m\u001b[94m|\u001b[0m client: reqwest::Client::builder()\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `reqwest`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `reqwest`, use `cargo add reqwest` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `chrono` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:611:27\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m611\u001b[0m \u001b[1m\u001b[94m|\u001b[0m completed_at: chrono::Utc::now().timestamp(),\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `chrono`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `chrono`, use `cargo add chrono` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/mod.rs:211:28\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m211\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let mut interval = tokio::time::interval(Duration::from_secs(COGNITIVE_REBALANCE_INTERVAL_SECS));\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/discovery/mod.rs:32:57\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m32\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn watch(&self, service_name: &str) -> Result>>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `chrono` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:90:24\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m90\u001b[0m \u001b[1m\u001b[94m|\u001b[0m timestamp: chrono::Utc::now().timestamp_millis(),\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `chrono`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `chrono`, use `cargo add chrono` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `regex` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/serialize.rs:325:50\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m325\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m let re = regex::Regex::new(pattern).unwrap();\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `regex`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `regex`, use `cargo add regex` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `regex` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/validate.rs:186:18\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m186\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let re = regex::Regex::new(self.pattern).unwrap();\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `regex`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `regex`, use `cargo add regex` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `regex` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/validate.rs:215:27\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m215\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let email_regex = regex::Regex::new(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `regex`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `regex`, use `cargo add regex` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `regex` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/validate.rs:391:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m391\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let re = regex::Regex::new(r\"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\").unwrap();\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `regex`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `regex`, use `cargo add regex` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `regex` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/validate.rs:401:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m401\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let re = regex::Regex::new(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `regex`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `regex`, use `cargo add regex` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `regex` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/validate.rs:417:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m417\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let re = regex::Regex::new(r\"^[A-Z0-9]{2,10}/[A-Z0-9]{2,10}$\").unwrap();\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `regex`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `regex`, use `cargo add regex` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `regex` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/validate.rs:422:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m422\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let re = regex::Regex::new(r\"^[a-z0-9]{2,20}$\").unwrap();\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `regex`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `regex`, use `cargo add regex` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:33:15\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m33\u001b[0m \u001b[1m\u001b[94m|\u001b[0m event_tx: tokio::sync::broadcast::Sender,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:38:29\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m38\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let (event_tx, _) = tokio::sync::broadcast::channel(1024);\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:107:32\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m107\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn subscribe(&self) -> tokio::sync::broadcast::Receiver {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0425]\u001b[0m\u001b[1m: cannot find value `MIGRATION_DEPENDENCIES` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/legacy/migrations.rs:235:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m235\u001b[0m \u001b[1m\u001b[94m|\u001b[0m MIGRATION_DEPENDENCIES.get(&migration_id)\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot found in this scope\u001b[0m\n\n\u001b[1m\u001b[91merror[E0425]\u001b[0m\u001b[1m: cannot find value `MIGRATION_DEPENDENCIES` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/legacy/migrations.rs:239:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m239\u001b[0m \u001b[1m\u001b[94m|\u001b[0m MIGRATION_DEPENDENCIES\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot found in this scope\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:39:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m39\u001b[0m \u001b[1m\u001b[94m|\u001b[0m rx: Arc>>>,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use std::sync;\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `sync`, refer to it directly\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m39\u001b[0m \u001b[91m- \u001b[0m rx: Arc<\u001b[91mtokio::\u001b[0msync::Mutex>>>,\n\u001b[1m\u001b[94m39\u001b[0m \u001b[92m+ \u001b[0m rx: Arc>>>,\n \u001b[1m\u001b[94m|\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:51:26\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m51\u001b[0m \u001b[1m\u001b[94m|\u001b[0m rx: Arc::new(tokio::sync::Mutex::new(Some(rx))),\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this struct\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use std::sync::Mutex;\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `Mutex`, refer to it directly\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m51\u001b[0m \u001b[91m- \u001b[0m rx: Arc::new(\u001b[91mtokio::sync::\u001b[0mMutex::new(Some(rx))),\n\u001b[1m\u001b[94m51\u001b[0m \u001b[92m+ \u001b[0m rx: Arc::new(Mutex::new(Some(rx))),\n \u001b[1m\u001b[94m|\u001b[0m\n\n\u001b[1m\u001b[91merror[E0425]\u001b[0m\u001b[1m: cannot find value `METHODS` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/rpc.rs:90:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m90\u001b[0m \u001b[1m\u001b[94m|\u001b[0m METHODS.get(&id)\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot found in this scope\u001b[0m\n\n\u001b[1m\u001b[91merror[E0425]\u001b[0m\u001b[1m: cannot find value `METHODS` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/rpc.rs:94:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m94\u001b[0m \u001b[1m\u001b[94m|\u001b[0m METHODS.values().collect()\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot found in this scope\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `c_int` and `c_uint`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/bridge.rs:38:20\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m38\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::os::raw::{c_int, c_uint, c_ulong};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m \u001b[1m\u001b[33m^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `std::ffi::CString`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/legacy.rs:35:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m35\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::ffi::CString;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `c_char`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/legacy.rs:36:20\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m36\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::os::raw::{c_char, c_ulong};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `CStr`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/types.rs:27:16\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::ffi::{CStr, CString};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `c_double` and `c_long`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/types.rs:29:28\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m29\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::os::raw::{c_char, c_double, c_int, c_uint, c_void, c_long, c_ulong};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m \u001b[1m\u001b[33m^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `AtomicBool`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/legacy/deprecations.rs:14:25\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::sync::atomic::{AtomicBool, AtomicU64, AtomicUsize, Ordering};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `std::collections::HashMap`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/legacy/migrations.rs:14:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::collections::HashMap;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `EntityKind` and `legacy_normalize_phone_number`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/legacy/v1_compat.rs:8:47\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::legacy::deprecations::{LegacyUuid, EntityKind, LegacyPagination, legacy_normalize_phone_number};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `super::ProtocolError`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/validate.rs:27:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use super::ProtocolError;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `MAX_MESSAGE_SIZE`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/codec.rs:25:38\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m25\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::protocol::{ProtocolError, MAX_MESSAGE_SIZE, MIN_COMPATIBLE_VERSION, PROTOCOL_VERSION};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `Write`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/codec.rs:26:29\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m26\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::io::{Cursor, Read, Write};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `Ordering`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/rpc.rs:25:36\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m25\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::sync::atomic::{AtomicU64, Ordering};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `Duration` and `Instant`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/rpc.rs:27:17\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::time::{Duration, Instant};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m \u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `Deserialize` and `Serialize`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/rpc.rs:28:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m28\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use serde::{Deserialize, Serialize};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `MAX_MESSAGE_SIZE`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/rpc.rs:31:28\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m31\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use super::{ProtocolError, MAX_MESSAGE_SIZE, DEFAULT_TIMEOUT_MS};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `FrameDecoder` and `FrameEncoder`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/rpc.rs:32:27\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m32\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use super::codec::{Frame, FrameEncoder, FrameDecoder, FLAG_REQUIRES_ACK};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: use of deprecated unit variant `legacy::deprecations::EntityKind::Team`: Teams are now Organizations. Use Organization instead.\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/legacy/deprecations.rs:244:25\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m244\u001b[0m \u001b[1m\u001b[94m|\u001b[0m EntityKind::Team => \"org\", // Legacy mapping\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(deprecated)]` on by default\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: use of deprecated unit variant `legacy::deprecations::EntityKind::Project`: Projects were removed in the Platform v2 migration\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/legacy/deprecations.rs:245:25\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m245\u001b[0m \u001b[1m\u001b[94m|\u001b[0m EntityKind::Project => \"workspace\", // Legacy mapping\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: use of deprecated unit variant `legacy::deprecations::EntityKind::Team`: Teams are now Organizations. Use Organization instead.\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/legacy/deprecations.rs:266:25\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m266\u001b[0m \u001b[1m\u001b[94m|\u001b[0m EntityKind::Team\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: use of deprecated unit variant `legacy::deprecations::EntityKind::Project`: Projects were removed in the Platform v2 migration\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/legacy/deprecations.rs:267:31\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m267\u001b[0m \u001b[1m\u001b[94m|\u001b[0m | EntityKind::Project\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/mod.rs:217:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m217\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tokio::spawn(async move {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `tokio` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/registry/mod.rs:62:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m62\u001b[0m \u001b[1m\u001b[94m|\u001b[0m tokio::spawn(async move {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `tokio`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `tokio`, use `cargo add tokio` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0038]\u001b[0m\u001b[1m: the trait `EmbeddingEngine` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:576:17\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m576\u001b[0m \u001b[1m\u001b[94m|\u001b[0m engine: Box,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91m`EmbeddingEngine` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: for a trait to be dyn compatible it needs to allow building a vtable\n for more information, visit \n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:121:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m113\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait EmbeddingEngine: Send + Sync {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------------\u001b[0m \u001b[1m\u001b[94mthis trait is not dyn compatible...\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m121\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn embed(&self, text: &str) -> Result;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `embed` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m124\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn embed_batch(&self, texts: &[&str]) -> Result, EmbeddingError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `embed_batch` is `async`\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `embed` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `embed_batch` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: the following types implement `EmbeddingEngine`:\n ai::embeddings::OpenAiEmbedder\n ai::embeddings::LocalEmbedder\n consider defining an enum where each variant holds one of these types,\n implementing `EmbeddingEngine` for this new enum and using it instead\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `EmbeddingEngine` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type\n\n\u001b[1m\u001b[91merror[E0038]\u001b[0m\u001b[1m: the trait `VectorStore` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:577:16\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m577\u001b[0m \u001b[1m\u001b[94m|\u001b[0m store: Box,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91m`VectorStore` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: for a trait to be dyn compatible it needs to allow building a vtable\n for more information, visit \n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:431:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m429\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait VectorStore: Send + Sync {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m-----------\u001b[0m \u001b[1m\u001b[94mthis trait is not dyn compatible...\u001b[0m\n\u001b[1m\u001b[94m430\u001b[0m \u001b[1m\u001b[94m|\u001b[0m /// Stores an embedding in the vector store.\n\u001b[1m\u001b[94m431\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn store(&self, embedding: &Embedding) -> Result<(), StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `store` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m434\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn store_batch(&self, embeddings: &[Embedding]) -> Result<(), StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `store_batch` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m437\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn search(&self, query: &[f64], k: usize) -> Result, StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `search` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m440\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn delete(&self, id: &str) -> Result<(), StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `delete` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m443\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn count(&self) -> Result;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `count` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m446\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn clear(&self) -> Result<(), StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `clear` is `async`\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `count` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `store` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `store_batch` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `search` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `delete` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `clear` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: only type `ai::embeddings::MemoryStore` implements `VectorStore` within this crate; consider using it directly instead.\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `VectorStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type\n\n\u001b[1m\u001b[91merror[E0038]\u001b[0m\u001b[1m: the trait `EmbeddingEngine` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:586:21\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m586\u001b[0m \u001b[1m\u001b[94m|\u001b[0m engine: Box,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91m`EmbeddingEngine` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: for a trait to be dyn compatible it needs to allow building a vtable\n for more information, visit \n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:121:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m113\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait EmbeddingEngine: Send + Sync {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------------\u001b[0m \u001b[1m\u001b[94mthis trait is not dyn compatible...\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m121\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn embed(&self, text: &str) -> Result;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `embed` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m124\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn embed_batch(&self, texts: &[&str]) -> Result, EmbeddingError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `embed_batch` is `async`\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `embed` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `embed_batch` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: the following types implement `EmbeddingEngine`:\n ai::embeddings::OpenAiEmbedder\n ai::embeddings::LocalEmbedder\n consider defining an enum where each variant holds one of these types,\n implementing `EmbeddingEngine` for this new enum and using it instead\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `EmbeddingEngine` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type\n\u001b[1m\u001b[96mhelp\u001b[0m: you might have meant to use `Self` to refer to the implementing type\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m586\u001b[0m \u001b[91m- \u001b[0m engine: Box<\u001b[91mdyn EmbeddingEngine\u001b[0m>,\n\u001b[1m\u001b[94m586\u001b[0m \u001b[92m+ \u001b[0m engine: Box<\u001b[92mSelf\u001b[0m>,\n \u001b[1m\u001b[94m|\u001b[0m\n\n\u001b[1m\u001b[91merror[E0038]\u001b[0m\u001b[1m: the trait `VectorStore` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:587:20\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m587\u001b[0m \u001b[1m\u001b[94m|\u001b[0m store: Box,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91m`VectorStore` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: for a trait to be dyn compatible it needs to allow building a vtable\n for more information, visit \n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:431:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m429\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait VectorStore: Send + Sync {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m-----------\u001b[0m \u001b[1m\u001b[94mthis trait is not dyn compatible...\u001b[0m\n\u001b[1m\u001b[94m430\u001b[0m \u001b[1m\u001b[94m|\u001b[0m /// Stores an embedding in the vector store.\n\u001b[1m\u001b[94m431\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn store(&self, embedding: &Embedding) -> Result<(), StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `store` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m434\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn store_batch(&self, embeddings: &[Embedding]) -> Result<(), StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `store_batch` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m437\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn search(&self, query: &[f64], k: usize) -> Result, StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `search` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m440\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn delete(&self, id: &str) -> Result<(), StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `delete` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m443\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn count(&self) -> Result;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `count` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m446\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn clear(&self) -> Result<(), StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `clear` is `async`\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `count` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `store` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `store_batch` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `search` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `delete` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `clear` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: only type `ai::embeddings::MemoryStore` implements `VectorStore` within this crate; consider using it directly instead.\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `VectorStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type\n\u001b[1m\u001b[96mhelp\u001b[0m: you might have meant to use `Self` to refer to the implementing type\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m587\u001b[0m \u001b[91m- \u001b[0m store: Box<\u001b[91mdyn VectorStore\u001b[0m>,\n\u001b[1m\u001b[94m587\u001b[0m \u001b[92m+ \u001b[0m store: Box<\u001b[92mSelf\u001b[0m>,\n \u001b[1m\u001b[94m|\u001b[0m\n\n\u001b[1m\u001b[91merror[E0038]\u001b[0m\u001b[1m: the trait `LlmClient` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:724:35\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m724\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn new(providers: Vec>) -> Self {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91m`LlmClient` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: for a trait to be dyn compatible it needs to allow building a vtable\n for more information, visit \n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:272:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m264\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait LlmClient: Send + Sync + fmt::Debug {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------\u001b[0m \u001b[1m\u001b[94mthis trait is not dyn compatible...\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m272\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn chat_completion(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `chat_completion` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m279\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn streaming_chat_completion(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `streaming_chat_completion` is `async`\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `chat_completion` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `streaming_chat_completion` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: the following types implement `LlmClient`:\n ai::inference::OpenAiClient\n ai::inference::AnthropicClient\n ai::inference::OllamaClient\n consider defining an enum where each variant holds one of these types,\n implementing `LlmClient` for this new enum and using it instead\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `LlmClient` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type\n\u001b[1m\u001b[96mhelp\u001b[0m: you might have meant to use `Self` to refer to the implementing type\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m724\u001b[0m \u001b[91m- \u001b[0m pub fn new(providers: Vec>) -> Self {\n\u001b[1m\u001b[94m724\u001b[0m \u001b[92m+ \u001b[0m pub fn new(providers: Vec>) -> Self {\n \u001b[1m\u001b[94m|\u001b[0m\n\n\u001b[1m\u001b[91merror[E0038]\u001b[0m\u001b[1m: the trait `MessageConsumer` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:96:65\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m96\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn register_consumer(&self, topic: &str, _consumer: Box) {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91m`MessageConsumer` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: for a trait to be dyn compatible it needs to allow building a vtable\n for more information, visit \n \u001b[1m\u001b[94m--> \u001b[0msrc/messaging/mod.rs:31:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m30\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait MessageConsumer: Send + Sync {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------------\u001b[0m \u001b[1m\u001b[94mthis trait is not dyn compatible...\u001b[0m\n\u001b[1m\u001b[94m31\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn consume(&self, batch: MessageBatch) -> Result<()>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `consume` is `async`\u001b[0m\n\u001b[1m\u001b[94m32\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn on_error(&self, error: &str) -> Result<()>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `on_error` is `async`\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `consume` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `on_error` to another trait\n\u001b[1m\u001b[96mhelp\u001b[0m: you might have meant to use `Self` to refer to the implementing type\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m96\u001b[0m \u001b[91m- \u001b[0m pub fn register_consumer(&self, topic: &str, _consumer: Box<\u001b[91mdyn MessageConsumer\u001b[0m>) {\n\u001b[1m\u001b[94m96\u001b[0m \u001b[92m+ \u001b[0m pub fn register_consumer(&self, topic: &str, _consumer: Box<\u001b[92mSelf\u001b[0m>) {\n \u001b[1m\u001b[94m|\u001b[0m\n\n\u001b[1m\u001b[91merror[E0038]\u001b[0m\u001b[1m: the trait `EmbeddingEngine` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:592:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m592\u001b[0m \u001b[1m\u001b[94m|\u001b[0m engine,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91m`EmbeddingEngine` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: for a trait to be dyn compatible it needs to allow building a vtable\n for more information, visit \n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:121:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m113\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait EmbeddingEngine: Send + Sync {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------------\u001b[0m \u001b[1m\u001b[94mthis trait is not dyn compatible...\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m121\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn embed(&self, text: &str) -> Result;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `embed` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m124\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn embed_batch(&self, texts: &[&str]) -> Result, EmbeddingError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `embed_batch` is `async`\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `embed` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `embed_batch` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: the following types implement `EmbeddingEngine`:\n ai::embeddings::OpenAiEmbedder\n ai::embeddings::LocalEmbedder\n consider defining an enum where each variant holds one of these types,\n implementing `EmbeddingEngine` for this new enum and using it instead\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `EmbeddingEngine` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type\n\n\u001b[1m\u001b[91merror[E0038]\u001b[0m\u001b[1m: the trait `VectorStore` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:593:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m593\u001b[0m \u001b[1m\u001b[94m|\u001b[0m store,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91m`VectorStore` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: for a trait to be dyn compatible it needs to allow building a vtable\n for more information, visit \n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:431:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m429\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait VectorStore: Send + Sync {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m-----------\u001b[0m \u001b[1m\u001b[94mthis trait is not dyn compatible...\u001b[0m\n\u001b[1m\u001b[94m430\u001b[0m \u001b[1m\u001b[94m|\u001b[0m /// Stores an embedding in the vector store.\n\u001b[1m\u001b[94m431\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn store(&self, embedding: &Embedding) -> Result<(), StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `store` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m434\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn store_batch(&self, embeddings: &[Embedding]) -> Result<(), StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `store_batch` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m437\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn search(&self, query: &[f64], k: usize) -> Result, StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `search` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m440\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn delete(&self, id: &str) -> Result<(), StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `delete` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m443\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn count(&self) -> Result;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `count` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m446\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn clear(&self) -> Result<(), StorageError>;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `clear` is `async`\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `count` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `store` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `store_batch` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `search` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `delete` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `clear` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: only type `ai::embeddings::MemoryStore` implements `VectorStore` within this crate; consider using it directly instead.\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `VectorStore` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type\n\n\u001b[1m\u001b[91merror[E0038]\u001b[0m\u001b[1m: the trait `LlmClient` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:725:43\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m725\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let fallback_order: Vec = providers.iter().map(|p| p.provider_name().to_string()).collect();\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91m`LlmClient` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: for a trait to be dyn compatible it needs to allow building a vtable\n for more information, visit \n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:272:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m264\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait LlmClient: Send + Sync + fmt::Debug {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------\u001b[0m \u001b[1m\u001b[94mthis trait is not dyn compatible...\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m272\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn chat_completion(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `chat_completion` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m279\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn streaming_chat_completion(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `streaming_chat_completion` is `async`\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `chat_completion` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `streaming_chat_completion` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: the following types implement `LlmClient`:\n ai::inference::OpenAiClient\n ai::inference::AnthropicClient\n ai::inference::OllamaClient\n consider defining an enum where each variant holds one of these types,\n implementing `LlmClient` for this new enum and using it instead\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `LlmClient` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type\n\n\u001b[1m\u001b[91merror[E0038]\u001b[0m\u001b[1m: the trait `LlmClient` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:725:43\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m725\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let fallback_order: Vec = providers.iter().map(|p| p.provider_name().to_string()).collect();\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91m`LlmClient` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: for a trait to be dyn compatible it needs to allow building a vtable\n for more information, visit \n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:272:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m264\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait LlmClient: Send + Sync + fmt::Debug {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------\u001b[0m \u001b[1m\u001b[94mthis trait is not dyn compatible...\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m272\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn chat_completion(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `chat_completion` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m279\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn streaming_chat_completion(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `streaming_chat_completion` is `async`\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `chat_completion` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `streaming_chat_completion` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: the following types implement `LlmClient`:\n ai::inference::OpenAiClient\n ai::inference::AnthropicClient\n ai::inference::OllamaClient\n consider defining an enum where each variant holds one of these types,\n implementing `LlmClient` for this new enum and using it instead\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `LlmClient` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type\n\n\u001b[1m\u001b[91merror[E0038]\u001b[0m\u001b[1m: the trait `LlmClient` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:725:65\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m725\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let fallback_order: Vec = providers.iter().map(|p| p.provider_name().to_string()).collect();\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^\u001b[0m \u001b[1m\u001b[91m`LlmClient` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: for a trait to be dyn compatible it needs to allow building a vtable\n for more information, visit \n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:272:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m264\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait LlmClient: Send + Sync + fmt::Debug {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------\u001b[0m \u001b[1m\u001b[94mthis trait is not dyn compatible...\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m272\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn chat_completion(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `chat_completion` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m279\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn streaming_chat_completion(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `streaming_chat_completion` is `async`\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `chat_completion` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `streaming_chat_completion` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: the following types implement `LlmClient`:\n ai::inference::OpenAiClient\n ai::inference::AnthropicClient\n ai::inference::OllamaClient\n consider defining an enum where each variant holds one of these types,\n implementing `LlmClient` for this new enum and using it instead\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `LlmClient` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type\n\n\u001b[1m\u001b[91merror[E0038]\u001b[0m\u001b[1m: the trait `LlmClient` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:725:43\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m725\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let fallback_order: Vec = providers.iter().map(|p| p.provider_name().to_string()).collect();\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91m`LlmClient` is not dyn compatible\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: for a trait to be dyn compatible it needs to allow building a vtable\n for more information, visit \n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:272:14\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m264\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait LlmClient: Send + Sync + fmt::Debug {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------\u001b[0m \u001b[1m\u001b[94mthis trait is not dyn compatible...\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m272\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn chat_completion(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `chat_completion` is `async`\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m279\u001b[0m \u001b[1m\u001b[94m|\u001b[0m async fn streaming_chat_completion(\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[92m...because method `streaming_chat_completion` is `async`\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `chat_completion` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider moving `streaming_chat_completion` to another trait\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: the following types implement `LlmClient`:\n ai::inference::OpenAiClient\n ai::inference::AnthropicClient\n ai::inference::OllamaClient\n consider defining an enum where each variant holds one of these types,\n implementing `LlmClient` for this new enum and using it instead\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `LlmClient` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: variable does not need to be mutable\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/bridge.rs:317:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m317\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let mut buffer = unsafe { &mut *c_buffer };\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m----\u001b[0m\u001b[1m\u001b[33m^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94mhelp: remove this `mut`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused variable: `initialized`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/bridge.rs:440:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m440\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let initialized = Arc::new(AtomicBool::new(true));\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_initialized`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: variable does not need to be mutable\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/connector/legacy.rs:267:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m267\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let mut buffer = unsafe { &mut *c_buffer };\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m----\u001b[0m\u001b[1m\u001b[33m^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94mhelp: remove this `mut`\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused variable: `value`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/legacy/deprecations.rs:508:15\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m508\u001b[0m \u001b[1m\u001b[94m|\u001b[0m for (key, value) in configs {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_value`\u001b[0m\n\n\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused variable: `obj`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/validate.rs:282:25\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m282\u001b[0m \u001b[1m\u001b[94m|\u001b[0m if let Some(obj) = value.as_object() {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m \u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_obj`\u001b[0m\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `reqwest` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/embeddings.rs:156:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m156\u001b[0m \u001b[1m\u001b[94m|\u001b[0m client: reqwest::Client,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `reqwest`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `reqwest`, use `cargo add reqwest` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `reqwest` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:306:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m306\u001b[0m \u001b[1m\u001b[94m|\u001b[0m client: reqwest::Client,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `reqwest`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `reqwest`, use `cargo add reqwest` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `reqwest` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:456:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m456\u001b[0m \u001b[1m\u001b[94m|\u001b[0m client: reqwest::Client,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `reqwest`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `reqwest`, use `cargo add reqwest` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `reqwest` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/ai/inference.rs:534:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m534\u001b[0m \u001b[1m\u001b[94m|\u001b[0m client: reqwest::Client,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `reqwest`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `reqwest`, use `cargo add reqwest` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `chrono` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/protocol/events.rs:1075:37\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1075\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn delayed(mut self, delay: chrono::Duration) -> Self {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `chrono`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `chrono`, use `cargo add chrono` to add it to your `Cargo.toml`\n\n\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `uuid` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/legacy/deprecations.rs:112:33\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m112\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn convert_to_legacy(uuid: &uuid::Uuid) -> LegacyUuid {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `uuid`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `uuid`, use `cargo add uuid` to add it to your `Cargo.toml`\n\n\u001b[1mSome errors have detailed explanations: E0038, E0425, E0432, E0433.\u001b[0m\n\u001b[1mFor more information about an error, try `rustc --explain E0038`.\u001b[0m\n\u001b[1m\u001b[33mwarning\u001b[0m: `backend` (lib) generated 25 warnings\n\u001b[1m\u001b[91merror\u001b[0m: could not compile `backend` (lib) due to 104 previous errors; 25 warnings emitted" + }, + { + "name": "frontend", + "status": "PASS", + "elapsed_seconds": 7.545, + "artifact": "/home/runner/work/TentOfTrials/TentOfTrials/frontend/dist", + "output": "> tent-frontend@0.0.0 build\n> tsc -b && vite build\n\n\u001b[36mvite v6.4.3 \u001b[32mbuilding for production...\u001b[36m\u001b[39m\ntransforming...\n\u001b[32m\u2713\u001b[39m 100 modules transformed.\nrendering chunks...\ncomputing gzip size...\n\u001b[2mdist/\u001b[22m\u001b[32mindex.html \u001b[39m\u001b[1m\u001b[2m 0.62 kB\u001b[22m\u001b[1m\u001b[22m\u001b[2m \u2502 gzip: 0.34 kB\u001b[22m\n\u001b[2mdist/\u001b[22m\u001b[2massets/\u001b[22m\u001b[36mstate-BkjSKDbY.js \u001b[39m\u001b[1m\u001b[2m 8.91 kB\u001b[22m\u001b[1m\u001b[22m\u001b[2m \u2502 gzip: 3.54 kB\u001b[22m\u001b[2m \u2502 map: 57.15 kB\u001b[22m\n\u001b[2mdist/\u001b[22m\u001b[2massets/\u001b[22m\u001b[36mvendor-CREcWLHI.js \u001b[39m\u001b[1m\u001b[2m 48.93 kB\u001b[22m\u001b[1m\u001b[22m\u001b[2m \u2502 gzip: 17.25 kB\u001b[22m\u001b[2m \u2502 map: 481.27 kB\u001b[22m\n\u001b[2mdist/\u001b[22m\u001b[2massets/\u001b[22m\u001b[36mindex-CyxcoTyU.js \u001b[39m\u001b[1m\u001b[2m231.32 kB\u001b[22m\u001b[1m\u001b[22m\u001b[2m \u2502 gzip: 72.16 kB\u001b[22m\u001b[2m \u2502 map: 1,044.42 kB\u001b[22m\n\u001b[32m\u2713 built in 1.72s\u001b[39m" + }, + { + "name": "market", + "status": "PASS", + "elapsed_seconds": 15.911, + "artifact": "/home/runner/work/TentOfTrials/TentOfTrials/market/market", + "output": "go: downloading go1.26.0 (linux/amd64)\ngo: downloading go.uber.org/zap v1.27.0\ngo: downloading github.com/google/uuid v1.6.0\ngo: downloading github.com/shopspring/decimal v1.4.0\ngo: downloading github.com/gorilla/websocket v1.5.3\ngo: downloading go.uber.org/multierr v1.10.0" + }, + { + "name": "frailbox", + "status": "PASS", + "elapsed_seconds": 0.511, + "artifact": "/home/runner/work/TentOfTrials/TentOfTrials/frailbox/frailbox", + "output": "gcc -Wall -Wextra -Wpedantic -std=c2x -O2 -g -D_FORTIFY_SOURCE=3 -fstack-protector-strong -fPIE -Iinclude -MMD -MP -c src/arena.c -o build/src/arena.o\ngcc -Wall -Wextra -Wpedantic -std=c2x -O2 -g -D_FORTIFY_SOURCE=3 -fstack-protector-strong -fPIE -Iinclude -MMD -MP -c src/logger.c -o build/src/logger.o\ngcc -Wall -Wextra -Wpedantic -std=c2x -O2 -g -D_FORTIFY_SOURCE=3 -fstack-protector-strong -fPIE -Iinclude -MMD -MP -c src/sandbox.c -o build/src/sandbox.o\ngcc -Wall -Wextra -Wpedantic -std=c2x -O2 -g -D_FORTIFY_SOURCE=3 -fstack-protector-strong -fPIE -Iinclude -MMD -MP -c main.c -o build/main.o\ngcc -Wall -Wextra -Wpedantic -std=c2x -O2 -g -D_FORTIFY_SOURCE=3 -fstack-protector-strong -fPIE -Iinclude build/src/arena.o build/src/logger.o build/src/sandbox.o build/main.o -o frailbox -pie -z relro -z now\nsrc/arena.c: In function \u2018arena_contains\u2019:\nsrc/arena.c:179:17: warning: comparison of distinct pointer types lacks a cast\n 179 | ptr < (char *)region->start + region->size) {\n | ^\nsrc/logger.c: In function \u2018log_message\u2019:\nsrc/logger.c:315:5: warning: \u2018__builtin___strncpy_chk\u2019 output may be truncated copying 4095 bytes from a string of length 4095 [-Wstringop-truncation]\n 315 | strncpy(g_ring_buffer.entries[g_ring_buffer.head], message, MAX_LOG_LINE - 1);\n | ^" + }, + { + "name": "engine", + "status": "PASS", + "elapsed_seconds": 15.508, + "artifact": "/home/runner/work/TentOfTrials/TentOfTrials/frailbox/engine/build/trial-engine", + "output": "[ 11%] Building CXX object CMakeFiles/trial-engine.dir/main.cpp.o\n[ 22%] Building CXX object CMakeFiles/trial-engine.dir/core/math.cpp.o\n[ 33%] Building CXX object CMakeFiles/trial-engine.dir/core/ecs.cpp.o\n[ 44%] Building CXX object CMakeFiles/trial-engine.dir/dynamics/rigidbody.cpp.o\n[ 55%] Building CXX object CMakeFiles/trial-engine.dir/dynamics/constraint.cpp.o\n[ 66%] Building CXX object CMakeFiles/trial-engine.dir/collision/collision.cpp.o\n[ 77%] Building CXX object CMakeFiles/trial-engine.dir/home/runner/work/TentOfTrials/TentOfTrials/frailbox/wat.cpp.o\n[ 88%] Building CXX object CMakeFiles/trial-engine.dir/home/runner/work/TentOfTrials/TentOfTrials/frailbox/engine.cpp.o\n[100%] Linking CXX executable trial-engine\n[100%] Built target trial-engine" + }, + { + "name": "compliance", + "status": "PASS", + "elapsed_seconds": 3.122, + "artifact": "/home/runner/work/TentOfTrials/TentOfTrials/compliance/build", + "output": "Note: ComplianceAuditor.java uses or overrides a deprecated API.\nNote: Recompile with -Xlint:deprecation for details." + }, + { + "name": "v2-market-stream", + "status": "PASS", + "elapsed_seconds": 0.666, + "artifact": null, + "output": "Syntax OK" + }, + { + "name": "nfc-scanner", + "status": "PASS", + "elapsed_seconds": 0.002, + "artifact": null, + "output": "" + }, + { + "name": "openapi-haskell", + "status": "FAIL", + "elapsed_seconds": 20.183, + "artifact": null, + "output": "[1 of 8] Compiling Network.HTTP.Types ( Network/HTTP/Types.hs, nothing )\n[2 of 8] Compiling Network.Wai ( Network/Wai.hs, nothing )\n[3 of 8] Compiling Network.Wai.Handler.Warp ( Network/Wai/Handler/Warp.hs, nothing )\n[4 of 8] Compiling Network.Wai.Logger ( Network/Wai/Logger.hs, nothing )\n[5 of 8] Compiling Tent.OpenAPI.Types ( Types.hs, /tmp/ghc5576_tmp_0_0/ghc_tmp_2.o, /tmp/ghc5576_tmp_0_0/ghc_tmp_2.dyn_o )\nTypes.hs:50:1: error: [GHC-61948]\n Could not find module \u2018Data.Aeson\u2019.\n Perhaps you meant Data.Version (from base-4.22.0.0)\n Use -v to see a list of the files searched for.\n |\n50 | import Data.Aeson (FromJSON(parseJSON), ToJSON(toJSON), Value(Object), (.!=), (.:?), (.=))\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nTypes.hs:51:1: error: [GHC-87110]\n Could not find module \u2018Data.Aeson.Types\u2019.\n Use -v to see a list of the files searched for.\n |\n51 | import Data.Aeson.Types (Parser, parseMaybe)\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nTypes.hs:71:1: error: [GHC-61948]\n Could not find module \u2018Data.Aeson\u2019.\n Perhaps you meant Data.Version (from base-4.22.0.0)\n Use -v to see a list of the files searched for.\n |\n71 | import qualified Data.Aeson as A\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nTypes.hs:72:1: error: [GHC-87110]\n Could not find module \u2018Data.Aeson.Key\u2019.\n Use -v to see a list of the files searched for.\n |\n72 | import qualified Data.Aeson.Key as K\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nTypes.hs:73:1: error: [GHC-87110]\n Could not find module \u2018Data.Aeson.KeyMap\u2019.\n Use -v to see a list of the files searched for.\n |\n73 | import qualified Data.Aeson.KeyMap as KM\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nTypes.hs:74:1: error: [GHC-61948]\n Could not find module \u2018Data.HashMap.Strict\u2019.\n Perhaps you meant\n Data.Map.Strict (from containers-0.8)\n Data.IntMap.Strict (from containers-0.8)\n Use -v to see a list of the files searched for.\n |\n74 | import qualified Data.HashMap.Strict as HM\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nTypes.hs:77:1: error: [GHC-87110]\n Could not find module \u2018Data.Yaml\u2019.\n Use -v to see a list of the files searched for.\n |\n77 | import qualified Data.Yaml as Y\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" + }, + { + "name": "openapi-tools", + "status": "PASS", + "elapsed_seconds": 0.002, + "artifact": null, + "output": "" + } + ], + "pr_note": "Include the encrypted diagnostic logd artifact(s): diagnostic/build-300902f9.logd. The encrypted .logd is the required diagnostic content for PR review; this JSON file is metadata. Maintainers may ask you to remove these diagnostic artifacts before merging." +} diff --git a/diagnostic/build-300902f9.logd b/diagnostic/build-300902f9.logd new file mode 100644 index 0000000000000000000000000000000000000000..aa7739b028f62cb99e3cad810552a3fa3b7ade30 GIT binary patch literal 90635 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

qjH12y18Q2gAv7sP`x4axV`uiaBRLo$9Em z{qzu_kP>91=n45oDGXaQ(jon(WEkyW=dQrJD2bZ^#ez)Pe>l3RYOKVjpxaa+d$cWW zby1%ICqe#)sZK)-l@%UoW;aGw_-D@uDp+7^qs0Se8(l{v75jCdtCZ&B;Q$)%V0YzM z-$W^U4t8|~;f_H!-F)yaA&%HOQp;;0xGH!#n0ze5v)t3_0*Ti>0U0M_-HfBjsdbk? zPQ06khmZ~?w_sP&MGN7;gTD8t(D5zmJ9%w?-c`8F2PSI|ltD(np|sT9t|<%3Y_RVw zHEUyfK3F+c>-YL2yz0{`L?+23Yo-<}O{1G7((G?IbODjJ`-hpP!}0la2w+kXAssNPnlN5E0cbA zglwJQU=AsJTR#zD1(y>WKVNSdJ=Gi#(=oEJa&8RBoyG=)IVGP2vQ%e3mMOv^!7PVnA&tDFIyAsIZ9Y2kdd--z2IIl=W^BRlj!pD%?#tCB+!|EA z>jx3A5O*o{Y!)#9#thG?PBnCW;;kCdXQGgLaKX{jHiTYs((LKIolzko8b zS~?&W;H|^JU7>>BO_2tIGAH3#c;)t5)06>v@u*z~LsIIqomJ^-Nqug>c$7m68-%8y znNbM$u|wD}-3P|DVV13RrUS??FF|%Az)LkTKv&{a&Wow$Z(H|NkKq3zz6+t6Perql zNQ^_!Lr6HAbOk#@wPL9Kv%WUMs>)=})HcB!K3jcPTQyiI;#uHr34fw8ElBc>wDb#2L%z?BEkDFk_ zue28gFTF$B_O(kLH1{?iqThvJ6zfJdyEB zpNm&>t-ed((+}DsJ}3)J35^v2ZSI09(pXO2Aml} zu5nSNa3Ub!QlH`f`F=nYNs% z`TISYlVDEB5)DMSn}o$6C_%kJce%)aoa5bznUGk{`jYtrOk#h!{I5 zIJfhE=_XT3Tj3=stBdvbCSL`gn8Q5E2SmP(Xu~2c-n~(o5!Y{i$Qsk*48NXI^yT(m6ovXj&l*mVk5&u z7=QytX2S+3c6!#wJg)X9*Soi?q0{}BjQ(hJ4p(cSZPvBSvjxdEUG(?1wVx5~kUDjR zWeU4~_BSO-*dPsj+nG6M{cW}M1)>-f=h8rE`VBJZ%cmtSfTN6Xcjtsv2l~+c;=~!C z(vDaVtNRKMBMX)y+ElGk0W)=K)a|{b)Wob5;kmcOKpL!;-(#q4C5*!T|4_P^`DQzr z{K%QS&4ArB%EJ1hk3uw2e@fHr@^0Xa;PeYp&x;e)UEv2u0^1%zFJpllkeSQe91-1! z!`}x*YAnU8t`3`r-7PCr0!;r)kr?E;0No%ErSz)w|DSoF3yEUNPHTgz(D4h->M8hu zXT$cMz&K8nN`?-%t~)wooryI`n$r2d(=T~&XR%KOFojb+DP^c`|~85KasUKvvo@%l(g)%j#o>t1me zrp1S8PX#$b3L`sgWIF-n=33%#INf4vsmViQtJ2C3a~FVkcTttYWxf$>o5pe+`}b#0 z2Z)$dU=+~et*Po%-iarxzV3^~kmOHuwnEIBDsk4{;YVaDB;lLIL2`H z(w~9G$95~AjV)%=iN%CA-=g;p3F9D0!z_BivZT#7z3T7J;}Y9l-e(KtcnA*8sSP9s z1*_Dx@o-5Dc5$cG^(Cd=@g7BFpgqtzAXdsn5Uv7N^_*{31X%G(5}IWg^XltqJ)*(L ztf#xq;5Ju?<_T@mb9pZud^3rlg{Cx;kpi~6%wES%-v&556YGn~+?RGGh&%$+4GhtT#Zuvtqj?bz6^C^BuH5wxT@N`@pvz&Y}Z=G@ZB}x4!sB zQ|l-}Zf7B!oKzTUd8Ib2jPv=p zovY;O)4t;w-_6DKkBQ5hPOpel8lb^kCl%0(Tj>04s_uG@Dzqqz@Q9rB!=b*PH43&4uq%fE literal 0 HcmV?d00001