@mastra/server 1.33.0-alpha.6 → 1.33.0-alpha.7

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 (168) hide show
  1. package/CHANGELOG.md +152 -0
  2. package/dist/{api-schema-manifest-IWGQ5O45.js → api-schema-manifest-JLJ555JD.js} +3 -3
  3. package/dist/{api-schema-manifest-IWGQ5O45.js.map → api-schema-manifest-JLJ555JD.js.map} +1 -1
  4. package/dist/{api-schema-manifest-KDXQELMU.cjs → api-schema-manifest-QMJFKSSQ.cjs} +4 -4
  5. package/dist/{api-schema-manifest-KDXQELMU.cjs.map → api-schema-manifest-QMJFKSSQ.cjs.map} +1 -1
  6. package/dist/{chunk-IDLB647Y.js → chunk-2S4WCY5N.js} +3 -3
  7. package/dist/{chunk-IDLB647Y.js.map → chunk-2S4WCY5N.js.map} +1 -1
  8. package/dist/{chunk-EFW6MWXU.cjs → chunk-5XW4MKE6.cjs} +22 -2
  9. package/dist/chunk-5XW4MKE6.cjs.map +1 -0
  10. package/dist/{chunk-N6HISTTP.cjs → chunk-6ICH4PZY.cjs} +8 -8
  11. package/dist/{chunk-N6HISTTP.cjs.map → chunk-6ICH4PZY.cjs.map} +1 -1
  12. package/dist/{chunk-TE2PWB67.js → chunk-6IR53OXN.js} +3 -3
  13. package/dist/{chunk-TE2PWB67.js.map → chunk-6IR53OXN.js.map} +1 -1
  14. package/dist/{chunk-LXNZK6NM.cjs → chunk-6PJXFSA6.cjs} +51 -51
  15. package/dist/{chunk-LXNZK6NM.cjs.map → chunk-6PJXFSA6.cjs.map} +1 -1
  16. package/dist/{chunk-64YJOWH2.cjs → chunk-72W42JL4.cjs} +5 -5
  17. package/dist/{chunk-64YJOWH2.cjs.map → chunk-72W42JL4.cjs.map} +1 -1
  18. package/dist/{chunk-UOBKNRHM.cjs → chunk-7MXANTMR.cjs} +7 -7
  19. package/dist/{chunk-UOBKNRHM.cjs.map → chunk-7MXANTMR.cjs.map} +1 -1
  20. package/dist/{chunk-RQNN75EV.js → chunk-7QLLMDX3.js} +4 -4
  21. package/dist/{chunk-RQNN75EV.js.map → chunk-7QLLMDX3.js.map} +1 -1
  22. package/dist/{chunk-2KDOM6QE.js → chunk-7UMTLDZF.js} +106 -4
  23. package/dist/chunk-7UMTLDZF.js.map +1 -0
  24. package/dist/{chunk-WEDFF5FH.js → chunk-7UYUFWJS.js} +42 -42
  25. package/dist/chunk-7UYUFWJS.js.map +1 -0
  26. package/dist/{chunk-VZNSMKB7.cjs → chunk-7Y6MST2S.cjs} +135 -133
  27. package/dist/chunk-7Y6MST2S.cjs.map +1 -0
  28. package/dist/{chunk-CSG535HL.cjs → chunk-AHKXIRNB.cjs} +67 -41
  29. package/dist/chunk-AHKXIRNB.cjs.map +1 -0
  30. package/dist/chunk-B3CHYE7C.js +549 -0
  31. package/dist/chunk-B3CHYE7C.js.map +1 -0
  32. package/dist/{chunk-XPF4VEXO.js → chunk-C45QKFMT.js} +18 -16
  33. package/dist/chunk-C45QKFMT.js.map +1 -0
  34. package/dist/{chunk-OJLXPTSL.cjs → chunk-CXWOBZOJ.cjs} +13 -13
  35. package/dist/{chunk-OJLXPTSL.cjs.map → chunk-CXWOBZOJ.cjs.map} +1 -1
  36. package/dist/{chunk-5HQXXBTM.js → chunk-DXZFPYNO.js} +3 -3
  37. package/dist/{chunk-5HQXXBTM.js.map → chunk-DXZFPYNO.js.map} +1 -1
  38. package/dist/{chunk-TWT64BVR.js → chunk-E55OUW7R.js} +44 -69
  39. package/dist/chunk-E55OUW7R.js.map +1 -0
  40. package/dist/{chunk-LOZT5NDU.cjs → chunk-E74QCKFN.cjs} +3 -3
  41. package/dist/{chunk-LOZT5NDU.cjs.map → chunk-E74QCKFN.cjs.map} +1 -1
  42. package/dist/{chunk-IT26WLSZ.js → chunk-EWN5J4RH.js} +6 -6
  43. package/dist/{chunk-IT26WLSZ.js.map → chunk-EWN5J4RH.js.map} +1 -1
  44. package/dist/chunk-F3HP5HM6.cjs +998 -0
  45. package/dist/chunk-F3HP5HM6.cjs.map +1 -0
  46. package/dist/{chunk-47U5QTGT.cjs → chunk-FST7LM2Z.cjs} +76 -29
  47. package/dist/chunk-FST7LM2Z.cjs.map +1 -0
  48. package/dist/{chunk-MTKGUIFX.js → chunk-GCR6GN77.js} +4 -4
  49. package/dist/{chunk-MTKGUIFX.js.map → chunk-GCR6GN77.js.map} +1 -1
  50. package/dist/{chunk-ANXKF4TA.cjs → chunk-HN23LS75.cjs} +108 -108
  51. package/dist/chunk-HN23LS75.cjs.map +1 -0
  52. package/dist/{chunk-EQ27BVOT.js → chunk-IJFWBMHN.js} +3 -3
  53. package/dist/{chunk-EQ27BVOT.js.map → chunk-IJFWBMHN.js.map} +1 -1
  54. package/dist/{chunk-UOC4K3RU.js → chunk-JOUPK2UV.js} +3 -3
  55. package/dist/{chunk-UOC4K3RU.js.map → chunk-JOUPK2UV.js.map} +1 -1
  56. package/dist/{chunk-IYEGDP3G.js → chunk-M7DF3D2M.js} +3 -3
  57. package/dist/{chunk-IYEGDP3G.js.map → chunk-M7DF3D2M.js.map} +1 -1
  58. package/dist/{chunk-KSQVYDDO.cjs → chunk-OAWMKZCM.cjs} +4 -4
  59. package/dist/{chunk-KSQVYDDO.cjs.map → chunk-OAWMKZCM.cjs.map} +1 -1
  60. package/dist/{chunk-CYLX5SJ4.js → chunk-PX7NE2KG.js} +4 -4
  61. package/dist/{chunk-CYLX5SJ4.js.map → chunk-PX7NE2KG.js.map} +1 -1
  62. package/dist/{chunk-2HM5SQM5.js → chunk-Q3JFNANT.js} +3 -3
  63. package/dist/{chunk-2HM5SQM5.js.map → chunk-Q3JFNANT.js.map} +1 -1
  64. package/dist/{chunk-EKS524LA.js → chunk-QJD675UA.js} +76 -29
  65. package/dist/chunk-QJD675UA.js.map +1 -0
  66. package/dist/{chunk-WMS63TTU.cjs → chunk-T3X7ZXVR.cjs} +140 -36
  67. package/dist/chunk-T3X7ZXVR.cjs.map +1 -0
  68. package/dist/{chunk-4KNRG3KO.cjs → chunk-TFJZGWXX.cjs} +7 -7
  69. package/dist/{chunk-4KNRG3KO.cjs.map → chunk-TFJZGWXX.cjs.map} +1 -1
  70. package/dist/chunk-TLLV2JP5.js +983 -0
  71. package/dist/chunk-TLLV2JP5.js.map +1 -0
  72. package/dist/chunk-TTJ3DYZH.cjs +557 -0
  73. package/dist/chunk-TTJ3DYZH.cjs.map +1 -0
  74. package/dist/{chunk-R7EB3VDI.cjs → chunk-VZV7DUW7.cjs} +4 -4
  75. package/dist/{chunk-R7EB3VDI.cjs.map → chunk-VZV7DUW7.cjs.map} +1 -1
  76. package/dist/{chunk-GAS277DM.cjs → chunk-WLDDOYXP.cjs} +7 -7
  77. package/dist/{chunk-GAS277DM.cjs.map → chunk-WLDDOYXP.cjs.map} +1 -1
  78. package/dist/{chunk-Y3OQTZDN.js → chunk-WN62DURP.js} +37 -11
  79. package/dist/chunk-WN62DURP.js.map +1 -0
  80. package/dist/{chunk-QEM5P746.cjs → chunk-XUFBFMUU.cjs} +67 -92
  81. package/dist/chunk-XUFBFMUU.cjs.map +1 -0
  82. package/dist/{chunk-BK2PRWVJ.cjs → chunk-Y5LNMKEY.cjs} +5 -5
  83. package/dist/{chunk-BK2PRWVJ.cjs.map → chunk-Y5LNMKEY.cjs.map} +1 -1
  84. package/dist/{chunk-OJRAH5VV.js → chunk-YARY4I5U.js} +18 -3
  85. package/dist/chunk-YARY4I5U.js.map +1 -0
  86. package/dist/docs/SKILL.md +1 -1
  87. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  88. package/dist/{observational-memory-HAJ3K5JJ-RB4HNAIV.cjs → observational-memory-IP2RVQQG-5IHDRYAB.cjs} +26 -26
  89. package/dist/{observational-memory-HAJ3K5JJ-RB4HNAIV.cjs.map → observational-memory-IP2RVQQG-5IHDRYAB.cjs.map} +1 -1
  90. package/dist/{observational-memory-HAJ3K5JJ-J2PZI56J.js → observational-memory-IP2RVQQG-DIZILT73.js} +3 -3
  91. package/dist/{observational-memory-HAJ3K5JJ-J2PZI56J.js.map → observational-memory-IP2RVQQG-DIZILT73.js.map} +1 -1
  92. package/dist/server/auth/index.cjs +15 -15
  93. package/dist/server/auth/index.js +1 -1
  94. package/dist/server/constants.d.ts +5 -0
  95. package/dist/server/constants.d.ts.map +1 -1
  96. package/dist/server/handlers/a2a.cjs +14 -14
  97. package/dist/server/handlers/a2a.js +1 -1
  98. package/dist/server/handlers/agent-builder.cjs +16 -16
  99. package/dist/server/handlers/agent-builder.js +1 -1
  100. package/dist/server/handlers/agents.cjs +39 -39
  101. package/dist/server/handlers/agents.d.ts.map +1 -1
  102. package/dist/server/handlers/agents.js +1 -1
  103. package/dist/server/handlers/auth.cjs +11 -11
  104. package/dist/server/handlers/auth.js +1 -1
  105. package/dist/server/handlers/conversations.cjs +5 -5
  106. package/dist/server/handlers/conversations.js +1 -1
  107. package/dist/server/handlers/logs.cjs +4 -4
  108. package/dist/server/handlers/logs.js +1 -1
  109. package/dist/server/handlers/memory.cjs +27 -27
  110. package/dist/server/handlers/memory.js +1 -1
  111. package/dist/server/handlers/responses.adapter.cjs +18 -14
  112. package/dist/server/handlers/responses.adapter.d.ts +96 -2
  113. package/dist/server/handlers/responses.adapter.d.ts.map +1 -1
  114. package/dist/server/handlers/responses.adapter.js +1 -1
  115. package/dist/server/handlers/responses.cjs +4 -4
  116. package/dist/server/handlers/responses.d.ts.map +1 -1
  117. package/dist/server/handlers/responses.js +1 -1
  118. package/dist/server/handlers/responses.storage.cjs +8 -8
  119. package/dist/server/handlers/responses.storage.d.ts +4 -2
  120. package/dist/server/handlers/responses.storage.d.ts.map +1 -1
  121. package/dist/server/handlers/responses.storage.js +1 -1
  122. package/dist/server/handlers/scores.cjs +7 -7
  123. package/dist/server/handlers/scores.js +1 -1
  124. package/dist/server/handlers/system.cjs +3 -3
  125. package/dist/server/handlers/system.js +1 -1
  126. package/dist/server/handlers/tools.cjs +6 -6
  127. package/dist/server/handlers/tools.js +1 -1
  128. package/dist/server/handlers/utils.cjs +10 -10
  129. package/dist/server/handlers/utils.js +1 -1
  130. package/dist/server/handlers/voice.cjs +8 -8
  131. package/dist/server/handlers/voice.js +1 -1
  132. package/dist/server/handlers/workflows.cjs +32 -24
  133. package/dist/server/handlers/workflows.d.ts +83 -0
  134. package/dist/server/handlers/workflows.d.ts.map +1 -1
  135. package/dist/server/handlers/workflows.js +1 -1
  136. package/dist/server/handlers.cjs +22 -22
  137. package/dist/server/handlers.js +11 -11
  138. package/dist/server/server-adapter/index.cjs +43 -16
  139. package/dist/server/server-adapter/index.cjs.map +1 -1
  140. package/dist/server/server-adapter/index.d.ts +5 -1
  141. package/dist/server/server-adapter/index.d.ts.map +1 -1
  142. package/dist/server/server-adapter/index.js +15 -7
  143. package/dist/server/server-adapter/index.js.map +1 -1
  144. package/dist/server/server-adapter/routes/workflows.d.ts +66 -1
  145. package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -1
  146. package/package.json +7 -7
  147. package/dist/chunk-2KDOM6QE.js.map +0 -1
  148. package/dist/chunk-47U5QTGT.cjs.map +0 -1
  149. package/dist/chunk-AJYJ4H7P.js +0 -438
  150. package/dist/chunk-AJYJ4H7P.js.map +0 -1
  151. package/dist/chunk-ANXKF4TA.cjs.map +0 -1
  152. package/dist/chunk-CSG535HL.cjs.map +0 -1
  153. package/dist/chunk-DFSUBEGE.js +0 -226
  154. package/dist/chunk-DFSUBEGE.js.map +0 -1
  155. package/dist/chunk-EFW6MWXU.cjs.map +0 -1
  156. package/dist/chunk-EKS524LA.js.map +0 -1
  157. package/dist/chunk-OJ72T77G.cjs +0 -452
  158. package/dist/chunk-OJ72T77G.cjs.map +0 -1
  159. package/dist/chunk-OJRAH5VV.js.map +0 -1
  160. package/dist/chunk-PJYQMPXT.cjs +0 -234
  161. package/dist/chunk-PJYQMPXT.cjs.map +0 -1
  162. package/dist/chunk-QEM5P746.cjs.map +0 -1
  163. package/dist/chunk-TWT64BVR.js.map +0 -1
  164. package/dist/chunk-VZNSMKB7.cjs.map +0 -1
  165. package/dist/chunk-WEDFF5FH.js.map +0 -1
  166. package/dist/chunk-WMS63TTU.cjs.map +0 -1
  167. package/dist/chunk-XPF4VEXO.js.map +0 -1
  168. package/dist/chunk-Y3OQTZDN.js.map +0 -1
