@elizaos/plugin-memory 1.0.3 → 1.0.4
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.
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var zJ=Object.defineProperty;var DJ=(J,Q)=>{for(var Y in Q)zJ(J,Y,{get:Q[Y],enumerable:!0,configurable:!0,set:(W)=>Q[Y]=()=>W})};import{Service as MJ,logger as L}from"@elizaos/core";import{eq as D,and as g,desc as p,sql as GJ,cosineDistance as yJ,gte as lJ}from"drizzle-orm";var r={};DJ(r,{sessionSummaries:()=>k,memoryAccessLogs:()=>VJ,longTermMemories:()=>G});import{sql as ZJ}from"drizzle-orm";import{pgTable as RJ,text as a,integer as bJ,jsonb as CJ,real as _J,index as l,varchar as o,timestamp as m}from"drizzle-orm/pg-core";var G=RJ("long_term_memories",{id:o("id",{length:36}).primaryKey(),agentId:o("agent_id",{length:36}).notNull(),entityId:o("entity_id",{length:36}).notNull(),category:a("category").notNull(),content:a("content").notNull(),metadata:CJ("metadata"),embedding:_J("embedding").array(),confidence:_J("confidence").default(1),source:a("source"),createdAt:m("created_at").default(ZJ`now()`).notNull(),updatedAt:m("updated_at").default(ZJ`now()`).notNull(),lastAccessedAt:m("last_accessed_at"),accessCount:bJ("access_count").default(0)},(J)=>({agentEntityIdx:l("long_term_memories_agent_entity_idx").on(J.agentId,J.entityId),categoryIdx:l("long_term_memories_category_idx").on(J.category),confidenceIdx:l("long_term_memories_confidence_idx").on(J.confidence),createdAtIdx:l("long_term_memories_created_at_idx").on(J.createdAt)}));import{sql as $J}from"drizzle-orm";import{pgTable as fJ,text as hJ,integer as AJ,jsonb as UJ,real as vJ,index as s,varchar as c,timestamp as d}from"drizzle-orm/pg-core";var k=fJ("session_summaries",{id:c("id",{length:36}).primaryKey(),agentId:c("agent_id",{length:36}).notNull(),roomId:c("room_id",{length:36}).notNull(),entityId:c("entity_id",{length:36}),summary:hJ("summary").notNull(),messageCount:AJ("message_count").notNull(),lastMessageOffset:AJ("last_message_offset").notNull().default(0),startTime:d("start_time").notNull(),endTime:d("end_time").notNull(),topics:UJ("topics"),metadata:UJ("metadata"),embedding:vJ("embedding").array(),createdAt:d("created_at").default($J`now()`).notNull(),updatedAt:d("updated_at").default($J`now()`).notNull()},(J)=>({agentRoomIdx:s("session_summaries_agent_room_idx").on(J.agentId,J.roomId),entityIdx:s("session_summaries_entity_idx").on(J.entityId),startTimeIdx:s("session_summaries_start_time_idx").on(J.startTime)}));import{sql as TJ}from"drizzle-orm";import{pgTable as IJ,text as xJ,integer as SJ,real as pJ,index as t,varchar as u,timestamp as wJ}from"drizzle-orm/pg-core";var VJ=IJ("memory_access_logs",{id:u("id",{length:36}).primaryKey(),agentId:u("agent_id",{length:36}).notNull(),memoryId:u("memory_id",{length:36}).notNull(),memoryType:xJ("memory_type").notNull(),accessedAt:wJ("accessed_at").default(TJ`now()`).notNull(),roomId:u("room_id",{length:36}),relevanceScore:pJ("relevance_score"),wasUseful:SJ("was_useful")},(J)=>({memoryIdx:t("memory_access_logs_memory_idx").on(J.memoryId),agentIdx:t("memory_access_logs_agent_idx").on(J.agentId),accessedAtIdx:t("memory_access_logs_accessed_at_idx").on(J.accessedAt)}));class w extends MJ{static serviceType="memory";sessionMessageCounts;memoryConfig;lastExtractionCheckpoints;capabilityDescription="Advanced memory management with short-term summarization and long-term persistent facts";constructor(J){super(J);this.sessionMessageCounts=new Map,this.lastExtractionCheckpoints=new Map,this.memoryConfig={shortTermSummarizationThreshold:5,shortTermRetainRecent:10,longTermExtractionEnabled:!0,longTermVectorSearchEnabled:!1,longTermConfidenceThreshold:0.7,longTermExtractionInterval:5,summaryModelType:"TEXT_LARGE",summaryMaxTokens:2500}}static async start(J){let Q=new w(J);return await Q.initialize(J),Q}async stop(){L.info("MemoryService stopped")}async initialize(J){this.runtime=J;let Q=J.getSetting("MEMORY_SUMMARIZATION_THRESHOLD");if(Q)this.memoryConfig.shortTermSummarizationThreshold=parseInt(Q,10);let Y=J.getSetting("MEMORY_RETAIN_RECENT");if(Y)this.memoryConfig.shortTermRetainRecent=parseInt(Y,10);let W=J.getSetting("MEMORY_LONG_TERM_ENABLED");if(W==="false")this.memoryConfig.longTermExtractionEnabled=!1;else if(W==="true")this.memoryConfig.longTermExtractionEnabled=!0;let K=J.getSetting("MEMORY_CONFIDENCE_THRESHOLD");if(K)this.memoryConfig.longTermConfidenceThreshold=parseFloat(K);L.info({summarizationThreshold:this.memoryConfig.shortTermSummarizationThreshold,retainRecent:this.memoryConfig.shortTermRetainRecent,longTermEnabled:this.memoryConfig.longTermExtractionEnabled,extractionInterval:this.memoryConfig.longTermExtractionInterval,confidenceThreshold:this.memoryConfig.longTermConfidenceThreshold},"MemoryService initialized")}getDb(){let J=this.runtime.db;if(!J)throw Error("Database not available");return J}getConfig(){return{...this.memoryConfig}}updateConfig(J){this.memoryConfig={...this.memoryConfig,...J}}incrementMessageCount(J){let Y=(this.sessionMessageCounts.get(J)||0)+1;return this.sessionMessageCounts.set(J,Y),Y}resetMessageCount(J){this.sessionMessageCounts.set(J,0)}async shouldSummarize(J){return await this.runtime.countMemories(J,!1,"messages")>=this.memoryConfig.shortTermSummarizationThreshold}getExtractionKey(J,Q){return`memory:extraction:${J}:${Q}`}async getLastExtractionCheckpoint(J,Q){let Y=this.getExtractionKey(J,Q),W=this.lastExtractionCheckpoints.get(Y);if(W!==void 0)return W;try{let Z=await this.runtime.getCache(Y)??0;return this.lastExtractionCheckpoints.set(Y,Z),Z}catch(K){return L.warn({error:K},"Failed to get extraction checkpoint from cache"),0}}async setLastExtractionCheckpoint(J,Q,Y){let W=this.getExtractionKey(J,Q);this.lastExtractionCheckpoints.set(W,Y);try{await this.runtime.setCache(W,Y),L.debug(`Set extraction checkpoint for ${J} in room ${Q} at message count ${Y}`)}catch(K){L.error({error:K},"Failed to persist extraction checkpoint to cache")}}async shouldRunExtraction(J,Q,Y){let W=this.memoryConfig.longTermExtractionInterval,K=await this.getLastExtractionCheckpoint(J,Q),Z=Math.floor(Y/W)*W,$=Y>=W&&Z>K;return L.debug({entityId:J,roomId:Q,currentMessageCount:Y,interval:W,lastCheckpoint:K,currentCheckpoint:Z,shouldRun:$},"Extraction check"),$}async storeLongTermMemory(J){let Q=this.getDb(),Y=crypto.randomUUID(),W=new Date,K={id:Y,createdAt:W,updatedAt:W,accessCount:0,...J};try{await Q.insert(G).values({id:K.id,agentId:K.agentId,entityId:K.entityId,category:K.category,content:K.content,metadata:K.metadata||{},embedding:K.embedding,confidence:K.confidence,source:K.source,accessCount:K.accessCount,createdAt:W,updatedAt:W,lastAccessedAt:K.lastAccessedAt})}catch(Z){throw L.error({error:Z},"Failed to store long-term memory"),Z}return L.info(`Stored long-term memory: ${K.category} for entity ${K.entityId}`),K}async getLongTermMemories(J,Q,Y=10){let W=this.getDb(),K=[D(G.agentId,this.runtime.agentId),D(G.entityId,J)];if(Q)K.push(D(G.category,Q));return(await W.select().from(G).where(g(...K)).orderBy(p(G.confidence),p(G.updatedAt)).limit(Y)).map(($)=>({id:$.id,agentId:$.agentId,entityId:$.entityId,category:$.category,content:$.content,metadata:$.metadata,embedding:$.embedding,confidence:$.confidence,source:$.source,createdAt:$.createdAt,updatedAt:$.updatedAt,lastAccessedAt:$.lastAccessedAt,accessCount:$.accessCount}))}async updateLongTermMemory(J,Q){let Y=this.getDb(),W={updatedAt:new Date};if(Q.content!==void 0)W.content=Q.content;if(Q.metadata!==void 0)W.metadata=Q.metadata;if(Q.confidence!==void 0)W.confidence=Q.confidence;if(Q.embedding!==void 0)W.embedding=Q.embedding;if(Q.lastAccessedAt!==void 0)W.lastAccessedAt=Q.lastAccessedAt;if(Q.accessCount!==void 0)W.accessCount=Q.accessCount;await Y.update(G).set(W).where(D(G.id,J)),L.info(`Updated long-term memory: ${J}`)}async deleteLongTermMemory(J){await this.getDb().delete(G).where(D(G.id,J)),L.info(`Deleted long-term memory: ${J}`)}async getCurrentSessionSummary(J){let Y=await this.getDb().select().from(k).where(g(D(k.agentId,this.runtime.agentId),D(k.roomId,J))).orderBy(p(k.updatedAt)).limit(1);if(Y.length===0)return null;let W=Y[0];return{id:W.id,agentId:W.agentId,roomId:W.roomId,entityId:W.entityId,summary:W.summary,messageCount:W.messageCount,lastMessageOffset:W.lastMessageOffset,startTime:W.startTime,endTime:W.endTime,topics:W.topics||[],metadata:W.metadata,embedding:W.embedding,createdAt:W.createdAt,updatedAt:W.updatedAt}}async storeSessionSummary(J){let Q=this.getDb(),Y=crypto.randomUUID(),W=new Date,K={id:Y,createdAt:W,updatedAt:W,...J};return await Q.insert(k).values({id:K.id,agentId:K.agentId,roomId:K.roomId,entityId:K.entityId||null,summary:K.summary,messageCount:K.messageCount,lastMessageOffset:K.lastMessageOffset,startTime:K.startTime,endTime:K.endTime,topics:K.topics||[],metadata:K.metadata||{},embedding:K.embedding,createdAt:W,updatedAt:W}),L.info(`Stored session summary for room ${K.roomId}`),K}async updateSessionSummary(J,Q){let Y=this.getDb(),W={updatedAt:new Date};if(Q.summary!==void 0)W.summary=Q.summary;if(Q.messageCount!==void 0)W.messageCount=Q.messageCount;if(Q.lastMessageOffset!==void 0)W.lastMessageOffset=Q.lastMessageOffset;if(Q.endTime!==void 0)W.endTime=Q.endTime;if(Q.topics!==void 0)W.topics=Q.topics;if(Q.metadata!==void 0)W.metadata=Q.metadata;if(Q.embedding!==void 0)W.embedding=Q.embedding;await Y.update(k).set(W).where(D(k.id,J)),L.info(`Updated session summary: ${J}`)}async getSessionSummaries(J,Q=5){return(await this.getDb().select().from(k).where(g(D(k.agentId,this.runtime.agentId),D(k.roomId,J))).orderBy(p(k.updatedAt)).limit(Q)).map((K)=>({id:K.id,agentId:K.agentId,roomId:K.roomId,entityId:K.entityId,summary:K.summary,messageCount:K.messageCount,lastMessageOffset:K.lastMessageOffset,startTime:K.startTime,endTime:K.endTime,topics:K.topics||[],metadata:K.metadata,embedding:K.embedding,createdAt:K.createdAt,updatedAt:K.updatedAt}))}async searchLongTermMemories(J,Q,Y=5,W=0.7){if(!this.memoryConfig.longTermVectorSearchEnabled)return L.warn("Vector search is not enabled, falling back to recent memories"),this.getLongTermMemories(J,void 0,Y);let K=this.getDb();try{let Z=Q.map((_)=>Number.isFinite(_)?Number(_.toFixed(6)):0),$=GJ`1 - (${yJ(G.embedding,Z)})`,U=[D(G.agentId,this.runtime.agentId),D(G.entityId,J),GJ`${G.embedding} IS NOT NULL`];if(W>0)U.push(lJ($,W));return(await K.select({memory:G,similarity:$}).from(G).where(g(...U)).orderBy(p($)).limit(Y)).map((_)=>({id:_.memory.id,agentId:_.memory.agentId,entityId:_.memory.entityId,category:_.memory.category,content:_.memory.content,metadata:_.memory.metadata,embedding:_.memory.embedding,confidence:_.memory.confidence,source:_.memory.source,createdAt:_.memory.createdAt,updatedAt:_.memory.updatedAt,lastAccessedAt:_.memory.lastAccessedAt,accessCount:_.memory.accessCount,similarity:_.similarity}))}catch(Z){return L.warn({error:Z},"Vector search failed, falling back to recent memories"),this.getLongTermMemories(J,void 0,Y)}}async getFormattedLongTermMemories(J){let Q=await this.getLongTermMemories(J,void 0,20);if(Q.length===0)return"";let Y=new Map;for(let K of Q){if(!Y.has(K.category))Y.set(K.category,[]);Y.get(K.category)?.push(K)}let W=[];for(let[K,Z]of Y.entries()){let $=K.split("_").map((V)=>V.charAt(0).toUpperCase()+V.slice(1)).join(" "),U=Z.map((V)=>`- ${V.content}`).join(`
|
|
1
|
+
var zJ=Object.defineProperty;var DJ=(J,Q)=>{for(var Y in Q)zJ(J,Y,{get:Q[Y],enumerable:!0,configurable:!0,set:(W)=>Q[Y]=()=>W})};import{Service as MJ,logger as H}from"@elizaos/core";import{eq as D,and as g,desc as p,sql as jJ,cosineDistance as yJ,gte as lJ}from"drizzle-orm";var JJ={};DJ(JJ,{sessionSummaries:()=>q,memoryAccessLogs:()=>XJ,longTermMemories:()=>X});import{sql as $J}from"drizzle-orm";import{pgTable as RJ,text as m,integer as bJ,jsonb as CJ,real as AJ,index as l,varchar as s,timestamp as t}from"drizzle-orm/pg-core";var X=RJ("long_term_memories",{id:s("id",{length:36}).primaryKey(),agentId:s("agent_id",{length:36}).notNull(),entityId:s("entity_id",{length:36}).notNull(),category:m("category").notNull(),content:m("content").notNull(),metadata:CJ("metadata"),embedding:AJ("embedding").array(),confidence:AJ("confidence").default(1),source:m("source"),createdAt:t("created_at").default($J`now()`).notNull(),updatedAt:t("updated_at").default($J`now()`).notNull(),lastAccessedAt:t("last_accessed_at"),accessCount:bJ("access_count").default(0)},(J)=>({agentEntityIdx:l("long_term_memories_agent_entity_idx").on(J.agentId,J.entityId),categoryIdx:l("long_term_memories_category_idx").on(J.category),confidenceIdx:l("long_term_memories_confidence_idx").on(J.confidence),createdAtIdx:l("long_term_memories_created_at_idx").on(J.createdAt)}));import{sql as UJ}from"drizzle-orm";import{pgTable as fJ,text as hJ,integer as VJ,jsonb as GJ,real as TJ,index as r,varchar as c,timestamp as d}from"drizzle-orm/pg-core";var q=fJ("session_summaries",{id:c("id",{length:36}).primaryKey(),agentId:c("agent_id",{length:36}).notNull(),roomId:c("room_id",{length:36}).notNull(),entityId:c("entity_id",{length:36}),summary:hJ("summary").notNull(),messageCount:VJ("message_count").notNull(),lastMessageOffset:VJ("last_message_offset").notNull().default(0),startTime:d("start_time").notNull(),endTime:d("end_time").notNull(),topics:GJ("topics"),metadata:GJ("metadata"),embedding:TJ("embedding").array(),createdAt:d("created_at").default(UJ`now()`).notNull(),updatedAt:d("updated_at").default(UJ`now()`).notNull()},(J)=>({agentRoomIdx:r("session_summaries_agent_room_idx").on(J.agentId,J.roomId),entityIdx:r("session_summaries_entity_idx").on(J.entityId),startTimeIdx:r("session_summaries_start_time_idx").on(J.startTime)}));import{sql as vJ}from"drizzle-orm";import{pgTable as IJ,text as SJ,integer as xJ,real as pJ,index as e,varchar as u,timestamp as wJ}from"drizzle-orm/pg-core";var XJ=IJ("memory_access_logs",{id:u("id",{length:36}).primaryKey(),agentId:u("agent_id",{length:36}).notNull(),memoryId:u("memory_id",{length:36}).notNull(),memoryType:SJ("memory_type").notNull(),accessedAt:wJ("accessed_at").default(vJ`now()`).notNull(),roomId:u("room_id",{length:36}),relevanceScore:pJ("relevance_score"),wasUseful:xJ("was_useful")},(J)=>({memoryIdx:e("memory_access_logs_memory_idx").on(J.memoryId),agentIdx:e("memory_access_logs_agent_idx").on(J.agentId),accessedAtIdx:e("memory_access_logs_accessed_at_idx").on(J.accessedAt)}));class w extends MJ{static serviceType="memory";sessionMessageCounts;memoryConfig;lastExtractionCheckpoints;capabilityDescription="Advanced memory management with short-term summarization and long-term persistent facts";constructor(J){super(J);this.sessionMessageCounts=new Map,this.lastExtractionCheckpoints=new Map,this.memoryConfig={shortTermSummarizationThreshold:5,shortTermRetainRecent:10,longTermExtractionEnabled:!0,longTermVectorSearchEnabled:!1,longTermConfidenceThreshold:0.7,longTermExtractionInterval:5,summaryModelType:"TEXT_LARGE",summaryMaxTokens:2500}}static async start(J){let Q=new w(J);return await Q.initialize(J),Q}async stop(){H.info("MemoryService stopped")}async initialize(J){this.runtime=J;let Q=J.getSetting("MEMORY_SUMMARIZATION_THRESHOLD");if(Q)this.memoryConfig.shortTermSummarizationThreshold=parseInt(Q,10);let Y=J.getSetting("MEMORY_RETAIN_RECENT");if(Y)this.memoryConfig.shortTermRetainRecent=parseInt(Y,10);let W=J.getSetting("MEMORY_LONG_TERM_ENABLED");if(W==="false")this.memoryConfig.longTermExtractionEnabled=!1;else if(W==="true")this.memoryConfig.longTermExtractionEnabled=!0;let K=J.getSetting("MEMORY_CONFIDENCE_THRESHOLD");if(K)this.memoryConfig.longTermConfidenceThreshold=parseFloat(K);H.info({summarizationThreshold:this.memoryConfig.shortTermSummarizationThreshold,retainRecent:this.memoryConfig.shortTermRetainRecent,longTermEnabled:this.memoryConfig.longTermExtractionEnabled,extractionInterval:this.memoryConfig.longTermExtractionInterval,confidenceThreshold:this.memoryConfig.longTermConfidenceThreshold},"MemoryService initialized")}getDb(){let J=this.runtime.db;if(!J)throw Error("Database not available");return J}getConfig(){return{...this.memoryConfig}}updateConfig(J){this.memoryConfig={...this.memoryConfig,...J}}incrementMessageCount(J){let Y=(this.sessionMessageCounts.get(J)||0)+1;return this.sessionMessageCounts.set(J,Y),Y}resetMessageCount(J){this.sessionMessageCounts.set(J,0)}async shouldSummarize(J){return await this.runtime.countMemories(J,!1,"messages")>=this.memoryConfig.shortTermSummarizationThreshold}getExtractionKey(J,Q){return`memory:extraction:${J}:${Q}`}async getLastExtractionCheckpoint(J,Q){let Y=this.getExtractionKey(J,Q),W=this.lastExtractionCheckpoints.get(Y);if(W!==void 0)return W;try{let Z=await this.runtime.getCache(Y)??0;return this.lastExtractionCheckpoints.set(Y,Z),Z}catch(K){return H.warn({error:K},"Failed to get extraction checkpoint from cache"),0}}async setLastExtractionCheckpoint(J,Q,Y){let W=this.getExtractionKey(J,Q);this.lastExtractionCheckpoints.set(W,Y);try{await this.runtime.setCache(W,Y),H.debug(`Set extraction checkpoint for ${J} in room ${Q} at message count ${Y}`)}catch(K){H.error({error:K},"Failed to persist extraction checkpoint to cache")}}async shouldRunExtraction(J,Q,Y){let W=this.memoryConfig.longTermExtractionInterval,K=await this.getLastExtractionCheckpoint(J,Q),Z=Math.floor(Y/W)*W,$=Y>=W&&Z>K;return H.debug({entityId:J,roomId:Q,currentMessageCount:Y,interval:W,lastCheckpoint:K,currentCheckpoint:Z,shouldRun:$},"Extraction check"),$}async storeLongTermMemory(J){let Q=this.getDb(),Y=crypto.randomUUID(),W=new Date,K={id:Y,createdAt:W,updatedAt:W,accessCount:0,...J};try{await Q.insert(X).values({id:K.id,agentId:K.agentId,entityId:K.entityId,category:K.category,content:K.content,metadata:K.metadata||{},embedding:K.embedding,confidence:K.confidence,source:K.source,accessCount:K.accessCount,createdAt:W,updatedAt:W,lastAccessedAt:K.lastAccessedAt})}catch(Z){throw H.error({error:Z},"Failed to store long-term memory"),Z}return H.info(`Stored long-term memory: ${K.category} for entity ${K.entityId}`),K}async getLongTermMemories(J,Q,Y=10){let W=this.getDb(),K=[D(X.agentId,this.runtime.agentId),D(X.entityId,J)];if(Q)K.push(D(X.category,Q));return(await W.select().from(X).where(g(...K)).orderBy(p(X.confidence),p(X.updatedAt)).limit(Y)).map(($)=>({id:$.id,agentId:$.agentId,entityId:$.entityId,category:$.category,content:$.content,metadata:$.metadata,embedding:$.embedding,confidence:$.confidence,source:$.source,createdAt:$.createdAt,updatedAt:$.updatedAt,lastAccessedAt:$.lastAccessedAt,accessCount:$.accessCount}))}async updateLongTermMemory(J,Q){let Y=this.getDb(),W={updatedAt:new Date};if(Q.content!==void 0)W.content=Q.content;if(Q.metadata!==void 0)W.metadata=Q.metadata;if(Q.confidence!==void 0)W.confidence=Q.confidence;if(Q.embedding!==void 0)W.embedding=Q.embedding;if(Q.lastAccessedAt!==void 0)W.lastAccessedAt=Q.lastAccessedAt;if(Q.accessCount!==void 0)W.accessCount=Q.accessCount;await Y.update(X).set(W).where(D(X.id,J)),H.info(`Updated long-term memory: ${J}`)}async deleteLongTermMemory(J){await this.getDb().delete(X).where(D(X.id,J)),H.info(`Deleted long-term memory: ${J}`)}async getCurrentSessionSummary(J){let Y=await this.getDb().select().from(q).where(g(D(q.agentId,this.runtime.agentId),D(q.roomId,J))).orderBy(p(q.updatedAt)).limit(1);if(Y.length===0)return null;let W=Y[0];return{id:W.id,agentId:W.agentId,roomId:W.roomId,entityId:W.entityId,summary:W.summary,messageCount:W.messageCount,lastMessageOffset:W.lastMessageOffset,startTime:W.startTime,endTime:W.endTime,topics:W.topics||[],metadata:W.metadata,embedding:W.embedding,createdAt:W.createdAt,updatedAt:W.updatedAt}}async storeSessionSummary(J){let Q=this.getDb(),Y=crypto.randomUUID(),W=new Date,K={id:Y,createdAt:W,updatedAt:W,...J};return await Q.insert(q).values({id:K.id,agentId:K.agentId,roomId:K.roomId,entityId:K.entityId||null,summary:K.summary,messageCount:K.messageCount,lastMessageOffset:K.lastMessageOffset,startTime:K.startTime,endTime:K.endTime,topics:K.topics||[],metadata:K.metadata||{},embedding:K.embedding,createdAt:W,updatedAt:W}),H.info(`Stored session summary for room ${K.roomId}`),K}async updateSessionSummary(J,Q){let Y=this.getDb(),W={updatedAt:new Date};if(Q.summary!==void 0)W.summary=Q.summary;if(Q.messageCount!==void 0)W.messageCount=Q.messageCount;if(Q.lastMessageOffset!==void 0)W.lastMessageOffset=Q.lastMessageOffset;if(Q.endTime!==void 0)W.endTime=Q.endTime;if(Q.topics!==void 0)W.topics=Q.topics;if(Q.metadata!==void 0)W.metadata=Q.metadata;if(Q.embedding!==void 0)W.embedding=Q.embedding;await Y.update(q).set(W).where(D(q.id,J)),H.info(`Updated session summary: ${J}`)}async getSessionSummaries(J,Q=5){return(await this.getDb().select().from(q).where(g(D(q.agentId,this.runtime.agentId),D(q.roomId,J))).orderBy(p(q.updatedAt)).limit(Q)).map((K)=>({id:K.id,agentId:K.agentId,roomId:K.roomId,entityId:K.entityId,summary:K.summary,messageCount:K.messageCount,lastMessageOffset:K.lastMessageOffset,startTime:K.startTime,endTime:K.endTime,topics:K.topics||[],metadata:K.metadata,embedding:K.embedding,createdAt:K.createdAt,updatedAt:K.updatedAt}))}async searchLongTermMemories(J,Q,Y=5,W=0.7){if(!this.memoryConfig.longTermVectorSearchEnabled)return H.warn("Vector search is not enabled, falling back to recent memories"),this.getLongTermMemories(J,void 0,Y);let K=this.getDb();try{let Z=Q.map((_)=>Number.isFinite(_)?Number(_.toFixed(6)):0),$=jJ`1 - (${yJ(X.embedding,Z)})`,U=[D(X.agentId,this.runtime.agentId),D(X.entityId,J),jJ`${X.embedding} IS NOT NULL`];if(W>0)U.push(lJ($,W));return(await K.select({memory:X,similarity:$}).from(X).where(g(...U)).orderBy(p($)).limit(Y)).map((_)=>({id:_.memory.id,agentId:_.memory.agentId,entityId:_.memory.entityId,category:_.memory.category,content:_.memory.content,metadata:_.memory.metadata,embedding:_.memory.embedding,confidence:_.memory.confidence,source:_.memory.source,createdAt:_.memory.createdAt,updatedAt:_.memory.updatedAt,lastAccessedAt:_.memory.lastAccessedAt,accessCount:_.memory.accessCount,similarity:_.similarity}))}catch(Z){return H.warn({error:Z},"Vector search failed, falling back to recent memories"),this.getLongTermMemories(J,void 0,Y)}}async getFormattedLongTermMemories(J){let Q=await this.getLongTermMemories(J,void 0,20);if(Q.length===0)return"";let Y=new Map;for(let K of Q){if(!Y.has(K.category))Y.set(K.category,[]);Y.get(K.category)?.push(K)}let W=[];for(let[K,Z]of Y.entries()){let $=K.split("_").map((V)=>V.charAt(0).toUpperCase()+V.slice(1)).join(" "),U=Z.map((V)=>`- ${V.content}`).join(`
|
|
2
2
|
`);W.push(`**${$}**:
|
|
3
3
|
${U}`)}return W.join(`
|
|
4
4
|
|
|
5
|
-
`)}}import{logger as R,ModelType as cJ,composePromptFromState as
|
|
5
|
+
`)}}import{logger as R,ModelType as cJ,composePromptFromState as BJ}from"@elizaos/core";var dJ=`# Task: Summarize Conversation
|
|
6
6
|
|
|
7
7
|
You are analyzing a conversation to create a concise summary that captures the key points, topics, and important details.
|
|
8
8
|
|
|
@@ -62,8 +62,8 @@ Respond in this XML format:
|
|
|
62
62
|
<point>First key point</point>
|
|
63
63
|
<point>Second key point</point>
|
|
64
64
|
</keyPoints>
|
|
65
|
-
</summary>`;function gJ(J){let Q=J.match(/<text>([\s\S]*?)<\/text>/),Y=J.match(/<topics>([\s\S]*?)<\/topics>/),W=J.matchAll(/<point>([\s\S]*?)<\/point>/g),K=Q?Q[1].trim():"Summary not available",Z=Y?Y[1].split(",").map((U)=>U.trim()).filter(Boolean):[],$=Array.from(W).map((U)=>U[1].trim());return{summary:K,topics:Z,keyPoints:$}}var
|
|
66
|
-
`),
|
|
65
|
+
</summary>`;function gJ(J){let Q=J.match(/<text>([\s\S]*?)<\/text>/),Y=J.match(/<topics>([\s\S]*?)<\/topics>/),W=J.matchAll(/<point>([\s\S]*?)<\/point>/g),K=Q?Q[1].trim():"Summary not available",Z=Y?Y[1].split(",").map((U)=>U.trim()).filter(Boolean):[],$=Array.from(W).map((U)=>U[1].trim());return{summary:K,topics:Z,keyPoints:$}}var OJ={name:"MEMORY_SUMMARIZATION",description:"Automatically summarizes conversations to optimize context usage",similes:["CONVERSATION_SUMMARY","CONTEXT_COMPRESSION","MEMORY_OPTIMIZATION"],alwaysRun:!0,validate:async(J,Q)=>{if(!Q.content?.text)return R.debug("Skipping summarization: no message text"),!1;let Y=J.getService("memory");if(!Y)return R.debug("Skipping summarization: memory service not available"),!1;let W=Y.getConfig(),K=await J.countMemories(Q.roomId,!1,"messages"),Z=K>=W.shortTermSummarizationThreshold;return R.debug({roomId:Q.roomId,currentMessageCount:K,threshold:W.shortTermSummarizationThreshold,shouldSummarize:Z},"Summarization validation check"),Z},handler:async(J,Q)=>{let Y=J.getService("memory");if(!Y){R.error("MemoryService not found");return}let W=Y.getConfig(),{roomId:K}=Q;try{R.info(`Starting summarization for room ${K}`);let Z=await Y.getCurrentSessionSummary(K),$=Z?.lastMessageOffset||0,U=await J.countMemories(K,!1,"messages"),V=await J.getMemories({tableName:"messages",roomId:K,count:W.shortTermSummarizationThreshold,unique:!1,start:$});if(V.length===0){R.debug("No new messages to summarize");return}let _=V.sort((C,z)=>(C.createdAt||0)-(z.createdAt||0)),B=_.map((C)=>{return`${C.entityId===J.agentId?J.character.name:"User"}: ${C.content.text||"[non-text message]"}`}).join(`
|
|
66
|
+
`),O=await J.composeState(Q),k,G;if(Z)G=uJ,k=BJ({state:{...O,existingSummary:Z.summary,existingTopics:Z.topics?.join(", ")||"None",newMessages:B},template:G});else G=dJ,k=BJ({state:{...O,recentMessages:B},template:G});let j=await J.useModel(cJ.TEXT_LARGE,{prompt:k,maxTokens:W.summaryMaxTokens||2500}),A=gJ(j);R.info(`${Z?"Updated":"Generated"} summary: ${A.summary.substring(0,100)}...`);let N=U,F=_[0],E=_[_.length-1],b=Z?Z.startTime:F?.createdAt&&F.createdAt>0?new Date(F.createdAt):new Date,h=E?.createdAt&&E.createdAt>0?new Date(E.createdAt):new Date;if(Z)await Y.updateSessionSummary(Z.id,{summary:A.summary,messageCount:Z.messageCount+_.length,lastMessageOffset:N,endTime:h,topics:A.topics,metadata:{keyPoints:A.keyPoints}}),R.info(`Updated summary for room ${K}: ${_.length} new messages processed (offset: ${$} → ${N})`);else await Y.storeSessionSummary({agentId:J.agentId,roomId:K,entityId:Q.entityId!==J.agentId?Q.entityId:void 0,summary:A.summary,messageCount:_.length,lastMessageOffset:N,startTime:b,endTime:h,topics:A.topics,metadata:{keyPoints:A.keyPoints}}),R.info(`Created new summary for room ${K}: ${_.length} messages summarized (offset: 0 → ${N})`)}catch(Z){R.error({error:Z},"Error during summarization:")}},examples:[]};import{logger as P,ModelType as iJ,composePromptFromState as nJ}from"@elizaos/core";var KJ;((_)=>{_.IDENTITY="identity";_.EXPERTISE="expertise";_.PROJECTS="projects";_.PREFERENCES="preferences";_.DATA_SOURCES="data_sources";_.GOALS="goals";_.CONSTRAINTS="constraints";_.DEFINITIONS="definitions";_.BEHAVIORAL_PATTERNS="behavioral_patterns"})(KJ||={});var aJ=`# Task: Extract Long-Term Memory
|
|
67
67
|
|
|
68
68
|
You are analyzing a conversation to extract facts that should be remembered long-term about the user.
|
|
69
69
|
|
|
@@ -105,18 +105,18 @@ Respond in this XML format:
|
|
|
105
105
|
<content>Prefers code examples over lengthy explanations</content>
|
|
106
106
|
<confidence>0.85</confidence>
|
|
107
107
|
</memory>
|
|
108
|
-
</memories>`;function oJ(J){let Q=J.matchAll(/<memory>[\s\S]*?<category>(.*?)<\/category>[\s\S]*?<content>(.*?)<\/content>[\s\S]*?<confidence>(.*?)<\/confidence>[\s\S]*?<\/memory>/g),Y=[];for(let W of Q){let K=W[1].trim(),Z=W[2].trim(),$=parseFloat(W[3].trim());if(!Object.values(
|
|
108
|
+
</memories>`;function oJ(J){let Q=J.matchAll(/<memory>[\s\S]*?<category>(.*?)<\/category>[\s\S]*?<content>(.*?)<\/content>[\s\S]*?<confidence>(.*?)<\/confidence>[\s\S]*?<\/memory>/g),Y=[];for(let W of Q){let K=W[1].trim(),Z=W[2].trim(),$=parseFloat(W[3].trim());if(!Object.values(KJ).includes(K)){P.warn(`Invalid memory category: ${K}`);continue}if(Z&&!isNaN($))Y.push({category:K,content:Z,confidence:$})}return Y}var NJ={name:"LONG_TERM_MEMORY_EXTRACTION",description:"Extracts long-term facts about users from conversations",similes:["MEMORY_EXTRACTION","FACT_LEARNING","USER_PROFILING"],alwaysRun:!0,validate:async(J,Q)=>{if(P.debug(`Validating long-term memory extraction for message: ${Q.content?.text}`),Q.entityId===J.agentId)return P.debug("Skipping long-term memory extraction for agent's own message"),!1;if(!Q.content?.text)return P.debug("Skipping long-term memory extraction for message without text"),!1;let Y=J.getService("memory");if(!Y)return P.debug("MemoryService not found"),!1;if(!Y.getConfig().longTermExtractionEnabled)return P.debug("Long-term memory extraction is disabled"),!1;let K=await J.countMemories(Q.roomId,!1,"messages"),Z=await Y.shouldRunExtraction(Q.entityId,Q.roomId,K);return P.debug(`Should run extraction: ${Z}`),Z},handler:async(J,Q)=>{let Y=J.getService("memory");if(!Y){P.error("MemoryService not found");return}let W=Y.getConfig(),{entityId:K,roomId:Z}=Q;try{P.info(`Extracting long-term memories for entity ${K}`);let U=(await J.getMemories({tableName:"messages",roomId:Z,count:20,unique:!1})).sort((A,N)=>(A.createdAt||0)-(N.createdAt||0)).map((A)=>{return`${A.entityId===J.agentId?J.character.name:"User"}: ${A.content.text||"[non-text message]"}`}).join(`
|
|
109
109
|
`),V=await Y.getLongTermMemories(K,void 0,30),_=V.length>0?V.map((A)=>`[${A.category}] ${A.content} (confidence: ${A.confidence})`).join(`
|
|
110
|
-
`):"None yet",
|
|
111
|
-
`);return`**Action Run ${
|
|
112
|
-
${
|
|
110
|
+
`):"None yet",B=await J.composeState(Q),O=nJ({state:{...B,recentMessages:U,existingMemories:_},template:aJ}),k=await J.useModel(iJ.TEXT_LARGE,{prompt:O}),G=oJ(k);P.info(`Extracted ${G.length} long-term memories`);for(let A of G)if(A.confidence>=W.longTermConfidenceThreshold)await Y.storeLongTermMemory({agentId:J.agentId,entityId:K,category:A.category,content:A.content,confidence:A.confidence,source:"conversation",metadata:{roomId:Z,extractedAt:new Date().toISOString()}}),P.info(`Stored long-term memory: [${A.category}] ${A.content.substring(0,50)}...`);else P.debug(`Skipped low-confidence memory: ${A.content} (confidence: ${A.confidence})`);let j=await J.countMemories(Z,!1,"messages");await Y.setLastExtractionCheckpoint(K,Z,j),P.debug(`Updated extraction checkpoint to ${j} for entity ${K} in room ${Z}`)}catch($){P.error({error:$},"Error during long-term memory extraction:")}},examples:[]};import{addHeader as f,ChannelType as i,formatMessages as QJ,formatPosts as FJ,getEntityDetails as EJ,logger as mJ}from"@elizaos/core";var kJ={name:"SHORT_TERM_MEMORY",description:"Adaptive conversation context with smart summarization",position:95,get:async(J,Q,Y)=>{try{let W=J.getService("memory");if(!W)return{data:{summaries:[],recentMessages:[],mode:"disabled"},values:{},text:""};let{roomId:K}=Q,Z=W.getConfig();if(await J.countMemories(K,!1,"messages")<Z.shortTermSummarizationThreshold){let U=J.getConversationLength(),[V,_,B]=await Promise.all([EJ({runtime:J,roomId:K}),J.getRoom(K),J.getMemories({tableName:"messages",roomId:K,count:U,unique:!1})]),O=B.filter((L)=>L.content?.type==="action_result"&&L.metadata?.type==="action_result"),k=B.filter((L)=>!(L.content?.type==="action_result"&&L.metadata?.type==="action_result")),G=_?.type?_.type===i.FEED||_.type===i.THREAD:!1,[j,A]=await Promise.all([QJ({messages:k,entities:V}),FJ({messages:k,entities:V,conversationHeader:!1})]),N="";if(O.length>0){let L=new Map;for(let S of O){let v=String(S.content?.runId||"unknown");if(!L.has(v))L.set(v,[]);L.get(v)?.push(S)}let x=Array.from(L.entries()).slice(-3).map(([S,v])=>{let WJ=v.sort((I,M)=>(I.createdAt||0)-(M.createdAt||0)),YJ=WJ[0]?.content?.planThought||"",HJ=WJ.map((I)=>{let M=I.content?.actionName||"Unknown",PJ=I.content?.actionStatus||"unknown",ZJ=I.content?.planStep||"",o=I.content?.text||"",_J=I.content?.error||"",y=` - ${M} (${PJ})`;if(ZJ)y+=` [${ZJ}]`;if(_J)y+=`: Error - ${_J}`;else if(o&&o!==`Executed action: ${M}`)y+=`: ${o}`;return y}).join(`
|
|
111
|
+
`);return`**Action Run ${S.slice(0,8)}**${YJ?` - "${YJ}"`:""}
|
|
112
|
+
${HJ}`}).join(`
|
|
113
113
|
|
|
114
|
-
`);N=
|
|
114
|
+
`);N=x?f("# Recent Action Executions",x):""}let F=A&&A.length>0?f("# Posts in Thread",A):"",E=j&&j.length>0?f("# Conversation Messages",j):"";if(!F&&!E&&k.length===0&&!Q.content.text)return{data:{summaries:[],recentMessages:[],actionResults:[],mode:"full_conversation"},values:{recentMessage:"No recent message available."},text:"No recent messages available"};let b="No recent message available.";if(k.length>0){let L=[...k].sort((S,v)=>(v.createdAt||0)-(S.createdAt||0))[0],x=QJ({messages:[L],entities:V});if(x)b=x}let h=Q.metadata,C=V.find((L)=>L.id===Q.entityId)?.names[0]||h?.entityName||"Unknown User",z=Q.content.text,T=!!z?.trim(),n=T?f("# Received Message",`${C}: ${z}`):"",a=T?f("# Focus your response",`You are replying to the above message from **${C}**. Keep your answer relevant to that message. Do not repeat earlier replies unless the sender asks again.`):"",qJ=[G?F:E,N,E||F||Q.content.text?n:"",E||F||Q.content.text?a:""].filter(Boolean).join(`
|
|
115
115
|
|
|
116
|
-
`);return{data:{summaries:[],recentMessages:
|
|
117
|
-
`,
|
|
118
|
-
*Topics: ${U.topics.join(", ")}*`;
|
|
116
|
+
`);return{data:{summaries:[],recentMessages:k,actionResults:O,mode:"full_conversation"},values:{...(G?F:E)&&{recentMessages:G?F:E},...F&&{recentPosts:F},...N&&{recentActionResults:N},...b&&{recentMessage:b},...n&&{receivedMessageHeader:n},...a&&{focusHeader:a}},text:qJ}}else{let U=await W.getCurrentSessionSummary(K),V=U?.lastMessageOffset||0,_=await J.getMemories({tableName:"messages",roomId:K,count:Z.shortTermRetainRecent,unique:!1,start:V}),B=await EJ({runtime:J,roomId:K}),O=await J.getRoom(K),k=O?.type?O.type===i.FEED||O.type===i.THREAD:!1,G="";if(_.length>0){let z=_.filter((T)=>!(T.content?.type==="action_result"&&T.metadata?.type==="action_result"));if(k)G=FJ({messages:z,entities:B,conversationHeader:!1});else G=QJ({messages:z,entities:B});if(G)G=f("# Recent Messages",G)}let j="";if(U){let z=`${U.messageCount} messages`,T=new Date(U.startTime).toLocaleDateString();if(j=`**Previous Conversation** (${z}, ${T})
|
|
117
|
+
`,j+=U.summary,U.topics&&U.topics.length>0)j+=`
|
|
118
|
+
*Topics: ${U.topics.join(", ")}*`;j=f("# Conversation Summary",j)}let A=Q.metadata,N=B.find((z)=>z.id===Q.entityId)?.names[0]||A?.entityName||"Unknown User",F=Q.content.text,E=!!F?.trim(),b=E?f("# Received Message",`${N}: ${F}`):"",h=E?f("# Focus your response",`You are replying to the above message from **${N}**. Keep your answer relevant to that message.`):"",C=[j,G,E?b:"",E?h:""].filter(Boolean).join(`
|
|
119
119
|
|
|
120
|
-
`);return{data:{summaries:U?[U]:[],recentMessages:_,mode:"summarized"},values:{sessionSummaries:
|
|
120
|
+
`);return{data:{summaries:U?[U]:[],recentMessages:_,mode:"summarized"},values:{...j&&{sessionSummaries:j},...G&&{recentMessages:G},...b&&{receivedMessageHeader:b},...h&&{focusHeader:h}},text:C}}}catch(W){return mJ.error({error:W},"Error in shortTermMemoryProvider:"),{data:{summaries:[],recentMessages:[],mode:"error"},values:{},text:"Error retrieving conversation context."}}}};import{logger as sJ,addHeader as tJ}from"@elizaos/core";var LJ={name:"LONG_TERM_MEMORY",description:"Persistent facts and preferences about the user",position:50,get:async(J,Q,Y)=>{try{let W=J.getService("memory");if(!W)return{data:{memories:[]},values:{longTermMemories:""},text:""};let{entityId:K}=Q;if(K===J.agentId)return{data:{memories:[]},values:{longTermMemories:""},text:""};let Z=await W.getLongTermMemories(K,void 0,25);if(Z.length===0)return{data:{memories:[]},values:{longTermMemories:""},text:""};let $=await W.getFormattedLongTermMemories(K),U=tJ("# What I Know About You",$),V=new Map;for(let B of Z){let O=V.get(B.category)||0;V.set(B.category,O+1)}let _=Array.from(V.entries()).map(([B,O])=>`${B}: ${O}`).join(", ");return{data:{memories:Z,categoryCounts:Object.fromEntries(V)},values:{longTermMemories:U,memoryCategories:_},text:U}}catch(W){return sJ.error({error:W},"Error in longTermMemoryProvider:"),{data:{memories:[]},values:{longTermMemories:""},text:""}}}};var rJ={name:"memory",description:"Advanced memory management with conversation summarization and long-term persistent memory",services:[w],evaluators:[OJ,NJ],providers:[LJ,kJ],schema:JJ},eJ=rJ;export{q as sessionSummaries,rJ as memoryPlugin,XJ as memoryAccessLogs,X as longTermMemories,eJ as default,w as MemoryService,KJ as LongTermMemoryCategory};
|
|
121
121
|
|
|
122
|
-
//# debugId=
|
|
122
|
+
//# debugId=480869ED6980B15B64756E2164756E21
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"import {\n type IAgentRuntime,\n type Memory,\n type Evaluator,\n logger,\n ModelType,\n composePromptFromState,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\nimport type { SummaryResult } from '../types/index';\n\n/**\n * Template for generating initial conversation summary\n */\nconst initialSummarizationTemplate = `# Task: Summarize Conversation\n\nYou are analyzing a conversation to create a concise summary that captures the key points, topics, and important details.\n\n# Recent Messages\n{{recentMessages}}\n\n# Instructions\nGenerate a summary that:\n1. Captures the main topics discussed\n2. Highlights key information shared\n3. Notes any decisions made or questions asked\n4. Maintains context for future reference\n5. Is concise but comprehensive\n\n**IMPORTANT**: Keep the summary under 2500 tokens. Be comprehensive but concise.\n\nAlso extract:\n- **Topics**: List of main topics discussed (comma-separated)\n- **Key Points**: Important facts or decisions (bullet points)\n\nRespond in this XML format:\n<summary>\n <text>Your comprehensive summary here</text>\n <topics>topic1, topic2, topic3</topics>\n <keyPoints>\n <point>First key point</point>\n <point>Second key point</point>\n </keyPoints>\n</summary>`;\n\n/**\n * Template for updating/condensing an existing summary\n */\nconst updateSummarizationTemplate = `# Task: Update and Condense Conversation Summary\n\nYou are updating an existing conversation summary with new messages, while keeping the total summary concise.\n\n# Existing Summary\n{{existingSummary}}\n\n# Existing Topics\n{{existingTopics}}\n\n# New Messages Since Last Summary\n{{newMessages}}\n\n# Instructions\nUpdate the summary by:\n1. Merging the existing summary with insights from the new messages\n2. Removing redundant or less important details to stay under the token limit\n3. Keeping the most important context and decisions\n4. Adding new topics if they emerge\n5. **CRITICAL**: Keep the ENTIRE updated summary under 2500 tokens\n\nThe goal is a rolling summary that captures the essence of the conversation without growing indefinitely.\n\nRespond in this XML format:\n<summary>\n <text>Your updated and condensed summary here</text>\n <topics>topic1, topic2, topic3</topics>\n <keyPoints>\n <point>First key point</point>\n <point>Second key point</point>\n </keyPoints>\n</summary>`;\n\n/**\n * Parse XML summary response\n */\nfunction parseSummaryXML(xml: string): SummaryResult {\n const summaryMatch = xml.match(/<text>([\\s\\S]*?)<\\/text>/);\n const topicsMatch = xml.match(/<topics>([\\s\\S]*?)<\\/topics>/);\n const keyPointsMatches = xml.matchAll(/<point>([\\s\\S]*?)<\\/point>/g);\n\n const summary = summaryMatch ? summaryMatch[1].trim() : 'Summary not available';\n const topics = topicsMatch\n ? topicsMatch[1]\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean)\n : [];\n const keyPoints = Array.from(keyPointsMatches).map((match) => match[1].trim());\n\n return { summary, topics, keyPoints };\n}\n\n/**\n * Short-term Memory Summarization Evaluator\n *\n * Automatically generates and updates conversation summaries when conversations\n * exceed the configured threshold (default: 5 messages).\n *\n * BEHAVIOR:\n * - Monitors message count per room\n * - Triggers when count >= threshold\n * - Creates initial summary for first batch of messages\n * - Updates/condenses existing summary as conversation continues\n * - Tracks offset to know which messages have been summarized\n *\n * INTEGRATION:\n * Works with shortTermMemoryProvider which:\n * - Shows full conversation when < threshold (no summarization needed)\n * - Shows summaries + recent messages when >= threshold (optimized context)\n *\n * This creates an adaptive system that starts with full context and seamlessly\n * transitions to summarization as conversations grow.\n */\nexport const summarizationEvaluator: Evaluator = {\n name: 'MEMORY_SUMMARIZATION',\n description: 'Automatically summarizes conversations to optimize context usage',\n similes: ['CONVERSATION_SUMMARY', 'CONTEXT_COMPRESSION', 'MEMORY_OPTIMIZATION'],\n alwaysRun: true,\n\n validate: async (runtime: IAgentRuntime, message: Memory): Promise<boolean> => {\n // Only run after actual messages (not during generation or on empty messages)\n if (!message.content?.text) {\n logger.debug('Skipping summarization: no message text');\n return false;\n }\n\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n logger.debug('Skipping summarization: memory service not available');\n return false;\n }\n\n const config = memoryService.getConfig();\n const currentMessageCount = await runtime.countMemories(message.roomId, false, 'messages');\n\n // Only summarize when we've reached the threshold\n // Before this, shortTermMemoryProvider shows full conversation\n const shouldSummarize = currentMessageCount >= config.shortTermSummarizationThreshold;\n\n logger.debug(\n {\n roomId: message.roomId,\n currentMessageCount,\n threshold: config.shortTermSummarizationThreshold,\n shouldSummarize,\n },\n 'Summarization validation check'\n );\n\n return shouldSummarize;\n },\n\n handler: async (runtime: IAgentRuntime, message: Memory): Promise<void> => {\n const memoryService = runtime.getService('memory') as MemoryService;\n if (!memoryService) {\n logger.error('MemoryService not found');\n return;\n }\n\n const config = memoryService.getConfig();\n const { roomId } = message;\n\n try {\n logger.info(`Starting summarization for room ${roomId}`);\n\n // Get the current summary (if any)\n const existingSummary = await memoryService.getCurrentSessionSummary(roomId);\n const lastOffset = existingSummary?.lastMessageOffset || 0;\n\n // Get total message count\n const totalMessageCount = await runtime.countMemories(roomId, false, 'messages');\n\n // Get new messages since last offset\n const newMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: config.shortTermSummarizationThreshold,\n unique: false,\n start: lastOffset,\n });\n\n if (newMessages.length === 0) {\n logger.debug('No new messages to summarize');\n return;\n }\n\n // Sort by timestamp\n const sortedMessages = newMessages.sort((a, b) => (a.createdAt || 0) - (b.createdAt || 0));\n\n // Format messages for summarization\n const formattedMessages = sortedMessages\n .map((msg) => {\n const sender = msg.entityId === runtime.agentId ? runtime.character.name : 'User';\n return `${sender}: ${msg.content.text || '[non-text message]'}`;\n })\n .join('\\n');\n\n // Generate or update summary using LLM\n const state = await runtime.composeState(message);\n let prompt: string;\n let template: string;\n\n if (existingSummary) {\n // Update existing summary\n template = updateSummarizationTemplate;\n prompt = composePromptFromState({\n state: {\n ...state,\n existingSummary: existingSummary.summary,\n existingTopics: existingSummary.topics?.join(', ') || 'None',\n newMessages: formattedMessages,\n },\n template,\n });\n } else {\n // Create initial summary\n template = initialSummarizationTemplate;\n prompt = composePromptFromState({\n state: {\n ...state,\n recentMessages: formattedMessages,\n },\n template,\n });\n }\n\n const response = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt,\n maxTokens: config.summaryMaxTokens || 2500,\n });\n\n const summaryResult = parseSummaryXML(response);\n\n logger.info(\n `${existingSummary ? 'Updated' : 'Generated'} summary: ${summaryResult.summary.substring(0, 100)}...`\n );\n\n // Calculate new offset (current total)\n const newOffset = totalMessageCount;\n\n // Get timing info\n const firstMessage = sortedMessages[0];\n const lastMessage = sortedMessages[sortedMessages.length - 1];\n\n const startTime = existingSummary\n ? existingSummary.startTime\n : firstMessage?.createdAt && firstMessage.createdAt > 0\n ? new Date(firstMessage.createdAt)\n : new Date();\n const endTime =\n lastMessage?.createdAt && lastMessage.createdAt > 0\n ? new Date(lastMessage.createdAt)\n : new Date();\n\n if (existingSummary) {\n // Update existing summary\n await memoryService.updateSessionSummary(existingSummary.id, {\n summary: summaryResult.summary,\n messageCount: existingSummary.messageCount + sortedMessages.length,\n lastMessageOffset: newOffset,\n endTime,\n topics: summaryResult.topics,\n metadata: {\n keyPoints: summaryResult.keyPoints,\n },\n });\n\n logger.info(\n `Updated summary for room ${roomId}: ${sortedMessages.length} new messages processed (offset: ${lastOffset} → ${newOffset})`\n );\n } else {\n // Create new summary\n await memoryService.storeSessionSummary({\n agentId: runtime.agentId,\n roomId,\n entityId: message.entityId !== runtime.agentId ? message.entityId : undefined,\n summary: summaryResult.summary,\n messageCount: sortedMessages.length,\n lastMessageOffset: newOffset,\n startTime,\n endTime,\n topics: summaryResult.topics,\n metadata: {\n keyPoints: summaryResult.keyPoints,\n },\n });\n\n logger.info(\n `Created new summary for room ${roomId}: ${sortedMessages.length} messages summarized (offset: 0 → ${newOffset})`\n );\n }\n\n // Note: We do NOT delete messages - they stay in the database\n // The offset tracks what's been summarized\n } catch (error) {\n logger.error({ error }, 'Error during summarization:');\n }\n },\n\n examples: [],\n};\n",
|
|
10
10
|
"import {\n type IAgentRuntime,\n type Memory,\n type Evaluator,\n logger,\n ModelType,\n composePromptFromState,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\nimport { LongTermMemoryCategory, type MemoryExtraction } from '../types/index';\n\n/**\n * Template for extracting long-term memories\n */\nconst extractionTemplate = `# Task: Extract Long-Term Memory\n\nYou are analyzing a conversation to extract facts that should be remembered long-term about the user.\n\n# Recent Messages\n{{recentMessages}}\n\n# Current Long-Term Memories\n{{existingMemories}}\n\n# Memory Categories\n1. **identity**: User's name, role, identity (e.g., \"I'm a data scientist\")\n2. **expertise**: User's skills, knowledge domains, or unfamiliarity with topics\n3. **projects**: Ongoing projects, past interactions, recurring topics\n4. **preferences**: Communication style, format preferences, verbosity, etc.\n5. **data_sources**: Frequently used files, databases, APIs\n6. **goals**: Broader intentions (e.g., \"preparing for interview\")\n7. **constraints**: User-defined rules or limitations\n8. **definitions**: Custom terms, acronyms, glossaries\n9. **behavioral_patterns**: How the user tends to interact\n\n# Instructions\nExtract any NEW information that should be remembered long-term. For each item:\n- Determine which category it belongs to\n- Write a clear, factual statement\n- Assess confidence (0.0 to 1.0)\n- Only include information explicitly stated or strongly implied\n\nIf there are no new long-term facts to extract, respond with <memories></memories>\n\nRespond in this XML format:\n<memories>\n <memory>\n <category>identity</category>\n <content>User is a software engineer specializing in backend development</content>\n <confidence>0.95</confidence>\n </memory>\n <memory>\n <category>preferences</category>\n <content>Prefers code examples over lengthy explanations</content>\n <confidence>0.85</confidence>\n </memory>\n</memories>`;\n\n/**\n * Parse XML memory extraction response\n */\nfunction parseMemoryExtractionXML(xml: string): MemoryExtraction[] {\n const memoryMatches = xml.matchAll(\n /<memory>[\\s\\S]*?<category>(.*?)<\\/category>[\\s\\S]*?<content>(.*?)<\\/content>[\\s\\S]*?<confidence>(.*?)<\\/confidence>[\\s\\S]*?<\\/memory>/g\n );\n\n const extractions: MemoryExtraction[] = [];\n\n for (const match of memoryMatches) {\n const category = match[1].trim() as LongTermMemoryCategory;\n const content = match[2].trim();\n const confidence = parseFloat(match[3].trim());\n\n // Validate category\n if (!Object.values(LongTermMemoryCategory).includes(category)) {\n logger.warn(`Invalid memory category: ${category}`);\n continue;\n }\n\n if (content && !isNaN(confidence)) {\n extractions.push({ category, content, confidence });\n }\n }\n\n return extractions;\n}\n\n/**\n * Long-term Memory Extraction Evaluator\n *\n * Analyzes conversations to extract persistent facts about users that should be remembered\n * across all future conversations.\n */\nexport const longTermExtractionEvaluator: Evaluator = {\n name: 'LONG_TERM_MEMORY_EXTRACTION',\n description: 'Extracts long-term facts about users from conversations',\n similes: ['MEMORY_EXTRACTION', 'FACT_LEARNING', 'USER_PROFILING'],\n alwaysRun: true,\n\n validate: async (runtime: IAgentRuntime, message: Memory): Promise<boolean> => {\n logger.debug(`Validating long-term memory extraction for message: ${message.content?.text}`);\n // Only run on user messages (not agent's own)\n if (message.entityId === runtime.agentId) {\n logger.debug(\"Skipping long-term memory extraction for agent's own message\");\n return false;\n }\n\n if (!message.content?.text) {\n logger.debug('Skipping long-term memory extraction for message without text');\n return false;\n }\n\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n logger.debug('MemoryService not found');\n return false;\n }\n\n const config = memoryService.getConfig();\n if (!config.longTermExtractionEnabled) {\n logger.debug('Long-term memory extraction is disabled');\n return false;\n }\n\n // Count total messages from this entity in this room\n const currentMessageCount = await runtime.countMemories(message.roomId, false, 'messages');\n\n const shouldRun = await memoryService.shouldRunExtraction(\n message.entityId,\n message.roomId,\n currentMessageCount\n );\n logger.debug(`Should run extraction: ${shouldRun}`);\n return shouldRun;\n },\n\n handler: async (runtime: IAgentRuntime, message: Memory): Promise<void> => {\n const memoryService = runtime.getService('memory') as MemoryService;\n if (!memoryService) {\n logger.error('MemoryService not found');\n return;\n }\n\n const config = memoryService.getConfig();\n const { entityId, roomId } = message;\n\n try {\n logger.info(`Extracting long-term memories for entity ${entityId}`);\n\n // Get recent conversation context\n const recentMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: 20,\n unique: false,\n });\n\n const formattedMessages = recentMessages\n .sort((a, b) => (a.createdAt || 0) - (b.createdAt || 0))\n .map((msg) => {\n const sender = msg.entityId === runtime.agentId ? runtime.character.name : 'User';\n return `${sender}: ${msg.content.text || '[non-text message]'}`;\n })\n .join('\\n');\n\n // Get existing long-term memories\n const existingMemories = await memoryService.getLongTermMemories(entityId, undefined, 30);\n const formattedExisting =\n existingMemories.length > 0\n ? existingMemories\n .map((m) => `[${m.category}] ${m.content} (confidence: ${m.confidence})`)\n .join('\\n')\n : 'None yet';\n\n // Generate extraction using LLM\n const state = await runtime.composeState(message);\n const prompt = composePromptFromState({\n state: {\n ...state,\n recentMessages: formattedMessages,\n existingMemories: formattedExisting,\n },\n template: extractionTemplate,\n });\n\n const response = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt,\n });\n\n const extractions = parseMemoryExtractionXML(response);\n\n logger.info(`Extracted ${extractions.length} long-term memories`);\n\n // Store each extracted memory\n for (const extraction of extractions) {\n if (extraction.confidence >= config.longTermConfidenceThreshold) {\n await memoryService.storeLongTermMemory({\n agentId: runtime.agentId,\n entityId,\n category: extraction.category,\n content: extraction.content,\n confidence: extraction.confidence,\n source: 'conversation',\n metadata: {\n roomId,\n extractedAt: new Date().toISOString(),\n },\n });\n\n logger.info(\n `Stored long-term memory: [${extraction.category}] ${extraction.content.substring(0, 50)}...`\n );\n } else {\n logger.debug(\n `Skipped low-confidence memory: ${extraction.content} (confidence: ${extraction.confidence})`\n );\n }\n }\n\n // Update the extraction checkpoint after successful extraction\n const currentMessageCount = await runtime.countMemories(roomId, false, 'messages');\n await memoryService.setLastExtractionCheckpoint(entityId, roomId, currentMessageCount);\n logger.debug(\n `Updated extraction checkpoint to ${currentMessageCount} for entity ${entityId} in room ${roomId}`\n );\n } catch (error) {\n logger.error({ error }, 'Error during long-term memory extraction:');\n }\n },\n\n examples: [],\n};\n",
|
|
11
11
|
"import type { UUID } from '@elizaos/core';\n\n/**\n * Categories of long-term memory\n */\nexport enum LongTermMemoryCategory {\n IDENTITY = 'identity', // User identity, name, roles\n EXPERTISE = 'expertise', // Domain knowledge and familiarity\n PROJECTS = 'projects', // Past interactions and recurring topics\n PREFERENCES = 'preferences', // User preferences for interaction style\n DATA_SOURCES = 'data_sources', // Frequently used files, databases, APIs\n GOALS = 'goals', // User's broader intentions and objectives\n CONSTRAINTS = 'constraints', // User-defined rules and limitations\n DEFINITIONS = 'definitions', // Custom terms, acronyms, glossaries\n BEHAVIORAL_PATTERNS = 'behavioral_patterns', // User interaction patterns\n}\n\n/**\n * Long-term memory entry\n */\nexport interface LongTermMemory {\n id: UUID;\n agentId: UUID;\n entityId: UUID; // The user/entity this memory is about\n category: LongTermMemoryCategory;\n content: string; // The actual memory content\n metadata?: Record<string, unknown>; // Additional structured data\n embedding?: number[]; // Vector embedding for semantic search\n confidence?: number; // Confidence score (0-1)\n source?: string; // Where this memory came from (conversation, manual, etc.)\n createdAt: Date;\n updatedAt: Date;\n lastAccessedAt?: Date;\n accessCount?: number;\n similarity?: number; // Optional similarity score from vector search\n}\n\n/**\n * Short-term memory session summary\n */\nexport interface SessionSummary {\n id: UUID;\n agentId: UUID;\n roomId: UUID;\n entityId?: UUID; // Optional: specific user in the session\n summary: string; // The summarized conversation\n messageCount: number; // Number of messages summarized\n lastMessageOffset: number; // Index of last summarized message (for pagination)\n startTime: Date; // Timestamp of first message\n endTime: Date; // Timestamp of last message\n topics?: string[]; // Main topics discussed\n metadata?: Record<string, unknown>;\n embedding?: number[]; // Vector embedding of the summary\n createdAt: Date;\n updatedAt: Date; // Track when summary was last updated\n}\n\n/**\n * Configuration for memory plugin\n */\nexport interface MemoryConfig {\n // Short-term memory settings\n shortTermSummarizationThreshold: number; // Messages count before summarization\n shortTermRetainRecent: number; // Number of recent messages to keep after summarization\n\n // Long-term memory settings\n longTermExtractionEnabled: boolean;\n longTermVectorSearchEnabled: boolean;\n longTermConfidenceThreshold: number; // Minimum confidence to store\n longTermExtractionInterval: number; // Run extraction every N messages (e.g., 5, 10, 15...)\n\n // Summarization settings\n summaryModelType?: string;\n summaryMaxTokens?: number;\n}\n\n/**\n * Memory extraction result from evaluator\n */\nexport interface MemoryExtraction {\n category: LongTermMemoryCategory;\n content: string;\n confidence: number;\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Summary generation result\n */\nexport interface SummaryResult {\n summary: string;\n topics: string[];\n keyPoints: string[];\n}\n",
|
|
12
|
-
"import {\n addHeader,\n ChannelType,\n CustomMetadata,\n formatMessages,\n formatPosts,\n getEntityDetails,\n type Entity,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type State,\n logger,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\n\n/**\n * Short-term Memory Provider\n *\n * Adaptive conversation context provider that optimizes based on conversation length:\n *\n * SHORT CONVERSATIONS (< threshold, default 5 messages):\n * - Shows full message history with complete context\n * - No summarization overhead for brief chats\n *\n * LONG CONVERSATIONS (>= threshold):\n * - Shows summaries of older conversation segments\n * - Shows recent unsummarized messages in full\n * - Optimizes context window while preserving information\n *\n * This provider can REPLACE recentMessagesProvider when plugin-memory is active,\n * providing superior context management for both short and long conversations.\n */\nexport const shortTermMemoryProvider: Provider = {\n name: 'SHORT_TERM_MEMORY',\n description: 'Adaptive conversation context with smart summarization',\n position: 95, // Run before recentMessagesProvider (100) to potentially replace it\n\n get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n try {\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n // No memory service - return empty\n return {\n data: { summaries: [], recentMessages: [], mode: 'disabled' },\n values: { sessionSummaries: '', recentMessages: '' },\n text: '',\n };\n }\n\n const { roomId } = message;\n const config = memoryService.getConfig();\n\n // Get total message count to determine mode\n const totalMessageCount = await runtime.countMemories(roomId, false, 'messages');\n\n // ADAPTIVE LOGIC: Use full messages for short conversations, summaries for long ones\n if (totalMessageCount < config.shortTermSummarizationThreshold) {\n // ========== SHORT CONVERSATION MODE ==========\n // Just show all messages - no summarization needed\n\n const conversationLength = runtime.getConversationLength();\n\n // Fetch all necessary data in parallel\n const [entitiesData, room, recentMessagesData] = await Promise.all([\n getEntityDetails({ runtime, roomId }),\n runtime.getRoom(roomId),\n runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: conversationLength,\n unique: false,\n }),\n ]);\n\n // Separate action results from dialogue messages\n const actionResultMessages = recentMessagesData.filter(\n (msg) => msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result'\n );\n\n const dialogueMessages = recentMessagesData.filter(\n (msg) =>\n !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n // Determine format based on room type\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Format messages in parallel\n const [formattedRecentMessages, formattedRecentPosts] = await Promise.all([\n formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n }),\n formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n }),\n ]);\n\n // Format action results if any\n let actionResultsText = '';\n if (actionResultMessages.length > 0) {\n const groupedByRun = new Map<string, Memory[]>();\n\n for (const mem of actionResultMessages) {\n const runId: string = String(mem.content?.runId || 'unknown');\n if (!groupedByRun.has(runId)) {\n groupedByRun.set(runId, []);\n }\n groupedByRun.get(runId)?.push(mem);\n }\n\n const formattedActionResults = Array.from(groupedByRun.entries())\n .slice(-3) // Show last 3 runs\n .map(([runId, memories]) => {\n const sortedMemories = memories.sort(\n (a: Memory, b: Memory) => (a.createdAt || 0) - (b.createdAt || 0)\n );\n\n const thought = sortedMemories[0]?.content?.planThought || '';\n const runText = sortedMemories\n .map((mem: Memory) => {\n const actionName = mem.content?.actionName || 'Unknown';\n const status = mem.content?.actionStatus || 'unknown';\n const planStep = mem.content?.planStep || '';\n const text = mem.content?.text || '';\n const error = mem.content?.error || '';\n\n let memText = ` - ${actionName} (${status})`;\n if (planStep) memText += ` [${planStep}]`;\n if (error) {\n memText += `: Error - ${error}`;\n } else if (text && text !== `Executed action: ${actionName}`) {\n memText += `: ${text}`;\n }\n\n return memText;\n })\n .join('\\n');\n\n return `**Action Run ${runId.slice(0, 8)}**${\n thought ? ` - \"${thought}\"` : ''\n }\\n${runText}`;\n })\n .join('\\n\\n');\n\n actionResultsText = formattedActionResults\n ? addHeader('# Recent Action Executions', formattedActionResults)\n : '';\n }\n\n // Create formatted text with headers\n const recentPosts =\n formattedRecentPosts && formattedRecentPosts.length > 0\n ? addHeader('# Posts in Thread', formattedRecentPosts)\n : '';\n\n const recentMessages =\n formattedRecentMessages && formattedRecentMessages.length > 0\n ? addHeader('# Conversation Messages', formattedRecentMessages)\n : '';\n\n // Handle empty conversation case\n if (\n !recentPosts &&\n !recentMessages &&\n dialogueMessages.length === 0 &&\n !message.content.text\n ) {\n return {\n data: {\n summaries: [],\n recentMessages: [],\n actionResults: [],\n mode: 'full_conversation',\n },\n values: {\n sessionSummaries: '',\n recentMessages: '',\n recentActionResults: '',\n },\n text: 'No recent messages available',\n };\n }\n\n // Get most recent message for context\n let recentMessage = 'No recent message available.';\n if (dialogueMessages.length > 0) {\n const mostRecentMessage = [...dialogueMessages].sort(\n (a, b) => (b.createdAt || 0) - (a.createdAt || 0)\n )[0];\n\n const formattedSingleMessage = formatMessages({\n messages: [mostRecentMessage],\n entities: entitiesData,\n });\n\n if (formattedSingleMessage) {\n recentMessage = formattedSingleMessage;\n }\n }\n\n // Build received message header\n const metaData = message.metadata as CustomMetadata;\n const senderName =\n entitiesData.find((entity: Entity) => entity.id === message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${senderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${senderName}**. Keep your answer relevant to that message. Do not repeat earlier replies unless the sender asks again.`\n )\n : '';\n\n // Combine all sections\n const text = [\n isPostFormat ? recentPosts : recentMessages,\n actionResultsText,\n recentMessages || recentPosts || message.content.text ? receivedMessageHeader : '',\n recentMessages || recentPosts || message.content.text ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n summaries: [],\n recentMessages: dialogueMessages,\n actionResults: actionResultMessages,\n mode: 'full_conversation',\n },\n values: {\n sessionSummaries: '',\n recentMessages: isPostFormat ? recentPosts : recentMessages,\n recentActionResults: actionResultsText,\n recentMessage,\n },\n text,\n };\n } else {\n // ========== LONG CONVERSATION MODE ==========\n // Use summaries + recent unsummarized messages\n\n const currentSummary = await memoryService.getCurrentSessionSummary(roomId);\n const lastOffset = currentSummary?.lastMessageOffset || 0;\n\n // Get recent unsummarized messages (after the last summary offset)\n const unsummarizedMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: config.shortTermRetainRecent,\n unique: false,\n start: lastOffset,\n });\n\n // Get entity details for formatting\n const entitiesData = await getEntityDetails({ runtime, roomId });\n const room = await runtime.getRoom(roomId);\n\n // Determine format\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Format unsummarized messages\n let recentMessagesText = '';\n if (unsummarizedMessages.length > 0) {\n const dialogueMessages = unsummarizedMessages.filter(\n (msg) =>\n !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n if (isPostFormat) {\n recentMessagesText = formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n });\n } else {\n recentMessagesText = formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n });\n }\n\n if (recentMessagesText) {\n recentMessagesText = addHeader('# Recent Messages', recentMessagesText);\n }\n }\n\n // Format summary\n let summaryText = '';\n if (currentSummary) {\n const messageRange = `${currentSummary.messageCount} messages`;\n const timeRange = new Date(currentSummary.startTime).toLocaleDateString();\n\n summaryText = `**Previous Conversation** (${messageRange}, ${timeRange})\\n`;\n summaryText += currentSummary.summary;\n\n if (currentSummary.topics && currentSummary.topics.length > 0) {\n summaryText += `\\n*Topics: ${currentSummary.topics.join(', ')}*`;\n }\n\n summaryText = addHeader('# Conversation Summary', summaryText);\n }\n\n // Build received message header\n const metaData = message.metadata as CustomMetadata;\n const senderName =\n entitiesData.find((entity: Entity) => entity.id === message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${senderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${senderName}**. Keep your answer relevant to that message.`\n )\n : '';\n\n // Combine sections\n const text = [\n summaryText,\n recentMessagesText,\n hasReceivedMessage ? receivedMessageHeader : '',\n hasReceivedMessage ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n summaries: currentSummary ? [currentSummary] : [],\n recentMessages: unsummarizedMessages,\n mode: 'summarized',\n },\n values: {\n sessionSummaries: summaryText,\n recentMessages: recentMessagesText,\n },\n text,\n };\n }\n } catch (error) {\n logger.error({ error }, 'Error in shortTermMemoryProvider:');\n return {\n data: { summaries: [], recentMessages: [], mode: 'error' },\n values: { sessionSummaries: '', recentMessages: '' },\n text: 'Error retrieving conversation context.',\n };\n }\n },\n};\n",
|
|
12
|
+
"import {\n addHeader,\n ChannelType,\n CustomMetadata,\n formatMessages,\n formatPosts,\n getEntityDetails,\n type Entity,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type State,\n logger,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\n\n/**\n * Short-term Memory Provider\n *\n * Adaptive conversation context provider that optimizes based on conversation length:\n *\n * SHORT CONVERSATIONS (< threshold, default 5 messages):\n * - Shows full message history with complete context\n * - No summarization overhead for brief chats\n *\n * LONG CONVERSATIONS (>= threshold):\n * - Shows summaries of older conversation segments\n * - Shows recent unsummarized messages in full\n * - Optimizes context window while preserving information\n *\n * This provider can REPLACE recentMessagesProvider when plugin-memory is active,\n * providing superior context management for both short and long conversations.\n */\nexport const shortTermMemoryProvider: Provider = {\n name: 'SHORT_TERM_MEMORY',\n description: 'Adaptive conversation context with smart summarization',\n position: 95, // Run before recentMessagesProvider (100) to potentially replace it\n\n get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n try {\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n // No memory service - return empty\n return {\n data: { summaries: [], recentMessages: [], mode: 'disabled' },\n values: {},\n text: '',\n };\n }\n\n const { roomId } = message;\n const config = memoryService.getConfig();\n\n // Get total message count to determine mode\n const totalMessageCount = await runtime.countMemories(roomId, false, 'messages');\n\n // ADAPTIVE LOGIC: Use full messages for short conversations, summaries for long ones\n if (totalMessageCount < config.shortTermSummarizationThreshold) {\n // ========== SHORT CONVERSATION MODE ==========\n // Just show all messages - no summarization needed\n\n const conversationLength = runtime.getConversationLength();\n\n // Fetch all necessary data in parallel\n const [entitiesData, room, recentMessagesData] = await Promise.all([\n getEntityDetails({ runtime, roomId }),\n runtime.getRoom(roomId),\n runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: conversationLength,\n unique: false,\n }),\n ]);\n\n // Separate action results from dialogue messages\n const actionResultMessages = recentMessagesData.filter(\n (msg) => msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result'\n );\n\n const dialogueMessages = recentMessagesData.filter(\n (msg) =>\n !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n // Determine format based on room type\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Format messages in parallel\n const [formattedRecentMessages, formattedRecentPosts] = await Promise.all([\n formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n }),\n formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n }),\n ]);\n\n // Format action results if any\n let actionResultsText = '';\n if (actionResultMessages.length > 0) {\n const groupedByRun = new Map<string, Memory[]>();\n\n for (const mem of actionResultMessages) {\n const runId: string = String(mem.content?.runId || 'unknown');\n if (!groupedByRun.has(runId)) {\n groupedByRun.set(runId, []);\n }\n groupedByRun.get(runId)?.push(mem);\n }\n\n const formattedActionResults = Array.from(groupedByRun.entries())\n .slice(-3) // Show last 3 runs\n .map(([runId, memories]) => {\n const sortedMemories = memories.sort(\n (a: Memory, b: Memory) => (a.createdAt || 0) - (b.createdAt || 0)\n );\n\n const thought = sortedMemories[0]?.content?.planThought || '';\n const runText = sortedMemories\n .map((mem: Memory) => {\n const actionName = mem.content?.actionName || 'Unknown';\n const status = mem.content?.actionStatus || 'unknown';\n const planStep = mem.content?.planStep || '';\n const text = mem.content?.text || '';\n const error = mem.content?.error || '';\n\n let memText = ` - ${actionName} (${status})`;\n if (planStep) memText += ` [${planStep}]`;\n if (error) {\n memText += `: Error - ${error}`;\n } else if (text && text !== `Executed action: ${actionName}`) {\n memText += `: ${text}`;\n }\n\n return memText;\n })\n .join('\\n');\n\n return `**Action Run ${runId.slice(0, 8)}**${\n thought ? ` - \"${thought}\"` : ''\n }\\n${runText}`;\n })\n .join('\\n\\n');\n\n actionResultsText = formattedActionResults\n ? addHeader('# Recent Action Executions', formattedActionResults)\n : '';\n }\n\n // Create formatted text with headers\n const recentPosts =\n formattedRecentPosts && formattedRecentPosts.length > 0\n ? addHeader('# Posts in Thread', formattedRecentPosts)\n : '';\n\n const recentMessages =\n formattedRecentMessages && formattedRecentMessages.length > 0\n ? addHeader('# Conversation Messages', formattedRecentMessages)\n : '';\n\n // Handle empty conversation case\n if (\n !recentPosts &&\n !recentMessages &&\n dialogueMessages.length === 0 &&\n !message.content.text\n ) {\n return {\n data: {\n summaries: [],\n recentMessages: [],\n actionResults: [],\n mode: 'full_conversation',\n },\n values: {\n recentMessage: 'No recent message available.',\n },\n text: 'No recent messages available',\n };\n }\n\n // Get most recent message for context\n let recentMessage = 'No recent message available.';\n if (dialogueMessages.length > 0) {\n const mostRecentMessage = [...dialogueMessages].sort(\n (a, b) => (b.createdAt || 0) - (a.createdAt || 0)\n )[0];\n\n const formattedSingleMessage = formatMessages({\n messages: [mostRecentMessage],\n entities: entitiesData,\n });\n\n if (formattedSingleMessage) {\n recentMessage = formattedSingleMessage;\n }\n }\n\n // Build received message header\n const metaData = message.metadata as CustomMetadata;\n const senderName =\n entitiesData.find((entity: Entity) => entity.id === message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${senderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${senderName}**. Keep your answer relevant to that message. Do not repeat earlier replies unless the sender asks again.`\n )\n : '';\n\n // Combine all sections\n const text = [\n isPostFormat ? recentPosts : recentMessages,\n actionResultsText,\n recentMessages || recentPosts || message.content.text ? receivedMessageHeader : '',\n recentMessages || recentPosts || message.content.text ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n summaries: [],\n recentMessages: dialogueMessages,\n actionResults: actionResultMessages,\n mode: 'full_conversation',\n },\n values: {\n ...((isPostFormat ? recentPosts : recentMessages) && {\n recentMessages: isPostFormat ? recentPosts : recentMessages,\n }),\n ...(recentPosts && { recentPosts }),\n ...(actionResultsText && { recentActionResults: actionResultsText }),\n ...(recentMessage && { recentMessage }),\n ...(receivedMessageHeader && { receivedMessageHeader }),\n ...(focusHeader && { focusHeader }),\n },\n text,\n };\n } else {\n // ========== LONG CONVERSATION MODE ==========\n // Use summaries + recent unsummarized messages\n\n const currentSummary = await memoryService.getCurrentSessionSummary(roomId);\n const lastOffset = currentSummary?.lastMessageOffset || 0;\n\n // Get recent unsummarized messages (after the last summary offset)\n const unsummarizedMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: config.shortTermRetainRecent,\n unique: false,\n start: lastOffset,\n });\n\n // Get entity details for formatting\n const entitiesData = await getEntityDetails({ runtime, roomId });\n const room = await runtime.getRoom(roomId);\n\n // Determine format\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Format unsummarized messages\n let recentMessagesText = '';\n if (unsummarizedMessages.length > 0) {\n const dialogueMessages = unsummarizedMessages.filter(\n (msg) =>\n !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n if (isPostFormat) {\n recentMessagesText = formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n });\n } else {\n recentMessagesText = formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n });\n }\n\n if (recentMessagesText) {\n recentMessagesText = addHeader('# Recent Messages', recentMessagesText);\n }\n }\n\n // Format summary\n let summaryText = '';\n if (currentSummary) {\n const messageRange = `${currentSummary.messageCount} messages`;\n const timeRange = new Date(currentSummary.startTime).toLocaleDateString();\n\n summaryText = `**Previous Conversation** (${messageRange}, ${timeRange})\\n`;\n summaryText += currentSummary.summary;\n\n if (currentSummary.topics && currentSummary.topics.length > 0) {\n summaryText += `\\n*Topics: ${currentSummary.topics.join(', ')}*`;\n }\n\n summaryText = addHeader('# Conversation Summary', summaryText);\n }\n\n // Build received message header\n const metaData = message.metadata as CustomMetadata;\n const senderName =\n entitiesData.find((entity: Entity) => entity.id === message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${senderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${senderName}**. Keep your answer relevant to that message.`\n )\n : '';\n\n // Combine sections\n const text = [\n summaryText,\n recentMessagesText,\n hasReceivedMessage ? receivedMessageHeader : '',\n hasReceivedMessage ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n summaries: currentSummary ? [currentSummary] : [],\n recentMessages: unsummarizedMessages,\n mode: 'summarized',\n },\n values: {\n ...(summaryText && { sessionSummaries: summaryText }),\n ...(recentMessagesText && { recentMessages: recentMessagesText }),\n ...(receivedMessageHeader && { receivedMessageHeader }),\n ...(focusHeader && { focusHeader }),\n },\n text,\n };\n }\n } catch (error) {\n logger.error({ error }, 'Error in shortTermMemoryProvider:');\n return {\n data: { summaries: [], recentMessages: [], mode: 'error' },\n values: {},\n text: 'Error retrieving conversation context.',\n };\n }\n },\n};\n",
|
|
13
13
|
"import {\n type IAgentRuntime,\n type Memory,\n type Provider,\n type State,\n logger,\n addHeader,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\n\n/**\n * Long-term Memory Provider\n *\n * Provides persistent facts about the user that have been learned across\n * all conversations. This includes:\n * - User identity and roles\n * - Domain expertise\n * - Preferences\n * - Goals and projects\n * - Custom definitions\n * - Behavioral patterns\n *\n * This provider enriches the context with relevant long-term information\n * to make the agent's responses more personalized and contextually aware.\n */\nexport const longTermMemoryProvider: Provider = {\n name: 'LONG_TERM_MEMORY',\n description: 'Persistent facts and preferences about the user',\n position: 50, // Run early to establish user context\n\n get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n try {\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n return {\n data: { memories: [] },\n values: { longTermMemories: '' },\n text: '',\n };\n }\n\n const { entityId } = message;\n\n // Skip for agent's own messages\n if (entityId === runtime.agentId) {\n return {\n data: { memories: [] },\n values: { longTermMemories: '' },\n text: '',\n };\n }\n\n // Get long-term memories for this entity\n const memories = await memoryService.getLongTermMemories(entityId, undefined, 25);\n\n if (memories.length === 0) {\n return {\n data: { memories: [] },\n values: { longTermMemories: '' },\n text: '',\n };\n }\n\n // Format memories using the service's built-in formatter\n const formattedMemories = await memoryService.getFormattedLongTermMemories(entityId);\n\n const text = addHeader('# What I Know About You', formattedMemories);\n\n // Create a summary of memory categories for quick reference\n const categoryCounts = new Map<string, number>();\n for (const memory of memories) {\n const count = categoryCounts.get(memory.category) || 0;\n categoryCounts.set(memory.category, count + 1);\n }\n\n const categoryList = Array.from(categoryCounts.entries())\n .map(([cat, count]) => `${cat}: ${count}`)\n .join(', ');\n\n return {\n data: {\n memories,\n categoryCounts: Object.fromEntries(categoryCounts),\n },\n values: {\n longTermMemories: text,\n memoryCategories: categoryList,\n },\n text,\n };\n } catch (error) {\n logger.error({ error }, 'Error in longTermMemoryProvider:');\n return {\n data: { memories: [] },\n values: { longTermMemories: '' },\n text: '',\n };\n }\n },\n};\n",
|
|
14
14
|
"import type { Plugin } from '@elizaos/core';\nimport { MemoryService } from './services/memory-service';\nimport { summarizationEvaluator } from './evaluators/summarization';\nimport { longTermExtractionEvaluator } from './evaluators/long-term-extraction';\nimport { shortTermMemoryProvider } from './providers/short-term-memory';\nimport { longTermMemoryProvider } from './providers/long-term-memory';\n// import { rememberAction } from './actions/remember';\nimport * as schema from './schemas/index';\n\nexport * from './types/index';\nexport * from './schemas/index';\nexport { MemoryService } from './services/memory-service';\n\n/**\n * Memory Plugin\n *\n * Advanced memory management plugin that provides:\n *\n * **Short-term Memory (Conversation Summarization)**:\n * - Automatically summarizes long conversations to reduce context size\n * - Retains recent messages while archiving older ones as summaries\n * - Configurable thresholds for when to summarize\n *\n * **Long-term Memory (Persistent Facts)**:\n * - Extracts and stores persistent facts about users\n * - Categorizes information (identity, expertise, preferences, etc.)\n * - Provides context-aware user profiles across all conversations\n *\n * **Components**:\n * - `MemoryService`: Manages all memory operations\n * - Evaluators: Process conversations to create summaries and extract facts\n * - Providers: Inject memory context into conversations\n * - Actions: Allow manual memory storage via user commands\n *\n * **Configuration** (via environment variables):\n * - `MEMORY_SUMMARIZATION_THRESHOLD`: Messages before summarization (default: 50)\n * - `MEMORY_RETAIN_RECENT`: Recent messages to keep (default: 10)\n * - `MEMORY_LONG_TERM_ENABLED`: Enable long-term extraction (default: true)\n * - `MEMORY_CONFIDENCE_THRESHOLD`: Minimum confidence to store (default: 0.7)\n *\n * **Database Tables**:\n * - `long_term_memories`: Persistent user facts\n * - `session_summaries`: Conversation summaries\n * - `memory_access_logs`: Optional usage tracking\n */\nexport const memoryPlugin: Plugin = {\n name: 'memory',\n description:\n 'Advanced memory management with conversation summarization and long-term persistent memory',\n\n services: [MemoryService],\n\n evaluators: [summarizationEvaluator, longTermExtractionEvaluator],\n\n providers: [longTermMemoryProvider, shortTermMemoryProvider],\n\n // actions: [rememberAction],\n\n // Export schema for dynamic migrations\n schema,\n};\n\nexport default memoryPlugin;\n"
|
|
15
15
|
],
|
|
16
|
-
"mappings": "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",
|
|
17
|
-
"debugId": "
|
|
16
|
+
"mappings": "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",
|
|
17
|
+
"debugId": "480869ED6980B15B64756E2164756E21",
|
|
18
18
|
"names": []
|
|
19
19
|
}
|
package/dist/cjs/index.node.cjs
CHANGED
|
@@ -891,7 +891,7 @@ var shortTermMemoryProvider = {
|
|
|
891
891
|
if (!memoryService) {
|
|
892
892
|
return {
|
|
893
893
|
data: { summaries: [], recentMessages: [], mode: "disabled" },
|
|
894
|
-
values: {
|
|
894
|
+
values: {},
|
|
895
895
|
text: ""
|
|
896
896
|
};
|
|
897
897
|
}
|
|
@@ -972,9 +972,7 @@ ${runText}`;
|
|
|
972
972
|
mode: "full_conversation"
|
|
973
973
|
},
|
|
974
974
|
values: {
|
|
975
|
-
|
|
976
|
-
recentMessages: "",
|
|
977
|
-
recentActionResults: ""
|
|
975
|
+
recentMessage: "No recent message available."
|
|
978
976
|
},
|
|
979
977
|
text: "No recent messages available"
|
|
980
978
|
};
|
|
@@ -1012,10 +1010,14 @@ ${runText}`;
|
|
|
1012
1010
|
mode: "full_conversation"
|
|
1013
1011
|
},
|
|
1014
1012
|
values: {
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1013
|
+
...(isPostFormat ? recentPosts : recentMessages) && {
|
|
1014
|
+
recentMessages: isPostFormat ? recentPosts : recentMessages
|
|
1015
|
+
},
|
|
1016
|
+
...recentPosts && { recentPosts },
|
|
1017
|
+
...actionResultsText && { recentActionResults: actionResultsText },
|
|
1018
|
+
...recentMessage && { recentMessage },
|
|
1019
|
+
...receivedMessageHeader && { receivedMessageHeader },
|
|
1020
|
+
...focusHeader && { focusHeader }
|
|
1019
1021
|
},
|
|
1020
1022
|
text: text4
|
|
1021
1023
|
};
|
|
@@ -1085,8 +1087,10 @@ ${runText}`;
|
|
|
1085
1087
|
mode: "summarized"
|
|
1086
1088
|
},
|
|
1087
1089
|
values: {
|
|
1088
|
-
sessionSummaries: summaryText,
|
|
1089
|
-
recentMessages: recentMessagesText
|
|
1090
|
+
...summaryText && { sessionSummaries: summaryText },
|
|
1091
|
+
...recentMessagesText && { recentMessages: recentMessagesText },
|
|
1092
|
+
...receivedMessageHeader && { receivedMessageHeader },
|
|
1093
|
+
...focusHeader && { focusHeader }
|
|
1090
1094
|
},
|
|
1091
1095
|
text: text4
|
|
1092
1096
|
};
|
|
@@ -1095,7 +1099,7 @@ ${runText}`;
|
|
|
1095
1099
|
import_core4.logger.error({ error }, "Error in shortTermMemoryProvider:");
|
|
1096
1100
|
return {
|
|
1097
1101
|
data: { summaries: [], recentMessages: [], mode: "error" },
|
|
1098
|
-
values: {
|
|
1102
|
+
values: {},
|
|
1099
1103
|
text: "Error retrieving conversation context."
|
|
1100
1104
|
};
|
|
1101
1105
|
}
|
|
@@ -1175,4 +1179,4 @@ var memoryPlugin = {
|
|
|
1175
1179
|
};
|
|
1176
1180
|
var src_default = memoryPlugin;
|
|
1177
1181
|
|
|
1178
|
-
//# debugId=
|
|
1182
|
+
//# debugId=DC07601B16F2760064756E2164756E21
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"import {\n type IAgentRuntime,\n type Memory,\n type Evaluator,\n logger,\n ModelType,\n composePromptFromState,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\nimport type { SummaryResult } from '../types/index';\n\n/**\n * Template for generating initial conversation summary\n */\nconst initialSummarizationTemplate = `# Task: Summarize Conversation\n\nYou are analyzing a conversation to create a concise summary that captures the key points, topics, and important details.\n\n# Recent Messages\n{{recentMessages}}\n\n# Instructions\nGenerate a summary that:\n1. Captures the main topics discussed\n2. Highlights key information shared\n3. Notes any decisions made or questions asked\n4. Maintains context for future reference\n5. Is concise but comprehensive\n\n**IMPORTANT**: Keep the summary under 2500 tokens. Be comprehensive but concise.\n\nAlso extract:\n- **Topics**: List of main topics discussed (comma-separated)\n- **Key Points**: Important facts or decisions (bullet points)\n\nRespond in this XML format:\n<summary>\n <text>Your comprehensive summary here</text>\n <topics>topic1, topic2, topic3</topics>\n <keyPoints>\n <point>First key point</point>\n <point>Second key point</point>\n </keyPoints>\n</summary>`;\n\n/**\n * Template for updating/condensing an existing summary\n */\nconst updateSummarizationTemplate = `# Task: Update and Condense Conversation Summary\n\nYou are updating an existing conversation summary with new messages, while keeping the total summary concise.\n\n# Existing Summary\n{{existingSummary}}\n\n# Existing Topics\n{{existingTopics}}\n\n# New Messages Since Last Summary\n{{newMessages}}\n\n# Instructions\nUpdate the summary by:\n1. Merging the existing summary with insights from the new messages\n2. Removing redundant or less important details to stay under the token limit\n3. Keeping the most important context and decisions\n4. Adding new topics if they emerge\n5. **CRITICAL**: Keep the ENTIRE updated summary under 2500 tokens\n\nThe goal is a rolling summary that captures the essence of the conversation without growing indefinitely.\n\nRespond in this XML format:\n<summary>\n <text>Your updated and condensed summary here</text>\n <topics>topic1, topic2, topic3</topics>\n <keyPoints>\n <point>First key point</point>\n <point>Second key point</point>\n </keyPoints>\n</summary>`;\n\n/**\n * Parse XML summary response\n */\nfunction parseSummaryXML(xml: string): SummaryResult {\n const summaryMatch = xml.match(/<text>([\\s\\S]*?)<\\/text>/);\n const topicsMatch = xml.match(/<topics>([\\s\\S]*?)<\\/topics>/);\n const keyPointsMatches = xml.matchAll(/<point>([\\s\\S]*?)<\\/point>/g);\n\n const summary = summaryMatch ? summaryMatch[1].trim() : 'Summary not available';\n const topics = topicsMatch\n ? topicsMatch[1]\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean)\n : [];\n const keyPoints = Array.from(keyPointsMatches).map((match) => match[1].trim());\n\n return { summary, topics, keyPoints };\n}\n\n/**\n * Short-term Memory Summarization Evaluator\n *\n * Automatically generates and updates conversation summaries when conversations\n * exceed the configured threshold (default: 5 messages).\n *\n * BEHAVIOR:\n * - Monitors message count per room\n * - Triggers when count >= threshold\n * - Creates initial summary for first batch of messages\n * - Updates/condenses existing summary as conversation continues\n * - Tracks offset to know which messages have been summarized\n *\n * INTEGRATION:\n * Works with shortTermMemoryProvider which:\n * - Shows full conversation when < threshold (no summarization needed)\n * - Shows summaries + recent messages when >= threshold (optimized context)\n *\n * This creates an adaptive system that starts with full context and seamlessly\n * transitions to summarization as conversations grow.\n */\nexport const summarizationEvaluator: Evaluator = {\n name: 'MEMORY_SUMMARIZATION',\n description: 'Automatically summarizes conversations to optimize context usage',\n similes: ['CONVERSATION_SUMMARY', 'CONTEXT_COMPRESSION', 'MEMORY_OPTIMIZATION'],\n alwaysRun: true,\n\n validate: async (runtime: IAgentRuntime, message: Memory): Promise<boolean> => {\n // Only run after actual messages (not during generation or on empty messages)\n if (!message.content?.text) {\n logger.debug('Skipping summarization: no message text');\n return false;\n }\n\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n logger.debug('Skipping summarization: memory service not available');\n return false;\n }\n\n const config = memoryService.getConfig();\n const currentMessageCount = await runtime.countMemories(message.roomId, false, 'messages');\n\n // Only summarize when we've reached the threshold\n // Before this, shortTermMemoryProvider shows full conversation\n const shouldSummarize = currentMessageCount >= config.shortTermSummarizationThreshold;\n\n logger.debug(\n {\n roomId: message.roomId,\n currentMessageCount,\n threshold: config.shortTermSummarizationThreshold,\n shouldSummarize,\n },\n 'Summarization validation check'\n );\n\n return shouldSummarize;\n },\n\n handler: async (runtime: IAgentRuntime, message: Memory): Promise<void> => {\n const memoryService = runtime.getService('memory') as MemoryService;\n if (!memoryService) {\n logger.error('MemoryService not found');\n return;\n }\n\n const config = memoryService.getConfig();\n const { roomId } = message;\n\n try {\n logger.info(`Starting summarization for room ${roomId}`);\n\n // Get the current summary (if any)\n const existingSummary = await memoryService.getCurrentSessionSummary(roomId);\n const lastOffset = existingSummary?.lastMessageOffset || 0;\n\n // Get total message count\n const totalMessageCount = await runtime.countMemories(roomId, false, 'messages');\n\n // Get new messages since last offset\n const newMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: config.shortTermSummarizationThreshold,\n unique: false,\n start: lastOffset,\n });\n\n if (newMessages.length === 0) {\n logger.debug('No new messages to summarize');\n return;\n }\n\n // Sort by timestamp\n const sortedMessages = newMessages.sort((a, b) => (a.createdAt || 0) - (b.createdAt || 0));\n\n // Format messages for summarization\n const formattedMessages = sortedMessages\n .map((msg) => {\n const sender = msg.entityId === runtime.agentId ? runtime.character.name : 'User';\n return `${sender}: ${msg.content.text || '[non-text message]'}`;\n })\n .join('\\n');\n\n // Generate or update summary using LLM\n const state = await runtime.composeState(message);\n let prompt: string;\n let template: string;\n\n if (existingSummary) {\n // Update existing summary\n template = updateSummarizationTemplate;\n prompt = composePromptFromState({\n state: {\n ...state,\n existingSummary: existingSummary.summary,\n existingTopics: existingSummary.topics?.join(', ') || 'None',\n newMessages: formattedMessages,\n },\n template,\n });\n } else {\n // Create initial summary\n template = initialSummarizationTemplate;\n prompt = composePromptFromState({\n state: {\n ...state,\n recentMessages: formattedMessages,\n },\n template,\n });\n }\n\n const response = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt,\n maxTokens: config.summaryMaxTokens || 2500,\n });\n\n const summaryResult = parseSummaryXML(response);\n\n logger.info(\n `${existingSummary ? 'Updated' : 'Generated'} summary: ${summaryResult.summary.substring(0, 100)}...`\n );\n\n // Calculate new offset (current total)\n const newOffset = totalMessageCount;\n\n // Get timing info\n const firstMessage = sortedMessages[0];\n const lastMessage = sortedMessages[sortedMessages.length - 1];\n\n const startTime = existingSummary\n ? existingSummary.startTime\n : firstMessage?.createdAt && firstMessage.createdAt > 0\n ? new Date(firstMessage.createdAt)\n : new Date();\n const endTime =\n lastMessage?.createdAt && lastMessage.createdAt > 0\n ? new Date(lastMessage.createdAt)\n : new Date();\n\n if (existingSummary) {\n // Update existing summary\n await memoryService.updateSessionSummary(existingSummary.id, {\n summary: summaryResult.summary,\n messageCount: existingSummary.messageCount + sortedMessages.length,\n lastMessageOffset: newOffset,\n endTime,\n topics: summaryResult.topics,\n metadata: {\n keyPoints: summaryResult.keyPoints,\n },\n });\n\n logger.info(\n `Updated summary for room ${roomId}: ${sortedMessages.length} new messages processed (offset: ${lastOffset} → ${newOffset})`\n );\n } else {\n // Create new summary\n await memoryService.storeSessionSummary({\n agentId: runtime.agentId,\n roomId,\n entityId: message.entityId !== runtime.agentId ? message.entityId : undefined,\n summary: summaryResult.summary,\n messageCount: sortedMessages.length,\n lastMessageOffset: newOffset,\n startTime,\n endTime,\n topics: summaryResult.topics,\n metadata: {\n keyPoints: summaryResult.keyPoints,\n },\n });\n\n logger.info(\n `Created new summary for room ${roomId}: ${sortedMessages.length} messages summarized (offset: 0 → ${newOffset})`\n );\n }\n\n // Note: We do NOT delete messages - they stay in the database\n // The offset tracks what's been summarized\n } catch (error) {\n logger.error({ error }, 'Error during summarization:');\n }\n },\n\n examples: [],\n};\n",
|
|
10
10
|
"import {\n type IAgentRuntime,\n type Memory,\n type Evaluator,\n logger,\n ModelType,\n composePromptFromState,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\nimport { LongTermMemoryCategory, type MemoryExtraction } from '../types/index';\n\n/**\n * Template for extracting long-term memories\n */\nconst extractionTemplate = `# Task: Extract Long-Term Memory\n\nYou are analyzing a conversation to extract facts that should be remembered long-term about the user.\n\n# Recent Messages\n{{recentMessages}}\n\n# Current Long-Term Memories\n{{existingMemories}}\n\n# Memory Categories\n1. **identity**: User's name, role, identity (e.g., \"I'm a data scientist\")\n2. **expertise**: User's skills, knowledge domains, or unfamiliarity with topics\n3. **projects**: Ongoing projects, past interactions, recurring topics\n4. **preferences**: Communication style, format preferences, verbosity, etc.\n5. **data_sources**: Frequently used files, databases, APIs\n6. **goals**: Broader intentions (e.g., \"preparing for interview\")\n7. **constraints**: User-defined rules or limitations\n8. **definitions**: Custom terms, acronyms, glossaries\n9. **behavioral_patterns**: How the user tends to interact\n\n# Instructions\nExtract any NEW information that should be remembered long-term. For each item:\n- Determine which category it belongs to\n- Write a clear, factual statement\n- Assess confidence (0.0 to 1.0)\n- Only include information explicitly stated or strongly implied\n\nIf there are no new long-term facts to extract, respond with <memories></memories>\n\nRespond in this XML format:\n<memories>\n <memory>\n <category>identity</category>\n <content>User is a software engineer specializing in backend development</content>\n <confidence>0.95</confidence>\n </memory>\n <memory>\n <category>preferences</category>\n <content>Prefers code examples over lengthy explanations</content>\n <confidence>0.85</confidence>\n </memory>\n</memories>`;\n\n/**\n * Parse XML memory extraction response\n */\nfunction parseMemoryExtractionXML(xml: string): MemoryExtraction[] {\n const memoryMatches = xml.matchAll(\n /<memory>[\\s\\S]*?<category>(.*?)<\\/category>[\\s\\S]*?<content>(.*?)<\\/content>[\\s\\S]*?<confidence>(.*?)<\\/confidence>[\\s\\S]*?<\\/memory>/g\n );\n\n const extractions: MemoryExtraction[] = [];\n\n for (const match of memoryMatches) {\n const category = match[1].trim() as LongTermMemoryCategory;\n const content = match[2].trim();\n const confidence = parseFloat(match[3].trim());\n\n // Validate category\n if (!Object.values(LongTermMemoryCategory).includes(category)) {\n logger.warn(`Invalid memory category: ${category}`);\n continue;\n }\n\n if (content && !isNaN(confidence)) {\n extractions.push({ category, content, confidence });\n }\n }\n\n return extractions;\n}\n\n/**\n * Long-term Memory Extraction Evaluator\n *\n * Analyzes conversations to extract persistent facts about users that should be remembered\n * across all future conversations.\n */\nexport const longTermExtractionEvaluator: Evaluator = {\n name: 'LONG_TERM_MEMORY_EXTRACTION',\n description: 'Extracts long-term facts about users from conversations',\n similes: ['MEMORY_EXTRACTION', 'FACT_LEARNING', 'USER_PROFILING'],\n alwaysRun: true,\n\n validate: async (runtime: IAgentRuntime, message: Memory): Promise<boolean> => {\n logger.debug(`Validating long-term memory extraction for message: ${message.content?.text}`);\n // Only run on user messages (not agent's own)\n if (message.entityId === runtime.agentId) {\n logger.debug(\"Skipping long-term memory extraction for agent's own message\");\n return false;\n }\n\n if (!message.content?.text) {\n logger.debug('Skipping long-term memory extraction for message without text');\n return false;\n }\n\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n logger.debug('MemoryService not found');\n return false;\n }\n\n const config = memoryService.getConfig();\n if (!config.longTermExtractionEnabled) {\n logger.debug('Long-term memory extraction is disabled');\n return false;\n }\n\n // Count total messages from this entity in this room\n const currentMessageCount = await runtime.countMemories(message.roomId, false, 'messages');\n\n const shouldRun = await memoryService.shouldRunExtraction(\n message.entityId,\n message.roomId,\n currentMessageCount\n );\n logger.debug(`Should run extraction: ${shouldRun}`);\n return shouldRun;\n },\n\n handler: async (runtime: IAgentRuntime, message: Memory): Promise<void> => {\n const memoryService = runtime.getService('memory') as MemoryService;\n if (!memoryService) {\n logger.error('MemoryService not found');\n return;\n }\n\n const config = memoryService.getConfig();\n const { entityId, roomId } = message;\n\n try {\n logger.info(`Extracting long-term memories for entity ${entityId}`);\n\n // Get recent conversation context\n const recentMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: 20,\n unique: false,\n });\n\n const formattedMessages = recentMessages\n .sort((a, b) => (a.createdAt || 0) - (b.createdAt || 0))\n .map((msg) => {\n const sender = msg.entityId === runtime.agentId ? runtime.character.name : 'User';\n return `${sender}: ${msg.content.text || '[non-text message]'}`;\n })\n .join('\\n');\n\n // Get existing long-term memories\n const existingMemories = await memoryService.getLongTermMemories(entityId, undefined, 30);\n const formattedExisting =\n existingMemories.length > 0\n ? existingMemories\n .map((m) => `[${m.category}] ${m.content} (confidence: ${m.confidence})`)\n .join('\\n')\n : 'None yet';\n\n // Generate extraction using LLM\n const state = await runtime.composeState(message);\n const prompt = composePromptFromState({\n state: {\n ...state,\n recentMessages: formattedMessages,\n existingMemories: formattedExisting,\n },\n template: extractionTemplate,\n });\n\n const response = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt,\n });\n\n const extractions = parseMemoryExtractionXML(response);\n\n logger.info(`Extracted ${extractions.length} long-term memories`);\n\n // Store each extracted memory\n for (const extraction of extractions) {\n if (extraction.confidence >= config.longTermConfidenceThreshold) {\n await memoryService.storeLongTermMemory({\n agentId: runtime.agentId,\n entityId,\n category: extraction.category,\n content: extraction.content,\n confidence: extraction.confidence,\n source: 'conversation',\n metadata: {\n roomId,\n extractedAt: new Date().toISOString(),\n },\n });\n\n logger.info(\n `Stored long-term memory: [${extraction.category}] ${extraction.content.substring(0, 50)}...`\n );\n } else {\n logger.debug(\n `Skipped low-confidence memory: ${extraction.content} (confidence: ${extraction.confidence})`\n );\n }\n }\n\n // Update the extraction checkpoint after successful extraction\n const currentMessageCount = await runtime.countMemories(roomId, false, 'messages');\n await memoryService.setLastExtractionCheckpoint(entityId, roomId, currentMessageCount);\n logger.debug(\n `Updated extraction checkpoint to ${currentMessageCount} for entity ${entityId} in room ${roomId}`\n );\n } catch (error) {\n logger.error({ error }, 'Error during long-term memory extraction:');\n }\n },\n\n examples: [],\n};\n",
|
|
11
11
|
"import type { UUID } from '@elizaos/core';\n\n/**\n * Categories of long-term memory\n */\nexport enum LongTermMemoryCategory {\n IDENTITY = 'identity', // User identity, name, roles\n EXPERTISE = 'expertise', // Domain knowledge and familiarity\n PROJECTS = 'projects', // Past interactions and recurring topics\n PREFERENCES = 'preferences', // User preferences for interaction style\n DATA_SOURCES = 'data_sources', // Frequently used files, databases, APIs\n GOALS = 'goals', // User's broader intentions and objectives\n CONSTRAINTS = 'constraints', // User-defined rules and limitations\n DEFINITIONS = 'definitions', // Custom terms, acronyms, glossaries\n BEHAVIORAL_PATTERNS = 'behavioral_patterns', // User interaction patterns\n}\n\n/**\n * Long-term memory entry\n */\nexport interface LongTermMemory {\n id: UUID;\n agentId: UUID;\n entityId: UUID; // The user/entity this memory is about\n category: LongTermMemoryCategory;\n content: string; // The actual memory content\n metadata?: Record<string, unknown>; // Additional structured data\n embedding?: number[]; // Vector embedding for semantic search\n confidence?: number; // Confidence score (0-1)\n source?: string; // Where this memory came from (conversation, manual, etc.)\n createdAt: Date;\n updatedAt: Date;\n lastAccessedAt?: Date;\n accessCount?: number;\n similarity?: number; // Optional similarity score from vector search\n}\n\n/**\n * Short-term memory session summary\n */\nexport interface SessionSummary {\n id: UUID;\n agentId: UUID;\n roomId: UUID;\n entityId?: UUID; // Optional: specific user in the session\n summary: string; // The summarized conversation\n messageCount: number; // Number of messages summarized\n lastMessageOffset: number; // Index of last summarized message (for pagination)\n startTime: Date; // Timestamp of first message\n endTime: Date; // Timestamp of last message\n topics?: string[]; // Main topics discussed\n metadata?: Record<string, unknown>;\n embedding?: number[]; // Vector embedding of the summary\n createdAt: Date;\n updatedAt: Date; // Track when summary was last updated\n}\n\n/**\n * Configuration for memory plugin\n */\nexport interface MemoryConfig {\n // Short-term memory settings\n shortTermSummarizationThreshold: number; // Messages count before summarization\n shortTermRetainRecent: number; // Number of recent messages to keep after summarization\n\n // Long-term memory settings\n longTermExtractionEnabled: boolean;\n longTermVectorSearchEnabled: boolean;\n longTermConfidenceThreshold: number; // Minimum confidence to store\n longTermExtractionInterval: number; // Run extraction every N messages (e.g., 5, 10, 15...)\n\n // Summarization settings\n summaryModelType?: string;\n summaryMaxTokens?: number;\n}\n\n/**\n * Memory extraction result from evaluator\n */\nexport interface MemoryExtraction {\n category: LongTermMemoryCategory;\n content: string;\n confidence: number;\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Summary generation result\n */\nexport interface SummaryResult {\n summary: string;\n topics: string[];\n keyPoints: string[];\n}\n",
|
|
12
|
-
"import {\n addHeader,\n ChannelType,\n CustomMetadata,\n formatMessages,\n formatPosts,\n getEntityDetails,\n type Entity,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type State,\n logger,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\n\n/**\n * Short-term Memory Provider\n *\n * Adaptive conversation context provider that optimizes based on conversation length:\n *\n * SHORT CONVERSATIONS (< threshold, default 5 messages):\n * - Shows full message history with complete context\n * - No summarization overhead for brief chats\n *\n * LONG CONVERSATIONS (>= threshold):\n * - Shows summaries of older conversation segments\n * - Shows recent unsummarized messages in full\n * - Optimizes context window while preserving information\n *\n * This provider can REPLACE recentMessagesProvider when plugin-memory is active,\n * providing superior context management for both short and long conversations.\n */\nexport const shortTermMemoryProvider: Provider = {\n name: 'SHORT_TERM_MEMORY',\n description: 'Adaptive conversation context with smart summarization',\n position: 95, // Run before recentMessagesProvider (100) to potentially replace it\n\n get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n try {\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n // No memory service - return empty\n return {\n data: { summaries: [], recentMessages: [], mode: 'disabled' },\n values: { sessionSummaries: '', recentMessages: '' },\n text: '',\n };\n }\n\n const { roomId } = message;\n const config = memoryService.getConfig();\n\n // Get total message count to determine mode\n const totalMessageCount = await runtime.countMemories(roomId, false, 'messages');\n\n // ADAPTIVE LOGIC: Use full messages for short conversations, summaries for long ones\n if (totalMessageCount < config.shortTermSummarizationThreshold) {\n // ========== SHORT CONVERSATION MODE ==========\n // Just show all messages - no summarization needed\n\n const conversationLength = runtime.getConversationLength();\n\n // Fetch all necessary data in parallel\n const [entitiesData, room, recentMessagesData] = await Promise.all([\n getEntityDetails({ runtime, roomId }),\n runtime.getRoom(roomId),\n runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: conversationLength,\n unique: false,\n }),\n ]);\n\n // Separate action results from dialogue messages\n const actionResultMessages = recentMessagesData.filter(\n (msg) => msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result'\n );\n\n const dialogueMessages = recentMessagesData.filter(\n (msg) =>\n !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n // Determine format based on room type\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Format messages in parallel\n const [formattedRecentMessages, formattedRecentPosts] = await Promise.all([\n formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n }),\n formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n }),\n ]);\n\n // Format action results if any\n let actionResultsText = '';\n if (actionResultMessages.length > 0) {\n const groupedByRun = new Map<string, Memory[]>();\n\n for (const mem of actionResultMessages) {\n const runId: string = String(mem.content?.runId || 'unknown');\n if (!groupedByRun.has(runId)) {\n groupedByRun.set(runId, []);\n }\n groupedByRun.get(runId)?.push(mem);\n }\n\n const formattedActionResults = Array.from(groupedByRun.entries())\n .slice(-3) // Show last 3 runs\n .map(([runId, memories]) => {\n const sortedMemories = memories.sort(\n (a: Memory, b: Memory) => (a.createdAt || 0) - (b.createdAt || 0)\n );\n\n const thought = sortedMemories[0]?.content?.planThought || '';\n const runText = sortedMemories\n .map((mem: Memory) => {\n const actionName = mem.content?.actionName || 'Unknown';\n const status = mem.content?.actionStatus || 'unknown';\n const planStep = mem.content?.planStep || '';\n const text = mem.content?.text || '';\n const error = mem.content?.error || '';\n\n let memText = ` - ${actionName} (${status})`;\n if (planStep) memText += ` [${planStep}]`;\n if (error) {\n memText += `: Error - ${error}`;\n } else if (text && text !== `Executed action: ${actionName}`) {\n memText += `: ${text}`;\n }\n\n return memText;\n })\n .join('\\n');\n\n return `**Action Run ${runId.slice(0, 8)}**${\n thought ? ` - \"${thought}\"` : ''\n }\\n${runText}`;\n })\n .join('\\n\\n');\n\n actionResultsText = formattedActionResults\n ? addHeader('# Recent Action Executions', formattedActionResults)\n : '';\n }\n\n // Create formatted text with headers\n const recentPosts =\n formattedRecentPosts && formattedRecentPosts.length > 0\n ? addHeader('# Posts in Thread', formattedRecentPosts)\n : '';\n\n const recentMessages =\n formattedRecentMessages && formattedRecentMessages.length > 0\n ? addHeader('# Conversation Messages', formattedRecentMessages)\n : '';\n\n // Handle empty conversation case\n if (\n !recentPosts &&\n !recentMessages &&\n dialogueMessages.length === 0 &&\n !message.content.text\n ) {\n return {\n data: {\n summaries: [],\n recentMessages: [],\n actionResults: [],\n mode: 'full_conversation',\n },\n values: {\n sessionSummaries: '',\n recentMessages: '',\n recentActionResults: '',\n },\n text: 'No recent messages available',\n };\n }\n\n // Get most recent message for context\n let recentMessage = 'No recent message available.';\n if (dialogueMessages.length > 0) {\n const mostRecentMessage = [...dialogueMessages].sort(\n (a, b) => (b.createdAt || 0) - (a.createdAt || 0)\n )[0];\n\n const formattedSingleMessage = formatMessages({\n messages: [mostRecentMessage],\n entities: entitiesData,\n });\n\n if (formattedSingleMessage) {\n recentMessage = formattedSingleMessage;\n }\n }\n\n // Build received message header\n const metaData = message.metadata as CustomMetadata;\n const senderName =\n entitiesData.find((entity: Entity) => entity.id === message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${senderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${senderName}**. Keep your answer relevant to that message. Do not repeat earlier replies unless the sender asks again.`\n )\n : '';\n\n // Combine all sections\n const text = [\n isPostFormat ? recentPosts : recentMessages,\n actionResultsText,\n recentMessages || recentPosts || message.content.text ? receivedMessageHeader : '',\n recentMessages || recentPosts || message.content.text ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n summaries: [],\n recentMessages: dialogueMessages,\n actionResults: actionResultMessages,\n mode: 'full_conversation',\n },\n values: {\n sessionSummaries: '',\n recentMessages: isPostFormat ? recentPosts : recentMessages,\n recentActionResults: actionResultsText,\n recentMessage,\n },\n text,\n };\n } else {\n // ========== LONG CONVERSATION MODE ==========\n // Use summaries + recent unsummarized messages\n\n const currentSummary = await memoryService.getCurrentSessionSummary(roomId);\n const lastOffset = currentSummary?.lastMessageOffset || 0;\n\n // Get recent unsummarized messages (after the last summary offset)\n const unsummarizedMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: config.shortTermRetainRecent,\n unique: false,\n start: lastOffset,\n });\n\n // Get entity details for formatting\n const entitiesData = await getEntityDetails({ runtime, roomId });\n const room = await runtime.getRoom(roomId);\n\n // Determine format\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Format unsummarized messages\n let recentMessagesText = '';\n if (unsummarizedMessages.length > 0) {\n const dialogueMessages = unsummarizedMessages.filter(\n (msg) =>\n !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n if (isPostFormat) {\n recentMessagesText = formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n });\n } else {\n recentMessagesText = formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n });\n }\n\n if (recentMessagesText) {\n recentMessagesText = addHeader('# Recent Messages', recentMessagesText);\n }\n }\n\n // Format summary\n let summaryText = '';\n if (currentSummary) {\n const messageRange = `${currentSummary.messageCount} messages`;\n const timeRange = new Date(currentSummary.startTime).toLocaleDateString();\n\n summaryText = `**Previous Conversation** (${messageRange}, ${timeRange})\\n`;\n summaryText += currentSummary.summary;\n\n if (currentSummary.topics && currentSummary.topics.length > 0) {\n summaryText += `\\n*Topics: ${currentSummary.topics.join(', ')}*`;\n }\n\n summaryText = addHeader('# Conversation Summary', summaryText);\n }\n\n // Build received message header\n const metaData = message.metadata as CustomMetadata;\n const senderName =\n entitiesData.find((entity: Entity) => entity.id === message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${senderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${senderName}**. Keep your answer relevant to that message.`\n )\n : '';\n\n // Combine sections\n const text = [\n summaryText,\n recentMessagesText,\n hasReceivedMessage ? receivedMessageHeader : '',\n hasReceivedMessage ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n summaries: currentSummary ? [currentSummary] : [],\n recentMessages: unsummarizedMessages,\n mode: 'summarized',\n },\n values: {\n sessionSummaries: summaryText,\n recentMessages: recentMessagesText,\n },\n text,\n };\n }\n } catch (error) {\n logger.error({ error }, 'Error in shortTermMemoryProvider:');\n return {\n data: { summaries: [], recentMessages: [], mode: 'error' },\n values: { sessionSummaries: '', recentMessages: '' },\n text: 'Error retrieving conversation context.',\n };\n }\n },\n};\n",
|
|
12
|
+
"import {\n addHeader,\n ChannelType,\n CustomMetadata,\n formatMessages,\n formatPosts,\n getEntityDetails,\n type Entity,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type State,\n logger,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\n\n/**\n * Short-term Memory Provider\n *\n * Adaptive conversation context provider that optimizes based on conversation length:\n *\n * SHORT CONVERSATIONS (< threshold, default 5 messages):\n * - Shows full message history with complete context\n * - No summarization overhead for brief chats\n *\n * LONG CONVERSATIONS (>= threshold):\n * - Shows summaries of older conversation segments\n * - Shows recent unsummarized messages in full\n * - Optimizes context window while preserving information\n *\n * This provider can REPLACE recentMessagesProvider when plugin-memory is active,\n * providing superior context management for both short and long conversations.\n */\nexport const shortTermMemoryProvider: Provider = {\n name: 'SHORT_TERM_MEMORY',\n description: 'Adaptive conversation context with smart summarization',\n position: 95, // Run before recentMessagesProvider (100) to potentially replace it\n\n get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n try {\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n // No memory service - return empty\n return {\n data: { summaries: [], recentMessages: [], mode: 'disabled' },\n values: {},\n text: '',\n };\n }\n\n const { roomId } = message;\n const config = memoryService.getConfig();\n\n // Get total message count to determine mode\n const totalMessageCount = await runtime.countMemories(roomId, false, 'messages');\n\n // ADAPTIVE LOGIC: Use full messages for short conversations, summaries for long ones\n if (totalMessageCount < config.shortTermSummarizationThreshold) {\n // ========== SHORT CONVERSATION MODE ==========\n // Just show all messages - no summarization needed\n\n const conversationLength = runtime.getConversationLength();\n\n // Fetch all necessary data in parallel\n const [entitiesData, room, recentMessagesData] = await Promise.all([\n getEntityDetails({ runtime, roomId }),\n runtime.getRoom(roomId),\n runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: conversationLength,\n unique: false,\n }),\n ]);\n\n // Separate action results from dialogue messages\n const actionResultMessages = recentMessagesData.filter(\n (msg) => msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result'\n );\n\n const dialogueMessages = recentMessagesData.filter(\n (msg) =>\n !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n // Determine format based on room type\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Format messages in parallel\n const [formattedRecentMessages, formattedRecentPosts] = await Promise.all([\n formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n }),\n formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n }),\n ]);\n\n // Format action results if any\n let actionResultsText = '';\n if (actionResultMessages.length > 0) {\n const groupedByRun = new Map<string, Memory[]>();\n\n for (const mem of actionResultMessages) {\n const runId: string = String(mem.content?.runId || 'unknown');\n if (!groupedByRun.has(runId)) {\n groupedByRun.set(runId, []);\n }\n groupedByRun.get(runId)?.push(mem);\n }\n\n const formattedActionResults = Array.from(groupedByRun.entries())\n .slice(-3) // Show last 3 runs\n .map(([runId, memories]) => {\n const sortedMemories = memories.sort(\n (a: Memory, b: Memory) => (a.createdAt || 0) - (b.createdAt || 0)\n );\n\n const thought = sortedMemories[0]?.content?.planThought || '';\n const runText = sortedMemories\n .map((mem: Memory) => {\n const actionName = mem.content?.actionName || 'Unknown';\n const status = mem.content?.actionStatus || 'unknown';\n const planStep = mem.content?.planStep || '';\n const text = mem.content?.text || '';\n const error = mem.content?.error || '';\n\n let memText = ` - ${actionName} (${status})`;\n if (planStep) memText += ` [${planStep}]`;\n if (error) {\n memText += `: Error - ${error}`;\n } else if (text && text !== `Executed action: ${actionName}`) {\n memText += `: ${text}`;\n }\n\n return memText;\n })\n .join('\\n');\n\n return `**Action Run ${runId.slice(0, 8)}**${\n thought ? ` - \"${thought}\"` : ''\n }\\n${runText}`;\n })\n .join('\\n\\n');\n\n actionResultsText = formattedActionResults\n ? addHeader('# Recent Action Executions', formattedActionResults)\n : '';\n }\n\n // Create formatted text with headers\n const recentPosts =\n formattedRecentPosts && formattedRecentPosts.length > 0\n ? addHeader('# Posts in Thread', formattedRecentPosts)\n : '';\n\n const recentMessages =\n formattedRecentMessages && formattedRecentMessages.length > 0\n ? addHeader('# Conversation Messages', formattedRecentMessages)\n : '';\n\n // Handle empty conversation case\n if (\n !recentPosts &&\n !recentMessages &&\n dialogueMessages.length === 0 &&\n !message.content.text\n ) {\n return {\n data: {\n summaries: [],\n recentMessages: [],\n actionResults: [],\n mode: 'full_conversation',\n },\n values: {\n recentMessage: 'No recent message available.',\n },\n text: 'No recent messages available',\n };\n }\n\n // Get most recent message for context\n let recentMessage = 'No recent message available.';\n if (dialogueMessages.length > 0) {\n const mostRecentMessage = [...dialogueMessages].sort(\n (a, b) => (b.createdAt || 0) - (a.createdAt || 0)\n )[0];\n\n const formattedSingleMessage = formatMessages({\n messages: [mostRecentMessage],\n entities: entitiesData,\n });\n\n if (formattedSingleMessage) {\n recentMessage = formattedSingleMessage;\n }\n }\n\n // Build received message header\n const metaData = message.metadata as CustomMetadata;\n const senderName =\n entitiesData.find((entity: Entity) => entity.id === message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${senderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${senderName}**. Keep your answer relevant to that message. Do not repeat earlier replies unless the sender asks again.`\n )\n : '';\n\n // Combine all sections\n const text = [\n isPostFormat ? recentPosts : recentMessages,\n actionResultsText,\n recentMessages || recentPosts || message.content.text ? receivedMessageHeader : '',\n recentMessages || recentPosts || message.content.text ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n summaries: [],\n recentMessages: dialogueMessages,\n actionResults: actionResultMessages,\n mode: 'full_conversation',\n },\n values: {\n ...((isPostFormat ? recentPosts : recentMessages) && {\n recentMessages: isPostFormat ? recentPosts : recentMessages,\n }),\n ...(recentPosts && { recentPosts }),\n ...(actionResultsText && { recentActionResults: actionResultsText }),\n ...(recentMessage && { recentMessage }),\n ...(receivedMessageHeader && { receivedMessageHeader }),\n ...(focusHeader && { focusHeader }),\n },\n text,\n };\n } else {\n // ========== LONG CONVERSATION MODE ==========\n // Use summaries + recent unsummarized messages\n\n const currentSummary = await memoryService.getCurrentSessionSummary(roomId);\n const lastOffset = currentSummary?.lastMessageOffset || 0;\n\n // Get recent unsummarized messages (after the last summary offset)\n const unsummarizedMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: config.shortTermRetainRecent,\n unique: false,\n start: lastOffset,\n });\n\n // Get entity details for formatting\n const entitiesData = await getEntityDetails({ runtime, roomId });\n const room = await runtime.getRoom(roomId);\n\n // Determine format\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Format unsummarized messages\n let recentMessagesText = '';\n if (unsummarizedMessages.length > 0) {\n const dialogueMessages = unsummarizedMessages.filter(\n (msg) =>\n !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n if (isPostFormat) {\n recentMessagesText = formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n });\n } else {\n recentMessagesText = formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n });\n }\n\n if (recentMessagesText) {\n recentMessagesText = addHeader('# Recent Messages', recentMessagesText);\n }\n }\n\n // Format summary\n let summaryText = '';\n if (currentSummary) {\n const messageRange = `${currentSummary.messageCount} messages`;\n const timeRange = new Date(currentSummary.startTime).toLocaleDateString();\n\n summaryText = `**Previous Conversation** (${messageRange}, ${timeRange})\\n`;\n summaryText += currentSummary.summary;\n\n if (currentSummary.topics && currentSummary.topics.length > 0) {\n summaryText += `\\n*Topics: ${currentSummary.topics.join(', ')}*`;\n }\n\n summaryText = addHeader('# Conversation Summary', summaryText);\n }\n\n // Build received message header\n const metaData = message.metadata as CustomMetadata;\n const senderName =\n entitiesData.find((entity: Entity) => entity.id === message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${senderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${senderName}**. Keep your answer relevant to that message.`\n )\n : '';\n\n // Combine sections\n const text = [\n summaryText,\n recentMessagesText,\n hasReceivedMessage ? receivedMessageHeader : '',\n hasReceivedMessage ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n summaries: currentSummary ? [currentSummary] : [],\n recentMessages: unsummarizedMessages,\n mode: 'summarized',\n },\n values: {\n ...(summaryText && { sessionSummaries: summaryText }),\n ...(recentMessagesText && { recentMessages: recentMessagesText }),\n ...(receivedMessageHeader && { receivedMessageHeader }),\n ...(focusHeader && { focusHeader }),\n },\n text,\n };\n }\n } catch (error) {\n logger.error({ error }, 'Error in shortTermMemoryProvider:');\n return {\n data: { summaries: [], recentMessages: [], mode: 'error' },\n values: {},\n text: 'Error retrieving conversation context.',\n };\n }\n },\n};\n",
|
|
13
13
|
"import {\n type IAgentRuntime,\n type Memory,\n type Provider,\n type State,\n logger,\n addHeader,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\n\n/**\n * Long-term Memory Provider\n *\n * Provides persistent facts about the user that have been learned across\n * all conversations. This includes:\n * - User identity and roles\n * - Domain expertise\n * - Preferences\n * - Goals and projects\n * - Custom definitions\n * - Behavioral patterns\n *\n * This provider enriches the context with relevant long-term information\n * to make the agent's responses more personalized and contextually aware.\n */\nexport const longTermMemoryProvider: Provider = {\n name: 'LONG_TERM_MEMORY',\n description: 'Persistent facts and preferences about the user',\n position: 50, // Run early to establish user context\n\n get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n try {\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n return {\n data: { memories: [] },\n values: { longTermMemories: '' },\n text: '',\n };\n }\n\n const { entityId } = message;\n\n // Skip for agent's own messages\n if (entityId === runtime.agentId) {\n return {\n data: { memories: [] },\n values: { longTermMemories: '' },\n text: '',\n };\n }\n\n // Get long-term memories for this entity\n const memories = await memoryService.getLongTermMemories(entityId, undefined, 25);\n\n if (memories.length === 0) {\n return {\n data: { memories: [] },\n values: { longTermMemories: '' },\n text: '',\n };\n }\n\n // Format memories using the service's built-in formatter\n const formattedMemories = await memoryService.getFormattedLongTermMemories(entityId);\n\n const text = addHeader('# What I Know About You', formattedMemories);\n\n // Create a summary of memory categories for quick reference\n const categoryCounts = new Map<string, number>();\n for (const memory of memories) {\n const count = categoryCounts.get(memory.category) || 0;\n categoryCounts.set(memory.category, count + 1);\n }\n\n const categoryList = Array.from(categoryCounts.entries())\n .map(([cat, count]) => `${cat}: ${count}`)\n .join(', ');\n\n return {\n data: {\n memories,\n categoryCounts: Object.fromEntries(categoryCounts),\n },\n values: {\n longTermMemories: text,\n memoryCategories: categoryList,\n },\n text,\n };\n } catch (error) {\n logger.error({ error }, 'Error in longTermMemoryProvider:');\n return {\n data: { memories: [] },\n values: { longTermMemories: '' },\n text: '',\n };\n }\n },\n};\n",
|
|
14
14
|
"import type { Plugin } from '@elizaos/core';\nimport { MemoryService } from './services/memory-service';\nimport { summarizationEvaluator } from './evaluators/summarization';\nimport { longTermExtractionEvaluator } from './evaluators/long-term-extraction';\nimport { shortTermMemoryProvider } from './providers/short-term-memory';\nimport { longTermMemoryProvider } from './providers/long-term-memory';\n// import { rememberAction } from './actions/remember';\nimport * as schema from './schemas/index';\n\nexport * from './types/index';\nexport * from './schemas/index';\nexport { MemoryService } from './services/memory-service';\n\n/**\n * Memory Plugin\n *\n * Advanced memory management plugin that provides:\n *\n * **Short-term Memory (Conversation Summarization)**:\n * - Automatically summarizes long conversations to reduce context size\n * - Retains recent messages while archiving older ones as summaries\n * - Configurable thresholds for when to summarize\n *\n * **Long-term Memory (Persistent Facts)**:\n * - Extracts and stores persistent facts about users\n * - Categorizes information (identity, expertise, preferences, etc.)\n * - Provides context-aware user profiles across all conversations\n *\n * **Components**:\n * - `MemoryService`: Manages all memory operations\n * - Evaluators: Process conversations to create summaries and extract facts\n * - Providers: Inject memory context into conversations\n * - Actions: Allow manual memory storage via user commands\n *\n * **Configuration** (via environment variables):\n * - `MEMORY_SUMMARIZATION_THRESHOLD`: Messages before summarization (default: 50)\n * - `MEMORY_RETAIN_RECENT`: Recent messages to keep (default: 10)\n * - `MEMORY_LONG_TERM_ENABLED`: Enable long-term extraction (default: true)\n * - `MEMORY_CONFIDENCE_THRESHOLD`: Minimum confidence to store (default: 0.7)\n *\n * **Database Tables**:\n * - `long_term_memories`: Persistent user facts\n * - `session_summaries`: Conversation summaries\n * - `memory_access_logs`: Optional usage tracking\n */\nexport const memoryPlugin: Plugin = {\n name: 'memory',\n description:\n 'Advanced memory management with conversation summarization and long-term persistent memory',\n\n services: [MemoryService],\n\n evaluators: [summarizationEvaluator, longTermExtractionEvaluator],\n\n providers: [longTermMemoryProvider, shortTermMemoryProvider],\n\n // actions: [rememberAction],\n\n // Export schema for dynamic migrations\n schema,\n};\n\nexport default memoryPlugin;\n"
|
|
15
15
|
],
|
|
16
|
-
"mappings": "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",
|
|
17
|
-
"debugId": "
|
|
16
|
+
"mappings": "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",
|
|
17
|
+
"debugId": "DC07601B16F2760064756E2164756E21",
|
|
18
18
|
"names": []
|
|
19
19
|
}
|
package/dist/node/index.node.js
CHANGED
|
@@ -897,7 +897,7 @@ var shortTermMemoryProvider = {
|
|
|
897
897
|
if (!memoryService) {
|
|
898
898
|
return {
|
|
899
899
|
data: { summaries: [], recentMessages: [], mode: "disabled" },
|
|
900
|
-
values: {
|
|
900
|
+
values: {},
|
|
901
901
|
text: ""
|
|
902
902
|
};
|
|
903
903
|
}
|
|
@@ -978,9 +978,7 @@ ${runText}`;
|
|
|
978
978
|
mode: "full_conversation"
|
|
979
979
|
},
|
|
980
980
|
values: {
|
|
981
|
-
|
|
982
|
-
recentMessages: "",
|
|
983
|
-
recentActionResults: ""
|
|
981
|
+
recentMessage: "No recent message available."
|
|
984
982
|
},
|
|
985
983
|
text: "No recent messages available"
|
|
986
984
|
};
|
|
@@ -1018,10 +1016,14 @@ ${runText}`;
|
|
|
1018
1016
|
mode: "full_conversation"
|
|
1019
1017
|
},
|
|
1020
1018
|
values: {
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1019
|
+
...(isPostFormat ? recentPosts : recentMessages) && {
|
|
1020
|
+
recentMessages: isPostFormat ? recentPosts : recentMessages
|
|
1021
|
+
},
|
|
1022
|
+
...recentPosts && { recentPosts },
|
|
1023
|
+
...actionResultsText && { recentActionResults: actionResultsText },
|
|
1024
|
+
...recentMessage && { recentMessage },
|
|
1025
|
+
...receivedMessageHeader && { receivedMessageHeader },
|
|
1026
|
+
...focusHeader && { focusHeader }
|
|
1025
1027
|
},
|
|
1026
1028
|
text: text4
|
|
1027
1029
|
};
|
|
@@ -1091,8 +1093,10 @@ ${runText}`;
|
|
|
1091
1093
|
mode: "summarized"
|
|
1092
1094
|
},
|
|
1093
1095
|
values: {
|
|
1094
|
-
sessionSummaries: summaryText,
|
|
1095
|
-
recentMessages: recentMessagesText
|
|
1096
|
+
...summaryText && { sessionSummaries: summaryText },
|
|
1097
|
+
...recentMessagesText && { recentMessages: recentMessagesText },
|
|
1098
|
+
...receivedMessageHeader && { receivedMessageHeader },
|
|
1099
|
+
...focusHeader && { focusHeader }
|
|
1096
1100
|
},
|
|
1097
1101
|
text: text4
|
|
1098
1102
|
};
|
|
@@ -1101,7 +1105,7 @@ ${runText}`;
|
|
|
1101
1105
|
logger4.error({ error }, "Error in shortTermMemoryProvider:");
|
|
1102
1106
|
return {
|
|
1103
1107
|
data: { summaries: [], recentMessages: [], mode: "error" },
|
|
1104
|
-
values: {
|
|
1108
|
+
values: {},
|
|
1105
1109
|
text: "Error retrieving conversation context."
|
|
1106
1110
|
};
|
|
1107
1111
|
}
|
|
@@ -1193,4 +1197,4 @@ export {
|
|
|
1193
1197
|
LongTermMemoryCategory
|
|
1194
1198
|
};
|
|
1195
1199
|
|
|
1196
|
-
//# debugId=
|
|
1200
|
+
//# debugId=C168790F41A1B4EE64756E2164756E21
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"import {\n type IAgentRuntime,\n type Memory,\n type Evaluator,\n logger,\n ModelType,\n composePromptFromState,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\nimport type { SummaryResult } from '../types/index';\n\n/**\n * Template for generating initial conversation summary\n */\nconst initialSummarizationTemplate = `# Task: Summarize Conversation\n\nYou are analyzing a conversation to create a concise summary that captures the key points, topics, and important details.\n\n# Recent Messages\n{{recentMessages}}\n\n# Instructions\nGenerate a summary that:\n1. Captures the main topics discussed\n2. Highlights key information shared\n3. Notes any decisions made or questions asked\n4. Maintains context for future reference\n5. Is concise but comprehensive\n\n**IMPORTANT**: Keep the summary under 2500 tokens. Be comprehensive but concise.\n\nAlso extract:\n- **Topics**: List of main topics discussed (comma-separated)\n- **Key Points**: Important facts or decisions (bullet points)\n\nRespond in this XML format:\n<summary>\n <text>Your comprehensive summary here</text>\n <topics>topic1, topic2, topic3</topics>\n <keyPoints>\n <point>First key point</point>\n <point>Second key point</point>\n </keyPoints>\n</summary>`;\n\n/**\n * Template for updating/condensing an existing summary\n */\nconst updateSummarizationTemplate = `# Task: Update and Condense Conversation Summary\n\nYou are updating an existing conversation summary with new messages, while keeping the total summary concise.\n\n# Existing Summary\n{{existingSummary}}\n\n# Existing Topics\n{{existingTopics}}\n\n# New Messages Since Last Summary\n{{newMessages}}\n\n# Instructions\nUpdate the summary by:\n1. Merging the existing summary with insights from the new messages\n2. Removing redundant or less important details to stay under the token limit\n3. Keeping the most important context and decisions\n4. Adding new topics if they emerge\n5. **CRITICAL**: Keep the ENTIRE updated summary under 2500 tokens\n\nThe goal is a rolling summary that captures the essence of the conversation without growing indefinitely.\n\nRespond in this XML format:\n<summary>\n <text>Your updated and condensed summary here</text>\n <topics>topic1, topic2, topic3</topics>\n <keyPoints>\n <point>First key point</point>\n <point>Second key point</point>\n </keyPoints>\n</summary>`;\n\n/**\n * Parse XML summary response\n */\nfunction parseSummaryXML(xml: string): SummaryResult {\n const summaryMatch = xml.match(/<text>([\\s\\S]*?)<\\/text>/);\n const topicsMatch = xml.match(/<topics>([\\s\\S]*?)<\\/topics>/);\n const keyPointsMatches = xml.matchAll(/<point>([\\s\\S]*?)<\\/point>/g);\n\n const summary = summaryMatch ? summaryMatch[1].trim() : 'Summary not available';\n const topics = topicsMatch\n ? topicsMatch[1]\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean)\n : [];\n const keyPoints = Array.from(keyPointsMatches).map((match) => match[1].trim());\n\n return { summary, topics, keyPoints };\n}\n\n/**\n * Short-term Memory Summarization Evaluator\n *\n * Automatically generates and updates conversation summaries when conversations\n * exceed the configured threshold (default: 5 messages).\n *\n * BEHAVIOR:\n * - Monitors message count per room\n * - Triggers when count >= threshold\n * - Creates initial summary for first batch of messages\n * - Updates/condenses existing summary as conversation continues\n * - Tracks offset to know which messages have been summarized\n *\n * INTEGRATION:\n * Works with shortTermMemoryProvider which:\n * - Shows full conversation when < threshold (no summarization needed)\n * - Shows summaries + recent messages when >= threshold (optimized context)\n *\n * This creates an adaptive system that starts with full context and seamlessly\n * transitions to summarization as conversations grow.\n */\nexport const summarizationEvaluator: Evaluator = {\n name: 'MEMORY_SUMMARIZATION',\n description: 'Automatically summarizes conversations to optimize context usage',\n similes: ['CONVERSATION_SUMMARY', 'CONTEXT_COMPRESSION', 'MEMORY_OPTIMIZATION'],\n alwaysRun: true,\n\n validate: async (runtime: IAgentRuntime, message: Memory): Promise<boolean> => {\n // Only run after actual messages (not during generation or on empty messages)\n if (!message.content?.text) {\n logger.debug('Skipping summarization: no message text');\n return false;\n }\n\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n logger.debug('Skipping summarization: memory service not available');\n return false;\n }\n\n const config = memoryService.getConfig();\n const currentMessageCount = await runtime.countMemories(message.roomId, false, 'messages');\n\n // Only summarize when we've reached the threshold\n // Before this, shortTermMemoryProvider shows full conversation\n const shouldSummarize = currentMessageCount >= config.shortTermSummarizationThreshold;\n\n logger.debug(\n {\n roomId: message.roomId,\n currentMessageCount,\n threshold: config.shortTermSummarizationThreshold,\n shouldSummarize,\n },\n 'Summarization validation check'\n );\n\n return shouldSummarize;\n },\n\n handler: async (runtime: IAgentRuntime, message: Memory): Promise<void> => {\n const memoryService = runtime.getService('memory') as MemoryService;\n if (!memoryService) {\n logger.error('MemoryService not found');\n return;\n }\n\n const config = memoryService.getConfig();\n const { roomId } = message;\n\n try {\n logger.info(`Starting summarization for room ${roomId}`);\n\n // Get the current summary (if any)\n const existingSummary = await memoryService.getCurrentSessionSummary(roomId);\n const lastOffset = existingSummary?.lastMessageOffset || 0;\n\n // Get total message count\n const totalMessageCount = await runtime.countMemories(roomId, false, 'messages');\n\n // Get new messages since last offset\n const newMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: config.shortTermSummarizationThreshold,\n unique: false,\n start: lastOffset,\n });\n\n if (newMessages.length === 0) {\n logger.debug('No new messages to summarize');\n return;\n }\n\n // Sort by timestamp\n const sortedMessages = newMessages.sort((a, b) => (a.createdAt || 0) - (b.createdAt || 0));\n\n // Format messages for summarization\n const formattedMessages = sortedMessages\n .map((msg) => {\n const sender = msg.entityId === runtime.agentId ? runtime.character.name : 'User';\n return `${sender}: ${msg.content.text || '[non-text message]'}`;\n })\n .join('\\n');\n\n // Generate or update summary using LLM\n const state = await runtime.composeState(message);\n let prompt: string;\n let template: string;\n\n if (existingSummary) {\n // Update existing summary\n template = updateSummarizationTemplate;\n prompt = composePromptFromState({\n state: {\n ...state,\n existingSummary: existingSummary.summary,\n existingTopics: existingSummary.topics?.join(', ') || 'None',\n newMessages: formattedMessages,\n },\n template,\n });\n } else {\n // Create initial summary\n template = initialSummarizationTemplate;\n prompt = composePromptFromState({\n state: {\n ...state,\n recentMessages: formattedMessages,\n },\n template,\n });\n }\n\n const response = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt,\n maxTokens: config.summaryMaxTokens || 2500,\n });\n\n const summaryResult = parseSummaryXML(response);\n\n logger.info(\n `${existingSummary ? 'Updated' : 'Generated'} summary: ${summaryResult.summary.substring(0, 100)}...`\n );\n\n // Calculate new offset (current total)\n const newOffset = totalMessageCount;\n\n // Get timing info\n const firstMessage = sortedMessages[0];\n const lastMessage = sortedMessages[sortedMessages.length - 1];\n\n const startTime = existingSummary\n ? existingSummary.startTime\n : firstMessage?.createdAt && firstMessage.createdAt > 0\n ? new Date(firstMessage.createdAt)\n : new Date();\n const endTime =\n lastMessage?.createdAt && lastMessage.createdAt > 0\n ? new Date(lastMessage.createdAt)\n : new Date();\n\n if (existingSummary) {\n // Update existing summary\n await memoryService.updateSessionSummary(existingSummary.id, {\n summary: summaryResult.summary,\n messageCount: existingSummary.messageCount + sortedMessages.length,\n lastMessageOffset: newOffset,\n endTime,\n topics: summaryResult.topics,\n metadata: {\n keyPoints: summaryResult.keyPoints,\n },\n });\n\n logger.info(\n `Updated summary for room ${roomId}: ${sortedMessages.length} new messages processed (offset: ${lastOffset} → ${newOffset})`\n );\n } else {\n // Create new summary\n await memoryService.storeSessionSummary({\n agentId: runtime.agentId,\n roomId,\n entityId: message.entityId !== runtime.agentId ? message.entityId : undefined,\n summary: summaryResult.summary,\n messageCount: sortedMessages.length,\n lastMessageOffset: newOffset,\n startTime,\n endTime,\n topics: summaryResult.topics,\n metadata: {\n keyPoints: summaryResult.keyPoints,\n },\n });\n\n logger.info(\n `Created new summary for room ${roomId}: ${sortedMessages.length} messages summarized (offset: 0 → ${newOffset})`\n );\n }\n\n // Note: We do NOT delete messages - they stay in the database\n // The offset tracks what's been summarized\n } catch (error) {\n logger.error({ error }, 'Error during summarization:');\n }\n },\n\n examples: [],\n};\n",
|
|
10
10
|
"import {\n type IAgentRuntime,\n type Memory,\n type Evaluator,\n logger,\n ModelType,\n composePromptFromState,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\nimport { LongTermMemoryCategory, type MemoryExtraction } from '../types/index';\n\n/**\n * Template for extracting long-term memories\n */\nconst extractionTemplate = `# Task: Extract Long-Term Memory\n\nYou are analyzing a conversation to extract facts that should be remembered long-term about the user.\n\n# Recent Messages\n{{recentMessages}}\n\n# Current Long-Term Memories\n{{existingMemories}}\n\n# Memory Categories\n1. **identity**: User's name, role, identity (e.g., \"I'm a data scientist\")\n2. **expertise**: User's skills, knowledge domains, or unfamiliarity with topics\n3. **projects**: Ongoing projects, past interactions, recurring topics\n4. **preferences**: Communication style, format preferences, verbosity, etc.\n5. **data_sources**: Frequently used files, databases, APIs\n6. **goals**: Broader intentions (e.g., \"preparing for interview\")\n7. **constraints**: User-defined rules or limitations\n8. **definitions**: Custom terms, acronyms, glossaries\n9. **behavioral_patterns**: How the user tends to interact\n\n# Instructions\nExtract any NEW information that should be remembered long-term. For each item:\n- Determine which category it belongs to\n- Write a clear, factual statement\n- Assess confidence (0.0 to 1.0)\n- Only include information explicitly stated or strongly implied\n\nIf there are no new long-term facts to extract, respond with <memories></memories>\n\nRespond in this XML format:\n<memories>\n <memory>\n <category>identity</category>\n <content>User is a software engineer specializing in backend development</content>\n <confidence>0.95</confidence>\n </memory>\n <memory>\n <category>preferences</category>\n <content>Prefers code examples over lengthy explanations</content>\n <confidence>0.85</confidence>\n </memory>\n</memories>`;\n\n/**\n * Parse XML memory extraction response\n */\nfunction parseMemoryExtractionXML(xml: string): MemoryExtraction[] {\n const memoryMatches = xml.matchAll(\n /<memory>[\\s\\S]*?<category>(.*?)<\\/category>[\\s\\S]*?<content>(.*?)<\\/content>[\\s\\S]*?<confidence>(.*?)<\\/confidence>[\\s\\S]*?<\\/memory>/g\n );\n\n const extractions: MemoryExtraction[] = [];\n\n for (const match of memoryMatches) {\n const category = match[1].trim() as LongTermMemoryCategory;\n const content = match[2].trim();\n const confidence = parseFloat(match[3].trim());\n\n // Validate category\n if (!Object.values(LongTermMemoryCategory).includes(category)) {\n logger.warn(`Invalid memory category: ${category}`);\n continue;\n }\n\n if (content && !isNaN(confidence)) {\n extractions.push({ category, content, confidence });\n }\n }\n\n return extractions;\n}\n\n/**\n * Long-term Memory Extraction Evaluator\n *\n * Analyzes conversations to extract persistent facts about users that should be remembered\n * across all future conversations.\n */\nexport const longTermExtractionEvaluator: Evaluator = {\n name: 'LONG_TERM_MEMORY_EXTRACTION',\n description: 'Extracts long-term facts about users from conversations',\n similes: ['MEMORY_EXTRACTION', 'FACT_LEARNING', 'USER_PROFILING'],\n alwaysRun: true,\n\n validate: async (runtime: IAgentRuntime, message: Memory): Promise<boolean> => {\n logger.debug(`Validating long-term memory extraction for message: ${message.content?.text}`);\n // Only run on user messages (not agent's own)\n if (message.entityId === runtime.agentId) {\n logger.debug(\"Skipping long-term memory extraction for agent's own message\");\n return false;\n }\n\n if (!message.content?.text) {\n logger.debug('Skipping long-term memory extraction for message without text');\n return false;\n }\n\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n logger.debug('MemoryService not found');\n return false;\n }\n\n const config = memoryService.getConfig();\n if (!config.longTermExtractionEnabled) {\n logger.debug('Long-term memory extraction is disabled');\n return false;\n }\n\n // Count total messages from this entity in this room\n const currentMessageCount = await runtime.countMemories(message.roomId, false, 'messages');\n\n const shouldRun = await memoryService.shouldRunExtraction(\n message.entityId,\n message.roomId,\n currentMessageCount\n );\n logger.debug(`Should run extraction: ${shouldRun}`);\n return shouldRun;\n },\n\n handler: async (runtime: IAgentRuntime, message: Memory): Promise<void> => {\n const memoryService = runtime.getService('memory') as MemoryService;\n if (!memoryService) {\n logger.error('MemoryService not found');\n return;\n }\n\n const config = memoryService.getConfig();\n const { entityId, roomId } = message;\n\n try {\n logger.info(`Extracting long-term memories for entity ${entityId}`);\n\n // Get recent conversation context\n const recentMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: 20,\n unique: false,\n });\n\n const formattedMessages = recentMessages\n .sort((a, b) => (a.createdAt || 0) - (b.createdAt || 0))\n .map((msg) => {\n const sender = msg.entityId === runtime.agentId ? runtime.character.name : 'User';\n return `${sender}: ${msg.content.text || '[non-text message]'}`;\n })\n .join('\\n');\n\n // Get existing long-term memories\n const existingMemories = await memoryService.getLongTermMemories(entityId, undefined, 30);\n const formattedExisting =\n existingMemories.length > 0\n ? existingMemories\n .map((m) => `[${m.category}] ${m.content} (confidence: ${m.confidence})`)\n .join('\\n')\n : 'None yet';\n\n // Generate extraction using LLM\n const state = await runtime.composeState(message);\n const prompt = composePromptFromState({\n state: {\n ...state,\n recentMessages: formattedMessages,\n existingMemories: formattedExisting,\n },\n template: extractionTemplate,\n });\n\n const response = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt,\n });\n\n const extractions = parseMemoryExtractionXML(response);\n\n logger.info(`Extracted ${extractions.length} long-term memories`);\n\n // Store each extracted memory\n for (const extraction of extractions) {\n if (extraction.confidence >= config.longTermConfidenceThreshold) {\n await memoryService.storeLongTermMemory({\n agentId: runtime.agentId,\n entityId,\n category: extraction.category,\n content: extraction.content,\n confidence: extraction.confidence,\n source: 'conversation',\n metadata: {\n roomId,\n extractedAt: new Date().toISOString(),\n },\n });\n\n logger.info(\n `Stored long-term memory: [${extraction.category}] ${extraction.content.substring(0, 50)}...`\n );\n } else {\n logger.debug(\n `Skipped low-confidence memory: ${extraction.content} (confidence: ${extraction.confidence})`\n );\n }\n }\n\n // Update the extraction checkpoint after successful extraction\n const currentMessageCount = await runtime.countMemories(roomId, false, 'messages');\n await memoryService.setLastExtractionCheckpoint(entityId, roomId, currentMessageCount);\n logger.debug(\n `Updated extraction checkpoint to ${currentMessageCount} for entity ${entityId} in room ${roomId}`\n );\n } catch (error) {\n logger.error({ error }, 'Error during long-term memory extraction:');\n }\n },\n\n examples: [],\n};\n",
|
|
11
11
|
"import type { UUID } from '@elizaos/core';\n\n/**\n * Categories of long-term memory\n */\nexport enum LongTermMemoryCategory {\n IDENTITY = 'identity', // User identity, name, roles\n EXPERTISE = 'expertise', // Domain knowledge and familiarity\n PROJECTS = 'projects', // Past interactions and recurring topics\n PREFERENCES = 'preferences', // User preferences for interaction style\n DATA_SOURCES = 'data_sources', // Frequently used files, databases, APIs\n GOALS = 'goals', // User's broader intentions and objectives\n CONSTRAINTS = 'constraints', // User-defined rules and limitations\n DEFINITIONS = 'definitions', // Custom terms, acronyms, glossaries\n BEHAVIORAL_PATTERNS = 'behavioral_patterns', // User interaction patterns\n}\n\n/**\n * Long-term memory entry\n */\nexport interface LongTermMemory {\n id: UUID;\n agentId: UUID;\n entityId: UUID; // The user/entity this memory is about\n category: LongTermMemoryCategory;\n content: string; // The actual memory content\n metadata?: Record<string, unknown>; // Additional structured data\n embedding?: number[]; // Vector embedding for semantic search\n confidence?: number; // Confidence score (0-1)\n source?: string; // Where this memory came from (conversation, manual, etc.)\n createdAt: Date;\n updatedAt: Date;\n lastAccessedAt?: Date;\n accessCount?: number;\n similarity?: number; // Optional similarity score from vector search\n}\n\n/**\n * Short-term memory session summary\n */\nexport interface SessionSummary {\n id: UUID;\n agentId: UUID;\n roomId: UUID;\n entityId?: UUID; // Optional: specific user in the session\n summary: string; // The summarized conversation\n messageCount: number; // Number of messages summarized\n lastMessageOffset: number; // Index of last summarized message (for pagination)\n startTime: Date; // Timestamp of first message\n endTime: Date; // Timestamp of last message\n topics?: string[]; // Main topics discussed\n metadata?: Record<string, unknown>;\n embedding?: number[]; // Vector embedding of the summary\n createdAt: Date;\n updatedAt: Date; // Track when summary was last updated\n}\n\n/**\n * Configuration for memory plugin\n */\nexport interface MemoryConfig {\n // Short-term memory settings\n shortTermSummarizationThreshold: number; // Messages count before summarization\n shortTermRetainRecent: number; // Number of recent messages to keep after summarization\n\n // Long-term memory settings\n longTermExtractionEnabled: boolean;\n longTermVectorSearchEnabled: boolean;\n longTermConfidenceThreshold: number; // Minimum confidence to store\n longTermExtractionInterval: number; // Run extraction every N messages (e.g., 5, 10, 15...)\n\n // Summarization settings\n summaryModelType?: string;\n summaryMaxTokens?: number;\n}\n\n/**\n * Memory extraction result from evaluator\n */\nexport interface MemoryExtraction {\n category: LongTermMemoryCategory;\n content: string;\n confidence: number;\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Summary generation result\n */\nexport interface SummaryResult {\n summary: string;\n topics: string[];\n keyPoints: string[];\n}\n",
|
|
12
|
-
"import {\n addHeader,\n ChannelType,\n CustomMetadata,\n formatMessages,\n formatPosts,\n getEntityDetails,\n type Entity,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type State,\n logger,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\n\n/**\n * Short-term Memory Provider\n *\n * Adaptive conversation context provider that optimizes based on conversation length:\n *\n * SHORT CONVERSATIONS (< threshold, default 5 messages):\n * - Shows full message history with complete context\n * - No summarization overhead for brief chats\n *\n * LONG CONVERSATIONS (>= threshold):\n * - Shows summaries of older conversation segments\n * - Shows recent unsummarized messages in full\n * - Optimizes context window while preserving information\n *\n * This provider can REPLACE recentMessagesProvider when plugin-memory is active,\n * providing superior context management for both short and long conversations.\n */\nexport const shortTermMemoryProvider: Provider = {\n name: 'SHORT_TERM_MEMORY',\n description: 'Adaptive conversation context with smart summarization',\n position: 95, // Run before recentMessagesProvider (100) to potentially replace it\n\n get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n try {\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n // No memory service - return empty\n return {\n data: { summaries: [], recentMessages: [], mode: 'disabled' },\n values: { sessionSummaries: '', recentMessages: '' },\n text: '',\n };\n }\n\n const { roomId } = message;\n const config = memoryService.getConfig();\n\n // Get total message count to determine mode\n const totalMessageCount = await runtime.countMemories(roomId, false, 'messages');\n\n // ADAPTIVE LOGIC: Use full messages for short conversations, summaries for long ones\n if (totalMessageCount < config.shortTermSummarizationThreshold) {\n // ========== SHORT CONVERSATION MODE ==========\n // Just show all messages - no summarization needed\n\n const conversationLength = runtime.getConversationLength();\n\n // Fetch all necessary data in parallel\n const [entitiesData, room, recentMessagesData] = await Promise.all([\n getEntityDetails({ runtime, roomId }),\n runtime.getRoom(roomId),\n runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: conversationLength,\n unique: false,\n }),\n ]);\n\n // Separate action results from dialogue messages\n const actionResultMessages = recentMessagesData.filter(\n (msg) => msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result'\n );\n\n const dialogueMessages = recentMessagesData.filter(\n (msg) =>\n !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n // Determine format based on room type\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Format messages in parallel\n const [formattedRecentMessages, formattedRecentPosts] = await Promise.all([\n formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n }),\n formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n }),\n ]);\n\n // Format action results if any\n let actionResultsText = '';\n if (actionResultMessages.length > 0) {\n const groupedByRun = new Map<string, Memory[]>();\n\n for (const mem of actionResultMessages) {\n const runId: string = String(mem.content?.runId || 'unknown');\n if (!groupedByRun.has(runId)) {\n groupedByRun.set(runId, []);\n }\n groupedByRun.get(runId)?.push(mem);\n }\n\n const formattedActionResults = Array.from(groupedByRun.entries())\n .slice(-3) // Show last 3 runs\n .map(([runId, memories]) => {\n const sortedMemories = memories.sort(\n (a: Memory, b: Memory) => (a.createdAt || 0) - (b.createdAt || 0)\n );\n\n const thought = sortedMemories[0]?.content?.planThought || '';\n const runText = sortedMemories\n .map((mem: Memory) => {\n const actionName = mem.content?.actionName || 'Unknown';\n const status = mem.content?.actionStatus || 'unknown';\n const planStep = mem.content?.planStep || '';\n const text = mem.content?.text || '';\n const error = mem.content?.error || '';\n\n let memText = ` - ${actionName} (${status})`;\n if (planStep) memText += ` [${planStep}]`;\n if (error) {\n memText += `: Error - ${error}`;\n } else if (text && text !== `Executed action: ${actionName}`) {\n memText += `: ${text}`;\n }\n\n return memText;\n })\n .join('\\n');\n\n return `**Action Run ${runId.slice(0, 8)}**${\n thought ? ` - \"${thought}\"` : ''\n }\\n${runText}`;\n })\n .join('\\n\\n');\n\n actionResultsText = formattedActionResults\n ? addHeader('# Recent Action Executions', formattedActionResults)\n : '';\n }\n\n // Create formatted text with headers\n const recentPosts =\n formattedRecentPosts && formattedRecentPosts.length > 0\n ? addHeader('# Posts in Thread', formattedRecentPosts)\n : '';\n\n const recentMessages =\n formattedRecentMessages && formattedRecentMessages.length > 0\n ? addHeader('# Conversation Messages', formattedRecentMessages)\n : '';\n\n // Handle empty conversation case\n if (\n !recentPosts &&\n !recentMessages &&\n dialogueMessages.length === 0 &&\n !message.content.text\n ) {\n return {\n data: {\n summaries: [],\n recentMessages: [],\n actionResults: [],\n mode: 'full_conversation',\n },\n values: {\n sessionSummaries: '',\n recentMessages: '',\n recentActionResults: '',\n },\n text: 'No recent messages available',\n };\n }\n\n // Get most recent message for context\n let recentMessage = 'No recent message available.';\n if (dialogueMessages.length > 0) {\n const mostRecentMessage = [...dialogueMessages].sort(\n (a, b) => (b.createdAt || 0) - (a.createdAt || 0)\n )[0];\n\n const formattedSingleMessage = formatMessages({\n messages: [mostRecentMessage],\n entities: entitiesData,\n });\n\n if (formattedSingleMessage) {\n recentMessage = formattedSingleMessage;\n }\n }\n\n // Build received message header\n const metaData = message.metadata as CustomMetadata;\n const senderName =\n entitiesData.find((entity: Entity) => entity.id === message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${senderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${senderName}**. Keep your answer relevant to that message. Do not repeat earlier replies unless the sender asks again.`\n )\n : '';\n\n // Combine all sections\n const text = [\n isPostFormat ? recentPosts : recentMessages,\n actionResultsText,\n recentMessages || recentPosts || message.content.text ? receivedMessageHeader : '',\n recentMessages || recentPosts || message.content.text ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n summaries: [],\n recentMessages: dialogueMessages,\n actionResults: actionResultMessages,\n mode: 'full_conversation',\n },\n values: {\n sessionSummaries: '',\n recentMessages: isPostFormat ? recentPosts : recentMessages,\n recentActionResults: actionResultsText,\n recentMessage,\n },\n text,\n };\n } else {\n // ========== LONG CONVERSATION MODE ==========\n // Use summaries + recent unsummarized messages\n\n const currentSummary = await memoryService.getCurrentSessionSummary(roomId);\n const lastOffset = currentSummary?.lastMessageOffset || 0;\n\n // Get recent unsummarized messages (after the last summary offset)\n const unsummarizedMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: config.shortTermRetainRecent,\n unique: false,\n start: lastOffset,\n });\n\n // Get entity details for formatting\n const entitiesData = await getEntityDetails({ runtime, roomId });\n const room = await runtime.getRoom(roomId);\n\n // Determine format\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Format unsummarized messages\n let recentMessagesText = '';\n if (unsummarizedMessages.length > 0) {\n const dialogueMessages = unsummarizedMessages.filter(\n (msg) =>\n !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n if (isPostFormat) {\n recentMessagesText = formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n });\n } else {\n recentMessagesText = formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n });\n }\n\n if (recentMessagesText) {\n recentMessagesText = addHeader('# Recent Messages', recentMessagesText);\n }\n }\n\n // Format summary\n let summaryText = '';\n if (currentSummary) {\n const messageRange = `${currentSummary.messageCount} messages`;\n const timeRange = new Date(currentSummary.startTime).toLocaleDateString();\n\n summaryText = `**Previous Conversation** (${messageRange}, ${timeRange})\\n`;\n summaryText += currentSummary.summary;\n\n if (currentSummary.topics && currentSummary.topics.length > 0) {\n summaryText += `\\n*Topics: ${currentSummary.topics.join(', ')}*`;\n }\n\n summaryText = addHeader('# Conversation Summary', summaryText);\n }\n\n // Build received message header\n const metaData = message.metadata as CustomMetadata;\n const senderName =\n entitiesData.find((entity: Entity) => entity.id === message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${senderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${senderName}**. Keep your answer relevant to that message.`\n )\n : '';\n\n // Combine sections\n const text = [\n summaryText,\n recentMessagesText,\n hasReceivedMessage ? receivedMessageHeader : '',\n hasReceivedMessage ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n summaries: currentSummary ? [currentSummary] : [],\n recentMessages: unsummarizedMessages,\n mode: 'summarized',\n },\n values: {\n sessionSummaries: summaryText,\n recentMessages: recentMessagesText,\n },\n text,\n };\n }\n } catch (error) {\n logger.error({ error }, 'Error in shortTermMemoryProvider:');\n return {\n data: { summaries: [], recentMessages: [], mode: 'error' },\n values: { sessionSummaries: '', recentMessages: '' },\n text: 'Error retrieving conversation context.',\n };\n }\n },\n};\n",
|
|
12
|
+
"import {\n addHeader,\n ChannelType,\n CustomMetadata,\n formatMessages,\n formatPosts,\n getEntityDetails,\n type Entity,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type State,\n logger,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\n\n/**\n * Short-term Memory Provider\n *\n * Adaptive conversation context provider that optimizes based on conversation length:\n *\n * SHORT CONVERSATIONS (< threshold, default 5 messages):\n * - Shows full message history with complete context\n * - No summarization overhead for brief chats\n *\n * LONG CONVERSATIONS (>= threshold):\n * - Shows summaries of older conversation segments\n * - Shows recent unsummarized messages in full\n * - Optimizes context window while preserving information\n *\n * This provider can REPLACE recentMessagesProvider when plugin-memory is active,\n * providing superior context management for both short and long conversations.\n */\nexport const shortTermMemoryProvider: Provider = {\n name: 'SHORT_TERM_MEMORY',\n description: 'Adaptive conversation context with smart summarization',\n position: 95, // Run before recentMessagesProvider (100) to potentially replace it\n\n get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n try {\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n // No memory service - return empty\n return {\n data: { summaries: [], recentMessages: [], mode: 'disabled' },\n values: {},\n text: '',\n };\n }\n\n const { roomId } = message;\n const config = memoryService.getConfig();\n\n // Get total message count to determine mode\n const totalMessageCount = await runtime.countMemories(roomId, false, 'messages');\n\n // ADAPTIVE LOGIC: Use full messages for short conversations, summaries for long ones\n if (totalMessageCount < config.shortTermSummarizationThreshold) {\n // ========== SHORT CONVERSATION MODE ==========\n // Just show all messages - no summarization needed\n\n const conversationLength = runtime.getConversationLength();\n\n // Fetch all necessary data in parallel\n const [entitiesData, room, recentMessagesData] = await Promise.all([\n getEntityDetails({ runtime, roomId }),\n runtime.getRoom(roomId),\n runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: conversationLength,\n unique: false,\n }),\n ]);\n\n // Separate action results from dialogue messages\n const actionResultMessages = recentMessagesData.filter(\n (msg) => msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result'\n );\n\n const dialogueMessages = recentMessagesData.filter(\n (msg) =>\n !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n // Determine format based on room type\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Format messages in parallel\n const [formattedRecentMessages, formattedRecentPosts] = await Promise.all([\n formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n }),\n formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n }),\n ]);\n\n // Format action results if any\n let actionResultsText = '';\n if (actionResultMessages.length > 0) {\n const groupedByRun = new Map<string, Memory[]>();\n\n for (const mem of actionResultMessages) {\n const runId: string = String(mem.content?.runId || 'unknown');\n if (!groupedByRun.has(runId)) {\n groupedByRun.set(runId, []);\n }\n groupedByRun.get(runId)?.push(mem);\n }\n\n const formattedActionResults = Array.from(groupedByRun.entries())\n .slice(-3) // Show last 3 runs\n .map(([runId, memories]) => {\n const sortedMemories = memories.sort(\n (a: Memory, b: Memory) => (a.createdAt || 0) - (b.createdAt || 0)\n );\n\n const thought = sortedMemories[0]?.content?.planThought || '';\n const runText = sortedMemories\n .map((mem: Memory) => {\n const actionName = mem.content?.actionName || 'Unknown';\n const status = mem.content?.actionStatus || 'unknown';\n const planStep = mem.content?.planStep || '';\n const text = mem.content?.text || '';\n const error = mem.content?.error || '';\n\n let memText = ` - ${actionName} (${status})`;\n if (planStep) memText += ` [${planStep}]`;\n if (error) {\n memText += `: Error - ${error}`;\n } else if (text && text !== `Executed action: ${actionName}`) {\n memText += `: ${text}`;\n }\n\n return memText;\n })\n .join('\\n');\n\n return `**Action Run ${runId.slice(0, 8)}**${\n thought ? ` - \"${thought}\"` : ''\n }\\n${runText}`;\n })\n .join('\\n\\n');\n\n actionResultsText = formattedActionResults\n ? addHeader('# Recent Action Executions', formattedActionResults)\n : '';\n }\n\n // Create formatted text with headers\n const recentPosts =\n formattedRecentPosts && formattedRecentPosts.length > 0\n ? addHeader('# Posts in Thread', formattedRecentPosts)\n : '';\n\n const recentMessages =\n formattedRecentMessages && formattedRecentMessages.length > 0\n ? addHeader('# Conversation Messages', formattedRecentMessages)\n : '';\n\n // Handle empty conversation case\n if (\n !recentPosts &&\n !recentMessages &&\n dialogueMessages.length === 0 &&\n !message.content.text\n ) {\n return {\n data: {\n summaries: [],\n recentMessages: [],\n actionResults: [],\n mode: 'full_conversation',\n },\n values: {\n recentMessage: 'No recent message available.',\n },\n text: 'No recent messages available',\n };\n }\n\n // Get most recent message for context\n let recentMessage = 'No recent message available.';\n if (dialogueMessages.length > 0) {\n const mostRecentMessage = [...dialogueMessages].sort(\n (a, b) => (b.createdAt || 0) - (a.createdAt || 0)\n )[0];\n\n const formattedSingleMessage = formatMessages({\n messages: [mostRecentMessage],\n entities: entitiesData,\n });\n\n if (formattedSingleMessage) {\n recentMessage = formattedSingleMessage;\n }\n }\n\n // Build received message header\n const metaData = message.metadata as CustomMetadata;\n const senderName =\n entitiesData.find((entity: Entity) => entity.id === message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${senderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${senderName}**. Keep your answer relevant to that message. Do not repeat earlier replies unless the sender asks again.`\n )\n : '';\n\n // Combine all sections\n const text = [\n isPostFormat ? recentPosts : recentMessages,\n actionResultsText,\n recentMessages || recentPosts || message.content.text ? receivedMessageHeader : '',\n recentMessages || recentPosts || message.content.text ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n summaries: [],\n recentMessages: dialogueMessages,\n actionResults: actionResultMessages,\n mode: 'full_conversation',\n },\n values: {\n ...((isPostFormat ? recentPosts : recentMessages) && {\n recentMessages: isPostFormat ? recentPosts : recentMessages,\n }),\n ...(recentPosts && { recentPosts }),\n ...(actionResultsText && { recentActionResults: actionResultsText }),\n ...(recentMessage && { recentMessage }),\n ...(receivedMessageHeader && { receivedMessageHeader }),\n ...(focusHeader && { focusHeader }),\n },\n text,\n };\n } else {\n // ========== LONG CONVERSATION MODE ==========\n // Use summaries + recent unsummarized messages\n\n const currentSummary = await memoryService.getCurrentSessionSummary(roomId);\n const lastOffset = currentSummary?.lastMessageOffset || 0;\n\n // Get recent unsummarized messages (after the last summary offset)\n const unsummarizedMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: config.shortTermRetainRecent,\n unique: false,\n start: lastOffset,\n });\n\n // Get entity details for formatting\n const entitiesData = await getEntityDetails({ runtime, roomId });\n const room = await runtime.getRoom(roomId);\n\n // Determine format\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Format unsummarized messages\n let recentMessagesText = '';\n if (unsummarizedMessages.length > 0) {\n const dialogueMessages = unsummarizedMessages.filter(\n (msg) =>\n !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n if (isPostFormat) {\n recentMessagesText = formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n });\n } else {\n recentMessagesText = formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n });\n }\n\n if (recentMessagesText) {\n recentMessagesText = addHeader('# Recent Messages', recentMessagesText);\n }\n }\n\n // Format summary\n let summaryText = '';\n if (currentSummary) {\n const messageRange = `${currentSummary.messageCount} messages`;\n const timeRange = new Date(currentSummary.startTime).toLocaleDateString();\n\n summaryText = `**Previous Conversation** (${messageRange}, ${timeRange})\\n`;\n summaryText += currentSummary.summary;\n\n if (currentSummary.topics && currentSummary.topics.length > 0) {\n summaryText += `\\n*Topics: ${currentSummary.topics.join(', ')}*`;\n }\n\n summaryText = addHeader('# Conversation Summary', summaryText);\n }\n\n // Build received message header\n const metaData = message.metadata as CustomMetadata;\n const senderName =\n entitiesData.find((entity: Entity) => entity.id === message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${senderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${senderName}**. Keep your answer relevant to that message.`\n )\n : '';\n\n // Combine sections\n const text = [\n summaryText,\n recentMessagesText,\n hasReceivedMessage ? receivedMessageHeader : '',\n hasReceivedMessage ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n summaries: currentSummary ? [currentSummary] : [],\n recentMessages: unsummarizedMessages,\n mode: 'summarized',\n },\n values: {\n ...(summaryText && { sessionSummaries: summaryText }),\n ...(recentMessagesText && { recentMessages: recentMessagesText }),\n ...(receivedMessageHeader && { receivedMessageHeader }),\n ...(focusHeader && { focusHeader }),\n },\n text,\n };\n }\n } catch (error) {\n logger.error({ error }, 'Error in shortTermMemoryProvider:');\n return {\n data: { summaries: [], recentMessages: [], mode: 'error' },\n values: {},\n text: 'Error retrieving conversation context.',\n };\n }\n },\n};\n",
|
|
13
13
|
"import {\n type IAgentRuntime,\n type Memory,\n type Provider,\n type State,\n logger,\n addHeader,\n} from '@elizaos/core';\nimport { MemoryService } from '../services/memory-service';\n\n/**\n * Long-term Memory Provider\n *\n * Provides persistent facts about the user that have been learned across\n * all conversations. This includes:\n * - User identity and roles\n * - Domain expertise\n * - Preferences\n * - Goals and projects\n * - Custom definitions\n * - Behavioral patterns\n *\n * This provider enriches the context with relevant long-term information\n * to make the agent's responses more personalized and contextually aware.\n */\nexport const longTermMemoryProvider: Provider = {\n name: 'LONG_TERM_MEMORY',\n description: 'Persistent facts and preferences about the user',\n position: 50, // Run early to establish user context\n\n get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n try {\n const memoryService = runtime.getService('memory') as MemoryService | null;\n if (!memoryService) {\n return {\n data: { memories: [] },\n values: { longTermMemories: '' },\n text: '',\n };\n }\n\n const { entityId } = message;\n\n // Skip for agent's own messages\n if (entityId === runtime.agentId) {\n return {\n data: { memories: [] },\n values: { longTermMemories: '' },\n text: '',\n };\n }\n\n // Get long-term memories for this entity\n const memories = await memoryService.getLongTermMemories(entityId, undefined, 25);\n\n if (memories.length === 0) {\n return {\n data: { memories: [] },\n values: { longTermMemories: '' },\n text: '',\n };\n }\n\n // Format memories using the service's built-in formatter\n const formattedMemories = await memoryService.getFormattedLongTermMemories(entityId);\n\n const text = addHeader('# What I Know About You', formattedMemories);\n\n // Create a summary of memory categories for quick reference\n const categoryCounts = new Map<string, number>();\n for (const memory of memories) {\n const count = categoryCounts.get(memory.category) || 0;\n categoryCounts.set(memory.category, count + 1);\n }\n\n const categoryList = Array.from(categoryCounts.entries())\n .map(([cat, count]) => `${cat}: ${count}`)\n .join(', ');\n\n return {\n data: {\n memories,\n categoryCounts: Object.fromEntries(categoryCounts),\n },\n values: {\n longTermMemories: text,\n memoryCategories: categoryList,\n },\n text,\n };\n } catch (error) {\n logger.error({ error }, 'Error in longTermMemoryProvider:');\n return {\n data: { memories: [] },\n values: { longTermMemories: '' },\n text: '',\n };\n }\n },\n};\n",
|
|
14
14
|
"import type { Plugin } from '@elizaos/core';\nimport { MemoryService } from './services/memory-service';\nimport { summarizationEvaluator } from './evaluators/summarization';\nimport { longTermExtractionEvaluator } from './evaluators/long-term-extraction';\nimport { shortTermMemoryProvider } from './providers/short-term-memory';\nimport { longTermMemoryProvider } from './providers/long-term-memory';\n// import { rememberAction } from './actions/remember';\nimport * as schema from './schemas/index';\n\nexport * from './types/index';\nexport * from './schemas/index';\nexport { MemoryService } from './services/memory-service';\n\n/**\n * Memory Plugin\n *\n * Advanced memory management plugin that provides:\n *\n * **Short-term Memory (Conversation Summarization)**:\n * - Automatically summarizes long conversations to reduce context size\n * - Retains recent messages while archiving older ones as summaries\n * - Configurable thresholds for when to summarize\n *\n * **Long-term Memory (Persistent Facts)**:\n * - Extracts and stores persistent facts about users\n * - Categorizes information (identity, expertise, preferences, etc.)\n * - Provides context-aware user profiles across all conversations\n *\n * **Components**:\n * - `MemoryService`: Manages all memory operations\n * - Evaluators: Process conversations to create summaries and extract facts\n * - Providers: Inject memory context into conversations\n * - Actions: Allow manual memory storage via user commands\n *\n * **Configuration** (via environment variables):\n * - `MEMORY_SUMMARIZATION_THRESHOLD`: Messages before summarization (default: 50)\n * - `MEMORY_RETAIN_RECENT`: Recent messages to keep (default: 10)\n * - `MEMORY_LONG_TERM_ENABLED`: Enable long-term extraction (default: true)\n * - `MEMORY_CONFIDENCE_THRESHOLD`: Minimum confidence to store (default: 0.7)\n *\n * **Database Tables**:\n * - `long_term_memories`: Persistent user facts\n * - `session_summaries`: Conversation summaries\n * - `memory_access_logs`: Optional usage tracking\n */\nexport const memoryPlugin: Plugin = {\n name: 'memory',\n description:\n 'Advanced memory management with conversation summarization and long-term persistent memory',\n\n services: [MemoryService],\n\n evaluators: [summarizationEvaluator, longTermExtractionEvaluator],\n\n providers: [longTermMemoryProvider, shortTermMemoryProvider],\n\n // actions: [rememberAction],\n\n // Export schema for dynamic migrations\n schema,\n};\n\nexport default memoryPlugin;\n"
|
|
15
15
|
],
|
|
16
|
-
"mappings": ";;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAOA,+BAAwB;;;;;;;;;;;ACPxB;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeO,IAAM,mBAAmB,QAC9B,sBACA;AAAA,EACE,IAAI,QAAQ,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE,WAAW;AAAA,EAC7C,SAAS,QAAQ,YAAY,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ;AAAA,EACrD,UAAU,QAAQ,aAAa,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ;AAAA,EACvD,UAAU,KAAK,UAAU,EAAE,QAAQ;AAAA,EACnC,SAAS,KAAK,SAAS,EAAE,QAAQ;AAAA,EACjC,UAAU,MAAM,UAAU;AAAA,EAC1B,WAAW,KAAK,WAAW,EAAE,MAAM;AAAA,EACnC,YAAY,KAAK,YAAY,EAAE,QAAQ,CAAG;AAAA,EAC1C,QAAQ,KAAK,QAAQ;AAAA,EACrB,WAAW,UAAU,YAAY,EAC9B,QAAQ,UAAU,EAClB,QAAQ;AAAA,EACX,WAAW,UAAU,YAAY,EAC9B,QAAQ,UAAU,EAClB,QAAQ;AAAA,EACX,gBAAgB,UAAU,kBAAkB;AAAA,EAC5C,aAAa,QAAQ,cAAc,EAAE,QAAQ,CAAC;AAChD,GACA,CAAC,WAAW;AAAA,EACV,gBAAgB,MAAM,qCAAqC,EAAE,GAAG,MAAM,SAAS,MAAM,QAAQ;AAAA,EAC7F,aAAa,MAAM,iCAAiC,EAAE,GAAG,MAAM,QAAQ;AAAA,EACvE,eAAe,MAAM,mCAAmC,EAAE,GAAG,MAAM,UAAU;AAAA,EAC7E,cAAc,MAAM,mCAAmC,EAAE,GAAG,MAAM,SAAS;AAC7E,EACF;;AC3CA,gBAAS;AACT;AAAA,aACE;AAAA,UACA;AAAA,aACA;AAAA,WACA;AAAA,UACA;AAAA,WACA;AAAA,aACA;AAAA,eACA;AAAA;AAOK,IAAM,mBAAmB,SAC9B,qBACA;AAAA,EACE,IAAI,SAAQ,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE,WAAW;AAAA,EAC7C,SAAS,SAAQ,YAAY,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ;AAAA,EACrD,QAAQ,SAAQ,WAAW,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ;AAAA,EACnD,UAAU,SAAQ,aAAa,EAAE,QAAQ,GAAG,CAAC;AAAA,EAC7C,SAAS,MAAK,SAAS,EAAE,QAAQ;AAAA,EACjC,cAAc,SAAQ,eAAe,EAAE,QAAQ;AAAA,EAC/C,mBAAmB,SAAQ,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,EACrE,WAAW,WAAU,YAAY,EAAE,QAAQ;AAAA,EAC3C,SAAS,WAAU,UAAU,EAAE,QAAQ;AAAA,EACvC,QAAQ,OAAM,QAAQ;AAAA,EACtB,UAAU,OAAM,UAAU;AAAA,EAC1B,WAAW,MAAK,WAAW,EAAE,MAAM;AAAA,EACnC,WAAW,WAAU,YAAY,EAC9B,QAAQ,WAAU,EAClB,QAAQ;AAAA,EACX,WAAW,WAAU,YAAY,EAC9B,QAAQ,WAAU,EAClB,QAAQ;AACb,GACA,CAAC,WAAW;AAAA,EACV,cAAc,OAAM,kCAAkC,EAAE,GAAG,MAAM,SAAS,MAAM,MAAM;AAAA,EACtF,WAAW,OAAM,8BAA8B,EAAE,GAAG,MAAM,QAAQ;AAAA,EAClE,cAAc,OAAM,kCAAkC,EAAE,GAAG,MAAM,SAAS;AAC5E,EACF;;AC3CA,gBAAS;AACT,oBAAS,kBAAS,kBAAM,kBAAS,gBAAM,mBAAO,uBAAS;AAKhD,IAAM,mBAAmB,SAC9B,sBACA;AAAA,EACE,IAAI,SAAQ,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE,WAAW;AAAA,EAC7C,SAAS,SAAQ,YAAY,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ;AAAA,EACrD,UAAU,SAAQ,aAAa,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ;AAAA,EACvD,YAAY,MAAK,aAAa,EAAE,QAAQ;AAAA,EACxC,YAAY,WAAU,aAAa,EAChC,QAAQ,WAAU,EAClB,QAAQ;AAAA,EACX,QAAQ,SAAQ,WAAW,EAAE,QAAQ,GAAG,CAAC;AAAA,EACzC,gBAAgB,MAAK,iBAAiB;AAAA,EACtC,WAAW,SAAQ,YAAY;AACjC,GACA,CAAC,WAAW;AAAA,EACV,WAAW,OAAM,+BAA+B,EAAE,GAAG,MAAM,QAAQ;AAAA,EACnE,UAAU,OAAM,8BAA8B,EAAE,GAAG,MAAM,OAAO;AAAA,EAChE,eAAe,OAAM,oCAAoC,EAAE,GAAG,MAAM,UAAU;AAChF,EACF;;AHLO,MAAM,sBAAsB,QAAQ;AAAA,SAClC,cAA+B;AAAA,EAE9B;AAAA,EACA;AAAA,EACA;AAAA,EAER,wBACE;AAAA,EAEF,WAAW,CAAC,SAAyB;AAAA,IACnC,MAAM,OAAO;AAAA,IACb,KAAK,uBAAuB,IAAI;AAAA,IAChC,KAAK,4BAA4B,IAAI;AAAA,IACrC,KAAK,eAAe;AAAA,MAClB,iCAAiC;AAAA,MACjC,uBAAuB;AAAA,MACvB,2BAA2B;AAAA,MAC3B,6BAA6B;AAAA,MAC7B,6BAA6B;AAAA,MAC7B,4BAA4B;AAAA,MAC5B,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,IACpB;AAAA;AAAA,cAGW,MAAK,CAAC,SAA0C;AAAA,IAC3D,MAAM,UAAU,IAAI,cAAc,OAAO;AAAA,IACzC,MAAM,QAAQ,WAAW,OAAO;AAAA,IAChC,OAAO;AAAA;AAAA,OAGH,KAAI,GAAkB;AAAA,IAE1B,OAAO,KAAK,uBAAuB;AAAA;AAAA,OAG/B,WAAU,CAAC,SAAuC;AAAA,IACtD,KAAK,UAAU;AAAA,IAGf,MAAM,YAAY,QAAQ,WAAW,gCAAgC;AAAA,IACrE,IAAI,WAAW;AAAA,MACb,KAAK,aAAa,kCAAkC,SAAS,WAAW,EAAE;AAAA,IAC5E;AAAA,IAEA,MAAM,eAAe,QAAQ,WAAW,sBAAsB;AAAA,IAC9D,IAAI,cAAc;AAAA,MAChB,KAAK,aAAa,wBAAwB,SAAS,cAAc,EAAE;AAAA,IACrE;AAAA,IAEA,MAAM,kBAAkB,QAAQ,WAAW,0BAA0B;AAAA,IAErE,IAAI,oBAAoB,SAAS;AAAA,MAC/B,KAAK,aAAa,4BAA4B;AAAA,IAChD,EAAO,SAAI,oBAAoB,QAAQ;AAAA,MACrC,KAAK,aAAa,4BAA4B;AAAA,IAChD;AAAA,IAGA,MAAM,sBAAsB,QAAQ,WAAW,6BAA6B;AAAA,IAC5E,IAAI,qBAAqB;AAAA,MACvB,KAAK,aAAa,8BAA8B,WAAW,mBAAmB;AAAA,IAChF;AAAA,IAEA,OAAO,KACL;AAAA,MACE,wBAAwB,KAAK,aAAa;AAAA,MAC1C,cAAc,KAAK,aAAa;AAAA,MAChC,iBAAiB,KAAK,aAAa;AAAA,MACnC,oBAAoB,KAAK,aAAa;AAAA,MACtC,qBAAqB,KAAK,aAAa;AAAA,IACzC,GACA,2BACF;AAAA;AAAA,EAMM,KAAK,GAAQ;AAAA,IACnB,MAAM,KAAM,KAAK,QAAgB;AAAA,IACjC,IAAI,CAAC,IAAI;AAAA,MACP,MAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AAAA,IACA,OAAO;AAAA;AAAA,EAMT,SAAS,GAAiB;AAAA,IACxB,OAAO,KAAK,KAAK,aAAa;AAAA;AAAA,EAMhC,YAAY,CAAC,SAAsC;AAAA,IACjD,KAAK,eAAe,KAAK,KAAK,iBAAiB,QAAQ;AAAA;AAAA,EAMzD,qBAAqB,CAAC,QAAsB;AAAA,IAC1C,MAAM,UAAU,KAAK,qBAAqB,IAAI,MAAM,KAAK;AAAA,IACzD,MAAM,WAAW,UAAU;AAAA,IAC3B,KAAK,qBAAqB,IAAI,QAAQ,QAAQ;AAAA,IAC9C,OAAO;AAAA;AAAA,EAMT,iBAAiB,CAAC,QAAoB;AAAA,IACpC,KAAK,qBAAqB,IAAI,QAAQ,CAAC;AAAA;AAAA,OAMnC,gBAAe,CAAC,QAAgC;AAAA,IACpD,MAAM,QAAQ,MAAM,KAAK,QAAQ,cAAc,QAAQ,OAAO,UAAU;AAAA,IACxE,OAAO,SAAS,KAAK,aAAa;AAAA;AAAA,EAM5B,gBAAgB,CAAC,UAAgB,QAAsB;AAAA,IAC7D,OAAO,qBAAqB,YAAY;AAAA;AAAA,OAOpC,4BAA2B,CAAC,UAAgB,QAA+B;AAAA,IAC/E,MAAM,MAAM,KAAK,iBAAiB,UAAU,MAAM;AAAA,IAGlD,MAAM,SAAS,KAAK,0BAA0B,IAAI,GAAG;AAAA,IACrD,IAAI,WAAW,WAAW;AAAA,MACxB,OAAO;AAAA,IACT;AAAA,IAGA,IAAI;AAAA,MACF,MAAM,aAAa,MAAM,KAAK,QAAQ,SAAiB,GAAG;AAAA,MAC1D,MAAM,eAAe,cAAc;AAAA,MAGnC,KAAK,0BAA0B,IAAI,KAAK,YAAY;AAAA,MAEpD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,OAAO,KAAK,EAAE,MAAM,GAAG,gDAAgD;AAAA,MACvE,OAAO;AAAA;AAAA;AAAA,OAQL,4BAA2B,CAC/B,UACA,QACA,cACe;AAAA,IACf,MAAM,MAAM,KAAK,iBAAiB,UAAU,MAAM;AAAA,IAGlD,KAAK,0BAA0B,IAAI,KAAK,YAAY;AAAA,IAGpD,IAAI;AAAA,MACF,MAAM,KAAK,QAAQ,SAAS,KAAK,YAAY;AAAA,MAC7C,OAAO,MACL,iCAAiC,oBAAoB,2BAA2B,cAClF;AAAA,MACA,OAAO,OAAO;AAAA,MACd,OAAO,MAAM,EAAE,MAAM,GAAG,kDAAkD;AAAA;AAAA;AAAA,OAOxE,oBAAmB,CACvB,UACA,QACA,qBACkB;AAAA,IAClB,MAAM,WAAW,KAAK,aAAa;AAAA,IACnC,MAAM,iBAAiB,MAAM,KAAK,4BAA4B,UAAU,MAAM;AAAA,IAG9E,MAAM,oBAAoB,KAAK,MAAM,sBAAsB,QAAQ,IAAI;AAAA,IAGvE,MAAM,YAAY,uBAAuB,YAAY,oBAAoB;AAAA,IAEzE,OAAO,MACL;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,GACA,kBACF;AAAA,IAEA,OAAO;AAAA;AAAA,OAMH,oBAAmB,CACvB,QACyB;AAAA,IACzB,MAAM,KAAK,KAAK,MAAM;AAAA,IAEtB,MAAM,KAAK,OAAO,WAAW;AAAA,IAC7B,MAAM,MAAM,IAAI;AAAA,IAEhB,MAAM,YAA4B;AAAA,MAChC;AAAA,MACA,WAAW;AAAA,MACX,WAAW;AAAA,MACX,aAAa;AAAA,SACV;AAAA,IACL;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,GAAG,OAAO,gBAAgB,EAAE,OAAO;AAAA,QACvC,IAAI,UAAU;AAAA,QACd,SAAS,UAAU;AAAA,QACnB,UAAU,UAAU;AAAA,QACpB,UAAU,UAAU;AAAA,QACpB,SAAS,UAAU;AAAA,QACnB,UAAU,UAAU,YAAY,CAAC;AAAA,QACjC,WAAW,UAAU;AAAA,QACrB,YAAY,UAAU;AAAA,QACtB,QAAQ,UAAU;AAAA,QAClB,aAAa,UAAU;AAAA,QACvB,WAAW;AAAA,QACX,WAAW;AAAA,QACX,gBAAgB,UAAU;AAAA,MAC5B,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,OAAO,MAAM,EAAE,MAAM,GAAG,kCAAkC;AAAA,MAC1D,MAAM;AAAA;AAAA,IAGR,OAAO,KAAK,4BAA4B,UAAU,uBAAuB,UAAU,UAAU;AAAA,IAC7F,OAAO;AAAA;AAAA,OAMH,oBAAmB,CACvB,UACA,UACA,QAAgB,IACW;AAAA,IAC3B,MAAM,KAAK,KAAK,MAAM;AAAA,IAEtB,MAAM,aAAa;AAAA,MACjB,GAAG,iBAAiB,SAAS,KAAK,QAAQ,OAAO;AAAA,MACjD,GAAG,iBAAiB,UAAU,QAAQ;AAAA,IACxC;AAAA,IAEA,IAAI,UAAU;AAAA,MACZ,WAAW,KAAK,GAAG,iBAAiB,UAAU,QAAQ,CAAC;AAAA,IACzD;AAAA,IAEA,MAAM,UAAU,MAAM,GACnB,OAAO,EACP,KAAK,gBAAgB,EACrB,MAAM,IAAI,GAAG,UAAU,CAAC,EACxB,QAAQ,KAAK,iBAAiB,UAAU,GAAG,KAAK,iBAAiB,SAAS,CAAC,EAC3E,MAAM,KAAK;AAAA,IAEd,OAAO,QAAQ,IAAI,CAAC,SAAS;AAAA,MAC3B,IAAI,IAAI;AAAA,MACR,SAAS,IAAI;AAAA,MACb,UAAU,IAAI;AAAA,MACd,UAAU,IAAI;AAAA,MACd,SAAS,IAAI;AAAA,MACb,UAAU,IAAI;AAAA,MACd,WAAW,IAAI;AAAA,MACf,YAAY,IAAI;AAAA,MAChB,QAAQ,IAAI;AAAA,MACZ,WAAW,IAAI;AAAA,MACf,WAAW,IAAI;AAAA,MACf,gBAAgB,IAAI;AAAA,MACpB,aAAa,IAAI;AAAA,IACnB,EAAE;AAAA;AAAA,OAME,qBAAoB,CACxB,IACA,SACe;AAAA,IACf,MAAM,KAAK,KAAK,MAAM;AAAA,IAEtB,MAAM,aAAkB;AAAA,MACtB,WAAW,IAAI;AAAA,IACjB;AAAA,IAEA,IAAI,QAAQ,YAAY,WAAW;AAAA,MACjC,WAAW,UAAU,QAAQ;AAAA,IAC/B;AAAA,IAEA,IAAI,QAAQ,aAAa,WAAW;AAAA,MAClC,WAAW,WAAW,QAAQ;AAAA,IAChC;AAAA,IAEA,IAAI,QAAQ,eAAe,WAAW;AAAA,MACpC,WAAW,aAAa,QAAQ;AAAA,IAClC;AAAA,IAEA,IAAI,QAAQ,cAAc,WAAW;AAAA,MACnC,WAAW,YAAY,QAAQ;AAAA,IACjC;AAAA,IAEA,IAAI,QAAQ,mBAAmB,WAAW;AAAA,MACxC,WAAW,iBAAiB,QAAQ;AAAA,IACtC;AAAA,IAEA,IAAI,QAAQ,gBAAgB,WAAW;AAAA,MACrC,WAAW,cAAc,QAAQ;AAAA,IACnC;AAAA,IAEA,MAAM,GAAG,OAAO,gBAAgB,EAAE,IAAI,UAAU,EAAE,MAAM,GAAG,iBAAiB,IAAI,EAAE,CAAC;AAAA,IAEnF,OAAO,KAAK,6BAA6B,IAAI;AAAA;AAAA,OAMzC,qBAAoB,CAAC,IAAyB;AAAA,IAClD,MAAM,KAAK,KAAK,MAAM;AAAA,IAEtB,MAAM,GAAG,OAAO,gBAAgB,EAAE,MAAM,GAAG,iBAAiB,IAAI,EAAE,CAAC;AAAA,IAEnE,OAAO,KAAK,6BAA6B,IAAI;AAAA;AAAA,OAMzC,yBAAwB,CAAC,QAA8C;AAAA,IAC3E,MAAM,KAAK,KAAK,MAAM;AAAA,IAEtB,MAAM,UAAU,MAAM,GACnB,OAAO,EACP,KAAK,gBAAgB,EACrB,MACC,IAAI,GAAG,iBAAiB,SAAS,KAAK,QAAQ,OAAO,GAAG,GAAG,iBAAiB,QAAQ,MAAM,CAAC,CAC7F,EACC,QAAQ,KAAK,iBAAiB,SAAS,CAAC,EACxC,MAAM,CAAC;AAAA,IAEV,IAAI,QAAQ,WAAW,GAAG;AAAA,MACxB,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,MAAM,QAAQ;AAAA,IACpB,OAAO;AAAA,MACL,IAAI,IAAI;AAAA,MACR,SAAS,IAAI;AAAA,MACb,QAAQ,IAAI;AAAA,MACZ,UAAU,IAAI;AAAA,MACd,SAAS,IAAI;AAAA,MACb,cAAc,IAAI;AAAA,MAClB,mBAAmB,IAAI;AAAA,MACvB,WAAW,IAAI;AAAA,MACf,SAAS,IAAI;AAAA,MACb,QAAS,IAAI,UAAuB,CAAC;AAAA,MACrC,UAAU,IAAI;AAAA,MACd,WAAW,IAAI;AAAA,MACf,WAAW,IAAI;AAAA,MACf,WAAW,IAAI;AAAA,IACjB;AAAA;AAAA,OAMI,oBAAmB,CACvB,SACyB;AAAA,IACzB,MAAM,KAAK,KAAK,MAAM;AAAA,IAEtB,MAAM,KAAK,OAAO,WAAW;AAAA,IAC7B,MAAM,MAAM,IAAI;AAAA,IAEhB,MAAM,aAA6B;AAAA,MACjC;AAAA,MACA,WAAW;AAAA,MACX,WAAW;AAAA,SACR;AAAA,IACL;AAAA,IAEA,MAAM,GAAG,OAAO,gBAAgB,EAAE,OAAO;AAAA,MACvC,IAAI,WAAW;AAAA,MACf,SAAS,WAAW;AAAA,MACpB,QAAQ,WAAW;AAAA,MACnB,UAAU,WAAW,YAAY;AAAA,MACjC,SAAS,WAAW;AAAA,MACpB,cAAc,WAAW;AAAA,MACzB,mBAAmB,WAAW;AAAA,MAC9B,WAAW,WAAW;AAAA,MACtB,SAAS,WAAW;AAAA,MACpB,QAAQ,WAAW,UAAU,CAAC;AAAA,MAC9B,UAAU,WAAW,YAAY,CAAC;AAAA,MAClC,WAAW,WAAW;AAAA,MACtB,WAAW;AAAA,MACX,WAAW;AAAA,IACb,CAAC;AAAA,IAED,OAAO,KAAK,mCAAmC,WAAW,QAAQ;AAAA,IAClE,OAAO;AAAA;AAAA,OAMH,qBAAoB,CACxB,IACA,SACe;AAAA,IACf,MAAM,KAAK,KAAK,MAAM;AAAA,IAEtB,MAAM,aAAkB;AAAA,MACtB,WAAW,IAAI;AAAA,IACjB;AAAA,IAEA,IAAI,QAAQ,YAAY,WAAW;AAAA,MACjC,WAAW,UAAU,QAAQ;AAAA,IAC/B;AAAA,IAEA,IAAI,QAAQ,iBAAiB,WAAW;AAAA,MACtC,WAAW,eAAe,QAAQ;AAAA,IACpC;AAAA,IAEA,IAAI,QAAQ,sBAAsB,WAAW;AAAA,MAC3C,WAAW,oBAAoB,QAAQ;AAAA,IACzC;AAAA,IAEA,IAAI,QAAQ,YAAY,WAAW;AAAA,MACjC,WAAW,UAAU,QAAQ;AAAA,IAC/B;AAAA,IAEA,IAAI,QAAQ,WAAW,WAAW;AAAA,MAChC,WAAW,SAAS,QAAQ;AAAA,IAC9B;AAAA,IAEA,IAAI,QAAQ,aAAa,WAAW;AAAA,MAClC,WAAW,WAAW,QAAQ;AAAA,IAChC;AAAA,IAEA,IAAI,QAAQ,cAAc,WAAW;AAAA,MACnC,WAAW,YAAY,QAAQ;AAAA,IACjC;AAAA,IAEA,MAAM,GAAG,OAAO,gBAAgB,EAAE,IAAI,UAAU,EAAE,MAAM,GAAG,iBAAiB,IAAI,EAAE,CAAC;AAAA,IAEnF,OAAO,KAAK,4BAA4B,IAAI;AAAA;AAAA,OAMxC,oBAAmB,CAAC,QAAc,QAAgB,GAA8B;AAAA,IACpF,MAAM,KAAK,KAAK,MAAM;AAAA,IAEtB,MAAM,UAAU,MAAM,GACnB,OAAO,EACP,KAAK,gBAAgB,EACrB,MACC,IAAI,GAAG,iBAAiB,SAAS,KAAK,QAAQ,OAAO,GAAG,GAAG,iBAAiB,QAAQ,MAAM,CAAC,CAC7F,EACC,QAAQ,KAAK,iBAAiB,SAAS,CAAC,EACxC,MAAM,KAAK;AAAA,IAEd,OAAO,QAAQ,IAAI,CAAC,SAAS;AAAA,MAC3B,IAAI,IAAI;AAAA,MACR,SAAS,IAAI;AAAA,MACb,QAAQ,IAAI;AAAA,MACZ,UAAU,IAAI;AAAA,MACd,SAAS,IAAI;AAAA,MACb,cAAc,IAAI;AAAA,MAClB,mBAAmB,IAAI;AAAA,MACvB,WAAW,IAAI;AAAA,MACf,SAAS,IAAI;AAAA,MACb,QAAS,IAAI,UAAuB,CAAC;AAAA,MACrC,UAAU,IAAI;AAAA,MACd,WAAW,IAAI;AAAA,MACf,WAAW,IAAI;AAAA,MACf,WAAW,IAAI;AAAA,IACjB,EAAE;AAAA;AAAA,OAME,uBAAsB,CAC1B,UACA,gBACA,QAAgB,GAChB,iBAAyB,KACE;AAAA,IAC3B,IAAI,CAAC,KAAK,aAAa,6BAA6B;AAAA,MAClD,OAAO,KAAK,+DAA+D;AAAA,MAC3E,OAAO,KAAK,oBAAoB,UAAU,WAAW,KAAK;AAAA,IAC5D;AAAA,IAEA,MAAM,KAAK,KAAK,MAAM;AAAA,IAEtB,IAAI;AAAA,MAEF,MAAM,cAAc,eAAe,IAAI,CAAC,MACtC,OAAO,SAAS,CAAC,IAAI,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC9C;AAAA,MAGA,MAAM,aAAa,YAAmB,eACpC,iBAAiB,WACjB,WACF;AAAA,MAEA,MAAM,aAAa;AAAA,QACjB,GAAG,iBAAiB,SAAS,KAAK,QAAQ,OAAO;AAAA,QACjD,GAAG,iBAAiB,UAAU,QAAQ;AAAA,QACtC,OAAM,iBAAiB;AAAA,MACzB;AAAA,MAGA,IAAI,iBAAiB,GAAG;AAAA,QACtB,WAAW,KAAK,IAAI,YAAY,cAAc,CAAC;AAAA,MACjD;AAAA,MAEA,MAAM,UAAU,MAAM,GACnB,OAAO;AAAA,QACN,QAAQ;AAAA,QACR;AAAA,MACF,CAAC,EACA,KAAK,gBAAgB,EACrB,MAAM,IAAI,GAAG,UAAU,CAAC,EACxB,QAAQ,KAAK,UAAU,CAAC,EACxB,MAAM,KAAK;AAAA,MAEd,OAAO,QAAQ,IAAI,CAAC,SAAS;AAAA,QAC3B,IAAI,IAAI,OAAO;AAAA,QACf,SAAS,IAAI,OAAO;AAAA,QACpB,UAAU,IAAI,OAAO;AAAA,QACrB,UAAU,IAAI,OAAO;AAAA,QACrB,SAAS,IAAI,OAAO;AAAA,QACpB,UAAU,IAAI,OAAO;AAAA,QACrB,WAAW,IAAI,OAAO;AAAA,QACtB,YAAY,IAAI,OAAO;AAAA,QACvB,QAAQ,IAAI,OAAO;AAAA,QACnB,WAAW,IAAI,OAAO;AAAA,QACtB,WAAW,IAAI,OAAO;AAAA,QACtB,gBAAgB,IAAI,OAAO;AAAA,QAC3B,aAAa,IAAI,OAAO;AAAA,QACxB,YAAY,IAAI;AAAA,MAClB,EAAE;AAAA,MACF,OAAO,OAAO;AAAA,MACd,OAAO,KAAK,EAAE,MAAM,GAAG,uDAAuD;AAAA,MAC9E,OAAO,KAAK,oBAAoB,UAAU,WAAW,KAAK;AAAA;AAAA;AAAA,OAOxD,6BAA4B,CAAC,UAAiC;AAAA,IAClE,MAAM,WAAW,MAAM,KAAK,oBAAoB,UAAU,WAAW,EAAE;AAAA,IAEvE,IAAI,SAAS,WAAW,GAAG;AAAA,MACzB,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,UAAU,IAAI;AAAA,IAEpB,WAAW,UAAU,UAAU;AAAA,MAC7B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,GAAG;AAAA,QACjC,QAAQ,IAAI,OAAO,UAAU,CAAC,CAAC;AAAA,MACjC;AAAA,MACA,QAAQ,IAAI,OAAO,QAAQ,GAAG,KAAK,MAAM;AAAA,IAC3C;AAAA,IAGA,MAAM,WAAqB,CAAC;AAAA,IAE5B,YAAY,UAAU,qBAAqB,QAAQ,QAAQ,GAAG;AAAA,MAC5D,MAAM,eAAe,SAClB,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,GAAG;AAAA,MAEX,MAAM,QAAQ,iBAAiB,IAAI,CAAC,MAAM,KAAK,EAAE,SAAS,EAAE,KAAK;AAAA,CAAI;AAAA,MACrE,SAAS,KAAK,KAAK;AAAA,EAAoB,OAAO;AAAA,IAChD;AAAA,IAEA,OAAO,SAAS,KAAK;AAAA;AAAA,CAAM;AAAA;AAE/B;;;AIloBA;AAAA,YAIE;AAAA;AAAA;AAAA;AAUF,IAAM,+BAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkCrC,IAAM,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCpC,SAAS,eAAe,CAAC,KAA4B;AAAA,EACnD,MAAM,eAAe,IAAI,MAAM,0BAA0B;AAAA,EACzD,MAAM,cAAc,IAAI,MAAM,8BAA8B;AAAA,EAC5D,MAAM,mBAAmB,IAAI,SAAS,6BAA6B;AAAA,EAEnE,MAAM,UAAU,eAAe,aAAa,GAAG,KAAK,IAAI;AAAA,EACxD,MAAM,SAAS,cACX,YAAY,GACT,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,OAAO,IACjB,CAAC;AAAA,EACL,MAAM,YAAY,MAAM,KAAK,gBAAgB,EAAE,IAAI,CAAC,UAAU,MAAM,GAAG,KAAK,CAAC;AAAA,EAE7E,OAAO,EAAE,SAAS,QAAQ,UAAU;AAAA;AAwB/B,IAAM,yBAAoC;AAAA,EAC/C,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS,CAAC,wBAAwB,uBAAuB,qBAAqB;AAAA,EAC9E,WAAW;AAAA,EAEX,UAAU,OAAO,SAAwB,YAAsC;AAAA,IAE7E,IAAI,CAAC,QAAQ,SAAS,MAAM;AAAA,MAC1B,QAAO,MAAM,yCAAyC;AAAA,MACtD,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,gBAAgB,QAAQ,WAAW,QAAQ;AAAA,IACjD,IAAI,CAAC,eAAe;AAAA,MAClB,QAAO,MAAM,sDAAsD;AAAA,MACnE,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,SAAS,cAAc,UAAU;AAAA,IACvC,MAAM,sBAAsB,MAAM,QAAQ,cAAc,QAAQ,QAAQ,OAAO,UAAU;AAAA,IAIzF,MAAM,kBAAkB,uBAAuB,OAAO;AAAA,IAEtD,QAAO,MACL;AAAA,MACE,QAAQ,QAAQ;AAAA,MAChB;AAAA,MACA,WAAW,OAAO;AAAA,MAClB;AAAA,IACF,GACA,gCACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAGT,SAAS,OAAO,SAAwB,YAAmC;AAAA,IACzE,MAAM,gBAAgB,QAAQ,WAAW,QAAQ;AAAA,IACjD,IAAI,CAAC,eAAe;AAAA,MAClB,QAAO,MAAM,yBAAyB;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,cAAc,UAAU;AAAA,IACvC,QAAQ,WAAW;AAAA,IAEnB,IAAI;AAAA,MACF,QAAO,KAAK,mCAAmC,QAAQ;AAAA,MAGvD,MAAM,kBAAkB,MAAM,cAAc,yBAAyB,MAAM;AAAA,MAC3E,MAAM,aAAa,iBAAiB,qBAAqB;AAAA,MAGzD,MAAM,oBAAoB,MAAM,QAAQ,cAAc,QAAQ,OAAO,UAAU;AAAA,MAG/E,MAAM,cAAc,MAAM,QAAQ,YAAY;AAAA,QAC5C,WAAW;AAAA,QACX;AAAA,QACA,OAAO,OAAO;AAAA,QACd,QAAQ;AAAA,QACR,OAAO;AAAA,MACT,CAAC;AAAA,MAED,IAAI,YAAY,WAAW,GAAG;AAAA,QAC5B,QAAO,MAAM,8BAA8B;AAAA,QAC3C;AAAA,MACF;AAAA,MAGA,MAAM,iBAAiB,YAAY,KAAK,CAAC,GAAG,OAAO,EAAE,aAAa,MAAM,EAAE,aAAa,EAAE;AAAA,MAGzF,MAAM,oBAAoB,eACvB,IAAI,CAAC,QAAQ;AAAA,QACZ,MAAM,SAAS,IAAI,aAAa,QAAQ,UAAU,QAAQ,UAAU,OAAO;AAAA,QAC3E,OAAO,GAAG,WAAW,IAAI,QAAQ,QAAQ;AAAA,OAC1C,EACA,KAAK;AAAA,CAAI;AAAA,MAGZ,MAAM,QAAQ,MAAM,QAAQ,aAAa,OAAO;AAAA,MAChD,IAAI;AAAA,MACJ,IAAI;AAAA,MAEJ,IAAI,iBAAiB;AAAA,QAEnB,WAAW;AAAA,QACX,SAAS,uBAAuB;AAAA,UAC9B,OAAO;AAAA,eACF;AAAA,YACH,iBAAiB,gBAAgB;AAAA,YACjC,gBAAgB,gBAAgB,QAAQ,KAAK,IAAI,KAAK;AAAA,YACtD,aAAa;AAAA,UACf;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH,EAAO;AAAA,QAEL,WAAW;AAAA,QACX,SAAS,uBAAuB;AAAA,UAC9B,OAAO;AAAA,eACF;AAAA,YACH,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,QACF,CAAC;AAAA;AAAA,MAGH,MAAM,WAAW,MAAM,QAAQ,SAAS,UAAU,YAAY;AAAA,QAC5D;AAAA,QACA,WAAW,OAAO,oBAAoB;AAAA,MACxC,CAAC;AAAA,MAED,MAAM,gBAAgB,gBAAgB,QAAQ;AAAA,MAE9C,QAAO,KACL,GAAG,kBAAkB,YAAY,wBAAwB,cAAc,QAAQ,UAAU,GAAG,GAAG,MACjG;AAAA,MAGA,MAAM,YAAY;AAAA,MAGlB,MAAM,eAAe,eAAe;AAAA,MACpC,MAAM,cAAc,eAAe,eAAe,SAAS;AAAA,MAE3D,MAAM,YAAY,kBACd,gBAAgB,YAChB,cAAc,aAAa,aAAa,YAAY,IAClD,IAAI,KAAK,aAAa,SAAS,IAC/B,IAAI;AAAA,MACV,MAAM,UACJ,aAAa,aAAa,YAAY,YAAY,IAC9C,IAAI,KAAK,YAAY,SAAS,IAC9B,IAAI;AAAA,MAEV,IAAI,iBAAiB;AAAA,QAEnB,MAAM,cAAc,qBAAqB,gBAAgB,IAAI;AAAA,UAC3D,SAAS,cAAc;AAAA,UACvB,cAAc,gBAAgB,eAAe,eAAe;AAAA,UAC5D,mBAAmB;AAAA,UACnB;AAAA,UACA,QAAQ,cAAc;AAAA,UACtB,UAAU;AAAA,YACR,WAAW,cAAc;AAAA,UAC3B;AAAA,QACF,CAAC;AAAA,QAED,QAAO,KACL,4BAA4B,WAAW,eAAe,0CAA0C,gBAAe,YACjH;AAAA,MACF,EAAO;AAAA,QAEL,MAAM,cAAc,oBAAoB;AAAA,UACtC,SAAS,QAAQ;AAAA,UACjB;AAAA,UACA,UAAU,QAAQ,aAAa,QAAQ,UAAU,QAAQ,WAAW;AAAA,UACpE,SAAS,cAAc;AAAA,UACvB,cAAc,eAAe;AAAA,UAC7B,mBAAmB;AAAA,UACnB;AAAA,UACA;AAAA,UACA,QAAQ,cAAc;AAAA,UACtB,UAAU;AAAA,YACR,WAAW,cAAc;AAAA,UAC3B;AAAA,QACF,CAAC;AAAA,QAED,QAAO,KACL,gCAAgC,WAAW,eAAe,2CAA0C,YACtG;AAAA;AAAA,MAKF,OAAO,OAAO;AAAA,MACd,QAAO,MAAM,EAAE,MAAM,GAAG,6BAA6B;AAAA;AAAA;AAAA,EAIzD,UAAU,CAAC;AACb;;;ACrTA;AAAA,YAIE;AAAA,eACA;AAAA,4BACA;AAAA;;;ACDK,IAAK;AAAA,CAAL,CAAK,4BAAL;AAAA,EACL,sCAAW;AAAA,EACX,uCAAY;AAAA,EACZ,sCAAW;AAAA,EACX,yCAAc;AAAA,EACd,0CAAe;AAAA,EACf,mCAAQ;AAAA,EACR,yCAAc;AAAA,EACd,yCAAc;AAAA,EACd,iDAAsB;AAAA,GATZ;;;ADSZ,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+C3B,SAAS,wBAAwB,CAAC,KAAiC;AAAA,EACjE,MAAM,gBAAgB,IAAI,SACxB,wIACF;AAAA,EAEA,MAAM,cAAkC,CAAC;AAAA,EAEzC,WAAW,SAAS,eAAe;AAAA,IACjC,MAAM,WAAW,MAAM,GAAG,KAAK;AAAA,IAC/B,MAAM,UAAU,MAAM,GAAG,KAAK;AAAA,IAC9B,MAAM,aAAa,WAAW,MAAM,GAAG,KAAK,CAAC;AAAA,IAG7C,IAAI,CAAC,OAAO,OAAO,sBAAsB,EAAE,SAAS,QAAQ,GAAG;AAAA,MAC7D,QAAO,KAAK,4BAA4B,UAAU;AAAA,MAClD;AAAA,IACF;AAAA,IAEA,IAAI,WAAW,CAAC,MAAM,UAAU,GAAG;AAAA,MACjC,YAAY,KAAK,EAAE,UAAU,SAAS,WAAW,CAAC;AAAA,IACpD;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AASF,IAAM,8BAAyC;AAAA,EACpD,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS,CAAC,qBAAqB,iBAAiB,gBAAgB;AAAA,EAChE,WAAW;AAAA,EAEX,UAAU,OAAO,SAAwB,YAAsC;AAAA,IAC7E,QAAO,MAAM,uDAAuD,QAAQ,SAAS,MAAM;AAAA,IAE3F,IAAI,QAAQ,aAAa,QAAQ,SAAS;AAAA,MACxC,QAAO,MAAM,8DAA8D;AAAA,MAC3E,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,CAAC,QAAQ,SAAS,MAAM;AAAA,MAC1B,QAAO,MAAM,+DAA+D;AAAA,MAC5E,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,gBAAgB,QAAQ,WAAW,QAAQ;AAAA,IACjD,IAAI,CAAC,eAAe;AAAA,MAClB,QAAO,MAAM,yBAAyB;AAAA,MACtC,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,SAAS,cAAc,UAAU;AAAA,IACvC,IAAI,CAAC,OAAO,2BAA2B;AAAA,MACrC,QAAO,MAAM,yCAAyC;AAAA,MACtD,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,sBAAsB,MAAM,QAAQ,cAAc,QAAQ,QAAQ,OAAO,UAAU;AAAA,IAEzF,MAAM,YAAY,MAAM,cAAc,oBACpC,QAAQ,UACR,QAAQ,QACR,mBACF;AAAA,IACA,QAAO,MAAM,0BAA0B,WAAW;AAAA,IAClD,OAAO;AAAA;AAAA,EAGT,SAAS,OAAO,SAAwB,YAAmC;AAAA,IACzE,MAAM,gBAAgB,QAAQ,WAAW,QAAQ;AAAA,IACjD,IAAI,CAAC,eAAe;AAAA,MAClB,QAAO,MAAM,yBAAyB;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,cAAc,UAAU;AAAA,IACvC,QAAQ,UAAU,WAAW;AAAA,IAE7B,IAAI;AAAA,MACF,QAAO,KAAK,4CAA4C,UAAU;AAAA,MAGlE,MAAM,iBAAiB,MAAM,QAAQ,YAAY;AAAA,QAC/C,WAAW;AAAA,QACX;AAAA,QACA,OAAO;AAAA,QACP,QAAQ;AAAA,MACV,CAAC;AAAA,MAED,MAAM,oBAAoB,eACvB,KAAK,CAAC,GAAG,OAAO,EAAE,aAAa,MAAM,EAAE,aAAa,EAAE,EACtD,IAAI,CAAC,QAAQ;AAAA,QACZ,MAAM,SAAS,IAAI,aAAa,QAAQ,UAAU,QAAQ,UAAU,OAAO;AAAA,QAC3E,OAAO,GAAG,WAAW,IAAI,QAAQ,QAAQ;AAAA,OAC1C,EACA,KAAK;AAAA,CAAI;AAAA,MAGZ,MAAM,mBAAmB,MAAM,cAAc,oBAAoB,UAAU,WAAW,EAAE;AAAA,MACxF,MAAM,oBACJ,iBAAiB,SAAS,IACtB,iBACG,IAAI,CAAC,MAAM,IAAI,EAAE,aAAa,EAAE,wBAAwB,EAAE,aAAa,EACvE,KAAK;AAAA,CAAI,IACZ;AAAA,MAGN,MAAM,QAAQ,MAAM,QAAQ,aAAa,OAAO;AAAA,MAChD,MAAM,SAAS,wBAAuB;AAAA,QACpC,OAAO;AAAA,aACF;AAAA,UACH,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,QACpB;AAAA,QACA,UAAU;AAAA,MACZ,CAAC;AAAA,MAED,MAAM,WAAW,MAAM,QAAQ,SAAS,WAAU,YAAY;AAAA,QAC5D;AAAA,MACF,CAAC;AAAA,MAED,MAAM,cAAc,yBAAyB,QAAQ;AAAA,MAErD,QAAO,KAAK,aAAa,YAAY,2BAA2B;AAAA,MAGhE,WAAW,cAAc,aAAa;AAAA,QACpC,IAAI,WAAW,cAAc,OAAO,6BAA6B;AAAA,UAC/D,MAAM,cAAc,oBAAoB;AAAA,YACtC,SAAS,QAAQ;AAAA,YACjB;AAAA,YACA,UAAU,WAAW;AAAA,YACrB,SAAS,WAAW;AAAA,YACpB,YAAY,WAAW;AAAA,YACvB,QAAQ;AAAA,YACR,UAAU;AAAA,cACR;AAAA,cACA,aAAa,IAAI,KAAK,EAAE,YAAY;AAAA,YACtC;AAAA,UACF,CAAC;AAAA,UAED,QAAO,KACL,6BAA6B,WAAW,aAAa,WAAW,QAAQ,UAAU,GAAG,EAAE,MACzF;AAAA,QACF,EAAO;AAAA,UACL,QAAO,MACL,kCAAkC,WAAW,wBAAwB,WAAW,aAClF;AAAA;AAAA,MAEJ;AAAA,MAGA,MAAM,sBAAsB,MAAM,QAAQ,cAAc,QAAQ,OAAO,UAAU;AAAA,MACjF,MAAM,cAAc,4BAA4B,UAAU,QAAQ,mBAAmB;AAAA,MACrF,QAAO,MACL,oCAAoC,kCAAkC,oBAAoB,QAC5F;AAAA,MACA,OAAO,OAAO;AAAA,MACd,QAAO,MAAM,EAAE,MAAM,GAAG,2CAA2C;AAAA;AAAA;AAAA,EAIvE,UAAU,CAAC;AACb;;;AEvOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAYE;AAAA;AAqBK,IAAM,0BAAoC;AAAA,EAC/C,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EAEV,KAAK,OAAO,SAAwB,SAAiB,WAAkB;AAAA,IACrE,IAAI;AAAA,MACF,MAAM,gBAAgB,QAAQ,WAAW,QAAQ;AAAA,MACjD,IAAI,CAAC,eAAe;AAAA,QAElB,OAAO;AAAA,UACL,MAAM,EAAE,WAAW,CAAC,GAAG,gBAAgB,CAAC,GAAG,MAAM,WAAW;AAAA,UAC5D,QAAQ,EAAE,kBAAkB,IAAI,gBAAgB,GAAG;AAAA,UACnD,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MAEA,QAAQ,WAAW;AAAA,MACnB,MAAM,SAAS,cAAc,UAAU;AAAA,MAGvC,MAAM,oBAAoB,MAAM,QAAQ,cAAc,QAAQ,OAAO,UAAU;AAAA,MAG/E,IAAI,oBAAoB,OAAO,iCAAiC;AAAA,QAI9D,MAAM,qBAAqB,QAAQ,sBAAsB;AAAA,QAGzD,OAAO,cAAc,MAAM,sBAAsB,MAAM,QAAQ,IAAI;AAAA,UACjE,iBAAiB,EAAE,SAAS,OAAO,CAAC;AAAA,UACpC,QAAQ,QAAQ,MAAM;AAAA,UACtB,QAAQ,YAAY;AAAA,YAClB,WAAW;AAAA,YACX;AAAA,YACA,OAAO;AAAA,YACP,QAAQ;AAAA,UACV,CAAC;AAAA,QACH,CAAC;AAAA,QAGD,MAAM,uBAAuB,mBAAmB,OAC9C,CAAC,QAAQ,IAAI,SAAS,SAAS,mBAAmB,IAAI,UAAU,SAAS,eAC3E;AAAA,QAEA,MAAM,mBAAmB,mBAAmB,OAC1C,CAAC,QACC,EAAE,IAAI,SAAS,SAAS,mBAAmB,IAAI,UAAU,SAAS,gBACtE;AAAA,QAGA,MAAM,eAAe,MAAM,OACvB,KAAK,SAAS,YAAY,QAAQ,KAAK,SAAS,YAAY,SAC5D;AAAA,QAGJ,OAAO,yBAAyB,wBAAwB,MAAM,QAAQ,IAAI;AAAA,UACxE,eAAe;AAAA,YACb,UAAU;AAAA,YACV,UAAU;AAAA,UACZ,CAAC;AAAA,UACD,YAAY;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,oBAAoB;AAAA,UACtB,CAAC;AAAA,QACH,CAAC;AAAA,QAGD,IAAI,oBAAoB;AAAA,QACxB,IAAI,qBAAqB,SAAS,GAAG;AAAA,UACnC,MAAM,eAAe,IAAI;AAAA,UAEzB,WAAW,OAAO,sBAAsB;AAAA,YACtC,MAAM,QAAgB,OAAO,IAAI,SAAS,SAAS,SAAS;AAAA,YAC5D,IAAI,CAAC,aAAa,IAAI,KAAK,GAAG;AAAA,cAC5B,aAAa,IAAI,OAAO,CAAC,CAAC;AAAA,YAC5B;AAAA,YACA,aAAa,IAAI,KAAK,GAAG,KAAK,GAAG;AAAA,UACnC;AAAA,UAEA,MAAM,yBAAyB,MAAM,KAAK,aAAa,QAAQ,CAAC,EAC7D,MAAM,EAAE,EACR,IAAI,EAAE,OAAO,cAAc;AAAA,YAC1B,MAAM,iBAAiB,SAAS,KAC9B,CAAC,GAAW,OAAe,EAAE,aAAa,MAAM,EAAE,aAAa,EACjE;AAAA,YAEA,MAAM,UAAU,eAAe,IAAI,SAAS,eAAe;AAAA,YAC3D,MAAM,UAAU,eACb,IAAI,CAAC,QAAgB;AAAA,cACpB,MAAM,aAAa,IAAI,SAAS,cAAc;AAAA,cAC9C,MAAM,SAAS,IAAI,SAAS,gBAAgB;AAAA,cAC5C,MAAM,WAAW,IAAI,SAAS,YAAY;AAAA,cAC1C,MAAM,QAAO,IAAI,SAAS,QAAQ;AAAA,cAClC,MAAM,QAAQ,IAAI,SAAS,SAAS;AAAA,cAEpC,IAAI,UAAU,OAAO,eAAe;AAAA,cACpC,IAAI;AAAA,gBAAU,WAAW,KAAK;AAAA,cAC9B,IAAI,OAAO;AAAA,gBACT,WAAW,aAAa;AAAA,cAC1B,EAAO,SAAI,SAAQ,UAAS,oBAAoB,cAAc;AAAA,gBAC5D,WAAW,KAAK;AAAA,cAClB;AAAA,cAEA,OAAO;AAAA,aACR,EACA,KAAK;AAAA,CAAI;AAAA,YAEZ,OAAO,gBAAgB,MAAM,MAAM,GAAG,CAAC,MACrC,UAAU,OAAO,aAAa;AAAA,EAC3B;AAAA,WACN,EACA,KAAK;AAAA;AAAA,CAAM;AAAA,UAEd,oBAAoB,yBAChB,UAAU,8BAA8B,sBAAsB,IAC9D;AAAA,QACN;AAAA,QAGA,MAAM,cACJ,wBAAwB,qBAAqB,SAAS,IAClD,UAAU,qBAAqB,oBAAoB,IACnD;AAAA,QAEN,MAAM,iBACJ,2BAA2B,wBAAwB,SAAS,IACxD,UAAU,2BAA2B,uBAAuB,IAC5D;AAAA,QAGN,IACE,CAAC,eACD,CAAC,kBACD,iBAAiB,WAAW,KAC5B,CAAC,QAAQ,QAAQ,MACjB;AAAA,UACA,OAAO;AAAA,YACL,MAAM;AAAA,cACJ,WAAW,CAAC;AAAA,cACZ,gBAAgB,CAAC;AAAA,cACjB,eAAe,CAAC;AAAA,cAChB,MAAM;AAAA,YACR;AAAA,YACA,QAAQ;AAAA,cACN,kBAAkB;AAAA,cAClB,gBAAgB;AAAA,cAChB,qBAAqB;AAAA,YACvB;AAAA,YACA,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QAGA,IAAI,gBAAgB;AAAA,QACpB,IAAI,iBAAiB,SAAS,GAAG;AAAA,UAC/B,MAAM,oBAAoB,CAAC,GAAG,gBAAgB,EAAE,KAC9C,CAAC,GAAG,OAAO,EAAE,aAAa,MAAM,EAAE,aAAa,EACjD,EAAE;AAAA,UAEF,MAAM,yBAAyB,eAAe;AAAA,YAC5C,UAAU,CAAC,iBAAiB;AAAA,YAC5B,UAAU;AAAA,UACZ,CAAC;AAAA,UAED,IAAI,wBAAwB;AAAA,YAC1B,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,QAGA,MAAM,WAAW,QAAQ;AAAA,QACzB,MAAM,aACJ,aAAa,KAAK,CAAC,WAAmB,OAAO,OAAO,QAAQ,QAAQ,GAAG,MAAM,MAC7E,UAAU,cACV;AAAA,QACF,MAAM,yBAAyB,QAAQ,QAAQ;AAAA,QAC/C,MAAM,qBAAqB,CAAC,CAAC,wBAAwB,KAAK;AAAA,QAE1D,MAAM,wBAAwB,qBAC1B,UAAU,sBAAsB,GAAG,eAAe,wBAAwB,IAC1E;AAAA,QAEJ,MAAM,cAAc,qBAChB,UACE,yBACA,gDAAgD,sHAClD,IACA;AAAA,QAGJ,MAAM,QAAO;AAAA,UACX,eAAe,cAAc;AAAA,UAC7B;AAAA,UACA,kBAAkB,eAAe,QAAQ,QAAQ,OAAO,wBAAwB;AAAA,UAChF,kBAAkB,eAAe,QAAQ,QAAQ,OAAO,cAAc;AAAA,QACxE,EACG,OAAO,OAAO,EACd,KAAK;AAAA;AAAA,CAAM;AAAA,QAEd,OAAO;AAAA,UACL,MAAM;AAAA,YACJ,WAAW,CAAC;AAAA,YACZ,gBAAgB;AAAA,YAChB,eAAe;AAAA,YACf,MAAM;AAAA,UACR;AAAA,UACA,QAAQ;AAAA,YACN,kBAAkB;AAAA,YAClB,gBAAgB,eAAe,cAAc;AAAA,YAC7C,qBAAqB;AAAA,YACrB;AAAA,UACF;AAAA,UACA;AAAA,QACF;AAAA,MACF,EAAO;AAAA,QAIL,MAAM,iBAAiB,MAAM,cAAc,yBAAyB,MAAM;AAAA,QAC1E,MAAM,aAAa,gBAAgB,qBAAqB;AAAA,QAGxD,MAAM,uBAAuB,MAAM,QAAQ,YAAY;AAAA,UACrD,WAAW;AAAA,UACX;AAAA,UACA,OAAO,OAAO;AAAA,UACd,QAAQ;AAAA,UACR,OAAO;AAAA,QACT,CAAC;AAAA,QAGD,MAAM,eAAe,MAAM,iBAAiB,EAAE,SAAS,OAAO,CAAC;AAAA,QAC/D,MAAM,OAAO,MAAM,QAAQ,QAAQ,MAAM;AAAA,QAGzC,MAAM,eAAe,MAAM,OACvB,KAAK,SAAS,YAAY,QAAQ,KAAK,SAAS,YAAY,SAC5D;AAAA,QAGJ,IAAI,qBAAqB;AAAA,QACzB,IAAI,qBAAqB,SAAS,GAAG;AAAA,UACnC,MAAM,mBAAmB,qBAAqB,OAC5C,CAAC,QACC,EAAE,IAAI,SAAS,SAAS,mBAAmB,IAAI,UAAU,SAAS,gBACtE;AAAA,UAEA,IAAI,cAAc;AAAA,YAChB,qBAAqB,YAAY;AAAA,cAC/B,UAAU;AAAA,cACV,UAAU;AAAA,cACV,oBAAoB;AAAA,YACtB,CAAC;AAAA,UACH,EAAO;AAAA,YACL,qBAAqB,eAAe;AAAA,cAClC,UAAU;AAAA,cACV,UAAU;AAAA,YACZ,CAAC;AAAA;AAAA,UAGH,IAAI,oBAAoB;AAAA,YACtB,qBAAqB,UAAU,qBAAqB,kBAAkB;AAAA,UACxE;AAAA,QACF;AAAA,QAGA,IAAI,cAAc;AAAA,QAClB,IAAI,gBAAgB;AAAA,UAClB,MAAM,eAAe,GAAG,eAAe;AAAA,UACvC,MAAM,YAAY,IAAI,KAAK,eAAe,SAAS,EAAE,mBAAmB;AAAA,UAExE,cAAc,8BAA8B,iBAAiB;AAAA;AAAA,UAC7D,eAAe,eAAe;AAAA,UAE9B,IAAI,eAAe,UAAU,eAAe,OAAO,SAAS,GAAG;AAAA,YAC7D,eAAe;AAAA,WAAc,eAAe,OAAO,KAAK,IAAI;AAAA,UAC9D;AAAA,UAEA,cAAc,UAAU,0BAA0B,WAAW;AAAA,QAC/D;AAAA,QAGA,MAAM,WAAW,QAAQ;AAAA,QACzB,MAAM,aACJ,aAAa,KAAK,CAAC,WAAmB,OAAO,OAAO,QAAQ,QAAQ,GAAG,MAAM,MAC7E,UAAU,cACV;AAAA,QACF,MAAM,yBAAyB,QAAQ,QAAQ;AAAA,QAC/C,MAAM,qBAAqB,CAAC,CAAC,wBAAwB,KAAK;AAAA,QAE1D,MAAM,wBAAwB,qBAC1B,UAAU,sBAAsB,GAAG,eAAe,wBAAwB,IAC1E;AAAA,QAEJ,MAAM,cAAc,qBAChB,UACE,yBACA,gDAAgD,0DAClD,IACA;AAAA,QAGJ,MAAM,QAAO;AAAA,UACX;AAAA,UACA;AAAA,UACA,qBAAqB,wBAAwB;AAAA,UAC7C,qBAAqB,cAAc;AAAA,QACrC,EACG,OAAO,OAAO,EACd,KAAK;AAAA;AAAA,CAAM;AAAA,QAEd,OAAO;AAAA,UACL,MAAM;AAAA,YACJ,WAAW,iBAAiB,CAAC,cAAc,IAAI,CAAC;AAAA,YAChD,gBAAgB;AAAA,YAChB,MAAM;AAAA,UACR;AAAA,UACA,QAAQ;AAAA,YACN,kBAAkB;AAAA,YAClB,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,QACF;AAAA;AAAA,MAEF,OAAO,OAAO;AAAA,MACd,QAAO,MAAM,EAAE,MAAM,GAAG,mCAAmC;AAAA,MAC3D,OAAO;AAAA,QACL,MAAM,EAAE,WAAW,CAAC,GAAG,gBAAgB,CAAC,GAAG,MAAM,QAAQ;AAAA,QACzD,QAAQ,EAAE,kBAAkB,IAAI,gBAAgB,GAAG;AAAA,QACnD,MAAM;AAAA,MACR;AAAA;AAAA;AAGN;;;AClXA;AAAA,YAKE;AAAA,eACA;AAAA;AAmBK,IAAM,yBAAmC;AAAA,EAC9C,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EAEV,KAAK,OAAO,SAAwB,SAAiB,WAAkB;AAAA,IACrE,IAAI;AAAA,MACF,MAAM,gBAAgB,QAAQ,WAAW,QAAQ;AAAA,MACjD,IAAI,CAAC,eAAe;AAAA,QAClB,OAAO;AAAA,UACL,MAAM,EAAE,UAAU,CAAC,EAAE;AAAA,UACrB,QAAQ,EAAE,kBAAkB,GAAG;AAAA,UAC/B,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MAEA,QAAQ,aAAa;AAAA,MAGrB,IAAI,aAAa,QAAQ,SAAS;AAAA,QAChC,OAAO;AAAA,UACL,MAAM,EAAE,UAAU,CAAC,EAAE;AAAA,UACrB,QAAQ,EAAE,kBAAkB,GAAG;AAAA,UAC/B,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MAGA,MAAM,WAAW,MAAM,cAAc,oBAAoB,UAAU,WAAW,EAAE;AAAA,MAEhF,IAAI,SAAS,WAAW,GAAG;AAAA,QACzB,OAAO;AAAA,UACL,MAAM,EAAE,UAAU,CAAC,EAAE;AAAA,UACrB,QAAQ,EAAE,kBAAkB,GAAG;AAAA,UAC/B,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MAGA,MAAM,oBAAoB,MAAM,cAAc,6BAA6B,QAAQ;AAAA,MAEnF,MAAM,QAAO,WAAU,2BAA2B,iBAAiB;AAAA,MAGnE,MAAM,iBAAiB,IAAI;AAAA,MAC3B,WAAW,UAAU,UAAU;AAAA,QAC7B,MAAM,QAAQ,eAAe,IAAI,OAAO,QAAQ,KAAK;AAAA,QACrD,eAAe,IAAI,OAAO,UAAU,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,eAAe,MAAM,KAAK,eAAe,QAAQ,CAAC,EACrD,IAAI,EAAE,KAAK,WAAW,GAAG,QAAQ,OAAO,EACxC,KAAK,IAAI;AAAA,MAEZ,OAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA,gBAAgB,OAAO,YAAY,cAAc;AAAA,QACnD;AAAA,QACA,QAAQ;AAAA,UACN,kBAAkB;AAAA,UAClB,kBAAkB;AAAA,QACpB;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO,OAAO;AAAA,MACd,QAAO,MAAM,EAAE,MAAM,GAAG,kCAAkC;AAAA,MAC1D,OAAO;AAAA,QACL,MAAM,EAAE,UAAU,CAAC,EAAE;AAAA,QACrB,QAAQ,EAAE,kBAAkB,GAAG;AAAA,QAC/B,MAAM;AAAA,MACR;AAAA;AAAA;AAGN;;;ACtDO,IAAM,eAAuB;AAAA,EAClC,MAAM;AAAA,EACN,aACE;AAAA,EAEF,UAAU,CAAC,aAAa;AAAA,EAExB,YAAY,CAAC,wBAAwB,2BAA2B;AAAA,EAEhE,WAAW,CAAC,wBAAwB,uBAAuB;AAAA,EAK3D;AACF;AAEA,IAAe;",
|
|
17
|
-
"debugId": "
|
|
16
|
+
"mappings": "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",
|
|
17
|
+
"debugId": "C168790F41A1B4EE64756E2164756E21",
|
|
18
18
|
"names": []
|
|
19
19
|
}
|
package/package.json
CHANGED