Source code for ralph.mcp.server._lifecycle_deps
"""LifecycleDeps — injectable dependencies for MCP server lifecycle management."""
from __future__ import annotations
from collections.abc import Callable
from dataclasses import dataclass
from datetime import timedelta
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from pathlib import Path
from ralph.mcp.protocol.startup import SessionLike
from ralph.mcp.server._spawn_process import SpawnProcess
type PreflightFn = Callable[[str, list[str], timedelta], None]
[docs]
@dataclass(frozen=True)
class LifecycleDeps:
"""Injectable dependencies for MCP server lifecycle management."""
reserve_port: Callable[[], int]
create_session_file: Callable[[Path, SessionLike], Path]
subprocess_env: Callable[[Path], dict[str, str]]
spawn_process: SpawnProcess
preflight: PreflightFn
preflight_timeout: Callable[[], timedelta]
probe: Callable[[str, timedelta], None] | None = None
probe_timeout: Callable[[], timedelta] | None = None
__all__ = ["LifecycleDeps", "PreflightFn"]