[INFO] cloning repository https://github.com/zhaungkuo/agent
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/zhaungkuo/agent" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzhaungkuo%2Fagent", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzhaungkuo%2Fagent'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 8e71549bc1201d1b6524251ab3c37e7f6f365751
[INFO] checking zhaungkuo/agent/8e71549bc1201d1b6524251ab3c37e7f6f365751 against 67854e511de21d881bb16426996cd4259d44aa2e for pr-161154
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzhaungkuo%2Fagent" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/zhaungkuo/agent
[INFO] finished tweaking git repo https://github.com/zhaungkuo/agent
[INFO] tweaked toml for git repo https://github.com/zhaungkuo/agent written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/zhaungkuo/agent on toolchain 67854e511de21d881bb16426996cd4259d44aa2e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+67854e511de21d881bb16426996cd4259d44aa2e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/zhaungkuo/agent 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" "+67854e511de21d881bb16426996cd4259d44aa2e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded cssparser v0.34.0
[INFO] [stderr]   Downloaded ego-tree v0.10.0
[INFO] [stderr]   Downloaded selectors v0.26.0
[INFO] [stderr]   Downloaded scraper v0.22.0
[INFO] [stderr]   Downloaded inotify v0.11.2
[INFO] [stderr]   Downloaded kqueue v1.2.0
[INFO] [stderr]   Downloaded markup5ever v0.16.2
[INFO] [stderr]   Downloaded html5ever v0.31.0
[INFO] [stderr]   Downloaded web_atoms v0.1.3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 37ec08c9a811ffb1e3f5f0ae2d62036ecfa77be0e301e18d03f3a8cd1d147ddd
[INFO] running `Command { std: "docker" "start" "37ec08c9a811ffb1e3f5f0ae2d62036ecfa77be0e301e18d03f3a8cd1d147ddd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "37ec08c9a811ffb1e3f5f0ae2d62036ecfa77be0e301e18d03f3a8cd1d147ddd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "37ec08c9a811ffb1e3f5f0ae2d62036ecfa77be0e301e18d03f3a8cd1d147ddd" "/opt/rustwide/cargo-home/bin/cargo" "+67854e511de21d881bb16426996cd4259d44aa2e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "37ec08c9a811ffb1e3f5f0ae2d62036ecfa77be0e301e18d03f3a8cd1d147ddd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "37ec08c9a811ffb1e3f5f0ae2d62036ecfa77be0e301e18d03f3a8cd1d147ddd" "/opt/rustwide/cargo-home/bin/cargo" "+67854e511de21d881bb16426996cd4259d44aa2e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking log v0.4.32
[INFO] [stderr]    Compiling siphasher v1.0.3
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]     Checking stable_deref_trait v1.2.1
[INFO] [stderr]     Checking memchr v2.8.1
[INFO] [stderr]     Checking bitflags v2.13.0
[INFO] [stderr]     Checking http v1.4.2
[INFO] [stderr]    Compiling cc v1.2.63
[INFO] [stderr]     Checking new_debug_unreachable v1.0.6
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking precomputed-hash v0.1.1
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]     Checking mac v0.1.1
[INFO] [stderr]    Compiling openssl v0.10.80
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking futf v0.1.5
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking dtoa v1.0.11
[INFO] [stderr]     Checking phf_shared v0.11.3
[INFO] [stderr]     Checking dtoa-short v0.3.5
[INFO] [stderr]    Compiling match_token v0.1.0
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]     Checking mio v1.2.1
[INFO] [stderr]     Checking tendril v0.4.3
[INFO] [stderr]    Compiling cssparser-macros v0.6.1
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking rustix v1.1.4
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking getrandom v0.4.2
[INFO] [stderr]     Checking servo_arc v0.4.3
[INFO] [stderr]    Compiling derive_more v0.99.20
[INFO] [stderr]     Checking inotify-sys v0.1.5
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking serde_json v1.0.150
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking option-ext v0.2.0
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking getopts v0.2.24
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking inotify v0.11.2
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking string_cache v0.8.9
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking notify-types v2.1.0
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking symlink v0.1.0
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking either v1.16.0
[INFO] [stderr]     Checking ego-tree v0.10.0
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]    Compiling string_cache_codegen v0.5.4
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking env_home v0.1.0
[INFO] [stderr]     Checking notify v8.2.0
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]    Compiling selectors v0.26.0
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]     Checking uuid v1.23.3
[INFO] [stderr]     Checking glob v0.3.3
[INFO] [stderr]    Compiling web_atoms v0.1.3
[INFO] [stderr]    Compiling markup5ever v0.14.1
[INFO] [stderr]    Compiling openssl-sys v0.9.116
[INFO] [stderr]     Checking phf v0.11.3
[INFO] [stderr]     Checking cssparser v0.34.0
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking which v7.0.3
[INFO] [stderr]     Checking markup5ever v0.16.2
[INFO] [stderr]     Checking html5ever v0.31.0
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking html5ever v0.29.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking regex v1.12.4
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking scraper v0.22.0
[INFO] [stderr]     Checking tracing-appender v0.2.5
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking h2 v0.4.14
[INFO] [stderr]     Checking rand v0.9.4
[INFO] [stderr]     Checking tungstenite v0.26.2
[INFO] [stderr]     Checking tokio-tungstenite v0.26.2
[INFO] [stderr]     Checking hyper v1.10.1
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking generic_agent v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]   --> src/ga.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{debug, info, warn};
[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: `std::collections::HashMap`
[INFO] [stdout]  --> src/llmcore.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]   --> src/ga.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 | use tracing::{debug, info, warn};
[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: `std::collections::HashMap`
[INFO] [stdout]  --> src/llmcore.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/llmcore.rs:379:17
[INFO] [stdout]     |
[INFO] [stdout] 379 |             let mut content: Vec<Value> = msg.content.iter().filter_map(|block| {
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/llmcore.rs:403:17
[INFO] [stdout]     |
[INFO] [stdout] 403 |             let mut result = serde_json::json!({
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/llmcore.rs:379:17
[INFO] [stdout]     |
[INFO] [stdout] 379 |             let mut content: Vec<Value> = msg.content.iter().filter_map(|block| {
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/llmcore.rs:403:17
[INFO] [stdout]     |
[INFO] [stdout] 403 |             let mut result = serde_json::json!({
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufRead`
[INFO] [stdout]  --> src/agentmain.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{BufRead, Write as IoWrite};
[INFO] [stdout]   |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::io::AsyncReadExt`
[INFO] [stdout]   --> src/ga.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use tokio::io::AsyncReadExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufRead`
[INFO] [stdout]  --> src/llmcore.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::BufRead;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tool_name`
[INFO] [stdout]   --> src/agent_loop.rs:92:55
[INFO] [stdout]    |
[INFO] [stdout] 92 |                         if let Some((ref mut tool_id, ref mut tool_name, ref mut tool_input)) = current_tool_call {
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tool_name`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task_rx`
[INFO] [stdout]   --> src/agentmain.rs:57:23
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let (task_tx, task_rx) = mpsc::channel::<Task>(100);
[INFO] [stdout]    |                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_task_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufRead`
[INFO] [stdout]  --> src/agentmain.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{BufRead, Write as IoWrite};
[INFO] [stdout]   |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::io::AsyncReadExt`
[INFO] [stdout]   --> src/ga.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use tokio::io::AsyncReadExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufRead`
[INFO] [stdout]  --> src/llmcore.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::BufRead;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tool_name`
[INFO] [stdout]   --> src/agent_loop.rs:92:55
[INFO] [stdout]    |
[INFO] [stdout] 92 |                         if let Some((ref mut tool_id, ref mut tool_name, ref mut tool_input)) = current_tool_call {
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tool_name`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task_rx`
[INFO] [stdout]   --> src/agentmain.rs:57:23
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let (task_tx, task_rx) = mpsc::channel::<Task>(100);
[INFO] [stdout]    |                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_task_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `agent`
[INFO] [stdout]    --> src/agentmain.rs:209:24
[INFO] [stdout]     |
[INFO] [stdout] 209 | async fn run_task_mode(agent: &GenericAgent, task_name: &str, input: Option<&str>) -> anyhow::Result<()> {
[INFO] [stdout]     |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_agent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]    --> src/agentmain.rs:209:63
[INFO] [stdout]     |
[INFO] [stdout] 209 | async fn run_task_mode(agent: &GenericAgent, task_name: &str, input: Option<&str>) -> anyhow::Result<()> {
[INFO] [stdout]     |                                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `agent`
[INFO] [stdout]    --> src/agentmain.rs:215:27
[INFO] [stdout]     |
[INFO] [stdout] 215 | async fn run_reflect_mode(agent: &GenericAgent, script_path: &str) -> anyhow::Result<()> {
[INFO] [stdout]     |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_agent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `status_icon`
[INFO] [stdout]    --> src/ga.rs:258:9
[INFO] [stdout]     |
[INFO] [stdout] 258 |     let status_icon = match exit_code {
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_status_icon`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output_snippet`
[INFO] [stdout]    --> src/ga.rs:264:9
[INFO] [stdout]     |
[INFO] [stdout] 264 |     let output_snippet = smart_format(
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_snippet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `tmp_path` is never read
[INFO] [stdout]    --> src/ga.rs:109:41
[INFO] [stdout]     |
[INFO] [stdout] 109 |     let mut tmp_path: Option<PathBuf> = None;
[INFO] [stdout]     |                                         ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 115 |             tmp_path = Some(tmp_dir.join(format!("ai_{}.py", uuid::Uuid::new_v4())));
[INFO] [stdout]     |             -------- `tmp_path` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `program` is never read
[INFO] [stdout]    --> src/ga.rs:110:23
[INFO] [stdout]     |
[INFO] [stdout] 110 |     let mut program = String::new();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 131 |             program = std::env::var("PYTHON").unwrap_or_else(|_| "python".to_string());
[INFO] [stdout]     |             ------- `program` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `args` is never read
[INFO] [stdout]    --> src/ga.rs:111:33
[INFO] [stdout]     |
[INFO] [stdout] 111 |     let mut args: Vec<String> = Vec::new();
[INFO] [stdout]     |                                 ^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 132 |             args = vec!["-X".to_string(), "utf8".to_string(), "-u".to_string()];
[INFO] [stdout]     |             ---- `args` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `agent`
[INFO] [stdout]    --> src/agentmain.rs:209:24
[INFO] [stdout]     |
[INFO] [stdout] 209 | async fn run_task_mode(agent: &GenericAgent, task_name: &str, input: Option<&str>) -> anyhow::Result<()> {
[INFO] [stdout]     |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_agent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]    --> src/agentmain.rs:209:63
[INFO] [stdout]     |
[INFO] [stdout] 209 | async fn run_task_mode(agent: &GenericAgent, task_name: &str, input: Option<&str>) -> anyhow::Result<()> {
[INFO] [stdout]     |                                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `agent`
[INFO] [stdout]    --> src/agentmain.rs:215:27
[INFO] [stdout]     |
[INFO] [stdout] 215 | async fn run_reflect_mode(agent: &GenericAgent, script_path: &str) -> anyhow::Result<()> {
[INFO] [stdout]     |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_agent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `status_icon`
[INFO] [stdout]    --> src/ga.rs:258:9
[INFO] [stdout]     |
[INFO] [stdout] 258 |     let status_icon = match exit_code {
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_status_icon`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output_snippet`
[INFO] [stdout]    --> src/ga.rs:264:9
[INFO] [stdout]     |
[INFO] [stdout] 264 |     let output_snippet = smart_format(
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_snippet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `tmp_path` is never read
[INFO] [stdout]    --> src/ga.rs:109:41
[INFO] [stdout]     |
[INFO] [stdout] 109 |     let mut tmp_path: Option<PathBuf> = None;
[INFO] [stdout]     |                                         ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 115 |             tmp_path = Some(tmp_dir.join(format!("ai_{}.py", uuid::Uuid::new_v4())));
[INFO] [stdout]     |             -------- `tmp_path` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `program` is never read
[INFO] [stdout]    --> src/ga.rs:110:23
[INFO] [stdout]     |
[INFO] [stdout] 110 |     let mut program = String::new();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 131 |             program = std::env::var("PYTHON").unwrap_or_else(|_| "python".to_string());
[INFO] [stdout]     |             ------- `program` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `args` is never read
[INFO] [stdout]    --> src/ga.rs:111:33
[INFO] [stdout]     |
[INFO] [stdout] 111 |     let mut args: Vec<String> = Vec::new();
[INFO] [stdout]     |                                 ^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 132 |             args = vec!["-X".to_string(), "utf8".to_string(), "-u".to_string()];
[INFO] [stdout]     |             ---- `args` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]    --> src/ga.rs:380:5
[INFO] [stdout]     |
[INFO] [stdout] 380 |     path: &Path,
[INFO] [stdout]     |     ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]    --> src/ga.rs:380:5
[INFO] [stdout]     |
[INFO] [stdout] 380 |     path: &Path,
[INFO] [stdout]     |     ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/llmcore.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let mut current_tool_id: Option<String> = None;
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/llmcore.rs:111:13
[INFO] [stdout]     |
[INFO] [stdout] 111 |         let mut current_tool_name: Option<String> = None;
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/llmcore.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |         let mut current_tool_input = String::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/llmcore.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 113 |         let mut in_tool_use = false;
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_tool_id`
[INFO] [stdout]    --> src/llmcore.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let mut current_tool_id: Option<String> = None;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_tool_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_tool_name`
[INFO] [stdout]    --> src/llmcore.rs:111:13
[INFO] [stdout]     |
[INFO] [stdout] 111 |         let mut current_tool_name: Option<String> = None;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_tool_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_tool_input`
[INFO] [stdout]    --> src/llmcore.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |         let mut current_tool_input = String::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_tool_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `in_tool_use`
[INFO] [stdout]    --> src/llmcore.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 113 |         let mut in_tool_use = false;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_in_tool_use`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `media_type`
[INFO] [stdout]    --> src/llmcore.rs:328:58
[INFO] [stdout]     |
[INFO] [stdout] 328 |                         ToolResultContent::Image { data, media_type } => {
[INFO] [stdout]     |                                                          ^^^^^^^^^^ help: try ignoring the field: `media_type: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/llmcore.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let mut current_tool_id: Option<String> = None;
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/llmcore.rs:111:13
[INFO] [stdout]     |
[INFO] [stdout] 111 |         let mut current_tool_name: Option<String> = None;
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/llmcore.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |         let mut current_tool_input = String::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/llmcore.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 113 |         let mut in_tool_use = false;
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_tool_id`
[INFO] [stdout]    --> src/llmcore.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let mut current_tool_id: Option<String> = None;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_tool_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_tool_name`
[INFO] [stdout]    --> src/llmcore.rs:111:13
[INFO] [stdout]     |
[INFO] [stdout] 111 |         let mut current_tool_name: Option<String> = None;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_tool_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_tool_input`
[INFO] [stdout]    --> src/llmcore.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |         let mut current_tool_input = String::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_tool_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `in_tool_use`
[INFO] [stdout]    --> src/llmcore.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 113 |         let mut in_tool_use = false;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_in_tool_use`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `media_type`
[INFO] [stdout]    --> src/llmcore.rs:328:58
[INFO] [stdout]     |
[INFO] [stdout] 328 |                         ToolResultContent::Image { data, media_type } => {
[INFO] [stdout]     |                                                          ^^^^^^^^^^ help: try ignoring the field: `media_type: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AgentRunner` is never constructed
[INFO] [stdout]  --> src/agent_loop.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct AgentRunner {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `run`, and `check_danger_warning` are never used
[INFO] [stdout]    --> src/agent_loop.rs:13:12
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl AgentRunner {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  13 |     pub fn new(max_turns: usize, verbose: bool, yield_info: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub async fn run<H: BaseHandler + 'static>(
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     fn check_danger_warning(&self, turn: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_agent_runner` is never used
[INFO] [stdout]    --> src/agent_loop.rs:198:8
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub fn create_agent_runner() -> AgentRunner {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GA_LANG` is never used
[INFO] [stdout]   --> src/agentmain.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | static GA_LANG: once_cell::sync::Lazy<String> =
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_lang_suffix` is never used
[INFO] [stdout]   --> src/agentmain.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn get_lang_suffix() -> &'static str {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/agentmain.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct GenericAgent {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 30 |     lock: parking_lot::Mutex<()>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 31 |     task_queue: mpsc::Sender<Task>,
[INFO] [stdout] 32 |     history: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 33 |     handler: Option<parking_lot::Mutex<GenericAgentHandler>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 34 |     is_running: AtomicBool,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 35 |     stop_sig: AtomicBool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     inc_out: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 41 |     task_dir: parking_lot::Mutex<Option<PathBuf>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 42 |     log_path: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `abort` and `run` are never used
[INFO] [stdout]    --> src/agentmain.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl GenericAgent {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn abort(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn run(&self) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `query`, `source`, and `output` are never read
[INFO] [stdout]    --> src/agentmain.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub struct Task {
[INFO] [stdout]     |            ---- fields in this struct
[INFO] [stdout] 150 |     pub query: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 151 |     pub source: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 152 |     pub output: mpsc::Sender<TaskOutput>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `turn` and `source` are never read
[INFO] [stdout]    --> src/agentmain.rs:158:9
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub struct TaskOutput {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub turn: usize,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 159 |     pub source: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `smart_format_output` is never used
[INFO] [stdout]    --> src/agentmain.rs:267:4
[INFO] [stdout]     |
[INFO] [stdout] 267 | fn smart_format_output(data: &str, max_str_len: usize) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `consume_file` is never used
[INFO] [stdout]    --> src/agentmain.rs:280:4
[INFO] [stdout]     |
[INFO] [stdout] 280 | fn consume_file(dir: &Path, filename: &str) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `READ_DIRS` is never used
[INFO] [stdout]   --> src/ga.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | static READ_DIRS: Lazy<RwLock<HashSet<String>>> = Lazy::new(|| RwLock::new(HashSet::new()));
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `smart_format` is never used
[INFO] [stdout]   --> src/ga.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn smart_format(data: &str, max_str_len: usize, omit_str: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_error` is never used
[INFO] [stdout]   --> src/ga.rs:36:4
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn format_error(e: &dyn std::error::Error) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `expand_file_refs` is never used
[INFO] [stdout]   --> src/ga.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn expand_file_refs(text: &str, base_dir: Option<&Path>) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CodeRunResult` is never constructed
[INFO] [stdout]   --> src/ga.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct CodeRunResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `code_run` is never used
[INFO] [stdout]   --> src/ga.rs:93:14
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub async fn code_run(
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_patch` is never used
[INFO] [stdout]    --> src/ga.rs:286:8
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub fn file_patch(path: &Path, old_content: &str, new_content: &str) -> Result<Value, String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_read` is never used
[INFO] [stdout]    --> src/ga.rs:318:8
[INFO] [stdout]     |
[INFO] [stdout] 318 | pub fn file_read(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_file_lines` is never used
[INFO] [stdout]    --> src/ga.rs:377:4
[INFO] [stdout]     |
[INFO] [stdout] 377 | fn format_file_lines(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_write` is never used
[INFO] [stdout]    --> src/ga.rs:435:8
[INFO] [stdout]     |
[INFO] [stdout] 435 | pub fn file_write(path: &Path, content: &str, mode: &str) -> Result<Value, String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebScanResult` is never constructed
[INFO] [stdout]    --> src/ga.rs:480:12
[INFO] [stdout]     |
[INFO] [stdout] 480 | pub struct WebScanResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TabInfo` is never constructed
[INFO] [stdout]    --> src/ga.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 | pub struct TabInfo {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_html_content` is never used
[INFO] [stdout]    --> src/ga.rs:493:8
[INFO] [stdout]     |
[INFO] [stdout] 493 | pub fn extract_html_content(html: &str, max_chars: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `parent`, `working`, `cwd`, `current_turn`, `history_info`, and `code_stop_signal` are never read
[INFO] [stdout]    --> src/ga.rs:520:5
[INFO] [stdout]     |
[INFO] [stdout] 519 | pub struct GenericAgentHandler {
[INFO] [stdout]     |            ------------------- fields in this struct
[INFO] [stdout] 520 |     parent: Option<Arc<RwLock<dyn AnyHandler>>>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 521 |     working: HashMap<String, Value>,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 522 |     cwd: PathBuf,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 523 |     current_turn: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 524 |     history_info: Vec<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 525 |     code_stop_signal: Option<Arc<RwLock<bool>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ga.rs:529:12
[INFO] [stdout]     |
[INFO] [stdout] 528 | impl GenericAgentHandler {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout] 529 |     pub fn new(cwd: Option<&Path>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn with_parent(&mut self, parent: Arc<RwLock<dyn AnyHandler>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 546 |     pub fn set_stop_signal(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     fn get_abs_path(&self, path: &str) -> PathBuf {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 557 |     fn get_anchor_prompt(&self, skip: bool) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 600 |     fn fold_earlier(&self, lines: &[String]) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 635 |     fn in_plan_mode(&self) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 639 |     fn exit_plan_mode(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_any` is never used
[INFO] [stdout]    --> src/ga.rs:768:8
[INFO] [stdout]     |
[INFO] [stdout] 767 | pub trait AnyHandler: Send + Sync {
[INFO] [stdout]     |           ---------- method in this trait
[INFO] [stdout] 768 |     fn as_any(&self) -> &(dyn Send + Sync + std::any::Any);
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client`, `config`, and `message_id_counter` are never read
[INFO] [stdout]   --> src/llmcore.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct BaseSession {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 14 |     client: Client,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     config: LLMConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 16 |     message_id_counter: AtomicU64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `next_msg_id`, `stream_with_retry`, `parse_openai_sse`, `parse_claude_sse`, and `openai_tools_to_claude` are never used
[INFO] [stdout]    --> src/llmcore.rs:37:8
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl BaseSession {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  37 |     fn next_msg_id(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     async fn stream_with_retry(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn parse_openai_sse(data_prefix: &str, raw: &str) -> Vec<AgentEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn parse_claude_sse(data_prefix: &str, raw: &str) -> Vec<AgentEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn openai_tools_to_claude(tools: &Value) -> Value {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base`, `model`, and `max_tokens` are never read
[INFO] [stdout]    --> src/llmcore.rs:265:5
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub struct NativeClaudeSession {
[INFO] [stdout]     |            ------------------- fields in this struct
[INFO] [stdout] 265 |     base: BaseSession,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 266 |     model: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 267 |     max_tokens: u32,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `stream_inner` and `msg_to_claude` are never used
[INFO] [stdout]    --> src/llmcore.rs:281:14
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl NativeClaudeSession {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 281 |     async fn stream_inner(&self, messages: Vec<LLMMessage>, tools: Option<Value>, system: Option<String>) -> anyhow::Result<Vec<Age...
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     fn msg_to_claude(&self, msg: &LLMMessage) -> Value {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base`, `model`, and `max_tokens` are never read
[INFO] [stdout]    --> src/llmcore.rs:359:5
[INFO] [stdout]     |
[INFO] [stdout] 358 | pub struct NativeOAISession {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 359 |     base: BaseSession,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 360 |     model: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 361 |     max_tokens: u32,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stream_inner` is never used
[INFO] [stdout]    --> src/llmcore.rs:375:14
[INFO] [stdout]     |
[INFO] [stdout] 364 | impl NativeOAISession {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 375 |     async fn stream_inner(&self, messages: Vec<LLMMessage>, tools: Option<Value>, system: Option<String>) -> anyhow::Result<Vec<Age...
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MixinSession` is never constructed
[INFO] [stdout]    --> src/llmcore.rs:450:12
[INFO] [stdout]     |
[INFO] [stdout] 450 | pub struct MixinSession {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/llmcore.rs:456:12
[INFO] [stdout]     |
[INFO] [stdout] 455 | impl MixinSession {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 456 |     pub fn new(sessions: Vec<Arc<dyn LLMSession>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HistoryManager` is never constructed
[INFO] [stdout]    --> src/llmcore.rs:509:12
[INFO] [stdout]     |
[INFO] [stdout] 509 | pub struct HistoryManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `compress_history_tags`, `trim_messages_history`, and `merge_same_role` are never used
[INFO] [stdout]    --> src/llmcore.rs:515:12
[INFO] [stdout]     |
[INFO] [stdout] 514 | impl HistoryManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 515 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 523 |     pub fn compress_history_tags(messages: &[LLMMessage]) -> Vec<LLMMessage> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 545 |     pub fn trim_messages_history(&self, messages: &[LLMMessage], available_tokens: usize) -> Vec<LLMMessage> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     pub fn merge_same_role(messages: &[LLMMessage]) -> Vec<LLMMessage> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_call_summary` is never used
[INFO] [stdout]    --> src/llmcore.rs:594:4
[INFO] [stdout]     |
[INFO] [stdout] 594 | fn format_call_summary(name: &str, input: &Value) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `estimate_message_len` is never used
[INFO] [stdout]    --> src/llmcore.rs:603:4
[INFO] [stdout]     |
[INFO] [stdout] 603 | fn estimate_message_len(msg: &LLMMessage) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AgentEvent` is never used
[INFO] [stdout]  --> src/types.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum AgentEvent {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ToolResultContent` is never used
[INFO] [stdout]   --> src/types.rs:36:10
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum ToolResultContent {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ContentBlock` is never used
[INFO] [stdout]   --> src/types.rs:44:10
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub enum ContentBlock {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LLMMessage` is never constructed
[INFO] [stdout]   --> src/types.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct LLMMessage {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StepOutcome` is never constructed
[INFO] [stdout]   --> src/types.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct StepOutcome {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `text`, `tool_result`, and `exit` are never used
[INFO] [stdout]   --> src/types.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl StepOutcome {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout] 78 |     pub fn text(text: String) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn tool_result(tool_use_id: String, content: ToolResultContent) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn exit(next_prompt: Option<String>) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `tools_schema`, `handle`, `name`, `on_turn_end`, and `get_working` are never used
[INFO] [stdout]    --> src/types.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub trait BaseHandler: Send + Sync {
[INFO] [stdout]     |           ----------- methods in this trait
[INFO] [stdout] 105 |     /// Get the tools schema
[INFO] [stdout] 106 |     fn tools_schema(&self) -> serde_json::Value;
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     fn handle(&self, name: &str, input: serde_json::Value) -> anyhow::Result<ToolCallResult>;
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     fn name(&self) -> &str;
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     fn on_turn_end(&self, _turn: usize, _history: &[LLMMessage]) -> anyhow::Result<Option<String>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     fn get_working(&self) -> &HashMap<String, serde_json::Value>;
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ToolCallResult` is never constructed
[INFO] [stdout]    --> src/types.rs:125:12
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub struct ToolCallResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `text` and `error` are never used
[INFO] [stdout]    --> src/types.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl ToolCallResult {
[INFO] [stdout]     | ------------------- associated functions in this implementation
[INFO] [stdout] 131 |     pub fn text(text: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn error(text: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SSEEventType` is never used
[INFO] [stdout]    --> src/types.rs:148:10
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub enum SSEEventType {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SSEEvent` is never constructed
[INFO] [stdout]    --> src/types.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub struct SSEEvent {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `proxy`, `thinking_budget_tokens`, and `extra` are never read
[INFO] [stdout]    --> src/types.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct LLMConfig {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] 170 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub proxy: Option<String>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub thinking_budget_tokens: Option<u32>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 181 |     #[serde(default)]
[INFO] [stdout] 182 |     pub extra: HashMap<String, serde_json::Value>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `LLMConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `default` is never read
[INFO] [stdout]    --> src/types.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub struct MyKeyConfig {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] 188 |     pub default: String,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MyKeyConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppConfig` is never constructed
[INFO] [stdout]    --> src/types.rs:195:12
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub struct AppConfig {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_max_turns` is never used
[INFO] [stdout]    --> src/types.rs:210:8
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn default_max_turns() -> usize { 40 }
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_max_output_tokens` is never used
[INFO] [stdout]    --> src/types.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub fn default_max_output_tokens() -> u32 { 8192 }
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stream` is never used
[INFO] [stdout]    --> src/types.rs:216:14
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub trait LLMSession: Send + Sync {
[INFO] [stdout]     |           ---------- method in this trait
[INFO] [stdout] 216 |     async fn stream(
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AgentRunner` is never constructed
[INFO] [stdout]  --> src/agent_loop.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct AgentRunner {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `run`, and `check_danger_warning` are never used
[INFO] [stdout]    --> src/agent_loop.rs:13:12
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl AgentRunner {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  13 |     pub fn new(max_turns: usize, verbose: bool, yield_info: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub async fn run<H: BaseHandler + 'static>(
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     fn check_danger_warning(&self, turn: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_agent_runner` is never used
[INFO] [stdout]    --> src/agent_loop.rs:198:8
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub fn create_agent_runner() -> AgentRunner {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GA_LANG` is never used
[INFO] [stdout]   --> src/agentmain.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | static GA_LANG: once_cell::sync::Lazy<String> =
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_lang_suffix` is never used
[INFO] [stdout]   --> src/agentmain.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn get_lang_suffix() -> &'static str {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/agentmain.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct GenericAgent {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 30 |     lock: parking_lot::Mutex<()>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 31 |     task_queue: mpsc::Sender<Task>,
[INFO] [stdout] 32 |     history: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 33 |     handler: Option<parking_lot::Mutex<GenericAgentHandler>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 34 |     is_running: AtomicBool,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 35 |     stop_sig: AtomicBool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     inc_out: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 41 |     task_dir: parking_lot::Mutex<Option<PathBuf>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 42 |     log_path: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `abort` and `run` are never used
[INFO] [stdout]    --> src/agentmain.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl GenericAgent {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn abort(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn run(&self) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `query`, `source`, and `output` are never read
[INFO] [stdout]    --> src/agentmain.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub struct Task {
[INFO] [stdout]     |            ---- fields in this struct
[INFO] [stdout] 150 |     pub query: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 151 |     pub source: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 152 |     pub output: mpsc::Sender<TaskOutput>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `turn` and `source` are never read
[INFO] [stdout]    --> src/agentmain.rs:158:9
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub struct TaskOutput {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub turn: usize,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 159 |     pub source: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `smart_format_output` is never used
[INFO] [stdout]    --> src/agentmain.rs:267:4
[INFO] [stdout]     |
[INFO] [stdout] 267 | fn smart_format_output(data: &str, max_str_len: usize) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `consume_file` is never used
[INFO] [stdout]    --> src/agentmain.rs:280:4
[INFO] [stdout]     |
[INFO] [stdout] 280 | fn consume_file(dir: &Path, filename: &str) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `READ_DIRS` is never used
[INFO] [stdout]   --> src/ga.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | static READ_DIRS: Lazy<RwLock<HashSet<String>>> = Lazy::new(|| RwLock::new(HashSet::new()));
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `smart_format` is never used
[INFO] [stdout]   --> src/ga.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn smart_format(data: &str, max_str_len: usize, omit_str: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_error` is never used
[INFO] [stdout]   --> src/ga.rs:36:4
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn format_error(e: &dyn std::error::Error) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `expand_file_refs` is never used
[INFO] [stdout]   --> src/ga.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn expand_file_refs(text: &str, base_dir: Option<&Path>) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CodeRunResult` is never constructed
[INFO] [stdout]   --> src/ga.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct CodeRunResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `code_run` is never used
[INFO] [stdout]   --> src/ga.rs:93:14
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub async fn code_run(
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_patch` is never used
[INFO] [stdout]    --> src/ga.rs:286:8
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub fn file_patch(path: &Path, old_content: &str, new_content: &str) -> Result<Value, String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_read` is never used
[INFO] [stdout]    --> src/ga.rs:318:8
[INFO] [stdout]     |
[INFO] [stdout] 318 | pub fn file_read(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_file_lines` is never used
[INFO] [stdout]    --> src/ga.rs:377:4
[INFO] [stdout]     |
[INFO] [stdout] 377 | fn format_file_lines(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_write` is never used
[INFO] [stdout]    --> src/ga.rs:435:8
[INFO] [stdout]     |
[INFO] [stdout] 435 | pub fn file_write(path: &Path, content: &str, mode: &str) -> Result<Value, String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebScanResult` is never constructed
[INFO] [stdout]    --> src/ga.rs:480:12
[INFO] [stdout]     |
[INFO] [stdout] 480 | pub struct WebScanResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TabInfo` is never constructed
[INFO] [stdout]    --> src/ga.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 | pub struct TabInfo {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_html_content` is never used
[INFO] [stdout]    --> src/ga.rs:493:8
[INFO] [stdout]     |
[INFO] [stdout] 493 | pub fn extract_html_content(html: &str, max_chars: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `parent`, `working`, `cwd`, `current_turn`, `history_info`, and `code_stop_signal` are never read
[INFO] [stdout]    --> src/ga.rs:520:5
[INFO] [stdout]     |
[INFO] [stdout] 519 | pub struct GenericAgentHandler {
[INFO] [stdout]     |            ------------------- fields in this struct
[INFO] [stdout] 520 |     parent: Option<Arc<RwLock<dyn AnyHandler>>>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 521 |     working: HashMap<String, Value>,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 522 |     cwd: PathBuf,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 523 |     current_turn: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 524 |     history_info: Vec<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 525 |     code_stop_signal: Option<Arc<RwLock<bool>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ga.rs:529:12
[INFO] [stdout]     |
[INFO] [stdout] 528 | impl GenericAgentHandler {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout] 529 |     pub fn new(cwd: Option<&Path>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn with_parent(&mut self, parent: Arc<RwLock<dyn AnyHandler>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 546 |     pub fn set_stop_signal(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     fn get_abs_path(&self, path: &str) -> PathBuf {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 557 |     fn get_anchor_prompt(&self, skip: bool) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 600 |     fn fold_earlier(&self, lines: &[String]) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 635 |     fn in_plan_mode(&self) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 639 |     fn exit_plan_mode(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_any` is never used
[INFO] [stdout]    --> src/ga.rs:768:8
[INFO] [stdout]     |
[INFO] [stdout] 767 | pub trait AnyHandler: Send + Sync {
[INFO] [stdout]     |           ---------- method in this trait
[INFO] [stdout] 768 |     fn as_any(&self) -> &(dyn Send + Sync + std::any::Any);
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client`, `config`, and `message_id_counter` are never read
[INFO] [stdout]   --> src/llmcore.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct BaseSession {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 14 |     client: Client,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     config: LLMConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 16 |     message_id_counter: AtomicU64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `next_msg_id`, `stream_with_retry`, `parse_claude_sse`, and `openai_tools_to_claude` are never used
[INFO] [stdout]    --> src/llmcore.rs:37:8
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl BaseSession {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  37 |     fn next_msg_id(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     async fn stream_with_retry(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn parse_claude_sse(data_prefix: &str, raw: &str) -> Vec<AgentEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn openai_tools_to_claude(tools: &Value) -> Value {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base`, `model`, and `max_tokens` are never read
[INFO] [stdout]    --> src/llmcore.rs:265:5
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub struct NativeClaudeSession {
[INFO] [stdout]     |            ------------------- fields in this struct
[INFO] [stdout] 265 |     base: BaseSession,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 266 |     model: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 267 |     max_tokens: u32,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `stream_inner` and `msg_to_claude` are never used
[INFO] [stdout]    --> src/llmcore.rs:281:14
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl NativeClaudeSession {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 281 |     async fn stream_inner(&self, messages: Vec<LLMMessage>, tools: Option<Value>, system: Option<String>) -> anyhow::Result<Vec<Age...
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     fn msg_to_claude(&self, msg: &LLMMessage) -> Value {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base`, `model`, and `max_tokens` are never read
[INFO] [stdout]    --> src/llmcore.rs:359:5
[INFO] [stdout]     |
[INFO] [stdout] 358 | pub struct NativeOAISession {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 359 |     base: BaseSession,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 360 |     model: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 361 |     max_tokens: u32,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stream_inner` is never used
[INFO] [stdout]    --> src/llmcore.rs:375:14
[INFO] [stdout]     |
[INFO] [stdout] 364 | impl NativeOAISession {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 375 |     async fn stream_inner(&self, messages: Vec<LLMMessage>, tools: Option<Value>, system: Option<String>) -> anyhow::Result<Vec<Age...
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MixinSession` is never constructed
[INFO] [stdout]    --> src/llmcore.rs:450:12
[INFO] [stdout]     |
[INFO] [stdout] 450 | pub struct MixinSession {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/llmcore.rs:456:12
[INFO] [stdout]     |
[INFO] [stdout] 455 | impl MixinSession {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 456 |     pub fn new(sessions: Vec<Arc<dyn LLMSession>>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_messages` and `max_tokens` are never read
[INFO] [stdout]    --> src/llmcore.rs:510:5
[INFO] [stdout]     |
[INFO] [stdout] 509 | pub struct HistoryManager {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] 510 |     max_messages: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 511 |     max_tokens: usize,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `trim_messages_history`, and `merge_same_role` are never used
[INFO] [stdout]    --> src/llmcore.rs:515:12
[INFO] [stdout]     |
[INFO] [stdout] 514 | impl HistoryManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 515 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 545 |     pub fn trim_messages_history(&self, messages: &[LLMMessage], available_tokens: usize) -> Vec<LLMMessage> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     pub fn merge_same_role(messages: &[LLMMessage]) -> Vec<LLMMessage> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `estimate_message_len` is never used
[INFO] [stdout]    --> src/llmcore.rs:603:4
[INFO] [stdout]     |
[INFO] [stdout] 603 | fn estimate_message_len(msg: &LLMMessage) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StepOutcome` is never constructed
[INFO] [stdout]   --> src/types.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct StepOutcome {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `text`, `tool_result`, and `exit` are never used
[INFO] [stdout]   --> src/types.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl StepOutcome {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout] 78 |     pub fn text(text: String) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn tool_result(tool_use_id: String, content: ToolResultContent) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn exit(next_prompt: Option<String>) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `tools_schema`, `handle`, `name`, `on_turn_end`, and `get_working` are never used
[INFO] [stdout]    --> src/types.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub trait BaseHandler: Send + Sync {
[INFO] [stdout]     |           ----------- methods in this trait
[INFO] [stdout] 105 |     /// Get the tools schema
[INFO] [stdout] 106 |     fn tools_schema(&self) -> serde_json::Value;
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     fn handle(&self, name: &str, input: serde_json::Value) -> anyhow::Result<ToolCallResult>;
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     fn name(&self) -> &str;
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     fn on_turn_end(&self, _turn: usize, _history: &[LLMMessage]) -> anyhow::Result<Option<String>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     fn get_working(&self) -> &HashMap<String, serde_json::Value>;
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ToolCallResult` is never constructed
[INFO] [stdout]    --> src/types.rs:125:12
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub struct ToolCallResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `text` and `error` are never used
[INFO] [stdout]    --> src/types.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl ToolCallResult {
[INFO] [stdout]     | ------------------- associated functions in this implementation
[INFO] [stdout] 131 |     pub fn text(text: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn error(text: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SSEEventType` is never used
[INFO] [stdout]    --> src/types.rs:148:10
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub enum SSEEventType {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SSEEvent` is never constructed
[INFO] [stdout]    --> src/types.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub struct SSEEvent {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `proxy`, `thinking_budget_tokens`, and `extra` are never read
[INFO] [stdout]    --> src/types.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct LLMConfig {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] 170 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub proxy: Option<String>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub thinking_budget_tokens: Option<u32>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 181 |     #[serde(default)]
[INFO] [stdout] 182 |     pub extra: HashMap<String, serde_json::Value>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `LLMConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `default` is never read
[INFO] [stdout]    --> src/types.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub struct MyKeyConfig {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] 188 |     pub default: String,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MyKeyConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppConfig` is never constructed
[INFO] [stdout]    --> src/types.rs:195:12
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub struct AppConfig {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_max_turns` is never used
[INFO] [stdout]    --> src/types.rs:210:8
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn default_max_turns() -> usize { 40 }
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_max_output_tokens` is never used
[INFO] [stdout]    --> src/types.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub fn default_max_output_tokens() -> u32 { 8192 }
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stream` is never used
[INFO] [stdout]    --> src/types.rs:216:14
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub trait LLMSession: Send + Sync {
[INFO] [stdout]     |           ---------- method in this trait
[INFO] [stdout] 216 |     async fn stream(
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 36.95s
[INFO] running `Command { std: "docker" "inspect" "37ec08c9a811ffb1e3f5f0ae2d62036ecfa77be0e301e18d03f3a8cd1d147ddd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "37ec08c9a811ffb1e3f5f0ae2d62036ecfa77be0e301e18d03f3a8cd1d147ddd", kill_on_drop: false }`
[INFO] [stdout] 37ec08c9a811ffb1e3f5f0ae2d62036ecfa77be0e301e18d03f3a8cd1d147ddd
