feat(refinery,boot): add --agent flag for model selection (#469)
* feat(refinery,boot): add --agent flag for model selection (hq-7d5m) Add --agent flag to gt refinery start/attach/restart and gt boot spawn commands for consistent model selection across all agent launch points. Implementation follows the existing pattern from gt deacon start: - Add StringVar flag for agent alias - Pass override to Manager/Boot via SetAgentOverride() - Use BuildAgentStartupCommandWithAgentOverride when override is set Files affected: - cmd/gt/refinery.go: add flags to start/attach/restart commands - internal/refinery/manager.go: add SetAgentOverride and use in Start() - cmd/gt/boot.go: add flag to spawn command - internal/boot/boot.go: add SetAgentOverride and use in spawnTmux() Closes #438 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor(refinery,boot): use parameter-passing pattern for --agent flag Address PR review feedback: 1. ADD TESTS: Add tests for --agent flag existence following witness_test.go pattern - internal/cmd/refinery_test.go: tests for start/attach/restart - internal/cmd/boot_test.go: test for spawn 2. ALIGN PATTERN: Change from setter pattern to parameter-passing pattern - Manager.Start(foreground, agentOverride) instead of SetAgentOverride + Start - Boot.Spawn(agentOverride) instead of SetAgentOverride + Spawn - Matches witness.go style: Start(foreground bool, agentOverride string, ...) Updated all callers to pass empty string for default agent: - internal/daemon/daemon.go - internal/cmd/rig.go - internal/cmd/start.go - internal/cmd/up.go Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: furiosa <will@saults.io> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -16,9 +16,10 @@ import (
|
||||
|
||||
// Refinery command flags
|
||||
var (
|
||||
refineryForeground bool
|
||||
refineryStatusJSON bool
|
||||
refineryQueueJSON bool
|
||||
refineryForeground bool
|
||||
refineryStatusJSON bool
|
||||
refineryQueueJSON bool
|
||||
refineryAgentOverride string
|
||||
)
|
||||
|
||||
var refineryCmd = &cobra.Command{
|
||||
@@ -208,6 +209,13 @@ var refineryBlockedJSON bool
|
||||
func init() {
|
||||
// Start flags
|
||||
refineryStartCmd.Flags().BoolVar(&refineryForeground, "foreground", false, "Run in foreground (default: background)")
|
||||
refineryStartCmd.Flags().StringVar(&refineryAgentOverride, "agent", "", "Agent alias to run the Refinery with (overrides town default)")
|
||||
|
||||
// Attach flags
|
||||
refineryAttachCmd.Flags().StringVar(&refineryAgentOverride, "agent", "", "Agent alias to run the Refinery with (overrides town default)")
|
||||
|
||||
// Restart flags
|
||||
refineryRestartCmd.Flags().StringVar(&refineryAgentOverride, "agent", "", "Agent alias to run the Refinery with (overrides town default)")
|
||||
|
||||
// Status flags
|
||||
refineryStatusCmd.Flags().BoolVar(&refineryStatusJSON, "json", false, "Output as JSON")
|
||||
@@ -277,7 +285,7 @@ func runRefineryStart(cmd *cobra.Command, args []string) error {
|
||||
|
||||
fmt.Printf("Starting refinery for %s...\n", rigName)
|
||||
|
||||
if err := mgr.Start(refineryForeground); err != nil {
|
||||
if err := mgr.Start(refineryForeground, refineryAgentOverride); err != nil {
|
||||
if err == refinery.ErrAlreadyRunning {
|
||||
fmt.Printf("%s Refinery is already running\n", style.Dim.Render("⚠"))
|
||||
return nil
|
||||
@@ -490,7 +498,7 @@ func runRefineryAttach(cmd *cobra.Command, args []string) error {
|
||||
if !running {
|
||||
// Auto-start if not running
|
||||
fmt.Printf("Refinery not running for %s, starting...\n", rigName)
|
||||
if err := mgr.Start(false); err != nil {
|
||||
if err := mgr.Start(false, refineryAgentOverride); err != nil {
|
||||
return fmt.Errorf("starting refinery: %w", err)
|
||||
}
|
||||
fmt.Printf("%s Refinery started\n", style.Bold.Render("✓"))
|
||||
@@ -519,7 +527,7 @@ func runRefineryRestart(cmd *cobra.Command, args []string) error {
|
||||
}
|
||||
|
||||
// Start fresh
|
||||
if err := mgr.Start(false); err != nil {
|
||||
if err := mgr.Start(false, refineryAgentOverride); err != nil {
|
||||
return fmt.Errorf("starting refinery: %w", err)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user