Ctrl K
ComunidadGuías…

butler/mcp/tools_manifest_ops.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
"""MCP SSOT tools manifest best-effort helpers (P0-A)."""

from __future__ import annotations

from pathlib import Path
from typing import cast

from butler.core.best_effort import safe_best_effort


def resolve_workspace_safe() -> Path | None:
    def _run() -> Path | None:
        from butler.registry.mcp_merge import resolve_workspace_for_session

        return cast(Path, resolve_workspace_for_session())

    result = safe_best_effort(
        _run,
        label="tools_manifest.resolve_workspace",
        default=None,
    )
    return result if isinstance(result, Path) else None


def effective_mcp_server_ids_safe(*, workspace: Path | None = None) -> set[str]:
    def _run() -> set[str]:
        from butler.registry.mcp_merge import effective_mcp_servers

        rows = effective_mcp_servers(workspace=workspace)
        return {str(r.server_id) for r in rows if r.server_id}

    result = safe_best_effort(
        _run,
        label="tools_manifest.effective_servers",
        default=set(),
    )
    return set(result) if isinstance(result, set) else set()