Skip to content

Commit 536c722

Browse files
committed
reapply fork changes for rust-v0.128.0
1 parent adcd003 commit 536c722

41 files changed

Lines changed: 1778 additions & 218 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

codex-rs/Cargo.lock

Lines changed: 112 additions & 110 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

codex-rs/app-server-protocol/schema/json/ClientRequest.json

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

codex-rs/app-server-protocol/schema/json/v2/GetAccountParams.json

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

codex-rs/app-server-protocol/schema/typescript/v2/GetAccountParams.ts

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

codex-rs/app-server-protocol/src/protocol/v2.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2454,6 +2454,13 @@ pub struct GetAccountParams {
24542454
/// themselves and call `account/login/start` with `chatgptAuthTokens`.
24552455
#[serde(default)]
24562456
pub refresh_token: bool,
2457+
2458+
/// When `true`, reloads the auth snapshot from storage before returning.
2459+
///
2460+
/// This keeps long-lived clients in sync with `auth.json` updates without
2461+
/// requiring a full app-server restart.
2462+
#[serde(default)]
2463+
pub reload_auth_from_storage: bool,
24572464
}
24582465

24592466
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]

codex-rs/app-server/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1618,7 +1618,7 @@ Codex supports these authentication modes. The current mode is surfaced in `acco
16181618

16191619
### API Overview
16201620

1621-
- `account/read` — fetch current account info; optionally refresh tokens.
1621+
- `account/read` — fetch current account info; optionally refresh tokens or reload auth from storage.
16221622
- `account/login/start` — begin login (`apiKey`, `chatgpt`, `chatgptDeviceCode`).
16231623
- `account/login/completed` (notify) — emitted when a login attempt finishes (success or error).
16241624
- `account/login/cancel` — cancel a pending managed ChatGPT login by `loginId`.
@@ -1635,7 +1635,7 @@ Codex supports these authentication modes. The current mode is surfaced in `acco
16351635
Request:
16361636

16371637
```json
1638-
{ "method": "account/read", "id": 1, "params": { "refreshToken": false } }
1638+
{ "method": "account/read", "id": 1, "params": { "refreshToken": false, "reloadAuthFromStorage": false } }
16391639
```
16401640

16411641
Response examples:
@@ -1650,6 +1650,7 @@ Response examples:
16501650
Field notes:
16511651

16521652
- `refreshToken` (bool): set `true` to force a token refresh.
1653+
- `reloadAuthFromStorage` (bool): set `true` to reload the current auth snapshot from storage before returning.
16531654
- `requiresOpenaiAuth` reflects the active provider; when `false`, Codex can run without OpenAI credentials.
16541655

16551656
### 2) Log in with an API key

codex-rs/app-server/src/codex_message_processor.rs

