From 97c226f08cf12a4859ee4e267c5f7af3cee6d6bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Sep 2026 17:35:56 +0000 Subject: [PATCH 1/2] chore(deps): bump async-openai from 0.41.3 to 0.42.0 Bumps [async-openai](https://github.com/64bit/async-openai) from 0.41.3 to 0.42.0. - [Release notes](https://github.com/64bit/async-openai/releases) - [Commits](https://github.com/64bit/async-openai/compare/async-openai-v0.41.3...async-openai-v0.42.0) --- updated-dependencies: - dependency-name: async-openai dependency-version: 0.42.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- crates/sysknife-brain/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5d61b394..30a412b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -126,9 +126,9 @@ dependencies = [ [[package]] name = "async-openai" -version = "0.41.3" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d72db2750faea2ca5edbf6d0c50277a89dc8f75f5e6ddd695ef30f75e335019b" +checksum = "3540b785fcd10be9458fdd8db9a63ea5bcd4b191ef557eaf2730fe0c5881c3e8" dependencies = [ "async-openai-macros", "base64 0.22.1", diff --git a/crates/sysknife-brain/Cargo.toml b/crates/sysknife-brain/Cargo.toml index 2754962e..0e947bf6 100644 --- a/crates/sysknife-brain/Cargo.toml +++ b/crates/sysknife-brain/Cargo.toml @@ -20,7 +20,7 @@ async-trait = { workspace = true } futures = "0.3" sysknife-core = { path = "../sysknife-core", version = "0.20.0" } sysknife-types = { path = "../sysknife-types", version = "0.20.0" } -async-openai = { version = "0.41", features = ["chat-completion"] } +async-openai = { version = "0.42", features = ["chat-completion"] } # rig-core 0.40 renamed its lib crate `rig` -> `rig_core`; alias it back to `rig` # so existing `use rig::...` paths keep working. rig = { package = "rig-core", version = "0.40.0" } From e6943e4842a299088752693b512908ce3861cfb3 Mon Sep 17 00:00:00 2001 From: Vladimir Rotariu Date: Wed, 23 Sep 2026 00:25:56 -0600 Subject: [PATCH 2/2] test(brain): name the fields async-openai 0.42 added MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 0.42 adds `metadata` and `moderation` to `CreateChatCompletionResponse` and `misalignment` to `ApiError`. Neither struct derives `Default`, so the nine fixture literals in `openai_adapter.rs` name every field and each additive release breaks them; the production adapter reads these types by field and is unaffected. The fixtures keep asserting what they asserted: a response with no metadata and no moderation block, and an API error with no misalignment details. cargo clippy -p sysknife-brain --all-features --all-targets --locked -- -D warnings → clean cargo test -p sysknife-brain --locked -- --test-threads=1 → 259 + 78 passed --- .../sysknife-brain/src/providers/openai_adapter.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/crates/sysknife-brain/src/providers/openai_adapter.rs b/crates/sysknife-brain/src/providers/openai_adapter.rs index 512238cf..bfcfe0b6 100644 --- a/crates/sysknife-brain/src/providers/openai_adapter.rs +++ b/crates/sysknife-brain/src/providers/openai_adapter.rs @@ -732,6 +732,8 @@ mod tests { object: "chat.completion".into(), usage: None, service_tier: None, + metadata: None, + moderation: None, } } @@ -758,6 +760,8 @@ mod tests { object: "chat.completion".into(), usage: None, service_tier: None, + metadata: None, + moderation: None, } } @@ -838,6 +842,8 @@ mod tests { object: "chat.completion".into(), usage: None, service_tier: None, + metadata: None, + moderation: None, }; assert!(from_openai_response(response).is_err()); } @@ -868,6 +874,8 @@ mod tests { object: "chat.completion".into(), usage: None, service_tier: None, + metadata: None, + moderation: None, }; assert!(from_openai_response(response).is_err()); } @@ -906,6 +914,8 @@ mod tests { object: "chat.completion".into(), usage: None, service_tier: None, + metadata: None, + moderation: None, }; let result = from_openai_response(response); assert!(result.is_err(), "malformed args must return an error"); @@ -951,6 +961,7 @@ mod tests { r#type: Some("invalid_request_error".into()), param: None, code: Some("invalid_api_key".into()), + misalignment: None, }, }); let mapped = map_openai_error(err); @@ -976,6 +987,7 @@ mod tests { r#type: None, param: None, code: None, + misalignment: None, }, }); let mapped = map_openai_error(err); @@ -995,6 +1007,7 @@ mod tests { r#type: Some("rate_limit_error".into()), param: None, code: None, + misalignment: None, }, }); let mapped = map_openai_error(err); @@ -1014,6 +1027,7 @@ mod tests { r#type: None, param: None, code: None, + misalignment: None, }, }); let mapped = map_openai_error(err);