diff --git a/internal/cmd/handoff.go b/internal/cmd/handoff.go index aa39ef59..7fb24f02 100644 --- a/internal/cmd/handoff.go +++ b/internal/cmd/handoff.go @@ -126,6 +126,17 @@ func runHandoff(cmd *cobra.Command, args []string) error { // Send lifecycle request to manager manager := getManager(role) + + // Crew workers are human-managed - no automated manager to wait for + if role == RoleCrew { + fmt.Printf("\n%s Handoff complete\n", style.Bold.Render("✓")) + fmt.Println(style.Dim.Render("Crew workers are human-managed. To complete the cycle:")) + fmt.Println(style.Dim.Render(" 1. Exit this session (Ctrl+D or 'exit')")) + fmt.Println(style.Dim.Render(" 2. Run 'gt crew attach' to start fresh")) + fmt.Println(style.Dim.Render(" 3. New session will see handoff message in inbox")) + return nil + } + if err := sendLifecycleRequest(manager, role, action, townRoot); err != nil { return fmt.Errorf("sending lifecycle request: %w", err) } @@ -202,6 +213,10 @@ func detectHandoffRole() Role { if strings.HasSuffix(sessionName, "-refinery") { return RoleRefinery } + // Crew sessions: gt--crew- + if strings.Contains(sessionName, "-crew-") { + return RoleCrew + } // Polecat sessions: gt-- if strings.HasPrefix(sessionName, "gt-") && strings.Count(sessionName, "-") >= 2 { return RolePolecat