feat: implement Gitea issue-to-PR workflow

This commit is contained in:
2026-05-06 15:24:50 +08:00
parent e39c63f661
commit ba2c9d9f88
11 changed files with 1472 additions and 0 deletions

23
src/agent_gitea/state.py Normal file
View File

@@ -0,0 +1,23 @@
from __future__ import annotations
from .models import TaskState
ALLOWED_TRANSITIONS: dict[TaskState, set[TaskState]] = {
TaskState.DISCOVERED: {TaskState.CLAIMED, TaskState.CANCELLED},
TaskState.CLAIMED: {TaskState.PLANNING, TaskState.FAILED, TaskState.BLOCKED, TaskState.CANCELLED},
TaskState.PLANNING: {TaskState.IMPLEMENTING, TaskState.FAILED, TaskState.BLOCKED, TaskState.CANCELLED},
TaskState.IMPLEMENTING: {TaskState.TESTING, TaskState.FAILED, TaskState.BLOCKED, TaskState.CANCELLED},
TaskState.TESTING: {TaskState.PR_OPENED, TaskState.FAILED, TaskState.BLOCKED, TaskState.CANCELLED},
TaskState.PR_OPENED: {TaskState.REVIEWING, TaskState.FAILED, TaskState.CANCELLED},
TaskState.REVIEWING: {TaskState.HUMAN_REVIEW_READY, TaskState.FAILED, TaskState.CANCELLED},
TaskState.HUMAN_REVIEW_READY: {TaskState.DISCOVERED},
TaskState.BLOCKED: {TaskState.DISCOVERED, TaskState.CANCELLED},
TaskState.FAILED: {TaskState.DISCOVERED, TaskState.CANCELLED},
TaskState.CANCELLED: {TaskState.DISCOVERED},
}
def validate_transition(from_state: TaskState, to_state: TaskState) -> None:
if to_state not in ALLOWED_TRANSITIONS[from_state]:
raise ValueError(f"invalid task transition: {from_state.value} -> {to_state.value}")