Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
2.3 kB · 81 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182/** * Team Discovery - Utilities for discovering teams and teammate status * * Scans ~/.claude/teams/ to find teams where the current session is the leader. * Used by the Teams UI in the footer to show team status. */
import { isPaneBackend, type PaneBackendType } from './swarm/backends/types.js'import { readTeamFile } from './swarm/teamHelpers.js'
export type TeamSummary = { name: string memberCount: number runningCount: number idleCount: number}
export type TeammateStatus = { name: string agentId: string agentType?: string model?: string prompt?: string status: 'running' | 'idle' | 'unknown' color?: string idleSince?: string // ISO timestamp from idle notification tmuxPaneId: string cwd: string worktreePath?: string isHidden?: boolean // Whether the pane is currently hidden from the swarm view backendType?: PaneBackendType // The backend type used for this teammate mode?: string // Current permission mode for this teammate}
/** * Get detailed teammate statuses for a team * Reads isActive from config to determine status */export function getTeammateStatuses(teamName: string): TeammateStatus[] { const teamFile = readTeamFile(teamName) if (!teamFile) { return [] }
const hiddenPaneIds = new Set(teamFile.hiddenPaneIds ?? []) const statuses: TeammateStatus[] = []
for (const member of teamFile.members) { // Exclude team-lead from the list if (member.name === 'team-lead') { continue }
// Read isActive from config, defaulting to true (active) if undefined const isActive = member.isActive !== false const status: 'running' | 'idle' = isActive ? 'running' : 'idle'
statuses.push({ name: member.name, agentId: member.agentId, agentType: member.agentType, model: member.model, prompt: member.prompt, status, color: member.color, tmuxPaneId: member.tmuxPaneId, cwd: member.cwd, worktreePath: member.worktreePath, isHidden: hiddenPaneIds.has(member.tmuxPaneId), backendType: member.backendType && isPaneBackend(member.backendType) ? member.backendType : undefined, mode: member.mode, }) }
return statuses}
// Note: For time formatting, use formatRelativeTimeAgo from '../utils/format.js'