# ----------------------------------------------------------------------------
#
#  Welcome to Baml! To use this generated code, please run the following:
#
#  $ pip install baml
#
# ----------------------------------------------------------------------------

# This file was generated by BAML: please do not edit it. Instead, edit the
# BAML files and re-generate this code using: baml-cli generate
# baml-cli is available with the baml package.

_file_map = {

    "capability_match.baml": "// BAML Function for matching capability requests to manifest entries\n// Returns ranked candidates for Claude Code to choose from\n\nclass ManifestServer {\n  name string @description(\"Server identifier\")\n  description string @description(\"What this server provides\")\n  keywords string[] @description(\"Associated keywords\")\n  requires_api_key bool @description(\"Whether an API key is needed\")\n  env_var string? @description(\"Environment variable for API key if required\")\n}\n\nclass ManifestCLI {\n  name string @description(\"CLI tool name\")\n  description string @description(\"What this CLI provides\")\n  keywords string[] @description(\"Associated keywords\")\n}\n\nclass ManifestSummary {\n  servers ManifestServer[] @description(\"Available MCP servers\")\n  clis ManifestCLI[] @description(\"Available CLI tools\")\n}\n\nclass CapabilityCandidate {\n  name string @description(\"Name of the server or CLI\")\n  candidate_type string @description(\"'cli' or 'server'\")\n  relevance_score float @description(\"0.0 to 1.0 relevance score\")\n  reasoning string @description(\"Brief explanation of why this matches (1-2 sentences)\")\n  requires_api_key bool @description(\"Whether API key is needed (always false for CLIs)\")\n}\n\nclass CapabilityMatchResult {\n  candidates CapabilityCandidate[] @description(\"Top 1-3 candidates ranked by relevance\")\n  recommendation string @description(\"Brief recommendation for Claude Code on which to choose\")\n}\n\nfunction MatchCapability(\n  query: string,\n  manifest: ManifestSummary,\n  available_clis: string[],\n  running_servers: string[]\n) -> CapabilityMatchResult {\n  client Groq\n  prompt #\"\n    Match this capability request to the best options from the manifest.\n    Return up to 3 candidates ranked by relevance.\n\n    User's capability request: \"{{ query }}\"\n\n    Already installed CLIs: {{ available_clis | join(\", \") }}\n    Already running servers: {{ running_servers | join(\", \") }}\n\n    Available CLI tools:\n    {% for cli in manifest.clis %}\n    - {{ cli.name }}: {{ cli.description }}\n      Keywords: {{ cli.keywords | join(\", \") }}\n    {% endfor %}\n\n    Available MCP servers:\n    {% for server in manifest.servers %}\n    - {{ server.name }}: {{ server.description }}\n      Keywords: {{ server.keywords | join(\", \") }}\n      Requires API key: {{ server.requires_api_key }}{% if server.env_var %} ({{ server.env_var }}){% endif %}\n    {% endfor %}\n\n    Rules:\n    1. Prefer CLIs that are already installed for simple tasks (lower overhead)\n    2. Prefer servers that are already running (zero startup cost)\n    3. Consider whether the task really needs MCP vs CLI capabilities\n    4. For complex automation (browser, APIs), MCP servers are usually better\n    5. If a server requires an API key, still include it but note the requirement\n    6. Return 1-3 candidates - fewer if there's a clear winner\n    7. If nothing matches well, return empty candidates array\n\n    Scoring guide:\n    - 0.9-1.0: Perfect match, exactly what user needs\n    - 0.7-0.8: Good match, can handle the request well\n    - 0.5-0.6: Partial match, might work with limitations\n    - Below 0.5: Don't include\n\n    {{ ctx.output_format }}\n  \"#\n}\n\ntest TestCapabilityMatch {\n  functions [MatchCapability]\n  args {\n    query \"I need to search the web for information\"\n    manifest {\n      servers [\n        {\n          name \"brave-search\"\n          description \"Web search API\"\n          keywords [\"search\", \"web\"]\n          requires_api_key true\n          env_var \"BRAVE_API_KEY\"\n        }\n      ]\n      clis [\n        {\n          name \"curl\"\n          description \"HTTP client\"\n          keywords [\"http\", \"request\"]\n        }\n      ]\n    }\n    available_clis [\"curl\"]\n    running_servers []\n  }\n}\n",
    "clients.baml": "// BAML Client Definitions\n// Uses Groq for fast, cheap LLM inference\n\nclient<llm> Groq {\n  provider openai-generic\n  options {\n    base_url \"https://api.groq.com/openai/v1\"\n    api_key env.GROQ_API_KEY\n    model \"openai/gpt-oss-20b\"\n  }\n}\n",
    "code_examples.baml": "// BAML Function for Code Example Generation\n// Generates code snippets for tools that don't have static templates\n\nclass ToolInfo {\n  tool_id string\n  tool_name string\n  description string\n  args ToolArg[]\n}\n\nclass ToolArg {\n  name string\n  type string\n  required bool\n  description string\n}\n\nclass CodeSnippet {\n  snippet string @description(\"Python code snippet, max 4 lines, showing practical usage\")\n  pattern string @description(\"Code pattern used: loop, filter, if/else, try/catch, or poll\")\n}\n\nfunction GenerateCodeSnippet(tool: ToolInfo) -> CodeSnippet {\n  client Groq\n  prompt #\"\n    Generate a minimal, practical Python code snippet (MAX 4 lines) for this MCP tool.\n\n    Tool: {{ tool.tool_id }}\n    Description: {{ tool.description }}\n    Arguments:\n    {% for arg in tool.args %}\n    - {{ arg.name }} ({{ arg.type }}{% if arg.required %}, required{% endif %}): {{ arg.description }}\n    {% endfor %}\n\n    REQUIREMENTS:\n    1. Show invocation via mcp.call_tool(\"gateway.invoke\", ...)\n    2. Use realistic argument values\n    3. MAX 4 lines of code\n    4. Include one of these patterns: loop, filter, if/else, try/catch, poll\n    5. Add a brief comment explaining the pattern\n\n    EXAMPLES:\n    # Loop pattern\n    for item in items:\n        mcp.call_tool(\"gateway.invoke\", {\"tool_id\": \"server::tool\", \"arguments\": {\"param\": item}})\n\n    # Filter pattern\n    results = mcp.call_tool(\"gateway.invoke\", {\"tool_id\": \"server::tool\", \"arguments\": {}})\n    filtered = [r for r in results if r[\"matches\"]]\n\n    # Try/catch pattern\n    try:\n        result = mcp.call_tool(\"gateway.invoke\", {\"tool_id\": \"server::tool\", \"arguments\": {}})\n    except Exception as e: print(f\"Error: {e}\")\n\n    Generate a snippet following one of these patterns that makes sense for this tool.\n\n    {{ ctx.output_format }}\n  \"#\n}\n\ntest TestCodeSnippet {\n  functions [GenerateCodeSnippet]\n  args {\n    tool {\n      tool_id \"playwright::browser_navigate\"\n      tool_name \"browser_navigate\"\n      description \"Navigate browser to a URL\"\n      args [\n        {\n          name \"url\"\n          type \"string\"\n          required true\n          description \"URL to navigate to\"\n        }\n      ]\n    }\n  }\n}\n",
    "generators.baml": "// BAML Generator Configuration\n// Generates Python client code for PMCP\n\ngenerator target {\n  output_type python/pydantic\n  output_dir \"../src/pmcp\"\n  version \"0.219.0\"\n  default_client_mode async\n}\n",
    "summarize.baml": "// BAML Function Definitions for Capability Summarization\n// Generates concise summaries of MCP tool capabilities\n\nclass ToolDescription {\n  server_name string\n  tool_name string\n  description string\n}\n\nclass CapabilityCategory {\n  name string @description(\"Category name like 'Browser Automation' or 'File Operations'\")\n  server string @description(\"Server name providing this capability\")\n  summary string @description(\"3-5 word capability summary\")\n}\n\nclass CapabilitySummary {\n  categories CapabilityCategory[] @description(\"3-5 high-level capability categories\")\n  usage_hint string @description(\"Hint for how to explore tools further\")\n}\n\nfunction SummarizeCapabilities(tools: ToolDescription[]) -> CapabilitySummary {\n  client Groq\n  prompt #\"\n    Categorize these MCP server tools into 3-5 high-level capability categories.\n    Group by what the user can DO, not by individual tool names.\n\n    Tools available:\n    {% for tool in tools %}\n    - {{ tool.server_name }}::{{ tool.tool_name }}: {{ tool.description }}\n    {% endfor %}\n\n    Create categories that describe capabilities from the user's perspective.\n    Each category should reference the server that provides it.\n    Keep summaries concise (3-5 words).\n\n    IMPORTANT: The usage_hint should encourage code execution patterns:\n    \"Write code to orchestrate tools - use loops, filters, conditionals. Search → describe → invoke via code execution.\"\n\n    {{ ctx.output_format }}\n  \"#\n}\n\ntest TestName {\n  functions [SummarizeCapabilities]\n  args {\n    tools [\n      {\n          server_name #\"\n          hello world\n        \"#\n          tool_name #\"\n          hello world\n        \"#\n          description #\"\n          hello world\n        \"#\n      },\n      {\n          server_name #\"\n          hello world\n        \"#\n          tool_name #\"\n          hello world\n        \"#\n          description #\"\n          hello world\n        \"#\n      }\n    ]\n  }\n}\n\n",
}

def get_baml_files():
    return _file_map