@mastra/server 1.76.0-alpha.0 → 1.76.0-alpha.1
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/dist/_types/@internal_voice/dist/routes/index.d.ts +15 -0
- package/dist/{agents-Dyp7MBAb.cjs → agents-CKSEPpk1.cjs} +2 -2
- package/dist/{agents-Dyp7MBAb.cjs.map → agents-CKSEPpk1.cjs.map} +1 -1
- package/dist/{agents-cT-_8JA0.js → agents-CW_JJZOf.js} +2 -2
- package/dist/{agents-cT-_8JA0.js.map → agents-CW_JJZOf.js.map} +1 -1
- package/dist/{api-schema-manifest-CmJODtyM.cjs → api-schema-manifest-BzyUr2nd.cjs} +2 -2
- package/dist/{api-schema-manifest-CmJODtyM.cjs.map → api-schema-manifest-BzyUr2nd.cjs.map} +1 -1
- package/dist/{api-schema-manifest-CxCucIU6.js → api-schema-manifest-DktVob9z.js} +2 -2
- package/dist/{api-schema-manifest-CxCucIU6.js.map → api-schema-manifest-DktVob9z.js.map} +1 -1
- package/dist/{conversations-DGpzLcpr.cjs → conversations-Bj5TLNqF.cjs} +2 -2
- package/dist/{conversations-DGpzLcpr.cjs.map → conversations-Bj5TLNqF.cjs.map} +1 -1
- package/dist/{conversations-BJ6_O8Vk.js → conversations-BzBHVFYe.js} +2 -2
- package/dist/{conversations-BJ6_O8Vk.js.map → conversations-BzBHVFYe.js.map} +1 -1
- package/dist/{dist-DpUNsgQx.cjs → dist-Ce_1oIl2.cjs} +105 -15
- package/dist/{dist-DpUNsgQx.cjs.map → dist-Ce_1oIl2.cjs.map} +1 -1
- package/dist/{dist-DMtuYRLk.js → dist-CtNeEn6M.js} +105 -15
- package/dist/{dist-DMtuYRLk.js.map → dist-CtNeEn6M.js.map} +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{editor-builder-SxOfWcbc.cjs → editor-builder-BtcTQbAC.cjs} +2 -2
- package/dist/{editor-builder-SxOfWcbc.cjs.map → editor-builder-BtcTQbAC.cjs.map} +1 -1
- package/dist/{editor-builder-BMN2fl8p.js → editor-builder-CYkaYf6-.js} +2 -2
- package/dist/{editor-builder-BMN2fl8p.js.map → editor-builder-CYkaYf6-.js.map} +1 -1
- package/dist/{editor-builder-BII35DcS.cjs → editor-builder-CmUsqdZq.cjs} +2 -2
- package/dist/{editor-builder-BII35DcS.cjs.map → editor-builder-CmUsqdZq.cjs.map} +1 -1
- package/dist/{editor-builder-mxsAeRze.js → editor-builder-DHXbVwxu.js} +2 -2
- package/dist/{editor-builder-mxsAeRze.js.map → editor-builder-DHXbVwxu.js.map} +1 -1
- package/dist/{memory-B4u-ESJ-.js → memory-B58Q2LgU.js} +19 -2
- package/dist/{memory-B4u-ESJ-.js.map → memory-B58Q2LgU.js.map} +1 -1
- package/dist/{memory-B9GGX7Iu.cjs → memory-CizEIbl1.cjs} +19 -2
- package/dist/memory-CizEIbl1.cjs.map +1 -0
- package/dist/{routes-CjNEpcic.cjs → routes-BHFCAczU.cjs} +3 -3
- package/dist/{routes-CjNEpcic.cjs.map → routes-BHFCAczU.cjs.map} +1 -1
- package/dist/{routes-BKUF5ZHA.cjs → routes-BULZI-PU.cjs} +8 -4
- package/dist/routes-BULZI-PU.cjs.map +1 -0
- package/dist/{routes-lJ3C4qRm.js → routes-DVec5dwl.js} +3 -3
- package/dist/{routes-lJ3C4qRm.js.map → routes-DVec5dwl.js.map} +1 -1
- package/dist/{routes-zHhMx-9S.js → routes-Dl6_kWm7.js} +8 -4
- package/dist/routes-Dl6_kWm7.js.map +1 -0
- package/dist/server/handlers/agent-builder.cjs +2 -2
- package/dist/server/handlers/agent-builder.js +2 -2
- package/dist/server/handlers/agent-controller.cjs +1 -1
- package/dist/server/handlers/agent-controller.js +1 -1
- package/dist/server/handlers/agents.cjs +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/conversations.cjs +1 -1
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/editor-builder.cjs +1 -1
- package/dist/server/handlers/editor-builder.js +1 -1
- package/dist/server/handlers/favorites-enrichment.cjs +1 -1
- package/dist/server/handlers/favorites-enrichment.js +1 -1
- package/dist/server/handlers/memory.cjs +18 -2
- package/dist/server/handlers/memory.cjs.map +1 -1
- package/dist/server/handlers/memory.d.ts +5 -0
- package/dist/server/handlers/memory.d.ts.map +1 -1
- package/dist/server/handlers/memory.js +18 -2
- package/dist/server/handlers/memory.js.map +1 -1
- package/dist/server/handlers/plans.cjs +1 -1
- package/dist/server/handlers/plans.js +1 -1
- package/dist/server/handlers/stored-agent-favorites.cjs +1 -1
- package/dist/server/handlers/stored-agent-favorites.js +1 -1
- package/dist/server/handlers/stored-agents.cjs +1 -1
- package/dist/server/handlers/stored-agents.js +1 -1
- package/dist/server/handlers/stored-skill-favorites.cjs +1 -1
- package/dist/server/handlers/stored-skill-favorites.js +1 -1
- package/dist/server/handlers/stored-skills.cjs +1 -1
- package/dist/server/handlers/stored-skills.js +1 -1
- package/dist/server/handlers/system.cjs +1 -1
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/handlers/tools.cjs +1 -1
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/voice.cjs +1 -1
- package/dist/server/handlers/voice.js +1 -1
- package/dist/server/handlers/workflow-builder.cjs +1 -1
- package/dist/server/handlers/workflow-builder.js +1 -1
- package/dist/server/handlers/workflows.cjs +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/schemas/index.cjs +5 -5
- package/dist/server/schemas/index.js +5 -5
- package/dist/server/schemas/memory.d.ts +4 -3
- package/dist/server/schemas/memory.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +1 -1
- package/dist/server/server-adapter/index.js +1 -1
- package/dist/server/server-adapter/routes/memory.d.ts +5 -0
- package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
- package/dist/{workflow-builder-b1kbkuG9.js → workflow-builder-D2DgSt6L.js} +3 -3
- package/dist/{workflow-builder-b1kbkuG9.js.map → workflow-builder-D2DgSt6L.js.map} +1 -1
- package/dist/{workflow-builder-BVPR7r4o.cjs → workflow-builder-pBSrWWIp.cjs} +3 -3
- package/dist/{workflow-builder-BVPR7r4o.cjs.map → workflow-builder-pBSrWWIp.cjs.map} +1 -1
- package/package.json +5 -5
- package/dist/memory-B9GGX7Iu.cjs.map +0 -1
- package/dist/routes-BKUF5ZHA.cjs.map +0 -1
- package/dist/routes-zHhMx-9S.js.map +0 -1
|
@@ -4637,7 +4637,7 @@ function splitLines(text) {
|
|
|
4637
4637
|
return result;
|
|
4638
4638
|
}
|
|
4639
4639
|
//#endregion
|
|
4640
|
-
//#region ../memory/dist/src-
|
|
4640
|
+
//#region ../memory/dist/src-C_ZgETf8.js
|
|
4641
4641
|
var __defProp$3 = Object.defineProperty;
|
|
4642
4642
|
var __exportAll = (all, no_symbols) => {
|
|
4643
4643
|
let target = {};
|
|
@@ -28088,6 +28088,18 @@ const SET_WORKING_MEMORY_TOOL_NAME = "setWorkingMemory";
|
|
|
28088
28088
|
* - Primitive values are overwritten
|
|
28089
28089
|
* - The returned object is always newly constructed and never aliases `update`
|
|
28090
28090
|
*/
|
|
28091
|
+
/**
|
|
28092
|
+
* Parses stored JSON working memory. Invalid or empty data yields `null` (start fresh).
|
|
28093
|
+
*/
|
|
28094
|
+
function parseWorkingMemoryJson(raw) {
|
|
28095
|
+
if (!raw) return null;
|
|
28096
|
+
if (typeof raw !== "string") return raw;
|
|
28097
|
+
try {
|
|
28098
|
+
return JSON.parse(raw);
|
|
28099
|
+
} catch {
|
|
28100
|
+
return null;
|
|
28101
|
+
}
|
|
28102
|
+
}
|
|
28091
28103
|
function deepMergeWorkingMemory(existing, update) {
|
|
28092
28104
|
if (!update || typeof update !== "object" || Object.keys(update).length === 0) return existing && typeof existing === "object" ? { ...existing } : {};
|
|
28093
28105
|
const result = { ...existing && typeof existing === "object" && !Array.isArray(existing) ? existing : {} };
|
|
@@ -28194,17 +28206,6 @@ const updateWorkingMemoryTool = (memoryConfig) => {
|
|
|
28194
28206
|
}
|
|
28195
28207
|
let workingMemory;
|
|
28196
28208
|
if (usesMergeSemantics) {
|
|
28197
|
-
const existingRaw = await memory.getWorkingMemory({
|
|
28198
|
-
threadId,
|
|
28199
|
-
resourceId,
|
|
28200
|
-
memoryConfig
|
|
28201
|
-
});
|
|
28202
|
-
let existingData = null;
|
|
28203
|
-
if (existingRaw) try {
|
|
28204
|
-
existingData = typeof existingRaw === "string" ? JSON.parse(existingRaw) : existingRaw;
|
|
28205
|
-
} catch {
|
|
28206
|
-
existingData = null;
|
|
28207
|
-
}
|
|
28208
28209
|
const memoryInput = workingMemoryInput.memory;
|
|
28209
28210
|
if (memoryInput === void 0 || memoryInput === null) return {
|
|
28210
28211
|
success: true,
|
|
@@ -28218,7 +28219,20 @@ const updateWorkingMemoryTool = (memoryConfig) => {
|
|
|
28218
28219
|
throw new Error(`Failed to parse working memory input as JSON: ${errorMessage}. Raw input: ${memoryInput.length > 500 ? memoryInput.slice(0, 500) + "..." : memoryInput}`);
|
|
28219
28220
|
}
|
|
28220
28221
|
else newData = memoryInput;
|
|
28221
|
-
|
|
28222
|
+
if (scope === "resource" && typeof memory.supportsAtomicWorkingMemoryMerge === "function" && await memory.supportsAtomicWorkingMemoryMerge()) {
|
|
28223
|
+
await memory.mergeWorkingMemory({
|
|
28224
|
+
threadId,
|
|
28225
|
+
resourceId,
|
|
28226
|
+
workingMemory: newData,
|
|
28227
|
+
memoryConfig
|
|
28228
|
+
});
|
|
28229
|
+
return { success: true };
|
|
28230
|
+
}
|
|
28231
|
+
const mergedData = deepMergeWorkingMemory(parseWorkingMemoryJson(await memory.getWorkingMemory({
|
|
28232
|
+
threadId,
|
|
28233
|
+
resourceId,
|
|
28234
|
+
memoryConfig
|
|
28235
|
+
})), newData);
|
|
28222
28236
|
workingMemory = JSON.stringify(mergedData);
|
|
28223
28237
|
} else {
|
|
28224
28238
|
const memoryInput = workingMemoryInput.memory;
|
|
@@ -32537,8 +32551,14 @@ var ObservationStep = class {
|
|
|
32537
32551
|
const newOutput = messageList.clear.response.db();
|
|
32538
32552
|
const messagesToSave = [...newInput, ...newOutput];
|
|
32539
32553
|
if (messagesToSave.length > 0) {
|
|
32540
|
-
await om.persistMessages(messagesToSave, threadId, resourceId);
|
|
32541
32554
|
for (const msg of messagesToSave) messageList.add(msg, "memory");
|
|
32555
|
+
try {
|
|
32556
|
+
await om.persistMessages(messagesToSave, threadId, resourceId);
|
|
32557
|
+
} catch (error) {
|
|
32558
|
+
restoreDrainedMessages(messageList, newInput, "input");
|
|
32559
|
+
restoreDrainedMessages(messageList, newOutput, "response");
|
|
32560
|
+
throw error;
|
|
32561
|
+
}
|
|
32542
32562
|
}
|
|
32543
32563
|
} else {
|
|
32544
32564
|
const pending = [...messageList.get.input.db(), ...messageList.get.response.db()];
|
|
@@ -32766,6 +32786,18 @@ var ObservationStep = class {
|
|
|
32766
32786
|
}
|
|
32767
32787
|
};
|
|
32768
32788
|
/**
|
|
32789
|
+
* Move messages drained into the memory bucket back to `source` after a failed save. Messages that
|
|
32790
|
+
* have already left the memory bucket (a background tool result moves its message to `response`)
|
|
32791
|
+
* are left where they are. The list's current copy is re-added so changes made during the save
|
|
32792
|
+
* are kept.
|
|
32793
|
+
*/
|
|
32794
|
+
function restoreDrainedMessages(messageList, drained, source) {
|
|
32795
|
+
if (drained.length === 0) return;
|
|
32796
|
+
const stillQueued = new Set([...messageList.get.input.db(), ...messageList.get.response.db()].map((msg) => msg.id));
|
|
32797
|
+
const ids = drained.map((msg) => msg.id).filter((id) => !stillQueued.has(id));
|
|
32798
|
+
for (const msg of messageList.removeByIds(ids)) messageList.add(msg, source, { merge: false });
|
|
32799
|
+
}
|
|
32800
|
+
/**
|
|
32769
32801
|
* Represents a single turn in the agent conversation — one user message → agent response cycle.
|
|
32770
32802
|
*
|
|
32771
32803
|
* The turn manages record caching, context loading, and step lifecycle.
|
|
@@ -37255,6 +37287,10 @@ var ObservationalMemoryProcessor = class {
|
|
|
37255
37287
|
} catch (error) {
|
|
37256
37288
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
37257
37289
|
const abortMessage = abortSignal?.aborted ? "Agent execution was aborted" : `Encountered error during memory observation: ${err.message}`;
|
|
37290
|
+
const failedTurn = this.turn;
|
|
37291
|
+
await failedTurn.end().catch(() => {});
|
|
37292
|
+
if (this.turn === failedTurn) this.turn = void 0;
|
|
37293
|
+
state.__omTurn = void 0;
|
|
37258
37294
|
if (typeof abort === "function") abort(abortMessage);
|
|
37259
37295
|
throw err;
|
|
37260
37296
|
}
|
|
@@ -37565,6 +37601,12 @@ const DEFAULT_EMBEDDING_CACHE_MAX_SIZE = 1e3;
|
|
|
37565
37601
|
* @see [Memory documentation](https://mastra.ai/docs/memory/overview)
|
|
37566
37602
|
* if packaged docs are unavailable.
|
|
37567
37603
|
*/
|
|
37604
|
+
const invalidMerge = (text) => new MastraError({
|
|
37605
|
+
id: "MEMORY_WORKING_MEMORY_MERGE_INVALID",
|
|
37606
|
+
domain: ErrorDomain.MASTRA_MEMORY,
|
|
37607
|
+
category: ErrorCategory.USER,
|
|
37608
|
+
text
|
|
37609
|
+
});
|
|
37568
37610
|
var Memory = class Memory extends MastraMemory {
|
|
37569
37611
|
createMemoryTokenCounter() {
|
|
37570
37612
|
return new TokenCounter();
|
|
@@ -38094,6 +38136,54 @@ var Memory = class Memory extends MastraMemory {
|
|
|
38094
38136
|
throw error;
|
|
38095
38137
|
}
|
|
38096
38138
|
}
|
|
38139
|
+
/**
|
|
38140
|
+
* Whether the configured storage can merge resource working memory atomically across processes.
|
|
38141
|
+
*/
|
|
38142
|
+
async supportsAtomicWorkingMemoryMerge() {
|
|
38143
|
+
return (await this.getMemoryStore()).supportsAtomicWorkingMemoryMerge === true;
|
|
38144
|
+
}
|
|
38145
|
+
/**
|
|
38146
|
+
* Deep-merges a partial JSON update into resource-scoped working memory as one
|
|
38147
|
+
* atomic storage operation, so concurrent writers (even in other processes) never
|
|
38148
|
+
* lose each other's fields. `null` values delete fields; arrays are replaced.
|
|
38149
|
+
* Requires schema-based working memory, resource scope, and a storage adapter
|
|
38150
|
+
* that supports atomic merges (e.g. PostgreSQL); otherwise throws.
|
|
38151
|
+
*/
|
|
38152
|
+
async mergeWorkingMemory({ threadId, resourceId, workingMemory, memoryConfig, observabilityContext }) {
|
|
38153
|
+
const config = this.getMergedThreadConfig(memoryConfig || {});
|
|
38154
|
+
if (!config.workingMemory?.enabled) throw invalidMerge("Working memory is not enabled for this memory instance");
|
|
38155
|
+
if (!config.workingMemory.schema) throw invalidMerge("Working memory merge requires schema-based (JSON) working memory");
|
|
38156
|
+
if ((config.workingMemory.scope || "resource") !== "resource" || !resourceId) throw invalidMerge("Working memory merge requires resource-scoped working memory and a resourceId");
|
|
38157
|
+
let patch = workingMemory;
|
|
38158
|
+
if (typeof workingMemory === "string") try {
|
|
38159
|
+
patch = JSON.parse(workingMemory);
|
|
38160
|
+
} catch {
|
|
38161
|
+
throw invalidMerge("Working memory merge requires a JSON object");
|
|
38162
|
+
}
|
|
38163
|
+
if (!patch || typeof patch !== "object" || Array.isArray(patch)) throw invalidMerge("Working memory merge requires a JSON object");
|
|
38164
|
+
const memoryStore = await this.getMemoryStore();
|
|
38165
|
+
if (!memoryStore.supportsAtomicWorkingMemoryMerge) throw invalidMerge(`Atomic working memory merge is not supported by this storage adapter (${memoryStore.constructor.name}).`);
|
|
38166
|
+
const span = this.createMemorySpan("update", observabilityContext, {
|
|
38167
|
+
threadId,
|
|
38168
|
+
resourceId
|
|
38169
|
+
}, { workingMemoryEnabled: true });
|
|
38170
|
+
try {
|
|
38171
|
+
await memoryStore.mergeResourceWorkingMemory({
|
|
38172
|
+
resourceId,
|
|
38173
|
+
merge: (existing) => {
|
|
38174
|
+
const parsed = parseWorkingMemoryJson(existing);
|
|
38175
|
+
return JSON.stringify(deepMergeWorkingMemory(parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : null, patch));
|
|
38176
|
+
}
|
|
38177
|
+
});
|
|
38178
|
+
span?.end({ output: { success: true } });
|
|
38179
|
+
} catch (error) {
|
|
38180
|
+
span?.error({
|
|
38181
|
+
error,
|
|
38182
|
+
endSpan: true
|
|
38183
|
+
});
|
|
38184
|
+
throw error;
|
|
38185
|
+
}
|
|
38186
|
+
}
|
|
38097
38187
|
updateWorkingMemoryMutexes = /* @__PURE__ */ new Map();
|
|
38098
38188
|
/**
|
|
38099
38189
|
* @warning experimental! can be removed or changed at any time
|
|
@@ -50573,4 +50663,4 @@ const agentBuilderWorkflows = {
|
|
|
50573
50663
|
//#endregion
|
|
50574
50664
|
export { agentBuilderWorkflows };
|
|
50575
50665
|
|
|
50576
|
-
//# sourceMappingURL=dist-
|
|
50666
|
+
//# sourceMappingURL=dist-CtNeEn6M.js.map
|