package api import ( "net/http" "codespace/internal/model" "codespace/internal/service" "github.com/gin-gonic/gin" ) type acpHandler struct { svc *service.AcpService } func (h *acpHandler) status(c *gin.Context) { id := c.Param("id") status, err := h.svc.Status(id) if err != nil { writeError(c, err) return } c.JSON(http.StatusOK, model.AcpStatusResponse{ WorkspaceID: status.WorkspaceID, Ready: status.Ready, SessionID: status.SessionID, Running: status.Running, PID: status.PID, Error: status.Error, }) } func (h *acpHandler) history(c *gin.Context) { id := c.Param("id") hist, err := h.svc.History(id) if err != nil { writeError(c, err) return } c.JSON(http.StatusOK, hist) } func (h *acpHandler) prompt(c *gin.Context) { id := c.Param("id") var req model.AcpPromptRequest if err := c.ShouldBindJSON(&req); err != nil { writeBadRequest(c, "invalid json") return } if req.Content == "" { writeBadRequest(c, "content is required") return } res, err := h.svc.Prompt(id, req.Content) if err != nil { writeError(c, err) return } c.JSON(http.StatusOK, res) } func (h *acpHandler) cancel(c *gin.Context) { id := c.Param("id") if err := h.svc.Cancel(id); err != nil { writeError(c, err) return } c.Status(http.StatusNoContent) }