Lines changed: 52 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,7 @@ use codex_feedback::FeedbackUploadOptions;
304304
use codex_git_utils::git_diff_to_remote;
305305
use codex_git_utils::resolve_root_git_project_for_trust;
306306
use codex_login::AuthManager;
307+
use codex_login::AuthReloadStatus;
307308
use codex_login::CLIENT_ID;
308309
use codex_login::CodexAuth;
309310
use codex_login::ServerOptions as LoginServerOptions;
@@ -325,6 +326,9 @@ use codex_memories_write::clear_memory_roots_contents;
325326
use codex_model_provider::ProviderAccountError;
326327
use codex_model_provider::create_model_provider;
327328
use codex_models_manager::collaboration_mode_presets::builtin_collaboration_mode_presets;
329+
use codex_models_manager::collaboration_mode_presets::collaboration_mode_presets_with_overrides_and_config;
330+
use codex_models_manager::collaboration_mode_presets::CollaborationModesConfig;
331+
use codex_models_manager::manager::RefreshStrategy;
328332
use codex_protocol::ThreadId;
329333
use codex_protocol::config_types::CollaborationMode;
330334
use codex_protocol::config_types::ForcedLoginMethod;
@@ -895,9 +899,10 @@ impl CodexMessageProcessor {
895899
fn normalize_turn_start_collaboration_mode(
896900
&self,
897901
mut collaboration_mode: CollaborationMode,
902+
collaboration_modes_config: CollaborationModesConfig,
898903
) -> CollaborationMode {
899904
if collaboration_mode.settings.developer_instructions.is_none()
900-
&& let Some(instructions) = builtin_collaboration_mode_presets()
905+
&& let Some(instructions) = builtin_collaboration_mode_presets(collaboration_modes_config)
901906
.into_iter()
902907
.find(|preset| preset.mode == Some(collaboration_mode.mode))
903908
.and_then(|preset| preset.developer_instructions.flatten())
@@ -1203,11 +1208,18 @@ impl CodexMessageProcessor {
12031208
ClientRequest::CollaborationModeList { request_id, params } => {
12041209
let outgoing = self.outgoing.clone();
12051210
let thread_manager = self.thread_manager.clone();
1211+
let config = self.config.clone();
12061212
let request_id = to_connection_request_id(request_id);
12071213

12081214
tokio::spawn(async move {
1209-
Self::list_collaboration_modes(outgoing, thread_manager, request_id, params)
1210-
.await;
1215+
Self::list_collaboration_modes(
1216+
outgoing,
1217+
thread_manager,
1218+
config,
1219+
request_id,
1220+
params,
1221+
)
1222+
.await;
12111223
});
12121224
}
12131225
ClientRequest::MockExperimentalMethod { request_id, params } => {
@@ -1968,6 +1980,19 @@ impl CodexMessageProcessor {
19681980
) -> Result<GetAccountResponse, JSONRPCErrorError> {
19691981
let do_refresh = params.refresh_token;
19701982

1983+
if params.reload_auth_from_storage {
1984+
match self.auth_manager.reload_with_status().await {
1985+
AuthReloadStatus::Reloaded { .. } => {}
1986+
AuthReloadStatus::Failed => {
1987+
return Err(JSONRPCErrorError {
1988+
code: INTERNAL_ERROR_CODE,
1989+
message: "failed to reload auth from storage".to_string(),
1990+
data: None,
1991+
});
1992+
}
1993+
}
1994+
}
1995+
19711996
self.refresh_token_if_requested(do_refresh).await;
19721997

19731998
let provider = create_model_provider(
@@ -5285,12 +5310,28 @@ impl CodexMessageProcessor {
52855310
async fn list_collaboration_modes(
52865311
outgoing: Arc<OutgoingMessageSender>,
52875312
thread_manager: Arc<ThreadManager>,
5313+
config: Arc<Config>,
52885314
request_id: ConnectionRequestId,
52895315
params: CollaborationModeListParams,
52905316
) {
52915317
let CollaborationModeListParams {} = params;
5292-
let items = thread_manager
5293-
.list_collaboration_modes()
5318+
let config = (*config).clone();
5319+
let collaboration_modes_config = CollaborationModesConfig {
5320+
default_mode_request_user_input: config
5321+
.features
5322+
.enabled(Feature::DefaultModeRequestUserInput),
5323+
};
5324+
let collaboration_mode_overrides = config.collaboration_mode_overrides();
5325+
let base_model = thread_manager
5326+
.get_models_manager()
5327+
.get_default_model(&config.model, RefreshStrategy::Offline)
5328+
.await;
5329+
let items = collaboration_mode_presets_with_overrides_and_config(
5330+
&base_model,
5331+
config.model_reasoning_effort,
5332+
collaboration_mode_overrides.as_ref(),
5333+
collaboration_modes_config,
5334+
)
52945335
.into_iter()
52955336
.map(Into::into)
52965337
.collect();
@@ -6558,9 +6599,14 @@ impl CodexMessageProcessor {
65586599
self.track_error_response(&request_id, error, /*error_type*/ None);
65596600
})?;
65606601

6602+
let collaboration_modes_config = CollaborationModesConfig {
6603+
default_mode_request_user_input: self.config
6604+
.features
6605+
.enabled(Feature::DefaultModeRequestUserInput),
6606+
};
65616607
let collaboration_mode = params
65626608
.collaboration_mode
6563-
.map(|mode| self.normalize_turn_start_collaboration_mode(mode));
6609+
.map(|mode| self.normalize_turn_start_collaboration_mode(mode, collaboration_modes_config));
65646610
let environments: Option<Vec<TurnEnvironmentSelection>> =
65656611
params.environments.map(|environments| {
65666612
environments

codex-rs/config/src/config_toml.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use crate::types::AnalyticsConfigToml;
1111
use crate::types::ApprovalsReviewer;
1212
use crate::types::AppsConfigToml;
1313
use crate::types::AuthCredentialsStoreMode;
14+
use crate::types::CollaborationModeOverrides;
1415
use crate::types::FeedbackConfigToml;
1516
use crate::types::History;
1617
use crate::types::MarketplaceConfig;
@@ -259,6 +260,9 @@ pub struct ConfigToml {
259260
/// Defaults to `false`.
260261
pub show_raw_agent_reasoning: Option<bool>,
261262

263+
/// Optional overrides for collaboration mode presets.
264+
pub collaboration_modes: Option<CollaborationModeOverrides>,
265+
262266
pub model_reasoning_effort: Option<ReasoningEffort>,
263267
pub plan_mode_reasoning_effort: Option<ReasoningEffort>,
264268
pub model_reasoning_summary: Option<ReasoningSummary>,

0 commit comments

Comments
 (0)