Add a per-user lead agent and make the right pane task-focused
This commit is contained in:
+19
-4
@@ -19,6 +19,8 @@ func (s *Server) StreamEvents(w http.ResponseWriter, r *http.Request, params api
|
||||
if params.LastEventID != nil {
|
||||
last = *params.LastEventID
|
||||
}
|
||||
viewer := actor(r)
|
||||
lead := params.Lead != nil && *params.Lead
|
||||
taskID := ""
|
||||
if params.TaskId != nil {
|
||||
taskID = *params.TaskId
|
||||
@@ -29,10 +31,23 @@ func (s *Server) StreamEvents(w http.ResponseWriter, r *http.Request, params api
|
||||
}
|
||||
}
|
||||
backfill := func(after int64) ([]api.Event, error) {
|
||||
if taskID == "" {
|
||||
return s.store.EventsAfter(r.Context(), after, backfillPage)
|
||||
switch {
|
||||
case lead:
|
||||
return s.store.LeadEvents(r.Context(), viewer, after, backfillPage)
|
||||
case taskID != "":
|
||||
return s.store.TaskEvents(r.Context(), taskID, after, backfillPage)
|
||||
}
|
||||
return s.store.TaskEvents(r.Context(), taskID, after, backfillPage)
|
||||
return s.store.EventsAfter(r.Context(), viewer, after, backfillPage)
|
||||
}
|
||||
wanted := func(ev api.Event) bool {
|
||||
owned := ev.Owner != nil && *ev.Owner == viewer
|
||||
switch {
|
||||
case lead:
|
||||
return owned && ev.AgentSessionId != nil
|
||||
case taskID != "":
|
||||
return ev.TaskId != nil && *ev.TaskId == taskID
|
||||
}
|
||||
return ev.Owner == nil || owned
|
||||
}
|
||||
|
||||
rc := http.NewResponseController(w)
|
||||
@@ -75,7 +90,7 @@ func (s *Server) StreamEvents(w http.ResponseWriter, r *http.Request, params api
|
||||
if ev.Seq != 0 && ev.Seq <= last {
|
||||
continue
|
||||
}
|
||||
if taskID != "" && (ev.TaskId == nil || *ev.TaskId != taskID) {
|
||||
if !wanted(ev) {
|
||||
continue
|
||||
}
|
||||
if !writeEvent(w, ev) {
|
||||
|
||||
Reference in New Issue
Block a user