@mastra/memory 1.6.1 → 1.6.2

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 (62) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/{chunk-GBBQIJQF.js → chunk-3CM4XQJO.js} +1940 -463
  3. package/dist/chunk-3CM4XQJO.js.map +1 -0
  4. package/dist/{chunk-D6II7EP4.cjs → chunk-5W5463NI.cjs} +1939 -461
  5. package/dist/chunk-5W5463NI.cjs.map +1 -0
  6. package/dist/docs/SKILL.md +24 -24
  7. package/dist/docs/assets/SOURCE_MAP.json +25 -25
  8. package/dist/docs/references/docs-agents-agent-approval.md +3 -3
  9. package/dist/docs/references/docs-agents-agent-memory.md +3 -3
  10. package/dist/docs/references/docs-agents-network-approval.md +5 -2
  11. package/dist/docs/references/docs-agents-networks.md +2 -2
  12. package/dist/docs/references/docs-agents-supervisor-agents.md +3 -3
  13. package/dist/docs/references/docs-memory-memory-processors.md +9 -9
  14. package/dist/docs/references/docs-memory-message-history.md +4 -4
  15. package/dist/docs/references/docs-memory-observational-memory.md +11 -7
  16. package/dist/docs/references/docs-memory-semantic-recall.md +9 -9
  17. package/dist/docs/references/docs-memory-storage.md +1 -1
  18. package/dist/docs/references/docs-memory-working-memory.md +20 -20
  19. package/dist/docs/references/reference-core-getMemory.md +1 -1
  20. package/dist/docs/references/reference-core-listMemory.md +1 -1
  21. package/dist/docs/references/reference-memory-clone-utilities.md +7 -7
  22. package/dist/docs/references/reference-memory-cloneThread.md +5 -5
  23. package/dist/docs/references/reference-memory-createThread.md +1 -1
  24. package/dist/docs/references/reference-memory-getThreadById.md +1 -1
  25. package/dist/docs/references/reference-memory-listThreads.md +3 -3
  26. package/dist/docs/references/reference-memory-memory-class.md +1 -1
  27. package/dist/docs/references/reference-memory-observational-memory.md +8 -6
  28. package/dist/docs/references/reference-processors-token-limiter-processor.md +2 -2
  29. package/dist/docs/references/reference-storage-dynamodb.md +7 -7
  30. package/dist/docs/references/reference-storage-libsql.md +1 -1
  31. package/dist/docs/references/reference-storage-mongodb.md +6 -6
  32. package/dist/docs/references/reference-storage-postgresql.md +7 -7
  33. package/dist/docs/references/reference-storage-upstash.md +4 -4
  34. package/dist/docs/references/reference-vectors-libsql.md +15 -15
  35. package/dist/docs/references/reference-vectors-mongodb.md +18 -18
  36. package/dist/docs/references/reference-vectors-pg.md +23 -21
  37. package/dist/docs/references/reference-vectors-upstash.md +15 -15
  38. package/dist/index.cjs +48 -25
  39. package/dist/index.cjs.map +1 -1
  40. package/dist/index.d.ts +14 -14
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +44 -21
  43. package/dist/index.js.map +1 -1
  44. package/dist/{observational-memory-AHVELJX4.cjs → observational-memory-C5LO7RBR.cjs} +17 -17
  45. package/dist/{observational-memory-AHVELJX4.cjs.map → observational-memory-C5LO7RBR.cjs.map} +1 -1
  46. package/dist/{observational-memory-QFQUF5EY.js → observational-memory-OYK4MEUD.js} +3 -3
  47. package/dist/{observational-memory-QFQUF5EY.js.map → observational-memory-OYK4MEUD.js.map} +1 -1
  48. package/dist/processors/index.cjs +15 -15
  49. package/dist/processors/index.js +1 -1
  50. package/dist/processors/observational-memory/observational-memory.d.ts +33 -2
  51. package/dist/processors/observational-memory/observational-memory.d.ts.map +1 -1
  52. package/dist/processors/observational-memory/observer-agent.d.ts +7 -4
  53. package/dist/processors/observational-memory/observer-agent.d.ts.map +1 -1
  54. package/dist/processors/observational-memory/repro-capture.d.ts +23 -0
  55. package/dist/processors/observational-memory/repro-capture.d.ts.map +1 -0
  56. package/dist/processors/observational-memory/token-counter.d.ts +28 -3
  57. package/dist/processors/observational-memory/token-counter.d.ts.map +1 -1
  58. package/dist/tools/working-memory.d.ts +6 -10
  59. package/dist/tools/working-memory.d.ts.map +1 -1
  60. package/package.json +16 -11
  61. package/dist/chunk-D6II7EP4.cjs.map +0 -1
  62. package/dist/chunk-GBBQIJQF.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -9,11 +9,11 @@ var agent = require('@mastra/core/agent');
