utils/teammate/teammate_utils library

Classes

DynamicTeamContext
Dynamic team context for runtime team joining.
IdleNotificationMessage
Structured message sent when a teammate becomes idle.
InProcessTeammateTask
Representation of an in-process teammate task.
ModeSetRequestMessage
Mode set request from leader to teammate.
PermissionRequestMessage
Permission request from worker to leader via mailbox.
PermissionResponseError
PermissionResponseMessage
Permission response from leader to worker.
PermissionResponseSuccess
PlanApprovalRequestMessage
Plan approval request from teammate to leader.
PlanApprovalResponseMessage
Plan approval response from leader to teammate.
SandboxPermissionRequestMessage
Sandbox permission request from worker to leader.
SandboxPermissionResponseMessage
Sandbox permission response from leader to worker.
ShutdownApprovedMessage
Shutdown approved from teammate to leader.
ShutdownRejectedMessage
Shutdown rejected from teammate to leader.
ShutdownRequestMessage
Shutdown request from leader to teammate.
TaskAssignmentMessage
Task assignment message.
TeammateContext
Runtime context for in-process teammates. Stored in a zone-based context for concurrent access (Dart equivalent of AsyncLocalStorage).
TeammateMessage
A message stored in a teammate's inbox file.
TeammateStatus
Detailed status of a teammate.
TeamPermissionUpdateMessage
Team permission update from leader to teammates.
TeamSummary
Summary info about a team.

Constants

teamLeadName → const String
Team lead agent name constant.
teammateMessageTag → const String
XML tag used for teammate messages.

Functions

