MediaRouter / app /generation /domain /capabilities.py
basyx's picture
Upload 340 files
3493993 verified
Raw
History Blame Contribute Delete
1.28 kB
from __future__ import annotations
from pydantic import BaseModel, ConfigDict, Field
from app.generation.domain.enums import GenerationModality
class GenerationModelCapability(BaseModel):
"""An explicitly implemented model contract.
``input_schema`` is descriptive only; request validation remains owned by
the adapter's typed Pydantic input model. It lets future transports build
capability-driven UIs without accepting arbitrary provider payloads.
"""
model_config = ConfigDict(extra="forbid")
id: str = Field(min_length=1, max_length=255)
name: str = Field(min_length=1, max_length=255)
modality: GenerationModality
input_asset_supported: bool = False
input_schema: dict[str, object] = Field(default_factory=dict)
class GenerationProviderCapabilities(BaseModel):
"""Public, non-secret provider discovery metadata."""
model_config = ConfigDict(extra="forbid")
provider: str = Field(pattern=r"^[a-z][a-z0-9_-]{0,63}$")
name: str = Field(min_length=1, max_length=255)
models: list[GenerationModelCapability] = Field(default_factory=list)
implementation_status: str = Field(default="foundation", max_length=64)
supports_cancellation: bool = False
supports_status_reconciliation: bool = False