@mastra/server 1.80.0-alpha.1 → 1.80.0-alpha.3

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.
Files changed (144) hide show
  1. package/dist/{a2a-qQkFvE8f.cjs → a2a-BKtK_s5o.cjs} +2 -2
  2. package/dist/{a2a-qQkFvE8f.cjs.map → a2a-BKtK_s5o.cjs.map} +1 -1
  3. package/dist/{a2a-wv2WQ3IG.js → a2a-DKGBctKT.js} +2 -2
  4. package/dist/{a2a-wv2WQ3IG.js.map → a2a-DKGBctKT.js.map} +1 -1
  5. package/dist/{agent-builder-DFZjeOkA.js → agent-builder-C-U5USc5.js} +4 -4
  6. package/dist/{agent-builder-DFZjeOkA.js.map → agent-builder-C-U5USc5.js.map} +1 -1
  7. package/dist/{agent-builder-C8F4tCwd.cjs → agent-builder-us2nwcWc.cjs} +4 -4
  8. package/dist/{agent-builder-C8F4tCwd.cjs.map → agent-builder-us2nwcWc.cjs.map} +1 -1
  9. package/dist/{agents-CcY0JTDF.cjs → agents-AyHEkc2F.cjs} +4 -3
  10. package/dist/agents-AyHEkc2F.cjs.map +1 -0
  11. package/dist/{agents-CPYFVJak.cjs → agents-B1EiIdRs.cjs} +3 -2
  12. package/dist/agents-B1EiIdRs.cjs.map +1 -0
  13. package/dist/{agents-DaLwtv9x.js → agents-BYE5Dmfk.js} +4 -3
  14. package/dist/agents-BYE5Dmfk.js.map +1 -0
  15. package/dist/{agents-BjdJ-Tyf.js → agents-D1-fgNeb.js} +3 -2
  16. package/dist/agents-D1-fgNeb.js.map +1 -0
  17. package/dist/{api-schema-manifest-B1WyInlF.js → api-schema-manifest-A066IsPX.js} +2 -2
  18. package/dist/{api-schema-manifest-B1WyInlF.js.map → api-schema-manifest-A066IsPX.js.map} +1 -1
  19. package/dist/{api-schema-manifest-CxrGchcx.cjs → api-schema-manifest-BaF6TE9d.cjs} +2 -2
  20. package/dist/{api-schema-manifest-CxrGchcx.cjs.map → api-schema-manifest-BaF6TE9d.cjs.map} +1 -1
  21. package/dist/{conversations-B5RJ2jcO.js → conversations-D-ew5IXn.js} +2 -2
  22. package/dist/{conversations-B5RJ2jcO.js.map → conversations-D-ew5IXn.js.map} +1 -1
  23. package/dist/{conversations-B16oVu_1.cjs → conversations-DzuWI3w-.cjs} +2 -2
  24. package/dist/{conversations-B16oVu_1.cjs.map → conversations-DzuWI3w-.cjs.map} +1 -1
  25. package/dist/{dist-6ZwWUUBQ.js → dist-5TAg2f91.js} +97 -33
  26. package/dist/{dist-6ZwWUUBQ.js.map → dist-5TAg2f91.js.map} +1 -1
  27. package/dist/{dist-bT2343kX.cjs → dist-C9Jwt1f0.cjs} +1 -1
  28. package/dist/{dist-U8ZBR8z5.cjs → dist-CukR8zi9.cjs} +97 -33
  29. package/dist/{dist-U8ZBR8z5.cjs.map → dist-CukR8zi9.cjs.map} +1 -1
  30. package/dist/dist-Dgae8Imb.js +1 -0
  31. package/dist/docs/SKILL.md +1 -1
  32. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  33. package/dist/{editor-builder-Bt26tVKI.cjs → editor-builder-BSBHrTzY.cjs} +2 -2
  34. package/dist/{editor-builder-Bt26tVKI.cjs.map → editor-builder-BSBHrTzY.cjs.map} +1 -1
  35. package/dist/{editor-builder-D_OUA9P6.cjs → editor-builder-Bibw1X4q.cjs} +3 -3
  36. package/dist/{editor-builder-D_OUA9P6.cjs.map → editor-builder-Bibw1X4q.cjs.map} +1 -1
  37. package/dist/{editor-builder-DWMgkYK-.js → editor-builder-DCrTMwA4.js} +2 -2
  38. package/dist/{editor-builder-DWMgkYK-.js.map → editor-builder-DCrTMwA4.js.map} +1 -1
  39. package/dist/{editor-builder-DzGLnYcJ.js → editor-builder-Dq03QZzH.js} +3 -3
  40. package/dist/{editor-builder-DzGLnYcJ.js.map → editor-builder-Dq03QZzH.js.map} +1 -1
  41. package/dist/{helpers-DvzrUzqY.cjs → helpers-CewFtCva.cjs} +3 -3
  42. package/dist/helpers-CewFtCva.cjs.map +1 -0
  43. package/dist/{helpers-gCkmhB9x.js → helpers-CxSa9O3X.js} +3 -3
  44. package/dist/helpers-CxSa9O3X.js.map +1 -0
  45. package/dist/{plans-TpICqvFU.js → plans-CKbStbWl.js} +3 -3
  46. package/dist/{plans-TpICqvFU.js.map → plans-CKbStbWl.js.map} +1 -1
  47. package/dist/{plans-DVzqRj-i.cjs → plans-DZAJG1Et.cjs} +3 -3
  48. package/dist/{plans-DVzqRj-i.cjs.map → plans-DZAJG1Et.cjs.map} +1 -1
  49. package/dist/{probe-image-size-BYv_-JV7.js → probe-image-size-DBmo2MAe.js} +2 -2
  50. package/dist/{probe-image-size-BYv_-JV7.js.map → probe-image-size-DBmo2MAe.js.map} +1 -1
  51. package/dist/{probe-image-size-mZ2ldE98.cjs → probe-image-size-l1uuhbob.cjs} +2 -2
  52. package/dist/{probe-image-size-mZ2ldE98.cjs.map → probe-image-size-l1uuhbob.cjs.map} +1 -1
  53. package/dist/{responses-CP2UYT8z.cjs → responses-BubMB79l.cjs} +2 -2
  54. package/dist/{responses-CP2UYT8z.cjs.map → responses-BubMB79l.cjs.map} +1 -1
  55. package/dist/{responses-CnQoSpBc.js → responses-jiVC-1lx.js} +2 -2
  56. package/dist/{responses-CnQoSpBc.js.map → responses-jiVC-1lx.js.map} +1 -1
  57. package/dist/{routes-OsQV338J.cjs → routes-D6bDACPd.cjs} +12 -12
  58. package/dist/{routes-OsQV338J.cjs.map → routes-D6bDACPd.cjs.map} +1 -1
  59. package/dist/{routes-DZ2QfTnF.js → routes-DKV9oxFW.js} +12 -12
  60. package/dist/{routes-DZ2QfTnF.js.map → routes-DKV9oxFW.js.map} +1 -1
  61. package/dist/{scores-DFFS3Zxo.js → scores-BWTo-_L5.js} +2 -2
  62. package/dist/{scores-DFFS3Zxo.js.map → scores-BWTo-_L5.js.map} +1 -1
  63. package/dist/{scores-DwiL1Nk8.cjs → scores-C8XPZcwt.cjs} +2 -2
  64. package/dist/{scores-DwiL1Nk8.cjs.map → scores-C8XPZcwt.cjs.map} +1 -1
  65. package/dist/server/auth/index.cjs +1 -1
  66. package/dist/server/auth/index.js +1 -1
  67. package/dist/server/handlers/a2a.cjs +1 -1
  68. package/dist/server/handlers/a2a.js +1 -1
  69. package/dist/server/handlers/agent-builder.cjs +1 -1
  70. package/dist/server/handlers/agent-builder.js +1 -1
  71. package/dist/server/handlers/agent-controller.cjs +2 -0
  72. package/dist/server/handlers/agent-controller.cjs.map +1 -1
  73. package/dist/server/handlers/agent-controller.d.ts +2 -0
  74. package/dist/server/handlers/agent-controller.d.ts.map +1 -1
  75. package/dist/server/handlers/agent-controller.js +2 -0
  76. package/dist/server/handlers/agent-controller.js.map +1 -1
  77. package/dist/server/handlers/agents.cjs +1 -1
  78. package/dist/server/handlers/agents.d.ts +2 -0
  79. package/dist/server/handlers/agents.d.ts.map +1 -1
  80. package/dist/server/handlers/agents.js +1 -1
  81. package/dist/server/handlers/auth.cjs +1 -1
  82. package/dist/server/handlers/auth.js +1 -1
  83. package/dist/server/handlers/conversations.cjs +1 -1
  84. package/dist/server/handlers/conversations.js +1 -1
  85. package/dist/server/handlers/editor-builder.cjs +1 -1
  86. package/dist/server/handlers/editor-builder.d.ts +2 -0
  87. package/dist/server/handlers/editor-builder.d.ts.map +1 -1
  88. package/dist/server/handlers/editor-builder.js +1 -1
  89. package/dist/server/handlers/favorites-enrichment.cjs +1 -1
  90. package/dist/server/handlers/favorites-enrichment.js +1 -1
  91. package/dist/server/handlers/plans.cjs +1 -1
  92. package/dist/server/handlers/plans.js +1 -1
  93. package/dist/server/handlers/responses.cjs +1 -1
  94. package/dist/server/handlers/responses.js +1 -1
  95. package/dist/server/handlers/scores.cjs +1 -1
  96. package/dist/server/handlers/scores.js +1 -1
  97. package/dist/server/handlers/stored-agent-favorites.cjs +1 -1
  98. package/dist/server/handlers/stored-agent-favorites.js +1 -1
  99. package/dist/server/handlers/stored-agents.cjs +1 -1
  100. package/dist/server/handlers/stored-agents.js +1 -1
  101. package/dist/server/handlers/stored-skill-favorites.cjs +1 -1
  102. package/dist/server/handlers/stored-skill-favorites.js +1 -1
  103. package/dist/server/handlers/stored-skills.cjs +1 -1
  104. package/dist/server/handlers/stored-skills.js +1 -1
  105. package/dist/server/handlers/system.cjs +1 -1
  106. package/dist/server/handlers/system.js +1 -1
  107. package/dist/server/handlers/tools.cjs +1 -1
  108. package/dist/server/handlers/tools.js +1 -1
  109. package/dist/server/handlers/workflow-builder.cjs +1 -1
  110. package/dist/server/handlers/workflow-builder.js +1 -1
  111. package/dist/server/handlers/workflows.cjs +1 -1
  112. package/dist/server/handlers/workflows.js +1 -1
  113. package/dist/server/handlers.cjs +9 -9
  114. package/dist/server/handlers.js +9 -9
  115. package/dist/server/schemas/agents.d.ts +2 -0
  116. package/dist/server/schemas/agents.d.ts.map +1 -1
  117. package/dist/server/schemas/editor-builder.d.ts +1 -0
  118. package/dist/server/schemas/editor-builder.d.ts.map +1 -1
  119. package/dist/server/schemas/index.cjs +2 -2
  120. package/dist/server/schemas/index.js +2 -2
  121. package/dist/server/server-adapter/index.cjs +2 -2
  122. package/dist/server/server-adapter/index.js +2 -2
  123. package/dist/server/server-adapter/routes/editor-builder.d.ts +2 -0
  124. package/dist/server/server-adapter/routes/editor-builder.d.ts.map +1 -1
  125. package/dist/{tools-BrO42c5i.js → tools--oMljfqq.js} +3 -3
  126. package/dist/{tools-BrO42c5i.js.map → tools--oMljfqq.js.map} +1 -1
  127. package/dist/{tools-B2fMQuwp.cjs → tools-Ci71xxGP.cjs} +3 -3
  128. package/dist/{tools-B2fMQuwp.cjs.map → tools-Ci71xxGP.cjs.map} +1 -1
  129. package/dist/{workflow-builder-D-YMkDHC.js → workflow-builder-BoI-XXsT.js} +3 -3
  130. package/dist/{workflow-builder-D-YMkDHC.js.map → workflow-builder-BoI-XXsT.js.map} +1 -1
  131. package/dist/{workflow-builder-DtXcLQoG.cjs → workflow-builder-Dguv4rc0.cjs} +3 -3
  132. package/dist/{workflow-builder-DtXcLQoG.cjs.map → workflow-builder-Dguv4rc0.cjs.map} +1 -1
  133. package/dist/{workflows-DN2axrmq.cjs → workflows-5AytZqK_.cjs} +2 -2
  134. package/dist/{workflows-DN2axrmq.cjs.map → workflows-5AytZqK_.cjs.map} +1 -1
  135. package/dist/{workflows-CF7e2ST9.js → workflows-D7Oq5On9.js} +2 -2
  136. package/dist/{workflows-CF7e2ST9.js.map → workflows-D7Oq5On9.js.map} +1 -1
  137. package/package.json +6 -6
  138. package/dist/agents-BjdJ-Tyf.js.map +0 -1
  139. package/dist/agents-CPYFVJak.cjs.map +0 -1
  140. package/dist/agents-CcY0JTDF.cjs.map +0 -1
  141. package/dist/agents-DaLwtv9x.js.map +0 -1
  142. package/dist/dist-qYC51DiT.js +0 -1
  143. package/dist/helpers-DvzrUzqY.cjs.map +0 -1
  144. package/dist/helpers-gCkmhB9x.js.map +0 -1
