@mastra/server 0.0.1-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 (83) hide show
  1. package/LICENSE +44 -0
  2. package/README.md +159 -0
  3. package/dist/_tsup-dts-rollup.d.cts +592 -0
  4. package/dist/_tsup-dts-rollup.d.ts +592 -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-5MCUD7TP.js +142 -0
  14. package/dist/chunk-5WF7YIIE.cjs +150 -0
  15. package/dist/chunk-A4DCRMIV.js +125 -0
  16. package/dist/chunk-A7DF4ETD.cjs +100 -0
  17. package/dist/chunk-FV45V6WC.cjs +43 -0
  18. package/dist/chunk-L7XE5QTW.js +16 -0
  19. package/dist/chunk-M56ECCHK.cjs +128 -0
  20. package/dist/chunk-QH6XWSXP.cjs +5579 -0
  21. package/dist/chunk-QN4KF3BH.cjs +18 -0
  22. package/dist/chunk-RBQASTUP.js +203 -0
  23. package/dist/chunk-S6GTZWMY.js +275 -0
  24. package/dist/chunk-SKKC3EDG.cjs +286 -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-YCJ2OJTL.cjs +129 -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 +42 -0
  76. package/dist/server/handlers/workflows.d.cts +9 -0
  77. package/dist/server/handlers/workflows.d.ts +9 -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,142 @@
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, ...rest } = body;
109
+ validateBody({ messages });
110
+ const result = await agent.generate(messages, rest);
111
+ return result;
112
+ } catch (error) {
113
+ return handleError(error, "Error generating from agent");
114
+ }
115
+ }
116
+ async function streamGenerateHandler({
117
+ mastra,
118
+ agentId,
119
+ body
120
+ }) {
121
+ try {
122
+ const agent = mastra.getAgent(agentId);
123
+ if (!agent) {
124
+ throw new HTTPException(404, { message: "Agent not found" });
125
+ }
126
+ const { messages, output, ...rest } = body;
127
+ validateBody({ messages });
128
+ const streamResult = await agent.stream(messages, { output, ...rest });
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
+ throw new HTTPException(error?.status ?? 500, { message: error?.message ?? "Error streaming from agent" });
139
+ }
140
+ }
141
+
142
+ export { agents_exports, generateHandler, getAgentByIdHandler, getAgentsHandler, getEvalsByAgentIdHandler, getLiveEvalsByAgentIdHandler, streamGenerateHandler };
@@ -0,0 +1,150 @@
1
+ 'use strict';
2
+
3
+ var chunkQH6XWSXP_cjs = require('./chunk-QH6XWSXP.cjs');
4
+ var chunkQN4KF3BH_cjs = require('./chunk-QN4KF3BH.cjs');
5
+ var chunkZLBRQFDD_cjs = require('./chunk-ZLBRQFDD.cjs');
6
+ var chunkFV45V6WC_cjs = require('./chunk-FV45V6WC.cjs');
7
+
8
+ // src/server/handlers/agents.ts
9
+ var agents_exports = {};
10
+ chunkFV45V6WC_cjs.__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 }) {
19
+ try {
20
+ const agents = mastra.getAgents();
21
+ const serializedAgents = Object.entries(agents).reduce((acc, [_id, _agent]) => {
22
+ const agent = _agent;
23
+ const serializedAgentTools = Object.entries(agent?.tools || {}).reduce((acc2, [key, tool]) => {
24
+ const _tool = tool;
25
+ acc2[key] = {
26
+ ..._tool,
27
+ inputSchema: _tool.inputSchema ? chunkQH6XWSXP_cjs.stringify(chunkQH6XWSXP_cjs.esm_default(_tool.inputSchema)) : void 0,
28
+ outputSchema: _tool.outputSchema ? chunkQH6XWSXP_cjs.stringify(chunkQH6XWSXP_cjs.esm_default(_tool.outputSchema)) : void 0
29
+ };
30
+ return acc2;
31
+ }, {});
32
+ acc[_id] = {
33
+ name: agent.name,
34
+ instructions: agent.instructions,
35
+ tools: serializedAgentTools,
36
+ provider: agent.llm?.getProvider(),
37
+ modelId: agent.llm?.getModelId()
38
+ };
39
+ return acc;
40
+ }, {});
41
+ return serializedAgents;
42
+ } catch (error) {
43
+ return chunkZLBRQFDD_cjs.handleError(error, "Error getting agents");
44
+ }
45
+ }
46
+ async function getAgentByIdHandler({ mastra, agentId }) {
47
+ try {
48
+ const agent = mastra.getAgent(agentId);
49
+ if (!agent) {
50
+ throw new chunkFV45V6WC_cjs.HTTPException(404, { message: "Agent not found" });
51
+ }
52
+ const serializedAgentTools = Object.entries(agent?.tools || {}).reduce((acc, [key, tool]) => {
53
+ const _tool = tool;
54
+ acc[key] = {
55
+ ..._tool,
56
+ inputSchema: _tool.inputSchema ? chunkQH6XWSXP_cjs.stringify(chunkQH6XWSXP_cjs.esm_default(_tool.inputSchema)) : void 0,
57
+ outputSchema: _tool.outputSchema ? chunkQH6XWSXP_cjs.stringify(chunkQH6XWSXP_cjs.esm_default(_tool.outputSchema)) : void 0
58
+ };
59
+ return acc;
60
+ }, {});
61
+ return {
62
+ name: agent.name,
63
+ instructions: agent.instructions,
64
+ tools: serializedAgentTools,
65
+ provider: agent.llm?.getProvider(),
66
+ modelId: agent.llm?.getModelId()
67
+ };
68
+ } catch (error) {
69
+ return chunkZLBRQFDD_cjs.handleError(error, "Error getting agent");
70
+ }
71
+ }
72
+ async function getEvalsByAgentIdHandler({ mastra, agentId }) {
73
+ try {
74
+ const agent = mastra.getAgent(agentId);
75
+ const evals = await mastra.getStorage()?.getEvalsByAgentName?.(agent.name, "test") || [];
76
+ return {
77
+ id: agentId,
78
+ name: agent.name,
79
+ instructions: agent.instructions,
80
+ evals
81
+ };
82
+ } catch (error) {
83
+ return chunkZLBRQFDD_cjs.handleError(error, "Error getting test evals");
84
+ }
85
+ }
86
+ async function getLiveEvalsByAgentIdHandler({ mastra, agentId }) {
87
+ try {
88
+ const agent = mastra.getAgent(agentId);
89
+ const evals = await mastra.getStorage()?.getEvalsByAgentName?.(agent.name, "live") || [];
90
+ return {
91
+ id: agentId,
92
+ name: agent.name,
93
+ instructions: agent.instructions,
94
+ evals
95
+ };
96
+ } catch (error) {
97
+ return chunkZLBRQFDD_cjs.handleError(error, "Error getting live evals");
98
+ }
99
+ }
100
+ async function generateHandler({
101
+ mastra,
102
+ agentId,
103
+ body
104
+ }) {
105
+ try {
106
+ const agent = mastra.getAgent(agentId);
107
+ if (!agent) {
108
+ throw new chunkFV45V6WC_cjs.HTTPException(404, { message: "Agent not found" });
109
+ }
110
+ const { messages, ...rest } = body;
111
+ chunkQN4KF3BH_cjs.validateBody({ messages });
112
+ const result = await agent.generate(messages, rest);
113
+ return result;
114
+ } catch (error) {
115
+ return chunkZLBRQFDD_cjs.handleError(error, "Error generating from agent");
116
+ }
117
+ }
118
+ async function streamGenerateHandler({
119
+ mastra,
120
+ agentId,
121
+ body
122
+ }) {
123
+ try {
124
+ const agent = mastra.getAgent(agentId);
125
+ if (!agent) {
126
+ throw new chunkFV45V6WC_cjs.HTTPException(404, { message: "Agent not found" });
127
+ }
128
+ const { messages, output, ...rest } = body;
129
+ chunkQN4KF3BH_cjs.validateBody({ messages });
130
+ const streamResult = await agent.stream(messages, { output, ...rest });
131
+ const streamResponse = output ? streamResult.toTextStreamResponse() : streamResult.toDataStreamResponse({
132
+ sendUsage: true,
133
+ sendReasoning: true,
134
+ getErrorMessage: (error) => {
135
+ return `An error occurred while processing your request. ${error instanceof Error ? error.message : JSON.stringify(error)}`;
136
+ }
137
+ });
138
+ return streamResponse;
139
+ } catch (error) {
140
+ throw new chunkFV45V6WC_cjs.HTTPException(error?.status ?? 500, { message: error?.message ?? "Error streaming from agent" });
141
+ }
142
+ }
143
+
144
+ exports.agents_exports = agents_exports;
145
+ exports.generateHandler = generateHandler;
146
+ exports.getAgentByIdHandler = getAgentByIdHandler;
147
+ exports.getAgentsHandler = getAgentsHandler;
148
+ exports.getEvalsByAgentIdHandler = getEvalsByAgentIdHandler;
149
+ exports.getLiveEvalsByAgentIdHandler = getLiveEvalsByAgentIdHandler;
150
+ exports.streamGenerateHandler = streamGenerateHandler;
@@ -0,0 +1,125 @@
1
+ import { handleError } from './chunk-3AHQ5RGN.js';
2
+ import { __export, HTTPException } from './chunk-TRDNDNGQ.js';
3
+ import { TABLE_TRACES } from '@mastra/core/storage';
4
+
5
+ // src/server/handlers/telemetry.ts
6
+ var telemetry_exports = {};
7
+ __export(telemetry_exports, {
8
+ getTelemetryHandler: () => getTelemetryHandler,
9
+ storeTelemetryHandler: () => storeTelemetryHandler
10
+ });
11
+ async function getTelemetryHandler({ mastra, body }) {
12
+ try {
13
+ const telemetry = mastra.getTelemetry();
14
+ const storage = mastra.getStorage();
15
+ if (!telemetry) {
16
+ throw new HTTPException(400, { message: "Telemetry is not initialized" });
17
+ }
18
+ if (!storage) {
19
+ throw new HTTPException(400, { message: "Storage is not initialized" });
20
+ }
21
+ if (!body) {
22
+ throw new HTTPException(400, { message: "Body is required" });
23
+ }
24
+ const { name, scope, page, perPage, attribute } = body;
25
+ const attributes = attribute ? Object.fromEntries(
26
+ (Array.isArray(attribute) ? attribute : [attribute]).map((attr) => {
27
+ const [key, value] = attr.split(":");
28
+ return [key, value];
29
+ })
30
+ ) : void 0;
31
+ const traces = await storage.getTraces({
32
+ name,
33
+ scope,
34
+ page: Number(page ?? 0),
35
+ perPage: Number(perPage ?? 100),
36
+ attributes
37
+ });
38
+ return { traces };
39
+ } catch (error2) {
40
+ return handleError(error2, "Error getting telemetry");
41
+ }
42
+ }
43
+ async function storeTelemetryHandler({ mastra, body }) {
44
+ try {
45
+ const storage = mastra.getStorage();
46
+ if (!storage) {
47
+ throw new HTTPException(400, { message: "Storage is not initialized" });
48
+ }
49
+ const now = /* @__PURE__ */ new Date();
50
+ const items = body?.resourceSpans?.[0]?.scopeSpans;
51
+ const allSpans = items.reduce((acc, scopedSpans) => {
52
+ const { scope, spans } = scopedSpans;
53
+ for (const span of spans) {
54
+ const {
55
+ spanId,
56
+ parentSpanId,
57
+ traceId,
58
+ name,
59
+ kind,
60
+ attributes,
61
+ status,
62
+ events,
63
+ links,
64
+ startTimeUnixNano,
65
+ endTimeUnixNano,
66
+ ...rest
67
+ } = span;
68
+ const startTime = Number(BigInt(startTimeUnixNano) / 1000n);
69
+ const endTime = Number(BigInt(endTimeUnixNano) / 1000n);
70
+ acc.push({
71
+ id: spanId,
72
+ parentSpanId,
73
+ traceId,
74
+ name,
75
+ scope: scope.name,
76
+ kind,
77
+ status: JSON.stringify(status),
78
+ events: JSON.stringify(events),
79
+ links: JSON.stringify(links),
80
+ attributes: JSON.stringify(
81
+ attributes.reduce((acc2, attr) => {
82
+ const valueKey = Object.keys(attr.value)[0];
83
+ if (valueKey) {
84
+ acc2[attr.key] = attr.value[valueKey];
85
+ }
86
+ return acc2;
87
+ }, {})
88
+ ),
89
+ startTime,
90
+ endTime,
91
+ other: JSON.stringify(rest),
92
+ createdAt: now
93
+ });
94
+ }
95
+ return acc;
96
+ }, []);
97
+ return storage.__batchInsert({
98
+ tableName: TABLE_TRACES,
99
+ records: allSpans
100
+ }).then(() => {
101
+ return {
102
+ status: "success",
103
+ message: "Traces received and processed successfully",
104
+ traceCount: body.resourceSpans?.length || 0
105
+ };
106
+ }).catch(() => {
107
+ return {
108
+ status: "error",
109
+ message: "Failed to process traces",
110
+ // @ts-ignore
111
+ error: error.message
112
+ };
113
+ });
114
+ } catch (error2) {
115
+ console.error("Error processing traces:", error2);
116
+ return {
117
+ status: "error",
118
+ message: "Failed to process traces",
119
+ // @ts-ignore
120
+ error: error2.message
121
+ };
122
+ }
123
+ }
124
+
125
+ export { getTelemetryHandler, storeTelemetryHandler, telemetry_exports };