[4 of 7] Placeholder for OverrideTurnContext cleanup#23087
[4 of 7] Placeholder for OverrideTurnContext cleanup#23087etraut-openai wants to merge 27 commits into
Conversation
…into etraut/next-turn-state-input-op-consolidation # Conflicts: # codex-rs/app-server/src/request_processors/turn_processor.rs # codex-rs/core/src/session/handlers.rs # codex-rs/protocol/src/protocol.rs
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 875b846721
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5b47db287d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…e-user-input-context
…next-turn-state-remove-user-input-with-context # Conflicts: # codex-rs/core/src/session/handlers.rs
…into etraut/next-turn-state-input-op-consolidation
…into etraut/next-turn-state-input-op-consolidation
| effort: None, | ||
| summary: None, | ||
| service_tier: None, | ||
| .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { |
There was a problem hiding this comment.
The order of changes here feels wrong. Shouldn't this be replaced with the new Op?
There was a problem hiding this comment.
Yeah, I figured that splitting it out this way would help with reviewing, but it created problems. I think I'll just make this PR4 a no-op and change PR5 to both introduce the new op and delete the old one. And I'll repurpose the existing tests in the process and migrate them to the new op.
pakrym-oai
left a comment
There was a problem hiding this comment.
These tests should probably migrate to Op::TurnContext
…next-turn-state-remove-user-input-with-context # Conflicts: # codex-rs/app-server/src/request_processors/turn_processor.rs # codex-rs/core/src/session/handlers.rs # codex-rs/protocol/src/protocol.rs
…into etraut/next-turn-state-input-op-consolidation
…next-turn-state-remove-user-input-with-context
…into etraut/next-turn-state-input-op-consolidation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d6ae36fd8d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| personality: Option<Personality>, | ||
| }, | ||
|
|
||
| /// Approve a command execution |
There was a problem hiding this comment.
Removing this Op variant here leaves the TUI crate with live references to Op::OverrideTurnContext (for example codex-rs/tui/src/app/tests.rs and codex-rs/tui/src/chatwidget/tests/permissions.rs, found with git grep at this commit). Those paths can no longer type-check once codex-tui is built against the updated protocol enum, so the removal needs to be paired with the TUI/test migration or compatibility shim in the same change.
Useful? React with 👍 / 👎.
d6ae36f to
4939645
Compare
**Stack position:** [1 of 7] ## Summary The first three PRs in this stack are a cleanup pass before the actual thread settings API work. Today, core has several overlapping "user input" ops: `UserInput`, `UserInputWithTurnContext`, and `UserTurn`. They differ mostly in how much next-turn state they carry, which makes the later queued thread settings update harder to reason about and review. This PR starts that cleanup by adding the shared `ThreadSettingsOverrides` payload and allowing `Op::UserInput` to carry it. Existing variants remain in place here, so this layer is mostly a behavior-preserving API shape change plus mechanical constructor updates. ## End State After PR3 By the end of PR3, `Op::UserInput` is the only "user input" core op. It can carry optional thread settings overrides for callers that need to update stored defaults with a turn, while callers without updates use empty settings. `Op::UserInputWithTurnContext` and `Op::UserTurn` are deleted. ## End State After PR5 By the end of PR5, core will have only two ops for this area: - `Op::UserInput` for user-input-bearing submissions. - `Op::ThreadSettings` for settings-only updates. ## Stack 1. [1 of 7] [Add thread settings to UserInput](#23080) (this PR) 2. [2 of 7] [Remove UserInputWithTurnContext](#23081) 3. [3 of 7] [Remove UserTurn](#23075) 4. [4 of 7] [Placeholder for OverrideTurnContext cleanup](#23087) 5. [5 of 7] [Replace OverrideTurnContext with ThreadSettings](#22508) 6. [6 of 7] [Add app-server thread settings API](#22509) 7. [7 of 7] [Sync TUI thread settings](#22510)
…into etraut/next-turn-state-input-op-consolidation # Conflicts: # codex-rs/core/src/session/handlers.rs # codex-rs/core/tests/common/test_codex.rs # codex-rs/core/tests/suite/request_permissions.rs # codex-rs/core/tests/suite/unified_exec.rs # codex-rs/protocol/src/protocol.rs
…aut/next-turn-state-remove-override-context
**Stack position:** [2 of 7] ## Summary This PR removes the overlapping `Op::UserInputWithTurnContext` variant now that `Op::UserInput` can carry thread settings overrides directly. ## Stack 1. [1 of 7] [Add thread settings to UserInput](#23080) 2. [2 of 7] [Remove UserInputWithTurnContext](#23081) (this PR) 3. [3 of 7] [Remove UserTurn](#23075) 4. [4 of 7] [Placeholder for OverrideTurnContext cleanup](#23087) 5. [5 of 7] [Replace OverrideTurnContext with ThreadSettings](#22508) 6. [6 of 7] [Add app-server thread settings API](#22509) 7. [7 of 7] [Sync TUI thread settings](#22510)
45fe8ff to
e940365
Compare
…aut/next-turn-state-remove-override-context
**Stack position:** [3 of 7] ## Summary This PR finishes the input-op consolidation by moving the remaining `Op::UserTurn` callers onto `Op::UserInput` and deleting `Op::UserTurn`. This touches a lot of files, but it is a low-risk mechanical migration. ## Stack 1. [1 of 7] [Add thread settings to UserInput](#23080) 2. [2 of 7] [Remove UserInputWithTurnContext](#23081) 3. [3 of 7] [Remove UserTurn](#23075) (this PR) 4. [4 of 7] [Placeholder for OverrideTurnContext cleanup](#23087) 5. [5 of 7] [Replace OverrideTurnContext with ThreadSettings](#22508) 6. [6 of 7] [Add app-server thread settings API](#22509) 7. [7 of 7] [Sync TUI thread settings](#22510)
**Stack position:** [5 of 7] ## Summary This PR adds `Op::ThreadSettings`, a queued settings-only update mechanism for changing stored thread settings without starting a new turn. It also removes the legacy `Op::OverrideTurnContext` in the same layer, so reviewers can see the replacement and deletion together. ## Changes - Add `Op::ThreadSettings` for settings-only queued updates. - Emit `ThreadSettingsApplied` with the effective thread settings snapshot after core applies an update. - Route settings-only updates through the same submission queue as user input. - Migrate remaining `OverrideTurnContext` tests and callers to the queued `Op::ThreadSettings` path. - Delete `Op::OverrideTurnContext` from the core protocol and submission loop. This stack addresses #20656 and #22090. ## Stack 1. [1 of 7] [Add thread settings to UserInput](#23080) 2. [2 of 7] [Remove UserInputWithTurnContext](#23081) 3. [3 of 7] [Remove UserTurn](#23075) 4. [4 of 7] [Placeholder for OverrideTurnContext cleanup](#23087) 5. [5 of 7] [Replace OverrideTurnContext with ThreadSettings](#22508) (this PR) 6. [6 of 7] [Add app-server thread settings API](#22509) 7. [7 of 7] [Sync TUI thread settings](#22510)
**Stack position:** [1 of 7] ## Summary The first three PRs in this stack are a cleanup pass before the actual thread settings API work. Today, core has several overlapping "user input" ops: `UserInput`, `UserInputWithTurnContext`, and `UserTurn`. They differ mostly in how much next-turn state they carry, which makes the later queued thread settings update harder to reason about and review. This PR starts that cleanup by adding the shared `ThreadSettingsOverrides` payload and allowing `Op::UserInput` to carry it. Existing variants remain in place here, so this layer is mostly a behavior-preserving API shape change plus mechanical constructor updates. ## End State After PR3 By the end of PR3, `Op::UserInput` is the only "user input" core op. It can carry optional thread settings overrides for callers that need to update stored defaults with a turn, while callers without updates use empty settings. `Op::UserInputWithTurnContext` and `Op::UserTurn` are deleted. ## End State After PR5 By the end of PR5, core will have only two ops for this area: - `Op::UserInput` for user-input-bearing submissions. - `Op::ThreadSettings` for settings-only updates. ## Stack 1. [1 of 7] [Add thread settings to UserInput](openai#23080) (this PR) 2. [2 of 7] [Remove UserInputWithTurnContext](openai#23081) 3. [3 of 7] [Remove UserTurn](openai#23075) 4. [4 of 7] [Placeholder for OverrideTurnContext cleanup](openai#23087) 5. [5 of 7] [Replace OverrideTurnContext with ThreadSettings](openai#22508) 6. [6 of 7] [Add app-server thread settings API](openai#22509) 7. [7 of 7] [Sync TUI thread settings](openai#22510)
**Stack position:** [2 of 7] ## Summary This PR removes the overlapping `Op::UserInputWithTurnContext` variant now that `Op::UserInput` can carry thread settings overrides directly. ## Stack 1. [1 of 7] [Add thread settings to UserInput](openai#23080) 2. [2 of 7] [Remove UserInputWithTurnContext](openai#23081) (this PR) 3. [3 of 7] [Remove UserTurn](openai#23075) 4. [4 of 7] [Placeholder for OverrideTurnContext cleanup](openai#23087) 5. [5 of 7] [Replace OverrideTurnContext with ThreadSettings](openai#22508) 6. [6 of 7] [Add app-server thread settings API](openai#22509) 7. [7 of 7] [Sync TUI thread settings](openai#22510)
**Stack position:** [3 of 7] ## Summary This PR finishes the input-op consolidation by moving the remaining `Op::UserTurn` callers onto `Op::UserInput` and deleting `Op::UserTurn`. This touches a lot of files, but it is a low-risk mechanical migration. ## Stack 1. [1 of 7] [Add thread settings to UserInput](openai#23080) 2. [2 of 7] [Remove UserInputWithTurnContext](openai#23081) 3. [3 of 7] [Remove UserTurn](openai#23075) (this PR) 4. [4 of 7] [Placeholder for OverrideTurnContext cleanup](openai#23087) 5. [5 of 7] [Replace OverrideTurnContext with ThreadSettings](openai#22508) 6. [6 of 7] [Add app-server thread settings API](openai#22509) 7. [7 of 7] [Sync TUI thread settings](openai#22510)
**Stack position:** [5 of 7] ## Summary This PR adds `Op::ThreadSettings`, a queued settings-only update mechanism for changing stored thread settings without starting a new turn. It also removes the legacy `Op::OverrideTurnContext` in the same layer, so reviewers can see the replacement and deletion together. ## Changes - Add `Op::ThreadSettings` for settings-only queued updates. - Emit `ThreadSettingsApplied` with the effective thread settings snapshot after core applies an update. - Route settings-only updates through the same submission queue as user input. - Migrate remaining `OverrideTurnContext` tests and callers to the queued `Op::ThreadSettings` path. - Delete `Op::OverrideTurnContext` from the core protocol and submission loop. This stack addresses openai#20656 and openai#22090. ## Stack 1. [1 of 7] [Add thread settings to UserInput](openai#23080) 2. [2 of 7] [Remove UserInputWithTurnContext](openai#23081) 3. [3 of 7] [Remove UserTurn](openai#23075) 4. [4 of 7] [Placeholder for OverrideTurnContext cleanup](openai#23087) 5. [5 of 7] [Replace OverrideTurnContext with ThreadSettings](openai#22508) (this PR) 6. [6 of 7] [Add app-server thread settings API](openai#22509) 7. [7 of 7] [Sync TUI thread settings](openai#22510)
Stack position: [4 of 7]
Summary
This PR is intentionally empty. It is kept as a stack placeholder so the existing review chain can remain stable.
The
OverrideTurnContextremoval now happens in PR5 together with the queuedOp::ThreadSettingsreplacement. Keeping those changes together makes the review clearer than removing the old queued op before the replacement exists.Changes
OverrideTurnContextreplacement and removal is in PR5.This stack addresses #20656 and #22090.
Stack