Add review workflows, tree-shaped workflows and a workflow editor
This commit is contained in:
+17
-11
@@ -174,24 +174,30 @@ func (m *Manager) tryPromptReady(ctx context.Context, taskID string, fromReview
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
reviews, err := m.store.ListReviews(ctx, taskID)
|
||||
reviews, err := m.snapshotReviews(ctx, taskID, latest.N)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var review *api.Review
|
||||
for _, r := range reviews {
|
||||
if r.SnapshotN == latest.N {
|
||||
review = &r
|
||||
if len(reviews) == 0 {
|
||||
project, err := m.store.GetProject(ctx, task.ProjectId)
|
||||
if err != nil || project.ReviewWorkflow != "" {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if review == nil || (review.State != api.ReviewStateDone && review.State != api.ReviewStateSkipped) {
|
||||
return nil
|
||||
settled, err := m.reviewsSettled(ctx, reviews)
|
||||
if err != nil || !settled {
|
||||
return err
|
||||
}
|
||||
if fromReview && review.State == api.ReviewStateDone && review.Result != nil {
|
||||
findings, _ := (*review.Result)["findings"].([]any)
|
||||
if len(findings) > 0 {
|
||||
for _, r := range reviews {
|
||||
if r.State != api.ReviewStateDone && r.State != api.ReviewStateSkipped {
|
||||
return nil
|
||||
}
|
||||
if fromReview && r.Result != nil {
|
||||
findings, _ := (*r.Result)["findings"].([]any)
|
||||
if len(findings) > 0 {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
due, err := m.store.ReadyPromptDue(ctx, taskID)
|
||||
if err != nil || !due {
|
||||
@@ -202,7 +208,7 @@ func (m *Manager) tryPromptReady(ctx context.Context, taskID string, fromReview
|
||||
return err
|
||||
}
|
||||
prompt := readyPrompt
|
||||
if review.State == api.ReviewStateSkipped {
|
||||
if len(reviews) == 1 && reviews[0].State == api.ReviewStateSkipped {
|
||||
prompt = readyPromptUnchanged
|
||||
}
|
||||
_, err = m.Send(ctx, sess.Id, "byre", prompt, "", "")
|
||||
|
||||
Reference in New Issue
Block a user