from typing import Literal from pydantic import BaseModel, Field from contracts.base import _StrictModel class FileSelection(_StrictModel): path: str = Field(...) role: Literal["primary", "context", "test"] = Field(...) reason: str = Field(...) confidence: float = Field(ge=0.0, le=1.0) class FileSelectionOutput(_StrictModel): selections: list[FileSelection] = Field(...) notes: list[str] = Field(...)