@@ -1,3 +1,3 @@
1
1
  require("./rolldown-runtime-BwC_XMyb.cjs");
2
- const require_dist = require("./dist-U8ZBR8z5.cjs");
2
+ const require_dist = require("./dist-CukR8zi9.cjs");
3
3
  exports.openai = require_dist.openai;
@@ -8619,7 +8619,7 @@ function splitLines(text) {
8619
8619
  return result;
8620
8620
  }
8621
8621
  //#endregion
8622
- //#region ../memory/dist/src-DQ-kLMpB.js
8622
+ //#region ../memory/dist/src-BUWL69LT.js
8623
8623
  var __defProp$3 = Object.defineProperty;
8624
8624
  var __exportAll = (all, no_symbols) => {
8625
8625
  let target = {};
@@ -38944,7 +38944,7 @@ async function resolveImageDimensionsAsync(part) {
38944
38944
  const url = resolveHttpAssetUrl(getObjectValue(part, "image") ?? getObjectValue(part, "data"));
38945
38945
  if (!url) return existing;
38946
38946
  try {
38947
- const probeImageSize = (await Promise.resolve().then(() => /* @__PURE__ */ require_rolldown_runtime.__toESM(require("./probe-image-size-mZ2ldE98.cjs").default, 1))).default;
38947
+ const probeImageSize = (await Promise.resolve().then(() => /* @__PURE__ */ require_rolldown_runtime.__toESM(require("./probe-image-size-l1uuhbob.cjs").default, 1))).default;
38948
38948
  const probed = await probeImageSize(url, {
38949
38949
  open_timeout: REMOTE_IMAGE_PROBE_TIMEOUT_MS,
38950
38950
  response_timeout: REMOTE_IMAGE_PROBE_TIMEOUT_MS,
@@ -45086,7 +45086,6 @@ var ObservationStep = class {
45086
45086
  let observerExchange;
45087
45087
  const step0Messages = this.stepNumber === 0 ? getObservableMessages(messageList) : [];
45088
45088
  if (this.stepNumber === 0) {
45089
- this.turn.inputMessageIds = messageList.get.input.db().map((msg) => msg.id);
45090
45089
  const activation = await om.activate({
45091
45090
  threadId,
45092
45091
  resourceId,
@@ -45217,7 +45216,7 @@ var ObservationStep = class {
45217
45216
  drainedKeys.set(msg.id, /* @__PURE__ */ new Set([...seen ?? [], ...keys]));
45218
45217
  return !seen || keys.some((key) => !seen.has(key));
45219
45218
  }).map((msg) => msg.id);
45220
- inFlightIds = [.../* @__PURE__ */ new Set([...this.turn.inputMessageIds, ...unreadIds])];
45219
+ inFlightIds = [...new Set(unreadIds)];
45221
45220
  if (messagesToSave.length > 0) {
45222
45221
  for (const msg of messagesToSave) messageList.add(msg, "memory");
45223
45222
  try {
@@ -45294,7 +45293,7 @@ var ObservationStep = class {
45294
45293
  });
45295
45294
  if (!didThresholdCleanup) {
45296
45295
  const fallbackCursor = this.turn.record.threadId ? (0, _mastra_core_memory.getThreadOMMetadata)((await om.getStorage().getThreadById({ threadId: this.turn.record.threadId }))?.metadata)?.lastObservedMessageCursor : void 0;
45297
- const pendingMessageIds = new Set([...messageList.get.input.db(), ...messageList.get.response.db()].map((msg) => msg.id).concat(inFlightIds ?? [], this.turn.inputMessageIds, this.changedSinceDrain(messageList)).filter(Boolean));
45296
+ const pendingMessageIds = new Set([...messageList.get.input.db(), ...messageList.get.response.db()].map((msg) => msg.id).concat(inFlightIds ?? [], this.changedSinceDrain(messageList)).filter(Boolean));
45298
45297
  filterObservedMessages({
45299
45298
  messageList,
45300
45299
  record: this.turn.record,
@@ -45578,12 +45577,6 @@ var ObservationTurn = class {
45578
45577
  /** Generation count at turn start — used to detect if reflection happened during the turn. */
45579
45578
  _generationCountAtStart = -1;
45580
45579
  /**
45581
- * Ids of the messages this turn was started with (the user's request). Mid-turn
45582
- * observation may record them, but they stay in the live prompt until the turn ends.
45583
- * @internal Set by step 0.
45584
- */
45585
- inputMessageIds = [];
45586
- /**
45587
45580
  * Fingerprints of the non-marker parts each message had when a step last drained it. A message
45588
45581
  * is unread step output only if it gained a part the model has not seen — including a tool result
45589
45582
  * merged in place into an existing tool-invocation part — not when it only gained OM markers.
@@ -50340,7 +50333,6 @@ var ObservationalMemoryProcessor = class {
50340
50333
  this.turn.requestContext = requestContext;
50341
50334
  await this.turn.start(this.memory, runState);
50342
50335
  if (stepNumber > 0) {
50343
- this.turn.inputMessageIds = messageList.getPersisted.input.db().map((message) => message.id);
50344
50336
  if (this.memory?.getPersistedMessages) {
50345
50337
  const responseIds = messageList.getPersisted.response.db().map((message) => message.id);
50346
50338
  const snapshotMessages = new Map(messageList.get.all.db().map((message) => [message.id, message]));
@@ -50507,6 +50499,7 @@ var ObservationalMemoryProcessor = class {
50507
50499
  writer: args.writer,
50508
50500
  observabilityContext: getOmObservabilityContext(args)
50509
50501
  }));
50502
+ if (observed) args.rotateResponseMessageId?.();
50510
50503
  return { retry: activated || observed };
50511
50504
  }
50512
50505
  get config() {
@@ -51571,9 +51564,7 @@ ${workingMemory}`;
51571
51564
  async saveMessages({ messages, memoryConfig, observabilityContext }) {
51572
51565
  const span = this.createMemorySpan("save", observabilityContext, void 0, { messageCount: messages.length });
51573
51566
  try {
51574
- const updatedMessages = messages.filter((m) => m.role !== "system" && !isTransientSignalMessage(m)).map((m) => {
51575
- return this.updateMessageToHideWorkingMemoryV2(m);
51576
- }).filter((m) => Boolean(m));
51567
+ const updatedMessages = this.prepareMessagesForPersistence(messages);
51577
51568
  const config = this.getMergedThreadConfig(memoryConfig);
51578
51569
  const dbMessages = new _mastra_core_agent.MessageList({ generateMessageId: () => this.generateId() }).add(updatedMessages, "memory").get.all.db();
51579
51570
  const memoryStore = await this.getMemoryStore();
@@ -51679,12 +51670,17 @@ ${workingMemory}`;
51679
51670
  throw error;
51680
51671
  }
51681
51672
  }
51673
+ prepareMessagesForPersistence(messages) {
51674
+ return messages.filter((m) => m.role !== "system" && !isTransientSignalMessage(m)).map((m) => this.updateMessageToHideWorkingMemoryV2(m)).filter((m) => m !== null);
51675
+ }
51682
51676
  updateMessageToHideWorkingMemoryV2(message) {
51683
51677
  const newMessage = { ...message };
51684
51678
  if (message.content && typeof message.content === "object" && !Array.isArray(message.content)) newMessage.content = { ...message.content };
51685
51679
  if (typeof newMessage.content?.content === "string" && newMessage.content.content.length > 0) newMessage.content.content = removeWorkingMemoryTags(newMessage.content.content).trim();
51686
51680
  if (Array.isArray(newMessage.content?.parts)) {
51687
51681
  if (Array.isArray(newMessage.content.toolInvocations)) newMessage.content.toolInvocations = removeWorkingMemoryToolInvocations(newMessage.content.toolInvocations);
51682
+ const lastOriginalPart = newMessage.content.parts.at(-1);
51683
+ const sealMetadata = lastOriginalPart && "metadata" in lastOriginalPart ? lastOriginalPart.metadata : void 0;
51688
51684
  newMessage.content.parts = removeWorkingMemoryToolInvocationParts(newMessage.content.parts).map((part) => {
51689
51685
  if (part?.type === "text") {
51690
51686
  const text = typeof part.text === "string" ? part.text : "";
@@ -51695,6 +51691,26 @@ ${workingMemory}`;
51695
51691
  }
51696
51692
  return part;
51697
51693
  });
51694
+ const lastIndex = newMessage.content.parts.length - 1;
51695
+ const lastPart = newMessage.content.parts[lastIndex];
51696
+ if (lastPart && sealMetadata && typeof sealMetadata === "object" && "mastra" in sealMetadata) {
51697
+ const mastra = sealMetadata.mastra;
51698
+ if (mastra && typeof mastra === "object" && "sealedAt" in mastra && typeof mastra.sealedAt === "number") {
51699
+ const existingMetadata = "metadata" in lastPart ? lastPart.metadata : void 0;
51700
+ const metadata = existingMetadata && typeof existingMetadata === "object" ? existingMetadata : {};
51701
+ const existingMastra = "mastra" in metadata && metadata.mastra && typeof metadata.mastra === "object" ? metadata.mastra : {};
51702
+ newMessage.content.parts[lastIndex] = {
51703
+ ...lastPart,
51704
+ metadata: {
51705
+ ...metadata,
51706
+ mastra: {
51707
+ ...existingMastra,
51708
+ sealedAt: mastra.sealedAt
51709
+ }
51710
+ }
51711
+ };
51712
+ }
51713
+ }
51698
51714
  if (newMessage.content.parts.length === 0) {
51699
51715
  if (!(typeof newMessage.content.content === "string" && newMessage.content.content.trim().length > 0)) return null;
51700
51716
  }
@@ -51944,12 +51960,12 @@ ${workingMemory}`;
51944
51960
  };
51945
51961
  }
51946
51962
  /**
51947
- * Raw message upsert — persist messages to storage without embedding or working memory processing.
51963
+ * Raw message upsert — apply the persistence projection without embedding or extracting working memory.
51948
51964
  * Used by the processor to save sealed messages before firing a background buffer operation.
51949
51965
  */
51950
51966
  async persistMessages(messages) {
51951
51967
  if (messages.length === 0) return;
51952
- const persistableMessages = messages.filter((m) => m.role !== "system" && !isTransientSignalMessage(m));
51968
+ const persistableMessages = this.prepareMessagesForPersistence(messages);
51953
51969
  if (persistableMessages.length === 0) return;
51954
51970
  await (await this.getMemoryStore()).saveMessages({ messages: persistableMessages });
51955
51971
  }
@@ -52431,27 +52447,75 @@ Notes:
52431
52447
  if (messages.length === 0) return [];
52432
52448
  const memoryStore = await this.getMemoryStore();
52433
52449
  const config = this.getMergedThreadConfig(memoryConfig);
52450
+ const existing = await memoryStore.listMessagesById({ messageIds: messages.map((m) => m.id) });
52451
+ const existingById = new Map(existing.messages.map((m) => [m.id, m]));
52452
+ const textForEmbeddingById = /* @__PURE__ */ new Map();
52453
+ const textFields = ["content", "parts"];
52454
+ const textOf = (content, fields) => {
52455
+ for (const field of fields) {
52456
+ const text = field === "content" ? content.content?.trim() ? content.content : null : (content.parts ?? []).filter((part) => part?.type === "text").map((part) => part.text).join(" ").trim();
52457
+ if (text) return text;
52458
+ }
52459
+ return null;
52460
+ };
52461
+ messages = messages.flatMap((update) => {
52462
+ const stored = existingById.get(update.id);
52463
+ if (!stored) return [];
52464
+ const effective = {
52465
+ ...stored,
52466
+ ...update,
52467
+ content: update.content === void 0 ? stored.content : {
52468
+ ...stored.content,
52469
+ ...update.content,
52470
+ metadata: {
52471
+ ...stored.content.metadata,
52472
+ ...update.content.metadata
52473
+ }
52474
+ }
52475
+ };
52476
+ const [projected] = this.prepareMessagesForPersistence([effective]);
52477
+ if (!projected) return [];
52478
+ if (update.content === void 0) {
52479
+ existingById.set(update.id, effective);
52480
+ return [update];
52481
+ }
52482
+ const content = {
52483
+ ...update.content,
52484
+ ...update.content.parts !== void 0 ? { parts: projected.content.parts } : {},
52485
+ ...update.content.content !== void 0 ? { content: projected.content.content } : {},
52486
+ ...update.content.toolInvocations !== void 0 ? { toolInvocations: projected.content.toolInvocations } : {}
52487
+ };
52488
+ existingById.set(update.id, {
52489
+ ...effective,
52490
+ content: {
52491
+ ...effective.content,
52492
+ ...content
52493
+ }
52494
+ });
52495
+ const patched = textFields.filter((field) => update.content?.[field] !== void 0);
52496
+ if (patched.length > 0) {
52497
+ const omitted = textFields.filter((field) => !patched.includes(field));
52498
+ const text = textOf(projected.content, patched) ?? (textOf(update.content, patched) ? textOf(projected.content, omitted) : null);
52499
+ textForEmbeddingById.set(update.id, text);
52500
+ }
52501
+ return [{
52502
+ ...update,
52503
+ content
52504
+ }];
52505
+ });
52506
+ if (messages.length === 0) return [];
52434
52507
  if (this.vector && config.semanticRecall) {
52435
- const messagesWithContent = messages.filter((m) => m.content !== void 0);
52436
- if (messagesWithContent.length > 0) {
52437
- const existingMessagesResult = await memoryStore.listMessagesById({ messageIds: messagesWithContent.map((m) => m.id) });
52438
- const existingMessagesMap = new Map(existingMessagesResult.messages.map((m) => [m.id, m]));
52508
+ const messagesWithTextUpdates = [...textForEmbeddingById.keys()].map((id) => ({ id }));
52509
+ if (messagesWithTextUpdates.length > 0) {
52510
+ const existingMessagesMap = new Map(existing.messages.map((m) => [m.id, m]));
52439
52511
  const embeddingData = [];
52440
52512
  let dimension;
52441
52513
  const messageIdsWithNewEmbeddings = /* @__PURE__ */ new Set();
52442
52514
  const messageIdsWithClearedContent = /* @__PURE__ */ new Set();
52443
- await Promise.all(messagesWithContent.map(async (message) => {
52515
+ await Promise.all(messagesWithTextUpdates.map(async (message) => {
52444
52516
  const existingMessage = existingMessagesMap.get(message.id);
52445
52517
  if (!existingMessage) return;
52446
- let textForEmbedding = null;
52447
- const content = message.content;
52448
- if (content) {
52449
- if ("content" in content && content.content && typeof content.content === "string" && content.content.trim() !== "") textForEmbedding = content.content;
52450
- else if ("parts" in content && content.parts && Array.isArray(content.parts) && content.parts.length > 0) {
52451
- const joined = content.parts.filter((part) => part?.type === "text").map((part) => part.text).join(" ").trim();
52452
- if (joined) textForEmbedding = joined;
52453
- }
52454
- }
52518
+ const textForEmbedding = textForEmbeddingById.get(message.id) ?? null;
52455
52519
  if (textForEmbedding) {
52456
52520
  let embeddings = [];
52457
52521
  let documents;
@@ -53988,7 +54052,7 @@ const createModelInstance = async (provider, modelId, version = "v2") => {
53988
54052
  try {
53989
54053
  const providerFn = version === `v1` ? { v1: {
53990
54054
  openai: async () => {
53991
- const { openai } = await Promise.resolve().then(() => require("./dist-bT2343kX.cjs"));
54055
+ const { openai } = await Promise.resolve().then(() => require("./dist-C9Jwt1f0.cjs"));
53992
54056
  return openai(modelId);
53993
54057
  },
53994
54058
  anthropic: async () => {
@@ -61725,4 +61789,4 @@ Object.defineProperty(exports, "require_sync", {
61725
61789
  }
61726
61790
  });
61727
61791
 
61728
- //# sourceMappingURL=dist-U8ZBR8z5.cjs.map
61792
+ //# sourceMappingURL=dist-CukR8zi9.cjs.map