From 32437c52a1a872c0e789f4f5dbadace35061f9b6 Mon Sep 17 00:00:00 2001 From: Blaise Bruer Date: Sat, 23 Nov 2024 22:22:44 -0600 Subject: [PATCH] Add OriginEventPublisher Adds ability for nativelink to publish events to a store/database that can be used by another service to aggregate and/or visualize what is happening related to requests, users or other related metadata. By default bazel's metadata will be published with every event if present giving the ability to combine with BEP data. --- Cargo.lock | 866 ++- nativelink-config/src/cas_server.rs | 51 + nativelink-proto/BUILD.bazel | 18 + .../nativelink/remote_execution/events.proto | 218 + nativelink-proto/gen_lib_rs_tool.py | 9 +- .../genproto/blaze.invocation_policy.pb.rs | 254 + nativelink-proto/genproto/blaze.pb.rs | 104 + .../genproto/blaze.strategy_policy.pb.rs | 65 + .../genproto/build_event_stream.pb.rs | 1955 +++++++ ...thub.trace_machina.nativelink.events.pb.rs | 365 ++ nativelink-proto/genproto/command_line.pb.rs | 107 + .../devtools.build.lib.packages.metrics.pb.rs | 39 + .../genproto/failure_details.pb.rs | 4952 +++++++++++++++++ nativelink-proto/genproto/lib.rs | 44 +- nativelink-proto/genproto/options.pb.rs | 126 + .../proto/build_event_stream.proto | 1446 +++++ .../metrics/package_load_metrics.proto | 44 + .../src/main/protobuf/action_cache.proto | 63 + .../src/main/protobuf/command_line.proto | 102 + .../src/main/protobuf/failure_details.proto | 1378 +++++ .../src/main/protobuf/invocation_policy.proto | 207 + .../src/main/protobuf/option_filters.proto | 61 + .../src/main/protobuf/strategy_policy.proto | 67 + nativelink-service/src/ac_server.rs | 30 +- nativelink-service/src/bep_server.rs | 101 +- nativelink-service/src/bytestream_server.rs | 47 +- nativelink-service/src/capabilities_server.rs | 7 +- nativelink-service/src/cas_server.rs | 38 +- nativelink-service/src/execution_server.rs | 80 +- nativelink-service/tests/ac_server_test.rs | 10 +- nativelink-service/tests/bep_server_test.rs | 32 +- nativelink-store/Cargo.toml | 2 +- nativelink-util/BUILD.bazel | 5 + nativelink-util/Cargo.toml | 4 +- nativelink-util/src/lib.rs | 3 + nativelink-util/src/origin_event.rs | 597 ++ .../src/origin_event_middleware.rs | 152 + nativelink-util/src/origin_event_publisher.rs | 115 + src/bin/nativelink.rs | 56 +- 39 files changed, 13157 insertions(+), 663 deletions(-) create mode 100644 nativelink-proto/com/github/trace_machina/nativelink/remote_execution/events.proto create mode 100644 nativelink-proto/genproto/blaze.invocation_policy.pb.rs create mode 100644 nativelink-proto/genproto/blaze.pb.rs create mode 100644 nativelink-proto/genproto/blaze.strategy_policy.pb.rs create mode 100644 nativelink-proto/genproto/build_event_stream.pb.rs create mode 100644 nativelink-proto/genproto/com.github.trace_machina.nativelink.events.pb.rs create mode 100644 nativelink-proto/genproto/command_line.pb.rs create mode 100644 nativelink-proto/genproto/devtools.build.lib.packages.metrics.pb.rs create mode 100644 nativelink-proto/genproto/failure_details.pb.rs create mode 100644 nativelink-proto/genproto/options.pb.rs create mode 100644 nativelink-proto/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto create mode 100644 nativelink-proto/src/main/java/com/google/devtools/build/lib/packages/metrics/package_load_metrics.proto create mode 100644 nativelink-proto/src/main/protobuf/action_cache.proto create mode 100644 nativelink-proto/src/main/protobuf/command_line.proto create mode 100644 nativelink-proto/src/main/protobuf/failure_details.proto create mode 100644 nativelink-proto/src/main/protobuf/invocation_policy.proto create mode 100644 nativelink-proto/src/main/protobuf/option_filters.proto create mode 100644 nativelink-proto/src/main/protobuf/strategy_policy.proto create mode 100644 nativelink-util/src/origin_event.rs create mode 100644 nativelink-util/src/origin_event_middleware.rs create mode 100644 nativelink-util/src/origin_event_publisher.rs diff --git a/Cargo.lock b/Cargo.lock index ecd9c194f..668d117ea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "addr2line" -version = "0.24.2" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] [[package]] -name = "adler2" -version = "2.0.0" +name = "adler" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" @@ -40,15 +40,15 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.20" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", @@ -67,37 +67,37 @@ checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.93" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "arc-swap" @@ -107,15 +107,15 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "arrayref" -version = "0.3.9" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "assert-json-diff" @@ -141,9 +141,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", @@ -152,13 +152,13 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -169,7 +169,16 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", +] + +[[package]] +name = "atomic" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" +dependencies = [ + "bytemuck", ] [[package]] @@ -180,9 +189,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.4.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "aws-config" @@ -362,9 +371,9 @@ dependencies = [ [[package]] name = "aws-smithy-eventstream" -version = "0.60.5" +version = "0.60.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef7d0a272725f87e51ba2bf89f8c21e4df61b9e49ae1ac367a6d69916ef7c90" +checksum = "e6363078f927f612b970edf9d1903ef5cef9a64d1e8423525ebb1f0a1633c858" dependencies = [ "aws-smithy-types", "bytes", @@ -447,7 +456,7 @@ dependencies = [ "httparse", "hyper 0.14.31", "hyper-rustls", - "indexmap 2.6.0", + "indexmap 2.2.6", "once_cell", "pin-project-lite", "pin-utils", @@ -504,9 +513,9 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.9" +version = "0.60.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc" +checksum = "d123fbc2a4adc3c301652ba8e149bf4bc1d1725affb9784eb20c953ace06bf55" dependencies = [ "xmlparser", ] @@ -574,17 +583,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11" dependencies = [ "addr2line", + "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", - "windows-targets", ] [[package]] @@ -626,9 +635,9 @@ checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "blake3" -version = "1.5.4" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" dependencies = [ "arrayref", "arrayvec", @@ -655,14 +664,20 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byte-unit" -version = "5.1.6" +version = "5.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cd29c3c585209b0cbc7309bfe3ed7efd8c84c21b7af29c8bfae908f8777174" +checksum = "33ac19bdf0b2665407c39d82dbc937e951e7e2001609f0fb32edd0af45a2d63e" dependencies = [ "rust_decimal", "utf8-width", ] +[[package]] +name = "bytemuck" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" + [[package]] name = "byteorder" version = "1.5.0" @@ -671,9 +686,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "bytes-utils" @@ -687,9 +702,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.1" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" +checksum = "27f657647bcff5394bf56c7317665bbf790a137a50eaaa5c6bfbb9e27a518f2d" dependencies = [ "shlex", ] @@ -702,9 +717,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.5.21" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", "clap_derive", @@ -712,9 +727,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.21" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstream", "anstyle", @@ -731,20 +746,20 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] name = "clap_lex" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "concurrent-queue" @@ -794,18 +809,18 @@ dependencies = [ [[package]] name = "const_format" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c655d81ff1114fb0dcdea9225ea9f0cc712a6f8d189378e82bdf62a473a64b" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff1a44b93f47b1bac19a27932f5c591e43d1ba357ee4f61526c8a25603f0eb1" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" dependencies = [ "proc-macro2", "quote", @@ -836,15 +851,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.7" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -933,22 +948,11 @@ dependencies = [ "subtle", ] -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - [[package]] name = "either" -version = "1.13.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" [[package]] name = "equivalent" @@ -1001,9 +1005,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.2.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "filetime" @@ -1025,9 +1029,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.35" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", @@ -1087,13 +1091,13 @@ dependencies = [ "parking_lot", "rand", "redis-protocol", - "rustls 0.23.18", - "rustls-native-certs 0.7.3", + "rustls 0.23.19", + "rustls-native-certs 0.7.0", "semver", "sha-1", "socket2", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.1", "tokio-stream", "tokio-util", "url", @@ -1108,14 +1112,14 @@ checksum = "1458c6e22d36d61507034d5afecc64f105c1d39712b7ac6ec3b352c423f715cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] name = "futures" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1128,9 +1132,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1138,15 +1142,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1155,38 +1159,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -1223,9 +1227,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "glob" @@ -1245,7 +1249,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.6.0", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -1264,7 +1268,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.6.0", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -1277,6 +1281,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + [[package]] name = "hashbrown" version = "0.15.2" @@ -1307,12 +1317,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hex" version = "0.4.3" @@ -1386,9 +1390,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.5" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" @@ -1496,143 +1500,14 @@ dependencies = [ "tracing", ] -[[package]] -name = "icu_collections" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locid" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - -[[package]] -name = "icu_normalizer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" - -[[package]] -name = "icu_properties" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locid_transform", - "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" - -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - [[package]] name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "icu_normalizer", - "icu_properties", + "unicode-bidi", + "unicode-normalization", ] [[package]] @@ -1647,56 +1522,57 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.14.5", "serde", ] [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" [[package]] name = "itertools" -version = "0.13.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ + "once_cell", "wasm-bindgen", ] [[package]] name = "lazy_static" -version = "1.5.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.166" +version = "0.2.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ccc108bbc0b1331bd061864e7cd823c0cab660bbe6970e66e2c0614decde36" +checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" [[package]] name = "libmimalloc-sys" @@ -1725,12 +1601,6 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" -[[package]] -name = "litemap" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" - [[package]] name = "lock_api" version = "0.4.12" @@ -1743,9 +1613,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "lru" @@ -1795,15 +1665,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memmap2" -version = "0.9.5" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" dependencies = [ "libc", ] @@ -1841,20 +1711,19 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" dependencies = [ - "adler2", + "adler", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi", "libc", "wasi", "windows-sys 0.52.0", @@ -1902,7 +1771,7 @@ dependencies = [ "serde_json", "serde_json5", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.1", "tonic", "tower 0.5.1", "tracing", @@ -1942,7 +1811,7 @@ version = "0.5.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -1979,7 +1848,7 @@ version = "0.5.3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -2120,6 +1989,7 @@ version = "0.5.3" dependencies = [ "async-lock", "async-trait", + "base64 0.22.1", "bitflags", "blake3", "bytes", @@ -2150,6 +2020,7 @@ dependencies = [ "tokio-stream", "tokio-util", "tonic", + "tower 0.5.1", "tracing", "tracing-subscriber", "uuid", @@ -2236,18 +2107,18 @@ dependencies = [ [[package]] name = "object" -version = "0.36.5" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl-probe" @@ -2312,9 +2183,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parking" -version = "2.2.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "parking_lot" @@ -2356,9 +2227,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.14" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" dependencies = [ "memchr", "thiserror", @@ -2367,9 +2238,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.14" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" +checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" dependencies = [ "pest", "pest_generator", @@ -2377,22 +2248,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.14" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" +checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] name = "pest_meta" -version = "2.7.14" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" +checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" dependencies = [ "once_cell", "pest", @@ -2406,34 +2277,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.6.0", + "indexmap 2.2.6", ] [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -2449,12 +2320,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "pretty_assertions" @@ -2468,12 +2336,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -2502,9 +2370,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -2526,9 +2394,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +checksum = "2c0fef6c4230e4ccf618a35c59d7ede15dea37de8427500f50aff708806e42ec" dependencies = [ "bytes", "prost-derive", @@ -2536,11 +2404,10 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15" +checksum = "d0f3e5beed80eb580c68e2c600937ac2c4eedabdfd5ef1e5b7ea4f3fba84497b" dependencies = [ - "bytes", "heck", "itertools", "log", @@ -2551,28 +2418,28 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.89", + "syn 2.0.87", "tempfile", ] [[package]] name = "prost-derive" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +checksum = "157c5a9d7ea5c2ed2d9fb8f495b64759f7816c7eaea54ba3978f0d63000162e3" dependencies = [ "anyhow", "itertools", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] name = "prost-types" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" +checksum = "cc2f1e56baa61e93533aebc21af4d2134b70f66275e0fcdf3cbe43d77ff7e8fc" dependencies = [ "prost", ] @@ -2638,23 +2505,23 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", ] [[package]] @@ -2668,20 +2535,20 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax 0.8.3", ] [[package]] name = "regex-lite" -version = "0.1.6" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" +checksum = "30b661b2f27137bdbc16f00eda72866a92bb28af1753ffbd56744fb6e2e9cd8e" [[package]] name = "regex-syntax" @@ -2691,9 +2558,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "relative-path" @@ -2727,9 +2594,9 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.36.0" +version = "1.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" +checksum = "1790d1c4c0ca81211399e0e0af16333276f375209e71a37b67698a373db5b47a" dependencies = [ "arrayvec", "num-traits", @@ -2743,18 +2610,18 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" -version = "0.4.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.41" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ "bitflags", "errno", @@ -2777,9 +2644,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.18" +version = "0.23.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9cc1d47e243d655ace55ed38201c19ae02c148ae56412ab8750e8f0166ab7f" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" dependencies = [ "log", "once_cell", @@ -2804,9 +2671,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.7.3" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" +checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" dependencies = [ "openssl-probe", "rustls-pemfile 2.2.0", @@ -2862,9 +2729,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" @@ -2874,20 +2741,20 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "scc" -version = "2.2.5" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b202022bb57c049555430e11fc22fea12909276a80a4c3d368da36ac1d88ed" +checksum = "76ad2bbb0ae5100a07b7a6f2ed7ab5fd0045551a4c507989b7a620046ea3efdc" dependencies = [ "sdd", ] [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -2908,15 +2775,15 @@ dependencies = [ [[package]] name = "sdd" -version = "3.0.4" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c1eeaf4b6a87c7479688c6d52b9f1153cedd3c489300564f932b065c6eab95" +checksum = "b84345e4c9bd703274a082fb80caaa99b7612be48dfaa1dd9266577ec412309d" [[package]] name = "security-framework" -version = "2.11.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ "bitflags", "core-foundation", @@ -2927,9 +2794,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" dependencies = [ "core-foundation-sys", "libc", @@ -2958,7 +2825,7 @@ checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -2967,7 +2834,7 @@ version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.2.6", "itoa", "memchr", "ryu", @@ -2987,9 +2854,9 @@ dependencies = [ [[package]] name = "serial_test" -version = "3.2.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" +checksum = "4b4b487fe2acf240a021cf57c6b2b4903b1e78ca0ecd862a71b71d2a51fed77d" dependencies = [ "futures", "once_cell", @@ -3000,13 +2867,13 @@ dependencies = [ [[package]] name = "serial_test_derive" -version = "3.2.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" +checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -3103,12 +2970,6 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - [[package]] name = "static_assertions" version = "1.1.0" @@ -3123,9 +2984,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.6.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" @@ -3140,9 +3001,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.89" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -3161,48 +3022,36 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -[[package]] -name = "synstructure" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - [[package]] name = "tempfile" -version = "3.14.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", "fastrand", - "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "thiserror" -version = "1.0.69" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.69" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -3246,20 +3095,25 @@ dependencies = [ ] [[package]] -name = "tinystr" -version = "0.7.6" +name = "tinyvec" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ - "displaydoc", - "zerovec", + "tinyvec_macros", ] +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tokio" -version = "1.41.1" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -3281,7 +3135,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -3296,20 +3150,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.23.18", - "rustls-pki-types", + "rustls 0.23.19", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -3318,9 +3171,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -3354,7 +3207,7 @@ dependencies = [ "rustls-pemfile 2.2.0", "socket2", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.1", "tokio-stream", "tower 0.4.13", "tower-layer", @@ -3373,7 +3226,7 @@ dependencies = [ "prost-build", "prost-types", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -3435,20 +3288,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -3510,15 +3363,30 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.7" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] [[package]] name = "unicode-xid" @@ -3534,9 +3402,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -3549,29 +3417,17 @@ version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8-width" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "utf8parse" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" @@ -3579,6 +3435,7 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ + "atomic", "getrandom", "serde", ] @@ -3591,9 +3448,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "version_check" -version = "0.9.5" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "vsimd" @@ -3618,9 +3475,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", @@ -3629,24 +3486,23 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3654,22 +3510,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "webpki-roots" @@ -3781,18 +3637,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - -[[package]] -name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - [[package]] name = "xmlparser" version = "0.13.6" @@ -3805,70 +3649,24 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" -[[package]] -name = "yoke" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", - "synstructure", -] - [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "zerofrom" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.5" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", - "synstructure", + "syn 2.0.87", ] [[package]] @@ -3876,25 +3674,3 @@ name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" - -[[package]] -name = "zerovec" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] diff --git a/nativelink-config/src/cas_server.rs b/nativelink-config/src/cas_server.rs index a258b6867..edaa223f2 100644 --- a/nativelink-config/src/cas_server.rs +++ b/nativelink-config/src/cas_server.rs @@ -209,6 +209,52 @@ pub struct BepConfig { /// The store name referenced in the `stores` map in the main config. #[serde(deserialize_with = "convert_string_with_shellexpand")] pub store: StoreRefName, + + /// The config related to identifying the client. + /// The value of this header will be used to identify the caller and + /// will be added to the [`BuildEvent::identity`] field of the message. + /// Default: {see `IdentityHeaderSpec`} + #[serde(default)] + pub experimental_identity_header: IdentityHeaderSpec, +} + +#[derive(Deserialize, Clone, Debug, Default)] +pub struct IdentityHeaderSpec { + /// The name of the header to look for the identity in. + /// Default: "x-identity" + #[serde(default, deserialize_with = "convert_optional_string_with_shellexpand")] + pub header_name: Option, + + /// If the header is required to be set or fail the request. + #[serde(default)] + pub required: bool, +} + +#[derive(Deserialize, Clone, Debug)] +pub struct OriginEventsPublisherConfig { + /// The store to publish nativelink events to. + /// The store name referenced in the `stores` map in the main config. + #[serde(deserialize_with = "convert_string_with_shellexpand")] + pub store: StoreRefName, +} + +#[derive(Deserialize, Clone, Debug)] +pub struct OriginEventsConfig { + /// The publisher configuration for origin events. + pub publisher: OriginEventsPublisherConfig, + + /// The maximum number of events to queue before applying back pressure. + /// IMPORTANT: Backpressure causes all clients to slow down significantly. + /// Zero is default. + /// + /// Default: 65536 + #[serde(default, deserialize_with = "convert_numeric_with_shellexpand")] + pub max_event_queue_size: usize, + + /// The config related to identifying the client. + /// Default: {see `IdentityHeaderSpec`} + #[serde(default)] + pub identity_header: IdentityHeaderSpec, } #[derive(Deserialize, Debug)] @@ -738,6 +784,11 @@ pub struct CasConfig { /// Servers to setup for this process. pub servers: Vec, + /// Experimental - Origin events configuration. This is the service that will + /// collect and publish nativelink events to a store for processing by an + /// external service. + pub experimental_origin_events: Option, + /// Any global configurations that apply to all modules live here. pub global: Option, } diff --git a/nativelink-proto/BUILD.bazel b/nativelink-proto/BUILD.bazel index 8193bcf0f..40e110da0 100644 --- a/nativelink-proto/BUILD.bazel +++ b/nativelink-proto/BUILD.bazel @@ -11,11 +11,20 @@ PROTO_NAMES = [ "build.bazel.remote.execution.v2", "build.bazel.semver", "com.github.trace_machina.nativelink.remote_execution", + "com.github.trace_machina.nativelink.events", "google.api", "google.bytestream", "google.devtools.build.v1", "google.longrunning", "google.rpc", + "build_event_stream", + "command_line", + "devtools.build.lib.packages.metrics", + "blaze", + "options", + "failure_details", + "blaze.invocation_policy", + "blaze.strategy_policy", ] rust_binary( @@ -69,6 +78,7 @@ genrule( srcs = [ "build/bazel/remote/execution/v2/remote_execution.proto", "build/bazel/semver/semver.proto", + "com/github/trace_machina/nativelink/remote_execution/events.proto", "com/github/trace_machina/nativelink/remote_execution/worker_api.proto", "google/api/annotations.proto", "google/api/client.proto", @@ -86,6 +96,14 @@ genrule( "google/protobuf/timestamp.proto", "google/protobuf/wrappers.proto", "google/rpc/status.proto", + "src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto", + "src/main/java/com/google/devtools/build/lib/packages/metrics/package_load_metrics.proto", + "src/main/protobuf/command_line.proto", + "src/main/protobuf/action_cache.proto", + "src/main/protobuf/option_filters.proto", + "src/main/protobuf/failure_details.proto", + "src/main/protobuf/invocation_policy.proto", + "src/main/protobuf/strategy_policy.proto", ], outs = ["{}.pb.rs".format(name) for name in PROTO_NAMES], cmd = select({ diff --git a/nativelink-proto/com/github/trace_machina/nativelink/remote_execution/events.proto b/nativelink-proto/com/github/trace_machina/nativelink/remote_execution/events.proto new file mode 100644 index 000000000..3eee0d3e4 --- /dev/null +++ b/nativelink-proto/com/github/trace_machina/nativelink/remote_execution/events.proto @@ -0,0 +1,218 @@ +// Copyright 2024 The NativeLink Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package com.github.trace_machina.nativelink.events; + +import "build/bazel/remote/execution/v2/remote_execution.proto"; +import "google/bytestream/bytestream.proto"; +import "google/devtools/build/v1/publish_build_event.proto"; +import "google/longrunning/operations.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/timestamp.proto"; +import "google/rpc/status.proto"; + +/// Same as build.bazel.remote.execution.v2.BatchUpdateBlobsRequest, +/// but without the data field, and add a `data_len` field. +message BatchUpdateBlobsRequestOverride { + message Request { + build.bazel.remote.execution.v2.Digest digest = 1; + reserved 2; // Was data, but we are only tracking the length in `data_len`. + build.bazel.remote.execution.v2.Compressor.Value compressor = 3; + + // Override/new field to track the length of the data. + uint64 data_len = 15; // Using 15 to stay at 1 byte, but higher than 3. + } + + string instance_name = 1; + repeated Request requests = 2; + build.bazel.remote.execution.v2.DigestFunction.Value digest_function = 5; +} + +/// Same as build.bazel.remote.execution.v2.BatchReadBlobsResponse, +/// but without the data field, and add a `data_len` field. +message BatchReadBlobsResponseOverride { + message Response { + build.bazel.remote.execution.v2.Digest digest = 1; + reserved 2; // Was data, but we are only tracking the length in `data_len`. + build.bazel.remote.execution.v2.Compressor.Value compressor = 4; + google.rpc.Status status = 3; + + // Override/new field to track the length of the data. + uint64 data_len = 15; // Using 15 to stay at 1 byte, but higher than 3. + } + repeated Response responses = 1; +} + +/// Same as google.bytestream.WriteRequest, but without the data field, +/// and add a `data_len` field. +message WriteRequestOverride { + string resource_name = 1; + int64 write_offset = 2; + bool finish_write = 3; + reserved 10; // Was data, but we are only tracking the length in `data_len`. + + // Override/new field to track the length of the data. + uint64 data_len = 15; // Using 15 to stay at 1 byte, but higher than 3. +} + +message GetTreeStreamResponse { + oneof response { + build.bazel.remote.execution.v2.GetTreeResponse success = 1; + google.rpc.Status error = 2; + } + + reserved 3; // NextId. +} + +message ReadStreamResponse { + oneof response { + uint64 success = 1; + google.rpc.Status error = 2; + } + + reserved 3; // NextId. +} + +message WriteStreamRequest { + oneof response { + WriteRequestOverride success = 1; + google.rpc.Status error = 2; + } + + reserved 3; // NextId. +} + +message ExecuteStreamResponse { + oneof response { + google.longrunning.Operation success = 1; + google.rpc.Status error = 2; + } + + reserved 3; // NextId. +} + +/// Nativelink event that has occurred. +message OriginEvent { + /// The version of this message. + uint32 version = 1; + + /// The event UUIDv6. This is a unique identifier for the event for the + /// server that generated the event. + /// Note: The timestamp of when the event occurred is encoded in the UUID. + string event_id = 2; + + /// [optional] The parent event UUID. This is used to track the + /// parent event that generated this event. This is useful for + /// tracking the flow of events. + string parent_event_id = 3; + + /// If the client is bazel, this is the meatadata that was sent with the + /// request. This is useful for tracking the flow of events. + build.bazel.remote.execution.v2.RequestMetadata bazel_request_metadata = 4; + + /// The identity header that generated the event. This will be populated with + /// the value of the specified by the `IdentityHeaderSpec::header_name`. + string identity = 5; + + // These are reserved for data that is going to be frequently used. + // Fields <=15 save 1 byte in the encoding, so we are reserving all fields + // not used <=15 for future fields that will be sent a lot. + reserved 6 to 15; // Allowed to be used. + + /// The event that occurred. + oneof event { + build.bazel.remote.execution.v2.GetCapabilitiesRequest get_capabilities_request = 16; + build.bazel.remote.execution.v2.ServerCapabilities get_capabilities_response = 17; + // Note: GetCapabilitiesRequest currently cannot error. + + build.bazel.remote.execution.v2.GetActionResultRequest get_action_result_request = 18; + build.bazel.remote.execution.v2.ActionResult get_action_result_response = 19; + google.rpc.Status get_action_result_error = 20; + + build.bazel.remote.execution.v2.UpdateActionResultRequest update_action_result_request = 21; + build.bazel.remote.execution.v2.ActionResult update_action_result_response = 22; + google.rpc.Status update_action_result_error = 23; + + build.bazel.remote.execution.v2.FindMissingBlobsRequest find_missing_blobs_request = 24; + build.bazel.remote.execution.v2.FindMissingBlobsResponse find_missing_blobs_response = 25; + google.rpc.Status find_missing_blobs_error = 26; + + build.bazel.remote.execution.v2.BatchReadBlobsRequest batch_read_blobs_request = 27; + BatchReadBlobsResponseOverride batch_read_blobs_response = 28; + google.rpc.Status batch_read_blobs_error = 29; + + BatchUpdateBlobsRequestOverride batch_update_blobs_request = 30; + build.bazel.remote.execution.v2.BatchUpdateBlobsResponse batch_update_blobs_response = 31; + google.rpc.Status batch_update_blobs_error = 32; + + build.bazel.remote.execution.v2.GetTreeRequest get_tree_request = 33; + google.protobuf.Empty get_tree_response = 34; + google.rpc.Status get_tree_error = 35; + GetTreeStreamResponse get_tree_stream_response = 36; + + google.bytestream.ReadRequest read_request = 37; + google.protobuf.Empty read_response = 38; + google.rpc.Status read_error = 39; + ReadStreamResponse read_stream_response = 40; + + google.protobuf.Empty write_request = 41; + google.bytestream.WriteResponse write_response = 42; + google.rpc.Status write_error = 43; + WriteStreamRequest write_stream_request = 44; + + google.bytestream.QueryWriteStatusRequest query_write_status_request = 45; + google.bytestream.QueryWriteStatusResponse query_write_status_response = 46; + google.rpc.Status query_write_status_error = 47; + + build.bazel.remote.execution.v2.ExecuteRequest execute_request = 48; + google.protobuf.Empty execute_response = 49; + google.rpc.Status execute_error = 50; + ExecuteStreamResponse execute_stream_response = 51; + + build.bazel.remote.execution.v2.WaitExecutionRequest wait_execution_request = 52; + google.protobuf.Empty wait_execution_response = 53; + google.rpc.Status wait_execute_error = 54; + ExecuteStreamResponse wait_execute_stream_response = 55; + } + + reserved 56; // NextId. +} + +/// Batch of events that have occurred. +message OriginEvents { + repeated OriginEvent events = 1; + + reserved 2; // NextId. +} + +/// Bep event that has occurred. +message BepEvent { + /// The version of this message. + uint32 version = 1; + + /// The identity header that generated the event. This will be populated + /// with the header value keyed by the specified by the + /// `IdentityHeaderSpec::header_name`. + string identity = 2; + + /// The event that occurred. + oneof event { + google.devtools.build.v1.PublishLifecycleEventRequest lifecycle_event = 3; + google.devtools.build.v1.PublishBuildToolEventStreamRequest build_tool_event = 4; + } + + reserved 5; // NextId. +} diff --git a/nativelink-proto/gen_lib_rs_tool.py b/nativelink-proto/gen_lib_rs_tool.py index 4370df2d1..9a17c3983 100644 --- a/nativelink-proto/gen_lib_rs_tool.py +++ b/nativelink-proto/gen_lib_rs_tool.py @@ -37,7 +37,14 @@ // This file is auto-generated. To update it, run: // `bazel run nativelink-proto:update_protos` -#![allow(clippy::default_trait_access, clippy::doc_markdown)] +#![allow( + clippy::default_trait_access, + clippy::doc_lazy_continuation, + clippy::doc_markdown, + clippy::doc_markdown, + clippy::large_enum_variant, + rustdoc::invalid_html_tags, +)] """ diff --git a/nativelink-proto/genproto/blaze.invocation_policy.pb.rs b/nativelink-proto/genproto/blaze.invocation_policy.pb.rs new file mode 100644 index 000000000..b8973ba3c --- /dev/null +++ b/nativelink-proto/genproto/blaze.invocation_policy.pb.rs @@ -0,0 +1,254 @@ +// Copyright 2022 The NativeLink Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file is @generated by prost-build. +/// The --invocation_policy flag takes a base64-encoded binary-serialized or text +/// formatted InvocationPolicy message. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct InvocationPolicy { + /// Order matters. + /// After expanding policies on expansion flags or flags with implicit + /// requirements, only the final policy on a specific flag will be enforced + /// onto the user's command line. + #[prost(message, repeated, tag = "1")] + pub flag_policies: ::prost::alloc::vec::Vec, + #[prost(message, optional, tag = "2")] + pub strategy_policy: ::core::option::Option, +} +/// A policy for controlling the value of a flag. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct FlagPolicy { + /// The name of the flag to enforce this policy on. + /// + /// Note that this should be the full name of the flag, not the abbreviated + /// name of the flag. If the user specifies the abbreviated name of a flag, + /// that flag will be matched using its full name. + /// + /// The "no" prefix will not be parsed, so for boolean flags, use + /// the flag's full name and explicitly set it to true or false. + #[prost(string, optional, tag = "1")] + pub flag_name: ::core::option::Option<::prost::alloc::string::String>, + /// If set, this flag policy is applied only if one of the given commands or a + /// command that inherits from one of the given commands is being run. For + /// instance, if "build" is one of the commands here, then this policy will + /// apply to any command that inherits from build, such as info, coverage, or + /// test. If empty, this flag policy is applied for all commands. This allows + /// the policy setter to add all policies to the proto without having to + /// determine which Bazel command the user is actually running. Additionally, + /// Bazel allows multiple flags to be defined by the same name, and the + /// specific flag definition is determined by the command. + #[prost(string, repeated, tag = "2")] + pub commands: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(oneof = "flag_policy::Operation", tags = "3, 4, 5, 6")] + pub operation: ::core::option::Option, +} +/// Nested message and enum types in `FlagPolicy`. +pub mod flag_policy { + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Operation { + #[prost(message, tag = "3")] + SetValue(super::SetValue), + #[prost(message, tag = "4")] + UseDefault(super::UseDefault), + #[prost(message, tag = "5")] + DisallowValues(super::DisallowValues), + #[prost(message, tag = "6")] + AllowValues(super::AllowValues), + } +} +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SetValue { + /// Use this value for the specified flag, overriding any default or user-set + /// value (unless behavior = APPEND for repeatable flags). + /// + /// This field is repeated for repeatable flags. It is an error to set + /// multiple values for a flag that is not actually a repeatable flag. + /// This requires at least 1 value, if even the empty string. + /// + /// If the flag allows multiple values, all of its values are replaced with the + /// value or values from the policy (i.e., no diffing or merging is performed), + /// unless behavior = APPEND (see below). + /// + /// Note that some flags are tricky. For example, some flags look like boolean + /// flags, but are actually Void expansion flags that expand into other flags. + /// The Bazel flag parser will accept "--void_flag=false", but because + /// the flag is Void, the "=false" is ignored. It can get even trickier, like + /// "--novoid_flag" which is also an expansion flag with the type Void whose + /// name is explicitly "novoid_flag" and which expands into other flags that + /// are the opposite of "--void_flag". For expansion flags, it's best to + /// explicitly override the flags they expand into. + /// + /// Other flags may be differently tricky: A flag could have a converter that + /// converts some string to a list of values, but that flag may not itself have + /// allowMultiple set to true. + /// + /// An example is "--test_tag_filters": this flag sets its converter to + /// CommaSeparatedOptionListConverter, but does not set allowMultiple to true. + /// So "--test_tag_filters=foo,bar" results in \["foo", "bar"\], however + /// "--test_tag_filters=foo --test_tag_filters=bar" results in just \["bar"\] + /// since the 2nd value overrides the 1st. + /// + /// Similarly, "--test_tag_filters=foo,bar --test_tag_filters=baz,qux" results + /// in \["baz", "qux"\]. For flags like these, the policy should specify + /// "foo,bar" instead of separately specifying "foo" and "bar" so that the + /// converter is appropriately invoked. + /// + /// Note that the opposite is not necessarily + /// true: for a flag that specifies allowMultiple=true, "--flag=foo,bar" + /// may fail to parse or result in an unexpected value. + #[prost(string, repeated, tag = "1")] + pub flag_value: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// Defines how invocation policy should interact with user settings for the + /// same flag. + #[prost(enumeration = "set_value::Behavior", optional, tag = "4")] + pub behavior: ::core::option::Option, +} +/// Nested message and enum types in `SetValue`. +pub mod set_value { + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + ::prost::Enumeration + )] + #[repr(i32)] + pub enum Behavior { + Undefined = 0, + /// Change the flag value but allow it to be overridden by explicit settings + /// from command line/config expansion/rc files. + /// Matching old flag values: append = false, overridable = true. + AllowOverrides = 1, + /// Append a new value for a repeatable flag, leave old values and allow + /// further overrides. + /// Matching old flag values: append = true, overridable = false. + Append = 2, + /// Set a final value of the flag. Any overrides provided by the user for + /// this flag will be ignored. + /// Matching old flag values: append = false, overridable = false. + FinalValueIgnoreOverrides = 3, + } + impl Behavior { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Undefined => "UNDEFINED", + Self::AllowOverrides => "ALLOW_OVERRIDES", + Self::Append => "APPEND", + Self::FinalValueIgnoreOverrides => "FINAL_VALUE_IGNORE_OVERRIDES", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "UNDEFINED" => Some(Self::Undefined), + "ALLOW_OVERRIDES" => Some(Self::AllowOverrides), + "APPEND" => Some(Self::Append), + "FINAL_VALUE_IGNORE_OVERRIDES" => Some(Self::FinalValueIgnoreOverrides), + _ => None, + } + } + } +} +/// Use the default value of the flag, as defined by Bazel (or equivalently, do +/// not allow the user to set this flag). +/// +/// Note on implementation: UseDefault sets the default by clearing the flag, +/// so that when the value is requested and no flag is found, the flag parser +/// returns the default. This is mostly relevant for expansion flags: it will +/// erase user values in *all* flags that the expansion flag expands to. Only +/// use this on expansion flags if this is acceptable behavior. Since the last +/// policy wins, later policies on this same flag will still remove the +/// expanded UseDefault, so there is a way around, but it's really best not to +/// use this on expansion flags at all. +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct UseDefault {} +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DisallowValues { + /// It is an error for the user to use any of these values (that is, the Bazel + /// command will fail), unless new_value or use_default is set. + /// + /// For repeatable flags, if any one of the values in the flag matches a value + /// in the list of disallowed values, an error is thrown. + /// + /// Care must be taken for flags with complicated converters. For example, + /// it's possible for a repeated flag to be of type List>, so that + /// "--foo=a,b --foo=c,d" results in foo=\[["a","b"\], \["c", "d"]\]. In this case, + /// it is not possible to disallow just "b", nor will \["b", "a"\] match, nor + /// will \["b", "c"\] (but \["a", "b"\] will still match). + #[prost(string, repeated, tag = "1")] + pub disallowed_values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(oneof = "disallow_values::ReplacementValue", tags = "3, 4")] + pub replacement_value: ::core::option::Option, +} +/// Nested message and enum types in `DisallowValues`. +pub mod disallow_values { + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum ReplacementValue { + /// If set and if the value of the flag is disallowed (including the default + /// value of the flag if the user doesn't specify a value), use this value as + /// the value of the flag instead of raising an error. This does not apply to + /// repeatable flags and is ignored if the flag is a repeatable flag. + #[prost(string, tag = "3")] + NewValue(::prost::alloc::string::String), + /// If set and if the value of the flag is disallowed, use the default value + /// of the flag instead of raising an error. Unlike new_value, this works for + /// repeatable flags, but note that the default value for repeatable flags is + /// always empty. + /// + /// Note that it is an error to disallow the default value of the flag and + /// to set use_default, unless the flag is a repeatable flag where the + /// default value is always the empty list. + #[prost(message, tag = "4")] + UseDefault(super::UseDefault), + } +} +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AllowValues { + /// It is an error for the user to use any value not in this list, unless + /// new_value or use_default is set. + #[prost(string, repeated, tag = "1")] + pub allowed_values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(oneof = "allow_values::ReplacementValue", tags = "3, 4")] + pub replacement_value: ::core::option::Option, +} +/// Nested message and enum types in `AllowValues`. +pub mod allow_values { + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum ReplacementValue { + /// If set and if the value of the flag is disallowed (including the default + /// value of the flag if the user doesn't specify a value), use this value as + /// the value of the flag instead of raising an error. This does not apply to + /// repeatable flags and is ignored if the flag is a repeatable flag. + #[prost(string, tag = "3")] + NewValue(::prost::alloc::string::String), + /// If set and if the value of the flag is disallowed, use the default value + /// of the flag instead of raising an error. Unlike new_value, this works for + /// repeatable flags, but note that the default value for repeatable flags is + /// always empty. + /// + /// Note that it is an error to disallow the default value of the flag and + /// to set use_default, unless the flag is a repeatable flag where the + /// default value is always the empty list. + #[prost(message, tag = "4")] + UseDefault(super::UseDefault), + } +} diff --git a/nativelink-proto/genproto/blaze.pb.rs b/nativelink-proto/genproto/blaze.pb.rs new file mode 100644 index 000000000..ed5ec5036 --- /dev/null +++ b/nativelink-proto/genproto/blaze.pb.rs @@ -0,0 +1,104 @@ +// Copyright 2022 The NativeLink Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file is @generated by prost-build. +/// Information about the action cache behavior during a single build. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ActionCacheStatistics { + /// Size of the action cache in bytes. + /// + /// This is computed by the code that persists the action cache to disk and + /// represents the size of the written files, which has no direct relation to + /// the number of entries in the cache. + #[prost(uint64, tag = "1")] + pub size_in_bytes: u64, + /// Time it took to save the action cache to disk. + #[prost(uint64, tag = "2")] + pub save_time_in_ms: u64, + /// Cache counters. + #[prost(int32, tag = "3")] + pub hits: i32, + #[prost(int32, tag = "4")] + pub misses: i32, + /// Breakdown of the cache misses based on the reasons behind them. + #[prost(message, repeated, tag = "5")] + pub miss_details: ::prost::alloc::vec::Vec, + /// Time it took to load the action cache from disk. Reported as 0 if the + /// action cache has not been loaded in this invocation. + #[prost(uint64, tag = "6")] + pub load_time_in_ms: u64, +} +/// Nested message and enum types in `ActionCacheStatistics`. +pub mod action_cache_statistics { + /// Detailed information for a particular miss reason. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct MissDetail { + #[prost(enumeration = "MissReason", tag = "1")] + pub reason: i32, + #[prost(int32, tag = "2")] + pub count: i32, + } + /// Reasons for not finding an action in the cache. + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + ::prost::Enumeration + )] + #[repr(i32)] + pub enum MissReason { + DifferentActionKey = 0, + DifferentDeps = 1, + DifferentEnvironment = 2, + DifferentFiles = 3, + CorruptedCacheEntry = 4, + NotCached = 5, + UnconditionalExecution = 6, + } + impl MissReason { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::DifferentActionKey => "DIFFERENT_ACTION_KEY", + Self::DifferentDeps => "DIFFERENT_DEPS", + Self::DifferentEnvironment => "DIFFERENT_ENVIRONMENT", + Self::DifferentFiles => "DIFFERENT_FILES", + Self::CorruptedCacheEntry => "CORRUPTED_CACHE_ENTRY", + Self::NotCached => "NOT_CACHED", + Self::UnconditionalExecution => "UNCONDITIONAL_EXECUTION", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DIFFERENT_ACTION_KEY" => Some(Self::DifferentActionKey), + "DIFFERENT_DEPS" => Some(Self::DifferentDeps), + "DIFFERENT_ENVIRONMENT" => Some(Self::DifferentEnvironment), + "DIFFERENT_FILES" => Some(Self::DifferentFiles), + "CORRUPTED_CACHE_ENTRY" => Some(Self::CorruptedCacheEntry), + "NOT_CACHED" => Some(Self::NotCached), + "UNCONDITIONAL_EXECUTION" => Some(Self::UnconditionalExecution), + _ => None, + } + } + } +} diff --git a/nativelink-proto/genproto/blaze.strategy_policy.pb.rs b/nativelink-proto/genproto/blaze.strategy_policy.pb.rs new file mode 100644 index 000000000..af005582e --- /dev/null +++ b/nativelink-proto/genproto/blaze.strategy_policy.pb.rs @@ -0,0 +1,65 @@ +// Copyright 2022 The NativeLink Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file is @generated by prost-build. +/// Provides control over what strategies (local, remote, etc) may be used. +/// +/// An empty policies (e.g. unset) implies no enforcement, anything is allowed. +/// +/// Policies are enforced against both user-provided values (flags) and +/// application-internal defaults. The latter is useful for guarding against +/// unexpectedly hard-coded defaults. +/// +/// Sample usage to allow everything to execute remotely, while only allowing +/// genrules to execute locally: +/// +/// strategy_policy { +/// mnemonic_policy { +/// default_allowlist: \["remote"\] +/// strategy_allowlist: [ +/// { mnemonic: "Genrule" strategy: \["local"\] } +/// ] +/// } +/// } +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct StrategyPolicy { + /// Controls per-mnemonic policies for regular spawn/action execution. Relevant + /// command-line flags this controls include --strategy and --genrule_strategy. + #[prost(message, optional, tag = "1")] + pub mnemonic_policy: ::core::option::Option, + /// Controls per-mnemonic policies for the remote execution leg of dynamic + /// execution. Relevant flag is --dynamic_remote_strategy. + #[prost(message, optional, tag = "2")] + pub dynamic_remote_policy: ::core::option::Option, + /// Controls per-mnemonic policies for the local execution leg of dynamic + /// execution. Relevant flag is --dynamic_local_strategy. + #[prost(message, optional, tag = "3")] + pub dynamic_local_policy: ::core::option::Option, +} +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct MnemonicPolicy { + /// Default allowed strategies for mnemonics not present in `strategy` list. + #[prost(string, repeated, tag = "1")] + pub default_allowlist: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(message, repeated, tag = "2")] + pub strategy_allowlist: ::prost::alloc::vec::Vec, +} +/// Per-mnemonic allowlist settings. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct StrategiesForMnemonic { + #[prost(string, optional, tag = "1")] + pub mnemonic: ::core::option::Option<::prost::alloc::string::String>, + #[prost(string, repeated, tag = "2")] + pub strategy: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} diff --git a/nativelink-proto/genproto/build_event_stream.pb.rs b/nativelink-proto/genproto/build_event_stream.pb.rs new file mode 100644 index 000000000..0a7d8735f --- /dev/null +++ b/nativelink-proto/genproto/build_event_stream.pb.rs @@ -0,0 +1,1955 @@ +// Copyright 2022 The NativeLink Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file is @generated by prost-build. +/// Identifier for a build event. It is deliberately structured to also provide +/// information about which build target etc the event is related to. +/// +/// Events are chained via the event id as follows: each event has an id and a +/// set of ids of children events such that apart from the initial event each +/// event has an id that is mentioned as child id in an earlier event and a build +/// invocation is complete if and only if all direct and indirect children of the +/// initial event have been posted. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BuildEventId { + #[prost( + oneof = "build_event_id::Id", + tags = "1, 2, 3, 11, 18, 14, 12, 17, 15, 16, 4, 10, 13, 5, 6, 19, 21, 8, 29, 7, 26, 9, 20, 22, 23, 24, 25, 28" + )] + pub id: ::core::option::Option, +} +/// Nested message and enum types in `BuildEventId`. +pub mod build_event_id { + /// Generic identifier for a build event. This is the default type of + /// BuildEventId, but should not be used outside testing; nevertheless, + /// tools should handle build events with this kind of id gracefully. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct UnknownBuildEventId { + #[prost(string, tag = "1")] + pub details: ::prost::alloc::string::String, + } + /// Identifier of an event reporting progress. Those events are also used to + /// chain in events that come early. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct ProgressId { + /// Unique identifier. No assumption should be made about how the ids are + /// assigned; the only meaningful operation on this field is test for + /// equality. + #[prost(int32, tag = "1")] + pub opaque_count: i32, + } + /// Identifier of an event indicating the beginning of a build; this will + /// normally be the first event. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct BuildStartedId {} + /// Identifier on an event indicating the original commandline received by + /// the bazel server. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct UnstructuredCommandLineId {} + /// Identifier on an event describing the commandline received by Bazel. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct StructuredCommandLineId { + /// A title for this command line value, as there may be multiple. + /// For example, a single invocation may wish to report both the literal and + /// canonical command lines, and this label would be used to differentiate + /// between both versions. + #[prost(string, tag = "1")] + pub command_line_label: ::prost::alloc::string::String, + } + /// Identifier of an event indicating the workspace status. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct WorkspaceStatusId {} + /// Identifier on an event reporting on the options included in the command + /// line, both explicitly and implicitly. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct OptionsParsedId {} + /// Identifier of an event reporting that an external resource was fetched + /// from. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct FetchId { + /// The external resource that was fetched from. + #[prost(string, tag = "1")] + pub url: ::prost::alloc::string::String, + } + /// Identifier of an event indicating that a target pattern has been expanded + /// further. + /// Messages of this shape are also used to describe parts of a pattern that + /// have been skipped for some reason, if the actual expansion was still + /// carried out (e.g., if keep_going is set). In this case, the + /// pattern_skipped choice in the id field is to be made. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct PatternExpandedId { + #[prost(string, repeated, tag = "1")] + pub pattern: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + } + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct WorkspaceConfigId {} + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct BuildMetadataId {} + /// Identifier of an event indicating that a target has been expanded by + /// identifying for which configurations it should be build. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct TargetConfiguredId { + #[prost(string, tag = "1")] + pub label: ::prost::alloc::string::String, + /// If empty, the id refers to the expansion of the target. If not-empty, + /// the id refers to the expansion of an aspect applied to the (already + /// expanded) target. + /// + /// For example, when building an apple_binary that depends on proto_library + /// "//:foo_proto", there will be two TargetConfigured events for + /// "//:foo_proto": + /// + /// 1. An event with an empty aspect, corresponding to actions producing + /// language-agnostic outputs from the proto_library; and + /// 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C + /// code generation. + #[prost(string, tag = "2")] + pub aspect: ::prost::alloc::string::String, + } + /// Identifier of an event introducing a named set of files (usually artifacts) + /// to be referred to in later messages. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct NamedSetOfFilesId { + /// Identifier of the file set; this is an opaque string valid only for the + /// particular instance of the event stream. + #[prost(string, tag = "1")] + pub id: ::prost::alloc::string::String, + } + /// Identifier of an event introducing a configuration. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct ConfigurationId { + /// Identifier of the configuration; users of the protocol should not make + /// any assumptions about it having any structure, or equality of the + /// identifier between different streams. + /// + /// A value of "none" means the null configuration. It is used for targets + /// that are not configurable, for example, source files. + #[prost(string, tag = "1")] + pub id: ::prost::alloc::string::String, + } + /// Identifier of an event indicating that a target was built completely; this + /// does not include running the test if the target is a test target. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct TargetCompletedId { + #[prost(string, tag = "1")] + pub label: ::prost::alloc::string::String, + /// The configuration for which the target was built. + #[prost(message, optional, tag = "3")] + pub configuration: ::core::option::Option, + /// If empty, the id refers to the completion of the target. If not-empty, + /// the id refers to the completion of an aspect applied to the (already + /// completed) target. + /// + /// For example, when building an apple_binary that depends on proto_library + /// "//:foo_proto", there will be two TargetCompleted events for + /// "//:foo_proto": + /// + /// 1. An event with an empty aspect, corresponding to actions producing + /// language-agnostic outputs from the proto_library; and + /// 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C + /// code generation. + #[prost(string, tag = "2")] + pub aspect: ::prost::alloc::string::String, + } + /// Identifier of an event reporting that an action was completed (not all + /// actions are reported, only the ones that can be considered important; + /// this includes all failed actions). + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct ActionCompletedId { + #[prost(string, tag = "1")] + pub primary_output: ::prost::alloc::string::String, + /// Optional, the label of the owner of the action, for reference. + #[prost(string, tag = "2")] + pub label: ::prost::alloc::string::String, + /// Optional, the id of the configuration of the action owner. + #[prost(message, optional, tag = "3")] + pub configuration: ::core::option::Option, + } + /// Identifier of an event reporting an event associated with an unconfigured + /// label. Usually, this indicates a failure due to a missing input file. In + /// any case, it will report some form of error (i.e., the payload will be an + /// Aborted event); there are no regular events using this identifier. The + /// purpose of those events is to serve as the root cause of a failed target. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct UnconfiguredLabelId { + #[prost(string, tag = "1")] + pub label: ::prost::alloc::string::String, + } + /// Identifier of an event reporting an event associated with a configured + /// label, usually a visibility error. In any case, an event with such an + /// id will always report some form of error (i.e., the payload will be an + /// Aborted event); there are no regular events using this identifier. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct ConfiguredLabelId { + #[prost(string, tag = "1")] + pub label: ::prost::alloc::string::String, + #[prost(message, optional, tag = "2")] + pub configuration: ::core::option::Option, + } + /// Identifier of an event reporting on an individual test run. The label + /// identifies the test that is reported about, the remaining fields are + /// in such a way as to uniquely identify the action within a build. In fact, + /// attempts for the same test, run, shard triple are counted sequentially, + /// starting with 1. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct TestResultId { + #[prost(string, tag = "1")] + pub label: ::prost::alloc::string::String, + #[prost(message, optional, tag = "5")] + pub configuration: ::core::option::Option, + #[prost(int32, tag = "2")] + pub run: i32, + #[prost(int32, tag = "3")] + pub shard: i32, + #[prost(int32, tag = "4")] + pub attempt: i32, + } + /// Identifier of an event reporting progress of an individual test run. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct TestProgressId { + /// The label of the target for the action. + #[prost(string, tag = "1")] + pub label: ::prost::alloc::string::String, + /// The configuration under which the action is running. + #[prost(message, optional, tag = "2")] + pub configuration: ::core::option::Option, + /// The run number of the test action (e.g. for runs_per_test > 1). + #[prost(int32, tag = "3")] + pub run: i32, + /// For sharded tests, the shard number of the test action. + #[prost(int32, tag = "4")] + pub shard: i32, + /// The execution attempt number which may increase due to retries (e.g. for + /// flaky tests). + #[prost(int32, tag = "5")] + pub attempt: i32, + /// An incrementing count used to differentiate TestProgressIds for the same + /// test attempt. + #[prost(int32, tag = "6")] + pub opaque_count: i32, + } + /// Identifier of an event reporting the summary of a test. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct TestSummaryId { + #[prost(string, tag = "1")] + pub label: ::prost::alloc::string::String, + #[prost(message, optional, tag = "2")] + pub configuration: ::core::option::Option, + } + /// Identifier of an event reporting the summary of a target. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct TargetSummaryId { + #[prost(string, tag = "1")] + pub label: ::prost::alloc::string::String, + #[prost(message, optional, tag = "2")] + pub configuration: ::core::option::Option, + } + /// Identifier of the BuildFinished event, indicating the end of a build. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct BuildFinishedId {} + /// Identifier of an event providing additional logs/statistics after + /// completion of the build. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct BuildToolLogsId {} + /// Identifier of an event providing build metrics after completion + /// of the build. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct BuildMetricsId {} + /// Identifier of an event providing convenience symlinks information. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct ConvenienceSymlinksIdentifiedId {} + /// Identifier of an event providing the ExecRequest of a run command. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct ExecRequestId {} + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Id { + #[prost(message, tag = "1")] + Unknown(UnknownBuildEventId), + #[prost(message, tag = "2")] + Progress(ProgressId), + #[prost(message, tag = "3")] + Started(BuildStartedId), + #[prost(message, tag = "11")] + UnstructuredCommandLine(UnstructuredCommandLineId), + #[prost(message, tag = "18")] + StructuredCommandLine(StructuredCommandLineId), + #[prost(message, tag = "14")] + WorkspaceStatus(WorkspaceStatusId), + #[prost(message, tag = "12")] + OptionsParsed(OptionsParsedId), + #[prost(message, tag = "17")] + Fetch(FetchId), + #[prost(message, tag = "15")] + Configuration(ConfigurationId), + #[prost(message, tag = "16")] + TargetConfigured(TargetConfiguredId), + #[prost(message, tag = "4")] + Pattern(PatternExpandedId), + #[prost(message, tag = "10")] + PatternSkipped(PatternExpandedId), + #[prost(message, tag = "13")] + NamedSet(NamedSetOfFilesId), + #[prost(message, tag = "5")] + TargetCompleted(TargetCompletedId), + #[prost(message, tag = "6")] + ActionCompleted(ActionCompletedId), + #[prost(message, tag = "19")] + UnconfiguredLabel(UnconfiguredLabelId), + #[prost(message, tag = "21")] + ConfiguredLabel(ConfiguredLabelId), + #[prost(message, tag = "8")] + TestResult(TestResultId), + #[prost(message, tag = "29")] + TestProgress(TestProgressId), + #[prost(message, tag = "7")] + TestSummary(TestSummaryId), + #[prost(message, tag = "26")] + TargetSummary(TargetSummaryId), + #[prost(message, tag = "9")] + BuildFinished(BuildFinishedId), + #[prost(message, tag = "20")] + BuildToolLogs(BuildToolLogsId), + #[prost(message, tag = "22")] + BuildMetrics(BuildMetricsId), + #[prost(message, tag = "23")] + Workspace(WorkspaceConfigId), + #[prost(message, tag = "24")] + BuildMetadata(BuildMetadataId), + #[prost(message, tag = "25")] + ConvenienceSymlinksIdentified(ConvenienceSymlinksIdentifiedId), + #[prost(message, tag = "28")] + ExecRequest(ExecRequestId), + } +} +/// Payload of an event summarizing the progress of the build so far. Those +/// events are also used to be parents of events where the more logical parent +/// event cannot be posted yet as the needed information is not yet complete. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Progress { + /// The next chunk of stdout that bazel produced since the last progress event + /// or the beginning of the build. + /// Consumers that need to reason about the relative order of stdout and stderr + /// can assume that stderr has been emitted before stdout if both are present, + /// on a best-effort basis. + #[prost(string, tag = "1")] + pub stdout: ::prost::alloc::string::String, + /// The next chunk of stderr that bazel produced since the last progress event + /// or the beginning of the build. + /// Consumers that need to reason about the relative order of stdout and stderr + /// can assume that stderr has been emitted before stdout if both are present, + /// on a best-effort basis. + #[prost(string, tag = "2")] + pub stderr: ::prost::alloc::string::String, +} +/// Payload of an event indicating that an expected event will not come, as +/// the build is aborted prematurely for some reason. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Aborted { + #[prost(enumeration = "aborted::AbortReason", tag = "1")] + pub reason: i32, + /// A human readable description with more details about there reason, where + /// available and useful. + #[prost(string, tag = "2")] + pub description: ::prost::alloc::string::String, +} +/// Nested message and enum types in `Aborted`. +pub mod aborted { + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + ::prost::Enumeration + )] + #[repr(i32)] + pub enum AbortReason { + Unknown = 0, + /// The user requested the build to be aborted (e.g., by hitting Ctl-C). + UserInterrupted = 1, + /// The user requested that no analysis be performed. + NoAnalyze = 8, + /// The user requested that no build be carried out. + NoBuild = 9, + /// The build or target was aborted as a timeout was exceeded. + TimeOut = 2, + /// The build or target was aborted as some remote environment (e.g., for + /// remote execution of actions) was not available in the expected way. + RemoteEnvironmentFailure = 3, + /// Failure due to reasons entirely internal to the build tool, i.e. an + /// unexpected crash due to programmer error. + Internal = 4, + /// A Failure occurred in the loading phase of a target. + LoadingFailure = 5, + /// A Failure occurred in the analysis phase of a target. + AnalysisFailure = 6, + /// Target build was skipped (e.g. due to incompatible CPU constraints). + Skipped = 7, + /// Build incomplete due to an earlier build failure (e.g. --keep_going was + /// set to false causing the build be ended upon failure). + Incomplete = 10, + /// The build tool ran out of memory and crashed. + OutOfMemory = 11, + } + impl AbortReason { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Unknown => "UNKNOWN", + Self::UserInterrupted => "USER_INTERRUPTED", + Self::NoAnalyze => "NO_ANALYZE", + Self::NoBuild => "NO_BUILD", + Self::TimeOut => "TIME_OUT", + Self::RemoteEnvironmentFailure => "REMOTE_ENVIRONMENT_FAILURE", + Self::Internal => "INTERNAL", + Self::LoadingFailure => "LOADING_FAILURE", + Self::AnalysisFailure => "ANALYSIS_FAILURE", + Self::Skipped => "SKIPPED", + Self::Incomplete => "INCOMPLETE", + Self::OutOfMemory => "OUT_OF_MEMORY", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "UNKNOWN" => Some(Self::Unknown), + "USER_INTERRUPTED" => Some(Self::UserInterrupted), + "NO_ANALYZE" => Some(Self::NoAnalyze), + "NO_BUILD" => Some(Self::NoBuild), + "TIME_OUT" => Some(Self::TimeOut), + "REMOTE_ENVIRONMENT_FAILURE" => Some(Self::RemoteEnvironmentFailure), + "INTERNAL" => Some(Self::Internal), + "LOADING_FAILURE" => Some(Self::LoadingFailure), + "ANALYSIS_FAILURE" => Some(Self::AnalysisFailure), + "SKIPPED" => Some(Self::Skipped), + "INCOMPLETE" => Some(Self::Incomplete), + "OUT_OF_MEMORY" => Some(Self::OutOfMemory), + _ => None, + } + } + } +} +/// Payload of an event indicating the beginning of a new build. Usually, events +/// of those type start a new build-event stream. The target pattern requested +/// to be build is contained in one of the announced child events; it is an +/// invariant that precisely one of the announced child events has a non-empty +/// target pattern. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BuildStarted { + #[prost(string, tag = "1")] + pub uuid: ::prost::alloc::string::String, + /// Start of the build in ms since the epoch. + /// + /// Deprecated, use `start_time` instead. + /// + /// TODO(yannic): Remove. + #[deprecated] + #[prost(int64, tag = "2")] + pub start_time_millis: i64, + /// Start of the build. + #[prost(message, optional, tag = "9")] + pub start_time: ::core::option::Option<::prost_types::Timestamp>, + /// Version of the build tool that is running. + #[prost(string, tag = "3")] + pub build_tool_version: ::prost::alloc::string::String, + /// A human-readable description of all the non-default option settings + #[prost(string, tag = "4")] + pub options_description: ::prost::alloc::string::String, + /// The name of the command that the user invoked. + #[prost(string, tag = "5")] + pub command: ::prost::alloc::string::String, + /// The working directory from which the build tool was invoked. + #[prost(string, tag = "6")] + pub working_directory: ::prost::alloc::string::String, + /// The directory of the workspace. + #[prost(string, tag = "7")] + pub workspace_directory: ::prost::alloc::string::String, + /// The process ID of the Bazel server. + #[prost(int64, tag = "8")] + pub server_pid: i64, +} +/// Configuration related to the blaze workspace and output tree. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkspaceConfig { + /// The root of the local blaze exec root. All output files live underneath + /// this at "blaze-out/". + #[prost(string, tag = "1")] + pub local_exec_root: ::prost::alloc::string::String, +} +/// Payload of an event reporting the command-line of the invocation as +/// originally received by the server. Note that this is not the command-line +/// given by the user, as the client adds information about the invocation, +/// like name and relevant entries of rc-files and client environment variables. +/// However, it does contain enough information to reproduce the build +/// invocation. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct UnstructuredCommandLine { + #[prost(string, repeated, tag = "1")] + pub args: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +/// Payload of an event reporting on the parsed options, grouped in various ways. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct OptionsParsed { + #[prost(string, repeated, tag = "1")] + pub startup_options: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(string, repeated, tag = "2")] + pub explicit_startup_options: ::prost::alloc::vec::Vec< + ::prost::alloc::string::String, + >, + #[prost(string, repeated, tag = "3")] + pub cmd_line: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(string, repeated, tag = "4")] + pub explicit_cmd_line: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(message, optional, tag = "5")] + pub invocation_policy: ::core::option::Option< + super::blaze::invocation_policy::InvocationPolicy, + >, + #[prost(string, tag = "6")] + pub tool_tag: ::prost::alloc::string::String, +} +/// Payload of an event indicating that an external resource was fetched. This +/// event will only occur in streams where an actual fetch happened, not in ones +/// where a cached copy of the entity to be fetched was used. +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct Fetch { + #[prost(bool, tag = "1")] + pub success: bool, +} +/// Payload of an event reporting the workspace status. Key-value pairs can be +/// provided by specifying the workspace_status_command to an executable that +/// returns one key-value pair per line of output (key and value separated by a +/// space). +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkspaceStatus { + #[prost(message, repeated, tag = "1")] + pub item: ::prost::alloc::vec::Vec, +} +/// Nested message and enum types in `WorkspaceStatus`. +pub mod workspace_status { + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct Item { + #[prost(string, tag = "1")] + pub key: ::prost::alloc::string::String, + #[prost(string, tag = "2")] + pub value: ::prost::alloc::string::String, + } +} +/// Payload of an event reporting custom key-value metadata associated with the +/// build. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BuildMetadata { + /// Custom metadata for the build. + #[prost(map = "string, string", tag = "1")] + pub metadata: ::std::collections::HashMap< + ::prost::alloc::string::String, + ::prost::alloc::string::String, + >, +} +/// Payload of an event reporting details of a given configuration. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Configuration { + #[prost(string, tag = "1")] + pub mnemonic: ::prost::alloc::string::String, + #[prost(string, tag = "2")] + pub platform_name: ::prost::alloc::string::String, + #[prost(string, tag = "3")] + pub cpu: ::prost::alloc::string::String, + #[prost(map = "string, string", tag = "4")] + pub make_variable: ::std::collections::HashMap< + ::prost::alloc::string::String, + ::prost::alloc::string::String, + >, + /// Whether this configuration is used for building tools. + #[prost(bool, tag = "5")] + pub is_tool: bool, +} +/// Payload of the event indicating the expansion of a target pattern. +/// The main information is in the chaining part: the id will contain the +/// target pattern that was expanded and the children id will contain the +/// target or target pattern it was expanded to. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PatternExpanded { + /// All test suites requested via top-level target patterns. Does not include + /// test suites whose label matched a negative pattern. + #[prost(message, repeated, tag = "1")] + pub test_suite_expansions: ::prost::alloc::vec::Vec< + pattern_expanded::TestSuiteExpansion, + >, +} +/// Nested message and enum types in `PatternExpanded`. +pub mod pattern_expanded { + /// Represents a test_suite target and the tests that it expanded to. Nested + /// test suites are recursively expanded. The test labels only contain the + /// final test targets, not any nested suites. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct TestSuiteExpansion { + /// The label of the test_suite rule. + #[prost(string, tag = "1")] + pub suite_label: ::prost::alloc::string::String, + /// Labels of the test targets included in the suite. Includes all tests in + /// the suite regardless of any filters or negative patterns which may result + /// in the test not actually being run. + #[prost(string, repeated, tag = "2")] + pub test_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + } +} +/// Payload of the event indicating that the configurations for a target have +/// been identified. As with pattern expansion the main information is in the +/// chaining part: the id will contain the target that was configured and the +/// children id will contain the configured targets it was configured to. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TargetConfigured { + /// The kind of target (e.g., e.g. "cc_library rule", "source file", + /// "generated file") where the completion is reported. + #[prost(string, tag = "1")] + pub target_kind: ::prost::alloc::string::String, + /// The size of the test, if the target is a test target. Unset otherwise. + #[prost(enumeration = "TestSize", tag = "2")] + pub test_size: i32, + /// List of all tags associated with this target (for all possible + /// configurations). + #[prost(string, repeated, tag = "3")] + pub tag: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct File { + /// A sequence of prefixes to apply to the file name to construct a full path. + /// In most but not all cases, there will be 3 entries: + /// 1. A root output directory, eg "bazel-out" + /// 2. A configuration mnemonic, eg "k8-fastbuild" + /// 3. An output category, eg "genfiles" + #[prost(string, repeated, tag = "4")] + pub path_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// identifier indicating the nature of the file (e.g., "stdout", "stderr") + #[prost(string, tag = "1")] + pub name: ::prost::alloc::string::String, + /// Digest of the file, using the build tool's configured digest algorithm, + /// hex-encoded. + #[prost(string, tag = "5")] + pub digest: ::prost::alloc::string::String, + /// Length of the file in bytes. + #[prost(int64, tag = "6")] + pub length: i64, + #[prost(oneof = "file::File", tags = "2, 3, 7")] + pub file: ::core::option::Option, +} +/// Nested message and enum types in `File`. +pub mod file { + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum File { + /// A location where the contents of the file can be found. The string is + /// encoded according to RFC2396. + #[prost(string, tag = "2")] + Uri(::prost::alloc::string::String), + /// The contents of the file, if they are guaranteed to be short. + #[prost(bytes, tag = "3")] + Contents(::prost::bytes::Bytes), + /// The symlink target path, if the file is an unresolved symlink. + #[prost(string, tag = "7")] + SymlinkTargetPath(::prost::alloc::string::String), + } +} +/// Payload of a message to describe a set of files, usually build artifacts, to +/// be referred to later by their name. In this way, files that occur identically +/// as outputs of several targets have to be named only once. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NamedSetOfFiles { + /// Files that belong to this named set of files. + #[prost(message, repeated, tag = "1")] + pub files: ::prost::alloc::vec::Vec, + /// Other named sets whose members also belong to this set. + #[prost(message, repeated, tag = "2")] + pub file_sets: ::prost::alloc::vec::Vec, +} +/// Payload of the event indicating the completion of an action. The main purpose +/// of posting those events is to provide details on the root cause for a target +/// failing; however, consumers of the build-event protocol must not assume +/// that only failed actions are posted. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ActionExecuted { + #[prost(bool, tag = "1")] + pub success: bool, + /// The mnemonic of the action that was executed + #[prost(string, tag = "8")] + pub r#type: ::prost::alloc::string::String, + /// The exit code of the action, if it is available. + #[prost(int32, tag = "2")] + pub exit_code: i32, + /// Location where to find the standard output of the action + /// (e.g., a file path). + #[prost(message, optional, tag = "3")] + pub stdout: ::core::option::Option, + /// Location where to find the standard error of the action + /// (e.g., a file path). + #[prost(message, optional, tag = "4")] + pub stderr: ::core::option::Option, + /// Deprecated. This field is now present on ActionCompletedId. + #[deprecated] + #[prost(string, tag = "5")] + pub label: ::prost::alloc::string::String, + /// Deprecated. This field is now present on ActionCompletedId. + #[deprecated] + #[prost(message, optional, tag = "7")] + pub configuration: ::core::option::Option, + /// Primary output; only provided for successful actions. + #[prost(message, optional, tag = "6")] + pub primary_output: ::core::option::Option, + /// The command-line of the action, if the action is a command. + #[prost(string, repeated, tag = "9")] + pub command_line: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// List of paths to log files + #[prost(message, repeated, tag = "10")] + pub action_metadata_logs: ::prost::alloc::vec::Vec, + /// Only populated if success = false, and sometimes not even then. + #[prost(message, optional, tag = "11")] + pub failure_detail: ::core::option::Option, + /// Start of action execution, before any attempted execution begins. + #[prost(message, optional, tag = "12")] + pub start_time: ::core::option::Option<::prost_types::Timestamp>, + /// End of action execution, after all attempted execution completes. + #[prost(message, optional, tag = "13")] + pub end_time: ::core::option::Option<::prost_types::Timestamp>, + /// Additional details about action execution supplied by strategies. Bazel + /// options will determine which strategy details are included when multiple + /// strategies are involved in a single action's execution. + /// + /// The default type will be `tools.proto.SpawnExec` found in `spawn.proto`. + #[prost(message, repeated, tag = "14")] + pub strategy_details: ::prost::alloc::vec::Vec<::prost_types::Any>, +} +/// Collection of all output files belonging to that output group. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct OutputGroup { + /// Name of the output group + #[prost(string, tag = "1")] + pub name: ::prost::alloc::string::String, + /// List of file sets that belong to this output group as well. + #[prost(message, repeated, tag = "3")] + pub file_sets: ::prost::alloc::vec::Vec, + /// Indicates that one or more of the output group's files were not built + /// successfully (the generating action failed). + #[prost(bool, tag = "4")] + pub incomplete: bool, + /// Inlined files that belong to this output group, requested via + /// --build_event_inline_output_groups. + #[prost(message, repeated, tag = "5")] + pub inline_files: ::prost::alloc::vec::Vec, +} +/// Payload of the event indicating the completion of a target. The target is +/// specified in the id. If the target failed the root causes are provided as +/// children events. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TargetComplete { + #[prost(bool, tag = "1")] + pub success: bool, + /// The kind of target (e.g., e.g. "cc_library rule", "source file", + /// "generated file") where the completion is reported. + /// Deprecated: use the target_kind field in TargetConfigured instead. + #[deprecated] + #[prost(string, tag = "5")] + pub target_kind: ::prost::alloc::string::String, + /// The size of the test, if the target is a test target. Unset otherwise. + /// Deprecated: use the test_size field in TargetConfigured instead. + #[deprecated] + #[prost(enumeration = "TestSize", tag = "6")] + pub test_size: i32, + /// The output files are arranged by their output group. If an output file + /// is part of multiple output groups, it appears once in each output + /// group. + #[prost(message, repeated, tag = "2")] + pub output_group: ::prost::alloc::vec::Vec, + /// Temporarily, also report the important outputs directly. This is only to + /// allow existing clients help transition to the deduplicated representation; + /// new clients should not use it. + #[deprecated] + #[prost(message, repeated, tag = "4")] + pub important_output: ::prost::alloc::vec::Vec, + /// Report output artifacts (referenced transitively via output_group) which + /// emit directories instead of singleton files. These directory_output entries + /// will never include a uri. + #[prost(message, repeated, tag = "8")] + pub directory_output: ::prost::alloc::vec::Vec, + /// List of tags associated with this configured target. + #[prost(string, repeated, tag = "3")] + pub tag: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// The timeout specified for test actions under this configured target. + /// + /// Deprecated, use `test_timeout` instead. + /// + /// TODO(yannic): Remove. + #[deprecated] + #[prost(int64, tag = "7")] + pub test_timeout_seconds: i64, + /// The timeout specified for test actions under this configured target. + #[prost(message, optional, tag = "10")] + pub test_timeout: ::core::option::Option<::prost_types::Duration>, + /// Failure information about the target, only populated if success is false, + /// and sometimes not even then. Equal to one of the ActionExecuted + /// failure_detail fields for one of the root cause ActionExecuted events. + #[prost(message, optional, tag = "9")] + pub failure_detail: ::core::option::Option, +} +/// Payload on events reporting about individual test action. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TestResult { + /// The status of this test. + #[prost(enumeration = "TestStatus", tag = "5")] + pub status: i32, + /// Additional details about the status of the test. This is intended for + /// user display and must not be parsed. + #[prost(string, tag = "9")] + pub status_details: ::prost::alloc::string::String, + /// True, if the reported attempt is taken from the tool's local cache. + #[prost(bool, tag = "4")] + pub cached_locally: bool, + /// Time in milliseconds since the epoch at which the test attempt was started. + /// Note: for cached test results, this is time can be before the start of the + /// build. + /// + /// Deprecated, use `test_attempt_start` instead. + /// + /// TODO(yannic): Remove. + #[deprecated] + #[prost(int64, tag = "6")] + pub test_attempt_start_millis_epoch: i64, + /// Time at which the test attempt was started. + /// Note: for cached test results, this is time can be before the start of the + /// build. + #[prost(message, optional, tag = "10")] + pub test_attempt_start: ::core::option::Option<::prost_types::Timestamp>, + /// Time the test took to run. For locally cached results, this is the time + /// the cached invocation took when it was invoked. + /// + /// Deprecated, use `test_attempt_duration` instead. + /// + /// TODO(yannic): Remove. + #[deprecated] + #[prost(int64, tag = "3")] + pub test_attempt_duration_millis: i64, + /// Time the test took to run. For locally cached results, this is the time + /// the cached invocation took when it was invoked. + #[prost(message, optional, tag = "11")] + pub test_attempt_duration: ::core::option::Option<::prost_types::Duration>, + /// Files (logs, test.xml, undeclared outputs, etc) generated by that test + /// action. + #[prost(message, repeated, tag = "2")] + pub test_action_output: ::prost::alloc::vec::Vec, + /// Warnings generated by that test action. + #[prost(string, repeated, tag = "7")] + pub warning: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(message, optional, tag = "8")] + pub execution_info: ::core::option::Option, +} +/// Nested message and enum types in `TestResult`. +pub mod test_result { + /// Message providing optional meta data on the execution of the test action, + /// if available. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct ExecutionInfo { + /// Deprecated, use TargetComplete.test_timeout instead. + #[deprecated] + #[prost(int32, tag = "1")] + pub timeout_seconds: i32, + /// Name of the strategy to execute this test action (e.g., "local", + /// "remote") + #[prost(string, tag = "2")] + pub strategy: ::prost::alloc::string::String, + /// True, if the reported attempt was a cache hit in a remote cache. + #[prost(bool, tag = "6")] + pub cached_remotely: bool, + /// The exit code of the test action. + #[prost(int32, tag = "7")] + pub exit_code: i32, + /// The hostname of the machine where the test action was executed (in case + /// of remote execution), if known. + #[prost(string, tag = "3")] + pub hostname: ::prost::alloc::string::String, + #[prost(message, optional, tag = "4")] + pub timing_breakdown: ::core::option::Option, + #[prost(message, repeated, tag = "5")] + pub resource_usage: ::prost::alloc::vec::Vec, + } + /// Nested message and enum types in `ExecutionInfo`. + pub mod execution_info { + /// Represents a hierarchical timing breakdown of an activity. + /// The top level time should be the total time of the activity. + /// Invariant: `time` >= sum of `time`s of all direct children. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct TimingBreakdown { + #[prost(message, repeated, tag = "1")] + pub child: ::prost::alloc::vec::Vec, + #[prost(string, tag = "2")] + pub name: ::prost::alloc::string::String, + /// Deprecated, use `time` instead. + /// + /// TODO(yannic): Remove. + #[deprecated] + #[prost(int64, tag = "3")] + pub time_millis: i64, + #[prost(message, optional, tag = "4")] + pub time: ::core::option::Option<::prost_types::Duration>, + } + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct ResourceUsage { + #[prost(string, tag = "1")] + pub name: ::prost::alloc::string::String, + #[prost(int64, tag = "2")] + pub value: i64, + } + } +} +/// Event payload providing information about an active, individual test run. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TestProgress { + /// Identifies a resource that may provide information about an active test + /// run. The resource is not necessarily a file and may need to be queried + /// for information. The URI is not guaranteed to be available after the test + /// completes. The string is encoded according to RFC2396. + #[prost(string, tag = "1")] + pub uri: ::prost::alloc::string::String, +} +/// Payload of the event summarizing a test. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TestSummary { + /// Wrapper around BlazeTestStatus to support importing that enum to proto3. + /// Overall status of test, accumulated over all runs, shards, and attempts. + #[prost(enumeration = "TestStatus", tag = "5")] + pub overall_status: i32, + /// Total number of shard attempts. + /// E.g., if a target has 4 runs, 3 shards, each with 2 attempts, + /// then total_run_count will be 4*3*2 = 24. + #[prost(int32, tag = "1")] + pub total_run_count: i32, + /// Value of runs_per_test for the test. + #[prost(int32, tag = "10")] + pub run_count: i32, + /// Number of attempts. + /// If there are a different number of attempts per shard, the highest attempt + /// count across all shards for each run is used. + #[prost(int32, tag = "15")] + pub attempt_count: i32, + /// Number of shards. + #[prost(int32, tag = "11")] + pub shard_count: i32, + /// Path to logs of passed runs. + #[prost(message, repeated, tag = "3")] + pub passed: ::prost::alloc::vec::Vec, + /// Path to logs of failed runs; + #[prost(message, repeated, tag = "4")] + pub failed: ::prost::alloc::vec::Vec, + /// Total number of cached test actions + #[prost(int32, tag = "6")] + pub total_num_cached: i32, + /// When the test first started running. + /// + /// Deprecated, use `first_start_time` instead. + /// + /// TODO(yannic): Remove. + #[deprecated] + #[prost(int64, tag = "7")] + pub first_start_time_millis: i64, + /// When the test first started running. + #[prost(message, optional, tag = "13")] + pub first_start_time: ::core::option::Option<::prost_types::Timestamp>, + /// When the last test action completed. + /// + /// Deprecated, use `last_stop_time` instead. + /// + /// TODO(yannic): Remove. + #[deprecated] + #[prost(int64, tag = "8")] + pub last_stop_time_millis: i64, + /// When the test first started running. + #[prost(message, optional, tag = "14")] + pub last_stop_time: ::core::option::Option<::prost_types::Timestamp>, + /// The total runtime of the test. + /// + /// Deprecated, use `total_run` instead. + /// + /// TODO(yannic): Remove. + #[deprecated] + #[prost(int64, tag = "9")] + pub total_run_duration_millis: i64, + /// The total runtime of the test. + #[prost(message, optional, tag = "12")] + pub total_run_duration: ::core::option::Option<::prost_types::Duration>, +} +/// Payload of the event summarizing a target (test or non-test). +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct TargetSummary { + /// Conjunction of TargetComplete events for this target, including aspects. + #[prost(bool, tag = "1")] + pub overall_build_success: bool, + /// Repeats TestSummary's overall_status if available. + #[prost(enumeration = "TestStatus", tag = "2")] + pub overall_test_status: i32, +} +/// Event indicating the end of a build. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BuildFinished { + /// If the build succeeded or failed. + #[deprecated] + #[prost(bool, tag = "1")] + pub overall_success: bool, + /// The overall status of the build. A build was successful iff + /// ExitCode.code equals 0. + #[prost(message, optional, tag = "3")] + pub exit_code: ::core::option::Option, + /// End of the build in ms since the epoch. + /// + /// Deprecated, use `finish_time` instead. + /// + /// TODO(yannic): Remove. + #[deprecated] + #[prost(int64, tag = "2")] + pub finish_time_millis: i64, + /// End of the build. + #[prost(message, optional, tag = "5")] + pub finish_time: ::core::option::Option<::prost_types::Timestamp>, + #[deprecated] + #[prost(message, optional, tag = "4")] + pub anomaly_report: ::core::option::Option, + /// Only populated if success = false, and sometimes not even then. + #[prost(message, optional, tag = "6")] + pub failure_detail: ::core::option::Option, +} +/// Nested message and enum types in `BuildFinished`. +pub mod build_finished { + /// Exit code of a build. The possible values correspond to the predefined + /// codes in bazel's lib.ExitCode class, as well as any custom exit code a + /// module might define. The predefined exit codes are subject to change (but + /// rarely do) and are not part of the public API. + /// + /// A build was successful iff ExitCode.code equals 0. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct ExitCode { + /// The name of the exit code. + #[prost(string, tag = "1")] + pub name: ::prost::alloc::string::String, + /// The exit code. + #[prost(int32, tag = "2")] + pub code: i32, + } + /// Things that happened during the build that could be of interest. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct AnomalyReport { + /// Was the build suspended at any time during the build. + /// Examples of suspensions are SIGSTOP, or the hardware being put to sleep. + /// If was_suspended is true, then most of the timings for this build are + /// suspect. + /// NOTE: This is no longer set and is deprecated. + #[prost(bool, tag = "1")] + pub was_suspended: bool, + } +} +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BuildMetrics { + #[prost(message, optional, tag = "1")] + pub action_summary: ::core::option::Option, + #[prost(message, optional, tag = "2")] + pub memory_metrics: ::core::option::Option, + #[prost(message, optional, tag = "3")] + pub target_metrics: ::core::option::Option, + #[prost(message, optional, tag = "4")] + pub package_metrics: ::core::option::Option, + #[prost(message, optional, tag = "5")] + pub timing_metrics: ::core::option::Option, + #[prost(message, optional, tag = "6")] + pub cumulative_metrics: ::core::option::Option, + #[prost(message, optional, tag = "7")] + pub artifact_metrics: ::core::option::Option, + #[prost(message, optional, tag = "8")] + pub build_graph_metrics: ::core::option::Option, + #[prost(message, repeated, tag = "9")] + pub worker_metrics: ::prost::alloc::vec::Vec, + #[prost(message, optional, tag = "10")] + pub network_metrics: ::core::option::Option, + #[prost(message, optional, tag = "11")] + pub worker_pool_metrics: ::core::option::Option, + #[prost(message, optional, tag = "12")] + pub dynamic_execution_metrics: ::core::option::Option< + build_metrics::DynamicExecutionMetrics, + >, +} +/// Nested message and enum types in `BuildMetrics`. +pub mod build_metrics { + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct ActionSummary { + /// The total number of actions created and registered during the build, + /// including both aspects and configured targets. This metric includes + /// unused actions that were constructed but not executed during this build. + /// It does not include actions that were created on prior builds that are + /// still valid, even if those actions had to be re-executed on this build. + /// For the total number of actions that would be created if this invocation + /// were "clean", see BuildGraphMetrics below. + #[prost(int64, tag = "1")] + pub actions_created: i64, + /// The total number of actions created this build just by configured + /// targets. Used mainly to allow consumers of actions_created, which used to + /// not include aspects' actions, to normalize across the Blaze release that + /// switched actions_created to include all created actions. + #[prost(int64, tag = "3")] + pub actions_created_not_including_aspects: i64, + /// The total number of actions executed during the build. This includes any + /// remote cache hits, but excludes local action cache hits. + #[prost(int64, tag = "2")] + pub actions_executed: i64, + /// Contains the top N actions by number of actions executed. + #[prost(message, repeated, tag = "4")] + pub action_data: ::prost::alloc::vec::Vec, + /// Deprecated. The total number of remote cache hits. + #[deprecated] + #[prost(int64, tag = "5")] + pub remote_cache_hits: i64, + #[prost(message, repeated, tag = "6")] + pub runner_count: ::prost::alloc::vec::Vec, + #[prost(message, optional, tag = "7")] + pub action_cache_statistics: ::core::option::Option< + super::super::blaze::ActionCacheStatistics, + >, + } + /// Nested message and enum types in `ActionSummary`. + pub mod action_summary { + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct ActionData { + #[prost(string, tag = "1")] + pub mnemonic: ::prost::alloc::string::String, + /// The total number of actions of this type executed during the build. As + /// above, includes remote cache hits but excludes local action cache hits. + #[prost(int64, tag = "2")] + pub actions_executed: i64, + /// When the first action of this type started being executed, in + /// milliseconds from the epoch. + #[prost(int64, tag = "3")] + pub first_started_ms: i64, + /// When the last action of this type ended being executed, in + /// milliseconds from the epoch. + #[prost(int64, tag = "4")] + pub last_ended_ms: i64, + /// Accumulated CPU time of all spawned actions of this type. + /// This is only set if all the actions reported a time + #[prost(message, optional, tag = "5")] + pub system_time: ::core::option::Option<::prost_types::Duration>, + #[prost(message, optional, tag = "6")] + pub user_time: ::core::option::Option<::prost_types::Duration>, + /// The total number of actions of this type registered during the build. + #[prost(int64, tag = "7")] + pub actions_created: i64, + } + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct RunnerCount { + #[prost(string, tag = "1")] + pub name: ::prost::alloc::string::String, + #[prost(int32, tag = "2")] + pub count: i32, + #[prost(string, tag = "3")] + pub exec_kind: ::prost::alloc::string::String, + } + } + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct MemoryMetrics { + /// Size of the JVM heap post build in bytes. This is only collected if + /// --memory_profile is set, since it forces a full GC. + #[prost(int64, tag = "1")] + pub used_heap_size_post_build: i64, + /// Size of the peak JVM heap size in bytes post GC. Note that this reports 0 + /// if there was no major GC during the build. + #[prost(int64, tag = "2")] + pub peak_post_gc_heap_size: i64, + /// Size of the peak tenured space JVM heap size event in bytes post GC. Note + /// that this reports 0 if there was no major GC during the build. + #[prost(int64, tag = "4")] + pub peak_post_gc_tenured_space_heap_size: i64, + #[prost(message, repeated, tag = "3")] + pub garbage_metrics: ::prost::alloc::vec::Vec, + } + /// Nested message and enum types in `MemoryMetrics`. + pub mod memory_metrics { + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct GarbageMetrics { + /// Type of garbage collected, e.g. G1 Old Gen. + #[prost(string, tag = "1")] + pub r#type: ::prost::alloc::string::String, + /// Number of bytes of garbage of the given type collected during this + /// invocation. + #[prost(int64, tag = "2")] + pub garbage_collected: i64, + } + } + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct TargetMetrics { + /// DEPRECATED + /// No longer populated. It never measured what it was supposed to (targets + /// loaded): it counted targets that were analyzed even if the underlying + /// package had not changed. + /// TODO(janakr): rename and remove. + #[prost(int64, tag = "1")] + pub targets_loaded: i64, + /// Number of targets/aspects configured during this build. Does not include + /// targets/aspects that were configured on prior builds on this server and + /// were cached. See BuildGraphMetrics below if you need that. + #[prost(int64, tag = "2")] + pub targets_configured: i64, + /// Number of configured targets analyzed during this build. Does not include + /// aspects. Used mainly to allow consumers of targets_configured, which used + /// to not include aspects, to normalize across the Blaze release that + /// switched targets_configured to include aspects. + #[prost(int64, tag = "3")] + pub targets_configured_not_including_aspects: i64, + } + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct PackageMetrics { + /// Number of BUILD files (aka packages) successfully loaded during this + /// build. + /// + /// \[For Bazel binaries built at source states\] Before Dec 2021, this value + /// was the number of packages attempted to be loaded, for a particular + /// definition of "attempted". + /// + /// After Dec 2021, this value would sometimes overcount because the same + /// package could sometimes be attempted to be loaded multiple times due to + /// memory pressure. + /// + /// After Feb 2022, this value is the number of packages successfully + /// loaded. + #[prost(int64, tag = "1")] + pub packages_loaded: i64, + /// Loading time metrics per package. + #[prost(message, repeated, tag = "2")] + pub package_load_metrics: ::prost::alloc::vec::Vec< + super::super::devtools::build::lib::packages::metrics::PackageLoadMetrics, + >, + } + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct TimingMetrics { + /// For Skymeld, it's possible that + /// analysis_phase_time_in_ms + execution_phase_time_in_ms >= wall_time_in_ms + /// + /// The CPU time in milliseconds consumed during this build. + #[prost(int64, tag = "1")] + pub cpu_time_in_ms: i64, + /// The elapsed wall time in milliseconds during this build. + #[prost(int64, tag = "2")] + pub wall_time_in_ms: i64, + /// The elapsed wall time in milliseconds during the analysis phase. + /// When analysis and execution phases are interleaved, this measures the + /// elapsed time from the first analysis work to the last. + #[prost(int64, tag = "3")] + pub analysis_phase_time_in_ms: i64, + /// The elapsed wall time in milliseconds during the execution phase. + /// When analysis and execution phases are interleaved, this measures the + /// elapsed time from the first action execution (excluding workspace status + /// actions) to the last. + #[prost(int64, tag = "4")] + pub execution_phase_time_in_ms: i64, + /// The elapsed wall time in milliseconds until the first action execution + /// started (excluding workspace status actions). + #[prost(int64, tag = "5")] + pub actions_execution_start_in_ms: i64, + } + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct CumulativeMetrics { + /// One-indexed number of "analyses" the server has run, including the + /// current one. Will be incremented for every build/test/cquery/etc. command + /// that reaches the analysis phase. + #[prost(int32, tag = "11")] + pub num_analyses: i32, + /// One-indexed number of "builds" the server has run, including the current + /// one. Will be incremented for every build/test/run/etc. command that + /// reaches the execution phase. + #[prost(int32, tag = "12")] + pub num_builds: i32, + } + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct ArtifactMetrics { + /// Measures all source files newly read this build. Does not include + /// unchanged sources on incremental builds. + #[prost(message, optional, tag = "2")] + pub source_artifacts_read: ::core::option::Option, + /// Measures all output artifacts from executed actions. This includes + /// actions that were cached locally (via the action cache) or remotely (via + /// a remote cache or executor), but does *not* include outputs of actions + /// that were cached internally in Skyframe. + #[prost(message, optional, tag = "3")] + pub output_artifacts_seen: ::core::option::Option, + /// Measures all output artifacts from actions that were cached locally + /// via the action cache. These artifacts were already present on disk at the + /// start of the build. Does not include Skyframe-cached actions' outputs. + #[prost(message, optional, tag = "4")] + pub output_artifacts_from_action_cache: ::core::option::Option< + artifact_metrics::FilesMetric, + >, + /// Measures all artifacts that belong to a top-level output group. Does not + /// deduplicate, so if there are two top-level targets in this build that + /// share an artifact, it will be counted twice. + #[prost(message, optional, tag = "5")] + pub top_level_artifacts: ::core::option::Option, + } + /// Nested message and enum types in `ArtifactMetrics`. + pub mod artifact_metrics { + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct FilesMetric { + #[prost(int64, tag = "1")] + pub size_in_bytes: i64, + #[prost(int32, tag = "2")] + pub count: i32, + } + } + /// Data about the evaluation of Skyfunctions. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct EvaluationStat { + /// Name of the Skyfunction. + #[prost(string, tag = "1")] + pub skyfunction_name: ::prost::alloc::string::String, + /// How many times a given operation was carried out on a Skyfunction. + #[prost(int64, tag = "2")] + pub count: i64, + } + /// Information about the size and shape of the build graph. Some fields may + /// not be populated if Bazel was able to skip steps due to caching. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct BuildGraphMetrics { + /// How many configured targets/aspects were in this build, including any + /// that were analyzed on a prior build and are still valid. May not be + /// populated if analysis phase was fully cached. Note: for historical + /// reasons this includes input/output files and other configured targets + /// that do not actually have associated actions. + #[prost(int32, tag = "1")] + pub action_lookup_value_count: i32, + /// How many configured targets alone were in this build: always at most + /// action_lookup_value_count. Useful mainly for historical comparisons to + /// TargetMetrics.targets_configured, which used to not count aspects. This + /// also includes configured targets that do not have associated actions. + #[prost(int32, tag = "5")] + pub action_lookup_value_count_not_including_aspects: i32, + /// How many actions belonged to the configured targets/aspects above. It may + /// not be necessary to execute all of these actions to build the requested + /// targets. May not be populated if analysis phase was fully cached. + #[prost(int32, tag = "2")] + pub action_count: i32, + /// How many actions belonged to configured targets: always at most + /// action_count. Useful mainly for historical comparisons to + /// ActionMetrics.actions_created, which used to not count aspects' actions. + #[prost(int32, tag = "6")] + pub action_count_not_including_aspects: i32, + /// How many "input file" configured targets there were: one per source file. + /// Should agree with artifact_metrics.source_artifacts_read.count above, + #[prost(int32, tag = "7")] + pub input_file_configured_target_count: i32, + /// How many "output file" configured targets there were: output files that + /// are targets (not implicit outputs). + #[prost(int32, tag = "8")] + pub output_file_configured_target_count: i32, + /// How many "other" configured targets there were (like alias, + /// package_group, and other non-rule non-file configured targets). + #[prost(int32, tag = "9")] + pub other_configured_target_count: i32, + /// How many artifacts are outputs of the above actions. May not be populated + /// if analysis phase was fully cached. + #[prost(int32, tag = "3")] + pub output_artifact_count: i32, + /// How many Skyframe nodes there are in memory at the end of the build. This + /// may underestimate the number of nodes when running with memory-saving + /// settings or with Skybuild, and may overestimate if there are nodes from + /// prior evaluations still in the cache. + #[prost(int32, tag = "4")] + pub post_invocation_skyframe_node_count: i32, + /// Number of SkyValues that were dirtied during the build. Dirtied nodes are + /// those that transitively depend on a node that changed by itself (e.g. one + /// representing a file in the file system) + #[prost(message, repeated, tag = "10")] + pub dirtied_values: ::prost::alloc::vec::Vec, + /// Number of SkyValues that changed by themselves. For example, when a file + /// on the file system changes, the SkyValue representing it will change. + #[prost(message, repeated, tag = "11")] + pub changed_values: ::prost::alloc::vec::Vec, + /// Number of SkyValues that were built. This means that they were evaluated + /// and were found to have changed from their previous version. + #[prost(message, repeated, tag = "12")] + pub built_values: ::prost::alloc::vec::Vec, + /// Number of SkyValues that were evaluated and found clean, i.e. equal to + /// their previous version. + #[prost(message, repeated, tag = "13")] + pub cleaned_values: ::prost::alloc::vec::Vec, + /// Number of evaluations to build SkyValues. This includes restarted + /// evaluations, which means there can be multiple evaluations per built + /// SkyValue. Subtract built_values from this number to get the number of + /// restarted evaluations. + #[prost(message, repeated, tag = "17")] + pub evaluated_values: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "14")] + pub rule_class: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "15")] + pub aspect: ::prost::alloc::vec::Vec, + } + /// Nested message and enum types in `BuildGraphMetrics`. + pub mod build_graph_metrics { + /// For SkyKeys in 'done values' where the SkyValue is of type + /// RuleConfiguredTargetValue, we pull those out separately and report the + /// ruleClass and action count. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct RuleClassCount { + /// Unique key for the rule class. + #[prost(string, tag = "1")] + pub key: ::prost::alloc::string::String, + /// String name of the rule_class (not guaranteed unique) + #[prost(string, tag = "2")] + pub rule_class: ::prost::alloc::string::String, + /// how many rule instances of this type were seen. + #[prost(uint64, tag = "3")] + pub count: u64, + /// how many actions were created by this rule class. + #[prost(uint64, tag = "4")] + pub action_count: u64, + } + /// For SkyKeys whose function name is ASPECT break out that information + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct AspectCount { + /// Unique key for Aspect. + #[prost(string, tag = "1")] + pub key: ::prost::alloc::string::String, + /// usually the same as above, but can differ in some cases. + #[prost(string, tag = "2")] + pub aspect_name: ::prost::alloc::string::String, + /// number of aspects created of this type. + #[prost(uint64, tag = "3")] + pub count: u64, + /// number of actions created by aspects of this type. + #[prost(uint64, tag = "4")] + pub action_count: u64, + } + } + /// Information about all workers that were alive during the invocation. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct WorkerMetrics { + /// Deprecated. Use worker_ids instead of this field. + #[deprecated] + #[prost(int32, tag = "1")] + pub worker_id: i32, + /// Ids of workers. Could be multiple in case of multiplex workers + #[prost(uint32, repeated, tag = "8")] + pub worker_ids: ::prost::alloc::vec::Vec, + /// Worker process id. If there is no process for worker, equals to zero. + #[prost(uint32, tag = "2")] + pub process_id: u32, + /// Mnemonic of running worker. + #[prost(string, tag = "3")] + pub mnemonic: ::prost::alloc::string::String, + /// Multiplex or singleplex worker. + #[prost(bool, tag = "4")] + pub is_multiplex: bool, + /// Using worker sandbox file system or not. + #[prost(bool, tag = "5")] + pub is_sandbox: bool, + /// TODO(b/300067854): Deprecate since all worker metrics should have their + /// WorkerStats set. + #[prost(bool, tag = "6")] + pub is_measurable: bool, + /// Hash value of worker key. Needed to distinguish worker pools with same + /// menmonic but with different worker keys. + #[prost(int64, tag = "9")] + pub worker_key_hash: i64, + #[prost(enumeration = "worker_metrics::WorkerStatus", tag = "10")] + pub worker_status: i32, + #[prost( + enumeration = "super::super::failure_details::worker::Code", + optional, + tag = "12" + )] + pub code: ::core::option::Option, + #[prost(int64, tag = "11")] + pub actions_executed: i64, + #[prost(int64, tag = "13")] + pub prior_actions_executed: i64, + /// Combined workers statistics. + #[prost(message, repeated, tag = "7")] + pub worker_stats: ::prost::alloc::vec::Vec, + } + /// Nested message and enum types in `WorkerMetrics`. + pub mod worker_metrics { + /// Information collected from worker at some point. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct WorkerStats { + /// Epoch unix time of collection of metrics. + #[prost(int64, tag = "1")] + pub collect_time_in_ms: i64, + /// Memory usage of worker process at the end of the build. + #[prost(int32, tag = "2")] + pub worker_memory_in_kb: i32, + /// Memory usage of the worker process prior to the invocation. + #[prost(int32, tag = "4")] + pub prior_worker_memory_in_kb: i32, + /// Epoch unix time of last action started on specific worker. + #[prost(int64, tag = "3")] + pub last_action_start_time_in_ms: i64, + } + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + ::prost::Enumeration + )] + #[repr(i32)] + pub enum WorkerStatus { + /// Used to indicate a worker instance where the process has not been + /// created yet. In reality this isn't logged, but leaving this here as a + /// possible option in the future. + NotStarted = 0, + Alive = 1, + KilledDueToMemoryPressure = 2, + /// Indicates that the worker process was killed due to a reason unknown to + /// Bazel at the point of measurement; if a known cause (below) comes along + /// later on, this field will be updated. + KilledUnknown = 3, + KilledDueToInterruptedException = 4, + KilledDueToIoException = 5, + KilledDueToUserExecException = 6, + } + impl WorkerStatus { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::NotStarted => "NOT_STARTED", + Self::Alive => "ALIVE", + Self::KilledDueToMemoryPressure => "KILLED_DUE_TO_MEMORY_PRESSURE", + Self::KilledUnknown => "KILLED_UNKNOWN", + Self::KilledDueToInterruptedException => { + "KILLED_DUE_TO_INTERRUPTED_EXCEPTION" + } + Self::KilledDueToIoException => "KILLED_DUE_TO_IO_EXCEPTION", + Self::KilledDueToUserExecException => { + "KILLED_DUE_TO_USER_EXEC_EXCEPTION" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NOT_STARTED" => Some(Self::NotStarted), + "ALIVE" => Some(Self::Alive), + "KILLED_DUE_TO_MEMORY_PRESSURE" => { + Some(Self::KilledDueToMemoryPressure) + } + "KILLED_UNKNOWN" => Some(Self::KilledUnknown), + "KILLED_DUE_TO_INTERRUPTED_EXCEPTION" => { + Some(Self::KilledDueToInterruptedException) + } + "KILLED_DUE_TO_IO_EXCEPTION" => Some(Self::KilledDueToIoException), + "KILLED_DUE_TO_USER_EXEC_EXCEPTION" => { + Some(Self::KilledDueToUserExecException) + } + _ => None, + } + } + } + } + /// Information about host network. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct NetworkMetrics { + #[prost(message, optional, tag = "1")] + pub system_network_stats: ::core::option::Option< + network_metrics::SystemNetworkStats, + >, + } + /// Nested message and enum types in `NetworkMetrics`. + pub mod network_metrics { + /// Information for all the network traffic going on on the host machine + /// during the invocation. + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct SystemNetworkStats { + /// Total bytes sent during the invocation. + #[prost(uint64, tag = "1")] + pub bytes_sent: u64, + /// Total bytes received during the invocation. + #[prost(uint64, tag = "2")] + pub bytes_recv: u64, + /// Total packets sent during the invocation. + #[prost(uint64, tag = "3")] + pub packets_sent: u64, + /// Total packets received during the invocation. + #[prost(uint64, tag = "4")] + pub packets_recv: u64, + /// Peak bytes/sec sent during the invocation. + #[prost(uint64, tag = "5")] + pub peak_bytes_sent_per_sec: u64, + /// Peak bytes/sec received during the invocation. + #[prost(uint64, tag = "6")] + pub peak_bytes_recv_per_sec: u64, + /// Peak packets/sec sent during the invocation. + #[prost(uint64, tag = "7")] + pub peak_packets_sent_per_sec: u64, + /// Peak packets/sec received during the invocation. + #[prost(uint64, tag = "8")] + pub peak_packets_recv_per_sec: u64, + } + } + /// Information about worker pool actions. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct WorkerPoolMetrics { + /// Statistics of worker pool per worker pool hash. Basically it's a map from + /// worker pool hash to statistics. + #[prost(message, repeated, tag = "1")] + pub worker_pool_stats: ::prost::alloc::vec::Vec< + worker_pool_metrics::WorkerPoolStats, + >, + } + /// Nested message and enum types in `WorkerPoolMetrics`. + pub mod worker_pool_metrics { + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct WorkerPoolStats { + /// Hash of worker pool these stats are for. Contains information about + /// startup flags. + #[prost(int32, tag = "1")] + pub hash: i32, + /// Mnemonic of workers these stats are for. + #[prost(string, tag = "2")] + pub mnemonic: ::prost::alloc::string::String, + /// Number of workers created during a build. + #[prost(int64, tag = "3")] + pub created_count: i64, + /// Number of workers destroyed during a build (sum of all workers + /// destroyed by eviction, UserExecException, IoException, + /// InterruptedException and unknown reasons below). + #[prost(int64, tag = "4")] + pub destroyed_count: i64, + /// Number of workers evicted during a build. + #[prost(int64, tag = "5")] + pub evicted_count: i64, + /// Number of workers destroyed due to UserExecExceptions. + #[prost(int64, tag = "6")] + pub user_exec_exception_destroyed_count: i64, + /// Number of workers destroyed due to IoExceptions. + #[prost(int64, tag = "7")] + pub io_exception_destroyed_count: i64, + /// Number of workers destroyed due to InterruptedExceptions. + #[prost(int64, tag = "8")] + pub interrupted_exception_destroyed_count: i64, + /// Number of workers destroyed due to an unknown reason. + #[prost(int64, tag = "9")] + pub unknown_destroyed_count: i64, + /// Number of workers alive at the end of the build. + #[prost(int64, tag = "10")] + pub alive_count: i64, + } + } + /// Information about dynamic execution. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct DynamicExecutionMetrics { + /// Race statistics grouped by mnemonic, local_name, remote_name. + #[prost(message, repeated, tag = "1")] + pub race_statistics: ::prost::alloc::vec::Vec< + dynamic_execution_metrics::RaceStatistics, + >, + } + /// Nested message and enum types in `DynamicExecutionMetrics`. + pub mod dynamic_execution_metrics { + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct RaceStatistics { + /// Mnemonic of the action. + #[prost(string, tag = "1")] + pub mnemonic: ::prost::alloc::string::String, + /// Name of runner of local branch. + #[prost(string, tag = "2")] + pub local_runner: ::prost::alloc::string::String, + /// Name of runner of remote branch. + #[prost(string, tag = "3")] + pub remote_runner: ::prost::alloc::string::String, + /// Number of wins of local branch in race. + #[prost(int32, tag = "4")] + pub local_wins: i32, + /// Number of wins of remote branch in race. + #[prost(int32, tag = "5")] + pub remote_wins: i32, + } + } +} +/// Event providing additional statistics/logs after completion of the build. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BuildToolLogs { + #[prost(message, repeated, tag = "1")] + pub log: ::prost::alloc::vec::Vec, +} +/// Event describing all convenience symlinks (i.e., workspace symlinks) to be +/// created or deleted once the execution phase has begun. Note that this event +/// does not say anything about whether or not the build tool actually executed +/// these filesystem operations; it only says what logical operations should be +/// performed. This event is emitted exactly once per build; if no symlinks are +/// to be modified, the event is still emitted with empty contents. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConvenienceSymlinksIdentified { + #[prost(message, repeated, tag = "1")] + pub convenience_symlinks: ::prost::alloc::vec::Vec, +} +/// The message that contains what type of action to perform on a given path and +/// target of a symlink. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConvenienceSymlink { + /// The path of the symlink to be created or deleted, absolute or relative to + /// the workspace, creating any directories necessary. If a symlink already + /// exists at that location, then it should be replaced by a symlink pointing + /// to the new target. + #[prost(string, tag = "1")] + pub path: ::prost::alloc::string::String, + /// The operation we are performing on the symlink. + #[prost(enumeration = "convenience_symlink::Action", tag = "2")] + pub action: i32, + /// If action is CREATE, this is the target path (relative to the output base) + /// that the symlink should point to. + /// + /// If action is DELETE, this field is not set. + #[prost(string, tag = "3")] + pub target: ::prost::alloc::string::String, +} +/// Nested message and enum types in `ConvenienceSymlink`. +pub mod convenience_symlink { + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + ::prost::Enumeration + )] + #[repr(i32)] + pub enum Action { + Unknown = 0, + /// Indicates a symlink should be created, or overwritten if it already + /// exists. + Create = 1, + /// Indicates a symlink should be deleted if it already exists. + Delete = 2, + } + impl Action { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Unknown => "UNKNOWN", + Self::Create => "CREATE", + Self::Delete => "DELETE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "UNKNOWN" => Some(Self::Unknown), + "CREATE" => Some(Self::Create), + "DELETE" => Some(Self::Delete), + _ => None, + } + } + } +} +/// Event that contains the ExecRequest of a run command announced only after a +/// successful build and before trying to execute the requested command-line. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecRequestConstructed { + #[prost(bytes = "bytes", tag = "1")] + pub working_directory: ::prost::bytes::Bytes, + #[prost(bytes = "bytes", repeated, tag = "2")] + pub argv: ::prost::alloc::vec::Vec<::prost::bytes::Bytes>, + #[prost(message, repeated, tag = "3")] + pub environment_variable: ::prost::alloc::vec::Vec, + #[prost(bytes = "bytes", repeated, tag = "4")] + pub environment_variable_to_clear: ::prost::alloc::vec::Vec<::prost::bytes::Bytes>, + #[prost(bool, tag = "5")] + pub should_exec: bool, +} +/// An environment variable provided by a run command after a successful build. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct EnvironmentVariable { + #[prost(bytes = "bytes", tag = "1")] + pub name: ::prost::bytes::Bytes, + #[prost(bytes = "bytes", tag = "2")] + pub value: ::prost::bytes::Bytes, +} +/// Message describing a build event. Events will have an identifier that +/// is unique within a given build invocation; they also announce follow-up +/// events as children. More details, which are specific to the kind of event +/// that is observed, is provided in the payload. More options for the payload +/// might be added in the future. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BuildEvent { + #[prost(message, optional, tag = "1")] + pub id: ::core::option::Option, + #[prost(message, repeated, tag = "2")] + pub children: ::prost::alloc::vec::Vec, + #[prost(bool, tag = "20")] + pub last_message: bool, + #[prost( + oneof = "build_event::Payload", + tags = "3, 4, 5, 12, 22, 13, 16, 21, 17, 6, 18, 7, 15, 8, 10, 30, 9, 28, 14, 23, 24, 25, 26, 27, 29" + )] + pub payload: ::core::option::Option, +} +/// Nested message and enum types in `BuildEvent`. +pub mod build_event { + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Payload { + #[prost(message, tag = "3")] + Progress(super::Progress), + #[prost(message, tag = "4")] + Aborted(super::Aborted), + #[prost(message, tag = "5")] + Started(super::BuildStarted), + #[prost(message, tag = "12")] + UnstructuredCommandLine(super::UnstructuredCommandLine), + #[prost(message, tag = "22")] + StructuredCommandLine(super::super::command_line::CommandLine), + #[prost(message, tag = "13")] + OptionsParsed(super::OptionsParsed), + #[prost(message, tag = "16")] + WorkspaceStatus(super::WorkspaceStatus), + #[prost(message, tag = "21")] + Fetch(super::Fetch), + #[prost(message, tag = "17")] + Configuration(super::Configuration), + #[prost(message, tag = "6")] + Expanded(super::PatternExpanded), + #[prost(message, tag = "18")] + Configured(super::TargetConfigured), + #[prost(message, tag = "7")] + Action(super::ActionExecuted), + #[prost(message, tag = "15")] + NamedSetOfFiles(super::NamedSetOfFiles), + #[prost(message, tag = "8")] + Completed(super::TargetComplete), + #[prost(message, tag = "10")] + TestResult(super::TestResult), + #[prost(message, tag = "30")] + TestProgress(super::TestProgress), + #[prost(message, tag = "9")] + TestSummary(super::TestSummary), + #[prost(message, tag = "28")] + TargetSummary(super::TargetSummary), + #[prost(message, tag = "14")] + Finished(super::BuildFinished), + #[prost(message, tag = "23")] + BuildToolLogs(super::BuildToolLogs), + #[prost(message, tag = "24")] + BuildMetrics(super::BuildMetrics), + #[prost(message, tag = "25")] + WorkspaceInfo(super::WorkspaceConfig), + #[prost(message, tag = "26")] + BuildMetadata(super::BuildMetadata), + #[prost(message, tag = "27")] + ConvenienceSymlinksIdentified(super::ConvenienceSymlinksIdentified), + #[prost(message, tag = "29")] + ExecRequest(super::ExecRequestConstructed), + } +} +/// Enumeration type characterizing the size of a test, as specified by the +/// test rule. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum TestSize { + Unknown = 0, + Small = 1, + Medium = 2, + Large = 3, + Enormous = 4, +} +impl TestSize { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Unknown => "UNKNOWN", + Self::Small => "SMALL", + Self::Medium => "MEDIUM", + Self::Large => "LARGE", + Self::Enormous => "ENORMOUS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "UNKNOWN" => Some(Self::Unknown), + "SMALL" => Some(Self::Small), + "MEDIUM" => Some(Self::Medium), + "LARGE" => Some(Self::Large), + "ENORMOUS" => Some(Self::Enormous), + _ => None, + } + } +} +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum TestStatus { + NoStatus = 0, + Passed = 1, + Flaky = 2, + Timeout = 3, + Failed = 4, + Incomplete = 5, + RemoteFailure = 6, + FailedToBuild = 7, + ToolHaltedBeforeTesting = 8, +} +impl TestStatus { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::NoStatus => "NO_STATUS", + Self::Passed => "PASSED", + Self::Flaky => "FLAKY", + Self::Timeout => "TIMEOUT", + Self::Failed => "FAILED", + Self::Incomplete => "INCOMPLETE", + Self::RemoteFailure => "REMOTE_FAILURE", + Self::FailedToBuild => "FAILED_TO_BUILD", + Self::ToolHaltedBeforeTesting => "TOOL_HALTED_BEFORE_TESTING", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NO_STATUS" => Some(Self::NoStatus), + "PASSED" => Some(Self::Passed), + "FLAKY" => Some(Self::Flaky), + "TIMEOUT" => Some(Self::Timeout), + "FAILED" => Some(Self::Failed), + "INCOMPLETE" => Some(Self::Incomplete), + "REMOTE_FAILURE" => Some(Self::RemoteFailure), + "FAILED_TO_BUILD" => Some(Self::FailedToBuild), + "TOOL_HALTED_BEFORE_TESTING" => Some(Self::ToolHaltedBeforeTesting), + _ => None, + } + } +} diff --git a/nativelink-proto/genproto/com.github.trace_machina.nativelink.events.pb.rs b/nativelink-proto/genproto/com.github.trace_machina.nativelink.events.pb.rs new file mode 100644 index 000000000..366df10ca --- /dev/null +++ b/nativelink-proto/genproto/com.github.trace_machina.nativelink.events.pb.rs @@ -0,0 +1,365 @@ +// Copyright 2022 The NativeLink Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file is @generated by prost-build. +/// / Same as build.bazel.remote.execution.v2.BatchUpdateBlobsRequest, +/// / but without the data field, and add a `data_len` field. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BatchUpdateBlobsRequestOverride { + #[prost(string, tag = "1")] + pub instance_name: ::prost::alloc::string::String, + #[prost(message, repeated, tag = "2")] + pub requests: ::prost::alloc::vec::Vec, + #[prost( + enumeration = "super::super::super::super::super::build::bazel::remote::execution::v2::digest_function::Value", + tag = "5" + )] + pub digest_function: i32, +} +/// Nested message and enum types in `BatchUpdateBlobsRequestOverride`. +pub mod batch_update_blobs_request_override { + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct Request { + #[prost(message, optional, tag = "1")] + pub digest: ::core::option::Option< + super::super::super::super::super::super::build::bazel::remote::execution::v2::Digest, + >, + #[prost( + enumeration = "super::super::super::super::super::super::build::bazel::remote::execution::v2::compressor::Value", + tag = "3" + )] + pub compressor: i32, + /// Override/new field to track the length of the data. + /// + /// Using 15 to stay at 1 byte, but higher than 3. + #[prost(uint64, tag = "15")] + pub data_len: u64, + } +} +/// / Same as build.bazel.remote.execution.v2.BatchReadBlobsResponse, +/// / but without the data field, and add a `data_len` field. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BatchReadBlobsResponseOverride { + #[prost(message, repeated, tag = "1")] + pub responses: ::prost::alloc::vec::Vec< + batch_read_blobs_response_override::Response, + >, +} +/// Nested message and enum types in `BatchReadBlobsResponseOverride`. +pub mod batch_read_blobs_response_override { + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct Response { + #[prost(message, optional, tag = "1")] + pub digest: ::core::option::Option< + super::super::super::super::super::super::build::bazel::remote::execution::v2::Digest, + >, + #[prost( + enumeration = "super::super::super::super::super::super::build::bazel::remote::execution::v2::compressor::Value", + tag = "4" + )] + pub compressor: i32, + #[prost(message, optional, tag = "3")] + pub status: ::core::option::Option< + super::super::super::super::super::super::google::rpc::Status, + >, + /// Override/new field to track the length of the data. + /// + /// Using 15 to stay at 1 byte, but higher than 3. + #[prost(uint64, tag = "15")] + pub data_len: u64, + } +} +/// / Same as google.bytestream.WriteRequest, but without the data field, +/// / and add a `data_len` field. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WriteRequestOverride { + #[prost(string, tag = "1")] + pub resource_name: ::prost::alloc::string::String, + #[prost(int64, tag = "2")] + pub write_offset: i64, + #[prost(bool, tag = "3")] + pub finish_write: bool, + /// Override/new field to track the length of the data. + /// + /// Using 15 to stay at 1 byte, but higher than 3. + #[prost(uint64, tag = "15")] + pub data_len: u64, +} +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetTreeStreamResponse { + #[prost(oneof = "get_tree_stream_response::Response", tags = "1, 2")] + pub response: ::core::option::Option, +} +/// Nested message and enum types in `GetTreeStreamResponse`. +pub mod get_tree_stream_response { + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Response { + #[prost(message, tag = "1")] + Success( + super::super::super::super::super::super::build::bazel::remote::execution::v2::GetTreeResponse, + ), + #[prost(message, tag = "2")] + Error(super::super::super::super::super::super::google::rpc::Status), + } +} +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ReadStreamResponse { + #[prost(oneof = "read_stream_response::Response", tags = "1, 2")] + pub response: ::core::option::Option, +} +/// Nested message and enum types in `ReadStreamResponse`. +pub mod read_stream_response { + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Response { + #[prost(uint64, tag = "1")] + Success(u64), + #[prost(message, tag = "2")] + Error(super::super::super::super::super::super::google::rpc::Status), + } +} +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WriteStreamRequest { + #[prost(oneof = "write_stream_request::Response", tags = "1, 2")] + pub response: ::core::option::Option, +} +/// Nested message and enum types in `WriteStreamRequest`. +pub mod write_stream_request { + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Response { + #[prost(message, tag = "1")] + Success(super::WriteRequestOverride), + #[prost(message, tag = "2")] + Error(super::super::super::super::super::super::google::rpc::Status), + } +} +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ExecuteStreamResponse { + #[prost(oneof = "execute_stream_response::Response", tags = "1, 2")] + pub response: ::core::option::Option, +} +/// Nested message and enum types in `ExecuteStreamResponse`. +pub mod execute_stream_response { + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Response { + #[prost(message, tag = "1")] + Success( + super::super::super::super::super::super::google::longrunning::Operation, + ), + #[prost(message, tag = "2")] + Error(super::super::super::super::super::super::google::rpc::Status), + } +} +/// / Nativelink event that has occurred. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct OriginEvent { + /// / The version of this message. + #[prost(uint32, tag = "1")] + pub version: u32, + /// / The event UUIDv6. This is a unique identifier for the event for the + /// / server that generated the event. + /// / Note: The timestamp of when the event occurred is encoded in the UUID. + #[prost(string, tag = "2")] + pub event_id: ::prost::alloc::string::String, + /// / \[optional\] The parent event UUID. This is used to track the + /// / parent event that generated this event. This is useful for + /// / tracking the flow of events. + #[prost(string, tag = "3")] + pub parent_event_id: ::prost::alloc::string::String, + /// / If the client is bazel, this is the meatadata that was sent with the + /// / request. This is useful for tracking the flow of events. + #[prost(message, optional, tag = "4")] + pub bazel_request_metadata: ::core::option::Option< + super::super::super::super::super::build::bazel::remote::execution::v2::RequestMetadata, + >, + /// / The identity header that generated the event. This will be populated with + /// / the value of the specified by the `IdentityHeaderSpec::header_name`. + #[prost(string, tag = "5")] + pub identity: ::prost::alloc::string::String, + /// / The event that occurred. + #[prost( + oneof = "origin_event::Event", + tags = "16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55" + )] + pub event: ::core::option::Option, +} +/// Nested message and enum types in `OriginEvent`. +pub mod origin_event { + /// / The event that occurred. + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Event { + #[prost(message, tag = "16")] + GetCapabilitiesRequest( + super::super::super::super::super::super::build::bazel::remote::execution::v2::GetCapabilitiesRequest, + ), + /// Note: GetCapabilitiesRequest currently cannot error. + #[prost(message, tag = "17")] + GetCapabilitiesResponse( + super::super::super::super::super::super::build::bazel::remote::execution::v2::ServerCapabilities, + ), + #[prost(message, tag = "18")] + GetActionResultRequest( + super::super::super::super::super::super::build::bazel::remote::execution::v2::GetActionResultRequest, + ), + #[prost(message, tag = "19")] + GetActionResultResponse( + super::super::super::super::super::super::build::bazel::remote::execution::v2::ActionResult, + ), + #[prost(message, tag = "20")] + GetActionResultError( + super::super::super::super::super::super::google::rpc::Status, + ), + #[prost(message, tag = "21")] + UpdateActionResultRequest( + super::super::super::super::super::super::build::bazel::remote::execution::v2::UpdateActionResultRequest, + ), + #[prost(message, tag = "22")] + UpdateActionResultResponse( + super::super::super::super::super::super::build::bazel::remote::execution::v2::ActionResult, + ), + #[prost(message, tag = "23")] + UpdateActionResultError( + super::super::super::super::super::super::google::rpc::Status, + ), + #[prost(message, tag = "24")] + FindMissingBlobsRequest( + super::super::super::super::super::super::build::bazel::remote::execution::v2::FindMissingBlobsRequest, + ), + #[prost(message, tag = "25")] + FindMissingBlobsResponse( + super::super::super::super::super::super::build::bazel::remote::execution::v2::FindMissingBlobsResponse, + ), + #[prost(message, tag = "26")] + FindMissingBlobsError( + super::super::super::super::super::super::google::rpc::Status, + ), + #[prost(message, tag = "27")] + BatchReadBlobsRequest( + super::super::super::super::super::super::build::bazel::remote::execution::v2::BatchReadBlobsRequest, + ), + #[prost(message, tag = "28")] + BatchReadBlobsResponse(super::BatchReadBlobsResponseOverride), + #[prost(message, tag = "29")] + BatchReadBlobsError( + super::super::super::super::super::super::google::rpc::Status, + ), + #[prost(message, tag = "30")] + BatchUpdateBlobsRequest(super::BatchUpdateBlobsRequestOverride), + #[prost(message, tag = "31")] + BatchUpdateBlobsResponse( + super::super::super::super::super::super::build::bazel::remote::execution::v2::BatchUpdateBlobsResponse, + ), + #[prost(message, tag = "32")] + BatchUpdateBlobsError( + super::super::super::super::super::super::google::rpc::Status, + ), + #[prost(message, tag = "33")] + GetTreeRequest( + super::super::super::super::super::super::build::bazel::remote::execution::v2::GetTreeRequest, + ), + #[prost(message, tag = "34")] + GetTreeResponse(()), + #[prost(message, tag = "35")] + GetTreeError(super::super::super::super::super::super::google::rpc::Status), + #[prost(message, tag = "36")] + GetTreeStreamResponse(super::GetTreeStreamResponse), + #[prost(message, tag = "37")] + ReadRequest( + super::super::super::super::super::super::google::bytestream::ReadRequest, + ), + #[prost(message, tag = "38")] + ReadResponse(()), + #[prost(message, tag = "39")] + ReadError(super::super::super::super::super::super::google::rpc::Status), + #[prost(message, tag = "40")] + ReadStreamResponse(super::ReadStreamResponse), + #[prost(message, tag = "41")] + WriteRequest(()), + #[prost(message, tag = "42")] + WriteResponse( + super::super::super::super::super::super::google::bytestream::WriteResponse, + ), + #[prost(message, tag = "43")] + WriteError(super::super::super::super::super::super::google::rpc::Status), + #[prost(message, tag = "44")] + WriteStreamRequest(super::WriteStreamRequest), + #[prost(message, tag = "45")] + QueryWriteStatusRequest( + super::super::super::super::super::super::google::bytestream::QueryWriteStatusRequest, + ), + #[prost(message, tag = "46")] + QueryWriteStatusResponse( + super::super::super::super::super::super::google::bytestream::QueryWriteStatusResponse, + ), + #[prost(message, tag = "47")] + QueryWriteStatusError( + super::super::super::super::super::super::google::rpc::Status, + ), + #[prost(message, tag = "48")] + ExecuteRequest( + super::super::super::super::super::super::build::bazel::remote::execution::v2::ExecuteRequest, + ), + #[prost(message, tag = "49")] + ExecuteResponse(()), + #[prost(message, tag = "50")] + ExecuteError(super::super::super::super::super::super::google::rpc::Status), + #[prost(message, tag = "51")] + ExecuteStreamResponse(super::ExecuteStreamResponse), + #[prost(message, tag = "52")] + WaitExecutionRequest( + super::super::super::super::super::super::build::bazel::remote::execution::v2::WaitExecutionRequest, + ), + #[prost(message, tag = "53")] + WaitExecutionResponse(()), + #[prost(message, tag = "54")] + WaitExecuteError(super::super::super::super::super::super::google::rpc::Status), + #[prost(message, tag = "55")] + WaitExecuteStreamResponse(super::ExecuteStreamResponse), + } +} +/// / Batch of events that have occurred. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct OriginEvents { + #[prost(message, repeated, tag = "1")] + pub events: ::prost::alloc::vec::Vec, +} +/// / Bep event that has occurred. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BepEvent { + /// / The version of this message. + #[prost(uint32, tag = "1")] + pub version: u32, + /// / The identity header that generated the event. This will be populated + /// / with the header value keyed by the specified by the + /// / `IdentityHeaderSpec::header_name`. + #[prost(string, tag = "2")] + pub identity: ::prost::alloc::string::String, + /// / The event that occurred. + #[prost(oneof = "bep_event::Event", tags = "3, 4")] + pub event: ::core::option::Option, +} +/// Nested message and enum types in `BepEvent`. +pub mod bep_event { + /// / The event that occurred. + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Event { + #[prost(message, tag = "3")] + LifecycleEvent( + super::super::super::super::super::super::google::devtools::build::v1::PublishLifecycleEventRequest, + ), + #[prost(message, tag = "4")] + BuildToolEvent( + super::super::super::super::super::super::google::devtools::build::v1::PublishBuildToolEventStreamRequest, + ), + } +} diff --git a/nativelink-proto/genproto/command_line.pb.rs b/nativelink-proto/genproto/command_line.pb.rs new file mode 100644 index 000000000..82bac3a1b --- /dev/null +++ b/nativelink-proto/genproto/command_line.pb.rs @@ -0,0 +1,107 @@ +// Copyright 2022 The NativeLink Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file is @generated by prost-build. +/// Representation of a Bazel command line. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CommandLine { + /// A title for this command line value, to differentiate it from others. + /// In particular, a single invocation may wish to report both the literal and + /// canonical command lines, and this label would be used to differentiate + /// between both versions. This is a string for flexibility. + #[prost(string, tag = "1")] + pub command_line_label: ::prost::alloc::string::String, + /// A Bazel command line is made of distinct parts. For example, + /// `bazel --nomaster_bazelrc test --nocache_test_results //foo:aTest` + /// has the executable "bazel", a startup flag, a command "test", a command + /// flag, and a test target. There could be many more flags and targets, or + /// none (`bazel info` for example), but the basic structure is there. The + /// command line should be broken down into these logical sections here. + #[prost(message, repeated, tag = "2")] + pub sections: ::prost::alloc::vec::Vec, +} +/// A section of the Bazel command line. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CommandLineSection { + /// The name of this section, such as "startup_option" or "command". + #[prost(string, tag = "1")] + pub section_label: ::prost::alloc::string::String, + #[prost(oneof = "command_line_section::SectionType", tags = "2, 3")] + pub section_type: ::core::option::Option, +} +/// Nested message and enum types in `CommandLineSection`. +pub mod command_line_section { + #[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum SectionType { + /// Sections with non-options, such as the list of targets or the command, + /// should use simple string chunks. + #[prost(message, tag = "2")] + ChunkList(super::ChunkList), + /// Startup and command options are lists of options and belong here. + #[prost(message, tag = "3")] + OptionList(super::OptionList), + } +} +/// Wrapper to allow a list of strings in the "oneof" section_type. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ChunkList { + #[prost(string, repeated, tag = "1")] + pub chunk: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +/// Wrapper to allow a list of options in the "oneof" section_type. +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct OptionList { + #[prost(message, repeated, tag = "1")] + pub option: ::prost::alloc::vec::Vec