appendTeamMemorySummaryParts(Map<String, int> memoryCounts, bool isActive, List<String> parts) → void
Append team memory summary parts to the parts array.
clearDynamicTeamContext() → void
Clear the dynamic team context (called when leaving a team).
clearMailbox(String agentName, {String? teamName}) Future<void>
Clear a teammate's inbox (delete all messages).
createIdleNotification(String agentId, {String? idleReason, String? summary, String? completedTaskId, String? completedStatus, String? failureReason}) IdleNotificationMessage
Creates an idle notification message to send to the team leader.
createModeSetRequestMessage({required String mode, required String from}) ModeSetRequestMessage
Creates a mode set request message.
createPermissionRequestMessage({required String requestId, required String agentId, required String toolName, required String toolUseId, required String description, required Map<String, dynamic> input, List? permissionSuggestions}) PermissionRequestMessage
Creates a permission request message.
createPermissionResponseMessage({required String requestId, required String subtype, String? error, Map<String, dynamic>? updatedInput, List? permissionUpdates}) PermissionResponseMessage
Creates a permission response message.
createSandboxPermissionRequestMessage({required String requestId, required String workerId, required String workerName, String? workerColor, required String host}) SandboxPermissionRequestMessage
Creates a sandbox permission request.
createSandboxPermissionResponseMessage({required String requestId, required String host, required bool allow}) SandboxPermissionResponseMessage
Creates a sandbox permission response.
createShutdownApprovedMessage({required String requestId, required String from, String? paneId, String? backendType}) ShutdownApprovedMessage
Creates a shutdown approved message.
createShutdownRejectedMessage({required String requestId, required String from, required String reason}) ShutdownRejectedMessage
Creates a shutdown rejected message.
createShutdownRequestMessage({required String requestId, required String from, String? reason}) ShutdownRequestMessage
Creates a shutdown request message.
createTeammateContext({required String agentId, required String agentName, required String teamName, String? color, required bool planModeRequired, required String parentSessionId, Completer<void>? abortController}) TeammateContext
Create a TeammateContext from spawn configuration.
formatTeammateMessages(List<TeammateMessage> messages) String
Format teammate messages as XML for attachment display.
getAgentId() String?
Returns the agent ID if this session is running as a teammate in a swarm, or null if running as a standalone session.
getAgentName() String?
Returns the agent name if running as a teammate in a swarm.
getDynamicTeamContext() DynamicTeamContext?
Get the current dynamic team context (for inspection / debugging).
getInboxPath(String agentName, {String? teamName}) String
Get the path to a teammate's inbox file.
getLastPeerDmSummary(List<Map<String, dynamic>> messages) String?
Extracts a "to {name} {summary}" string from the last assistant message if it ended with a SendMessage tool_use targeting a peer.
getParentSessionId() String?
Returns the parent session ID for this teammate. Priority: AsyncLocalStorage (in-process) > dynamicTeamContext (tmux).
getTeammateColor() String?
Returns the teammate's assigned colour, or null.
getTeammateContext() TeammateContext?
Get the current in-process teammate context, if running as one. Returns null if not running within an in-process teammate context.
getTeammateStatuses(String teamName, {Map<String, dynamic>? teamFileOverride}) List<TeammateStatus>
Get detailed teammate statuses for a team by reading the team file.
getTeamName({String? teamContextTeamName}) String?
Returns the team name if this session is part of a team. Pass teamContext from AppState to support leaders without dynamicTeamContext.
hasActiveInProcessTeammates(Map<String, InProcessTeammateTask> tasks) bool
Checks if there are any active in-process teammates running.
hasWorkingInProcessTeammates(Map<String, InProcessTeammateTask> tasks) bool
Checks if there are in-process teammates still actively working on tasks.
isIdleNotification(String messageText) IdleNotificationMessage?
Checks if a message text contains an idle notification.
isInProcessTeammate() bool
Check if current execution is within an in-process teammate.
isModeSetRequest(String messageText) ModeSetRequestMessage?
Checks if a message text contains a mode set request.
isPermissionRequest(String messageText) PermissionRequestMessage?
Checks if a message text contains a permission request.
isPermissionResponse(String messageText) PermissionResponseMessage?
Checks if a message text contains a permission response.
isPlanApprovalRequest(String messageText) PlanApprovalRequestMessage?
Checks if a message text contains a plan approval request.
isPlanApprovalResponse(String messageText) PlanApprovalResponseMessage?
Checks if a message text contains a plan approval response.
isPlanModeRequired() bool
Returns true if this teammate session requires plan mode before implementation.
isSandboxPermissionRequest(String messageText) SandboxPermissionRequestMessage?
Checks if a message text contains a sandbox permission request.
isSandboxPermissionResponse(String messageText) SandboxPermissionResponseMessage?
Checks if a message text contains a sandbox permission response.
isShutdownApproved(String messageText) ShutdownApprovedMessage?
Checks if a message text contains a shutdown approved message.
isShutdownRejected(String messageText) ShutdownRejectedMessage?
Checks if a message text contains a shutdown rejected message.
isShutdownRequest(String messageText) ShutdownRequestMessage?
Checks if a message text contains a shutdown request.
isStructuredProtocolMessage(String messageText) bool
Checks if a message text is a structured protocol message.
isTaskAssignment(String messageText) TaskAssignmentMessage?
Checks if a message text contains a task assignment.
isTeamLead({String? leadAgentId}) bool
Check if this session is a team lead.
isTeammate() bool
Returns true if this session is running as a teammate in a swarm.
isTeamMemFile(String path) bool
Checks if a path is a team memory file.
isTeamMemorySearch(Map<String, dynamic>? toolInput) bool
Check if a search tool use targets team memory files.
isTeamMemoryWriteOrEdit(String toolName, Map<String, dynamic>? toolInput) bool
Check if a Write or Edit tool use targets a team memory file.
isTeamPermissionUpdate(String messageText) TeamPermissionUpdateMessage?
Checks if a message text contains a team permission update.
markMessageAsReadByIndex(String agentName, int messageIndex, {String? teamName}) Future<void>
Mark a specific message as read by index.
markMessagesAsRead(String agentName, {String? teamName}) Future<void>
Mark all messages in a teammate's inbox as read.
markMessagesAsReadByPredicate(String agentName, bool predicate(TeammateMessage), {String? teamName}) Future<void>
Mark messages matching predicate as read, leaving others unread.
readMailbox(String agentName, {String? teamName}) Future<List<TeammateMessage>>
Read all messages from a teammate's inbox.
readUnreadMessages(String agentName, {String? teamName}) Future<List<TeammateMessage>>
Read only unread messages from a teammate's inbox.
runWithTeammateContext<T>(TeammateContext context, T fn()) → T
Run fn with context set as the current teammate context. Dart equivalent of AsyncLocalStorage.run().
sendShutdownRequestToMailbox(String targetName, {String? teamName, String? reason}) Future<({String requestId, String target})>
Sends a shutdown request to a teammate's mailbox.
setDynamicTeamContext(DynamicTeamContext? context) → void
Set the dynamic team context (called when joining a team at runtime).
waitForTeammatesToBecomeIdle(Map<String, InProcessTeammateTask> tasks, void setTasks(Map<String, InProcessTeammateTask> updateFn(Map<String, InProcessTeammateTask>))) Future<void>
Returns a future that completes when all working in-process teammates become idle. Returns immediately if no teammates are working.
writeToMailbox(String recipientName, TeammateMessage message, {String? teamName}) Future<void>
Write a message to a teammate's inbox. Uses file locking via a .lock file sentinel to prevent race conditions.

Typedefs

PaneBackendType = String
Backend type for a pane (tmux, ssh, etc).