Source code for oas2mcp.generate.models

"""Export models for enhanced OpenAPI and FastMCP generation."""

from __future__ import annotations

from typing import Any, Literal

from pydantic import Field

from oas2mcp.agent.enhancer.models import OperationEnhancement
from oas2mcp.agent.summarizer.models import CatalogSummary
from oas2mcp.agent.surface.models import CatalogSurfacePlan
from oas2mcp.models.normalized import NormalizedBaseModel


[docs] class CatalogPromptDefinition(NormalizedBaseModel): """Prompt metadata exported for FastMCP registration."""
[docs] name: str
[docs] title: str
[docs] description: str
[docs] arguments: list[str] = Field(default_factory=list)
[docs] template: str
[docs] version: str | None = None
[docs] tags: list[str] = Field(default_factory=list)
[docs] meta: dict[str, Any] = Field(default_factory=dict)
[docs] class CatalogResourceDefinition(NormalizedBaseModel): """Resource metadata exported for FastMCP registration."""
[docs] kind: Literal["resource", "resource_template"]
[docs] uri: str
[docs] name: str
[docs] title: str
[docs] description: str
[docs] mime_type: str = "application/json"
[docs] handler: Literal["static", "operation_metadata", "namespace_operations"] = "static"
[docs] arguments: list[str] = Field(default_factory=list)
[docs] payload: Any | None = None
[docs] version: str | None = None
[docs] tags: list[str] = Field(default_factory=list)
[docs] meta: dict[str, Any] = Field(default_factory=dict)
[docs] annotations: dict[str, Any] = Field(default_factory=dict)
[docs] class EnhancedCatalog(NormalizedBaseModel): """Collected enhanced catalog ready for export."""
[docs] source_url: str
[docs] catalog_name: str
[docs] catalog_slug: str
[docs] catalog_version: str | None = None
[docs] summary: CatalogSummary
[docs] operations: list[OperationEnhancement] = Field(default_factory=list)
[docs] surface_plan: CatalogSurfacePlan | None = None
[docs] notes: list[str] = Field(default_factory=list)