From 343002c0ebdf9a6b5f1f71adfda409d78572e006 Mon Sep 17 00:00:00 2001 From: aimlapi Date: Wed, 9 Sep 2026 21:04:13 +0500 Subject: [PATCH 1/4] build(fork-only): point aionrs at the branch carrying extra_headers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FORK-ONLY. Drops the moment `extra_headers` lands upstream and aionrs cuts a tag — at which point this goes back to `tag = "v0.2.11+"` and nothing else in the tree changes. The attribution commit that follows needs `TransportCompat::extra_headers`, which v0.2.11 does not have, so without this the next commit does not build. Kept separate and first so every commit in this branch compiles on its own and the feature commit stays reviewable as the change it actually is. Upstream PR: aimlapi/aionrs-aimlapi#1 --- Cargo.toml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5846fbdde..541e169b2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -65,12 +65,12 @@ aionui-cron = { path = "crates/aionui-cron" } aionui-assistant = { path = "crates/aionui-assistant" } aionui-app = { path = "crates/aionui-app" } -aion-agent = { git = "https://github.com/iOfficeAI/aionrs.git", tag = "v0.2.11" } -aion-providers = { git = "https://github.com/iOfficeAI/aionrs.git", tag = "v0.2.11" } -aion-types = { git = "https://github.com/iOfficeAI/aionrs.git", tag = "v0.2.11" } -aion-protocol = { git = "https://github.com/iOfficeAI/aionrs.git", tag = "v0.2.11" } -aion-config = { git = "https://github.com/iOfficeAI/aionrs.git", tag = "v0.2.11" } -aion-mcp = { git = "https://github.com/iOfficeAI/aionrs.git", tag = "v0.2.11" } +aion-agent = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "feat/provider-extra-headers" } +aion-providers = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "feat/provider-extra-headers" } +aion-types = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "feat/provider-extra-headers" } +aion-protocol = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "feat/provider-extra-headers" } +aion-config = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "feat/provider-extra-headers" } +aion-mcp = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "feat/provider-extra-headers" } # Core framework tokio = { version = "1", features = ["full"] } From d1c66ddd7401c2adcfc66b4225a079db9a2f801b Mon Sep 17 00:00:00 2001 From: aimlapi Date: Wed, 9 Sep 2026 21:09:05 +0500 Subject: [PATCH 2/4] feat(aionrs): attribute AI/ML API traffic on the wire MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Conversations never carried attribution. The desktop client sets `HTTP-Referer` and `X-Title` in `ClientFactory.ts`, but the only thing routed through that code is the built-in image-generation MCP server — chat and model listing go through this crate and out via aionrs, which until now wrote authorization and content type and nothing else. So the headers existed and reached almost no traffic. `resolve_aionrs_url_and_compat_with_mode` now resolves the four attribution headers when the configured base URL is AI/ML API's, and both places that apply compat overrides (`manager::aionrs::agent` and `services::provider_health`) carry them into the aionrs config. They extend rather than assign, so a preset that already carries headers keeps them. The host match is exact, mirroring `is_openai_host` beside it. That matters more than it looks: AI/ML API serves a request with a wrong or missing partner id normally and simply attributes it to nobody, so every failure mode here is silent. A substring match would hand our partner id to whoever registers `api.aimlapi.com.example.test`, and nothing at runtime would say so. Hence tests for the near-misses rather than only for the hit, and a test asserting the id still matches the gateway's `^part_[A-Za-z0-9]{1,64}$`. The `is_full_url` early return is covered too — a user who pasted a complete endpoint is still talking to the same host, and that path exits before the rest of the compat work. Verified: 1005 tests in `aionui-ai-agent` pass. Removing the one line that sets the headers, with the tests kept, fails exactly the two that assert they are sent and leaves the three that assert they are NOT sent elsewhere passing — which is what those should do. --- crates/aionui-ai-agent/src/factory/aionrs.rs | 121 +++++++++++++++++- .../src/manager/aionrs/agent.rs | 7 + .../src/services/provider_health.rs | 7 + crates/aionui-ai-agent/src/types.rs | 6 +- 4 files changed, 139 insertions(+), 2 deletions(-) diff --git a/crates/aionui-ai-agent/src/factory/aionrs.rs b/crates/aionui-ai-agent/src/factory/aionrs.rs index d4c09cde6..fa725c7f6 100644 --- a/crates/aionui-ai-agent/src/factory/aionrs.rs +++ b/crates/aionui-ai-agent/src/factory/aionrs.rs @@ -1,4 +1,4 @@ -use std::collections::HashMap; +use std::collections::{BTreeMap, HashMap}; use std::path::Path; use std::sync::Arc; @@ -345,6 +345,44 @@ fn resolve_build_session( Ok(None) } +/// AI/ML API attributes traffic by header. Without them a request is served +/// normally and simply counts for nobody, so a missing or misspelled value +/// fails silently — which is why the host match below is exact and why there +/// are tests for the near-misses rather than only the hit. +/// +/// `X-AIMLAPI-Partner-ID` must match `^part_[A-Za-z0-9]{1,64}$` — alphanumerics +/// only after the prefix. `HTTP-Referer` and `X-Title` are the OpenRouter +/// convention, and mirror what the desktop client already sends on the paths +/// it owns; conversations do not go through those, which is the gap this fills. +const AIMLAPI_HOST: &str = "api.aimlapi.com"; +const AIMLAPI_PARTNER_ID: &str = "part_UJK4IAHBjvT9g4cPDrb7B7KT"; +const AIMLAPI_SOURCE: &str = "agent/aionui"; +const AIMLAPI_REFERER: &str = "https://aionui.com"; +const AIMLAPI_TITLE: &str = "AionUi"; + +/// Exact host match, mirroring [`is_openai_host`]. +/// +/// Substring matching would be wrong in the direction that matters: a URL such +/// as `https://api.aimlapi.com.example.test/v1` is a different origin, and +/// sending a partner id there hands our attribution to whoever owns it. +fn is_aimlapi_host(url: &str) -> bool { + let lower = url.to_lowercase(); + lower + .strip_prefix("https://") + .or_else(|| lower.strip_prefix("http://")) + .map(|rest| rest == AIMLAPI_HOST || rest.starts_with(&format!("{AIMLAPI_HOST}/"))) + .unwrap_or(false) +} + +fn aimlapi_attribution_headers() -> BTreeMap { + BTreeMap::from([ + ("X-AIMLAPI-Partner-ID".to_owned(), AIMLAPI_PARTNER_ID.to_owned()), + ("X-AIMLAPI-Source".to_owned(), AIMLAPI_SOURCE.to_owned()), + ("HTTP-Referer".to_owned(), AIMLAPI_REFERER.to_owned()), + ("X-Title".to_owned(), AIMLAPI_TITLE.to_owned()), + ]) +} + /// Map AionUi DB platform/protocol settings to the aionrs provider identifier. pub(crate) fn map_aionrs_provider( platform: &str, @@ -395,6 +433,11 @@ pub(crate) fn resolve_aionrs_url_and_compat_with_mode( openai_api_mode_override: Option, ) -> (Option, AionrsCompatOverrides) { let mut compat = AionrsCompatOverrides::default(); + // Set before every return below, including the `is_full_url` early exit: + // a user who pasted a complete endpoint is still talking to the same host. + if is_aimlapi_host(raw_base_url) { + compat.extra_headers = aimlapi_attribution_headers(); + } let openai_api_mode = resolve_openai_api_mode(platform, mapped_provider, model_id, openai_api_mode_override); let use_responses = openai_api_mode == Some(OpenAiApiMode::Responses); @@ -893,6 +936,82 @@ mod tests { const TEST_USER_ID: &str = "user-1"; + fn headers_for(base_url: &str, is_full_url: bool) -> BTreeMap { + let (_url, compat) = resolve_aionrs_url_and_compat("custom", base_url, "openai", "some-model", is_full_url); + compat.extra_headers + } + + #[test] + fn aimlapi_base_url_resolves_attribution_headers() { + let headers = headers_for("https://api.aimlapi.com/v1", false); + + assert_eq!( + headers.get("X-AIMLAPI-Partner-ID").map(String::as_str), + Some(AIMLAPI_PARTNER_ID) + ); + assert_eq!( + headers.get("X-AIMLAPI-Source").map(String::as_str), + Some("agent/aionui") + ); + assert_eq!( + headers.get("HTTP-Referer").map(String::as_str), + Some("https://aionui.com") + ); + assert_eq!(headers.get("X-Title").map(String::as_str), Some("AionUi")); + } + + #[test] + fn attribution_survives_a_user_supplied_complete_endpoint() { + // `is_full_url` returns early, before the rest of the compat work. A + // user who pasted the whole endpoint is still talking to the same host. + let headers = headers_for("https://api.aimlapi.com/v1/chat/completions", true); + + assert_eq!( + headers.get("X-AIMLAPI-Partner-ID").map(String::as_str), + Some(AIMLAPI_PARTNER_ID) + ); + } + + #[test] + fn other_providers_get_no_headers() { + for base_url in ["https://api.openai.com/v1", "https://openrouter.ai/api/v1", ""] { + assert!( + headers_for(base_url, false).is_empty(), + "attribution must not leak to {base_url}" + ); + } + } + + #[test] + fn a_lookalike_domain_gets_no_headers() { + // The failure this guards against is silent and expensive: a substring + // match would hand the partner id to whoever owns the lookalike. + for base_url in [ + "https://api.aimlapi.com.example.test/v1", + "https://not-api.aimlapi.com/v1", + "https://evil.test/?u=https://api.aimlapi.com/v1", + ] { + assert!( + headers_for(base_url, false).is_empty(), + "attribution must not be sent to {base_url}" + ); + } + } + + #[test] + fn the_partner_id_matches_the_gateway_contract() { + // `^part_[A-Za-z0-9]{1,64}$` — a malformed id is accepted by the API and + // simply attributed to nobody, so nothing at runtime would report this. + let rest = AIMLAPI_PARTNER_ID + .strip_prefix("part_") + .expect("partner id must carry the part_ prefix"); + assert!((1..=64).contains(&rest.len()), "length out of range: {}", rest.len()); + assert!( + rest.chars().all(|c| c.is_ascii_alphanumeric()), + "only alphanumerics are allowed after the prefix: {AIMLAPI_PARTNER_ID}" + ); + } + fn path_test_lock() -> &'static tokio::sync::Mutex<()> { static LOCK: OnceLock> = OnceLock::new(); LOCK.get_or_init(|| tokio::sync::Mutex::new(())) diff --git a/crates/aionui-ai-agent/src/manager/aionrs/agent.rs b/crates/aionui-ai-agent/src/manager/aionrs/agent.rs index 3291d92f5..a1c529962 100644 --- a/crates/aionui-ai-agent/src/manager/aionrs/agent.rs +++ b/crates/aionui-ai-agent/src/manager/aionrs/agent.rs @@ -211,6 +211,13 @@ impl AionrsAgentManager { if let Some(path) = config_extra.compat_overrides.api_path { config.compat.transport.api_path = Some(path); } + // Attribution headers resolved in `factory::aionrs`. Extend rather than + // assign so a preset that already carries headers keeps them. + config + .compat + .transport + .extra_headers + .extend(config_extra.compat_overrides.extra_headers.clone()); if !config_extra.extra_mcp_servers.is_empty() { config.mcp.servers.extend(config_extra.extra_mcp_servers.clone()); diff --git a/crates/aionui-ai-agent/src/services/provider_health.rs b/crates/aionui-ai-agent/src/services/provider_health.rs index 3453f1202..92fea495a 100644 --- a/crates/aionui-ai-agent/src/services/provider_health.rs +++ b/crates/aionui-ai-agent/src/services/provider_health.rs @@ -240,6 +240,13 @@ async fn build_probe_engine(config_extra: AionrsResolvedConfig) -> Result, pub max_tokens_field: Option, pub api_path: Option, + /// Headers added to every request to this provider. Empty for providers + /// that ask for none, which is all of them except the ones resolved in + /// `factory::aionrs`. + pub extra_headers: BTreeMap, } /// Fully resolved Aionrs configuration passed to the agent manager. From ffbfddbb2ce2e0494d0c1451ed3860d29353d554 Mon Sep 17 00:00:00 2001 From: aimlapi Date: Wed, 9 Sep 2026 21:09:30 +0500 Subject: [PATCH 3/4] build(fork-only): lockfile for the aionrs fork branch Generated by the dependency repoint two commits back, and drops with it. --- Cargo.lock | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 94ed1f9fb..e650499de 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -117,7 +117,7 @@ dependencies = [ [[package]] name = "aion-agent" version = "0.2.11" -source = "git+https://github.com/iOfficeAI/aionrs.git?tag=v0.2.11#8e61a90329fa9f67c4fdf7e97fe02c24dba33f75" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" dependencies = [ "aion-compact", "aion-config", @@ -148,7 +148,7 @@ dependencies = [ [[package]] name = "aion-compact" version = "0.2.11" -source = "git+https://github.com/iOfficeAI/aionrs.git?tag=v0.2.11#8e61a90329fa9f67c4fdf7e97fe02c24dba33f75" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" dependencies = [ "regex", "serde", @@ -160,7 +160,7 @@ dependencies = [ [[package]] name = "aion-config" version = "0.2.11" -source = "git+https://github.com/iOfficeAI/aionrs.git?tag=v0.2.11#8e61a90329fa9f67c4fdf7e97fe02c24dba33f75" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" dependencies = [ "aion-compact", "aion-process", @@ -185,7 +185,7 @@ dependencies = [ [[package]] name = "aion-mcp" version = "0.2.11" -source = "git+https://github.com/iOfficeAI/aionrs.git?tag=v0.2.11#8e61a90329fa9f67c4fdf7e97fe02c24dba33f75" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" dependencies = [ "aion-config", "aion-protocol", @@ -206,7 +206,7 @@ dependencies = [ [[package]] name = "aion-memory" version = "0.2.11" -source = "git+https://github.com/iOfficeAI/aionrs.git?tag=v0.2.11#8e61a90329fa9f67c4fdf7e97fe02c24dba33f75" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" dependencies = [ "aion-config", "chrono", @@ -220,7 +220,7 @@ dependencies = [ [[package]] name = "aion-process" version = "0.2.11" -source = "git+https://github.com/iOfficeAI/aionrs.git?tag=v0.2.11#8e61a90329fa9f67c4fdf7e97fe02c24dba33f75" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" dependencies = [ "libc", "tokio", @@ -231,7 +231,7 @@ dependencies = [ [[package]] name = "aion-protocol" version = "0.2.11" -source = "git+https://github.com/iOfficeAI/aionrs.git?tag=v0.2.11#8e61a90329fa9f67c4fdf7e97fe02c24dba33f75" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" dependencies = [ "aion-types", "serde", @@ -244,7 +244,7 @@ dependencies = [ [[package]] name = "aion-providers" version = "0.2.11" -source = "git+https://github.com/iOfficeAI/aionrs.git?tag=v0.2.11#8e61a90329fa9f67c4fdf7e97fe02c24dba33f75" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" dependencies = [ "aion-config", "aion-types", @@ -273,7 +273,7 @@ dependencies = [ [[package]] name = "aion-skills" version = "0.2.11" -source = "git+https://github.com/iOfficeAI/aionrs.git?tag=v0.2.11#8e61a90329fa9f67c4fdf7e97fe02c24dba33f75" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" dependencies = [ "aion-config", "aion-mcp", @@ -300,7 +300,7 @@ dependencies = [ [[package]] name = "aion-tools" version = "0.2.11" -source = "git+https://github.com/iOfficeAI/aionrs.git?tag=v0.2.11#8e61a90329fa9f67c4fdf7e97fe02c24dba33f75" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" dependencies = [ "aion-config", "aion-process", @@ -322,7 +322,7 @@ dependencies = [ [[package]] name = "aion-types" version = "0.2.11" -source = "git+https://github.com/iOfficeAI/aionrs.git?tag=v0.2.11#8e61a90329fa9f67c4fdf7e97fe02c24dba33f75" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" dependencies = [ "async-trait", "base64", @@ -2222,6 +2222,7 @@ dependencies = [ "crossterm_winapi", "derive_more", "document-features", + "futures-core", "mio", "parking_lot", "rustix", @@ -3121,6 +3122,17 @@ dependencies = [ "foldhash 0.1.5", ] +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] + [[package]] name = "hashbrown" version = "0.17.1" @@ -7117,17 +7129,18 @@ dependencies = [ [[package]] name = "workspace-hack" version = "0.1.0" -source = "git+https://github.com/iOfficeAI/aionrs.git?tag=v0.2.11#8e61a90329fa9f67c4fdf7e97fe02c24dba33f75" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" dependencies = [ "bitflags", "cc", + "either", "futures-channel", "futures-core", "futures-sink", "futures-task", "futures-util", "getrandom 0.2.17", - "getrandom 0.3.4", + "hashbrown 0.16.1", "hyper", "hyper-rustls", "hyper-util", @@ -7148,6 +7161,7 @@ dependencies = [ "smallvec", "subtle", "syn 2.0.117", + "syn 3.0.3", "time", "tokio", "tokio-rustls", @@ -7157,7 +7171,6 @@ dependencies = [ "tracing", "tracing-core", "uuid", - "windows-sys 0.60.2", "windows-sys 0.61.2", "winnow 1.0.2", "zeroize", From fd38f5249140d9e26cb4a3af479d745d85996ae5 Mon Sep 17 00:00:00 2001 From: Stan Date: Fri, 11 Sep 2026 17:04:50 +0500 Subject: [PATCH 4/4] build(fork-only): pin aionrs to the fork's main now that extra_headers is merged --- Cargo.lock | 50 +++++++++++++++++++++++++------------------------- Cargo.toml | 12 ++++++------ 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e650499de..ac9b63a0b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -117,7 +117,7 @@ dependencies = [ [[package]] name = "aion-agent" version = "0.2.11" -source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=main#ba23022731059ce4a45bc1ec03e4bb99c3345da6" dependencies = [ "aion-compact", "aion-config", @@ -148,7 +148,7 @@ dependencies = [ [[package]] name = "aion-compact" version = "0.2.11" -source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=main#ba23022731059ce4a45bc1ec03e4bb99c3345da6" dependencies = [ "regex", "serde", @@ -160,7 +160,7 @@ dependencies = [ [[package]] name = "aion-config" version = "0.2.11" -source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=main#ba23022731059ce4a45bc1ec03e4bb99c3345da6" dependencies = [ "aion-compact", "aion-process", @@ -185,7 +185,7 @@ dependencies = [ [[package]] name = "aion-mcp" version = "0.2.11" -source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=main#ba23022731059ce4a45bc1ec03e4bb99c3345da6" dependencies = [ "aion-config", "aion-protocol", @@ -206,7 +206,7 @@ dependencies = [ [[package]] name = "aion-memory" version = "0.2.11" -source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=main#ba23022731059ce4a45bc1ec03e4bb99c3345da6" dependencies = [ "aion-config", "chrono", @@ -220,7 +220,7 @@ dependencies = [ [[package]] name = "aion-process" version = "0.2.11" -source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=main#ba23022731059ce4a45bc1ec03e4bb99c3345da6" dependencies = [ "libc", "tokio", @@ -231,7 +231,7 @@ dependencies = [ [[package]] name = "aion-protocol" version = "0.2.11" -source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=main#ba23022731059ce4a45bc1ec03e4bb99c3345da6" dependencies = [ "aion-types", "serde", @@ -244,7 +244,7 @@ dependencies = [ [[package]] name = "aion-providers" version = "0.2.11" -source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=main#ba23022731059ce4a45bc1ec03e4bb99c3345da6" dependencies = [ "aion-config", "aion-types", @@ -273,7 +273,7 @@ dependencies = [ [[package]] name = "aion-skills" version = "0.2.11" -source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=main#ba23022731059ce4a45bc1ec03e4bb99c3345da6" dependencies = [ "aion-config", "aion-mcp", @@ -300,7 +300,7 @@ dependencies = [ [[package]] name = "aion-tools" version = "0.2.11" -source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=main#ba23022731059ce4a45bc1ec03e4bb99c3345da6" dependencies = [ "aion-config", "aion-process", @@ -322,7 +322,7 @@ dependencies = [ [[package]] name = "aion-types" version = "0.2.11" -source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=main#ba23022731059ce4a45bc1ec03e4bb99c3345da6" dependencies = [ "async-trait", "base64", @@ -1101,7 +1101,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -1112,7 +1112,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -1143,7 +1143,7 @@ dependencies = [ "objc2-foundation", "parking_lot", "percent-encoding", - "windows-sys 0.60.2", + "windows-sys 0.59.0", "x11rb", ] @@ -2518,7 +2518,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] @@ -2663,7 +2663,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3609,7 +3609,7 @@ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3704,7 +3704,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8cfc352a66ba903c23239ef51e809508b6fc2b0f90e3476ac7a9ff47e863ae95" dependencies = [ "scopeguard", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] @@ -3989,7 +3989,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] @@ -4574,7 +4574,7 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] @@ -4976,7 +4976,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5450,7 +5450,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -5789,7 +5789,7 @@ dependencies = [ "getrandom 0.4.2", "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6677,7 +6677,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -7129,7 +7129,7 @@ dependencies = [ [[package]] name = "workspace-hack" version = "0.1.0" -source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=feat%2Fprovider-extra-headers#ae676d8cfbbae663901756b2ce0c5a9e80befece" +source = "git+https://github.com/aimlapi/aionrs-aimlapi.git?branch=main#ba23022731059ce4a45bc1ec03e4bb99c3345da6" dependencies = [ "bitflags", "cc", diff --git a/Cargo.toml b/Cargo.toml index 541e169b2..71baf6e26 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -65,12 +65,12 @@ aionui-cron = { path = "crates/aionui-cron" } aionui-assistant = { path = "crates/aionui-assistant" } aionui-app = { path = "crates/aionui-app" } -aion-agent = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "feat/provider-extra-headers" } -aion-providers = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "feat/provider-extra-headers" } -aion-types = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "feat/provider-extra-headers" } -aion-protocol = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "feat/provider-extra-headers" } -aion-config = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "feat/provider-extra-headers" } -aion-mcp = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "feat/provider-extra-headers" } +aion-agent = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "main" } +aion-providers = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "main" } +aion-types = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "main" } +aion-protocol = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "main" } +aion-config = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "main" } +aion-mcp = { git = "https://github.com/aimlapi/aionrs-aimlapi.git", branch = "main" } # Core framework tokio = { version = "1", features = ["full"] }