mod exec;
mod shell;
mod prompts;
mod session;
use crate::shell_registry::ShellRegistry;
use rmcp::handler::server::router::{prompt::PromptRouter, tool::ToolRouter};
#[derive(Clone)]
pub struct TerminalMcpService {
pub(crate) registry: ShellRegistry,
pub(crate) tool_router: ToolRouter<Self>,
pub(crate) prompt_router: PromptRouter<Self>,
}
impl TerminalMcpService {
pub fn new() -> Self {
Self {
registry: ShellRegistry::new(),
tool_router: Self::exec_tool_router()
+ Self::session_tool_router()
+ Self::io_tool_router()
+ Self::pty_tool_router(),
prompt_router: Self::prompt_router(),
}
}
}
impl Default for TerminalMcpService {
fn default() -> Self {
Self::new()
}
}