{"version":3,"sources":["../../src/memory/summarizeMemory.ts"],"names":["SummarizeMemoryTemplate","PromptTemplate","schema","z","object","summary","string","template","SummarizeMemory","BaseMemory","llm","config","register","messages","currentSummary","AssistantMessage","delete","message","add","_index","response","create","SystemMessage","render","role","text","getTextContent","reset","createSnapshot","shallowCopy","loadSnapshot","state","Object","assign"],"mappings":";;;;;;;;;;AAiBO,MAAMA,uBAAAA,GAA0B,IAAIC,2BAAAA,CAAe;AACxDC,EAAAA,MAAAA,EAAQC,MAAEC,MAAAA,CAAO;AACfC,IAAAA,OAAAA,EAASF,MAAEG,MAAAA;GACb,CAAA;EACAC,QAAAA,EAAU,CAAA;;;;AAIZ,CAAA;AAEO,MAAMC,wBAAwBC,mBAAAA,CAAAA;EA3BrC;;;EA4BYJ,OAAAA,GAAU,EAAA;AACVE,EAAAA,QAAAA;AACAG,EAAAA,GAAAA;AAEV,EAAA,WAAA,CAAYC,MAAAA,EAA8B;AACxC,IAAA,KAAA,EAAK;AACL,IAAA,IAAA,CAAKJ,QAAAA,GAAWI,OAAOJ,QAAAA,IAAYP,uBAAAA;AACnC,IAAA,IAAA,CAAKU,MAAMC,MAAAA,CAAOD,GAAAA;AACpB,EAAA;EAEA;AACE,IAAA,IAAA,CAAKE,QAAAA,EAAQ;AACf;AAEA,EAAA,IAAIC,QAAAA,GAAsB;AACxB,IAAA,MAAMC,iBAAiB,IAAA,CAAKT,OAAAA;AAC5B,IAAA,IAAI,CAACS,cAAAA,EAAgB;AACnB,MAAA,OAAO,EAAA;AACT,IAAA;AAEA,IAAA,OAAO;AAAC,MAAA,IAAIC,6BAAiBD,cAAAA;;AAC/B,EAAA;;AAGA,EAAA,MAAME,OAAOC,OAAAA,EAAkB;AAC7B,IAAA,OAAO,KAAA;AACT,EAAA;EAEA,MAAMC,GAAAA,CAAID,SAAkBE,MAAAA,EAAiB;AAC3C,IAAA,MAAMC,QAAAA,GAAW,MAAM,IAAA,CAAKV,GAAAA,CAAIW,MAAAA,CAAO;MACrCR,QAAAA,EAAU;QACR,IAAIS,yBAAAA,CACF,IAAA,CAAKf,QAAAA,CAASgB,MAAAA,CAAO;AACnBlB,UAAAA,OAAAA,EAAS,IAAA,CAAKA;AAChB,SAAA,CAAA,CAAA;AAEF,QAAA,IAAIU,4BAAAA,CAAiB,CAAA;EAC3BE,OAAAA,CAAQO,IAAI,CAAA,EAAA,EAAKP,OAAAA,CAAQQ,IAAI;;;AAG9B,CAAA;;KAEG,CAAA;AACA,IAAA,IAAA,CAAKpB,OAAAA,GAAUe,SAASM,cAAAA,EAAc;AACxC,EAAA;EAEAC,KAAAA,GAAQ;AACN,IAAA,IAAA,CAAKtB,OAAAA,GAAU,EAAA;AACjB,EAAA;EAEAuB,cAAAA,GAAiB;AACf,IAAA,OAAO;AACLvB,MAAAA,OAAAA,EAAS,IAAA,CAAKA,OAAAA;AACdE,MAAAA,QAAAA,EAAU,IAAA,CAAKA,QAAAA;AACfG,MAAAA,GAAAA,EAAK,IAAA,CAAKA,GAAAA;MACVG,QAAAA,EAAUgB,qBAAAA,CAAY,KAAKhB,QAAQ;AACrC,KAAA;AACF,EAAA;AAEAiB,EAAAA,YAAAA,CAAaC,KAAAA,EAA+C;AAC1DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,KAAAA,CAAAA;AACtB,EAAA;AACF","file":"summarizeMemory.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AssistantMessage, Message, SystemMessage } from \"@/backend/message.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { z } from \"zod\";\nimport { ChatModel } from \"@/backend/chat.js\";\n\nexport interface SummarizeMemoryInput {\n  llm: ChatModel;\n  template?: typeof SummarizeMemoryTemplate;\n}\n\nexport const SummarizeMemoryTemplate = new PromptTemplate({\n  schema: z.object({\n    summary: z.string(),\n  }),\n  template: `Progressively summarize the lines of conversation provided, adding onto the previous summary returning a new summary.\n\nCurrent summary:\n{{summary}}`,\n});\n\nexport class SummarizeMemory extends BaseMemory {\n  protected summary = \"\";\n  protected template;\n  protected llm;\n\n  constructor(config: SummarizeMemoryInput) {\n    super();\n    this.template = config.template ?? SummarizeMemoryTemplate;\n    this.llm = config.llm;\n  }\n\n  static {\n    this.register();\n  }\n\n  get messages(): Message[] {\n    const currentSummary = this.summary;\n    if (!currentSummary) {\n      return [];\n    }\n\n    return [new AssistantMessage(currentSummary)];\n  }\n\n  // eslint-disable-next-line unused-imports/no-unused-vars\n  async delete(message: Message) {\n    return false;\n  }\n\n  async add(message: Message, _index?: number) {\n    const response = await this.llm.create({\n      messages: [\n        new SystemMessage(\n          this.template.render({\n            summary: this.summary,\n          }),\n        ),\n        new AssistantMessage(`New lines of conversation:\n${message.role}: ${message.text}\n\nNew summary:\n`),\n      ],\n    });\n    this.summary = response.getTextContent();\n  }\n\n  reset() {\n    this.summary = \"\";\n  }\n\n  createSnapshot() {\n    return {\n      summary: this.summary,\n      template: this.template,\n      llm: this.llm,\n      messages: shallowCopy(this.messages),\n    };\n  }\n\n  loadSnapshot(state: ReturnType<typeof this.createSnapshot>) {\n    Object.assign(this, state);\n  }\n}\n"]}