From 067b4210dbb25c9e59d0b76102b3187f7ce80bda Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Wed, 25 Dec 2024 13:20:36 +0500 Subject: [PATCH 01/53] receive reaction events from bot --- .../react-agents/lib/discord/discord-client.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js b/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js index 4089113fc..bf5168439 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js @@ -536,6 +536,20 @@ export class DiscordBotClient extends EventTarget { this.input.handleVoiceIdle(args); break; } + case 'messagereactionadd': { + console.log('messagereactionadd', args); + this.dispatchEvent(new MessageEvent('messagereactionadd', { + data: args, + })); + break; + } + case 'messagereactionremove': { + console.log('messagereactionremove', args); + this.dispatchEvent(new MessageEvent('messagereactionremove', { + data: args, + })); + break; + } default: { console.warn('unhandled json method', method); break; From c0f6e5d1465c213dfa3a56a69ca6b6fde526bf45 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Wed, 25 Dec 2024 13:32:46 +0500 Subject: [PATCH 02/53] delegate reaction handling to DiscordOutput, bind incoming message reactions to discord manager --- .../react-agents/classes/discord-manager.ts | 30 +++++++++++++++++++ .../lib/discord/discord-client.js | 24 ++++++++++----- 2 files changed, 46 insertions(+), 8 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..f41132b1b 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 @@ -411,11 +411,41 @@ export class DiscordBot extends EventTarget { }); }; + // message reactions + const _bindIncomingMessageReactions = () => { + discordBotClient.output.addEventListener('messagereactionadd', (e: MessageEvent) => { + const { + userId, + messageId, + emoji, + } = e.data; + console.log('messagereactionadd', { + userId, + messageId, + emoji, + }); + }); + + discordBotClient.output.addEventListener('messagereactionremove', (e: MessageEvent) => { + const { + userId, + messageId, + emoji, + } = e.data; + console.log('messagereactionremove', { + userId, + messageId, + emoji, + }); + }); + }; + (async () => { _bindChannels(); _bindGuildMemberAdd(); _bindGuildMemberRemove(); _bindIncoming(); + _bindIncomingMessageReactions(); await _connect(); })().catch(err => { console.warn('discord bot error', err); diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js b/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js index bf5168439..f0468f55b 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js @@ -340,6 +340,20 @@ export class DiscordOutput extends EventTarget { } } + handleMessageReactionAdd(args) { + console.log('handleMessageReactionAdd', args); + this.dispatchEvent(new MessageEvent('messagereactionadd', { + data: args, + })); + } + + handleMessageReactionRemove(args) { + console.log('handleMessageReactionRemove', args); + this.dispatchEvent(new MessageEvent('messagereactionremove', { + data: args, + })); + } + destroy() { for (const stream of this.streams.values()) { stream.destroy(); @@ -537,17 +551,11 @@ export class DiscordBotClient extends EventTarget { break; } case 'messagereactionadd': { - console.log('messagereactionadd', args); - this.dispatchEvent(new MessageEvent('messagereactionadd', { - data: args, - })); + this.output.handleMessageReactionAdd(args); break; } case 'messagereactionremove': { - console.log('messagereactionremove', args); - this.dispatchEvent(new MessageEvent('messagereactionremove', { - data: args, - })); + this.output.handleMessageReactionRemove(args); break; } default: { From 6fe58fe65eb241b9856a746a137d8c0d8370ec4f Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Wed, 25 Dec 2024 14:18:57 +0500 Subject: [PATCH 03/53] init process message reactions in runtime --- .../classes/conversation-object.ts | 24 +++++++++++++ .../react-agents/classes/discord-manager.ts | 36 +++++++++++++++++++ .../packages/react-agents/runtime.ts | 9 +++++ .../react-agents/types/react-agents.d.ts | 7 ++++ 4 files changed, 76 insertions(+) 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..8ff948f45 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 @@ -8,6 +8,7 @@ import { PlayableAudioStream, GetHashFn, MessageCache, + MessageReactionEventData, } from '../types' import { SceneObject } from '../classes/scene-object'; import { Player } from 'react-agents-client/util/player.mjs'; @@ -358,4 +359,27 @@ export class ConversationObject extends EventTarget { }), ); } + + + async processMessageReaction( + reaction, + messageId, + userId, + ) { + console.log('process reaction: ',{ + reaction, + messageId, + userId, + }); + + const e = new ExtendableMessageEvent('localMessageReaction', { + data: { + reaction, + messageId, + userId, + }, + }); + this.dispatchEvent(e); + } + } 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 f41132b1b..8c30ba8f9 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 @@ -370,6 +370,7 @@ export class DiscordBot extends EventTarget { text, channelId, // if there is no channelId, it's a DM // XXX discord channel/dm distinction can be made more explicit with a type: string field... + messageId, } = e.data; // look up conversation @@ -390,6 +391,7 @@ export class DiscordBot extends EventTarget { method: 'say', args: { text: formattedMessage, + messageId, }, }; const id = getIdFromUserId(userId); @@ -418,12 +420,32 @@ export class DiscordBot extends EventTarget { userId, messageId, emoji, + channelId, } = e.data; console.log('messagereactionadd', { userId, messageId, emoji, + channelId, }); + + console.log('this.dmConversations: ', this.dmConversations); + console.log('this.channelConversations: ', this.channelConversations); + console.log('userId: ', userId); + console.log('channelId: ', channelId); + + // look up conversation + let conversation: ConversationObject | null = null; + if (this.dmConversations.has(userId)) { + conversation = this.dmConversations.get(userId) ?? null; + } else { + conversation = this.channelConversations.get(channelId) ?? null; + } + + if (conversation) { + conversation.processMessageReaction(emoji, messageId, userId); + } + }); discordBotClient.output.addEventListener('messagereactionremove', (e: MessageEvent) => { @@ -431,12 +453,26 @@ export class DiscordBot extends EventTarget { userId, messageId, emoji, + channelId, } = e.data; console.log('messagereactionremove', { userId, messageId, emoji, + channelId, }); + + let conversation: ConversationObject | null = null; + if (this.dmConversations.has(userId)) { + conversation = this.dmConversations.get(userId) ?? null; + } else { + conversation = this.channelConversations.get(channelId) ?? null; + } + + if (conversation) { + conversation.processMessageReaction(emoji, messageId, userId); + } + }); }; diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts index 070065b02..dd362eb58 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts @@ -20,6 +20,7 @@ import { AbortableMessageEvent, PendingActionEventData, PerceptionPropsAux, + MessageReactionEvent, } from './types'; import { PendingActionEvent, @@ -540,6 +541,14 @@ export const bindConversationToAgent = ({ })(); } }); + conversation.addEventListener('localMessageReaction', (e: MessageReactionEvent) => { + const { reaction, messageId, userId } = e.data; + console.log('runtime localMessageReaction: ', { + reaction, + messageId, + userId, + }); + }); }; // XXX can move this to the agent renderer 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 f81439d4e..72420c841 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 @@ -533,6 +533,13 @@ export type ActionMessageEventData = { }; export type ActionMessageEvent = ExtendableMessageEvent; +export type MessageReactionEventData = { + reaction: string; + messageId: string; + userId: string; +}; +export type MessageReactionEvent = ExtendableMessageEvent; + export type ConversationChangeEventData = { conversation: ConversationObject; }; From 5db96a7ff7b2484a38ac382915f410ee7cfdaa36 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Wed, 25 Dec 2024 15:03:26 +0500 Subject: [PATCH 04/53] add "messageReaction" perception, add reaction as localmessage --- .../react-agents/classes/discord-manager.ts | 27 ++++++++++++++++--- .../packages/react-agents/loops/chat-loop.tsx | 18 +++++++++++++ .../packages/react-agents/runtime.ts | 12 ++++++++- 3 files changed, 53 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 8c30ba8f9..0962a450f 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 @@ -421,6 +421,7 @@ export class DiscordBot extends EventTarget { messageId, emoji, channelId, + userDisplayName, } = e.data; console.log('messagereactionadd', { userId, @@ -442,8 +443,25 @@ export class DiscordBot extends EventTarget { conversation = this.channelConversations.get(channelId) ?? null; } + const rawMessageReaction = { + userId, + name: userDisplayName, + method: 'messageReaction', + args: { + reaction: emoji, + messageId, + userId, + }, + }; + + const newMessageReaction = formatConversationMessage(rawMessageReaction, { + agent, + }); + + console.log('newMessageReaction: ', newMessageReaction); + if (conversation) { - conversation.processMessageReaction(emoji, messageId, userId); + conversation.addLocalMessage(newMessageReaction); } }); @@ -469,10 +487,13 @@ export class DiscordBot extends EventTarget { conversation = this.channelConversations.get(channelId) ?? null; } + const newMessageReaction = formatConversationMessage(rawMessageReaction, { + agent, + }); + if (conversation) { - conversation.processMessageReaction(emoji, messageId, userId); + conversation.addLocalMessage(newMessageReaction); } - }); }; diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/chat-loop.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/chat-loop.tsx index c2621f38c..a2a7c432d 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/chat-loop.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/chat-loop.tsx @@ -39,6 +39,24 @@ export const ChatLoop = (props: LoopProps) => { }} priority={-1} /> + { + const { targetAgent } = e.data; + + + console.log('messageReaction: ', e.data); + (async () => { + const abortController = new AbortController(); + const { signal } = abortController; + + await targetAgent.evaluate(evaluator, { + signal, + }); + })(); + }} + priority={-1} + /> { diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts index dd362eb58..f2a35c468 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts @@ -541,13 +541,23 @@ export const bindConversationToAgent = ({ })(); } }); - conversation.addEventListener('localMessageReaction', (e: MessageReactionEvent) => { + conversation.addEventListener('localMessageReaction', async (e: MessageReactionEvent) => { const { reaction, messageId, userId } = e.data; console.log('runtime localMessageReaction: ', { reaction, messageId, userId, }); + try { + const { + aborted, + } = await handleChatPerception(e.data, { + agent, + conversation, + }); + } catch (error) { + console.warn('caught new message reaction error', error); + } }); }; From 41b3a4e3edbffa90911481498caec5eae7d231e6 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Wed, 25 Dec 2024 15:17:51 +0500 Subject: [PATCH 05/53] update "sendTyping" as optional for perceptions --- .../react-agents/classes/discord-manager.ts | 19 ++++++++++++++- .../classes/generative-agent-object.ts | 23 +++++++++++++++---- .../packages/react-agents/loops/chat-loop.tsx | 9 +++++--- .../react-agents/types/react-agents.d.ts | 1 + 4 files changed, 44 insertions(+), 8 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 0962a450f..f103477bd 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 @@ -425,6 +425,7 @@ export class DiscordBot extends EventTarget { } = e.data; console.log('messagereactionadd', { userId, + userDisplayName, messageId, emoji, channelId, @@ -470,12 +471,14 @@ export class DiscordBot extends EventTarget { const { userId, messageId, + userDisplayName, emoji, channelId, } = e.data; console.log('messagereactionremove', { userId, messageId, + userDisplayName, emoji, channelId, }); @@ -487,13 +490,27 @@ export class DiscordBot extends EventTarget { conversation = this.channelConversations.get(channelId) ?? null; } + const rawMessageReaction = { + userId, + name: userDisplayName, + method: 'messageReaction', + args: { + reaction: emoji, + messageId, + userId, + }, + }; + const newMessageReaction = formatConversationMessage(rawMessageReaction, { agent, }); - + + console.log('newMessageReaction: ', newMessageReaction); + if (conversation) { conversation.addLocalMessage(newMessageReaction); } + }); }; diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/generative-agent-object.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/generative-agent-object.ts index a3841cc45..85c3135da 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/generative-agent-object.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/generative-agent-object.ts @@ -11,6 +11,7 @@ import type { ActionStep, Evaluator, DebugOptions, + EvaluateOpts, } from '../types'; import { ConversationObject, @@ -110,14 +111,28 @@ export class GenerativeAgentObject { }); // }); } - async evaluate(evaluator: Evaluator) { - return await this.conversation.typing(async () => { + async evaluate(evaluator: Evaluator, opts?: EvaluateOpts) { + const { + sendTyping, + } = opts ?? {}; + + const evaluateAndExecuteStep = async () => { const step = await evaluator.evaluate({ - generativeAgent: this, + generativeAgent: this as GenerativeAgentObject, }); await executeAgentActionStep(this, step); return step; - }); + }; + + if (sendTyping) { + let result: ActionStep; + await this.conversation.typing(async () => { + result = await evaluateAndExecuteStep(); + }); + return result; + } else { + return await evaluateAndExecuteStep(); + } } /* async generate(hint: string, schema?: ZodTypeAny) { // console.log('agent renderer generate 1'); diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/chat-loop.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/chat-loop.tsx index a2a7c432d..fc2e8567f 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/chat-loop.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/loops/chat-loop.tsx @@ -1,7 +1,7 @@ import React, { useState } from 'react'; import { useAgent } from '../hooks'; import { Perception } from '../components/core/perception'; -import { LoopProps } from '../types'; +import { EvaluateOpts, LoopProps } from '../types'; import { BasicEvaluator } from '../evaluators/basic-evaluator'; export const ChatLoop = (props: LoopProps) => { @@ -50,9 +50,12 @@ export const ChatLoop = (props: LoopProps) => { const abortController = new AbortController(); const { signal } = abortController; - await targetAgent.evaluate(evaluator, { + const opts: EvaluateOpts = { signal, - }); + sendTyping: false, + generativeAgent: targetAgent, + }; + await targetAgent.evaluate(evaluator, opts); })(); }} priority={-1} 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 72420c841..e4b44f2c2 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 @@ -194,6 +194,7 @@ export type EvaluatorOpts = { export type EvaluateOpts = { generativeAgent: GenerativeAgentObject, signal?: AbortSignal, + sendTyping?: boolean, }; export type Evaluator = { evaluate: (opts: EvaluateOpts) => Promise; From 63ab1a633616bc11a64b8c8b5c0a221961a22c00 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Wed, 25 Dec 2024 15:28:08 +0500 Subject: [PATCH 06/53] fix agent object id and name being formatted --- .../react-agents/classes/discord-manager.ts | 83 +++++-------------- 1 file changed, 19 insertions(+), 64 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 f103477bd..17b0a6c3c 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 @@ -415,7 +415,7 @@ export class DiscordBot extends EventTarget { // message reactions const _bindIncomingMessageReactions = () => { - discordBotClient.output.addEventListener('messagereactionadd', (e: MessageEvent) => { + const handleReaction = (e: MessageEvent, eventType: string) => { const { userId, messageId, @@ -423,7 +423,8 @@ export class DiscordBot extends EventTarget { channelId, userDisplayName, } = e.data; - console.log('messagereactionadd', { + + console.log(eventType, { userId, userDisplayName, messageId, @@ -431,18 +432,12 @@ export class DiscordBot extends EventTarget { channelId, }); - console.log('this.dmConversations: ', this.dmConversations); - console.log('this.channelConversations: ', this.channelConversations); - console.log('userId: ', userId); - console.log('channelId: ', channelId); + // look up conversation + const conversation = this.dmConversations.has(userId) + ? this.dmConversations.get(userId) ?? null + : this.channelConversations.get(channelId) ?? null; - // look up conversation - let conversation: ConversationObject | null = null; - if (this.dmConversations.has(userId)) { - conversation = this.dmConversations.get(userId) ?? null; - } else { - conversation = this.channelConversations.get(channelId) ?? null; - } + if (!conversation) return; const rawMessageReaction = { userId, @@ -456,62 +451,22 @@ export class DiscordBot extends EventTarget { }; const newMessageReaction = formatConversationMessage(rawMessageReaction, { - agent, - }); - - console.log('newMessageReaction: ', newMessageReaction); - - if (conversation) { - conversation.addLocalMessage(newMessageReaction); - } - - }); - - discordBotClient.output.addEventListener('messagereactionremove', (e: MessageEvent) => { - const { - userId, - messageId, - userDisplayName, - emoji, - channelId, - } = e.data; - console.log('messagereactionremove', { - userId, - messageId, - userDisplayName, - emoji, - channelId, - }); - - let conversation: ConversationObject | null = null; - if (this.dmConversations.has(userId)) { - conversation = this.dmConversations.get(userId) ?? null; - } else { - conversation = this.channelConversations.get(channelId) ?? null; - } - - const rawMessageReaction = { - userId, - name: userDisplayName, - method: 'messageReaction', - args: { - reaction: emoji, - messageId, - userId, + agent: { + id: getIdFromUserId(userId), + name: userDisplayName, }, - }; - - const newMessageReaction = formatConversationMessage(rawMessageReaction, { - agent, }); - console.log('newMessageReaction: ', newMessageReaction); + conversation.addLocalMessage(newMessageReaction); + }; - if (conversation) { - conversation.addLocalMessage(newMessageReaction); - } + discordBotClient.output.addEventListener('messagereactionadd', + (e) => handleReaction(e, 'messagereactionadd') + ); - }); + discordBotClient.output.addEventListener('messagereactionremove', + (e) => handleReaction(e, 'messagereactionremove') + ); }; (async () => { From 6296aa0470cdfa12883d2cb181f43489e88259da Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Wed, 25 Dec 2024 15:38:14 +0500 Subject: [PATCH 07/53] add reaction context to message args --- .../packages/react-agents/classes/discord-manager.ts | 3 +++ 1 file changed, 3 insertions(+) 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 17b0a6c3c..b9b5d4b07 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 @@ -447,6 +447,9 @@ export class DiscordBot extends EventTarget { reaction: emoji, messageId, userId, + context: { + action: eventType === 'messagereactionadd' ? 'Reaction added' : 'Reaction removed', + }, }, }; From 039c23a41c4ebff38a54ddddb5f287a85e01b808 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Wed, 25 Dec 2024 15:48:27 +0500 Subject: [PATCH 08/53] default sendtyping to true --- .../packages/react-agents/classes/generative-agent-object.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/generative-agent-object.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/generative-agent-object.ts index 85c3135da..159f7c09f 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/generative-agent-object.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/generative-agent-object.ts @@ -113,7 +113,7 @@ export class GenerativeAgentObject { } async evaluate(evaluator: Evaluator, opts?: EvaluateOpts) { const { - sendTyping, + sendTyping = true, } = opts ?? {}; const evaluateAndExecuteStep = async () => { From cb91177b77a17ba58efdc8d4c3fb90c9f78d6c8c Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Wed, 25 Dec 2024 15:50:36 +0500 Subject: [PATCH 09/53] comment out conversation processMessageReactions for now --- .../classes/conversation-object.ts | 40 +++++++++---------- .../packages/react-agents/runtime.ts | 36 ++++++++--------- 2 files changed, 37 insertions(+), 39 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 8ff948f45..16bc2848d 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 @@ -360,26 +360,24 @@ export class ConversationObject extends EventTarget { ); } + // async processMessageReaction( + // reaction, + // messageId, + // userId, + // ) { + // console.log('process reaction: ',{ + // reaction, + // messageId, + // userId, + // }); - async processMessageReaction( - reaction, - messageId, - userId, - ) { - console.log('process reaction: ',{ - reaction, - messageId, - userId, - }); - - const e = new ExtendableMessageEvent('localMessageReaction', { - data: { - reaction, - messageId, - userId, - }, - }); - this.dispatchEvent(e); - } - + // const e = new ExtendableMessageEvent('localMessageReaction', { + // data: { + // reaction, + // messageId, + // userId, + // }, + // }); + // this.dispatchEvent(e); + // } } diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts index f2a35c468..f80a72c94 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts @@ -541,24 +541,24 @@ export const bindConversationToAgent = ({ })(); } }); - conversation.addEventListener('localMessageReaction', async (e: MessageReactionEvent) => { - const { reaction, messageId, userId } = e.data; - console.log('runtime localMessageReaction: ', { - reaction, - messageId, - userId, - }); - try { - const { - aborted, - } = await handleChatPerception(e.data, { - agent, - conversation, - }); - } catch (error) { - console.warn('caught new message reaction error', error); - } - }); + // conversation.addEventListener('localMessageReaction', async (e: MessageReactionEvent) => { + // const { reaction, messageId, userId } = e.data; + // console.log('runtime localMessageReaction: ', { + // reaction, + // messageId, + // userId, + // }); + // try { + // const { + // aborted, + // } = await handleChatPerception(e.data, { + // agent, + // conversation, + // }); + // } catch (error) { + // console.warn('caught new message reaction error', error); + // } + // }); }; // XXX can move this to the agent renderer From b28901345351f03d71ad1975a3307f1895c7eae6 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Wed, 25 Dec 2024 16:10:27 +0500 Subject: [PATCH 10/53] init agent message reaction support --- .../react-agents/classes/discord-manager.ts | 18 +++++++++++++ .../react-agents/components/core/chat.tsx | 27 +++++++++++++++++++ 2 files changed, 45 insertions(+) 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 b9b5d4b07..a6fd9bcb6 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 @@ -97,6 +97,24 @@ const bindOutgoing = ({ channelId, userId, }); + } else if (method === 'messageReaction') { + const { + reaction, + messageId, + userId, + } = args as { + reaction: string, + messageId: string, + userId: string, + }; + + console.log('discord manager message reaction', { + reaction, + messageId, + userId, + }); + + discordBotClient.input.reactToMessage(reaction, messageId, userId); } else { // ignore } diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx index 605c40cf4..cb90752e4 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx @@ -2,6 +2,7 @@ import React from 'react'; import dedent from 'dedent'; import { z } from 'zod'; import { Action } from './action'; +import { PendingActionEvent } from '../../types/react-agents'; export const ChatActions = () => { return ( @@ -27,6 +28,32 @@ export const ChatActions = () => { // await e.commit(); // }} /> + { + await e.commit(); + }} + /> ); }; \ No newline at end of file From dbbd1048cffebb3e4807b87e0e10feb62402f96f Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Wed, 25 Dec 2024 16:56:15 +0500 Subject: [PATCH 11/53] add agent -> discord bot react back support --- .../react-agents/classes/discord-manager.ts | 22 +++++++++++++++++-- .../lib/discord/discord-client.js | 16 ++++++++++++++ 2 files changed, 36 insertions(+), 2 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 a6fd9bcb6..db64ae619 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 @@ -108,13 +108,31 @@ const bindOutgoing = ({ userId: string, }; + + // TODO: current agent mentionId needs to be set + const getDiscordIdForUserId = (userId: string) => { + const agents = conversation.getAgents(); + const currentAgent = conversation.agent; + const agent = agents.find( + agent => agent.playerId === userId + ) || (currentAgent.id === userId ? currentAgent : undefined); + + const discordId = agent?.playerSpec?.mentionId; + return discordId; + }; + + const discordId = getDiscordIdForUserId(userId); console.log('discord manager message reaction', { reaction, messageId, userId, + channelId, + discordId, + }); + discordBotClient.input.reactToMessage(reaction, messageId, { + channelId, + userId: discordId, }); - - discordBotClient.input.reactToMessage(reaction, messageId, userId); } else { // ignore } diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js b/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js index f0468f55b..592df8783 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js @@ -193,6 +193,22 @@ export class DiscordInput { this.queueManager.completeStream(streamId); } + reactToMessage(reaction, messageId, { + channelId, + userId, + } = {}) { + const m = { + method: 'reactToMessage', + args: { + channelId, + reaction, + messageId, + userId, + }, + }; + this.ws.send(JSON.stringify(m)); + } + destroy() { // Clean up any remaining buffers for (const streamId of this.bufferManager.buffers.keys()) { From 6148e0486ff30946820bae177c9ecf009c456d82 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 10:42:34 +0500 Subject: [PATCH 12/53] remove commented code --- .../classes/conversation-object.ts | 21 ------------------- .../packages/react-agents/runtime.ts | 18 ---------------- .../react-agents/types/react-agents.d.ts | 7 ------- 3 files changed, 46 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 b32014d37..52212a4aa 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 @@ -366,25 +366,4 @@ export class ConversationObject extends EventTarget { }), ); } - - // async processMessageReaction( - // reaction, - // messageId, - // userId, - // ) { - // console.log('process reaction: ',{ - // reaction, - // messageId, - // userId, - // }); - - // const e = new ExtendableMessageEvent('localMessageReaction', { - // data: { - // reaction, - // messageId, - // userId, - // }, - // }); - // this.dispatchEvent(e); - // } } diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts index f80a72c94..407536f90 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts @@ -541,24 +541,6 @@ export const bindConversationToAgent = ({ })(); } }); - // conversation.addEventListener('localMessageReaction', async (e: MessageReactionEvent) => { - // const { reaction, messageId, userId } = e.data; - // console.log('runtime localMessageReaction: ', { - // reaction, - // messageId, - // userId, - // }); - // try { - // const { - // aborted, - // } = await handleChatPerception(e.data, { - // agent, - // conversation, - // }); - // } catch (error) { - // console.warn('caught new message reaction error', error); - // } - // }); }; // XXX can move this to the agent renderer 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 e4b44f2c2..f905cfe79 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 @@ -534,13 +534,6 @@ export type ActionMessageEventData = { }; export type ActionMessageEvent = ExtendableMessageEvent; -export type MessageReactionEventData = { - reaction: string; - messageId: string; - userId: string; -}; -export type MessageReactionEvent = ExtendableMessageEvent; - export type ConversationChangeEventData = { conversation: ConversationObject; }; From 1042e59f4f9587c7e1e679da5661d35d7f84115a Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 12:43:27 +0500 Subject: [PATCH 13/53] add discord appid to discord component props and args --- .../packages/react-agents/components/plugins/discord.tsx | 2 ++ .../packages/react-agents/types/react-agents.d.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx index ba06c7629..4815e3278 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx @@ -14,6 +14,7 @@ export const Discord: React.FC = (props: DiscordProps) => { channels, dms, userWhitelist, + appId, } = props; const agent = useAgent(); const conversation = useConversation(); @@ -31,6 +32,7 @@ export const Discord: React.FC = (props: DiscordProps) => { agent, codecs, jwt: authToken, + appId, }; const discordBot = agent.discordManager.addDiscordBot(args); return () => { 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 f81439d4e..e6270f128 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 @@ -121,12 +121,14 @@ export type DiscordRoomSpec = RegExp | string; export type DiscordRoomSpecs = DiscordRoomSpec | DiscordRoomSpec[]; export type DiscordProps = { token: string; + appId: string; channels?: DiscordRoomSpecs; dms?: DiscordRoomSpecs; userWhitelist?: string[]; }; export type DiscordArgs = { token: string; + appId: string; channels: DiscordRoomSpec[]; dms: DiscordRoomSpec[]; userWhitelist: string[]; From 99a5aef3a6344af9af6e7968382ff7a4d109f43d Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 12:44:50 +0500 Subject: [PATCH 14/53] add missing token and appId missing exceptions --- .../packages/react-agents/components/plugins/discord.tsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx index 4815e3278..8105eac55 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx @@ -24,6 +24,14 @@ export const Discord: React.FC = (props: DiscordProps) => { useEffect(() => { if (!conversation) { + + if (!token) { + throw new Error('Discord Bot token is required'); + } + if (!appId) { + throw new Error('Discord Bot appId is required'); + } + const args: DiscordArgs = { token, channels: channels ? (Array.isArray(channels) ? channels : [channels]) : [], From 2965ca6fc393ee6bece150feba704a7d188fade7 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 12:47:27 +0500 Subject: [PATCH 15/53] add appId attribute in discord manager and client --- .../packages/react-agents/classes/discord-manager.ts | 3 +++ .../packages/react-agents/lib/discord/discord-client.js | 3 +++ 2 files changed, 6 insertions(+) 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..390a03b09 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 @@ -126,6 +126,7 @@ const bindOutgoing = ({ export class DiscordBot extends EventTarget { token: string; + appId: string; channels: DiscordRoomSpec[]; dms: DiscordRoomSpec[]; userWhitelist: string[]; @@ -139,6 +140,7 @@ export class DiscordBot extends EventTarget { // arguments const { token, + appId, channels, dms, userWhitelist, @@ -164,6 +166,7 @@ export class DiscordBot extends EventTarget { // initialize discord bot client const discordBotClient = new DiscordBotClient({ token, + appId, codecs, jwt, name, diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js b/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js index 4089113fc..98a5ecaed 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js @@ -352,6 +352,7 @@ export class DiscordOutput extends EventTarget { export class DiscordBotClient extends EventTarget { token; codecs; + appId; ws = null; input = null; // going from the agent into the discord bot output = null; // coming out of the discord bot to the agent @@ -361,6 +362,7 @@ export class DiscordBotClient extends EventTarget { constructor({ token, + appId, codecs, jwt, name, @@ -379,6 +381,7 @@ export class DiscordBotClient extends EventTarget { this.token = token; this.codecs = codecs; + this.appId = appId; this.input = new DiscordInput(); this.output = new DiscordOutput({ codecs, From a000641e733385708edb6004c0033b1954b50ca2 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 12:56:12 +0500 Subject: [PATCH 16/53] read and pass appId prop in features renderer --- .../packages/react-agents/util/agent-features-renderer.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/agent-features-renderer.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/agent-features-renderer.tsx index e78e27993..7e1989566 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/agent-features-renderer.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/agent-features-renderer.tsx @@ -287,11 +287,11 @@ export const featureRenderers = { ); }, - discord: ({token, channels}) => { + discord: ({token, appId, channels}) => { if (token) { channels = channels && channels.map((c: string) => c.trim()).filter(Boolean); return ( - + ); } else { return null; From 6b08665253859d181add2b6ba6d8bec6fa436ad0 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 13:18:47 +0500 Subject: [PATCH 17/53] add agentSpecs attribute to the conversation --- .../classes/conversation-object.ts | 21 +++++++++++++++++++ .../components/util/default-components.tsx | 6 +----- 2 files changed, 22 insertions(+), 5 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 6cbab9d2d..9cbb4a64c 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 @@ -19,6 +19,7 @@ import { loadMessagesFromDatabase } from '../util/loadMessagesFromDatabase'; export class ConversationObject extends EventTarget { agent: ActiveAgentObject; // the current agent + agentSpecs: object; // the current agent's spec 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 (?) @@ -46,6 +47,11 @@ export class ConversationObject extends EventTarget { this.scene = scene; this.getHash = getHash; this.mentionsRegex = mentionsRegex; + this.agentSpecs = { + id: agent.id, + name: agent.name, + bio: agent.bio, + }; this.messageCache = new MessageCacheConstructor({ loader: async () => { const supabase = this.agent.appContextValue.useSupabase(); @@ -97,6 +103,21 @@ export class ConversationObject extends EventTarget { getAgent() { return this.agent; } + + setAgentSpec(agentSpec: object) { + this.agentSpecs = agentSpec; + } + + getAgentSpec() { + return this.agentSpecs; + } + + appendAgentSpec(agentSpec: object) { + this.agentSpecs = { + ...this.agentSpecs, + ...agentSpec, + }; + } // setAgent(agent: ActiveAgentObject) { // this.agent = agent; // } 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..0f4a89729 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 @@ -122,11 +122,7 @@ const CharactersPrompt = () => { const bio = usePersonality(); if (conversation) { const agents = conversation.getAgents(); - const currentAgentSpec = { - id: agent.id, - name, - bio, - }; + const currentAgentSpec = conversation.getAgentSpec(); const agentSpecs = agents.map((agent) => { const agentSpec = agent.getPlayerSpec() as any; return { From 83dbed668814764a6ae9cef83759e5534d2ea601 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 13:21:29 +0500 Subject: [PATCH 18/53] remove discord appId integration updates from branch --- .../packages/react-agents/classes/discord-manager.ts | 3 --- .../packages/react-agents/components/plugins/discord.tsx | 9 --------- .../packages/react-agents/lib/discord/discord-client.js | 3 --- .../packages/react-agents/types/react-agents.d.ts | 2 -- .../react-agents/util/agent-features-renderer.tsx | 4 ++-- 5 files changed, 2 insertions(+), 19 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 390a03b09..52e5d37eb 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 @@ -126,7 +126,6 @@ const bindOutgoing = ({ export class DiscordBot extends EventTarget { token: string; - appId: string; channels: DiscordRoomSpec[]; dms: DiscordRoomSpec[]; userWhitelist: string[]; @@ -140,7 +139,6 @@ export class DiscordBot extends EventTarget { // arguments const { token, - appId, channels, dms, userWhitelist, @@ -166,7 +164,6 @@ export class DiscordBot extends EventTarget { // initialize discord bot client const discordBotClient = new DiscordBotClient({ token, - appId, codecs, jwt, name, diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx index 8105eac55..2301a342e 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx @@ -24,14 +24,6 @@ export const Discord: React.FC = (props: DiscordProps) => { useEffect(() => { if (!conversation) { - - if (!token) { - throw new Error('Discord Bot token is required'); - } - if (!appId) { - throw new Error('Discord Bot appId is required'); - } - const args: DiscordArgs = { token, channels: channels ? (Array.isArray(channels) ? channels : [channels]) : [], @@ -40,7 +32,6 @@ export const Discord: React.FC = (props: DiscordProps) => { agent, codecs, jwt: authToken, - appId, }; const discordBot = agent.discordManager.addDiscordBot(args); return () => { diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js b/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js index 98a5ecaed..4089113fc 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/lib/discord/discord-client.js @@ -352,7 +352,6 @@ export class DiscordOutput extends EventTarget { export class DiscordBotClient extends EventTarget { token; codecs; - appId; ws = null; input = null; // going from the agent into the discord bot output = null; // coming out of the discord bot to the agent @@ -362,7 +361,6 @@ export class DiscordBotClient extends EventTarget { constructor({ token, - appId, codecs, jwt, name, @@ -381,7 +379,6 @@ export class DiscordBotClient extends EventTarget { this.token = token; this.codecs = codecs; - this.appId = appId; this.input = new DiscordInput(); this.output = new DiscordOutput({ codecs, 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 e6270f128..f81439d4e 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 @@ -121,14 +121,12 @@ export type DiscordRoomSpec = RegExp | string; export type DiscordRoomSpecs = DiscordRoomSpec | DiscordRoomSpec[]; export type DiscordProps = { token: string; - appId: string; channels?: DiscordRoomSpecs; dms?: DiscordRoomSpecs; userWhitelist?: string[]; }; export type DiscordArgs = { token: string; - appId: string; channels: DiscordRoomSpec[]; dms: DiscordRoomSpec[]; userWhitelist: string[]; diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/agent-features-renderer.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/agent-features-renderer.tsx index 7e1989566..e78e27993 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/agent-features-renderer.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/agent-features-renderer.tsx @@ -287,11 +287,11 @@ export const featureRenderers = { ); }, - discord: ({token, appId, channels}) => { + discord: ({token, channels}) => { if (token) { channels = channels && channels.map((c: string) => c.trim()).filter(Boolean); return ( - + ); } else { return null; From 6c88a77a09e40f013c9ff3b93bdd8631332a8055 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 13:21:57 +0500 Subject: [PATCH 19/53] remove appId from discord.tsx --- .../packages/react-agents/components/plugins/discord.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx index 2301a342e..ba06c7629 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx @@ -14,7 +14,6 @@ export const Discord: React.FC = (props: DiscordProps) => { channels, dms, userWhitelist, - appId, } = props; const agent = useAgent(); const conversation = useConversation(); From 573d8b6fc7306a8fd50090b397b2140ddf13dffd Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 13:24:28 +0500 Subject: [PATCH 20/53] rename agentSpec to currentAgentSpec to add clarity --- .../classes/conversation-object.ts | 18 +++++++++--------- .../components/util/default-components.tsx | 2 +- 2 files changed, 10 insertions(+), 10 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 9cbb4a64c..50bf5df84 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 @@ -19,7 +19,7 @@ import { loadMessagesFromDatabase } from '../util/loadMessagesFromDatabase'; export class ConversationObject extends EventTarget { agent: ActiveAgentObject; // the current agent - agentSpecs: object; // the current agent's spec + currentAgentSpecs: object; // the current agent's spec 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 (?) @@ -47,7 +47,7 @@ export class ConversationObject extends EventTarget { this.scene = scene; this.getHash = getHash; this.mentionsRegex = mentionsRegex; - this.agentSpecs = { + this.currentAgentSpecs = { id: agent.id, name: agent.name, bio: agent.bio, @@ -104,17 +104,17 @@ export class ConversationObject extends EventTarget { return this.agent; } - setAgentSpec(agentSpec: object) { - this.agentSpecs = agentSpec; + setCurrentAgentSpecs(agentSpec: object) { + this.currentAgentSpecs = agentSpec; } - getAgentSpec() { - return this.agentSpecs; + getCurrentAgentSpecs() { + return this.currentAgentSpecs; } - appendAgentSpec(agentSpec: object) { - this.agentSpecs = { - ...this.agentSpecs, + appendCurrentAgentSpecs(agentSpec: object) { + this.currentAgentSpecs = { + ...this.currentAgentSpecs, ...agentSpec, }; } 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 0f4a89729..cf933fe12 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 @@ -122,7 +122,7 @@ const CharactersPrompt = () => { const bio = usePersonality(); if (conversation) { const agents = conversation.getAgents(); - const currentAgentSpec = conversation.getAgentSpec(); + const currentAgentSpec = conversation.getCurrentAgentSpecs(); const agentSpecs = agents.map((agent) => { const agentSpec = agent.getPlayerSpec() as any; return { From 2c86880fac3ddd816b0a5ca777f642ce52be72de Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 15:25:47 +0500 Subject: [PATCH 21/53] add appId to discord component and types --- .../packages/react-agents/components/plugins/discord.tsx | 3 +++ .../packages/react-agents/types/react-agents.d.ts | 2 ++ 2 files changed, 5 insertions(+) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx index ba06c7629..0661c08df 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/plugins/discord.tsx @@ -11,6 +11,7 @@ import { export const Discord: React.FC = (props: DiscordProps) => { const { token, + appId, channels, dms, userWhitelist, @@ -25,6 +26,7 @@ export const Discord: React.FC = (props: DiscordProps) => { if (!conversation) { const args: DiscordArgs = { token, + appId, channels: channels ? (Array.isArray(channels) ? channels : [channels]) : [], dms: dms ? (Array.isArray(dms) ? dms : [dms]) : [], userWhitelist, @@ -39,6 +41,7 @@ export const Discord: React.FC = (props: DiscordProps) => { } }, [ token, + appId, JSON.stringify(channels), JSON.stringify(dms), JSON.stringify(userWhitelist), 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 f81439d4e..e6270f128 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 @@ -121,12 +121,14 @@ export type DiscordRoomSpec = RegExp | string; export type DiscordRoomSpecs = DiscordRoomSpec | DiscordRoomSpec[]; export type DiscordProps = { token: string; + appId: string; channels?: DiscordRoomSpecs; dms?: DiscordRoomSpecs; userWhitelist?: string[]; }; export type DiscordArgs = { token: string; + appId: string; channels: DiscordRoomSpec[]; dms: DiscordRoomSpec[]; userWhitelist: string[]; From 20c8cc2fa5523f8091ca9a9bdccc4d4a0eff40dd Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 15:28:30 +0500 Subject: [PATCH 22/53] add appId to feat renderer and discord client --- .../packages/react-agents/classes/discord-manager.ts | 4 ++++ .../packages/react-agents/util/agent-features-renderer.tsx | 4 ++-- 2 files changed, 6 insertions(+), 2 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..cd11228aa 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 @@ -126,6 +126,7 @@ const bindOutgoing = ({ export class DiscordBot extends EventTarget { token: string; + appId: string; channels: DiscordRoomSpec[]; dms: DiscordRoomSpec[]; userWhitelist: string[]; @@ -139,6 +140,7 @@ export class DiscordBot extends EventTarget { // arguments const { token, + appId, channels, dms, userWhitelist, @@ -147,6 +149,7 @@ export class DiscordBot extends EventTarget { jwt, } = args; this.token = token; + this.appId = appId; this.channels = channels; this.dms = dms; this.userWhitelist = userWhitelist; @@ -164,6 +167,7 @@ export class DiscordBot extends EventTarget { // initialize discord bot client const discordBotClient = new DiscordBotClient({ token, + appId, codecs, jwt, name, diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/agent-features-renderer.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/agent-features-renderer.tsx index e78e27993..7e1989566 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/agent-features-renderer.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/agent-features-renderer.tsx @@ -287,11 +287,11 @@ export const featureRenderers = { ); }, - discord: ({token, channels}) => { + discord: ({token, appId, channels}) => { if (token) { channels = channels && channels.map((c: string) => c.trim()).filter(Boolean); return ( - + ); } else { return null; From 72511ae22e162ac2a1b65cc2a0049c4b8ae60e55 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 15:34:50 +0500 Subject: [PATCH 23/53] add mentionId to current agent's specs --- .../packages/react-agents/classes/discord-manager.ts | 9 +++++++++ 1 file changed, 9 insertions(+) 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 cd11228aa..7d32f4617 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 @@ -259,6 +259,11 @@ export class DiscordBot extends EventTarget { mentionsRegex: discordMentionRegex, }); + conversation.appendCurrentAgentSpecs({ + mentionId: appId, + }); + + this.agent.conversationManager.addConversation(conversation); this.channelConversations.set(channelId, conversation); @@ -306,6 +311,10 @@ export class DiscordBot extends EventTarget { mentionsRegex: discordMentionRegex, }); + conversation.appendCurrentAgentSpecs({ + mentionId: appId, + }); + this.agent.conversationManager.addConversation(conversation); this.dmConversations.set(userId, conversation); From 0200cc05dfc1634ec7cedabb5b9281242d7fd47e Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 15:53:26 +0500 Subject: [PATCH 24/53] add missing agentJson to active agent json --- .../packages/react-agents/classes/active-agent-object.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/active-agent-object.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/active-agent-object.ts index c5b32cf51..756fb9618 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/active-agent-object.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/active-agent-object.ts @@ -44,6 +44,7 @@ import { AgentRegistry } from './render-registry'; export class ActiveAgentObject extends AgentObject { // arguments + agentJson: AgentObject; config: AgentObjectData; appContextValue: AppContextValue; registry: AgentRegistry; @@ -75,6 +76,7 @@ export class ActiveAgentObject extends AgentObject { // this.config = config; + this.agentJson = new AgentObject(config); this.appContextValue = appContextValue; this.registry = registry; From a0ee2c236851d9f2608b3f28be141f86046b4478 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 16:17:10 +0500 Subject: [PATCH 25/53] use Player for agent in conversation to maintain standardized logic --- .../classes/conversation-object.ts | 24 +++++++++---------- .../components/util/default-components.tsx | 20 +++++++--------- 2 files changed, 21 insertions(+), 23 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 50bf5df84..b9d067c79 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 @@ -19,7 +19,7 @@ import { loadMessagesFromDatabase } from '../util/loadMessagesFromDatabase'; export class ConversationObject extends EventTarget { agent: ActiveAgentObject; // the current agent - currentAgentSpecs: object; // the current agent's spec + currentAgentPlayer: Player; // the current agent's player 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 (?) @@ -47,11 +47,11 @@ export class ConversationObject extends EventTarget { this.scene = scene; this.getHash = getHash; this.mentionsRegex = mentionsRegex; - this.currentAgentSpecs = { + this.currentAgentPlayer = new Player(agent.id, { id: agent.id, - name: agent.name, - bio: agent.bio, - }; + name: agent.agentJson.name, + bio: agent.agentJson.bio, + }); this.messageCache = new MessageCacheConstructor({ loader: async () => { const supabase = this.agent.appContextValue.useSupabase(); @@ -104,19 +104,19 @@ export class ConversationObject extends EventTarget { return this.agent; } - setCurrentAgentSpecs(agentSpec: object) { - this.currentAgentSpecs = agentSpec; + setCurrentAgentPlayer(player: Player) { + this.currentAgentPlayer = player; } - getCurrentAgentSpecs() { - return this.currentAgentSpecs; + getCurrentAgentPlayer() { + return this.currentAgentPlayer; } appendCurrentAgentSpecs(agentSpec: object) { - this.currentAgentSpecs = { - ...this.currentAgentSpecs, + this.currentAgentPlayer.setPlayerSpec({ + ...this.currentAgentPlayer.getPlayerSpec(), ...agentSpec, - }; + }); } // setAgent(agent: ActiveAgentObject) { // this.agent = agent; 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 cf933fe12..86e3bf93c 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 @@ -117,25 +117,23 @@ const ScenePrompt = () => { }; const CharactersPrompt = () => { const conversation = useConversation(); - const agent = useAgent(); - const name = useName(); - const bio = usePersonality(); if (conversation) { const agents = conversation.getAgents(); - const currentAgentSpec = conversation.getCurrentAgentSpecs(); + const currentAgentPlayerSpec = conversation.getCurrentAgentPlayer().getPlayerSpec(); const agentSpecs = agents.map((agent) => { - const agentSpec = agent.getPlayerSpec() as any; - return { - name: agentSpec?.name, + const agentSpecs = agent.getPlayerSpec() as any; + const agentSpec = { id: agent.playerId, - bio: agentSpec?.bio, - }; + name: agentSpecs?.name, + bio: agentSpecs?.bio, + } + return agentSpec; }); const formatAgent = (agent: any) => { return [ - `Name: ${agent.name}`, `UserId: ${agent.id}`, + `Name: ${agent.name}`, `Bio: ${agent.bio}`, ].join('\n'); }; @@ -146,7 +144,7 @@ const CharactersPrompt = () => { # Your Character ` + '\n\n' + - formatAgent(currentAgentSpec) + + formatAgent(currentAgentPlayerSpec) + (agents.length > 0 ? ( '\n\n' + From b8e93fc76c44081dfab990121112697dada66929 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 22:05:00 +0500 Subject: [PATCH 26/53] improve the prompt --- .../packages/react-agents/components/core/chat.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx index 5f27ab63b..a3d396c87 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx @@ -30,7 +30,15 @@ export const ChatActions = () => { /> Date: Thu, 26 Dec 2024 22:16:53 +0500 Subject: [PATCH 27/53] remove userId from the schema and get that from the message --- .../packages/react-agents/classes/discord-manager.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 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 67c01862e..15f1646f1 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 @@ -101,14 +101,15 @@ const bindOutgoing = ({ const { reaction, messageId, - userId, } = args as { reaction: string, messageId: string, - userId: string, }; + // get message from conversation by messageId + const message = conversation.getCachedMessages().find(m => m.args.messageId === messageId); + // TODO: current agent mentionId needs to be set const getDiscordIdForUserId = (userId: string) => { const agents = conversation.getAgents(); @@ -121,6 +122,9 @@ const bindOutgoing = ({ return discordId; }; + // get userId from message + const userId = message?.userId; + const discordId = getDiscordIdForUserId(userId); console.log('discord manager message reaction', { reaction, From bcd9f1604833ec3e875897ce854600eb67c27a4b Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 26 Dec 2024 22:45:10 +0500 Subject: [PATCH 28/53] remove userId from reaction schema --- .../packages/react-agents/components/core/chat.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx index a3d396c87..42b3e25b0 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx @@ -43,19 +43,16 @@ export const ChatActions = () => { z.object({ reaction: z.string(), messageId: z.string(), - userId: z.string(), }) } examples={[ { reaction: '👍', messageId: '123', - userId: '456', }, { reaction: '👎', messageId: '123', - userId: '456', }, ]} handler={async (e: PendingActionEvent) => { From 9a1fba838f1aec20231d6aadc061039b456fc01c Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Fri, 27 Dec 2024 14:54:21 +0500 Subject: [PATCH 29/53] remove agentJson, use config in getAllAgents --- .../packages/react-agents/classes/active-agent-object.ts | 2 -- .../packages/react-agents/classes/conversation-object.ts | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/active-agent-object.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/active-agent-object.ts index 756fb9618..c5b32cf51 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/active-agent-object.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/active-agent-object.ts @@ -44,7 +44,6 @@ import { AgentRegistry } from './render-registry'; export class ActiveAgentObject extends AgentObject { // arguments - agentJson: AgentObject; config: AgentObjectData; appContextValue: AppContextValue; registry: AgentRegistry; @@ -76,7 +75,6 @@ export class ActiveAgentObject extends AgentObject { // this.config = config; - this.agentJson = new AgentObject(config); this.appContextValue = appContextValue; this.registry = registry; 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..3f04ec763 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 @@ -127,7 +127,8 @@ export class ConversationObject extends EventTarget { const allAgents: object[] = [ ...Array.from(this.agentsMap.values()).map(player => player.playerSpec), ]; - this.agent && allAgents.push(this.agent.agentJson); + + this.agent && allAgents.push(this.agent.config); return allAgents; } getEmbeddingString() { From 7b5337e2a69cdc0b990f32c354eb507ea4acf05b Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Fri, 27 Dec 2024 15:26:41 +0500 Subject: [PATCH 30/53] revert back default typing message for evalutation --- .../classes/generative-agent-object.ts | 20 +++---------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/generative-agent-object.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/generative-agent-object.ts index 159f7c09f..b67dd1164 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/generative-agent-object.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/classes/generative-agent-object.ts @@ -112,27 +112,13 @@ export class GenerativeAgentObject { // }); } async evaluate(evaluator: Evaluator, opts?: EvaluateOpts) { - const { - sendTyping = true, - } = opts ?? {}; - - const evaluateAndExecuteStep = async () => { + return await this.conversation.typing(async () => { const step = await evaluator.evaluate({ - generativeAgent: this as GenerativeAgentObject, + generativeAgent: this, }); await executeAgentActionStep(this, step); return step; - }; - - if (sendTyping) { - let result: ActionStep; - await this.conversation.typing(async () => { - result = await evaluateAndExecuteStep(); - }); - return result; - } else { - return await evaluateAndExecuteStep(); - } + }); } /* async generate(hint: string, schema?: ZodTypeAny) { // console.log('agent renderer generate 1'); From 9e9967ab0a483d4952f3bf975f4878d36c29166d Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Fri, 27 Dec 2024 15:30:12 +0500 Subject: [PATCH 31/53] update conversation object to remove agentJson usage --- .../packages/react-agents/classes/conversation-object.ts | 5 +++-- 1 file changed, 3 insertions(+), 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 8972384d8..cdb20feeb 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 @@ -50,9 +50,10 @@ export class ConversationObject extends EventTarget { this.mentionsRegex = mentionsRegex; this.currentAgentPlayer = new Player(agent.id, { id: agent.id, - name: agent.agentJson.name, - bio: agent.agentJson.bio, + name: agent.name, + bio: agent.bio, }); + console.log('this.currentAgentPlayer', this.currentAgentPlayer); this.messageCache = new MessageCacheConstructor({ loader: async () => { const supabase = this.agent.appContextValue.useSupabase(); From 9d0679dbedb41a01eef3e053edc1d1f92ecf1598 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Fri, 27 Dec 2024 17:48:58 +0500 Subject: [PATCH 32/53] 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 33/53] 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 34/53] 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 35/53] 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 36/53] 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 37/53] 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 38/53] 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 39/53] 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 40/53] 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 41/53] 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(); From c75aed471df991426afaa1251bb6cf53ea2cd8e7 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 12:58:46 +0500 Subject: [PATCH 42/53] remove MessageReactionEvent import --- .../packages/upstreet-agent/packages/react-agents/runtime.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts b/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts index 08276fdc7..e96cdd7e2 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/runtime.ts @@ -18,7 +18,6 @@ import { AbortableMessageEvent, PendingActionEventData, PerceptionPropsAux, - MessageReactionEvent, } from './types'; import { PendingActionEvent, From e4c08270e572cc10d9d06e2a2f3d1ec2c84df912 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 13:00:59 +0500 Subject: [PATCH 43/53] update discord agentPlayer to use mentionId in playerSpec --- .../packages/react-agents/classes/discord-manager.ts | 11 ++--------- 1 file changed, 2 insertions(+), 9 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 4d2207050..7966d54a2 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 @@ -295,6 +295,7 @@ export class DiscordBot extends EventTarget { const agentPlayer = new Player(agent.id, { name: agent.name, bio: agent.bio, + mentionId: appId, }); const conversation = new ConversationObject({ agentPlayer, @@ -309,11 +310,6 @@ export class DiscordBot extends EventTarget { }), }); - conversation.appendCurrentAgentSpecs({ - mentionId: appId, - }); - - this.agent.conversationManager.addConversation(conversation); this.channelConversations.set(channelId, conversation); @@ -357,6 +353,7 @@ export class DiscordBot extends EventTarget { const agentPlayer = new Player(agent.id, { name: agent.name, bio: agent.bio, + mentionId: appId, }); const conversation = new ConversationObject({ agentPlayer, @@ -370,10 +367,6 @@ export class DiscordBot extends EventTarget { agentId: agent.id, }), }); - - conversation.appendCurrentAgentSpecs({ - mentionId: appId, - }); this.agent.conversationManager.addConversation(conversation); this.dmConversations.set(userId, conversation); From 706bba8d5dd4b9ce155426ac61f6dc6482097add Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 15:55:27 +0500 Subject: [PATCH 44/53] update getDiscordIdForUserId --- .../packages/react-agents/classes/discord-manager.ts | 4 +--- 1 file changed, 1 insertion(+), 3 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 7966d54a2..706d79495 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 @@ -110,13 +110,11 @@ const bindOutgoing = ({ // get message from conversation by messageId const message = conversation.getCachedMessages().find(m => m.args.messageId === messageId); - // TODO: current agent mentionId needs to be set const getDiscordIdForUserId = (userId: string) => { const agents = conversation.getAgents(); - const currentAgent = conversation.agent; const agent = agents.find( agent => agent.playerId === userId - ) || (currentAgent.id === userId ? currentAgent : undefined); + ); const discordId = agent?.playerSpec?.mentionId; return discordId; From 6250b659bece4d7a24e1d2623083131ddae2d560 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 16:17:12 +0500 Subject: [PATCH 45/53] update handleReaction to use guildId for determining reaction source --- .../packages/react-agents/classes/discord-manager.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 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 706d79495..6b471f519 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 @@ -486,6 +486,7 @@ export class DiscordBot extends EventTarget { emoji, channelId, userDisplayName, + guildId, } = e.data; console.log(eventType, { @@ -494,12 +495,13 @@ export class DiscordBot extends EventTarget { messageId, emoji, channelId, + guildId, }); // look up conversation - const conversation = this.dmConversations.has(userId) - ? this.dmConversations.get(userId) ?? null - : this.channelConversations.get(channelId) ?? null; + const conversation = guildId + ? this.channelConversations.get(channelId) ?? null + : this.dmConversations.get(userId) ?? null; if (!conversation) return; From 948146c777de8feccfc4eea2f635ea7c638bb021 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 16:30:25 +0500 Subject: [PATCH 46/53] remove dead MessageReactionEventData import --- .../packages/react-agents/classes/conversation-object.ts | 1 - 1 file changed, 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 cc2a069ee..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 @@ -8,7 +8,6 @@ import { PlayableAudioStream, GetHashFn, MessageCache, - MessageReactionEventData, } from '../types' import { SceneObject } from '../classes/scene-object'; import { Player } from 'react-agents-client/util/player.mjs'; From 72c6964c06a9172d3ed3d2583e5b40f18efcf6c4 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 17:06:22 +0500 Subject: [PATCH 47/53] remove unnecessary attributes from the rawMessageReaction and replace everything to standard "text" --- .../packages/react-agents/classes/discord-manager.ts | 7 +------ 1 file changed, 1 insertion(+), 6 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 6b471f519..7690c5161 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 @@ -510,12 +510,7 @@ export class DiscordBot extends EventTarget { name: userDisplayName, method: 'messageReaction', args: { - reaction: emoji, - messageId, - userId, - context: { - action: eventType === 'messagereactionadd' ? 'Reaction added' : 'Reaction removed', - }, + text: `${eventType === 'messagereactionadd' ? 'Added' : 'Removed'} reaction '${emoji}' ${eventType === 'messagereactionadd' ? 'to' : 'from'} message ${messageId}`, }, }; From 9465fa091fc9f9da83dfc283ff7742440d31c3fc Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 17:38:37 +0500 Subject: [PATCH 48/53] add id to action message, add discord message id to metadata --- .../packages/react-agents/classes/discord-manager.ts | 4 +++- .../packages/react-agents/types/react-agents.d.ts | 1 + .../packages/react-agents/util/message-utils.ts | 6 +++++- 3 files changed, 9 insertions(+), 2 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 7690c5161..06f9334cc 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 @@ -455,7 +455,9 @@ export class DiscordBot extends EventTarget { method: 'say', args: { text: formattedMessage, - messageId, + }, + metadata: { + discordMessageId: messageId, }, }; const id = getIdFromUserId(userId); 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 c8368e7ea..dc4cbb7b2 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 @@ -217,6 +217,7 @@ export type Attachment = FormattedAttachment & { url?: string; }; export type ActionMessage = { + id: string; // 8 characters max for prompt optimisation userId: string; name: string; method: string; 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 41f7a3c58..90524b7f9 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 @@ -2,6 +2,7 @@ import { PendingActionMessage, AgentSpec, ActiveAgentObject, + ActionMessage, // AgentObject, // ActiveAgentObject, } from '../types'; @@ -12,11 +13,14 @@ export const formatConversationMessage = (rawMessage: PendingActionMessage, { agent, }: { agent: AgentSpec, -}) => { +}): ActionMessage => { const { id: userId, name } = agent; const { method, args, attachments } = rawMessage; + const id = crypto.randomUUID().slice(0, 8); // generate a new id for the message + const timestamp = new Date(); const newMessage = { + id, userId, name, method, From 5c3c74842636a32ecbb4d9d320107760977d0bea Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 17:45:44 +0500 Subject: [PATCH 49/53] add id to action message --- .../react-agents/components/util/default-components.tsx | 3 ++- .../packages/react-agents/util/loadMessagesFromDatabase.js | 2 ++ .../upstreet-agent/packages/react-agents/util/message-utils.ts | 2 +- .../packages/react-agents/util/saveMessageToDatabase.js | 1 + 4 files changed, 6 insertions(+), 2 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 6e2a273cc..d3babc768 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 @@ -277,8 +277,9 @@ const CachedMessagesPrompt = () => { '\n' + cachedMessages .map((action) => { - const { /*userId,*/ name, method, args, attachments = [], timestamp } = action; + const { id, /*userId,*/ name, method, args, attachments = [], timestamp } = action; const j = { + id, // userId, name, method, diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/loadMessagesFromDatabase.js b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/loadMessagesFromDatabase.js index 4f8d444fd..b11351750 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/loadMessagesFromDatabase.js +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/loadMessagesFromDatabase.js @@ -7,6 +7,7 @@ export async function loadMessagesFromDatabase({ const { error, data } = await supabase .from( 'agent_messages' ) .select([ + 'id', 'method', 'args', 'attachments', @@ -27,6 +28,7 @@ export async function loadMessagesFromDatabase({ function decodeMessages(messages) { return messages.map( message => ({ + id: message.id, method: message.method, args: message.args, attachments: message.attachments, 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 90524b7f9..c9180b3e5 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 @@ -16,7 +16,7 @@ export const formatConversationMessage = (rawMessage: PendingActionMessage, { }): ActionMessage => { const { id: userId, name } = agent; const { method, args, attachments } = rawMessage; - const id = crypto.randomUUID().slice(0, 8); // generate a new id for the message + const id = crypto.randomUUID(); // generate a new id for the message const timestamp = new Date(); const newMessage = { diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/saveMessageToDatabase.js b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/saveMessageToDatabase.js index 39211d815..92be186fb 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/saveMessageToDatabase.js +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/saveMessageToDatabase.js @@ -26,6 +26,7 @@ async function encodeMessage(message, jwt, userId, conversationId) { args: message.args, }), { jwt }); return { + id: message.id, method: message.method, args: message.args, attachments: message.attachments, From 37dc44bec1e10258d73a669ee1188c45e3b41775 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 17:47:35 +0500 Subject: [PATCH 50/53] update chat message reaction action to use "id" to sync with message history "id" --- .../packages/react-agents/components/core/chat.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx index 42b3e25b0..606ca1213 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/components/core/chat.tsx @@ -32,6 +32,7 @@ export const ChatActions = () => { type="messageReaction" description={dedent`\ React to a message sent by another user with an emoji when you want to: + - Use the "id" of a message to react to a specific message - Show agreement or disagreement with the message content - Express appreciation for helpful or insightful messages - Acknowledge someone's feelings or emotions @@ -42,17 +43,17 @@ export const ChatActions = () => { schema={ z.object({ reaction: z.string(), - messageId: z.string(), + id: z.string(), }) } examples={[ { reaction: '👍', - messageId: '123', + id: '123', }, { reaction: '👎', - messageId: '123', + id: '123', }, ]} handler={async (e: PendingActionEvent) => { From 1d181c3320af7327ce606d2b11157524f92c88a6 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 17:52:41 +0500 Subject: [PATCH 51/53] add metadata to ActionMessage, use metadata for messageReaction --- .../react-agents/classes/discord-manager.ts | 14 +++++++++----- .../packages/react-agents/types/react-agents.d.ts | 1 + 2 files changed, 10 insertions(+), 5 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 06f9334cc..75d3f7fdd 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 @@ -100,15 +100,15 @@ const bindOutgoing = ({ } else if (method === 'messageReaction') { const { reaction, - messageId, + id, } = args as { reaction: string, - messageId: string, + id: string, }; // get message from conversation by messageId - const message = conversation.getCachedMessages().find(m => m.args.messageId === messageId); + const message = conversation.getCachedMessages().find(m => m.args.id === id); const getDiscordIdForUserId = (userId: string) => { const agents = conversation.getAgents(); @@ -122,16 +122,17 @@ const bindOutgoing = ({ // get userId from message const userId = message?.userId; + const discordMessageId = message?.metadata?.discordMessageId; const discordId = getDiscordIdForUserId(userId); console.log('discord manager message reaction', { reaction, - messageId, + discordMessageId, userId, channelId, discordId, }); - discordBotClient.input.reactToMessage(reaction, messageId, { + discordBotClient.input.reactToMessage(reaction, discordMessageId, { channelId, userId: discordId, }); @@ -514,6 +515,9 @@ export class DiscordBot extends EventTarget { args: { text: `${eventType === 'messagereactionadd' ? 'Added' : 'Removed'} reaction '${emoji}' ${eventType === 'messagereactionadd' ? 'to' : 'from'} message ${messageId}`, }, + metadata: { + discordMessageId: messageId, + }, }; const newMessageReaction = formatConversationMessage(rawMessageReaction, { 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 dc4cbb7b2..7c4e3a7b6 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 @@ -226,6 +226,7 @@ export type ActionMessage = { human: boolean; // XXX can be converted to flags hidden: boolean; timestamp: Date; + metadata?: any; }; export type PendingActionMessage = { method: string; From 84c0448e72d3af2a0a6da5c991ca049cc0437b9a Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Mon, 30 Dec 2024 21:38:35 +0500 Subject: [PATCH 52/53] update multiplayer sendMessage --- apps/chat/components/ui/multiplayer-actions.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/chat/components/ui/multiplayer-actions.tsx b/apps/chat/components/ui/multiplayer-actions.tsx index d51b32a37..d3b544531 100644 --- a/apps/chat/components/ui/multiplayer-actions.tsx +++ b/apps/chat/components/ui/multiplayer-actions.tsx @@ -183,6 +183,7 @@ export function MultiplayerActionsProvider({ children }: MultiplayerActionsProvi const timestamp = new Date(); const message: ActionMessage = { + id: crypto.randomUUID(), method, userId, name, From d9303e6863801d7820475ad1a31e4452bc31660e Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Tue, 31 Dec 2024 10:10:28 +0500 Subject: [PATCH 53/53] save and load metadata to and from db --- .../packages/react-agents/util/loadMessagesFromDatabase.js | 2 ++ .../packages/react-agents/util/saveMessageToDatabase.js | 1 + 2 files changed, 3 insertions(+) diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/loadMessagesFromDatabase.js b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/loadMessagesFromDatabase.js index b11351750..065cfb250 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/loadMessagesFromDatabase.js +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/loadMessagesFromDatabase.js @@ -14,6 +14,7 @@ export async function loadMessagesFromDatabase({ 'src_user_id', 'src_name', 'created_at', + 'metadata', ].join(',')) .eq('user_id', agentId) .eq('conversation_id', conversationId) @@ -35,5 +36,6 @@ function decodeMessages(messages) { userId: message.src_user_id, name: message.src_name, timestamp: message.created_at, + metadata: message.metadata, })); } diff --git a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/saveMessageToDatabase.js b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/saveMessageToDatabase.js index 92be186fb..ca044579d 100644 --- a/packages/usdk/packages/upstreet-agent/packages/react-agents/util/saveMessageToDatabase.js +++ b/packages/usdk/packages/upstreet-agent/packages/react-agents/util/saveMessageToDatabase.js @@ -36,5 +36,6 @@ async function encodeMessage(message, jwt, userId, conversationId) { src_user_id: message.userId, src_name: message.name, embedding, + metadata: message.metadata, }; }