[INFO] cloning repository https://github.com/nihmadev/fs-mcp-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/nihmadev/fs-mcp-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnihmadev%2Ffs-mcp-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnihmadev%2Ffs-mcp-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 26440603f4b19331c97a5b0071635278530a0e32
[INFO] checking nihmadev/fs-mcp-rs/26440603f4b19331c97a5b0071635278530a0e32 against 67854e511de21d881bb16426996cd4259d44aa2e for pr-161154
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnihmadev%2Ffs-mcp-rs" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc1/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/nihmadev/fs-mcp-rs
[INFO] finished tweaking git repo https://github.com/nihmadev/fs-mcp-rs
[INFO] tweaked toml for git repo https://github.com/nihmadev/fs-mcp-rs written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/nihmadev/fs-mcp-rs on toolchain 67854e511de21d881bb16426996cd4259d44aa2e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+67854e511de21d881bb16426996cd4259d44aa2e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/nihmadev/fs-mcp-rs 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" "+67854e511de21d881bb16426996cd4259d44aa2e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded ignore v0.4.31
[INFO] [stderr]   Downloaded schemars v1.2.2
[INFO] [stderr]   Downloaded camino v1.2.5
[INFO] [stderr]   Downloaded tray-icon v0.24.2
[INFO] [stderr]   Downloaded tao-macros v0.1.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a6bb29b07618f4ccbc63f1beee8f360d0a19566a7585640f6cc616dc7bb93119
[INFO] running `Command { std: "docker" "start" "a6bb29b07618f4ccbc63f1beee8f360d0a19566a7585640f6cc616dc7bb93119", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a6bb29b07618f4ccbc63f1beee8f360d0a19566a7585640f6cc616dc7bb93119", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a6bb29b07618f4ccbc63f1beee8f360d0a19566a7585640f6cc616dc7bb93119" "/opt/rustwide/cargo-home/bin/cargo" "+67854e511de21d881bb16426996cd4259d44aa2e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a6bb29b07618f4ccbc63f1beee8f360d0a19566a7585640f6cc616dc7bb93119", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a6bb29b07618f4ccbc63f1beee8f360d0a19566a7585640f6cc616dc7bb93119" "/opt/rustwide/cargo-home/bin/cargo" "+67854e511de21d881bb16426996cd4259d44aa2e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]     Checking futures-channel v0.3.33
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling time-core v0.1.9
[INFO] [stderr]    Compiling erased-serde v0.4.10
[INFO] [stderr]    Compiling winnow v1.0.4
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling ctor-proc-macro v0.0.7
[INFO] [stderr]    Compiling toml_writer v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling dtoa v1.0.11
[INFO] [stderr]    Compiling phf_generator v0.13.1
[INFO] [stderr]    Compiling cfg-expr v0.15.8
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling tendril v0.5.1
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling dtoa-short v0.3.5
[INFO] [stderr]    Compiling camino v1.2.5
[INFO] [stderr]    Compiling servo_arc v0.4.3
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling phf_codegen v0.13.1
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling selectors v0.36.1
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]     Checking regex-automata v0.4.16
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling ctor v0.8.0
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling string_cache v0.9.0
[INFO] [stderr]    Compiling quick-xml v0.41.0
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling string_cache_codegen v0.6.1
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling gtk v0.18.2
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]    Compiling time-macros v0.2.32
[INFO] [stderr]    Compiling simd-adler32 v0.3.10
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]    Compiling web_atoms v0.2.5
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling time v0.3.54
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]     Checking crossbeam-epoch v0.9.20
[INFO] [stderr]     Checking crossbeam-channel v0.5.16
[INFO] [stderr]    Compiling blake3 v1.8.5
[INFO] [stderr]     Checking bstr v1.13.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]     Checking clap_builder v4.6.2
[INFO] [stderr]     Checking axum-core v0.5.6
[INFO] [stderr]     Checking serde_spanned v1.1.1
[INFO] [stderr]     Checking toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]     Checking regex v1.13.1
[INFO] [stderr]     Checking uuid v1.24.0
[INFO] [stderr]     Checking globset v0.4.19
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking cfb v0.7.3
[INFO] [stderr]     Checking rustix v1.1.4
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling png v0.17.16
[INFO] [stderr]     Checking toml v0.9.12+spec-1.1.0
[INFO] [stderr]    Compiling semver v1.0.28
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]     Checking infer v0.19.0
[INFO] [stderr]    Compiling field-offset v0.3.6
[INFO] [stderr]    Compiling toml v1.1.3+spec-1.1.0
[INFO] [stderr]     Checking serde-untagged v0.1.9
[INFO] [stderr]     Checking crossbeam-deque v0.8.7
[INFO] [stderr]     Checking crossterm v0.25.0
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking fuzzy-matcher v0.3.7
[INFO] [stderr]     Checking newline-converter v0.3.0
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]    Compiling wry v0.55.1
[INFO] [stderr]    Compiling tauri-runtime v2.11.3
[INFO] [stderr]     Checking constant_time_eq v0.4.2
[INFO] [stderr]     Checking glob v0.3.4
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]     Checking ignore v0.4.31
[INFO] [stderr]    Compiling ico v0.5.0
[INFO] [stderr]    Compiling tauri-runtime-wry v2.11.4
[INFO] [stderr]     Checking inquire v0.7.5
[INFO] [stderr]     Checking heck v0.5.0
[INFO] [stderr]    Compiling rfd v0.16.0
[INFO] [stderr]     Checking sigchld v0.2.4
[INFO] [stderr]     Checking shared_child v1.1.1
[INFO] [stderr]     Checking open v5.4.0
[INFO] [stderr]     Checking png v0.18.1
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]    Compiling embed-resource v3.0.11
[INFO] [stderr]    Compiling serde_repr v0.1.21
[INFO] [stderr]    Compiling tauri-winres v0.3.6
[INFO] [stderr]     Checking cookie v0.18.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling futures-macro v0.3.33
[INFO] [stderr]    Compiling phf_macros v0.13.1
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling cssparser-macros v0.6.1
[INFO] [stderr]    Compiling schemars_derive v0.8.22
[INFO] [stderr]    Compiling tokio-macros v2.7.1
[INFO] [stderr]    Compiling dlopen2_derive v0.4.3
[INFO] [stderr]    Compiling serialize-to-javascript-impl v0.1.2
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]     Checking dlopen2 v0.8.2
[INFO] [stderr]     Checking futures-util v0.3.33
[INFO] [stderr]     Checking tokio v1.53.1
[INFO] [stderr]    Compiling phf v0.13.1
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling cssparser v0.36.0
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]     Checking clap v4.6.4
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling markup5ever v0.38.0
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]    Compiling html5ever v0.38.0
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling serde_with_macros v3.21.0
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking futures-executor v0.3.33
[INFO] [stderr]    Compiling dom_query v0.27.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking dpi v0.1.2
[INFO] [stderr]     Checking jsonptr v0.6.3
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking plist v1.10.0
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking keyboard-types v0.7.0
[INFO] [stderr]     Checking serialize-to-javascript v0.1.2
[INFO] [stderr]     Checking benchmarks v1.2.7 (/opt/rustwide/workdir/crates/benchmarks)
[INFO] [stderr]    Compiling serde_with v3.21.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking json-patch v3.0.1
[INFO] [stderr]    Compiling toml_datetime v0.6.3
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling cargo-platform v0.1.9
[INFO] [stderr]    Compiling toml_edit v0.20.2
[INFO] [stderr]    Compiling toml_edit v0.19.15
[INFO] [stderr]    Compiling cargo_metadata v0.19.2
[INFO] [stderr]    Compiling cargo_toml v0.22.3
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]    Compiling proc-macro-crate v1.3.1
[INFO] [stderr]     Checking urlpattern v0.3.0
[INFO] [stderr]    Compiling gtk3-macros v0.18.2
[INFO] [stderr]     Checking hyper v1.11.0
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tauri-utils v2.9.3
[INFO] [stderr]    Compiling toml v0.8.2
[INFO] [stderr]    Compiling proc-macro-crate v2.0.2
[INFO] [stderr]    Compiling schemars v0.8.22
[INFO] [stderr]    Compiling glib-macros v0.18.5
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]    Compiling system-deps v6.2.2
[INFO] [stderr]     Checking axum v0.8.9
[INFO] [stderr]    Compiling glib-sys v0.18.1
[INFO] [stderr]    Compiling gobject-sys v0.18.0
[INFO] [stderr]    Compiling gio-sys v0.18.1
[INFO] [stderr]    Compiling gdk-sys v0.18.2
[INFO] [stderr]    Compiling atk-sys v0.18.2
[INFO] [stderr]    Compiling cairo-sys-rs v0.18.2
[INFO] [stderr]    Compiling pango-sys v0.18.0
[INFO] [stderr]    Compiling gdk-pixbuf-sys v0.18.0
[INFO] [stderr]    Compiling gtk-sys v0.18.2
[INFO] [stderr]    Compiling javascriptcore-rs-sys v1.1.1
[INFO] [stderr]    Compiling soup3-sys v0.5.0
[INFO] [stderr]    Compiling webkit2gtk-sys v2.0.2
[INFO] [stderr]     Checking gdkwayland-sys v0.18.2
[INFO] [stderr]     Checking glib v0.18.5
[INFO] [stderr]     Checking libappindicator-sys v0.9.0
[INFO] [stderr]     Checking fs-mcp-rs v1.2.7 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]    --> src/search.rs:229:26
[INFO] [stdout]     |
[INFO] [stdout] 229 |                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout]     |                          ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 229 -                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout] 229 +                         .try_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]    --> src/search.rs:229:26
[INFO] [stdout]     |
[INFO] [stdout] 229 |                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout]     |                          ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 229 -                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout] 229 +                         .try_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub mod launcher;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:63:1
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub mod tools;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fs: Filesystem,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub search: Searcher,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub tree: TreeLister,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub settings: Arc<Settings>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub terminal: Terminal,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub oauth: OAuthStore,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub io_permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub search_permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/app.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn new(settings: Settings) -> Result<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:74:1
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct RegisteredClient {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub client_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub client_secret: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub redirect_uris: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub client_name: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 79 |     pub grant_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub response_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub scope: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub issued_at: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:87:1
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct AuthCode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub code: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub client_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub redirect_uri: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub scope: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub code_challenge: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub code_challenge_method: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 94 |     pub expires_at: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:99:1
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub struct TokenInfo {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub access_token: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub refresh_token: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:102:5
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub client_id: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub scope: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub expires_at: Instant,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:116:1
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct OAuthStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/oauth.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:127:5
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn register_client(&self, mut client: RegisteredClient) -> RegisteredClient {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 142 |     pub fn get_client(&self, client_id: &str) -> Option<RegisteredClient> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:147:5
[INFO] [stdout]     |
[INFO] [stdout] 147 | /     pub fn create_code(
[INFO] [stdout] 148 | |         &self,
[INFO] [stdout] 149 | |         client_id: String,
[INFO] [stdout] 150 | |         redirect_uri: String,
[INFO] [stdout] ...   |
[INFO] [stdout] 153 | |         code_challenge_method: Option<String>,
[INFO] [stdout] 154 | |     ) -> String {
[INFO] [stdout]     | |_______________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     pub fn consume_code(&self, code: &str) -> Option<AuthCode> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:180:5
[INFO] [stdout]     |
[INFO] [stdout] 180 |     pub fn issue_token(&self, client_id: String, scope: String) -> TokenInfo {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:198:5
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub fn validate_token(&self, token: &str) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:207:1
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub fn get_issuer_url(app: &App, headers: &HeaderMap) -> String {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:233:1
[INFO] [stdout]     |
[INFO] [stdout] 233 | / pub async fn oauth_authorization_server_metadata(
[INFO] [stdout] 234 | |     State(app): State<App>,
[INFO] [stdout] 235 | |     headers: HeaderMap,
[INFO] [stdout] 236 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:253:1
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub async fn openid_configuration(State(app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:272:1
[INFO] [stdout]     |
[INFO] [stdout] 272 | / pub async fn oauth_protected_resource_metadata(
[INFO] [stdout] 273 | |     State(app): State<App>,
[INFO] [stdout] 274 | |     headers: HeaderMap,
[INFO] [stdout] 275 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:286:1
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub struct RegisterRequest {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:287:5
[INFO] [stdout]     |
[INFO] [stdout] 287 |     pub client_name: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:288:5
[INFO] [stdout]     |
[INFO] [stdout] 288 |     pub redirect_uris: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:289:5
[INFO] [stdout]     |
[INFO] [stdout] 289 |     pub grant_types: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:290:5
[INFO] [stdout]     |
[INFO] [stdout] 290 |     pub response_types: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:291:5
[INFO] [stdout]     |
[INFO] [stdout] 291 |     pub scope: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:294:1
[INFO] [stdout]     |
[INFO] [stdout] 294 | / pub async fn register_client(
[INFO] [stdout] 295 | |     State(app): State<App>,
[INFO] [stdout] 296 | |     Json(req): Json<RegisterRequest>,
[INFO] [stdout] 297 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:335:1
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub struct AuthorizeParams {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:336:5
[INFO] [stdout]     |
[INFO] [stdout] 336 |     pub client_id: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:337:5
[INFO] [stdout]     |
[INFO] [stdout] 337 |     pub redirect_uri: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:338:5
[INFO] [stdout]     |
[INFO] [stdout] 338 |     pub response_type: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:339:5
[INFO] [stdout]     |
[INFO] [stdout] 339 |     pub scope: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:340:5
[INFO] [stdout]     |
[INFO] [stdout] 340 |     pub state: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:341:5
[INFO] [stdout]     |
[INFO] [stdout] 341 |     pub code_challenge: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:342:5
[INFO] [stdout]     |
[INFO] [stdout] 342 |     pub code_challenge_method: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:345:1
[INFO] [stdout]     |
[INFO] [stdout] 345 | / pub async fn authorize_get(
[INFO] [stdout] 346 | |     State(app): State<App>,
[INFO] [stdout] 347 | |     Query(params): Query<AuthorizeParams>,
[INFO] [stdout] 348 | | ) -> Response {
[INFO] [stdout]     | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:391:1
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub struct AuthorizeForm {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:392:5
[INFO] [stdout]     |
[INFO] [stdout] 392 |     pub code: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:393:5
[INFO] [stdout]     |
[INFO] [stdout] 393 |     pub redirect_uri: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:394:5
[INFO] [stdout]     |
[INFO] [stdout] 394 |     pub state: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:397:1
[INFO] [stdout]     |
[INFO] [stdout] 397 | pub async fn authorize_post(Form(form): Form<AuthorizeForm>) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:453:1
[INFO] [stdout]     |
[INFO] [stdout] 453 | / pub async fn token_endpoint(
[INFO] [stdout] 454 | |     State(app): State<App>,
[INFO] [stdout] 455 | |     headers: HeaderMap,
[INFO] [stdout] 456 | |     body: axum::body::Bytes,
[INFO] [stdout] 457 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:586:1
[INFO] [stdout]     |
[INFO] [stdout] 586 | pub async fn userinfo_endpoint(State(_app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:604:1
[INFO] [stdout]     |
[INFO] [stdout] 604 | pub async fn jwks_endpoint() -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/launcher.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct CompanionProcess {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> src/launcher.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum Tunnel<'a> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Ngrok {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     Cloudflared {
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     Zrok {
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> src/launcher.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn failure(&self) -> Option<&str> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/launcher.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | /     pub fn start_tunnel(
[INFO] [stdout] 79 | |         tunnel: Tunnel<'_>,
[INFO] [stdout] 80 | |         host: IpAddr,
[INFO] [stdout] 81 | |         port: u16,
[INFO] [stdout] 82 | |         window: CompanionWindow,
[INFO] [stdout] 83 | |     ) -> Result<Self> {
[INFO] [stdout]    | |_____________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/launcher.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 87 | /     pub fn start_tunnel_with_url_callback(
[INFO] [stdout] 88 | |         tunnel: Tunnel<'_>,
[INFO] [stdout] 89 | |         host: IpAddr,
[INFO] [stdout] 90 | |         port: u16,
[INFO] [stdout] 91 | |         window: CompanionWindow,
[INFO] [stdout] 92 | |         on_public_url: impl Fn(String) + Send + Sync + 'static,
[INFO] [stdout] 93 | |     ) -> Result<Self> {
[INFO] [stdout]    | |_____________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> src/tools/dispatch.rs:45:1
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn tool_error(message: String) -> Value {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub mod launcher;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:63:1
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub mod tools;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fs: Filesystem,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub search: Searcher,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub tree: TreeLister,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub settings: Arc<Settings>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub terminal: Terminal,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub oauth: OAuthStore,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub io_permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub search_permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/app.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn new(settings: Settings) -> Result<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:74:1
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct RegisteredClient {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub client_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub client_secret: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub redirect_uris: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub client_name: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 79 |     pub grant_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub response_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub scope: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub issued_at: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:87:1
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct AuthCode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub code: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub client_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub redirect_uri: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub scope: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub code_challenge: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub code_challenge_method: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 94 |     pub expires_at: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:99:1
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub struct TokenInfo {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub access_token: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub refresh_token: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:102:5
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub client_id: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub scope: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub expires_at: Instant,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:116:1
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct OAuthStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/oauth.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:127:5
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn register_client(&self, mut client: RegisteredClient) -> RegisteredClient {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 142 |     pub fn get_client(&self, client_id: &str) -> Option<RegisteredClient> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:147:5
[INFO] [stdout]     |
[INFO] [stdout] 147 | /     pub fn create_code(
[INFO] [stdout] 148 | |         &self,
[INFO] [stdout] 149 | |         client_id: String,
[INFO] [stdout] 150 | |         redirect_uri: String,
[INFO] [stdout] ...   |
[INFO] [stdout] 153 | |         code_challenge_method: Option<String>,
[INFO] [stdout] 154 | |     ) -> String {
[INFO] [stdout]     | |_______________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     pub fn consume_code(&self, code: &str) -> Option<AuthCode> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:180:5
[INFO] [stdout]     |
[INFO] [stdout] 180 |     pub fn issue_token(&self, client_id: String, scope: String) -> TokenInfo {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:198:5
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub fn validate_token(&self, token: &str) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:207:1
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub fn get_issuer_url(app: &App, headers: &HeaderMap) -> String {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:233:1
[INFO] [stdout]     |
[INFO] [stdout] 233 | / pub async fn oauth_authorization_server_metadata(
[INFO] [stdout] 234 | |     State(app): State<App>,
[INFO] [stdout] 235 | |     headers: HeaderMap,
[INFO] [stdout] 236 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:253:1
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub async fn openid_configuration(State(app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:272:1
[INFO] [stdout]     |
[INFO] [stdout] 272 | / pub async fn oauth_protected_resource_metadata(
[INFO] [stdout] 273 | |     State(app): State<App>,
[INFO] [stdout] 274 | |     headers: HeaderMap,
[INFO] [stdout] 275 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:286:1
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub struct RegisterRequest {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:287:5
[INFO] [stdout]     |
[INFO] [stdout] 287 |     pub client_name: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:288:5
[INFO] [stdout]     |
[INFO] [stdout] 288 |     pub redirect_uris: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:289:5
[INFO] [stdout]     |
[INFO] [stdout] 289 |     pub grant_types: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:290:5
[INFO] [stdout]     |
[INFO] [stdout] 290 |     pub response_types: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:291:5
[INFO] [stdout]     |
[INFO] [stdout] 291 |     pub scope: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:294:1
[INFO] [stdout]     |
[INFO] [stdout] 294 | / pub async fn register_client(
[INFO] [stdout] 295 | |     State(app): State<App>,
[INFO] [stdout] 296 | |     Json(req): Json<RegisterRequest>,
[INFO] [stdout] 297 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:335:1
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub struct AuthorizeParams {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:336:5
[INFO] [stdout]     |
[INFO] [stdout] 336 |     pub client_id: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:337:5
[INFO] [stdout]     |
[INFO] [stdout] 337 |     pub redirect_uri: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:338:5
[INFO] [stdout]     |
[INFO] [stdout] 338 |     pub response_type: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:339:5
[INFO] [stdout]     |
[INFO] [stdout] 339 |     pub scope: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:340:5
[INFO] [stdout]     |
[INFO] [stdout] 340 |     pub state: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:341:5
[INFO] [stdout]     |
[INFO] [stdout] 341 |     pub code_challenge: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:342:5
[INFO] [stdout]     |
[INFO] [stdout] 342 |     pub code_challenge_method: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:345:1
[INFO] [stdout]     |
[INFO] [stdout] 345 | / pub async fn authorize_get(
[INFO] [stdout] 346 | |     State(app): State<App>,
[INFO] [stdout] 347 | |     Query(params): Query<AuthorizeParams>,
[INFO] [stdout] 348 | | ) -> Response {
[INFO] [stdout]     | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:391:1
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub struct AuthorizeForm {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:392:5
[INFO] [stdout]     |
[INFO] [stdout] 392 |     pub code: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:393:5
[INFO] [stdout]     |
[INFO] [stdout] 393 |     pub redirect_uri: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:394:5
[INFO] [stdout]     |
[INFO] [stdout] 394 |     pub state: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:397:1
[INFO] [stdout]     |
[INFO] [stdout] 397 | pub async fn authorize_post(Form(form): Form<AuthorizeForm>) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:453:1
[INFO] [stdout]     |
[INFO] [stdout] 453 | / pub async fn token_endpoint(
[INFO] [stdout] 454 | |     State(app): State<App>,
[INFO] [stdout] 455 | |     headers: HeaderMap,
[INFO] [stdout] 456 | |     body: axum::body::Bytes,
[INFO] [stdout] 457 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:586:1
[INFO] [stdout]     |
[INFO] [stdout] 586 | pub async fn userinfo_endpoint(State(_app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:604:1
[INFO] [stdout]     |
[INFO] [stdout] 604 | pub async fn jwks_endpoint() -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/launcher.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct CompanionProcess {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> src/launcher.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum Tunnel<'a> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Ngrok {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     Cloudflared {
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     Zrok {
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> src/launcher.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn failure(&self) -> Option<&str> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/launcher.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | /     pub fn start_tunnel(
[INFO] [stdout] 79 | |         tunnel: Tunnel<'_>,
[INFO] [stdout] 80 | |         host: IpAddr,
[INFO] [stdout] 81 | |         port: u16,
[INFO] [stdout] 82 | |         window: CompanionWindow,
[INFO] [stdout] 83 | |     ) -> Result<Self> {
[INFO] [stdout]    | |_____________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/launcher.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 87 | /     pub fn start_tunnel_with_url_callback(
[INFO] [stdout] 88 | |         tunnel: Tunnel<'_>,
[INFO] [stdout] 89 | |         host: IpAddr,
[INFO] [stdout] 90 | |         port: u16,
[INFO] [stdout] 91 | |         window: CompanionWindow,
[INFO] [stdout] 92 | |         on_public_url: impl Fn(String) + Send + Sync + 'static,
[INFO] [stdout] 93 | |     ) -> Result<Self> {
[INFO] [stdout]    | |_____________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> src/tools/dispatch.rs:45:1
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn tool_error(message: String) -> Value {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking gio v0.18.4
[INFO] [stderr]     Checking cairo-rs v0.18.5
[INFO] [stderr]     Checking atk v0.18.2
[INFO] [stderr]     Checking javascriptcore-rs v1.1.2
[INFO] [stderr]    Compiling tauri-build v2.6.3
[INFO] [stderr]    Compiling tauri-plugin v2.6.3
[INFO] [stderr]    Compiling tauri-codegen v2.6.3
[INFO] [stderr]    Compiling tauri v2.11.5
[INFO] [stderr]    Compiling tauri-plugin-fs v2.5.1
[INFO] [stderr]    Compiling tauri-macros v2.6.3
[INFO] [stderr]    Compiling tauri-plugin-shell v2.3.5
[INFO] [stderr]    Compiling tauri-plugin-dialog v2.7.2
[INFO] [stderr]    Compiling fs-mcp-rs-desktop v1.2.7 (/opt/rustwide/workdir/apps/desktop/src-tauri)
[INFO] [stderr] error: failed to run custom build command for `fs-mcp-rs-desktop v1.2.7 (/opt/rustwide/workdir/apps/desktop/src-tauri)`
[INFO] [stderr] note: To improve backtraces for build dependencies, set the CARGO_PROFILE_DEV_BUILD_OVERRIDE_DEBUG=true environment variable to enable debug information generation.
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/target/debug/build/fs-mcp-rs-desktop/2250d6dcda5c0ed4/out/build_script_build` (exit status: 1)
[INFO] [stderr]   --- stdout
[INFO] [stderr]   cargo:rerun-if-env-changed=TAURI_CONFIG
[INFO] [stderr]   cargo:rustc-check-cfg=cfg(desktop)
[INFO] [stderr]   cargo:rustc-cfg=desktop
[INFO] [stderr]   cargo:rustc-check-cfg=cfg(mobile)
[INFO] [stderr]   cargo:rerun-if-changed=/opt/rustwide/workdir/apps/desktop/src-tauri/tauri.conf.json
[INFO] [stderr]   cargo:rustc-env=TAURI_ANDROID_PACKAGE_NAME_APP_NAME=desktop
[INFO] [stderr]   cargo:rustc-env=TAURI_ANDROID_PACKAGE_NAME_PREFIX=com_fs_1mcp_1rs
[INFO] [stderr]   cargo:rustc-check-cfg=cfg(dev)
[INFO] [stderr]   cargo:PERMISSION_FILES_PATH=/opt/rustwide/target/debug/build/fs-mcp-rs-desktop/caf531a633c0c0c8/out/app-manifest/__app__-permission-files
[INFO] [stderr]   Read-only file system (os error 30): Read-only file system (os error 30)
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] running `Command { std: "docker" "inspect" "a6bb29b07618f4ccbc63f1beee8f360d0a19566a7585640f6cc616dc7bb93119", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a6bb29b07618f4ccbc63f1beee8f360d0a19566a7585640f6cc616dc7bb93119", kill_on_drop: false }`
[INFO] [stdout] a6bb29b07618f4ccbc63f1beee8f360d0a19566a7585640f6cc616dc7bb93119
