@mastra/server 0.0.0-default-storage-virtual-file-20250410035748

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 (83) hide show
  1. package/LICENSE +44 -0
  2. package/README.md +159 -0
  3. package/dist/_tsup-dts-rollup.d.cts +564 -0
  4. package/dist/_tsup-dts-rollup.d.ts +564 -0
  5. package/dist/chunk-2FJURXCL.cjs +213 -0
  6. package/dist/chunk-2JQC6JWP.js +46 -0
  7. package/dist/chunk-2YONKUWB.js +117 -0
  8. package/dist/chunk-3AHQ5RGN.js +11 -0
  9. package/dist/chunk-3RVHWGWO.js +95 -0
  10. package/dist/chunk-4C3EPMMF.cjs +122 -0
  11. package/dist/chunk-4JINXASC.js +120 -0
  12. package/dist/chunk-5JOF627H.cjs +123 -0
  13. package/dist/chunk-A7DF4ETD.cjs +100 -0
  14. package/dist/chunk-BMA2ORRT.js +152 -0
  15. package/dist/chunk-CWSDZEZG.cjs +139 -0
  16. package/dist/chunk-DVPP5S6I.js +135 -0
  17. package/dist/chunk-FV45V6WC.cjs +43 -0
  18. package/dist/chunk-GV52BII2.cjs +160 -0
  19. package/dist/chunk-ILW7XYNJ.js +296 -0
  20. package/dist/chunk-L7XE5QTW.js +16 -0
  21. package/dist/chunk-M56ECCHK.cjs +128 -0
  22. package/dist/chunk-QH6XWSXP.cjs +5579 -0
  23. package/dist/chunk-QN4KF3BH.cjs +18 -0
  24. package/dist/chunk-RBQASTUP.js +203 -0
  25. package/dist/chunk-TRDNDNGQ.js +40 -0
  26. package/dist/chunk-VB7KH62D.cjs +51 -0
  27. package/dist/chunk-VK6FX47H.js +5576 -0
  28. package/dist/chunk-X37I6GZT.cjs +308 -0
  29. package/dist/chunk-YNSGUC2O.js +116 -0
  30. package/dist/chunk-ZLBRQFDD.cjs +13 -0
  31. package/dist/index.cjs +2 -0
  32. package/dist/index.d.cts +1 -0
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.js +1 -0
  35. package/dist/server/handlers/agents.cjs +30 -0
  36. package/dist/server/handlers/agents.d.cts +6 -0
  37. package/dist/server/handlers/agents.d.ts +6 -0
  38. package/dist/server/handlers/agents.js +1 -0
  39. package/dist/server/handlers/error.cjs +10 -0
  40. package/dist/server/handlers/error.d.cts +1 -0
  41. package/dist/server/handlers/error.d.ts +1 -0
  42. package/dist/server/handlers/error.js +1 -0
  43. package/dist/server/handlers/logs.cjs +18 -0
  44. package/dist/server/handlers/logs.d.cts +3 -0
  45. package/dist/server/handlers/logs.d.ts +3 -0
  46. package/dist/server/handlers/logs.js +1 -0
  47. package/dist/server/handlers/memory.cjs +38 -0
  48. package/dist/server/handlers/memory.d.cts +8 -0
  49. package/dist/server/handlers/memory.d.ts +8 -0
  50. package/dist/server/handlers/memory.js +1 -0
  51. package/dist/server/handlers/network.cjs +22 -0
  52. package/dist/server/handlers/network.d.cts +4 -0
  53. package/dist/server/handlers/network.d.ts +4 -0
  54. package/dist/server/handlers/network.js +1 -0
  55. package/dist/server/handlers/telemetry.cjs +14 -0
  56. package/dist/server/handlers/telemetry.d.cts +2 -0
  57. package/dist/server/handlers/telemetry.d.ts +2 -0
  58. package/dist/server/handlers/telemetry.js +1 -0
  59. package/dist/server/handlers/tools.cjs +22 -0
  60. package/dist/server/handlers/tools.d.cts +4 -0
  61. package/dist/server/handlers/tools.d.ts +4 -0
  62. package/dist/server/handlers/tools.js +1 -0
  63. package/dist/server/handlers/utils.cjs +10 -0
  64. package/dist/server/handlers/utils.d.cts +1 -0
  65. package/dist/server/handlers/utils.d.ts +1 -0
  66. package/dist/server/handlers/utils.js +1 -0
  67. package/dist/server/handlers/vector.cjs +30 -0
  68. package/dist/server/handlers/vector.d.cts +6 -0
  69. package/dist/server/handlers/vector.d.ts +6 -0
  70. package/dist/server/handlers/vector.js +1 -0
  71. package/dist/server/handlers/voice.cjs +18 -0
  72. package/dist/server/handlers/voice.d.cts +3 -0
  73. package/dist/server/handlers/voice.d.ts +3 -0
  74. package/dist/server/handlers/voice.js +1 -0
  75. package/dist/server/handlers/workflows.cjs +46 -0
  76. package/dist/server/handlers/workflows.d.cts +10 -0
  77. package/dist/server/handlers/workflows.d.ts +10 -0
  78. package/dist/server/handlers/workflows.js +1 -0
  79. package/dist/server/handlers.cjs +50 -0
  80. package/dist/server/handlers.d.cts +9 -0
  81. package/dist/server/handlers.d.ts +9 -0
  82. package/dist/server/handlers.js +9 -0
  83. package/package.json +71 -0
