Add task summaries, closed-task search and a summary turn before discard

This commit is contained in:
Ian Gulliver
2026-10-16 10:08:08 -07:00
parent 2107a43ef2
commit fd63a0dfbc
25 changed files with 1013 additions and 268 deletions
+5 -15
View File
@@ -81,7 +81,7 @@ func (m *Manager) Merge(ctx context.Context, task api.Task, project api.Project,
default:
err := m.store.QueueMerge(ctx, task.Id, user.Login)
if errors.Is(err, store.ErrNotFound) {
return api.Task{}, fmt.Errorf("%w: task %s is closed or already waiting to merge", ErrConflict, task.Id)
return api.Task{}, fmt.Errorf("%w: task %s is closed, being discarded or already waiting to merge", ErrConflict, task.Id)
}
if err != nil {
return api.Task{}, err
@@ -97,12 +97,15 @@ func (m *Manager) startMerge(ctx context.Context, task api.Task, project api.Pro
}
err = m.store.SetMergingBy(ctx, task.Id, user.Login)
if errors.Is(err, store.ErrNotFound) {
return fmt.Errorf("%w: task %s is being discarded", ErrConflict, task.Id)
}
if err != nil {
return err
}
m.mergeHolders[project.Id] = task.Id
prompt := mergeInPrompt(project.DefaultBranch) + fmt.Sprintf(" When this turn ends, byre squashes this branch onto %s and pushes it; if you stop, call stop_merge first so it doesn't.", project.DefaultBranch)
prompt := mergeInPrompt(project.DefaultBranch) + fmt.Sprintf(" When this turn ends, byre squashes this branch onto %s and pushes it; if you stop, call stop_merge first so it doesn't. ", project.DefaultBranch) + summaryRequest
_, err = m.sendMergeIn(ctx, task, user, prompt)
if err != nil {
m.takeMerge(task.Id)
@@ -343,19 +346,6 @@ func squashMessage(title string, coAuthors []api.Participant) string {
return title + "\n\n" + strings.Join(trailers, "\n")
}
func (m *Manager) Discard(ctx context.Context, task api.Task, project api.Project, actor string) (api.Task, error) {
err := m.RemoveTask(ctx, task, project, actor)
if err != nil {
return api.Task{}, err
}
t, err := m.store.DiscardTask(ctx, task.Id, actor)
if err != nil {
return api.Task{}, err
}
go m.releaseMerge(project.Id, task.Id)
return t, nil
}
func (m *Manager) RemoveTask(ctx context.Context, task api.Task, project api.Project, actor string) error {
err := m.StopTask(ctx, task.Id, actor)
if err != nil {