diff --git a/internal/mail/router.go b/internal/mail/router.go --- a/internal/mail/router.go +++ b/internal/mail/router.go @@ -330,8 +330,29 @@ func agentBeadToAddress(bead *agentBead) string { } // Handle gt- prefixed IDs (legacy format) - if !strings.HasPrefix(id, "gt-") { - return "" // Not a valid agent bead ID + // Handle rig-specific prefixes: --- + // Examples: j-java-crew-americano -> java/crew/americano + idParts := strings.Split(id, "-") + if len(idParts) >= 3 { + for i, part := range idParts { + if part == "crew" || part == "polecat" || part == "polecats" { + if i >= 1 && i < len(idParts)-1 { + rig := idParts[i-1] + name := strings.Join(idParts[i+1:], "-") + return rig + "/" + part + "/" + name + } + } + if part == "witness" || part == "refinery" { + if i >= 1 { + return idParts[i-1] + "/" + part + } + } + } + } + + // Handle gt- prefixed IDs (legacy format) + if !strings.HasPrefix(id, "gt-") { + return "" // Not a valid agent bead ID } // Strip prefix