Let the agent set the merge commit title, defaulting to the task title
This commit is contained in:
+22
-2
@@ -159,6 +159,8 @@ CREATE TABLE turn_queue_next (
|
||||
INSERT INTO turn_queue_next (session_id, actor, text, created_at) SELECT session_id, actor, text, created_at FROM turn_queue;
|
||||
DROP TABLE turn_queue;
|
||||
ALTER TABLE turn_queue_next RENAME TO turn_queue;
|
||||
`}, {"add-task-merge-title", `
|
||||
ALTER TABLE tasks ADD COLUMN merge_title TEXT NOT NULL DEFAULT '';
|
||||
`}}
|
||||
|
||||
type Store struct {
|
||||
@@ -412,6 +414,21 @@ func (s *Store) GetTask(ctx context.Context, id string) (api.Task, error) {
|
||||
return t, err
|
||||
}
|
||||
|
||||
func (s *Store) SetMergeTitle(ctx context.Context, id, title, actor string) error {
|
||||
return s.write(ctx, func(tx *sql.Tx, emit emitFunc) error {
|
||||
projectID := ""
|
||||
err := tx.QueryRowContext(ctx, `UPDATE tasks SET merge_title = ? WHERE id = ? AND status = ? RETURNING project_id`,
|
||||
title, id, string(api.TaskStatusActive)).Scan(&projectID)
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return ErrNotFound
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return emit(api.Event{Kind: "task.merge_title", ProjectId: &projectID, TaskId: &id, Actor: actor, Payload: map[string]any{"id": id, "merge_title": title}})
|
||||
})
|
||||
}
|
||||
|
||||
func (s *Store) MergeTask(ctx context.Context, id, commit, actor string) (api.Task, error) {
|
||||
return s.closeTask(ctx, id, api.TaskStatusMerged, commit, actor, "task.merged", map[string]any{"id": id, "commit": commit})
|
||||
}
|
||||
@@ -710,7 +727,7 @@ func (s *Store) write(ctx context.Context, fn func(tx *sql.Tx, emit emitFunc) er
|
||||
|
||||
const projectColumns = `id, name, repo_path, default_branch, remote, created_by, created_at`
|
||||
|
||||
const taskColumns = `id, project_id, title, branch, worktree_path, base_ref, status, created_by, created_at, closed_at, merge_commit`
|
||||
const taskColumns = `id, project_id, title, merge_title, branch, worktree_path, base_ref, status, created_by, created_at, closed_at, merge_commit`
|
||||
|
||||
const sessionColumns = `id, task_id, vendor, model, vendor_session_id, state, role, created_by, created_at`
|
||||
|
||||
@@ -735,10 +752,13 @@ func scanTask(row scanner) (api.Task, error) {
|
||||
createdAt := ""
|
||||
closedAt := sql.NullString{}
|
||||
mergeCommit := ""
|
||||
err := row.Scan(&t.Id, &t.ProjectId, &t.Title, &t.Branch, &t.WorktreePath, &t.BaseRef, &status, &t.CreatedBy, &createdAt, &closedAt, &mergeCommit)
|
||||
err := row.Scan(&t.Id, &t.ProjectId, &t.Title, &t.MergeTitle, &t.Branch, &t.WorktreePath, &t.BaseRef, &status, &t.CreatedBy, &createdAt, &closedAt, &mergeCommit)
|
||||
if err != nil {
|
||||
return t, err
|
||||
}
|
||||
if t.MergeTitle == "" {
|
||||
t.MergeTitle = t.Title
|
||||
}
|
||||
t.Status = api.TaskStatus(status)
|
||||
t.CreatedAt, err = parseTime(createdAt)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user