| from enum import Enum |
| from typing import List, Optional |
|
|
| from pydantic import BaseModel, Field |
|
|
|
|
| class CodeTaskType(str, Enum): |
| GENERATE = "generate" |
| FIX = "fix" |
| EXPLAIN = "explain" |
| REFACTOR = "refactor" |
| REVIEW = "review" |
| UNKNOWN = "unknown" |
|
|
|
|
| class SourceType(str, Enum): |
| STACKOVERFLOW = "stackoverflow" |
| GITHUB = "github" |
| MODEL = "model" |
|
|
|
|
| class RetrievedEvidence(BaseModel): |
| source_type: SourceType |
| title: str = Field(..., min_length=1) |
| snippet: str = Field(..., min_length=1) |
| url: Optional[str] = None |
| score: Optional[float] = None |
|
|
|
|
| class ResponseMeta(BaseModel): |
| used_model: str = Field(..., min_length=1) |
| fallback_used: bool = False |
| retrieval_used: bool = False |
| source_count: int = 0 |
| processing_time_ms: Optional[int] = None |
|
|
|
|
| class CodeXRequest(BaseModel): |
| message: str = Field(..., min_length=1) |
| session_id: Optional[str] = None |
| mode: Optional[CodeTaskType] = None |
| language: Optional[str] = None |
| code: Optional[str] = None |
| error_message: Optional[str] = None |
| framework: Optional[str] = None |
| file_name: Optional[str] = None |
| previous_context: Optional[str] = None |
| use_retrieval: bool = True |
|
|
|
|
| class CodeXResponse(BaseModel): |
| answer: str = Field(..., min_length=1) |
| task_type: CodeTaskType |
| code_output: Optional[str] = None |
| explanation: Optional[str] = None |
| warnings: List[str] = Field(default_factory=list) |
| sources: List[RetrievedEvidence] = Field(default_factory=list) |
| needs_clarification: bool = False |
| meta: ResponseMeta |