"""``hermes tools`` subcommand parser."""

from __future__ import annotations

from typing import Callable


def build_tools_parser(subparsers, *, cmd_tools: Callable) -> None:
    """Attach the ``tools`` subcommand to ``subparsers``."""
    tools_parser = subparsers.add_parser(
        "tools", help="Configure which tools are enabled per platform",
        description="Enable, disable, or list tools for CLI, Telegram, Discord, etc.\n\n"
            "Built-in toolsets use plain names (e.g. web, memory).\n"
            "MCP tools use server:tool notation (e.g. github:create_issue).\n\n"
            "Run 'hermes tools' with no subcommand for the interactive configuration UI.")
    tools_parser.add_argument(
        "--summary", action="store_true",
        help="Print a summary of enabled tools per platform and exit")
    tools_sub = tools_parser.add_subparsers(dest="tools_action")

    tools_list_p = tools_sub.add_parser(
        "list", help="Show all tools and their enabled/disabled status")
    tools_list_p.add_argument("--platform", default="cli", help="Platform to show (default: cli)")

    tools_disable_p = tools_sub.add_parser("disable", help="Disable toolsets or MCP tools")
    tools_disable_p.add_argument(
        "names", nargs="+", metavar="NAME",
        help="Toolset name (e.g. web) or MCP tool in server:tool form")
    tools_disable_p.add_argument(
        "--platform", default="cli", help="Platform to apply to (default: cli)")

    tools_enable_p = tools_sub.add_parser("enable", help="Enable toolsets or MCP tools")
    tools_enable_p.add_argument(
        "names", nargs="+", metavar="NAME", help="Toolset name or MCP tool in server:tool form")
    tools_enable_p.add_argument(
        "--platform", default="cli", help="Platform to apply to (default: cli)")

    tools_postsetup_p = tools_sub.add_parser(
        "post-setup", help="Run a provider's post-setup install hook (npm/pip/binary)",
        description="Run the install/bootstrap hook a tool backend declares — the\n"
            "same step `hermes tools` runs after you pick a provider that\n"
            "needs extra dependencies (browser Chromium, Camofox, cua-driver,\n"
            "KittenTTS/Piper, ddgs, Spotify, Langfuse, xAI, Codex). Stable,\n"
            "non-interactive target the dashboard spawns to drive backend\n"
            "setup. Keys: agent_browser, camofox, cua_driver, kittentts,\n"
            "piper, ddgs, spotify, langfuse, xai_grok, openai_codex.")
    tools_postsetup_p.add_argument(
        "post_setup_key", metavar="KEY",
        help="Post-setup hook key (e.g. agent_browser, camofox, kittentts)")
    tools_parser.set_defaults(func=cmd_tools)
