[INFO] cloning repository https://github.com/qq296565302/AgentHub-----Rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/qq296565302/AgentHub-----Rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqq296565302%2FAgentHub-----Rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqq296565302%2FAgentHub-----Rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 8102fbb58af36a05c3c02226737d90260685b6a3
[INFO] checking qq296565302/AgentHub-----Rust against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqq296565302%2FAgentHub-----Rust" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/qq296565302/AgentHub-----Rust
[INFO] finished tweaking git repo https://github.com/qq296565302/AgentHub-----Rust
[INFO] tweaked toml for git repo https://github.com/qq296565302/AgentHub-----Rust written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/qq296565302/AgentHub-----Rust on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/qq296565302/AgentHub-----Rust 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" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded fancy-regex v0.12.0
[INFO] [stderr]   Downloaded tree-sitter-javascript v0.21.4
[INFO] [stderr]   Downloaded sketches-ddsketch v0.2.2
[INFO] [stderr]   Downloaded cmake v0.1.53
[INFO] [stderr]   Downloaded backoff v0.4.0
[INFO] [stderr]   Downloaded metrics-exporter-prometheus v0.15.3
[INFO] [stderr]   Downloaded metrics v0.23.1
[INFO] [stderr]   Downloaded axum-macros v0.4.2
[INFO] [stderr]   Downloaded metrics-util v0.17.0
[INFO] [stderr]   Downloaded aws-lc-rs v1.13.3
[INFO] [stderr]   Downloaded tree-sitter v0.21.0
[INFO] [stderr]   Downloaded tree-sitter-rust v0.21.2
[INFO] [stderr]   Downloaded ring v0.17.9
[INFO] [stderr]   Downloaded tiktoken-rs v0.5.9
[INFO] [stderr]   Downloaded aws-lc-sys v0.30.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a0f1d54d20733cc3daf2f21173947a4d8f83905c2f2b17cc0c54f1e634af1486
[INFO] running `Command { std: "docker" "start" "a0f1d54d20733cc3daf2f21173947a4d8f83905c2f2b17cc0c54f1e634af1486", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a0f1d54d20733cc3daf2f21173947a4d8f83905c2f2b17cc0c54f1e634af1486", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a0f1d54d20733cc3daf2f21173947a4d8f83905c2f2b17cc0c54f1e634af1486" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a0f1d54d20733cc3daf2f21173947a4d8f83905c2f2b17cc0c54f1e634af1486", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a0f1d54d20733cc3daf2f21173947a4d8f83905c2f2b17cc0c54f1e634af1486" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling cc v1.0.106
[INFO] [stderr]     Checking log v0.4.29
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]     Checking zerofrom v0.1.7
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking bitflags v2.11.1
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking rustix v1.1.4
[INFO] [stderr]    Compiling nix v0.28.0
[INFO] [stderr]    Compiling pest v2.8.6
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking bit-vec v0.6.3
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking bit-set v0.5.3
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling pin-project-internal v1.1.11
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking nibble_vec v0.1.0
[INFO] [stderr]     Checking endian-type v0.1.2
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking predicates-core v1.0.10
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]    Compiling tree-sitter v0.21.0
[INFO] [stderr]    Compiling ring v0.17.9
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]    Compiling tree-sitter-javascript v0.21.4
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]    Compiling tree-sitter-python v0.21.0
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling tree-sitter-rust v0.21.2
[INFO] [stderr]    Compiling tree-sitter-typescript v0.21.2
[INFO] [stderr]     Checking float-cmp v0.10.0
[INFO] [stderr]     Checking radix_trie v0.2.1
[INFO] [stderr]     Checking tinyvec v1.11.0
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking rayon-core v1.13.0
[INFO] [stderr]    Compiling pest_meta v2.8.6
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking fd-lock v4.0.4
[INFO] [stderr]    Compiling axum-macros v0.4.2
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking termtree v0.5.1
[INFO] [stderr]     Checking unsafe-libyaml v0.2.11
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking normalize-line-endings v0.3.0
[INFO] [stderr]     Checking home v0.5.12
[INFO] [stderr]     Checking unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling agenthub v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling assert_cmd v2.2.1
[INFO] [stderr]     Checking pin-project v1.1.11
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking deadpool-runtime v0.1.4
[INFO] [stderr]     Checking matchit v0.7.3
[INFO] [stderr]     Checking difflib v0.4.0
[INFO] [stderr]     Checking secrecy v0.8.0
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking predicates-tree v1.0.13
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling pest_generator v2.8.6
[INFO] [stderr]     Checking getrandom v0.4.2
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking tokio v1.52.1
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking assert-json-diff v2.0.2
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking bstr v1.12.1
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking uuid v1.23.1
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]    Compiling pest_derive v2.8.6
[INFO] [stderr]     Checking fancy-regex v0.12.0
[INFO] [stderr]     Checking handlebars v5.1.2
[INFO] [stderr]     Checking predicates v3.1.4
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]     Checking wait-timeout v0.2.1
[INFO] [stderr]     Checking unicode-normalization v0.1.25
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]     Checking tiktoken-rs v0.5.9
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]     Checking rustyline v14.0.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking metrics v0.23.1
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking deadpool v0.12.3
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]     Checking rand v0.8.6
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking h2 v0.4.13
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking tokio-test v0.4.5
[INFO] [stderr]     Checking backoff v0.4.0
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking wiremock v0.6.5
[INFO] [stderr]     Checking hyper-rustls v0.24.2
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stdout] warning: unused import: `File`
[INFO] [stdout]  --> src/audit.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs::{File, OpenOptions};
[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: `Path`
[INFO] [stdout]  --> src/audit.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LlmError`
[INFO] [stdout]  --> src/llm/mod.rs:6:35
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::error::{AgentHubError, LlmError, Result};
[INFO] [stdout]   |                                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gauge`
[INFO] [stdout]  --> src/metrics.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use metrics::{counter, gauge, histogram};
[INFO] [stdout]   |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `QueryCursor`
[INFO] [stdout]  --> src/parser/language.rs:4:36
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tree_sitter::{Language, Query, QueryCursor};
[INFO] [stdout]   |                                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ast_utils::AstUtils`
[INFO] [stdout]  --> src/parser/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use ast_utils::AstUtils;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `language::LanguageRegistry`
[INFO] [stdout]  --> src/parser/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use language::LanguageRegistry;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parser::CodeParser`
[INFO] [stdout]  --> src/parser/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use parser::CodeParser;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `circuit_breaker::CircuitBreaker`
[INFO] [stdout]  --> src/resilience/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use circuit_breaker::CircuitBreaker;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `retry::RetryPolicy`
[INFO] [stdout]  --> src/resilience/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use retry::RetryPolicy;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Response`
[INFO] [stdout]  --> src/server/handlers.rs:6:36
[INFO] [stdout]   |
[INFO] [stdout] 6 | use axum::response::{IntoResponse, Response};
[INFO] [stdout]   |                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `File`
[INFO] [stdout]  --> src/audit.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs::{File, OpenOptions};
[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: `Path`
[INFO] [stdout]  --> src/audit.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LlmError`
[INFO] [stdout]  --> src/llm/mod.rs:6:35
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::error::{AgentHubError, LlmError, Result};
[INFO] [stdout]   |                                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gauge`
[INFO] [stdout]  --> src/metrics.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use metrics::{counter, gauge, histogram};
[INFO] [stdout]   |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `QueryCursor`
[INFO] [stdout]  --> src/parser/language.rs:4:36
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tree_sitter::{Language, Query, QueryCursor};
[INFO] [stdout]   |                                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ast_utils::AstUtils`
[INFO] [stdout]  --> src/parser/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use ast_utils::AstUtils;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `language::LanguageRegistry`
[INFO] [stdout]  --> src/parser/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use language::LanguageRegistry;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parser::CodeParser`
[INFO] [stdout]  --> src/parser/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use parser::CodeParser;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `circuit_breaker::CircuitBreaker`
[INFO] [stdout]  --> src/resilience/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use circuit_breaker::CircuitBreaker;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `retry::RetryPolicy`
[INFO] [stdout]  --> src/resilience/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use retry::RetryPolicy;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Response`
[INFO] [stdout]  --> src/server/handlers.rs:6:36
[INFO] [stdout]   |
[INFO] [stdout] 6 | use axum::response::{IntoResponse, Response};
[INFO] [stdout]   |                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/parser/parser.rs:59:23
[INFO] [stdout]    |
[INFO] [stdout] 59 |             .map_err(|e| AgentHubError::FileReadError { path: path.to_string() })?;
[INFO] [stdout]    |                       ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/guardrails/file_guard.rs:133:14
[INFO] [stdout]     |
[INFO] [stdout] 133 |         let (dir, workspace) = setup_workspace();
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/guardrails/file_guard.rs:160:14
[INFO] [stdout]     |
[INFO] [stdout] 160 |         let (dir, workspace) = setup_workspace();
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/guardrails/file_guard.rs:174:14
[INFO] [stdout]     |
[INFO] [stdout] 174 |         let (dir, workspace) = setup_workspace();
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/guardrails/file_guard.rs:188:14
[INFO] [stdout]     |
[INFO] [stdout] 188 |         let (dir, workspace) = setup_workspace();
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/guardrails/file_guard.rs:202:14
[INFO] [stdout]     |
[INFO] [stdout] 202 |         let (dir, workspace) = setup_workspace();
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/guardrails/file_guard.rs:217:14
[INFO] [stdout]     |
[INFO] [stdout] 217 |         let (dir, workspace) = setup_workspace();
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_user_id`, `with_skill_name`, `with_metadata`, and `with_duration` are never used
[INFO] [stdout]   --> src/audit.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl AuditEntry {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 43 |     pub fn new(event_type: AuditEventType, level: AuditLevel, message: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn with_user_id(mut self, user_id: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn with_skill_name(mut self, skill_name: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn with_metadata(mut self, key: &str, value: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn with_duration(mut self, ms: u64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `buffer_size` and `retention_days` are never read
[INFO] [stdout]   --> src/audit.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct AuditLogger {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 81 |     buffer_size: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 82 |     retention_days: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audit.rs:98:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl AuditLogger {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn with_buffer_size(mut self, size: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn with_retention_days(mut self, days: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn from_config(enabled: bool, log_dir: &str, retention_days: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn log(&self, entry: AuditEntry) -> std::io::Result<()> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn flush(&self) -> std::io::Result<()> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     fn flush_locked(&self, buffer: &mut Vec<AuditEntry>) -> std::io::Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn cleanup_expired(&self) -> std::io::Result<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `provider_names` is never used
[INFO] [stdout]   --> src/config/mod.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl LLMConfig {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn provider_names(&self) -> Vec<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load_or_default` is never used
[INFO] [stdout]    --> src/config/mod.rs:320:12
[INFO] [stdout]     |
[INFO] [stdout] 263 | impl Settings {
[INFO] [stdout]     | ------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn load_or_default() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/error.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum AgentHubError {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 12 |     SkillExecutionFailed { reason: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     InputBlocked { violation_type: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     LlmUnavailable,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     LlmTimeout { timeout_secs: u64 },
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     FileNotFound { path: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     FileReadError { path: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     MissingConfig { field: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     UnsupportedLanguage(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     InvalidRequest(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     UnknownCommand(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AgentHubError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `InvalidManifest`, `InitializationFailed`, and `InvalidParameters` are never constructed
[INFO] [stdout]   --> src/error.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub enum SkillError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] 65 |     #[error("Invalid skill manifest: {0}")]
[INFO] [stdout] 66 |     InvalidManifest(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     InitializationFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     InvalidParameters(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SkillError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `PromptInjectionDetected`, `PiiDetected`, `InputTooLarge`, and `RateLimited` are never constructed
[INFO] [stdout]   --> src/error.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub enum SecurityError {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] 77 |     #[error("Prompt injection detected")]
[INFO] [stdout] 78 |     PromptInjectionDetected,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     PiiDetected { pii_type: String },
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     InputTooLarge { size: usize, max_size: usize },
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     RateLimited,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SecurityError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NoResponse`, `ModelNotFound`, `ContextLengthExceeded`, `CircuitOpen`, and `NoMoreResponses` are never constructed
[INFO] [stdout]    --> src/error.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout]  97 | pub enum LlmError {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 111 |     NoResponse,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     ModelNotFound(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     ContextLengthExceeded,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     CircuitOpen,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     NoMoreResponses,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `LlmError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_config`, `with_layer`, and `validate_file_path` are never used
[INFO] [stdout]    --> src/guardrails/mod.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl SecurityPipeline {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn from_config(config: &SecurityConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn with_layer(mut self, layer: Box<dyn Guardrail>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn validate_file_path(&self, path: &str, workspace: &str) -> Result<String, SecurityError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `blocked_patterns` is never read
[INFO] [stdout]  --> src/guardrails/input_validator.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct InputValidator {
[INFO] [stdout]   |            -------------- field in this struct
[INFO] [stdout] 8 |     max_input_size: usize,
[INFO] [stdout] 9 |     blocked_patterns: Vec<String>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `InputValidator` 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: methods `validate` and `validate_file_path` are never used
[INFO] [stdout]   --> src/guardrails/input_validator.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl InputValidator {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn validate<'a>(&self, input: &'a str) -> Result<&'a str, SecurityError> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn validate_file_path(&self, path: &str, workspace: &str) -> Result<String, SecurityError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/guardrails/output_sanitizer.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl OutputSanitizer {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 51 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `permissive` is never used
[INFO] [stdout]   --> src/guardrails/pii_detector.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl PIIDetectorGuard {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 41 |     pub fn permissive() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Strict` and `Permissive` are never constructed
[INFO] [stdout]   --> src/guardrails/prompt_injection.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub enum InjectionThreshold {
[INFO] [stdout]    |          ------------------ variants in this enum
[INFO] [stdout] 49 |     Strict,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 50 |     Normal,
[INFO] [stdout] 51 |     Permissive,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InjectionThreshold` 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 function `with_threshold` is never used
[INFO] [stdout]   --> src/guardrails/prompt_injection.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl PromptInjectionGuard {
[INFO] [stdout]    | ------------------------- associated function in this implementation
[INFO] [stdout] 63 |     pub fn with_threshold(threshold: InjectionThreshold) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `burst_size` is never read
[INFO] [stdout]   --> src/guardrails/rate_limiter.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct RateLimiter {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 14 |     max_requests_per_minute: u32,
[INFO] [stdout] 15 |     burst_size: u32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RateLimiter` 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 `check_burst`, `remaining`, and `cleanup` are never used
[INFO] [stdout]    --> src/guardrails/rate_limiter.rs:59:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl RateLimiter {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn check_burst(&self, key: &str) -> Result<(), RateLimitError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn remaining(&self, key: &str) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn cleanup(&self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BurstExceeded` is never constructed
[INFO] [stdout]    --> src/guardrails/rate_limiter.rs:122:5
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub enum RateLimitError {
[INFO] [stdout]     |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 122 |     BurstExceeded { burst_size: u32 },
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RateLimitError` 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 `with_max_tokens` and `with_stream` are never used
[INFO] [stdout]   --> src/llm/mod.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl LlmRequest {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn with_max_tokens(mut self, tokens: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn with_stream(mut self, stream: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/llm/mod.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | impl LlmResponse {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 68 |     pub fn new(content: String, model: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StreamChunk` is never constructed
[INFO] [stdout]   --> src/llm/mod.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct StreamChunk {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stream` is never used
[INFO] [stdout]   --> src/llm/mod.rs:90:14
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub trait LlmClient: Send + Sync {
[INFO] [stdout]    |           --------- method in this trait
[INFO] [stdout] 89 |     async fn complete(&self, request: LlmRequest) -> Result<LlmResponse>;
[INFO] [stdout] 90 |     async fn stream(&self, request: LlmRequest) -> Result<futures::stream::BoxStream<'static, Result<StreamChunk>>>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base_url`, `model`, `timeout`, `temperature`, and `max_tokens` are never read
[INFO] [stdout]    --> src/llm/mod.rs:96:5
[INFO] [stdout]     |
[INFO] [stdout]  95 | pub struct LlmClientBuilder {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout]  96 |     base_url: String,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]  97 |     model: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]  98 |     timeout: Duration,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]  99 |     temperature: f32,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 100 |     max_tokens: usize,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `base_url`, `model`, `timeout`, `temperature`, `max_tokens`, and `build` are never used
[INFO] [stdout]    --> src/llm/mod.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | impl LlmClientBuilder {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn base_url(mut self, url: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn model(mut self, model: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn timeout(mut self, timeout: Duration) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn temperature(mut self, temp: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn max_tokens(mut self, tokens: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn build(self) -> Result<Box<dyn LlmClient>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `system` is never used
[INFO] [stdout]    --> src/llm/mod.rs:239:12
[INFO] [stdout]     |
[INFO] [stdout] 230 | impl Message {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn system(content: String) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_default_response`, `get_request_log`, and `add_response` are never used
[INFO] [stdout]   --> src/llm/mock.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl MockLlmClient {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 44 |     pub fn new(responses: Vec<MockResponse>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn with_default_response(content: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub async fn get_request_log(&self) -> Vec<LlmRequest> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub async fn add_response(&self, response: MockResponse) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `role` is never read
[INFO] [stdout]   --> src/llm/ollama.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct OllamaMessage {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 22 |     role: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OllamaMessage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OllamaModelsResponse` is never constructed
[INFO] [stdout]   --> src/llm/ollama.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | struct OllamaModelsResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OllamaModel` is never constructed
[INFO] [stdout]   --> src/llm/ollama.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | struct OllamaModel {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `list_models` and `is_available` are never used
[INFO] [stdout]   --> src/llm/ollama.rs:68:18
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl OllamaClient {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub async fn list_models(&self) -> Result<Vec<String>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub async fn is_available(&self) -> bool {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `finish_reason` is never read
[INFO] [stdout]   --> src/llm/openai.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct OpenAiChoice {
[INFO] [stdout]    |        ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     finish_reason: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenAiChoice` 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 `role` is never read
[INFO] [stdout]   --> src/llm/openai.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct OpenAiMessage {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 26 |     role: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenAiMessage` 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 `total_tokens` is never read
[INFO] [stdout]   --> src/llm/openai.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | struct OpenAiUsage {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     total_tokens: Option<usize>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenAiUsage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OpenAiStreamChunk` is never constructed
[INFO] [stdout]   --> src/llm/openai.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | struct OpenAiStreamChunk {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OpenAiStreamChoice` is never constructed
[INFO] [stdout]   --> src/llm/openai.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct OpenAiStreamChoice {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OpenAiStreamDelta` is never constructed
[INFO] [stdout]   --> src/llm/openai.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | struct OpenAiStreamDelta {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MetricsCollector` is never constructed
[INFO] [stdout]  --> src/metrics.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct MetricsCollector {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/metrics.rs:21:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl MetricsCollector {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  21 |     pub fn new() -> Arc<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn record_llm_request(&self, duration_ms: u64, success: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn record_skill_execution(&self, skill_name: &str, duration_ms: u64, success: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn record_security_check(&self, blocked: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn record_parse_operation(&self, success: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn avg_llm_duration_ms(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn llm_error_rate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn security_block_rate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn snapshot(&self) -> MetricsSnapshot {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MetricsSnapshot` is never constructed
[INFO] [stdout]    --> src/metrics.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub struct MetricsSnapshot {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Timer` is never constructed
[INFO] [stdout]    --> src/metrics.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub struct Timer {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `start`, `elapsed_ms`, and `stop` are never used
[INFO] [stdout]    --> src/metrics.rs:162:12
[INFO] [stdout]     |
[INFO] [stdout] 161 | impl Timer {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 162 |     pub fn start() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn elapsed_ms(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn stop(self) -> u64 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AstUtils` is never constructed
[INFO] [stdout]  --> src/parser/ast_utils.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct AstUtils;
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/parser/ast_utils.rs:7:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl AstUtils {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout]   7 |     pub fn get_node_text<'a>(node: &Node, source: &'a str) -> &'a str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  11 |     pub fn find_nodes_by_kind<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub fn count_nodes_by_kind(node: &Node, kind: &str) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn get_depth(node: &Node) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn get_comment_ratio(source: &str, lang: SupportedLanguage) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn extract_imports(source: &str, lang: SupportedLanguage) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn calculate_complexity(node: &Node) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     fn walk_complexity<'a>(node: &Node<'a>, keywords: &[&str], count: &mut usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extension` is never used
[INFO] [stdout]   --> src/parser/language.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl SupportedLanguage {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn extension(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `is_supported` is never used
[INFO] [stdout]    --> src/parser/language.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout]  98 | impl LanguageRegistry {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn is_supported(ext: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `parse_file`, `get_function_at_line`, and `get_function_by_name` are never used
[INFO] [stdout]    --> src/parser/parser.rs:52:12
[INFO] [stdout]     |
[INFO] [stdout]  29 | impl CodeParser {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn parse_file(&mut self, path: &str) -> Result<ParseResult> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn get_function_at_line(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn get_function_by_name(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CircuitState` is never used
[INFO] [stdout]  --> src/resilience/circuit_breaker.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum CircuitState {
[INFO] [stdout]   |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CircuitBreakerConfig` is never constructed
[INFO] [stdout]   --> src/resilience/circuit_breaker.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct CircuitBreakerConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CircuitBreakerInner` is never constructed
[INFO] [stdout]   --> src/resilience/circuit_breaker.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | struct CircuitBreakerInner {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `CLOSED`, `OPEN`, `HALF_OPEN`, and `get_state` are never used
[INFO] [stdout]   --> src/resilience/circuit_breaker.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl CircuitBreakerInner {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 41 |     const CLOSED: u8 = 0;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 42 |     const OPEN: u8 = 1;
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 43 |     const HALF_OPEN: u8 = 2;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 44 |
[INFO] [stdout] 45 |     fn get_state(&self) -> CircuitState {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CircuitBreaker` is never constructed
[INFO] [stdout]   --> src/resilience/circuit_breaker.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct CircuitBreaker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/resilience/circuit_breaker.rs:76:12
[INFO] [stdout]     |
[INFO] [stdout]  75 | impl CircuitBreaker {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  76 |     pub fn new(name: &str, config: CircuitBreakerConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn name(&self) -> &str {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn state(&self) -> CircuitState {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn is_call_allowed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn record_success(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn record_failure(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn failure_count(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub async fn execute<F, Fut, T>(&self, operation: F) -> crate::error::Result<T>
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RetryPolicy` is never constructed
[INFO] [stdout]  --> src/resilience/retry.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct RetryPolicy {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_initial_interval`, `with_max_interval`, `to_backoff`, `is_retryable`, and `execute` are never used
[INFO] [stdout]   --> src/resilience/retry.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl RetryPolicy {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 26 |     pub fn new(max_retries: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn with_initial_interval(mut self, duration: Duration) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn with_max_interval(mut self, duration: Duration) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn to_backoff(&self) -> ExponentialBackoff {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn is_retryable(error: &AgentHubError) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub async fn execute<F, Fut, T>(&self, operation: F) -> crate::error::Result<T>
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPL_PROMPT` is never used
[INFO] [stdout]   --> src/repl/mod.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const REPL_PROMPT: &str = "agenthub> ";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MULTILINE_PROMPT` is never used
[INFO] [stdout]   --> src/repl/mod.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const MULTILINE_PROMPT: &str = "... ";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stream` is never read
[INFO] [stdout]   --> src/server/handlers.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ChatRequest {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub stream: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_rate_limit` is never used
[INFO] [stdout]   --> src/server/state.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl AppState {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn with_rate_limit(mut self, config: &RateLimitConfig) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `description` is never used
[INFO] [stdout]   --> src/skills/mod.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Skill: Send + Sync {
[INFO] [stdout]    |           ----- method in this trait
[INFO] [stdout] 42 |     fn name(&self) -> &str;
[INFO] [stdout] 43 |     fn description(&self) -> &str;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `parser` is never read
[INFO] [stdout]   --> src/skills/code_explainer.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct CodeExplainerSkill {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 41 |     llm: Box<dyn LlmClient>,
[INFO] [stdout] 42 |     parser: CodeParser,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_mock_llm`, `explain_function`, and `explain_at_line` are never used
[INFO] [stdout]    --> src/skills/code_explainer.rs:57:12
[INFO] [stdout]     |
[INFO] [stdout]  47 | impl CodeExplainerSkill {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn with_mock_llm() -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub async fn explain_function(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub async fn explain_at_line(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get` and `list_names` are never used
[INFO] [stdout]   --> src/skills/registry.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl SkillRegistry {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn get(&self, name: &str) -> Option<&dyn Skill> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn list_names(&self) -> Vec<String> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `parser` is never read
[INFO] [stdout]   --> src/skills/test_generator.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct TestGeneratorSkill {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 43 |     llm: Box<dyn LlmClient>,
[INFO] [stdout] 44 |     parser: CodeParser,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_mock_llm` and `generate_tests_for_function` are never used
[INFO] [stdout]   --> src/skills/test_generator.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl TestGeneratorSkill {
[INFO] [stdout]    | ----------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn with_mock_llm() -> Result<Self> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |     pub async fn generate_tests_for_function(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/parser/parser.rs:59:23
[INFO] [stdout]    |
[INFO] [stdout] 59 |             .map_err(|e| AgentHubError::FileReadError { path: path.to_string() })?;
[INFO] [stdout]    |                       ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `load_or_default` is never used
[INFO] [stdout]    --> src/config/mod.rs:320:12
[INFO] [stdout]     |
[INFO] [stdout] 263 | impl Settings {
[INFO] [stdout]     | ------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn load_or_default() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/error.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum AgentHubError {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 12 |     SkillExecutionFailed { reason: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     InputBlocked { violation_type: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     LlmUnavailable,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     LlmTimeout { timeout_secs: u64 },
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     FileNotFound { path: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     FileReadError { path: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     MissingConfig { field: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     UnsupportedLanguage(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     InvalidRequest(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     UnknownCommand(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AgentHubError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `InvalidManifest`, `InitializationFailed`, and `InvalidParameters` are never constructed
[INFO] [stdout]   --> src/error.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub enum SkillError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] 65 |     #[error("Invalid skill manifest: {0}")]
[INFO] [stdout] 66 |     InvalidManifest(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     InitializationFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     InvalidParameters(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SkillError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `PromptInjectionDetected`, `PiiDetected`, and `RateLimited` are never constructed
[INFO] [stdout]   --> src/error.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub enum SecurityError {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] 77 |     #[error("Prompt injection detected")]
[INFO] [stdout] 78 |     PromptInjectionDetected,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     PiiDetected { pii_type: String },
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     RateLimited,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SecurityError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NoResponse`, `ContextLengthExceeded`, and `NoMoreResponses` are never constructed
[INFO] [stdout]    --> src/error.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout]  97 | pub enum LlmError {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 111 |     NoResponse,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     ContextLengthExceeded,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     NoMoreResponses,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `LlmError` 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 `with_layer` and `validate_file_path` are never used
[INFO] [stdout]    --> src/guardrails/mod.rs:60:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl SecurityPipeline {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn with_layer(mut self, layer: Box<dyn Guardrail>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn validate_file_path(&self, path: &str, workspace: &str) -> Result<String, SecurityError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `validate_file_path` is never used
[INFO] [stdout]   --> src/guardrails/input_validator.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl InputValidator {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn validate_file_path(&self, path: &str, workspace: &str) -> Result<String, SecurityError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_allow_all_blocks_link_local` is never used
[INFO] [stdout]    --> src/guardrails/network_guard.rs:147:8
[INFO] [stdout]     |
[INFO] [stdout] 147 |     fn test_allow_all_blocks_link_local() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/guardrails/output_sanitizer.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl OutputSanitizer {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 51 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Permissive` is never constructed
[INFO] [stdout]   --> src/guardrails/prompt_injection.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub enum InjectionThreshold {
[INFO] [stdout]    |          ------------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 51 |     Permissive,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InjectionThreshold` 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 `base_url`, `model`, `timeout`, `temperature`, and `max_tokens` are never read
[INFO] [stdout]    --> src/llm/mod.rs:96:5
[INFO] [stdout]     |
[INFO] [stdout]  95 | pub struct LlmClientBuilder {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout]  96 |     base_url: String,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]  97 |     model: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]  98 |     timeout: Duration,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]  99 |     temperature: f32,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 100 |     max_tokens: usize,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `base_url`, `model`, `timeout`, `temperature`, `max_tokens`, and `build` are never used
[INFO] [stdout]    --> src/llm/mod.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | impl LlmClientBuilder {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn base_url(mut self, url: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn model(mut self, model: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn timeout(mut self, timeout: Duration) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn temperature(mut self, temp: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn max_tokens(mut self, tokens: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn build(self) -> Result<Box<dyn LlmClient>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `system` is never used
[INFO] [stdout]    --> src/llm/mod.rs:239:12
[INFO] [stdout]     |
[INFO] [stdout] 230 | impl Message {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn system(content: String) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_response` is never used
[INFO] [stdout]   --> src/llm/mock.rs:68:18
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl MockLlmClient {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub async fn add_response(&self, response: MockResponse) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `role` is never read
[INFO] [stdout]   --> src/llm/ollama.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct OllamaMessage {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 22 |     role: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OllamaMessage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OllamaModelsResponse` is never constructed
[INFO] [stdout]   --> src/llm/ollama.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | struct OllamaModelsResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OllamaModel` is never constructed
[INFO] [stdout]   --> src/llm/ollama.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | struct OllamaModel {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `list_models` and `is_available` are never used
[INFO] [stdout]   --> src/llm/ollama.rs:68:18
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl OllamaClient {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub async fn list_models(&self) -> Result<Vec<String>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub async fn is_available(&self) -> bool {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `finish_reason` is never read
[INFO] [stdout]   --> src/llm/openai.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct OpenAiChoice {
[INFO] [stdout]    |        ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     finish_reason: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenAiChoice` 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 `role` is never read
[INFO] [stdout]   --> src/llm/openai.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct OpenAiMessage {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 26 |     role: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenAiMessage` 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 `total_tokens` is never read
[INFO] [stdout]   --> src/llm/openai.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | struct OpenAiUsage {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     total_tokens: Option<usize>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenAiUsage` 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 `model` is never read
[INFO] [stdout]   --> src/llm/openai.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | struct OpenAiStreamChunk {
[INFO] [stdout]    |        ----------------- field in this struct
[INFO] [stdout] 39 |     choices: Vec<OpenAiStreamChoice>,
[INFO] [stdout] 40 |     model: Option<String>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenAiStreamChunk` 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 `finish_reason` is never read
[INFO] [stdout]   --> src/llm/openai.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct OpenAiStreamChoice {
[INFO] [stdout]    |        ------------------ field in this struct
[INFO] [stdout] 45 |     delta: OpenAiStreamDelta,
[INFO] [stdout] 46 |     finish_reason: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OpenAiStreamChoice` 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: method `elapsed_ms` is never used
[INFO] [stdout]    --> src/metrics.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 161 | impl Timer {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn elapsed_ms(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_node_text`, `find_nodes_by_kind`, `count_nodes_by_kind`, `get_depth`, `calculate_complexity`, and `walk_complexity` are never used
[INFO] [stdout]    --> src/parser/ast_utils.rs:7:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl AstUtils {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout]   7 |     pub fn get_node_text<'a>(node: &Node, source: &'a str) -> &'a str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  11 |     pub fn find_nodes_by_kind<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub fn count_nodes_by_kind(node: &Node, kind: &str) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn get_depth(node: &Node) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn calculate_complexity(node: &Node) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     fn walk_complexity<'a>(node: &Node<'a>, keywords: &[&str], count: &mut usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `parse_file` is never used
[INFO] [stdout]   --> src/parser/parser.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl CodeParser {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn parse_file(&mut self, path: &str) -> Result<ParseResult> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> src/resilience/circuit_breaker.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | impl CircuitBreaker {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPL_PROMPT` is never used
[INFO] [stdout]   --> src/repl/mod.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const REPL_PROMPT: &str = "agenthub> ";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MULTILINE_PROMPT` is never used
[INFO] [stdout]   --> src/repl/mod.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const MULTILINE_PROMPT: &str = "... ";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stream` is never read
[INFO] [stdout]   --> src/server/handlers.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ChatRequest {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub stream: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_rate_limit` is never used
[INFO] [stdout]   --> src/server/state.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl AppState {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn with_rate_limit(mut self, config: &RateLimitConfig) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `description` is never used
[INFO] [stdout]   --> src/skills/mod.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub trait Skill: Send + Sync {
[INFO] [stdout]    |           ----- method in this trait
[INFO] [stdout] 42 |     fn name(&self) -> &str;
[INFO] [stdout] 43 |     fn description(&self) -> &str;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `parser` is never read
[INFO] [stdout]   --> src/skills/code_explainer.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct CodeExplainerSkill {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 41 |     llm: Box<dyn LlmClient>,
[INFO] [stdout] 42 |     parser: CodeParser,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `explain_function` and `explain_at_line` are never used
[INFO] [stdout]    --> src/skills/code_explainer.rs:108:18
[INFO] [stdout]     |
[INFO] [stdout]  47 | impl CodeExplainerSkill {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub async fn explain_function(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub async fn explain_at_line(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]   --> src/skills/registry.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl SkillRegistry {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn get(&self, name: &str) -> Option<&dyn Skill> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `parser` is never read
[INFO] [stdout]   --> src/skills/test_generator.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct TestGeneratorSkill {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 43 |     llm: Box<dyn LlmClient>,
[INFO] [stdout] 44 |     parser: CodeParser,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `generate_tests_for_function` is never used
[INFO] [stdout]   --> src/skills/test_generator.rs:96:18
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl TestGeneratorSkill {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 96 |     pub async fn generate_tests_for_function(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `handlebars`
[INFO] [stderr]   --> Cargo.toml:21:1
[INFO] [stderr]    |
[INFO] [stderr] 21 | handlebars = "5"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `handlebars`
[INFO] [stderr] warning: unused dependency `lru`
[INFO] [stderr]   --> Cargo.toml:22:1
[INFO] [stderr]    |
[INFO] [stderr] 22 | lru = "0.12"
[INFO] [stderr]    | ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `lru`
[INFO] [stderr] warning: unused dependency `secrecy`
[INFO] [stderr]   --> Cargo.toml:28:1
[INFO] [stderr]    |
[INFO] [stderr] 28 | secrecy = "0.8"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `secrecy`
[INFO] [stderr] warning: unused dependency `tiktoken-rs`
[INFO] [stderr]   --> Cargo.toml:32:1
[INFO] [stderr]    |
[INFO] [stderr] 32 | tiktoken-rs = "0.5"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `tiktoken-rs`
[INFO] [stderr] warning: `agenthub` (manifest) generated 4 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 06s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.28.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "a0f1d54d20733cc3daf2f21173947a4d8f83905c2f2b17cc0c54f1e634af1486", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a0f1d54d20733cc3daf2f21173947a4d8f83905c2f2b17cc0c54f1e634af1486", kill_on_drop: false }`
[INFO] [stdout] a0f1d54d20733cc3daf2f21173947a4d8f83905c2f2b17cc0c54f1e634af1486
