mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
Previously, running Codex as an MCP server required a standalone binary in our Cargo workspace, but this PR makes it available as a subcommand (`mcp`) of the main CLI. Ran this with: ``` RUST_LOG=debug npx @modelcontextprotocol/inspector cargo run --bin codex -- mcp ``` and verified it worked as expected in the inspector at `http://127.0.0.1:6274/`.
39 lines
1.1 KiB
Rust
39 lines
1.1 KiB
Rust
use std::collections::HashMap;
|
|
|
|
use strum::IntoEnumIterator;
|
|
use strum_macros::AsRefStr; // derive macro
|
|
use strum_macros::EnumIter;
|
|
use strum_macros::EnumString;
|
|
use strum_macros::IntoStaticStr;
|
|
|
|
/// Commands that can be invoked by starting a message with a leading slash.
|
|
#[derive(
|
|
Debug, Clone, Copy, PartialEq, Eq, Hash, EnumString, EnumIter, AsRefStr, IntoStaticStr,
|
|
)]
|
|
#[strum(serialize_all = "kebab-case")]
|
|
pub enum SlashCommand {
|
|
Clear,
|
|
Quit,
|
|
}
|
|
|
|
impl SlashCommand {
|
|
/// User-visible description shown in the popup.
|
|
pub fn description(self) -> &'static str {
|
|
match self {
|
|
SlashCommand::Clear => "Clear the chat history.",
|
|
SlashCommand::Quit => "Exit the application.",
|
|
}
|
|
}
|
|
|
|
/// Command string without the leading '/'. Provided for compatibility with
|
|
/// existing code that expects a method named `command()`.
|
|
pub fn command(self) -> &'static str {
|
|
self.into()
|
|
}
|
|
}
|
|
|
|
/// Return all built-in commands in a HashMap keyed by their command string.
|
|
pub fn built_in_slash_commands() -> HashMap<&'static str, SlashCommand> {
|
|
SlashCommand::iter().map(|c| (c.command(), c)).collect()
|
|
}
|