Files
byre/internal/server/inbox.go
T

70 lines
1.4 KiB
Go
Raw Normal View History

package server
import (
"net/http"
2026-10-18 15:32:07 -07:00
"g.fc.run/ai/byre/internal/api"
"g.fc.run/ai/byre/internal/store"
)
2026-10-23 15:10:06 -07:00
func (s *Server) ListInbox(w http.ResponseWriter, r *http.Request) {
items, err := s.store.ListInbox(r.Context(), store.InboxFilter{State: api.Open})
if err != nil {
writeStoreError(w, err)
return
}
writeJSON(w, http.StatusOK, items)
}
func (s *Server) DismissInbox(w http.ResponseWriter, r *http.Request, itemID string) {
item, err := s.agents.Dismiss(r.Context(), actor(r), itemID)
if err != nil {
writeAgentError(w, err)
return
}
writeJSON(w, http.StatusOK, item)
}
func (s *Server) AnswerAgain(w http.ResponseWriter, r *http.Request) {
req := api.InboxResponseCreate{}
if !readJSON(w, r, &req) {
return
}
_, ok := s.images(w, r, req.Images)
if !ok {
return
}
2026-10-23 09:56:40 -07:00
u, ok := s.actingUser(w, r)
if !ok {
return
}
fork, err := s.agents.AnswerAgain(r.Context(), u, req)
if err != nil {
writeAgentError(w, err)
return
}
writeJSON(w, http.StatusCreated, fork)
}
func (s *Server) RespondInbox(w http.ResponseWriter, r *http.Request) {
req := api.InboxRespond{}
if !readJSON(w, r, &req) {
return
}
for _, c := range req.Responses {
_, ok := s.images(w, r, c.Images)
if !ok {
return
}
}
items, err := s.agents.Respond(r.Context(), actor(r), req.Responses)
if err != nil {
writeAgentError(w, err)
return
}
writeJSON(w, http.StatusOK, items)
}