Simplify code found by simplicity audit of fa73b74
This commit is contained in:
@@ -17,7 +17,7 @@ func (s *Server) GetTaskChanges(w http.ResponseWriter, r *http.Request, taskID s
|
||||
return
|
||||
}
|
||||
|
||||
step := deref(params.Step)
|
||||
step := api.Deref(params.Step)
|
||||
if params.Snapshot != nil {
|
||||
if params.Since != nil {
|
||||
writeError(w, http.StatusBadRequest, errors.New("since and snapshot can't be used together"))
|
||||
@@ -93,7 +93,7 @@ func (s *Server) GetTaskDiff(w http.ResponseWriter, r *http.Request, taskID stri
|
||||
return
|
||||
}
|
||||
|
||||
patch, err := git.FileDiff(r.Context(), t.WorktreePath, params.Base, params.Tree, params.Path, deref(params.OldPath))
|
||||
patch, err := git.FileDiff(r.Context(), t.WorktreePath, params.Base, params.Tree, params.Path, api.Deref(params.OldPath))
|
||||
if err != nil {
|
||||
writeError(w, http.StatusInternalServerError, err)
|
||||
return
|
||||
|
||||
@@ -79,10 +79,7 @@ func (s *Server) ExecClient(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
name := ""
|
||||
if req.Client != nil {
|
||||
name = *req.Client
|
||||
}
|
||||
name := api.Deref(req.Client)
|
||||
if name == "" {
|
||||
recent := s.clients.RecentMacs()
|
||||
if len(recent) == 0 {
|
||||
|
||||
@@ -42,7 +42,7 @@ func (s *Server) GetProjectDir(w http.ResponseWriter, r *http.Request, projectID
|
||||
}
|
||||
|
||||
func serveDir(w http.ResponseWriter, r *http.Request, root string, p *string) {
|
||||
rel := deref(p)
|
||||
rel := api.Deref(p)
|
||||
name, full := taskPath(root, rel)
|
||||
|
||||
f, err := os.Open(full)
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
)
|
||||
|
||||
func (s *Server) ListInbox(w http.ResponseWriter, r *http.Request, params api.ListInboxParams) {
|
||||
f := store.InboxFilter{State: api.Open, ProjectID: deref(params.ProjectId), TaskID: deref(params.TaskId)}
|
||||
f := store.InboxFilter{State: api.Open, ProjectID: api.Deref(params.ProjectId), TaskID: api.Deref(params.TaskId)}
|
||||
if params.State != nil {
|
||||
f.State = *params.State
|
||||
}
|
||||
|
||||
+2
-14
@@ -4,9 +4,7 @@ import (
|
||||
"errors"
|
||||
"math"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"g.fc.run/ai/byre/internal/agents"
|
||||
"g.fc.run/ai/byre/internal/api"
|
||||
)
|
||||
|
||||
@@ -38,27 +36,17 @@ func (s *Server) ListLeadEvents(w http.ResponseWriter, r *http.Request, params a
|
||||
}
|
||||
|
||||
func (s *Server) MessageLead(w http.ResponseWriter, r *http.Request) {
|
||||
req := api.MessageCreate{}
|
||||
if !readJSON(w, r, &req) {
|
||||
return
|
||||
}
|
||||
|
||||
images, ok := s.images(w, r, req.Images)
|
||||
prompt, ok := s.readMessage(w, r)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
if strings.TrimSpace(req.Text) == "" && len(images) == 0 {
|
||||
writeError(w, http.StatusBadRequest, errors.New("text or images are required"))
|
||||
return
|
||||
}
|
||||
|
||||
u, ok := s.actingUser(w, r)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
sess, err := s.agents.MessageLead(r.Context(), u, agents.Prompt{Text: req.Text, Model: deref(req.Model), Effort: deref(req.Effort), SendID: deref(req.SendId), Client: r.Header.Get("Byre-Client"), Images: images})
|
||||
sess, err := s.agents.MessageLead(r.Context(), u, prompt)
|
||||
if err != nil {
|
||||
writeAgentError(w, err)
|
||||
return
|
||||
|
||||
+22
-32
@@ -273,14 +273,6 @@ func (s *Server) actingUser(w http.ResponseWriter, r *http.Request) (api.User, b
|
||||
return u, true
|
||||
}
|
||||
|
||||
func deref[T any](p *T) T {
|
||||
var zero T
|
||||
if p == nil {
|
||||
return zero
|
||||
}
|
||||
return *p
|
||||
}
|
||||
|
||||
func (s *Server) GetMe(w http.ResponseWriter, r *http.Request) {
|
||||
u, ok := s.actingUser(w, r)
|
||||
if !ok {
|
||||
@@ -393,7 +385,7 @@ func (s *Server) CreateTask(w http.ResponseWriter, r *http.Request, projectID st
|
||||
return
|
||||
}
|
||||
|
||||
title := strings.TrimSpace(deref(req.Title))
|
||||
title := strings.TrimSpace(api.Deref(req.Title))
|
||||
|
||||
p, err := s.store.GetProject(r.Context(), projectID)
|
||||
if err != nil {
|
||||
@@ -441,7 +433,7 @@ func (s *Server) CreateTask(w http.ResponseWriter, r *http.Request, projectID st
|
||||
return
|
||||
}
|
||||
|
||||
prompt := deref(req.Prompt)
|
||||
prompt := api.Deref(req.Prompt)
|
||||
if strings.TrimSpace(prompt) == "" && len(images) == 0 {
|
||||
writeError(w, http.StatusBadRequest, errors.New("prompt is empty"))
|
||||
return
|
||||
@@ -450,7 +442,7 @@ func (s *Server) CreateTask(w http.ResponseWriter, r *http.Request, projectID st
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
t, err := s.agents.StartTask(r.Context(), p, u, title, agents.Prompt{Text: prompt, Model: deref(req.Model), Effort: deref(req.Effort), Client: r.Header.Get("Byre-Client"), Images: images})
|
||||
t, err := s.agents.StartTask(r.Context(), p, u, title, agents.Prompt{Text: prompt, Model: api.Deref(req.Model), Effort: api.Deref(req.Effort), Client: r.Header.Get("Byre-Client"), Images: images})
|
||||
if err != nil {
|
||||
writeAgentError(w, err)
|
||||
return
|
||||
@@ -495,7 +487,7 @@ func (s *Server) StartTodoItem(w http.ResponseWriter, r *http.Request, projectID
|
||||
return
|
||||
}
|
||||
|
||||
tasks, err := s.agents.StartTodo(r.Context(), p, u, req.Title, deref(req.Model), deref(req.Effort), u.Login, "", deref(req.Discuss))
|
||||
tasks, err := s.agents.StartTodo(r.Context(), p, u, req.Title, api.Deref(req.Model), api.Deref(req.Effort), u.Login, "", api.Deref(req.Discuss))
|
||||
if err != nil {
|
||||
writeAgentError(w, err)
|
||||
return
|
||||
@@ -536,8 +528,8 @@ func (s *Server) MergeTask(w http.ResponseWriter, r *http.Request, taskID string
|
||||
}
|
||||
target = *req.Target
|
||||
}
|
||||
afterReview := deref(req.AfterReview)
|
||||
keepOpen := deref(req.KeepOpen)
|
||||
afterReview := api.Deref(req.AfterReview)
|
||||
keepOpen := api.Deref(req.KeepOpen)
|
||||
if keepOpen && (target != api.MergeTargetMain || afterReview) {
|
||||
writeError(w, http.StatusBadRequest, errors.New("keep_open is only for target main, without after_review"))
|
||||
return
|
||||
@@ -830,19 +822,27 @@ func (s *Server) ForkSnapshot(w http.ResponseWriter, r *http.Request, taskID str
|
||||
writeJSON(w, http.StatusCreated, fork)
|
||||
}
|
||||
|
||||
func (s *Server) ContinueSession(w http.ResponseWriter, r *http.Request, sessionID string) {
|
||||
func (s *Server) readMessage(w http.ResponseWriter, r *http.Request) (agents.Prompt, bool) {
|
||||
req := api.MessageCreate{}
|
||||
if !readJSON(w, r, &req) {
|
||||
return
|
||||
return agents.Prompt{}, false
|
||||
}
|
||||
|
||||
images, ok := s.images(w, r, req.Images)
|
||||
if !ok {
|
||||
return
|
||||
return agents.Prompt{}, false
|
||||
}
|
||||
|
||||
if strings.TrimSpace(req.Text) == "" && len(images) == 0 {
|
||||
writeError(w, http.StatusBadRequest, errors.New("text or images are required"))
|
||||
return agents.Prompt{}, false
|
||||
}
|
||||
return agents.Prompt{Text: req.Text, Model: api.Deref(req.Model), Effort: api.Deref(req.Effort), SendID: api.Deref(req.SendId), Client: r.Header.Get("Byre-Client"), Images: images}, true
|
||||
}
|
||||
|
||||
func (s *Server) ContinueSession(w http.ResponseWriter, r *http.Request, sessionID string) {
|
||||
prompt, ok := s.readMessage(w, r)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -866,7 +866,7 @@ func (s *Server) ContinueSession(w http.ResponseWriter, r *http.Request, session
|
||||
return
|
||||
}
|
||||
|
||||
task, err := s.agents.Continue(r.Context(), src, t, p, u, agents.Prompt{Text: req.Text, Model: deref(req.Model), Effort: deref(req.Effort), SendID: deref(req.SendId), Client: r.Header.Get("Byre-Client"), Images: images})
|
||||
task, err := s.agents.Continue(r.Context(), src, t, p, u, prompt)
|
||||
if err != nil {
|
||||
writeAgentError(w, err)
|
||||
return
|
||||
@@ -914,7 +914,7 @@ func (s *Server) CreateSession(w http.ResponseWriter, r *http.Request, taskID st
|
||||
return
|
||||
}
|
||||
|
||||
sess, err := s.agents.Create(r.Context(), t, u, agents.Prompt{Text: req.Prompt, Model: deref(req.Model), Effort: deref(req.Effort), SendID: deref(req.SendId), Client: r.Header.Get("Byre-Client"), Images: images})
|
||||
sess, err := s.agents.Create(r.Context(), t, u, agents.Prompt{Text: req.Prompt, Model: api.Deref(req.Model), Effort: api.Deref(req.Effort), SendID: api.Deref(req.SendId), Client: r.Header.Get("Byre-Client"), Images: images})
|
||||
if err != nil {
|
||||
writeAgentError(w, err)
|
||||
return
|
||||
@@ -932,22 +932,12 @@ func (s *Server) GetSession(w http.ResponseWriter, r *http.Request, sessionID st
|
||||
}
|
||||
|
||||
func (s *Server) SendMessage(w http.ResponseWriter, r *http.Request, sessionID string) {
|
||||
req := api.MessageCreate{}
|
||||
if !readJSON(w, r, &req) {
|
||||
return
|
||||
}
|
||||
|
||||
images, ok := s.images(w, r, req.Images)
|
||||
prompt, ok := s.readMessage(w, r)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
if strings.TrimSpace(req.Text) == "" && len(images) == 0 {
|
||||
writeError(w, http.StatusBadRequest, errors.New("text or images are required"))
|
||||
return
|
||||
}
|
||||
|
||||
sess, _, err := s.agents.Message(r.Context(), sessionID, actor(r), agents.Prompt{Text: req.Text, Model: deref(req.Model), Effort: deref(req.Effort), SendID: deref(req.SendId), Client: r.Header.Get("Byre-Client"), Images: images})
|
||||
sess, _, err := s.agents.Message(r.Context(), sessionID, actor(r), prompt)
|
||||
if err != nil {
|
||||
writeAgentError(w, err)
|
||||
return
|
||||
@@ -969,7 +959,7 @@ func (s *Server) CompactSession(w http.ResponseWriter, r *http.Request, sessionI
|
||||
if !readJSON(w, r, &req) {
|
||||
return
|
||||
}
|
||||
sess, err := s.agents.Compact(r.Context(), sessionID, deref(req.Model), deref(req.Effort))
|
||||
sess, err := s.agents.Compact(r.Context(), sessionID, api.Deref(req.Model), api.Deref(req.Effort))
|
||||
if err != nil {
|
||||
writeAgentError(w, err)
|
||||
return
|
||||
|
||||
@@ -20,8 +20,8 @@ func (s *Server) StreamEvents(w http.ResponseWriter, r *http.Request, params api
|
||||
last = *params.LastEventID
|
||||
}
|
||||
viewer := actor(r)
|
||||
lead := deref(params.Lead)
|
||||
taskID := deref(params.TaskId)
|
||||
lead := api.Deref(params.Lead)
|
||||
taskID := api.Deref(params.TaskId)
|
||||
if params.TaskId != nil {
|
||||
if !s.taskExists(w, r, taskID) {
|
||||
return
|
||||
|
||||
@@ -34,10 +34,7 @@ func (s *Server) PutWorkflow(w http.ResponseWriter, r *http.Request, name string
|
||||
writeError(w, http.StatusBadRequest, fmt.Errorf("read workflow: %w", err))
|
||||
return
|
||||
}
|
||||
from := ""
|
||||
if params.From != nil {
|
||||
from = *params.From
|
||||
}
|
||||
from := api.Deref(params.From)
|
||||
summary, err := s.agents.SaveWorkflow(r.Context(), name, from, body, actor(r))
|
||||
if err != nil {
|
||||
writeAgentError(w, err)
|
||||
|
||||
Reference in New Issue
Block a user