hope / coding.py
Cunt1257's picture
Upload 10 files
2a5c31d verified
Raw
History Blame Contribute Delete
1.82 kB
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