Add a per-user lead agent and make the right pane task-focused

This commit is contained in:
Ian Gulliver
2026-10-15 09:40:30 -07:00
parent d212590cdc
commit bdd1ae48f0
68 changed files with 3332 additions and 1364 deletions
+19 -4
View File
@@ -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) {