From df091f3a5e02d876ed5254d04b4fb38332575595 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 23 Oct 2026 04:54:20 +0000 Subject: [PATCH 1/2] chore(deps): update rust crate html2md to v0.2.17 --- Cargo.lock | 156 ++++++++++++++++++++++++++++------------------------- Cargo.toml | 2 +- 2 files changed, 85 insertions(+), 73 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1e1da2e125..dab6165742 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1083,7 +1083,7 @@ version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] @@ -2910,16 +2910,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" -[[package]] -name = "futf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" -dependencies = [ - "mac", - "new_debug_unreachable", -] - [[package]] name = "futures" version = "0.3.34" @@ -3531,7 +3521,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c48eccd894bd15555b0346470e63491ded94aefe76b3fcb1052084b5a393238" dependencies = [ "bstr", - "hashbrown 0.16.1", + "hashbrown 0.17.1", ] [[package]] @@ -4515,13 +4505,12 @@ checksum = "491194d601b4fa9fac3c9571e014070a0ad1bc3392d1bc10419695196a8b3cc3" [[package]] name = "html2md" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cff9891f2e0d9048927fbdfc28b11bf378f6a93c7ba70b23d0fbee9af6071b4" +checksum = "d6f38f9a658dcd66d17d278dee1a78ced5b4613ddd329e3d94e90cf5bc920a03" dependencies = [ "html5ever", - "jni 0.19.0", - "lazy_static", + "jni 0.22.4", "markup5ever_rcdom", "percent-encoding", "regex", @@ -4529,16 +4518,12 @@ dependencies = [ [[package]] name = "html5ever" -version = "0.27.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" +checksum = "46a1761807faccc9a19e86944bbf40610014066306f96edcdedc2fb714bcb7b8" dependencies = [ "log", - "mac", "markup5ever", - "proc-macro2", - "quote", - "syn 2.0.119", ] [[package]] @@ -5146,32 +5131,48 @@ dependencies = [ [[package]] name = "jni" -version = "0.19.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", + "cfg-if", "combine", "jni-sys 0.3.1", "log", "thiserror 1.0.69", "walkdir", + "windows-sys 0.45.0", ] [[package]] name = "jni" -version = "0.21.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" dependencies = [ - "cesu8", "cfg-if", "combine", - "jni-sys 0.3.1", + "jni-macros", + "jni-sys 0.4.1", "log", - "thiserror 1.0.69", + "simd_cesu8", + "thiserror 2.0.21", "walkdir", - "windows-sys 0.45.0", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.119", ] [[package]] @@ -5389,12 +5390,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" -[[package]] -name = "mac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" - [[package]] name = "machineid-rs" version = "1.2.4" @@ -5417,23 +5412,20 @@ dependencies = [ [[package]] name = "markup5ever" -version = "0.12.1" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" +checksum = "7122d987ec5f704ee56f6e5b41a7d93722e9aae27ae07cafa4036c4d3f9757de" dependencies = [ "log", - "phf", - "phf_codegen", - "string_cache", - "string_cache_codegen", "tendril", + "web_atoms", ] [[package]] name = "markup5ever_rcdom" -version = "0.3.0" +version = "0.39.0+unofficial" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edaa21ab3701bfee5099ade5f7e1f84553fd19228cf332f13cd6e964bf59be18" +checksum = "3ac010f19d6c4af81eeb4018a39d7a115de9d285af45c126a4ac02e6fc5716b7" dependencies = [ "html5ever", "markup5ever", @@ -6341,18 +6333,19 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" dependencies = [ "phf_shared", + "serde", ] [[package]] name = "phf_codegen" -version = "0.11.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" dependencies = [ "phf_generator", "phf_shared", @@ -6360,19 +6353,19 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" dependencies = [ + "fastrand", "phf_shared", - "rand 0.8.5", ] [[package]] name = "phf_shared" -version = "0.11.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" dependencies = [ "siphasher", ] @@ -7939,6 +7932,22 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +[[package]] +name = "simd_cesu8" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11031e251abf8611c80f460e19dbdeb54a66db918e49c65a7065b46ac7aec520" +dependencies = [ + "rustc_version", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "similar" version = "2.7.0" @@ -8146,9 +8155,9 @@ checksum = "f42444fea5b87a39db4218d9422087e66a85d0e7a0963a439b07bcdf91804006" [[package]] name = "string_cache" -version = "0.8.9" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" dependencies = [ "new_debug_unreachable", "parking_lot", @@ -8159,9 +8168,9 @@ dependencies = [ [[package]] name = "string_cache_codegen" -version = "0.5.4" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" +checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" dependencies = [ "phf_generator", "phf_shared", @@ -8377,13 +8386,11 @@ dependencies = [ [[package]] name = "tendril" -version = "0.4.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +checksum = "5fed54709c5b3a53d09bb1c113ea4f5ceafd1e772ddcb0030a82e1d56c087b08" dependencies = [ - "futf", - "mac", - "utf-8", + "new_debug_unreachable", ] [[package]] @@ -9186,12 +9193,6 @@ version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - [[package]] name = "utf8-zero" version = "0.8.1" @@ -9458,6 +9459,18 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web_atoms" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba8b815c1b593dc0baf78dd0f4fc8fdb2de53198fb1163738093e9a311c33fb3" +dependencies = [ + "phf", + "phf_codegen", + "string_cache", + "string_cache_codegen", +] + [[package]] name = "webpki-root-certs" version = "1.0.6" @@ -9534,7 +9547,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.61.2", ] [[package]] @@ -10085,12 +10098,11 @@ checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" [[package]] name = "xml5ever" -version = "0.18.1" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bbb26405d8e919bc1547a5aa9abc95cbfa438f04844f5fdd9dc7596b748bf69" +checksum = "5ab627f34ff61b80d756180d556f9c68801d836d271b3b8c094504ceca69d221" dependencies = [ "log", - "mac", "markup5ever", ] diff --git a/Cargo.toml b/Cargo.toml index 523400d458..612b644c3e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,7 +47,7 @@ glob = "0.3.3" grep-searcher = "0.1.14" grep-regex = "0.1.13" handlebars = "6.4.0" -html2md = "=0.2.15" +html2md = "=0.2.17" http = "1.2.0" ignore = "0.4.23" is_ci = "1.2.0" From f9c01c11948108acd4082abd233d2d5db602c35d Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 23 Oct 2026 04:58:25 +0000 Subject: [PATCH 2/2] [autofix.ci] apply automated fixes --- crates/forge_app/src/dto/openai/request.rs | 7 ++++--- crates/forge_app/src/orch_spec/orch_runner.rs | 3 ++- crates/forge_app/src/orch_spec/orch_spec.rs | 11 ++++++----- crates/forge_domain/src/auth/credentials.rs | 3 ++- crates/forge_domain/src/result_stream_ext.rs | 6 ++++-- crates/forge_infra/src/forge_infra.rs | 4 ++-- .../src/conversation/conversation_record.rs | 3 ++- crates/forge_select/src/preview.rs | 7 ++++--- crates/forge_services/src/app_config.rs | 3 ++- crates/forge_services/src/mcp/manager.rs | 3 ++- 10 files changed, 30 insertions(+), 20 deletions(-) diff --git a/crates/forge_app/src/dto/openai/request.rs b/crates/forge_app/src/dto/openai/request.rs index 65784dcb60..e40ab38621 100644 --- a/crates/forge_app/src/dto/openai/request.rs +++ b/crates/forge_app/src/dto/openai/request.rs @@ -39,7 +39,8 @@ pub struct Message { pub reasoning_text: Option, #[serde(skip_serializing_if = "Option::is_none")] pub reasoning_opaque: Option, - // kimi_k2 uses reasoning_content as flat string (similar to reasoning_text but aliased) + // kimi_k2 uses reasoning_content as flat string (similar to reasoning_text + // but aliased) #[serde(skip_serializing_if = "Option::is_none", rename = "reasoning_content")] pub reasoning_content: Option, #[serde(skip_serializing_if = "Option::is_none")] @@ -395,8 +396,8 @@ impl From for Request { min_p: Default::default(), top_a: Default::default(), prediction: Default::default(), - // Since compaction is support on the client we don't need middle-out transforms any - // more + // Since compaction is support on the client we don't need + // middle-out transforms any more transforms: Default::default(), models: Default::default(), route: Default::default(), diff --git a/crates/forge_app/src/orch_spec/orch_runner.rs b/crates/forge_app/src/orch_spec/orch_runner.rs index c33c8349b3..3ff1a5f487 100644 --- a/crates/forge_app/src/orch_spec/orch_runner.rs +++ b/crates/forge_app/src/orch_spec/orch_runner.rs @@ -33,7 +33,8 @@ pub struct Runner { // Tool call requests and the mock responses test_tool_calls: Mutex>, - // Mock completions from the LLM (Each value is produced as an event in the stream) + // Mock completions from the LLM (Each value is produced as an event in the + // stream) test_completions: Mutex>, // Mock shell command outputs diff --git a/crates/forge_app/src/orch_spec/orch_spec.rs b/crates/forge_app/src/orch_spec/orch_spec.rs index c1e9fc8da9..fd54297541 100644 --- a/crates/forge_app/src/orch_spec/orch_spec.rs +++ b/crates/forge_app/src/orch_spec/orch_spec.rs @@ -385,8 +385,8 @@ async fn test_multiple_consecutive_tool_calls() { ChatCompletionMessage::assistant("Reading 3").add_tool_call(tool_call.clone()), ChatCompletionMessage::assistant("Reading 4").add_tool_call(tool_call.clone()), ChatCompletionMessage::assistant("Completing Task").finish_reason(FinishReason::Stop), - // Extra responses for doom loop reminder iterations (detector triggers on each request - // after 4th tool call) + // Extra responses for doom loop reminder iterations (detector + // triggers on each request after 4th tool call) ChatCompletionMessage::assistant("Acknowledged").finish_reason(FinishReason::Stop), ChatCompletionMessage::assistant("Task complete").finish_reason(FinishReason::Stop), ]); @@ -423,8 +423,8 @@ async fn test_doom_loop_detection_adds_user_reminder_after_repeated_calls_on_nex ChatCompletionMessage::assistant("Call 3").add_tool_call(tool_call.clone()), ChatCompletionMessage::assistant("Call 4").add_tool_call(tool_call.clone()), ChatCompletionMessage::assistant("Done").finish_reason(FinishReason::Stop), - // Extra responses for doom loop reminder iterations (detector triggers on each request - // after 4th tool call) + // Extra responses for doom loop reminder iterations (detector + // triggers on each request after 4th tool call) ChatCompletionMessage::assistant("Noted").finish_reason(FinishReason::Stop), ChatCompletionMessage::assistant("Actually done now").finish_reason(FinishReason::Stop), ]); @@ -614,7 +614,8 @@ async fn test_todo_enforcement_injects_reminder() { let mut ctx = TestContext::default() .mock_assistant_responses(vec![ - // LLM tries to finish but has pending todos - reminder will be injected + // LLM tries to finish but has pending todos - reminder will be + // injected ChatCompletionMessage::assistant(Content::full("Task is done")) .finish_reason(FinishReason::Stop), // Second response after the first reminder is injected diff --git a/crates/forge_domain/src/auth/credentials.rs b/crates/forge_domain/src/auth/credentials.rs index 15b5494855..1dc3bbde08 100644 --- a/crates/forge_domain/src/auth/credentials.rs +++ b/crates/forge_domain/src/auth/credentials.rs @@ -63,7 +63,8 @@ impl AuthCredential { AuthDetails::ApiKey(_) => false, // AWS Profile credentials are managed by the AWS SDK internally AuthDetails::AwsProfile(_) => false, - // Google ADC tokens are short-lived (1 hour) and should always be checked/refreshed + // Google ADC tokens are short-lived (1 hour) and should always be + // checked/refreshed AuthDetails::GoogleAdc(_) => true, AuthDetails::OAuth { tokens, .. } | AuthDetails::OAuthWithApiKey { tokens, .. } => { tokens.needs_refresh(buffer) diff --git a/crates/forge_domain/src/result_stream_ext.rs b/crates/forge_domain/src/result_stream_ext.rs index 29c990ae1e..a9ff98a0d3 100644 --- a/crates/forge_domain/src/result_stream_ext.rs +++ b/crates/forge_domain/src/result_stream_ext.rs @@ -926,7 +926,8 @@ mod tests { let messages = vec![ Ok(ChatCompletionMessage::default().content(Content::part(&xml_content[0..30]))), Ok(ChatCompletionMessage::default().content(Content::part(&xml_content[30..]))), - // These messages come after tool interruption but contain usage updates + // These messages come after tool interruption but contain usage + // updates Ok(ChatCompletionMessage::default().content(Content::part(" ignored content"))), // Final message with the actual usage - this is always sent last Ok(ChatCompletionMessage::default().usage(Usage { @@ -1161,7 +1162,8 @@ mod tests { let messages = vec![ Ok(ChatCompletionMessage::default().content(Content::part(xml_content))), - // After interruption - content should be ignored but usage should be captured + // After interruption - content should be ignored but usage should + // be captured Ok(ChatCompletionMessage::default() .content(Content::part("This content should be ignored"))), Ok(ChatCompletionMessage::default() diff --git a/crates/forge_infra/src/forge_infra.rs b/crates/forge_infra/src/forge_infra.rs index 31f5cb63e5..61145e6a1f 100644 --- a/crates/forge_infra/src/forge_infra.rs +++ b/crates/forge_infra/src/forge_infra.rs @@ -35,8 +35,8 @@ use crate::walker::ForgeWalkerService; #[derive(Clone)] pub struct ForgeInfra { - // TODO: Drop the "Service" suffix. Use names like ForgeFileReader, ForgeFileWriter, - // ForgeHttpClient etc. + // TODO: Drop the "Service" suffix. Use names like ForgeFileReader, + // ForgeFileWriter, ForgeHttpClient etc. file_read_service: Arc, file_write_service: Arc, file_remove_service: Arc, diff --git a/crates/forge_repo/src/conversation/conversation_record.rs b/crates/forge_repo/src/conversation/conversation_record.rs index 7df99bf5a3..77642bbe4d 100644 --- a/crates/forge_repo/src/conversation/conversation_record.rs +++ b/crates/forge_repo/src/conversation/conversation_record.rs @@ -901,7 +901,8 @@ impl From for forge_domain::Metrics { .into_iter() .filter_map(|(path, file_record)| { let operation = match file_record { - // If it's an array, take the last operation (most recent) + // If it's an array, take the last operation (most + // recent) FileOperationOrArray::Array(mut arr) if !arr.is_empty() => { arr.pop().unwrap().into() } diff --git a/crates/forge_select/src/preview.rs b/crates/forge_select/src/preview.rs index 85061dbecf..4aa90d3a1f 100644 --- a/crates/forge_select/src/preview.rs +++ b/crates/forge_select/src/preview.rs @@ -436,10 +436,11 @@ fn run_select_ui_values(options: SelectUiOptions) -> anyhow::Result {} Event::Key(key) => { match handle_key_event( diff --git a/crates/forge_services/src/app_config.rs b/crates/forge_services/src/app_config.rs index 8a0b259c8e..1142f159b7 100644 --- a/crates/forge_services/src/app_config.rs +++ b/crates/forge_services/src/app_config.rs @@ -78,7 +78,8 @@ mod tests { use std::sync::Mutex; use forge_config::{ForgeConfig, ModelConfig}; - // Alias to avoid collision with forge_config::ModelConfig used in test fixtures + // Alias to avoid collision with forge_config::ModelConfig used in test + // fixtures use forge_domain::ModelConfig as DomainModelConfig; use forge_domain::{ AnyProvider, ChatRepository, ConfigOperation, Environment, InputModality, MigrationResult, diff --git a/crates/forge_services/src/mcp/manager.rs b/crates/forge_services/src/mcp/manager.rs index ef34ee062b..dbd32d94a4 100644 --- a/crates/forge_services/src/mcp/manager.rs +++ b/crates/forge_services/src/mcp/manager.rs @@ -146,7 +146,8 @@ where // Read and merge all configurations (original behavior) let env = self.infra.get_environment(); let paths = vec![ - // Configs at lower levels take precedence, so we read them in reverse order. + // Configs at lower levels take precedence, so we read them + // in reverse order. env.mcp_user_config().as_path().to_path_buf(), env.mcp_local_config().as_path().to_path_buf(), ];