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