Added deprecation notice for "chat" wire_api (#7897)
This PR adds a deprecation notice that appears once per invocation of codex (not per conversation) when a conversation is started using a custom model provider configured with the "chat" wire_api. We have [announced](https://github.com/openai/codex/discussions/7782) that this feature is deprecated and will be removed in early Feb 2026, so we want to notify users of this fact. The deprecation notice was added in a way that works with the non-interactive "codex exec", the TUI, and with the extension. Screen shots of each are below. <img width="1000" height="89" alt="image" src="https://github.com/user-attachments/assets/72cc08bb-d158-4a89-b3c8-7a896abd016f" /> <img width="1000" height="38" alt="Screenshot 2025-12-11 at 2 22 29 PM" src="https://github.com/user-attachments/assets/7b2128ca-9afc-48be-9ce1-2ce81bc00fcb" /> <img width="479" height="106" alt="Screenshot 2025-12-11 at 2 21 26 PM" src="https://github.com/user-attachments/assets/858ec1cc-ebfc-4c99-b22b-63015154d752" />
This commit is contained in:
parent
36610d975a
commit
43e6e75317
3 changed files with 32 additions and 0 deletions
|
|
@ -2,7 +2,9 @@ use std::collections::HashMap;
|
|||
use std::fmt::Debug;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::Arc;
|
||||
use std::sync::atomic::AtomicBool;
|
||||
use std::sync::atomic::AtomicU64;
|
||||
use std::sync::atomic::Ordering;
|
||||
|
||||
use crate::AuthManager;
|
||||
use crate::SandboxState;
|
||||
|
|
@ -65,6 +67,7 @@ use tracing::info;
|
|||
use tracing::warn;
|
||||
|
||||
use crate::ModelProviderInfo;
|
||||
use crate::WireApi;
|
||||
use crate::client::ModelClient;
|
||||
use crate::client_common::Prompt;
|
||||
use crate::client_common::ResponseEvent;
|
||||
|
|
@ -80,6 +83,7 @@ use crate::exec::StreamOutput;
|
|||
use crate::exec_policy::ExecPolicyUpdateError;
|
||||
use crate::mcp::auth::compute_auth_statuses;
|
||||
use crate::mcp_connection_manager::McpConnectionManager;
|
||||
use crate::model_provider_info::CHAT_WIRE_API_DEPRECATION_SUMMARY;
|
||||
use crate::project_doc::get_user_instructions;
|
||||
use crate::protocol::AgentMessageContentDeltaEvent;
|
||||
use crate::protocol::AgentReasoningSectionBreakEvent;
|
||||
|
|
@ -167,6 +171,31 @@ pub struct CodexSpawnOk {
|
|||
|
||||
pub(crate) const INITIAL_SUBMIT_ID: &str = "";
|
||||
pub(crate) const SUBMISSION_CHANNEL_CAPACITY: usize = 64;
|
||||
static CHAT_WIRE_API_DEPRECATION_EMITTED: AtomicBool = AtomicBool::new(false);
|
||||
|
||||
fn maybe_push_chat_wire_api_deprecation(
|
||||
config: &Config,
|
||||
post_session_configured_events: &mut Vec<Event>,
|
||||
) {
|
||||
if config.model_provider.wire_api != WireApi::Chat {
|
||||
return;
|
||||
}
|
||||
|
||||
if CHAT_WIRE_API_DEPRECATION_EMITTED
|
||||
.compare_exchange(false, true, Ordering::SeqCst, Ordering::SeqCst)
|
||||
.is_err()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
post_session_configured_events.push(Event {
|
||||
id: INITIAL_SUBMIT_ID.to_owned(),
|
||||
msg: EventMsg::DeprecationNotice(DeprecationNoticeEvent {
|
||||
summary: CHAT_WIRE_API_DEPRECATION_SUMMARY.to_string(),
|
||||
details: None,
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
impl Codex {
|
||||
/// Spawn a new [`Codex`] and initialize the session.
|
||||
|
|
@ -584,6 +613,7 @@ impl Session {
|
|||
msg: EventMsg::DeprecationNotice(DeprecationNoticeEvent { summary, details }),
|
||||
});
|
||||
}
|
||||
maybe_push_chat_wire_api_deprecation(&config, &mut post_session_configured_events);
|
||||
|
||||
// todo(aibrahim): why are we passing model here while it can change?
|
||||
let otel_event_manager = OtelEventManager::new(
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ pub mod token_data;
|
|||
mod truncate;
|
||||
mod unified_exec;
|
||||
mod user_instructions;
|
||||
pub use model_provider_info::CHAT_WIRE_API_DEPRECATION_SUMMARY;
|
||||
pub use model_provider_info::DEFAULT_LMSTUDIO_PORT;
|
||||
pub use model_provider_info::DEFAULT_OLLAMA_PORT;
|
||||
pub use model_provider_info::LMSTUDIO_OSS_PROVIDER_ID;
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ const DEFAULT_REQUEST_MAX_RETRIES: u64 = 4;
|
|||
const MAX_STREAM_MAX_RETRIES: u64 = 100;
|
||||
/// Hard cap for user-configured `request_max_retries`.
|
||||
const MAX_REQUEST_MAX_RETRIES: u64 = 100;
|
||||
pub const CHAT_WIRE_API_DEPRECATION_SUMMARY: &str = r#"Support for the "chat" wire API is deprecated and will soon be removed. Update your model provider definition in config.toml to use wire_api = "responses"."#;
|
||||
|
||||
/// Wire protocol that the provider speaks. Most third-party services only
|
||||
/// implement the classic OpenAI Chat Completions JSON schema, whereas OpenAI
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue