# ----------------------------------------------------------------------------
#
#  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.

import typing
import typing_extensions
from pydantic import BaseModel, ConfigDict

import baml_py

from . import types

StreamStateValueT = typing.TypeVar('StreamStateValueT')
class StreamState(BaseModel, typing.Generic[StreamStateValueT]):
    value: StreamStateValueT
    state: typing_extensions.Literal["Pending", "Incomplete", "Complete"]
# #########################################################################
# Generated classes (8)
# #########################################################################

class CapabilityCandidate(BaseModel):
    name: typing.Optional[str] = None
    candidate_type: typing.Optional[str] = None
    relevance_score: typing.Optional[float] = None
    reasoning: typing.Optional[str] = None
    requires_api_key: typing.Optional[bool] = None

class CapabilityCategory(BaseModel):
    name: typing.Optional[str] = None
    server: typing.Optional[str] = None
    summary: typing.Optional[str] = None

class CapabilityMatchResult(BaseModel):
    candidates: typing.List["CapabilityCandidate"]
    recommendation: typing.Optional[str] = None

class CapabilitySummary(BaseModel):
    categories: typing.List["CapabilityCategory"]
    usage_hint: typing.Optional[str] = None

class ManifestCLI(BaseModel):
    name: typing.Optional[str] = None
    description: typing.Optional[str] = None
    keywords: typing.List[str]

class ManifestServer(BaseModel):
    name: typing.Optional[str] = None
    description: typing.Optional[str] = None
    keywords: typing.List[str]
    requires_api_key: typing.Optional[bool] = None
    env_var: typing.Optional[str] = None

class ManifestSummary(BaseModel):
    servers: typing.List["ManifestServer"]
    clis: typing.List["ManifestCLI"]

class ToolDescription(BaseModel):
    server_name: typing.Optional[str] = None
    tool_name: typing.Optional[str] = None
    description: typing.Optional[str] = None

# #########################################################################
# Generated type aliases (0)
# #########################################################################
