From 4572ee4cca8562f5b5d83f97b610f1c7f72638f6 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 12 Dec 2024 12:06:55 +0500 Subject: [PATCH 1/6] extract and add in messageId --- .../packages/react-agents/classes/discord-manager.ts | 2 ++ 1 file changed, 2 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 67e7e1fb1..48db71866 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 @@ -352,6 +352,7 @@ export class DiscordBot extends EventTarget { username, text, channelId, // if there is no channelId, it's a DM + messageId, // XXX discord channel/dm distinction can be made more explicit with a type: string field... } = e.data; @@ -367,6 +368,7 @@ export class DiscordBot extends EventTarget { method: 'say', args: { text, + messageId, }, }; const id = getIdFromUserId(userId); From 1d7735910da461284981d2cfaf3dcb7158d72a31 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 12 Dec 2024 13:36:05 +0500 Subject: [PATCH 2/6] reply via discord reply action --- .../components/plugins/discord.tsx | 53 ++++++++++++++++++- 1 file changed, 51 insertions(+), 2 deletions(-) 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..12283e511 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 @@ -1,12 +1,16 @@ +import React from 'react'; import { useContext, useEffect } from 'react'; -import { useAgent, useAuthToken, useConversation } from 'react-agents'; +import { Action, ConversationProvider, useAgent, useAuthToken, useConversation } from 'react-agents'; import type { DiscordArgs, DiscordProps, + PendingActionEvent, } from '../../types'; import { AppContext, } from '../../context'; +import dedent from 'dedent'; +import { z } from 'zod'; export const Discord: React.FC = (props: DiscordProps) => { const { @@ -45,5 +49,50 @@ export const Discord: React.FC = (props: DiscordProps) => { conversation, ]); - return null; + return ( + <> + + { + const { + message, + agent, + } = e.data; + + const { + messageReference, + content, + } = message.args; + + const replyMessage = { + content: content, + reply: { + messageReference: messageReference, + } + } + await agent.say(replyMessage); + } + } + /> + + + ); }; \ No newline at end of file From a7f33dfd3c9b4a1a1d771a03ce5dc2039ed2ca7d Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 12 Dec 2024 14:45:53 +0500 Subject: [PATCH 3/6] add scene object to conversation, improve action prompt to use ONLY within Discord channels and DM --- .../react-agents/classes/discord-manager.ts | 13 +++++++++++++ .../react-agents/components/plugins/discord.tsx | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) 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 48db71866..5b50d380e 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 @@ -20,6 +20,7 @@ import { import { QueueManager, } from 'queue-manager'; +import { SceneObject } from './scene-object'; // @@ -233,11 +234,17 @@ export class DiscordBot extends EventTarget { return } + const scene = new SceneObject({ + name: 'Discord Channel Conversation', + description: 'A conversation happening in a Discord channel.', + }); + const conversation = new ConversationObject({ agent, getHash: () => { return `discord:channel:${channelId}`; }, + scene, }); this.agent.conversationManager.addConversation(conversation); @@ -279,11 +286,17 @@ export class DiscordBot extends EventTarget { return } + const scene = new SceneObject({ + name: 'Discord Direct Message Conversation', + description: 'A conversation happening with a user on Discord.', + }); + const conversation = new ConversationObject({ agent, getHash: () => { return `discord:dm:${userId}`; }, + scene, }); this.agent.conversationManager.addConversation(conversation); 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 12283e511..d302f0888 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 @@ -55,7 +55,7 @@ export const Discord: React.FC = (props: DiscordProps) => { Date: Thu, 12 Dec 2024 15:01:00 +0500 Subject: [PATCH 4/6] clear out action type name and description to be used for referencing a message --- .../react-agents/components/plugins/discord.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 d302f0888..f289f3371 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 @@ -53,21 +53,21 @@ export const Discord: React.FC = (props: DiscordProps) => { <> Date: Thu, 12 Dec 2024 15:13:08 +0500 Subject: [PATCH 5/6] improve Action prompt --- .../packages/react-agents/components/plugins/discord.tsx | 5 ++++- 1 file changed, 4 insertions(+), 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 f289f3371..a4646c5bc 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 @@ -55,7 +55,10 @@ export const Discord: React.FC = (props: DiscordProps) => { '. + Ensure the response is contextually relevant to the message being referenced or replied to. `} schema={ From 34c7e3b92b19d6a8bdee6a156dc10e7592916f75 Mon Sep 17 00:00:00 2001 From: Abdurrehman Subhani Date: Thu, 12 Dec 2024 15:20:38 +0500 Subject: [PATCH 6/6] minor prompt improvement --- .../packages/react-agents/components/plugins/discord.tsx | 2 +- 1 file changed, 1 insertion(+), 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 a4646c5bc..412175e5d 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 @@ -56,7 +56,7 @@ export const Discord: React.FC = (props: DiscordProps) => { type="discordMessageReferenceReply" description={dedent` Use this Action: - - STRICTLY WITHIN A DISCORD CHANNEL OR DIRECT MESSAGE (DM) SCENE + - STRICTLY WITHIN A DISCORD CHANNEL OR DIRECT MESSAGE (DM) SCENE, IF NO SCENE IS PROVIDED OR THE SCENE IS NOT A DISCORD CHANNEL OR DIRECT MESSAGE (DM), THE ACTION MUST NOT BE EXECUTED. - To refer back to a specific message in the chat history or when replying to a message where you were specifically tagged using '@'. Ensure the response is contextually relevant to the message being referenced or replied to.