Add 'entire scout --list' to list configured profiles · Entire

Add 'entire scout --list' to list configured profiles

23f389e→main·

dipree·1mo ago·2 files·+60 added/-1 removed

Prints each configured scout profile with its workers (agent · model) and master, marking the default. No review run needed. Fills the gap where profiles were only visible via the non-interactive --configure discovery view.

Sessions

811f804b5518View transcript

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

Changes

2

76 unmodified lines

77
78
79
80
81
82
83
34 unmodified lines

118
119
120
121
122
123
124
32 unmodified lines

157
158
159
160
161
162
163
164
165
40 unmodified lines

206
207
208
209
210
211
212
136 unmodified lines

349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407

76 unmodified lines

var findings bool
    var listModels bool
    var listAgents bool
    var listProfiles bool
    var setAgents []string
    var setMaster string
    var setTask string
34 unmodified lines

--edit         re-open the advanced profile skill picker
  --findings     browse local findings
  --agent NAME   run only one worker from the selected profile
  --list         list configured scout profiles (their workers and master)
  --agents       list the worker agents you can pass to --agent for the profile
  --model NAME   override the model for the --agent worker (requires --agent)
  --models       list the models each agent advertises (optionally --agent NAME)
32 unmodified lines

}
        return runReviewListAgents(ctx, cmd, listProfile, deps)
    }
    if listProfiles {
        return runReviewListProfiles(ctx, cmd, deps)
    }

modes := 0
    for _, enabled := range []bool{configure, edit, findings} {
40 unmodified lines

cmd.Flags().BoolVar(&findings, "findings", false, "browse local review findings")
    cmd.Flags().BoolVar(&listAgents, "agents", false, "list the worker agents you can pass to --agent for the selected profile")
    cmd.Flags().BoolVar(&listModels, "models", false, "list the models each review agent advertises (optionally filtered by --agent)")
    cmd.Flags().BoolVar(&listProfiles, "list", false, "list configured scout profiles (workers and master)")
    cmd.Flags().StringVar(&agentOverride, "agent", "", "run one configured worker from the selected profile")
    cmd.Flags().StringVar(&modelOverride, "model", "", "override the model for the --agent worker (requires --agent)")
    cmd.Flags().StringVar(&profileOverride, "profile", "", "review profile to run (default: review_default_profile or general)")
136 unmodified lines

return nil
}

// runReviewListProfiles prints the configured scout profiles with their workers
// and master, marking the default. Needs settings but no review run.
func runReviewListProfiles(ctx context.Context, cmd *cobra.Command, deps Deps) error {
    out := cmd.OutOrStdout()
    s, err := settings.Load(ctx)
    if err != nil {
        cmd.SilenceUsage = true
        fmt.Fprintf(cmd.ErrOrStderr(), "Failed to load settings: %v\n", err)
        return deps.NewSilentError(err)
    }
    if s == nil {
        s = &settings.EntireSettings{}
    }
    profiles := nonZeroProfiles(s.ReviewProfiles)
    if len(profiles) == 0 {
        fmt.Fprintln(out, "No scout profiles configured. Create one with `entire scout --configure`.")
        return nil
    }
    defaultName := strings.TrimSpace(s.ReviewDefaultProfile)
    fmt.Fprintln(out, "Profiles:")
    for _, name := range sortedProfileNames(profiles) {
        p := profiles[name]
        p.Agents = nonZeroAgentConfigs(p.Agents)
        marker := ""
        if name == defaultName {
            marker = "  (default)"
        }
        fmt.Fprintf(out, "  %s%s\n", name, marker)

workers := make([]string, 0, len(p.Agents))
        for _, w := range sortedProfileAgentNames(p) {
            cfg := p.Agents[w]
            model := strings.TrimSpace(cfg.Model)
            if model == "" {
                model = "default"
            }
            workers = append(workers, reviewAgentName(w, cfg)+" · "+model)
        }
        fmt.Fprintf(out, "    workers: %s\n", strings.Join(workers, ", "))

if masterAgent, masterModel, ok := profileMasterIdentity(p); ok {
            label := masterAgent
            if strings.TrimSpace(masterModel) != "" {
                label += " · " + masterModel
            }
            fmt.Fprintf(out, "    master:  %s\n", label)
        }
    }
    fmt.Fprintln(out)
    fmt.Fprintln(out, "Run one with `entire scout <name>`.")
    return nil
}

const reviewHooksInstalledStatus = "hooks installed"

// runReviewListAgents lists the worker agents valid for `--agent` in the