mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
Sync collaboration mode naming across Default prompt, tools, and TUI (#10666)
## Summary
- add shared `ModeKind` helpers for display names, TUI visibility, and
`request_user_input` availability
- derive TUI mode filtering/labels from shared `ModeKind` metadata
instead of local hardcoded matches
- derive `request_user_input` availability text and unavailable error
mode names from shared mode metadata
- replace hardcoded known mode names in the Default collaboration-mode
template with `{{KNOWN_MODE_NAMES}}` and fill it from
`TUI_VISIBLE_COLLABORATION_MODES`
- add regression tests for mode metadata sync and placeholder
replacement
## Notes
- `cargo test -p codex-core` integration target (`tests/all`) still
shows pre-existing env-specific failures in this environment due missing
`test_stdio_server` binary resolution; core unit tests are green.
## Codex author
`codex resume 019c26ff-dfe7-7173-bc04-c9e1fff1e447`
This commit is contained in:
committed by
GitHub
Unverified
parent
e482978261
commit
41b4962b0a
@@ -193,6 +193,27 @@ pub enum ModeKind {
|
||||
Execute,
|
||||
}
|
||||
|
||||
pub const TUI_VISIBLE_COLLABORATION_MODES: [ModeKind; 2] = [ModeKind::Default, ModeKind::Plan];
|
||||
|
||||
impl ModeKind {
|
||||
pub const fn display_name(self) -> &'static str {
|
||||
match self {
|
||||
Self::Plan => "Plan",
|
||||
Self::Default => "Default",
|
||||
Self::PairProgramming => "Pair Programming",
|
||||
Self::Execute => "Execute",
|
||||
}
|
||||
}
|
||||
|
||||
pub const fn is_tui_visible(self) -> bool {
|
||||
matches!(self, Self::Plan | Self::Default)
|
||||
}
|
||||
|
||||
pub const fn allows_request_user_input(self) -> bool {
|
||||
matches!(self, Self::Plan)
|
||||
}
|
||||
}
|
||||
|
||||
/// Collaboration mode for a Codex session.
|
||||
#[derive(Clone, PartialEq, Eq, Hash, Debug, Serialize, Deserialize, JsonSchema, TS)]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
@@ -324,4 +345,17 @@ mod tests {
|
||||
assert_eq!(ModeKind::Default, mode);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn tui_visible_collaboration_modes_match_mode_kind_visibility() {
|
||||
let expected = [ModeKind::Default, ModeKind::Plan];
|
||||
assert_eq!(expected, TUI_VISIBLE_COLLABORATION_MODES);
|
||||
|
||||
for mode in TUI_VISIBLE_COLLABORATION_MODES {
|
||||
assert!(mode.is_tui_visible());
|
||||
}
|
||||
|
||||
assert!(!ModeKind::PairProgramming.is_tui_visible());
|
||||
assert!(!ModeKind::Execute.is_tui_visible());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user