diff --git a/app/.cargo/config.toml b/app/.cargo/config.toml new file mode 100644 index 0000000..0a3dde6 --- /dev/null +++ b/app/.cargo/config.toml @@ -0,0 +1,16 @@ +# Cargo configuration file + +[build] +jobs = 4 +rustflags = [ + # "-Ctarget-feature=+fp16,+fhm" +] + +[profile.dev] +opt-level = 0 +debug = true + +[profile.release] +opt-level = 3 +debug = false +lto = true \ No newline at end of file diff --git a/app/Cargo.lock b/app/Cargo.lock index 8bd3a5b..dcaee59 100644 --- a/app/Cargo.lock +++ b/app/Cargo.lock @@ -232,7 +232,7 @@ dependencies = [ "arg_enum_proc_macro", "arrayvec", "log", - "num-rational 0.4.2", + "num-rational", "num-traits", "pastey", "rayon", @@ -251,7 +251,7 @@ dependencies = [ "arrayvec", "log", "nom", - "num-rational 0.4.2", + "num-rational", "v_frame", ] @@ -330,12 +330,6 @@ version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - [[package]] name = "byteorder-lite" version = "0.1.0" @@ -399,166 +393,6 @@ dependencies = [ "wayland-client", ] -[[package]] -name = "candle-core" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde6b117b2e56ee68959aad0cb5fdfe65f39328c8c82e5bd356a6b95ade471c7" -dependencies = [ - "byteorder", - "candle-gemm", - "half", - "memmap2 0.7.1", - "num-traits", - "num_cpus", - "rand 0.8.5", - "rand_distr 0.4.3", - "rayon", - "safetensors", - "thiserror 1.0.69", - "zip", -] - -[[package]] -name = "candle-gemm" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef9b07a4b0ba1a304b44432006580980ddff9748c201261c279437e7b11bba68" -dependencies = [ - "candle-gemm-c32", - "candle-gemm-c64", - "candle-gemm-common", - "candle-gemm-f16", - "candle-gemm-f32", - "candle-gemm-f64", - "dyn-stack", - "lazy_static", - "num-complex 0.4.6", - "num-traits", - "paste", - "raw-cpuid", - "rayon", - "seq-macro", -] - -[[package]] -name = "candle-gemm-c32" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f595241dad99811de285e029889f57c29dd98e33de7a8a6b881867b1488d7d4a" -dependencies = [ - "candle-gemm-common", - "dyn-stack", - "lazy_static", - "num-complex 0.4.6", - "num-traits", - "paste", - "raw-cpuid", - "rayon", - "seq-macro", -] - -[[package]] -name = "candle-gemm-c64" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "648f22fd8f5a4f330e29d791845b514966421308a6a2b5fedb949ee07e54c77f" -dependencies = [ - "candle-gemm-common", - "dyn-stack", - "lazy_static", - "num-complex 0.4.6", - "num-traits", - "paste", - "raw-cpuid", - "rayon", - "seq-macro", -] - -[[package]] -name = "candle-gemm-common" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e03c01b4ca3b9d71e4eb89e42946a08f8b0d2f1b861f7fa2ea0966233f1e0b08" -dependencies = [ - "dyn-stack", - "lazy_static", - "num-complex 0.4.6", - "num-traits", - "paste", - "raw-cpuid", - "rayon", - "seq-macro", -] - -[[package]] -name = "candle-gemm-f16" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97f8af2a482131713d28a337abff6debf26c529afa1837caf2ba190909b2107c" -dependencies = [ - "candle-gemm-common", - "candle-gemm-f32", - "dyn-stack", - "half", - "lazy_static", - "num-complex 0.4.6", - "num-traits", - "paste", - "raw-cpuid", - "rayon", - "seq-macro", -] - -[[package]] -name = "candle-gemm-f32" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938927961e2f0c0a6064fcf3524ea3f7f455fe5708419532a6fea9aea1ab45ae" -dependencies = [ - "candle-gemm-common", - "dyn-stack", - "lazy_static", - "num-complex 0.4.6", - "num-traits", - "paste", - "raw-cpuid", - "rayon", - "seq-macro", -] - -[[package]] -name = "candle-gemm-f64" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d192d7126e59b81ef4cf13cd9f194e6dbdc09171f65d0074d059dc009ac06775" -dependencies = [ - "candle-gemm-common", - "dyn-stack", - "lazy_static", - "num-complex 0.4.6", - "num-traits", - "paste", - "raw-cpuid", - "rayon", - "seq-macro", -] - -[[package]] -name = "candle-nn" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f65727276854c62e0d5b65e9e71b491d055477964943816e04da7dcda33852c" -dependencies = [ - "candle-core", - "half", - "num-traits", - "rayon", - "safetensors", - "serde", - "thiserror 1.0.69", -] - [[package]] name = "cc" version = "1.2.49" @@ -610,33 +444,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "ciborium" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" - -[[package]] -name = "ciborium-ll" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" -dependencies = [ - "ciborium-io", - "half", -] - [[package]] name = "color_quant" version = "1.1.0" @@ -913,16 +720,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" -[[package]] -name = "dyn-stack" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe7f8d7bcc523381d3c437b82cf74805de3931de0da69309ae0fe1bdf7a256e" -dependencies = [ - "bytemuck", - "reborrow", -] - [[package]] name = "either" version = "1.15.0" @@ -1406,9 +1203,6 @@ checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", - "num-traits", - "rand 0.9.2", - "rand_distr 0.5.1", "zerocopy", ] @@ -1550,7 +1344,7 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jarvis-app" -version = "0.0.3" +version = "0.1.0" dependencies = [ "atomic_enum", "hound", @@ -1559,10 +1353,9 @@ dependencies = [ "log", "once_cell", "platform-dirs", - "portaudio", - "rand 0.9.2", + "pv_recorder", + "rand 0.8.5", "rodio", - "rustpotter", "seqdiff", "serde", "serde_json", @@ -1715,12 +1508,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "libm" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" - [[package]] name = "libredox" version = "0.1.10" @@ -1850,15 +1637,6 @@ version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" -[[package]] -name = "memmap2" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6" -dependencies = [ - "libc", -] - [[package]] name = "memmap2" version = "0.9.9" @@ -1981,19 +1759,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" -[[package]] -name = "num" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" -dependencies = [ - "num-complex 0.2.4", - "num-integer", - "num-iter", - "num-rational 0.2.4", - "num-traits", -] - [[package]] name = "num-bigint" version = "0.4.6" @@ -2004,25 +1769,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-complex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - [[package]] name = "num-derive" version = "0.4.2" @@ -2043,28 +1789,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-rational" version = "0.4.2" @@ -2083,17 +1807,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", - "libm", -] - -[[package]] -name = "num_cpus" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" -dependencies = [ - "hermit-abi", - "libc", ] [[package]] @@ -2604,27 +2317,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "portaudio" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d64242ed9c0236ba1470729856c0e69363ecd2339940230161383f1238804f6" -dependencies = [ - "bitflags 2.10.0", - "libc", - "num", - "portaudio-sys2", -] - -[[package]] -name = "portaudio-sys2" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86a36ee35d719327fee8827321bd41f3ee7a2cc2335aa28f9168ffed3e82c6b8" -dependencies = [ - "pkg-config", -] - [[package]] name = "ppv-lite86" version = "0.2.21" @@ -2634,15 +2326,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "primal-check" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0d895b311e3af9902528fbb8f928688abbd95872819320517cc24ca6b2bd08" -dependencies = [ - "num-integer", -] - [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -2724,6 +2407,15 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "pv_recorder" +version = "1.2.6" +source = "git+https://github.com/Priler/pvrecorder#db9d80cde8df5e51a2634cd6756b7fd7b7010316" +dependencies = [ + "libc", + "libloading 0.8.9", +] + [[package]] name = "pxfm" version = "0.1.27" @@ -2831,26 +2523,6 @@ dependencies = [ "getrandom 0.3.4", ] -[[package]] -name = "rand_distr" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "rand_distr" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463" -dependencies = [ - "num-traits", - "rand 0.9.2", -] - [[package]] name = "rav1e" version = "0.8.1" @@ -2901,15 +2573,6 @@ dependencies = [ "rgb", ] -[[package]] -name = "raw-cpuid" -version = "10.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "raw-window-handle" version = "0.6.2" @@ -2936,21 +2599,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "realfft" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f821338fddb99d089116342c46e9f1fbf3828dba077674613e734e01d6ea8677" -dependencies = [ - "rustfft", -] - -[[package]] -name = "reborrow" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" - [[package]] name = "redox_syscall" version = "0.4.1" @@ -3005,7 +2653,7 @@ checksum = "e40ecf59e742e03336be6a3d53755e789fd05a059fa22dfa0ed624722319e183" dependencies = [ "cpal", "dasp_sample", - "num-rational 0.4.2", + "num-rational", "symphonia", ] @@ -3015,18 +2663,6 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad8388ea1a9e0ea807e442e8263a699e7edcb320ecbcd21b4fa8ff859acce3ba" -[[package]] -name = "rubato" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6dd52e80cfc21894deadf554a5673002938ae4625f7a283e536f9cf7c17b0d5" -dependencies = [ - "num-complex 0.4.6", - "num-integer", - "num-traits", - "realfft", -] - [[package]] name = "rustc_version" version = "0.4.1" @@ -3036,20 +2672,6 @@ dependencies = [ "semver", ] -[[package]] -name = "rustfft" -version = "6.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21db5f9893e91f41798c88680037dba611ca6674703c1a18601b01a72c8adb89" -dependencies = [ - "num-complex 0.4.6", - "num-integer", - "num-traits", - "primal-check", - "strength_reduce", - "transpose", -] - [[package]] name = "rustix" version = "0.38.44" @@ -3076,21 +2698,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "rustpotter" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc656425c55521e7fbd6445b66d588827dbe673f89c0491628345f073147696c" -dependencies = [ - "candle-core", - "candle-nn", - "ciborium", - "hound", - "rubato", - "rustfft", - "serde", -] - [[package]] name = "rustversion" version = "1.0.22" @@ -3103,16 +2710,6 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" -[[package]] -name = "safetensors" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93279b86b3de76f820a8854dd06cbc33cfa57a417b19c47f6a25280112fb1df" -dependencies = [ - "serde", - "serde_json", -] - [[package]] name = "same-file" version = "1.0.6" @@ -3142,7 +2739,7 @@ checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" dependencies = [ "ab_glyph", "log", - "memmap2 0.9.9", + "memmap2", "smithay-client-toolkit", "tiny-skia", ] @@ -3159,12 +2756,6 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" -[[package]] -name = "seq-macro" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" - [[package]] name = "seqdiff" version = "0.3.0" @@ -3304,7 +2895,7 @@ dependencies = [ "cursor-icon", "libc", "log", - "memmap2 0.9.9", + "memmap2", "rustix 0.38.44", "thiserror 1.0.69", "wayland-backend", @@ -3332,12 +2923,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" -[[package]] -name = "strength_reduce" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" - [[package]] name = "strict-num" version = "0.1.1" @@ -3711,16 +3296,6 @@ version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" -[[package]] -name = "transpose" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e" -dependencies = [ - "num-integer", - "strength_reduce", -] - [[package]] name = "tray-icon" version = "0.21.2" @@ -4411,7 +3986,7 @@ dependencies = [ "dpi", "js-sys", "libc", - "memmap2 0.9.9", + "memmap2", "ndk", "objc2 0.5.2", "objc2-app-kit 0.2.2", @@ -4559,17 +4134,6 @@ dependencies = [ "syn 2.0.111", ] -[[package]] -name = "zip" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" -dependencies = [ - "byteorder", - "crc32fast", - "crossbeam-utils", -] - [[package]] name = "zune-core" version = "0.4.12" diff --git a/app/Cargo.toml b/app/Cargo.toml index 2a7dd8f..3120575 100644 --- a/app/Cargo.toml +++ b/app/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "jarvis-app" -version = "0.0.3" +version = "0.1.0" description = "Jarvis Voice Assistant" authors = ["Abraham Tugalov"] license = "GPL-3.0-only" repository = "https://github.com/Priler/jarvis" -edition = "2021" +edition = "2024" +keywords = ["assistant", "ai", "offline"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -13,17 +14,17 @@ edition = "2021" serde = { version = "1.0.197", features = ["derive"] } serde_json = "1.0.114" hound = "3.5.1" -# pv_recorder = "1.2.2" +pv_recorder = { git = "https://github.com/Priler/pvrecorder" } # pv_porcupine = "3.0.2" seqdiff = "0.3.0" vosk = "0.3.1" -rand = "0.9.0-alpha.1" +rand = "^0.8.5" rodio = "0.21.1" -rustpotter = "3.0.2" +# rustpotter = "3.0.2" log = "0.4.21" once_cell = "1.19.0" atomic_enum = "0.3.0" -portaudio = "0.8.0" +# portaudio = "0.8.0" platform-dirs = "0.3.0" simple-log = "2.4.0" tray-icon = { version = "0.21.2" } @@ -32,6 +33,9 @@ image = "0.25.9" serde_yaml = "0.9.33" kira = "0.11.0" +#[patch.crates-io] +#candle-core = { git = "https://github.com/huggingface/candle", tag = "v0.9.0" } + [features] default = ["jarvis_app"] jarvis_app = [] # feature flag saying this is an app \ No newline at end of file diff --git a/app/src/app.rs b/app/src/app.rs index 81d40df..c352ed5 100644 --- a/app/src/app.rs +++ b/app/src/app.rs @@ -1,7 +1,7 @@ use std::time::SystemTime; use crate::{audio, commands, config, listener, recorder, stt, COMMANDS_LIST}; -use rand::seq::IndexedRandom; +use rand::prelude::*; pub fn start() -> Result<(), ()> { // start the loop diff --git a/app/src/commands.rs b/app/src/commands.rs index f159d88..da11864 100644 --- a/app/src/commands.rs +++ b/app/src/commands.rs @@ -1,4 +1,4 @@ -use rand::seq::IndexedRandom; +use rand::prelude::*; use seqdiff::ratio; use serde_yaml; use std::path::Path; diff --git a/app/src/listener.rs b/app/src/listener.rs index f6160da..bb4190e 100644 --- a/app/src/listener.rs +++ b/app/src/listener.rs @@ -1,4 +1,4 @@ -mod porcupine; +// mod porcupine; mod rustpotter; @@ -34,7 +34,8 @@ pub fn init() -> Result<(), ()> { // Init Porcupine wake-word engine info!("Initializing Porcupine wake-word engine."); - return porcupine::init(); + // return porcupine::init(); + unimplemented!("f*ck picovoice"); } WakeWordEngine::Rustpotter => { // Init Rustpotter wake-word engine diff --git a/app/src/log.rs b/app/src/log.rs index 6f38abd..81df0e4 100644 --- a/app/src/log.rs +++ b/app/src/log.rs @@ -13,8 +13,8 @@ pub fn init_logging() -> Result<(), String> { )) .size(1 * 100) .roll_count(10) - .time_format("%Y-%m-%d %H:%M:%S.%f") //E.g:%H:%M:%S.%f - .level("debug") + .time_format("%Y-%m-%d %H:%M:%S.%f") + .level("debug")? .output_file() .output_console() .build();