@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.
- package/CHANGELOG.md +52 -0
- package/dist/{chunk-GBBQIJQF.js → chunk-3CM4XQJO.js} +1940 -463
- package/dist/chunk-3CM4XQJO.js.map +1 -0
- package/dist/{chunk-D6II7EP4.cjs → chunk-5W5463NI.cjs} +1939 -461
- package/dist/chunk-5W5463NI.cjs.map +1 -0
- package/dist/docs/SKILL.md +24 -24
- package/dist/docs/assets/SOURCE_MAP.json +25 -25
- package/dist/docs/references/docs-agents-agent-approval.md +3 -3
- package/dist/docs/references/docs-agents-agent-memory.md +3 -3
- package/dist/docs/references/docs-agents-network-approval.md +5 -2
- package/dist/docs/references/docs-agents-networks.md +2 -2
- package/dist/docs/references/docs-agents-supervisor-agents.md +3 -3
- package/dist/docs/references/docs-memory-memory-processors.md +9 -9
- package/dist/docs/references/docs-memory-message-history.md +4 -4
- package/dist/docs/references/docs-memory-observational-memory.md +11 -7
- package/dist/docs/references/docs-memory-semantic-recall.md +9 -9
- package/dist/docs/references/docs-memory-storage.md +1 -1
- package/dist/docs/references/docs-memory-working-memory.md +20 -20
- package/dist/docs/references/reference-core-getMemory.md +1 -1
- package/dist/docs/references/reference-core-listMemory.md +1 -1
- package/dist/docs/references/reference-memory-clone-utilities.md +7 -7
- package/dist/docs/references/reference-memory-cloneThread.md +5 -5
- package/dist/docs/references/reference-memory-createThread.md +1 -1
- package/dist/docs/references/reference-memory-getThreadById.md +1 -1
- package/dist/docs/references/reference-memory-listThreads.md +3 -3
- package/dist/docs/references/reference-memory-memory-class.md +1 -1
- package/dist/docs/references/reference-memory-observational-memory.md +8 -6
- package/dist/docs/references/reference-processors-token-limiter-processor.md +2 -2
- package/dist/docs/references/reference-storage-dynamodb.md +7 -7
- package/dist/docs/references/reference-storage-libsql.md +1 -1
- package/dist/docs/references/reference-storage-mongodb.md +6 -6
- package/dist/docs/references/reference-storage-postgresql.md +7 -7
- package/dist/docs/references/reference-storage-upstash.md +4 -4
- package/dist/docs/references/reference-vectors-libsql.md +15 -15
- package/dist/docs/references/reference-vectors-mongodb.md +18 -18
- package/dist/docs/references/reference-vectors-pg.md +23 -21
- package/dist/docs/references/reference-vectors-upstash.md +15 -15
- package/dist/index.cjs +48 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +14 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -21
- package/dist/index.js.map +1 -1
- package/dist/{observational-memory-AHVELJX4.cjs → observational-memory-C5LO7RBR.cjs} +17 -17
- package/dist/{observational-memory-AHVELJX4.cjs.map → observational-memory-C5LO7RBR.cjs.map} +1 -1
- package/dist/{observational-memory-QFQUF5EY.js → observational-memory-OYK4MEUD.js} +3 -3
- package/dist/{observational-memory-QFQUF5EY.js.map → observational-memory-OYK4MEUD.js.map} +1 -1
- package/dist/processors/index.cjs +15 -15
- package/dist/processors/index.js +1 -1
- package/dist/processors/observational-memory/observational-memory.d.ts +33 -2
- package/dist/processors/observational-memory/observational-memory.d.ts.map +1 -1
- package/dist/processors/observational-memory/observer-agent.d.ts +7 -4
- package/dist/processors/observational-memory/observer-agent.d.ts.map +1 -1
- package/dist/processors/observational-memory/repro-capture.d.ts +23 -0
- package/dist/processors/observational-memory/repro-capture.d.ts.map +1 -0
- package/dist/processors/observational-memory/token-counter.d.ts +28 -3
- package/dist/processors/observational-memory/token-counter.d.ts.map +1 -1
- package/dist/tools/working-memory.d.ts +6 -10
- package/dist/tools/working-memory.d.ts.map +1 -1
- package/package.json +16 -11
- package/dist/chunk-D6II7EP4.cjs.map +0 -1
- 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
|
|
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
|
-
|
|
15156
|
-
|
|
15157
|
-
|
|
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
|
-
|
|
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
|
|
15221
|
+
if (typeof memoryInput === "string") {
|
|
15214
15222
|
try {
|
|
15215
|
-
newData = JSON.parse(
|
|
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: ${
|
|
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 =
|
|
15231
|
+
newData = memoryInput;
|
|
15224
15232
|
}
|
|
15225
15233
|
const mergedData = deepMergeWorkingMemory(existingData, newData);
|
|
15226
15234
|
workingMemory = JSON.stringify(mergedData);
|
|
15227
15235
|
} else {
|
|
15228
|
-
|
|
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
|
-
|
|
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 (
|
|
15929
|
-
convertedSchema =
|
|
15945
|
+
if (schema.isStandardSchemaWithJSON(schema$1)) {
|
|
15946
|
+
convertedSchema = schema$1["~standard"].jsonSchema.output({ target: "draft-07" });
|
|
15930
15947
|
} else {
|
|
15931
|
-
|
|
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
|
-
|
|
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,
|