@mastra/server 0.10.13 → 0.10.15-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.
Files changed (99) hide show
  1. package/dist/_tsup-dts-rollup.d.cts +1107 -0
  2. package/dist/_tsup-dts-rollup.d.ts +1107 -0
  3. package/dist/chunk-2KZFMI6P.cjs +37 -0
  4. package/dist/chunk-2SLFAFTR.cjs +148 -0
  5. package/dist/chunk-3CNDE7QY.cjs +308 -0
  6. package/dist/chunk-4D66QEKC.js +81 -0
  7. package/dist/chunk-5PQQ42EZ.js +320 -0
  8. package/dist/chunk-75ZPJI57.cjs +9 -0
  9. package/dist/chunk-7TP2LX5L.cjs +129 -0
  10. package/dist/chunk-B2PAS2IB.cjs +514 -0
  11. package/dist/chunk-BK4XT6EG.js +270 -0
  12. package/dist/chunk-CCGRCYWJ.cjs +18 -0
  13. package/dist/chunk-CRCR3ZUK.js +142 -0
  14. package/dist/chunk-FRVBFMO2.cjs +128 -0
  15. package/dist/chunk-G7KH752Y.cjs +145 -0
  16. package/dist/chunk-GHC4YV6R.js +504 -0
  17. package/dist/chunk-H7DMHBKY.js +498 -0
  18. package/dist/chunk-JMLYCXMK.cjs +332 -0
  19. package/dist/chunk-KHZKYUNR.js +112 -0
  20. package/dist/chunk-KOHWJYJT.js +296 -0
  21. package/dist/chunk-LCM566I4.js +35 -0
  22. package/dist/chunk-LF7P5PLR.js +14 -0
  23. package/dist/chunk-LI436ITD.cjs +2042 -0
  24. package/dist/chunk-LRCAAFUA.js +122 -0
  25. package/dist/chunk-LZ3VJXSO.cjs +278 -0
  26. package/dist/chunk-MEGCYGBU.js +2039 -0
  27. package/dist/chunk-MLKGABMK.js +7 -0
  28. package/dist/chunk-PZQDCRPV.cjs +16 -0
  29. package/dist/chunk-QGX47B5D.cjs +86 -0
  30. package/dist/chunk-RG473F6Y.js +141 -0
  31. package/dist/chunk-RHSWAXKB.cjs +118 -0
  32. package/dist/chunk-RSEO4XPX.js +16 -0
  33. package/dist/chunk-SDPGVWQJ.cjs +512 -0
  34. package/dist/chunk-WNVFNNWN.js +121 -0
  35. package/dist/index.cjs +2 -0
  36. package/dist/index.d.cts +1 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.js +1 -0
  39. package/dist/server/handlers/a2a.cjs +30 -0
  40. package/dist/server/handlers/a2a.d.cts +6 -0
  41. package/dist/server/handlers/a2a.d.ts +6 -0
  42. package/dist/server/handlers/a2a.js +1 -0
  43. package/dist/server/handlers/agents.cjs +30 -0
  44. package/dist/server/handlers/agents.d.cts +6 -0
  45. package/dist/server/handlers/agents.d.ts +6 -0
  46. package/dist/server/handlers/agents.js +1 -0
  47. package/dist/server/handlers/error.cjs +10 -0
  48. package/dist/server/handlers/error.d.cts +1 -0
  49. package/dist/server/handlers/error.d.ts +1 -0
  50. package/dist/server/handlers/error.js +1 -0
  51. package/dist/server/handlers/legacyWorkflows.cjs +46 -0
  52. package/dist/server/handlers/legacyWorkflows.d.cts +10 -0
  53. package/dist/server/handlers/legacyWorkflows.d.ts +10 -0
  54. package/dist/server/handlers/legacyWorkflows.js +1 -0
  55. package/dist/server/handlers/logs.cjs +18 -0
  56. package/dist/server/handlers/logs.d.cts +3 -0
  57. package/dist/server/handlers/logs.d.ts +3 -0
  58. package/dist/server/handlers/logs.js +1 -0
  59. package/dist/server/handlers/memory.cjs +46 -0
  60. package/dist/server/handlers/memory.d.cts +10 -0
  61. package/dist/server/handlers/memory.d.ts +10 -0
  62. package/dist/server/handlers/memory.js +1 -0
  63. package/dist/server/handlers/network.cjs +22 -0
  64. package/dist/server/handlers/network.d.cts +4 -0
  65. package/dist/server/handlers/network.d.ts +4 -0
  66. package/dist/server/handlers/network.js +1 -0
  67. package/dist/server/handlers/telemetry.cjs +14 -0
  68. package/dist/server/handlers/telemetry.d.cts +2 -0
  69. package/dist/server/handlers/telemetry.d.ts +2 -0
  70. package/dist/server/handlers/telemetry.js +1 -0
  71. package/dist/server/handlers/tools.cjs +22 -0
  72. package/dist/server/handlers/tools.d.cts +4 -0
  73. package/dist/server/handlers/tools.d.ts +4 -0
  74. package/dist/server/handlers/tools.js +1 -0
  75. package/dist/server/handlers/utils.cjs +10 -0
  76. package/dist/server/handlers/utils.d.cts +1 -0
  77. package/dist/server/handlers/utils.d.ts +1 -0
  78. package/dist/server/handlers/utils.js +1 -0
  79. package/dist/server/handlers/vNextNetwork.cjs +218 -0
  80. package/dist/server/handlers/vNextNetwork.d.cts +6 -0
  81. package/dist/server/handlers/vNextNetwork.d.ts +6 -0
  82. package/dist/server/handlers/vNextNetwork.js +211 -0
  83. package/dist/server/handlers/vector.cjs +30 -0
  84. package/dist/server/handlers/vector.d.cts +6 -0
  85. package/dist/server/handlers/vector.d.ts +6 -0
  86. package/dist/server/handlers/vector.js +1 -0
  87. package/dist/server/handlers/voice.cjs +22 -0
  88. package/dist/server/handlers/voice.d.cts +4 -0
  89. package/dist/server/handlers/voice.d.ts +4 -0
  90. package/dist/server/handlers/voice.js +1 -0
  91. package/dist/server/handlers/workflows.cjs +62 -0
  92. package/dist/server/handlers/workflows.d.cts +14 -0
  93. package/dist/server/handlers/workflows.d.ts +14 -0
  94. package/dist/server/handlers/workflows.js +1 -0
  95. package/dist/server/handlers.cjs +60 -0
  96. package/dist/server/handlers.d.cts +11 -0
  97. package/dist/server/handlers.d.ts +11 -0
  98. package/dist/server/handlers.js +11 -0
  99. package/package.json +3 -3
