[INFO] cloning repository https://github.com/sunO2/scrs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sunO2/scrs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FsunO2%2Fscrs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FsunO2%2Fscrs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 93d02e05dac6d3a08bd7314e862ad8c05ec075f0
[INFO] testing sunO2/scrs against master#2fd6efc32704647e64d3d646d21c4c68eae100e4 for pr-149852-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FsunO2%2Fscrs" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/sunO2/scrs
[INFO] finished tweaking git repo https://github.com/sunO2/scrs
[INFO] tweaked toml for git repo https://github.com/sunO2/scrs written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/sunO2/scrs on toolchain 2fd6efc32704647e64d3d646d21c4c68eae100e4
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/sunO2/scrs 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" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serde_spanned v1.0.4
[INFO] [stderr]   Downloaded engineioxide v0.17.2
[INFO] [stderr]   Downloaded unty v0.0.4
[INFO] [stderr]   Downloaded pem v3.0.6
[INFO] [stderr]   Downloaded toml v0.9.10+spec-1.1.0
[INFO] [stderr]   Downloaded adb_client v3.0.0
[INFO] [stderr]   Downloaded rsa v0.9.9
[INFO] [stderr]   Downloaded socketioxide-core v0.17.0
[INFO] [stderr]   Downloaded toml_writer v1.0.6+spec-1.1.0
[INFO] [stderr]   Downloaded tokio-tungstenite v0.28.0
[INFO] [stderr]   Downloaded virtue v0.0.18
[INFO] [stderr]   Downloaded rust-embed v8.9.0
[INFO] [stderr]   Downloaded engineioxide-core v0.2.0
[INFO] [stderr]   Downloaded rcgen v0.14.6
[INFO] [stderr]   Downloaded socketioxide v0.18.0
[INFO] [stderr]   Downloaded num-bigint-dig v0.8.6
[INFO] [stderr]   Downloaded rust-embed-impl v8.9.0
[INFO] [stderr]   Downloaded tungstenite v0.28.0
[INFO] [stderr]   Downloaded bincode v2.0.1
[INFO] [stderr]   Downloaded x509-parser v0.18.0
[INFO] [stderr]   Downloaded bincode_derive v2.0.1
[INFO] [stderr]   Downloaded tracing-appender v0.2.4
[INFO] [stderr]   Downloaded socketioxide-parser-common v0.17.0
[INFO] [stderr]   Downloaded rust-embed-utils v8.9.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] fa421ba589ac9a9dcaee5a6c63a420e9be9d325bb631f8319db0e394d9297e4d
[INFO] running `Command { std: "docker" "start" "-a" "fa421ba589ac9a9dcaee5a6c63a420e9be9d325bb631f8319db0e394d9297e4d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fa421ba589ac9a9dcaee5a6c63a420e9be9d325bb631f8319db0e394d9297e4d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fa421ba589ac9a9dcaee5a6c63a420e9be9d325bb631f8319db0e394d9297e4d", kill_on_drop: false }`
[INFO] [stdout] fa421ba589ac9a9dcaee5a6c63a420e9be9d325bb631f8319db0e394d9297e4d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 04d029a80c1d6acd048e8b29a81c9b53621b035b502295a0de4aca1101702247
[INFO] running `Command { std: "docker" "start" "-a" "04d029a80c1d6acd048e8b29a81c9b53621b035b502295a0de4aca1101702247", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.104
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling find-msvc-tools v0.1.6
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling aws-lc-rs v1.15.2
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling rustls-pki-types v1.13.2
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling zmij v1.0.7
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling serde_json v1.0.148
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling rustls v0.23.35
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling base64ct v1.8.1
[INFO] [stderr]    Compiling as-slice v0.2.1
[INFO] [stderr]    Compiling av-scenechange v0.14.1
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling built v0.8.0
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling aligned v0.4.3
[INFO] [stderr]    Compiling nom v8.0.0
[INFO] [stderr]    Compiling core2 v0.4.0
[INFO] [stderr]    Compiling num-conv v0.1.0
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling pem-rfc7468 v0.7.0
[INFO] [stderr]    Compiling deranged v0.5.5
[INFO] [stderr]    Compiling y4m v0.8.0
[INFO] [stderr]    Compiling pastey v0.1.1
[INFO] [stderr]    Compiling time-core v0.1.6
[INFO] [stderr]    Compiling bitstream-io v4.9.0
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]    Compiling flate2 v1.1.5
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling syn v2.0.112
[INFO] [stderr]    Compiling rav1e v0.8.1
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]    Compiling imgref v1.12.0
[INFO] [stderr]    Compiling data-encoding v2.9.0
[INFO] [stderr]    Compiling weezl v0.1.12
[INFO] [stderr]    Compiling num-bigint-dig v0.8.6
[INFO] [stderr]    Compiling loop9 v0.1.5
[INFO] [stderr]    Compiling zune-jpeg v0.4.21
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling cc v1.2.51
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling time v0.3.44
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]    Compiling zune-inflate v0.2.54
[INFO] [stderr]    Compiling avif-serialize v0.8.6
[INFO] [stderr]    Compiling bytemuck v1.24.0
[INFO] [stderr]    Compiling pkcs8 v0.10.2
[INFO] [stderr]    Compiling zune-core v0.5.0
[INFO] [stderr]    Compiling rgb v0.8.52
[INFO] [stderr]    Compiling lebe v0.5.3
[INFO] [stderr]    Compiling bit_field v0.10.3
[INFO] [stderr]    Compiling virtue v0.0.18
[INFO] [stderr]    Compiling rustls-native-certs v0.8.3
[INFO] [stderr]    Compiling cmake v0.1.57
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling pxfm v0.1.27
[INFO] [stderr]    Compiling qoi v0.4.1
[INFO] [stderr]    Compiling zune-jpeg v0.5.8
[INFO] [stderr]    Compiling pkcs1 v0.7.5
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling maybe-rayon v0.1.1
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling image-webp v0.2.4
[INFO] [stderr]    Compiling gif v0.14.1
[INFO] [stderr]    Compiling png v0.18.0
[INFO] [stderr]    Compiling rust-embed-utils v8.9.0
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling bincode_derive v2.0.1
[INFO] [stderr]    Compiling pem v3.0.6
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling aws-lc-sys v0.35.0
[INFO] [stderr]    Compiling yasna v0.5.2
[INFO] [stderr]    Compiling unty v0.0.4
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling quick-protobuf v0.8.1
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.0.4
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling toml_writer v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling uuid v1.19.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerocopy-derive v0.8.31
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling profiling-procmacros v1.0.17
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling equator v0.4.2
[INFO] [stderr]    Compiling fax_derive v0.2.0
[INFO] [stderr]    Compiling profiling v1.0.17
[INFO] [stderr]    Compiling aligned-vec v0.6.4
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling v_frame v0.3.9
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling fax v0.2.6
[INFO] [stderr]    Compiling moxcms v0.7.11
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling toml_parser v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling av1-grain v0.2.5
[INFO] [stderr]    Compiling rust-embed-impl v8.9.0
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling toml v0.9.10+spec-1.1.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling rust-embed v8.9.0
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling bytes v1.11.0
[INFO] [stderr]    Compiling bincode v2.0.1
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling tiff v0.10.3
[INFO] [stderr]    Compiling exr v1.74.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling tracing-appender v0.2.4
[INFO] [stderr]    Compiling engineioxide-core v0.2.0
[INFO] [stderr]    Compiling tungstenite v0.28.0
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling socketioxide-core v0.17.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling socketioxide-parser-common v0.17.0
[INFO] [stderr]    Compiling rsa v0.9.9
[INFO] [stderr]    Compiling ravif v0.12.0
[INFO] [stderr]    Compiling image v0.25.9
[INFO] [stderr]    Compiling tokio-util v0.7.17
[INFO] [stderr]    Compiling tower v0.5.2
[INFO] [stderr]    Compiling tokio-tungstenite v0.28.0
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.19
[INFO] [stderr]    Compiling engineioxide v0.17.2
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling socketioxide v0.18.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.8
[INFO] [stderr]    Compiling rcgen v0.14.6
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling rustls-platform-verifier v0.6.2
[INFO] [stderr]    Compiling adb_client v3.0.0
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling reqwest v0.13.1
[INFO] [stderr]    Compiling scrcpy-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/context/mod.rs:3:19
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use context::{Context, IContext};
[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: `debug`
[INFO] [stdout]  --> src/agent/core/agent_group.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{debug, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ModelClient`
[INFO] [stdout]  --> src/agent/core/agent_group.rs:5:49
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::agent::core::traits::{Agent, Device, ModelClient};
[INFO] [stdout]   |                                                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> src/agent/llm/client.rs:4:29
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{debug, error, info};
[INFO] [stdout]   |                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/agent/llm/parser.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tracing::{debug, warn};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/agent/llm/autoglm_client.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `client::*`
[INFO] [stdout]  --> src/agent/llm/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use client::*;
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parser::*`
[INFO] [stdout]   --> src/agent/llm/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use parser::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `autoglm_client::*`
[INFO] [stdout]   --> src/agent/llm/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use autoglm_client::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prompts::*`
[INFO] [stdout]   --> src/agent/llm/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use prompts::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/agent/executor/device_wrapper.rs:8:28
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{debug, info, error, warn};
[INFO] [stdout]   |                            ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]    --> src/agent/executor/device_wrapper.rs:579:36
[INFO] [stdout]     |
[INFO] [stdout] 579 |         use tracing::{info, debug, warn, error};
[INFO] [stdout]     |                                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::agent::core::traits::ParsedAction`
[INFO] [stdout]  --> src/agent/executor/handler.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::agent::core::traits::ParsedAction;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/agent/executor/handler.rs:6:34
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{debug, info, warn, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `retry::*`
[INFO] [stdout]  --> src/agent/executor/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use retry::*;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `socketio::*`
[INFO] [stdout]  --> src/agent/api/mod.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use socketio::*;
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `adb_client::server_device::ADBServerDevice`
[INFO] [stdout]   --> src/agent/pool/device_pool.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use adb_client::server_device::ADBServerDevice;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `device_entry::DeviceEntry`
[INFO] [stdout]   --> src/agent/pool/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use device_entry::DeviceEntry;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DevicePoolError`
[INFO] [stdout]   --> src/agent/pool/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     DevicePoolError,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/agent/logger.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Action`, `AgentError`, `AgentGroupConfig`, `AgentGroupEvent`, `AgentGroup`, `AgentRuntime`, `AgentState`, `Agent`, `Device`, `ModelClient`, and `agent::PhoneAgent`
[INFO] [stdout]   --> src/agent/mod.rs:18:14
[INFO] [stdout]    |
[INFO] [stdout] 18 |     traits::{Device, Action, Agent, ModelClient, AgentError},
[INFO] [stdout]    |              ^^^^^^  ^^^^^^  ^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 19 |     state::{AgentConfig, AgentState, AgentRuntime},
[INFO] [stdout]    |                          ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 20 |     agent::PhoneAgent,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     agent_group::{AgentGroup, AgentGroupConfig, AgentGroupEvent},
[INFO] [stdout]    |                   ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ActionEnum`, `BackAction`, `DoubleTapAction`, `FinishAction`, `HomeAction`, `LaunchAction`, `LongPressAction`, `NotificationAction`, `PressKeyAction`, `RecentAction`, `ScreenshotAction`, `ScrollAction`, `SwipeAction`, `TapAction`, `TypeAction`, and `WaitAction`
[INFO] [stdout]   --> src/agent/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     ActionEnum, TapAction, LongPressAction, DoubleTapAction, SwipeAction, ScrollAction,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 26 |     TypeAction, PressKeyAction, BackAction, HomeAction, RecentAction, NotificationAction,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 27 |     LaunchAction, WaitAction, ScreenshotAction, FinishAction,
[INFO] [stdout]    |     ^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `create_model_client`
[INFO] [stdout]   --> src/agent/mod.rs:29:28
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use llm::{ModelConfig, create_model_client};
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ActionHandler` and `ScrcpyDeviceWrapper`
[INFO] [stdout]   --> src/agent/mod.rs:30:20
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use executor::{ScrcpyDeviceWrapper, ActionHandler};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConversationContext` and `ShortTermMemory`
[INFO] [stdout]   --> src/agent/mod.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use context::{ConversationContext, ShortTermMemory};
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FullAgentConfig`
[INFO] [stdout]   --> src/agent/mod.rs:32:18
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub use config::{FullAgentConfig};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DevicePoolEvent` and `DeviceStatus`
[INFO] [stdout]   --> src/agent/mod.rs:33:46
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub use pool::{DevicePool, DevicePoolConfig, DevicePoolEvent, DeviceStatus};
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `screenshot_duration`
[INFO] [stdout]    --> src/agent/core/agent.rs:182:17
[INFO] [stdout]     |
[INFO] [stdout] 182 |             let screenshot_duration = screenshot_start.elapsed();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_screenshot_duration`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `messages_for_log`
[INFO] [stdout]    --> src/agent/core/agent.rs:189:17
[INFO] [stdout]     |
[INFO] [stdout] 189 |             let messages_for_log = current_messages.clone();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_messages_for_log`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query_duration`
[INFO] [stdout]    --> src/agent/core/agent.rs:205:17
[INFO] [stdout]     |
[INFO] [stdout] 205 |             let query_duration = query_start.elapsed();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_query_duration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `finish_action`
[INFO] [stdout]    --> src/agent/core/agent.rs:228:25
[INFO] [stdout]     |
[INFO] [stdout] 228 |             if let Some(finish_action) = parsed_actions.iter().find(|a| a.action_type() == "finish") {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_finish_action`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `distance_y`
[INFO] [stdout]    --> src/agent/actions/swipe.rs:117:13
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let distance_y = (height * self.distance_pct / 100) as u32;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distance_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `distance_x`
[INFO] [stdout]    --> src/agent/actions/swipe.rs:118:13
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let distance_x = (width * self.distance_pct / 100) as u32;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distance_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device`
[INFO] [stdout]    --> src/agent/actions/system.rs:228:29
[INFO] [stdout]     |
[INFO] [stdout] 228 |     async fn execute(&self, device: &dyn Device) -> Result<ActionResult, AppError> {
[INFO] [stdout]     |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task`
[INFO] [stdout]    --> src/agent/core/agent.rs:432:21
[INFO] [stdout]     |
[INFO] [stdout] 432 |                 let task = self.runtime.current_task.read().await.clone().unwrap_or_default();
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `thinking`
[INFO] [stdout]    --> src/agent/llm/autoglm_client.rs:562:14
[INFO] [stdout]     |
[INFO] [stdout] 562 |         let (thinking, parsed_actions) = self.parse_response(&content);
[INFO] [stdout]     |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thinking`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step_number`
[INFO] [stdout]   --> src/agent/logger.rs:92:35
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn save_screenshot(&self, step_number: usize, screenshot_base64: &str) -> Result<String, std::io::Error> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_step_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_agent_group` and `get_device_pool` are never used
[INFO] [stdout]   --> src/context/context.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub trait IContext: Send + Sync {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 54 |     fn get_agent_group(&self) -> &RwLock<Option<Arc<AgentGroup>>>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     fn get_device_pool(&self) -> &RwLock<Option<Arc<DevicePool>>>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `agent_group` is never read
[INFO] [stdout]   --> src/context/context.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct Context {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     agent_group: RwLock<Option<Arc<AgentGroup>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_agent_group` is never used
[INFO] [stdout]   --> src/context/context.rs:78:18
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl Context {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub async fn set_agent_group(&self, group: Arc<AgentGroup>) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `serial`, `name`, `is_connected`, and `current_app` are never used
[INFO] [stdout]   --> src/agent/core/traits.rs:8:8
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait Device: Send + Sync {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout]  7 |     /// 获取设备序列号
[INFO] [stdout]  8 |     fn serial(&self) -> &str;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     async fn is_connected(&self) -> bool;
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     async fn current_app(&self) -> Result<String, AppError>;
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_reversible` and `estimated_duration` are never used
[INFO] [stdout]   --> src/agent/core/traits.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub trait Action: Send + Sync + std::fmt::Debug {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 81 |     fn is_reversible(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     fn estimated_duration(&self) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `InvalidText` is never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub enum ActionError {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 133 |     InvalidText(String),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ActionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:146:5
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum AgentError {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] 145 |     #[error("Agent 未找到: {0}")]
[INFO] [stdout] 146 |     NotFound(String),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     TimeoutError(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     NotRunning,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     MaxStepsExceeded(usize),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     ExecutionTimeout(u64),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     TaskFailed(String),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     InvalidStateTransition(String, String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     RecoveryFailed(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AgentError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `pause`, `resume`, `status`, `history`, and `feedback` are never used
[INFO] [stdout]    --> src/agent/core/traits.rs:192:14
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub trait Agent: Send + Sync {
[INFO] [stdout]     |           ----- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 192 |     async fn pause(&self) -> Result<(), AppError>;
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     async fn resume(&self) -> Result<(), AppError>;
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     async fn status(&self) -> AgentStatus;
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     async fn history(&self) -> Vec<ExecutionStep>;
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     async fn feedback(&self, feedback: AgentFeedback) -> Result<(), AppError>;
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AgentStatus` is never used
[INFO] [stdout]    --> src/agent/core/traits.rs:209:10
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub enum AgentStatus {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AgentFeedback` is never used
[INFO] [stdout]    --> src/agent/core/traits.rs:235:10
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub enum AgentFeedback {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `info` is never used
[INFO] [stdout]    --> src/agent/core/traits.rs:260:8
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub trait ModelClient: Send + Sync {
[INFO] [stdout]     |           ----------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 260 |     fn info(&self) -> ModelInfo;
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `confidence` and `tokens_used` are never read
[INFO] [stdout]    --> src/agent/core/traits.rs:284:9
[INFO] [stdout]     |
[INFO] [stdout] 281 | pub struct ModelResponse {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub confidence: f32,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 285 |     pub reasoning: Option<String>,
[INFO] [stdout] 286 |     pub tokens_used: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ModelResponse` 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: variant `Timeout` is never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:316:5
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub enum ModelError {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 316 |     Timeout,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ModelError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ModelInfo` is never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:321:12
[INFO] [stdout]     |
[INFO] [stdout] 321 | pub struct ModelInfo {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `AgentCreated`, `AgentStarted`, `AgentCompleted`, `AgentFailed`, `AgentStopped`, and `Custom` are never constructed
[INFO] [stdout]   --> src/agent/core/agent_group.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum AgentGroupEvent {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] 16 |     /// Agent 创建
[INFO] [stdout] 17 |     AgentCreated { agent_id: String, device_serial: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     AgentStarted { agent_id: String, task: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     AgentCompleted { agent_id: String, result: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     AgentFailed { agent_id: String, error: String },
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     AgentStopped { agent_id: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     Custom { agent_id: String, event_type: String, data: String },
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AgentGroupEvent` 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: fields `max_concurrent_agents`, `task_queue_size`, and `enable_event_broadcast` are never read
[INFO] [stdout]   --> src/agent/core/agent_group.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct AgentGroupConfig {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 38 |     /// 最大并发 Agent 数量
[INFO] [stdout] 39 |     pub max_concurrent_agents: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub task_queue_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub enable_event_broadcast: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AgentGroupConfig` 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: fields `id`, `agents`, `devices`, `event_tx`, `config`, and `model_config` are never read
[INFO] [stdout]   --> src/agent/core/agent_group.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct AgentGroup {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 60 |     id: String,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 61 |     agents: RwLock<HashMap<String, Arc<PhoneAgent>>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 62 |     devices: RwLock<HashMap<String, Arc<dyn Device>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 63 |     event_tx: broadcast::Sender<AgentGroupEvent>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 64 |     config: AgentGroupConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 65 |     model_config: ModelConfig,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/agent/core/agent_group.rs:70:12
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl AgentGroup {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  69 |     /// 创建新的 Agent 组
[INFO] [stdout]  70 |     pub fn new(config: AgentGroupConfig, model_config: ModelConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn id(&self) -> &str {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub async fn register_device(&self, device: Arc<dyn Device>) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn unregister_device(&self, serial: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn get_devices(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub async fn create_agent(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub async fn get_agent(&self, agent_id: &str) -> Option<Arc<PhoneAgent>> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub async fn start_agent(&self, agent_id: &str, task: String) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub async fn stop_agent(&self, agent_id: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub async fn remove_agent(&self, agent_id: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub async fn list_agents(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub async fn active_agent_count(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub async fn broadcast_task(&self, task: String) -> Result<Vec<String>, AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn subscribe_events(&self) -> broadcast::Receiver<AgentGroupEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_json` is never used
[INFO] [stdout]    --> src/agent/actions/base.rs:501:12
[INFO] [stdout]     |
[INFO] [stdout] 499 | impl ActionEnum {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 500 |     /// 从 JSON 创建 ActionEnum
[INFO] [stdout] 501 |     pub fn from_json(action_type: &str, params: serde_json::Value) -> Result<Self, serde_json::Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_app_name` is never used
[INFO] [stdout]    --> src/agent/actions/system.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl LaunchAction {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 106 |     /// 从应用名称创建 LaunchAction
[INFO] [stdout] 107 |     pub fn from_app_name(app_name: &str) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_env`, `local`, and `azure` are never used
[INFO] [stdout]    --> src/agent/llm/types.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl ModelConfig {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] 157 |     /// 从环境变量加载配置
[INFO] [stdout] 158 |     pub fn from_env() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn local(base_url: String, model_name: String) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn azure(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_coordinates` is never used
[INFO] [stdout]    --> src/agent/llm/parser.rs:426:4
[INFO] [stdout]     |
[INFO] [stdout] 426 | fn extract_coordinates(text: &str) -> Option<(u32, u32)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_launch_app` is never used
[INFO] [stdout]    --> src/agent/llm/parser.rs:438:4
[INFO] [stdout]     |
[INFO] [stdout] 438 | fn extract_launch_app(text: &str) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_text_after` is never used
[INFO] [stdout]    --> src/agent/llm/parser.rs:462:4
[INFO] [stdout]     |
[INFO] [stdout] 462 | fn extract_text_after(text: &str, keywords: &[&str]) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_duration` is never used
[INFO] [stdout]    --> src/agent/llm/parser.rs:483:4
[INFO] [stdout]     |
[INFO] [stdout] 483 | fn extract_duration(text: &str) -> Option<u32> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_autoglm_client` is never used
[INFO] [stdout]   --> src/agent/llm/providers.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn create_autoglm_client(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StreamEvent` is never used
[INFO] [stdout]   --> src/agent/llm/autoglm_client.rs:20:6
[INFO] [stdout]    |
[INFO] [stdout] 20 | enum StreamEvent {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerformanceMetrics` is never constructed
[INFO] [stdout]   --> src/agent/llm/autoglm_client.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct PerformanceMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_stream_request` is never used
[INFO] [stdout]    --> src/agent/llm/autoglm_client.rs:117:14
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl AutoGLMClient {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 117 |     async fn send_stream_request(&self, request: ChatRequest) -> Result<String, ModelError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `scrcpy_connect`, and `adb_device` are never read
[INFO] [stdout]   --> src/agent/executor/device_wrapper.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ScrcpyDeviceWrapper {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 13 |     serial: String,
[INFO] [stdout] 14 |     name: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     scrcpy_connect: Arc<ScrcpyConnect>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 16 |     adb_device: Arc<ADBServerDevice>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `parse_screen_size` is never used
[INFO] [stdout]    --> src/agent/executor/device_wrapper.rs:141:8
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl ScrcpyDeviceWrapper {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 141 |     fn parse_screen_size(&self, output: &str) -> Result<(u32, u32), AppError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_max_retries`, `with_retry_delay`, `execute_parsed_action`, and `convert_action_params` are never used
[INFO] [stdout]    --> src/agent/executor/handler.rs:26:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl ActionHandler {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub fn with_max_retries(mut self, max_retries: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn with_retry_delay(mut self, delay_ms: u64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub async fn execute_parsed_action(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     fn convert_action_params(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_uninitialized` is never used
[INFO] [stdout]    --> src/agent/executor/handler.rs:354:8
[INFO] [stdout]     |
[INFO] [stdout] 352 | impl ActionHandler {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 353 |     /// 用于测试的构造函数（不需要 device）
[INFO] [stdout] 354 |     fn new_uninitialized() -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RetryStrategy` is never used
[INFO] [stdout]  --> src/agent/executor/retry.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum RetryStrategy {
[INFO] [stdout]   |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `next_delay`, `exponential`, and `fixed` are never used
[INFO] [stdout]   --> src/agent/executor/retry.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl RetryStrategy {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 35 |     /// 获取下一次重试的延迟时间
[INFO] [stdout] 36 |     pub fn next_delay(&self, attempt: u32) -> Option<Duration> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn exponential(initial_delay_ms: u64, max_delay_ms: u64, multiplier: f64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn fixed(delay_ms: u64) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RetryConfig` is never constructed
[INFO] [stdout]   --> src/agent/executor/retry.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct RetryConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_retryable_errors`, `is_retryable`, and `execute` are never used
[INFO] [stdout]    --> src/agent/executor/retry.rs:93:12
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl RetryConfig {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  92 |     /// 创建新的重试配置
[INFO] [stdout]  93 |     pub fn new(max_attempts: u32, strategy: RetryStrategy) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn with_retryable_errors(mut self, errors: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn is_retryable(&self, error_message: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub async fn execute<F, Fut, T, E>(&self, mut operation: F) -> Result<T, E>
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_messages`, `get_recent_messages`, `clear`, `len`, and `build_prompt` are never used
[INFO] [stdout]   --> src/agent/context/conversation.rs:63:18
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl ConversationContext {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub async fn get_messages(&self) -> Vec<ConversationMessage> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub async fn get_recent_messages(&self, n: usize) -> Vec<ConversationMessage> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub async fn clear(&self) {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub async fn len(&self) -> usize {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub async fn build_prompt(&self, task: &str) -> String {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_expired` is never used
[INFO] [stdout]   --> src/agent/context/memory.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl MemoryEntry {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 17 |     /// 检查是否过期
[INFO] [stdout] 18 |     pub fn is_expired(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `entries` and `default_ttl_seconds` are never read
[INFO] [stdout]   --> src/agent/context/memory.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct ShortTermMemory {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 29 |     entries: Arc<RwLock<HashMap<String, MemoryEntry>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 30 |     default_ttl_seconds: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/agent/context/memory.rs:43:18
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl ShortTermMemory {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub async fn set(&self, key: String, value: String) {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub async fn set_with_ttl(&self, key: String, value: String, ttl_seconds: u64) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn get(&self, key: &str) -> Option<String> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub async fn remove(&self, key: &str) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub async fn clear(&self) {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn cleanup_expired(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn get_all(&self) -> HashMap<String, String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FullAgentConfig` is never constructed
[INFO] [stdout]  --> src/agent/config/agent_config.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct FullAgentConfig {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_file`, `from_file_with_env`, `save_to_file`, `default_config`, and `with_local_model` are never used
[INFO] [stdout]   --> src/agent/config/agent_config.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl FullAgentConfig {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 24 |     /// 从 TOML 文件加载配置
[INFO] [stdout] 25 |     pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self, ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn from_file_with_env<P: AsRef<Path>>(path: P) -> Result<Self, ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn save_to_file<P: AsRef<Path>>(&self, path: P) -> Result<(), ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn default_config() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn with_local_model(base_url: String, model_name: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigError` is never used
[INFO] [stdout]   --> src/agent/config/agent_config.rs:78:10
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub enum ConfigError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `register_agent_handlers` is never used
[INFO] [stdout]  --> src/agent/api/socketio.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub async fn register_agent_handlers(socket: SocketRef, context: Arc<dyn IContext>) {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_agent_start_with_pool` is never used
[INFO] [stdout]   --> src/agent/api/socketio.rs:70:10
[INFO] [stdout]    |
[INFO] [stdout] 70 | async fn handle_agent_start_with_pool(request: AgentStartRequest, pool: Arc<crate::agent::pool::DevicePool>) -> Result<serde_json::V...
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_get_devices_with_pool` is never used
[INFO] [stdout]   --> src/agent/api/socketio.rs:79:10
[INFO] [stdout]    |
[INFO] [stdout] 79 | async fn handle_get_devices_with_pool(pool: Arc<crate::agent::pool::DevicePool>) -> Result<serde_json::Value, crate::error::AppError> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AgentStartRequest` is never constructed
[INFO] [stdout]   --> src/agent/api/socketio.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct AgentStartRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/agent/pool/device_pool.rs:65:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl DevicePool {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn subscribe_events(&self) -> broadcast::Receiver<DevicePoolEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub async fn unregister_device(&self, serial: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub async fn disconnect_device(&self, serial: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub async fn get_all_devices_status(&self) -> Vec<(String, DeviceStatus)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub async fn list_devices(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub async fn get_device_info(&self, serial: &str) -> Option<crate::agent::pool::types::DeviceInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub async fn cleanup_idle_devices(&self) -> Result<usize, AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     pub async fn health_check(&self) -> Result<HashMap<String, bool>, AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     pub async fn mark_task_completed(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 449 |     pub async fn mark_task_failed(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `created_at` is never read
[INFO] [stdout]   --> src/agent/pool/device_entry.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct DeviceEntry {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub created_at: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_idle`, `is_connected`, and `is_busy` are never used
[INFO] [stdout]   --> src/agent/pool/device_entry.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl DeviceEntry {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn is_idle(&self, threshold_seconds: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn is_connected(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn is_busy(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `serial` is never read
[INFO] [stdout]   --> src/agent/pool/types.rs:74:24
[INFO] [stdout]    |
[INFO] [stdout] 74 |     DeviceRegistered { serial: String },
[INFO] [stdout]    |     ----------------   ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` 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 `serial` is never read
[INFO] [stdout]   --> src/agent/pool/types.rs:77:23
[INFO] [stdout]    |
[INFO] [stdout] 77 |     DeviceConnected { serial: String },
[INFO] [stdout]    |     ---------------   ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` 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: fields `serial` and `agent_id` are never read
[INFO] [stdout]   --> src/agent/pool/types.rs:83:20
[INFO] [stdout]    |
[INFO] [stdout] 83 |     AgentCreated { serial: String, agent_id: String },
[INFO] [stdout]    |     ------------   ^^^^^^          ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` 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: fields `serial` and `agent_id` are never read
[INFO] [stdout]   --> src/agent/pool/types.rs:86:22
[INFO] [stdout]    |
[INFO] [stdout] 86 |     AgentDestroyed { serial: String, agent_id: String },
[INFO] [stdout]    |     --------------   ^^^^^^          ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` 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: fields `serial` and `task` are never read
[INFO] [stdout]   --> src/agent/pool/types.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |     TaskStarted { serial: String, task: String },
[INFO] [stdout]    |     -----------   ^^^^^^          ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` 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: variants `DeviceDisconnected`, `DeviceIdle`, `TaskCompleted`, `TaskFailed`, and `Error` are never constructed
[INFO] [stdout]    --> src/agent/pool/types.rs:80:5
[INFO] [stdout]     |
[INFO] [stdout]  72 | pub enum DevicePoolEvent {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  80 |     DeviceDisconnected { serial: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     DeviceIdle { serial: String, idle_seconds: u64 },
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     TaskCompleted { serial: String, result: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     TaskFailed { serial: String, error: String },
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     Error { serial: String, error: String },
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DevicePoolEvent` 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: enum `DevicePoolError` is never used
[INFO] [stdout]    --> src/agent/pool/types.rs:106:10
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub enum DevicePoolError {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `io` is never read
[INFO] [stdout]   --> src/agent/socket_server.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct AgentSocketServer {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 20 |     io: Arc<SocketIo>,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `io` and `port` are never used
[INFO] [stdout]   --> src/agent/socket_server.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl AgentSocketServer {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn io(&self) -> &Arc<SocketIo> {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn port(&self) -> u16 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 55.89s
[INFO] running `Command { std: "docker" "inspect" "04d029a80c1d6acd048e8b29a81c9b53621b035b502295a0de4aca1101702247", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "04d029a80c1d6acd048e8b29a81c9b53621b035b502295a0de4aca1101702247", kill_on_drop: false }`
[INFO] [stdout] 04d029a80c1d6acd048e8b29a81c9b53621b035b502295a0de4aca1101702247
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 931cd9948a9ff5251c47e4ca92fb4025dcbc53eca92a299a2e86e34873c7daa6
[INFO] running `Command { std: "docker" "start" "-a" "931cd9948a9ff5251c47e4ca92fb4025dcbc53eca92a299a2e86e34873c7daa6", kill_on_drop: false }`
[INFO] [stderr]    Compiling scrcpy-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/context/mod.rs:3:19
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use context::{Context, IContext};
[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: `debug`
[INFO] [stdout]  --> src/agent/core/agent_group.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{debug, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ModelClient`
[INFO] [stdout]  --> src/agent/core/agent_group.rs:5:49
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::agent::core::traits::{Agent, Device, ModelClient};
[INFO] [stdout]   |                                                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> src/agent/llm/client.rs:4:29
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{debug, error, info};
[INFO] [stdout]   |                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/agent/llm/parser.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tracing::{debug, warn};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/agent/llm/autoglm_client.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `client::*`
[INFO] [stdout]  --> src/agent/llm/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use client::*;
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parser::*`
[INFO] [stdout]   --> src/agent/llm/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use parser::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `autoglm_client::*`
[INFO] [stdout]   --> src/agent/llm/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use autoglm_client::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prompts::*`
[INFO] [stdout]   --> src/agent/llm/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use prompts::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/agent/executor/device_wrapper.rs:8:28
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{debug, info, error, warn};
[INFO] [stdout]   |                            ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]    --> src/agent/executor/device_wrapper.rs:579:36
[INFO] [stdout]     |
[INFO] [stdout] 579 |         use tracing::{info, debug, warn, error};
[INFO] [stdout]     |                                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::agent::core::traits::ParsedAction`
[INFO] [stdout]  --> src/agent/executor/handler.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::agent::core::traits::ParsedAction;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/agent/executor/handler.rs:6:34
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{debug, info, warn, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::agent::actions::TapAction`
[INFO] [stdout]    --> src/agent/executor/handler.rs:261:9
[INFO] [stdout]     |
[INFO] [stdout] 261 |     use crate::agent::actions::TapAction;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::agent::core::traits::ParsedAction`
[INFO] [stdout]    --> src/agent/executor/handler.rs:262:9
[INFO] [stdout]     |
[INFO] [stdout] 262 |     use crate::agent::core::traits::ParsedAction;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `retry::*`
[INFO] [stdout]  --> src/agent/executor/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use retry::*;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `socketio::*`
[INFO] [stdout]  --> src/agent/api/mod.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use socketio::*;
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `adb_client::server_device::ADBServerDevice`
[INFO] [stdout]   --> src/agent/pool/device_pool.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use adb_client::server_device::ADBServerDevice;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `device_entry::DeviceEntry`
[INFO] [stdout]   --> src/agent/pool/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use device_entry::DeviceEntry;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DevicePoolError`
[INFO] [stdout]   --> src/agent/pool/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     DevicePoolError,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/agent/logger.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Action`, `AgentError`, `AgentGroupConfig`, `AgentGroupEvent`, `AgentGroup`, `AgentRuntime`, `AgentState`, `Agent`, `Device`, `ModelClient`, and `agent::PhoneAgent`
[INFO] [stdout]   --> src/agent/mod.rs:18:14
[INFO] [stdout]    |
[INFO] [stdout] 18 |     traits::{Device, Action, Agent, ModelClient, AgentError},
[INFO] [stdout]    |              ^^^^^^  ^^^^^^  ^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 19 |     state::{AgentConfig, AgentState, AgentRuntime},
[INFO] [stdout]    |                          ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 20 |     agent::PhoneAgent,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     agent_group::{AgentGroup, AgentGroupConfig, AgentGroupEvent},
[INFO] [stdout]    |                   ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ActionEnum`, `BackAction`, `DoubleTapAction`, `FinishAction`, `HomeAction`, `LaunchAction`, `LongPressAction`, `NotificationAction`, `PressKeyAction`, `RecentAction`, `ScreenshotAction`, `ScrollAction`, `SwipeAction`, `TapAction`, `TypeAction`, and `WaitAction`
[INFO] [stdout]   --> src/agent/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     ActionEnum, TapAction, LongPressAction, DoubleTapAction, SwipeAction, ScrollAction,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 26 |     TypeAction, PressKeyAction, BackAction, HomeAction, RecentAction, NotificationAction,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 27 |     LaunchAction, WaitAction, ScreenshotAction, FinishAction,
[INFO] [stdout]    |     ^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `create_model_client`
[INFO] [stdout]   --> src/agent/mod.rs:29:28
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use llm::{ModelConfig, create_model_client};
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ActionHandler` and `ScrcpyDeviceWrapper`
[INFO] [stdout]   --> src/agent/mod.rs:30:20
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use executor::{ScrcpyDeviceWrapper, ActionHandler};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConversationContext` and `ShortTermMemory`
[INFO] [stdout]   --> src/agent/mod.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use context::{ConversationContext, ShortTermMemory};
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FullAgentConfig`
[INFO] [stdout]   --> src/agent/mod.rs:32:18
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub use config::{FullAgentConfig};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DevicePoolEvent` and `DeviceStatus`
[INFO] [stdout]   --> src/agent/mod.rs:33:46
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub use pool::{DevicePool, DevicePoolConfig, DevicePoolEvent, DeviceStatus};
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `screenshot_duration`
[INFO] [stdout]    --> src/agent/core/agent.rs:182:17
[INFO] [stdout]     |
[INFO] [stdout] 182 |             let screenshot_duration = screenshot_start.elapsed();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_screenshot_duration`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `messages_for_log`
[INFO] [stdout]    --> src/agent/core/agent.rs:189:17
[INFO] [stdout]     |
[INFO] [stdout] 189 |             let messages_for_log = current_messages.clone();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_messages_for_log`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query_duration`
[INFO] [stdout]    --> src/agent/core/agent.rs:205:17
[INFO] [stdout]     |
[INFO] [stdout] 205 |             let query_duration = query_start.elapsed();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_query_duration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `finish_action`
[INFO] [stdout]    --> src/agent/core/agent.rs:228:25
[INFO] [stdout]     |
[INFO] [stdout] 228 |             if let Some(finish_action) = parsed_actions.iter().find(|a| a.action_type() == "finish") {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_finish_action`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `distance_y`
[INFO] [stdout]    --> src/agent/actions/swipe.rs:117:13
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let distance_y = (height * self.distance_pct / 100) as u32;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distance_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `distance_x`
[INFO] [stdout]    --> src/agent/actions/swipe.rs:118:13
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let distance_x = (width * self.distance_pct / 100) as u32;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distance_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device`
[INFO] [stdout]    --> src/agent/actions/system.rs:228:29
[INFO] [stdout]     |
[INFO] [stdout] 228 |     async fn execute(&self, device: &dyn Device) -> Result<ActionResult, AppError> {
[INFO] [stdout]     |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task`
[INFO] [stdout]    --> src/agent/core/agent.rs:432:21
[INFO] [stdout]     |
[INFO] [stdout] 432 |                 let task = self.runtime.current_task.read().await.clone().unwrap_or_default();
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `thinking`
[INFO] [stdout]    --> src/agent/llm/autoglm_client.rs:562:14
[INFO] [stdout]     |
[INFO] [stdout] 562 |         let (thinking, parsed_actions) = self.parse_response(&content);
[INFO] [stdout]     |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thinking`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step_number`
[INFO] [stdout]   --> src/agent/logger.rs:92:35
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn save_screenshot(&self, step_number: usize, screenshot_base64: &str) -> Result<String, std::io::Error> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_step_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_agent_group` and `get_device_pool` are never used
[INFO] [stdout]   --> src/context/context.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub trait IContext: Send + Sync {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 54 |     fn get_agent_group(&self) -> &RwLock<Option<Arc<AgentGroup>>>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     fn get_device_pool(&self) -> &RwLock<Option<Arc<DevicePool>>>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `agent_group` is never read
[INFO] [stdout]   --> src/context/context.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct Context {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     agent_group: RwLock<Option<Arc<AgentGroup>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_agent_group` is never used
[INFO] [stdout]   --> src/context/context.rs:78:18
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl Context {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub async fn set_agent_group(&self, group: Arc<AgentGroup>) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `serial`, `name`, `is_connected`, and `current_app` are never used
[INFO] [stdout]   --> src/agent/core/traits.rs:8:8
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait Device: Send + Sync {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout]  7 |     /// 获取设备序列号
[INFO] [stdout]  8 |     fn serial(&self) -> &str;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     async fn is_connected(&self) -> bool;
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     async fn current_app(&self) -> Result<String, AppError>;
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_reversible` and `estimated_duration` are never used
[INFO] [stdout]   --> src/agent/core/traits.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub trait Action: Send + Sync + std::fmt::Debug {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 81 |     fn is_reversible(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     fn estimated_duration(&self) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `InvalidText` is never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub enum ActionError {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 133 |     InvalidText(String),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ActionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:146:5
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum AgentError {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] 145 |     #[error("Agent 未找到: {0}")]
[INFO] [stdout] 146 |     NotFound(String),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     TimeoutError(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     NotRunning,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     MaxStepsExceeded(usize),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     ExecutionTimeout(u64),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     TaskFailed(String),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     InvalidStateTransition(String, String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     RecoveryFailed(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AgentError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `pause`, `resume`, `history`, and `feedback` are never used
[INFO] [stdout]    --> src/agent/core/traits.rs:192:14
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub trait Agent: Send + Sync {
[INFO] [stdout]     |           ----- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 192 |     async fn pause(&self) -> Result<(), AppError>;
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     async fn resume(&self) -> Result<(), AppError>;
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     async fn history(&self) -> Vec<ExecutionStep>;
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     async fn feedback(&self, feedback: AgentFeedback) -> Result<(), AppError>;
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AgentFeedback` is never used
[INFO] [stdout]    --> src/agent/core/traits.rs:235:10
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub enum AgentFeedback {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `info` is never used
[INFO] [stdout]    --> src/agent/core/traits.rs:260:8
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub trait ModelClient: Send + Sync {
[INFO] [stdout]     |           ----------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 260 |     fn info(&self) -> ModelInfo;
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `confidence` and `tokens_used` are never read
[INFO] [stdout]    --> src/agent/core/traits.rs:284:9
[INFO] [stdout]     |
[INFO] [stdout] 281 | pub struct ModelResponse {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub confidence: f32,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 285 |     pub reasoning: Option<String>,
[INFO] [stdout] 286 |     pub tokens_used: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ModelResponse` 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: variant `Timeout` is never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:316:5
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub enum ModelError {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 316 |     Timeout,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ModelError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ModelInfo` is never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:321:12
[INFO] [stdout]     |
[INFO] [stdout] 321 | pub struct ModelInfo {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `AgentCreated`, `AgentStarted`, `AgentCompleted`, `AgentFailed`, `AgentStopped`, and `Custom` are never constructed
[INFO] [stdout]   --> src/agent/core/agent_group.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum AgentGroupEvent {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] 16 |     /// Agent 创建
[INFO] [stdout] 17 |     AgentCreated { agent_id: String, device_serial: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     AgentStarted { agent_id: String, task: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     AgentCompleted { agent_id: String, result: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     AgentFailed { agent_id: String, error: String },
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     AgentStopped { agent_id: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     Custom { agent_id: String, event_type: String, data: String },
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AgentGroupEvent` 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: fields `max_concurrent_agents`, `task_queue_size`, and `enable_event_broadcast` are never read
[INFO] [stdout]   --> src/agent/core/agent_group.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct AgentGroupConfig {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 38 |     /// 最大并发 Agent 数量
[INFO] [stdout] 39 |     pub max_concurrent_agents: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub task_queue_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub enable_event_broadcast: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AgentGroupConfig` 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: fields `devices`, `event_tx`, `config`, and `model_config` are never read
[INFO] [stdout]   --> src/agent/core/agent_group.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct AgentGroup {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     devices: RwLock<HashMap<String, Arc<dyn Device>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 63 |     event_tx: broadcast::Sender<AgentGroupEvent>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 64 |     config: AgentGroupConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 65 |     model_config: ModelConfig,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/agent/core/agent_group.rs:89:18
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl AgentGroup {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub async fn register_device(&self, device: Arc<dyn Device>) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn unregister_device(&self, serial: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn get_devices(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub async fn create_agent(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub async fn get_agent(&self, agent_id: &str) -> Option<Arc<PhoneAgent>> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub async fn start_agent(&self, agent_id: &str, task: String) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub async fn stop_agent(&self, agent_id: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub async fn remove_agent(&self, agent_id: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub async fn list_agents(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub async fn broadcast_task(&self, task: String) -> Result<Vec<String>, AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn subscribe_events(&self) -> broadcast::Receiver<AgentGroupEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_json` is never used
[INFO] [stdout]    --> src/agent/actions/base.rs:501:12
[INFO] [stdout]     |
[INFO] [stdout] 499 | impl ActionEnum {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 500 |     /// 从 JSON 创建 ActionEnum
[INFO] [stdout] 501 |     pub fn from_json(action_type: &str, params: serde_json::Value) -> Result<Self, serde_json::Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_app_name` is never used
[INFO] [stdout]    --> src/agent/actions/system.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl LaunchAction {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 106 |     /// 从应用名称创建 LaunchAction
[INFO] [stdout] 107 |     pub fn from_app_name(app_name: &str) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_env` and `azure` are never used
[INFO] [stdout]    --> src/agent/llm/types.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl ModelConfig {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] 157 |     /// 从环境变量加载配置
[INFO] [stdout] 158 |     pub fn from_env() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn azure(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_text_after` is never used
[INFO] [stdout]    --> src/agent/llm/parser.rs:462:4
[INFO] [stdout]     |
[INFO] [stdout] 462 | fn extract_text_after(text: &str, keywords: &[&str]) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StreamEvent` is never used
[INFO] [stdout]   --> src/agent/llm/autoglm_client.rs:20:6
[INFO] [stdout]    |
[INFO] [stdout] 20 | enum StreamEvent {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerformanceMetrics` is never constructed
[INFO] [stdout]   --> src/agent/llm/autoglm_client.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct PerformanceMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_stream_request` is never used
[INFO] [stdout]    --> src/agent/llm/autoglm_client.rs:117:14
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl AutoGLMClient {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 117 |     async fn send_stream_request(&self, request: ChatRequest) -> Result<String, ModelError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `scrcpy_connect`, and `adb_device` are never read
[INFO] [stdout]   --> src/agent/executor/device_wrapper.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ScrcpyDeviceWrapper {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 13 |     serial: String,
[INFO] [stdout] 14 |     name: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     scrcpy_connect: Arc<ScrcpyConnect>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 16 |     adb_device: Arc<ADBServerDevice>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `parse_screen_size` is never used
[INFO] [stdout]    --> src/agent/executor/device_wrapper.rs:141:8
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl ScrcpyDeviceWrapper {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 141 |     fn parse_screen_size(&self, output: &str) -> Result<(u32, u32), AppError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_max_retries`, `with_retry_delay`, and `execute_parsed_action` are never used
[INFO] [stdout]   --> src/agent/executor/handler.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ActionHandler {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn with_max_retries(mut self, max_retries: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn with_retry_delay(mut self, delay_ms: u64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     pub async fn execute_parsed_action(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `None` is never constructed
[INFO] [stdout]   --> src/agent/executor/retry.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum RetryStrategy {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 21 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RetryStrategy` 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: associated items `new` and `with_retryable_errors` are never used
[INFO] [stdout]    --> src/agent/executor/retry.rs:93:12
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl RetryConfig {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  92 |     /// 创建新的重试配置
[INFO] [stdout]  93 |     pub fn new(max_attempts: u32, strategy: RetryStrategy) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn with_retryable_errors(mut self, errors: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_messages`, `get_recent_messages`, `clear`, `len`, and `build_prompt` are never used
[INFO] [stdout]   --> src/agent/context/conversation.rs:63:18
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl ConversationContext {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub async fn get_messages(&self) -> Vec<ConversationMessage> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub async fn get_recent_messages(&self, n: usize) -> Vec<ConversationMessage> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub async fn clear(&self) {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub async fn len(&self) -> usize {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub async fn build_prompt(&self, task: &str) -> String {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_with_ttl`, `remove`, `clear`, `cleanup_expired`, and `get_all` are never used
[INFO] [stdout]    --> src/agent/context/memory.rs:58:18
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl ShortTermMemory {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub async fn set_with_ttl(&self, key: String, value: String, ttl_seconds: u64) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub async fn remove(&self, key: &str) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub async fn clear(&self) {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn cleanup_expired(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn get_all(&self) -> HashMap<String, String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_file`, `from_file_with_env`, `save_to_file`, `default_config`, and `with_local_model` are never used
[INFO] [stdout]   --> src/agent/config/agent_config.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl FullAgentConfig {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 24 |     /// 从 TOML 文件加载配置
[INFO] [stdout] 25 |     pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self, ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn from_file_with_env<P: AsRef<Path>>(path: P) -> Result<Self, ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn save_to_file<P: AsRef<Path>>(&self, path: P) -> Result<(), ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn default_config() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn with_local_model(base_url: String, model_name: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigError` is never used
[INFO] [stdout]   --> src/agent/config/agent_config.rs:78:10
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub enum ConfigError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `register_agent_handlers` is never used
[INFO] [stdout]  --> src/agent/api/socketio.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub async fn register_agent_handlers(socket: SocketRef, context: Arc<dyn IContext>) {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_agent_start_with_pool` is never used
[INFO] [stdout]   --> src/agent/api/socketio.rs:70:10
[INFO] [stdout]    |
[INFO] [stdout] 70 | async fn handle_agent_start_with_pool(request: AgentStartRequest, pool: Arc<crate::agent::pool::DevicePool>) -> Result<serde_json::V...
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_get_devices_with_pool` is never used
[INFO] [stdout]   --> src/agent/api/socketio.rs:79:10
[INFO] [stdout]    |
[INFO] [stdout] 79 | async fn handle_get_devices_with_pool(pool: Arc<crate::agent::pool::DevicePool>) -> Result<serde_json::Value, crate::error::AppError> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AgentStartRequest` is never constructed
[INFO] [stdout]   --> src/agent/api/socketio.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct AgentStartRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/agent/pool/device_pool.rs:65:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl DevicePool {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn subscribe_events(&self) -> broadcast::Receiver<DevicePoolEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub async fn unregister_device(&self, serial: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub async fn disconnect_device(&self, serial: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub async fn get_all_devices_status(&self) -> Vec<(String, DeviceStatus)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub async fn list_devices(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub async fn get_device_info(&self, serial: &str) -> Option<crate::agent::pool::types::DeviceInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub async fn cleanup_idle_devices(&self) -> Result<usize, AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     pub async fn health_check(&self) -> Result<HashMap<String, bool>, AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     pub async fn mark_task_completed(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 449 |     pub async fn mark_task_failed(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `created_at` is never read
[INFO] [stdout]   --> src/agent/pool/device_entry.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct DeviceEntry {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub created_at: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_idle`, `is_connected`, and `is_busy` are never used
[INFO] [stdout]   --> src/agent/pool/device_entry.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl DeviceEntry {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn is_idle(&self, threshold_seconds: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn is_connected(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn is_busy(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `serial` is never read
[INFO] [stdout]   --> src/agent/pool/types.rs:74:24
[INFO] [stdout]    |
[INFO] [stdout] 74 |     DeviceRegistered { serial: String },
[INFO] [stdout]    |     ----------------   ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` 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 `serial` is never read
[INFO] [stdout]   --> src/agent/pool/types.rs:77:23
[INFO] [stdout]    |
[INFO] [stdout] 77 |     DeviceConnected { serial: String },
[INFO] [stdout]    |     ---------------   ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` 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: fields `serial` and `agent_id` are never read
[INFO] [stdout]   --> src/agent/pool/types.rs:83:20
[INFO] [stdout]    |
[INFO] [stdout] 83 |     AgentCreated { serial: String, agent_id: String },
[INFO] [stdout]    |     ------------   ^^^^^^          ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` 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: fields `serial` and `agent_id` are never read
[INFO] [stdout]   --> src/agent/pool/types.rs:86:22
[INFO] [stdout]    |
[INFO] [stdout] 86 |     AgentDestroyed { serial: String, agent_id: String },
[INFO] [stdout]    |     --------------   ^^^^^^          ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` 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: fields `serial` and `task` are never read
[INFO] [stdout]   --> src/agent/pool/types.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |     TaskStarted { serial: String, task: String },
[INFO] [stdout]    |     -----------   ^^^^^^          ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` 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: variants `DeviceDisconnected`, `DeviceIdle`, `TaskCompleted`, `TaskFailed`, and `Error` are never constructed
[INFO] [stdout]    --> src/agent/pool/types.rs:80:5
[INFO] [stdout]     |
[INFO] [stdout]  72 | pub enum DevicePoolEvent {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  80 |     DeviceDisconnected { serial: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     DeviceIdle { serial: String, idle_seconds: u64 },
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     TaskCompleted { serial: String, result: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     TaskFailed { serial: String, error: String },
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     Error { serial: String, error: String },
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DevicePoolEvent` 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: enum `DevicePoolError` is never used
[INFO] [stdout]    --> src/agent/pool/types.rs:106:10
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub enum DevicePoolError {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `io` is never read
[INFO] [stdout]   --> src/agent/socket_server.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct AgentSocketServer {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 20 |     io: Arc<SocketIo>,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `io` and `port` are never used
[INFO] [stdout]   --> src/agent/socket_server.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl AgentSocketServer {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn io(&self) -> &Arc<SocketIo> {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn port(&self) -> u16 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 14.96s
[INFO] running `Command { std: "docker" "inspect" "931cd9948a9ff5251c47e4ca92fb4025dcbc53eca92a299a2e86e34873c7daa6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "931cd9948a9ff5251c47e4ca92fb4025dcbc53eca92a299a2e86e34873c7daa6", kill_on_drop: false }`
[INFO] [stdout] 931cd9948a9ff5251c47e4ca92fb4025dcbc53eca92a299a2e86e34873c7daa6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 4824093c29de90a7829d251d988d5638737dabd407e9aafd7109647ad9223b48
[INFO] running `Command { std: "docker" "start" "-a" "4824093c29de90a7829d251d988d5638737dabd407e9aafd7109647ad9223b48", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `Context`
[INFO] [stderr]  --> src/context/mod.rs:3:19
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub use context::{Context, IContext};
[INFO] [stderr]   |                   ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `debug`
[INFO] [stderr]  --> src/agent/core/agent_group.rs:4:15
[INFO] [stderr]   |
[INFO] [stderr] 4 | use tracing::{debug, info, warn};
[INFO] [stderr]   |               ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ModelClient`
[INFO] [stderr]  --> src/agent/core/agent_group.rs:5:49
[INFO] [stderr]   |
[INFO] [stderr] 5 | use crate::agent::core::traits::{Agent, Device, ModelClient};
[INFO] [stderr]   |                                                 ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `info`
[INFO] [stderr]  --> src/agent/llm/client.rs:4:29
[INFO] [stderr]   |
[INFO] [stderr] 4 | use tracing::{debug, error, info};
[INFO] [stderr]   |                             ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `warn`
[INFO] [stderr]  --> src/agent/llm/parser.rs:2:22
[INFO] [stderr]   |
[INFO] [stderr] 2 | use tracing::{debug, warn};
[INFO] [stderr]   |                      ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio::sync::RwLock`
[INFO] [stderr]  --> src/agent/llm/autoglm_client.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use tokio::sync::RwLock;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `client::*`
[INFO] [stderr]  --> src/agent/llm/mod.rs:8:9
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub use client::*;
[INFO] [stderr]   |         ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `parser::*`
[INFO] [stderr]   --> src/agent/llm/mod.rs:10:9
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use parser::*;
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `autoglm_client::*`
[INFO] [stderr]   --> src/agent/llm/mod.rs:12:9
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub use autoglm_client::*;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `prompts::*`
[INFO] [stderr]   --> src/agent/llm/mod.rs:13:9
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub use prompts::*;
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `error` and `warn`
[INFO] [stderr]  --> src/agent/executor/device_wrapper.rs:8:28
[INFO] [stderr]   |
[INFO] [stderr] 8 | use tracing::{debug, info, error, warn};
[INFO] [stderr]   |                            ^^^^^  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `warn`
[INFO] [stderr]    --> src/agent/executor/device_wrapper.rs:579:36
[INFO] [stderr]     |
[INFO] [stderr] 579 |         use tracing::{info, debug, warn, error};
[INFO] [stderr]     |                                    ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::agent::core::traits::ParsedAction`
[INFO] [stderr]  --> src/agent/executor/handler.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use crate::agent::core::traits::ParsedAction;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `error`
[INFO] [stderr]  --> src/agent/executor/handler.rs:6:34
[INFO] [stderr]   |
[INFO] [stderr] 6 | use tracing::{debug, info, warn, error};
[INFO] [stderr]   |                                  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::agent::actions::TapAction`
[INFO] [stderr]    --> src/agent/executor/handler.rs:261:9
[INFO] [stderr]     |
[INFO] [stderr] 261 |     use crate::agent::actions::TapAction;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::agent::core::traits::ParsedAction`
[INFO] [stderr]    --> src/agent/executor/handler.rs:262:9
[INFO] [stderr]     |
[INFO] [stderr] 262 |     use crate::agent::core::traits::ParsedAction;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `retry::*`
[INFO] [stderr]  --> src/agent/executor/mod.rs:7:9
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub use retry::*;
[INFO] [stderr]   |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `socketio::*`
[INFO] [stderr]  --> src/agent/api/mod.rs:3:9
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub use socketio::*;
[INFO] [stderr]   |         ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `adb_client::server_device::ADBServerDevice`
[INFO] [stderr]   --> src/agent/pool/device_pool.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 16 | use adb_client::server_device::ADBServerDevice;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `device_entry::DeviceEntry`
[INFO] [stderr]   --> src/agent/pool/mod.rs:10:9
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use device_entry::DeviceEntry;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `DevicePoolError`
[INFO] [stderr]   --> src/agent/pool/mod.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 |     DevicePoolError,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::path::Path`
[INFO] [stderr]  --> src/agent/logger.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::path::Path;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Action`, `AgentError`, `AgentGroupConfig`, `AgentGroupEvent`, `AgentGroup`, `AgentRuntime`, `AgentState`, `Agent`, `Device`, `ModelClient`, and `agent::PhoneAgent`
[INFO] [stderr]   --> src/agent/mod.rs:18:14
[INFO] [stderr]    |
[INFO] [stderr] 18 |     traits::{Device, Action, Agent, ModelClient, AgentError},
[INFO] [stderr]    |              ^^^^^^  ^^^^^^  ^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stderr] 19 |     state::{AgentConfig, AgentState, AgentRuntime},
[INFO] [stderr]    |                          ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 20 |     agent::PhoneAgent,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 21 |     agent_group::{AgentGroup, AgentGroupConfig, AgentGroupEvent},
[INFO] [stderr]    |                   ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ActionEnum`, `BackAction`, `DoubleTapAction`, `FinishAction`, `HomeAction`, `LaunchAction`, `LongPressAction`, `NotificationAction`, `PressKeyAction`, `RecentAction`, `ScreenshotAction`, `ScrollAction`, `SwipeAction`, `TapAction`, `TypeAction`, and `WaitAction`
[INFO] [stderr]   --> src/agent/mod.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 |     ActionEnum, TapAction, LongPressAction, DoubleTapAction, SwipeAction, ScrollAction,
[INFO] [stderr]    |     ^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 26 |     TypeAction, PressKeyAction, BackAction, HomeAction, RecentAction, NotificationAction,
[INFO] [stderr]    |     ^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 27 |     LaunchAction, WaitAction, ScreenshotAction, FinishAction,
[INFO] [stderr]    |     ^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `create_model_client`
[INFO] [stderr]   --> src/agent/mod.rs:29:28
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub use llm::{ModelConfig, create_model_client};
[INFO] [stderr]    |                            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ActionHandler` and `ScrcpyDeviceWrapper`
[INFO] [stderr]   --> src/agent/mod.rs:30:20
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub use executor::{ScrcpyDeviceWrapper, ActionHandler};
[INFO] [stderr]    |                    ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ConversationContext` and `ShortTermMemory`
[INFO] [stderr]   --> src/agent/mod.rs:31:19
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub use context::{ConversationContext, ShortTermMemory};
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `FullAgentConfig`
[INFO] [stderr]   --> src/agent/mod.rs:32:18
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub use config::{FullAgentConfig};
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `DevicePoolEvent` and `DeviceStatus`
[INFO] [stderr]   --> src/agent/mod.rs:33:46
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub use pool::{DevicePool, DevicePoolConfig, DevicePoolEvent, DeviceStatus};
[INFO] [stderr]    |                                              ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `screenshot_duration`
[INFO] [stderr]    --> src/agent/core/agent.rs:182:17
[INFO] [stderr]     |
[INFO] [stderr] 182 |             let screenshot_duration = screenshot_start.elapsed();
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_screenshot_duration`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `messages_for_log`
[INFO] [stderr]    --> src/agent/core/agent.rs:189:17
[INFO] [stderr]     |
[INFO] [stderr] 189 |             let messages_for_log = current_messages.clone();
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_messages_for_log`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `query_duration`
[INFO] [stderr]    --> src/agent/core/agent.rs:205:17
[INFO] [stderr]     |
[INFO] [stderr] 205 |             let query_duration = query_start.elapsed();
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_query_duration`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `finish_action`
[INFO] [stderr]    --> src/agent/core/agent.rs:228:25
[INFO] [stderr]     |
[INFO] [stderr] 228 |             if let Some(finish_action) = parsed_actions.iter().find(|a| a.action_type() == "finish") {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_finish_action`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `distance_y`
[INFO] [stderr]    --> src/agent/actions/swipe.rs:117:13
[INFO] [stderr]     |
[INFO] [stderr] 117 |         let distance_y = (height * self.distance_pct / 100) as u32;
[INFO] [stderr]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distance_y`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `distance_x`
[INFO] [stderr]    --> src/agent/actions/swipe.rs:118:13
[INFO] [stderr]     |
[INFO] [stderr] 118 |         let distance_x = (width * self.distance_pct / 100) as u32;
[INFO] [stderr]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distance_x`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `device`
[INFO] [stderr]    --> src/agent/actions/system.rs:228:29
[INFO] [stderr]     |
[INFO] [stderr] 228 |     async fn execute(&self, device: &dyn Device) -> Result<ActionResult, AppError> {
[INFO] [stderr]     |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `task`
[INFO] [stderr]    --> src/agent/core/agent.rs:432:21
[INFO] [stderr]     |
[INFO] [stderr] 432 |                 let task = self.runtime.current_task.read().await.clone().unwrap_or_default();
[INFO] [stderr]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_task`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `thinking`
[INFO] [stderr]    --> src/agent/llm/autoglm_client.rs:562:14
[INFO] [stderr]     |
[INFO] [stderr] 562 |         let (thinking, parsed_actions) = self.parse_response(&content);
[INFO] [stderr]     |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thinking`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `step_number`
[INFO] [stderr]   --> src/agent/logger.rs:92:35
[INFO] [stderr]    |
[INFO] [stderr] 92 |     pub fn save_screenshot(&self, step_number: usize, screenshot_base64: &str) -> Result<String, std::io::Error> {
[INFO] [stderr]    |                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_step_number`
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_agent_group` and `get_device_pool` are never used
[INFO] [stderr]   --> src/context/context.rs:54:8
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub trait IContext: Send + Sync {
[INFO] [stderr]    |           -------- methods in this trait
[INFO] [stderr] ...
[INFO] [stderr] 54 |     fn get_agent_group(&self) -> &RwLock<Option<Arc<AgentGroup>>>;
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 55 |     fn get_device_pool(&self) -> &RwLock<Option<Arc<DevicePool>>>;
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `agent_group` is never read
[INFO] [stderr]   --> src/context/context.rs:62:5
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub struct Context {
[INFO] [stderr]    |            ------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 62 |     agent_group: RwLock<Option<Arc<AgentGroup>>>,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `set_agent_group` is never used
[INFO] [stderr]   --> src/context/context.rs:78:18
[INFO] [stderr]    |
[INFO] [stderr] 66 | impl Context {
[INFO] [stderr]    | ------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 78 |     pub async fn set_agent_group(&self, group: Arc<AgentGroup>) {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `serial`, `name`, `is_connected`, and `current_app` are never used
[INFO] [stderr]   --> src/agent/core/traits.rs:8:8
[INFO] [stderr]    |
[INFO] [stderr]  6 | pub trait Device: Send + Sync {
[INFO] [stderr]    |           ------ methods in this trait
[INFO] [stderr]  7 |     /// 获取设备序列号
[INFO] [stderr]  8 |     fn serial(&self) -> &str;
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 11 |     fn name(&self) -> &str;
[INFO] [stderr]    |        ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 14 |     async fn is_connected(&self) -> bool;
[INFO] [stderr]    |              ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 63 |     async fn current_app(&self) -> Result<String, AppError>;
[INFO] [stderr]    |              ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_reversible` and `estimated_duration` are never used
[INFO] [stderr]   --> src/agent/core/traits.rs:81:8
[INFO] [stderr]    |
[INFO] [stderr] 67 | pub trait Action: Send + Sync + std::fmt::Debug {
[INFO] [stderr]    |           ------ methods in this trait
[INFO] [stderr] ...
[INFO] [stderr] 81 |     fn is_reversible(&self) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 86 |     fn estimated_duration(&self) -> u32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `InvalidText` is never constructed
[INFO] [stderr]    --> src/agent/core/traits.rs:133:5
[INFO] [stderr]     |
[INFO] [stderr] 125 | pub enum ActionError {
[INFO] [stderr]     |          ----------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 133 |     InvalidText(String),
[INFO] [stderr]     |     ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ActionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple variants are never constructed
[INFO] [stderr]    --> src/agent/core/traits.rs:146:5
[INFO] [stderr]     |
[INFO] [stderr] 144 | pub enum AgentError {
[INFO] [stderr]     |          ---------- variants in this enum
[INFO] [stderr] 145 |     #[error("Agent 未找到: {0}")]
[INFO] [stderr] 146 |     NotFound(String),
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 158 |     TimeoutError(String),
[INFO] [stderr]     |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 164 |     NotRunning,
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 167 |     MaxStepsExceeded(usize),
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 170 |     ExecutionTimeout(u64),
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 173 |     TaskFailed(String),
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     InvalidStateTransition(String, String),
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 179 |     RecoveryFailed(String),
[INFO] [stderr]     |     ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `AgentError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `pause`, `resume`, `history`, and `feedback` are never used
[INFO] [stderr]    --> src/agent/core/traits.rs:192:14
[INFO] [stderr]     |
[INFO] [stderr] 184 | pub trait Agent: Send + Sync {
[INFO] [stderr]     |           ----- methods in this trait
[INFO] [stderr] ...
[INFO] [stderr] 192 |     async fn pause(&self) -> Result<(), AppError>;
[INFO] [stderr]     |              ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 195 |     async fn resume(&self) -> Result<(), AppError>;
[INFO] [stderr]     |              ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 201 |     async fn history(&self) -> Vec<ExecutionStep>;
[INFO] [stderr]     |              ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 204 |     async fn feedback(&self, feedback: AgentFeedback) -> Result<(), AppError>;
[INFO] [stderr]     |              ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `AgentFeedback` is never used
[INFO] [stderr]    --> src/agent/core/traits.rs:235:10
[INFO] [stderr]     |
[INFO] [stderr] 235 | pub enum AgentFeedback {
[INFO] [stderr]     |          ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `info` is never used
[INFO] [stderr]    --> src/agent/core/traits.rs:260:8
[INFO] [stderr]     |
[INFO] [stderr] 243 | pub trait ModelClient: Send + Sync {
[INFO] [stderr]     |           ----------- method in this trait
[INFO] [stderr] ...
[INFO] [stderr] 260 |     fn info(&self) -> ModelInfo;
[INFO] [stderr]     |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `confidence` and `tokens_used` are never read
[INFO] [stderr]    --> src/agent/core/traits.rs:284:9
[INFO] [stderr]     |
[INFO] [stderr] 281 | pub struct ModelResponse {
[INFO] [stderr]     |            ------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 284 |     pub confidence: f32,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr] 285 |     pub reasoning: Option<String>,
[INFO] [stderr] 286 |     pub tokens_used: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ModelResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variant `Timeout` is never constructed
[INFO] [stderr]    --> src/agent/core/traits.rs:316:5
[INFO] [stderr]     |
[INFO] [stderr] 299 | pub enum ModelError {
[INFO] [stderr]     |          ---------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 316 |     Timeout,
[INFO] [stderr]     |     ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ModelError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ModelInfo` is never constructed
[INFO] [stderr]    --> src/agent/core/traits.rs:321:12
[INFO] [stderr]     |
[INFO] [stderr] 321 | pub struct ModelInfo {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `AgentCreated`, `AgentStarted`, `AgentCompleted`, `AgentFailed`, `AgentStopped`, and `Custom` are never constructed
[INFO] [stderr]   --> src/agent/core/agent_group.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub enum AgentGroupEvent {
[INFO] [stderr]    |          --------------- variants in this enum
[INFO] [stderr] 16 |     /// Agent 创建
[INFO] [stderr] 17 |     AgentCreated { agent_id: String, device_serial: String },
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 20 |     AgentStarted { agent_id: String, task: String },
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 23 |     AgentCompleted { agent_id: String, result: String },
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 26 |     AgentFailed { agent_id: String, error: String },
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 29 |     AgentStopped { agent_id: String },
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 32 |     Custom { agent_id: String, event_type: String, data: String },
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AgentGroupEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `max_concurrent_agents`, `task_queue_size`, and `enable_event_broadcast` are never read
[INFO] [stderr]   --> src/agent/core/agent_group.rs:39:9
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub struct AgentGroupConfig {
[INFO] [stderr]    |            ---------------- fields in this struct
[INFO] [stderr] 38 |     /// 最大并发 Agent 数量
[INFO] [stderr] 39 |     pub max_concurrent_agents: usize,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 42 |     pub task_queue_size: usize,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 45 |     pub enable_event_broadcast: bool,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AgentGroupConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `devices`, `event_tx`, `config`, and `model_config` are never read
[INFO] [stderr]   --> src/agent/core/agent_group.rs:62:5
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub struct AgentGroup {
[INFO] [stderr]    |            ---------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 62 |     devices: RwLock<HashMap<String, Arc<dyn Device>>>,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 63 |     event_tx: broadcast::Sender<AgentGroupEvent>,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 64 |     config: AgentGroupConfig,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 65 |     model_config: ModelConfig,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/agent/core/agent_group.rs:89:18
[INFO] [stderr]     |
[INFO] [stderr]  68 | impl AgentGroup {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  89 |     pub async fn register_device(&self, device: Arc<dyn Device>) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  96 |     pub async fn unregister_device(&self, serial: &str) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 102 |     pub async fn get_devices(&self) -> Vec<String> {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 107 |     pub async fn create_agent(
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 147 |     pub async fn get_agent(&self, agent_id: &str) -> Option<Arc<PhoneAgent>> {
[INFO] [stderr]     |                  ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 152 |     pub async fn start_agent(&self, agent_id: &str, task: String) -> Result<(), AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 169 |     pub async fn stop_agent(&self, agent_id: &str) -> Result<(), AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 184 |     pub async fn remove_agent(&self, agent_id: &str) -> Result<(), AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 199 |     pub async fn list_agents(&self) -> Vec<String> {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 218 |     pub async fn broadcast_task(&self, task: String) -> Result<Vec<String>, AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 242 |     pub fn subscribe_events(&self) -> broadcast::Receiver<AgentGroupEvent> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `from_json` is never used
[INFO] [stderr]    --> src/agent/actions/base.rs:501:12
[INFO] [stderr]     |
[INFO] [stderr] 499 | impl ActionEnum {
[INFO] [stderr]     | --------------- associated function in this implementation
[INFO] [stderr] 500 |     /// 从 JSON 创建 ActionEnum
[INFO] [stderr] 501 |     pub fn from_json(action_type: &str, params: serde_json::Value) -> Result<Self, serde_json::Error> {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `from_app_name` is never used
[INFO] [stderr]    --> src/agent/actions/system.rs:107:12
[INFO] [stderr]     |
[INFO] [stderr] 105 | impl LaunchAction {
[INFO] [stderr]     | ----------------- associated function in this implementation
[INFO] [stderr] 106 |     /// 从应用名称创建 LaunchAction
[INFO] [stderr] 107 |     pub fn from_app_name(app_name: &str) -> Option<Self> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `from_env` and `azure` are never used
[INFO] [stderr]    --> src/agent/llm/types.rs:158:12
[INFO] [stderr]     |
[INFO] [stderr] 156 | impl ModelConfig {
[INFO] [stderr]     | ---------------- associated functions in this implementation
[INFO] [stderr] 157 |     /// 从环境变量加载配置
[INFO] [stderr] 158 |     pub fn from_env() -> Self {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 195 |     pub fn azure(
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `extract_text_after` is never used
[INFO] [stderr]    --> src/agent/llm/parser.rs:462:4
[INFO] [stderr]     |
[INFO] [stderr] 462 | fn extract_text_after(text: &str, keywords: &[&str]) -> Option<String> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `StreamEvent` is never used
[INFO] [stderr]   --> src/agent/llm/autoglm_client.rs:20:6
[INFO] [stderr]    |
[INFO] [stderr] 20 | enum StreamEvent {
[INFO] [stderr]    |      ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PerformanceMetrics` is never constructed
[INFO] [stderr]   --> src/agent/llm/autoglm_client.rs:29:12
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub struct PerformanceMetrics {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `send_stream_request` is never used
[INFO] [stderr]    --> src/agent/llm/autoglm_client.rs:117:14
[INFO] [stderr]     |
[INFO] [stderr]  50 | impl AutoGLMClient {
[INFO] [stderr]     | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 117 |     async fn send_stream_request(&self, request: ChatRequest) -> Result<String, ModelError> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `name`, `scrcpy_connect`, and `adb_device` are never read
[INFO] [stderr]   --> src/agent/executor/device_wrapper.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub struct ScrcpyDeviceWrapper {
[INFO] [stderr]    |            ------------------- fields in this struct
[INFO] [stderr] 13 |     serial: String,
[INFO] [stderr] 14 |     name: String,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 15 |     scrcpy_connect: Arc<ScrcpyConnect>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 16 |     adb_device: Arc<ADBServerDevice>,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `parse_screen_size` is never used
[INFO] [stderr]    --> src/agent/executor/device_wrapper.rs:141:8
[INFO] [stderr]     |
[INFO] [stderr]  23 | impl ScrcpyDeviceWrapper {
[INFO] [stderr]     | ------------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 141 |     fn parse_screen_size(&self, output: &str) -> Result<(u32, u32), AppError> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `with_max_retries`, `with_retry_delay`, and `execute_parsed_action` are never used
[INFO] [stderr]   --> src/agent/executor/handler.rs:26:12
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl ActionHandler {
[INFO] [stderr]    | ------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 26 |     pub fn with_max_retries(mut self, max_retries: u32) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 32 |     pub fn with_retry_delay(mut self, delay_ms: u64) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 97 |     pub async fn execute_parsed_action(
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `None` is never constructed
[INFO] [stderr]   --> src/agent/executor/retry.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr]  6 | pub enum RetryStrategy {
[INFO] [stderr]    |          ------------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 21 |     None,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RetryStrategy` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `with_retryable_errors` are never used
[INFO] [stderr]    --> src/agent/executor/retry.rs:93:12
[INFO] [stderr]     |
[INFO] [stderr]  91 | impl RetryConfig {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr]  92 |     /// 创建新的重试配置
[INFO] [stderr]  93 |     pub fn new(max_attempts: u32, strategy: RetryStrategy) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 102 |     pub fn with_retryable_errors(mut self, errors: Vec<String>) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_messages`, `get_recent_messages`, `clear`, `len`, and `build_prompt` are never used
[INFO] [stderr]   --> src/agent/context/conversation.rs:63:18
[INFO] [stderr]    |
[INFO] [stderr] 30 | impl ConversationContext {
[INFO] [stderr]    | ------------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 63 |     pub async fn get_messages(&self) -> Vec<ConversationMessage> {
[INFO] [stderr]    |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 68 |     pub async fn get_recent_messages(&self, n: usize) -> Vec<ConversationMessage> {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 79 |     pub async fn clear(&self) {
[INFO] [stderr]    |                  ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 84 |     pub async fn len(&self) -> usize {
[INFO] [stderr]    |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr] 89 |     pub async fn build_prompt(&self, task: &str) -> String {
[INFO] [stderr]    |                  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `set_with_ttl`, `remove`, `clear`, `cleanup_expired`, and `get_all` are never used
[INFO] [stderr]    --> src/agent/context/memory.rs:58:18
[INFO] [stderr]     |
[INFO] [stderr]  33 | impl ShortTermMemory {
[INFO] [stderr]     | -------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  58 |     pub async fn set_with_ttl(&self, key: String, value: String, ttl_seconds: u64) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  86 |     pub async fn remove(&self, key: &str) {
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  91 |     pub async fn clear(&self) {
[INFO] [stderr]     |                  ^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  96 |     pub async fn cleanup_expired(&self) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 102 |     pub async fn get_all(&self) -> HashMap<String, String> {
[INFO] [stderr]     |                  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `from_file`, `from_file_with_env`, `save_to_file`, `default_config`, and `with_local_model` are never used
[INFO] [stderr]   --> src/agent/config/agent_config.rs:25:12
[INFO] [stderr]    |
[INFO] [stderr] 23 | impl FullAgentConfig {
[INFO] [stderr]    | -------------------- associated items in this implementation
[INFO] [stderr] 24 |     /// 从 TOML 文件加载配置
[INFO] [stderr] 25 |     pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self, ConfigError> {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 36 |     pub fn from_file_with_env<P: AsRef<Path>>(path: P) -> Result<Self, ConfigError> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 52 |     pub fn save_to_file<P: AsRef<Path>>(&self, path: P) -> Result<(), ConfigError> {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 63 |     pub fn default_config() -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 68 |     pub fn with_local_model(base_url: String, model_name: String) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `ConfigError` is never used
[INFO] [stderr]   --> src/agent/config/agent_config.rs:78:10
[INFO] [stderr]    |
[INFO] [stderr] 78 | pub enum ConfigError {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `register_agent_handlers` is never used
[INFO] [stderr]  --> src/agent/api/socketio.rs:8:14
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub async fn register_agent_handlers(socket: SocketRef, context: Arc<dyn IContext>) {
[INFO] [stderr]   |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_agent_start_with_pool` is never used
[INFO] [stderr]   --> src/agent/api/socketio.rs:70:10
[INFO] [stderr]    |
[INFO] [stderr] 70 | async fn handle_agent_start_with_pool(request: AgentStartRequest, pool: Arc<crate::agent::pool::DevicePool>) -> Result<serde_json::V...
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_get_devices_with_pool` is never used
[INFO] [stderr]   --> src/agent/api/socketio.rs:79:10
[INFO] [stderr]    |
[INFO] [stderr] 79 | async fn handle_get_devices_with_pool(pool: Arc<crate::agent::pool::DevicePool>) -> Result<serde_json::Value, crate::error::AppError> {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AgentStartRequest` is never constructed
[INFO] [stderr]   --> src/agent/api/socketio.rs:85:12
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub struct AgentStartRequest {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/agent/pool/device_pool.rs:65:12
[INFO] [stderr]     |
[INFO] [stderr]  44 | impl DevicePool {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  65 |     pub fn subscribe_events(&self) -> broadcast::Receiver<DevicePoolEvent> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 111 |     pub async fn unregister_device(&self, serial: &str) -> Result<(), AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     pub async fn disconnect_device(&self, serial: &str) -> Result<(), AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 315 |     pub async fn get_all_devices_status(&self) -> Vec<(String, DeviceStatus)> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 324 |     pub async fn list_devices(&self) -> Vec<String> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 330 |     pub async fn get_device_info(&self, serial: &str) -> Option<crate::agent::pool::types::DeviceInfo> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 342 |     pub async fn cleanup_idle_devices(&self) -> Result<usize, AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 374 |     pub async fn health_check(&self) -> Result<HashMap<String, bool>, AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 421 |     pub async fn mark_task_completed(
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 449 |     pub async fn mark_task_failed(
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `created_at` is never read
[INFO] [stderr]   --> src/agent/pool/device_entry.rs:32:9
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub struct DeviceEntry {
[INFO] [stderr]    |            ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 32 |     pub created_at: DateTime<Utc>,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_idle`, `is_connected`, and `is_busy` are never used
[INFO] [stderr]   --> src/agent/pool/device_entry.rs:71:12
[INFO] [stderr]    |
[INFO] [stderr] 41 | impl DeviceEntry {
[INFO] [stderr]    | ---------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 71 |     pub fn is_idle(&self, threshold_seconds: i64) -> bool {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 78 |     pub fn is_connected(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 85 |     pub fn is_busy(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `serial` is never read
[INFO] [stderr]   --> src/agent/pool/types.rs:74:24
[INFO] [stderr]    |
[INFO] [stderr] 74 |     DeviceRegistered { serial: String },
[INFO] [stderr]    |     ----------------   ^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `serial` is never read
[INFO] [stderr]   --> src/agent/pool/types.rs:77:23
[INFO] [stderr]    |
[INFO] [stderr] 77 |     DeviceConnected { serial: String },
[INFO] [stderr]    |     ---------------   ^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `serial` and `agent_id` are never read
[INFO] [stderr]   --> src/agent/pool/types.rs:83:20
[INFO] [stderr]    |
[INFO] [stderr] 83 |     AgentCreated { serial: String, agent_id: String },
[INFO] [stderr]    |     ------------   ^^^^^^          ^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     fields in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `serial` and `agent_id` are never read
[INFO] [stderr]   --> src/agent/pool/types.rs:86:22
[INFO] [stderr]    |
[INFO] [stderr] 86 |     AgentDestroyed { serial: String, agent_id: String },
[INFO] [stderr]    |     --------------   ^^^^^^          ^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     fields in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `serial` and `task` are never read
[INFO] [stderr]   --> src/agent/pool/types.rs:92:19
[INFO] [stderr]    |
[INFO] [stderr] 92 |     TaskStarted { serial: String, task: String },
[INFO] [stderr]    |     -----------   ^^^^^^          ^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     fields in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variants `DeviceDisconnected`, `DeviceIdle`, `TaskCompleted`, `TaskFailed`, and `Error` are never constructed
[INFO] [stderr]    --> src/agent/pool/types.rs:80:5
[INFO] [stderr]     |
[INFO] [stderr]  72 | pub enum DevicePoolEvent {
[INFO] [stderr]     |          --------------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr]  80 |     DeviceDisconnected { serial: String },
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  89 |     DeviceIdle { serial: String, idle_seconds: u64 },
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  95 |     TaskCompleted { serial: String, result: String },
[INFO] [stderr]     |     ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  98 |     TaskFailed { serial: String, error: String },
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 101 |     Error { serial: String, error: String },
[INFO] [stderr]     |     ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DevicePoolError` is never used
[INFO] [stderr]    --> src/agent/pool/types.rs:106:10
[INFO] [stderr]     |
[INFO] [stderr] 106 | pub enum DevicePoolError {
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `io` is never read
[INFO] [stderr]   --> src/agent/socket_server.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct AgentSocketServer {
[INFO] [stderr]    |            ----------------- field in this struct
[INFO] [stderr] 20 |     io: Arc<SocketIo>,
[INFO] [stderr]    |     ^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `io` and `port` are never used
[INFO] [stderr]   --> src/agent/socket_server.rs:75:12
[INFO] [stderr]    |
[INFO] [stderr] 25 | impl AgentSocketServer {
[INFO] [stderr]    | ---------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 75 |     pub fn io(&self) -> &Arc<SocketIo> {
[INFO] [stderr]    |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 80 |     pub fn port(&self) -> u16 {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `scrcpy-rs` (bin "scrcpy-rs" test) generated 88 warnings (run `cargo fix --bin "scrcpy-rs" -p scrcpy-rs --tests` to apply 39 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.36s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/scrcpy_rs-406635796b0c27ae)
[INFO] [stdout] 
[INFO] [stdout] running 39 tests
[INFO] [stdout] test agent::config::agent_config::tests::test_default_config ... ok
[INFO] [stdout] test agent::config::agent_config::tests::test_serialize_config ... ok
[INFO] [stdout] test agent::context::memory::tests::test_memory_set_get ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_action_handler_creation ... ok
[INFO] [stdout] test agent::core::agent_group::tests::test_agent_group_creation ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_convert_launch_params ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_convert_swipe_params ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_convert_type_params ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_convert_wait_params ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_convert_wait_params_with_string_duration ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_convert_tap_params ... ok
[INFO] [stdout] test agent::executor::retry::tests::test_exponential_backoff ... ok
[INFO] [stdout] test agent::executor::retry::tests::test_fixed_delay ... ok
[INFO] [stdout] test agent::llm::client::tests::test_model_config_local ... ok
[INFO] [stdout] test agent::llm::client::tests::test_model_config_default ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_normalize_action_type ... ok
[INFO] [stdout] test agent::executor::retry::tests::test_retry_config_execute ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_parse_finish_action ... ok
[INFO] [stdout] test agent::llm::prompts::tests::test_auxiliary_system_prompt_contains_instructions ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_parse_json_action ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_extract_duration ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_extract_coordinates ... ok
[INFO] [stdout] test agent::llm::prompts::tests::test_main_system_prompt_contains_required_elements ... ok
[INFO] [stdout] test agent::logger::tests::test_log_entry_serialization ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_parse_do_action_tap ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_parse_do_action_launch ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_extract_launch_app ... FAILED
[INFO] [stdout] test agent::llm::providers::tests::test_create_openai_client ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_no_markers ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_finish_multiline ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_finish_action ... ok
[INFO] [stdout] test agent::llm::providers::tests::test_create_autoglm_client ... ok
[INFO] [stdout] test agent::llm::providers::tests::test_create_autoglm_client_helper ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_do_action_launch ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_do_action ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_thinking_with_do ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_do_action_wait ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_priority ... ok
[INFO] [stdout] test agent::context::memory::tests::test_memory_expiration ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- agent::llm::parser::tests::test_extract_launch_app stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'agent::llm::parser::tests::test_extract_launch_app' (52) panicked at src/agent/llm/parser.rs:550:9:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: None
[INFO] [stdout]  right: Some("weixin")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x57b35b4f1842 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x57b35b4f1842 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::trace_unsynchronized::<std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x57b35b4f1842 - std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x57b35b4f1842 - <<std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c5ed12ab89cc536a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x57b35b50a95a - <core[c5ed12ab89cc536a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x57b35b50a95a - core[c5ed12ab89cc536a]::fmt::write
[INFO] [stdout]    6:     0x57b35b4f6e66 - std[716c9a7a72e5c14e]::io::default_write_fmt::<alloc[9c68fdf4f4f29218]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x57b35b4f6e66 - <alloc[9c68fdf4f4f29218]::vec::Vec<u8> as std[716c9a7a72e5c14e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x57b35b4cd3bf - <std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x57b35b4cd3bf - std[716c9a7a72e5c14e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x57b35b4e86e9 - std[716c9a7a72e5c14e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x57b35a8eab6e - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x57b35a8eab6e - test[64760d2bdea328cc]::test_main_with_exit_callback::<test[64760d2bdea328cc]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x57b35b4e8952 - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x57b35b4e8952 - std[716c9a7a72e5c14e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x57b35b4cd478 - std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x57b35b4c4af9 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_end_short_backtrace::<std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x57b35b4ce49d - __rustc[4f0b026143eab78e]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x57b35b50b14c - core[c5ed12ab89cc536a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x57b35b50afd3 - core[c5ed12ab89cc536a]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x57b35a91da8c - core[c5ed12ab89cc536a]::panicking::assert_failed::<core[c5ed12ab89cc536a]::option::Option<alloc[9c68fdf4f4f29218]::string::String>, core[c5ed12ab89cc536a]::option::Option<alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x57b35a87f8a9 - scrcpy_rs[d7476156b4669f13]::agent::llm::parser::tests::test_extract_launch_app
[INFO] [stdout]                                at /opt/rustwide/workdir/src/agent/llm/parser.rs:550:9
[INFO] [stdout]   22:     0x57b35a87b317 - scrcpy_rs[d7476156b4669f13]::agent::llm::parser::tests::test_extract_launch_app::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/agent/llm/parser.rs:547:33
[INFO] [stdout]   23:     0x57b35a8031a6 - <scrcpy_rs[d7476156b4669f13]::agent::llm::parser::tests::test_extract_launch_app::{closure#0} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x57b35a8def1b - <fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x57b35a8def1b - test[64760d2bdea328cc]::__rust_begin_short_backtrace::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x57b35a8eb77a - test[64760d2bdea328cc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x57b35a8eb77a - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x57b35a8eb77a - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x57b35a8eb77a - std[716c9a7a72e5c14e]::panicking::catch_unwind::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x57b35a8eb77a - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x57b35a8eb77a - test[64760d2bdea328cc]::run_test_in_process
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x57b35a8eb77a - test[64760d2bdea328cc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x57b35a8e5c44 - test[64760d2bdea328cc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x57b35a8e5c44 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_begin_short_backtrace::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x57b35a8ee272 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x57b35a8ee272 - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x57b35a8ee272 - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x57b35a8ee272 - std[716c9a7a72e5c14e]::panicking::catch_unwind::<(), core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x57b35a8ee272 - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x57b35a8ee272 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x57b35a8ee272 - <std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x57b35b4f080f - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn core[c5ed12ab89cc536a]::ops::function::FnOnce<(), Output = ()> + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   43:     0x57b35b4f080f - <std[716c9a7a72e5c14e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   44:     0x729554fddaa4 - <unknown>
[INFO] [stdout]   45:     0x72955506aa64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     agent::llm::parser::tests::test_extract_launch_app
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 38 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.00s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin scrcpy-rs`
[INFO] running `Command { std: "docker" "inspect" "4824093c29de90a7829d251d988d5638737dabd407e9aafd7109647ad9223b48", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4824093c29de90a7829d251d988d5638737dabd407e9aafd7109647ad9223b48", kill_on_drop: false }`
[INFO] [stdout] 4824093c29de90a7829d251d988d5638737dabd407e9aafd7109647ad9223b48
