76 lines
1.9 KiB
Python
76 lines
1.9 KiB
Python
"""
|
|
资源管理 API 路由
|
|
"""
|
|
from fastapi import APIRouter
|
|
from pydantic import BaseModel
|
|
from typing import List, Optional
|
|
import time
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
class TaskRequest(BaseModel):
|
|
agent_id: str
|
|
task: str
|
|
timeout: Optional[int] = 300
|
|
|
|
|
|
class TaskParseRequest(BaseModel):
|
|
task: str
|
|
|
|
|
|
@router.post("/execute")
|
|
async def execute_task(request: TaskRequest):
|
|
"""执行任务"""
|
|
return {
|
|
"success": True,
|
|
"message": f"任务 '{request.task}' 已执行",
|
|
"files_locked": ["src/main.py"],
|
|
"duration_seconds": 5.5
|
|
}
|
|
|
|
|
|
@router.get("/status")
|
|
async def get_all_status():
|
|
"""获取所有 Agent 状态"""
|
|
from ..services.agent_registry import get_agent_registry
|
|
from ..services.heartbeat import get_heartbeat_service
|
|
|
|
registry = get_agent_registry()
|
|
heartbeat_service = get_heartbeat_service()
|
|
|
|
# 获取所有已注册的 Agent
|
|
all_agents = await registry.list_agents()
|
|
agent_map = {a.agent_id: a for a in all_agents}
|
|
|
|
# 获取所有心跳
|
|
heartbeats_data = await heartbeat_service.get_all_heartbeats()
|
|
|
|
result = []
|
|
for agent_id, agent in agent_map.items():
|
|
heartbeat = heartbeats_data.get(agent_id)
|
|
result.append({
|
|
"agent_id": agent_id,
|
|
"info": {
|
|
"name": agent.name,
|
|
"role": agent.role,
|
|
"model": agent.model
|
|
},
|
|
"heartbeat": {
|
|
"status": heartbeat.status if heartbeat else "offline",
|
|
"current_task": heartbeat.current_task if heartbeat else "",
|
|
"progress": heartbeat.progress if heartbeat else 0
|
|
}
|
|
})
|
|
|
|
return {"agents": result}
|
|
|
|
|
|
@router.post("/parse-task")
|
|
async def parse_task(request: TaskParseRequest):
|
|
"""解析任务文件"""
|
|
return {
|
|
"task": request.task,
|
|
"files": ["src/main.py", "src/utils.py"]
|
|
}
|