From 3f21e2970358b2efad7fd4e30d6fdf403c051eac Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Mon, 23 Jun 2025 16:04:14 -0700 Subject: [PATCH] add draft change --- arch/envoy.template.yaml | 2 +- arch/tools/cli/docker_cli.py | 1 + crates/Cargo.lock | 48 +++++++++++++++++++++++--- crates/brightstaff/src/handlers/mod.rs | 1 + crates/brightstaff/src/main.rs | 9 +++-- crates/common/Cargo.toml | 1 + 6 files changed, 55 insertions(+), 7 deletions(-) diff --git a/arch/envoy.template.yaml b/arch/envoy.template.yaml index 53044770..ae41f6c7 100644 --- a/arch/envoy.template.yaml +++ b/arch/envoy.template.yaml @@ -802,7 +802,7 @@ static_resources: - endpoint: address: socket_address: - address: 0.0.0.0 + address: host.docker.internal port_value: 9091 hostname: localhost diff --git a/arch/tools/cli/docker_cli.py b/arch/tools/cli/docker_cli.py index e8a12a13..1d87fc67 100644 --- a/arch/tools/cli/docker_cli.py +++ b/arch/tools/cli/docker_cli.py @@ -59,6 +59,7 @@ def docker_start_archgw_detached( volume_mappings = [ f"{arch_config_file}:/app/arch_config.yaml:ro", + # "/Users/adilhafeez/src/intelligent-prompt-gateway/crates/target/wasm32-wasip1/release:/etc/envoy/proxy-wasm-plugins:ro", ] volume_mappings_args = [ item for volume in volume_mappings for item in ("-v", volume) diff --git a/crates/Cargo.lock b/crates/Cargo.lock index 789bfc69..ab999ea1 100644 --- a/crates/Cargo.lock +++ b/crates/Cargo.lock @@ -335,6 +335,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_json", + "serde_with", "serde_yaml", "thiserror 1.0.69", "tiktoken-rs", @@ -664,6 +665,12 @@ dependencies = [ "serde", ] +[[package]] +name = "dyn-clone" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" + [[package]] name = "either" version = "1.15.0" @@ -2305,6 +2312,26 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "regalloc2" version = "0.9.3" @@ -2566,6 +2593,18 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -2675,15 +2714,16 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" +checksum = "bf65a400f8f66fb7b0552869ad70157166676db75ed8181f8104ea91cf9d0b42" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", "indexmap 2.9.0", + "schemars", "serde", "serde_derive", "serde_json", @@ -2693,9 +2733,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" +checksum = "81679d9ed988d5e9a5e6531dc3f2c28efbd639cbd1dfb628df08edea6004da77" dependencies = [ "darling", "proc-macro2", diff --git a/crates/brightstaff/src/handlers/mod.rs b/crates/brightstaff/src/handlers/mod.rs index 6de38b5b..febab6c2 100644 --- a/crates/brightstaff/src/handlers/mod.rs +++ b/crates/brightstaff/src/handlers/mod.rs @@ -1,2 +1,3 @@ pub mod chat_completions; pub mod models; +pub mod preferences; diff --git a/crates/brightstaff/src/main.rs b/crates/brightstaff/src/main.rs index 5502c983..30bfa11a 100644 --- a/crates/brightstaff/src/main.rs +++ b/crates/brightstaff/src/main.rs @@ -1,5 +1,6 @@ use brightstaff::handlers::chat_completions::chat_completions; use brightstaff::handlers::models::list_models; +use brightstaff::handlers::preferences::{list_preferences, update_preferences}; use brightstaff::router::llm_router::RouterService; use brightstaff::utils::tracing::init_tracer; use bytes::Bytes; @@ -16,7 +17,7 @@ use opentelemetry_http::HeaderExtractor; use std::sync::Arc; use std::{env, fs}; use tokio::net::TcpListener; -use tracing::{debug, info}; +use tracing::{debug, info, warn}; pub mod router; @@ -101,6 +102,10 @@ async fn main() -> Result<(), Box> { .with_context(parent_cx) .await } + (&Method::GET, "/v1/router/preferences") => Ok(list_preferences(llm_providers).await), + (&Method::PUT, "/v1/router/preferences") => { + update_preferences(req, llm_providers).await + }, (&Method::GET, "/v1/models") => Ok(list_models(llm_providers).await), (&Method::OPTIONS, "/v1/models") => { let mut response = Response::new(empty()); @@ -141,7 +146,7 @@ async fn main() -> Result<(), Box> { .serve_connection(io, service) .await { - info!("Error serving connection: {:?}", err); + warn!("Error serving connection: {:?}", err); } }); } diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index 4696b43b..aa95e2e4 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -19,6 +19,7 @@ hex = "0.4.3" urlencoding = "2.1.3" url = "2.5.4" hermesllm = { version = "0.1.0", path = "../hermesllm" } +serde_with = "3.13.0" [dev-dependencies] pretty_assertions = "1.4.1"