@@ -0,0 +1,120 @@
1
+ import { handleError } from './chunk-3AHQ5RGN.js';
2
+ import { __export, HTTPException } from './chunk-TRDNDNGQ.js';
3
+
4
+ // src/server/handlers/vector.ts
5
+ var vector_exports = {};
6
+ __export(vector_exports, {
7
+ createIndex: () => createIndex,
8
+ deleteIndex: () => deleteIndex,
9
+ describeIndex: () => describeIndex,
10
+ listIndexes: () => listIndexes,
11
+ queryVectors: () => queryVectors,
12
+ upsertVectors: () => upsertVectors
13
+ });
14
+ function getVector(mastra, vectorName) {
15
+ if (!vectorName) {
16
+ throw new HTTPException(400, { message: "Vector name is required" });
17
+ }
18
+ const vector = mastra.getVector(vectorName);
19
+ if (!vector) {
20
+ throw new HTTPException(404, { message: `Vector store ${vectorName} not found` });
21
+ }
22
+ return vector;
23
+ }
24
+ async function upsertVectors({ mastra, vectorName, index }) {
25
+ try {
26
+ if (!index?.indexName || !index?.vectors || !Array.isArray(index.vectors)) {
27
+ throw new HTTPException(400, { message: "Invalid request index. indexName and vectors array are required." });
28
+ }
29
+ const vector = getVector(mastra, vectorName);
30
+ const result = await vector.upsert(index);
31
+ return { ids: result };
32
+ } catch (error) {
33
+ return handleError(error, "Error upserting vectors");
34
+ }
35
+ }
36
+ async function createIndex({
37
+ mastra,
38
+ vectorName,
39
+ index
40
+ }) {
41
+ try {
42
+ const { indexName, dimension, metric } = index;
43
+ if (!indexName || typeof dimension !== "number" || dimension <= 0) {
44
+ throw new HTTPException(400, {
45
+ message: "Invalid request index, indexName and positive dimension number are required."
46
+ });
47
+ }
48
+ if (metric && !["cosine", "euclidean", "dotproduct"].includes(metric)) {
49
+ throw new HTTPException(400, { message: "Invalid metric. Must be one of: cosine, euclidean, dotproduct" });
50
+ }
51
+ const vector = getVector(mastra, vectorName);
52
+ await vector.createIndex({ indexName, dimension, metric });
53
+ return { success: true };
54
+ } catch (error) {
55
+ return handleError(error, "Error creating index");
56
+ }
57
+ }
58
+ async function queryVectors({
59
+ mastra,
60
+ vectorName,
61
+ query
62
+ }) {
63
+ try {
64
+ if (!query?.indexName || !query?.queryVector || !Array.isArray(query.queryVector)) {
65
+ throw new HTTPException(400, { message: "Invalid request query. indexName and queryVector array are required." });
66
+ }
67
+ const vector = getVector(mastra, vectorName);
68
+ const results = await vector.query(query);
69
+ return results;
70
+ } catch (error) {
71
+ return handleError(error, "Error querying vectors");
72
+ }
73
+ }
74
+ async function listIndexes({ mastra, vectorName }) {
75
+ try {
76
+ const vector = getVector(mastra, vectorName);
77
+ const indexes = await vector.listIndexes();
78
+ return indexes.filter(Boolean);
79
+ } catch (error) {
80
+ return handleError(error, "Error listing indexes");
81
+ }
82
+ }
83
+ async function describeIndex({
84
+ mastra,
85
+ vectorName,
86
+ indexName
87
+ }) {
88
+ try {
89
+ if (!indexName) {
90
+ throw new HTTPException(400, { message: "Index name is required" });
91
+ }
92
+ const vector = getVector(mastra, vectorName);
93
+ const stats = await vector.describeIndex(indexName);
94
+ return {
95
+ dimension: stats.dimension,
96
+ count: stats.count,
97
+ metric: stats.metric?.toLowerCase()
98
+ };
99
+ } catch (error) {
100
+ return handleError(error, "Error describing index");
101
+ }
102
+ }
103
+ async function deleteIndex({
104
+ mastra,
105
+ vectorName,
106
+ indexName
107
+ }) {
108
+ try {
109
+ if (!indexName) {
110
+ throw new HTTPException(400, { message: "Index name is required" });
111
+ }
112
+ const vector = getVector(mastra, vectorName);
113
+ await vector.deleteIndex(indexName);
114
+ return { success: true };
115
+ } catch (error) {
116
+ return handleError(error, "Error deleting index");
117
+ }
118
+ }
119
+
120
+ export { createIndex, deleteIndex, describeIndex, listIndexes, queryVectors, upsertVectors, vector_exports };
@@ -0,0 +1,123 @@
1
+ 'use strict';
2
+
3
+ var chunkQN4KF3BH_cjs = require('./chunk-QN4KF3BH.cjs');
4
+ var chunkZLBRQFDD_cjs = require('./chunk-ZLBRQFDD.cjs');
5
+ var chunkFV45V6WC_cjs = require('./chunk-FV45V6WC.cjs');
6
+
7
+ // src/server/handlers/network.ts
8
+ var network_exports = {};
9
+ chunkFV45V6WC_cjs.__export(network_exports, {
10
+ generateHandler: () => generateHandler,
11
+ getNetworkByIdHandler: () => getNetworkByIdHandler,
12
+ getNetworksHandler: () => getNetworksHandler,
13
+ streamGenerateHandler: () => streamGenerateHandler
14
+ });
15
+ async function getNetworksHandler({ mastra }) {
16
+ try {
17
+ const networks = mastra.getNetworks();
18
+ const serializedNetworks = networks.map((network) => {
19
+ const routingAgent = network.getRoutingAgent();
20
+ const agents = network.getAgents();
21
+ return {
22
+ id: network.formatAgentId(routingAgent.name),
23
+ name: routingAgent.name,
24
+ instructions: routingAgent.instructions,
25
+ agents: agents.map((agent) => ({
26
+ name: agent.name,
27
+ provider: agent.llm?.getProvider(),
28
+ modelId: agent.llm?.getModelId()
29
+ })),
30
+ routingModel: {
31
+ provider: routingAgent.llm?.getProvider(),
32
+ modelId: routingAgent.llm?.getModelId()
33
+ }
34
+ };
35
+ });
36
+ return serializedNetworks;
37
+ } catch (error) {
38
+ return chunkZLBRQFDD_cjs.handleError(error, "Error getting networks");
39
+ }
40
+ }
41
+ async function getNetworkByIdHandler({ mastra, networkId }) {
42
+ try {
43
+ const networks = mastra.getNetworks();
44
+ const network = networks.find((network2) => {
45
+ const routingAgent2 = network2.getRoutingAgent();
46
+ return network2.formatAgentId(routingAgent2.name) === networkId;
47
+ });
48
+ if (!network) {
49
+ throw new chunkFV45V6WC_cjs.HTTPException(404, { message: "Network not found" });
50
+ }
51
+ const routingAgent = network.getRoutingAgent();
52
+ const agents = network.getAgents();
53
+ const serializedNetwork = {
54
+ id: network.formatAgentId(routingAgent.name),
55
+ name: routingAgent.name,
56
+ instructions: routingAgent.instructions,
57
+ agents: agents.map((agent) => ({
58
+ name: agent.name,
59
+ provider: agent.llm?.getProvider(),
60
+ modelId: agent.llm?.getModelId()
61
+ })),
62
+ routingModel: {
63
+ provider: routingAgent.llm?.getProvider(),
64
+ modelId: routingAgent.llm?.getModelId()
65
+ }
66
+ };
67
+ return serializedNetwork;
68
+ } catch (error) {
69
+ return chunkZLBRQFDD_cjs.handleError(error, "Error getting network by ID");
70
+ }
71
+ }
72
+ async function generateHandler({
73
+ mastra,
74
+ networkId,
75
+ body
76
+ }) {
77
+ try {
78
+ const network = mastra.getNetwork(networkId);
79
+ if (!network) {
80
+ throw new chunkFV45V6WC_cjs.HTTPException(404, { message: "Network not found" });
81
+ }
82
+ chunkQN4KF3BH_cjs.validateBody({ messages: body.messages });
83
+ const { messages, ...rest } = body;
84
+ const result = await network.generate(messages, rest);
85
+ return result;
86
+ } catch (error) {
87
+ return chunkZLBRQFDD_cjs.handleError(error, "Error generating from network");
88
+ }
89
+ }
90
+ async function streamGenerateHandler({
91
+ mastra,
92
+ networkId,
93
+ body
94
+ }) {
95
+ try {
96
+ const network = mastra.getNetwork(networkId);
97
+ if (!network) {
98
+ throw new chunkFV45V6WC_cjs.HTTPException(404, { message: "Network not found" });
99
+ }
100
+ chunkQN4KF3BH_cjs.validateBody({ messages: body.messages });
101
+ const { messages, output, ...rest } = body;
102
+ const streamResult = await network.stream(messages, {
103
+ output,
104
+ ...rest
105
+ });
106
+ const streamResponse = output ? streamResult.toTextStreamResponse() : streamResult.toDataStreamResponse({
107
+ sendUsage: true,
108
+ sendReasoning: true,
109
+ getErrorMessage: (error) => {
110
+ return `An error occurred while processing your request. ${error instanceof Error ? error.message : JSON.stringify(error)}`;
111
+ }
112
+ });
113
+ return streamResponse;
114
+ } catch (error) {
115
+ return chunkZLBRQFDD_cjs.handleError(error, "Error streaming from network");
116
+ }
117
+ }
118
+
119
+ exports.generateHandler = generateHandler;
120
+ exports.getNetworkByIdHandler = getNetworkByIdHandler;
121
+ exports.getNetworksHandler = getNetworksHandler;
122
+ exports.network_exports = network_exports;
123
+ exports.streamGenerateHandler = streamGenerateHandler;
@@ -0,0 +1,100 @@
1
+ 'use strict';
2
+
3
+ var chunkQN4KF3BH_cjs = require('./chunk-QN4KF3BH.cjs');
4
+ var chunkZLBRQFDD_cjs = require('./chunk-ZLBRQFDD.cjs');
5
+ var chunkFV45V6WC_cjs = require('./chunk-FV45V6WC.cjs');
6
+ var stream = require('stream');
7
+
8
+ // src/server/handlers/voice.ts
9
+ var voice_exports = {};
10
+ chunkFV45V6WC_cjs.__export(voice_exports, {
11
+ generateSpeechHandler: () => generateSpeechHandler,
12
+ getSpeakersHandler: () => getSpeakersHandler,
13
+ transcribeSpeechHandler: () => transcribeSpeechHandler
14
+ });
15
+ async function getSpeakersHandler({ mastra, agentId }) {
16
+ try {
17
+ if (!agentId) {
18
+ throw new chunkFV45V6WC_cjs.HTTPException(400, { message: "Agent ID is required" });
19
+ }
20
+ const agent = mastra.getAgent(agentId);
21
+ if (!agent) {
22
+ throw new chunkFV45V6WC_cjs.HTTPException(404, { message: "Agent not found" });
23
+ }
24
+ if (!agent.voice) {
25
+ throw new chunkFV45V6WC_cjs.HTTPException(400, { message: "Agent does not have voice capabilities" });
26
+ }
27
+ const speakers = await agent.voice.getSpeakers();
28
+ return speakers;
29
+ } catch (error) {
30
+ return chunkZLBRQFDD_cjs.handleError(error, "Error getting speakers");
31
+ }
32
+ }
33
+ async function generateSpeechHandler({
34
+ mastra,
35
+ agentId,
36
+ body
37
+ }) {
38
+ try {
39
+ if (!agentId) {
40
+ throw new chunkFV45V6WC_cjs.HTTPException(400, { message: "Agent ID is required" });
41
+ }
42
+ chunkQN4KF3BH_cjs.validateBody({
43
+ text: void 0,
44
+ speakerId: void 0,
45
+ ...body
46
+ });
47
+ const agent = mastra.getAgent(agentId);
48
+ if (!agent) {
49
+ throw new chunkFV45V6WC_cjs.HTTPException(404, { message: "Agent not found" });
50
+ }
51
+ if (!agent.voice) {
52
+ throw new chunkFV45V6WC_cjs.HTTPException(400, { message: "Agent does not have voice capabilities" });
53
+ }
54
+ const audioStream = await agent.voice.speak(body.text, { speaker: body.speakerId });
55
+ if (!audioStream) {
56
+ throw new chunkFV45V6WC_cjs.HTTPException(500, { message: "Failed to generate speech" });
57
+ }
58
+ const chunks = [];
59
+ for await (const chunk of audioStream) {
60
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
61
+ }
62
+ const audioData = Buffer.concat(chunks);
63
+ return { audioData };
64
+ } catch (error) {
65
+ return chunkZLBRQFDD_cjs.handleError(error, "Error generating speech");
66
+ }
67
+ }
68
+ async function transcribeSpeechHandler({
69
+ mastra,
70
+ agentId,
71
+ body
72
+ }) {
73
+ try {
74
+ if (!agentId) {
75
+ throw new chunkFV45V6WC_cjs.HTTPException(400, { message: "Agent ID is required" });
76
+ }
77
+ if (!body?.audioData) {
78
+ throw new chunkFV45V6WC_cjs.HTTPException(400, { message: "Audio data is required" });
79
+ }
80
+ const agent = mastra.getAgent(agentId);
81
+ if (!agent) {
82
+ throw new chunkFV45V6WC_cjs.HTTPException(404, { message: "Agent not found" });
83
+ }
84
+ if (!agent.voice) {
85
+ throw new chunkFV45V6WC_cjs.HTTPException(400, { message: "Agent does not have voice capabilities" });
86
+ }
87
+ const audioStream = new stream.Readable();
88
+ audioStream.push(body.audioData);
89
+ audioStream.push(null);
90
+ const text = await agent.voice.listen(audioStream, body.options);
91
+ return { text };
92
+ } catch (error) {
93
+ return chunkZLBRQFDD_cjs.handleError(error, "Error transcribing speech");
94
+ }
95
+ }
96
+
97
+ exports.generateSpeechHandler = generateSpeechHandler;
98
+ exports.getSpeakersHandler = getSpeakersHandler;
99
+ exports.transcribeSpeechHandler = transcribeSpeechHandler;
100
+ exports.voice_exports = voice_exports;
@@ -0,0 +1,152 @@
1
+ import { stringify, esm_default } from './chunk-VK6FX47H.js';
2
+ import { validateBody } from './chunk-L7XE5QTW.js';
3
+ import { handleError } from './chunk-3AHQ5RGN.js';
4
+ import { __export, HTTPException } from './chunk-TRDNDNGQ.js';
5
+
6
+ // src/server/handlers/agents.ts
7
+ var agents_exports = {};
8
+ __export(agents_exports, {
9
+ generateHandler: () => generateHandler,
10
+ getAgentByIdHandler: () => getAgentByIdHandler,
11
+ getAgentsHandler: () => getAgentsHandler,
12
+ getEvalsByAgentIdHandler: () => getEvalsByAgentIdHandler,
13
+ getLiveEvalsByAgentIdHandler: () => getLiveEvalsByAgentIdHandler,
14
+ streamGenerateHandler: () => streamGenerateHandler
15
+ });
16
+ async function getAgentsHandler({ mastra }) {
17
+ try {
18
+ const agents = mastra.getAgents();
19
+ const serializedAgents = Object.entries(agents).reduce((acc, [_id, _agent]) => {
20
+ const agent = _agent;
21
+ const serializedAgentTools = Object.entries(agent?.tools || {}).reduce((acc2, [key, tool]) => {
22
+ const _tool = tool;
23
+ acc2[key] = {
24
+ ..._tool,
25
+ inputSchema: _tool.inputSchema ? stringify(esm_default(_tool.inputSchema)) : void 0,
26
+ outputSchema: _tool.outputSchema ? stringify(esm_default(_tool.outputSchema)) : void 0
27
+ };
28
+ return acc2;
29
+ }, {});
30
+ acc[_id] = {
31
+ name: agent.name,
32
+ instructions: agent.instructions,
33
+ tools: serializedAgentTools,
34
+ provider: agent.llm?.getProvider(),
35
+ modelId: agent.llm?.getModelId()
36
+ };
37
+ return acc;
38
+ }, {});
39
+ return serializedAgents;
40
+ } catch (error) {
41
+ return handleError(error, "Error getting agents");
42
+ }
43
+ }
44
+ async function getAgentByIdHandler({ mastra, agentId }) {
45
+ try {
46
+ const agent = mastra.getAgent(agentId);
47
+ if (!agent) {
48
+ throw new HTTPException(404, { message: "Agent not found" });
49
+ }
50
+ const serializedAgentTools = Object.entries(agent?.tools || {}).reduce((acc, [key, tool]) => {
51
+ const _tool = tool;
52
+ acc[key] = {
53
+ ..._tool,
54
+ inputSchema: _tool.inputSchema ? stringify(esm_default(_tool.inputSchema)) : void 0,
55
+ outputSchema: _tool.outputSchema ? stringify(esm_default(_tool.outputSchema)) : void 0
56
+ };
57
+ return acc;
58
+ }, {});
59
+ return {
60
+ name: agent.name,
61
+ instructions: agent.instructions,
62
+ tools: serializedAgentTools,
63
+ provider: agent.llm?.getProvider(),
64
+ modelId: agent.llm?.getModelId()
65
+ };
66
+ } catch (error) {
67
+ return handleError(error, "Error getting agent");
68
+ }
69
+ }
70
+ async function getEvalsByAgentIdHandler({ mastra, agentId }) {
71
+ try {
72
+ const agent = mastra.getAgent(agentId);
73
+ const evals = await mastra.getStorage()?.__getEvalsByAgentName?.(agent.name, "test") || [];
74
+ return {
75
+ id: agentId,
76
+ name: agent.name,
77
+ instructions: agent.instructions,
78
+ evals
79
+ };
80
+ } catch (error) {
81
+ return handleError(error, "Error getting test evals");
82
+ }
83
+ }
84
+ async function getLiveEvalsByAgentIdHandler({ mastra, agentId }) {
85
+ try {
86
+ const agent = mastra.getAgent(agentId);
87
+ const evals = await mastra.getStorage()?.__getEvalsByAgentName?.(agent.name, "live") || [];
88
+ return {
89
+ id: agentId,
90
+ name: agent.name,
91
+ instructions: agent.instructions,
92
+ evals
93
+ };
94
+ } catch (error) {
95
+ return handleError(error, "Error getting live evals");
96
+ }
97
+ }
98
+ async function generateHandler({
99
+ mastra,
100
+ agentId,
101
+ body
102
+ }) {
103
+ try {
104
+ const agent = mastra.getAgent(agentId);
105
+ if (!agent) {
106
+ throw new HTTPException(404, { message: "Agent not found" });
107
+ }
108
+ const { messages, resourceId, resourceid, ...rest } = body;
109
+ const finalResourceId = resourceId ?? resourceid;
110
+ validateBody({ messages });
111
+ const result = await agent.generate(messages, {
112
+ ...rest,
113
+ // @ts-expect-error TODO fix types
114
+ resourceId: finalResourceId
115
+ });
116
+ return result;
117
+ } catch (error) {
118
+ return handleError(error, "Error generating from agent");
119
+ }
120
+ }
121
+ async function streamGenerateHandler({
122
+ mastra,
123
+ agentId,
124
+ body
125
+ }) {
126
+ try {
127
+ const agent = mastra.getAgent(agentId);
128
+ if (!agent) {
129
+ throw new HTTPException(404, { message: "Agent not found" });
130
+ }
131
+ const { messages, resourceId, resourceid, ...rest } = body;
132
+ const finalResourceId = resourceId ?? resourceid;
133
+ validateBody({ messages });
134
+ const streamResult = await agent.stream(messages, {
135
+ ...rest,
136
+ // @ts-expect-error TODO fix types
137
+ resourceId: finalResourceId
138
+ });
139
+ const streamResponse = rest.output ? streamResult.toTextStreamResponse() : streamResult.toDataStreamResponse({
140
+ sendUsage: true,
141
+ sendReasoning: true,
142
+ getErrorMessage: (error) => {
143
+ return `An error occurred while processing your request. ${error instanceof Error ? error.message : JSON.stringify(error)}`;
144
+ }
145
+ });
146
+ return streamResponse;
147
+ } catch (error) {
148
+ throw new HTTPException(error?.status ?? 500, { message: error?.message ?? "Error streaming from agent" });
149
+ }
150
+ }
151
+
152
+ export { agents_exports, generateHandler, getAgentByIdHandler, getAgentsHandler, getEvalsByAgentIdHandler, getLiveEvalsByAgentIdHandler, streamGenerateHandler };
@@ -0,0 +1,139 @@
1
+ 'use strict';
2
+
3
+ var chunkZLBRQFDD_cjs = require('./chunk-ZLBRQFDD.cjs');
4
+ var chunkFV45V6WC_cjs = require('./chunk-FV45V6WC.cjs');
5
+
6
+ // src/server/handlers/telemetry.ts
7
+ var telemetry_exports = {};
8
+ chunkFV45V6WC_cjs.__export(telemetry_exports, {
9
+ getTelemetryHandler: () => getTelemetryHandler,
10
+ storeTelemetryHandler: () => storeTelemetryHandler
11
+ });
12
+ async function getTelemetryHandler({ mastra, body }) {
13
+ try {
14
+ const telemetry = mastra.getTelemetry();
15
+ const storage = mastra.getStorage();
16
+ if (!telemetry) {
17
+ throw new chunkFV45V6WC_cjs.HTTPException(400, { message: "Telemetry is not initialized" });
18
+ }
19
+ if (!storage) {
20
+ throw new chunkFV45V6WC_cjs.HTTPException(400, { message: "Storage is not initialized" });
21
+ }
22
+ if (!body) {
23
+ throw new chunkFV45V6WC_cjs.HTTPException(400, { message: "Body is required" });
24
+ }
25
+ const { name, scope, page, perPage, attribute } = body;
26
+ const attributes = attribute ? Object.fromEntries(
27
+ (Array.isArray(attribute) ? attribute : [attribute]).map((attr) => {
28
+ const [key, value] = attr.split(":");
29
+ return [key, value];
30
+ })
31
+ ) : void 0;
32
+ const traces = await storage.__getTraces({
33
+ name,
34
+ scope,
35
+ page: Number(page ?? 0),
36
+ perPage: Number(perPage ?? 100),
37
+ attributes
38
+ });
39
+ return traces;
40
+ } catch (error2) {
41
+ return chunkZLBRQFDD_cjs.handleError(error2, "Error getting telemetry");
42
+ }
43
+ }
44
+ async function storeTelemetryHandler({ mastra, body }) {
45
+ try {
46
+ const storage = mastra.getStorage();
47
+ const logger = mastra.getLogger();
48
+ if (!storage) {
49
+ throw new chunkFV45V6WC_cjs.HTTPException(400, { message: "Storage is not initialized" });
50
+ }
51
+ const now = /* @__PURE__ */ new Date();
52
+ const items = body?.resourceSpans?.[0]?.scopeSpans;
53
+ logger.debug("[Telemetry Handler] Received spans:", {
54
+ totalSpans: items?.reduce((acc, scope) => acc + scope.spans.length, 0) || 0,
55
+ timestamp: now.toISOString()
56
+ });
57
+ if (!items?.length) {
58
+ return {
59
+ status: "success",
60
+ message: "No spans to process",
61
+ traceCount: 0
62
+ };
63
+ }
64
+ const allSpans = items.reduce((acc, scopedSpans) => {
65
+ const { scope, spans } = scopedSpans;
66
+ for (const span of spans) {
67
+ const {
68
+ spanId,
69
+ parentSpanId,
70
+ traceId,
71
+ name,
72
+ kind,
73
+ attributes,
74
+ status,
75
+ events,
76
+ links,
77
+ startTimeUnixNano,
78
+ endTimeUnixNano,
79
+ ...rest
80
+ } = span;
81
+ const startTime = Number(BigInt(startTimeUnixNano) / 1000n);
82
+ const endTime = Number(BigInt(endTimeUnixNano) / 1000n);
83
+ acc.push({
84
+ id: spanId,
85
+ parentSpanId,
86
+ traceId,
87
+ name,
88
+ scope: scope.name,
89
+ kind,
90
+ status: JSON.stringify(status),
91
+ events: JSON.stringify(events),
92
+ links: JSON.stringify(links),
93
+ attributes: JSON.stringify(
94
+ attributes.reduce((acc2, attr) => {
95
+ const valueKey = Object.keys(attr.value)[0];
96
+ if (valueKey) {
97
+ acc2[attr.key] = attr.value[valueKey];
98
+ }
99
+ return acc2;
100
+ }, {})
101
+ ),
102
+ startTime,
103
+ endTime,
104
+ other: JSON.stringify(rest),
105
+ createdAt: now
106
+ });
107
+ }
108
+ return acc;
109
+ }, []);
110
+ return storage.__batchTraceInsert({
111
+ records: allSpans
112
+ }).then(() => {
113
+ return {
114
+ status: "success",
115
+ message: "Traces received and processed successfully",
116
+ traceCount: body.resourceSpans?.length || 0
117
+ };
118
+ }).catch(() => {
119
+ return {
120
+ status: "error",
121
+ message: "Failed to process traces",
122
+ // @ts-ignore
123
+ error: error.message
124
+ };
125
+ });
126
+ } catch (error2) {
127
+ console.error("Error processing traces:", error2);
128
+ return {
129
+ status: "error",
130
+ message: "Failed to process traces",
131
+ // @ts-ignore
132
+ error: error2.message
133
+ };
134
+ }
135
+ }
136
+
137
+ exports.getTelemetryHandler = getTelemetryHandler;
138
+ exports.storeTelemetryHandler = storeTelemetryHandler;
139
+ exports.telemetry_exports = telemetry_exports;