@mastra/server 0.0.0-a2a-20250421213654
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +46 -0
- package/README.md +159 -0
- package/dist/_tsup-dts-rollup.d.cts +897 -0
- package/dist/_tsup-dts-rollup.d.ts +897 -0
- package/dist/chunk-3KWAWPRU.cjs +127 -0
- package/dist/chunk-4VNS5WPM.js +37 -0
- package/dist/chunk-57CJTIPW.cjs +18 -0
- package/dist/chunk-5SWCVTNL.cjs +5579 -0
- package/dist/chunk-64U3UDTH.cjs +13 -0
- package/dist/chunk-6QEBCWQG.js +136 -0
- package/dist/chunk-75KYFUMD.cjs +165 -0
- package/dist/chunk-B2TWGIVC.cjs +101 -0
- package/dist/chunk-CVPOREIE.cjs +42 -0
- package/dist/chunk-CZOSYERC.js +312 -0
- package/dist/chunk-FFRES7WX.js +157 -0
- package/dist/chunk-H5PTF3Y4.js +16 -0
- package/dist/chunk-IDPBXKRV.js +121 -0
- package/dist/chunk-J2MCTUD4.js +121 -0
- package/dist/chunk-JQCFFVSK.cjs +127 -0
- package/dist/chunk-LGJ46RCS.js +96 -0
- package/dist/chunk-LTP7PHVE.cjs +321 -0
- package/dist/chunk-M5ABIP7D.js +11 -0
- package/dist/chunk-NJF275KR.js +49 -0
- package/dist/chunk-NYN7KFXL.js +34 -0
- package/dist/chunk-O7X557PN.cjs +140 -0
- package/dist/chunk-OCWPVYNI.cjs +36 -0
- package/dist/chunk-OMN3UI6X.js +5576 -0
- package/dist/chunk-P7UZNROR.js +306 -0
- package/dist/chunk-PJHJORJL.js +204 -0
- package/dist/chunk-RXH2S65Z.cjs +54 -0
- package/dist/chunk-UVVUDJBW.cjs +214 -0
- package/dist/chunk-Y7WN2UYV.cjs +318 -0
- package/dist/chunk-YB2FGKQ5.js +121 -0
- package/dist/chunk-ZCRMOXNW.cjs +129 -0
- package/dist/index.cjs +2 -0
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/magic-string.es-5UDOWOAZ.js +1294 -0
- package/dist/magic-string.es-IL2775P6.cjs +1300 -0
- package/dist/server/handlers/a2a.cjs +34 -0
- package/dist/server/handlers/a2a.d.cts +7 -0
- package/dist/server/handlers/a2a.d.ts +7 -0
- package/dist/server/handlers/a2a.js +1 -0
- package/dist/server/handlers/agents.cjs +30 -0
- package/dist/server/handlers/agents.d.cts +6 -0
- package/dist/server/handlers/agents.d.ts +6 -0
- package/dist/server/handlers/agents.js +1 -0
- package/dist/server/handlers/error.cjs +10 -0
- package/dist/server/handlers/error.d.cts +1 -0
- package/dist/server/handlers/error.d.ts +1 -0
- package/dist/server/handlers/error.js +1 -0
- package/dist/server/handlers/logs.cjs +18 -0
- package/dist/server/handlers/logs.d.cts +3 -0
- package/dist/server/handlers/logs.d.ts +3 -0
- package/dist/server/handlers/logs.js +1 -0
- package/dist/server/handlers/memory.cjs +38 -0
- package/dist/server/handlers/memory.d.cts +8 -0
- package/dist/server/handlers/memory.d.ts +8 -0
- package/dist/server/handlers/memory.js +1 -0
- package/dist/server/handlers/network.cjs +22 -0
- package/dist/server/handlers/network.d.cts +4 -0
- package/dist/server/handlers/network.d.ts +4 -0
- package/dist/server/handlers/network.js +1 -0
- package/dist/server/handlers/telemetry.cjs +14 -0
- package/dist/server/handlers/telemetry.d.cts +2 -0
- package/dist/server/handlers/telemetry.d.ts +2 -0
- package/dist/server/handlers/telemetry.js +1 -0
- package/dist/server/handlers/test-utils.cjs +16209 -0
- package/dist/server/handlers/test-utils.d.cts +1 -0
- package/dist/server/handlers/test-utils.d.ts +1 -0
- package/dist/server/handlers/test-utils.js +16207 -0
- package/dist/server/handlers/tools.cjs +22 -0
- package/dist/server/handlers/tools.d.cts +4 -0
- package/dist/server/handlers/tools.d.ts +4 -0
- package/dist/server/handlers/tools.js +1 -0
- package/dist/server/handlers/utils.cjs +10 -0
- package/dist/server/handlers/utils.d.cts +1 -0
- package/dist/server/handlers/utils.d.ts +1 -0
- package/dist/server/handlers/utils.js +1 -0
- package/dist/server/handlers/vector.cjs +30 -0
- package/dist/server/handlers/vector.d.cts +6 -0
- package/dist/server/handlers/vector.d.ts +6 -0
- package/dist/server/handlers/vector.js +1 -0
- package/dist/server/handlers/voice.cjs +18 -0
- package/dist/server/handlers/voice.d.cts +3 -0
- package/dist/server/handlers/voice.d.ts +3 -0
- package/dist/server/handlers/voice.js +1 -0
- package/dist/server/handlers/workflows.cjs +46 -0
- package/dist/server/handlers/workflows.d.cts +10 -0
- package/dist/server/handlers/workflows.d.ts +10 -0
- package/dist/server/handlers/workflows.js +1 -0
- package/dist/server/handlers.cjs +55 -0
- package/dist/server/handlers.d.cts +10 -0
- package/dist/server/handlers.d.ts +10 -0
- package/dist/server/handlers.js +10 -0
- package/package.json +71 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkOCWPVYNI_cjs = require('./chunk-OCWPVYNI.cjs');
|
|
4
|
+
|
|
5
|
+
// src/server/handlers/error.ts
|
|
6
|
+
function handleError(error, defaultMessage) {
|
|
7
|
+
const apiError = error;
|
|
8
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(apiError.status || 500, {
|
|
9
|
+
message: apiError.message || defaultMessage
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
exports.handleError = handleError;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { handleError } from './chunk-M5ABIP7D.js';
|
|
2
|
+
import { HTTPException } from './chunk-NYN7KFXL.js';
|
|
3
|
+
import { __export } from './chunk-4VNS5WPM.js';
|
|
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
|
+
const logger = mastra.getLogger();
|
|
47
|
+
if (!storage) {
|
|
48
|
+
throw new HTTPException(400, { message: "Storage is not initialized" });
|
|
49
|
+
}
|
|
50
|
+
const now = /* @__PURE__ */ new Date();
|
|
51
|
+
const items = body?.resourceSpans?.[0]?.scopeSpans;
|
|
52
|
+
logger.debug("[Telemetry Handler] Received spans:", {
|
|
53
|
+
totalSpans: items?.reduce((acc, scope) => acc + scope.spans.length, 0) || 0,
|
|
54
|
+
timestamp: now.toISOString()
|
|
55
|
+
});
|
|
56
|
+
if (!items?.length) {
|
|
57
|
+
return {
|
|
58
|
+
status: "success",
|
|
59
|
+
message: "No spans to process",
|
|
60
|
+
traceCount: 0
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const allSpans = items.reduce((acc, scopedSpans) => {
|
|
64
|
+
const { scope, spans } = scopedSpans;
|
|
65
|
+
for (const span of spans) {
|
|
66
|
+
const {
|
|
67
|
+
spanId,
|
|
68
|
+
parentSpanId,
|
|
69
|
+
traceId,
|
|
70
|
+
name,
|
|
71
|
+
kind,
|
|
72
|
+
attributes,
|
|
73
|
+
status,
|
|
74
|
+
events,
|
|
75
|
+
links,
|
|
76
|
+
startTimeUnixNano,
|
|
77
|
+
endTimeUnixNano,
|
|
78
|
+
...rest
|
|
79
|
+
} = span;
|
|
80
|
+
const startTime = Number(BigInt(startTimeUnixNano) / 1000n);
|
|
81
|
+
const endTime = Number(BigInt(endTimeUnixNano) / 1000n);
|
|
82
|
+
acc.push({
|
|
83
|
+
id: spanId,
|
|
84
|
+
parentSpanId,
|
|
85
|
+
traceId,
|
|
86
|
+
name,
|
|
87
|
+
scope: scope.name,
|
|
88
|
+
kind,
|
|
89
|
+
status: JSON.stringify(status),
|
|
90
|
+
events: JSON.stringify(events),
|
|
91
|
+
links: JSON.stringify(links),
|
|
92
|
+
attributes: JSON.stringify(
|
|
93
|
+
attributes.reduce((acc2, attr) => {
|
|
94
|
+
const valueKey = Object.keys(attr.value)[0];
|
|
95
|
+
if (valueKey) {
|
|
96
|
+
acc2[attr.key] = attr.value[valueKey];
|
|
97
|
+
}
|
|
98
|
+
return acc2;
|
|
99
|
+
}, {})
|
|
100
|
+
),
|
|
101
|
+
startTime,
|
|
102
|
+
endTime,
|
|
103
|
+
other: JSON.stringify(rest),
|
|
104
|
+
createdAt: now
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
return acc;
|
|
108
|
+
}, []);
|
|
109
|
+
return storage.batchTraceInsert({
|
|
110
|
+
records: allSpans
|
|
111
|
+
}).then(() => {
|
|
112
|
+
return {
|
|
113
|
+
status: "success",
|
|
114
|
+
message: "Traces received and processed successfully",
|
|
115
|
+
traceCount: body.resourceSpans?.length || 0
|
|
116
|
+
};
|
|
117
|
+
}).catch(() => {
|
|
118
|
+
return {
|
|
119
|
+
status: "error",
|
|
120
|
+
message: "Failed to process traces",
|
|
121
|
+
// @ts-ignore
|
|
122
|
+
error: error.message
|
|
123
|
+
};
|
|
124
|
+
});
|
|
125
|
+
} catch (error2) {
|
|
126
|
+
console.error("Error processing traces:", error2);
|
|
127
|
+
return {
|
|
128
|
+
status: "error",
|
|
129
|
+
message: "Failed to process traces",
|
|
130
|
+
// @ts-ignore
|
|
131
|
+
error: error2.message
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export { getTelemetryHandler, storeTelemetryHandler, telemetry_exports };
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk5SWCVTNL_cjs = require('./chunk-5SWCVTNL.cjs');
|
|
4
|
+
var chunk57CJTIPW_cjs = require('./chunk-57CJTIPW.cjs');
|
|
5
|
+
var chunk64U3UDTH_cjs = require('./chunk-64U3UDTH.cjs');
|
|
6
|
+
var chunkOCWPVYNI_cjs = require('./chunk-OCWPVYNI.cjs');
|
|
7
|
+
var chunkCVPOREIE_cjs = require('./chunk-CVPOREIE.cjs');
|
|
8
|
+
|
|
9
|
+
// src/server/handlers/agents.ts
|
|
10
|
+
var agents_exports = {};
|
|
11
|
+
chunkCVPOREIE_cjs.__export(agents_exports, {
|
|
12
|
+
generateHandler: () => generateHandler,
|
|
13
|
+
getAgentByIdHandler: () => getAgentByIdHandler,
|
|
14
|
+
getAgentsHandler: () => getAgentsHandler,
|
|
15
|
+
getEvalsByAgentIdHandler: () => getEvalsByAgentIdHandler,
|
|
16
|
+
getLiveEvalsByAgentIdHandler: () => getLiveEvalsByAgentIdHandler,
|
|
17
|
+
streamGenerateHandler: () => streamGenerateHandler
|
|
18
|
+
});
|
|
19
|
+
async function getAgentsHandler({ mastra }) {
|
|
20
|
+
try {
|
|
21
|
+
const agents = mastra.getAgents();
|
|
22
|
+
const serializedAgents = Object.entries(agents).reduce((acc, [_id, _agent]) => {
|
|
23
|
+
const agent = _agent;
|
|
24
|
+
const serializedAgentTools = Object.entries(agent?.tools || {}).reduce((acc2, [key, tool]) => {
|
|
25
|
+
const _tool = tool;
|
|
26
|
+
acc2[key] = {
|
|
27
|
+
..._tool,
|
|
28
|
+
inputSchema: _tool.inputSchema ? chunk5SWCVTNL_cjs.stringify(chunk5SWCVTNL_cjs.esm_default(_tool.inputSchema)) : void 0,
|
|
29
|
+
outputSchema: _tool.outputSchema ? chunk5SWCVTNL_cjs.stringify(chunk5SWCVTNL_cjs.esm_default(_tool.outputSchema)) : void 0
|
|
30
|
+
};
|
|
31
|
+
return acc2;
|
|
32
|
+
}, {});
|
|
33
|
+
acc[_id] = {
|
|
34
|
+
name: agent.name,
|
|
35
|
+
instructions: agent.instructions,
|
|
36
|
+
tools: serializedAgentTools,
|
|
37
|
+
provider: agent.llm?.getProvider(),
|
|
38
|
+
modelId: agent.llm?.getModelId()
|
|
39
|
+
};
|
|
40
|
+
return acc;
|
|
41
|
+
}, {});
|
|
42
|
+
return serializedAgents;
|
|
43
|
+
} catch (error) {
|
|
44
|
+
return chunk64U3UDTH_cjs.handleError(error, "Error getting agents");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async function getAgentByIdHandler({ mastra, agentId }) {
|
|
48
|
+
try {
|
|
49
|
+
const agent = mastra.getAgent(agentId);
|
|
50
|
+
if (!agent) {
|
|
51
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(404, { message: "Agent not found" });
|
|
52
|
+
}
|
|
53
|
+
const serializedAgentTools = Object.entries(agent?.tools || {}).reduce((acc, [key, tool]) => {
|
|
54
|
+
const _tool = tool;
|
|
55
|
+
acc[key] = {
|
|
56
|
+
..._tool,
|
|
57
|
+
inputSchema: _tool.inputSchema ? chunk5SWCVTNL_cjs.stringify(chunk5SWCVTNL_cjs.esm_default(_tool.inputSchema)) : void 0,
|
|
58
|
+
outputSchema: _tool.outputSchema ? chunk5SWCVTNL_cjs.stringify(chunk5SWCVTNL_cjs.esm_default(_tool.outputSchema)) : void 0
|
|
59
|
+
};
|
|
60
|
+
return acc;
|
|
61
|
+
}, {});
|
|
62
|
+
return {
|
|
63
|
+
name: agent.name,
|
|
64
|
+
instructions: agent.instructions,
|
|
65
|
+
tools: serializedAgentTools,
|
|
66
|
+
provider: agent.llm?.getProvider(),
|
|
67
|
+
modelId: agent.llm?.getModelId()
|
|
68
|
+
};
|
|
69
|
+
} catch (error) {
|
|
70
|
+
return chunk64U3UDTH_cjs.handleError(error, "Error getting agent");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async function getEvalsByAgentIdHandler({ mastra, agentId }) {
|
|
74
|
+
try {
|
|
75
|
+
const agent = mastra.getAgent(agentId);
|
|
76
|
+
const evals = await mastra.getStorage()?.getEvalsByAgentName?.(agent.name, "test") || [];
|
|
77
|
+
return {
|
|
78
|
+
id: agentId,
|
|
79
|
+
name: agent.name,
|
|
80
|
+
instructions: agent.instructions,
|
|
81
|
+
evals
|
|
82
|
+
};
|
|
83
|
+
} catch (error) {
|
|
84
|
+
return chunk64U3UDTH_cjs.handleError(error, "Error getting test evals");
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async function getLiveEvalsByAgentIdHandler({ mastra, agentId }) {
|
|
88
|
+
try {
|
|
89
|
+
const agent = mastra.getAgent(agentId);
|
|
90
|
+
const evals = await mastra.getStorage()?.getEvalsByAgentName?.(agent.name, "live") || [];
|
|
91
|
+
return {
|
|
92
|
+
id: agentId,
|
|
93
|
+
name: agent.name,
|
|
94
|
+
instructions: agent.instructions,
|
|
95
|
+
evals
|
|
96
|
+
};
|
|
97
|
+
} catch (error) {
|
|
98
|
+
return chunk64U3UDTH_cjs.handleError(error, "Error getting live evals");
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async function generateHandler({
|
|
102
|
+
mastra,
|
|
103
|
+
container,
|
|
104
|
+
agentId,
|
|
105
|
+
body
|
|
106
|
+
}) {
|
|
107
|
+
try {
|
|
108
|
+
const agent = mastra.getAgent(agentId);
|
|
109
|
+
if (!agent) {
|
|
110
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(404, { message: "Agent not found" });
|
|
111
|
+
}
|
|
112
|
+
const { messages, resourceId, resourceid, ...rest } = body;
|
|
113
|
+
const finalResourceId = resourceId ?? resourceid;
|
|
114
|
+
chunk57CJTIPW_cjs.validateBody({ messages });
|
|
115
|
+
const result = await agent.generate(messages, {
|
|
116
|
+
...rest,
|
|
117
|
+
// @ts-expect-error TODO fix types
|
|
118
|
+
resourceId: finalResourceId,
|
|
119
|
+
container
|
|
120
|
+
});
|
|
121
|
+
return result;
|
|
122
|
+
} catch (error) {
|
|
123
|
+
return chunk64U3UDTH_cjs.handleError(error, "Error generating from agent");
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async function streamGenerateHandler({
|
|
127
|
+
mastra,
|
|
128
|
+
container,
|
|
129
|
+
agentId,
|
|
130
|
+
body
|
|
131
|
+
}) {
|
|
132
|
+
try {
|
|
133
|
+
const agent = mastra.getAgent(agentId);
|
|
134
|
+
if (!agent) {
|
|
135
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(404, { message: "Agent not found" });
|
|
136
|
+
}
|
|
137
|
+
const { messages, resourceId, resourceid, ...rest } = body;
|
|
138
|
+
const finalResourceId = resourceId ?? resourceid;
|
|
139
|
+
chunk57CJTIPW_cjs.validateBody({ messages });
|
|
140
|
+
const streamResult = await agent.stream(messages, {
|
|
141
|
+
...rest,
|
|
142
|
+
// @ts-expect-error TODO fix types
|
|
143
|
+
resourceId: finalResourceId,
|
|
144
|
+
container
|
|
145
|
+
});
|
|
146
|
+
const streamResponse = rest.output ? streamResult.toTextStreamResponse() : streamResult.toDataStreamResponse({
|
|
147
|
+
sendUsage: true,
|
|
148
|
+
sendReasoning: true,
|
|
149
|
+
getErrorMessage: (error) => {
|
|
150
|
+
return `An error occurred while processing your request. ${error instanceof Error ? error.message : JSON.stringify(error)}`;
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
return streamResponse;
|
|
154
|
+
} catch (error) {
|
|
155
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(error?.status ?? 500, { message: error?.message ?? "Error streaming from agent" });
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
exports.agents_exports = agents_exports;
|
|
160
|
+
exports.generateHandler = generateHandler;
|
|
161
|
+
exports.getAgentByIdHandler = getAgentByIdHandler;
|
|
162
|
+
exports.getAgentsHandler = getAgentsHandler;
|
|
163
|
+
exports.getEvalsByAgentIdHandler = getEvalsByAgentIdHandler;
|
|
164
|
+
exports.getLiveEvalsByAgentIdHandler = getLiveEvalsByAgentIdHandler;
|
|
165
|
+
exports.streamGenerateHandler = streamGenerateHandler;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk57CJTIPW_cjs = require('./chunk-57CJTIPW.cjs');
|
|
4
|
+
var chunk64U3UDTH_cjs = require('./chunk-64U3UDTH.cjs');
|
|
5
|
+
var chunkOCWPVYNI_cjs = require('./chunk-OCWPVYNI.cjs');
|
|
6
|
+
var chunkCVPOREIE_cjs = require('./chunk-CVPOREIE.cjs');
|
|
7
|
+
var stream = require('stream');
|
|
8
|
+
|
|
9
|
+
// src/server/handlers/voice.ts
|
|
10
|
+
var voice_exports = {};
|
|
11
|
+
chunkCVPOREIE_cjs.__export(voice_exports, {
|
|
12
|
+
generateSpeechHandler: () => generateSpeechHandler,
|
|
13
|
+
getSpeakersHandler: () => getSpeakersHandler,
|
|
14
|
+
transcribeSpeechHandler: () => transcribeSpeechHandler
|
|
15
|
+
});
|
|
16
|
+
async function getSpeakersHandler({ mastra, agentId }) {
|
|
17
|
+
try {
|
|
18
|
+
if (!agentId) {
|
|
19
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(400, { message: "Agent ID is required" });
|
|
20
|
+
}
|
|
21
|
+
const agent = mastra.getAgent(agentId);
|
|
22
|
+
if (!agent) {
|
|
23
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(404, { message: "Agent not found" });
|
|
24
|
+
}
|
|
25
|
+
if (!agent.voice) {
|
|
26
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(400, { message: "Agent does not have voice capabilities" });
|
|
27
|
+
}
|
|
28
|
+
const speakers = await agent.voice.getSpeakers();
|
|
29
|
+
return speakers;
|
|
30
|
+
} catch (error) {
|
|
31
|
+
return chunk64U3UDTH_cjs.handleError(error, "Error getting speakers");
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async function generateSpeechHandler({
|
|
35
|
+
mastra,
|
|
36
|
+
agentId,
|
|
37
|
+
body
|
|
38
|
+
}) {
|
|
39
|
+
try {
|
|
40
|
+
if (!agentId) {
|
|
41
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(400, { message: "Agent ID is required" });
|
|
42
|
+
}
|
|
43
|
+
chunk57CJTIPW_cjs.validateBody({
|
|
44
|
+
text: void 0,
|
|
45
|
+
speakerId: void 0,
|
|
46
|
+
...body
|
|
47
|
+
});
|
|
48
|
+
const agent = mastra.getAgent(agentId);
|
|
49
|
+
if (!agent) {
|
|
50
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(404, { message: "Agent not found" });
|
|
51
|
+
}
|
|
52
|
+
if (!agent.voice) {
|
|
53
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(400, { message: "Agent does not have voice capabilities" });
|
|
54
|
+
}
|
|
55
|
+
const audioStream = await agent.voice.speak(body.text, { speaker: body.speakerId });
|
|
56
|
+
if (!audioStream) {
|
|
57
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(500, { message: "Failed to generate speech" });
|
|
58
|
+
}
|
|
59
|
+
const chunks = [];
|
|
60
|
+
for await (const chunk of audioStream) {
|
|
61
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
62
|
+
}
|
|
63
|
+
const audioData = Buffer.concat(chunks);
|
|
64
|
+
return { audioData };
|
|
65
|
+
} catch (error) {
|
|
66
|
+
return chunk64U3UDTH_cjs.handleError(error, "Error generating speech");
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function transcribeSpeechHandler({
|
|
70
|
+
mastra,
|
|
71
|
+
agentId,
|
|
72
|
+
body
|
|
73
|
+
}) {
|
|
74
|
+
try {
|
|
75
|
+
if (!agentId) {
|
|
76
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(400, { message: "Agent ID is required" });
|
|
77
|
+
}
|
|
78
|
+
if (!body?.audioData) {
|
|
79
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(400, { message: "Audio data is required" });
|
|
80
|
+
}
|
|
81
|
+
const agent = mastra.getAgent(agentId);
|
|
82
|
+
if (!agent) {
|
|
83
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(404, { message: "Agent not found" });
|
|
84
|
+
}
|
|
85
|
+
if (!agent.voice) {
|
|
86
|
+
throw new chunkOCWPVYNI_cjs.HTTPException(400, { message: "Agent does not have voice capabilities" });
|
|
87
|
+
}
|
|
88
|
+
const audioStream = new stream.Readable();
|
|
89
|
+
audioStream.push(body.audioData);
|
|
90
|
+
audioStream.push(null);
|
|
91
|
+
const text = await agent.voice.listen(audioStream, body.options);
|
|
92
|
+
return { text };
|
|
93
|
+
} catch (error) {
|
|
94
|
+
return chunk64U3UDTH_cjs.handleError(error, "Error transcribing speech");
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
exports.generateSpeechHandler = generateSpeechHandler;
|
|
99
|
+
exports.getSpeakersHandler = getSpeakersHandler;
|
|
100
|
+
exports.transcribeSpeechHandler = transcribeSpeechHandler;
|
|
101
|
+
exports.voice_exports = voice_exports;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
10
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
11
|
+
}) : x)(function(x) {
|
|
12
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
13
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
14
|
+
});
|
|
15
|
+
var __commonJS = (cb, mod) => function __require2() {
|
|
16
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
17
|
+
};
|
|
18
|
+
var __export = (target, all) => {
|
|
19
|
+
for (var name in all)
|
|
20
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
21
|
+
};
|
|
22
|
+
var __copyProps = (to, from, except, desc) => {
|
|
23
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
24
|
+
for (let key of __getOwnPropNames(from))
|
|
25
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
26
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
27
|
+
}
|
|
28
|
+
return to;
|
|
29
|
+
};
|
|
30
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
31
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
32
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
33
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
34
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
35
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
36
|
+
mod
|
|
37
|
+
));
|
|
38
|
+
|
|
39
|
+
exports.__commonJS = __commonJS;
|
|
40
|
+
exports.__export = __export;
|
|
41
|
+
exports.__require = __require;
|
|
42
|
+
exports.__toESM = __toESM;
|