[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 master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjyasuu%2Fchat-cli" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/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-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jyasuu/chat-cli on toolchain 779e19d8baa3e3625bd4fc5c85cbb2ad47b43155
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "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" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] fdb9370ff6c4936ec5d5649a41549f48f1d7206cbec2662fd63ea1548443bc3b
[INFO] running `Command { std: "docker" "start" "-a" "fdb9370ff6c4936ec5d5649a41549f48f1d7206cbec2662fd63ea1548443bc3b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fdb9370ff6c4936ec5d5649a41549f48f1d7206cbec2662fd63ea1548443bc3b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fdb9370ff6c4936ec5d5649a41549f48f1d7206cbec2662fd63ea1548443bc3b", kill_on_drop: false }`
[INFO] [stdout] fdb9370ff6c4936ec5d5649a41549f48f1d7206cbec2662fd63ea1548443bc3b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] cf705250b64ce6cf06366c9f58dd4fb269dac40dc54e9ac357a55eb64435a102
[INFO] running `Command { std: "docker" "start" "-a" "cf705250b64ce6cf06366c9f58dd4fb269dac40dc54e9ac357a55eb64435a102", kill_on_drop: false }`
[INFO] [stderr]    Compiling openssl-sys v0.9.109
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling convert_case v0.7.1
[INFO] [stderr]    Compiling rustix v1.0.7
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]    Compiling litrs v0.4.1
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking tokio v1.46.1
[INFO] [stderr]     Checking signal-hook-mio v0.2.4
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]    Compiling document-features v0.2.11
[INFO] [stderr]    Compiling openssl v0.10.73
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking derive_more v2.0.1
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking tokio-util v0.7.15
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[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: 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: 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 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 `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] [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] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 18.32s
[INFO] running `Command { std: "docker" "inspect" "cf705250b64ce6cf06366c9f58dd4fb269dac40dc54e9ac357a55eb64435a102", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cf705250b64ce6cf06366c9f58dd4fb269dac40dc54e9ac357a55eb64435a102", kill_on_drop: false }`
[INFO] [stdout] cf705250b64ce6cf06366c9f58dd4fb269dac40dc54e9ac357a55eb64435a102
