fix: restart Claude when session exists but Claude is dead
In startConfiguredCrew(), only HasSession() was checked, missing the case where a tmux session exists but Claude has exited. Now checks IsClaudeRunning() and restarts Claude with BuildCrewStartupCommand if dead, matching the behavior in runStartCrew(). (gt-ms8s4) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -263,7 +263,20 @@ func startConfiguredCrew(t *tmux.Tmux, townRoot string) {
|
|||||||
for _, crewName := range crewToStart {
|
for _, crewName := range crewToStart {
|
||||||
sessionID := crewSessionName(r.Name, crewName)
|
sessionID := crewSessionName(r.Name, crewName)
|
||||||
if running, _ := t.HasSession(sessionID); running {
|
if running, _ := t.HasSession(sessionID); running {
|
||||||
fmt.Printf(" %s %s/%s already running\n", style.Dim.Render("○"), r.Name, crewName)
|
// Session exists - check if Claude is still running
|
||||||
|
if !t.IsClaudeRunning(sessionID) {
|
||||||
|
// Claude has exited, restart it
|
||||||
|
fmt.Printf(" %s %s/%s session exists, restarting Claude...\n", style.Dim.Render("○"), r.Name, crewName)
|
||||||
|
claudeCmd := config.BuildCrewStartupCommand(r.Name, crewName, r.Path, "gt prime")
|
||||||
|
if err := t.SendKeys(sessionID, claudeCmd); err != nil {
|
||||||
|
fmt.Printf(" %s %s/%s restart failed: %v\n", style.Dim.Render("○"), r.Name, crewName, err)
|
||||||
|
} else {
|
||||||
|
fmt.Printf(" %s %s/%s Claude restarted\n", style.Bold.Render("✓"), r.Name, crewName)
|
||||||
|
startedAny = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fmt.Printf(" %s %s/%s already running\n", style.Dim.Render("○"), r.Name, crewName)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if err := startCrewMember(r.Name, crewName, townRoot); err != nil {
|
if err := startCrewMember(r.Name, crewName, townRoot); err != nil {
|
||||||
fmt.Printf(" %s %s/%s failed: %v\n", style.Dim.Render("○"), r.Name, crewName, err)
|
fmt.Printf(" %s %s/%s failed: %v\n", style.Dim.Render("○"), r.Name, crewName, err)
|
||||||
|
|||||||
Reference in New Issue
Block a user