37 lines
2.0 KiB
Python
37 lines
2.0 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import Optional
|
|
|
|
|
|
class NotificationDecision(BaseModel):
|
|
"""Structured decision returned by NotificationReaderAgent."""
|
|
action: str = Field(..., description="Action to take: 'PROCESS_ISSUE', 'PROCESS_PR', or 'SKIP'")
|
|
owner: str = Field(default="", description="Repository owner")
|
|
repo: str = Field(default="", description="Repository name")
|
|
number: int = Field(default=0, description="Issue or PR number")
|
|
reason: str = Field(..., description="Reason for the routing decision")
|
|
|
|
|
|
class CoordinatorDecision(BaseModel):
|
|
"""Structured decision returned by CoordinatorAgent."""
|
|
action: str = Field(..., description="Action to take: 'PROPOSE_PLAN', 'EXECUTE_PLAN', 'ANSWER_QUESTION', 'CLOSE_ISSUE', 'NO_ACTION'")
|
|
issue_number: int = Field(default=0, description="Issue number")
|
|
plan: Optional[str] = Field(default=None, description="Proposed or approved implementation plan")
|
|
answer: Optional[str] = Field(default=None, description="Answer to question")
|
|
comment: Optional[str] = Field(default=None, description="Closing comment")
|
|
|
|
|
|
class ExecutionPlan(BaseModel):
|
|
"""Structured implementation plan generated by PlanningAgent."""
|
|
issue_number: int = Field(..., description="Target issue number")
|
|
title: str = Field(..., description="Plan title")
|
|
steps: list[str] = Field(default_factory=list, description="Step-by-step implementation tasks")
|
|
summary: str = Field(default="", description="Summary of proposed changes")
|
|
|
|
|
|
class CodingTaskResult(BaseModel):
|
|
"""Structured execution result returned by CodingAgent."""
|
|
status: str = Field(..., description="Execution status: 'SUCCESS', 'FAILED', or 'PARTIAL'")
|
|
summary: str = Field(default="", description="Summary of completed coding work")
|
|
modified_files: list[str] = Field(default_factory=list, description="List of modified or created files")
|
|
error_message: Optional[str] = Field(default=None, description="Error message if execution failed")
|