+ "code": "const 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 = await memoryManager.searchMemoriesByEmbedding(\n embedding,\n {\n roomId: message.roomId,\n count: 10,\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};",
0 commit comments