File size: 1,824 Bytes
2a5c31d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from typing import List, Optional
from src.agents.hermes_agent import HermesCodingAgent
from src.agents.base import AgentContext
router = APIRouter(prefix="/coding", tags=["coding", "controller"])
class ChatRequest(BaseModel):
prompt: str
memoryFiles: Optional[List[str]] = None
class FileReadRequest(BaseModel):
filePath: str
class FileWriteRequest(BaseModel):
filePath: str
content: str
class TerminalRequest(BaseModel):
command: str
args: List[str] = []
@router.post("/chat")
async def chat(request: ChatRequest):
agent = HermesCodingAgent()
result = await agent.execute(AgentContext(), prompt=request.prompt, memory_files=request.memoryFiles or [])
if "error" in result:
raise HTTPException(status_code=400, detail=result["error"])
return result
@router.post("/file/read")
async def file_read(request: FileReadRequest):
agent = HermesCodingAgent()
res = agent.execute(AgentContext(), tool="file_read", file_path=request.filePath)
if "error" in res:
raise HTTPException(status_code=400, detail=res["error"])
return res
@router.post("/file/write")
async def file_write(request: FileWriteRequest):
agent = HermesCodingAgent()
res = agent.execute(AgentContext(), tool="file_write", file_path=request.filePath, content=request.content)
if "error" in res:
raise HTTPException(status_code=400, detail=res["error"])
return res
@router.post("/terminal")
async def terminal(request: TerminalRequest):
agent = HermesCodingAgent()
res = agent.execute(AgentContext(), tool="terminal", command=request.command, args=request.args)
if "error" in res:
raise HTTPException(status_code=400, detail=res["error"])
return res |