[INFO] cloning repository https://github.com/nick1udwig/sieve-lcm [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/nick1udwig/sieve-lcm" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnick1udwig%2Fsieve-lcm", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnick1udwig%2Fsieve-lcm'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 73e9f195bca392a3d58c768fd188170955391dd0 [INFO] linting nick1udwig/sieve-lcm against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnick1udwig%2Fsieve-lcm" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/nick1udwig/sieve-lcm [INFO] finished tweaking git repo https://github.com/nick1udwig/sieve-lcm [INFO] tweaked toml for git repo https://github.com/nick1udwig/sieve-lcm written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/nick1udwig/sieve-lcm on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/nick1udwig/sieve-lcm 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" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 5f356704084d7d5db70c6e86f5cf2ca00894a254733828b7d0ff2bb47f7cf6e0 [INFO] running `Command { std: "docker" "start" "-a" "5f356704084d7d5db70c6e86f5cf2ca00894a254733828b7d0ff2bb47f7cf6e0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5f356704084d7d5db70c6e86f5cf2ca00894a254733828b7d0ff2bb47f7cf6e0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5f356704084d7d5db70c6e86f5cf2ca00894a254733828b7d0ff2bb47f7cf6e0", kill_on_drop: false }` [INFO] [stdout] 5f356704084d7d5db70c6e86f5cf2ca00894a254733828b7d0ff2bb47f7cf6e0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4908eaa1db3dc821db2a2ed0e7d84650be7b46b7c51cb5445181c8781ba3a4d5 [INFO] running `Command { std: "docker" "start" "-a" "4908eaa1db3dc821db2a2ed0e7d84650be7b46b7c51cb5445181c8781ba3a4d5", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling libsqlite3-sys v0.30.1 [INFO] [stderr] Checking regex-syntax v0.8.10 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking clap v4.5.60 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking regex-automata v0.4.14 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Checking regex v1.12.3 [INFO] [stderr] Checking tokio v1.49.0 [INFO] [stderr] Checking thiserror v2.0.18 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking chrono v0.4.44 [INFO] [stderr] Checking rusqlite v0.32.1 [INFO] [stderr] Checking sieve-lcm v0.1.2 (/opt/rustwide/workdir) [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/assembler.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | let evictable_tokens: i64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `evictable_tokens` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 142 ~ [INFO] [stdout] 143 | [INFO] [stdout] 144 ~ let evictable_tokens: i64 = if evictable_total_tokens <= remaining_budget { [INFO] [stdout] 145 | selected.extend(evictable.clone()); [INFO] [stdout] 146 ~ evictable_total_tokens [INFO] [stdout] 147 | } else { [INFO] [stdout] ... [INFO] [stdout] 160 | selected.extend(kept); [INFO] [stdout] 161 ~ accum [INFO] [stdout] 162 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/assembler.rs:170:13 [INFO] [stdout] | [INFO] [stdout] 170 | / if message.role == "assistant" { [INFO] [stdout] 171 | | if let Some(text) = message.content.as_str() { [INFO] [stdout] 172 | | message.content = Value::Array(vec![text_block(text)]); [INFO] [stdout] 173 | | } [INFO] [stdout] 174 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 170 ~ if message.role == "assistant" [INFO] [stdout] 171 ~ && let Some(text) = message.content.as_str() { [INFO] [stdout] 172 | message.content = Value::Array(vec![text_block(text)]); [INFO] [stdout] 173 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/assembler.rs:475:5 [INFO] [stdout] | [INFO] [stdout] 475 | / if let Some(decoded) = parse_json(part.metadata.as_deref()) { [INFO] [stdout] 476 | | if let Some(raw) = decoded.get("raw").and_then(Value::as_object) { [INFO] [stdout] 477 | | return Value::Object(raw.clone()); [INFO] [stdout] 478 | | } [INFO] [stdout] 479 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 475 ~ if let Some(decoded) = parse_json(part.metadata.as_deref()) [INFO] [stdout] 476 ~ && let Some(raw) = decoded.get("raw").and_then(Value::as_object) { [INFO] [stdout] 477 | return Value::Object(raw.clone()); [INFO] [stdout] 478 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/assembler.rs:506:5 [INFO] [stdout] | [INFO] [stdout] 506 | / if let Some(decoded_fallback) = parse_json(part.metadata.as_deref()) { [INFO] [stdout] 507 | | if decoded_fallback.is_object() { [INFO] [stdout] 508 | | return text_block(&serde_json::to_string(&decoded_fallback).unwrap_or_default()); [INFO] [stdout] 509 | | } [INFO] [stdout] 510 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 506 ~ if let Some(decoded_fallback) = parse_json(part.metadata.as_deref()) [INFO] [stdout] 507 ~ && decoded_fallback.is_object() { [INFO] [stdout] 508 | return text_block(&serde_json::to_string(&decoded_fallback).unwrap_or_default()); [INFO] [stdout] 509 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/assembler.rs:535:5 [INFO] [stdout] | [INFO] [stdout] 535 | / if matches!(role, RuntimeRole::User) && blocks.len() == 1 { [INFO] [stdout] 536 | | if let Some(obj) = blocks[0].as_object() { [INFO] [stdout] 537 | | if obj.get("type").and_then(Value::as_str) == Some("text") { [INFO] [stdout] 538 | | if let Some(text) = obj.get("text").and_then(Value::as_str) { [INFO] [stdout] ... | [INFO] [stdout] 543 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 535 ~ if matches!(role, RuntimeRole::User) && blocks.len() == 1 [INFO] [stdout] 536 ~ && let Some(obj) = blocks[0].as_object() { [INFO] [stdout] 537 | if obj.get("type").and_then(Value::as_str) == Some("text") { [INFO] [stdout] ... [INFO] [stdout] 541 | } [INFO] [stdout] 542 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/assembler.rs:536:9 [INFO] [stdout] | [INFO] [stdout] 536 | / if let Some(obj) = blocks[0].as_object() { [INFO] [stdout] 537 | | if obj.get("type").and_then(Value::as_str) == Some("text") { [INFO] [stdout] 538 | | if let Some(text) = obj.get("text").and_then(Value::as_str) { [INFO] [stdout] 539 | | return Value::String(text.to_string()); [INFO] [stdout] ... | [INFO] [stdout] 542 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 536 ~ if let Some(obj) = blocks[0].as_object() [INFO] [stdout] 537 ~ && obj.get("type").and_then(Value::as_str) == Some("text") { [INFO] [stdout] 538 | if let Some(text) = obj.get("text").and_then(Value::as_str) { [INFO] [stdout] 539 | return Value::String(text.to_string()); [INFO] [stdout] 540 | } [INFO] [stdout] 541 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/assembler.rs:537:13 [INFO] [stdout] | [INFO] [stdout] 537 | / if obj.get("type").and_then(Value::as_str) == Some("text") { [INFO] [stdout] 538 | | if let Some(text) = obj.get("text").and_then(Value::as_str) { [INFO] [stdout] 539 | | return Value::String(text.to_string()); [INFO] [stdout] 540 | | } [INFO] [stdout] 541 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 537 ~ if obj.get("type").and_then(Value::as_str) == Some("text") [INFO] [stdout] 538 ~ && let Some(text) = obj.get("text").and_then(Value::as_str) { [INFO] [stdout] 539 | return Value::String(text.to_string()); [INFO] [stdout] 540 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:170:46 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn parse_command(raw_args: &[String]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] = note: `#[warn(clippy::result_large_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:211:48 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 211 | pub fn execute_command(command: CliCommand) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:219:55 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 219 | pub fn serialize_success_json(output: &CliSuccess) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:256:39 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 256 | fn parse_ingest(args: &ArgMatches) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:271:38 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 271 | fn parse_query(args: &ArgMatches) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:313:39 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 313 | fn parse_expand(args: &ArgMatches) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:351:71 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 351 | fn prevalidate_raw_args(args: &[String], usage: Option<&CliUsage>) -> Result<(), CliError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:712:72 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 712 | fn required_arg(matches: &ArgMatches, name: &str, usage: &CliUsage) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this closure is very large [INFO] [stdout] --> src/cli.rs:720:19 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 720 | .and_then(|value| { [INFO] [stdout] | ___________________^ [INFO] [stdout] 721 | | if value.is_empty() { [INFO] [stdout] 722 | | Err(usage_error_with_usage( [INFO] [stdout] 723 | | format!("missing required flag --{name}"), [INFO] [stdout] ... | [INFO] [stdout] 729 | | }) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:740:32 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 740 | fn ingest(args: IngestArgs) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:776:30 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 776 | fn query(args: QueryArgs) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:922:32 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 922 | fn expand(args: ExpandArgs) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:988:44 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 988 | fn parse_untrusted_ref(reference: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:1023:47 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 1023 | fn parse_role(raw: &str, usage: &CliUsage) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:1080:29 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 1080 | fn open_lane(path: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/complete_options.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | / if let Some(temperature) = params.temperature { [INFO] [stdout] 33 | | if temperature.is_finite() && !should_omit_temperature_for_api(params.api.as_deref()) { [INFO] [stdout] 34 | | out.temperature = Some(temperature); [INFO] [stdout] 35 | | } [INFO] [stdout] 36 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 32 ~ if let Some(temperature) = params.temperature [INFO] [stdout] 33 ~ && temperature.is_finite() && !should_omit_temperature_for_api(params.api.as_deref()) { [INFO] [stdout] 34 | out.temperature = Some(temperature); [INFO] [stdout] 35 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/db/migration.rs:393:17 [INFO] [stdout] | [INFO] [stdout] 393 | / if let Some(parent_earliest) = parent_meta.earliest_at { [INFO] [stdout] 394 | | if earliest_at.map(|dt| parent_earliest < dt).unwrap_or(true) { [INFO] [stdout] 395 | | earliest_at = Some(parent_earliest); [INFO] [stdout] 396 | | } [INFO] [stdout] 397 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 393 ~ if let Some(parent_earliest) = parent_meta.earliest_at [INFO] [stdout] 394 ~ && earliest_at.map(|dt| parent_earliest < dt).unwrap_or(true) { [INFO] [stdout] 395 | earliest_at = Some(parent_earliest); [INFO] [stdout] 396 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/db/migration.rs:398:17 [INFO] [stdout] | [INFO] [stdout] 398 | / if let Some(parent_latest) = parent_meta.latest_at { [INFO] [stdout] 399 | | if latest_at.map(|dt| parent_latest > dt).unwrap_or(true) { [INFO] [stdout] 400 | | latest_at = Some(parent_latest); [INFO] [stdout] 401 | | } [INFO] [stdout] 402 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 398 ~ if let Some(parent_latest) = parent_meta.latest_at [INFO] [stdout] 399 ~ && latest_at.map(|dt| parent_latest > dt).unwrap_or(true) { [INFO] [stdout] 400 | latest_at = Some(parent_latest); [INFO] [stdout] 401 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `as_bytes` [INFO] [stdout] --> src/engine.rs:412:29 [INFO] [stdout] | [INFO] [stdout] 412 | let byte_size = block.text.as_bytes().len() as i64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `block.text.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] = note: `#[warn(clippy::needless_as_bytes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/engine.rs:465:9 [INFO] [stdout] | [INFO] [stdout] 465 | / if matches!(stored.role, MessageRole::User) { [INFO] [stdout] 466 | | if let Some(intercepted) = self [INFO] [stdout] 467 | | .intercept_large_files(conversation_id, &stored.content) [INFO] [stdout] 468 | | .await? [INFO] [stdout] ... | [INFO] [stdout] 474 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 465 ~ if matches!(stored.role, MessageRole::User) [INFO] [stdout] 466 ~ && let Some(intercepted) = self [INFO] [stdout] 467 | .intercept_large_files(conversation_id, &stored.content) [INFO] [stdout] ... [INFO] [stdout] 472 | message_for_parts.content = Value::String(stored.content.clone()); [INFO] [stdout] 473 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/engine.rs:746:9 [INFO] [stdout] | [INFO] [stdout] 746 | / if runtime.config.prune_heartbeat_ok && !result.bootstrapped { [INFO] [stdout] 747 | | if let Some(conversation) = runtime [INFO] [stdout] 748 | | .conversation_store [INFO] [stdout] 749 | | .get_conversation_by_session_id(&input.session_id)? [INFO] [stdout] ... | [INFO] [stdout] 753 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 746 ~ if runtime.config.prune_heartbeat_ok && !result.bootstrapped [INFO] [stdout] 747 ~ && let Some(conversation) = runtime [INFO] [stdout] 748 | .conversation_store [INFO] [stdout] ... [INFO] [stdout] 751 | let _ = self.prune_heartbeat_ok_turns(conversation.conversation_id)?; [INFO] [stdout] 752 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/engine.rs:843:9 [INFO] [stdout] | [INFO] [stdout] 843 | / if let Ok(leaf_trigger) = self.evaluate_leaf_trigger(&input.session_id).await { [INFO] [stdout] 844 | | if leaf_trigger.should_compact { [INFO] [stdout] 845 | | let _ = self [INFO] [stdout] 846 | | .compact_leaf_async(CompactLeafInput { [INFO] [stdout] ... | [INFO] [stdout] 858 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 843 ~ if let Ok(leaf_trigger) = self.evaluate_leaf_trigger(&input.session_id).await [INFO] [stdout] 844 ~ && leaf_trigger.should_compact { [INFO] [stdout] 845 | let _ = self [INFO] [stdout] ... [INFO] [stdout] 856 | .await; [INFO] [stdout] 857 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/engine.rs:1641:9 [INFO] [stdout] | [INFO] [stdout] 1641 | / if let Ok(parsed) = serde_json::from_str::(trimmed) { [INFO] [stdout] 1642 | | if let Some(items) = parsed.as_array() { [INFO] [stdout] 1643 | | return items [INFO] [stdout] 1644 | | .iter() [INFO] [stdout] ... | [INFO] [stdout] 1648 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1641 ~ if let Ok(parsed) = serde_json::from_str::(trimmed) [INFO] [stdout] 1642 ~ && let Some(items) = parsed.as_array() { [INFO] [stdout] 1643 | return items [INFO] [stdout] ... [INFO] [stdout] 1646 | .collect(); [INFO] [stdout] 1647 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/engine.rs:1719:9 [INFO] [stdout] | [INFO] [stdout] 1719 | / if let Some(ch) = suffix.chars().next() { [INFO] [stdout] 1720 | | if !ch.is_ascii_alphanumeric() && ch != '_' { [INFO] [stdout] 1721 | | return true; [INFO] [stdout] 1722 | | } [INFO] [stdout] 1723 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1719 ~ if let Some(ch) = suffix.chars().next() [INFO] [stdout] 1720 ~ && !ch.is_ascii_alphanumeric() && ch != '_' { [INFO] [stdout] 1721 | return true; [INFO] [stdout] 1722 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/expansion_auth.rs:71:17 [INFO] [stdout] | [INFO] [stdout] 71 | Uuid::new_v4().simple().to_string()[..12].to_string() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use this: `&Uuid::new_v4().simple().to_string()[..12]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> src/expansion_auth.rs:293:13 [INFO] [stdout] | [INFO] [stdout] 293 | let manager = self.auth_manager.lock(); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> src/expansion_auth.rs:324:14 [INFO] [stdout] | [INFO] [stdout] 324 | .await?; [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] = note: `#[warn(clippy::await_holding_lock)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/large_files.rs:17:23 [INFO] [stdout] | [INFO] [stdout] 17 | if idx > 0 && (digits.len() - idx) % 3 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(digits.len() - idx).is_multiple_of(3)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/large_files.rs:85:25 [INFO] [stdout] | [INFO] [stdout] 85 | pub summarize_text: Option Option + Send + Sync + 'a>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/large_files.rs:99:9 [INFO] [stdout] | [INFO] [stdout] 99 | / if let (Some(key), Some(value)) = (key, value) { [INFO] [stdout] 100 | | if !key.is_empty() && !value.is_empty() { [INFO] [stdout] 101 | | attrs.insert(key, value); [INFO] [stdout] 102 | | } [INFO] [stdout] 103 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 99 ~ if let (Some(key), Some(value)) = (key, value) [INFO] [stdout] 100 ~ && !key.is_empty() && !value.is_empty() { [INFO] [stdout] 101 | attrs.insert(key, value); [INFO] [stdout] 102 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/large_files.rs:535:9 [INFO] [stdout] | [INFO] [stdout] 535 | / if let Some(summary) = summarize_text(&prompt).map(|s| s.trim().to_string()) { [INFO] [stdout] 536 | | if !summary.is_empty() { [INFO] [stdout] 537 | | return summary; [INFO] [stdout] 538 | | } [INFO] [stdout] 539 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 535 ~ if let Some(summary) = summarize_text(&prompt).map(|s| s.trim().to_string()) [INFO] [stdout] 536 ~ && !summary.is_empty() { [INFO] [stdout] 537 | return summary; [INFO] [stdout] 538 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/assembler.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | let evictable_tokens: i64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `evictable_tokens` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 142 ~ [INFO] [stdout] 143 | [INFO] [stdout] 144 ~ let evictable_tokens: i64 = if evictable_total_tokens <= remaining_budget { [INFO] [stdout] 145 | selected.extend(evictable.clone()); [INFO] [stdout] 146 ~ evictable_total_tokens [INFO] [stdout] 147 | } else { [INFO] [stdout] ... [INFO] [stdout] 160 | selected.extend(kept); [INFO] [stdout] 161 ~ accum [INFO] [stdout] 162 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/assembler.rs:170:13 [INFO] [stdout] | [INFO] [stdout] 170 | / if message.role == "assistant" { [INFO] [stdout] 171 | | if let Some(text) = message.content.as_str() { [INFO] [stdout] 172 | | message.content = Value::Array(vec![text_block(text)]); [INFO] [stdout] 173 | | } [INFO] [stdout] 174 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 170 ~ if message.role == "assistant" [INFO] [stdout] 171 ~ && let Some(text) = message.content.as_str() { [INFO] [stdout] 172 | message.content = Value::Array(vec![text_block(text)]); [INFO] [stdout] 173 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/assembler.rs:475:5 [INFO] [stdout] | [INFO] [stdout] 475 | / if let Some(decoded) = parse_json(part.metadata.as_deref()) { [INFO] [stdout] 476 | | if let Some(raw) = decoded.get("raw").and_then(Value::as_object) { [INFO] [stdout] 477 | | return Value::Object(raw.clone()); [INFO] [stdout] 478 | | } [INFO] [stdout] 479 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 475 ~ if let Some(decoded) = parse_json(part.metadata.as_deref()) [INFO] [stdout] 476 ~ && let Some(raw) = decoded.get("raw").and_then(Value::as_object) { [INFO] [stdout] 477 | return Value::Object(raw.clone()); [INFO] [stdout] 478 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/assembler.rs:506:5 [INFO] [stdout] | [INFO] [stdout] 506 | / if let Some(decoded_fallback) = parse_json(part.metadata.as_deref()) { [INFO] [stdout] 507 | | if decoded_fallback.is_object() { [INFO] [stdout] 508 | | return text_block(&serde_json::to_string(&decoded_fallback).unwrap_or_default()); [INFO] [stdout] 509 | | } [INFO] [stdout] 510 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 506 ~ if let Some(decoded_fallback) = parse_json(part.metadata.as_deref()) [INFO] [stdout] 507 ~ && decoded_fallback.is_object() { [INFO] [stdout] 508 | return text_block(&serde_json::to_string(&decoded_fallback).unwrap_or_default()); [INFO] [stdout] 509 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/assembler.rs:535:5 [INFO] [stdout] | [INFO] [stdout] 535 | / if matches!(role, RuntimeRole::User) && blocks.len() == 1 { [INFO] [stdout] 536 | | if let Some(obj) = blocks[0].as_object() { [INFO] [stdout] 537 | | if obj.get("type").and_then(Value::as_str) == Some("text") { [INFO] [stdout] 538 | | if let Some(text) = obj.get("text").and_then(Value::as_str) { [INFO] [stdout] ... | [INFO] [stdout] 543 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 535 ~ if matches!(role, RuntimeRole::User) && blocks.len() == 1 [INFO] [stdout] 536 ~ && let Some(obj) = blocks[0].as_object() { [INFO] [stdout] 537 | if obj.get("type").and_then(Value::as_str) == Some("text") { [INFO] [stdout] ... [INFO] [stdout] 541 | } [INFO] [stdout] 542 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/assembler.rs:536:9 [INFO] [stdout] | [INFO] [stdout] 536 | / if let Some(obj) = blocks[0].as_object() { [INFO] [stdout] 537 | | if obj.get("type").and_then(Value::as_str) == Some("text") { [INFO] [stdout] 538 | | if let Some(text) = obj.get("text").and_then(Value::as_str) { [INFO] [stdout] 539 | | return Value::String(text.to_string()); [INFO] [stdout] ... | [INFO] [stdout] 542 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 536 ~ if let Some(obj) = blocks[0].as_object() [INFO] [stdout] 537 ~ && obj.get("type").and_then(Value::as_str) == Some("text") { [INFO] [stdout] 538 | if let Some(text) = obj.get("text").and_then(Value::as_str) { [INFO] [stdout] 539 | return Value::String(text.to_string()); [INFO] [stdout] 540 | } [INFO] [stdout] 541 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/assembler.rs:537:13 [INFO] [stdout] | [INFO] [stdout] 537 | / if obj.get("type").and_then(Value::as_str) == Some("text") { [INFO] [stdout] 538 | | if let Some(text) = obj.get("text").and_then(Value::as_str) { [INFO] [stdout] 539 | | return Value::String(text.to_string()); [INFO] [stdout] 540 | | } [INFO] [stdout] 541 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 537 ~ if obj.get("type").and_then(Value::as_str) == Some("text") [INFO] [stdout] 538 ~ && let Some(text) = obj.get("text").and_then(Value::as_str) { [INFO] [stdout] 539 | return Value::String(text.to_string()); [INFO] [stdout] 540 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:170:46 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn parse_command(raw_args: &[String]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] = note: `#[warn(clippy::result_large_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:211:48 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 211 | pub fn execute_command(command: CliCommand) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:219:55 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 219 | pub fn serialize_success_json(output: &CliSuccess) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:256:39 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 256 | fn parse_ingest(args: &ArgMatches) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:271:38 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 271 | fn parse_query(args: &ArgMatches) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:313:39 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 313 | fn parse_expand(args: &ArgMatches) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:351:71 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 351 | fn prevalidate_raw_args(args: &[String], usage: Option<&CliUsage>) -> Result<(), CliError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:712:72 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 712 | fn required_arg(matches: &ArgMatches, name: &str, usage: &CliUsage) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this closure is very large [INFO] [stdout] --> src/cli.rs:720:19 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 720 | .and_then(|value| { [INFO] [stdout] | ___________________^ [INFO] [stdout] 721 | | if value.is_empty() { [INFO] [stdout] 722 | | Err(usage_error_with_usage( [INFO] [stdout] 723 | | format!("missing required flag --{name}"), [INFO] [stdout] ... | [INFO] [stdout] 729 | | }) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:740:32 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 740 | fn ingest(args: IngestArgs) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:776:30 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 776 | fn query(args: QueryArgs) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:922:32 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 922 | fn expand(args: ExpandArgs) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:988:44 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 988 | fn parse_untrusted_ref(reference: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:1023:47 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 1023 | fn parse_role(raw: &str, usage: &CliUsage) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/cli.rs:1080:29 [INFO] [stdout] | [INFO] [stdout] 53 | Usage(UsageError), [INFO] [stdout] | ----------------- the largest variant contains at least 144 bytes [INFO] [stdout] ... [INFO] [stdout] 1080 | fn open_lane(path: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/summarize.rs:74:5 [INFO] [stdout] | [INFO] [stdout] 74 | / if let Some(direct) = providers.get(provider).and_then(Value::as_object) { [INFO] [stdout] 75 | | if let Some(api) = direct.get("api").and_then(Value::as_str) { [INFO] [stdout] 76 | | let trimmed = api.trim(); [INFO] [stdout] 77 | | if !trimmed.is_empty() { [INFO] [stdout] ... | [INFO] [stdout] 81 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 74 ~ if let Some(direct) = providers.get(provider).and_then(Value::as_object) [INFO] [stdout] 75 ~ && let Some(api) = direct.get("api").and_then(Value::as_str) { [INFO] [stdout] 76 | let trimmed = api.trim(); [INFO] [stdout] ... [INFO] [stdout] 79 | } [INFO] [stdout] 80 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/complete_options.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | / if let Some(temperature) = params.temperature { [INFO] [stdout] 33 | | if temperature.is_finite() && !should_omit_temperature_for_api(params.api.as_deref()) { [INFO] [stdout] 34 | | out.temperature = Some(temperature); [INFO] [stdout] 35 | | } [INFO] [stdout] 36 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 32 ~ if let Some(temperature) = params.temperature [INFO] [stdout] 33 ~ && temperature.is_finite() && !should_omit_temperature_for_api(params.api.as_deref()) { [INFO] [stdout] 34 | out.temperature = Some(temperature); [INFO] [stdout] 35 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/db/migration.rs:393:17 [INFO] [stdout] | [INFO] [stdout] 393 | / if let Some(parent_earliest) = parent_meta.earliest_at { [INFO] [stdout] 394 | | if earliest_at.map(|dt| parent_earliest < dt).unwrap_or(true) { [INFO] [stdout] 395 | | earliest_at = Some(parent_earliest); [INFO] [stdout] 396 | | } [INFO] [stdout] 397 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 393 ~ if let Some(parent_earliest) = parent_meta.earliest_at [INFO] [stdout] 394 ~ && earliest_at.map(|dt| parent_earliest < dt).unwrap_or(true) { [INFO] [stdout] 395 | earliest_at = Some(parent_earliest); [INFO] [stdout] 396 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/db/migration.rs:398:17 [INFO] [stdout] | [INFO] [stdout] 398 | / if let Some(parent_latest) = parent_meta.latest_at { [INFO] [stdout] 399 | | if latest_at.map(|dt| parent_latest > dt).unwrap_or(true) { [INFO] [stdout] 400 | | latest_at = Some(parent_latest); [INFO] [stdout] 401 | | } [INFO] [stdout] 402 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 398 ~ if let Some(parent_latest) = parent_meta.latest_at [INFO] [stdout] 399 ~ && latest_at.map(|dt| parent_latest > dt).unwrap_or(true) { [INFO] [stdout] 400 | latest_at = Some(parent_latest); [INFO] [stdout] 401 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `as_bytes` [INFO] [stdout] --> src/engine.rs:412:29 [INFO] [stdout] | [INFO] [stdout] 412 | let byte_size = block.text.as_bytes().len() as i64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `block.text.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] = note: `#[warn(clippy::needless_as_bytes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/engine.rs:465:9 [INFO] [stdout] | [INFO] [stdout] 465 | / if matches!(stored.role, MessageRole::User) { [INFO] [stdout] 466 | | if let Some(intercepted) = self [INFO] [stdout] 467 | | .intercept_large_files(conversation_id, &stored.content) [INFO] [stdout] 468 | | .await? [INFO] [stdout] ... | [INFO] [stdout] 474 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 465 ~ if matches!(stored.role, MessageRole::User) [INFO] [stdout] 466 ~ && let Some(intercepted) = self [INFO] [stdout] 467 | .intercept_large_files(conversation_id, &stored.content) [INFO] [stdout] ... [INFO] [stdout] 472 | message_for_parts.content = Value::String(stored.content.clone()); [INFO] [stdout] 473 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/engine.rs:746:9 [INFO] [stdout] | [INFO] [stdout] 746 | / if runtime.config.prune_heartbeat_ok && !result.bootstrapped { [INFO] [stdout] 747 | | if let Some(conversation) = runtime [INFO] [stdout] 748 | | .conversation_store [INFO] [stdout] 749 | | .get_conversation_by_session_id(&input.session_id)? [INFO] [stdout] ... | [INFO] [stdout] 753 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 746 ~ if runtime.config.prune_heartbeat_ok && !result.bootstrapped [INFO] [stdout] 747 ~ && let Some(conversation) = runtime [INFO] [stdout] 748 | .conversation_store [INFO] [stdout] ... [INFO] [stdout] 751 | let _ = self.prune_heartbeat_ok_turns(conversation.conversation_id)?; [INFO] [stdout] 752 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/engine.rs:843:9 [INFO] [stdout] | [INFO] [stdout] 843 | / if let Ok(leaf_trigger) = self.evaluate_leaf_trigger(&input.session_id).await { [INFO] [stdout] 844 | | if leaf_trigger.should_compact { [INFO] [stdout] 845 | | let _ = self [INFO] [stdout] 846 | | .compact_leaf_async(CompactLeafInput { [INFO] [stdout] ... | [INFO] [stdout] 858 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 843 ~ if let Ok(leaf_trigger) = self.evaluate_leaf_trigger(&input.session_id).await [INFO] [stdout] 844 ~ && leaf_trigger.should_compact { [INFO] [stdout] 845 | let _ = self [INFO] [stdout] ... [INFO] [stdout] 856 | .await; [INFO] [stdout] 857 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/engine.rs:1641:9 [INFO] [stdout] | [INFO] [stdout] 1641 | / if let Ok(parsed) = serde_json::from_str::(trimmed) { [INFO] [stdout] 1642 | | if let Some(items) = parsed.as_array() { [INFO] [stdout] 1643 | | return items [INFO] [stdout] 1644 | | .iter() [INFO] [stdout] ... | [INFO] [stdout] 1648 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1641 ~ if let Ok(parsed) = serde_json::from_str::(trimmed) [INFO] [stdout] 1642 ~ && let Some(items) = parsed.as_array() { [INFO] [stdout] 1643 | return items [INFO] [stdout] ... [INFO] [stdout] 1646 | .collect(); [INFO] [stdout] 1647 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/engine.rs:1719:9 [INFO] [stdout] | [INFO] [stdout] 1719 | / if let Some(ch) = suffix.chars().next() { [INFO] [stdout] 1720 | | if !ch.is_ascii_alphanumeric() && ch != '_' { [INFO] [stdout] 1721 | | return true; [INFO] [stdout] 1722 | | } [INFO] [stdout] 1723 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1719 ~ if let Some(ch) = suffix.chars().next() [INFO] [stdout] 1720 ~ && !ch.is_ascii_alphanumeric() && ch != '_' { [INFO] [stdout] 1721 | return true; [INFO] [stdout] 1722 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_conversation_scope.rs:65:5 [INFO] [stdout] | [INFO] [stdout] 65 | / if normalized_session_id.is_none() { [INFO] [stdout] 66 | | if let (Some(key), Some(deps)) = [INFO] [stdout] 67 | | (session_key.map(str::trim).filter(|k| !k.is_empty()), deps) [INFO] [stdout] ... | [INFO] [stdout] 71 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 65 ~ if normalized_session_id.is_none() [INFO] [stdout] 66 ~ && let (Some(key), Some(deps)) = [INFO] [stdout] 67 | (session_key.map(str::trim).filter(|k| !k.is_empty()), deps) [INFO] [stdout] 68 | { [INFO] [stdout] 69 | normalized_session_id = deps.resolve_session_id_from_session_key(key).await?; [INFO] [stdout] 70 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/tools/lcm_describe_tool.rs:40:23 [INFO] [stdout] | [INFO] [stdout] 40 | if idx > 0 && (digits.len() - idx) % 3 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(digits.len() - idx).is_multiple_of(3)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_describe_tool.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | / if let (Some(scope_id), Some(item_id)) = [INFO] [stdout] 143 | | (conversation_scope.conversation_id, item_conversation_id) [INFO] [stdout] 144 | | { [INFO] [stdout] 145 | | if item_id != scope_id { [INFO] [stdout] ... | [INFO] [stdout] 151 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 143 ~ (conversation_scope.conversation_id, item_conversation_id) [INFO] [stdout] 144 ~ && item_id != scope_id { [INFO] [stdout] 145 | return Ok(json_result(json!({ [INFO] [stdout] ... [INFO] [stdout] 148 | }))); [INFO] [stdout] 149 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/expansion_auth.rs:71:17 [INFO] [stdout] | [INFO] [stdout] 71 | Uuid::new_v4().simple().to_string()[..12].to_string() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use this: `&Uuid::new_v4().simple().to_string()[..12]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> src/expansion_auth.rs:293:13 [INFO] [stdout] | [INFO] [stdout] 293 | let manager = self.auth_manager.lock(); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> src/expansion_auth.rs:324:14 [INFO] [stdout] | [INFO] [stdout] 324 | .await?; [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] = note: `#[warn(clippy::await_holding_lock)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/large_files.rs:17:23 [INFO] [stdout] | [INFO] [stdout] 17 | if idx > 0 && (digits.len() - idx) % 3 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(digits.len() - idx).is_multiple_of(3)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/large_files.rs:85:25 [INFO] [stdout] | [INFO] [stdout] 85 | pub summarize_text: Option Option + Send + Sync + 'a>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/large_files.rs:99:9 [INFO] [stdout] | [INFO] [stdout] 99 | / if let (Some(key), Some(value)) = (key, value) { [INFO] [stdout] 100 | | if !key.is_empty() && !value.is_empty() { [INFO] [stdout] 101 | | attrs.insert(key, value); [INFO] [stdout] 102 | | } [INFO] [stdout] 103 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 99 ~ if let (Some(key), Some(value)) = (key, value) [INFO] [stdout] 100 ~ && !key.is_empty() && !value.is_empty() { [INFO] [stdout] 101 | attrs.insert(key, value); [INFO] [stdout] 102 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/tools/lcm_expand_query_tool.rs:43:1 [INFO] [stdout] | [INFO] [stdout] 43 | / fn build_delegated_expand_query_task( [INFO] [stdout] 44 | | summary_ids: &[String], [INFO] [stdout] 45 | | conversation_id: i64, [INFO] [stdout] 46 | | query: Option<&str>, [INFO] [stdout] ... | [INFO] [stdout] 52 | | origin_session_key: &str, [INFO] [stdout] 53 | | ) -> String { [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_expand_query_tool.rs:133:5 [INFO] [stdout] | [INFO] [stdout] 133 | / if let Some(start) = reply.find("```") { [INFO] [stdout] 134 | | if let Some(end) = reply[start + 3..].find("```") { [INFO] [stdout] 135 | | let fenced = &reply[start + 3..start + 3 + end]; [INFO] [stdout] 136 | | let json_candidate = fenced.trim_start_matches("json").trim().to_string(); [INFO] [stdout] ... | [INFO] [stdout] 141 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 133 ~ if let Some(start) = reply.find("```") [INFO] [stdout] 134 ~ && let Some(end) = reply[start + 3..].find("```") { [INFO] [stdout] 135 | let fenced = &reply[start + 3..start + 3 + end]; [INFO] [stdout] ... [INFO] [stdout] 139 | } [INFO] [stdout] 140 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/large_files.rs:535:9 [INFO] [stdout] | [INFO] [stdout] 535 | / if let Some(summary) = summarize_text(&prompt).map(|s| s.trim().to_string()) { [INFO] [stdout] 536 | | if !summary.is_empty() { [INFO] [stdout] 537 | | return summary; [INFO] [stdout] 538 | | } [INFO] [stdout] 539 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 535 ~ if let Some(summary) = summarize_text(&prompt).map(|s| s.trim().to_string()) [INFO] [stdout] 536 ~ && !summary.is_empty() { [INFO] [stdout] 537 | return summary; [INFO] [stdout] 538 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/tools/lcm_expand_tool.rs:296:32 [INFO] [stdout] | [INFO] [stdout] 296 | let can_delegate = !matched_summary_ids.is_empty() [INFO] [stdout] | ________________________________^ [INFO] [stdout] 297 | | && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) [INFO] [stdout] 298 | | && !is_delegated_session [INFO] [stdout] 299 | | && !is_delegated_session [INFO] [stdout] 300 | | && !session_key.is_empty(); [INFO] [stdout] | |__________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 296 - let can_delegate = !matched_summary_ids.is_empty() [INFO] [stdout] 297 - && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) [INFO] [stdout] 298 - && !is_delegated_session [INFO] [stdout] 299 - && !is_delegated_session [INFO] [stdout] 300 - && !session_key.is_empty(); [INFO] [stdout] 296 + let can_delegate = !(matched_summary_ids.is_empty() || !matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) || is_delegated_session || session_key.is_empty()); [INFO] [stdout] | [INFO] [stdout] 296 - let can_delegate = !matched_summary_ids.is_empty() [INFO] [stdout] 297 - && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) [INFO] [stdout] 298 - && !is_delegated_session [INFO] [stdout] 299 - && !is_delegated_session [INFO] [stdout] 300 - && !session_key.is_empty(); [INFO] [stdout] 296 + let can_delegate = !matched_summary_ids.is_empty() && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) && !is_delegated_session && !session_key.is_empty(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/tools/lcm_expand_tool.rs:296:32 [INFO] [stdout] | [INFO] [stdout] 296 | let can_delegate = !matched_summary_ids.is_empty() [INFO] [stdout] | ________________________________^ [INFO] [stdout] 297 | | && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) [INFO] [stdout] 298 | | && !is_delegated_session [INFO] [stdout] 299 | | && !is_delegated_session [INFO] [stdout] | |________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 296 - let can_delegate = !matched_summary_ids.is_empty() [INFO] [stdout] 297 - && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) [INFO] [stdout] 298 - && !is_delegated_session [INFO] [stdout] 299 - && !is_delegated_session [INFO] [stdout] 296 + let can_delegate = !(matched_summary_ids.is_empty() || !matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) || is_delegated_session) [INFO] [stdout] | [INFO] [stdout] 296 - let can_delegate = !matched_summary_ids.is_empty() [INFO] [stdout] 297 - && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) [INFO] [stdout] 298 - && !is_delegated_session [INFO] [stdout] 299 - && !is_delegated_session [INFO] [stdout] 296 + let can_delegate = !matched_summary_ids.is_empty() && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) && !is_delegated_session [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_expand_tool.rs:319:13 [INFO] [stdout] | [INFO] [stdout] 319 | / if let Some(delegated) = delegated.clone() { [INFO] [stdout] 320 | | if delegated.status == DelegatedPassStatus::Ok { [INFO] [stdout] 321 | | return Ok(ToolResult { [INFO] [stdout] 322 | | content: vec![ToolContentBlock { [INFO] [stdout] ... | [INFO] [stdout] 338 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 319 ~ if let Some(delegated) = delegated.clone() [INFO] [stdout] 320 ~ && delegated.status == DelegatedPassStatus::Ok { [INFO] [stdout] 321 | return Ok(ToolResult { [INFO] [stdout] ... [INFO] [stdout] 336 | }); [INFO] [stdout] 337 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_expand_tool.rs:397:21 [INFO] [stdout] | [INFO] [stdout] 397 | / if let Some(described) = described { [INFO] [stdout] 398 | | if let crate::retrieval::DescribeResultType::Summary(summary) = [INFO] [stdout] 399 | | described.result [INFO] [stdout] ... | [INFO] [stdout] 405 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 397 ~ if let Some(described) = described [INFO] [stdout] 398 ~ && let crate::retrieval::DescribeResultType::Summary(summary) = [INFO] [stdout] 399 | described.result [INFO] [stdout] ... [INFO] [stdout] 403 | } [INFO] [stdout] 404 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_expand_tool.rs:398:25 [INFO] [stdout] | [INFO] [stdout] 398 | / if let crate::retrieval::DescribeResultType::Summary(summary) = [INFO] [stdout] 399 | | described.result [INFO] [stdout] 400 | | { [INFO] [stdout] 401 | | if summary.conversation_id != conversation_id { [INFO] [stdout] ... | [INFO] [stdout] 404 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 399 ~ described.result [INFO] [stdout] 400 ~ && summary.conversation_id != conversation_id { [INFO] [stdout] 401 | out_of_scope.push(summary_id.clone()); [INFO] [stdout] 402 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_expand_tool.rs:447:13 [INFO] [stdout] | [INFO] [stdout] 447 | / if let Some(delegated) = delegated.clone() { [INFO] [stdout] 448 | | if delegated.status == DelegatedPassStatus::Ok { [INFO] [stdout] 449 | | return Ok(ToolResult { [INFO] [stdout] 450 | | content: vec![ToolContentBlock { [INFO] [stdout] ... | [INFO] [stdout] 466 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 447 ~ if let Some(delegated) = delegated.clone() [INFO] [stdout] 448 ~ && delegated.status == DelegatedPassStatus::Ok { [INFO] [stdout] 449 | return Ok(ToolResult { [INFO] [stdout] ... [INFO] [stdout] 464 | }); [INFO] [stdout] 465 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_expand_tool_delegation.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 77 | / if let Some(start) = reply.find("```") { [INFO] [stdout] 78 | | if let Some(end) = reply[start + 3..].find("```") { [INFO] [stdout] 79 | | let fenced = &reply[start + 3..start + 3 + end]; [INFO] [stdout] 80 | | let json_candidate = fenced.trim_start_matches("json").trim().to_string(); [INFO] [stdout] ... | [INFO] [stdout] 85 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 77 ~ if let Some(start) = reply.find("```") [INFO] [stdout] 78 ~ && let Some(end) = reply[start + 3..].find("```") { [INFO] [stdout] 79 | let fenced = &reply[start + 3..start + 3 + end]; [INFO] [stdout] ... [INFO] [stdout] 83 | } [INFO] [stdout] 84 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/tools/lcm_expand_tool_delegation.rs:169:1 [INFO] [stdout] | [INFO] [stdout] 169 | / fn build_delegated_expansion_task( [INFO] [stdout] 170 | | summary_ids: &[String], [INFO] [stdout] 171 | | conversation_id: i64, [INFO] [stdout] 172 | | max_depth: Option, [INFO] [stdout] ... | [INFO] [stdout] 179 | | origin_session_key: &str, [INFO] [stdout] 180 | | ) -> String { [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/tools/lcm_expand_tool_delegation.rs:225:1 [INFO] [stdout] | [INFO] [stdout] 225 | / async fn run_delegated_expansion_pass( [INFO] [stdout] 226 | | deps: &dyn LcmDependencies, [INFO] [stdout] 227 | | requester_session_key: &str, [INFO] [stdout] 228 | | conversation_id: i64, [INFO] [stdout] ... | [INFO] [stdout] 237 | | origin_session_key: &str, [INFO] [stdout] 238 | | ) -> DelegatedExpansionPassResult { [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/tools/lcm_expand_tool_delegation.rs:449:1 [INFO] [stdout] | [INFO] [stdout] 449 | / pub async fn run_delegated_expansion_loop( [INFO] [stdout] 450 | | deps: &dyn LcmDependencies, [INFO] [stdout] 451 | | requester_session_key: &str, [INFO] [stdout] 452 | | conversation_id: i64, [INFO] [stdout] ... | [INFO] [stdout] 458 | | request_id: Option<&str>, [INFO] [stdout] 459 | | ) -> DelegatedExpansionLoopResult { [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/tools/lcm_expansion_recursion_guard.rs:243:1 [INFO] [stdout] | [INFO] [stdout] 243 | / pub fn record_expansion_delegation_telemetry( [INFO] [stdout] 244 | | deps: &dyn LcmDependencies, [INFO] [stdout] 245 | | component: &str, [INFO] [stdout] 246 | | event: TelemetryEvent, [INFO] [stdout] ... | [INFO] [stdout] 252 | | run_id: Option<&str>, [INFO] [stdout] 253 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_grep_tool.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | / if let (Some(since), Some(before)) = (since.as_ref(), before.as_ref()) { [INFO] [stdout] 96 | | if since >= before { [INFO] [stdout] 97 | | return Ok(json_result(json!({ [INFO] [stdout] 98 | | "error": "`since` must be earlier than `before`." [INFO] [stdout] ... | [INFO] [stdout] 101 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 95 ~ if let (Some(since), Some(before)) = (since.as_ref(), before.as_ref()) [INFO] [stdout] 96 ~ && since >= before { [INFO] [stdout] 97 | return Ok(json_result(json!({ [INFO] [stdout] 98 | "error": "`since` must be earlier than `before`." [INFO] [stdout] 99 | }))); [INFO] [stdout] 100 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/transcript_repair.rs:128:13 [INFO] [stdout] | [INFO] [stdout] 128 | / if next.role == "toolResult" { [INFO] [stdout] 129 | | if let Some(id) = extract_tool_result_id(&next) { [INFO] [stdout] 130 | | if tool_call_ids.contains(&id) { [INFO] [stdout] 131 | | if seen_tool_result_ids.contains(&id) { [INFO] [stdout] ... | [INFO] [stdout] 141 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 128 ~ if next.role == "toolResult" [INFO] [stdout] 129 ~ && let Some(id) = extract_tool_result_id(&next) { [INFO] [stdout] 130 | if tool_call_ids.contains(&id) { [INFO] [stdout] ... [INFO] [stdout] 139 | } [INFO] [stdout] 140 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/transcript_repair.rs:129:17 [INFO] [stdout] | [INFO] [stdout] 129 | / if let Some(id) = extract_tool_result_id(&next) { [INFO] [stdout] 130 | | if tool_call_ids.contains(&id) { [INFO] [stdout] 131 | | if seen_tool_result_ids.contains(&id) { [INFO] [stdout] 132 | | changed = true; [INFO] [stdout] ... | [INFO] [stdout] 140 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 129 ~ if let Some(id) = extract_tool_result_id(&next) [INFO] [stdout] 130 ~ && tool_call_ids.contains(&id) { [INFO] [stdout] 131 | if seen_tool_result_ids.contains(&id) { [INFO] [stdout] ... [INFO] [stdout] 138 | continue; [INFO] [stdout] 139 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/summarize.rs:74:5 [INFO] [stdout] | [INFO] [stdout] 74 | / if let Some(direct) = providers.get(provider).and_then(Value::as_object) { [INFO] [stdout] 75 | | if let Some(api) = direct.get("api").and_then(Value::as_str) { [INFO] [stdout] 76 | | let trimmed = api.trim(); [INFO] [stdout] 77 | | if !trimmed.is_empty() { [INFO] [stdout] ... | [INFO] [stdout] 81 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 74 ~ if let Some(direct) = providers.get(provider).and_then(Value::as_object) [INFO] [stdout] 75 ~ && let Some(api) = direct.get("api").and_then(Value::as_str) { [INFO] [stdout] 76 | let trimmed = api.trim(); [INFO] [stdout] ... [INFO] [stdout] 79 | } [INFO] [stdout] 80 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:451:36 [INFO] [stdout] | [INFO] [stdout] 451 | SummaryMode::Aggressive => vec![ [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 452 | | "Aggressive summary policy:", [INFO] [stdout] 453 | | "- Keep only durable facts and current task state.", [INFO] [stdout] 454 | | "- Remove examples, repetition, and low-value narrative details.", [INFO] [stdout] 455 | | "- Preserve explicit TODOs, blockers, decisions, and constraints.", [INFO] [stdout] 456 | | ] [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 451 ~ SummaryMode::Aggressive => ["Aggressive summary policy:", [INFO] [stdout] 452 + "- Keep only durable facts and current task state.", [INFO] [stdout] 453 + "- Remove examples, repetition, and low-value narrative details.", [INFO] [stdout] 454 + "- Preserve explicit TODOs, blockers, decisions, and constraints."] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:458:32 [INFO] [stdout] | [INFO] [stdout] 458 | SummaryMode::Normal => vec![ [INFO] [stdout] | ________________________________^ [INFO] [stdout] 459 | | "Normal summary policy:", [INFO] [stdout] 460 | | "- Preserve key decisions, rationale, constraints, and active tasks.", [INFO] [stdout] 461 | | "- Keep essential technical details needed to continue work safely.", [INFO] [stdout] 462 | | "- Remove obvious repetition and conversational filler.", [INFO] [stdout] 463 | | ] [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 458 ~ SummaryMode::Normal => ["Normal summary policy:", [INFO] [stdout] 459 + "- Preserve key decisions, rationale, constraints, and active tasks.", [INFO] [stdout] 460 + "- Keep essential technical details needed to continue work safely.", [INFO] [stdout] 461 + "- Remove obvious repetition and conversational filler."] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:473:5 [INFO] [stdout] | [INFO] [stdout] 473 | / vec![ [INFO] [stdout] 474 | | "You summarize a SEGMENT of an OpenClaw conversation for future model turns.".to_string(), [INFO] [stdout] 475 | | "Treat this as incremental memory compaction input, not a full-conversation summary." [INFO] [stdout] 476 | | .to_string(), [INFO] [stdout] ... | [INFO] [stdout] 491 | | format!("\n{text}\n"), [INFO] [stdout] 492 | | ] [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 473 ~ ["You summarize a SEGMENT of an OpenClaw conversation for future model turns.".to_string(), [INFO] [stdout] 474 + "Treat this as incremental memory compaction input, not a full-conversation summary." [INFO] [stdout] 475 + .to_string(), [INFO] [stdout] 476 + policy, [INFO] [stdout] 477 + instruction_block, [INFO] [stdout] 478 + vec![ [INFO] [stdout] 479 + "Output requirements:", [INFO] [stdout] 480 + "- Plain text only.", [INFO] [stdout] 481 + "- No preamble, headings, or markdown formatting.", [INFO] [stdout] 482 + "- Keep it concise while preserving required details.", [INFO] [stdout] 483 + "- Track file operations (created, modified, deleted, renamed) with file paths and current status.", [INFO] [stdout] 484 + "- If no file operations appear, include exactly: \"Files: none\".", [INFO] [stdout] 485 + "- End with exactly: \"Expand for details about: \".", [INFO] [stdout] 486 + &format!("- Target length: about {target_tokens} tokens or less."), [INFO] [stdout] 487 + ] [INFO] [stdout] 488 + .join("\n"), [INFO] [stdout] 489 + format!("\n{previous_context}\n"), [INFO] [stdout] 490 + format!("\n{text}\n")] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:479:9 [INFO] [stdout] | [INFO] [stdout] 479 | / vec![ [INFO] [stdout] 480 | | "Output requirements:", [INFO] [stdout] 481 | | "- Plain text only.", [INFO] [stdout] 482 | | "- No preamble, headings, or markdown formatting.", [INFO] [stdout] ... | [INFO] [stdout] 487 | | &format!("- Target length: about {target_tokens} tokens or less."), [INFO] [stdout] 488 | | ] [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 479 ~ ["Output requirements:", [INFO] [stdout] 480 + "- Plain text only.", [INFO] [stdout] 481 + "- No preamble, headings, or markdown formatting.", [INFO] [stdout] 482 + "- Keep it concise while preserving required details.", [INFO] [stdout] 483 + "- Track file operations (created, modified, deleted, renamed) with file paths and current status.", [INFO] [stdout] 484 + "- If no file operations appear, include exactly: \"Files: none\".", [INFO] [stdout] 485 + "- End with exactly: \"Expand for details about: \".", [INFO] [stdout] 486 + &format!("- Target length: about {target_tokens} tokens or less.")] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:521:5 [INFO] [stdout] | [INFO] [stdout] 521 | / vec![ [INFO] [stdout] 522 | | "You are compacting leaf-level conversation summaries into a single condensed memory node." [INFO] [stdout] 523 | | .to_string(), [INFO] [stdout] 524 | | "You are preparing context for a fresh model instance that will continue this conversation." [INFO] [stdout] ... | [INFO] [stdout] 550 | | format!("\n{text}\n"), [INFO] [stdout] 551 | | ] [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 521 ~ ["You are compacting leaf-level conversation summaries into a single condensed memory node." [INFO] [stdout] 522 + .to_string(), [INFO] [stdout] 523 + "You are preparing context for a fresh model instance that will continue this conversation." [INFO] [stdout] 524 + .to_string(), [INFO] [stdout] 525 + instruction_block, [INFO] [stdout] 526 + previous_context_block, [INFO] [stdout] 527 + vec![ [INFO] [stdout] 528 + "Preserve:", [INFO] [stdout] 529 + "- Decisions made and their rationale when rationale matters going forward.", [INFO] [stdout] 530 + "- Earlier decisions that were superseded, and what replaced them.", [INFO] [stdout] 531 + "- Completed tasks/topics with outcomes.", [INFO] [stdout] 532 + "- In-progress items with current state and what remains.", [INFO] [stdout] 533 + "- Blockers, open questions, and unresolved tensions.", [INFO] [stdout] 534 + "- Specific references (names, paths, URLs, identifiers) needed for continuation.", [INFO] [stdout] 535 + "", [INFO] [stdout] 536 + "Drop low-value detail:", [INFO] [stdout] 537 + "- Context that has not changed from previous_context.", [INFO] [stdout] 538 + "- Intermediate dead ends where the conclusion is already known.", [INFO] [stdout] 539 + "- Transient states that are already resolved.", [INFO] [stdout] 540 + "- Tool-internal mechanics and process scaffolding.", [INFO] [stdout] 541 + "", [INFO] [stdout] 542 + "Use plain text. No mandatory structure.", [INFO] [stdout] 543 + "Include a timeline with timestamps (hour or half-hour) for significant events.", [INFO] [stdout] 544 + "Present information chronologically and mark superseded decisions.", [INFO] [stdout] 545 + "- End with exactly: \"Expand for details about: \".", [INFO] [stdout] 546 + &format!("Target length: about {target_tokens} tokens."), [INFO] [stdout] 547 + ] [INFO] [stdout] 548 + .join("\n"), [INFO] [stdout] 549 + format!("\n{text}\n")] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:562:5 [INFO] [stdout] | [INFO] [stdout] 562 | / vec![ [INFO] [stdout] 563 | | "You are condensing multiple session-level summaries into a higher-level memory node." [INFO] [stdout] 564 | | .to_string(), [INFO] [stdout] 565 | | "A future model should understand trajectory, not per-session minutiae.".to_string(), [INFO] [stdout] ... | [INFO] [stdout] 586 | | format!("\n{text}\n"), [INFO] [stdout] 587 | | ] [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 562 ~ ["You are condensing multiple session-level summaries into a higher-level memory node." [INFO] [stdout] 563 + .to_string(), [INFO] [stdout] 564 + "A future model should understand trajectory, not per-session minutiae.".to_string(), [INFO] [stdout] 565 + instruction_block, [INFO] [stdout] 566 + vec![ [INFO] [stdout] 567 + "Preserve:", [INFO] [stdout] 568 + "- Decisions still in effect and their rationale.", [INFO] [stdout] 569 + "- Decisions that evolved: what changed and why.", [INFO] [stdout] 570 + "- Completed work with outcomes.", [INFO] [stdout] 571 + "- Active constraints, limitations, and known issues.", [INFO] [stdout] 572 + "- Current state of in-progress work.", [INFO] [stdout] 573 + "", [INFO] [stdout] 574 + "Drop:", [INFO] [stdout] 575 + "- Session-local operational detail and process mechanics.", [INFO] [stdout] 576 + "- Identifiers that are no longer relevant.", [INFO] [stdout] 577 + "- Intermediate states superseded by later outcomes.", [INFO] [stdout] 578 + "", [INFO] [stdout] 579 + "Use plain text. Brief headers are fine if useful.", [INFO] [stdout] 580 + "Include a timeline with dates and approximate time of day for key milestones.", [INFO] [stdout] 581 + "- End with exactly: \"Expand for details about: \".", [INFO] [stdout] 582 + &format!("Target length: about {target_tokens} tokens."), [INFO] [stdout] 583 + ] [INFO] [stdout] 584 + .join("\n"), [INFO] [stdout] 585 + format!("\n{text}\n")] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:602:5 [INFO] [stdout] | [INFO] [stdout] 602 | / vec![ [INFO] [stdout] 603 | | "You are creating a high-level memory node from multiple phase-level summaries.".to_string(), [INFO] [stdout] 604 | | "This may persist for the rest of the conversation. Keep only durable context.".to_string(), [INFO] [stdout] 605 | | instruction_block, [INFO] [stdout] ... | [INFO] [stdout] 625 | | format!("\n{text}\n"), [INFO] [stdout] 626 | | ] [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 602 ~ ["You are creating a high-level memory node from multiple phase-level summaries.".to_string(), [INFO] [stdout] 603 + "This may persist for the rest of the conversation. Keep only durable context.".to_string(), [INFO] [stdout] 604 + instruction_block, [INFO] [stdout] 605 + vec![ [INFO] [stdout] 606 + "Preserve:", [INFO] [stdout] 607 + "- Key decisions and rationale.", [INFO] [stdout] 608 + "- What was accomplished and current state.", [INFO] [stdout] 609 + "- Active constraints and hard limitations.", [INFO] [stdout] 610 + "- Important relationships between people, systems, or concepts.", [INFO] [stdout] 611 + "- Durable lessons learned.", [INFO] [stdout] 612 + "", [INFO] [stdout] 613 + "Drop:", [INFO] [stdout] 614 + "- Operational and process detail.", [INFO] [stdout] 615 + "- Method details unless the method itself was the decision.", [INFO] [stdout] 616 + "- Specific references unless essential for continuation.", [INFO] [stdout] 617 + "", [INFO] [stdout] 618 + "Use plain text. Be concise.", [INFO] [stdout] 619 + "Include a brief timeline with dates (or date ranges) for major milestones.", [INFO] [stdout] 620 + "- End with exactly: \"Expand for details about: \".", [INFO] [stdout] 621 + &format!("Target length: about {target_tokens} tokens."), [INFO] [stdout] 622 + ] [INFO] [stdout] 623 + .join("\n"), [INFO] [stdout] 624 + format!("\n{text}\n")] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_conversation_scope.rs:65:5 [INFO] [stdout] | [INFO] [stdout] 65 | / if normalized_session_id.is_none() { [INFO] [stdout] 66 | | if let (Some(key), Some(deps)) = [INFO] [stdout] 67 | | (session_key.map(str::trim).filter(|k| !k.is_empty()), deps) [INFO] [stdout] ... | [INFO] [stdout] 71 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 65 ~ if normalized_session_id.is_none() [INFO] [stdout] 66 ~ && let (Some(key), Some(deps)) = [INFO] [stdout] 67 | (session_key.map(str::trim).filter(|k| !k.is_empty()), deps) [INFO] [stdout] 68 | { [INFO] [stdout] 69 | normalized_session_id = deps.resolve_session_id_from_session_key(key).await?; [INFO] [stdout] 70 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/tools/lcm_describe_tool.rs:40:23 [INFO] [stdout] | [INFO] [stdout] 40 | if idx > 0 && (digits.len() - idx) % 3 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(digits.len() - idx).is_multiple_of(3)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_describe_tool.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | / if let (Some(scope_id), Some(item_id)) = [INFO] [stdout] 143 | | (conversation_scope.conversation_id, item_conversation_id) [INFO] [stdout] 144 | | { [INFO] [stdout] 145 | | if item_id != scope_id { [INFO] [stdout] ... | [INFO] [stdout] 151 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 143 ~ (conversation_scope.conversation_id, item_conversation_id) [INFO] [stdout] 144 ~ && item_id != scope_id { [INFO] [stdout] 145 | return Ok(json_result(json!({ [INFO] [stdout] ... [INFO] [stdout] 148 | }))); [INFO] [stdout] 149 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/tools/lcm_expand_query_tool.rs:43:1 [INFO] [stdout] | [INFO] [stdout] 43 | / fn build_delegated_expand_query_task( [INFO] [stdout] 44 | | summary_ids: &[String], [INFO] [stdout] 45 | | conversation_id: i64, [INFO] [stdout] 46 | | query: Option<&str>, [INFO] [stdout] ... | [INFO] [stdout] 52 | | origin_session_key: &str, [INFO] [stdout] 53 | | ) -> String { [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_expand_query_tool.rs:133:5 [INFO] [stdout] | [INFO] [stdout] 133 | / if let Some(start) = reply.find("```") { [INFO] [stdout] 134 | | if let Some(end) = reply[start + 3..].find("```") { [INFO] [stdout] 135 | | let fenced = &reply[start + 3..start + 3 + end]; [INFO] [stdout] 136 | | let json_candidate = fenced.trim_start_matches("json").trim().to_string(); [INFO] [stdout] ... | [INFO] [stdout] 141 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 133 ~ if let Some(start) = reply.find("```") [INFO] [stdout] 134 ~ && let Some(end) = reply[start + 3..].find("```") { [INFO] [stdout] 135 | let fenced = &reply[start + 3..start + 3 + end]; [INFO] [stdout] ... [INFO] [stdout] 139 | } [INFO] [stdout] 140 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/tools/lcm_expand_tool.rs:296:32 [INFO] [stdout] | [INFO] [stdout] 296 | let can_delegate = !matched_summary_ids.is_empty() [INFO] [stdout] | ________________________________^ [INFO] [stdout] 297 | | && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) [INFO] [stdout] 298 | | && !is_delegated_session [INFO] [stdout] 299 | | && !is_delegated_session [INFO] [stdout] 300 | | && !session_key.is_empty(); [INFO] [stdout] | |__________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 296 - let can_delegate = !matched_summary_ids.is_empty() [INFO] [stdout] 297 - && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) [INFO] [stdout] 298 - && !is_delegated_session [INFO] [stdout] 299 - && !is_delegated_session [INFO] [stdout] 300 - && !session_key.is_empty(); [INFO] [stdout] 296 + let can_delegate = !(matched_summary_ids.is_empty() || !matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) || is_delegated_session || session_key.is_empty()); [INFO] [stdout] | [INFO] [stdout] 296 - let can_delegate = !matched_summary_ids.is_empty() [INFO] [stdout] 297 - && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) [INFO] [stdout] 298 - && !is_delegated_session [INFO] [stdout] 299 - && !is_delegated_session [INFO] [stdout] 300 - && !session_key.is_empty(); [INFO] [stdout] 296 + let can_delegate = !matched_summary_ids.is_empty() && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) && !is_delegated_session && !session_key.is_empty(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/tools/lcm_expand_tool.rs:296:32 [INFO] [stdout] | [INFO] [stdout] 296 | let can_delegate = !matched_summary_ids.is_empty() [INFO] [stdout] | ________________________________^ [INFO] [stdout] 297 | | && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) [INFO] [stdout] 298 | | && !is_delegated_session [INFO] [stdout] 299 | | && !is_delegated_session [INFO] [stdout] | |________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 296 - let can_delegate = !matched_summary_ids.is_empty() [INFO] [stdout] 297 - && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) [INFO] [stdout] 298 - && !is_delegated_session [INFO] [stdout] 299 - && !is_delegated_session [INFO] [stdout] 296 + let can_delegate = !(matched_summary_ids.is_empty() || !matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) || is_delegated_session) [INFO] [stdout] | [INFO] [stdout] 296 - let can_delegate = !matched_summary_ids.is_empty() [INFO] [stdout] 297 - && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) [INFO] [stdout] 298 - && !is_delegated_session [INFO] [stdout] 299 - && !is_delegated_session [INFO] [stdout] 296 + let can_delegate = !matched_summary_ids.is_empty() && matches!(policy.action, LcmExpansionRoutingAction::DelegateTraversal) && !is_delegated_session [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_expand_tool.rs:319:13 [INFO] [stdout] | [INFO] [stdout] 319 | / if let Some(delegated) = delegated.clone() { [INFO] [stdout] 320 | | if delegated.status == DelegatedPassStatus::Ok { [INFO] [stdout] 321 | | return Ok(ToolResult { [INFO] [stdout] 322 | | content: vec![ToolContentBlock { [INFO] [stdout] ... | [INFO] [stdout] 338 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 319 ~ if let Some(delegated) = delegated.clone() [INFO] [stdout] 320 ~ && delegated.status == DelegatedPassStatus::Ok { [INFO] [stdout] 321 | return Ok(ToolResult { [INFO] [stdout] ... [INFO] [stdout] 336 | }); [INFO] [stdout] 337 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_expand_tool.rs:397:21 [INFO] [stdout] | [INFO] [stdout] 397 | / if let Some(described) = described { [INFO] [stdout] 398 | | if let crate::retrieval::DescribeResultType::Summary(summary) = [INFO] [stdout] 399 | | described.result [INFO] [stdout] ... | [INFO] [stdout] 405 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 397 ~ if let Some(described) = described [INFO] [stdout] 398 ~ && let crate::retrieval::DescribeResultType::Summary(summary) = [INFO] [stdout] 399 | described.result [INFO] [stdout] ... [INFO] [stdout] 403 | } [INFO] [stdout] 404 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_expand_tool.rs:398:25 [INFO] [stdout] | [INFO] [stdout] 398 | / if let crate::retrieval::DescribeResultType::Summary(summary) = [INFO] [stdout] 399 | | described.result [INFO] [stdout] 400 | | { [INFO] [stdout] 401 | | if summary.conversation_id != conversation_id { [INFO] [stdout] ... | [INFO] [stdout] 404 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 399 ~ described.result [INFO] [stdout] 400 ~ && summary.conversation_id != conversation_id { [INFO] [stdout] 401 | out_of_scope.push(summary_id.clone()); [INFO] [stdout] 402 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_expand_tool.rs:447:13 [INFO] [stdout] | [INFO] [stdout] 447 | / if let Some(delegated) = delegated.clone() { [INFO] [stdout] 448 | | if delegated.status == DelegatedPassStatus::Ok { [INFO] [stdout] 449 | | return Ok(ToolResult { [INFO] [stdout] 450 | | content: vec![ToolContentBlock { [INFO] [stdout] ... | [INFO] [stdout] 466 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 447 ~ if let Some(delegated) = delegated.clone() [INFO] [stdout] 448 ~ && delegated.status == DelegatedPassStatus::Ok { [INFO] [stdout] 449 | return Ok(ToolResult { [INFO] [stdout] ... [INFO] [stdout] 464 | }); [INFO] [stdout] 465 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_expand_tool_delegation.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 77 | / if let Some(start) = reply.find("```") { [INFO] [stdout] 78 | | if let Some(end) = reply[start + 3..].find("```") { [INFO] [stdout] 79 | | let fenced = &reply[start + 3..start + 3 + end]; [INFO] [stdout] 80 | | let json_candidate = fenced.trim_start_matches("json").trim().to_string(); [INFO] [stdout] ... | [INFO] [stdout] 85 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 77 ~ if let Some(start) = reply.find("```") [INFO] [stdout] 78 ~ && let Some(end) = reply[start + 3..].find("```") { [INFO] [stdout] 79 | let fenced = &reply[start + 3..start + 3 + end]; [INFO] [stdout] ... [INFO] [stdout] 83 | } [INFO] [stdout] 84 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/tools/lcm_expand_tool_delegation.rs:169:1 [INFO] [stdout] | [INFO] [stdout] 169 | / fn build_delegated_expansion_task( [INFO] [stdout] 170 | | summary_ids: &[String], [INFO] [stdout] 171 | | conversation_id: i64, [INFO] [stdout] 172 | | max_depth: Option, [INFO] [stdout] ... | [INFO] [stdout] 179 | | origin_session_key: &str, [INFO] [stdout] 180 | | ) -> String { [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (12/7) [INFO] [stdout] --> src/tools/lcm_expand_tool_delegation.rs:225:1 [INFO] [stdout] | [INFO] [stdout] 225 | / async fn run_delegated_expansion_pass( [INFO] [stdout] 226 | | deps: &dyn LcmDependencies, [INFO] [stdout] 227 | | requester_session_key: &str, [INFO] [stdout] 228 | | conversation_id: i64, [INFO] [stdout] ... | [INFO] [stdout] 237 | | origin_session_key: &str, [INFO] [stdout] 238 | | ) -> DelegatedExpansionPassResult { [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/tools/lcm_expand_tool_delegation.rs:449:1 [INFO] [stdout] | [INFO] [stdout] 449 | / pub async fn run_delegated_expansion_loop( [INFO] [stdout] 450 | | deps: &dyn LcmDependencies, [INFO] [stdout] 451 | | requester_session_key: &str, [INFO] [stdout] 452 | | conversation_id: i64, [INFO] [stdout] ... | [INFO] [stdout] 458 | | request_id: Option<&str>, [INFO] [stdout] 459 | | ) -> DelegatedExpansionLoopResult { [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/tools/lcm_expansion_recursion_guard.rs:243:1 [INFO] [stdout] | [INFO] [stdout] 243 | / pub fn record_expansion_delegation_telemetry( [INFO] [stdout] 244 | | deps: &dyn LcmDependencies, [INFO] [stdout] 245 | | component: &str, [INFO] [stdout] 246 | | event: TelemetryEvent, [INFO] [stdout] ... | [INFO] [stdout] 252 | | run_id: Option<&str>, [INFO] [stdout] 253 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tools/lcm_grep_tool.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | / if let (Some(since), Some(before)) = (since.as_ref(), before.as_ref()) { [INFO] [stdout] 96 | | if since >= before { [INFO] [stdout] 97 | | return Ok(json_result(json!({ [INFO] [stdout] 98 | | "error": "`since` must be earlier than `before`." [INFO] [stdout] ... | [INFO] [stdout] 101 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 95 ~ if let (Some(since), Some(before)) = (since.as_ref(), before.as_ref()) [INFO] [stdout] 96 ~ && since >= before { [INFO] [stdout] 97 | return Ok(json_result(json!({ [INFO] [stdout] 98 | "error": "`since` must be earlier than `before`." [INFO] [stdout] 99 | }))); [INFO] [stdout] 100 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/transcript_repair.rs:128:13 [INFO] [stdout] | [INFO] [stdout] 128 | / if next.role == "toolResult" { [INFO] [stdout] 129 | | if let Some(id) = extract_tool_result_id(&next) { [INFO] [stdout] 130 | | if tool_call_ids.contains(&id) { [INFO] [stdout] 131 | | if seen_tool_result_ids.contains(&id) { [INFO] [stdout] ... | [INFO] [stdout] 141 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 128 ~ if next.role == "toolResult" [INFO] [stdout] 129 ~ && let Some(id) = extract_tool_result_id(&next) { [INFO] [stdout] 130 | if tool_call_ids.contains(&id) { [INFO] [stdout] ... [INFO] [stdout] 139 | } [INFO] [stdout] 140 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/transcript_repair.rs:129:17 [INFO] [stdout] | [INFO] [stdout] 129 | / if let Some(id) = extract_tool_result_id(&next) { [INFO] [stdout] 130 | | if tool_call_ids.contains(&id) { [INFO] [stdout] 131 | | if seen_tool_result_ids.contains(&id) { [INFO] [stdout] 132 | | changed = true; [INFO] [stdout] ... | [INFO] [stdout] 140 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 129 ~ if let Some(id) = extract_tool_result_id(&next) [INFO] [stdout] 130 ~ && tool_call_ids.contains(&id) { [INFO] [stdout] 131 | if seen_tool_result_ids.contains(&id) { [INFO] [stdout] ... [INFO] [stdout] 138 | continue; [INFO] [stdout] 139 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:451:36 [INFO] [stdout] | [INFO] [stdout] 451 | SummaryMode::Aggressive => vec![ [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 452 | | "Aggressive summary policy:", [INFO] [stdout] 453 | | "- Keep only durable facts and current task state.", [INFO] [stdout] 454 | | "- Remove examples, repetition, and low-value narrative details.", [INFO] [stdout] 455 | | "- Preserve explicit TODOs, blockers, decisions, and constraints.", [INFO] [stdout] 456 | | ] [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 451 ~ SummaryMode::Aggressive => ["Aggressive summary policy:", [INFO] [stdout] 452 + "- Keep only durable facts and current task state.", [INFO] [stdout] 453 + "- Remove examples, repetition, and low-value narrative details.", [INFO] [stdout] 454 + "- Preserve explicit TODOs, blockers, decisions, and constraints."] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:458:32 [INFO] [stdout] | [INFO] [stdout] 458 | SummaryMode::Normal => vec![ [INFO] [stdout] | ________________________________^ [INFO] [stdout] 459 | | "Normal summary policy:", [INFO] [stdout] 460 | | "- Preserve key decisions, rationale, constraints, and active tasks.", [INFO] [stdout] 461 | | "- Keep essential technical details needed to continue work safely.", [INFO] [stdout] 462 | | "- Remove obvious repetition and conversational filler.", [INFO] [stdout] 463 | | ] [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 458 ~ SummaryMode::Normal => ["Normal summary policy:", [INFO] [stdout] 459 + "- Preserve key decisions, rationale, constraints, and active tasks.", [INFO] [stdout] 460 + "- Keep essential technical details needed to continue work safely.", [INFO] [stdout] 461 + "- Remove obvious repetition and conversational filler."] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:473:5 [INFO] [stdout] | [INFO] [stdout] 473 | / vec![ [INFO] [stdout] 474 | | "You summarize a SEGMENT of an OpenClaw conversation for future model turns.".to_string(), [INFO] [stdout] 475 | | "Treat this as incremental memory compaction input, not a full-conversation summary." [INFO] [stdout] 476 | | .to_string(), [INFO] [stdout] ... | [INFO] [stdout] 491 | | format!("\n{text}\n"), [INFO] [stdout] 492 | | ] [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 473 ~ ["You summarize a SEGMENT of an OpenClaw conversation for future model turns.".to_string(), [INFO] [stdout] 474 + "Treat this as incremental memory compaction input, not a full-conversation summary." [INFO] [stdout] 475 + .to_string(), [INFO] [stdout] 476 + policy, [INFO] [stdout] 477 + instruction_block, [INFO] [stdout] 478 + vec![ [INFO] [stdout] 479 + "Output requirements:", [INFO] [stdout] 480 + "- Plain text only.", [INFO] [stdout] 481 + "- No preamble, headings, or markdown formatting.", [INFO] [stdout] 482 + "- Keep it concise while preserving required details.", [INFO] [stdout] 483 + "- Track file operations (created, modified, deleted, renamed) with file paths and current status.", [INFO] [stdout] 484 + "- If no file operations appear, include exactly: \"Files: none\".", [INFO] [stdout] 485 + "- End with exactly: \"Expand for details about: \".", [INFO] [stdout] 486 + &format!("- Target length: about {target_tokens} tokens or less."), [INFO] [stdout] 487 + ] [INFO] [stdout] 488 + .join("\n"), [INFO] [stdout] 489 + format!("\n{previous_context}\n"), [INFO] [stdout] 490 + format!("\n{text}\n")] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:479:9 [INFO] [stdout] | [INFO] [stdout] 479 | / vec![ [INFO] [stdout] 480 | | "Output requirements:", [INFO] [stdout] 481 | | "- Plain text only.", [INFO] [stdout] 482 | | "- No preamble, headings, or markdown formatting.", [INFO] [stdout] ... | [INFO] [stdout] 487 | | &format!("- Target length: about {target_tokens} tokens or less."), [INFO] [stdout] 488 | | ] [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 479 ~ ["Output requirements:", [INFO] [stdout] 480 + "- Plain text only.", [INFO] [stdout] 481 + "- No preamble, headings, or markdown formatting.", [INFO] [stdout] 482 + "- Keep it concise while preserving required details.", [INFO] [stdout] 483 + "- Track file operations (created, modified, deleted, renamed) with file paths and current status.", [INFO] [stdout] 484 + "- If no file operations appear, include exactly: \"Files: none\".", [INFO] [stdout] 485 + "- End with exactly: \"Expand for details about: \".", [INFO] [stdout] 486 + &format!("- Target length: about {target_tokens} tokens or less.")] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:521:5 [INFO] [stdout] | [INFO] [stdout] 521 | / vec![ [INFO] [stdout] 522 | | "You are compacting leaf-level conversation summaries into a single condensed memory node." [INFO] [stdout] 523 | | .to_string(), [INFO] [stdout] 524 | | "You are preparing context for a fresh model instance that will continue this conversation." [INFO] [stdout] ... | [INFO] [stdout] 550 | | format!("\n{text}\n"), [INFO] [stdout] 551 | | ] [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 521 ~ ["You are compacting leaf-level conversation summaries into a single condensed memory node." [INFO] [stdout] 522 + .to_string(), [INFO] [stdout] 523 + "You are preparing context for a fresh model instance that will continue this conversation." [INFO] [stdout] 524 + .to_string(), [INFO] [stdout] 525 + instruction_block, [INFO] [stdout] 526 + previous_context_block, [INFO] [stdout] 527 + vec![ [INFO] [stdout] 528 + "Preserve:", [INFO] [stdout] 529 + "- Decisions made and their rationale when rationale matters going forward.", [INFO] [stdout] 530 + "- Earlier decisions that were superseded, and what replaced them.", [INFO] [stdout] 531 + "- Completed tasks/topics with outcomes.", [INFO] [stdout] 532 + "- In-progress items with current state and what remains.", [INFO] [stdout] 533 + "- Blockers, open questions, and unresolved tensions.", [INFO] [stdout] 534 + "- Specific references (names, paths, URLs, identifiers) needed for continuation.", [INFO] [stdout] 535 + "", [INFO] [stdout] 536 + "Drop low-value detail:", [INFO] [stdout] 537 + "- Context that has not changed from previous_context.", [INFO] [stdout] 538 + "- Intermediate dead ends where the conclusion is already known.", [INFO] [stdout] 539 + "- Transient states that are already resolved.", [INFO] [stdout] 540 + "- Tool-internal mechanics and process scaffolding.", [INFO] [stdout] 541 + "", [INFO] [stdout] 542 + "Use plain text. No mandatory structure.", [INFO] [stdout] 543 + "Include a timeline with timestamps (hour or half-hour) for significant events.", [INFO] [stdout] 544 + "Present information chronologically and mark superseded decisions.", [INFO] [stdout] 545 + "- End with exactly: \"Expand for details about: \".", [INFO] [stdout] 546 + &format!("Target length: about {target_tokens} tokens."), [INFO] [stdout] 547 + ] [INFO] [stdout] 548 + .join("\n"), [INFO] [stdout] 549 + format!("\n{text}\n")] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:562:5 [INFO] [stdout] | [INFO] [stdout] 562 | / vec![ [INFO] [stdout] 563 | | "You are condensing multiple session-level summaries into a higher-level memory node." [INFO] [stdout] 564 | | .to_string(), [INFO] [stdout] 565 | | "A future model should understand trajectory, not per-session minutiae.".to_string(), [INFO] [stdout] ... | [INFO] [stdout] 586 | | format!("\n{text}\n"), [INFO] [stdout] 587 | | ] [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 562 ~ ["You are condensing multiple session-level summaries into a higher-level memory node." [INFO] [stdout] 563 + .to_string(), [INFO] [stdout] 564 + "A future model should understand trajectory, not per-session minutiae.".to_string(), [INFO] [stdout] 565 + instruction_block, [INFO] [stdout] 566 + vec![ [INFO] [stdout] 567 + "Preserve:", [INFO] [stdout] 568 + "- Decisions still in effect and their rationale.", [INFO] [stdout] 569 + "- Decisions that evolved: what changed and why.", [INFO] [stdout] 570 + "- Completed work with outcomes.", [INFO] [stdout] 571 + "- Active constraints, limitations, and known issues.", [INFO] [stdout] 572 + "- Current state of in-progress work.", [INFO] [stdout] 573 + "", [INFO] [stdout] 574 + "Drop:", [INFO] [stdout] 575 + "- Session-local operational detail and process mechanics.", [INFO] [stdout] 576 + "- Identifiers that are no longer relevant.", [INFO] [stdout] 577 + "- Intermediate states superseded by later outcomes.", [INFO] [stdout] 578 + "", [INFO] [stdout] 579 + "Use plain text. Brief headers are fine if useful.", [INFO] [stdout] 580 + "Include a timeline with dates and approximate time of day for key milestones.", [INFO] [stdout] 581 + "- End with exactly: \"Expand for details about: \".", [INFO] [stdout] 582 + &format!("Target length: about {target_tokens} tokens."), [INFO] [stdout] 583 + ] [INFO] [stdout] 584 + .join("\n"), [INFO] [stdout] 585 + format!("\n{text}\n")] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/summarize.rs:602:5 [INFO] [stdout] | [INFO] [stdout] 602 | / vec![ [INFO] [stdout] 603 | | "You are creating a high-level memory node from multiple phase-level summaries.".to_string(), [INFO] [stdout] 604 | | "This may persist for the rest of the conversation. Keep only durable context.".to_string(), [INFO] [stdout] 605 | | instruction_block, [INFO] [stdout] ... | [INFO] [stdout] 625 | | format!("\n{text}\n"), [INFO] [stdout] 626 | | ] [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 602 ~ ["You are creating a high-level memory node from multiple phase-level summaries.".to_string(), [INFO] [stdout] 603 + "This may persist for the rest of the conversation. Keep only durable context.".to_string(), [INFO] [stdout] 604 + instruction_block, [INFO] [stdout] 605 + vec![ [INFO] [stdout] 606 + "Preserve:", [INFO] [stdout] 607 + "- Key decisions and rationale.", [INFO] [stdout] 608 + "- What was accomplished and current state.", [INFO] [stdout] 609 + "- Active constraints and hard limitations.", [INFO] [stdout] 610 + "- Important relationships between people, systems, or concepts.", [INFO] [stdout] 611 + "- Durable lessons learned.", [INFO] [stdout] 612 + "", [INFO] [stdout] 613 + "Drop:", [INFO] [stdout] 614 + "- Operational and process detail.", [INFO] [stdout] 615 + "- Method details unless the method itself was the decision.", [INFO] [stdout] 616 + "- Specific references unless essential for continuation.", [INFO] [stdout] 617 + "", [INFO] [stdout] 618 + "Use plain text. Be concise.", [INFO] [stdout] 619 + "Include a brief timeline with dates (or date ranges) for major milestones.", [INFO] [stdout] 620 + "- End with exactly: \"Expand for details about: \".", [INFO] [stdout] 621 + &format!("Target length: about {target_tokens} tokens."), [INFO] [stdout] 622 + ] [INFO] [stdout] 623 + .join("\n"), [INFO] [stdout] 624 + format!("\n{text}\n")] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/lcm_tools.rs:322:13 [INFO] [stdout] | [INFO] [stdout] 322 | assert!(grep_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!grep_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `DateTime` which implements the `Copy` trait [INFO] [stdout] --> tests/lcm_tools.rs:349:25 [INFO] [stdout] | [INFO] [stdout] 349 | created_at: created_at.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `created_at` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/lcm_tools.rs:373:13 [INFO] [stdout] | [INFO] [stdout] 373 | assert!(grep_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!grep_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> tests/cli.rs:8:30 [INFO] [stdout] | [INFO] [stdout] 8 | fn run_cli(args: &[&str]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 144 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `sieve_lcm::cli::CliError`, for example by boxing large elements or replacing it with `Box` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] = note: `#[warn(clippy::result_large_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/expansion.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | assert!(expand_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!expand_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/expansion.rs:96:13 [INFO] [stdout] | [INFO] [stdout] 96 | assert!(describe_and_expand_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!describe_and_expand_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/expansion.rs:73:24 [INFO] [stdout] | [INFO] [stdout] 73 | let expand_calls = vec![SpyCall { [INFO] [stdout] | ________________________^ [INFO] [stdout] 74 | | args: vec!["expect.objectContaining({summaryIds:[\"sum_a\"],tokenCap:250,})".to_string()], [INFO] [stdout] 75 | | }]; [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 73 ~ let expand_calls = [SpyCall { [INFO] [stdout] 74 + args: vec!["expect.objectContaining({summaryIds:[\"sum_a\"],tokenCap:250,})".to_string()], [INFO] [stdout] 75 ~ }]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/expansion.rs:97:37 [INFO] [stdout] | [INFO] [stdout] 97 | let describe_and_expand_calls = vec![SpyCall { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 98 | | args: vec!["expect.objectContaining({query:\"keyword\",tokenCap:250,})".to_string()], [INFO] [stdout] 99 | | }]; [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 97 ~ let describe_and_expand_calls = [SpyCall { [INFO] [stdout] 98 + args: vec!["expect.objectContaining({query:\"keyword\",tokenCap:250,})".to_string()], [INFO] [stdout] 99 ~ }]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_query_tool.rs:336:9 [INFO] [stdout] | [INFO] [stdout] 336 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_query_tool.rs:397:10 [INFO] [stdout] | [INFO] [stdout] 397 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] = note: `#[warn(clippy::await_holding_lock)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_query_tool.rs:489:9 [INFO] [stdout] | [INFO] [stdout] 489 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_query_tool.rs:516:10 [INFO] [stdout] | [INFO] [stdout] 516 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_query_tool.rs:527:9 [INFO] [stdout] | [INFO] [stdout] 527 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_query_tool.rs:575:10 [INFO] [stdout] | [INFO] [stdout] 575 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_query_tool.rs:603:9 [INFO] [stdout] | [INFO] [stdout] 603 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_query_tool.rs:650:10 [INFO] [stdout] | [INFO] [stdout] 650 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_query_tool.rs:669:9 [INFO] [stdout] | [INFO] [stdout] 669 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_query_tool.rs:739:10 [INFO] [stdout] | [INFO] [stdout] 739 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/lcm_expand_query_tool.rs:743:13 [INFO] [stdout] | [INFO] [stdout] 743 | assert!(grep_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!grep_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_query_tool.rs:796:9 [INFO] [stdout] | [INFO] [stdout] 796 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_query_tool.rs:843:10 [INFO] [stdout] | [INFO] [stdout] 843 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 877 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_tool_delegation.rs:203:9 [INFO] [stdout] | [INFO] [stdout] 203 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_tool_delegation.rs:255:6 [INFO] [stdout] | [INFO] [stdout] 255 | .await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] = note: `#[warn(clippy::await_holding_lock)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_tool_delegation.rs:272:9 [INFO] [stdout] | [INFO] [stdout] 272 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_tool_delegation.rs:302:6 [INFO] [stdout] | [INFO] [stdout] 302 | .await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_tool.rs:323:9 [INFO] [stdout] | [INFO] [stdout] 323 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_tool.rs:336:10 [INFO] [stdout] | [INFO] [stdout] 336 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] = note: `#[warn(clippy::await_holding_lock)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_tool.rs:348:9 [INFO] [stdout] | [INFO] [stdout] 348 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_tool.rs:376:6 [INFO] [stdout] | [INFO] [stdout] 376 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/lcm_expand_tool.rs:379:13 [INFO] [stdout] | [INFO] [stdout] 379 | assert!(calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_tool.rs:386:9 [INFO] [stdout] | [INFO] [stdout] 386 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_tool.rs:428:6 [INFO] [stdout] | [INFO] [stdout] 428 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/lcm_expand_tool.rs:431:13 [INFO] [stdout] | [INFO] [stdout] 431 | assert!(calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_tool.rs:438:9 [INFO] [stdout] | [INFO] [stdout] 438 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_tool.rs:451:10 [INFO] [stdout] | [INFO] [stdout] 451 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_tool.rs:466:9 [INFO] [stdout] | [INFO] [stdout] 466 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_tool.rs:496:10 [INFO] [stdout] | [INFO] [stdout] 496 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_tool.rs:515:9 [INFO] [stdout] | [INFO] [stdout] 515 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_tool.rs:541:10 [INFO] [stdout] | [INFO] [stdout] 541 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_tool.rs:554:9 [INFO] [stdout] | [INFO] [stdout] 554 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_tool.rs:581:10 [INFO] [stdout] | [INFO] [stdout] 581 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_tool.rs:594:9 [INFO] [stdout] | [INFO] [stdout] 594 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_tool.rs:619:10 [INFO] [stdout] | [INFO] [stdout] 619 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_tool.rs:632:9 [INFO] [stdout] | [INFO] [stdout] 632 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_tool.rs:661:10 [INFO] [stdout] | [INFO] [stdout] 661 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/lcm_expand_tool.rs:676:13 [INFO] [stdout] | [INFO] [stdout] 676 | assert!(calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_tool.rs:683:9 [INFO] [stdout] | [INFO] [stdout] 683 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_tool.rs:718:10 [INFO] [stdout] | [INFO] [stdout] 718 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> tests/lcm_expand_tool.rs:742:9 [INFO] [stdout] | [INFO] [stdout] 742 | let _guard = TEST_LOCK.lock(); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> tests/lcm_expand_tool.rs:842:10 [INFO] [stdout] | [INFO] [stdout] 842 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/expansion_auth.rs:879:13 [INFO] [stdout] | [INFO] [stdout] 879 | assert!(calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/expansion_auth.rs:1070:13 [INFO] [stdout] | [INFO] [stdout] 1070 | assert!(grep_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!grep_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/expansion_auth.rs:1130:13 [INFO] [stdout] | [INFO] [stdout] 1130 | assert!(grep_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!grep_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/expansion_auth.rs:1207:13 [INFO] [stdout] | [INFO] [stdout] 1207 | assert!(grep_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!grep_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `next_seq` is used as a loop counter [INFO] [stdout] --> tests/lcm_integration.rs:210:5 [INFO] [stdout] | [INFO] [stdout] 210 | for i in 0..count { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using: `for (next_seq, i) in (conv_store.get_max_seq(conversation_id)? + 1..).zip((0..count))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> tests/lcm_integration.rs:539:25 [INFO] [stdout] | [INFO] [stdout] 539 | let summary_items = context_items [INFO] [stdout] | _________________________^ [INFO] [stdout] 540 | | .iter() [INFO] [stdout] 541 | | .filter(|item| item.summary_id.is_some()) [INFO] [stdout] 542 | | .next(); [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 539 ~ let summary_items = context_items [INFO] [stdout] 540 ~ .iter().find(|item| item.summary_id.is_some()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/lcm_integration.rs:619:13 [INFO] [stdout] | [INFO] [stdout] 619 | assert!(summarize_calls.lock().len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!summarize_calls.lock().is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/engine.rs:1515:13 [INFO] [stdout] | [INFO] [stdout] 1515 | assert!(evaluate_spy_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!evaluate_spy_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/engine.rs:1582:13 [INFO] [stdout] | [INFO] [stdout] 1582 | assert!(evaluate_spy_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!evaluate_spy_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/engine.rs:1585:13 [INFO] [stdout] | [INFO] [stdout] 1585 | assert!(compact_full_sweep_spy_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!compact_full_sweep_spy_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/engine.rs:1623:13 [INFO] [stdout] | [INFO] [stdout] 1623 | assert!(evaluate_spy_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!evaluate_spy_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/engine.rs:1626:13 [INFO] [stdout] | [INFO] [stdout] 1626 | assert!(compact_full_sweep_spy_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!compact_full_sweep_spy_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/engine.rs:1661:13 [INFO] [stdout] | [INFO] [stdout] 1661 | assert!(evaluate_spy_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!evaluate_spy_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/engine.rs:1664:13 [INFO] [stdout] | [INFO] [stdout] 1664 | assert!(compact_full_sweep_spy_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!compact_full_sweep_spy_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/engine.rs:2288:13 [INFO] [stdout] | [INFO] [stdout] 2288 | assert!(evaluate_leaf_trigger_spy_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!evaluate_leaf_trigger_spy_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> tests/engine.rs:2301:13 [INFO] [stdout] | [INFO] [stdout] 2301 | assert!(compact_spy_calls.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!compact_spy_calls.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/engine.rs:1586:40 [INFO] [stdout] | [INFO] [stdout] 1586 | let compact_full_sweep_spy_calls = vec![SpyCall { [INFO] [stdout] | ________________________________________^ [INFO] [stdout] 1587 | | args: vec![Some("expect.objectContaining({conversationId:expectAny(number),tokenBudget:200000,summarize:expectAny(functi... [INFO] [stdout] 1588 | | }]; [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 1586 ~ let compact_full_sweep_spy_calls = [SpyCall { [INFO] [stdout] 1587 + args: vec![Some("expect.objectContaining({conversationId:expectAny(number),tokenBudget:200000,summarize:expectAny(function),force:true,hardTrigger:false,})".to_string())], [INFO] [stdout] 1588 ~ }]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/engine.rs:1627:40 [INFO] [stdout] | [INFO] [stdout] 1627 | let compact_full_sweep_spy_calls = vec![SpyCall { [INFO] [stdout] | ________________________________________^ [INFO] [stdout] 1628 | | args: vec![Some("expect.objectContaining({conversationId:expectAny(number),tokenBudget:400,summarize:expectAny(function)... [INFO] [stdout] 1629 | | }]; [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 1627 ~ let compact_full_sweep_spy_calls = [SpyCall { [INFO] [stdout] 1628 + args: vec![Some("expect.objectContaining({conversationId:expectAny(number),tokenBudget:400,summarize:expectAny(function),force:false,hardTrigger:false,})".to_string())], [INFO] [stdout] 1629 ~ }]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/engine.rs:1665:40 [INFO] [stdout] | [INFO] [stdout] 1665 | let compact_full_sweep_spy_calls = vec![SpyCall { [INFO] [stdout] | ________________________________________^ [INFO] [stdout] 1666 | | args: vec![Some("expect.objectContaining({conversationId:expectAny(number),tokenBudget:400,summarize:expectAny(function)... [INFO] [stdout] 1667 | | }]; [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 1665 ~ let compact_full_sweep_spy_calls = [SpyCall { [INFO] [stdout] 1666 + args: vec![Some("expect.objectContaining({conversationId:expectAny(number),tokenBudget:400,summarize:expectAny(function),force:false,hardTrigger:false,})".to_string())], [INFO] [stdout] 1667 ~ }]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/engine.rs:2074:26 [INFO] [stdout] | [INFO] [stdout] 2074 | let bulk_spy_calls = vec![SpyCall { [INFO] [stdout] | __________________________^ [INFO] [stdout] 2075 | | args: vec![Some( [INFO] [stdout] 2076 | | json!({ "importedMessages": result.imported_messages }), [INFO] [stdout] 2077 | | )], [INFO] [stdout] 2078 | | }]; [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 2074 ~ let bulk_spy_calls = [SpyCall { [INFO] [stdout] 2075 + args: vec![Some( [INFO] [stdout] 2076 + json!({ "importedMessages": result.imported_messages }), [INFO] [stdout] 2077 + )], [INFO] [stdout] 2078 ~ }]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/engine.rs:2285:43 [INFO] [stdout] | [INFO] [stdout] 2285 | let evaluate_leaf_trigger_spy_calls = vec![SpyCall { [INFO] [stdout] | ___________________________________________^ [INFO] [stdout] 2286 | | args: vec![Some("after-turn-proactive-compact".to_string())], [INFO] [stdout] 2287 | | }]; [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 2285 ~ let evaluate_leaf_trigger_spy_calls = [SpyCall { [INFO] [stdout] 2286 + args: vec![Some("after-turn-proactive-compact".to_string())], [INFO] [stdout] 2287 ~ }]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/engine.rs:2295:29 [INFO] [stdout] | [INFO] [stdout] 2295 | let compact_spy_calls = vec![SpyCall { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 2296 | | args: vec![Some( [INFO] [stdout] 2297 | | "expect.objectContaining({sessionId,tokenBudget:4096,compactionTarget:\"threshold\",})" [INFO] [stdout] 2298 | | .to_string(), [INFO] [stdout] 2299 | | )], [INFO] [stdout] 2300 | | }]; [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 2295 ~ let compact_spy_calls = [SpyCall { [INFO] [stdout] 2296 + args: vec![Some( [INFO] [stdout] 2297 + "expect.objectContaining({sessionId,tokenBudget:4096,compactionTarget:\"threshold\",})" [INFO] [stdout] 2298 + .to_string(), [INFO] [stdout] 2299 + )], [INFO] [stdout] 2300 ~ }]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 38.28s [INFO] running `Command { std: "docker" "inspect" "4908eaa1db3dc821db2a2ed0e7d84650be7b46b7c51cb5445181c8781ba3a4d5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4908eaa1db3dc821db2a2ed0e7d84650be7b46b7c51cb5445181c8781ba3a4d5", kill_on_drop: false }` [INFO] [stdout] 4908eaa1db3dc821db2a2ed0e7d84650be7b46b7c51cb5445181c8781ba3a4d5