9
9
  var features = require('@mastra/core/features');
10
10
  var memory = require('@mastra/core/memory');
11
11
  var utils = require('@mastra/core/utils');
12
- var zodToJson = require('@mastra/schema-compat/zod-to-json');
12
+ var schema = require('@mastra/schema-compat/schema');
13
13
  var asyncMutex = require('async-mutex');
14
14
  var xxhash = require('xxhash-wasm');
15
+ var schema$1 = require('@mastra/core/schema');
15
16
  var tools = require('@mastra/core/tools');
16
- var schemaCompat = require('@mastra/schema-compat');
17
17
  var processors = require('@mastra/core/processors');
18
18
 
19
19
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -15147,19 +15147,26 @@ function deepMergeWorkingMemory(existing, update) {
15147
15147
  return result;
15148
15148
  }
15149
15149
  var updateWorkingMemoryTool = (memoryConfig) => {
15150
- const schema = memoryConfig?.workingMemory?.schema;
15150
+ const schema$2 = memoryConfig?.workingMemory?.schema;
15151
15151
  let inputSchema = zod.z.object({
15152
15152
  memory: zod.z.string().describe(`The Markdown formatted working memory content to store. This MUST be a string. Never pass an object.`)
15153
15153
  });
15154
- if (schema) {
15155
- inputSchema = zod.z.object({
15156
- memory: schema instanceof zod.ZodObject ? schema : schemaCompat.convertSchemaToZod({ jsonSchema: schema }).describe(
15157
- `The JSON formatted working memory content to store.`
15158
- )
15154
+ if (schema$2) {
15155
+ const standardSchema2 = schema$1.isStandardSchemaWithJSON(schema$2) ? schema$2 : schema$1.toStandardSchema(schema$2);
15156
+ const jsonSchema4 = schema.standardSchemaToJSONSchema(standardSchema2, { io: "input" });
15157
+ delete jsonSchema4.$schema;
15158
+ inputSchema = schema$1.toStandardSchema({
15159
+ $schema: "http://json-schema.org/draft-07/schema#",
15160
+ type: "object",
15161
+ description: "The JSON formatted working memory content to store.",
15162
+ properties: {
15163
+ memory: jsonSchema4
15164
+ },
15165
+ required: ["memory"]
15159
15166
  });
15160
15167
  }
15161
- const usesMergeSemantics = Boolean(schema);
15162
- const description = schema ? `Update the working memory with new information. Data is merged with existing memory - you only need to include fields you want to add or update. Set a field to null to remove it. Arrays are replaced entirely when provided.` : `Update the working memory with new information. Any data not included will be overwritten. Always pass data as string to the memory field. Never pass an object.`;
15168
+ const usesMergeSemantics = Boolean(schema$2);
15169
+ const description = schema$2 ? `Update the working memory with new information. Data is merged with existing memory - you only need to include fields you want to add or update. Set a field to null to remove it. Arrays are replaced entirely when provided.` : `Update the working memory with new information. Any data not included will be overwritten. Always pass data as string to the memory field. Never pass an object.`;
15163
15170
  return tools.createTool({
15164
15171
  id: "update-working-memory",
15165
15172
  description,
@@ -15206,26 +15213,28 @@ var updateWorkingMemoryTool = (memoryConfig) => {
15206
15213
  existingData = null;
15207
15214
  }
15208
15215
  }
15209
- if (inputData.memory === void 0 || inputData.memory === null) {
15216
+ const memoryInput = inputData.memory;
15217
+ if (memoryInput === void 0 || memoryInput === null) {
15210
15218
  return { success: true, message: "No memory data provided, existing memory unchanged." };
15211
15219
  }
15212
15220
  let newData;
15213
- if (typeof inputData.memory === "string") {
15221
+ if (typeof memoryInput === "string") {
15214
15222
  try {
15215
- newData = JSON.parse(inputData.memory);
15223
+ newData = JSON.parse(memoryInput);
15216
15224
  } catch (parseError) {
15217
15225
  const errorMessage = parseError instanceof Error ? parseError.message : String(parseError);
15218
15226
  throw new Error(
15219
- `Failed to parse working memory input as JSON: ${errorMessage}. Raw input: ${inputData.memory.length > 500 ? inputData.memory.slice(0, 500) + "..." : inputData.memory}`
15227
+ `Failed to parse working memory input as JSON: ${errorMessage}. Raw input: ${memoryInput.length > 500 ? memoryInput.slice(0, 500) + "..." : memoryInput}`
15220
15228
  );
15221
15229
  }
15222
15230
  } else {
15223
- newData = inputData.memory;
15231
+ newData = memoryInput;
15224
15232
  }
15225
15233
  const mergedData = deepMergeWorkingMemory(existingData, newData);
15226
15234
  workingMemory = JSON.stringify(mergedData);
15227
15235
  } else {
15228
- workingMemory = typeof inputData.memory === "string" ? inputData.memory : JSON.stringify(inputData.memory);
15236
+ const memoryInput = inputData.memory;
15237
+ workingMemory = typeof memoryInput === "string" ? memoryInput : JSON.stringify(memoryInput);
15229
15238
  const existingRaw = await memory.getWorkingMemory({
15230
15239
  threadId,
15231
15240
  resourceId,
@@ -15336,7 +15345,6 @@ var CHARS_PER_TOKEN = 4;
15336
15345
  var DEFAULT_MESSAGE_RANGE = { before: 1, after: 1 };
15337
15346
  var DEFAULT_TOP_K = 4;
15338
15347
  var VECTOR_DELETE_BATCH_SIZE = 100;
15339
- var isZodObject = (v) => v instanceof zod.ZodObject;
15340
15348
  var Memory = class extends memory.MastraMemory {
15341
15349
  constructor(config = {}) {
15342
15350
  super({ name: "Memory", ...config });
@@ -15383,6 +15391,7 @@ var Memory = class extends memory.MastraMemory {
15383
15391
  const config = this.getMergedThreadConfig(threadConfig || {});
15384
15392
  if (resourceId) await this.validateThreadIsOwnedByResource(threadId, resourceId, config);
15385
15393
  const perPage = perPageArg !== void 0 ? perPageArg : config.lastMessages;
15394
+ const historyDisabledByConfig = config.lastMessages === false && perPageArg === void 0;
15386
15395
  const shouldGetNewestAndReverse = !orderBy && perPage !== false;
15387
15396
  const effectiveOrderBy = shouldGetNewestAndReverse ? { field: "createdAt", direction: "DESC" } : orderBy;
15388
15397
  const vectorResults = [];
@@ -15393,7 +15402,8 @@ var Memory = class extends memory.MastraMemory {
15393
15402
  orderBy: effectiveOrderBy,
15394
15403
  hasWorkingMemorySchema: Boolean(config.workingMemory?.schema),
15395
15404
  workingMemoryEnabled: config.workingMemory?.enabled,
15396
- semanticRecallEnabled: Boolean(config.semanticRecall)
15405
+ semanticRecallEnabled: Boolean(config.semanticRecall),
15406
+ historyDisabledByConfig
15397
15407
  });
15398
15408
  const defaultRange = DEFAULT_MESSAGE_RANGE;
15399
15409
  const defaultTopK = DEFAULT_TOP_K;
@@ -15411,6 +15421,9 @@ var Memory = class extends memory.MastraMemory {
15411
15421
  );
15412
15422
  }
15413
15423
  let usage;
15424
+ if (historyDisabledByConfig && (!config.semanticRecall || !vectorSearchString || !this.vector)) {
15425
+ return { messages: [], usage: void 0, total: 0, page: page ?? 0, perPage: 0, hasMore: false };
15426
+ }
15414
15427
  if (config?.semanticRecall && vectorSearchString && this.vector) {
15415
15428
  const result = await this.embedMessageContent(vectorSearchString);
15416
15429
  usage = result.usage;
@@ -15439,10 +15452,11 @@ var Memory = class extends memory.MastraMemory {
15439
15452
  );
15440
15453
  }
15441
15454
  const memoryStore = await this.getMemoryStore();
15455
+ const effectivePerPage = historyDisabledByConfig ? 0 : perPage;
15442
15456
  const paginatedResult = await memoryStore.listMessages({
15443
15457
  threadId,
15444
15458
  resourceId,
15445
- perPage,
15459
+ perPage: effectivePerPage,
15446
15460
  page,
15447
15461
  orderBy: effectiveOrderBy,
15448
15462
  filter: filter3,
@@ -15868,7 +15882,10 @@ ${workingMemory}`;
15868
15882
  return part;
15869
15883
  });
15870
15884
  if (newMessage.content.parts.length === 0) {
15871
- return null;
15885
+ const hasContentText = typeof newMessage.content.content === "string" && newMessage.content.content.trim().length > 0;
15886
+ if (!hasContentText) {
15887
+ return null;
15888
+ }
15872
15889
  }
15873
15890
  }
15874
15891
  return newMessage;
@@ -15923,12 +15940,13 @@ ${workingMemory}`;
15923
15940
  }
15924
15941
  if (config.workingMemory?.schema) {
15925
15942
  try {
15926
- const schema = config.workingMemory.schema;
15943
+ const schema$1 = config.workingMemory.schema;
15927
15944
  let convertedSchema;
15928
- if (isZodObject(schema)) {
15929
- convertedSchema = zodToJson.zodToJsonSchema(schema);
15945
+ if (schema.isStandardSchemaWithJSON(schema$1)) {
15946
+ convertedSchema = schema$1["~standard"].jsonSchema.output({ target: "draft-07" });
15930
15947
  } else {
15931
- convertedSchema = schema;
15948
+ const standardSchema2 = schema.toStandardSchema(schema$1);
15949
+ convertedSchema = standardSchema2["~standard"].jsonSchema.output({ target: "draft-07" });
15932
15950
  }
15933
15951
  return { format: "json", content: JSON.stringify(convertedSchema) };
15934
15952
  } catch (error) {
@@ -16665,7 +16683,12 @@ Notes:
16665
16683
  "Observational memory async buffering is enabled by default but the installed version of @mastra/core does not support it. Either upgrade @mastra/core, @mastra/memory, and your storage adapter (@mastra/libsql, @mastra/pg, or @mastra/mongodb) to the latest version, or explicitly disable async buffering by setting `observation: { bufferTokens: false }` in your observationalMemory config."
16666
16684
  );
16667
16685
  }
16668
- const { ObservationalMemory } = await import('./observational-memory-AHVELJX4.cjs');
16686
+ if (!features.coreFeatures.has("request-response-id-rotation")) {
16687
+ throw new Error(
16688
+ "Observational memory requires @mastra/core support for request-response-id-rotation. Please bump @mastra/core to a newer version."
16689
+ );
16690
+ }
16691
+ const { ObservationalMemory } = await import('./observational-memory-C5LO7RBR.cjs');
16669
16692
  return new ObservationalMemory({
16670
16693
  storage: memoryStore,
16671
16694
  scope: omConfig.scope,