Ctrl K
ComunidadGuías…

butler/mcp/tools_engine_ops.py

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

Archivo original ↗Preguntar a KiBot
"""ToolsEngine manifest merge best-effort helpers (P0-A)."""

from __future__ import annotations

from typing import Any, cast

from butler.core.best_effort import safe_best_effort


def filter_tools_manifest_safe(
    tools: list[dict[str, Any]],
) -> tuple[list[dict[str, Any]], dict[str, Any]]:
    def _run() -> tuple[list[dict[str, Any]], dict[str, Any]]:
        from butler.mcp.tools_manifest import filter_tools_by_mcp_ssot

        return cast(tuple[list[dict[str, Any]], dict[str, Any]], filter_tools_by_mcp_ssot(list(tools)))

    result = safe_best_effort(
        _run,
        label="tools_engine.manifest_merge",
        default=(list(tools), {}),
    )
    if isinstance(result, tuple) and len(result) == 2:
        working, diag = result
        if isinstance(working, list) and isinstance(diag, dict):
            return working, diag
    return list(tools), {}