[INFO] fetching crate markhor_extensions 0.1.0-alpha.0.2...
[INFO] testing markhor_extensions-0.1.0-alpha.0.2 against beta-2025-09-21 for beta-1.91-3
[INFO] extracting crate markhor_extensions 0.1.0-alpha.0.2 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate markhor_extensions 0.1.0-alpha.0.2
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate markhor_extensions 0.1.0-alpha.0.2
[INFO] tweaked toml for crates.io crate markhor_extensions 0.1.0-alpha.0.2 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate markhor_extensions 0.1.0-alpha.0.2 on toolchain beta-2025-09-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate markhor_extensions 0.1.0-alpha.0.2 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-09-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c8f8ad9215f21f5235decce8b8d5ba763ef317abece405de8b3da191a11dda19
[INFO] running `Command { std: "docker" "start" "-a" "c8f8ad9215f21f5235decce8b8d5ba763ef317abece405de8b3da191a11dda19", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c8f8ad9215f21f5235decce8b8d5ba763ef317abece405de8b3da191a11dda19", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c8f8ad9215f21f5235decce8b8d5ba763ef317abece405de8b3da191a11dda19", kill_on_drop: false }`
[INFO] [stdout] c8f8ad9215f21f5235decce8b8d5ba763ef317abece405de8b3da191a11dda19
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 43df970a6bc97153bbae94dcaeef7955a2d639923b08e9a0c2d0237fcf7026b6
[INFO] running `Command { std: "docker" "start" "-a" "43df970a6bc97153bbae94dcaeef7955a2d639923b08e9a0c2d0237fcf7026b6", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.100
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling signal-hook-registry v1.4.2
[INFO] [stderr]    Compiling mio v1.0.3
[INFO] [stderr]    Compiling unicase v2.8.1
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling rustix v1.0.3
[INFO] [stderr]    Compiling getrandom v0.3.2
[INFO] [stderr]    Compiling linux-raw-sys v0.9.3
[INFO] [stderr]    Compiling clap_builder v4.5.35
[INFO] [stderr]    Compiling bit-set v0.5.3
[INFO] [stderr]    Compiling vte v0.14.1
[INFO] [stderr]    Compiling pulldown-cmark v0.13.0
[INFO] [stderr]    Compiling getopts v0.2.21
[INFO] [stderr]    Compiling crossbeam-skiplist v0.1.3
[INFO] [stderr]    Compiling zeroize v1.8.1
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling strip-ansi-escapes v0.2.1
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling pulldown-cmark-escape v0.11.0
[INFO] [stderr]    Compiling nu-ansi-term v0.50.1
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling parking_lot v0.12.3
[INFO] [stderr]    Compiling secrecy v0.10.3
[INFO] [stderr]    Compiling async-once-cell v0.5.4
[INFO] [stderr]    Compiling dotenv v0.15.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.4
[INFO] [stderr]    Compiling clap v4.5.35
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling fancy-regex v0.13.0
[INFO] [stderr]    Compiling bstr v1.12.0
[INFO] [stderr]    Compiling tiktoken-rs v0.6.0
[INFO] [stderr]    Compiling synstructure v0.13.1
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.7.5
[INFO] [stderr]    Compiling zerovec-derive v0.10.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling icu_provider_macros v1.5.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling dynosaur_derive v0.2.0
[INFO] [stderr]    Compiling trait-variant v0.1.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling tokio v1.44.2
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling dynosaur v0.2.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]    Compiling yoke v0.7.5
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling zerovec v0.10.4
[INFO] [stderr]    Compiling tinystr v0.7.6
[INFO] [stderr]    Compiling icu_collections v1.5.0
[INFO] [stderr]    Compiling icu_locid v1.5.0
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling icu_provider v1.5.0
[INFO] [stderr]    Compiling icu_locid_transform v1.5.0
[INFO] [stderr]    Compiling icu_properties v1.5.1
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling bitflags v2.9.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]    Compiling chrono v0.4.41
[INFO] [stderr]    Compiling uuid v1.16.0
[INFO] [stderr]    Compiling openssl v0.10.71
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling tokio-util v0.7.14
[INFO] [stderr]    Compiling tower v0.5.2
[INFO] [stderr]    Compiling icu_normalizer v1.5.0
[INFO] [stderr]    Compiling idna_adapter v1.2.0
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling idna v1.0.3
[INFO] [stderr]    Compiling url v2.5.4
[INFO] [stderr]    Compiling h2 v0.4.8
[INFO] [stderr]    Compiling fd-lock v4.0.4
[INFO] [stderr]    Compiling tempfile v3.19.1
[INFO] [stderr]    Compiling reedline v0.40.0
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling hyper v1.6.0
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling hyper-util v0.1.11
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.12.15
[INFO] [stderr]    Compiling markhor_core v0.1.0-alpha.0.2
[INFO] [stderr]    Compiling markhor_extensions v0.1.0-alpha.0.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/ocr/mistral/client.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ConversionError`
[INFO] [stdout]  --> src/ocr/mistral/client.rs:5:29
[INFO] [stdout]   |
[INFO] [stdout] 5 | use markhor_core::convert::{ConversionError, Converter};
[INFO] [stdout]   |                             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mime::Mime`
[INFO] [stdout]  --> src/ocr/mistral/client.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use mime::Mime;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PathBuf`
[INFO] [stdout]  --> src/ocr/mistral/helpers.rs:3:23
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `URI`
[INFO] [stdout]  --> src/ocr/mistral/converter.rs:8:41
[INFO] [stdout]   |
[INFO] [stdout] 8 | use super::client::{MistralClientInner, URI};
[INFO] [stdout]   |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]   --> src/gemini/chat.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use serde_json::json;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EXTENSION_URI`
[INFO] [stdout]   --> src/gemini/chat.rs:23:55
[INFO] [stdout]    |
[INFO] [stdout] 23 | use super::shared::{GeminiConfig, SharedGeminiClient, EXTENSION_URI};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EXTENSION_URI` and `self`
[INFO] [stdout]   --> src/gemini/embed.rs:13:42
[INFO] [stdout]    |
[INFO] [stdout] 13 | use super::{error::GeminiError, shared::{self, GeminiConfig, SharedGeminiClient, EXTENSION_URI}};
[INFO] [stdout]    |                                          ^^^^                                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ExposeSecret`
[INFO] [stdout]  --> src/gemini/shared.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use secrecy::{ExposeSecret, SecretString}; // Using `secrecy` for the API key
[INFO] [stdout]   |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thiserror::Error`
[INFO] [stdout]  --> src/gemini/shared.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use thiserror::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error as StdError`
[INFO] [stdout]  --> src/gemini/error.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::error::Error as StdError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::error`
[INFO] [stdout]  --> src/chunking/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Range`
[INFO] [stdout]  --> src/chunking/plaintext/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::ops::Range;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::Mutex`
[INFO] [stdout]  --> src/cli/prompter.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tokio::sync::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `markhor_core::extension::Extension`
[INFO] [stdout]   --> src/gemini/chat.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use markhor_core::extension::Extension;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gemini/chat.rs:278:57
[INFO] [stdout]     |
[INFO] [stdout] 278 |         let first_candidate = self.candidates.and_then(|mut c| c.into_iter().next()); // Use into_iter().next()
[INFO] [stdout]     |                                                         ----^
[INFO] [stdout]     |                                                         |
[INFO] [stdout]     |                                                         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `messages`
[INFO] [stdout]    --> src/gemini/chat.rs:850:9
[INFO] [stdout]     |
[INFO] [stdout] 850 |         messages: &[Message],
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_messages`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `options`
[INFO] [stdout]    --> src/gemini/chat.rs:851:9
[INFO] [stdout]     |
[INFO] [stdout] 851 |         options: &ChatOptions,
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_options`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/gemini/error.rs:184:44
[INFO] [stdout]     |
[INFO] [stdout] 184 |             GeminiError::ResponseParsing { context, source } => {
[INFO] [stdout]     |                                            ^^^^^^^ help: try ignoring the field: `context: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/gemini/error.rs:255:44
[INFO] [stdout]     |
[INFO] [stdout] 255 |             GeminiError::ResponseParsing { context, source } => {
[INFO] [stdout]     |                                            ^^^^^^^ help: try ignoring the field: `context: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `callback`
[INFO] [stdout]   --> src/cli/prompter.rs:23:39
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn with_attach_callback(self, callback: Box<dyn Fn(&[&str]) + Send + Sync>) -> Self {
[INFO] [stdout]    |                                       ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_callback`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cursor`
[INFO] [stdout]    --> src/cli/prompter.rs:246:37
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn highlight(&self, line: &str, cursor: usize) -> reedline::StyledText {
[INFO] [stdout]     |                                     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn highlight(&self, line: &str, _cursor: usize) -> reedline::StyledText {
[INFO] [stdout]     |                                     +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `BATCH_LIMIT`
[INFO] [stdout]     |
[INFO] [stdout] 246 -     fn highlight(&self, line: &str, cursor: usize) -> reedline::StyledText {
[INFO] [stdout] 246 +     fn highlight(&self, line: &str, gemini::embed::BATCH_LIMIT: usize) -> reedline::StyledText {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ModeUnspecified` is never constructed
[INFO] [stdout]    --> src/gemini/chat.rs:224:5
[INFO] [stdout]     |
[INFO] [stdout] 223 | enum GeminiFunctionCallingMode {
[INFO] [stdout]     |      ------------------------- variant in this enum
[INFO] [stdout] 224 |     ModeUnspecified,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `GeminiFunctionCallingMode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiErrorResponse` is never constructed
[INFO] [stdout]    --> src/gemini/chat.rs:427:8
[INFO] [stdout]     |
[INFO] [stdout] 427 | struct GeminiErrorResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `into_api_error` is never used
[INFO] [stdout]    --> src/gemini/chat.rs:432:8
[INFO] [stdout]     |
[INFO] [stdout] 431 | impl GeminiErrorResponse {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] 432 |     fn into_api_error(self, response_status: StatusCode) -> ChatError {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiErrorDetail` is never constructed
[INFO] [stdout]    --> src/gemini/chat.rs:454:8
[INFO] [stdout]     |
[INFO] [stdout] 454 | struct GeminiErrorDetail {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_GEMINI_API_BASE` is never used
[INFO] [stdout]    --> src/gemini/chat.rs:484:7
[INFO] [stdout]     |
[INFO] [stdout] 484 | const DEFAULT_GEMINI_API_BASE: &str = "https://generativelanguage.googleapis.com/v1beta/models";
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `map_gemini_error` is never used
[INFO] [stdout]    --> src/gemini/chat.rs:536:14
[INFO] [stdout]     |
[INFO] [stdout] 494 | impl GeminiChatClient {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     async fn map_gemini_error(err_resp: reqwest::Response) -> ChatError {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_default_http_client` is never used
[INFO] [stdout]    --> src/gemini/chat.rs:870:8
[INFO] [stdout]     |
[INFO] [stdout] 870 | pub fn create_default_http_client() -> Result<reqwest::Client, ChatError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiApiErrorResponse` is never constructed
[INFO] [stdout]    --> src/gemini/embed.rs:327:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | pub struct GeminiApiErrorResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiApiErrorDetail` is never constructed
[INFO] [stdout]    --> src/gemini/embed.rs:332:12
[INFO] [stdout]     |
[INFO] [stdout] 332 | pub struct GeminiApiErrorDetail {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiEmbedderOptions` is never constructed
[INFO] [stdout]    --> src/gemini/embed.rs:342:12
[INFO] [stdout]     |
[INFO] [stdout] 342 | pub struct GeminiEmbedderOptions {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXTENSION_URI` is never used
[INFO] [stdout]   --> src/gemini/shared.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(crate) const EXTENSION_URI: &str = "todo";
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `timeout` is never used
[INFO] [stdout]   --> src/gemini/shared.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl GeminiConfig {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn timeout(mut self, timeout: std::time::Duration) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 47.60s
[INFO] running `Command { std: "docker" "inspect" "43df970a6bc97153bbae94dcaeef7955a2d639923b08e9a0c2d0237fcf7026b6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "43df970a6bc97153bbae94dcaeef7955a2d639923b08e9a0c2d0237fcf7026b6", kill_on_drop: false }`
[INFO] [stdout] 43df970a6bc97153bbae94dcaeef7955a2d639923b08e9a0c2d0237fcf7026b6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 97a6d587dc0ec9d9280e98fccbd7de1e1903170e116d4bf76552d59de69b7e2f
[INFO] running `Command { std: "docker" "start" "-a" "97a6d587dc0ec9d9280e98fccbd7de1e1903170e116d4bf76552d59de69b7e2f", kill_on_drop: false }`
[INFO] [stderr]    Compiling log v0.4.27
[INFO] [stderr]    Compiling tracing-core v0.1.33
[INFO] [stderr]    Compiling thread_local v1.1.8
[INFO] [stderr]    Compiling mio v1.0.3
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling tokio v1.44.2
[INFO] [stderr]    Compiling signal-hook-mio v0.2.4
[INFO] [stderr]    Compiling tracing-subscriber v0.3.19
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling reedline v0.40.0
[INFO] [stderr]    Compiling tokio-util v0.7.14
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tower v0.5.2
[INFO] [stderr]    Compiling h2 v0.4.8
[INFO] [stderr]    Compiling hyper v1.6.0
[INFO] [stderr]    Compiling hyper-util v0.1.11
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.12.15
[INFO] [stderr]    Compiling markhor_core v0.1.0-alpha.0.2
[INFO] [stderr]    Compiling markhor_extensions v0.1.0-alpha.0.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/ocr/mistral/client.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ConversionError`
[INFO] [stdout]  --> src/ocr/mistral/client.rs:5:29
[INFO] [stdout]   |
[INFO] [stdout] 5 | use markhor_core::convert::{ConversionError, Converter};
[INFO] [stdout]   |                             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mime::Mime`
[INFO] [stdout]  --> src/ocr/mistral/client.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use mime::Mime;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PathBuf`
[INFO] [stdout]  --> src/ocr/mistral/helpers.rs:3:23
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `URI`
[INFO] [stdout]  --> src/ocr/mistral/converter.rs:8:41
[INFO] [stdout]   |
[INFO] [stdout] 8 | use super::client::{MistralClientInner, URI};
[INFO] [stdout]   |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]   --> src/gemini/chat.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use serde_json::json;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EXTENSION_URI`
[INFO] [stdout]   --> src/gemini/chat.rs:23:55
[INFO] [stdout]    |
[INFO] [stdout] 23 | use super::shared::{GeminiConfig, SharedGeminiClient, EXTENSION_URI};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EXTENSION_URI` and `self`
[INFO] [stdout]   --> src/gemini/embed.rs:13:42
[INFO] [stdout]    |
[INFO] [stdout] 13 | use super::{error::GeminiError, shared::{self, GeminiConfig, SharedGeminiClient, EXTENSION_URI}};
[INFO] [stdout]    |                                          ^^^^                                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ExposeSecret`
[INFO] [stdout]  --> src/gemini/shared.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use secrecy::{ExposeSecret, SecretString}; // Using `secrecy` for the API key
[INFO] [stdout]   |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thiserror::Error`
[INFO] [stdout]  --> src/gemini/shared.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use thiserror::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error as StdError`
[INFO] [stdout]  --> src/gemini/error.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::error::Error as StdError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::error`
[INFO] [stdout]  --> src/chunking/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Range`
[INFO] [stdout]  --> src/chunking/plaintext/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::ops::Range;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::Mutex`
[INFO] [stdout]  --> src/cli/prompter.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tokio::sync::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/ocr/mistral/client.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ConversionError`
[INFO] [stdout]  --> src/ocr/mistral/client.rs:5:29
[INFO] [stdout]   |
[INFO] [stdout] 5 | use markhor_core::convert::{ConversionError, Converter};
[INFO] [stdout]   |                             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mime::Mime`
[INFO] [stdout]  --> src/ocr/mistral/client.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use mime::Mime;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PathBuf`
[INFO] [stdout]  --> src/ocr/mistral/helpers.rs:3:23
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `URI`
[INFO] [stdout]  --> src/ocr/mistral/converter.rs:8:41
[INFO] [stdout]   |
[INFO] [stdout] 8 | use super::client::{MistralClientInner, URI};
[INFO] [stdout]   |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]   --> src/gemini/chat.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use serde_json::json;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EXTENSION_URI`
[INFO] [stdout]   --> src/gemini/chat.rs:23:55
[INFO] [stdout]    |
[INFO] [stdout] 23 | use super::shared::{GeminiConfig, SharedGeminiClient, EXTENSION_URI};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EXTENSION_URI` and `self`
[INFO] [stdout]   --> src/gemini/embed.rs:13:42
[INFO] [stdout]    |
[INFO] [stdout] 13 | use super::{error::GeminiError, shared::{self, GeminiConfig, SharedGeminiClient, EXTENSION_URI}};
[INFO] [stdout]    |                                          ^^^^                                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ExposeSecret`
[INFO] [stdout]  --> src/gemini/shared.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use secrecy::{ExposeSecret, SecretString}; // Using `secrecy` for the API key
[INFO] [stdout]   |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thiserror::Error`
[INFO] [stdout]  --> src/gemini/shared.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use thiserror::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error as StdError`
[INFO] [stdout]  --> src/gemini/error.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::error::Error as StdError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::error`
[INFO] [stdout]  --> src/chunking/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Range`
[INFO] [stdout]  --> src/chunking/plaintext/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::ops::Range;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::Mutex`
[INFO] [stdout]  --> src/cli/prompter.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tokio::sync::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `markhor_core::extension::Extension`
[INFO] [stdout]   --> src/gemini/chat.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use markhor_core::extension::Extension;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gemini/chat.rs:278:57
[INFO] [stdout]     |
[INFO] [stdout] 278 |         let first_candidate = self.candidates.and_then(|mut c| c.into_iter().next()); // Use into_iter().next()
[INFO] [stdout]     |                                                         ----^
[INFO] [stdout]     |                                                         |
[INFO] [stdout]     |                                                         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `messages`
[INFO] [stdout]    --> src/gemini/chat.rs:850:9
[INFO] [stdout]     |
[INFO] [stdout] 850 |         messages: &[Message],
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_messages`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `options`
[INFO] [stdout]    --> src/gemini/chat.rs:851:9
[INFO] [stdout]     |
[INFO] [stdout] 851 |         options: &ChatOptions,
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_options`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `markhor_core::extension::Extension`
[INFO] [stdout]   --> src/gemini/chat.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use markhor_core::extension::Extension;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/gemini/error.rs:184:44
[INFO] [stdout]     |
[INFO] [stdout] 184 |             GeminiError::ResponseParsing { context, source } => {
[INFO] [stdout]     |                                            ^^^^^^^ help: try ignoring the field: `context: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/gemini/error.rs:255:44
[INFO] [stdout]     |
[INFO] [stdout] 255 |             GeminiError::ResponseParsing { context, source } => {
[INFO] [stdout]     |                                            ^^^^^^^ help: try ignoring the field: `context: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `callback`
[INFO] [stdout]   --> src/cli/prompter.rs:23:39
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn with_attach_callback(self, callback: Box<dyn Fn(&[&str]) + Send + Sync>) -> Self {
[INFO] [stdout]    |                                       ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_callback`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cursor`
[INFO] [stdout]    --> src/cli/prompter.rs:246:37
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn highlight(&self, line: &str, cursor: usize) -> reedline::StyledText {
[INFO] [stdout]     |                                     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn highlight(&self, line: &str, _cursor: usize) -> reedline::StyledText {
[INFO] [stdout]     |                                     +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `BATCH_LIMIT`
[INFO] [stdout]     |
[INFO] [stdout] 246 -     fn highlight(&self, line: &str, cursor: usize) -> reedline::StyledText {
[INFO] [stdout] 246 +     fn highlight(&self, line: &str, gemini::embed::BATCH_LIMIT: usize) -> reedline::StyledText {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ModeUnspecified` is never constructed
[INFO] [stdout]    --> src/gemini/chat.rs:224:5
[INFO] [stdout]     |
[INFO] [stdout] 223 | enum GeminiFunctionCallingMode {
[INFO] [stdout]     |      ------------------------- variant in this enum
[INFO] [stdout] 224 |     ModeUnspecified,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `GeminiFunctionCallingMode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiErrorResponse` is never constructed
[INFO] [stdout]    --> src/gemini/chat.rs:427:8
[INFO] [stdout]     |
[INFO] [stdout] 427 | struct GeminiErrorResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `into_api_error` is never used
[INFO] [stdout]    --> src/gemini/chat.rs:432:8
[INFO] [stdout]     |
[INFO] [stdout] 431 | impl GeminiErrorResponse {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] 432 |     fn into_api_error(self, response_status: StatusCode) -> ChatError {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiErrorDetail` is never constructed
[INFO] [stdout]    --> src/gemini/chat.rs:454:8
[INFO] [stdout]     |
[INFO] [stdout] 454 | struct GeminiErrorDetail {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_GEMINI_API_BASE` is never used
[INFO] [stdout]    --> src/gemini/chat.rs:484:7
[INFO] [stdout]     |
[INFO] [stdout] 484 | const DEFAULT_GEMINI_API_BASE: &str = "https://generativelanguage.googleapis.com/v1beta/models";
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `map_gemini_error` is never used
[INFO] [stdout]    --> src/gemini/chat.rs:536:14
[INFO] [stdout]     |
[INFO] [stdout] 494 | impl GeminiChatClient {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     async fn map_gemini_error(err_resp: reqwest::Response) -> ChatError {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_default_http_client` is never used
[INFO] [stdout]    --> src/gemini/chat.rs:870:8
[INFO] [stdout]     |
[INFO] [stdout] 870 | pub fn create_default_http_client() -> Result<reqwest::Client, ChatError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiApiErrorResponse` is never constructed
[INFO] [stdout]    --> src/gemini/embed.rs:327:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | pub struct GeminiApiErrorResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiApiErrorDetail` is never constructed
[INFO] [stdout]    --> src/gemini/embed.rs:332:12
[INFO] [stdout]     |
[INFO] [stdout] 332 | pub struct GeminiApiErrorDetail {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiEmbedderOptions` is never constructed
[INFO] [stdout]    --> src/gemini/embed.rs:342:12
[INFO] [stdout]     |
[INFO] [stdout] 342 | pub struct GeminiEmbedderOptions {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXTENSION_URI` is never used
[INFO] [stdout]   --> src/gemini/shared.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(crate) const EXTENSION_URI: &str = "todo";
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `timeout` is never used
[INFO] [stdout]   --> src/gemini/shared.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl GeminiConfig {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn timeout(mut self, timeout: std::time::Duration) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gemini/chat.rs:278:57
[INFO] [stdout]     |
[INFO] [stdout] 278 |         let first_candidate = self.candidates.and_then(|mut c| c.into_iter().next()); // Use into_iter().next()
[INFO] [stdout]     |                                                         ----^
[INFO] [stdout]     |                                                         |
[INFO] [stdout]     |                                                         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `messages`
[INFO] [stdout]    --> src/gemini/chat.rs:850:9
[INFO] [stdout]     |
[INFO] [stdout] 850 |         messages: &[Message],
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_messages`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `options`
[INFO] [stdout]    --> src/gemini/chat.rs:851:9
[INFO] [stdout]     |
[INFO] [stdout] 851 |         options: &ChatOptions,
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_options`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/gemini/error.rs:184:44
[INFO] [stdout]     |
[INFO] [stdout] 184 |             GeminiError::ResponseParsing { context, source } => {
[INFO] [stdout]     |                                            ^^^^^^^ help: try ignoring the field: `context: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/gemini/error.rs:255:44
[INFO] [stdout]     |
[INFO] [stdout] 255 |             GeminiError::ResponseParsing { context, source } => {
[INFO] [stdout]     |                                            ^^^^^^^ help: try ignoring the field: `context: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `callback`
[INFO] [stdout]   --> src/cli/prompter.rs:23:39
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn with_attach_callback(self, callback: Box<dyn Fn(&[&str]) + Send + Sync>) -> Self {
[INFO] [stdout]    |                                       ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_callback`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cursor`
[INFO] [stdout]    --> src/cli/prompter.rs:246:37
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn highlight(&self, line: &str, cursor: usize) -> reedline::StyledText {
[INFO] [stdout]     |                                     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn highlight(&self, line: &str, _cursor: usize) -> reedline::StyledText {
[INFO] [stdout]     |                                     +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `BATCH_LIMIT`
[INFO] [stdout]     |
[INFO] [stdout] 246 -     fn highlight(&self, line: &str, cursor: usize) -> reedline::StyledText {
[INFO] [stdout] 246 +     fn highlight(&self, line: &str, gemini::embed::BATCH_LIMIT: usize) -> reedline::StyledText {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ModeUnspecified` is never constructed
[INFO] [stdout]    --> src/gemini/chat.rs:224:5
[INFO] [stdout]     |
[INFO] [stdout] 223 | enum GeminiFunctionCallingMode {
[INFO] [stdout]     |      ------------------------- variant in this enum
[INFO] [stdout] 224 |     ModeUnspecified,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `GeminiFunctionCallingMode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiErrorResponse` is never constructed
[INFO] [stdout]    --> src/gemini/chat.rs:427:8
[INFO] [stdout]     |
[INFO] [stdout] 427 | struct GeminiErrorResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `into_api_error` is never used
[INFO] [stdout]    --> src/gemini/chat.rs:432:8
[INFO] [stdout]     |
[INFO] [stdout] 431 | impl GeminiErrorResponse {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] 432 |     fn into_api_error(self, response_status: StatusCode) -> ChatError {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiErrorDetail` is never constructed
[INFO] [stdout]    --> src/gemini/chat.rs:454:8
[INFO] [stdout]     |
[INFO] [stdout] 454 | struct GeminiErrorDetail {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_GEMINI_API_BASE` is never used
[INFO] [stdout]    --> src/gemini/chat.rs:484:7
[INFO] [stdout]     |
[INFO] [stdout] 484 | const DEFAULT_GEMINI_API_BASE: &str = "https://generativelanguage.googleapis.com/v1beta/models";
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `map_gemini_error` is never used
[INFO] [stdout]    --> src/gemini/chat.rs:536:14
[INFO] [stdout]     |
[INFO] [stdout] 494 | impl GeminiChatClient {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 536 |     async fn map_gemini_error(err_resp: reqwest::Response) -> ChatError {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_default_http_client` is never used
[INFO] [stdout]    --> src/gemini/chat.rs:870:8
[INFO] [stdout]     |
[INFO] [stdout] 870 | pub fn create_default_http_client() -> Result<reqwest::Client, ChatError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiApiErrorResponse` is never constructed
[INFO] [stdout]    --> src/gemini/embed.rs:327:12
[INFO] [stdout]     |
[INFO] [stdout] 327 | pub struct GeminiApiErrorResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiApiErrorDetail` is never constructed
[INFO] [stdout]    --> src/gemini/embed.rs:332:12
[INFO] [stdout]     |
[INFO] [stdout] 332 | pub struct GeminiApiErrorDetail {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeminiEmbedderOptions` is never constructed
[INFO] [stdout]    --> src/gemini/embed.rs:342:12
[INFO] [stdout]     |
[INFO] [stdout] 342 | pub struct GeminiEmbedderOptions {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXTENSION_URI` is never used
[INFO] [stdout]   --> src/gemini/shared.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(crate) const EXTENSION_URI: &str = "todo";
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `timeout` is never used
[INFO] [stdout]   --> src/gemini/shared.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl GeminiConfig {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn timeout(mut self, timeout: std::time::Duration) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `common`
[INFO] [stdout]  --> tests/mistral-ocr.rs:7:1
[INFO] [stdout]   |
[INFO] [stdout] 7 | mod common;
[INFO] [stdout]   | ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = help: to create the module `common`, create file "tests/common.rs" or "tests/common/mod.rs"
[INFO] [stdout]   = note: if there is a `mod common` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0583`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `markhor_extensions` (test "mistral-ocr") due to 1 previous error
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused variable: `options_2`
[INFO] [stdout]    --> tests/gemini.rs:196:9
[INFO] [stdout]     |
[INFO] [stdout] 196 |     let options_2 = ChatOptions {
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_options_2`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "97a6d587dc0ec9d9280e98fccbd7de1e1903170e116d4bf76552d59de69b7e2f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "97a6d587dc0ec9d9280e98fccbd7de1e1903170e116d4bf76552d59de69b7e2f", kill_on_drop: false }`
[INFO] [stdout] 97a6d587dc0ec9d9280e98fccbd7de1e1903170e116d4bf76552d59de69b7e2f
