Skip to main content

skiff_cli/session/
mod.rs

1//! Named MCP session daemons over Unix-domain sockets (Unix only).
2//!
3//! One session name → one long-lived [`crate::mcp::McpClient`]. Ephemeral CLI
4//! processes speak NDJSON over AF_UNIX (`list_tools`, `call_tool`, resources,
5//! prompts). See crate README for layout, idle timeout, and security model.
6
7#[cfg(unix)]
8mod client;
9#[cfg(unix)]
10mod daemon;
11#[cfg(unix)]
12mod paths;
13#[cfg(unix)]
14mod peer;
15#[cfg(unix)]
16mod protocol;
17#[cfg(unix)]
18mod spawn;
19
20#[cfg(unix)]
21pub use client::session_request;
22#[cfg(unix)]
23pub use daemon::run_session_daemon;
24#[cfg(unix)]
25pub use paths::{
26    clear_stale_session, is_process_alive, session_is_alive, session_log_path, session_meta_path,
27    session_sock_path, sessions_dir, SessionMeta,
28};
29#[cfg(unix)]
30pub use protocol::{SessionMethod, SessionRequest, SessionResponse};
31#[cfg(unix)]
32pub use spawn::{
33    resolve_idle_secs, session_list, session_start, session_stop, DaemonConfig, DEFAULT_IDLE_SECS,
34};
35
36/// Non-Unix platforms: sessions are unsupported.
37#[cfg(not(unix))]
38pub fn sessions_unsupported() -> crate::error::Error {
39    crate::error::Error::runtime(
40        "MCP sessions require Unix domain sockets (not supported on this platform)",
41    )
42}