Offer "After review" in the Merge dialog while a review runs

This commit is contained in:
Ian Gulliver
2026-10-16 22:34:14 -07:00
parent c2d0ff77d7
commit b28968a0bc
25 changed files with 835 additions and 292 deletions
+39 -4
View File
@@ -415,8 +415,24 @@ func (s *Server) MergeTask(w http.ResponseWriter, r *http.Request, taskID string
return
}
if req.Target != nil && *req.Target == api.MergeTargetParent {
t, err = s.agents.MergeIntoParent(r.Context(), t, u)
if req.Target != nil && !req.Target.Valid() {
writeError(w, http.StatusBadRequest, fmt.Errorf("unknown target %q", *req.Target))
return
}
if req.AfterReview != nil && *req.AfterReview {
target := api.MergeTargetMain
if req.Target != nil {
target = *req.Target
}
title := ""
if target == api.MergeTargetMain {
if req.MergeTitle == nil {
writeError(w, http.StatusBadRequest, errors.New("merge_title is required to merge into the default branch"))
return
}
title = *req.MergeTitle
}
t, err = s.agents.MergeAfterReview(r.Context(), t, u, target, title)
if err != nil {
writeAgentError(w, err)
return
@@ -424,8 +440,13 @@ func (s *Server) MergeTask(w http.ResponseWriter, r *http.Request, taskID string
writeJSON(w, http.StatusAccepted, t)
return
}
if req.Target != nil && !req.Target.Valid() {
writeError(w, http.StatusBadRequest, fmt.Errorf("unknown target %q", *req.Target))
if req.Target != nil && *req.Target == api.MergeTargetParent {
t, err = s.agents.MergeIntoParent(r.Context(), t, u)
if err != nil {
writeAgentError(w, err)
return
}
writeJSON(w, http.StatusAccepted, t)
return
}
if req.MergeTitle == nil {
@@ -441,6 +462,20 @@ func (s *Server) MergeTask(w http.ResponseWriter, r *http.Request, taskID string
writeJSON(w, http.StatusAccepted, t)
}
func (s *Server) CancelMergeAfterReview(w http.ResponseWriter, r *http.Request, taskID string) {
err := s.store.CancelMergeAfterReview(r.Context(), taskID, actor(r))
if err != nil {
writeStoreError(w, err)
return
}
t, err := s.store.GetTask(r.Context(), taskID)
if err != nil {
writeStoreError(w, err)
return
}
writeJSON(w, http.StatusOK, t)
}
func (s *Server) MergeIn(w http.ResponseWriter, r *http.Request, taskID string) {
t, p, ok := s.activeTask(w, r, taskID)
if !ok {