@@ -0,0 +1,270 @@
1
+ import { stringify, esm_default } from './chunk-MEGCYGBU.js';
2
+ import { validateBody } from './chunk-RSEO4XPX.js';
3
+ import { handleError } from './chunk-LF7P5PLR.js';
4
+ import { HTTPException } from './chunk-LCM566I4.js';
5
+ import { __export } from './chunk-MLKGABMK.js';
6
+ import { RuntimeContext } from '@mastra/core/runtime-context';
7
+
8
+ // src/server/handlers/agents.ts
9
+ var agents_exports = {};
10
+ __export(agents_exports, {
11
+ generateHandler: () => generateHandler,
12
+ getAgentByIdHandler: () => getAgentByIdHandler,
13
+ getAgentsHandler: () => getAgentsHandler,
14
+ getEvalsByAgentIdHandler: () => getEvalsByAgentIdHandler,
15
+ getLiveEvalsByAgentIdHandler: () => getLiveEvalsByAgentIdHandler,
16
+ streamGenerateHandler: () => streamGenerateHandler
17
+ });
18
+ async function getAgentsHandler({ mastra, runtimeContext }) {
19
+ try {
20
+ const agents = mastra.getAgents();
21
+ const serializedAgentsMap = await Promise.all(
22
+ Object.entries(agents).map(async ([id, agent]) => {
23
+ const instructions = await agent.getInstructions({ runtimeContext });
24
+ const tools = await agent.getTools({ runtimeContext });
25
+ const llm = await agent.getLLM({ runtimeContext });
26
+ const defaultGenerateOptions = await agent.getDefaultGenerateOptions({ runtimeContext });
27
+ const defaultStreamOptions = await agent.getDefaultStreamOptions({ runtimeContext });
28
+ const serializedAgentTools = Object.entries(tools || {}).reduce((acc, [key, tool]) => {
29
+ const _tool = tool;
30
+ acc[key] = {
31
+ ..._tool,
32
+ inputSchema: _tool.inputSchema ? stringify(esm_default(_tool.inputSchema)) : void 0,
33
+ outputSchema: _tool.outputSchema ? stringify(esm_default(_tool.outputSchema)) : void 0
34
+ };
35
+ return acc;
36
+ }, {});
37
+ let serializedAgentWorkflows = {};
38
+ if ("getWorkflows" in agent) {
39
+ const logger = mastra.getLogger();
40
+ try {
41
+ const workflows = await agent.getWorkflows({ runtimeContext });
42
+ serializedAgentWorkflows = Object.entries(workflows || {}).reduce((acc, [key, workflow]) => {
43
+ return {
44
+ ...acc,
45
+ [key]: {
46
+ name: workflow.name
47
+ }
48
+ };
49
+ }, {});
50
+ } catch (error) {
51
+ logger.error("Error getting workflows for agent", { agentName: agent.name, error });
52
+ }
53
+ }
54
+ return {
55
+ id,
56
+ name: agent.name,
57
+ instructions,
58
+ tools: serializedAgentTools,
59
+ workflows: serializedAgentWorkflows,
60
+ provider: llm?.getProvider(),
61
+ modelId: llm?.getModelId(),
62
+ defaultGenerateOptions,
63
+ defaultStreamOptions
64
+ };
65
+ })
66
+ );
67
+ const serializedAgents = serializedAgentsMap.reduce((acc, { id, ...rest }) => {
68
+ acc[id] = rest;
69
+ return acc;
70
+ }, {});
71
+ return serializedAgents;
72
+ } catch (error) {
73
+ return handleError(error, "Error getting agents");
74
+ }
75
+ }
76
+ async function getAgentByIdHandler({
77
+ mastra,
78
+ runtimeContext,
79
+ agentId,
80
+ isPlayground = false
81
+ }) {
82
+ try {
83
+ const agent = mastra.getAgent(agentId);
84
+ if (!agent) {
85
+ throw new HTTPException(404, { message: "Agent not found" });
86
+ }
87
+ const tools = await agent.getTools({ runtimeContext });
88
+ const serializedAgentTools = Object.entries(tools || {}).reduce((acc, [key, tool]) => {
89
+ const _tool = tool;
90
+ acc[key] = {
91
+ ..._tool,
92
+ inputSchema: _tool.inputSchema ? stringify(esm_default(_tool.inputSchema)) : void 0,
93
+ outputSchema: _tool.outputSchema ? stringify(esm_default(_tool.outputSchema)) : void 0
94
+ };
95
+ return acc;
96
+ }, {});
97
+ let serializedAgentWorkflows = {};
98
+ if ("getWorkflows" in agent) {
99
+ const logger = mastra.getLogger();
100
+ try {
101
+ const workflows = await agent.getWorkflows({ runtimeContext });
102
+ serializedAgentWorkflows = Object.entries(workflows || {}).reduce((acc, [key, workflow]) => {
103
+ return {
104
+ ...acc,
105
+ [key]: {
106
+ name: workflow.name,
107
+ steps: Object.entries(workflow.steps).reduce((acc2, [key2, step]) => {
108
+ return {
109
+ ...acc2,
110
+ [key2]: {
111
+ id: step.id,
112
+ description: step.description
113
+ }
114
+ };
115
+ }, {})
116
+ }
117
+ };
118
+ }, {});
119
+ } catch (error) {
120
+ logger.error("Error getting workflows for agent", { agentName: agent.name, error });
121
+ }
122
+ }
123
+ let proxyRuntimeContext = runtimeContext;
124
+ if (isPlayground) {
125
+ proxyRuntimeContext = new Proxy(runtimeContext, {
126
+ get(target, prop) {
127
+ if (prop === "get") {
128
+ return function(key) {
129
+ const value = target.get(key);
130
+ return value ?? `<${key}>`;
131
+ };
132
+ }
133
+ return Reflect.get(target, prop);
134
+ }
135
+ });
136
+ }
137
+ const instructions = await agent.getInstructions({ runtimeContext: proxyRuntimeContext });
138
+ const llm = await agent.getLLM({ runtimeContext });
139
+ const defaultGenerateOptions = await agent.getDefaultGenerateOptions({ runtimeContext: proxyRuntimeContext });
140
+ const defaultStreamOptions = await agent.getDefaultStreamOptions({ runtimeContext: proxyRuntimeContext });
141
+ return {
142
+ name: agent.name,
143
+ instructions,
144
+ tools: serializedAgentTools,
145
+ workflows: serializedAgentWorkflows,
146
+ provider: llm?.getProvider(),
147
+ modelId: llm?.getModelId(),
148
+ defaultGenerateOptions,
149
+ defaultStreamOptions
150
+ };
151
+ } catch (error) {
152
+ return handleError(error, "Error getting agent");
153
+ }
154
+ }
155
+ async function getEvalsByAgentIdHandler({
156
+ mastra,
157
+ runtimeContext,
158
+ agentId
159
+ }) {
160
+ try {
161
+ const agent = mastra.getAgent(agentId);
162
+ const evals = await mastra.getStorage()?.getEvalsByAgentName?.(agent.name, "test") || [];
163
+ const instructions = await agent.getInstructions({ runtimeContext });
164
+ return {
165
+ id: agentId,
166
+ name: agent.name,
167
+ instructions,
168
+ evals
169
+ };
170
+ } catch (error) {
171
+ return handleError(error, "Error getting test evals");
172
+ }
173
+ }
174
+ async function getLiveEvalsByAgentIdHandler({
175
+ mastra,
176
+ runtimeContext,
177
+ agentId
178
+ }) {
179
+ try {
180
+ const agent = mastra.getAgent(agentId);
181
+ const evals = await mastra.getStorage()?.getEvalsByAgentName?.(agent.name, "live") || [];
182
+ const instructions = await agent.getInstructions({ runtimeContext });
183
+ return {
184
+ id: agentId,
185
+ name: agent.name,
186
+ instructions,
187
+ evals
188
+ };
189
+ } catch (error) {
190
+ return handleError(error, "Error getting live evals");
191
+ }
192
+ }
193
+ async function generateHandler({
194
+ mastra,
195
+ runtimeContext,
196
+ agentId,
197
+ body,
198
+ abortSignal
199
+ }) {
200
+ try {
201
+ const agent = mastra.getAgent(agentId);
202
+ if (!agent) {
203
+ throw new HTTPException(404, { message: "Agent not found" });
204
+ }
205
+ const { messages, resourceId, resourceid, runtimeContext: agentRuntimeContext, ...rest } = body;
206
+ const finalResourceId = resourceId ?? resourceid;
207
+ const finalRuntimeContext = new RuntimeContext([
208
+ ...Array.from(runtimeContext.entries()),
209
+ ...Array.from(Object.entries(agentRuntimeContext ?? {}))
210
+ ]);
211
+ validateBody({ messages });
212
+ const result = await agent.generate(messages, {
213
+ ...rest,
214
+ // @ts-expect-error TODO fix types
215
+ resourceId: finalResourceId,
216
+ runtimeContext: finalRuntimeContext,
217
+ signal: abortSignal
218
+ });
219
+ return result;
220
+ } catch (error) {
221
+ return handleError(error, "Error generating from agent");
222
+ }
223
+ }
224
+ async function streamGenerateHandler({
225
+ mastra,
226
+ runtimeContext,
227
+ agentId,
228
+ body,
229
+ abortSignal
230
+ }) {
231
+ try {
232
+ const agent = mastra.getAgent(agentId);
233
+ if (!agent) {
234
+ throw new HTTPException(404, { message: "Agent not found" });
235
+ }
236
+ const { messages, resourceId, resourceid, runtimeContext: agentRuntimeContext, ...rest } = body;
237
+ const finalResourceId = resourceId ?? resourceid;
238
+ const finalRuntimeContext = new RuntimeContext([
239
+ ...Array.from(runtimeContext.entries()),
240
+ ...Array.from(Object.entries(agentRuntimeContext ?? {}))
241
+ ]);
242
+ validateBody({ messages });
243
+ const streamResult = await agent.stream(messages, {
244
+ ...rest,
245
+ // @ts-expect-error TODO fix types
246
+ resourceId: finalResourceId,
247
+ runtimeContext: finalRuntimeContext,
248
+ signal: abortSignal
249
+ });
250
+ const streamResponse = rest.output ? streamResult.toTextStreamResponse({
251
+ headers: {
252
+ "Transfer-Encoding": "chunked"
253
+ }
254
+ }) : streamResult.toDataStreamResponse({
255
+ sendUsage: true,
256
+ sendReasoning: true,
257
+ getErrorMessage: (error) => {
258
+ return `An error occurred while processing your request. ${error instanceof Error ? error.message : JSON.stringify(error)}`;
259
+ },
260
+ headers: {
261
+ "Transfer-Encoding": "chunked"
262
+ }
263
+ });
264
+ return streamResponse;
265
+ } catch (error) {
266
+ return handleError(error, "error streaming agent response");
267
+ }
268
+ }
269
+
270
+ export { agents_exports, generateHandler, getAgentByIdHandler, getAgentsHandler, getEvalsByAgentIdHandler, getLiveEvalsByAgentIdHandler, streamGenerateHandler };
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var chunk2KZFMI6P_cjs = require('./chunk-2KZFMI6P.cjs');
4
+
5
+ // src/server/handlers/utils.ts
6
+ function validateBody(body) {
7
+ const errorResponse = Object.entries(body).reduce((acc, [key, value]) => {
8
+ if (!value) {
9
+ acc[key] = `Argument "${key}" is required`;
10
+ }
11
+ return acc;
12
+ }, {});
13
+ if (Object.keys(errorResponse).length > 0) {
14
+ throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: Object.values(errorResponse)[0] });
15
+ }
16
+ }
17
+
18
+ exports.validateBody = validateBody;
@@ -0,0 +1,142 @@
1
+ import { validateBody } from './chunk-RSEO4XPX.js';
2
+ import { handleError } from './chunk-LF7P5PLR.js';
3
+ import { HTTPException } from './chunk-LCM566I4.js';
4
+ import { __export } from './chunk-MLKGABMK.js';
5
+
6
+ // src/server/handlers/network.ts
7
+ var network_exports = {};
8
+ __export(network_exports, {
9
+ generateHandler: () => generateHandler,
10
+ getNetworkByIdHandler: () => getNetworkByIdHandler,
11
+ getNetworksHandler: () => getNetworksHandler,
12
+ streamGenerateHandler: () => streamGenerateHandler
13
+ });
14
+ async function getNetworksHandler({
15
+ mastra,
16
+ runtimeContext
17
+ }) {
18
+ try {
19
+ const networks = mastra.getNetworks();
20
+ const serializedNetworks = await Promise.all(
21
+ networks.map(async (network) => {
22
+ const routingAgent = network.getRoutingAgent();
23
+ const routingLLM = await routingAgent.getLLM({ runtimeContext });
24
+ const agents = network.getAgents();
25
+ return {
26
+ id: network.formatAgentId(routingAgent.name),
27
+ name: routingAgent.name,
28
+ instructions: routingAgent.instructions,
29
+ agents: await Promise.all(
30
+ agents.map(async (agent) => {
31
+ const llm = await agent.getLLM({ runtimeContext });
32
+ return {
33
+ name: agent.name,
34
+ provider: llm?.getProvider(),
35
+ modelId: llm?.getModelId()
36
+ };
37
+ })
38
+ ),
39
+ routingModel: {
40
+ provider: routingLLM?.getProvider(),
41
+ modelId: routingLLM?.getModelId()
42
+ }
43
+ };
44
+ })
45
+ );
46
+ return serializedNetworks;
47
+ } catch (error) {
48
+ return handleError(error, "Error getting networks");
49
+ }
50
+ }
51
+ async function getNetworkByIdHandler({
52
+ mastra,
53
+ networkId,
54
+ runtimeContext
55
+ }) {
56
+ try {
57
+ const networks = mastra.getNetworks();
58
+ const network = networks.find((network2) => {
59
+ const routingAgent2 = network2.getRoutingAgent();
60
+ return network2.formatAgentId(routingAgent2.name) === networkId;
61
+ });
62
+ if (!network) {
63
+ throw new HTTPException(404, { message: "Network not found" });
64
+ }
65
+ const routingAgent = network.getRoutingAgent();
66
+ const routingLLM = await routingAgent.getLLM({ runtimeContext });
67
+ const agents = network.getAgents();
68
+ const serializedNetwork = {
69
+ id: network.formatAgentId(routingAgent.name),
70
+ name: routingAgent.name,
71
+ instructions: routingAgent.instructions,
72
+ agents: await Promise.all(
73
+ agents.map(async (agent) => {
74
+ const llm = await agent.getLLM({ runtimeContext });
75
+ return {
76
+ name: agent.name,
77
+ provider: llm?.getProvider(),
78
+ modelId: llm?.getModelId()
79
+ };
80
+ })
81
+ ),
82
+ routingModel: {
83
+ provider: routingLLM?.getProvider(),
84
+ modelId: routingLLM?.getModelId()
85
+ }
86
+ };
87
+ return serializedNetwork;
88
+ } catch (error) {
89
+ return handleError(error, "Error getting network by ID");
90
+ }
91
+ }
92
+ async function generateHandler({
93
+ mastra,
94
+ runtimeContext,
95
+ networkId,
96
+ body
97
+ }) {
98
+ try {
99
+ const network = mastra.getNetwork(networkId);
100
+ if (!network) {
101
+ throw new HTTPException(404, { message: "Network not found" });
102
+ }
103
+ validateBody({ messages: body.messages });
104
+ const { messages, ...rest } = body;
105
+ const result = await network.generate(messages, { ...rest, runtimeContext });
106
+ return result;
107
+ } catch (error) {
108
+ return handleError(error, "Error generating from network");
109
+ }
110
+ }
111
+ async function streamGenerateHandler({
112
+ mastra,
113
+ networkId,
114
+ body,
115
+ runtimeContext
116
+ }) {
117
+ try {
118
+ const network = mastra.getNetwork(networkId);
119
+ if (!network) {
120
+ throw new HTTPException(404, { message: "Network not found" });
121
+ }
122
+ validateBody({ messages: body.messages });
123
+ const { messages, output, ...rest } = body;
124
+ const streamResult = await network.stream(messages, {
125
+ output,
126
+ ...rest,
127
+ runtimeContext
128
+ });
129
+ const streamResponse = output ? streamResult.toTextStreamResponse() : streamResult.toDataStreamResponse({
130
+ sendUsage: true,
131
+ sendReasoning: true,
132
+ getErrorMessage: (error) => {
133
+ return `An error occurred while processing your request. ${error instanceof Error ? error.message : JSON.stringify(error)}`;
134
+ }
135
+ });
136
+ return streamResponse;
137
+ } catch (error) {
138
+ return handleError(error, "Error streaming from network");
139
+ }
140
+ }
141
+
142
+ export { generateHandler, getNetworkByIdHandler, getNetworksHandler, network_exports, streamGenerateHandler };
@@ -0,0 +1,128 @@
1
+ 'use strict';
2
+
3
+ var chunkLI436ITD_cjs = require('./chunk-LI436ITD.cjs');
4
+ var chunkCCGRCYWJ_cjs = require('./chunk-CCGRCYWJ.cjs');
5
+ var chunkPZQDCRPV_cjs = require('./chunk-PZQDCRPV.cjs');
6
+ var chunk2KZFMI6P_cjs = require('./chunk-2KZFMI6P.cjs');
7
+ var chunk75ZPJI57_cjs = require('./chunk-75ZPJI57.cjs');
8
+ var tools = require('@mastra/core/tools');
9
+
10
+ // src/server/handlers/tools.ts
11
+ var tools_exports = {};
12
+ chunk75ZPJI57_cjs.__export(tools_exports, {
13
+ executeAgentToolHandler: () => executeAgentToolHandler,
14
+ executeToolHandler: () => executeToolHandler,
15
+ getToolByIdHandler: () => getToolByIdHandler,
16
+ getToolsHandler: () => getToolsHandler
17
+ });
18
+ async function getToolsHandler({ tools }) {
19
+ try {
20
+ if (!tools) {
21
+ return {};
22
+ }
23
+ const serializedTools = Object.entries(tools).reduce(
24
+ (acc, [id, _tool]) => {
25
+ const tool = _tool;
26
+ acc[id] = {
27
+ ...tool,
28
+ inputSchema: tool.inputSchema ? chunkLI436ITD_cjs.stringify(chunkLI436ITD_cjs.esm_default(tool.inputSchema)) : void 0,
29
+ outputSchema: tool.outputSchema ? chunkLI436ITD_cjs.stringify(chunkLI436ITD_cjs.esm_default(tool.outputSchema)) : void 0
30
+ };
31
+ return acc;
32
+ },
33
+ {}
34
+ );
35
+ return serializedTools;
36
+ } catch (error) {
37
+ return chunkPZQDCRPV_cjs.handleError(error, "Error getting tools");
38
+ }
39
+ }
40
+ async function getToolByIdHandler({ tools, toolId }) {
41
+ try {
42
+ const tool = Object.values(tools || {}).find((tool2) => tool2.id === toolId);
43
+ if (!tool) {
44
+ throw new chunk2KZFMI6P_cjs.HTTPException(404, { message: "Tool not found" });
45
+ }
46
+ const serializedTool = {
47
+ ...tool,
48
+ inputSchema: tool.inputSchema ? chunkLI436ITD_cjs.stringify(chunkLI436ITD_cjs.esm_default(tool.inputSchema)) : void 0,
49
+ outputSchema: tool.outputSchema ? chunkLI436ITD_cjs.stringify(chunkLI436ITD_cjs.esm_default(tool.outputSchema)) : void 0
50
+ };
51
+ return serializedTool;
52
+ } catch (error) {
53
+ return chunkPZQDCRPV_cjs.handleError(error, "Error getting tool");
54
+ }
55
+ }
56
+ function executeToolHandler(tools$1) {
57
+ return async ({
58
+ mastra,
59
+ runId,
60
+ toolId,
61
+ data,
62
+ runtimeContext
63
+ }) => {
64
+ try {
65
+ if (!toolId) {
66
+ throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Tool ID is required" });
67
+ }
68
+ const tool = Object.values(tools$1 || {}).find((tool2) => tool2.id === toolId);
69
+ if (!tool) {
70
+ throw new chunk2KZFMI6P_cjs.HTTPException(404, { message: "Tool not found" });
71
+ }
72
+ if (!tool?.execute) {
73
+ throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Tool is not executable" });
74
+ }
75
+ chunkCCGRCYWJ_cjs.validateBody({ data });
76
+ if (tools.isVercelTool(tool)) {
77
+ const result2 = await tool.execute(data);
78
+ return result2;
79
+ }
80
+ const result = await tool.execute({
81
+ context: data,
82
+ mastra,
83
+ runId,
84
+ runtimeContext
85
+ });
86
+ return result;
87
+ } catch (error) {
88
+ return chunkPZQDCRPV_cjs.handleError(error, "Error executing tool");
89
+ }
90
+ };
91
+ }
92
+ async function executeAgentToolHandler({
93
+ mastra,
94
+ agentId,
95
+ toolId,
96
+ data,
97
+ runtimeContext
98
+ }) {
99
+ try {
100
+ const agent = agentId ? mastra.getAgent(agentId) : null;
101
+ if (!agent) {
102
+ throw new chunk2KZFMI6P_cjs.HTTPException(404, { message: "Tool not found" });
103
+ }
104
+ const agentTools = await agent.getTools({ runtimeContext });
105
+ const tool = Object.values(agentTools || {}).find((tool2) => tool2.id === toolId);
106
+ if (!tool) {
107
+ throw new chunk2KZFMI6P_cjs.HTTPException(404, { message: "Tool not found" });
108
+ }
109
+ if (!tool?.execute) {
110
+ throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Tool is not executable" });
111
+ }
112
+ const result = await tool.execute({
113
+ context: data,
114
+ runtimeContext,
115
+ mastra,
116
+ runId: agentId
117
+ });
118
+ return result;
119
+ } catch (error) {
120
+ return chunkPZQDCRPV_cjs.handleError(error, "Error executing tool");
121
+ }
122
+ }
123
+
124
+ exports.executeAgentToolHandler = executeAgentToolHandler;
125
+ exports.executeToolHandler = executeToolHandler;
126
+ exports.getToolByIdHandler = getToolByIdHandler;
127
+ exports.getToolsHandler = getToolsHandler;
128
+ exports.tools_exports = tools_exports;
@@ -0,0 +1,145 @@
1
+ 'use strict';
2
+
3
+ var chunkPZQDCRPV_cjs = require('./chunk-PZQDCRPV.cjs');
4
+ var chunk2KZFMI6P_cjs = require('./chunk-2KZFMI6P.cjs');
5
+ var chunk75ZPJI57_cjs = require('./chunk-75ZPJI57.cjs');
6
+
7
+ // src/server/handlers/telemetry.ts
8
+ var telemetry_exports = {};
9
+ chunk75ZPJI57_cjs.__export(telemetry_exports, {
10
+ getTelemetryHandler: () => getTelemetryHandler,
11
+ storeTelemetryHandler: () => storeTelemetryHandler
12
+ });
13
+ async function getTelemetryHandler({ mastra, body }) {
14
+ try {
15
+ const telemetry = mastra.getTelemetry();
16
+ const storage = mastra.getStorage();
17
+ if (!telemetry) {
18
+ throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Telemetry is not initialized" });
19
+ }
20
+ if (!storage) {
21
+ return [];
22
+ }
23
+ if (!body) {
24
+ throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Body is required" });
25
+ }
26
+ const { name, scope, page, perPage, attribute, fromDate, toDate } = body;
27
+ const attributes = attribute ? Object.fromEntries(
28
+ (Array.isArray(attribute) ? attribute : [attribute]).map((attr) => {
29
+ const [key, value] = attr.split(":");
30
+ return [key, value];
31
+ })
32
+ ) : void 0;
33
+ const traces = await storage.getTraces({
34
+ name,
35
+ scope,
36
+ page: Number(page ?? 0),
37
+ perPage: Number(perPage ?? 100),
38
+ attributes,
39
+ fromDate: fromDate ? new Date(fromDate) : void 0,
40
+ toDate: toDate ? new Date(toDate) : void 0
41
+ });
42
+ return traces;
43
+ } catch (error2) {
44
+ return chunkPZQDCRPV_cjs.handleError(error2, "Error getting telemetry");
45
+ }
46
+ }
47
+ async function storeTelemetryHandler({ mastra, body }) {
48
+ try {
49
+ const storage = mastra.getStorage();
50
+ const logger = mastra.getLogger();
51
+ if (!storage) {
52
+ return {
53
+ status: "error",
54
+ message: "Storage is not initialized"
55
+ };
56
+ }
57
+ const now = /* @__PURE__ */ new Date();
58
+ const items = body?.resourceSpans?.[0]?.scopeSpans;
59
+ logger.debug("[Telemetry Handler] Received spans:", {
60
+ totalSpans: items?.reduce((acc, scope) => acc + scope.spans.length, 0) || 0,
61
+ timestamp: now.toISOString()
62
+ });
63
+ if (!items?.length) {
64
+ return {
65
+ status: "success",
66
+ message: "No spans to process",
67
+ traceCount: 0
68
+ };
69
+ }
70
+ const allSpans = items.reduce((acc, scopedSpans) => {
71
+ const { scope, spans } = scopedSpans;
72
+ for (const span of spans) {
73
+ const {
74
+ spanId,
75
+ parentSpanId,
76
+ traceId,
77
+ name,
78
+ kind,
79
+ attributes,
80
+ status,
81
+ events,
82
+ links,
83
+ startTimeUnixNano,
84
+ endTimeUnixNano,
85
+ ...rest
86
+ } = span;
87
+ const startTime = Number(BigInt(startTimeUnixNano) / 1000n);
88
+ const endTime = Number(BigInt(endTimeUnixNano) / 1000n);
89
+ acc.push({
90
+ id: spanId,
91
+ parentSpanId,
92
+ traceId,
93
+ name,
94
+ scope: scope.name,
95
+ kind,
96
+ status: JSON.stringify(status),
97
+ events: JSON.stringify(events),
98
+ links: JSON.stringify(links),
99
+ attributes: JSON.stringify(
100
+ attributes.reduce((acc2, attr) => {
101
+ const valueKey = Object.keys(attr.value)[0];
102
+ if (valueKey) {
103
+ acc2[attr.key] = attr.value[valueKey];
104
+ }
105
+ return acc2;
106
+ }, {})
107
+ ),
108
+ startTime,
109
+ endTime,
110
+ other: JSON.stringify(rest),
111
+ createdAt: now
112
+ });
113
+ }
114
+ return acc;
115
+ }, []);
116
+ return storage.batchTraceInsert({
117
+ records: allSpans
118
+ }).then(() => {
119
+ return {
120
+ status: "success",
121
+ message: "Traces received and processed successfully",
122
+ traceCount: body.resourceSpans?.length || 0
123
+ };
124
+ }).catch(() => {
125
+ return {
126
+ status: "error",
127
+ message: "Failed to process traces",
128
+ // @ts-ignore
129
+ error: error.message
130
+ };
131
+ });
132
+ } catch (error2) {
133
+ console.error("Error processing traces:", error2);
134
+ return {
135
+ status: "error",
136
+ message: "Failed to process traces",
137
+ // @ts-ignore
138
+ error: error2.message
139
+ };
140
+ }
141
+ }
142
+
143
+ exports.getTelemetryHandler = getTelemetryHandler;
144
+ exports.storeTelemetryHandler = storeTelemetryHandler;
145
+ exports.telemetry_exports = telemetry_exports;