@mastra/server 1.20.0 → 1.21.0-alpha.0
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 +87 -0
- package/dist/{chunk-NCCK5NVX.cjs → chunk-22YG2467.cjs} +3 -3
- package/dist/{chunk-NCCK5NVX.cjs.map → chunk-22YG2467.cjs.map} +1 -1
- package/dist/chunk-3VVDBDS5.cjs +694 -0
- package/dist/chunk-3VVDBDS5.cjs.map +1 -0
- package/dist/{chunk-3W54ZNYP.cjs → chunk-5IKQNFW5.cjs} +3 -3
- package/dist/{chunk-3W54ZNYP.cjs.map → chunk-5IKQNFW5.cjs.map} +1 -1
- package/dist/chunk-6MFKRF4K.cjs +176 -0
- package/dist/chunk-6MFKRF4K.cjs.map +1 -0
- package/dist/{chunk-G726SOOJ.cjs → chunk-7G44ZSFS.cjs} +3 -3
- package/dist/{chunk-G726SOOJ.cjs.map → chunk-7G44ZSFS.cjs.map} +1 -1
- package/dist/{chunk-TYYGY4H4.cjs → chunk-7HOYCW7S.cjs} +3 -3
- package/dist/{chunk-TYYGY4H4.cjs.map → chunk-7HOYCW7S.cjs.map} +1 -1
- package/dist/{chunk-MH2WUZWZ.js → chunk-7KJ4NUEH.js} +3 -3
- package/dist/{chunk-MH2WUZWZ.js.map → chunk-7KJ4NUEH.js.map} +1 -1
- package/dist/chunk-AJYJ4H7P.js +438 -0
- package/dist/chunk-AJYJ4H7P.js.map +1 -0
- package/dist/{chunk-ULLR3RN3.cjs → chunk-AYD7DM5U.cjs} +3 -3
- package/dist/{chunk-ULLR3RN3.cjs.map → chunk-AYD7DM5U.cjs.map} +1 -1
- package/dist/chunk-B6HNPO67.cjs +195 -0
- package/dist/chunk-B6HNPO67.cjs.map +1 -0
- package/dist/chunk-BQXQZPYZ.js +189 -0
- package/dist/chunk-BQXQZPYZ.js.map +1 -0
- package/dist/{chunk-UE4FGLA3.cjs → chunk-EDP2Y6XD.cjs} +21 -21
- package/dist/{chunk-UE4FGLA3.cjs.map → chunk-EDP2Y6XD.cjs.map} +1 -1
- package/dist/chunk-FCCXLAOT.js +153 -0
- package/dist/chunk-FCCXLAOT.js.map +1 -0
- package/dist/chunk-FURWD3DL.cjs +180 -0
- package/dist/chunk-FURWD3DL.cjs.map +1 -0
- package/dist/{chunk-23U24RPR.cjs → chunk-G5IQN5ZG.cjs} +3 -3
- package/dist/{chunk-23U24RPR.cjs.map → chunk-G5IQN5ZG.cjs.map} +1 -1
- package/dist/{chunk-UFK5THVP.cjs → chunk-GANMD6GP.cjs} +3 -3
- package/dist/{chunk-UFK5THVP.cjs.map → chunk-GANMD6GP.cjs.map} +1 -1
- package/dist/chunk-GWPNQNXF.cjs +45 -0
- package/dist/chunk-GWPNQNXF.cjs.map +1 -0
- package/dist/{chunk-G2ZZKKQI.js → chunk-L7PDVJZD.js} +3 -3
- package/dist/{chunk-G2ZZKKQI.js.map → chunk-L7PDVJZD.js.map} +1 -1
- package/dist/{chunk-K6RNBFGH.js → chunk-M4BZ2B7D.js} +3 -3
- package/dist/{chunk-K6RNBFGH.js.map → chunk-M4BZ2B7D.js.map} +1 -1
- package/dist/{chunk-4D7KSU4X.js → chunk-MWRVCCZE.js} +3 -3
- package/dist/{chunk-4D7KSU4X.js.map → chunk-MWRVCCZE.js.map} +1 -1
- package/dist/{chunk-MKW43AJ3.js → chunk-NL7Y763D.js} +3 -3
- package/dist/{chunk-MKW43AJ3.js.map → chunk-NL7Y763D.js.map} +1 -1
- package/dist/{chunk-XDFOXO76.js → chunk-O7CC4J2Y.js} +6 -6
- package/dist/{chunk-XDFOXO76.js.map → chunk-O7CC4J2Y.js.map} +1 -1
- package/dist/chunk-OJ72T77G.cjs +452 -0
- package/dist/chunk-OJ72T77G.cjs.map +1 -0
- package/dist/{chunk-5YMAXL54.js → chunk-QSA443WV.js} +3 -3
- package/dist/{chunk-5YMAXL54.js.map → chunk-QSA443WV.js.map} +1 -1
- package/dist/{chunk-4NRXB7VI.js → chunk-SNGR4M5I.js} +3 -3
- package/dist/{chunk-4NRXB7VI.js.map → chunk-SNGR4M5I.js.map} +1 -1
- package/dist/{chunk-WPBRQTMO.js → chunk-VCA6BSYU.js} +3 -3
- package/dist/{chunk-WPBRQTMO.js.map → chunk-VCA6BSYU.js.map} +1 -1
- package/dist/chunk-VGHQI3X3.js +689 -0
- package/dist/chunk-VGHQI3X3.js.map +1 -0
- package/dist/{chunk-HHF4VF75.js → chunk-VHUB2TYN.js} +3 -3
- package/dist/{chunk-HHF4VF75.js.map → chunk-VHUB2TYN.js.map} +1 -1
- package/dist/chunk-VKIIGA2F.js +35 -0
- package/dist/chunk-VKIIGA2F.js.map +1 -0
- package/dist/{chunk-2QCTUEHS.cjs → chunk-VVWHCAF2.cjs} +3 -3
- package/dist/{chunk-2QCTUEHS.cjs.map → chunk-VVWHCAF2.cjs.map} +1 -1
- package/dist/{chunk-A5J2TY2W.cjs → chunk-XKKTZVZX.cjs} +3 -3
- package/dist/{chunk-A5J2TY2W.cjs.map → chunk-XKKTZVZX.cjs.map} +1 -1
- package/dist/chunk-ZA3NGM3L.js +174 -0
- package/dist/chunk-ZA3NGM3L.js.map +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/reference-server-routes.md +22 -1
- package/dist/server/handlers/agent-builder.cjs +16 -16
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/conversations.cjs +24 -0
- package/dist/server/handlers/conversations.cjs.map +1 -0
- package/dist/server/handlers/conversations.d.ts +153 -0
- package/dist/server/handlers/conversations.d.ts.map +1 -0
- package/dist/server/handlers/conversations.js +3 -0
- package/dist/server/handlers/conversations.js.map +1 -0
- package/dist/server/handlers/datasets.cjs +26 -26
- package/dist/server/handlers/datasets.js +1 -1
- package/dist/server/handlers/logs.cjs +4 -4
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/responses.adapter.cjs +60 -0
- package/dist/server/handlers/responses.adapter.cjs.map +1 -0
- package/dist/server/handlers/responses.adapter.d.ts +98 -0
- package/dist/server/handlers/responses.adapter.d.ts.map +1 -0
- package/dist/server/handlers/responses.adapter.js +3 -0
- package/dist/server/handlers/responses.adapter.js.map +1 -0
- package/dist/server/handlers/responses.cjs +20 -0
- package/dist/server/handlers/responses.cjs.map +1 -0
- package/dist/server/handlers/responses.d.ts +387 -0
- package/dist/server/handlers/responses.d.ts.map +1 -0
- package/dist/server/handlers/responses.js +3 -0
- package/dist/server/handlers/responses.js.map +1 -0
- package/dist/server/handlers/responses.storage.cjs +28 -0
- package/dist/server/handlers/responses.storage.cjs.map +1 -0
- package/dist/server/handlers/responses.storage.d.ts +97 -0
- package/dist/server/handlers/responses.storage.d.ts.map +1 -0
- package/dist/server/handlers/responses.storage.js +3 -0
- package/dist/server/handlers/responses.storage.js.map +1 -0
- package/dist/server/handlers/scores.cjs +7 -7
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/stored-agents.cjs +7 -7
- package/dist/server/handlers/stored-agents.js +1 -1
- package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
- package/dist/server/handlers/stored-mcp-clients.js +1 -1
- package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
- package/dist/server/handlers/stored-prompt-blocks.js +1 -1
- package/dist/server/handlers/stored-scorers.cjs +6 -6
- package/dist/server/handlers/stored-scorers.js +1 -1
- package/dist/server/handlers/tools.cjs +6 -6
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/workflows.cjs +24 -24
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers.cjs +26 -16
- package/dist/server/handlers.d.ts +2 -0
- package/dist/server/handlers.d.ts.map +1 -1
- package/dist/server/handlers.js +8 -6
- package/dist/server/schemas/conversations.d.ts +74 -0
- package/dist/server/schemas/conversations.d.ts.map +1 -0
- package/dist/server/schemas/index.cjs +185 -91
- package/dist/server/schemas/index.d.ts +2 -0
- package/dist/server/schemas/index.d.ts.map +1 -1
- package/dist/server/schemas/index.js +5 -3
- package/dist/server/schemas/responses.d.ts +341 -0
- package/dist/server/schemas/responses.d.ts.map +1 -0
- package/dist/server/server-adapter/index.cjs +123 -108
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.js +29 -14
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/routes/conversations.d.ts +150 -0
- package/dist/server/server-adapter/routes/conversations.d.ts.map +1 -0
- package/dist/server/server-adapter/routes/index.d.ts +4 -0
- package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/responses.d.ts +385 -0
- package/dist/server/server-adapter/routes/responses.d.ts.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkZKMVCV4G_cjs = require('./chunk-ZKMVCV4G.cjs');
|
|
4
|
+
var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
|
|
5
|
+
|
|
6
|
+
// src/server/handlers/responses.storage.ts
|
|
7
|
+
function isPlainObject(value) {
|
|
8
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
9
|
+
}
|
|
10
|
+
async function getResponseMemoryStore(mastra) {
|
|
11
|
+
const storage = mastra?.getStorage();
|
|
12
|
+
if (!storage) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
const memoryStore = await storage.getStore("memory");
|
|
16
|
+
if (!memoryStore) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return memoryStore;
|
|
20
|
+
}
|
|
21
|
+
function readResponseTurnRecordMetadata(message) {
|
|
22
|
+
const mastraMetadata = isPlainObject(message.content?.metadata?.mastra) ? message.content.metadata.mastra : null;
|
|
23
|
+
const responseMetadata = mastraMetadata && isPlainObject(mastraMetadata.response) ? mastraMetadata.response : null;
|
|
24
|
+
if (!responseMetadata || typeof responseMetadata.agentId !== "string" || typeof responseMetadata.model !== "string" || typeof responseMetadata.createdAt !== "number" || responseMetadata.completedAt !== null && typeof responseMetadata.completedAt !== "number" || responseMetadata.instructions !== void 0 && typeof responseMetadata.instructions !== "string" || responseMetadata.text !== void 0 && (!isPlainObject(responseMetadata.text) || !isPlainObject(responseMetadata.text.format)) || responseMetadata.previousResponseId !== void 0 && typeof responseMetadata.previousResponseId !== "string" || !Array.isArray(responseMetadata.tools) || typeof responseMetadata.store !== "boolean" || !Array.isArray(responseMetadata.messageIds)) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
agentId: responseMetadata.agentId,
|
|
29
|
+
model: responseMetadata.model,
|
|
30
|
+
createdAt: responseMetadata.createdAt,
|
|
31
|
+
completedAt: responseMetadata.completedAt,
|
|
32
|
+
status: responseMetadata.status === "completed" ? "completed" : "incomplete",
|
|
33
|
+
usage: responseMetadata.usage,
|
|
34
|
+
instructions: responseMetadata.instructions,
|
|
35
|
+
text: responseMetadata.text,
|
|
36
|
+
previousResponseId: responseMetadata.previousResponseId,
|
|
37
|
+
providerOptions: responseMetadata.providerOptions,
|
|
38
|
+
tools: responseMetadata.tools,
|
|
39
|
+
store: responseMetadata.store,
|
|
40
|
+
messageIds: responseMetadata.messageIds.filter((value) => typeof value === "string")
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function writeResponseTurnRecordMetadata(message, metadata) {
|
|
44
|
+
const contentMetadata = isPlainObject(message.content?.metadata) ? message.content.metadata : {};
|
|
45
|
+
const mastraMetadata = isPlainObject(contentMetadata.mastra) ? contentMetadata.mastra : {};
|
|
46
|
+
return {
|
|
47
|
+
...message,
|
|
48
|
+
content: {
|
|
49
|
+
...message.content,
|
|
50
|
+
metadata: {
|
|
51
|
+
...contentMetadata,
|
|
52
|
+
mastra: {
|
|
53
|
+
...mastraMetadata,
|
|
54
|
+
response: metadata
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async function findResponseTurnRecord({
|
|
61
|
+
mastra,
|
|
62
|
+
responseId,
|
|
63
|
+
requestContext
|
|
64
|
+
}) {
|
|
65
|
+
const memoryStore = await getResponseMemoryStore(mastra);
|
|
66
|
+
if (!memoryStore) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
const effectiveResourceId = chunkZKMVCV4G_cjs.getEffectiveResourceId(requestContext, void 0);
|
|
70
|
+
const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });
|
|
71
|
+
const message = matchedMessages[0];
|
|
72
|
+
if (!message || message.role !== "assistant") {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
const metadata = readResponseTurnRecordMetadata(message);
|
|
76
|
+
if (!metadata) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const thread = message.threadId ? await memoryStore.getThreadById({ threadId: message.threadId }) : null;
|
|
80
|
+
if (!thread) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
await chunkZKMVCV4G_cjs.validateThreadOwnership(thread, effectiveResourceId);
|
|
84
|
+
const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];
|
|
85
|
+
const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });
|
|
86
|
+
const messagesById = new Map(responseMessages.map((storedMessage) => [storedMessage.id, storedMessage]));
|
|
87
|
+
const orderedMessages = messageIds.map((messageId) => messagesById.get(messageId)).filter((storedMessage) => Boolean(storedMessage));
|
|
88
|
+
return { metadata, message, messages: orderedMessages, thread, memoryStore };
|
|
89
|
+
}
|
|
90
|
+
function createSyntheticResponseMessage({
|
|
91
|
+
responseId,
|
|
92
|
+
text,
|
|
93
|
+
threadContext
|
|
94
|
+
}) {
|
|
95
|
+
return {
|
|
96
|
+
id: responseId,
|
|
97
|
+
role: "assistant",
|
|
98
|
+
type: "text",
|
|
99
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
100
|
+
threadId: threadContext.threadId,
|
|
101
|
+
resourceId: threadContext.resourceId,
|
|
102
|
+
content: {
|
|
103
|
+
format: 2,
|
|
104
|
+
parts: text ? [{ type: "text", text }] : []
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
async function resolveResponseTurnMessagesForStorage({
|
|
109
|
+
result,
|
|
110
|
+
responseId,
|
|
111
|
+
text,
|
|
112
|
+
threadContext
|
|
113
|
+
}) {
|
|
114
|
+
const response = await result.response;
|
|
115
|
+
const responseMessages = response?.dbMessages?.length ? response.dbMessages : [];
|
|
116
|
+
if (!threadContext) {
|
|
117
|
+
return responseMessages;
|
|
118
|
+
}
|
|
119
|
+
if (responseMessages.length === 0) {
|
|
120
|
+
return [createSyntheticResponseMessage({ responseId, text, threadContext })];
|
|
121
|
+
}
|
|
122
|
+
return responseMessages;
|
|
123
|
+
}
|
|
124
|
+
async function persistResponseTurnRecord({
|
|
125
|
+
mastra,
|
|
126
|
+
responseId,
|
|
127
|
+
metadata,
|
|
128
|
+
threadContext,
|
|
129
|
+
messages
|
|
130
|
+
}) {
|
|
131
|
+
const memoryStore = await getResponseMemoryStore(mastra);
|
|
132
|
+
if (!memoryStore) {
|
|
133
|
+
throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Memory storage was not available while storing the response" });
|
|
134
|
+
}
|
|
135
|
+
const normalizedMessages = messages.map((message) => ({
|
|
136
|
+
...message,
|
|
137
|
+
threadId: message.threadId ?? threadContext.threadId,
|
|
138
|
+
resourceId: message.resourceId ?? threadContext.resourceId
|
|
139
|
+
}));
|
|
140
|
+
const lastAssistantIndex = [...normalizedMessages].map((message) => message.role).lastIndexOf("assistant");
|
|
141
|
+
const lastAssistantMessage = lastAssistantIndex >= 0 ? {
|
|
142
|
+
...normalizedMessages[lastAssistantIndex],
|
|
143
|
+
id: responseId
|
|
144
|
+
} : {
|
|
145
|
+
id: responseId,
|
|
146
|
+
role: "assistant",
|
|
147
|
+
type: "text",
|
|
148
|
+
createdAt: new Date(metadata.completedAt ? metadata.completedAt * 1e3 : Date.now()),
|
|
149
|
+
threadId: threadContext.threadId,
|
|
150
|
+
resourceId: threadContext.resourceId,
|
|
151
|
+
content: {
|
|
152
|
+
format: 2,
|
|
153
|
+
parts: []
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
if (lastAssistantIndex >= 0) {
|
|
157
|
+
normalizedMessages[lastAssistantIndex] = lastAssistantMessage;
|
|
158
|
+
} else {
|
|
159
|
+
normalizedMessages.push(lastAssistantMessage);
|
|
160
|
+
}
|
|
161
|
+
const staleMessageIds = lastAssistantIndex >= 0 && messages[lastAssistantIndex]?.id && messages[lastAssistantIndex]?.id !== responseId ? [messages[lastAssistantIndex].id] : [];
|
|
162
|
+
const storedMessage = writeResponseTurnRecordMetadata(lastAssistantMessage, {
|
|
163
|
+
...metadata,
|
|
164
|
+
messageIds: normalizedMessages.map((message) => message.id)
|
|
165
|
+
});
|
|
166
|
+
if (lastAssistantIndex >= 0) {
|
|
167
|
+
normalizedMessages[lastAssistantIndex] = storedMessage;
|
|
168
|
+
} else {
|
|
169
|
+
normalizedMessages[normalizedMessages.length - 1] = storedMessage;
|
|
170
|
+
}
|
|
171
|
+
await memoryStore.saveMessages({ messages: normalizedMessages });
|
|
172
|
+
if (staleMessageIds.length > 0) {
|
|
173
|
+
await memoryStore.deleteMessages(staleMessageIds);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
async function deleteResponseTurnRecord({
|
|
177
|
+
mastra,
|
|
178
|
+
responseId,
|
|
179
|
+
requestContext
|
|
180
|
+
}) {
|
|
181
|
+
const match = await findResponseTurnRecord({ mastra, responseId, requestContext });
|
|
182
|
+
if (!match) {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
await match.memoryStore.deleteMessages(match.metadata.messageIds);
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
exports.deleteResponseTurnRecord = deleteResponseTurnRecord;
|
|
190
|
+
exports.findResponseTurnRecord = findResponseTurnRecord;
|
|
191
|
+
exports.getResponseMemoryStore = getResponseMemoryStore;
|
|
192
|
+
exports.persistResponseTurnRecord = persistResponseTurnRecord;
|
|
193
|
+
exports.resolveResponseTurnMessagesForStorage = resolveResponseTurnMessagesForStorage;
|
|
194
|
+
//# sourceMappingURL=chunk-B6HNPO67.cjs.map
|
|
195
|
+
//# sourceMappingURL=chunk-B6HNPO67.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/responses.storage.ts"],"names":["getEffectiveResourceId","validateThreadOwnership","HTTPException"],"mappings":"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","file":"chunk-B6HNPO67.cjs","sourcesContent":["import type { MastraDBMessage } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { StorageThreadType } from '@mastra/core/memory';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { MemoryStorage } from '@mastra/core/storage';\nimport { HTTPException } from '../http-exception';\nimport type { ResponseObject, ResponseTextConfig, ResponseTool, ResponseUsage } from '../schemas/responses';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nexport type ThreadExecutionContext = {\n threadId: string;\n resourceId: string;\n};\n\nexport type UsageLike = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n} | null;\n\nexport type ProviderMetadataLike = Record<string, Record<string, unknown> | undefined> | undefined;\n\nexport type ResponseTurnRecordMetadata = {\n agentId: string;\n model: string;\n createdAt: number;\n completedAt: number | null;\n status: ResponseObject['status'];\n usage: ResponseUsage | null;\n instructions?: string;\n text?: ResponseTextConfig;\n previousResponseId?: string;\n providerOptions?: ProviderMetadataLike;\n tools: ResponseTool[];\n store: boolean;\n messageIds: string[];\n};\n\nexport type ResponseTurnRecord = {\n metadata: ResponseTurnRecordMetadata;\n message: MastraDBMessage;\n messages: MastraDBMessage[];\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\ntype ResponseResultLike = {\n response?:\n | Promise<{\n dbMessages?: MastraDBMessage[];\n }>\n | {\n dbMessages?: MastraDBMessage[];\n };\n};\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Resolves the memory storage used by response-turn records.\n */\nexport async function getResponseMemoryStore(mastra: Mastra | undefined): Promise<MemoryStorage | null> {\n const storage = mastra?.getStorage();\n if (!storage) {\n return null;\n }\n\n const memoryStore = await storage.getStore('memory');\n if (!memoryStore) {\n return null;\n }\n\n return memoryStore;\n}\n\n/**\n * Reads the response-turn record metadata attached to a stored assistant message.\n */\nfunction readResponseTurnRecordMetadata(message: MastraDBMessage): ResponseTurnRecordMetadata | null {\n const mastraMetadata = isPlainObject(message.content?.metadata?.mastra) ? message.content.metadata.mastra : null;\n const responseMetadata = mastraMetadata && isPlainObject(mastraMetadata.response) ? mastraMetadata.response : null;\n\n if (\n !responseMetadata ||\n typeof responseMetadata.agentId !== 'string' ||\n typeof responseMetadata.model !== 'string' ||\n typeof responseMetadata.createdAt !== 'number' ||\n (responseMetadata.completedAt !== null && typeof responseMetadata.completedAt !== 'number') ||\n (responseMetadata.instructions !== undefined && typeof responseMetadata.instructions !== 'string') ||\n (responseMetadata.text !== undefined &&\n (!isPlainObject(responseMetadata.text) || !isPlainObject(responseMetadata.text.format))) ||\n (responseMetadata.previousResponseId !== undefined && typeof responseMetadata.previousResponseId !== 'string') ||\n !Array.isArray(responseMetadata.tools) ||\n typeof responseMetadata.store !== 'boolean' ||\n !Array.isArray(responseMetadata.messageIds)\n ) {\n return null;\n }\n\n return {\n agentId: responseMetadata.agentId,\n model: responseMetadata.model,\n createdAt: responseMetadata.createdAt,\n completedAt: responseMetadata.completedAt,\n status: responseMetadata.status === 'completed' ? 'completed' : 'incomplete',\n usage: responseMetadata.usage as ResponseUsage | null,\n instructions: responseMetadata.instructions,\n text: responseMetadata.text as ResponseTextConfig | undefined,\n previousResponseId: responseMetadata.previousResponseId,\n providerOptions: responseMetadata.providerOptions as ProviderMetadataLike,\n tools: responseMetadata.tools as ResponseTool[],\n store: responseMetadata.store,\n messageIds: responseMetadata.messageIds.filter((value): value is string => typeof value === 'string'),\n };\n}\n\n/**\n * Writes response-turn record metadata onto a persisted assistant message.\n */\nfunction writeResponseTurnRecordMetadata(\n message: MastraDBMessage,\n metadata: ResponseTurnRecordMetadata,\n): MastraDBMessage {\n const contentMetadata = isPlainObject(message.content?.metadata) ? message.content.metadata : {};\n const mastraMetadata = isPlainObject(contentMetadata.mastra) ? contentMetadata.mastra : {};\n\n return {\n ...message,\n content: {\n ...message.content,\n metadata: {\n ...contentMetadata,\n mastra: {\n ...mastraMetadata,\n response: metadata,\n },\n },\n },\n };\n}\n\n/**\n * Looks up a stored response-turn record by response id.\n *\n * Response ids are assistant message ids, so this reconstructs the record by\n * loading that persisted assistant message, reading its response metadata, then\n * reloading the full set of stored turn messages referenced by the metadata.\n */\nexport async function findResponseTurnRecord({\n mastra,\n responseId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n const memoryStore = await getResponseMemoryStore(mastra);\n if (!memoryStore) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });\n const message = matchedMessages[0];\n if (!message || message.role !== 'assistant') {\n return null;\n }\n\n const metadata = readResponseTurnRecordMetadata(message);\n if (!metadata) {\n return null;\n }\n\n const thread = message.threadId ? await memoryStore.getThreadById({ threadId: message.threadId }) : null;\n if (!thread) {\n return null;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];\n const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });\n const messagesById = new Map(responseMessages.map(storedMessage => [storedMessage.id, storedMessage] as const));\n const orderedMessages = messageIds\n .map(messageId => messagesById.get(messageId))\n .filter((storedMessage): storedMessage is MastraDBMessage => Boolean(storedMessage));\n\n return { metadata, message, messages: orderedMessages, thread, memoryStore };\n}\n\n/**\n * Creates a synthetic assistant message for responses that did not emit any\n * persisted DB messages but still need a durable response-turn record.\n */\nfunction createSyntheticResponseMessage({\n responseId,\n text,\n threadContext,\n}: {\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext;\n}): MastraDBMessage {\n return {\n id: responseId,\n role: 'assistant',\n type: 'text',\n createdAt: new Date(),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: text ? [{ type: 'text', text }] : [],\n },\n };\n}\n\n/**\n * Resolves the Mastra messages that belong to the response turn being stored.\n */\nexport async function resolveResponseTurnMessagesForStorage({\n result,\n responseId,\n text,\n threadContext,\n}: {\n result: ResponseResultLike;\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext | null;\n}): Promise<MastraDBMessage[]> {\n const response = await result.response;\n const responseMessages = response?.dbMessages?.length ? response.dbMessages : [];\n\n if (!threadContext) {\n return responseMessages;\n }\n\n if (responseMessages.length === 0) {\n return [createSyntheticResponseMessage({ responseId, text, threadContext })];\n }\n\n return responseMessages;\n}\n\n/**\n * Persists a response-turn record by anchoring it on the final assistant\n * message in the stored turn.\n *\n * The response id becomes that assistant message id, and the response-specific\n * metadata is written onto the assistant message so later retrieval can rebuild\n * the Responses object from thread-backed storage.\n */\nexport async function persistResponseTurnRecord({\n mastra,\n responseId,\n metadata,\n threadContext,\n messages,\n}: {\n mastra: Mastra | undefined;\n responseId: string;\n metadata: ResponseTurnRecordMetadata;\n threadContext: ThreadExecutionContext;\n messages: MastraDBMessage[];\n}): Promise<void> {\n const memoryStore = await getResponseMemoryStore(mastra);\n if (!memoryStore) {\n throw new HTTPException(500, { message: 'Memory storage was not available while storing the response' });\n }\n\n const normalizedMessages: MastraDBMessage[] = messages.map(message => ({\n ...message,\n threadId: message.threadId ?? threadContext.threadId,\n resourceId: message.resourceId ?? threadContext.resourceId,\n }));\n\n const lastAssistantIndex = [...normalizedMessages].map(message => message.role).lastIndexOf('assistant');\n const lastAssistantMessage =\n lastAssistantIndex >= 0\n ? {\n ...normalizedMessages[lastAssistantIndex]!,\n id: responseId,\n }\n : ({\n id: responseId,\n role: 'assistant' as const,\n type: 'text' as const,\n createdAt: new Date(metadata.completedAt ? metadata.completedAt * 1000 : Date.now()),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: [],\n },\n } satisfies MastraDBMessage);\n\n if (lastAssistantIndex >= 0) {\n normalizedMessages[lastAssistantIndex] = lastAssistantMessage;\n } else {\n normalizedMessages.push(lastAssistantMessage);\n }\n\n const staleMessageIds =\n lastAssistantIndex >= 0 && messages[lastAssistantIndex]?.id && messages[lastAssistantIndex]?.id !== responseId\n ? [messages[lastAssistantIndex]!.id]\n : [];\n\n const storedMessage = writeResponseTurnRecordMetadata(lastAssistantMessage, {\n ...metadata,\n messageIds: normalizedMessages.map(message => message.id),\n });\n\n if (lastAssistantIndex >= 0) {\n normalizedMessages[lastAssistantIndex] = storedMessage;\n } else {\n normalizedMessages[normalizedMessages.length - 1] = storedMessage;\n }\n\n await memoryStore.saveMessages({ messages: normalizedMessages });\n\n if (staleMessageIds.length > 0) {\n await memoryStore.deleteMessages(staleMessageIds);\n }\n}\n\n/**\n * Removes all persisted messages for a stored response-turn record.\n */\nexport async function deleteResponseTurnRecord({\n mastra,\n responseId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<boolean> {\n const match = await findResponseTurnRecord({ mastra, responseId, requestContext });\n if (!match) {\n return false;\n }\n\n await match.memoryStore.deleteMessages(match.metadata.messageIds);\n return true;\n}\n"]}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { getEffectiveResourceId, validateThreadOwnership } from './chunk-USR6JK77.js';
|
|
2
|
+
import { HTTPException } from './chunk-6QWQZI4Q.js';
|
|
3
|
+
|
|
4
|
+
// src/server/handlers/responses.storage.ts
|
|
5
|
+
function isPlainObject(value) {
|
|
6
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
7
|
+
}
|
|
8
|
+
async function getResponseMemoryStore(mastra) {
|
|
9
|
+
const storage = mastra?.getStorage();
|
|
10
|
+
if (!storage) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const memoryStore = await storage.getStore("memory");
|
|
14
|
+
if (!memoryStore) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
return memoryStore;
|
|
18
|
+
}
|
|
19
|
+
function readResponseTurnRecordMetadata(message) {
|
|
20
|
+
const mastraMetadata = isPlainObject(message.content?.metadata?.mastra) ? message.content.metadata.mastra : null;
|
|
21
|
+
const responseMetadata = mastraMetadata && isPlainObject(mastraMetadata.response) ? mastraMetadata.response : null;
|
|
22
|
+
if (!responseMetadata || typeof responseMetadata.agentId !== "string" || typeof responseMetadata.model !== "string" || typeof responseMetadata.createdAt !== "number" || responseMetadata.completedAt !== null && typeof responseMetadata.completedAt !== "number" || responseMetadata.instructions !== void 0 && typeof responseMetadata.instructions !== "string" || responseMetadata.text !== void 0 && (!isPlainObject(responseMetadata.text) || !isPlainObject(responseMetadata.text.format)) || responseMetadata.previousResponseId !== void 0 && typeof responseMetadata.previousResponseId !== "string" || !Array.isArray(responseMetadata.tools) || typeof responseMetadata.store !== "boolean" || !Array.isArray(responseMetadata.messageIds)) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
agentId: responseMetadata.agentId,
|
|
27
|
+
model: responseMetadata.model,
|
|
28
|
+
createdAt: responseMetadata.createdAt,
|
|
29
|
+
completedAt: responseMetadata.completedAt,
|
|
30
|
+
status: responseMetadata.status === "completed" ? "completed" : "incomplete",
|
|
31
|
+
usage: responseMetadata.usage,
|
|
32
|
+
instructions: responseMetadata.instructions,
|
|
33
|
+
text: responseMetadata.text,
|
|
34
|
+
previousResponseId: responseMetadata.previousResponseId,
|
|
35
|
+
providerOptions: responseMetadata.providerOptions,
|
|
36
|
+
tools: responseMetadata.tools,
|
|
37
|
+
store: responseMetadata.store,
|
|
38
|
+
messageIds: responseMetadata.messageIds.filter((value) => typeof value === "string")
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function writeResponseTurnRecordMetadata(message, metadata) {
|
|
42
|
+
const contentMetadata = isPlainObject(message.content?.metadata) ? message.content.metadata : {};
|
|
43
|
+
const mastraMetadata = isPlainObject(contentMetadata.mastra) ? contentMetadata.mastra : {};
|
|
44
|
+
return {
|
|
45
|
+
...message,
|
|
46
|
+
content: {
|
|
47
|
+
...message.content,
|
|
48
|
+
metadata: {
|
|
49
|
+
...contentMetadata,
|
|
50
|
+
mastra: {
|
|
51
|
+
...mastraMetadata,
|
|
52
|
+
response: metadata
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async function findResponseTurnRecord({
|
|
59
|
+
mastra,
|
|
60
|
+
responseId,
|
|
61
|
+
requestContext
|
|
62
|
+
}) {
|
|
63
|
+
const memoryStore = await getResponseMemoryStore(mastra);
|
|
64
|
+
if (!memoryStore) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
const effectiveResourceId = getEffectiveResourceId(requestContext, void 0);
|
|
68
|
+
const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });
|
|
69
|
+
const message = matchedMessages[0];
|
|
70
|
+
if (!message || message.role !== "assistant") {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const metadata = readResponseTurnRecordMetadata(message);
|
|
74
|
+
if (!metadata) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
const thread = message.threadId ? await memoryStore.getThreadById({ threadId: message.threadId }) : null;
|
|
78
|
+
if (!thread) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
await validateThreadOwnership(thread, effectiveResourceId);
|
|
82
|
+
const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];
|
|
83
|
+
const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });
|
|
84
|
+
const messagesById = new Map(responseMessages.map((storedMessage) => [storedMessage.id, storedMessage]));
|
|
85
|
+
const orderedMessages = messageIds.map((messageId) => messagesById.get(messageId)).filter((storedMessage) => Boolean(storedMessage));
|
|
86
|
+
return { metadata, message, messages: orderedMessages, thread, memoryStore };
|
|
87
|
+
}
|
|
88
|
+
function createSyntheticResponseMessage({
|
|
89
|
+
responseId,
|
|
90
|
+
text,
|
|
91
|
+
threadContext
|
|
92
|
+
}) {
|
|
93
|
+
return {
|
|
94
|
+
id: responseId,
|
|
95
|
+
role: "assistant",
|
|
96
|
+
type: "text",
|
|
97
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
98
|
+
threadId: threadContext.threadId,
|
|
99
|
+
resourceId: threadContext.resourceId,
|
|
100
|
+
content: {
|
|
101
|
+
format: 2,
|
|
102
|
+
parts: text ? [{ type: "text", text }] : []
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
async function resolveResponseTurnMessagesForStorage({
|
|
107
|
+
result,
|
|
108
|
+
responseId,
|
|
109
|
+
text,
|
|
110
|
+
threadContext
|
|
111
|
+
}) {
|
|
112
|
+
const response = await result.response;
|
|
113
|
+
const responseMessages = response?.dbMessages?.length ? response.dbMessages : [];
|
|
114
|
+
if (!threadContext) {
|
|
115
|
+
return responseMessages;
|
|
116
|
+
}
|
|
117
|
+
if (responseMessages.length === 0) {
|
|
118
|
+
return [createSyntheticResponseMessage({ responseId, text, threadContext })];
|
|
119
|
+
}
|
|
120
|
+
return responseMessages;
|
|
121
|
+
}
|
|
122
|
+
async function persistResponseTurnRecord({
|
|
123
|
+
mastra,
|
|
124
|
+
responseId,
|
|
125
|
+
metadata,
|
|
126
|
+
threadContext,
|
|
127
|
+
messages
|
|
128
|
+
}) {
|
|
129
|
+
const memoryStore = await getResponseMemoryStore(mastra);
|
|
130
|
+
if (!memoryStore) {
|
|
131
|
+
throw new HTTPException(500, { message: "Memory storage was not available while storing the response" });
|
|
132
|
+
}
|
|
133
|
+
const normalizedMessages = messages.map((message) => ({
|
|
134
|
+
...message,
|
|
135
|
+
threadId: message.threadId ?? threadContext.threadId,
|
|
136
|
+
resourceId: message.resourceId ?? threadContext.resourceId
|
|
137
|
+
}));
|
|
138
|
+
const lastAssistantIndex = [...normalizedMessages].map((message) => message.role).lastIndexOf("assistant");
|
|
139
|
+
const lastAssistantMessage = lastAssistantIndex >= 0 ? {
|
|
140
|
+
...normalizedMessages[lastAssistantIndex],
|
|
141
|
+
id: responseId
|
|
142
|
+
} : {
|
|
143
|
+
id: responseId,
|
|
144
|
+
role: "assistant",
|
|
145
|
+
type: "text",
|
|
146
|
+
createdAt: new Date(metadata.completedAt ? metadata.completedAt * 1e3 : Date.now()),
|
|
147
|
+
threadId: threadContext.threadId,
|
|
148
|
+
resourceId: threadContext.resourceId,
|
|
149
|
+
content: {
|
|
150
|
+
format: 2,
|
|
151
|
+
parts: []
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
if (lastAssistantIndex >= 0) {
|
|
155
|
+
normalizedMessages[lastAssistantIndex] = lastAssistantMessage;
|
|
156
|
+
} else {
|
|
157
|
+
normalizedMessages.push(lastAssistantMessage);
|
|
158
|
+
}
|
|
159
|
+
const staleMessageIds = lastAssistantIndex >= 0 && messages[lastAssistantIndex]?.id && messages[lastAssistantIndex]?.id !== responseId ? [messages[lastAssistantIndex].id] : [];
|
|
160
|
+
const storedMessage = writeResponseTurnRecordMetadata(lastAssistantMessage, {
|
|
161
|
+
...metadata,
|
|
162
|
+
messageIds: normalizedMessages.map((message) => message.id)
|
|
163
|
+
});
|
|
164
|
+
if (lastAssistantIndex >= 0) {
|
|
165
|
+
normalizedMessages[lastAssistantIndex] = storedMessage;
|
|
166
|
+
} else {
|
|
167
|
+
normalizedMessages[normalizedMessages.length - 1] = storedMessage;
|
|
168
|
+
}
|
|
169
|
+
await memoryStore.saveMessages({ messages: normalizedMessages });
|
|
170
|
+
if (staleMessageIds.length > 0) {
|
|
171
|
+
await memoryStore.deleteMessages(staleMessageIds);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
async function deleteResponseTurnRecord({
|
|
175
|
+
mastra,
|
|
176
|
+
responseId,
|
|
177
|
+
requestContext
|
|
178
|
+
}) {
|
|
179
|
+
const match = await findResponseTurnRecord({ mastra, responseId, requestContext });
|
|
180
|
+
if (!match) {
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
await match.memoryStore.deleteMessages(match.metadata.messageIds);
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export { deleteResponseTurnRecord, findResponseTurnRecord, getResponseMemoryStore, persistResponseTurnRecord, resolveResponseTurnMessagesForStorage };
|
|
188
|
+
//# sourceMappingURL=chunk-BQXQZPYZ.js.map
|
|
189
|
+
//# sourceMappingURL=chunk-BQXQZPYZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/responses.storage.ts"],"names":[],"mappings":"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","file":"chunk-BQXQZPYZ.js","sourcesContent":["import type { MastraDBMessage } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { StorageThreadType } from '@mastra/core/memory';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { MemoryStorage } from '@mastra/core/storage';\nimport { HTTPException } from '../http-exception';\nimport type { ResponseObject, ResponseTextConfig, ResponseTool, ResponseUsage } from '../schemas/responses';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nexport type ThreadExecutionContext = {\n threadId: string;\n resourceId: string;\n};\n\nexport type UsageLike = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n} | null;\n\nexport type ProviderMetadataLike = Record<string, Record<string, unknown> | undefined> | undefined;\n\nexport type ResponseTurnRecordMetadata = {\n agentId: string;\n model: string;\n createdAt: number;\n completedAt: number | null;\n status: ResponseObject['status'];\n usage: ResponseUsage | null;\n instructions?: string;\n text?: ResponseTextConfig;\n previousResponseId?: string;\n providerOptions?: ProviderMetadataLike;\n tools: ResponseTool[];\n store: boolean;\n messageIds: string[];\n};\n\nexport type ResponseTurnRecord = {\n metadata: ResponseTurnRecordMetadata;\n message: MastraDBMessage;\n messages: MastraDBMessage[];\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\ntype ResponseResultLike = {\n response?:\n | Promise<{\n dbMessages?: MastraDBMessage[];\n }>\n | {\n dbMessages?: MastraDBMessage[];\n };\n};\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Resolves the memory storage used by response-turn records.\n */\nexport async function getResponseMemoryStore(mastra: Mastra | undefined): Promise<MemoryStorage | null> {\n const storage = mastra?.getStorage();\n if (!storage) {\n return null;\n }\n\n const memoryStore = await storage.getStore('memory');\n if (!memoryStore) {\n return null;\n }\n\n return memoryStore;\n}\n\n/**\n * Reads the response-turn record metadata attached to a stored assistant message.\n */\nfunction readResponseTurnRecordMetadata(message: MastraDBMessage): ResponseTurnRecordMetadata | null {\n const mastraMetadata = isPlainObject(message.content?.metadata?.mastra) ? message.content.metadata.mastra : null;\n const responseMetadata = mastraMetadata && isPlainObject(mastraMetadata.response) ? mastraMetadata.response : null;\n\n if (\n !responseMetadata ||\n typeof responseMetadata.agentId !== 'string' ||\n typeof responseMetadata.model !== 'string' ||\n typeof responseMetadata.createdAt !== 'number' ||\n (responseMetadata.completedAt !== null && typeof responseMetadata.completedAt !== 'number') ||\n (responseMetadata.instructions !== undefined && typeof responseMetadata.instructions !== 'string') ||\n (responseMetadata.text !== undefined &&\n (!isPlainObject(responseMetadata.text) || !isPlainObject(responseMetadata.text.format))) ||\n (responseMetadata.previousResponseId !== undefined && typeof responseMetadata.previousResponseId !== 'string') ||\n !Array.isArray(responseMetadata.tools) ||\n typeof responseMetadata.store !== 'boolean' ||\n !Array.isArray(responseMetadata.messageIds)\n ) {\n return null;\n }\n\n return {\n agentId: responseMetadata.agentId,\n model: responseMetadata.model,\n createdAt: responseMetadata.createdAt,\n completedAt: responseMetadata.completedAt,\n status: responseMetadata.status === 'completed' ? 'completed' : 'incomplete',\n usage: responseMetadata.usage as ResponseUsage | null,\n instructions: responseMetadata.instructions,\n text: responseMetadata.text as ResponseTextConfig | undefined,\n previousResponseId: responseMetadata.previousResponseId,\n providerOptions: responseMetadata.providerOptions as ProviderMetadataLike,\n tools: responseMetadata.tools as ResponseTool[],\n store: responseMetadata.store,\n messageIds: responseMetadata.messageIds.filter((value): value is string => typeof value === 'string'),\n };\n}\n\n/**\n * Writes response-turn record metadata onto a persisted assistant message.\n */\nfunction writeResponseTurnRecordMetadata(\n message: MastraDBMessage,\n metadata: ResponseTurnRecordMetadata,\n): MastraDBMessage {\n const contentMetadata = isPlainObject(message.content?.metadata) ? message.content.metadata : {};\n const mastraMetadata = isPlainObject(contentMetadata.mastra) ? contentMetadata.mastra : {};\n\n return {\n ...message,\n content: {\n ...message.content,\n metadata: {\n ...contentMetadata,\n mastra: {\n ...mastraMetadata,\n response: metadata,\n },\n },\n },\n };\n}\n\n/**\n * Looks up a stored response-turn record by response id.\n *\n * Response ids are assistant message ids, so this reconstructs the record by\n * loading that persisted assistant message, reading its response metadata, then\n * reloading the full set of stored turn messages referenced by the metadata.\n */\nexport async function findResponseTurnRecord({\n mastra,\n responseId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n const memoryStore = await getResponseMemoryStore(mastra);\n if (!memoryStore) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });\n const message = matchedMessages[0];\n if (!message || message.role !== 'assistant') {\n return null;\n }\n\n const metadata = readResponseTurnRecordMetadata(message);\n if (!metadata) {\n return null;\n }\n\n const thread = message.threadId ? await memoryStore.getThreadById({ threadId: message.threadId }) : null;\n if (!thread) {\n return null;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];\n const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });\n const messagesById = new Map(responseMessages.map(storedMessage => [storedMessage.id, storedMessage] as const));\n const orderedMessages = messageIds\n .map(messageId => messagesById.get(messageId))\n .filter((storedMessage): storedMessage is MastraDBMessage => Boolean(storedMessage));\n\n return { metadata, message, messages: orderedMessages, thread, memoryStore };\n}\n\n/**\n * Creates a synthetic assistant message for responses that did not emit any\n * persisted DB messages but still need a durable response-turn record.\n */\nfunction createSyntheticResponseMessage({\n responseId,\n text,\n threadContext,\n}: {\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext;\n}): MastraDBMessage {\n return {\n id: responseId,\n role: 'assistant',\n type: 'text',\n createdAt: new Date(),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: text ? [{ type: 'text', text }] : [],\n },\n };\n}\n\n/**\n * Resolves the Mastra messages that belong to the response turn being stored.\n */\nexport async function resolveResponseTurnMessagesForStorage({\n result,\n responseId,\n text,\n threadContext,\n}: {\n result: ResponseResultLike;\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext | null;\n}): Promise<MastraDBMessage[]> {\n const response = await result.response;\n const responseMessages = response?.dbMessages?.length ? response.dbMessages : [];\n\n if (!threadContext) {\n return responseMessages;\n }\n\n if (responseMessages.length === 0) {\n return [createSyntheticResponseMessage({ responseId, text, threadContext })];\n }\n\n return responseMessages;\n}\n\n/**\n * Persists a response-turn record by anchoring it on the final assistant\n * message in the stored turn.\n *\n * The response id becomes that assistant message id, and the response-specific\n * metadata is written onto the assistant message so later retrieval can rebuild\n * the Responses object from thread-backed storage.\n */\nexport async function persistResponseTurnRecord({\n mastra,\n responseId,\n metadata,\n threadContext,\n messages,\n}: {\n mastra: Mastra | undefined;\n responseId: string;\n metadata: ResponseTurnRecordMetadata;\n threadContext: ThreadExecutionContext;\n messages: MastraDBMessage[];\n}): Promise<void> {\n const memoryStore = await getResponseMemoryStore(mastra);\n if (!memoryStore) {\n throw new HTTPException(500, { message: 'Memory storage was not available while storing the response' });\n }\n\n const normalizedMessages: MastraDBMessage[] = messages.map(message => ({\n ...message,\n threadId: message.threadId ?? threadContext.threadId,\n resourceId: message.resourceId ?? threadContext.resourceId,\n }));\n\n const lastAssistantIndex = [...normalizedMessages].map(message => message.role).lastIndexOf('assistant');\n const lastAssistantMessage =\n lastAssistantIndex >= 0\n ? {\n ...normalizedMessages[lastAssistantIndex]!,\n id: responseId,\n }\n : ({\n id: responseId,\n role: 'assistant' as const,\n type: 'text' as const,\n createdAt: new Date(metadata.completedAt ? metadata.completedAt * 1000 : Date.now()),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: [],\n },\n } satisfies MastraDBMessage);\n\n if (lastAssistantIndex >= 0) {\n normalizedMessages[lastAssistantIndex] = lastAssistantMessage;\n } else {\n normalizedMessages.push(lastAssistantMessage);\n }\n\n const staleMessageIds =\n lastAssistantIndex >= 0 && messages[lastAssistantIndex]?.id && messages[lastAssistantIndex]?.id !== responseId\n ? [messages[lastAssistantIndex]!.id]\n : [];\n\n const storedMessage = writeResponseTurnRecordMetadata(lastAssistantMessage, {\n ...metadata,\n messageIds: normalizedMessages.map(message => message.id),\n });\n\n if (lastAssistantIndex >= 0) {\n normalizedMessages[lastAssistantIndex] = storedMessage;\n } else {\n normalizedMessages[normalizedMessages.length - 1] = storedMessage;\n }\n\n await memoryStore.saveMessages({ messages: normalizedMessages });\n\n if (staleMessageIds.length > 0) {\n await memoryStore.deleteMessages(staleMessageIds);\n }\n}\n\n/**\n * Removes all persisted messages for a stored response-turn record.\n */\nexport async function deleteResponseTurnRecord({\n mastra,\n responseId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<boolean> {\n const match = await findResponseTurnRecord({ mastra, responseId, requestContext });\n if (!match) {\n return false;\n }\n\n await match.memoryStore.deleteMessages(match.metadata.messageIds);\n return true;\n}\n"]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var chunkR2ODPDKE_cjs = require('./chunk-R2ODPDKE.cjs');
|
|
4
3
|
var chunk5N66PU3H_cjs = require('./chunk-5N66PU3H.cjs');
|
|
5
|
-
var chunkEXKS4QPI_cjs = require('./chunk-EXKS4QPI.cjs');
|
|
6
4
|
var chunkFPURK3UW_cjs = require('./chunk-FPURK3UW.cjs');
|
|
7
5
|
var chunkDAEHQAZC_cjs = require('./chunk-DAEHQAZC.cjs');
|
|
8
|
-
var
|
|
6
|
+
var chunkR2ODPDKE_cjs = require('./chunk-R2ODPDKE.cjs');
|
|
7
|
+
var chunk5IKQNFW5_cjs = require('./chunk-5IKQNFW5.cjs');
|
|
9
8
|
var chunkDOHUOYZS_cjs = require('./chunk-DOHUOYZS.cjs');
|
|
10
9
|
var chunkHITLRKIU_cjs = require('./chunk-HITLRKIU.cjs');
|
|
10
|
+
var chunkEXKS4QPI_cjs = require('./chunk-EXKS4QPI.cjs');
|
|
11
11
|
var chunkVTPTMQFA_cjs = require('./chunk-VTPTMQFA.cjs');
|
|
12
12
|
var chunkWC4OPIB4_cjs = require('./chunk-WC4OPIB4.cjs');
|
|
13
|
-
var chunkEES2ZZGL_cjs = require('./chunk-EES2ZZGL.cjs');
|
|
14
13
|
var chunkB34S64RC_cjs = require('./chunk-B34S64RC.cjs');
|
|
14
|
+
var chunkEES2ZZGL_cjs = require('./chunk-EES2ZZGL.cjs');
|
|
15
15
|
var chunkEGSCXVMR_cjs = require('./chunk-EGSCXVMR.cjs');
|
|
16
16
|
var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
|
|
17
17
|
var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
|
|
@@ -29681,7 +29681,7 @@ var LIST_AGENT_BUILDER_ACTIONS_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
29681
29681
|
try {
|
|
29682
29682
|
chunkWC4OPIB4_cjs.WorkflowRegistry.registerTemporaryWorkflows(agentBuilderWorkflows, mastra);
|
|
29683
29683
|
logger.info("Listing agent builder actions");
|
|
29684
|
-
return await
|
|
29684
|
+
return await chunk5IKQNFW5_cjs.LIST_WORKFLOWS_ROUTE.handler(ctx);
|
|
29685
29685
|
} catch (error) {
|
|
29686
29686
|
logger.error("Error listing agent builder actions", { error });
|
|
29687
29687
|
return chunkB34S64RC_cjs.handleError(error, "Error getting agent builder workflows");
|
|
@@ -29711,7 +29711,7 @@ var GET_AGENT_BUILDER_ACTION_BY_ID_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
29711
29711
|
});
|
|
29712
29712
|
}
|
|
29713
29713
|
logger.info("Getting agent builder action by ID", { actionId });
|
|
29714
|
-
return await
|
|
29714
|
+
return await chunk5IKQNFW5_cjs.GET_WORKFLOW_BY_ID_ROUTE.handler({ ...ctx, workflowId: actionId });
|
|
29715
29715
|
} catch (error) {
|
|
29716
29716
|
logger.error("Error getting agent builder action by ID", { error, actionId });
|
|
29717
29717
|
return chunkB34S64RC_cjs.handleError(error, "Error getting agent builder action");
|
|
@@ -29740,7 +29740,7 @@ var LIST_AGENT_BUILDER_ACTION_RUNS_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
29740
29740
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Invalid agent-builder action: ${actionId}` });
|
|
29741
29741
|
}
|
|
29742
29742
|
logger.info("Listing agent builder action runs", { actionId });
|
|
29743
|
-
return await
|
|
29743
|
+
return await chunk5IKQNFW5_cjs.LIST_WORKFLOW_RUNS_ROUTE.handler({
|
|
29744
29744
|
...ctx,
|
|
29745
29745
|
workflowId: actionId
|
|
29746
29746
|
});
|
|
@@ -29772,7 +29772,7 @@ var GET_AGENT_BUILDER_ACTION_RUN_BY_ID_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
29772
29772
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Invalid agent-builder action: ${actionId}` });
|
|
29773
29773
|
}
|
|
29774
29774
|
logger.info("Getting agent builder action run by ID", { actionId, runId });
|
|
29775
|
-
return await
|
|
29775
|
+
return await chunk5IKQNFW5_cjs.GET_WORKFLOW_RUN_BY_ID_ROUTE.handler({
|
|
29776
29776
|
...ctx,
|
|
29777
29777
|
workflowId: actionId
|
|
29778
29778
|
});
|
|
@@ -29804,7 +29804,7 @@ var CREATE_AGENT_BUILDER_ACTION_RUN_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
29804
29804
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Invalid agent-builder action: ${actionId}` });
|
|
29805
29805
|
}
|
|
29806
29806
|
logger.info("Creating agent builder action run", { actionId, runId });
|
|
29807
|
-
return await
|
|
29807
|
+
return await chunk5IKQNFW5_cjs.CREATE_WORKFLOW_RUN_ROUTE.handler({
|
|
29808
29808
|
...ctx,
|
|
29809
29809
|
workflowId: actionId
|
|
29810
29810
|
});
|
|
@@ -29837,7 +29837,7 @@ var STREAM_AGENT_BUILDER_ACTION_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
29837
29837
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Invalid agent-builder action: ${actionId}` });
|
|
29838
29838
|
}
|
|
29839
29839
|
logger.info("Streaming agent builder action", { actionId, runId });
|
|
29840
|
-
return await
|
|
29840
|
+
return await chunk5IKQNFW5_cjs.STREAM_WORKFLOW_ROUTE.handler({
|
|
29841
29841
|
...ctx,
|
|
29842
29842
|
workflowId: actionId,
|
|
29843
29843
|
requestContext
|
|
@@ -29871,7 +29871,7 @@ var START_ASYNC_AGENT_BUILDER_ACTION_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
29871
29871
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Invalid agent-builder action: ${actionId}` });
|
|
29872
29872
|
}
|
|
29873
29873
|
logger.info("Starting agent builder action asynchronously", { actionId, runId });
|
|
29874
|
-
return await
|
|
29874
|
+
return await chunk5IKQNFW5_cjs.START_ASYNC_WORKFLOW_ROUTE.handler({
|
|
29875
29875
|
...ctx,
|
|
29876
29876
|
workflowId: actionId,
|
|
29877
29877
|
requestContext
|
|
@@ -29905,7 +29905,7 @@ var START_AGENT_BUILDER_ACTION_RUN_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
29905
29905
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Invalid agent-builder action: ${actionId}` });
|
|
29906
29906
|
}
|
|
29907
29907
|
logger.info("Starting specific agent builder action run", { actionId, runId });
|
|
29908
|
-
return await
|
|
29908
|
+
return await chunk5IKQNFW5_cjs.START_WORKFLOW_RUN_ROUTE.handler({
|
|
29909
29909
|
...ctx,
|
|
29910
29910
|
workflowId: actionId,
|
|
29911
29911
|
requestContext
|
|
@@ -29938,7 +29938,7 @@ var OBSERVE_STREAM_AGENT_BUILDER_ACTION_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
29938
29938
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Invalid agent-builder action: ${actionId}` });
|
|
29939
29939
|
}
|
|
29940
29940
|
logger.info("Observing agent builder action stream", { actionId, runId });
|
|
29941
|
-
return await
|
|
29941
|
+
return await chunk5IKQNFW5_cjs.OBSERVE_STREAM_WORKFLOW_ROUTE.handler({
|
|
29942
29942
|
...ctx,
|
|
29943
29943
|
workflowId: actionId
|
|
29944
29944
|
});
|
|
@@ -29971,7 +29971,7 @@ var RESUME_ASYNC_AGENT_BUILDER_ACTION_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
29971
29971
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Invalid agent-builder action: ${actionId}` });
|
|
29972
29972
|
}
|
|
29973
29973
|
logger.info("Resuming agent builder action asynchronously", { actionId, runId, step });
|
|
29974
|
-
return await
|
|
29974
|
+
return await chunk5IKQNFW5_cjs.RESUME_ASYNC_WORKFLOW_ROUTE.handler({
|
|
29975
29975
|
...ctx,
|
|
29976
29976
|
workflowId: actionId,
|
|
29977
29977
|
requestContext
|
|
@@ -30005,7 +30005,7 @@ var RESUME_AGENT_BUILDER_ACTION_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
30005
30005
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Invalid agent-builder action: ${actionId}` });
|
|
30006
30006
|
}
|
|
30007
30007
|
logger.info("Resuming agent builder action", { actionId, runId, step });
|
|
30008
|
-
return await
|
|
30008
|
+
return await chunk5IKQNFW5_cjs.RESUME_WORKFLOW_ROUTE.handler({
|
|
30009
30009
|
...ctx,
|
|
30010
30010
|
workflowId: actionId,
|
|
30011
30011
|
requestContext
|
|
@@ -30039,7 +30039,7 @@ var RESUME_STREAM_AGENT_BUILDER_ACTION_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
30039
30039
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Invalid agent-builder action: ${actionId}` });
|
|
30040
30040
|
}
|
|
30041
30041
|
logger.info("Resuming agent builder action stream", { actionId, runId, step });
|
|
30042
|
-
return await
|
|
30042
|
+
return await chunk5IKQNFW5_cjs.RESUME_STREAM_WORKFLOW_ROUTE.handler({
|
|
30043
30043
|
...ctx,
|
|
30044
30044
|
workflowId: actionId,
|
|
30045
30045
|
requestContext
|
|
@@ -30071,7 +30071,7 @@ var CANCEL_AGENT_BUILDER_ACTION_RUN_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
30071
30071
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Invalid agent-builder action: ${actionId}` });
|
|
30072
30072
|
}
|
|
30073
30073
|
logger.info("Cancelling agent builder action run", { actionId, runId });
|
|
30074
|
-
return await
|
|
30074
|
+
return await chunk5IKQNFW5_cjs.CANCEL_WORKFLOW_RUN_ROUTE.handler({
|
|
30075
30075
|
...ctx,
|
|
30076
30076
|
workflowId: actionId
|
|
30077
30077
|
});
|
|
@@ -30104,7 +30104,7 @@ var STREAM_LEGACY_AGENT_BUILDER_ACTION_ROUTE = chunkEGSCXVMR_cjs.createRoute({
|
|
|
30104
30104
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Invalid agent-builder action: ${actionId}` });
|
|
30105
30105
|
}
|
|
30106
30106
|
logger.info("Streaming agent builder action (legacy)", { actionId, runId });
|
|
30107
|
-
return await
|
|
30107
|
+
return await chunk5IKQNFW5_cjs.STREAM_LEGACY_WORKFLOW_ROUTE.handler({
|
|
30108
30108
|
...ctx,
|
|
30109
30109
|
workflowId: actionId,
|
|
30110
30110
|
requestContext
|
|
@@ -30137,7 +30137,7 @@ var OBSERVE_STREAM_LEGACY_AGENT_BUILDER_ACTION_ROUTE = chunkEGSCXVMR_cjs.createR
|
|
|
30137
30137
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Invalid agent-builder action: ${actionId}` });
|
|
30138
30138
|
}
|
|
30139
30139
|
logger.info("Observing agent builder action stream (legacy)", { actionId, runId });
|
|
30140
|
-
return await
|
|
30140
|
+
return await chunk5IKQNFW5_cjs.OBSERVE_STREAM_LEGACY_WORKFLOW_ROUTE.handler({
|
|
30141
30141
|
...ctx,
|
|
30142
30142
|
workflowId: actionId
|
|
30143
30143
|
});
|
|
@@ -30166,5 +30166,5 @@ exports.START_ASYNC_AGENT_BUILDER_ACTION_ROUTE = START_ASYNC_AGENT_BUILDER_ACTIO
|
|
|
30166
30166
|
exports.STREAM_AGENT_BUILDER_ACTION_ROUTE = STREAM_AGENT_BUILDER_ACTION_ROUTE;
|
|
30167
30167
|
exports.STREAM_LEGACY_AGENT_BUILDER_ACTION_ROUTE = STREAM_LEGACY_AGENT_BUILDER_ACTION_ROUTE;
|
|
30168
30168
|
exports.agent_builder_exports = agent_builder_exports;
|
|
30169
|
-
//# sourceMappingURL=chunk-
|
|
30170
|
-
//# sourceMappingURL=chunk-
|
|
30169
|
+
//# sourceMappingURL=chunk-EDP2Y6XD.cjs.map
|
|
30170
|
+
//# sourceMappingURL=chunk-EDP2Y6XD.cjs.map
|