import { ScrollView, View } from "react-native"; import { useProjects, useWorkspaces, useAgents, useAgent, type AgentRef, type WorkspaceRef, type ProjectRef, type PluginSidebarViewProps, } from "@getpaseo/plugin/client"; import { AgentRow, ProjectHeading, WorkspaceRow } from "./rows"; const indent = { paddingLeft: 12 }; function AgentTree({ reference, view }: { reference: AgentRef; view: PluginSidebarViewProps }) { const agent = useAgent(reference); const children = useAgents({ where: (item) => item.parentAgent?.key === reference.key && item.workspace.key === agent?.workspace.key, orderBy: "createdAt", }); return ( {children.map((child) => ( ))} ); } function RootWithParent({ reference, parent, workspace, view, }: { reference: AgentRef; parent: AgentRef; workspace: WorkspaceRef; view: PluginSidebarViewProps; }) { const parents = useAgents({ where: (item) => item.ref.key === parent.key && item.workspace.key === workspace.key, }); return parents.length > 0 ? null : ; } function Root({ reference, workspace, view, }: { reference: AgentRef; workspace: WorkspaceRef; view: PluginSidebarViewProps; }) { const agent = useAgent(reference); if (!agent) return null; return agent.parentAgent ? ( ) : ( ); } function Workspace({ reference, view }: { reference: WorkspaceRef; view: PluginSidebarViewProps }) { const agents = useAgents({ where: (item) => item.workspace.key === reference.key, orderBy: "createdAt", }); return ( {agents.map((agent) => ( ))} ); } function Project({ reference, view }: { reference: ProjectRef; view: PluginSidebarViewProps }) { const workspaces = useWorkspaces({ where: (item) => item.project.key === reference.key, orderBy: "name", }); return ( {workspaces.map((workspace) => ( ))} ); } export function Nested(view: PluginSidebarViewProps) { const projects = useProjects({ orderBy: "displayName" }); return ( {projects.map((reference) => ( ))} ); }