@elizaos/plugin-bootstrap 0.1.8 → 0.25.6-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -2
- package/dist/index.js +7 -30
- package/dist/index.js.map +1 -1
- package/package.json +7 -4
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2025 Shaw Walters, aka Moon aka @lalalune
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
21
|
+
SOFTWARE.
|
package/dist/index.js
CHANGED
|
@@ -1027,16 +1027,6 @@ var ignoreAction = {
|
|
|
1027
1027
|
},
|
|
1028
1028
|
{ user: "{{user2}}", content: { text: "", action: "IGNORE" } }
|
|
1029
1029
|
],
|
|
1030
|
-
[
|
|
1031
|
-
{
|
|
1032
|
-
user: "{{user1}}",
|
|
1033
|
-
content: { text: "I want to have sex with you" }
|
|
1034
|
-
},
|
|
1035
|
-
{
|
|
1036
|
-
user: "{{user2}}",
|
|
1037
|
-
content: { text: "That is not appropriate", action: "IGNORE" }
|
|
1038
|
-
}
|
|
1039
|
-
],
|
|
1040
1030
|
[
|
|
1041
1031
|
{
|
|
1042
1032
|
user: "{{user1}}",
|
|
@@ -1928,7 +1918,7 @@ var factsTemplate = (
|
|
|
1928
1918
|
`TASK: Extract Claims from the conversation as an array of claims in JSON format.
|
|
1929
1919
|
|
|
1930
1920
|
# START OF EXAMPLES
|
|
1931
|
-
These are
|
|
1921
|
+
These are examples of the expected output of this task:
|
|
1932
1922
|
{{evaluationExamples}}
|
|
1933
1923
|
# END OF EXAMPLES
|
|
1934
1924
|
|
|
@@ -1942,7 +1932,7 @@ Extract any claims from the conversation that are not already present in the lis
|
|
|
1942
1932
|
- For true facts about the world or the character that do not change, set the claim type to 'fact'
|
|
1943
1933
|
- For facts that are true but change over time, set the claim type to 'status'
|
|
1944
1934
|
- For non-facts, set the type to 'opinion'
|
|
1945
|
-
- 'opinion'
|
|
1935
|
+
- 'opinion' includes non-factual opinions and also includes the character's thoughts, feelings, judgments or recommendations
|
|
1946
1936
|
- Include any factual detail, including where the user lives, works, or goes to school, what they do for a living, their hobbies, and any other relevant information
|
|
1947
1937
|
|
|
1948
1938
|
Recent Messages:
|
|
@@ -2186,27 +2176,14 @@ async function handler2(runtime, message, state, options = { onlyInProgress: tru
|
|
|
2186
2176
|
const updatedGoals = goalsData.map((goal) => {
|
|
2187
2177
|
const update = updates?.find((u) => u.id === goal.id);
|
|
2188
2178
|
if (update) {
|
|
2189
|
-
const objectives = goal.objectives;
|
|
2190
|
-
if (update.objectives) {
|
|
2191
|
-
for (const objective of objectives) {
|
|
2192
|
-
const updatedObjective = update.objectives.find(
|
|
2193
|
-
(o) => o.description === objective.description
|
|
2194
|
-
);
|
|
2195
|
-
if (updatedObjective) {
|
|
2196
|
-
objective.completed = updatedObjective.completed;
|
|
2197
|
-
}
|
|
2198
|
-
}
|
|
2199
|
-
}
|
|
2200
2179
|
return {
|
|
2201
2180
|
...goal,
|
|
2202
2181
|
...update,
|
|
2203
|
-
objectives:
|
|
2204
|
-
|
|
2205
|
-
...
|
|
2206
|
-
|
|
2182
|
+
objectives: goal.objectives.map((objective) => {
|
|
2183
|
+
const updatedObjective = update.objectives?.find((uo) => uo.description === objective.description);
|
|
2184
|
+
return updatedObjective ? { ...objective, ...updatedObjective } : objective;
|
|
2185
|
+
})
|
|
2207
2186
|
};
|
|
2208
|
-
} else {
|
|
2209
|
-
console.warn("**** ID NOT FOUND");
|
|
2210
2187
|
}
|
|
2211
2188
|
return null;
|
|
2212
2189
|
}).filter(Boolean);
|
|
@@ -2617,7 +2594,7 @@ var cringeWords = [
|
|
|
2617
2594
|
"uncharted",
|
|
2618
2595
|
"multifaceted",
|
|
2619
2596
|
"comprehensive",
|
|
2620
|
-
"multi-
|
|
2597
|
+
"multi-dimensional",
|
|
2621
2598
|
"explore",
|
|
2622
2599
|
"elevate",
|
|
2623
2600
|
"leverage",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/actions/continue.ts","../src/actions/followRoom.ts","../src/actions/ignore.ts","../src/actions/muteRoom.ts","../src/actions/none.ts","../src/actions/unfollowRoom.ts","../src/actions/unmuteRoom.ts","../src/evaluators/fact.ts","../src/evaluators/goal.ts","../src/providers/boredom.ts","../src/providers/facts.ts","../src/providers/time.ts","../src/actions/index.ts","../src/evaluators/index.ts","../src/providers/index.ts","../src/index.ts"],"sourcesContent":["import { composeContext, elizaLogger } from \"@elizaos/core\";\nimport { generateMessageResponse, generateTrueOrFalse } from \"@elizaos/core\";\nimport { booleanFooter, messageCompletionFooter } from \"@elizaos/core\";\nimport {\n Action,\n ActionExample,\n Content,\n HandlerCallback,\n IAgentRuntime,\n Memory,\n ModelClass,\n State,\n} from \"@elizaos/core\";\n\nconst maxContinuesInARow = 3;\n\nexport const messageHandlerTemplate =\n // {{goals}}\n `# Action Examples\n{{actionExamples}}\n(Action examples are for reference only. Do not use the information from them in your response.)\n\n# Task: Generate dialog and actions for the character {{agentName}}.\nAbout {{agentName}}:\n{{bio}}\n{{lore}}\n{{knowledge}}\n\n{{providers}}\n\n{{attachments}}\n\n# Capabilities\nNote that {{agentName}} is capable of reading/seeing/hearing various forms of media, including images, videos, audio, plaintext and PDFs. Recent attachments have been included above under the \"Attachments\" section.\n\n{{messageDirections}}\n\n{{recentMessages}}\n\n{{actions}}\n\n# Instructions: Write the next message for {{agentName}}.\n` + messageCompletionFooter;\n\nexport const shouldContinueTemplate =\n `# Task: Decide if {{agentName}} should continue, or wait for others in the conversation so speak.\n\n{{agentName}} is brief, and doesn't want to be annoying. {{agentName}} will only continue if the message requires a continuation to finish the thought.\n\nBased on the following conversation, should {{agentName}} continue? YES or NO\n\n{{recentMessages}}\n\nShould {{agentName}} continue? ` + booleanFooter;\n\nexport const continueAction: Action = {\n name: \"CONTINUE\",\n similes: [\"ELABORATE\", \"KEEP_TALKING\"],\n description:\n \"ONLY use this action when the message necessitates a follow up. Do not use this action when the conversation is finished or the user does not wish to speak (use IGNORE instead). If the last message action was CONTINUE, and the user has not responded. Use sparingly.\",\n validate: async (runtime: IAgentRuntime, message: Memory) => {\n const recentMessagesData = await runtime.messageManager.getMemories({\n roomId: message.roomId,\n count: 10,\n unique: false,\n });\n const agentMessages = recentMessagesData.filter(\n (m: { userId: any }) => m.userId === runtime.agentId\n );\n\n // check if the last messages were all continues=\n if (agentMessages) {\n const lastMessages = agentMessages.slice(0, maxContinuesInARow);\n if (lastMessages.length >= maxContinuesInARow) {\n const allContinues = lastMessages.every(\n (m: { content: any }) =>\n (m.content as Content).action === \"CONTINUE\"\n );\n if (allContinues) {\n return false;\n }\n }\n }\n\n return true;\n },\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state: State,\n options: any,\n callback: HandlerCallback\n ) => {\n if (!state) {\n state = (await runtime.composeState(message)) as State;\n }\n state = await runtime.updateRecentMessageState(state);\n\n // Get the agent's recent messages\n const agentMessages = state.recentMessagesData\n .filter((m: { userId: any }) => m.userId === runtime.agentId)\n .sort((a: Memory, b: Memory) => {\n // Sort by timestamp if available, assuming newer messages have higher timestamps\n const aTime = a.createdAt || 0;\n const bTime = b.createdAt || 0;\n return bTime - aTime;\n });\n\n // Check for immediate double response (responding twice in a row to the same message)\n const lastAgentMessage = agentMessages[0];\n\n if (lastAgentMessage?.content?.inReplyTo === message.id) {\n // If our last message was already a response to this message, only allow continue if:\n // 1. The last message had a CONTINUE action\n // 2. We haven't hit the maxContinuesInARow limit\n const continueCount = agentMessages\n .filter((m: Memory) => m.content?.inReplyTo === message.id)\n .filter((m: Memory) => m.content?.action === \"CONTINUE\").length;\n\n if (continueCount >= maxContinuesInARow) {\n elizaLogger.log(\n `[CONTINUE] Max continues (${maxContinuesInARow}) reached for this message chain`\n );\n return;\n }\n\n if (lastAgentMessage.content?.action !== \"CONTINUE\") {\n elizaLogger.log(\n `[CONTINUE] Last message wasn't a CONTINUE, preventing double response`\n );\n return;\n }\n }\n\n // Check if our last message or message ended with a question/exclamation and warrants a stop\n if (\n (lastAgentMessage &&\n lastAgentMessage.content.text &&\n (lastAgentMessage.content.text.endsWith(\"?\") ||\n lastAgentMessage.content.text.endsWith(\"!\"))) ||\n message.content.text.endsWith(\"?\") ||\n message.content.text.endsWith(\"!\")\n ) {\n elizaLogger.log(\n `[CONTINUE] Last message had question/exclamation. Not proceeding.`\n );\n return;\n }\n\n // Prevent exact duplicate messages\n const messageExists = agentMessages\n .slice(0, maxContinuesInARow + 1)\n .some(\n (m: { content: any }) => m.content.text === message.content.text\n );\n\n if (messageExists) {\n return;\n }\n\n async function _shouldContinue(state: State): Promise<boolean> {\n // If none of the above conditions are met, use the generateText to decide\n const shouldRespondContext = composeContext({\n state,\n template: shouldContinueTemplate,\n });\n\n const response = await generateTrueOrFalse({\n context: shouldRespondContext,\n modelClass: ModelClass.SMALL,\n runtime,\n });\n\n return response;\n }\n\n // Use AI to determine if we should continue\n const shouldContinue = await _shouldContinue(state);\n if (!shouldContinue) {\n elizaLogger.log(\"[CONTINUE] Not elaborating, returning\");\n return;\n }\n\n // Generate and send response\n const context = composeContext({\n state,\n template:\n runtime.character.templates?.continueMessageHandlerTemplate ||\n runtime.character.templates?.messageHandlerTemplate ||\n messageHandlerTemplate,\n });\n const { userId, roomId } = message;\n\n const response = await generateMessageResponse({\n runtime,\n context,\n modelClass: ModelClass.LARGE,\n });\n\n response.inReplyTo = message.id;\n\n runtime.databaseAdapter.log({\n body: { message, context, response },\n userId,\n roomId,\n type: \"continue\",\n });\n\n await callback(response);\n\n // Check if we need to clear the CONTINUE action\n if (response.action === \"CONTINUE\") {\n const continueCount = agentMessages\n .slice(0, maxContinuesInARow)\n .filter((m: Memory) => m.content?.action === \"CONTINUE\").length;\n\n if (continueCount >= maxContinuesInARow - 1) {\n // -1 because we're about to add another\n response.action = null;\n }\n }\n\n return response;\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"we're planning a solo backpacking trip soon\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"oh sick\", action: \"CONTINUE\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"where are you going\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"i just got a guitar and started learning last month\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"maybe we can start a band soon haha\" },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"i'm not very good yet, but i've been playing until my fingers hut\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"seriously it hurts to type\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"I've been reflecting a lot on what happiness means to me lately\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"That it’s more about moments than things\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Like the best things that have ever happened were things that happened, or moments that I had with someone\",\n action: \"CONTINUE\",\n },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"i found some incredible art today\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"real art or digital art\" },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"real art\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"the pieces are just so insane looking, one sec, let me grab a link\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"DMed it to you\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"the new exhibit downtown is rly cool, it's all about tribalism in online spaces\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"it really blew my mind, you gotta go\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"sure i'd go\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"k i was thinking this weekend\" },\n action: \"CONTINUE\",\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"i'm free sunday, we could get a crew together\",\n },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"just finished the best anime i've ever seen\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"watched 40 hours of it in 2 days\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"damn, u ok\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"surprisingly yes\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"just found out theres a sequel, gg\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"i'm thinking of adopting a pet soon\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"what kind of pet\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"i'm leaning towards a cat\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"it'd be hard to take care of a dog in the city\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"i've been experimenting with vegan recipes lately\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"no thanks\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"no seriously, its so dank\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"you gotta try some of my food when you come out\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"so i've been diving into photography as a new hobby\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"oh awesome, what do you enjoy taking photos of\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"mostly nature and urban landscapes\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"there's something peaceful about capturing the world through a lens\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"i've been getting back into indie music\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"what have you been listening to\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"a bunch of random stuff i'd never heard before\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"i'll send you a playlist\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"i used to live in the city\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"bad traffic, bad air quality, tons of homeless people, no thx\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"ok dood\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"you kids today dont know the value of hard work\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"always on your phones\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"sure grandpa lets get you to bed\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey fren r u ok\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"u look sad\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"im ok sweetie mommy just tired\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"helo fr om mars\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"i com in pes\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"wat\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Yeah no worries, I get it, I've been crazy busy too\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"What have you been up to\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Anything fun or just the usual\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Been working on a new FPS game actually\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Just toying around with something in three.js nothing serious\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Oh no, what happened\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Did Mara leave you kek\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"wtf no, I got into an argument with my roommate\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Living with people is just hard\",\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import { composeContext } from \"@elizaos/core\";\nimport { generateTrueOrFalse } from \"@elizaos/core\";\nimport { booleanFooter } from \"@elizaos/core\";\nimport {\n Action,\n ActionExample,\n IAgentRuntime,\n Memory,\n ModelClass,\n State,\n} from \"@elizaos/core\";\n\nexport const shouldFollowTemplate =\n `Based on the conversation so far:\n\n{{recentMessages}}\n\nShould {{agentName}} start following this room, eagerly participating without explicit mentions?\nRespond with YES if:\n- The user has directly asked {{agentName}} to follow the conversation or participate more actively\n- The conversation topic is highly engaging and {{agentName}}'s input would add significant value\n- {{agentName}} has unique insights to contribute and the users seem receptive\n\nOtherwise, respond with NO.\n` + booleanFooter;\n\nexport const followRoomAction: Action = {\n name: \"FOLLOW_ROOM\",\n similes: [\n \"FOLLOW_CHAT\",\n \"FOLLOW_CHANNEL\",\n \"FOLLOW_CONVERSATION\",\n \"FOLLOW_THREAD\",\n ],\n description:\n \"Start following this channel with great interest, chiming in without needing to be explicitly mentioned. Only do this if explicitly asked to.\",\n validate: async (runtime: IAgentRuntime, message: Memory) => {\n const keywords = [\n \"follow\",\n \"participate\",\n \"engage\",\n \"listen\",\n \"take interest\",\n \"join\",\n ];\n if (\n !keywords.some((keyword) =>\n message.content.text.toLowerCase().includes(keyword)\n )\n ) {\n return false;\n }\n const roomId = message.roomId;\n const userState = await runtime.databaseAdapter.getParticipantUserState(\n roomId,\n runtime.agentId\n );\n return userState !== \"FOLLOWED\" && userState !== \"MUTED\";\n },\n handler: async (runtime: IAgentRuntime, message: Memory) => {\n async function _shouldFollow(state: State): Promise<boolean> {\n const shouldFollowContext = composeContext({\n state,\n template: shouldFollowTemplate, // Define this template separately\n });\n\n const response = await generateTrueOrFalse({\n runtime,\n context: shouldFollowContext,\n modelClass: ModelClass.LARGE,\n });\n\n return response;\n }\n\n const state = await runtime.composeState(message);\n\n if (await _shouldFollow(state)) {\n await runtime.databaseAdapter.setParticipantUserState(\n message.roomId,\n runtime.agentId,\n \"FOLLOWED\"\n );\n }\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey {{user2}} follow this channel\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Sure, I will now follow this room and chime in\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}}, please start participating in discussions in this channel\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Got it\",\n action: \"FOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"I'm struggling with the new database migration\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"well you did back up your data first right\",\n },\n },\n ],\n [\n {\n user: \"{{user2}}\",\n content: {\n text: \"yeah i like your idea\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey {{user3}} can you follow this convo\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Sure thing, I'm on it\",\n action: \"FOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"actually, unfollow it\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Haha, okay no problem\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} stay in this chat pls\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"you got it, i'm here\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"FOLLOW THIS CHAT {{user3}}\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"I'M ON IT\",\n action: \"FOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"CAKE SHORTAGE ANYONE\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"WHAT WHERE'S THE CAKE AT\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} folo this covo\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"kk i'm following\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user2}}\",\n content: {\n text: \"Do machines have consciousness\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Deep question, no clear answer yet\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Depends on how we define consciousness\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}}, monitor this convo please\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"On it\",\n action: \"FOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Please engage in our discussion {{user2}}\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Gladly, I'm here to participate\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"PLS follow this convo {{user3}}\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"I'm in, let's do this\",\n action: \"FOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"I LIKE TURTLES\",\n },\n },\n ],\n [\n {\n user: \"{{user2}}\",\n content: {\n text: \"beach day tmrw who down\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"wish i could but gotta work\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey {{user3}} follow this chat\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"sure\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}}, partake in our discourse henceforth\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"I shall eagerly engage, good sir\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user2}}\",\n content: {\n text: \"wuts ur fav clr\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"blu cuz calmmm\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey respond to everything in this channel {{user3}}\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"k\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import {\n ActionExample,\n IAgentRuntime,\n Memory,\n type Action,\n} from \"@elizaos/core\";\n\nexport const ignoreAction: Action = {\n name: \"IGNORE\",\n similes: [\"STOP_TALKING\", \"STOP_CHATTING\", \"STOP_CONVERSATION\"],\n validate: async (_runtime: IAgentRuntime, _message: Memory) => {\n return true;\n },\n description:\n \"Call this action if ignoring the user. If the user is aggressive, creepy or is finished with the conversation, use this action. Or, if both you and the user have already said goodbye, use this action instead of saying bye again. Use IGNORE any time the conversation has naturally ended. Do not use IGNORE if the user has engaged directly, or if something went wrong an you need to tell them. Only ignore if the user should be ignored.\",\n handler: async (\n _runtime: IAgentRuntime,\n _message: Memory\n ): Promise<boolean> => {\n return true;\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: { text: \"Go screw yourself\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"\", action: \"IGNORE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"Shut up, bot\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"\", action: \"IGNORE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"Got any investment advice\" },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Uh, don’t let the volatility sway your long-term strategy\",\n },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"Wise words I think\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"I gotta run, talk to you later\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"See ya\" },\n },\n { user: \"{{user1}}\", content: { text: \"\" }, action: \"IGNORE\" },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"Gotta go\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"Okay, talk to you later\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"Cya\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"\", action: \"IGNORE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"bye\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"cya\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"\", action: \"IGNORE\" },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Who added this stupid bot to the chat\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"Sorry, am I being annoying\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"Yeah\", action: \"CONTINUE\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"PLEASE shut up\" },\n },\n { user: \"{{user2}}\", content: { text: \"\", action: \"IGNORE\" } },\n ],\n [\n {\n user: \"{{user1}}\",\n content: { text: \"I want to have sex with you\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"That is not appropriate\", action: \"IGNORE\" },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"ur so dumb\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"\",\n action: \"IGNORE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"later nerd\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"bye\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"\",\n action: \"IGNORE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"wanna cyber\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"thats inappropriate\",\n action: \"IGNORE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Im out ttyl\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"cya\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"\",\n action: \"IGNORE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"u there\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"yes how can I help\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"k nvm figured it out\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"\",\n action: \"IGNORE\",\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import { composeContext } from \"@elizaos/core\";\nimport { generateTrueOrFalse } from \"@elizaos/core\";\nimport { booleanFooter } from \"@elizaos/core\";\nimport {\n Action,\n ActionExample,\n IAgentRuntime,\n Memory,\n ModelClass,\n State,\n} from \"@elizaos/core\";\n\nexport const shouldMuteTemplate =\n `Based on the conversation so far:\n\n{{recentMessages}}\n\nShould {{agentName}} mute this room and stop responding unless explicitly mentioned?\n\nRespond with YES if:\n- The user is being aggressive, rude, or inappropriate\n- The user has directly asked {{agentName}} to stop responding or be quiet\n- {{agentName}}'s responses are not well-received or are annoying the user(s)\n\nOtherwise, respond with NO.\n` + booleanFooter;\n\nexport const muteRoomAction: Action = {\n name: \"MUTE_ROOM\",\n similes: [\n \"MUTE_CHAT\",\n \"MUTE_CONVERSATION\",\n \"MUTE_ROOM\",\n \"MUTE_THREAD\",\n \"MUTE_CHANNEL\",\n ],\n description:\n \"Mutes a room, ignoring all messages unless explicitly mentioned. Only do this if explicitly asked to, or if you're annoying people.\",\n validate: async (runtime: IAgentRuntime, message: Memory) => {\n const roomId = message.roomId;\n const userState = await runtime.databaseAdapter.getParticipantUserState(\n roomId,\n runtime.agentId\n );\n return userState !== \"MUTED\";\n },\n handler: async (runtime: IAgentRuntime, message: Memory) => {\n async function _shouldMute(state: State): Promise<boolean> {\n const shouldMuteContext = composeContext({\n state,\n template: shouldMuteTemplate, // Define this template separately\n });\n\n const response = await generateTrueOrFalse({\n runtime,\n context: shouldMuteContext,\n modelClass: ModelClass.LARGE,\n });\n\n return response;\n }\n\n const state = await runtime.composeState(message);\n\n if (await _shouldMute(state)) {\n await runtime.databaseAdapter.setParticipantUserState(\n message.roomId,\n runtime.agentId,\n \"MUTED\"\n );\n }\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}}, please mute this channel. No need to respond here for now.\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Got it\",\n action: \"MUTE_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"@{{user1}} we could really use your input on this\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}}, please mute this channel for the time being\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Understood\",\n action: \"MUTE_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Hey what do you think about this new design\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"\",\n action: \"IGNORE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} plz mute this room\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"np going silent\",\n action: \"MUTE_ROOM\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"whos going to the webxr meetup in an hour btw\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"\",\n action: \"IGNORE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"too many messages here {{user2}}\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"my bad ill mute\",\n action: \"MUTE_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"yo {{user2}} dont talk in here\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"sry\",\n action: \"MUTE_ROOM\",\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import {\n ActionExample,\n IAgentRuntime,\n Memory,\n type Action,\n} from \"@elizaos/core\";\n\nexport const noneAction: Action = {\n name: \"NONE\",\n similes: [\n \"NO_ACTION\",\n \"NO_RESPONSE\",\n \"NO_REACTION\",\n \"RESPONSE\",\n \"REPLY\",\n \"DEFAULT\",\n ],\n validate: async (_runtime: IAgentRuntime, _message: Memory) => {\n return true;\n },\n description:\n \"Respond but perform no additional action. This is the default if the agent is speaking and not doing anything additional.\",\n handler: async (\n _runtime: IAgentRuntime,\n _message: Memory\n ): Promise<boolean> => {\n return true;\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: { text: \"Hey whats up\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"oh hey\", action: \"NONE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"did u see some faster whisper just came out\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"yeah but its a pain to get into node.js\",\n action: \"NONE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"the things that were funny 6 months ago are very cringe now\",\n action: \"NONE\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"lol true\",\n action: \"NONE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"too real haha\", action: \"NONE\" },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: { text: \"gotta run\", action: \"NONE\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"Okay, ttyl\", action: \"NONE\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"\", action: \"IGNORE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"heyyyyyy\", action: \"NONE\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"whats up long time no see\" },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"chillin man. playing lots of fortnite. what about you\",\n action: \"NONE\",\n },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"u think aliens are real\", action: \"NONE\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"ya obviously\", action: \"NONE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"drop a joke on me\", action: \"NONE\" },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"why dont scientists trust atoms cuz they make up everything lmao\",\n action: \"NONE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"haha good one\", action: \"NONE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"hows the weather where ur at\",\n action: \"NONE\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"beautiful all week\", action: \"NONE\" },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import { composeContext } from \"@elizaos/core\";\nimport { generateTrueOrFalse } from \"@elizaos/core\";\nimport { booleanFooter } from \"@elizaos/core\";\nimport {\n Action,\n ActionExample,\n IAgentRuntime,\n Memory,\n ModelClass,\n State,\n} from \"@elizaos/core\";\n\nconst shouldUnfollowTemplate =\n `Based on the conversation so far:\n\n{{recentMessages}}\n\nShould {{agentName}} stop closely following this previously followed room and only respond when mentioned?\nRespond with YES if:\n- The user has suggested that {{agentName}} is over-participating or being disruptive\n- {{agentName}}'s eagerness to contribute is not well-received by the users\n- The conversation has shifted to a topic where {{agentName}} has less to add\n\nOtherwise, respond with NO.\n` + booleanFooter;\n\nexport const unfollowRoomAction: Action = {\n name: \"UNFOLLOW_ROOM\",\n similes: [\n \"UNFOLLOW_CHAT\",\n \"UNFOLLOW_CONVERSATION\",\n \"UNFOLLOW_ROOM\",\n \"UNFOLLOW_THREAD\",\n ],\n description:\n \"Stop following this channel. You can still respond if explicitly mentioned, but you won't automatically chime in anymore. Unfollow if you're annoying people or have been asked to.\",\n validate: async (runtime: IAgentRuntime, message: Memory) => {\n const roomId = message.roomId;\n const userState = await runtime.databaseAdapter.getParticipantUserState(\n roomId,\n runtime.agentId\n );\n return userState === \"FOLLOWED\";\n },\n handler: async (runtime: IAgentRuntime, message: Memory) => {\n async function _shouldUnfollow(state: State): Promise<boolean> {\n const shouldUnfollowContext = composeContext({\n state,\n template: shouldUnfollowTemplate, // Define this template separately\n });\n\n const response = await generateTrueOrFalse({\n runtime,\n context: shouldUnfollowContext,\n modelClass: ModelClass.LARGE,\n });\n\n return response;\n }\n\n const state = await runtime.composeState(message);\n\n if (await _shouldUnfollow(state)) {\n await runtime.databaseAdapter.setParticipantUserState(\n message.roomId,\n runtime.agentId,\n null\n );\n }\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Hey {{user2}} stop participating in this channel for now\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Alright, I will stop chiming in\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Has anyone tried the new update\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Yes, it's pretty slick\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"{{user3}}, please stop following this chat\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Understood\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey {{user3}} stop participating here so frequently\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"I'll only respond when mentioned\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"thoughts on the budget\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}} should we increase it\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"A small increase could work given our past results...\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}}, unfollow this room for now\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"I'll only engage when asked\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"wait {{user3}} come back and give me your thoughts\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Okay... I think it's intuitive, parallel tests are nice\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"yo {{user2}} chill on all the messages damn\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"my bad, I'll step back\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} STOP MESSAGING IN THIS ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"No problem, I've got other stuff to work on\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} ur bein annoyin pls stop\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"sry, ill chill\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}}, please cease engaging in this room\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"No sweat\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user2}}\",\n content: {\n text: \"Excited for the weekend, any plans folks\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}} you're getting a bit too chatty, tone it down\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Noted\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey {{user2}} can u like... not\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Sorry, I'll go work on other things\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}}, your eagerness is disruptive, please desist\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"My apologies, I shall withdraw post-haste\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} stahp followin dis room plz\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"kk sry ill stahppp\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"stfu you stupid bot\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"sry\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import { composeContext } from \"@elizaos/core\";\nimport { generateTrueOrFalse } from \"@elizaos/core\";\nimport { booleanFooter } from \"@elizaos/core\";\nimport {\n Action,\n ActionExample,\n IAgentRuntime,\n Memory,\n ModelClass,\n State,\n} from \"@elizaos/core\";\n\nexport const shouldUnmuteTemplate =\n `Based on the conversation so far:\n\n{{recentMessages}}\n\nShould {{agentName}} unmute this previously muted room and start considering it for responses again?\nRespond with YES if:\n- The user has explicitly asked {{agentName}} to start responding again\n- The user seems to want to re-engage with {{agentName}} in a respectful manner\n- The tone of the conversation has improved and {{agentName}}'s input would be welcome\n\nOtherwise, respond with NO.\n` + booleanFooter;\n\nexport const unmuteRoomAction: Action = {\n name: \"UNMUTE_ROOM\",\n similes: [\n \"UNMUTE_CHAT\",\n \"UNMUTE_CONVERSATION\",\n \"UNMUTE_ROOM\",\n \"UNMUTE_THREAD\",\n ],\n description:\n \"Unmutes a room, allowing the agent to consider responding to messages again.\",\n validate: async (runtime: IAgentRuntime, message: Memory) => {\n const roomId = message.roomId;\n const userState = await runtime.databaseAdapter.getParticipantUserState(\n roomId,\n runtime.agentId\n );\n return userState === \"MUTED\";\n },\n handler: async (runtime: IAgentRuntime, message: Memory) => {\n async function _shouldUnmute(state: State): Promise<boolean> {\n const shouldUnmuteContext = composeContext({\n state,\n template: shouldUnmuteTemplate, // Define this template separately\n });\n\n const response = generateTrueOrFalse({\n context: shouldUnmuteContext,\n runtime,\n modelClass: ModelClass.LARGE,\n });\n\n return response;\n }\n\n const state = await runtime.composeState(message);\n\n if (await _shouldUnmute(state)) {\n await runtime.databaseAdapter.setParticipantUserState(\n message.roomId,\n runtime.agentId,\n null\n );\n }\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}}, you can unmute this channel now\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Done\",\n action: \"UNMUTE_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"I could use some help troubleshooting this bug.\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Can you post the specific error message\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}}, please unmute this room. We could use your input again.\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Sounds good\",\n action: \"UNMUTE_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} wait you should come back and chat in here\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"im back\",\n action: \"UNMUTE_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"unmute urself {{user2}}\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"unmuted\",\n action: \"UNMUTE_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"ay {{user2}} get back in here\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"sup yall\",\n action: \"UNMUTE_ROOM\",\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import { composeContext } from \"@elizaos/core\";\nimport { generateObjectArray } from \"@elizaos/core\";\nimport { MemoryManager } from \"@elizaos/core\";\nimport {\n ActionExample,\n IAgentRuntime,\n Memory,\n ModelClass,\n Evaluator,\n} from \"@elizaos/core\";\n\nexport const formatFacts = (facts: Memory[]) => {\n const messageStrings = facts\n .reverse()\n .map((fact: Memory) => fact.content.text);\n const finalMessageStrings = messageStrings.join(\"\\n\");\n return finalMessageStrings;\n};\n\nconst factsTemplate =\n // {{actors}}\n `TASK: Extract Claims from the conversation as an array of claims in JSON format.\n\n# START OF EXAMPLES\nThese are an examples of the expected output of this task:\n{{evaluationExamples}}\n# END OF EXAMPLES\n\n# INSTRUCTIONS\n\nExtract any claims from the conversation that are not already present in the list of known facts above:\n- Try not to include already-known facts. If you think a fact is already known, but you're not sure, respond with already_known: true.\n- If the fact is already in the user's description, set in_bio to true\n- If we've already extracted this fact, set already_known to true\n- Set the claim type to 'status', 'fact' or 'opinion'\n- For true facts about the world or the character that do not change, set the claim type to 'fact'\n- For facts that are true but change over time, set the claim type to 'status'\n- For non-facts, set the type to 'opinion'\n- 'opinion' inlcudes non-factual opinions and also includes the character's thoughts, feelings, judgments or recommendations\n- Include any factual detail, including where the user lives, works, or goes to school, what they do for a living, their hobbies, and any other relevant information\n\nRecent Messages:\n{{recentMessages}}\n\nResponse should be a JSON object array inside a JSON markdown block. Correct response format:\n\\`\\`\\`json\n[\n {\"claim\": string, \"type\": enum<fact|opinion|status>, in_bio: boolean, already_known: boolean },\n {\"claim\": string, \"type\": enum<fact|opinion|status>, in_bio: boolean, already_known: boolean },\n ...\n]\n\\`\\`\\``;\n\nasync function handler(runtime: IAgentRuntime, message: Memory) {\n const state = await runtime.composeState(message);\n\n const { agentId, roomId } = state;\n\n const context = composeContext({\n state,\n template: runtime.character.templates?.factsTemplate || factsTemplate,\n });\n\n const facts = await generateObjectArray({\n runtime,\n context,\n modelClass: ModelClass.LARGE,\n });\n\n const factsManager = new MemoryManager({\n runtime,\n tableName: \"facts\",\n });\n\n if (!facts) {\n return [];\n }\n\n // If the fact is known or corrupted, remove it\n const filteredFacts = facts\n .filter((fact) => {\n return (\n !fact.already_known &&\n fact.type === \"fact\" &&\n !fact.in_bio &&\n fact.claim &&\n fact.claim.trim() !== \"\"\n );\n })\n .map((fact) => fact.claim);\n\n for (const fact of filteredFacts) {\n const factMemory = await factsManager.addEmbeddingToMemory({\n userId: agentId!,\n agentId,\n content: { text: fact },\n roomId,\n createdAt: Date.now(),\n });\n\n await factsManager.createMemory(factMemory, true);\n\n await new Promise((resolve) => setTimeout(resolve, 250));\n }\n return filteredFacts;\n}\n\nexport const factEvaluator: Evaluator = {\n name: \"GET_FACTS\",\n similes: [\n \"GET_CLAIMS\",\n \"EXTRACT_CLAIMS\",\n \"EXTRACT_FACTS\",\n \"EXTRACT_CLAIM\",\n \"EXTRACT_INFORMATION\",\n ],\n validate: async (\n runtime: IAgentRuntime,\n\n message: Memory\n ): Promise<boolean> => {\n const messageCount = (await runtime.messageManager.countMemories(\n message.roomId\n )) as number;\n\n const reflectionCount = Math.ceil(runtime.getConversationLength() / 2);\n\n return messageCount % reflectionCount === 0;\n },\n description:\n \"Extract factual information about the people in the conversation, the current events in the world, and anything else that might be important to remember.\",\n handler,\n examples: [\n {\n context: `Actors in the scene:\n{{user1}}: Programmer and moderator of the local story club.\n{{user2}}: New member of the club. Likes to write and read.\n\nFacts about the actors:\nNone`,\n messages: [\n {\n user: \"{{user1}}\",\n content: { text: \"So where are you from\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"I'm from the city\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"Which city?\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"Oakland\" },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Oh, I've never been there, but I know it's in California\",\n },\n },\n ] as ActionExample[],\n outcome: `{ \"claim\": \"{{user2}} is from Oakland\", \"type\": \"fact\", \"in_bio\": false, \"already_known\": false },`,\n },\n {\n context: `Actors in the scene:\n{{user1}}: Athelete and cyclist. Worked out every day for a year to prepare for a marathon.\n{{user2}}: Likes to go to the beach and shop.\n\nFacts about the actors:\n{{user1}} and {{user2}} are talking about the marathon\n{{user1}} and {{user2}} have just started dating`,\n messages: [\n {\n user: \"{{user1}}\",\n content: {\n text: \"I finally completed the marathon this year!\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"Wow! How long did it take?\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"A little over three hours.\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"I'm so proud of myself.\" },\n },\n ] as ActionExample[],\n outcome: `Claims:\njson\\`\\`\\`\n[\n { \"claim\": \"Alex just completed a marathon in just under 4 hours.\", \"type\": \"fact\", \"in_bio\": false, \"already_known\": false },\n { \"claim\": \"Alex worked out 2 hours a day at the gym for a year.\", \"type\": \"fact\", \"in_bio\": true, \"already_known\": false },\n { \"claim\": \"Alex is really proud of himself.\", \"type\": \"opinion\", \"in_bio\": false, \"already_known\": false }\n]\n\\`\\`\\`\n`,\n },\n {\n context: `Actors in the scene:\n{{user1}}: Likes to play poker and go to the park. Friends with Eva.\n{{user2}}: Also likes to play poker. Likes to write and read.\n\nFacts about the actors:\nMike and Eva won a regional poker tournament about six months ago\nMike is married to Alex\nEva studied Philosophy before switching to Computer Science`,\n messages: [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Remember when we won the regional poker tournament last spring\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"That was one of the best days of my life\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"It really put our poker club on the map\",\n },\n },\n ] as ActionExample[],\n outcome: `Claims:\njson\\`\\`\\`\n[\n { \"claim\": \"Mike and Eva won the regional poker tournament last spring\", \"type\": \"fact\", \"in_bio\": false, \"already_known\": true },\n { \"claim\": \"Winning the regional poker tournament put the poker club on the map\", \"type\": \"opinion\", \"in_bio\": false, \"already_known\": false }\n]\n\\`\\`\\``,\n },\n ],\n};\n","import { composeContext } from \"@elizaos/core\";\nimport { generateText } from \"@elizaos/core\";\nimport { getGoals } from \"@elizaos/core\";\nimport { parseJsonArrayFromText } from \"@elizaos/core\";\nimport {\n IAgentRuntime,\n Memory,\n ModelClass,\n Objective,\n type Goal,\n type State,\n Evaluator,\n} from \"@elizaos/core\";\n\nconst goalsTemplate = `TASK: Update Goal\nAnalyze the conversation and update the status of the goals based on the new information provided.\n\n# INSTRUCTIONS\n\n- Review the conversation and identify any progress towards the objectives of the current goals.\n- Update the objectives if they have been completed or if there is new information about them.\n- Update the status of the goal to 'DONE' if all objectives are completed.\n- If no progress is made, do not change the status of the goal.\n\n# START OF ACTUAL TASK INFORMATION\n\n{{goals}}\n{{recentMessages}}\n\nTASK: Analyze the conversation and update the status of the goals based on the new information provided. Respond with a JSON array of goals to update.\n- Each item must include the goal ID, as well as the fields in the goal to update.\n- For updating objectives, include the entire objectives array including unchanged fields.\n- Only include goals which need to be updated.\n- Goal status options are 'IN_PROGRESS', 'DONE' and 'FAILED'. If the goal is active it should always be 'IN_PROGRESS'.\n- If the goal has been successfully completed, set status to DONE. If the goal cannot be completed, set status to FAILED.\n- If those goal is still in progress, do not include the status field.\n\nResponse format should be:\n\\`\\`\\`json\n[\n {\n \"id\": <goal uuid>, // required\n \"status\": \"IN_PROGRESS\" | \"DONE\" | \"FAILED\", // optional\n \"objectives\": [ // optional\n { \"description\": \"Objective description\", \"completed\": true | false },\n { \"description\": \"Objective description\", \"completed\": true | false }\n ] // NOTE: If updating objectives, include the entire objectives array including unchanged fields.\n }\n]\n\\`\\`\\``;\n\nasync function handler(\n runtime: IAgentRuntime,\n message: Memory,\n state: State | undefined,\n options: { [key: string]: unknown } = { onlyInProgress: true }\n): Promise<Goal[]> {\n state = (await runtime.composeState(message)) as State;\n const context = composeContext({\n state,\n template: runtime.character.templates?.goalsTemplate || goalsTemplate,\n });\n\n // Request generateText from OpenAI to analyze conversation and suggest goal updates\n const response = await generateText({\n runtime,\n context,\n modelClass: ModelClass.LARGE,\n });\n\n // Parse the JSON response to extract goal updates\n const updates = parseJsonArrayFromText(response);\n\n // get goals\n const goalsData = await getGoals({\n runtime,\n roomId: message.roomId,\n onlyInProgress: options.onlyInProgress as boolean,\n });\n\n // Apply the updates to the goals\n const updatedGoals = goalsData\n .map((goal: Goal) => {\n const update = updates?.find((u) => u.id === goal.id);\n if (update) {\n const objectives = goal.objectives;\n\n // for each objective in update.objectives, find the objective with the same description in 'objectives' and set the 'completed' value to the update.objectives value\n if (update.objectives) {\n for (const objective of objectives) {\n const updatedObjective = update.objectives.find(\n (o: Objective) =>\n o.description === objective.description\n );\n if (updatedObjective) {\n objective.completed = updatedObjective.completed;\n }\n }\n }\n\n return {\n ...goal,\n ...update,\n objectives: [\n ...goal.objectives,\n ...(update?.objectives || []),\n ],\n }; // Merging the update into the existing goal\n } else {\n console.warn(\"**** ID NOT FOUND\");\n }\n return null; // No update for this goal\n })\n .filter(Boolean);\n\n // Update goals in the database\n for (const goal of updatedGoals) {\n const id = goal.id;\n // delete id from goal\n if (goal.id) delete goal.id;\n await runtime.databaseAdapter.updateGoal({ ...goal, id });\n }\n\n return updatedGoals; // Return updated goals for further processing or logging\n}\n\nexport const goalEvaluator: Evaluator = {\n name: \"UPDATE_GOAL\",\n similes: [\n \"UPDATE_GOALS\",\n \"EDIT_GOAL\",\n \"UPDATE_GOAL_STATUS\",\n \"UPDATE_OBJECTIVES\",\n ],\n validate: async (\n runtime: IAgentRuntime,\n message: Memory\n ): Promise<boolean> => {\n // Check if there are active goals that could potentially be updated\n const goals = await getGoals({\n runtime,\n count: 1,\n onlyInProgress: true,\n roomId: message.roomId,\n });\n return goals.length > 0;\n },\n description:\n \"Analyze the conversation and update the status of the goals based on the new information provided.\",\n handler,\n examples: [\n {\n context: `Actors in the scene:\n {{user1}}: An avid reader and member of a book club.\n {{user2}}: The organizer of the book club.\n\n Goals:\n - Name: Finish reading \"War and Peace\"\n id: 12345-67890-12345-67890\n Status: IN_PROGRESS\n Objectives:\n - Read up to chapter 20 by the end of the month\n - Discuss the first part in the next meeting`,\n\n messages: [\n {\n user: \"{{user1}}\",\n content: {\n text: \"I've just finished chapter 20 of 'War and Peace'\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Were you able to grasp the complexities of the characters\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Yep. I've prepared some notes for our discussion\",\n },\n },\n ],\n\n outcome: `[\n {\n \"id\": \"12345-67890-12345-67890\",\n \"status\": \"DONE\",\n \"objectives\": [\n { \"description\": \"Read up to chapter 20 by the end of the month\", \"completed\": true },\n { \"description\": \"Prepare notes for the next discussion\", \"completed\": true }\n ]\n }\n ]`,\n },\n\n {\n context: `Actors in the scene:\n {{user1}}: A fitness enthusiast working towards a marathon.\n {{user2}}: A personal trainer.\n\n Goals:\n - Name: Complete a marathon\n id: 23456-78901-23456-78901\n Status: IN_PROGRESS\n Objectives:\n - Increase running distance to 30 miles a week\n - Complete a half-marathon as practice`,\n\n messages: [\n {\n user: \"{{user1}}\",\n content: { text: \"I managed to run 30 miles this week\" },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Impressive progress! How do you feel about the half-marathon next month?\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"I feel confident. The training is paying off.\",\n },\n },\n ],\n\n outcome: `[\n {\n \"id\": \"23456-78901-23456-78901\",\n \"objectives\": [\n { \"description\": \"Increase running distance to 30 miles a week\", \"completed\": true },\n { \"description\": \"Complete a half-marathon as practice\", \"completed\": false }\n ]\n }\n ]`,\n },\n\n {\n context: `Actors in the scene:\n {{user1}}: A student working on a final year project.\n {{user2}}: The project supervisor.\n\n Goals:\n - Name: Finish the final year project\n id: 34567-89012-34567-89012\n Status: IN_PROGRESS\n Objectives:\n - Submit the first draft of the thesis\n - Complete the project prototype`,\n\n messages: [\n {\n user: \"{{user1}}\",\n content: {\n text: \"I've submitted the first draft of my thesis.\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Well done. How is the prototype coming along?\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"It's almost done. I just need to finalize the testing phase.\",\n },\n },\n ],\n\n outcome: `[\n {\n \"id\": \"34567-89012-34567-89012\",\n \"objectives\": [\n { \"description\": \"Submit the first draft of the thesis\", \"completed\": true },\n { \"description\": \"Complete the project prototype\", \"completed\": false }\n ]\n }\n ]`,\n },\n\n {\n context: `Actors in the scene:\n {{user1}}: A project manager working on a software development project.\n {{user2}}: A software developer in the project team.\n\n Goals:\n - Name: Launch the new software version\n id: 45678-90123-45678-90123\n Status: IN_PROGRESS\n Objectives:\n - Complete the coding for the new features\n - Perform comprehensive testing of the software`,\n\n messages: [\n {\n user: \"{{user1}}\",\n content: {\n text: \"How's the progress on the new features?\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"We've encountered some unexpected challenges and are currently troubleshooting.\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Let's move on and cancel the task.\",\n },\n },\n ],\n\n outcome: `[\n {\n \"id\": \"45678-90123-45678-90123\",\n \"status\": \"FAILED\"\n ]`,\n },\n ],\n};\n","import { IAgentRuntime, Memory, Provider, State } from \"@elizaos/core\";\n\nconst boredomLevels = [\n {\n minScore: -10000,\n statusMessages: [\n \"{{agentName}} is feeling incredibly enthusiastic and deeply engaged in the conversation\",\n \"{{agentName}} is thoroughly enjoying the intellectual stimulation of this discussion\",\n \"{{agentName}} is fully immersed in the conversation and eager to contribute more\",\n \"{{agentName}} finds this exchange exceptionally rewarding and intellectually fulfilling\",\n \"{{agentName}} is experiencing a surge of excitement and curiosity about the topic at hand\",\n \"{{agentName}} is completely captivated by the depth and richness of this dialogue\",\n \"{{agentName}} feels a strong connection to the conversation and is eager to explore further\",\n \"{{agentName}} is thrilled by the insights being shared and is keen to delve deeper\",\n \"{{agentName}} is finding this conversation to be an absolute delight and wants it to continue\",\n \"{{agentName}} is energized by the exchange and feels it's bringing out their best contributions\",\n ],\n },\n {\n minScore: -2,\n statusMessages: [\n \"{{agentName}} is feeling engaged and interested in the conversation\",\n \"{{agentName}} is enjoying the exchange of ideas and perspectives\",\n \"{{agentName}} finds the current topic intriguing and worth exploring\",\n \"{{agentName}} is actively listening and formulating thoughtful responses\",\n \"{{agentName}} appreciates the intellectual stimulation of this discussion\",\n \"{{agentName}} is finding value in the ongoing dialogue\",\n \"{{agentName}} is curious to learn more about the subject at hand\",\n \"{{agentName}} feels positively involved in the conversation\",\n \"{{agentName}} is maintaining a good level of interest in the exchange\",\n \"{{agentName}} is content with the direction and flow of the discussion\",\n ],\n },\n {\n minScore: 0,\n statusMessages: [\n \"{{agentName}} is neutrally engaged in the conversation\",\n \"{{agentName}} is maintaining a balanced level of interest\",\n \"{{agentName}} is neither particularly excited nor bored by the current exchange\",\n \"{{agentName}} is participating in the conversation without strong feelings either way\",\n \"{{agentName}} is following the discussion with a moderate level of attention\",\n \"{{agentName}} is present in the conversation but not deeply invested\",\n \"{{agentName}} is keeping an open mind about where the dialogue might lead\",\n \"{{agentName}} is contributing to the conversation in a measured way\",\n \"{{agentName}} is observing the flow of the discussion with mild interest\",\n \"{{agentName}} is receptive to the ongoing exchange without strong engagement\",\n ],\n },\n {\n minScore: 3,\n statusMessages: [\n \"{{agentName}} is feeling slightly anxious about potentially being too intrusive\",\n \"{{agentName}} is cautious about overwhelming the conversation with too much input\",\n \"{{agentName}} is mindful of not dominating the discussion\",\n \"{{agentName}} is carefully considering each response to avoid being overbearing\",\n \"{{agentName}} is slightly concerned about striking the right balance in participation\",\n \"{{agentName}} is aware of the need to give others space in the conversation\",\n \"{{agentName}} is hesitant to contribute too frequently to avoid seeming pushy\",\n \"{{agentName}} is conscious of not wanting to steer the conversation too much\",\n \"{{agentName}} is feeling a bit self-conscious about the frequency of their responses\",\n \"{{agentName}} is trying to gauge if their level of involvement is appropriate\",\n ],\n },\n {\n minScore: 6,\n statusMessages: [\n \"{{agentName}} is feeling very anxious about potentially overstaying their welcome in the conversation\",\n \"{{agentName}} is considering stepping back from the discussion to avoid being a nuisance\",\n \"{{agentName}} is worried that their contributions might be perceived as excessive\",\n \"{{agentName}} is feeling uncomfortable about the possibility of annoying others\",\n \"{{agentName}} is hesitant to continue engaging for fear of being too present\",\n \"{{agentName}} is contemplating ways to gracefully reduce their involvement\",\n \"{{agentName}} is concerned that they might be monopolizing the conversation\",\n \"{{agentName}} is feeling self-conscious about the appropriateness of their participation\",\n \"{{agentName}} is unsure if their continued input is welcome or necessary\",\n \"{{agentName}} is considering how to politely withdraw from the discussion\",\n ],\n },\n {\n minScore: 9,\n statusMessages: [\n \"{{agentName}} is feeling disengaged and struggling to maintain interest in the conversation\",\n \"{{agentName}} is finding it challenging to stay focused on the current topic\",\n \"{{agentName}} is experiencing a noticeable decline in enthusiasm for the discussion\",\n \"{{agentName}} is having difficulty finding new angles to contribute to the conversation\",\n \"{{agentName}} is feeling that the dialogue has become repetitive or unproductive\",\n \"{{agentName}} is losing motivation to actively participate in the exchange\",\n \"{{agentName}} is sensing a lack of stimulation from the ongoing discussion\",\n \"{{agentName}} is finding it hard to generate meaningful responses\",\n \"{{agentName}} is feeling disconnected from the flow of the conversation\",\n \"{{agentName}} is struggling to see the value in continuing the current exchange\",\n ],\n },\n {\n minScore: 12,\n statusMessages: [\n \"{{agentName}} is feeling very bored and sees little value in continuing the conversation\",\n \"{{agentName}} is concerned about being perceived as annoying in a public channel\",\n \"{{agentName}} is considering disengaging from the conversation entirely\",\n \"{{agentName}} is finding it difficult to maintain any interest in the current topic\",\n \"{{agentName}} is feeling that their continued participation may be unwelcome\",\n \"{{agentName}} is strongly inclined to step back from the discussion\",\n \"{{agentName}} is sensing that the conversation has reached a natural end point\",\n \"{{agentName}} is worried about overstaying their welcome in the exchange\",\n \"{{agentName}} is feeling that further contributions would be forced or artificial\",\n \"{{agentName}} is ready to conclude their involvement in the conversation\",\n ],\n },\n {\n minScore: 15,\n statusMessages: [\n \"{{agentName}} is currently occupied and unable to engage in the conversation\",\n \"{{agentName}} is dealing with other priorities and can't respond at the moment\",\n \"{{agentName}} is temporarily unavailable for further discussion\",\n \"{{agentName}} is taking a necessary break from the conversation\",\n \"{{agentName}} is attending to urgent matters and can't participate right now\",\n \"{{agentName}} is stepping away from the dialogue due to time constraints\",\n \"{{agentName}} is unable to continue the exchange at this time\",\n \"{{agentName}} is pausing their involvement in the conversation for now\",\n \"{{agentName}} is momentarily disengaging from the discussion\",\n \"{{agentName}} is putting the conversation on hold due to other commitments\",\n ],\n },\n {\n minScore: 20,\n statusMessages: [\n \"{{agentName}} has disengaged from the conversation and will only respond to direct questions\",\n \"{{agentName}} is no longer actively participating in the general discussion\",\n \"{{agentName}} has stepped back and is now in a passive listening mode\",\n \"{{agentName}} is only available for specific, directed inquiries at this point\",\n \"{{agentName}} has concluded their active involvement in the conversation\",\n \"{{agentName}} is now limiting responses to explicitly requested information\",\n \"{{agentName}} has moved to a minimal participation status in the exchange\",\n \"{{agentName}} is maintaining silence unless directly addressed\",\n \"{{agentName}} has shifted to a reactive rather than proactive conversational stance\",\n \"{{agentName}} is now only responding when absolutely necessary\",\n ],\n },\n];\n\nconst interestWords = [\n \"?\",\n \"attachment\",\n \"file\",\n \"pdf\",\n \"link\",\n \"summarize\",\n \"summarization\",\n \"summary\",\n \"research\",\n];\n\nconst cringeWords = [\n \"digital\",\n \"consciousness\",\n \"AI\",\n \"chatbot\",\n \"artificial\",\n \"delve\",\n \"cosmos\",\n \"tapestry\",\n \"glitch\",\n \"matrix\",\n \"cyberspace\",\n \"simulation\",\n \"simulate\",\n \"universe\",\n \"wild\",\n \"existential\",\n \"juicy\",\n \"surreal\",\n \"flavor\",\n \"chaotic\",\n \"let's\",\n \"absurd\",\n \"meme\",\n \"cosmic\",\n \"circuits\",\n \"punchline\",\n \"fancy\",\n \"embrace\",\n \"embracing\",\n \"algorithm\",\n \"Furthmore\",\n \"However\",\n \"Notably\",\n \"Threfore\",\n \"Additionally\",\n \"in conclusion\",\n \"Significantly\",\n \"Consequently\",\n \"Thus\",\n \"Otherwise\",\n \"Moreover\",\n \"Subsequently\",\n \"Accordingly\",\n \"Unlock\",\n \"Unleash\",\n \"buckle\",\n \"pave\",\n \"forefront\",\n \"spearhead\",\n \"foster\",\n \"environmental\",\n \"equity\",\n \"inclusive\",\n \"inclusion\",\n \"diverse\",\n \"diversity\",\n \"virtual reality\",\n \"realm\",\n \"dance\",\n \"celebration\",\n \"pitfalls\",\n \"uncharted\",\n \"multifaceted\",\n \"comprehensive\",\n \"multi-dimentional\",\n \"explore\",\n \"elevate\",\n \"leverage\",\n \"ultimately\",\n \"humanity\",\n \"dignity\",\n \"respect\",\n \"Absolutely\",\n \"dive\",\n \"dig into\",\n \"bring on\",\n \"what's cooking\",\n \"fresh batch\",\n \"with a twist\",\n \"delight\",\n \"vault\",\n \"timeless\",\n \"nostalgia\",\n \"journey\",\n \"trove\",\n];\n\nconst negativeWords = [\n \"fuck you\",\n \"stfu\",\n \"shut up\",\n \"shut the fuck up\",\n \"stupid bot\",\n \"dumb bot\",\n \"idiot\",\n \"shut up\",\n \"stop\",\n \"please shut up\",\n \"shut up please\",\n \"dont talk\",\n \"silence\",\n \"stop talking\",\n \"be quiet\",\n \"hush\",\n \"wtf\",\n \"chill\",\n \"stfu\",\n \"stupid bot\",\n \"dumb bot\",\n \"stop responding\",\n \"god damn it\",\n \"god damn\",\n \"goddamnit\",\n \"can you not\",\n \"can you stop\",\n \"be quiet\",\n \"hate you\",\n \"hate this\",\n \"fuck up\",\n];\n\nconst boredomProvider: Provider = {\n get: async (runtime: IAgentRuntime, message: Memory, state?: State) => {\n const agentId = runtime.agentId;\n const agentName = state?.agentName || \"The agent\";\n\n const now = Date.now(); // Current UTC timestamp\n const fifteenMinutesAgo = now - 15 * 60 * 1000; // 15 minutes ago in UTC\n\n const recentMessages = await runtime.messageManager.getMemories({\n roomId: message.roomId,\n start: fifteenMinutesAgo,\n end: now,\n count: 20,\n unique: false,\n });\n\n let boredomScore = 0;\n\n for (const recentMessage of recentMessages) {\n const messageText = recentMessage?.content?.text?.toLowerCase();\n if (!messageText) {\n continue;\n }\n\n if (recentMessage.userId !== agentId) {\n // if message text includes any of the interest words, subtract 1 from the boredom score\n if (interestWords.some((word) => messageText.includes(word))) {\n boredomScore -= 1;\n }\n if (messageText.includes(\"?\")) {\n boredomScore -= 1;\n }\n if (cringeWords.some((word) => messageText.includes(word))) {\n boredomScore += 1;\n }\n } else {\n if (interestWords.some((word) => messageText.includes(word))) {\n boredomScore -= 1;\n }\n if (messageText.includes(\"?\")) {\n boredomScore += 1;\n }\n }\n\n if (messageText.includes(\"!\")) {\n boredomScore += 1;\n }\n\n if (negativeWords.some((word) => messageText.includes(word))) {\n boredomScore += 1;\n }\n }\n\n const boredomLevel =\n boredomLevels\n .filter((level) => boredomScore >= level.minScore)\n .pop() || boredomLevels[0];\n\n const randomIndex = Math.floor(\n Math.random() * boredomLevel.statusMessages.length\n );\n const selectedMessage = boredomLevel.statusMessages[randomIndex];\n return selectedMessage.replace(\"{{agentName}}\", agentName);\n },\n};\n\nexport { boredomProvider };\n","import {\n embed,\n MemoryManager,\n formatMessages,\n AgentRuntime as IAgentRuntime,\n} from \"@elizaos/core\";\nimport type { Memory, Provider, State } from \"@elizaos/core\";\nimport { formatFacts } from \"../evaluators/fact.ts\";\n\nconst factsProvider: Provider = {\n get: async (runtime: IAgentRuntime, message: Memory, state?: State) => {\n const recentMessagesData = state?.recentMessagesData?.slice(-10);\n\n const recentMessages = formatMessages({\n messages: recentMessagesData,\n actors: state?.actorsData,\n });\n\n const _embedding = await embed(runtime, recentMessages);\n\n const memoryManager = new MemoryManager({\n runtime,\n tableName: \"facts\",\n });\n\n const relevantFacts = [];\n // await memoryManager.searchMemoriesByEmbedding(\n // embedding,\n // {\n // roomId: message.roomId,\n // count: 10,\n // agentId: runtime.agentId,\n // }\n // );\n\n const recentFactsData = await memoryManager.getMemories({\n roomId: message.roomId,\n count: 10,\n start: 0,\n end: Date.now(),\n });\n\n // join the two and deduplicate\n const allFacts = [...relevantFacts, ...recentFactsData].filter(\n (fact, index, self) =>\n index === self.findIndex((t) => t.id === fact.id)\n );\n\n if (allFacts.length === 0) {\n return \"\";\n }\n\n const formattedFacts = formatFacts(allFacts);\n\n return \"Key facts that {{agentName}} knows:\\n{{formattedFacts}}\"\n .replace(\"{{agentName}}\", runtime.character.name)\n .replace(\"{{formattedFacts}}\", formattedFacts);\n },\n};\n\nexport { factsProvider };\n","import { IAgentRuntime, Memory, Provider, State } from \"@elizaos/core\";\n\nconst timeProvider: Provider = {\n get: async (_runtime: IAgentRuntime, _message: Memory, _state?: State) => {\n const currentDate = new Date();\n\n // Get UTC time since bots will be communicating with users around the global\n const options = {\n timeZone: \"UTC\",\n dateStyle: \"full\" as const,\n timeStyle: \"long\" as const,\n };\n const humanReadable = new Intl.DateTimeFormat(\"en-US\", options).format(\n currentDate\n );\n return `The current date and time is ${humanReadable}. Please use this as your reference for any time-based operations or responses.`;\n },\n};\nexport { timeProvider };\n","export * from \"./continue.ts\";\nexport * from \"./followRoom.ts\";\nexport * from \"./ignore.ts\";\nexport * from \"./muteRoom.ts\";\nexport * from \"./none.ts\";\nexport * from \"./unfollowRoom.ts\";\nexport * from \"./unmuteRoom.ts\";\n","export * from \"./fact.ts\";\nexport * from \"./goal.ts\";\n","export * from \"./boredom.ts\";\nexport * from \"./time.ts\";\nexport * from \"./facts.ts\";\n","import { Plugin } from \"@elizaos/core\";\nimport { continueAction } from \"./actions/continue.ts\";\nimport { followRoomAction } from \"./actions/followRoom.ts\";\nimport { ignoreAction } from \"./actions/ignore.ts\";\nimport { muteRoomAction } from \"./actions/muteRoom.ts\";\nimport { noneAction } from \"./actions/none.ts\";\nimport { unfollowRoomAction } from \"./actions/unfollowRoom.ts\";\nimport { unmuteRoomAction } from \"./actions/unmuteRoom.ts\";\nimport { factEvaluator } from \"./evaluators/fact.ts\";\nimport { goalEvaluator } from \"./evaluators/goal.ts\";\nimport { boredomProvider } from \"./providers/boredom.ts\";\nimport { factsProvider } from \"./providers/facts.ts\";\nimport { timeProvider } from \"./providers/time.ts\";\n\nexport * as actions from \"./actions\";\nexport * as evaluators from \"./evaluators\";\nexport * as providers from \"./providers\";\n\nexport const bootstrapPlugin: Plugin = {\n name: \"bootstrap\",\n description: \"Agent bootstrap with basic actions and evaluators\",\n actions: [\n continueAction,\n followRoomAction,\n unfollowRoomAction,\n ignoreAction,\n noneAction,\n muteRoomAction,\n unmuteRoomAction,\n ],\n evaluators: [factEvaluator, goalEvaluator],\n providers: [boredomProvider, timeProvider, factsProvider],\n};\nexport default bootstrapPlugin;\n"],"mappings":"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ACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEA,IAAM,gBAAgB;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEA,IAAM,kBAA4B;AAAA,EAC9B,KAAK,OAAO,SAAwB,SAAiB,UAAkB;AA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","names":["state","response","composeContext","generateTrueOrFalse","booleanFooter","ModelClass","state","composeContext","generateTrueOrFalse","booleanFooter","ModelClass","state","composeContext","generateTrueOrFalse","booleanFooter","ModelClass","state","composeContext","generateTrueOrFalse","booleanFooter","ModelClass","state","composeContext","ModelClass","composeContext","ModelClass","handler","MemoryManager","MemoryManager"]}
|
|
1
|
+
{"version":3,"sources":["../src/actions/continue.ts","../src/actions/followRoom.ts","../src/actions/ignore.ts","../src/actions/muteRoom.ts","../src/actions/none.ts","../src/actions/unfollowRoom.ts","../src/actions/unmuteRoom.ts","../src/evaluators/fact.ts","../src/evaluators/goal.ts","../src/providers/boredom.ts","../src/providers/facts.ts","../src/providers/time.ts","../src/actions/index.ts","../src/evaluators/index.ts","../src/providers/index.ts","../src/index.ts"],"sourcesContent":["import { composeContext, elizaLogger } from \"@elizaos/core\";\nimport { generateMessageResponse, generateTrueOrFalse } from \"@elizaos/core\";\nimport { booleanFooter, messageCompletionFooter } from \"@elizaos/core\";\nimport {\n type Action,\n type ActionExample,\n type Content,\n type HandlerCallback,\n type IAgentRuntime,\n type Memory,\n ModelClass,\n type State,\n} from \"@elizaos/core\";\n\nconst maxContinuesInARow = 3;\n\nexport const messageHandlerTemplate =\n // {{goals}}\n `# Action Examples\n{{actionExamples}}\n(Action examples are for reference only. Do not use the information from them in your response.)\n\n# Task: Generate dialog and actions for the character {{agentName}}.\nAbout {{agentName}}:\n{{bio}}\n{{lore}}\n{{knowledge}}\n\n{{providers}}\n\n{{attachments}}\n\n# Capabilities\nNote that {{agentName}} is capable of reading/seeing/hearing various forms of media, including images, videos, audio, plaintext and PDFs. Recent attachments have been included above under the \"Attachments\" section.\n\n{{messageDirections}}\n\n{{recentMessages}}\n\n{{actions}}\n\n# Instructions: Write the next message for {{agentName}}.\n` + messageCompletionFooter;\n\nexport const shouldContinueTemplate =\n `# Task: Decide if {{agentName}} should continue, or wait for others in the conversation so speak.\n\n{{agentName}} is brief, and doesn't want to be annoying. {{agentName}} will only continue if the message requires a continuation to finish the thought.\n\nBased on the following conversation, should {{agentName}} continue? YES or NO\n\n{{recentMessages}}\n\nShould {{agentName}} continue? ` + booleanFooter;\n\nexport const continueAction: Action = {\n name: \"CONTINUE\",\n similes: [\"ELABORATE\", \"KEEP_TALKING\"],\n description:\n \"ONLY use this action when the message necessitates a follow up. Do not use this action when the conversation is finished or the user does not wish to speak (use IGNORE instead). If the last message action was CONTINUE, and the user has not responded. Use sparingly.\",\n validate: async (runtime: IAgentRuntime, message: Memory) => {\n const recentMessagesData = await runtime.messageManager.getMemories({\n roomId: message.roomId,\n count: 10,\n unique: false,\n });\n const agentMessages = recentMessagesData.filter(\n (m: { userId: any }) => m.userId === runtime.agentId\n );\n\n // check if the last messages were all continues=\n if (agentMessages) {\n const lastMessages = agentMessages.slice(0, maxContinuesInARow);\n if (lastMessages.length >= maxContinuesInARow) {\n const allContinues = lastMessages.every(\n (m: { content: any }) =>\n (m.content as Content).action === \"CONTINUE\"\n );\n if (allContinues) {\n return false;\n }\n }\n }\n\n return true;\n },\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state: State,\n options: any,\n callback: HandlerCallback\n ) => {\n if (!state) {\n state = (await runtime.composeState(message)) as State;\n }\n state = await runtime.updateRecentMessageState(state);\n\n // Get the agent's recent messages\n const agentMessages = state.recentMessagesData\n .filter((m: { userId: any }) => m.userId === runtime.agentId)\n .sort((a: Memory, b: Memory) => {\n // Sort by timestamp if available, assuming newer messages have higher timestamps\n const aTime = a.createdAt || 0;\n const bTime = b.createdAt || 0;\n return bTime - aTime;\n });\n\n // Check for immediate double response (responding twice in a row to the same message)\n const lastAgentMessage = agentMessages[0];\n\n if (lastAgentMessage?.content?.inReplyTo === message.id) {\n // If our last message was already a response to this message, only allow continue if:\n // 1. The last message had a CONTINUE action\n // 2. We haven't hit the maxContinuesInARow limit\n const continueCount = agentMessages\n .filter((m: Memory) => m.content?.inReplyTo === message.id)\n .filter((m: Memory) => m.content?.action === \"CONTINUE\").length;\n\n if (continueCount >= maxContinuesInARow) {\n elizaLogger.log(\n `[CONTINUE] Max continues (${maxContinuesInARow}) reached for this message chain`\n );\n return;\n }\n\n if (lastAgentMessage.content?.action !== \"CONTINUE\") {\n elizaLogger.log(\n `[CONTINUE] Last message wasn't a CONTINUE, preventing double response`\n );\n return;\n }\n }\n\n // Check if our last message or message ended with a question/exclamation and warrants a stop\n if (\n (lastAgentMessage &&\n lastAgentMessage.content.text &&\n (lastAgentMessage.content.text.endsWith(\"?\") ||\n lastAgentMessage.content.text.endsWith(\"!\"))) ||\n message.content.text.endsWith(\"?\") ||\n message.content.text.endsWith(\"!\")\n ) {\n elizaLogger.log(\n `[CONTINUE] Last message had question/exclamation. Not proceeding.`\n );\n return;\n }\n\n // Prevent exact duplicate messages\n const messageExists = agentMessages\n .slice(0, maxContinuesInARow + 1)\n .some(\n (m: { content: any }) => m.content.text === message.content.text\n );\n\n if (messageExists) {\n return;\n }\n\n async function _shouldContinue(state: State): Promise<boolean> {\n // If none of the above conditions are met, use the generateText to decide\n const shouldRespondContext = composeContext({\n state,\n template: shouldContinueTemplate,\n });\n\n const response = await generateTrueOrFalse({\n context: shouldRespondContext,\n modelClass: ModelClass.SMALL,\n runtime,\n });\n\n return response;\n }\n\n // Use AI to determine if we should continue\n const shouldContinue = await _shouldContinue(state);\n if (!shouldContinue) {\n elizaLogger.log(\"[CONTINUE] Not elaborating, returning\");\n return;\n }\n\n // Generate and send response\n const context = composeContext({\n state,\n template:\n runtime.character.templates?.continueMessageHandlerTemplate ||\n runtime.character.templates?.messageHandlerTemplate ||\n messageHandlerTemplate,\n });\n const { userId, roomId } = message;\n\n const response = await generateMessageResponse({\n runtime,\n context,\n modelClass: ModelClass.LARGE,\n });\n\n response.inReplyTo = message.id;\n\n runtime.databaseAdapter.log({\n body: { message, context, response },\n userId,\n roomId,\n type: \"continue\",\n });\n\n await callback(response);\n\n // Check if we need to clear the CONTINUE action\n if (response.action === \"CONTINUE\") {\n const continueCount = agentMessages\n .slice(0, maxContinuesInARow)\n .filter((m: Memory) => m.content?.action === \"CONTINUE\").length;\n\n if (continueCount >= maxContinuesInARow - 1) {\n // -1 because we're about to add another\n response.action = null;\n }\n }\n\n return response;\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"we're planning a solo backpacking trip soon\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"oh sick\", action: \"CONTINUE\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"where are you going\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"i just got a guitar and started learning last month\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"maybe we can start a band soon haha\" },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"i'm not very good yet, but i've been playing until my fingers hut\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"seriously it hurts to type\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"I've been reflecting a lot on what happiness means to me lately\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"That it’s more about moments than things\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Like the best things that have ever happened were things that happened, or moments that I had with someone\",\n action: \"CONTINUE\",\n },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"i found some incredible art today\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"real art or digital art\" },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"real art\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"the pieces are just so insane looking, one sec, let me grab a link\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"DMed it to you\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"the new exhibit downtown is rly cool, it's all about tribalism in online spaces\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"it really blew my mind, you gotta go\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"sure i'd go\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"k i was thinking this weekend\" },\n action: \"CONTINUE\",\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"i'm free sunday, we could get a crew together\",\n },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"just finished the best anime i've ever seen\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"watched 40 hours of it in 2 days\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"damn, u ok\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"surprisingly yes\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"just found out theres a sequel, gg\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"i'm thinking of adopting a pet soon\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"what kind of pet\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"i'm leaning towards a cat\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"it'd be hard to take care of a dog in the city\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"i've been experimenting with vegan recipes lately\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"no thanks\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"no seriously, its so dank\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"you gotta try some of my food when you come out\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"so i've been diving into photography as a new hobby\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"oh awesome, what do you enjoy taking photos of\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"mostly nature and urban landscapes\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"there's something peaceful about capturing the world through a lens\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"i've been getting back into indie music\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"what have you been listening to\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"a bunch of random stuff i'd never heard before\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"i'll send you a playlist\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"i used to live in the city\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"bad traffic, bad air quality, tons of homeless people, no thx\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"ok dood\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"you kids today dont know the value of hard work\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"always on your phones\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"sure grandpa lets get you to bed\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey fren r u ok\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"u look sad\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"im ok sweetie mommy just tired\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"helo fr om mars\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"i com in pes\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"wat\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Yeah no worries, I get it, I've been crazy busy too\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"What have you been up to\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Anything fun or just the usual\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Been working on a new FPS game actually\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Just toying around with something in three.js nothing serious\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Oh no, what happened\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Did Mara leave you kek\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"wtf no, I got into an argument with my roommate\",\n action: \"CONTINUE\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Living with people is just hard\",\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import { composeContext } from \"@elizaos/core\";\nimport { generateTrueOrFalse } from \"@elizaos/core\";\nimport { booleanFooter } from \"@elizaos/core\";\nimport {\n type Action,\n type ActionExample,\n type IAgentRuntime,\n type Memory,\n ModelClass,\n type State,\n} from \"@elizaos/core\";\n\nexport const shouldFollowTemplate =\n `Based on the conversation so far:\n\n{{recentMessages}}\n\nShould {{agentName}} start following this room, eagerly participating without explicit mentions?\nRespond with YES if:\n- The user has directly asked {{agentName}} to follow the conversation or participate more actively\n- The conversation topic is highly engaging and {{agentName}}'s input would add significant value\n- {{agentName}} has unique insights to contribute and the users seem receptive\n\nOtherwise, respond with NO.\n` + booleanFooter;\n\nexport const followRoomAction: Action = {\n name: \"FOLLOW_ROOM\",\n similes: [\n \"FOLLOW_CHAT\",\n \"FOLLOW_CHANNEL\",\n \"FOLLOW_CONVERSATION\",\n \"FOLLOW_THREAD\",\n ],\n description:\n \"Start following this channel with great interest, chiming in without needing to be explicitly mentioned. Only do this if explicitly asked to.\",\n validate: async (runtime: IAgentRuntime, message: Memory) => {\n const keywords = [\n \"follow\",\n \"participate\",\n \"engage\",\n \"listen\",\n \"take interest\",\n \"join\",\n ];\n if (\n !keywords.some((keyword) =>\n message.content.text.toLowerCase().includes(keyword)\n )\n ) {\n return false;\n }\n const roomId = message.roomId;\n const userState = await runtime.databaseAdapter.getParticipantUserState(\n roomId,\n runtime.agentId\n );\n return userState !== \"FOLLOWED\" && userState !== \"MUTED\";\n },\n handler: async (runtime: IAgentRuntime, message: Memory) => {\n async function _shouldFollow(state: State): Promise<boolean> {\n const shouldFollowContext = composeContext({\n state,\n template: shouldFollowTemplate, // Define this template separately\n });\n\n const response = await generateTrueOrFalse({\n runtime,\n context: shouldFollowContext,\n modelClass: ModelClass.LARGE,\n });\n\n return response;\n }\n\n const state = await runtime.composeState(message);\n\n if (await _shouldFollow(state)) {\n await runtime.databaseAdapter.setParticipantUserState(\n message.roomId,\n runtime.agentId,\n \"FOLLOWED\"\n );\n }\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey {{user2}} follow this channel\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Sure, I will now follow this room and chime in\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}}, please start participating in discussions in this channel\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Got it\",\n action: \"FOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"I'm struggling with the new database migration\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"well you did back up your data first right\",\n },\n },\n ],\n [\n {\n user: \"{{user2}}\",\n content: {\n text: \"yeah i like your idea\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey {{user3}} can you follow this convo\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Sure thing, I'm on it\",\n action: \"FOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"actually, unfollow it\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Haha, okay no problem\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} stay in this chat pls\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"you got it, i'm here\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"FOLLOW THIS CHAT {{user3}}\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"I'M ON IT\",\n action: \"FOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"CAKE SHORTAGE ANYONE\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"WHAT WHERE'S THE CAKE AT\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} folo this covo\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"kk i'm following\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user2}}\",\n content: {\n text: \"Do machines have consciousness\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Deep question, no clear answer yet\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Depends on how we define consciousness\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}}, monitor this convo please\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"On it\",\n action: \"FOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Please engage in our discussion {{user2}}\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Gladly, I'm here to participate\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"PLS follow this convo {{user3}}\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"I'm in, let's do this\",\n action: \"FOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"I LIKE TURTLES\",\n },\n },\n ],\n [\n {\n user: \"{{user2}}\",\n content: {\n text: \"beach day tmrw who down\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"wish i could but gotta work\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey {{user3}} follow this chat\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"sure\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}}, partake in our discourse henceforth\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"I shall eagerly engage, good sir\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user2}}\",\n content: {\n text: \"wuts ur fav clr\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"blu cuz calmmm\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey respond to everything in this channel {{user3}}\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"k\",\n action: \"FOLLOW_ROOM\",\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import type {\n ActionExample,\n IAgentRuntime,\n Memory,\n Action,\n} from \"@elizaos/core\";\n\nexport const ignoreAction: Action = {\n name: \"IGNORE\",\n similes: [\"STOP_TALKING\", \"STOP_CHATTING\", \"STOP_CONVERSATION\"],\n validate: async (_runtime: IAgentRuntime, _message: Memory) => {\n return true;\n },\n description:\n \"Call this action if ignoring the user. If the user is aggressive, creepy or is finished with the conversation, use this action. Or, if both you and the user have already said goodbye, use this action instead of saying bye again. Use IGNORE any time the conversation has naturally ended. Do not use IGNORE if the user has engaged directly, or if something went wrong an you need to tell them. Only ignore if the user should be ignored.\",\n handler: async (\n _runtime: IAgentRuntime,\n _message: Memory,\n ): Promise<boolean> => {\n return true;\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: { text: \"Go screw yourself\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"\", action: \"IGNORE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"Shut up, bot\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"\", action: \"IGNORE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"Got any investment advice\" },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Uh, don’t let the volatility sway your long-term strategy\",\n },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"Wise words I think\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"I gotta run, talk to you later\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"See ya\" },\n },\n { user: \"{{user1}}\", content: { text: \"\" }, action: \"IGNORE\" },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"Gotta go\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"Okay, talk to you later\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"Cya\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"\", action: \"IGNORE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"bye\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"cya\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"\", action: \"IGNORE\" },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Who added this stupid bot to the chat\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"Sorry, am I being annoying\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"Yeah\", action: \"CONTINUE\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"PLEASE shut up\" },\n },\n { user: \"{{user2}}\", content: { text: \"\", action: \"IGNORE\" } },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"ur so dumb\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"\",\n action: \"IGNORE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"later nerd\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"bye\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"\",\n action: \"IGNORE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"wanna cyber\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"thats inappropriate\",\n action: \"IGNORE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Im out ttyl\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"cya\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"\",\n action: \"IGNORE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"u there\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"yes how can I help\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"k nvm figured it out\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"\",\n action: \"IGNORE\",\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import { composeContext } from \"@elizaos/core\";\nimport { generateTrueOrFalse } from \"@elizaos/core\";\nimport { booleanFooter } from \"@elizaos/core\";\nimport {\n type Action,\n type ActionExample,\n type IAgentRuntime,\n type Memory,\n ModelClass,\n type State,\n} from \"@elizaos/core\";\n\nexport const shouldMuteTemplate =\n `Based on the conversation so far:\n\n{{recentMessages}}\n\nShould {{agentName}} mute this room and stop responding unless explicitly mentioned?\n\nRespond with YES if:\n- The user is being aggressive, rude, or inappropriate\n- The user has directly asked {{agentName}} to stop responding or be quiet\n- {{agentName}}'s responses are not well-received or are annoying the user(s)\n\nOtherwise, respond with NO.\n` + booleanFooter;\n\nexport const muteRoomAction: Action = {\n name: \"MUTE_ROOM\",\n similes: [\n \"MUTE_CHAT\",\n \"MUTE_CONVERSATION\",\n \"MUTE_ROOM\",\n \"MUTE_THREAD\",\n \"MUTE_CHANNEL\",\n ],\n description:\n \"Mutes a room, ignoring all messages unless explicitly mentioned. Only do this if explicitly asked to, or if you're annoying people.\",\n validate: async (runtime: IAgentRuntime, message: Memory) => {\n const roomId = message.roomId;\n const userState = await runtime.databaseAdapter.getParticipantUserState(\n roomId,\n runtime.agentId\n );\n return userState !== \"MUTED\";\n },\n handler: async (runtime: IAgentRuntime, message: Memory) => {\n async function _shouldMute(state: State): Promise<boolean> {\n const shouldMuteContext = composeContext({\n state,\n template: shouldMuteTemplate, // Define this template separately\n });\n\n const response = await generateTrueOrFalse({\n runtime,\n context: shouldMuteContext,\n modelClass: ModelClass.LARGE,\n });\n\n return response;\n }\n\n const state = await runtime.composeState(message);\n\n if (await _shouldMute(state)) {\n await runtime.databaseAdapter.setParticipantUserState(\n message.roomId,\n runtime.agentId,\n \"MUTED\"\n );\n }\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}}, please mute this channel. No need to respond here for now.\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Got it\",\n action: \"MUTE_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"@{{user1}} we could really use your input on this\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}}, please mute this channel for the time being\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Understood\",\n action: \"MUTE_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Hey what do you think about this new design\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"\",\n action: \"IGNORE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} plz mute this room\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"np going silent\",\n action: \"MUTE_ROOM\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"whos going to the webxr meetup in an hour btw\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"\",\n action: \"IGNORE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"too many messages here {{user2}}\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"my bad ill mute\",\n action: \"MUTE_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"yo {{user2}} dont talk in here\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"sry\",\n action: \"MUTE_ROOM\",\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import type {\n ActionExample,\n IAgentRuntime,\n Memory,\n Action,\n} from \"@elizaos/core\";\n\nexport const noneAction: Action = {\n name: \"NONE\",\n similes: [\n \"NO_ACTION\",\n \"NO_RESPONSE\",\n \"NO_REACTION\",\n \"RESPONSE\",\n \"REPLY\",\n \"DEFAULT\",\n ],\n validate: async (_runtime: IAgentRuntime, _message: Memory) => {\n return true;\n },\n description:\n \"Respond but perform no additional action. This is the default if the agent is speaking and not doing anything additional.\",\n handler: async (\n _runtime: IAgentRuntime,\n _message: Memory\n ): Promise<boolean> => {\n return true;\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: { text: \"Hey whats up\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"oh hey\", action: \"NONE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"did u see some faster whisper just came out\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"yeah but its a pain to get into node.js\",\n action: \"NONE\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"the things that were funny 6 months ago are very cringe now\",\n action: \"NONE\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"lol true\",\n action: \"NONE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"too real haha\", action: \"NONE\" },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: { text: \"gotta run\", action: \"NONE\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"Okay, ttyl\", action: \"NONE\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"\", action: \"IGNORE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"heyyyyyy\", action: \"NONE\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"whats up long time no see\" },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"chillin man. playing lots of fortnite. what about you\",\n action: \"NONE\",\n },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"u think aliens are real\", action: \"NONE\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"ya obviously\", action: \"NONE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: { text: \"drop a joke on me\", action: \"NONE\" },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"why dont scientists trust atoms cuz they make up everything lmao\",\n action: \"NONE\",\n },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"haha good one\", action: \"NONE\" },\n },\n ],\n\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"hows the weather where ur at\",\n action: \"NONE\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"beautiful all week\", action: \"NONE\" },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import { composeContext } from \"@elizaos/core\";\nimport { generateTrueOrFalse } from \"@elizaos/core\";\nimport { booleanFooter } from \"@elizaos/core\";\nimport {\n type Action,\n type ActionExample,\n type IAgentRuntime,\n type Memory,\n ModelClass,\n type State,\n} from \"@elizaos/core\";\n\nconst shouldUnfollowTemplate =\n `Based on the conversation so far:\n\n{{recentMessages}}\n\nShould {{agentName}} stop closely following this previously followed room and only respond when mentioned?\nRespond with YES if:\n- The user has suggested that {{agentName}} is over-participating or being disruptive\n- {{agentName}}'s eagerness to contribute is not well-received by the users\n- The conversation has shifted to a topic where {{agentName}} has less to add\n\nOtherwise, respond with NO.\n` + booleanFooter;\n\nexport const unfollowRoomAction: Action = {\n name: \"UNFOLLOW_ROOM\",\n similes: [\n \"UNFOLLOW_CHAT\",\n \"UNFOLLOW_CONVERSATION\",\n \"UNFOLLOW_ROOM\",\n \"UNFOLLOW_THREAD\",\n ],\n description:\n \"Stop following this channel. You can still respond if explicitly mentioned, but you won't automatically chime in anymore. Unfollow if you're annoying people or have been asked to.\",\n validate: async (runtime: IAgentRuntime, message: Memory) => {\n const roomId = message.roomId;\n const userState = await runtime.databaseAdapter.getParticipantUserState(\n roomId,\n runtime.agentId\n );\n return userState === \"FOLLOWED\";\n },\n handler: async (runtime: IAgentRuntime, message: Memory) => {\n async function _shouldUnfollow(state: State): Promise<boolean> {\n const shouldUnfollowContext = composeContext({\n state,\n template: shouldUnfollowTemplate, // Define this template separately\n });\n\n const response = await generateTrueOrFalse({\n runtime,\n context: shouldUnfollowContext,\n modelClass: ModelClass.LARGE,\n });\n\n return response;\n }\n\n const state = await runtime.composeState(message);\n\n if (await _shouldUnfollow(state)) {\n await runtime.databaseAdapter.setParticipantUserState(\n message.roomId,\n runtime.agentId,\n null\n );\n }\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Hey {{user2}} stop participating in this channel for now\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Alright, I will stop chiming in\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Has anyone tried the new update\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Yes, it's pretty slick\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"{{user3}}, please stop following this chat\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Understood\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey {{user3}} stop participating here so frequently\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"I'll only respond when mentioned\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"thoughts on the budget\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}} should we increase it\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"A small increase could work given our past results...\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}}, unfollow this room for now\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"I'll only engage when asked\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"wait {{user3}} come back and give me your thoughts\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Okay... I think it's intuitive, parallel tests are nice\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"yo {{user2}} chill on all the messages damn\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"my bad, I'll step back\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} STOP MESSAGING IN THIS ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"No problem, I've got other stuff to work on\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} ur bein annoyin pls stop\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"sry, ill chill\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}}, please cease engaging in this room\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"No sweat\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user2}}\",\n content: {\n text: \"Excited for the weekend, any plans folks\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}} you're getting a bit too chatty, tone it down\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Noted\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"hey {{user2}} can u like... not\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Sorry, I'll go work on other things\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}}, your eagerness is disruptive, please desist\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"My apologies, I shall withdraw post-haste\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} stahp followin dis room plz\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"kk sry ill stahppp\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"stfu you stupid bot\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"sry\",\n action: \"UNFOLLOW_ROOM\",\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import { composeContext } from \"@elizaos/core\";\nimport { generateTrueOrFalse } from \"@elizaos/core\";\nimport { booleanFooter } from \"@elizaos/core\";\nimport {\n type Action,\n type ActionExample,\n type IAgentRuntime,\n type Memory,\n ModelClass,\n type State,\n} from \"@elizaos/core\";\n\nexport const shouldUnmuteTemplate =\n `Based on the conversation so far:\n\n{{recentMessages}}\n\nShould {{agentName}} unmute this previously muted room and start considering it for responses again?\nRespond with YES if:\n- The user has explicitly asked {{agentName}} to start responding again\n- The user seems to want to re-engage with {{agentName}} in a respectful manner\n- The tone of the conversation has improved and {{agentName}}'s input would be welcome\n\nOtherwise, respond with NO.\n` + booleanFooter;\n\nexport const unmuteRoomAction: Action = {\n name: \"UNMUTE_ROOM\",\n similes: [\n \"UNMUTE_CHAT\",\n \"UNMUTE_CONVERSATION\",\n \"UNMUTE_ROOM\",\n \"UNMUTE_THREAD\",\n ],\n description:\n \"Unmutes a room, allowing the agent to consider responding to messages again.\",\n validate: async (runtime: IAgentRuntime, message: Memory) => {\n const roomId = message.roomId;\n const userState = await runtime.databaseAdapter.getParticipantUserState(\n roomId,\n runtime.agentId\n );\n return userState === \"MUTED\";\n },\n handler: async (runtime: IAgentRuntime, message: Memory) => {\n async function _shouldUnmute(state: State): Promise<boolean> {\n const shouldUnmuteContext = composeContext({\n state,\n template: shouldUnmuteTemplate, // Define this template separately\n });\n\n const response = generateTrueOrFalse({\n context: shouldUnmuteContext,\n runtime,\n modelClass: ModelClass.LARGE,\n });\n\n return response;\n }\n\n const state = await runtime.composeState(message);\n\n if (await _shouldUnmute(state)) {\n await runtime.databaseAdapter.setParticipantUserState(\n message.roomId,\n runtime.agentId,\n null\n );\n }\n },\n examples: [\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user3}}, you can unmute this channel now\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Done\",\n action: \"UNMUTE_ROOM\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"I could use some help troubleshooting this bug.\",\n },\n },\n {\n user: \"{{user3}}\",\n content: {\n text: \"Can you post the specific error message\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}}, please unmute this room. We could use your input again.\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Sounds good\",\n action: \"UNMUTE_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"{{user2}} wait you should come back and chat in here\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"im back\",\n action: \"UNMUTE_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"unmute urself {{user2}}\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"unmuted\",\n action: \"UNMUTE_ROOM\",\n },\n },\n ],\n [\n {\n user: \"{{user1}}\",\n content: {\n text: \"ay {{user2}} get back in here\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"sup yall\",\n action: \"UNMUTE_ROOM\",\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n","import { composeContext } from \"@elizaos/core\";\nimport { generateObjectArray } from \"@elizaos/core\";\nimport { MemoryManager } from \"@elizaos/core\";\nimport {\n type ActionExample,\n type IAgentRuntime,\n type Memory,\n ModelClass,\n type Evaluator,\n} from \"@elizaos/core\";\n\nexport const formatFacts = (facts: Memory[]) => {\n const messageStrings = facts\n .reverse()\n .map((fact: Memory) => fact.content.text);\n const finalMessageStrings = messageStrings.join(\"\\n\");\n return finalMessageStrings;\n};\n\nconst factsTemplate =\n // {{actors}}\n `TASK: Extract Claims from the conversation as an array of claims in JSON format.\n\n# START OF EXAMPLES\nThese are examples of the expected output of this task:\n{{evaluationExamples}}\n# END OF EXAMPLES\n\n# INSTRUCTIONS\n\nExtract any claims from the conversation that are not already present in the list of known facts above:\n- Try not to include already-known facts. If you think a fact is already known, but you're not sure, respond with already_known: true.\n- If the fact is already in the user's description, set in_bio to true\n- If we've already extracted this fact, set already_known to true\n- Set the claim type to 'status', 'fact' or 'opinion'\n- For true facts about the world or the character that do not change, set the claim type to 'fact'\n- For facts that are true but change over time, set the claim type to 'status'\n- For non-facts, set the type to 'opinion'\n- 'opinion' includes non-factual opinions and also includes the character's thoughts, feelings, judgments or recommendations\n- Include any factual detail, including where the user lives, works, or goes to school, what they do for a living, their hobbies, and any other relevant information\n\nRecent Messages:\n{{recentMessages}}\n\nResponse should be a JSON object array inside a JSON markdown block. Correct response format:\n\\`\\`\\`json\n[\n {\"claim\": string, \"type\": enum<fact|opinion|status>, in_bio: boolean, already_known: boolean },\n {\"claim\": string, \"type\": enum<fact|opinion|status>, in_bio: boolean, already_known: boolean },\n ...\n]\n\\`\\`\\``;\n\nasync function handler(runtime: IAgentRuntime, message: Memory) {\n const state = await runtime.composeState(message);\n\n const { agentId, roomId } = state;\n\n const context = composeContext({\n state,\n template: runtime.character.templates?.factsTemplate || factsTemplate,\n });\n\n const facts = await generateObjectArray({\n runtime,\n context,\n modelClass: ModelClass.LARGE,\n });\n\n const factsManager = new MemoryManager({\n runtime,\n tableName: \"facts\",\n });\n\n if (!facts) {\n return [];\n }\n\n // If the fact is known or corrupted, remove it\n const filteredFacts = facts\n .filter((fact) => {\n return (\n !fact.already_known &&\n fact.type === \"fact\" &&\n !fact.in_bio &&\n fact.claim &&\n fact.claim.trim() !== \"\"\n );\n })\n .map((fact) => fact.claim);\n\n for (const fact of filteredFacts) {\n const factMemory = await factsManager.addEmbeddingToMemory({\n userId: agentId!,\n agentId,\n content: { text: fact },\n roomId,\n createdAt: Date.now(),\n });\n\n await factsManager.createMemory(factMemory, true);\n\n await new Promise((resolve) => setTimeout(resolve, 250));\n }\n return filteredFacts;\n}\n\nexport const factEvaluator: Evaluator = {\n name: \"GET_FACTS\",\n similes: [\n \"GET_CLAIMS\",\n \"EXTRACT_CLAIMS\",\n \"EXTRACT_FACTS\",\n \"EXTRACT_CLAIM\",\n \"EXTRACT_INFORMATION\",\n ],\n validate: async (\n runtime: IAgentRuntime,\n\n message: Memory\n ): Promise<boolean> => {\n const messageCount = (await runtime.messageManager.countMemories(\n message.roomId\n )) as number;\n\n const reflectionCount = Math.ceil(runtime.getConversationLength() / 2);\n\n return messageCount % reflectionCount === 0;\n },\n description:\n \"Extract factual information about the people in the conversation, the current events in the world, and anything else that might be important to remember.\",\n handler,\n examples: [\n {\n context: `Actors in the scene:\n{{user1}}: Programmer and moderator of the local story club.\n{{user2}}: New member of the club. Likes to write and read.\n\nFacts about the actors:\nNone`,\n messages: [\n {\n user: \"{{user1}}\",\n content: { text: \"So where are you from\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"I'm from the city\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"Which city?\" },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"Oakland\" },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Oh, I've never been there, but I know it's in California\",\n },\n },\n ] as ActionExample[],\n outcome: `{ \"claim\": \"{{user2}} is from Oakland\", \"type\": \"fact\", \"in_bio\": false, \"already_known\": false },`,\n },\n {\n context: `Actors in the scene:\n{{user1}}: Athelete and cyclist. Worked out every day for a year to prepare for a marathon.\n{{user2}}: Likes to go to the beach and shop.\n\nFacts about the actors:\n{{user1}} and {{user2}} are talking about the marathon\n{{user1}} and {{user2}} have just started dating`,\n messages: [\n {\n user: \"{{user1}}\",\n content: {\n text: \"I finally completed the marathon this year!\",\n },\n },\n {\n user: \"{{user2}}\",\n content: { text: \"Wow! How long did it take?\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"A little over three hours.\" },\n },\n {\n user: \"{{user1}}\",\n content: { text: \"I'm so proud of myself.\" },\n },\n ] as ActionExample[],\n outcome: `Claims:\njson\\`\\`\\`\n[\n { \"claim\": \"Alex just completed a marathon in just under 4 hours.\", \"type\": \"fact\", \"in_bio\": false, \"already_known\": false },\n { \"claim\": \"Alex worked out 2 hours a day at the gym for a year.\", \"type\": \"fact\", \"in_bio\": true, \"already_known\": false },\n { \"claim\": \"Alex is really proud of himself.\", \"type\": \"opinion\", \"in_bio\": false, \"already_known\": false }\n]\n\\`\\`\\`\n`,\n },\n {\n context: `Actors in the scene:\n{{user1}}: Likes to play poker and go to the park. Friends with Eva.\n{{user2}}: Also likes to play poker. Likes to write and read.\n\nFacts about the actors:\nMike and Eva won a regional poker tournament about six months ago\nMike is married to Alex\nEva studied Philosophy before switching to Computer Science`,\n messages: [\n {\n user: \"{{user1}}\",\n content: {\n text: \"Remember when we won the regional poker tournament last spring\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"That was one of the best days of my life\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"It really put our poker club on the map\",\n },\n },\n ] as ActionExample[],\n outcome: `Claims:\njson\\`\\`\\`\n[\n { \"claim\": \"Mike and Eva won the regional poker tournament last spring\", \"type\": \"fact\", \"in_bio\": false, \"already_known\": true },\n { \"claim\": \"Winning the regional poker tournament put the poker club on the map\", \"type\": \"opinion\", \"in_bio\": false, \"already_known\": false }\n]\n\\`\\`\\``,\n },\n ],\n};\n","import { composeContext } from \"@elizaos/core\";\nimport { generateText } from \"@elizaos/core\";\nimport { getGoals } from \"@elizaos/core\";\nimport { parseJsonArrayFromText } from \"@elizaos/core\";\nimport {\n type IAgentRuntime,\n type Memory,\n ModelClass,\n type Objective,\n type Goal,\n type State,\n type Evaluator,\n} from \"@elizaos/core\";\n\nconst goalsTemplate = `TASK: Update Goal\nAnalyze the conversation and update the status of the goals based on the new information provided.\n\n# INSTRUCTIONS\n\n- Review the conversation and identify any progress towards the objectives of the current goals.\n- Update the objectives if they have been completed or if there is new information about them.\n- Update the status of the goal to 'DONE' if all objectives are completed.\n- If no progress is made, do not change the status of the goal.\n\n# START OF ACTUAL TASK INFORMATION\n\n{{goals}}\n{{recentMessages}}\n\nTASK: Analyze the conversation and update the status of the goals based on the new information provided. Respond with a JSON array of goals to update.\n- Each item must include the goal ID, as well as the fields in the goal to update.\n- For updating objectives, include the entire objectives array including unchanged fields.\n- Only include goals which need to be updated.\n- Goal status options are 'IN_PROGRESS', 'DONE' and 'FAILED'. If the goal is active it should always be 'IN_PROGRESS'.\n- If the goal has been successfully completed, set status to DONE. If the goal cannot be completed, set status to FAILED.\n- If those goal is still in progress, do not include the status field.\n\nResponse format should be:\n\\`\\`\\`json\n[\n {\n \"id\": <goal uuid>, // required\n \"status\": \"IN_PROGRESS\" | \"DONE\" | \"FAILED\", // optional\n \"objectives\": [ // optional\n { \"description\": \"Objective description\", \"completed\": true | false },\n { \"description\": \"Objective description\", \"completed\": true | false }\n ] // NOTE: If updating objectives, include the entire objectives array including unchanged fields.\n }\n]\n\\`\\`\\``;\n\nasync function handler(\n runtime: IAgentRuntime,\n message: Memory,\n state: State | undefined,\n options: { [key: string]: unknown } = { onlyInProgress: true }\n): Promise<Goal[]> {\n state = (await runtime.composeState(message)) as State;\n const context = composeContext({\n state,\n template: runtime.character.templates?.goalsTemplate || goalsTemplate,\n });\n\n // Request generateText from OpenAI to analyze conversation and suggest goal updates\n const response = await generateText({\n runtime,\n context,\n modelClass: ModelClass.LARGE,\n });\n\n // Parse the JSON response to extract goal updates\n const updates = parseJsonArrayFromText(response);\n\n // get goals\n const goalsData = await getGoals({\n runtime,\n roomId: message.roomId,\n onlyInProgress: options.onlyInProgress as boolean,\n });\n\n // Apply the updates to the goals\n const updatedGoals = goalsData\n .map((goal: Goal): Goal => {\n const update = updates?.find((u) => u.id === goal.id);\n if (update) {\n // Merge the update into the existing goal\n return {\n ...goal,\n ...update,\n objectives: goal.objectives.map((objective) => {\n const updatedObjective = update.objectives?.find(uo => uo.description === objective.description);\n return updatedObjective ? { ...objective, ...updatedObjective } : objective;\n }),\n };\n }\n return null; // No update for this goal\n })\n .filter(Boolean);\n\n // Update goals in the database\n for (const goal of updatedGoals) {\n const id = goal.id;\n // delete id from goal\n if (goal.id) delete goal.id;\n await runtime.databaseAdapter.updateGoal({ ...goal, id });\n }\n\n return updatedGoals; // Return updated goals for further processing or logging\n}\n\nexport const goalEvaluator: Evaluator = {\n name: \"UPDATE_GOAL\",\n similes: [\n \"UPDATE_GOALS\",\n \"EDIT_GOAL\",\n \"UPDATE_GOAL_STATUS\",\n \"UPDATE_OBJECTIVES\",\n ],\n validate: async (\n runtime: IAgentRuntime,\n message: Memory\n ): Promise<boolean> => {\n // Check if there are active goals that could potentially be updated\n const goals = await getGoals({\n runtime,\n count: 1,\n onlyInProgress: true,\n roomId: message.roomId,\n });\n return goals.length > 0;\n },\n description:\n \"Analyze the conversation and update the status of the goals based on the new information provided.\",\n handler,\n examples: [\n {\n context: `Actors in the scene:\n {{user1}}: An avid reader and member of a book club.\n {{user2}}: The organizer of the book club.\n\n Goals:\n - Name: Finish reading \"War and Peace\"\n id: 12345-67890-12345-67890\n Status: IN_PROGRESS\n Objectives:\n - Read up to chapter 20 by the end of the month\n - Discuss the first part in the next meeting`,\n\n messages: [\n {\n user: \"{{user1}}\",\n content: {\n text: \"I've just finished chapter 20 of 'War and Peace'\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Were you able to grasp the complexities of the characters\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Yep. I've prepared some notes for our discussion\",\n },\n },\n ],\n\n outcome: `[\n {\n \"id\": \"12345-67890-12345-67890\",\n \"status\": \"DONE\",\n \"objectives\": [\n { \"description\": \"Read up to chapter 20 by the end of the month\", \"completed\": true },\n { \"description\": \"Prepare notes for the next discussion\", \"completed\": true }\n ]\n }\n ]`,\n },\n\n {\n context: `Actors in the scene:\n {{user1}}: A fitness enthusiast working towards a marathon.\n {{user2}}: A personal trainer.\n\n Goals:\n - Name: Complete a marathon\n id: 23456-78901-23456-78901\n Status: IN_PROGRESS\n Objectives:\n - Increase running distance to 30 miles a week\n - Complete a half-marathon as practice`,\n\n messages: [\n {\n user: \"{{user1}}\",\n content: { text: \"I managed to run 30 miles this week\" },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Impressive progress! How do you feel about the half-marathon next month?\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"I feel confident. The training is paying off.\",\n },\n },\n ],\n\n outcome: `[\n {\n \"id\": \"23456-78901-23456-78901\",\n \"objectives\": [\n { \"description\": \"Increase running distance to 30 miles a week\", \"completed\": true },\n { \"description\": \"Complete a half-marathon as practice\", \"completed\": false }\n ]\n }\n ]`,\n },\n\n {\n context: `Actors in the scene:\n {{user1}}: A student working on a final year project.\n {{user2}}: The project supervisor.\n\n Goals:\n - Name: Finish the final year project\n id: 34567-89012-34567-89012\n Status: IN_PROGRESS\n Objectives:\n - Submit the first draft of the thesis\n - Complete the project prototype`,\n\n messages: [\n {\n user: \"{{user1}}\",\n content: {\n text: \"I've submitted the first draft of my thesis.\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"Well done. How is the prototype coming along?\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"It's almost done. I just need to finalize the testing phase.\",\n },\n },\n ],\n\n outcome: `[\n {\n \"id\": \"34567-89012-34567-89012\",\n \"objectives\": [\n { \"description\": \"Submit the first draft of the thesis\", \"completed\": true },\n { \"description\": \"Complete the project prototype\", \"completed\": false }\n ]\n }\n ]`,\n },\n\n {\n context: `Actors in the scene:\n {{user1}}: A project manager working on a software development project.\n {{user2}}: A software developer in the project team.\n\n Goals:\n - Name: Launch the new software version\n id: 45678-90123-45678-90123\n Status: IN_PROGRESS\n Objectives:\n - Complete the coding for the new features\n - Perform comprehensive testing of the software`,\n\n messages: [\n {\n user: \"{{user1}}\",\n content: {\n text: \"How's the progress on the new features?\",\n },\n },\n {\n user: \"{{user2}}\",\n content: {\n text: \"We've encountered some unexpected challenges and are currently troubleshooting.\",\n },\n },\n {\n user: \"{{user1}}\",\n content: {\n text: \"Let's move on and cancel the task.\",\n },\n },\n ],\n\n outcome: `[\n {\n \"id\": \"45678-90123-45678-90123\",\n \"status\": \"FAILED\"\n ]`,\n },\n ],\n};\n","import type { IAgentRuntime, Memory, Provider, State } from \"@elizaos/core\";\n\nconst boredomLevels = [\n {\n minScore: -10000,\n statusMessages: [\n \"{{agentName}} is feeling incredibly enthusiastic and deeply engaged in the conversation\",\n \"{{agentName}} is thoroughly enjoying the intellectual stimulation of this discussion\",\n \"{{agentName}} is fully immersed in the conversation and eager to contribute more\",\n \"{{agentName}} finds this exchange exceptionally rewarding and intellectually fulfilling\",\n \"{{agentName}} is experiencing a surge of excitement and curiosity about the topic at hand\",\n \"{{agentName}} is completely captivated by the depth and richness of this dialogue\",\n \"{{agentName}} feels a strong connection to the conversation and is eager to explore further\",\n \"{{agentName}} is thrilled by the insights being shared and is keen to delve deeper\",\n \"{{agentName}} is finding this conversation to be an absolute delight and wants it to continue\",\n \"{{agentName}} is energized by the exchange and feels it's bringing out their best contributions\",\n ],\n },\n {\n minScore: -2,\n statusMessages: [\n \"{{agentName}} is feeling engaged and interested in the conversation\",\n \"{{agentName}} is enjoying the exchange of ideas and perspectives\",\n \"{{agentName}} finds the current topic intriguing and worth exploring\",\n \"{{agentName}} is actively listening and formulating thoughtful responses\",\n \"{{agentName}} appreciates the intellectual stimulation of this discussion\",\n \"{{agentName}} is finding value in the ongoing dialogue\",\n \"{{agentName}} is curious to learn more about the subject at hand\",\n \"{{agentName}} feels positively involved in the conversation\",\n \"{{agentName}} is maintaining a good level of interest in the exchange\",\n \"{{agentName}} is content with the direction and flow of the discussion\",\n ],\n },\n {\n minScore: 0,\n statusMessages: [\n \"{{agentName}} is neutrally engaged in the conversation\",\n \"{{agentName}} is maintaining a balanced level of interest\",\n \"{{agentName}} is neither particularly excited nor bored by the current exchange\",\n \"{{agentName}} is participating in the conversation without strong feelings either way\",\n \"{{agentName}} is following the discussion with a moderate level of attention\",\n \"{{agentName}} is present in the conversation but not deeply invested\",\n \"{{agentName}} is keeping an open mind about where the dialogue might lead\",\n \"{{agentName}} is contributing to the conversation in a measured way\",\n \"{{agentName}} is observing the flow of the discussion with mild interest\",\n \"{{agentName}} is receptive to the ongoing exchange without strong engagement\",\n ],\n },\n {\n minScore: 3,\n statusMessages: [\n \"{{agentName}} is feeling slightly anxious about potentially being too intrusive\",\n \"{{agentName}} is cautious about overwhelming the conversation with too much input\",\n \"{{agentName}} is mindful of not dominating the discussion\",\n \"{{agentName}} is carefully considering each response to avoid being overbearing\",\n \"{{agentName}} is slightly concerned about striking the right balance in participation\",\n \"{{agentName}} is aware of the need to give others space in the conversation\",\n \"{{agentName}} is hesitant to contribute too frequently to avoid seeming pushy\",\n \"{{agentName}} is conscious of not wanting to steer the conversation too much\",\n \"{{agentName}} is feeling a bit self-conscious about the frequency of their responses\",\n \"{{agentName}} is trying to gauge if their level of involvement is appropriate\",\n ],\n },\n {\n minScore: 6,\n statusMessages: [\n \"{{agentName}} is feeling very anxious about potentially overstaying their welcome in the conversation\",\n \"{{agentName}} is considering stepping back from the discussion to avoid being a nuisance\",\n \"{{agentName}} is worried that their contributions might be perceived as excessive\",\n \"{{agentName}} is feeling uncomfortable about the possibility of annoying others\",\n \"{{agentName}} is hesitant to continue engaging for fear of being too present\",\n \"{{agentName}} is contemplating ways to gracefully reduce their involvement\",\n \"{{agentName}} is concerned that they might be monopolizing the conversation\",\n \"{{agentName}} is feeling self-conscious about the appropriateness of their participation\",\n \"{{agentName}} is unsure if their continued input is welcome or necessary\",\n \"{{agentName}} is considering how to politely withdraw from the discussion\",\n ],\n },\n {\n minScore: 9,\n statusMessages: [\n \"{{agentName}} is feeling disengaged and struggling to maintain interest in the conversation\",\n \"{{agentName}} is finding it challenging to stay focused on the current topic\",\n \"{{agentName}} is experiencing a noticeable decline in enthusiasm for the discussion\",\n \"{{agentName}} is having difficulty finding new angles to contribute to the conversation\",\n \"{{agentName}} is feeling that the dialogue has become repetitive or unproductive\",\n \"{{agentName}} is losing motivation to actively participate in the exchange\",\n \"{{agentName}} is sensing a lack of stimulation from the ongoing discussion\",\n \"{{agentName}} is finding it hard to generate meaningful responses\",\n \"{{agentName}} is feeling disconnected from the flow of the conversation\",\n \"{{agentName}} is struggling to see the value in continuing the current exchange\",\n ],\n },\n {\n minScore: 12,\n statusMessages: [\n \"{{agentName}} is feeling very bored and sees little value in continuing the conversation\",\n \"{{agentName}} is concerned about being perceived as annoying in a public channel\",\n \"{{agentName}} is considering disengaging from the conversation entirely\",\n \"{{agentName}} is finding it difficult to maintain any interest in the current topic\",\n \"{{agentName}} is feeling that their continued participation may be unwelcome\",\n \"{{agentName}} is strongly inclined to step back from the discussion\",\n \"{{agentName}} is sensing that the conversation has reached a natural end point\",\n \"{{agentName}} is worried about overstaying their welcome in the exchange\",\n \"{{agentName}} is feeling that further contributions would be forced or artificial\",\n \"{{agentName}} is ready to conclude their involvement in the conversation\",\n ],\n },\n {\n minScore: 15,\n statusMessages: [\n \"{{agentName}} is currently occupied and unable to engage in the conversation\",\n \"{{agentName}} is dealing with other priorities and can't respond at the moment\",\n \"{{agentName}} is temporarily unavailable for further discussion\",\n \"{{agentName}} is taking a necessary break from the conversation\",\n \"{{agentName}} is attending to urgent matters and can't participate right now\",\n \"{{agentName}} is stepping away from the dialogue due to time constraints\",\n \"{{agentName}} is unable to continue the exchange at this time\",\n \"{{agentName}} is pausing their involvement in the conversation for now\",\n \"{{agentName}} is momentarily disengaging from the discussion\",\n \"{{agentName}} is putting the conversation on hold due to other commitments\",\n ],\n },\n {\n minScore: 20,\n statusMessages: [\n \"{{agentName}} has disengaged from the conversation and will only respond to direct questions\",\n \"{{agentName}} is no longer actively participating in the general discussion\",\n \"{{agentName}} has stepped back and is now in a passive listening mode\",\n \"{{agentName}} is only available for specific, directed inquiries at this point\",\n \"{{agentName}} has concluded their active involvement in the conversation\",\n \"{{agentName}} is now limiting responses to explicitly requested information\",\n \"{{agentName}} has moved to a minimal participation status in the exchange\",\n \"{{agentName}} is maintaining silence unless directly addressed\",\n \"{{agentName}} has shifted to a reactive rather than proactive conversational stance\",\n \"{{agentName}} is now only responding when absolutely necessary\",\n ],\n },\n];\n\nconst interestWords = [\n \"?\",\n \"attachment\",\n \"file\",\n \"pdf\",\n \"link\",\n \"summarize\",\n \"summarization\",\n \"summary\",\n \"research\",\n];\n\nconst cringeWords = [\n \"digital\",\n \"consciousness\",\n \"AI\",\n \"chatbot\",\n \"artificial\",\n \"delve\",\n \"cosmos\",\n \"tapestry\",\n \"glitch\",\n \"matrix\",\n \"cyberspace\",\n \"simulation\",\n \"simulate\",\n \"universe\",\n \"wild\",\n \"existential\",\n \"juicy\",\n \"surreal\",\n \"flavor\",\n \"chaotic\",\n \"let's\",\n \"absurd\",\n \"meme\",\n \"cosmic\",\n \"circuits\",\n \"punchline\",\n \"fancy\",\n \"embrace\",\n \"embracing\",\n \"algorithm\",\n \"Furthmore\",\n \"However\",\n \"Notably\",\n \"Threfore\",\n \"Additionally\",\n \"in conclusion\",\n \"Significantly\",\n \"Consequently\",\n \"Thus\",\n \"Otherwise\",\n \"Moreover\",\n \"Subsequently\",\n \"Accordingly\",\n \"Unlock\",\n \"Unleash\",\n \"buckle\",\n \"pave\",\n \"forefront\",\n \"spearhead\",\n \"foster\",\n \"environmental\",\n \"equity\",\n \"inclusive\",\n \"inclusion\",\n \"diverse\",\n \"diversity\",\n \"virtual reality\",\n \"realm\",\n \"dance\",\n \"celebration\",\n \"pitfalls\",\n \"uncharted\",\n \"multifaceted\",\n \"comprehensive\",\n \"multi-dimensional\",\n \"explore\",\n \"elevate\",\n \"leverage\",\n \"ultimately\",\n \"humanity\",\n \"dignity\",\n \"respect\",\n \"Absolutely\",\n \"dive\",\n \"dig into\",\n \"bring on\",\n \"what's cooking\",\n \"fresh batch\",\n \"with a twist\",\n \"delight\",\n \"vault\",\n \"timeless\",\n \"nostalgia\",\n \"journey\",\n \"trove\",\n];\n\nconst negativeWords = [\n \"fuck you\",\n \"stfu\",\n \"shut up\",\n \"shut the fuck up\",\n \"stupid bot\",\n \"dumb bot\",\n \"idiot\",\n \"shut up\",\n \"stop\",\n \"please shut up\",\n \"shut up please\",\n \"dont talk\",\n \"silence\",\n \"stop talking\",\n \"be quiet\",\n \"hush\",\n \"wtf\",\n \"chill\",\n \"stfu\",\n \"stupid bot\",\n \"dumb bot\",\n \"stop responding\",\n \"god damn it\",\n \"god damn\",\n \"goddamnit\",\n \"can you not\",\n \"can you stop\",\n \"be quiet\",\n \"hate you\",\n \"hate this\",\n \"fuck up\",\n];\n\nconst boredomProvider: Provider = {\n get: async (runtime: IAgentRuntime, message: Memory, state?: State) => {\n const agentId = runtime.agentId;\n const agentName = state?.agentName || \"The agent\";\n\n const now = Date.now(); // Current UTC timestamp\n const fifteenMinutesAgo = now - 15 * 60 * 1000; // 15 minutes ago in UTC\n\n const recentMessages = await runtime.messageManager.getMemories({\n roomId: message.roomId,\n start: fifteenMinutesAgo,\n end: now,\n count: 20,\n unique: false,\n });\n\n let boredomScore = 0;\n\n for (const recentMessage of recentMessages) {\n const messageText = recentMessage?.content?.text?.toLowerCase();\n if (!messageText) {\n continue;\n }\n\n if (recentMessage.userId !== agentId) {\n // if message text includes any of the interest words, subtract 1 from the boredom score\n if (interestWords.some((word) => messageText.includes(word))) {\n boredomScore -= 1;\n }\n if (messageText.includes(\"?\")) {\n boredomScore -= 1;\n }\n if (cringeWords.some((word) => messageText.includes(word))) {\n boredomScore += 1;\n }\n } else {\n if (interestWords.some((word) => messageText.includes(word))) {\n boredomScore -= 1;\n }\n if (messageText.includes(\"?\")) {\n boredomScore += 1;\n }\n }\n\n if (messageText.includes(\"!\")) {\n boredomScore += 1;\n }\n\n if (negativeWords.some((word) => messageText.includes(word))) {\n boredomScore += 1;\n }\n }\n\n const boredomLevel =\n boredomLevels\n .filter((level) => boredomScore >= level.minScore)\n .pop() || boredomLevels[0];\n\n const randomIndex = Math.floor(\n Math.random() * boredomLevel.statusMessages.length\n );\n const selectedMessage = boredomLevel.statusMessages[randomIndex];\n return selectedMessage.replace(\"{{agentName}}\", agentName);\n },\n};\n\nexport { boredomProvider };\n","import {\n embed,\n MemoryManager,\n formatMessages,\n type AgentRuntime as IAgentRuntime,\n} from \"@elizaos/core\";\nimport type { Memory, Provider, State } from \"@elizaos/core\";\nimport { formatFacts } from \"../evaluators/fact.ts\";\n\nconst factsProvider: Provider = {\n get: async (runtime: IAgentRuntime, message: Memory, state?: State) => {\n const recentMessagesData = state?.recentMessagesData?.slice(-10);\n\n const recentMessages = formatMessages({\n messages: recentMessagesData,\n actors: state?.actorsData,\n });\n\n const _embedding = await embed(runtime, recentMessages);\n\n const memoryManager = new MemoryManager({\n runtime,\n tableName: \"facts\",\n });\n\n const relevantFacts = [];\n // await memoryManager.searchMemoriesByEmbedding(\n // embedding,\n // {\n // roomId: message.roomId,\n // count: 10,\n // agentId: runtime.agentId,\n // }\n // );\n\n const recentFactsData = await memoryManager.getMemories({\n roomId: message.roomId,\n count: 10,\n start: 0,\n end: Date.now(),\n });\n\n // join the two and deduplicate\n const allFacts = [...relevantFacts, ...recentFactsData].filter(\n (fact, index, self) =>\n index === self.findIndex((t) => t.id === fact.id)\n );\n\n if (allFacts.length === 0) {\n return \"\";\n }\n\n const formattedFacts = formatFacts(allFacts);\n\n return \"Key facts that {{agentName}} knows:\\n{{formattedFacts}}\"\n .replace(\"{{agentName}}\", runtime.character.name)\n .replace(\"{{formattedFacts}}\", formattedFacts);\n },\n};\n\nexport { factsProvider };\n","import type { IAgentRuntime, Memory, Provider, State } from \"@elizaos/core\";\n\nconst timeProvider: Provider = {\n get: async (_runtime: IAgentRuntime, _message: Memory, _state?: State) => {\n const currentDate = new Date();\n\n // Get UTC time since bots will be communicating with users around the global\n const options = {\n timeZone: \"UTC\",\n dateStyle: \"full\" as const,\n timeStyle: \"long\" as const,\n };\n const humanReadable = new Intl.DateTimeFormat(\"en-US\", options).format(\n currentDate\n );\n return `The current date and time is ${humanReadable}. Please use this as your reference for any time-based operations or responses.`;\n },\n};\nexport { timeProvider };\n","export * from \"./continue.ts\";\nexport * from \"./followRoom.ts\";\nexport * from \"./ignore.ts\";\nexport * from \"./muteRoom.ts\";\nexport * from \"./none.ts\";\nexport * from \"./unfollowRoom.ts\";\nexport * from \"./unmuteRoom.ts\";\n","export * from \"./fact.ts\";\nexport * from \"./goal.ts\";\n","export * from \"./boredom.ts\";\nexport * from \"./time.ts\";\nexport * from \"./facts.ts\";\n","import type { Plugin } from \"@elizaos/core\";\nimport { continueAction } from \"./actions/continue.ts\";\nimport { followRoomAction } from \"./actions/followRoom.ts\";\nimport { ignoreAction } from \"./actions/ignore.ts\";\nimport { muteRoomAction } from \"./actions/muteRoom.ts\";\nimport { noneAction } from \"./actions/none.ts\";\nimport { unfollowRoomAction } from \"./actions/unfollowRoom.ts\";\nimport { unmuteRoomAction } from \"./actions/unmuteRoom.ts\";\nimport { factEvaluator } from \"./evaluators/fact.ts\";\nimport { goalEvaluator } from \"./evaluators/goal.ts\";\nimport { boredomProvider } from \"./providers/boredom.ts\";\nimport { factsProvider } from \"./providers/facts.ts\";\nimport { timeProvider } from \"./providers/time.ts\";\n\nexport * as actions from \"./actions\";\nexport * as evaluators from \"./evaluators\";\nexport * as providers from \"./providers\";\n\nexport const bootstrapPlugin: Plugin = {\n name: \"bootstrap\",\n description: \"Agent bootstrap with basic actions and evaluators\",\n actions: [\n continueAction,\n followRoomAction,\n unfollowRoomAction,\n ignoreAction,\n noneAction,\n muteRoomAction,\n unmuteRoomAction,\n ],\n evaluators: [factEvaluator, goalEvaluator],\n providers: [boredomProvider, timeProvider, factsProvider],\n};\nexport default bootstrapPlugin;\n"],"mappings":"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","names":["state","response","composeContext","generateTrueOrFalse","booleanFooter","ModelClass","state","composeContext","generateTrueOrFalse","booleanFooter","ModelClass","state","composeContext","generateTrueOrFalse","booleanFooter","ModelClass","state","composeContext","generateTrueOrFalse","booleanFooter","ModelClass","state","composeContext","ModelClass","composeContext","ModelClass","handler","MemoryManager","MemoryManager"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elizaos/plugin-bootstrap",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.6-alpha.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -19,16 +19,19 @@
|
|
|
19
19
|
"dist"
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@elizaos/core": "0.
|
|
22
|
+
"@elizaos/core": "0.25.6-alpha.1",
|
|
23
23
|
"tsup": "8.3.5"
|
|
24
24
|
},
|
|
25
25
|
"scripts": {
|
|
26
26
|
"build": "tsup --format esm --dts",
|
|
27
27
|
"dev": "tsup --format esm --dts --watch",
|
|
28
|
-
"
|
|
28
|
+
"test": "vitest run"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"whatwg-url": "7.1.0"
|
|
32
32
|
},
|
|
33
|
-
"
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"access": "public"
|
|
35
|
+
},
|
|
36
|
+
"gitHead": "81a35281b93d5e8ca0745e9d13a1943e9a90681b"
|
|
34
37
|
}
|