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
cmd/entire/cli/review
Mpicker.go+6/-18
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),