@@ -1,226 +0,0 @@
1
- import { getEffectiveResourceId, validateThreadOwnership } from './chunk-UOC4K3RU.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 getAgentMemoryStore({
9
- agent,
10
- requestContext
11
- }) {
12
- const memory = await agent.getMemory({ requestContext });
13
- if (!memory) {
14
- return null;
15
- }
16
- try {
17
- return await memory.storage.getStore("memory") ?? null;
18
- } catch {
19
- return null;
20
- }
21
- }
22
- function readResponseTurnRecordMetadata(message) {
23
- const mastraMetadata = isPlainObject(message.content?.metadata?.mastra) ? message.content.metadata.mastra : null;
24
- const responseMetadata = mastraMetadata && isPlainObject(mastraMetadata.response) ? mastraMetadata.response : null;
25
- 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)) {
26
- return null;
27
- }
28
- return {
29
- agentId: responseMetadata.agentId,
30
- model: responseMetadata.model,
31
- createdAt: responseMetadata.createdAt,
32
- completedAt: responseMetadata.completedAt,
33
- status: responseMetadata.status === "completed" ? "completed" : "incomplete",
34
- usage: responseMetadata.usage,
35
- instructions: responseMetadata.instructions,
36
- text: responseMetadata.text,
37
- previousResponseId: responseMetadata.previousResponseId,
38
- providerOptions: responseMetadata.providerOptions,
39
- tools: responseMetadata.tools,
40
- store: responseMetadata.store,
41
- messageIds: responseMetadata.messageIds.filter((value) => typeof value === "string")
42
- };
43
- }
44
- function writeResponseTurnRecordMetadata(message, metadata) {
45
- const contentMetadata = isPlainObject(message.content?.metadata) ? message.content.metadata : {};
46
- const mastraMetadata = isPlainObject(contentMetadata.mastra) ? contentMetadata.mastra : {};
47
- return {
48
- ...message,
49
- content: {
50
- ...message.content,
51
- metadata: {
52
- ...contentMetadata,
53
- mastra: {
54
- ...mastraMetadata,
55
- response: metadata
56
- }
57
- }
58
- }
59
- };
60
- }
61
- async function findResponseTurnRecord({
62
- agent,
63
- responseId,
64
- requestContext
65
- }) {
66
- const memoryStore = await getAgentMemoryStore({ agent, requestContext });
67
- if (!memoryStore) {
68
- return null;
69
- }
70
- const effectiveResourceId = getEffectiveResourceId(requestContext, void 0);
71
- const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });
72
- const message = matchedMessages[0];
73
- if (!message || message.role !== "assistant") {
74
- return null;
75
- }
76
- const metadata = readResponseTurnRecordMetadata(message);
77
- if (!metadata || metadata.agentId !== agent.id) {
78
- return null;
79
- }
80
- const thread = message.threadId ? await memoryStore.getThreadById({ threadId: message.threadId }) : null;
81
- if (!thread) {
82
- return null;
83
- }
84
- await validateThreadOwnership(thread, effectiveResourceId);
85
- const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];
86
- const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });
87
- const messagesById = new Map(responseMessages.map((storedMessage) => [storedMessage.id, storedMessage]));
88
- const orderedMessages = messageIds.map((messageId) => messagesById.get(messageId)).filter((storedMessage) => Boolean(storedMessage));
89
- return { metadata, message, messages: orderedMessages, thread, memoryStore };
90
- }
91
- async function findResponseTurnRecordAcrossAgents({
92
- mastra,
93
- responseId,
94
- requestContext
95
- }) {
96
- if (!mastra) {
97
- return null;
98
- }
99
- const agents = Object.values(mastra.listAgents());
100
- for (const agent of agents) {
101
- const match = await findResponseTurnRecord({ agent, responseId, requestContext });
102
- if (match) {
103
- return match;
104
- }
105
- }
106
- return null;
107
- }
108
- async function findConversationThreadAcrossAgents({
109
- mastra,
110
- conversationId,
111
- requestContext
112
- }) {
113
- if (!mastra) {
114
- return null;
115
- }
116
- const effectiveResourceId = getEffectiveResourceId(requestContext, void 0);
117
- const agents = Object.values(mastra.listAgents());
118
- for (const agent of agents) {
119
- const memoryStore = await getAgentMemoryStore({ agent, requestContext });
120
- if (!memoryStore) {
121
- continue;
122
- }
123
- const thread = await memoryStore.getThreadById({ threadId: conversationId });
124
- if (!thread) {
125
- continue;
126
- }
127
- await validateThreadOwnership(thread, effectiveResourceId);
128
- return { thread, memoryStore };
129
- }
130
- return null;
131
- }
132
- function createSyntheticResponseMessage({
133
- responseId,
134
- text,
135
- threadContext
136
- }) {
137
- return {
138
- id: responseId,
139
- role: "assistant",
140
- type: "text",
141
- createdAt: /* @__PURE__ */ new Date(),
142
- threadId: threadContext.threadId,
143
- resourceId: threadContext.resourceId,
144
- content: {
145
- format: 2,
146
- parts: text ? [{ type: "text", text }] : []
147
- }
148
- };
149
- }
150
- async function resolveResponseTurnMessagesForStorage({
151
- result,
152
- responseId,
153
- text,
154
- threadContext
155
- }) {
156
- const response = await result.response;
157
- const responseMessages = response?.dbMessages?.length ? response.dbMessages : [];
158
- if (!threadContext) {
159
- return responseMessages;
160
- }
161
- if (responseMessages.length === 0) {
162
- return [createSyntheticResponseMessage({ responseId, text, threadContext })];
163
- }
164
- return responseMessages;
165
- }
166
- async function persistResponseTurnRecord({
167
- memoryStore,
168
- responseId,
169
- metadata,
170
- threadContext,
171
- messages
172
- }) {
173
- if (!memoryStore) {
174
- throw new HTTPException(500, { message: "Memory storage was not available while storing the response" });
175
- }
176
- const normalizedMessages = messages.map((message) => ({
177
- ...message,
178
- threadId: message.threadId ?? threadContext.threadId,
179
- resourceId: message.resourceId ?? threadContext.resourceId
180
- }));
181
- const lastAssistantIndex = [...normalizedMessages].map((message) => message.role).lastIndexOf("assistant");
182
- const lastAssistantMessage = lastAssistantIndex >= 0 ? {
183
- ...normalizedMessages[lastAssistantIndex],
184
- id: responseId
185
- } : {
186
- id: responseId,
187
- role: "assistant",
188
- type: "text",
189
- createdAt: new Date(metadata.completedAt ? metadata.completedAt * 1e3 : Date.now()),
190
- threadId: threadContext.threadId,
191
- resourceId: threadContext.resourceId,
192
- content: {
193
- format: 2,
194
- parts: []
195
- }
196
- };
197
- if (lastAssistantIndex >= 0) {
198
- normalizedMessages[lastAssistantIndex] = lastAssistantMessage;
199
- } else {
200
- normalizedMessages.push(lastAssistantMessage);
201
- }
202
- const staleMessageIds = lastAssistantIndex >= 0 && messages[lastAssistantIndex]?.id && messages[lastAssistantIndex]?.id !== responseId ? [messages[lastAssistantIndex].id] : [];
203
- const storedMessage = writeResponseTurnRecordMetadata(lastAssistantMessage, {
204
- ...metadata,
205
- messageIds: normalizedMessages.map((message) => message.id)
206
- });
207
- if (lastAssistantIndex >= 0) {
208
- normalizedMessages[lastAssistantIndex] = storedMessage;
209
- } else {
210
- normalizedMessages[normalizedMessages.length - 1] = storedMessage;
211
- }
212
- await memoryStore.saveMessages({ messages: normalizedMessages });
213
- if (staleMessageIds.length > 0) {
214
- await memoryStore.deleteMessages(staleMessageIds);
215
- }
216
- }
217
- async function deleteResponseTurnRecord({
218
- responseTurnRecord
219
- }) {
220
- const messageIds = responseTurnRecord.messages.length > 0 ? responseTurnRecord.messages.map((message) => message.id) : [responseTurnRecord.message.id];
221
- await responseTurnRecord.memoryStore.deleteMessages(messageIds);
222
- }
223
-
224
- export { deleteResponseTurnRecord, findConversationThreadAcrossAgents, findResponseTurnRecord, findResponseTurnRecordAcrossAgents, getAgentMemoryStore, persistResponseTurnRecord, resolveResponseTurnMessagesForStorage };
225
- //# sourceMappingURL=chunk-DFSUBEGE.js.map
226
- //# sourceMappingURL=chunk-DFSUBEGE.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server/handlers/responses.storage.ts"],"names":[],"mappings":"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","file":"chunk-DFSUBEGE.js","sourcesContent":["import type { Agent, 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 backing memory store for a specific agent.\n *\n * This follows the normal agent-memory path. `agent.getMemory()` injects Mastra\n * root storage when the memory has no own storage, so this naturally prefers\n * agent storage first and falls back to Mastra storage through the same codepath.\n */\nexport async function getAgentMemoryStore({\n agent,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n requestContext: RequestContext;\n}): Promise<MemoryStorage | null> {\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n return null;\n }\n\n try {\n return (await memory.storage.getStore('memory')) ?? null;\n } catch {\n return null;\n }\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 agent,\n responseId,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\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 || metadata.agentId !== agent.id) {\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\nexport async function findResponseTurnRecordAcrossAgents({\n mastra,\n responseId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n for (const agent of agents) {\n const match = await findResponseTurnRecord({ agent, responseId, requestContext });\n if (match) {\n return match;\n }\n }\n\n return null;\n}\n\nexport type ConversationThreadRecord = {\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\nexport async function findConversationThreadAcrossAgents({\n mastra,\n conversationId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n conversationId: string;\n requestContext: RequestContext;\n}): Promise<ConversationThreadRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n\n for (const agent of agents) {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!memoryStore) {\n continue;\n }\n\n const thread = await memoryStore.getThreadById({ threadId: conversationId });\n if (!thread) {\n continue;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n return { thread, memoryStore };\n }\n\n return null;\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 memoryStore,\n responseId,\n metadata,\n threadContext,\n messages,\n}: {\n memoryStore: MemoryStorage | null;\n responseId: string;\n metadata: ResponseTurnRecordMetadata;\n threadContext: ThreadExecutionContext;\n messages: MastraDBMessage[];\n}): Promise<void> {\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 responseTurnRecord,\n}: {\n responseTurnRecord: ResponseTurnRecord;\n}): Promise<void> {\n const messageIds =\n responseTurnRecord.messages.length > 0\n ? responseTurnRecord.messages.map(message => message.id)\n : [responseTurnRecord.message.id];\n\n await responseTurnRecord.memoryStore.deleteMessages(messageIds);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server/constants.ts"],"names":[],"mappings":"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","file":"chunk-EFW6MWXU.cjs","sourcesContent":["/**\n * Constants inlined from @mastra/core to avoid import compatibility\n * issues with older core versions that don't export them yet.\n *\n * - Reserved RequestContext keys are inlined from @mastra/core/request-context.\n * - Workspace tool constants are inlined from @mastra/core/workspace.\n */\n\nexport const MASTRA_RESOURCE_ID_KEY = 'mastra__resourceId';\n\nexport const MASTRA_THREAD_ID_KEY = 'mastra__threadId';\n\nexport const MASTRA_AUTH_TOKEN_KEY = 'mastra__authToken';\n\nexport const WORKSPACE_TOOLS_PREFIX = 'mastra_workspace' as const;\n\nexport const WORKSPACE_TOOLS = {\n FILESYSTEM: {\n READ_FILE: `${WORKSPACE_TOOLS_PREFIX}_read_file` as const,\n WRITE_FILE: `${WORKSPACE_TOOLS_PREFIX}_write_file` as const,\n EDIT_FILE: `${WORKSPACE_TOOLS_PREFIX}_edit_file` as const,\n LIST_FILES: `${WORKSPACE_TOOLS_PREFIX}_list_files` as const,\n DELETE: `${WORKSPACE_TOOLS_PREFIX}_delete` as const,\n FILE_STAT: `${WORKSPACE_TOOLS_PREFIX}_file_stat` as const,\n MKDIR: `${WORKSPACE_TOOLS_PREFIX}_mkdir` as const,\n GREP: `${WORKSPACE_TOOLS_PREFIX}_grep` as const,\n },\n SANDBOX: {\n EXECUTE_COMMAND: `${WORKSPACE_TOOLS_PREFIX}_execute_command` as const,\n },\n SEARCH: {\n SEARCH: `${WORKSPACE_TOOLS_PREFIX}_search` as const,\n INDEX: `${WORKSPACE_TOOLS_PREFIX}_index` as const,\n },\n} as const;\n\nexport type WorkspaceToolName =\n | (typeof WORKSPACE_TOOLS.FILESYSTEM)[keyof typeof WORKSPACE_TOOLS.FILESYSTEM]\n | (typeof WORKSPACE_TOOLS.SEARCH)[keyof typeof WORKSPACE_TOOLS.SEARCH]\n | (typeof WORKSPACE_TOOLS.SANDBOX)[keyof typeof WORKSPACE_TOOLS.SANDBOX];\n\n/**\n * A tool config value that may be a static boolean or a dynamic function.\n * Inlined from @mastra/core/workspace for compatibility.\n *\n * Uses `(...args: any[]) => any` for the function branch so it stays\n * assignable from all core context variants (ToolConfigContext,\n * ToolConfigWithArgsContext) without importing them.\n */\n\ntype DynamicToolConfigValue = boolean | ((...args: any[]) => any);\n\n/**\n * Configuration for a single workspace tool.\n */\nexport interface WorkspaceToolConfig {\n enabled?: DynamicToolConfigValue;\n requireApproval?: DynamicToolConfigValue;\n requireReadBeforeWrite?: DynamicToolConfigValue;\n}\n\n/**\n * Configuration for workspace tools.\n */\nexport type WorkspaceToolsConfig = {\n enabled?: DynamicToolConfigValue;\n requireApproval?: DynamicToolConfigValue;\n} & Partial<Record<WorkspaceToolName, WorkspaceToolConfig>>;\n\n/**\n * Safely resolve a dynamic config value (boolean or async function) to a boolean.\n * Falls back to `safeDefault` when no context is available or the function throws.\n */\nasync function resolveDynamicValue(\n value: DynamicToolConfigValue | undefined,\n context: { workspace: object; requestContext: Record<string, unknown> } | undefined,\n safeDefault: boolean,\n): Promise<boolean> {\n if (value === undefined) return safeDefault;\n if (typeof value === 'boolean') return value;\n if (!context) return safeDefault;\n try {\n return await value(context);\n } catch (error) {\n console.warn('[Workspace Tools] Dynamic config function threw, using safe default:', error);\n return safeDefault;\n }\n}\n\n/**\n * Resolve the effective configuration for a workspace tool.\n * Inlined from @mastra/core/workspace for compatibility.\n *\n * Dynamic function values are resolved by calling them with the provided\n * workspace and requestContext. If a function throws, safe defaults are used\n * (enabled → false, requireApproval → true, requireReadBeforeWrite → true).\n */\nexport async function resolveToolConfig(\n toolsConfig: WorkspaceToolsConfig | undefined,\n toolName: WorkspaceToolName,\n context?: { workspace: object; requestContext: Record<string, unknown> },\n): Promise<{ enabled: boolean; requireApproval: boolean; requireReadBeforeWrite?: boolean }> {\n let enabled: DynamicToolConfigValue = true;\n let requireApproval: DynamicToolConfigValue = false;\n let requireReadBeforeWrite: DynamicToolConfigValue | undefined;\n\n if (toolsConfig) {\n if (toolsConfig.enabled !== undefined) {\n enabled = toolsConfig.enabled;\n }\n if (toolsConfig.requireApproval !== undefined) {\n requireApproval = toolsConfig.requireApproval;\n }\n\n const perToolConfig = toolsConfig[toolName];\n if (perToolConfig) {\n if (perToolConfig.enabled !== undefined) {\n enabled = perToolConfig.enabled;\n }\n if (perToolConfig.requireApproval !== undefined) {\n requireApproval = perToolConfig.requireApproval;\n }\n if (perToolConfig.requireReadBeforeWrite !== undefined) {\n requireReadBeforeWrite = perToolConfig.requireReadBeforeWrite;\n }\n }\n }\n\n return {\n enabled: await resolveDynamicValue(enabled, context, false),\n requireApproval: await resolveDynamicValue(requireApproval, context, true),\n requireReadBeforeWrite:\n requireReadBeforeWrite !== undefined\n ? await resolveDynamicValue(requireReadBeforeWrite, context, true)\n : undefined,\n };\n}\n"]}