Trim guided-flow banners; rely on form titles/descriptions · Entire

Trim guided-flow banners; rely on form titles/descriptions

9eae501→main·

dipree·1mo ago·1 file·+6 added/-18 removed

Sessions

21b76e6b269cView transcript

[?
List me all the potential command combinations for review.Pi·Opus 4.8·1 step](/content/gh/entireio/cli/session/019e9fb5-004d-7145-8f48-db6a240d0ab3#timeline-21b76e6b269c/index.html)

Changes

1

91 unmodified lines

92
93
94
95
96
97
98
95
96
97
14 unmodified lines

112
113
114
119
115
116
117
118
119
124
120
121
122
123
55 unmodified lines

179
180
181
186
187
188
189
190
191
182
183
184
185
241 unmodified lines

427
428
429
439
430
431
432
433
4 unmodified lines

438
439
440
450
451
452
453
441
442
443
2 unmodified lines

446
447
448
462
449
450
451
452
453

91 unmodified lines

if !ConfirmFirstRunSetup(ctx, out) {
        return "", settings.ReviewProfileConfig{}, ErrPickerCancelled
    }
    } else {
        fmt.Fprintln(out, "Configure a review profile.")
        fmt.Fprintln(out, "You'll choose a review type and worker agents. Skill details use opinionated defaults.")
        fmt.Fprintln(out,)
    }

launchable := launchableInstalledAgentNames(installed, reviewerFor)
14 unmodified lines

profileName = pickedProfile
    }

profile, err := promptForReviewCrew(ctx, out, profileName, launchable)
    profile, err := promptForReviewCrew(ctx, profileName, launchable)
    if err != nil {
        return "", settings.ReviewProfileConfig{}, err
    }
    if len(profile.Agents) > 1 {
        masterAgent, masterModel, err := promptForStandaloneMaster(ctx, out, launchable)
        masterAgent, masterModel, err := promptForStandaloneMaster(ctx, launchable)
        if err != nil {
            return "", settings.ReviewProfileConfig{}, err
        }
55 unmodified lines

// slot per launchable agent (the guided default is "all agents"), then lets the
// user add, edit, or remove slots from a list until Done. Duplicate slots (same
// agent and model) are allowed; each becomes its own worker.
func promptForReviewCrew(ctx context.Context, out io.Writer, profileName string, launchable []string) (settings.ReviewProfileConfig, error) {
    fmt.Fprintln(out, "Add review slots")
    fmt.Fprintln(out, "Each slot is an agent + model. The whole crew runs the same task;\n	set per-slot skills later with `entire scout --edit`.\n")

func promptForReviewCrew(ctx context.Context, profileName string, launchable []string) (settings.ReviewProfileConfig, error) {
    slots := make([]crewSlot, 0, len(launchable))
    for _, name := range launchable {
        slots = append(slots, crewSlot{agent: name})
    }
241 unmodified lines

// promptForStandaloneMaster picks the standalone master (judge) as its own
// agent + model, independent of the worker slots. Candidates are launchable
// agents that can write text. Returns (agentName, model).
func promptForStandaloneMaster(ctx context.Context, out io.Writer, launchable []string) (string, string, error) {
func promptForStandaloneMaster(ctx context.Context, launchable []string) (string, string, error) {
    candidates := make([]string, 0, len(launchable))
    for _, name := range launchable {
        if agentSupportsTextGeneration(ctx, name) {
4 unmodified lines

return "", "", errors.New("no installed agent can write the final report")
    }

fmt.Fprintln(out, "Choose the review master")
    fmt.Fprintln(out, "It evaluates the workers' reports and writes the final verdict.")
    fmt.Fprintln(out,)

agentName := candidates[0]
    if len(candidates) > 1 {
        options := make([]huh.Option[string], 0, len(candidates))
2 unmodified lines

}
        form := newAccessibleForm(huh.NewGroup(
        huh.NewSelect[string]().
            Title("Master agent").
            Title("Choose the review master").
            Description("Evaluates the workers' reports and writes the final verdict.").
            Options(options...).
            Height(reviewPickerHeight(len(options))).
            Value(&agentName),