From 9d0679dbedb41a01eef3e053edc1d1f92ecf1598 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Fri, 27 Dec 2024 17:48:58 +0500 Subject: [PATCH 01/10] remove activeAgentObject from within the ConversationObject --- .../react-agents/classes/chats-manager.ts | 7 ++++- .../classes/conversation-object.ts | 22 +++------------ .../react-agents/types/react-agents.d.ts | 4 --- .../react-agents/util/message-utils.ts | 27 +++++++++++++++++++ 4 files changed, 36 insertions(+), 24 deletions(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/chats-manager.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/chats-manager.ts index 607af52ac..f4f26f2be 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/chats-manager.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/chats-manager.ts @@ -35,7 +35,7 @@ import { import { TranscribedVoiceInput, } from 'react-agents/devices/audio-transcriber.mjs'; -import { formatConversationMessage } from '../util/message-utils'; +import { createMessageCache, formatConversationMessage } from '../util/message-utils'; // @@ -99,6 +99,11 @@ export class ChatsManager { endpointUrl, }); }, + messageCache: createMessageCache({ + agent, + conversationId: key, + agentId: agent.id, + }), }); this.agent.conversationManager.addConversation(conversation); 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 6cbab9d2d..3f1ec4d1d 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 @@ -18,7 +18,6 @@ import { loadMessagesFromDatabase } from '../util/loadMessagesFromDatabase'; // export class ConversationObject extends EventTarget { - agent: ActiveAgentObject; // the current agent agentsMap: Map; // note: agents does not include the current agent scene: SceneObject | null; getHash: GetHashFn; // XXX this can be a string, since conversation hashes do not change (?) @@ -27,37 +26,26 @@ export class ConversationObject extends EventTarget { mentionsRegex: RegExp | null = null; constructor({ - agent, agentsMap = new Map(), scene = null, getHash = () => '', mentionsRegex = null, + messageCache, }: { agent: ActiveAgentObject | null; agentsMap?: Map; scene?: SceneObject | null; getHash?: GetHashFn; mentionsRegex?: RegExp | null; + messageCache: MessageCache; }) { super(); - this.agent = agent; this.agentsMap = agentsMap; this.scene = scene; this.getHash = getHash; this.mentionsRegex = mentionsRegex; - this.messageCache = new MessageCacheConstructor({ - loader: async () => { - const supabase = this.agent.appContextValue.useSupabase(); - const messages = await loadMessagesFromDatabase({ - supabase, - conversationId: this.getKey(), - agentId: this.agent.id, - limit: CACHED_MESSAGES_LIMIT, - }); - return messages; - }, - }); + this.messageCache = messageCache; } // @@ -94,9 +82,6 @@ export class ConversationObject extends EventTarget { this.scene = scene; } - getAgent() { - return this.agent; - } // setAgent(agent: ActiveAgentObject) { // this.agent = agent; // } @@ -127,7 +112,6 @@ export class ConversationObject extends EventTarget { const allAgents: object[] = [ ...Array.from(this.agentsMap.values()).map(player => player.playerSpec), ]; - this.agent && allAgents.push(this.agent.agentJson); return allAgents; } getEmbeddingString() { diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/types/react-agents.d.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/types/react-agents.d.ts index 5ba795635..be7fe7ea2 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/types/react-agents.d.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/types/react-agents.d.ts @@ -309,7 +309,6 @@ export type Player = { }; export type GetHashFn = () => string; export type ConversationObject = EventTarget & { - agent: ActiveAgentObject; agentsMap: Map; scene: SceneObject | null; getHash: GetHashFn; @@ -331,9 +330,6 @@ export type ConversationObject = EventTarget & { getScene: () => SceneObject | null; setScene: (scene: SceneObject | null) => void; - getAgent: () => ActiveAgentObject | null; - // setAgent: (agent: ActiveAgentObject) => void; - getAgents: () => Player[]; getAgentIds: () => string[]; addAgent: (agentId: string, player: Player) => void; diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/message-utils.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/message-utils.ts index 25c3bb7d6..41f7a3c58 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/message-utils.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/message-utils.ts @@ -1,9 +1,12 @@ import { PendingActionMessage, AgentSpec, + ActiveAgentObject, // AgentObject, // ActiveAgentObject, } from '../types'; +import { MessageCache, CACHED_MESSAGES_LIMIT } from '../classes/message-cache'; +import { loadMessagesFromDatabase } from './loadMessagesFromDatabase'; export const formatConversationMessage = (rawMessage: PendingActionMessage, { agent, @@ -24,4 +27,28 @@ export const formatConversationMessage = (rawMessage: PendingActionMessage, { hidden: false, }; return newMessage; +}; + + +export const createMessageCache = ({ + agent, + conversationId, + agentId, +}: { + agent: ActiveAgentObject; + conversationId: string; + agentId: string; +}) => { + const supabase = agent.appContextValue.useSupabase(); + return new MessageCache({ + loader: async () => { + const messages = await loadMessagesFromDatabase({ + supabase, + conversationId, + agentId, + limit: CACHED_MESSAGES_LIMIT, + }); + return messages; + }, + }); }; \ No newline at end of file From 0e4be57a8c4335989417762085d36432e457e62f Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Fri, 27 Dec 2024 17:49:31 +0500 Subject: [PATCH 02/10] remove unused imports --- .../packages/react-agents/classes/conversation-object.ts | 2 -- 1 file changed, 2 deletions(-) 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 3f1ec4d1d..53b39c407 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 @@ -12,8 +12,6 @@ import { import { SceneObject } from '../classes/scene-object'; import { Player } from 'react-agents-client/util/player.mjs'; import { ExtendableMessageEvent } from '../util/extendable-message-event'; -import { MessageCache as MessageCacheConstructor, CACHED_MESSAGES_LIMIT } from './message-cache'; -import { loadMessagesFromDatabase } from '../util/loadMessagesFromDatabase'; // From 473a4f4d68ea9ce93887112e74ec8be69132e43f Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Fri, 27 Dec 2024 17:50:39 +0500 Subject: [PATCH 03/10] update discord manager to latest conversation object --- .../react-agents/classes/discord-manager.ts | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/discord-manager.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/discord-manager.ts index 52e5d37eb..8f8f90b3c 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/discord-manager.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/discord-manager.ts @@ -13,7 +13,7 @@ import { } from './conversation-object'; import { Player } from 'react-agents-client/util/player.mjs'; import { DiscordBotClient } from '../lib/discord/discord-client'; -import { formatConversationMessage } from '../util/message-utils'; +import { createMessageCache, formatConversationMessage } from '../util/message-utils'; import { bindConversationToAgent, } from '../runtime'; @@ -247,12 +247,18 @@ export class DiscordBot extends EventTarget { return } + const conversationId = `discord:channel:${channelId}`; const conversation = new ConversationObject({ agent, getHash: () => { - return `discord:channel:${channelId}`; + return conversationId; }, mentionsRegex: discordMentionRegex, + messageCache: createMessageCache({ + agent, + conversationId, + agentId: agent.id, + }), }); this.agent.conversationManager.addConversation(conversation); @@ -293,13 +299,19 @@ export class DiscordBot extends EventTarget { console.log('dm conversation already exists for this user, skipping', userId); return } - + + const conversationId = `discord:dm:${userId}`; const conversation = new ConversationObject({ agent, getHash: () => { - return `discord:dm:${userId}`; + return conversationId; }, mentionsRegex: discordMentionRegex, + messageCache: createMessageCache({ + agent, + conversationId, + agentId: agent.id, + }), }); this.agent.conversationManager.addConversation(conversation); From e1008531ed319b62b8fb22c8d6251e345a1b77a4 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Fri, 27 Dec 2024 17:51:55 +0500 Subject: [PATCH 04/10] update telnyx manager to latest conversation object --- .../packages/react-agents/classes/telnyx-manager.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/telnyx-manager.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/telnyx-manager.ts index 4d93a7f29..ec71a99f4 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/telnyx-manager.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/telnyx-manager.ts @@ -14,7 +14,7 @@ import type { TelnyxMessageArgs, TelnyxVoiceArgs, } from '../lib/telnyx/telnyx-client'; -import { formatConversationMessage } from '../util/message-utils'; +import { createMessageCache, formatConversationMessage } from '../util/message-utils'; import { bindConversationToAgent, } from '../runtime'; @@ -178,6 +178,11 @@ export class TelnyxBot extends EventTarget { conversation = new ConversationObject({ agent, getHash: () => hash, + messageCache: createMessageCache({ + agent, + conversationId: hash, + agentId: agent.id, + }), }); const player = makePlayerFromPhoneNumber(toPhoneNumber); conversation.addAgent(player.playerId, player); From 0d49b94b3e3ea2baa4367dd5229a00f3a65aac19 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Fri, 27 Dec 2024 17:52:27 +0500 Subject: [PATCH 05/10] update twitter manager to latest converastion object --- .../packages/react-agents/classes/twitter-manager.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-manager.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-manager.ts index 11662a203..a79495527 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-manager.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-manager.ts @@ -13,7 +13,7 @@ import { ConversationObject, } from './conversation-object'; // import { Player } from 'react-agents-client/util/player.mjs'; -import { formatConversationMessage } from '../util/message-utils'; +import { createMessageCache, formatConversationMessage } from '../util/message-utils'; import { bindConversationToAgent, } from '../runtime'; @@ -200,6 +200,11 @@ class TwitterBot { conversation = new ConversationObject({ agent: this.agent, getHash: () => `twitter:conversation:${conversation_id}`, + messageCache: createMessageCache({ + agent: this.agent, + conversationId: `twitter:conversation:${conversation_id}`, + agentId: this.agent.id, + }), }); this.agent.conversationManager.addConversation(conversation); From cf43af110e50349cf34f966cce74177d17f57881 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Fri, 27 Dec 2024 17:52:47 +0500 Subject: [PATCH 06/10] update twitter spaces to latest conversation manager --- .../react-agents/classes/twitter-spaces-manager.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-spaces-manager.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-spaces-manager.ts index 22f67808f..249f5c6f5 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-spaces-manager.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-spaces-manager.ts @@ -14,7 +14,7 @@ import { bindConversationToAgent, } from '../runtime'; import { AudioDecodeStream } from 'codecs/audio-decode.mjs'; -import { formatConversationMessage } from '../util/message-utils'; +import { createMessageCache, formatConversationMessage } from '../util/message-utils'; import { QueueManager, } from 'queue-manager'; @@ -85,6 +85,11 @@ class TwitterSpacesBot { getHash: () => { return `twitterSpaces:channel:${url}`; }, + messageCache: createMessageCache({ + agent, + conversationId: `twitterSpaces:channel:${url}`, + agentId: agent.id, + }), }); this.agent.conversationManager.addConversation(conversation); From f08b0afb28f0ee4b1fb38f4ee3f16e41aefc4425 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Fri, 27 Dec 2024 17:53:32 +0500 Subject: [PATCH 07/10] update action loop conversation object --- .../packages/react-agents/loops/action-loop.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/action-loop.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/action-loop.tsx index 5969474b4..0a4ab76f2 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/action-loop.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/action-loop.tsx @@ -5,6 +5,7 @@ import { ReACTEvaluator } from '../evaluators/react-evaluator'; // import { PerceptionEvent } from '../classes/perception-event'; import { ConversationObject } from '../classes/conversation-object'; import { DeferConversation } from '../components/core/conversation'; +import { createMessageCache } from '../util/message-utils'; export const ActionLoop = (props: LoopProps) => { return ( @@ -43,6 +44,11 @@ const ActionLoopInner = (props: LoopProps) => { return new ConversationObject({ agent, getHash: () => conversationId, + messageCache: createMessageCache({ + agent, + conversationId, + agentId: agent.id, + }), }); } }); From 67c7658dd735d4ca6b846db29a991698d474834b Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 12:15:07 +0500 Subject: [PATCH 08/10] add agentPlayer as arg to conv object, add agentPlayer to agentsMap --- .../packages/react-agents/classes/conversation-object.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 53b39c407..e36e38871 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 @@ -25,13 +25,14 @@ export class ConversationObject extends EventTarget { constructor({ agentsMap = new Map(), + agentPlayer, scene = null, getHash = () => '', mentionsRegex = null, messageCache, }: { - agent: ActiveAgentObject | null; agentsMap?: Map; + agentPlayer: Player; scene?: SceneObject | null; getHash?: GetHashFn; mentionsRegex?: RegExp | null; @@ -44,6 +45,9 @@ export class ConversationObject extends EventTarget { this.getHash = getHash; this.mentionsRegex = mentionsRegex; this.messageCache = messageCache; + + // add the agent player to the agents map + this.agentsMap.set(agentPlayer.playerId, agentPlayer); } // From 47047e9f7aaa0cc1a004c70032a217c4658c6602 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 12:24:35 +0500 Subject: [PATCH 09/10] update clients to set agentPlayer --- .../packages/react-agents/classes/chats-manager.ts | 8 ++++++-- .../packages/react-agents/classes/discord-manager.ts | 12 ++++++++++-- .../packages/react-agents/classes/telnyx-manager.ts | 7 ++++++- .../packages/react-agents/classes/twitter-manager.ts | 7 ++++++- .../react-agents/classes/twitter-spaces-manager.ts | 7 ++++++- .../packages/react-agents/loops/action-loop.tsx | 7 ++++++- 6 files changed, 40 insertions(+), 8 deletions(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/chats-manager.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/chats-manager.ts index f4f26f2be..7989fb2d5 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/chats-manager.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/chats-manager.ts @@ -21,7 +21,7 @@ import { import { bindConversationToAgent, } from '../runtime'; -// import { Player } from 'react-agents-client/util/player.mjs'; +import { Player } from 'react-agents-client/util/player.mjs'; import { ReactAgentsMultiplayerConnection } from 'react-agents-client/react-agents-client.mjs'; import { ExtendableMessageEvent, @@ -91,8 +91,12 @@ export class ChatsManager { agent, } = this; + const agentPlayer = new Player(agent.id, { + name: agent.name, + bio: agent.bio, + }); const conversation = new ConversationObject({ - agent, + agentPlayer, getHash: () => { return getChatKey({ room, diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/discord-manager.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/discord-manager.ts index 8f8f90b3c..19219645e 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/discord-manager.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/discord-manager.ts @@ -248,8 +248,12 @@ export class DiscordBot extends EventTarget { } const conversationId = `discord:channel:${channelId}`; + const agentPlayer = new Player(agent.id, { + name: agent.name, + bio: agent.bio, + }); const conversation = new ConversationObject({ - agent, + agentPlayer, getHash: () => { return conversationId; }, @@ -301,8 +305,12 @@ export class DiscordBot extends EventTarget { } const conversationId = `discord:dm:${userId}`; + const agentPlayer = new Player(agent.id, { + name: agent.name, + bio: agent.bio, + }); const conversation = new ConversationObject({ - agent, + agentPlayer, getHash: () => { return conversationId; }, diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/telnyx-manager.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/telnyx-manager.ts index ec71a99f4..f76e52353 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/telnyx-manager.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/telnyx-manager.ts @@ -175,8 +175,13 @@ export class TelnyxBot extends EventTarget { }); let conversation = this.conversations.get(hash); if (!conversation) { + + const agentPlayer = new Player(agent.id, { + name: agent.name, + bio: agent.bio, + }); conversation = new ConversationObject({ - agent, + agentPlayer, getHash: () => hash, messageCache: createMessageCache({ agent, diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-manager.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-manager.ts index a79495527..f4ec6e994 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-manager.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-manager.ts @@ -197,8 +197,13 @@ class TwitterBot { // Create or get conversation let conversation = this.conversations.get(conversation_id); if (!conversation) { + const agentPlayer = new Player(this.agent.id, { + name: this.agent.name, + bio: this.agent.bio, + }); + conversation = new ConversationObject({ - agent: this.agent, + agentPlayer, getHash: () => `twitter:conversation:${conversation_id}`, messageCache: createMessageCache({ agent: this.agent, diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-spaces-manager.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-spaces-manager.ts index 249f5c6f5..f50a74397 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-spaces-manager.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/twitter-spaces-manager.ts @@ -24,6 +24,7 @@ import { import { TranscribedVoiceInput, } from '../devices/audio-transcriber.mjs'; +import { Player } from 'react-agents-client/util/player.mjs'; // @@ -80,8 +81,12 @@ class TwitterSpacesBot { live = false; }); + const agentPlayer = new Player(this.agent.id, { + name: this.agent.name, + bio: this.agent.bio, + }); const conversation = new ConversationObject({ - agent, + agentPlayer, getHash: () => { return `twitterSpaces:channel:${url}`; }, diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/action-loop.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/action-loop.tsx index 0a4ab76f2..6c6a8b0c3 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/action-loop.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/action-loop.tsx @@ -6,6 +6,7 @@ import { ReACTEvaluator } from '../evaluators/react-evaluator'; import { ConversationObject } from '../classes/conversation-object'; import { DeferConversation } from '../components/core/conversation'; import { createMessageCache } from '../util/message-utils'; +import { Player } from 'react-agents-client/util/player.mjs'; export const ActionLoop = (props: LoopProps) => { return ( @@ -40,9 +41,13 @@ const ActionLoopInner = (props: LoopProps) => { if (contextConversation) { return contextConversation; } else { + const agentPlayer = new Player(agent.id, { + name: agent.name, + bio: agent.bio, + }); const conversationId = crypto.randomUUID(); return new ConversationObject({ - agent, + agentPlayer, getHash: () => conversationId, messageCache: createMessageCache({ agent, From a314c528ca5934ff853b1a6e462b3c8be871587a Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 12:50:03 +0500 Subject: [PATCH 10/10] update CharactersPrompt component --- .../components/util/default-components.tsx | 89 ++++++++----------- 1 file changed, 39 insertions(+), 50 deletions(-) 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..6e2a273cc 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 @@ -4,6 +4,7 @@ import type { AgentObject, Attachment, FormattedAttachment, + Player, } from '../../types'; import { useAgent, @@ -117,59 +118,47 @@ const ScenePrompt = () => { }; const CharactersPrompt = () => { const conversation = useConversation(); - const agent = useAgent(); - const name = useName(); - const bio = usePersonality(); - 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 activeAgent = useAgent(); - const formatAgent = (agent: any) => { - return [ - `Name: ${agent.name}`, - `UserId: ${agent.id}`, - `Bio: ${agent.bio}`, - ].join('\n'); - }; + if (!conversation) return null; - return ( - - {dedent` - # Your Character - ` + - '\n\n' + - formatAgent(currentAgentSpec) + - (agents.length > 0 - ? ( - '\n\n' + - dedent` - # Other Characters - ` + - '\n\n' + - agentSpecs - .map(formatAgent) - .join('\n\n') - ) - : '' + const agents = conversation.getAgents(); + const agentCharacter = agents.find(agent => agent.playerId === activeAgent.id); + const otherAgents = agents + .filter(agent => agent.playerId !== activeAgent.id); + + const formatAgent = (agent: Player) => { + const agentSpecs = agent.getPlayerSpec() as any; + return [ + `Name: ${agentSpecs?.name}`, + `UserId: ${agent.playerId}`, + `Bio: ${agentSpecs?.bio}`, + ].join('\n'); + }; + + return ( + + {dedent` + # Your Character + ` + + '\n\n' + + formatAgent(agentCharacter) + + (agents.length > 0 + ? ( + '\n\n' + + dedent` + # Other Characters + ` + + '\n\n' + + otherAgents + .map(formatAgent) + .join('\n\n') ) - } - - ); - } else { - return null; - } + : '' + ) + } + + ); }; const ActionsPromptInternal = () => { const actions = useActions();