[INFO] cloning repository https://github.com/jyasuu/chat-cli
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jyasuu/chat-cli" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjyasuu%2Fchat-cli", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjyasuu%2Fchat-cli'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a962fe33685e33ff92052e425d76d4e3d917e4fd
[INFO] checking jyasuu/chat-cli against try#48c9d93cf65d550d124c40108859fd993778c157 for pr-153692-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjyasuu%2Fchat-cli" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/jyasuu/chat-cli
[INFO] finished tweaking git repo https://github.com/jyasuu/chat-cli
[INFO] tweaked toml for git repo https://github.com/jyasuu/chat-cli written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jyasuu/chat-cli on toolchain 48c9d93cf65d550d124c40108859fd993778c157
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+48c9d93cf65d550d124c40108859fd993778c157" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jyasuu/chat-cli 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" "+48c9d93cf65d550d124c40108859fd993778c157" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+48c9d93cf65d550d124c40108859fd993778c157" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5dddc2adbf9c0ca313844f30bb74e157b6303abc7a57232fb40df87964b10d40
[INFO] running `Command { std: "docker" "start" "-a" "5dddc2adbf9c0ca313844f30bb74e157b6303abc7a57232fb40df87964b10d40", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5dddc2adbf9c0ca313844f30bb74e157b6303abc7a57232fb40df87964b10d40", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5dddc2adbf9c0ca313844f30bb74e157b6303abc7a57232fb40df87964b10d40", kill_on_drop: false }`
[INFO] [stdout] 5dddc2adbf9c0ca313844f30bb74e157b6303abc7a57232fb40df87964b10d40
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+48c9d93cf65d550d124c40108859fd993778c157" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6bb9911459e0b1d0bd578396b4b2f8437c2a5f948403542d9e2cde1e237db0a6
[INFO] running `Command { std: "docker" "start" "-a" "6bb9911459e0b1d0bd578396b4b2f8437c2a5f948403542d9e2cde1e237db0a6", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]     Checking stable_deref_trait v1.2.0
[INFO] [stderr]     Checking cfg-if v1.0.1
[INFO] [stderr]     Checking log v0.4.27
[INFO] [stderr]    Compiling cc v1.2.29
[INFO] [stderr]     Checking bytes v1.10.1
[INFO] [stderr]     Checking memchr v2.7.5
[INFO] [stderr]     Checking writeable v0.6.1
[INFO] [stderr]     Checking litemap v0.8.0
[INFO] [stderr]     Checking slab v0.4.10
[INFO] [stderr]    Compiling icu_properties_data v2.0.1
[INFO] [stderr]    Compiling icu_normalizer_data v2.0.0
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]    Compiling openssl v0.10.73
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]     Checking hashbrown v0.15.4
[INFO] [stderr]    Compiling convert_case v0.7.1
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking signal-hook-registry v1.4.5
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking indexmap v2.10.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rustix v1.0.7
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]    Compiling anyhow v1.0.98
[INFO] [stderr]     Checking linux-raw-sys v0.9.4
[INFO] [stderr]     Checking rustls-pemfile v1.0.4
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]    Compiling document-features v0.2.11
[INFO] [stderr]     Checking signal-hook-mio v0.2.4
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking sync_wrapper v0.1.2
[INFO] [stderr]     Checking dotenv v0.15.0
[INFO] [stderr]    Compiling openssl-sys v0.9.109
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]     Checking tokio v1.46.1
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]     Checking derive_more v2.0.1
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking zerovec v0.11.2
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking tokio-util v0.7.15
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking chat-cli v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: type `MockMessage` is more private than the item `mock_llm::MockLLMClient::get_conversation_history`
[INFO] [stdout]    --> src/mock_llm.rs:206:5
[INFO] [stdout]     |
[INFO] [stdout] 206 |     pub fn get_conversation_history(&self) -> &[MockMessage] {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `mock_llm::MockLLMClient::get_conversation_history` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `MockMessage` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/mock_llm.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | struct MockMessage {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `content` is never read
[INFO] [stdout]   --> src/mock_llm.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct MockMessage {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] 20 |     role: String,
[INFO] [stdout] 21 |     content: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MockMessage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `MockMessage` is more private than the item `MockLLMClient::get_conversation_history`
[INFO] [stdout]    --> src/mock_llm.rs:206:5
[INFO] [stdout]     |
[INFO] [stdout] 206 |     pub fn get_conversation_history(&self) -> &[MockMessage] {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `MockLLMClient::get_conversation_history` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `MockMessage` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/mock_llm.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | struct MockMessage {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `role`, `content`, and `function_call` are never read
[INFO] [stdout]   --> src/mock_llm.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct MockMessage {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 20 |     role: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 21 |     content: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 22 |     function_call: Option<serde_json::Value>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MockMessage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> examples/mock_llm_example.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |     let mut basic_client = AnyChatClient::new_mock();
[INFO] [stdout]    |         ----^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> examples/mock_llm_example.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let mut custom_client = AnyChatClient::new_mock_with_responses(custom_responses);
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> examples/mock_llm_example.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |     let mut streaming_client = AnyChatClient::new_mock();
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> examples/mock_llm_example.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 |     let mut any_client = AnyChatClient::Mock(function_client);
[INFO] [stdout]    |         ----^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/bin/rag.rs:526:10
[INFO] [stdout]     |
[INFO] [stdout] 526 |     for (i, term) in UNIVERSAL_TERMS.iter().enumerate() {
[INFO] [stdout]     |          ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jianlai` is never used
[INFO] [stdout]    --> src/bin/rag.rs:272:4
[INFO] [stdout]     |
[INFO] [stdout] 272 | fn jianlai() -> [&'static str; 55]
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/bin/rag.rs:526:10
[INFO] [stdout]     |
[INFO] [stdout] 526 |     for (i, term) in UNIVERSAL_TERMS.iter().enumerate() {
[INFO] [stdout]     |          ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jianlai` is never used
[INFO] [stdout]    --> src/bin/rag.rs:272:4
[INFO] [stdout]     |
[INFO] [stdout] 272 | fn jianlai() -> [&'static str; 55]
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/prompt_input.rs:1:21
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{self, Write};
[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: `Write`
[INFO] [stdout]  --> src/prompt_input.rs:1:21
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{self, Write};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `MockMessage` is more private than the item `MockLLMClient::get_conversation_history`
[INFO] [stdout]    --> src/mock_llm.rs:206:5
[INFO] [stdout]     |
[INFO] [stdout] 206 |     pub fn get_conversation_history(&self) -> &[MockMessage] {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `MockLLMClient::get_conversation_history` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `MockMessage` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/mock_llm.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | struct MockMessage {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `streaming_enabled` is never read
[INFO] [stdout]   --> src/mock_llm.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct MockLLMClient {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     streaming_enabled: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MockLLMClient` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `role`, `content`, and `function_call` are never read
[INFO] [stdout]   --> src/mock_llm.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct MockMessage {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 20 |     role: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 21 |     content: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 22 |     function_call: Option<serde_json::Value>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MockMessage` 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: multiple associated items are never used
[INFO] [stdout]    --> src/mock_llm.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl MockLLMClient {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn with_responses(responses: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub fn with_streaming(mut self, enabled: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn with_delay(mut self, delay_ms: u64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn add_function_call_response(&mut self, trigger_text: &str, function_call: serde_json::Value) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub async fn send_message(&mut self, message: &str) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub async fn send_message_stream(&mut self, message: &str) -> Result<mpsc::Receiver<(String, Option<serde_json::Value>)>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn get_conversation_history(&self) -> &[MockMessage] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn get_system_prompt(&self) -> Option<&String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_width` is never used
[INFO] [stdout]   --> src/response_card.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl ResponseCard {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn with_width(mut self, width: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `prompt_text` is never read
[INFO] [stdout]   --> src/prompt_input.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct PromptInput {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout]  9 |     width: usize,
[INFO] [stdout] 10 |     prompt_text: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Dots` and `Progress` are never constructed
[INFO] [stdout]   --> src/loading_animation.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub enum AnimationStyle {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 20 |     Spinner,
[INFO] [stdout] 21 |     Dots,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 22 |     Progress,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AnimationStyle` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_message` is never used
[INFO] [stdout]    --> src/loading_animation.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl LoadingHandle {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn update_message(&self, _message: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_loading` is never used
[INFO] [stdout]    --> src/loading_animation.rs:140:14
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub async fn show_loading<F, T>(message: &str, future: F) -> T
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgressSteps` is never constructed
[INFO] [stdout]    --> src/loading_animation.rs:213:12
[INFO] [stdout]     |
[INFO] [stdout] 213 | pub struct ProgressSteps {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `start_step`, `complete_step`, and `fail_step` are never used
[INFO] [stdout]    --> src/loading_animation.rs:219:12
[INFO] [stdout]     |
[INFO] [stdout] 218 | impl ProgressSteps {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 219 |     pub fn new(steps: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn start_step(&mut self, step_index: usize) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn complete_step(&self, step_index: usize) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn fail_step(&self, step_index: usize, error: &str) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_function_call_from_text` is never used
[INFO] [stdout]    --> src/function_calling.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub fn parse_function_call_from_text(text: &str) -> Option<FunctionCall> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Mock` is never constructed
[INFO] [stdout]   --> src/chat_client.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub enum AnyChatClient {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 40 |     Mock(crate::mock_llm::MockLLMClient),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_openai`, `new_mock`, and `new_mock_with_responses` are never used
[INFO] [stdout]    --> src/chat_client.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl AnyChatClient {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn new_openai(api_key: String, model: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn new_mock() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn new_mock_with_responses(responses: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `MockMessage` is more private than the item `mock_llm::MockLLMClient::get_conversation_history`
[INFO] [stdout]    --> src/mock_llm.rs:206:5
[INFO] [stdout]     |
[INFO] [stdout] 206 |     pub fn get_conversation_history(&self) -> &[MockMessage] {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `mock_llm::MockLLMClient::get_conversation_history` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `MockMessage` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/mock_llm.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | struct MockMessage {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `streaming_enabled` is never read
[INFO] [stdout]   --> src/mock_llm.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct MockLLMClient {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     streaming_enabled: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MockLLMClient` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `content` is never read
[INFO] [stdout]   --> src/mock_llm.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct MockMessage {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] 20 |     role: String,
[INFO] [stdout] 21 |     content: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MockMessage` 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 `with_streaming`, `send_message`, `send_message_stream`, and `get_system_prompt` are never used
[INFO] [stdout]    --> src/mock_llm.rs:53:12
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl MockLLMClient {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub fn with_streaming(mut self, enabled: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub async fn send_message(&mut self, message: &str) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub async fn send_message_stream(&mut self, message: &str) -> Result<mpsc::Receiver<(String, Option<serde_json::Value>)>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn get_system_prompt(&self) -> Option<&String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `prompt_text` is never read
[INFO] [stdout]   --> src/prompt_input.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct PromptInput {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout]  9 |     width: usize,
[INFO] [stdout] 10 |     prompt_text: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Dots` and `Progress` are never constructed
[INFO] [stdout]   --> src/loading_animation.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub enum AnimationStyle {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 20 |     Spinner,
[INFO] [stdout] 21 |     Dots,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 22 |     Progress,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AnimationStyle` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_message` is never used
[INFO] [stdout]    --> src/loading_animation.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl LoadingHandle {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn update_message(&self, _message: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_loading` is never used
[INFO] [stdout]    --> src/loading_animation.rs:140:14
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub async fn show_loading<F, T>(message: &str, future: F) -> T
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgressSteps` is never constructed
[INFO] [stdout]    --> src/loading_animation.rs:213:12
[INFO] [stdout]     |
[INFO] [stdout] 213 | pub struct ProgressSteps {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `start_step`, `complete_step`, and `fail_step` are never used
[INFO] [stdout]    --> src/loading_animation.rs:219:12
[INFO] [stdout]     |
[INFO] [stdout] 218 | impl ProgressSteps {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 219 |     pub fn new(steps: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn start_step(&mut self, step_index: usize) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn complete_step(&self, step_index: usize) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn fail_step(&self, step_index: usize, error: &str) -> io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_function_call_from_text` is never used
[INFO] [stdout]    --> src/function_calling.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub fn parse_function_call_from_text(text: &str) -> Option<FunctionCall> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Mock` is never constructed
[INFO] [stdout]   --> src/chat_client.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub enum AnyChatClient {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 40 |     Mock(crate::mock_llm::MockLLMClient),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_openai`, `new_mock`, and `new_mock_with_responses` are never used
[INFO] [stdout]    --> src/chat_client.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl AnyChatClient {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn new_openai(api_key: String, model: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn new_mock() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn new_mock_with_responses(responses: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 05s
[INFO] running `Command { std: "docker" "inspect" "6bb9911459e0b1d0bd578396b4b2f8437c2a5f948403542d9e2cde1e237db0a6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6bb9911459e0b1d0bd578396b4b2f8437c2a5f948403542d9e2cde1e237db0a6", kill_on_drop: false }`
[INFO] [stdout] 6bb9911459e0b1d0bd578396b4b2f8437c2a5f948403542d9e2cde1e237db0a6
