import { isOrchestratorSession } from "@composio/ao-core"; type ProjectWithPrefix = { sessionPrefix?: string }; type SessionLike = { id: string; projectId: string; metadata?: Record }; /** * Check if a session belongs to a specific project. * Matches by projectId or sessionPrefix (same logic as resolveProject). * * @param session - Session with id and projectId * @param projectId - The project key to match against * @param projects - Projects config mapping */ function matchesProject( session: SessionLike, projectId: string, projects: Record, ): boolean { if (session.projectId === projectId) return true; const project = projects[projectId]; if (project?.sessionPrefix && session.id.startsWith(project.sessionPrefix)) return true; return false; } export function filterWorkerSessions( sessions: T[], projectFilter: string | null | undefined, projects: Record, ): T[] { const workers = sessions.filter((s) => !isOrchestratorSession(s)); if (!projectFilter || projectFilter === "all") return workers; return workers.filter((s) => matchesProject(s, projectFilter, projects)); }