59 lines
1.3 KiB
Python
59 lines
1.3 KiB
Python
"""Pydantic models for code draft generation."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from .shared import Any, BaseModel, Dict, Field, List, Optional
|
|
|
|
|
|
class CodeDraftRequest(BaseModel):
|
|
"""Code draft generation request."""
|
|
|
|
signal_id: str
|
|
signal_content: str
|
|
strategic_analysis: Dict[str, Any]
|
|
target_files: List[str]
|
|
project_root: str = "."
|
|
|
|
|
|
class FileInfo(BaseModel):
|
|
"""Target file metadata and optional content."""
|
|
|
|
path: str
|
|
language: str
|
|
exists: bool
|
|
content: Optional[str] = None
|
|
lines_count: int = 0
|
|
|
|
|
|
class GeneratedFile(BaseModel):
|
|
"""Generated file payload."""
|
|
|
|
path: str
|
|
content: str
|
|
language: str
|
|
diff: str
|
|
is_new: bool
|
|
review_points: List[str] = []
|
|
|
|
|
|
class CodeDraftResponse(BaseModel):
|
|
"""Code draft generation response."""
|
|
|
|
success: bool
|
|
files: List[GeneratedFile]
|
|
summary: str
|
|
confidence: float = Field(default=0.0, ge=0.0, le=1.0)
|
|
warnings: List[str] = Field(default_factory=list)
|
|
review_points: List[str] = Field(default_factory=list)
|
|
estimated_complexity: str = "low"
|
|
generation_time: float = 0.0
|
|
metadata: Dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
__all__ = [
|
|
"CodeDraftRequest",
|
|
"FileInfo",
|
|
"GeneratedFile",
|
|
"CodeDraftResponse",
|
|
]
|