Skip to content

Commit c19e12b

Browse files
committed
feat: drop wire_api from clients
1 parent 847d6a8 commit c19e12b

File tree

10 files changed

+19
-85
lines changed

10 files changed

+19
-85
lines changed

codex-rs/codex-api/src/endpoint/compact.rs

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use crate::auth::add_auth_headers;
33
use crate::common::CompactionInput;
44
use crate::error::ApiError;
55
use crate::provider::Provider;
6-
use crate::provider::WireApi;
76
use crate::telemetry::run_with_request_telemetry;
87
use codex_client::HttpTransport;
98
use codex_client::RequestTelemetry;
@@ -37,9 +36,7 @@ impl<T: HttpTransport, A: AuthProvider> CompactClient<T, A> {
3736
}
3837

3938
fn path(&self) -> &'static str {
40-
match self.provider.wire {
41-
WireApi::Compact | WireApi::Responses => "responses/compact",
42-
}
39+
"responses/compact"
4340
}
4441

4542
pub async fn compact(
@@ -118,12 +115,11 @@ mod tests {
118115
}
119116
}
120117

121-
fn provider(wire: WireApi) -> Provider {
118+
fn provider() -> Provider {
122119
Provider {
123120
name: "test".to_string(),
124121
base_url: "https://example.com/v1".to_string(),
125122
query_params: None,
126-
wire,
127123
headers: HeaderMap::new(),
128124
retry: RetryConfig {
129125
max_attempts: 1,
@@ -137,13 +133,8 @@ mod tests {
137133
}
138134

139135
#[test]
140-
fn path_is_responses_compact_for_supported_wire_apis() {
141-
let responses_client =
142-
CompactClient::new(DummyTransport, provider(WireApi::Responses), DummyAuth);
143-
assert_eq!(responses_client.path(), "responses/compact");
144-
145-
let compact_client =
146-
CompactClient::new(DummyTransport, provider(WireApi::Compact), DummyAuth);
147-
assert_eq!(compact_client.path(), "responses/compact");
136+
fn path_is_responses_compact() {
137+
let client = CompactClient::new(DummyTransport, provider(), DummyAuth);
138+
assert_eq!(client.path(), "responses/compact");
148139
}
149140
}

codex-rs/codex-api/src/endpoint/models.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ impl<T: HttpTransport, A: AuthProvider> ModelsClient<T, A> {
8383
mod tests {
8484
use super::*;
8585
use crate::provider::RetryConfig;
86-
use crate::provider::WireApi;
8786
use async_trait::async_trait;
8887
use codex_client::Request;
8988
use codex_client::Response;
@@ -149,7 +148,6 @@ mod tests {
149148
name: "test".to_string(),
150149
base_url: base_url.to_string(),
151150
query_params: None,
152-
wire: WireApi::Responses,
153151
headers: HeaderMap::new(),
154152
retry: RetryConfig {
155153
max_attempts: 1,

codex-rs/codex-api/src/endpoint/responses.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ use crate::common::TextControls;
66
use crate::endpoint::streaming::StreamingClient;
77
use crate::error::ApiError;
88
use crate::provider::Provider;
9-
use crate::provider::WireApi;
109
use crate::requests::ResponsesRequest;
1110
use crate::requests::ResponsesRequestBuilder;
1211
use crate::requests::responses::Compression;
@@ -109,9 +108,7 @@ impl<T: HttpTransport, A: AuthProvider> ResponsesClient<T, A> {
109108
}
110109

111110
fn path(&self) -> &'static str {
112-
match self.streaming.provider().wire {
113-
WireApi::Responses | WireApi::Compact => "responses",
114-
}
111+
"responses"
115112
}
116113

117114
pub async fn stream(

codex-rs/codex-api/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ pub use crate::endpoint::responses_websocket::ResponsesWebsocketClient;
3131
pub use crate::endpoint::responses_websocket::ResponsesWebsocketConnection;
3232
pub use crate::error::ApiError;
3333
pub use crate::provider::Provider;
34-
pub use crate::provider::WireApi;
3534
pub use crate::provider::is_azure_responses_wire_base_url;
3635
pub use crate::requests::ResponsesRequest;
3736
pub use crate::requests::ResponsesRequestBuilder;

codex-rs/codex-api/src/provider.rs

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,6 @@ use std::collections::HashMap;
88
use std::time::Duration;
99
use url::Url;
1010

11-
/// Wire-level APIs supported by a `Provider`.
12-
#[derive(Debug, Clone, PartialEq, Eq)]
13-
pub enum WireApi {
14-
Responses,
15-
Compact,
16-
}
17-
1811
/// High-level retry configuration for a provider.
1912
///
2013
/// This is converted into a `RetryPolicy` used by `codex-client` to drive
@@ -51,7 +44,6 @@ pub struct Provider {
5144
pub name: String,
5245
pub base_url: String,
5346
pub query_params: Option<HashMap<String, String>>,
54-
pub wire: WireApi,
5547
pub headers: HeaderMap,
5648
pub retry: RetryConfig,
5749
pub stream_idle_timeout: Duration,
@@ -94,7 +86,7 @@ impl Provider {
9486
}
9587

9688
pub fn is_azure_responses_endpoint(&self) -> bool {
97-
is_azure_responses_wire_base_url(self.wire.clone(), &self.name, Some(&self.base_url))
89+
is_azure_responses_wire_base_url(&self.name, Some(&self.base_url))
9890
}
9991

10092
pub fn websocket_url_for_path(&self, path: &str) -> Result<Url, url::ParseError> {
@@ -111,11 +103,7 @@ impl Provider {
111103
}
112104
}
113105

114-
pub fn is_azure_responses_wire_base_url(wire: WireApi, name: &str, base_url: Option<&str>) -> bool {
115-
if wire != WireApi::Responses {
116-
return false;
117-
}
118-
106+
pub fn is_azure_responses_wire_base_url(name: &str, base_url: Option<&str>) -> bool {
119107
if name.eq_ignore_ascii_case("azure") {
120108
return true;
121109
}
@@ -156,13 +144,12 @@ mod tests {
156144

157145
for base_url in positive_cases {
158146
assert!(
159-
is_azure_responses_wire_base_url(WireApi::Responses, "test", Some(base_url)),
147+
is_azure_responses_wire_base_url("test", Some(base_url)),
160148
"expected {base_url} to be detected as Azure"
161149
);
162150
}
163151

164152
assert!(is_azure_responses_wire_base_url(
165-
WireApi::Responses,
166153
"Azure",
167154
Some("https://example.com")
168155
));
@@ -175,15 +162,9 @@ mod tests {
175162

176163
for base_url in negative_cases {
177164
assert!(
178-
!is_azure_responses_wire_base_url(WireApi::Responses, "test", Some(base_url)),
165+
!is_azure_responses_wire_base_url("test", Some(base_url)),
179166
"expected {base_url} not to be detected as Azure"
180167
);
181168
}
182-
183-
assert!(!is_azure_responses_wire_base_url(
184-
WireApi::Compact,
185-
"Azure",
186-
Some("https://foo.openai.azure.com/openai")
187-
));
188169
}
189170
}

codex-rs/codex-api/src/requests/responses.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@ fn attach_item_ids(payload_json: &mut Value, original_items: &[ResponseItem]) {
191191
mod tests {
192192
use super::*;
193193
use crate::provider::RetryConfig;
194-
use crate::provider::WireApi;
195194
use codex_protocol::protocol::SubAgentSource;
196195
use http::HeaderValue;
197196
use pretty_assertions::assert_eq;
@@ -202,7 +201,6 @@ mod tests {
202201
name: name.to_string(),
203202
base_url: base_url.to_string(),
204203
query_params: None,
205-
wire: WireApi::Responses,
206204
headers: HeaderMap::new(),
207205
retry: RetryConfig {
208206
max_attempts: 1,

codex-rs/codex-api/tests/clients.rs

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ use codex_api::AuthProvider;
99
use codex_api::Provider;
1010
use codex_api::ResponsesClient;
1111
use codex_api::ResponsesOptions;
12-
use codex_api::WireApi;
1312
use codex_api::requests::responses::Compression;
1413
use codex_client::HttpTransport;
1514
use codex_client::Request;
@@ -118,12 +117,11 @@ impl AuthProvider for StaticAuth {
118117
}
119118
}
120119

121-
fn provider(name: &str, wire: WireApi) -> Provider {
120+
fn provider(name: &str) -> Provider {
122121
Provider {
123122
name: name.to_string(),
124123
base_url: "https://example.com/v1".to_string(),
125124
query_params: None,
126-
wire,
127125
headers: HeaderMap::new(),
128126
retry: codex_api::provider::RetryConfig {
129127
max_attempts: 1,
@@ -195,26 +193,10 @@ data: {"id":"resp-1","output":[{"type":"message","role":"assistant","content":[{
195193
}
196194

197195
#[tokio::test]
198-
async fn responses_client_uses_responses_path_for_responses_wire() -> Result<()> {
196+
async fn responses_client_uses_responses_path() -> Result<()> {
199197
let state = RecordingState::default();
200198
let transport = RecordingTransport::new(state.clone());
201-
let client = ResponsesClient::new(transport, provider("openai", WireApi::Responses), NoAuth);
202-
203-
let body = serde_json::json!({ "echo": true });
204-
let _stream = client
205-
.stream(body, HeaderMap::new(), Compression::None, None)
206-
.await?;
207-
208-
let requests = state.take_stream_requests();
209-
assert_path_ends_with(&requests, "/responses");
210-
Ok(())
211-
}
212-
213-
#[tokio::test]
214-
async fn responses_client_uses_responses_path_for_compact_wire() -> Result<()> {
215-
let state = RecordingState::default();
216-
let transport = RecordingTransport::new(state.clone());
217-
let client = ResponsesClient::new(transport, provider("openai", WireApi::Compact), NoAuth);
199+
let client = ResponsesClient::new(transport, provider("openai"), NoAuth);
218200

219201
let body = serde_json::json!({ "echo": true });
220202
let _stream = client
@@ -231,7 +213,7 @@ async fn streaming_client_adds_auth_headers() -> Result<()> {
231213
let state = RecordingState::default();
232214
let transport = RecordingTransport::new(state.clone());
233215
let auth = StaticAuth::new("secret-token", "acct-1");
234-
let client = ResponsesClient::new(transport, provider("openai", WireApi::Responses), auth);
216+
let client = ResponsesClient::new(transport, provider("openai"), auth);
235217

236218
let body = serde_json::json!({ "model": "gpt-test" });
237219
let _stream = client
@@ -266,7 +248,7 @@ async fn streaming_client_adds_auth_headers() -> Result<()> {
266248
async fn streaming_client_retries_on_transport_error() -> Result<()> {
267249
let transport = FlakyTransport::new();
268250

269-
let mut provider = provider("openai", WireApi::Responses);
251+
let mut provider = provider("openai");
270252
provider.retry.max_attempts = 2;
271253

272254
let client = ResponsesClient::new(transport.clone(), provider, NoAuth);

codex-rs/codex-api/tests/models_integration.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use codex_api::AuthProvider;
22
use codex_api::ModelsClient;
33
use codex_api::provider::Provider;
44
use codex_api::provider::RetryConfig;
5-
use codex_api::provider::WireApi;
65
use codex_client::ReqwestTransport;
76
use codex_protocol::openai_models::ConfigShellToolType;
87
use codex_protocol::openai_models::ModelInfo;
@@ -34,7 +33,6 @@ fn provider(base_url: &str) -> Provider {
3433
name: "test".to_string(),
3534
base_url: base_url.to_string(),
3635
query_params: None,
37-
wire: WireApi::Responses,
3836
headers: HeaderMap::new(),
3937
retry: RetryConfig {
4038
max_attempts: 1,

codex-rs/codex-api/tests/sse_end_to_end.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ use codex_api::AuthProvider;
88
use codex_api::Provider;
99
use codex_api::ResponseEvent;
1010
use codex_api::ResponsesClient;
11-
use codex_api::WireApi;
1211
use codex_api::requests::responses::Compression;
1312
use codex_client::HttpTransport;
1413
use codex_client::Request;
@@ -61,12 +60,11 @@ impl AuthProvider for NoAuth {
6160
}
6261
}
6362

64-
fn provider(name: &str, wire: WireApi) -> Provider {
63+
fn provider(name: &str) -> Provider {
6564
Provider {
6665
name: name.to_string(),
6766
base_url: "https://example.com/v1".to_string(),
6867
query_params: None,
69-
wire,
7068
headers: HeaderMap::new(),
7169
retry: codex_api::provider::RetryConfig {
7270
max_attempts: 1,
@@ -122,7 +120,7 @@ async fn responses_stream_parses_items_and_completed_end_to_end() -> Result<()>
122120

123121
let body = build_responses_body(vec![item1, item2, completed]);
124122
let transport = FixtureSseTransport::new(body);
125-
let client = ResponsesClient::new(transport, provider("openai", WireApi::Responses), NoAuth);
123+
let client = ResponsesClient::new(transport, provider("openai"), NoAuth);
126124

127125
let mut stream = client
128126
.stream(
@@ -192,7 +190,7 @@ async fn responses_stream_aggregates_output_text_deltas() -> Result<()> {
192190

193191
let body = build_responses_body(vec![delta1, delta2, completed]);
194192
let transport = FixtureSseTransport::new(body);
195-
let client = ResponsesClient::new(transport, provider("openai", WireApi::Responses), NoAuth);
193+
let client = ResponsesClient::new(transport, provider("openai"), NoAuth);
196194

197195
let stream = client
198196
.stream(

codex-rs/core/src/model_provider_info.rs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
use crate::auth::AuthMode;
99
use crate::error::EnvVarError;
1010
use codex_api::Provider as ApiProvider;
11-
use codex_api::WireApi as ApiWireApi;
1211
use codex_api::is_azure_responses_wire_base_url;
1312
use codex_api::provider::RetryConfig as ApiRetryConfig;
1413
use http::HeaderMap;
@@ -169,21 +168,14 @@ impl ModelProviderInfo {
169168
name: self.name.clone(),
170169
base_url,
171170
query_params: self.query_params.clone(),
172-
wire: match self.wire_api {
173-
WireApi::Responses => ApiWireApi::Responses,
174-
},
175171
headers,
176172
retry,
177173
stream_idle_timeout: self.stream_idle_timeout(),
178174
})
179175
}
180176

181177
pub(crate) fn is_azure_responses_endpoint(&self) -> bool {
182-
is_azure_responses_wire_base_url(
183-
ApiWireApi::Responses,
184-
&self.name,
185-
self.base_url.as_deref(),
186-
)
178+
is_azure_responses_wire_base_url(&self.name, self.base_url.as_deref())
187179
}
188180

189181
/// If `env_key` is Some, returns the API key for this provider if present

0 commit comments

Comments
 (0)