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:
@@ -103,7 +103,8 @@ func (m *Manager) Status() (*Refinery, error) {
|
||||
// Start starts the refinery.
|
||||
// If foreground is true, runs in the current process (blocking) using the Go-based polling loop.
|
||||
// Otherwise, spawns a Claude agent in a tmux session to process the merge queue.
|
||||
func (m *Manager) Start(foreground bool) error {
|
||||
// The agentOverride parameter allows specifying an agent alias to use instead of the town default.
|
||||
func (m *Manager) Start(foreground bool, agentOverride string) error {
|
||||
ref, err := m.loadState()
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -174,7 +175,16 @@ func (m *Manager) Start(foreground bool) error {
|
||||
|
||||
// Build startup command first
|
||||
bdActor := fmt.Sprintf("%s/refinery", m.rig.Name)
|
||||
command := config.BuildAgentStartupCommand("refinery", bdActor, m.rig.Path, "")
|
||||
var command string
|
||||
if agentOverride != "" {
|
||||
var err error
|
||||
command, err = config.BuildAgentStartupCommandWithAgentOverride("refinery", bdActor, m.rig.Path, "", agentOverride)
|
||||
if err != nil {
|
||||
return fmt.Errorf("building startup command with agent override: %w", err)
|
||||
}
|
||||
} else {
|
||||
command = config.BuildAgentStartupCommand("refinery", bdActor, m.rig.Path, "")
|
||||
}
|
||||
|
||||
// Create session with command directly to avoid send-keys race condition.
|
||||
// See: https://github.com/anthropics/gastown/issues/280
|
||||
|
||||
Reference in New Issue
Block a user