@mastra/server 1.0.0-beta.5 → 1.0.0-beta.6
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/CHANGELOG.md +55 -0
- package/dist/{chunk-MH3A7RDQ.cjs → chunk-5772SXSK.cjs} +29 -28
- package/dist/chunk-5772SXSK.cjs.map +1 -0
- package/dist/{chunk-R6ZTXNN2.cjs → chunk-777BJH4Z.cjs} +27 -23
- package/dist/chunk-777BJH4Z.cjs.map +1 -0
- package/dist/{chunk-ZPZSAJAR.js → chunk-7MKJBWFB.js} +3 -3
- package/dist/{chunk-ZPZSAJAR.js.map → chunk-7MKJBWFB.js.map} +1 -1
- package/dist/{chunk-6KNI7VIX.js → chunk-B4UYPCEY.js} +4 -3
- package/dist/chunk-B4UYPCEY.js.map +1 -0
- package/dist/{chunk-A6MQQTHN.js → chunk-C36PTNGG.js} +3 -3
- package/dist/{chunk-A6MQQTHN.js.map → chunk-C36PTNGG.js.map} +1 -1
- package/dist/{chunk-Z7R7CFVF.cjs → chunk-CLRYA4BH.cjs} +6 -6
- package/dist/{chunk-Z7R7CFVF.cjs.map → chunk-CLRYA4BH.cjs.map} +1 -1
- package/dist/{chunk-RCCWKKI3.js → chunk-CQDHE64H.js} +6 -4
- package/dist/chunk-CQDHE64H.js.map +1 -0
- package/dist/{chunk-LGG3N3AV.js → chunk-FCCK5TSS.js} +3 -3
- package/dist/{chunk-LGG3N3AV.js.map → chunk-FCCK5TSS.js.map} +1 -1
- package/dist/{chunk-SAQSK4AG.cjs → chunk-H2RMXG2Q.cjs} +2 -2
- package/dist/{chunk-SAQSK4AG.cjs.map → chunk-H2RMXG2Q.cjs.map} +1 -1
- package/dist/chunk-IO7XB4XH.cjs +23258 -0
- package/dist/chunk-IO7XB4XH.cjs.map +1 -0
- package/dist/chunk-MK6GBMKE.js +23216 -0
- package/dist/chunk-MK6GBMKE.js.map +1 -0
- package/dist/{chunk-CBDUTSTI.js → chunk-ORJBWSYB.js} +16 -12
- package/dist/chunk-ORJBWSYB.js.map +1 -0
- package/dist/{chunk-UCRV7PD3.js → chunk-OSLIOPFU.js} +8 -4
- package/dist/chunk-OSLIOPFU.js.map +1 -0
- package/dist/chunk-QCW6WANZ.cjs +296 -0
- package/dist/chunk-QCW6WANZ.cjs.map +1 -0
- package/dist/{chunk-65Q7HO3Q.cjs → chunk-QS23OV2B.cjs} +37 -28
- package/dist/chunk-QS23OV2B.cjs.map +1 -0
- package/dist/{chunk-PDVJ2TTM.cjs → chunk-SNPELBJA.cjs} +8 -6
- package/dist/chunk-SNPELBJA.cjs.map +1 -0
- package/dist/{chunk-IMK7366C.cjs → chunk-SWIK2QSP.cjs} +9 -9
- package/dist/{chunk-IMK7366C.cjs.map → chunk-SWIK2QSP.cjs.map} +1 -1
- package/dist/{chunk-LZDCXQMX.js → chunk-SXVANU23.js} +2 -2
- package/dist/{chunk-LZDCXQMX.js.map → chunk-SXVANU23.js.map} +1 -1
- package/dist/{chunk-4O2QGUW3.js → chunk-TIX6M3ZD.js} +3 -3
- package/dist/{chunk-4O2QGUW3.js.map → chunk-TIX6M3ZD.js.map} +1 -1
- package/dist/{chunk-AUQBEMDP.cjs → chunk-TOUBNMVI.cjs} +9 -9
- package/dist/{chunk-AUQBEMDP.cjs.map → chunk-TOUBNMVI.cjs.map} +1 -1
- package/dist/{chunk-QVHQZUGJ.cjs → chunk-TT25WHVT.cjs} +7 -7
- package/dist/{chunk-QVHQZUGJ.cjs.map → chunk-TT25WHVT.cjs.map} +1 -1
- package/dist/{chunk-4JMHKKV3.cjs → chunk-UPY7WWRA.cjs} +23 -19
- package/dist/chunk-UPY7WWRA.cjs.map +1 -0
- package/dist/chunk-VJVDLNFK.js +286 -0
- package/dist/chunk-VJVDLNFK.js.map +1 -0
- package/dist/{chunk-FCHN5M25.js → chunk-WISPJOEJ.js} +15 -6
- package/dist/chunk-WISPJOEJ.js.map +1 -0
- package/dist/{chunk-YLQHE2S5.js → chunk-XMKZWHVG.js} +5 -5
- package/dist/{chunk-YLQHE2S5.js.map → chunk-XMKZWHVG.js.map} +1 -1
- package/dist/{chunk-S6DFGBDD.cjs → chunk-Z4GN2JAO.cjs} +10 -10
- package/dist/{chunk-S6DFGBDD.cjs.map → chunk-Z4GN2JAO.cjs.map} +1 -1
- package/dist/server/auth/defaults.d.ts +3 -0
- package/dist/server/auth/defaults.d.ts.map +1 -0
- package/dist/server/auth/helpers.d.ts +14 -0
- package/dist/server/auth/helpers.d.ts.map +1 -0
- package/dist/server/auth/index.cjs +137 -0
- package/dist/server/auth/index.cjs.map +1 -0
- package/dist/server/auth/index.d.ts +3 -0
- package/dist/server/auth/index.d.ts.map +1 -0
- package/dist/server/auth/index.js +127 -0
- package/dist/server/auth/index.js.map +1 -0
- package/dist/server/handlers/a2a.cjs +9 -9
- package/dist/server/handlers/a2a.d.ts.map +1 -1
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +19 -19
- package/dist/server/handlers/agent-builder.d.ts +15 -0
- package/dist/server/handlers/agent-builder.d.ts.map +1 -1
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agents.cjs +23 -23
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/logs.cjs +4 -4
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/mcp.cjs +40 -0
- package/dist/server/handlers/mcp.cjs.map +1 -0
- package/dist/server/handlers/mcp.d.ts +108 -0
- package/dist/server/handlers/mcp.d.ts.map +1 -0
- package/dist/server/handlers/mcp.js +3 -0
- package/dist/server/handlers/mcp.js.map +1 -0
- package/dist/server/handlers/memory.cjs +24 -24
- package/dist/server/handlers/memory.d.ts +2 -2
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability.cjs +9 -9
- package/dist/server/handlers/observability.js +1 -1
- package/dist/server/handlers/scores.cjs +7 -7
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/tools.cjs +6 -6
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/vector.cjs +13 -13
- package/dist/server/handlers/vector.d.ts +2 -2
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/voice.cjs +8 -8
- package/dist/server/handlers/voice.d.ts.map +1 -1
- package/dist/server/handlers/voice.js +1 -1
- package/dist/server/handlers/workflows.cjs +26 -26
- package/dist/server/handlers/workflows.d.ts +21 -6
- package/dist/server/handlers/workflows.d.ts.map +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers.cjs +36 -31
- package/dist/server/handlers.d.ts +1 -0
- package/dist/server/handlers.d.ts.map +1 -1
- package/dist/server/handlers.js +12 -11
- package/dist/server/schemas/agent-builder.d.ts +9 -0
- package/dist/server/schemas/agent-builder.d.ts.map +1 -1
- package/dist/server/schemas/mcp.d.ts +293 -0
- package/dist/server/schemas/mcp.d.ts.map +1 -0
- package/dist/server/schemas/memory.d.ts +4 -4
- package/dist/server/schemas/memory.d.ts.map +1 -1
- package/dist/server/schemas/vectors.d.ts +2 -2
- package/dist/server/schemas/workflows.d.ts +11 -2
- package/dist/server/schemas/workflows.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +284 -142
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.d.ts +50 -7
- package/dist/server/server-adapter/index.d.ts.map +1 -1
- package/dist/server/server-adapter/index.js +167 -26
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/redact.d.ts +26 -0
- package/dist/server/server-adapter/redact.d.ts.map +1 -0
- package/dist/server/server-adapter/routes/index.d.ts +11 -2
- package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/mcp.d.ts +9 -0
- package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -0
- package/dist/server/server-adapter/routes/route-builder.d.ts +3 -3
- package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -1
- package/package.json +13 -3
- package/dist/chunk-4JMHKKV3.cjs.map +0 -1
- package/dist/chunk-65Q7HO3Q.cjs.map +0 -1
- package/dist/chunk-6KNI7VIX.js.map +0 -1
- package/dist/chunk-CBDUTSTI.js.map +0 -1
- package/dist/chunk-EI2GXZE2.js +0 -23497
- package/dist/chunk-EI2GXZE2.js.map +0 -1
- package/dist/chunk-FCHN5M25.js.map +0 -1
- package/dist/chunk-MH3A7RDQ.cjs.map +0 -1
- package/dist/chunk-P6BEEW5J.cjs +0 -23539
- package/dist/chunk-P6BEEW5J.cjs.map +0 -1
- package/dist/chunk-PDVJ2TTM.cjs.map +0 -1
- package/dist/chunk-R6ZTXNN2.cjs.map +0 -1
- package/dist/chunk-RCCWKKI3.js.map +0 -1
- package/dist/chunk-UCRV7PD3.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunk2NW6POYK_cjs = require('./chunk-2NW6POYK.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkH2RMXG2Q_cjs = require('./chunk-H2RMXG2Q.cjs');
|
|
5
5
|
var chunkV5WWQN7P_cjs = require('./chunk-V5WWQN7P.cjs');
|
|
6
6
|
var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
|
|
7
7
|
var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
|
|
@@ -195,7 +195,7 @@ async function listScoresBySpan({
|
|
|
195
195
|
return chunkV5WWQN7P_cjs.handleError(error, "Error getting scores by span");
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
|
-
var GET_TRACES_PAGINATED_ROUTE =
|
|
198
|
+
var GET_TRACES_PAGINATED_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
|
|
199
199
|
method: "GET",
|
|
200
200
|
path: "/api/observability/traces",
|
|
201
201
|
responseType: "json",
|
|
@@ -252,7 +252,7 @@ var GET_TRACES_PAGINATED_ROUTE = chunkSAQSK4AG_cjs.createRoute({
|
|
|
252
252
|
}
|
|
253
253
|
}
|
|
254
254
|
});
|
|
255
|
-
var GET_TRACE_ROUTE =
|
|
255
|
+
var GET_TRACE_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
|
|
256
256
|
method: "GET",
|
|
257
257
|
path: "/api/observability/traces/:traceId",
|
|
258
258
|
responseType: "json",
|
|
@@ -280,7 +280,7 @@ var GET_TRACE_ROUTE = chunkSAQSK4AG_cjs.createRoute({
|
|
|
280
280
|
}
|
|
281
281
|
}
|
|
282
282
|
});
|
|
283
|
-
var SCORE_TRACES_ROUTE =
|
|
283
|
+
var SCORE_TRACES_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
|
|
284
284
|
method: "POST",
|
|
285
285
|
path: "/api/observability/traces/score",
|
|
286
286
|
responseType: "json",
|
|
@@ -324,7 +324,7 @@ var SCORE_TRACES_ROUTE = chunkSAQSK4AG_cjs.createRoute({
|
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
});
|
|
327
|
-
var LIST_SCORES_BY_SPAN_ROUTE =
|
|
327
|
+
var LIST_SCORES_BY_SPAN_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
|
|
328
328
|
method: "GET",
|
|
329
329
|
path: "/api/observability/traces/:traceId/:spanId/scores",
|
|
330
330
|
responseType: "json",
|
|
@@ -364,5 +364,5 @@ exports.getTracesPaginatedHandler = getTracesPaginatedHandler;
|
|
|
364
364
|
exports.listScoresBySpan = listScoresBySpan;
|
|
365
365
|
exports.observability_exports = observability_exports;
|
|
366
366
|
exports.scoreTracesHandler = scoreTracesHandler;
|
|
367
|
-
//# sourceMappingURL=chunk-
|
|
368
|
-
//# sourceMappingURL=chunk-
|
|
367
|
+
//# sourceMappingURL=chunk-TT25WHVT.cjs.map
|
|
368
|
+
//# sourceMappingURL=chunk-TT25WHVT.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/observability.ts","../src/server/schemas/observability.ts"],"names":["__export","z","paginationInfoSchema","createPagePaginationSchema","HTTPException","handleError","scoreTraces","createRoute"],"mappings":"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","file":"chunk-QVHQZUGJ.cjs","sourcesContent":["import { scoreTraces } from '@mastra/core/evals/scoreTraces';\nimport type { TracesPaginatedArg, StoragePagination } from '@mastra/core/storage';\nimport z from 'zod';\nimport { HTTPException } from '../http-exception';\nimport {\n getAITracesPaginatedResponseSchema,\n getAITraceResponseSchema,\n scoreTracesBodySchema,\n scoreTracesResponseSchema,\n listScoresBySpanResponseSchema,\n traceIdPathParams,\n traceSpanPathParams,\n listScoresBySpanQuerySchema,\n} from '../schemas/observability';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\nimport { handleError } from './error';\n\ninterface ObservabilityContext extends Context {\n traceId?: string;\n pagination?: TracesPaginatedArg['pagination'];\n filters?: TracesPaginatedArg['filters'];\n}\n\ninterface ScoreTracesContext extends Context {\n // scorer.id\n scorerName?: string;\n targets?: Array<{\n traceId: string;\n spanId?: string;\n }>;\n}\n\n/**\n * Get a complete trace by trace ID\n * Returns all spans in the trace with their parent-child relationships\n */\nexport async function getTraceHandler({ mastra, traceId }: ObservabilityContext & { traceId: string }) {\n try {\n if (!traceId) {\n throw new HTTPException(400, { message: 'Trace ID is required' });\n }\n\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n const trace = await storage.getTrace(traceId);\n\n if (!trace) {\n throw new HTTPException(404, { message: `Trace with ID '${traceId}' not found` });\n }\n\n return trace;\n } catch (error) {\n handleError(error, 'Error getting trace');\n }\n}\n\n/**\n * Get paginated traces with filtering and pagination\n * Returns only root spans (parent spans) for pagination, not child spans\n */\nexport async function getTracesPaginatedHandler({ mastra, pagination, filters }: ObservabilityContext) {\n try {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n if (pagination?.page && pagination.page < 0) {\n throw new HTTPException(400, { message: 'Page must be a non-negative integer' });\n }\n\n if (pagination?.perPage && pagination.perPage < 0) {\n throw new HTTPException(400, { message: 'Per page must be a non-negative integer' });\n }\n\n if (pagination?.dateRange) {\n const { start, end } = pagination.dateRange;\n\n if (start && !(start instanceof Date)) {\n throw new HTTPException(400, { message: 'Invalid date format in date range' });\n }\n\n if (end && !(end instanceof Date)) {\n throw new HTTPException(400, { message: 'Invalid date format in date range' });\n }\n }\n\n return storage.getTracesPaginated({\n pagination,\n filters,\n });\n } catch (error) {\n handleError(error, 'Error getting traces paginated');\n }\n}\n\n/**\n * Score traces using a specified scorer\n * Fire-and-forget approach - returns immediately while scoring runs in background\n */\nexport async function scoreTracesHandler({ mastra, scorerName, targets }: ScoreTracesContext) {\n try {\n if (!scorerName) {\n throw new HTTPException(400, { message: 'Scorer ID is required' });\n }\n\n if (!targets || targets.length === 0) {\n throw new HTTPException(400, { message: 'At least one target is required' });\n }\n\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n const scorer = mastra.getScorerById(scorerName);\n if (!scorer) {\n throw new HTTPException(404, { message: `Scorer '${scorerName}' not found` });\n }\n\n const logger = mastra.getLogger();\n\n scoreTraces({\n scorerId: scorer.config.id || scorer.config.name,\n targets,\n mastra,\n }).catch(error => {\n logger?.error(`Background trace scoring failed: ${error.message}`, error);\n });\n\n // Return immediate response\n return {\n status: 'success',\n message: `Scoring started for ${targets.length} ${targets.length === 1 ? 'trace' : 'traces'}`,\n traceCount: targets.length,\n };\n } catch (error) {\n handleError(error, 'Error processing trace scoring');\n }\n}\n\nexport async function listScoresBySpan({\n mastra,\n traceId,\n spanId,\n page,\n perPage,\n}: Context & {\n traceId: string;\n spanId: string;\n page: StoragePagination['page'];\n perPage: StoragePagination['perPage'];\n}) {\n try {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n if (!traceId || !spanId) {\n throw new HTTPException(400, { message: 'Trace ID and span ID are required' });\n }\n\n return await storage.listScoresBySpan({ traceId, spanId, pagination: { page, perPage } });\n } catch (error) {\n return handleError(error, 'Error getting scores by span');\n }\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const GET_TRACES_PAGINATED_ROUTE = createRoute({\n method: 'GET',\n path: '/api/observability/traces',\n responseType: 'json',\n queryParamSchema: z.object({\n page: z.coerce.number().optional().default(0),\n perPage: z.coerce.number().optional().default(10),\n name: z.string().optional(),\n spanType: z.string().optional(),\n dateRange: z.string().optional(),\n entityId: z.string().optional(),\n entityType: z.string().optional(),\n }),\n responseSchema: getAITracesPaginatedResponseSchema,\n summary: 'Get AI traces',\n description:\n 'Returns a paginated list of AI execution traces with optional filtering by name, type, date range, and entity',\n tags: ['Observability'],\n handler: async ({ mastra, ...params }) => {\n try {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n const { page, perPage, name, spanType, dateRange, entityId, entityType } = params;\n\n // Parse and convert dateRange to Date objects\n const rawDateRange = dateRange ? JSON.parse(dateRange) : undefined;\n const pagination = {\n page,\n perPage,\n dateRange: rawDateRange\n ? {\n start: rawDateRange.start ? new Date(rawDateRange.start) : undefined,\n end: rawDateRange.end ? new Date(rawDateRange.end) : undefined,\n }\n : undefined,\n };\n\n const filters = Object.fromEntries(\n Object.entries({ name, spanType, entityId, entityType }).filter(([_, v]) => v !== undefined),\n );\n\n if (pagination?.page && pagination.page < 0) {\n throw new HTTPException(400, { message: 'Page must be a non-negative integer' });\n }\n\n if (pagination?.perPage && pagination.perPage < 0) {\n throw new HTTPException(400, { message: 'Per page must be a non-negative integer' });\n }\n\n if (pagination?.dateRange) {\n const { start, end } = pagination.dateRange;\n\n if (start && !(start instanceof Date)) {\n throw new HTTPException(400, { message: 'Invalid date format in date range' });\n }\n\n if (end && !(end instanceof Date)) {\n throw new HTTPException(400, { message: 'Invalid date format in date range' });\n }\n }\n\n return storage.getTracesPaginated({ pagination, filters });\n } catch (error) {\n handleError(error, 'Error getting traces paginated');\n }\n },\n});\n\nexport const GET_TRACE_ROUTE = createRoute({\n method: 'GET',\n path: '/api/observability/traces/:traceId',\n responseType: 'json',\n pathParamSchema: traceIdPathParams,\n responseSchema: getAITraceResponseSchema,\n summary: 'Get AI trace by ID',\n description: 'Returns a complete AI trace with all spans by trace ID',\n tags: ['Observability'],\n handler: async ({ mastra, traceId }) => {\n try {\n if (!traceId) {\n throw new HTTPException(400, { message: 'Trace ID is required' });\n }\n\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n const trace = await storage.getTrace(traceId);\n\n if (!trace) {\n throw new HTTPException(404, { message: `Trace with ID '${traceId}' not found` });\n }\n\n return trace;\n } catch (error) {\n handleError(error, 'Error getting trace');\n }\n },\n});\n\nexport const SCORE_TRACES_ROUTE = createRoute({\n method: 'POST',\n path: '/api/observability/traces/score',\n responseType: 'json',\n bodySchema: scoreTracesBodySchema,\n responseSchema: scoreTracesResponseSchema,\n summary: 'Score traces',\n description: 'Scores one or more traces using a specified scorer (fire-and-forget)',\n tags: ['Observability'],\n handler: async ({ mastra, ...params }) => {\n try {\n const { scorerName, targets } = params;\n\n if (!scorerName) {\n throw new HTTPException(400, { message: 'Scorer ID is required' });\n }\n\n if (!targets || targets.length === 0) {\n throw new HTTPException(400, { message: 'At least one target is required' });\n }\n\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n const scorer = mastra.getScorerById(scorerName);\n if (!scorer) {\n throw new HTTPException(404, { message: `Scorer '${scorerName}' not found` });\n }\n\n const logger = mastra.getLogger();\n\n scoreTraces({\n scorerId: scorer.config.id || scorer.config.name,\n targets,\n mastra,\n }).catch(error => {\n logger?.error(`Background trace scoring failed: ${error.message}`, error);\n });\n\n return {\n status: 'success',\n message: `Scoring started for ${targets.length} ${targets.length === 1 ? 'trace' : 'traces'}`,\n traceCount: targets.length,\n };\n } catch (error) {\n handleError(error, 'Error processing trace scoring');\n }\n },\n});\n\nexport const LIST_SCORES_BY_SPAN_ROUTE = createRoute({\n method: 'GET',\n path: '/api/observability/traces/:traceId/:spanId/scores',\n responseType: 'json',\n pathParamSchema: traceSpanPathParams,\n queryParamSchema: listScoresBySpanQuerySchema,\n responseSchema: listScoresBySpanResponseSchema,\n summary: 'List scores by span',\n description: 'Returns all scores for a specific span within a trace',\n tags: ['Observability'],\n handler: async ({ mastra, traceId, spanId, ...params }) => {\n try {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n if (!traceId || !spanId) {\n throw new HTTPException(400, { message: 'Trace ID and span ID are required' });\n }\n\n const { page, perPage } = params;\n return await storage.listScoresBySpan({\n traceId,\n spanId,\n pagination: { page: page ?? 0, perPage: perPage ?? 10 },\n });\n } catch (error) {\n return handleError(error, 'Error getting scores by span');\n }\n },\n});\n","import z from 'zod';\nimport { createPagePaginationSchema, paginationInfoSchema } from './common';\n\n/**\n * Schema for AI span types\n * Defines all possible span types in the observability system\n */\nexport const aiSpanTypeSchema = z.enum([\n 'agent_run',\n 'generic',\n 'model_generation',\n 'model_step',\n 'model_chunk',\n 'mcp_tool_call',\n 'processor_run',\n 'tool_call',\n 'workflow_run',\n 'workflow_step',\n 'workflow_conditional',\n 'workflow_conditional_eval',\n 'workflow_parallel',\n 'workflow_loop',\n 'workflow_sleep',\n 'workflow_wait_event',\n]);\n\n/**\n * Schema for AI span record\n * Represents a single trace span with all its metadata\n */\nexport const aiSpanRecordSchema = z.object({\n traceId: z.string(),\n spanId: z.string(),\n parentSpanId: z.string().nullable(),\n name: z.string(),\n scope: z.record(z.string(), z.any()).nullable(),\n spanType: aiSpanTypeSchema,\n attributes: z.record(z.string(), z.any()).nullable(),\n metadata: z.record(z.string(), z.any()).nullable(),\n links: z.any(),\n startedAt: z.coerce.date(),\n endedAt: z.coerce.date().nullable(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date().nullable(),\n input: z.any(),\n output: z.any(),\n error: z.any(),\n isEvent: z.boolean(),\n});\n\n/**\n * Schema for paginated AI traces response\n * Returns pagination info and array of trace spans\n */\nexport const getAITracesPaginatedResponseSchema = z.object({\n pagination: paginationInfoSchema,\n spans: z.array(aiSpanRecordSchema),\n});\n\n// Path parameter schemas\nexport const traceIdPathParams = z.object({\n traceId: z.string().describe('Unique identifier for the trace'),\n});\n\nexport const traceSpanPathParams = traceIdPathParams.extend({\n spanId: z.string().describe('Unique identifier for the span'),\n});\n\n// Body schema for scoring traces\nexport const scoreTracesBodySchema = z.object({\n scorerName: z.string(),\n targets: z.array(\n z.object({\n traceId: z.string(),\n spanId: z.string().optional(),\n }),\n ),\n});\n\n// Response schemas\nexport const getAITraceResponseSchema = z.object({\n spans: z.array(aiSpanRecordSchema),\n});\n\nexport const scoreTracesResponseSchema = z.object({\n status: z.string(),\n message: z.string(),\n traceCount: z.number(),\n});\n\nexport const listScoresBySpanResponseSchema = z.object({\n pagination: paginationInfoSchema,\n scores: z.array(z.unknown()),\n});\n\n// Query schema for list scores by span\nexport const listScoresBySpanQuerySchema = createPagePaginationSchema(10);\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/observability.ts","../src/server/schemas/observability.ts"],"names":["__export","z","paginationInfoSchema","createPagePaginationSchema","HTTPException","handleError","scoreTraces","createRoute"],"mappings":"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","file":"chunk-TT25WHVT.cjs","sourcesContent":["import { scoreTraces } from '@mastra/core/evals/scoreTraces';\nimport type { TracesPaginatedArg, StoragePagination } from '@mastra/core/storage';\nimport z from 'zod';\nimport { HTTPException } from '../http-exception';\nimport {\n getAITracesPaginatedResponseSchema,\n getAITraceResponseSchema,\n scoreTracesBodySchema,\n scoreTracesResponseSchema,\n listScoresBySpanResponseSchema,\n traceIdPathParams,\n traceSpanPathParams,\n listScoresBySpanQuerySchema,\n} from '../schemas/observability';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\nimport { handleError } from './error';\n\ninterface ObservabilityContext extends Context {\n traceId?: string;\n pagination?: TracesPaginatedArg['pagination'];\n filters?: TracesPaginatedArg['filters'];\n}\n\ninterface ScoreTracesContext extends Context {\n // scorer.id\n scorerName?: string;\n targets?: Array<{\n traceId: string;\n spanId?: string;\n }>;\n}\n\n/**\n * Get a complete trace by trace ID\n * Returns all spans in the trace with their parent-child relationships\n */\nexport async function getTraceHandler({ mastra, traceId }: ObservabilityContext & { traceId: string }) {\n try {\n if (!traceId) {\n throw new HTTPException(400, { message: 'Trace ID is required' });\n }\n\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n const trace = await storage.getTrace(traceId);\n\n if (!trace) {\n throw new HTTPException(404, { message: `Trace with ID '${traceId}' not found` });\n }\n\n return trace;\n } catch (error) {\n handleError(error, 'Error getting trace');\n }\n}\n\n/**\n * Get paginated traces with filtering and pagination\n * Returns only root spans (parent spans) for pagination, not child spans\n */\nexport async function getTracesPaginatedHandler({ mastra, pagination, filters }: ObservabilityContext) {\n try {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n if (pagination?.page && pagination.page < 0) {\n throw new HTTPException(400, { message: 'Page must be a non-negative integer' });\n }\n\n if (pagination?.perPage && pagination.perPage < 0) {\n throw new HTTPException(400, { message: 'Per page must be a non-negative integer' });\n }\n\n if (pagination?.dateRange) {\n const { start, end } = pagination.dateRange;\n\n if (start && !(start instanceof Date)) {\n throw new HTTPException(400, { message: 'Invalid date format in date range' });\n }\n\n if (end && !(end instanceof Date)) {\n throw new HTTPException(400, { message: 'Invalid date format in date range' });\n }\n }\n\n return storage.getTracesPaginated({\n pagination,\n filters,\n });\n } catch (error) {\n handleError(error, 'Error getting traces paginated');\n }\n}\n\n/**\n * Score traces using a specified scorer\n * Fire-and-forget approach - returns immediately while scoring runs in background\n */\nexport async function scoreTracesHandler({ mastra, scorerName, targets }: ScoreTracesContext) {\n try {\n if (!scorerName) {\n throw new HTTPException(400, { message: 'Scorer ID is required' });\n }\n\n if (!targets || targets.length === 0) {\n throw new HTTPException(400, { message: 'At least one target is required' });\n }\n\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n const scorer = mastra.getScorerById(scorerName);\n if (!scorer) {\n throw new HTTPException(404, { message: `Scorer '${scorerName}' not found` });\n }\n\n const logger = mastra.getLogger();\n\n scoreTraces({\n scorerId: scorer.config.id || scorer.config.name,\n targets,\n mastra,\n }).catch(error => {\n logger?.error(`Background trace scoring failed: ${error.message}`, error);\n });\n\n // Return immediate response\n return {\n status: 'success',\n message: `Scoring started for ${targets.length} ${targets.length === 1 ? 'trace' : 'traces'}`,\n traceCount: targets.length,\n };\n } catch (error) {\n handleError(error, 'Error processing trace scoring');\n }\n}\n\nexport async function listScoresBySpan({\n mastra,\n traceId,\n spanId,\n page,\n perPage,\n}: Context & {\n traceId: string;\n spanId: string;\n page: StoragePagination['page'];\n perPage: StoragePagination['perPage'];\n}) {\n try {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n if (!traceId || !spanId) {\n throw new HTTPException(400, { message: 'Trace ID and span ID are required' });\n }\n\n return await storage.listScoresBySpan({ traceId, spanId, pagination: { page, perPage } });\n } catch (error) {\n return handleError(error, 'Error getting scores by span');\n }\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const GET_TRACES_PAGINATED_ROUTE = createRoute({\n method: 'GET',\n path: '/api/observability/traces',\n responseType: 'json',\n queryParamSchema: z.object({\n page: z.coerce.number().optional().default(0),\n perPage: z.coerce.number().optional().default(10),\n name: z.string().optional(),\n spanType: z.string().optional(),\n dateRange: z.string().optional(),\n entityId: z.string().optional(),\n entityType: z.string().optional(),\n }),\n responseSchema: getAITracesPaginatedResponseSchema,\n summary: 'Get AI traces',\n description:\n 'Returns a paginated list of AI execution traces with optional filtering by name, type, date range, and entity',\n tags: ['Observability'],\n handler: async ({ mastra, ...params }) => {\n try {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n const { page, perPage, name, spanType, dateRange, entityId, entityType } = params;\n\n // Parse and convert dateRange to Date objects\n const rawDateRange = dateRange ? JSON.parse(dateRange) : undefined;\n const pagination = {\n page,\n perPage,\n dateRange: rawDateRange\n ? {\n start: rawDateRange.start ? new Date(rawDateRange.start) : undefined,\n end: rawDateRange.end ? new Date(rawDateRange.end) : undefined,\n }\n : undefined,\n };\n\n const filters = Object.fromEntries(\n Object.entries({ name, spanType, entityId, entityType }).filter(([_, v]) => v !== undefined),\n );\n\n if (pagination?.page && pagination.page < 0) {\n throw new HTTPException(400, { message: 'Page must be a non-negative integer' });\n }\n\n if (pagination?.perPage && pagination.perPage < 0) {\n throw new HTTPException(400, { message: 'Per page must be a non-negative integer' });\n }\n\n if (pagination?.dateRange) {\n const { start, end } = pagination.dateRange;\n\n if (start && !(start instanceof Date)) {\n throw new HTTPException(400, { message: 'Invalid date format in date range' });\n }\n\n if (end && !(end instanceof Date)) {\n throw new HTTPException(400, { message: 'Invalid date format in date range' });\n }\n }\n\n return storage.getTracesPaginated({ pagination, filters });\n } catch (error) {\n handleError(error, 'Error getting traces paginated');\n }\n },\n});\n\nexport const GET_TRACE_ROUTE = createRoute({\n method: 'GET',\n path: '/api/observability/traces/:traceId',\n responseType: 'json',\n pathParamSchema: traceIdPathParams,\n responseSchema: getAITraceResponseSchema,\n summary: 'Get AI trace by ID',\n description: 'Returns a complete AI trace with all spans by trace ID',\n tags: ['Observability'],\n handler: async ({ mastra, traceId }) => {\n try {\n if (!traceId) {\n throw new HTTPException(400, { message: 'Trace ID is required' });\n }\n\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n const trace = await storage.getTrace(traceId);\n\n if (!trace) {\n throw new HTTPException(404, { message: `Trace with ID '${traceId}' not found` });\n }\n\n return trace;\n } catch (error) {\n handleError(error, 'Error getting trace');\n }\n },\n});\n\nexport const SCORE_TRACES_ROUTE = createRoute({\n method: 'POST',\n path: '/api/observability/traces/score',\n responseType: 'json',\n bodySchema: scoreTracesBodySchema,\n responseSchema: scoreTracesResponseSchema,\n summary: 'Score traces',\n description: 'Scores one or more traces using a specified scorer (fire-and-forget)',\n tags: ['Observability'],\n handler: async ({ mastra, ...params }) => {\n try {\n const { scorerName, targets } = params;\n\n if (!scorerName) {\n throw new HTTPException(400, { message: 'Scorer ID is required' });\n }\n\n if (!targets || targets.length === 0) {\n throw new HTTPException(400, { message: 'At least one target is required' });\n }\n\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n const scorer = mastra.getScorerById(scorerName);\n if (!scorer) {\n throw new HTTPException(404, { message: `Scorer '${scorerName}' not found` });\n }\n\n const logger = mastra.getLogger();\n\n scoreTraces({\n scorerId: scorer.config.id || scorer.config.name,\n targets,\n mastra,\n }).catch(error => {\n logger?.error(`Background trace scoring failed: ${error.message}`, error);\n });\n\n return {\n status: 'success',\n message: `Scoring started for ${targets.length} ${targets.length === 1 ? 'trace' : 'traces'}`,\n traceCount: targets.length,\n };\n } catch (error) {\n handleError(error, 'Error processing trace scoring');\n }\n },\n});\n\nexport const LIST_SCORES_BY_SPAN_ROUTE = createRoute({\n method: 'GET',\n path: '/api/observability/traces/:traceId/:spanId/scores',\n responseType: 'json',\n pathParamSchema: traceSpanPathParams,\n queryParamSchema: listScoresBySpanQuerySchema,\n responseSchema: listScoresBySpanResponseSchema,\n summary: 'List scores by span',\n description: 'Returns all scores for a specific span within a trace',\n tags: ['Observability'],\n handler: async ({ mastra, traceId, spanId, ...params }) => {\n try {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n if (!traceId || !spanId) {\n throw new HTTPException(400, { message: 'Trace ID and span ID are required' });\n }\n\n const { page, perPage } = params;\n return await storage.listScoresBySpan({\n traceId,\n spanId,\n pagination: { page: page ?? 0, perPage: perPage ?? 10 },\n });\n } catch (error) {\n return handleError(error, 'Error getting scores by span');\n }\n },\n});\n","import z from 'zod';\nimport { createPagePaginationSchema, paginationInfoSchema } from './common';\n\n/**\n * Schema for AI span types\n * Defines all possible span types in the observability system\n */\nexport const aiSpanTypeSchema = z.enum([\n 'agent_run',\n 'generic',\n 'model_generation',\n 'model_step',\n 'model_chunk',\n 'mcp_tool_call',\n 'processor_run',\n 'tool_call',\n 'workflow_run',\n 'workflow_step',\n 'workflow_conditional',\n 'workflow_conditional_eval',\n 'workflow_parallel',\n 'workflow_loop',\n 'workflow_sleep',\n 'workflow_wait_event',\n]);\n\n/**\n * Schema for AI span record\n * Represents a single trace span with all its metadata\n */\nexport const aiSpanRecordSchema = z.object({\n traceId: z.string(),\n spanId: z.string(),\n parentSpanId: z.string().nullable(),\n name: z.string(),\n scope: z.record(z.string(), z.any()).nullable(),\n spanType: aiSpanTypeSchema,\n attributes: z.record(z.string(), z.any()).nullable(),\n metadata: z.record(z.string(), z.any()).nullable(),\n links: z.any(),\n startedAt: z.coerce.date(),\n endedAt: z.coerce.date().nullable(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date().nullable(),\n input: z.any(),\n output: z.any(),\n error: z.any(),\n isEvent: z.boolean(),\n});\n\n/**\n * Schema for paginated AI traces response\n * Returns pagination info and array of trace spans\n */\nexport const getAITracesPaginatedResponseSchema = z.object({\n pagination: paginationInfoSchema,\n spans: z.array(aiSpanRecordSchema),\n});\n\n// Path parameter schemas\nexport const traceIdPathParams = z.object({\n traceId: z.string().describe('Unique identifier for the trace'),\n});\n\nexport const traceSpanPathParams = traceIdPathParams.extend({\n spanId: z.string().describe('Unique identifier for the span'),\n});\n\n// Body schema for scoring traces\nexport const scoreTracesBodySchema = z.object({\n scorerName: z.string(),\n targets: z.array(\n z.object({\n traceId: z.string(),\n spanId: z.string().optional(),\n }),\n ),\n});\n\n// Response schemas\nexport const getAITraceResponseSchema = z.object({\n spans: z.array(aiSpanRecordSchema),\n});\n\nexport const scoreTracesResponseSchema = z.object({\n status: z.string(),\n message: z.string(),\n traceCount: z.number(),\n});\n\nexport const listScoresBySpanResponseSchema = z.object({\n pagination: paginationInfoSchema,\n scores: z.array(z.unknown()),\n});\n\n// Query schema for list scores by span\nexport const listScoresBySpanQuerySchema = createPagePaginationSchema(10);\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var chunkMWQQRVQC_cjs = require('./chunk-MWQQRVQC.cjs');
|
|
4
3
|
var chunk5W4RPVTK_cjs = require('./chunk-5W4RPVTK.cjs');
|
|
5
|
-
var
|
|
4
|
+
var chunkMWQQRVQC_cjs = require('./chunk-MWQQRVQC.cjs');
|
|
5
|
+
var chunkH2RMXG2Q_cjs = require('./chunk-H2RMXG2Q.cjs');
|
|
6
6
|
var chunkV5WWQN7P_cjs = require('./chunk-V5WWQN7P.cjs');
|
|
7
7
|
var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
|
|
8
8
|
var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
|
|
@@ -20,7 +20,7 @@ chunkO7I5CWRX_cjs.__export(voice_exports, {
|
|
|
20
20
|
TRANSCRIBE_SPEECH_DEPRECATED_ROUTE: () => TRANSCRIBE_SPEECH_DEPRECATED_ROUTE,
|
|
21
21
|
TRANSCRIBE_SPEECH_ROUTE: () => TRANSCRIBE_SPEECH_ROUTE
|
|
22
22
|
});
|
|
23
|
-
var GET_SPEAKERS_ROUTE =
|
|
23
|
+
var GET_SPEAKERS_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
|
|
24
24
|
method: "GET",
|
|
25
25
|
path: "/api/agents/:agentId/voice/speakers",
|
|
26
26
|
responseType: "json",
|
|
@@ -39,17 +39,19 @@ var GET_SPEAKERS_ROUTE = chunkSAQSK4AG_cjs.createRoute({
|
|
|
39
39
|
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Agent not found" });
|
|
40
40
|
}
|
|
41
41
|
const voice = await agent.getVoice({ requestContext });
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
const speakers = await Promise.resolve().then(() => voice.getSpeakers()).catch((err) => {
|
|
43
|
+
if (err instanceof error.MastraError) {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
throw err;
|
|
47
|
+
});
|
|
46
48
|
return speakers;
|
|
47
49
|
} catch (error) {
|
|
48
50
|
return chunkV5WWQN7P_cjs.handleError(error, "Error getting speakers");
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
53
|
});
|
|
52
|
-
var GET_SPEAKERS_DEPRECATED_ROUTE =
|
|
54
|
+
var GET_SPEAKERS_DEPRECATED_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
|
|
53
55
|
method: "GET",
|
|
54
56
|
path: "/api/agents/:agentId/speakers",
|
|
55
57
|
responseType: "json",
|
|
@@ -60,7 +62,7 @@ var GET_SPEAKERS_DEPRECATED_ROUTE = chunkSAQSK4AG_cjs.createRoute({
|
|
|
60
62
|
tags: ["Agents", "Voice"],
|
|
61
63
|
handler: GET_SPEAKERS_ROUTE.handler
|
|
62
64
|
});
|
|
63
|
-
var GENERATE_SPEECH_ROUTE =
|
|
65
|
+
var GENERATE_SPEECH_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
|
|
64
66
|
method: "POST",
|
|
65
67
|
path: "/api/agents/:agentId/voice/speak",
|
|
66
68
|
responseType: "stream",
|
|
@@ -99,7 +101,7 @@ var GENERATE_SPEECH_ROUTE = chunkSAQSK4AG_cjs.createRoute({
|
|
|
99
101
|
}
|
|
100
102
|
}
|
|
101
103
|
});
|
|
102
|
-
var GENERATE_SPEECH_DEPRECATED_ROUTE =
|
|
104
|
+
var GENERATE_SPEECH_DEPRECATED_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
|
|
103
105
|
method: "POST",
|
|
104
106
|
path: "/api/agents/:agentId/speak",
|
|
105
107
|
responseType: "stream",
|
|
@@ -111,7 +113,7 @@ var GENERATE_SPEECH_DEPRECATED_ROUTE = chunkSAQSK4AG_cjs.createRoute({
|
|
|
111
113
|
tags: ["Agents", "Voice"],
|
|
112
114
|
handler: GENERATE_SPEECH_ROUTE.handler
|
|
113
115
|
});
|
|
114
|
-
var TRANSCRIBE_SPEECH_ROUTE =
|
|
116
|
+
var TRANSCRIBE_SPEECH_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
|
|
115
117
|
method: "POST",
|
|
116
118
|
path: "/api/agents/:agentId/voice/listen",
|
|
117
119
|
responseType: "json",
|
|
@@ -147,7 +149,7 @@ var TRANSCRIBE_SPEECH_ROUTE = chunkSAQSK4AG_cjs.createRoute({
|
|
|
147
149
|
}
|
|
148
150
|
}
|
|
149
151
|
});
|
|
150
|
-
var TRANSCRIBE_SPEECH_DEPRECATED_ROUTE =
|
|
152
|
+
var TRANSCRIBE_SPEECH_DEPRECATED_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
|
|
151
153
|
method: "POST",
|
|
152
154
|
path: "/api/agents/:agentId/listen",
|
|
153
155
|
responseType: "json",
|
|
@@ -159,7 +161,7 @@ var TRANSCRIBE_SPEECH_DEPRECATED_ROUTE = chunkSAQSK4AG_cjs.createRoute({
|
|
|
159
161
|
tags: ["Agents", "Voice"],
|
|
160
162
|
handler: TRANSCRIBE_SPEECH_ROUTE.handler
|
|
161
163
|
});
|
|
162
|
-
var GET_LISTENER_ROUTE =
|
|
164
|
+
var GET_LISTENER_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
|
|
163
165
|
method: "GET",
|
|
164
166
|
path: "/api/agents/:agentId/voice/listener",
|
|
165
167
|
responseType: "json",
|
|
@@ -178,10 +180,12 @@ var GET_LISTENER_ROUTE = chunkSAQSK4AG_cjs.createRoute({
|
|
|
178
180
|
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Agent not found" });
|
|
179
181
|
}
|
|
180
182
|
const voice = await agent.getVoice({ requestContext });
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
183
|
+
const listeners = await Promise.resolve().then(() => voice.getListener()).catch((err) => {
|
|
184
|
+
if (err instanceof error.MastraError) {
|
|
185
|
+
return { enabled: false };
|
|
186
|
+
}
|
|
187
|
+
throw err;
|
|
188
|
+
});
|
|
185
189
|
return listeners;
|
|
186
190
|
} catch (error) {
|
|
187
191
|
return chunkV5WWQN7P_cjs.handleError(error, "Error getting listeners");
|
|
@@ -197,5 +201,5 @@ exports.GET_SPEAKERS_ROUTE = GET_SPEAKERS_ROUTE;
|
|
|
197
201
|
exports.TRANSCRIBE_SPEECH_DEPRECATED_ROUTE = TRANSCRIBE_SPEECH_DEPRECATED_ROUTE;
|
|
198
202
|
exports.TRANSCRIBE_SPEECH_ROUTE = TRANSCRIBE_SPEECH_ROUTE;
|
|
199
203
|
exports.voice_exports = voice_exports;
|
|
200
|
-
//# sourceMappingURL=chunk-
|
|
201
|
-
//# sourceMappingURL=chunk-
|
|
204
|
+
//# sourceMappingURL=chunk-UPY7WWRA.cjs.map
|
|
205
|
+
//# sourceMappingURL=chunk-UPY7WWRA.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/voice.ts"],"names":["__export","createRoute","agentIdPathParams","voiceSpeakersResponseSchema","HTTPException","MastraError","handleError","generateSpeechBodySchema","speakResponseSchema","validateBody","transcribeSpeechBodySchema","transcribeSpeechResponseSchema","Readable","getListenerResponseSchema"],"mappings":"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","file":"chunk-UPY7WWRA.cjs","sourcesContent":["import { Readable } from 'node:stream';\nimport { MastraError } from '@mastra/core/error';\nimport { HTTPException } from '../http-exception';\nimport {\n agentIdPathParams,\n voiceSpeakersResponseSchema,\n generateSpeechBodySchema,\n speakResponseSchema,\n transcribeSpeechBodySchema,\n transcribeSpeechResponseSchema,\n getListenerResponseSchema,\n} from '../schemas/agents';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\n// ============================================================================\n// Route Objects\n// ============================================================================\n\nexport const GET_SPEAKERS_ROUTE = createRoute({\n method: 'GET',\n path: '/api/agents/:agentId/voice/speakers',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n responseSchema: voiceSpeakersResponseSchema,\n summary: 'Get voice speakers',\n description: 'Returns available voice speakers for the specified agent',\n tags: ['Agents', 'Voice'],\n handler: async ({ mastra, agentId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n const agent = mastra.getAgentById(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice({ requestContext });\n\n const speakers = await Promise.resolve()\n .then(() => voice.getSpeakers())\n .catch(err => {\n if (err instanceof MastraError) {\n // No voice provider configured, return empty array\n return [];\n }\n throw err;\n });\n\n return speakers;\n } catch (error) {\n return handleError(error, 'Error getting speakers');\n }\n },\n});\n\nexport const GET_SPEAKERS_DEPRECATED_ROUTE = createRoute({\n method: 'GET',\n path: '/api/agents/:agentId/speakers',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n responseSchema: voiceSpeakersResponseSchema,\n summary: 'Get available speakers for an agent',\n description: '[DEPRECATED] Use /api/agents/:agentId/voice/speakers instead. Get available speakers for an agent',\n tags: ['Agents', 'Voice'],\n handler: GET_SPEAKERS_ROUTE.handler,\n});\n\nexport const GENERATE_SPEECH_ROUTE = createRoute({\n method: 'POST',\n path: '/api/agents/:agentId/voice/speak',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: generateSpeechBodySchema,\n responseSchema: speakResponseSchema,\n summary: 'Generate speech',\n description: 'Generates speech audio from text using the agent voice configuration',\n tags: ['Agents', 'Voice'],\n handler: async ({ mastra, agentId, text, speakerId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n validateBody({ text });\n\n const agent = mastra.getAgentById(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice({ requestContext });\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const audioStream = await Promise.resolve()\n .then(() => voice.speak(text!, { speaker: speakerId! }))\n .catch(err => {\n if (err instanceof MastraError) {\n throw new HTTPException(400, { message: err.message });\n }\n\n throw err;\n });\n\n if (!audioStream) {\n throw new HTTPException(500, { message: 'Failed to generate speech' });\n }\n\n return audioStream as unknown as ReadableStream<any>;\n } catch (error) {\n return handleError(error, 'Error generating speech');\n }\n },\n});\n\nexport const GENERATE_SPEECH_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/api/agents/:agentId/speak',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: generateSpeechBodySchema,\n responseSchema: speakResponseSchema,\n summary: 'Convert text to speech',\n description:\n \"[DEPRECATED] Use /api/agents/:agentId/voice/speak instead. Convert text to speech using the agent's voice provider\",\n tags: ['Agents', 'Voice'],\n handler: GENERATE_SPEECH_ROUTE.handler,\n});\n\nexport const TRANSCRIBE_SPEECH_ROUTE = createRoute({\n method: 'POST',\n path: '/api/agents/:agentId/voice/listen',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: transcribeSpeechBodySchema,\n responseSchema: transcribeSpeechResponseSchema,\n summary: 'Transcribe speech',\n description: 'Transcribes speech audio to text using the agent voice configuration',\n tags: ['Agents', 'Voice'],\n handler: async ({ mastra, agentId, audioData, options, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n if (!audioData) {\n throw new HTTPException(400, { message: 'Audio data is required' });\n }\n\n const agent = mastra.getAgentById(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice({ requestContext });\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const audioStream = new Readable();\n audioStream.push(audioData);\n audioStream.push(null);\n\n const text = await voice.listen(audioStream, options);\n return { text: text as string };\n } catch (error) {\n return handleError(error, 'Error transcribing speech');\n }\n },\n});\n\nexport const TRANSCRIBE_SPEECH_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/api/agents/:agentId/listen',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: transcribeSpeechBodySchema,\n responseSchema: transcribeSpeechResponseSchema,\n summary: 'Convert speech to text',\n description:\n \"[DEPRECATED] Use /api/agents/:agentId/voice/listen instead. Convert speech to text using the agent's voice provider. Additional provider-specific options can be passed as query parameters.\",\n tags: ['Agents', 'Voice'],\n handler: TRANSCRIBE_SPEECH_ROUTE.handler,\n});\n\nexport const GET_LISTENER_ROUTE = createRoute({\n method: 'GET',\n path: '/api/agents/:agentId/voice/listener',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n responseSchema: getListenerResponseSchema,\n summary: 'Get voice listener',\n description: 'Returns the voice listener configuration for the agent',\n tags: ['Agents', 'Voice'],\n handler: async ({ mastra, agentId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n const agent = mastra.getAgentById(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice({ requestContext });\n\n const listeners = await Promise.resolve()\n .then(() => voice.getListener())\n .catch(err => {\n if (err instanceof MastraError) {\n // No voice provider configured\n return { enabled: false };\n }\n throw err;\n });\n\n return listeners;\n } catch (error) {\n return handleError(error, 'Error getting listeners');\n }\n },\n});\n"]}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { createRoute } from './chunk-SXVANU23.js';
|
|
2
|
+
import { HTTPException } from './chunk-6QWQZI4Q.js';
|
|
3
|
+
import { __export } from './chunk-PR4QN5HX.js';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
|
|
6
|
+
// src/server/handlers/mcp.ts
|
|
7
|
+
var mcp_exports = {};
|
|
8
|
+
__export(mcp_exports, {
|
|
9
|
+
EXECUTE_MCP_SERVER_TOOL_ROUTE: () => EXECUTE_MCP_SERVER_TOOL_ROUTE,
|
|
10
|
+
GET_MCP_SERVER_DETAIL_ROUTE: () => GET_MCP_SERVER_DETAIL_ROUTE,
|
|
11
|
+
GET_MCP_SERVER_TOOL_DETAIL_ROUTE: () => GET_MCP_SERVER_TOOL_DETAIL_ROUTE,
|
|
12
|
+
LIST_MCP_SERVERS_ROUTE: () => LIST_MCP_SERVERS_ROUTE,
|
|
13
|
+
LIST_MCP_SERVER_TOOLS_ROUTE: () => LIST_MCP_SERVER_TOOLS_ROUTE,
|
|
14
|
+
MCP_HTTP_TRANSPORT_ROUTE: () => MCP_HTTP_TRANSPORT_ROUTE,
|
|
15
|
+
MCP_SSE_MESSAGES_ROUTE: () => MCP_SSE_MESSAGES_ROUTE,
|
|
16
|
+
MCP_SSE_TRANSPORT_ROUTE: () => MCP_SSE_TRANSPORT_ROUTE
|
|
17
|
+
});
|
|
18
|
+
var mcpServerIdPathParams = z.object({
|
|
19
|
+
serverId: z.string().describe("MCP server ID")
|
|
20
|
+
});
|
|
21
|
+
var mcpServerDetailPathParams = z.object({
|
|
22
|
+
id: z.string().describe("MCP server ID")
|
|
23
|
+
});
|
|
24
|
+
var mcpServerToolPathParams = z.object({
|
|
25
|
+
serverId: z.string().describe("MCP server ID"),
|
|
26
|
+
toolId: z.string().describe("Tool ID")
|
|
27
|
+
});
|
|
28
|
+
var executeToolBodySchema = z.object({
|
|
29
|
+
data: z.unknown().optional()
|
|
30
|
+
});
|
|
31
|
+
var listMcpServersQuerySchema = z.object({
|
|
32
|
+
limit: z.coerce.number().optional(),
|
|
33
|
+
offset: z.coerce.number().optional()
|
|
34
|
+
});
|
|
35
|
+
var getMcpServerDetailQuerySchema = z.object({
|
|
36
|
+
version: z.string().optional()
|
|
37
|
+
});
|
|
38
|
+
var versionDetailSchema = z.object({
|
|
39
|
+
version: z.string(),
|
|
40
|
+
release_date: z.string(),
|
|
41
|
+
is_latest: z.boolean()
|
|
42
|
+
});
|
|
43
|
+
var serverInfoSchema = z.object({
|
|
44
|
+
id: z.string(),
|
|
45
|
+
name: z.string(),
|
|
46
|
+
version_detail: versionDetailSchema
|
|
47
|
+
});
|
|
48
|
+
var listMcpServersResponseSchema = z.object({
|
|
49
|
+
servers: z.array(serverInfoSchema),
|
|
50
|
+
total_count: z.number(),
|
|
51
|
+
next: z.string().nullable()
|
|
52
|
+
});
|
|
53
|
+
var serverDetailSchema = z.object({
|
|
54
|
+
id: z.string(),
|
|
55
|
+
name: z.string(),
|
|
56
|
+
description: z.string().optional(),
|
|
57
|
+
version_detail: versionDetailSchema,
|
|
58
|
+
package_canonical: z.string().optional(),
|
|
59
|
+
packages: z.array(z.unknown()).optional(),
|
|
60
|
+
remotes: z.array(z.unknown()).optional()
|
|
61
|
+
});
|
|
62
|
+
var mcpToolInfoSchema = z.object({
|
|
63
|
+
name: z.string(),
|
|
64
|
+
description: z.string().optional(),
|
|
65
|
+
inputSchema: z.unknown(),
|
|
66
|
+
outputSchema: z.unknown().optional(),
|
|
67
|
+
toolType: z.string().optional()
|
|
68
|
+
});
|
|
69
|
+
var listMcpServerToolsResponseSchema = z.object({
|
|
70
|
+
tools: z.array(mcpToolInfoSchema)
|
|
71
|
+
});
|
|
72
|
+
var executeToolResponseSchema = z.object({
|
|
73
|
+
result: z.unknown()
|
|
74
|
+
});
|
|
75
|
+
z.object({
|
|
76
|
+
jsonrpc: z.literal("2.0"),
|
|
77
|
+
error: z.object({
|
|
78
|
+
code: z.number(),
|
|
79
|
+
message: z.string()
|
|
80
|
+
}),
|
|
81
|
+
id: z.null()
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
// src/server/handlers/mcp.ts
|
|
85
|
+
var LIST_MCP_SERVERS_ROUTE = createRoute({
|
|
86
|
+
method: "GET",
|
|
87
|
+
path: "/api/mcp/v0/servers",
|
|
88
|
+
responseType: "json",
|
|
89
|
+
queryParamSchema: listMcpServersQuerySchema,
|
|
90
|
+
responseSchema: listMcpServersResponseSchema,
|
|
91
|
+
summary: "List MCP servers",
|
|
92
|
+
description: "Returns a list of registered MCP servers with pagination support",
|
|
93
|
+
tags: ["MCP"],
|
|
94
|
+
handler: async ({ mastra, limit, offset }) => {
|
|
95
|
+
if (!mastra || typeof mastra.listMCPServers !== "function") {
|
|
96
|
+
throw new HTTPException(500, { message: "Mastra instance or listMCPServers method not available" });
|
|
97
|
+
}
|
|
98
|
+
const servers = mastra.listMCPServers();
|
|
99
|
+
if (!servers) {
|
|
100
|
+
return { servers: [], total_count: 0, next: null };
|
|
101
|
+
}
|
|
102
|
+
const serverList = Object.values(servers);
|
|
103
|
+
const totalCount = serverList.length;
|
|
104
|
+
const actualOffset = offset ?? 0;
|
|
105
|
+
let paginatedServers = serverList;
|
|
106
|
+
let nextUrl = null;
|
|
107
|
+
if (limit !== void 0) {
|
|
108
|
+
paginatedServers = serverList.slice(actualOffset, actualOffset + limit);
|
|
109
|
+
if (actualOffset + limit < totalCount) {
|
|
110
|
+
nextUrl = `/api/mcp/v0/servers?limit=${limit}&offset=${actualOffset + limit}`;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const serverInfoList = paginatedServers.map((server) => server.getServerInfo());
|
|
114
|
+
return {
|
|
115
|
+
servers: serverInfoList,
|
|
116
|
+
total_count: totalCount,
|
|
117
|
+
next: nextUrl
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
var GET_MCP_SERVER_DETAIL_ROUTE = createRoute({
|
|
122
|
+
method: "GET",
|
|
123
|
+
path: "/api/mcp/v0/servers/:id",
|
|
124
|
+
responseType: "json",
|
|
125
|
+
pathParamSchema: mcpServerDetailPathParams,
|
|
126
|
+
queryParamSchema: getMcpServerDetailQuerySchema,
|
|
127
|
+
responseSchema: serverDetailSchema,
|
|
128
|
+
summary: "Get MCP server details",
|
|
129
|
+
description: "Returns detailed information about a specific MCP server",
|
|
130
|
+
tags: ["MCP"],
|
|
131
|
+
handler: async ({ mastra, id, version }) => {
|
|
132
|
+
if (!mastra || typeof mastra.getMCPServerById !== "function") {
|
|
133
|
+
throw new HTTPException(500, { message: "Mastra instance or getMCPServerById method not available" });
|
|
134
|
+
}
|
|
135
|
+
const server = mastra.getMCPServerById(id);
|
|
136
|
+
if (!server) {
|
|
137
|
+
throw new HTTPException(404, { message: `MCP server with ID '${id}' not found` });
|
|
138
|
+
}
|
|
139
|
+
const serverDetail = server.getServerDetail();
|
|
140
|
+
if (version && serverDetail.version_detail.version !== version) {
|
|
141
|
+
throw new HTTPException(404, {
|
|
142
|
+
message: `MCP server with ID '${id}' found, but not version '${version}'. Available version: ${serverDetail.version_detail.version}`
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
return serverDetail;
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
var LIST_MCP_SERVER_TOOLS_ROUTE = createRoute({
|
|
149
|
+
method: "GET",
|
|
150
|
+
path: "/api/mcp/:serverId/tools",
|
|
151
|
+
responseType: "json",
|
|
152
|
+
pathParamSchema: mcpServerIdPathParams,
|
|
153
|
+
responseSchema: listMcpServerToolsResponseSchema,
|
|
154
|
+
summary: "List MCP server tools",
|
|
155
|
+
description: "Returns a list of tools available on the specified MCP server",
|
|
156
|
+
tags: ["MCP"],
|
|
157
|
+
handler: async ({ mastra, serverId }) => {
|
|
158
|
+
if (!mastra || typeof mastra.getMCPServerById !== "function") {
|
|
159
|
+
throw new HTTPException(500, { message: "Mastra instance or getMCPServerById method not available" });
|
|
160
|
+
}
|
|
161
|
+
const server = mastra.getMCPServerById(serverId);
|
|
162
|
+
if (!server) {
|
|
163
|
+
throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });
|
|
164
|
+
}
|
|
165
|
+
if (typeof server.getToolListInfo !== "function") {
|
|
166
|
+
throw new HTTPException(501, { message: `Server '${serverId}' cannot list tools in this way.` });
|
|
167
|
+
}
|
|
168
|
+
return server.getToolListInfo();
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
var GET_MCP_SERVER_TOOL_DETAIL_ROUTE = createRoute({
|
|
172
|
+
method: "GET",
|
|
173
|
+
path: "/api/mcp/:serverId/tools/:toolId",
|
|
174
|
+
responseType: "json",
|
|
175
|
+
pathParamSchema: mcpServerToolPathParams,
|
|
176
|
+
responseSchema: mcpToolInfoSchema,
|
|
177
|
+
summary: "Get MCP server tool details",
|
|
178
|
+
description: "Returns detailed information about a specific tool on the MCP server",
|
|
179
|
+
tags: ["MCP"],
|
|
180
|
+
handler: async ({ mastra, serverId, toolId }) => {
|
|
181
|
+
if (!mastra || typeof mastra.getMCPServerById !== "function") {
|
|
182
|
+
throw new HTTPException(500, { message: "Mastra instance or getMCPServerById method not available" });
|
|
183
|
+
}
|
|
184
|
+
const server = mastra.getMCPServerById(serverId);
|
|
185
|
+
if (!server) {
|
|
186
|
+
throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });
|
|
187
|
+
}
|
|
188
|
+
if (typeof server.getToolInfo !== "function") {
|
|
189
|
+
throw new HTTPException(501, { message: `Server '${serverId}' cannot provide tool details in this way.` });
|
|
190
|
+
}
|
|
191
|
+
const toolInfo = server.getToolInfo(toolId);
|
|
192
|
+
if (!toolInfo) {
|
|
193
|
+
throw new HTTPException(404, { message: `Tool with ID '${toolId}' not found on MCP server '${serverId}'` });
|
|
194
|
+
}
|
|
195
|
+
return toolInfo;
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
var EXECUTE_MCP_SERVER_TOOL_ROUTE = createRoute({
|
|
199
|
+
method: "POST",
|
|
200
|
+
path: "/api/mcp/:serverId/tools/:toolId/execute",
|
|
201
|
+
responseType: "json",
|
|
202
|
+
pathParamSchema: mcpServerToolPathParams,
|
|
203
|
+
bodySchema: executeToolBodySchema,
|
|
204
|
+
responseSchema: executeToolResponseSchema,
|
|
205
|
+
summary: "Execute MCP server tool",
|
|
206
|
+
description: "Executes a tool on the specified MCP server with the provided arguments",
|
|
207
|
+
tags: ["MCP"],
|
|
208
|
+
handler: async ({
|
|
209
|
+
mastra,
|
|
210
|
+
serverId,
|
|
211
|
+
toolId,
|
|
212
|
+
data
|
|
213
|
+
}) => {
|
|
214
|
+
if (!mastra || typeof mastra.getMCPServerById !== "function") {
|
|
215
|
+
throw new HTTPException(500, { message: "Mastra instance or getMCPServerById method not available" });
|
|
216
|
+
}
|
|
217
|
+
const server = mastra.getMCPServerById(serverId);
|
|
218
|
+
if (!server) {
|
|
219
|
+
throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });
|
|
220
|
+
}
|
|
221
|
+
if (typeof server.executeTool !== "function") {
|
|
222
|
+
throw new HTTPException(501, { message: `Server '${serverId}' cannot execute tools in this way.` });
|
|
223
|
+
}
|
|
224
|
+
const result = await server.executeTool(toolId, data);
|
|
225
|
+
return { result };
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
var MCP_HTTP_TRANSPORT_ROUTE = createRoute({
|
|
229
|
+
method: "ALL",
|
|
230
|
+
path: "/api/mcp/:serverId/mcp",
|
|
231
|
+
responseType: "mcp-http",
|
|
232
|
+
pathParamSchema: mcpServerIdPathParams,
|
|
233
|
+
summary: "MCP HTTP Transport",
|
|
234
|
+
description: "Streamable HTTP transport endpoint for MCP protocol communication",
|
|
235
|
+
tags: ["MCP"],
|
|
236
|
+
handler: async ({ mastra, serverId }) => {
|
|
237
|
+
if (!mastra || typeof mastra.getMCPServerById !== "function") {
|
|
238
|
+
throw new HTTPException(500, { message: "Mastra instance or getMCPServerById method not available" });
|
|
239
|
+
}
|
|
240
|
+
const server = mastra.getMCPServerById(serverId);
|
|
241
|
+
if (!server) {
|
|
242
|
+
throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
245
|
+
server,
|
|
246
|
+
httpPath: `/api/mcp/${serverId}/mcp`
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
var MCP_SSE_TRANSPORT_ROUTE = createRoute({
|
|
251
|
+
method: "ALL",
|
|
252
|
+
path: "/api/mcp/:serverId/sse",
|
|
253
|
+
responseType: "mcp-sse",
|
|
254
|
+
pathParamSchema: mcpServerIdPathParams,
|
|
255
|
+
summary: "MCP SSE Transport",
|
|
256
|
+
description: "SSE transport endpoint for MCP protocol communication",
|
|
257
|
+
tags: ["MCP"],
|
|
258
|
+
handler: async ({ mastra, serverId }) => {
|
|
259
|
+
if (!mastra || typeof mastra.getMCPServerById !== "function") {
|
|
260
|
+
throw new HTTPException(500, { message: "Mastra instance or getMCPServerById method not available" });
|
|
261
|
+
}
|
|
262
|
+
const server = mastra.getMCPServerById(serverId);
|
|
263
|
+
if (!server) {
|
|
264
|
+
throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });
|
|
265
|
+
}
|
|
266
|
+
return {
|
|
267
|
+
server,
|
|
268
|
+
ssePath: `/api/mcp/${serverId}/sse`,
|
|
269
|
+
messagePath: `/api/mcp/${serverId}/messages`
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
var MCP_SSE_MESSAGES_ROUTE = createRoute({
|
|
274
|
+
method: "POST",
|
|
275
|
+
path: "/api/mcp/:serverId/messages",
|
|
276
|
+
responseType: "mcp-sse",
|
|
277
|
+
pathParamSchema: mcpServerIdPathParams,
|
|
278
|
+
summary: "MCP SSE Messages",
|
|
279
|
+
description: "Message endpoint for SSE transport (posts messages to active SSE streams)",
|
|
280
|
+
tags: ["MCP"],
|
|
281
|
+
handler: MCP_SSE_TRANSPORT_ROUTE.handler
|
|
282
|
+
});
|
|
283
|
+
|
|
284
|
+
export { EXECUTE_MCP_SERVER_TOOL_ROUTE, GET_MCP_SERVER_DETAIL_ROUTE, GET_MCP_SERVER_TOOL_DETAIL_ROUTE, LIST_MCP_SERVERS_ROUTE, LIST_MCP_SERVER_TOOLS_ROUTE, MCP_HTTP_TRANSPORT_ROUTE, MCP_SSE_MESSAGES_ROUTE, MCP_SSE_TRANSPORT_ROUTE, mcp_exports };
|
|
285
|
+
//# sourceMappingURL=chunk-VJVDLNFK.js.map
|
|
286
|
+
//# sourceMappingURL=chunk-VJVDLNFK.js.map
|