feat: migrate agent core to pydantic-ai framework

This commit is contained in:
Michael
2026-08-02 17:04:44 +02:00
parent 4f7059788d
commit be0d8dc24b
10 changed files with 109 additions and 117 deletions
+36
View File
@@ -0,0 +1,36 @@
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")