import subprocess import os from fastapi import FastAPI, HTTPException from pydantic import BaseModel app = FastAPI(title="OpenCode API") class PromptRequest(BaseModel): prompt: str @app.post("/ask") async def ask_openai(request: PromptRequest): try: result = subprocess.run( ["opencode", "-p", request.prompt], capture_output=True, text=True, timeout=60, env={**os.environ, "OPENCODE_DATA_DIR": "/data"} ) if result.returncode != 0: raise HTTPException(status_code=500, detail=result.stderr) return {"response": result.stdout} except subprocess.TimeoutExpired: raise HTTPException(status_code=504, detail="Request timeout") except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @app.get("/") def root(): return {"message": "OpenCode API is running. Use POST /ask with JSON {\"prompt\": \"your question\"}"}