mirror of
https://github.com/openai/codex.git
synced 2026-10-31 19:28:49 +00:00
fix(deps): align tonic and prost dependencies
This commit is contained in:
Generated
+14
-20
File diff suppressed because one or more lines are too long
Generated
+143
-124
@@ -1014,7 +1014,7 @@ dependencies = [
|
||||
"rustls-pki-types",
|
||||
"tokio",
|
||||
"tokio-rustls",
|
||||
"tower",
|
||||
"tower 0.5.3",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
@@ -1145,13 +1145,40 @@ dependencies = [
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "axum"
|
||||
version = "0.7.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"axum-core 0.4.5",
|
||||
"bytes",
|
||||
"futures-util",
|
||||
"http 1.4.0",
|
||||
"http-body 1.0.1",
|
||||
"http-body-util",
|
||||
"itoa",
|
||||
"matchit 0.7.3",
|
||||
"memchr",
|
||||
"mime",
|
||||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"rustversion",
|
||||
"serde",
|
||||
"sync_wrapper",
|
||||
"tower 0.5.3",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "axum"
|
||||
version = "0.8.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8"
|
||||
dependencies = [
|
||||
"axum-core",
|
||||
"axum-core 0.5.6",
|
||||
"base64 0.22.1",
|
||||
"bytes",
|
||||
"futures-util",
|
||||
@@ -1173,7 +1200,27 @@ dependencies = [
|
||||
"sync_wrapper",
|
||||
"tokio",
|
||||
"tokio-tungstenite",
|
||||
"tower",
|
||||
"tower 0.5.3",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "axum-core"
|
||||
version = "0.4.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"bytes",
|
||||
"futures-util",
|
||||
"http 1.4.0",
|
||||
"http-body 1.0.1",
|
||||
"http-body-util",
|
||||
"mime",
|
||||
"pin-project-lite",
|
||||
"rustversion",
|
||||
"sync_wrapper",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
]
|
||||
@@ -1963,7 +2010,7 @@ version = "0.0.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"app_test_support",
|
||||
"axum",
|
||||
"axum 0.8.8",
|
||||
"base64 0.22.1",
|
||||
"chrono",
|
||||
"clap",
|
||||
@@ -2151,7 +2198,7 @@ name = "codex-app-server-transport"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"axum",
|
||||
"axum 0.8.8",
|
||||
"base64 0.22.1",
|
||||
"chrono",
|
||||
"clap",
|
||||
@@ -2551,7 +2598,7 @@ dependencies = [
|
||||
"libc",
|
||||
"multimap",
|
||||
"pretty_assertions",
|
||||
"prost 0.14.3",
|
||||
"prost 0.13.5",
|
||||
"schemars 0.8.22",
|
||||
"serde",
|
||||
"serde_ignored",
|
||||
@@ -2565,8 +2612,7 @@ dependencies = [
|
||||
"toml 0.9.11+spec-1.1.0",
|
||||
"toml_edit 0.24.0+spec-1.1.0",
|
||||
"tonic",
|
||||
"tonic-prost",
|
||||
"tonic-prost-build",
|
||||
"tonic-build",
|
||||
"tracing",
|
||||
"wildmatch",
|
||||
"winapi-util",
|
||||
@@ -2873,7 +2919,7 @@ version = "0.0.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"arc-swap",
|
||||
"axum",
|
||||
"axum 0.8.8",
|
||||
"base64 0.22.1",
|
||||
"bytes",
|
||||
"clatter",
|
||||
@@ -2894,7 +2940,7 @@ dependencies = [
|
||||
"http 1.4.0",
|
||||
"libc",
|
||||
"pretty_assertions",
|
||||
"prost 0.14.3",
|
||||
"prost 0.13.5",
|
||||
"reqwest 0.12.28",
|
||||
"serde",
|
||||
"serde_json",
|
||||
@@ -3586,6 +3632,7 @@ dependencies = [
|
||||
"thiserror 2.0.18",
|
||||
"tokio",
|
||||
"tokio-tungstenite",
|
||||
"tonic",
|
||||
"tracing",
|
||||
"tracing-opentelemetry",
|
||||
"tracing-subscriber",
|
||||
@@ -3708,7 +3755,7 @@ name = "codex-rmcp-client"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"axum",
|
||||
"axum 0.8.8",
|
||||
"base64 0.22.1",
|
||||
"bytes",
|
||||
"codex-api",
|
||||
@@ -4501,18 +4548,6 @@ dependencies = [
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "const-hex"
|
||||
version = "1.17.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures 0.2.17",
|
||||
"proptest",
|
||||
"serde_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "const-oid"
|
||||
version = "0.9.6"
|
||||
@@ -9016,6 +9051,12 @@ dependencies = [
|
||||
"regex-automata",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "matchit"
|
||||
version = "0.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
|
||||
|
||||
[[package]]
|
||||
name = "matchit"
|
||||
version = "0.8.4"
|
||||
@@ -9761,9 +9802,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "opentelemetry"
|
||||
version = "0.31.0"
|
||||
version = "0.29.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b84bcd6ae87133e903af7ef497404dda70c60d0ea14895fc8a5e6722754fc2a0"
|
||||
checksum = "9e87237e2775f74896f9ad219d26a2081751187eb7c9f5c58dde20a23b95d16c"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
@@ -9775,9 +9816,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "opentelemetry-appender-tracing"
|
||||
version = "0.31.1"
|
||||
version = "0.29.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ef6a1ac5ca3accf562b8c306fa8483c85f4390f768185ab775f242f7fe8fdcc2"
|
||||
checksum = "e716f864eb23007bdd9dc4aec381e188a1cee28eecf22066772b5fd822b9727d"
|
||||
dependencies = [
|
||||
"opentelemetry",
|
||||
"tracing",
|
||||
@@ -9787,29 +9828,31 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "opentelemetry-http"
|
||||
version = "0.31.0"
|
||||
version = "0.29.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d7a6d09a73194e6b66df7c8f1b680f156d916a1a942abf2de06823dd02b7855d"
|
||||
checksum = "46d7ab32b827b5b495bd90fa95a6cb65ccc293555dcc3199ae2937d2d237c8ed"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"bytes",
|
||||
"http 1.4.0",
|
||||
"opentelemetry",
|
||||
"reqwest 0.12.28",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "opentelemetry-otlp"
|
||||
version = "0.31.0"
|
||||
version = "0.29.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7a2366db2dca4d2ad033cad11e6ee42844fd727007af5ad04a1730f4cb8163bf"
|
||||
checksum = "d899720fe06916ccba71c01d04ecd77312734e2de3467fd30d9d580c8ce85656"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"http 1.4.0",
|
||||
"opentelemetry",
|
||||
"opentelemetry-http",
|
||||
"opentelemetry-proto",
|
||||
"opentelemetry_sdk",
|
||||
"prost 0.14.3",
|
||||
"prost 0.13.5",
|
||||
"reqwest 0.12.28",
|
||||
"serde_json",
|
||||
"thiserror 2.0.18",
|
||||
@@ -9820,42 +9863,43 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "opentelemetry-proto"
|
||||
version = "0.31.0"
|
||||
version = "0.29.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a7175df06de5eaee9909d4805a3d07e28bb752c34cab57fa9cff549da596b30f"
|
||||
checksum = "8c40da242381435e18570d5b9d50aca2a4f4f4d8e146231adb4e7768023309b3"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"const-hex",
|
||||
"hex",
|
||||
"opentelemetry",
|
||||
"opentelemetry_sdk",
|
||||
"prost 0.14.3",
|
||||
"prost 0.13.5",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tonic",
|
||||
"tonic-prost",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "opentelemetry-semantic-conventions"
|
||||
version = "0.31.0"
|
||||
version = "0.29.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e62e29dfe041afb8ed2a6c9737ab57db4907285d999ef8ad3a59092a36bdc846"
|
||||
checksum = "84b29a9f89f1a954936d5aa92f19b2feec3c8f3971d3e96206640db7f9706ae3"
|
||||
|
||||
[[package]]
|
||||
name = "opentelemetry_sdk"
|
||||
version = "0.31.0"
|
||||
version = "0.29.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e14ae4f5991976fd48df6d843de219ca6d31b01daaab2dad5af2badeded372bd"
|
||||
checksum = "afdefb21d1d47394abc1ba6c57363ab141be19e27cc70d0e422b7f303e4d290b"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-executor",
|
||||
"futures-util",
|
||||
"glob",
|
||||
"opentelemetry",
|
||||
"percent-encoding",
|
||||
"rand 0.9.3",
|
||||
"serde_json",
|
||||
"thiserror 2.0.18",
|
||||
"tokio",
|
||||
"tokio-stream",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -10476,21 +10520,6 @@ dependencies = [
|
||||
"parking_lot",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proptest"
|
||||
version = "1.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40"
|
||||
dependencies = [
|
||||
"bitflags 2.10.0",
|
||||
"num-traits",
|
||||
"rand 0.9.3",
|
||||
"rand_chacha 0.9.0",
|
||||
"rand_xorshift",
|
||||
"regex-syntax",
|
||||
"unarray",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prost"
|
||||
version = "0.12.6"
|
||||
@@ -10503,12 +10532,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "prost"
|
||||
version = "0.14.3"
|
||||
version = "0.13.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568"
|
||||
checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"prost-derive 0.14.3",
|
||||
"prost-derive 0.13.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -10534,18 +10563,19 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "prost-build"
|
||||
version = "0.14.3"
|
||||
version = "0.13.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7"
|
||||
checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf"
|
||||
dependencies = [
|
||||
"heck 0.5.0",
|
||||
"itertools 0.14.0",
|
||||
"log",
|
||||
"multimap",
|
||||
"petgraph 0.8.3",
|
||||
"once_cell",
|
||||
"petgraph 0.6.5",
|
||||
"prettyplease",
|
||||
"prost 0.14.3",
|
||||
"prost-types 0.14.3",
|
||||
"prost 0.13.5",
|
||||
"prost-types 0.13.5",
|
||||
"regex",
|
||||
"syn 2.0.117",
|
||||
"tempfile",
|
||||
@@ -10566,9 +10596,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "prost-derive"
|
||||
version = "0.14.3"
|
||||
version = "0.13.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b"
|
||||
checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"itertools 0.14.0",
|
||||
@@ -10588,11 +10618,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "prost-types"
|
||||
version = "0.14.3"
|
||||
version = "0.13.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7"
|
||||
checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16"
|
||||
dependencies = [
|
||||
"prost 0.14.3",
|
||||
"prost 0.13.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -11158,15 +11188,6 @@ version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
|
||||
|
||||
[[package]]
|
||||
name = "rand_xorshift"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a"
|
||||
dependencies = [
|
||||
"rand_core 0.9.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ratatui"
|
||||
version = "0.29.0"
|
||||
@@ -11365,7 +11386,7 @@ dependencies = [
|
||||
"tokio-native-tls",
|
||||
"tokio-rustls",
|
||||
"tokio-util",
|
||||
"tower",
|
||||
"tower 0.5.3",
|
||||
"tower-http",
|
||||
"tower-service",
|
||||
"url",
|
||||
@@ -11406,7 +11427,7 @@ dependencies = [
|
||||
"tokio",
|
||||
"tokio-rustls",
|
||||
"tokio-util",
|
||||
"tower",
|
||||
"tower 0.5.3",
|
||||
"tower-http",
|
||||
"tower-service",
|
||||
"url",
|
||||
@@ -11649,6 +11670,15 @@ dependencies = [
|
||||
"security-framework 3.5.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls-pemfile"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"
|
||||
dependencies = [
|
||||
"rustls-pki-types",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls-pki-types"
|
||||
version = "1.14.0"
|
||||
@@ -13706,12 +13736,13 @@ checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607"
|
||||
|
||||
[[package]]
|
||||
name = "tonic"
|
||||
version = "0.14.3"
|
||||
version = "0.12.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a286e33f82f8a1ee2df63f4fa35c0becf4a85a0cb03091a15fd7bf0b402dc94a"
|
||||
checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52"
|
||||
dependencies = [
|
||||
"async-stream",
|
||||
"async-trait",
|
||||
"axum",
|
||||
"axum 0.7.9",
|
||||
"base64 0.22.1",
|
||||
"bytes",
|
||||
"h2",
|
||||
@@ -13723,13 +13754,14 @@ dependencies = [
|
||||
"hyper-util",
|
||||
"percent-encoding",
|
||||
"pin-project",
|
||||
"prost 0.13.5",
|
||||
"rustls-native-certs",
|
||||
"socket2 0.6.3",
|
||||
"sync_wrapper",
|
||||
"rustls-pemfile",
|
||||
"socket2 0.5.10",
|
||||
"tokio",
|
||||
"tokio-rustls",
|
||||
"tokio-stream",
|
||||
"tower",
|
||||
"tower 0.4.13",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
@@ -13737,41 +13769,36 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tonic-build"
|
||||
version = "0.14.3"
|
||||
version = "0.12.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "27aac809edf60b741e2d7db6367214d078856b8a5bff0087e94ff330fb97b6fc"
|
||||
checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11"
|
||||
dependencies = [
|
||||
"prettyplease",
|
||||
"proc-macro2",
|
||||
"prost-build 0.13.5",
|
||||
"prost-types 0.13.5",
|
||||
"quote",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tonic-prost"
|
||||
version = "0.14.3"
|
||||
name = "tower"
|
||||
version = "0.4.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d6c55a2d6a14174563de34409c9f92ff981d006f56da9c6ecd40d9d4a31500b0"
|
||||
checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"prost 0.14.3",
|
||||
"tonic",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tonic-prost-build"
|
||||
version = "0.14.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a4556786613791cfef4ed134aa670b61a85cfcacf71543ef33e8d801abae988f"
|
||||
dependencies = [
|
||||
"prettyplease",
|
||||
"proc-macro2",
|
||||
"prost-build 0.14.3",
|
||||
"prost-types 0.14.3",
|
||||
"quote",
|
||||
"syn 2.0.117",
|
||||
"tempfile",
|
||||
"tonic-build",
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"indexmap 1.9.3",
|
||||
"pin-project",
|
||||
"pin-project-lite",
|
||||
"rand 0.8.6",
|
||||
"slab",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -13782,15 +13809,11 @@ checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"indexmap 2.14.0",
|
||||
"pin-project-lite",
|
||||
"slab",
|
||||
"sync_wrapper",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -13806,7 +13829,7 @@ dependencies = [
|
||||
"http-body 1.0.1",
|
||||
"iri-string",
|
||||
"pin-project-lite",
|
||||
"tower",
|
||||
"tower 0.5.3",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
]
|
||||
@@ -13891,12 +13914,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tracing-opentelemetry"
|
||||
version = "0.32.1"
|
||||
version = "0.30.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ac28f2d093c6c477eaa76b23525478f38de514fa9aeb1285738d4b97a9552fc"
|
||||
checksum = "fd8e764bd6f5813fd8bebc3117875190c5b0415be8f7f8059bffb6ecd979c444"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"once_cell",
|
||||
"opentelemetry",
|
||||
"opentelemetry_sdk",
|
||||
"smallvec",
|
||||
"tracing",
|
||||
"tracing-core",
|
||||
@@ -14110,12 +14135,6 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unarray"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94"
|
||||
|
||||
[[package]]
|
||||
name = "unic-langid"
|
||||
version = "0.9.6"
|
||||
|
||||
+7
-8
@@ -344,11 +344,11 @@ notify = "8.2.0"
|
||||
nucleo = { git = "https://github.com/helix-editor/nucleo.git", rev = "4253de9faabb4e5c6d81d946a5e35a90f87347ee" }
|
||||
once_cell = "1.20.2"
|
||||
openssl-sys = "*"
|
||||
opentelemetry = "0.31.0"
|
||||
opentelemetry-appender-tracing = "0.31.0"
|
||||
opentelemetry-otlp = "0.31.0"
|
||||
opentelemetry-semantic-conventions = "0.31.0"
|
||||
opentelemetry_sdk = "0.31.0"
|
||||
opentelemetry = "0.29.0"
|
||||
opentelemetry-appender-tracing = "0.29.0"
|
||||
opentelemetry-otlp = "0.29.0"
|
||||
opentelemetry-semantic-conventions = "0.29.0"
|
||||
opentelemetry_sdk = "0.29.0"
|
||||
os_info = "3.12.0"
|
||||
owo-colors = "4.3.0"
|
||||
path-absolutize = "3.1.1"
|
||||
@@ -428,11 +428,10 @@ toml = "0.9.5"
|
||||
toml_edit = "0.24.0"
|
||||
tracing = "0.1.44"
|
||||
tracing-appender = "0.2.3"
|
||||
tracing-opentelemetry = "0.32.0"
|
||||
tracing-opentelemetry = "0.30.0"
|
||||
tracing-subscriber = "0.3.22"
|
||||
tracing-test = "0.2.5"
|
||||
tonic = { version = "0.14.3", default-features = false, features = ["channel", "codegen"] }
|
||||
tonic-prost = "0.14.3"
|
||||
tonic = { version = "0.12.3", default-features = false, features = ["channel", "codegen", "prost"] }
|
||||
tree-sitter = "0.25.10"
|
||||
tree-sitter-bash = "0.25"
|
||||
ts-rs = "11"
|
||||
|
||||
@@ -30,7 +30,7 @@ futures = { workspace = true, features = ["alloc", "std"] }
|
||||
gethostname = { workspace = true }
|
||||
indexmap = { workspace = true, features = ["serde"] }
|
||||
multimap = { workspace = true }
|
||||
prost = "0.14.3"
|
||||
prost = "0.13.5"
|
||||
schemars = { workspace = true }
|
||||
serde = { workspace = true, features = ["derive"] }
|
||||
serde_ignored = { workspace = true }
|
||||
@@ -42,7 +42,6 @@ tokio = { workspace = true, features = ["fs"] }
|
||||
toml = { workspace = true, features = ["preserve_order"] }
|
||||
toml_edit = { workspace = true }
|
||||
tonic = { workspace = true }
|
||||
tonic-prost = { workspace = true }
|
||||
tracing = { workspace = true }
|
||||
wildmatch = { workspace = true }
|
||||
|
||||
@@ -67,7 +66,7 @@ tempfile = { workspace = true }
|
||||
tokio = { workspace = true, features = ["full"] }
|
||||
tokio-stream = { workspace = true, features = ["net"] }
|
||||
tonic = { workspace = true, features = ["router", "transport"] }
|
||||
tonic-prost-build = { version = "=0.14.3", default-features = false, features = ["transport"] }
|
||||
tonic-build = { version = "=0.12.3", default-features = false, features = ["prost", "transport"] }
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
@@ -9,7 +9,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let proto_dir = PathBuf::from(proto_dir_arg);
|
||||
let proto_file = proto_dir.join("codex.thread_config.v1.proto");
|
||||
|
||||
tonic_prost_build::configure()
|
||||
tonic_build::configure()
|
||||
.build_client(true)
|
||||
.build_server(true)
|
||||
.out_dir(&proto_dir)
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
// This file is @generated by prost-build.
|
||||
#![allow(clippy::trivially_copy_pass_by_ref)]
|
||||
|
||||
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct LoadThreadConfigRequest {
|
||||
#[prost(string, optional, tag = "1")]
|
||||
pub thread_id: ::core::option::Option<::prost::alloc::string::String>,
|
||||
@@ -37,7 +35,7 @@ pub struct SessionThreadConfig {
|
||||
#[prost(map = "string, bool", tag = "3")]
|
||||
pub features: ::std::collections::HashMap<::prost::alloc::string::String, bool>,
|
||||
}
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
|
||||
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
|
||||
pub struct UserThreadConfig {}
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct ModelProvider {
|
||||
@@ -82,7 +80,7 @@ pub struct StringMap {
|
||||
pub values:
|
||||
::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
|
||||
}
|
||||
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct ModelProviderAuthInfo {
|
||||
#[prost(string, tag = "1")]
|
||||
pub command: ::prost::alloc::string::String,
|
||||
@@ -149,7 +147,7 @@ pub mod thread_config_loader_client {
|
||||
}
|
||||
impl<T> ThreadConfigLoaderClient<T>
|
||||
where
|
||||
T: tonic::client::GrpcService<tonic::body::Body>,
|
||||
T: tonic::client::GrpcService<tonic::body::BoxBody>,
|
||||
T::Error: Into<StdError>,
|
||||
T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
|
||||
<T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
|
||||
@@ -170,12 +168,12 @@ pub mod thread_config_loader_client {
|
||||
F: tonic::service::Interceptor,
|
||||
T::ResponseBody: Default,
|
||||
T: tonic::codegen::Service<
|
||||
http::Request<tonic::body::Body>,
|
||||
http::Request<tonic::body::BoxBody>,
|
||||
Response = http::Response<
|
||||
<T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
|
||||
<T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
|
||||
>,
|
||||
>,
|
||||
<T as tonic::codegen::Service<http::Request<tonic::body::Body>>>::Error:
|
||||
<T as tonic::codegen::Service<http::Request<tonic::body::BoxBody>>>::Error:
|
||||
Into<StdError> + std::marker::Send + std::marker::Sync,
|
||||
{
|
||||
ThreadConfigLoaderClient::new(InterceptedService::new(inner, interceptor))
|
||||
@@ -219,7 +217,7 @@ pub mod thread_config_loader_client {
|
||||
self.inner.ready().await.map_err(|e| {
|
||||
tonic::Status::unknown(format!("Service was not ready: {}", e.into()))
|
||||
})?;
|
||||
let codec = tonic_prost::ProstCodec::default();
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let path = http::uri::PathAndQuery::from_static(
|
||||
"/codex.thread_config.v1.ThreadConfigLoader/Load",
|
||||
);
|
||||
@@ -312,7 +310,7 @@ pub mod thread_config_loader_server {
|
||||
B: Body + std::marker::Send + 'static,
|
||||
B::Error: Into<StdError> + std::marker::Send + 'static,
|
||||
{
|
||||
type Response = http::Response<tonic::body::Body>;
|
||||
type Response = http::Response<tonic::body::BoxBody>;
|
||||
type Error = std::convert::Infallible;
|
||||
type Future = BoxFuture<Self::Response, Self::Error>;
|
||||
fn poll_ready(
|
||||
@@ -349,7 +347,7 @@ pub mod thread_config_loader_server {
|
||||
let inner = self.inner.clone();
|
||||
let fut = async move {
|
||||
let method = LoadSvc(inner);
|
||||
let codec = tonic_prost::ProstCodec::default();
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let mut grpc = tonic::server::Grpc::new(codec)
|
||||
.apply_compression_config(
|
||||
accept_compression_encodings,
|
||||
@@ -365,7 +363,7 @@ pub mod thread_config_loader_server {
|
||||
Box::pin(fut)
|
||||
}
|
||||
_ => Box::pin(async move {
|
||||
let mut response = http::Response::new(tonic::body::Body::default());
|
||||
let mut response = http::Response::new(empty_body());
|
||||
let headers = response.headers_mut();
|
||||
headers.insert(
|
||||
tonic::Status::GRPC_STATUS,
|
||||
|
||||
@@ -149,7 +149,6 @@ predicates = { workspace = true }
|
||||
pretty_assertions = { workspace = true }
|
||||
test-case = "3.3.1"
|
||||
opentelemetry_sdk = { workspace = true, features = [
|
||||
"experimental_metrics_custom_reader",
|
||||
"metrics",
|
||||
] }
|
||||
serial_test = { workspace = true }
|
||||
|
||||
@@ -30,7 +30,7 @@ codex-utils-rustls-provider = { workspace = true }
|
||||
futures = { workspace = true }
|
||||
http = { workspace = true }
|
||||
reqwest = { workspace = true, features = ["json", "rustls-tls", "stream"] }
|
||||
prost = "0.14.3"
|
||||
prost = "0.13.5"
|
||||
serde = { workspace = true, features = ["derive"] }
|
||||
serde_json = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
|
||||
@@ -38,7 +38,6 @@ opentelemetry-otlp = { workspace = true, features = [
|
||||
opentelemetry-semantic-conventions = { workspace = true }
|
||||
opentelemetry_sdk = { workspace = true, features = [
|
||||
"experimental_trace_batch_span_processor_with_async_runtime",
|
||||
"experimental_metrics_custom_reader",
|
||||
"logs",
|
||||
"metrics",
|
||||
"rt-tokio",
|
||||
@@ -54,13 +53,13 @@ strum_macros = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
tokio = { workspace = true }
|
||||
tokio-tungstenite = { workspace = true }
|
||||
tonic = { workspace = true, features = ["tls", "tls-roots", "transport"] }
|
||||
tracing = { workspace = true }
|
||||
tracing-opentelemetry = { workspace = true }
|
||||
tracing-subscriber = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
opentelemetry_sdk = { workspace = true, features = [
|
||||
"experimental_metrics_custom_reader",
|
||||
"testing",
|
||||
] }
|
||||
pretty_assertions = { workspace = true }
|
||||
|
||||
@@ -21,8 +21,6 @@ use opentelemetry_otlp::Protocol;
|
||||
use opentelemetry_otlp::WithExportConfig;
|
||||
use opentelemetry_otlp::WithHttpConfig;
|
||||
use opentelemetry_otlp::WithTonicConfig;
|
||||
use opentelemetry_otlp::tonic_types::metadata::MetadataMap;
|
||||
use opentelemetry_otlp::tonic_types::transport::ClientTlsConfig;
|
||||
use opentelemetry_sdk::Resource;
|
||||
use opentelemetry_sdk::metrics::InstrumentKind;
|
||||
use opentelemetry_sdk::metrics::ManualReader;
|
||||
@@ -39,6 +37,8 @@ use std::sync::Arc;
|
||||
use std::sync::Mutex;
|
||||
use std::sync::Weak;
|
||||
use std::time::Duration;
|
||||
use tonic::metadata::MetadataMap;
|
||||
use tonic::transport::ClientTlsConfig;
|
||||
use tracing::debug;
|
||||
|
||||
const ENV_ATTRIBUTE: &str = "env";
|
||||
@@ -77,7 +77,7 @@ impl MetricReader for SharedManualReader {
|
||||
self.inner.register_pipeline(pipeline);
|
||||
}
|
||||
|
||||
fn collect(&self, rm: &mut ResourceMetrics) -> opentelemetry_sdk::error::OTelSdkResult {
|
||||
fn collect(&self, rm: &mut ResourceMetrics) -> opentelemetry_sdk::metrics::MetricResult<()> {
|
||||
self.inner.collect(rm)
|
||||
}
|
||||
|
||||
@@ -85,8 +85,8 @@ impl MetricReader for SharedManualReader {
|
||||
self.inner.force_flush()
|
||||
}
|
||||
|
||||
fn shutdown_with_timeout(&self, timeout: Duration) -> opentelemetry_sdk::error::OTelSdkResult {
|
||||
self.inner.shutdown_with_timeout(timeout)
|
||||
fn shutdown(&self) -> opentelemetry_sdk::error::OTelSdkResult {
|
||||
self.inner.shutdown()
|
||||
}
|
||||
|
||||
fn temporality(&self, kind: InstrumentKind) -> Temporality {
|
||||
@@ -402,7 +402,10 @@ impl MetricsClient {
|
||||
let Some(reader) = &self.0.runtime_reader else {
|
||||
return Err(MetricsError::RuntimeSnapshotUnavailable);
|
||||
};
|
||||
let mut snapshot = ResourceMetrics::default();
|
||||
let mut snapshot = ResourceMetrics {
|
||||
resource: Resource::builder_empty().build(),
|
||||
scope_metrics: Vec::new(),
|
||||
};
|
||||
reader
|
||||
.collect(&mut snapshot)
|
||||
.map_err(|source| MetricsError::RuntimeSnapshotCollect { source })?;
|
||||
|
||||
@@ -41,6 +41,6 @@ pub enum MetricsError {
|
||||
#[error("failed to collect runtime metrics snapshot from metrics reader")]
|
||||
RuntimeSnapshotCollect {
|
||||
#[source]
|
||||
source: opentelemetry_sdk::error::OTelSdkError,
|
||||
source: opentelemetry_sdk::metrics::MetricError,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -16,10 +16,10 @@ use crate::metrics::names::WEBSOCKET_EVENT_COUNT_METRIC;
|
||||
use crate::metrics::names::WEBSOCKET_EVENT_DURATION_METRIC;
|
||||
use crate::metrics::names::WEBSOCKET_REQUEST_COUNT_METRIC;
|
||||
use crate::metrics::names::WEBSOCKET_REQUEST_DURATION_METRIC;
|
||||
use opentelemetry_sdk::metrics::data::AggregatedMetrics;
|
||||
use opentelemetry_sdk::metrics::data::Histogram;
|
||||
use opentelemetry_sdk::metrics::data::Metric;
|
||||
use opentelemetry_sdk::metrics::data::MetricData;
|
||||
use opentelemetry_sdk::metrics::data::ResourceMetrics;
|
||||
use opentelemetry_sdk::metrics::data::Sum;
|
||||
|
||||
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
|
||||
pub struct RuntimeMetricTotals {
|
||||
@@ -171,40 +171,46 @@ impl RuntimeMetricsSummary {
|
||||
|
||||
fn sum_counter(snapshot: &ResourceMetrics, name: &str) -> u64 {
|
||||
snapshot
|
||||
.scope_metrics()
|
||||
.flat_map(opentelemetry_sdk::metrics::data::ScopeMetrics::metrics)
|
||||
.filter(|metric| metric.name() == name)
|
||||
.scope_metrics
|
||||
.iter()
|
||||
.flat_map(|scope_metrics| scope_metrics.metrics.iter())
|
||||
.filter(|metric| metric.name == name)
|
||||
.map(sum_counter_metric)
|
||||
.sum()
|
||||
}
|
||||
|
||||
fn sum_counter_metric(metric: &Metric) -> u64 {
|
||||
match metric.data() {
|
||||
AggregatedMetrics::U64(MetricData::Sum(sum)) => sum
|
||||
.data_points()
|
||||
.map(opentelemetry_sdk::metrics::data::SumDataPoint::value)
|
||||
.sum(),
|
||||
_ => 0,
|
||||
}
|
||||
metric
|
||||
.data
|
||||
.as_any()
|
||||
.downcast_ref::<Sum<u64>>()
|
||||
.map(|sum| sum.data_points.iter().map(|point| point.value).sum())
|
||||
.unwrap_or_default()
|
||||
}
|
||||
|
||||
fn sum_histogram_ms(snapshot: &ResourceMetrics, name: &str) -> u64 {
|
||||
snapshot
|
||||
.scope_metrics()
|
||||
.flat_map(opentelemetry_sdk::metrics::data::ScopeMetrics::metrics)
|
||||
.filter(|metric| metric.name() == name)
|
||||
.scope_metrics
|
||||
.iter()
|
||||
.flat_map(|scope_metrics| scope_metrics.metrics.iter())
|
||||
.filter(|metric| metric.name == name)
|
||||
.map(sum_histogram_metric_ms)
|
||||
.sum()
|
||||
}
|
||||
|
||||
fn sum_histogram_metric_ms(metric: &Metric) -> u64 {
|
||||
match metric.data() {
|
||||
AggregatedMetrics::F64(MetricData::Histogram(histogram)) => histogram
|
||||
.data_points()
|
||||
.map(|point| f64_to_u64(point.sum()))
|
||||
.sum(),
|
||||
_ => 0,
|
||||
}
|
||||
metric
|
||||
.data
|
||||
.as_any()
|
||||
.downcast_ref::<Histogram<f64>>()
|
||||
.map(|histogram| {
|
||||
histogram
|
||||
.data_points
|
||||
.iter()
|
||||
.map(|point| f64_to_u64(point.sum))
|
||||
.sum()
|
||||
})
|
||||
.unwrap_or_default()
|
||||
}
|
||||
|
||||
fn f64_to_u64(value: f64) -> u64 {
|
||||
|
||||
@@ -3,9 +3,6 @@ use codex_utils_absolute_path::AbsolutePathBuf;
|
||||
use http::Uri;
|
||||
use opentelemetry_otlp::OTEL_EXPORTER_OTLP_TIMEOUT;
|
||||
use opentelemetry_otlp::OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT;
|
||||
use opentelemetry_otlp::tonic_types::transport::Certificate as TonicCertificate;
|
||||
use opentelemetry_otlp::tonic_types::transport::ClientTlsConfig;
|
||||
use opentelemetry_otlp::tonic_types::transport::Identity as TonicIdentity;
|
||||
use reqwest::Certificate as ReqwestCertificate;
|
||||
use reqwest::Identity as ReqwestIdentity;
|
||||
use reqwest::header::HeaderMap;
|
||||
@@ -18,6 +15,9 @@ use std::io;
|
||||
use std::io::ErrorKind;
|
||||
use std::path::PathBuf;
|
||||
use std::time::Duration;
|
||||
use tonic::transport::Certificate as TonicCertificate;
|
||||
use tonic::transport::ClientTlsConfig;
|
||||
use tonic::transport::Identity as TonicIdentity;
|
||||
|
||||
pub(crate) fn build_header_map(headers: &std::collections::HashMap<String, String>) -> HeaderMap {
|
||||
let mut header_map = HeaderMap::new();
|
||||
|
||||
@@ -21,8 +21,6 @@ use opentelemetry_otlp::SpanExporter;
|
||||
use opentelemetry_otlp::WithExportConfig;
|
||||
use opentelemetry_otlp::WithHttpConfig;
|
||||
use opentelemetry_otlp::WithTonicConfig;
|
||||
use opentelemetry_otlp::tonic_types::metadata::MetadataMap;
|
||||
use opentelemetry_otlp::tonic_types::transport::ClientTlsConfig;
|
||||
use opentelemetry_sdk::Resource;
|
||||
use opentelemetry_sdk::error::OTelSdkResult;
|
||||
use opentelemetry_sdk::logs::SdkLoggerProvider;
|
||||
@@ -39,7 +37,8 @@ use opentelemetry_sdk::trace::span_processor_with_async_runtime::BatchSpanProces
|
||||
use opentelemetry_semantic_conventions as semconv;
|
||||
use std::collections::BTreeMap;
|
||||
use std::error::Error;
|
||||
use std::time::Duration;
|
||||
use tonic::metadata::MetadataMap;
|
||||
use tonic::transport::ClientTlsConfig;
|
||||
use tracing::debug;
|
||||
use tracing_subscriber::Layer;
|
||||
use tracing_subscriber::registry::LookupSpan;
|
||||
@@ -286,7 +285,7 @@ impl SpanProcessor for SpanAttributesProcessor {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn shutdown_with_timeout(&self, _timeout: Duration) -> OTelSdkResult {
|
||||
fn shutdown(&self) -> OTelSdkResult {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,10 +3,11 @@ use codex_otel::MetricsConfig;
|
||||
use codex_otel::Result;
|
||||
use opentelemetry::KeyValue;
|
||||
use opentelemetry_sdk::metrics::InMemoryMetricExporter;
|
||||
use opentelemetry_sdk::metrics::data::AggregatedMetrics;
|
||||
use opentelemetry_sdk::metrics::data::Gauge;
|
||||
use opentelemetry_sdk::metrics::data::Histogram;
|
||||
use opentelemetry_sdk::metrics::data::Metric;
|
||||
use opentelemetry_sdk::metrics::data::MetricData;
|
||||
use opentelemetry_sdk::metrics::data::ResourceMetrics;
|
||||
use opentelemetry_sdk::metrics::data::Sum;
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
pub(crate) fn build_metrics_with_defaults(
|
||||
@@ -39,9 +40,9 @@ pub(crate) fn find_metric<'a>(
|
||||
resource_metrics: &'a ResourceMetrics,
|
||||
name: &str,
|
||||
) -> Option<&'a Metric> {
|
||||
for scope_metrics in resource_metrics.scope_metrics() {
|
||||
for metric in scope_metrics.metrics() {
|
||||
if metric.name() == name {
|
||||
for scope_metrics in &resource_metrics.scope_metrics {
|
||||
for metric in &scope_metrics.metrics {
|
||||
if metric.name == name {
|
||||
return Some(metric);
|
||||
}
|
||||
}
|
||||
@@ -57,23 +58,42 @@ pub(crate) fn attributes_to_map<'a>(
|
||||
.collect()
|
||||
}
|
||||
|
||||
pub(crate) fn sum_u64(metric: &Metric) -> &Sum<u64> {
|
||||
metric
|
||||
.data
|
||||
.as_any()
|
||||
.downcast_ref()
|
||||
.expect("metric should contain a u64 sum")
|
||||
}
|
||||
|
||||
pub(crate) fn histogram_f64(metric: &Metric) -> &Histogram<f64> {
|
||||
metric
|
||||
.data
|
||||
.as_any()
|
||||
.downcast_ref()
|
||||
.expect("metric should contain an f64 histogram")
|
||||
}
|
||||
|
||||
pub(crate) fn gauge_i64(metric: &Metric) -> &Gauge<i64> {
|
||||
metric
|
||||
.data
|
||||
.as_any()
|
||||
.downcast_ref()
|
||||
.expect("metric should contain an i64 gauge")
|
||||
}
|
||||
|
||||
pub(crate) fn histogram_data(
|
||||
resource_metrics: &ResourceMetrics,
|
||||
name: &str,
|
||||
) -> (Vec<f64>, Vec<u64>, f64, u64) {
|
||||
let metric = find_metric(resource_metrics, name).expect("metric should exist");
|
||||
match metric.data() {
|
||||
AggregatedMetrics::F64(data) => match data {
|
||||
MetricData::Histogram(histogram) => {
|
||||
let points: Vec<_> = histogram.data_points().collect();
|
||||
assert_eq!(points.len(), 1);
|
||||
let point = points[0];
|
||||
let bounds = point.bounds().collect();
|
||||
let bucket_counts = point.bucket_counts().collect();
|
||||
(bounds, bucket_counts, point.sum(), point.count())
|
||||
}
|
||||
_ => panic!("unexpected histogram aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected metric data type"),
|
||||
}
|
||||
let histogram = histogram_f64(metric);
|
||||
assert_eq!(histogram.data_points.len(), 1);
|
||||
let point = &histogram.data_points[0];
|
||||
(
|
||||
point.bounds.clone(),
|
||||
point.bucket_counts.clone(),
|
||||
point.sum,
|
||||
point.count,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ use crate::harness::attributes_to_map;
|
||||
use crate::harness::build_metrics_with_defaults;
|
||||
use crate::harness::find_metric;
|
||||
use crate::harness::latest_metrics;
|
||||
use crate::harness::sum_u64;
|
||||
use codex_otel::PLUGIN_INSTALL_ELICITATION_SENT_METRIC;
|
||||
use codex_otel::PLUGIN_INSTALL_SUGGESTION_METRIC;
|
||||
use codex_otel::Result;
|
||||
@@ -9,8 +10,6 @@ use codex_otel::SessionTelemetry;
|
||||
use codex_otel::TelemetryAuthMode;
|
||||
use codex_protocol::ThreadId;
|
||||
use codex_protocol::protocol::SessionSource;
|
||||
use opentelemetry_sdk::metrics::data::AggregatedMetrics;
|
||||
use opentelemetry_sdk::metrics::data::MetricData;
|
||||
use pretty_assertions::assert_eq;
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
@@ -42,17 +41,9 @@ fn manager_attaches_metadata_tags_to_metrics() -> Result<()> {
|
||||
let resource_metrics = latest_metrics(&exporter);
|
||||
let metric =
|
||||
find_metric(&resource_metrics, "codex.session_started").expect("counter metric missing");
|
||||
let attrs = match metric.data() {
|
||||
AggregatedMetrics::U64(data) => match data {
|
||||
MetricData::Sum(sum) => {
|
||||
let points: Vec<_> = sum.data_points().collect();
|
||||
assert_eq!(points.len(), 1);
|
||||
attributes_to_map(points[0].attributes())
|
||||
}
|
||||
_ => panic!("unexpected counter aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected counter data type"),
|
||||
};
|
||||
let sum = sum_u64(metric);
|
||||
assert_eq!(sum.data_points.len(), 1);
|
||||
let attrs = attributes_to_map(sum.data_points[0].attributes.iter());
|
||||
|
||||
let expected = BTreeMap::from([
|
||||
(
|
||||
@@ -102,17 +93,9 @@ fn manager_allows_disabling_metadata_tags() -> Result<()> {
|
||||
let resource_metrics = latest_metrics(&exporter);
|
||||
let metric =
|
||||
find_metric(&resource_metrics, "codex.session_started").expect("counter metric missing");
|
||||
let attrs = match metric.data() {
|
||||
AggregatedMetrics::U64(data) => match data {
|
||||
MetricData::Sum(sum) => {
|
||||
let points: Vec<_> = sum.data_points().collect();
|
||||
assert_eq!(points.len(), 1);
|
||||
attributes_to_map(points[0].attributes())
|
||||
}
|
||||
_ => panic!("unexpected counter aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected counter data type"),
|
||||
};
|
||||
let sum = sum_u64(metric);
|
||||
assert_eq!(sum.data_points.len(), 1);
|
||||
let attrs = attributes_to_map(sum.data_points[0].attributes.iter());
|
||||
|
||||
let expected = BTreeMap::from([("source".to_string(), "tui".to_string())]);
|
||||
assert_eq!(attrs, expected);
|
||||
@@ -144,17 +127,9 @@ fn manager_attaches_optional_service_name_tag() -> Result<()> {
|
||||
let resource_metrics = latest_metrics(&exporter);
|
||||
let metric =
|
||||
find_metric(&resource_metrics, "codex.session_started").expect("counter metric missing");
|
||||
let attrs = match metric.data() {
|
||||
AggregatedMetrics::U64(data) => match data {
|
||||
MetricData::Sum(sum) => {
|
||||
let points: Vec<_> = sum.data_points().collect();
|
||||
assert_eq!(points.len(), 1);
|
||||
attributes_to_map(points[0].attributes())
|
||||
}
|
||||
_ => panic!("unexpected counter aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected counter data type"),
|
||||
};
|
||||
let sum = sum_u64(metric);
|
||||
assert_eq!(sum.data_points.len(), 1);
|
||||
let attrs = attributes_to_map(sum.data_points[0].attributes.iter());
|
||||
|
||||
assert_eq!(
|
||||
attrs.get("service_name"),
|
||||
@@ -194,17 +169,9 @@ fn manager_records_plugin_install_suggestion_metric() -> Result<()> {
|
||||
let resource_metrics = latest_metrics(&exporter);
|
||||
let metric = find_metric(&resource_metrics, PLUGIN_INSTALL_SUGGESTION_METRIC)
|
||||
.expect("plugin install suggestion metric missing");
|
||||
let attrs = match metric.data() {
|
||||
AggregatedMetrics::U64(data) => match data {
|
||||
MetricData::Sum(sum) => {
|
||||
let points: Vec<_> = sum.data_points().collect();
|
||||
assert_eq!(points.len(), 1);
|
||||
attributes_to_map(points[0].attributes())
|
||||
}
|
||||
_ => panic!("unexpected counter aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected counter data type"),
|
||||
};
|
||||
let sum = sum_u64(metric);
|
||||
assert_eq!(sum.data_points.len(), 1);
|
||||
let attrs = attributes_to_map(sum.data_points[0].attributes.iter());
|
||||
|
||||
assert_eq!(
|
||||
attrs,
|
||||
@@ -241,17 +208,9 @@ fn manager_records_plugin_install_elicitation_sent_metric() -> Result<()> {
|
||||
let resource_metrics = latest_metrics(&exporter);
|
||||
let metric = find_metric(&resource_metrics, PLUGIN_INSTALL_ELICITATION_SENT_METRIC)
|
||||
.expect("plugin install elicitation sent metric missing");
|
||||
let attrs = match metric.data() {
|
||||
AggregatedMetrics::U64(data) => match data {
|
||||
MetricData::Sum(sum) => {
|
||||
let points: Vec<_> = sum.data_points().collect();
|
||||
assert_eq!(points.len(), 1);
|
||||
attributes_to_map(points[0].attributes())
|
||||
}
|
||||
_ => panic!("unexpected counter aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected counter data type"),
|
||||
};
|
||||
let sum = sum_u64(metric);
|
||||
assert_eq!(sum.data_points.len(), 1);
|
||||
let attrs = attributes_to_map(sum.data_points[0].attributes.iter());
|
||||
|
||||
assert_eq!(
|
||||
attrs,
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
use crate::harness::attributes_to_map;
|
||||
use crate::harness::build_metrics_with_defaults;
|
||||
use crate::harness::find_metric;
|
||||
use crate::harness::gauge_i64;
|
||||
use crate::harness::histogram_data;
|
||||
use crate::harness::histogram_f64;
|
||||
use crate::harness::latest_metrics;
|
||||
use crate::harness::sum_u64;
|
||||
use codex_otel::Result;
|
||||
use pretty_assertions::assert_eq;
|
||||
use std::collections::BTreeMap;
|
||||
@@ -35,19 +38,11 @@ fn send_builds_payload_with_tags_and_histograms() -> Result<()> {
|
||||
let resource_metrics = latest_metrics(&exporter);
|
||||
|
||||
let counter = find_metric(&resource_metrics, "codex.turns").expect("counter metric missing");
|
||||
assert_eq!(counter.description(), "Total number of Codex turns.");
|
||||
let counter_attributes = match counter.data() {
|
||||
opentelemetry_sdk::metrics::data::AggregatedMetrics::U64(data) => match data {
|
||||
opentelemetry_sdk::metrics::data::MetricData::Sum(sum) => {
|
||||
let points: Vec<_> = sum.data_points().collect();
|
||||
assert_eq!(points.len(), 1);
|
||||
assert_eq!(points[0].value(), 1);
|
||||
attributes_to_map(points[0].attributes())
|
||||
}
|
||||
_ => panic!("unexpected counter aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected counter data type"),
|
||||
};
|
||||
assert_eq!(counter.description.as_ref(), "Total number of Codex turns.");
|
||||
let counter_sum = sum_u64(counter);
|
||||
assert_eq!(counter_sum.data_points.len(), 1);
|
||||
assert_eq!(counter_sum.data_points[0].value, 1);
|
||||
let counter_attributes = attributes_to_map(counter_sum.data_points[0].attributes.iter());
|
||||
|
||||
let expected_counter_attributes = BTreeMap::from([
|
||||
("service".to_string(), "codex-cli".to_string()),
|
||||
@@ -63,18 +58,17 @@ fn send_builds_payload_with_tags_and_histograms() -> Result<()> {
|
||||
assert_eq!(sum, 25.0);
|
||||
assert_eq!(count, 1);
|
||||
|
||||
let histogram_attrs = attributes_to_map(
|
||||
let histogram = histogram_f64(
|
||||
find_metric(&resource_metrics, "codex.tool_latency")
|
||||
.and_then(|metric| match metric.data() {
|
||||
opentelemetry_sdk::metrics::data::AggregatedMetrics::F64(
|
||||
opentelemetry_sdk::metrics::data::MetricData::Histogram(histogram),
|
||||
) => histogram
|
||||
.data_points()
|
||||
.next()
|
||||
.map(opentelemetry_sdk::metrics::data::HistogramDataPoint::attributes),
|
||||
_ => None,
|
||||
})
|
||||
.expect("codex.tool_latency histogram attributes should exist"),
|
||||
.expect("codex.tool_latency histogram should exist"),
|
||||
);
|
||||
let histogram_attrs = attributes_to_map(
|
||||
histogram
|
||||
.data_points
|
||||
.first()
|
||||
.expect("codex.tool_latency histogram attributes should exist")
|
||||
.attributes
|
||||
.iter(),
|
||||
);
|
||||
let expected_histogram_attributes = BTreeMap::from([
|
||||
("service".to_string(), "codex-cli".to_string()),
|
||||
@@ -84,19 +78,14 @@ fn send_builds_payload_with_tags_and_histograms() -> Result<()> {
|
||||
assert_eq!(histogram_attrs, expected_histogram_attributes);
|
||||
|
||||
let gauge = find_metric(&resource_metrics, "codex.active").expect("gauge metric missing");
|
||||
assert_eq!(gauge.description(), "Number of active Codex operations.");
|
||||
let gauge_point = match gauge.data() {
|
||||
opentelemetry_sdk::metrics::data::AggregatedMetrics::I64(data) => match data {
|
||||
opentelemetry_sdk::metrics::data::MetricData::Gauge(gauge) => {
|
||||
gauge.data_points().next().expect("gauge point")
|
||||
}
|
||||
_ => panic!("unexpected gauge aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected gauge metric data type"),
|
||||
};
|
||||
assert_eq!(gauge_point.value(), 2);
|
||||
assert_eq!(
|
||||
attributes_to_map(gauge_point.attributes()),
|
||||
gauge.description.as_ref(),
|
||||
"Number of active Codex operations."
|
||||
);
|
||||
let gauge_point = gauge_i64(gauge).data_points.first().expect("gauge point");
|
||||
assert_eq!(gauge_point.value, 2);
|
||||
assert_eq!(
|
||||
attributes_to_map(gauge_point.attributes.iter()),
|
||||
BTreeMap::from([
|
||||
("component".to_string(), "test".to_string()),
|
||||
("env".to_string(), "prod".to_string()),
|
||||
@@ -131,19 +120,11 @@ fn send_merges_default_tags_per_line() -> Result<()> {
|
||||
let resource_metrics = latest_metrics(&exporter);
|
||||
let alpha_metric =
|
||||
find_metric(&resource_metrics, "codex.alpha").expect("codex.alpha metric missing");
|
||||
let alpha_point = match alpha_metric.data() {
|
||||
opentelemetry_sdk::metrics::data::AggregatedMetrics::U64(data) => match data {
|
||||
opentelemetry_sdk::metrics::data::MetricData::Sum(sum) => {
|
||||
let points: Vec<_> = sum.data_points().collect();
|
||||
assert_eq!(points.len(), 1);
|
||||
points[0]
|
||||
}
|
||||
_ => panic!("unexpected counter aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected counter data type"),
|
||||
};
|
||||
assert_eq!(alpha_point.value(), 1);
|
||||
let alpha_attrs = attributes_to_map(alpha_point.attributes());
|
||||
let alpha_sum = sum_u64(alpha_metric);
|
||||
assert_eq!(alpha_sum.data_points.len(), 1);
|
||||
let alpha_point = &alpha_sum.data_points[0];
|
||||
assert_eq!(alpha_point.value, 1);
|
||||
let alpha_attrs = attributes_to_map(alpha_point.attributes.iter());
|
||||
let expected_alpha_attrs = BTreeMap::from([
|
||||
("component".to_string(), "alpha".to_string()),
|
||||
("env".to_string(), "dev".to_string()),
|
||||
@@ -154,19 +135,11 @@ fn send_merges_default_tags_per_line() -> Result<()> {
|
||||
|
||||
let beta_metric =
|
||||
find_metric(&resource_metrics, "codex.beta").expect("codex.beta metric missing");
|
||||
let beta_point = match beta_metric.data() {
|
||||
opentelemetry_sdk::metrics::data::AggregatedMetrics::U64(data) => match data {
|
||||
opentelemetry_sdk::metrics::data::MetricData::Sum(sum) => {
|
||||
let points: Vec<_> = sum.data_points().collect();
|
||||
assert_eq!(points.len(), 1);
|
||||
points[0]
|
||||
}
|
||||
_ => panic!("unexpected counter aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected counter data type"),
|
||||
};
|
||||
assert_eq!(beta_point.value(), 2);
|
||||
let beta_attrs = attributes_to_map(beta_point.attributes());
|
||||
let beta_sum = sum_u64(beta_metric);
|
||||
assert_eq!(beta_sum.data_points.len(), 1);
|
||||
let beta_point = &beta_sum.data_points[0];
|
||||
assert_eq!(beta_point.value, 2);
|
||||
let beta_attrs = attributes_to_map(beta_point.attributes.iter());
|
||||
let expected_beta_attrs = BTreeMap::from([
|
||||
("component".to_string(), "beta".to_string()),
|
||||
("env".to_string(), "prod".to_string()),
|
||||
@@ -188,19 +161,11 @@ fn client_sends_enqueued_metric() -> Result<()> {
|
||||
|
||||
let resource_metrics = latest_metrics(&exporter);
|
||||
let counter = find_metric(&resource_metrics, "codex.turns").expect("counter metric missing");
|
||||
let points = match counter.data() {
|
||||
opentelemetry_sdk::metrics::data::AggregatedMetrics::U64(data) => match data {
|
||||
opentelemetry_sdk::metrics::data::MetricData::Sum(sum) => {
|
||||
sum.data_points().collect::<Vec<_>>()
|
||||
}
|
||||
_ => panic!("unexpected counter aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected counter data type"),
|
||||
};
|
||||
let points = &sum_u64(counter).data_points;
|
||||
assert_eq!(points.len(), 1);
|
||||
let point = points[0];
|
||||
assert_eq!(point.value(), 1);
|
||||
let attrs = attributes_to_map(point.attributes());
|
||||
let point = &points[0];
|
||||
assert_eq!(point.value, 1);
|
||||
let attrs = attributes_to_map(point.attributes.iter());
|
||||
assert_eq!(attrs.get("model").map(String::as_str), Some("gpt-5.1"));
|
||||
|
||||
Ok(())
|
||||
@@ -216,15 +181,7 @@ fn shutdown_flushes_in_memory_exporter() -> Result<()> {
|
||||
|
||||
let resource_metrics = latest_metrics(&exporter);
|
||||
let counter = find_metric(&resource_metrics, "codex.turns").expect("counter metric missing");
|
||||
let points = match counter.data() {
|
||||
opentelemetry_sdk::metrics::data::AggregatedMetrics::U64(data) => match data {
|
||||
opentelemetry_sdk::metrics::data::MetricData::Sum(sum) => {
|
||||
sum.data_points().collect::<Vec<_>>()
|
||||
}
|
||||
_ => panic!("unexpected counter aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected counter data type"),
|
||||
};
|
||||
let points = &sum_u64(counter).data_points;
|
||||
assert_eq!(points.len(), 1);
|
||||
|
||||
Ok(())
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
use crate::harness::attributes_to_map;
|
||||
use crate::harness::find_metric;
|
||||
use crate::harness::sum_u64;
|
||||
use codex_otel::MetricsClient;
|
||||
use codex_otel::MetricsConfig;
|
||||
use codex_otel::Result;
|
||||
@@ -8,8 +9,6 @@ use codex_otel::TelemetryAuthMode;
|
||||
use codex_protocol::ThreadId;
|
||||
use codex_protocol::protocol::SessionSource;
|
||||
use opentelemetry_sdk::metrics::InMemoryMetricExporter;
|
||||
use opentelemetry_sdk::metrics::data::AggregatedMetrics;
|
||||
use opentelemetry_sdk::metrics::data::MetricData;
|
||||
use pretty_assertions::assert_eq;
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
@@ -35,17 +34,9 @@ fn snapshot_collects_metrics_without_shutdown() -> Result<()> {
|
||||
let snapshot = metrics.snapshot()?;
|
||||
|
||||
let metric = find_metric(&snapshot, "codex.tool.call").expect("counter metric missing");
|
||||
let attrs = match metric.data() {
|
||||
AggregatedMetrics::U64(data) => match data {
|
||||
MetricData::Sum(sum) => {
|
||||
let points: Vec<_> = sum.data_points().collect();
|
||||
assert_eq!(points.len(), 1);
|
||||
attributes_to_map(points[0].attributes())
|
||||
}
|
||||
_ => panic!("unexpected counter aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected counter data type"),
|
||||
};
|
||||
let sum = sum_u64(metric);
|
||||
assert_eq!(sum.data_points.len(), 1);
|
||||
let attrs = attributes_to_map(sum.data_points[0].attributes.iter());
|
||||
|
||||
let expected = BTreeMap::from([
|
||||
("service".to_string(), "codex-cli".to_string()),
|
||||
@@ -91,17 +82,9 @@ fn manager_snapshot_metrics_collects_without_shutdown() -> Result<()> {
|
||||
|
||||
let snapshot = manager.snapshot_metrics()?;
|
||||
let metric = find_metric(&snapshot, "codex.tool.call").expect("counter metric missing");
|
||||
let attrs = match metric.data() {
|
||||
AggregatedMetrics::U64(data) => match data {
|
||||
MetricData::Sum(sum) => {
|
||||
let points: Vec<_> = sum.data_points().collect();
|
||||
assert_eq!(points.len(), 1);
|
||||
attributes_to_map(points[0].attributes())
|
||||
}
|
||||
_ => panic!("unexpected counter aggregation"),
|
||||
},
|
||||
_ => panic!("unexpected counter data type"),
|
||||
};
|
||||
let sum = sum_u64(metric);
|
||||
assert_eq!(sum.data_points.len(), 1);
|
||||
let attrs = attributes_to_map(sum.data_points[0].attributes.iter());
|
||||
|
||||
let expected = BTreeMap::from([
|
||||
(
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
use crate::harness::attributes_to_map;
|
||||
use crate::harness::build_metrics_with_defaults;
|
||||
use crate::harness::histogram_data;
|
||||
use crate::harness::histogram_f64;
|
||||
use crate::harness::latest_metrics;
|
||||
use codex_otel::Result;
|
||||
use pretty_assertions::assert_eq;
|
||||
@@ -27,8 +28,8 @@ fn record_duration_records_histogram() -> Result<()> {
|
||||
assert_eq!(count, 1);
|
||||
let metric = crate::harness::find_metric(&resource_metrics, "codex.request_latency")
|
||||
.expect("codex.request_latency metric should exist");
|
||||
assert_eq!(metric.unit(), "ms");
|
||||
assert_eq!(metric.description(), "Duration in milliseconds.");
|
||||
assert_eq!(metric.unit.as_ref(), "ms");
|
||||
assert_eq!(metric.description.as_ref(), "Duration in milliseconds.");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -68,9 +69,9 @@ fn record_duration_seconds_uses_fractional_seconds_and_scaled_buckets() -> Resul
|
||||
assert_eq!(count, 3);
|
||||
let metric = crate::harness::find_metric(&resource_metrics, "codex.request_duration_seconds")
|
||||
.expect("codex.request_duration_seconds metric should exist");
|
||||
assert_eq!(metric.unit(), "s");
|
||||
assert_eq!(metric.unit.as_ref(), "s");
|
||||
assert_eq!(
|
||||
metric.description(),
|
||||
metric.description.as_ref(),
|
||||
"Duration of Codex requests in seconds."
|
||||
);
|
||||
|
||||
@@ -97,20 +98,19 @@ fn timer_result_records_success() -> Result<()> {
|
||||
assert_eq!(bucket_counts.iter().sum::<u64>(), 1);
|
||||
let metric = crate::harness::find_metric(&resource_metrics, "codex.request_latency")
|
||||
.expect("codex.request_latency metric should exist");
|
||||
assert_eq!(metric.unit(), "ms");
|
||||
assert_eq!(metric.description(), "Duration in milliseconds.");
|
||||
let attrs = attributes_to_map(
|
||||
assert_eq!(metric.unit.as_ref(), "ms");
|
||||
assert_eq!(metric.description.as_ref(), "Duration in milliseconds.");
|
||||
let histogram = histogram_f64(
|
||||
crate::harness::find_metric(&resource_metrics, "codex.request_latency")
|
||||
.and_then(|metric| match metric.data() {
|
||||
opentelemetry_sdk::metrics::data::AggregatedMetrics::F64(
|
||||
opentelemetry_sdk::metrics::data::MetricData::Histogram(histogram),
|
||||
) => histogram
|
||||
.data_points()
|
||||
.next()
|
||||
.map(opentelemetry_sdk::metrics::data::HistogramDataPoint::attributes),
|
||||
_ => None,
|
||||
})
|
||||
.expect("codex.request_latency attributes should exist"),
|
||||
.expect("codex.request_latency metric should exist"),
|
||||
);
|
||||
let attrs = attributes_to_map(
|
||||
histogram
|
||||
.data_points
|
||||
.first()
|
||||
.expect("codex.request_latency attributes should exist")
|
||||
.attributes
|
||||
.iter(),
|
||||
);
|
||||
assert_eq!(attrs.get("route").map(String::as_str), Some("chat"));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user