diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/conversation-object.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/conversation-object.ts index 240749580..8d9552465 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/conversation-object.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/conversation-object.ts @@ -111,9 +111,11 @@ export class ConversationObject extends EventTarget { } addAgent(agentId: string, player: Player) { this.agentsMap.set(agentId, player); + this.dispatchEvent(new Event('agentschange')); } removeAgent(agentId: string) { this.agentsMap.delete(agentId); + this.dispatchEvent(new Event('agentschange')); } getKey() { diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/util/default-components.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/util/default-components.tsx index 364df23f2..ac24f6cce 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/util/default-components.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/util/default-components.tsx @@ -120,21 +120,24 @@ const CharactersPrompt = () => { const agent = useAgent(); const name = useName(); const bio = usePersonality(); + const [agents, setAgents] = useState([]); if (conversation) { - const agents = conversation.getAgents(); const currentAgentSpec = { id: agent.id, name, bio, }; - const agentSpecs = agents.map((agent) => { - const agentSpec = agent.getPlayerSpec() as any; - return { - name: agentSpec?.name, - id: agent.playerId, - bio: agentSpec?.bio, - }; - }); + + const agentSpecs = agents + .filter(mapAgent => mapAgent.playerId !== agent.id) + .map((agent) => { + const agentSpec = agent.getPlayerSpec() as any; + return { + name: agentSpec?.name, + id: agent.playerId, + bio: agentSpec?.bio, + }; + }); const formatAgent = (agent: any) => { return [ @@ -144,6 +147,18 @@ const CharactersPrompt = () => { ].join('\n'); }; + useEffect(() => { + const updateAgents = () => { + const agents = conversation.getAgents(); + setAgents(agents); + }; + conversation.addEventListener('agentschange', updateAgents); + + return () => { + conversation.removeEventListener('agentschange', updateAgents); + }; + }, [conversation]); + return ( {dedent`