Run workflow stages with finish_stage handoffs and lead signals

This commit is contained in:
Ian Gulliver
2026-10-15 22:11:25 -07:00
parent 0c698cd3c4
commit 2eccd23a98
15 changed files with 665 additions and 256 deletions
+17 -10
View File
@@ -16,8 +16,8 @@ import (
"g.fc.run/misc/byre/internal/todo"
)
func (m *Manager) CreateTask(ctx context.Context, project api.Project, title, createdBy, base, actor, workflowName string) (api.Task, error) {
frozen, err := m.freeze(ctx, workflowName)
func (m *Manager) CreateTask(ctx context.Context, project api.Project, title, createdBy, base, actor, workflowName, brief string) (api.Task, error) {
frozen, err := m.freeze(ctx, workflowName, brief)
if err != nil {
return api.Task{}, err
}
@@ -28,11 +28,6 @@ func (m *Manager) StartTodo(ctx context.Context, project api.Project, creator ap
if creator.GitName == "" || creator.GitEmail == "" {
return api.Task{}, ErrNoGitIdentity
}
frozen, err := m.freeze(ctx, workflowName)
if err != nil {
return api.Task{}, err
}
src, found, err := git.ReadFile(project.RepoPath, project.DefaultBranch, todo.File)
if err != nil {
return api.Task{}, err
@@ -55,14 +50,26 @@ func (m *Manager) StartTodo(ctx context.Context, project api.Project, creator ap
}
}
frozen, err := m.freeze(ctx, workflowName, todoPrompt(item))
if err != nil {
return api.Task{}, err
}
task, err := m.createTask(ctx, project, api.Task{Title: item.Title, CreatedBy: creator.Login, TodoItem: &item.Title}, frozen, project.DefaultBranch, actor)
if err != nil {
return api.Task{}, err
}
_, err = m.create(ctx, task, creator, todoPrompt(item), model, actor, nil)
if frozen != nil {
err = m.startWorkflow(ctx, task, creator, actor)
} else {
_, err = m.create(ctx, task, creator, todoPrompt(item), model, actor, nil)
if err != nil {
err = fmt.Errorf("task %s created, but its agent did not start: %w", task.Id, err)
}
}
if err != nil {
return api.Task{}, fmt.Errorf("task %s created, but its agent did not start: %w", task.Id, err)
return api.Task{}, err
}
if actor == creator.Login {
m.setStartedTodo(creator.Login, true)
@@ -172,7 +179,7 @@ func (m *Manager) createTaskFromAgent(ctx context.Context, l *live, raw json.Raw
model = sess.Model
}
task, err := m.CreateTask(ctx, project, args.Title, creator.Login, base, creator.Login, "")
task, err := m.CreateTask(ctx, project, args.Title, creator.Login, base, creator.Login, "", "")
if err != nil {
return "", err
}