@mastra/server 1.15.0 → 1.16.0-alpha.1
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/_types/@internal_core/dist/index.d.ts +7 -0
- package/dist/{chunk-47RDD2HN.js → chunk-APJA4LIB.js} +4 -3
- package/dist/chunk-APJA4LIB.js.map +1 -0
- package/dist/{chunk-7D3YBNO6.cjs → chunk-FOHX5HVN.cjs} +4 -3
- package/dist/chunk-FOHX5HVN.cjs.map +1 -0
- package/dist/{chunk-2SQXNXDG.cjs → chunk-FXX6WI5F.cjs} +6 -3
- package/dist/chunk-FXX6WI5F.cjs.map +1 -0
- package/dist/{chunk-P4GHYEST.js → chunk-K5SP7SOS.js} +18 -3
- package/dist/chunk-K5SP7SOS.js.map +1 -0
- package/dist/{chunk-3KRZUGE2.cjs → chunk-LG2MUCSW.cjs} +22 -19
- package/dist/chunk-LG2MUCSW.cjs.map +1 -0
- package/dist/{chunk-XJ4C64FH.cjs → chunk-MPXNKSVP.cjs} +21 -21
- package/dist/{chunk-XJ4C64FH.cjs.map → chunk-MPXNKSVP.cjs.map} +1 -1
- package/dist/{chunk-M2PIFW7O.cjs → chunk-N6ZHI7A3.cjs} +333 -58
- package/dist/chunk-N6ZHI7A3.cjs.map +1 -0
- package/dist/{chunk-QVMLEJ63.cjs → chunk-OMNWTK4B.cjs} +18 -2
- package/dist/chunk-OMNWTK4B.cjs.map +1 -0
- package/dist/{chunk-BN5YN4UU.js → chunk-R344LGXP.js} +9 -6
- package/dist/chunk-R344LGXP.js.map +1 -0
- package/dist/{chunk-5N4O5XJZ.js → chunk-RFO7PBA6.js} +86 -8
- package/dist/chunk-RFO7PBA6.js.map +1 -0
- package/dist/{chunk-H37CMPNZ.js → chunk-UYAZFEAW.js} +6 -3
- package/dist/chunk-UYAZFEAW.js.map +1 -0
- package/dist/{chunk-NDI2C7UD.js → chunk-VD26CDFT.js} +281 -9
- package/dist/chunk-VD26CDFT.js.map +1 -0
- package/dist/{chunk-EYPXYWPY.js → chunk-Y452XTPZ.js} +3 -3
- package/dist/{chunk-EYPXYWPY.js.map → chunk-Y452XTPZ.js.map} +1 -1
- package/dist/{chunk-KTKTSTDR.cjs → chunk-ZHVL7YBO.cjs} +91 -7
- package/dist/chunk-ZHVL7YBO.cjs.map +1 -0
- package/dist/docs/SKILL.md +2 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-server-middleware.md +237 -0
- package/dist/docs/references/reference-server-mastra-server.md +3 -2
- package/dist/server/auth/helpers.d.ts +7 -0
- package/dist/server/auth/helpers.d.ts.map +1 -1
- package/dist/server/auth/index.cjs +16 -12
- package/dist/server/auth/index.js +1 -1
- package/dist/server/handlers/datasets.cjs +33 -21
- package/dist/server/handlers/datasets.d.ts +814 -472
- package/dist/server/handlers/datasets.d.ts.map +1 -1
- package/dist/server/handlers/datasets.js +1 -1
- package/dist/server/handlers/observability-new-endpoints.cjs +19 -19
- package/dist/server/handlers/observability-new-endpoints.d.ts +8 -0
- package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
- package/dist/server/handlers/observability-new-endpoints.js +1 -1
- package/dist/server/handlers/observability.cjs +24 -24
- package/dist/server/handlers/observability.js +2 -2
- package/dist/server/handlers/scores.cjs +7 -7
- package/dist/server/handlers/scores.d.ts +10 -0
- package/dist/server/handlers/scores.d.ts.map +1 -1
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers.cjs +4 -4
- package/dist/server/handlers.js +2 -2
- package/dist/server/schemas/datasets.d.ts +141 -0
- package/dist/server/schemas/datasets.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +69 -45
- package/dist/server/schemas/index.js +2 -2
- package/dist/server/schemas/scores.d.ts +8 -0
- package/dist/server/schemas/scores.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +58 -53
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.js +11 -6
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/routes/datasets.d.ts +339 -1
- package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/observability.d.ts +4 -0
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/scorers.d.ts +10 -0
- package/dist/server/server-adapter/routes/scorers.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/chunk-2SQXNXDG.cjs.map +0 -1
- package/dist/chunk-3KRZUGE2.cjs.map +0 -1
- package/dist/chunk-47RDD2HN.js.map +0 -1
- package/dist/chunk-5N4O5XJZ.js.map +0 -1
- package/dist/chunk-7D3YBNO6.cjs.map +0 -1
- package/dist/chunk-BN5YN4UU.js.map +0 -1
- package/dist/chunk-H37CMPNZ.js.map +0 -1
- package/dist/chunk-KTKTSTDR.cjs.map +0 -1
- package/dist/chunk-M2PIFW7O.cjs.map +0 -1
- package/dist/chunk-NDI2C7UD.js.map +0 -1
- package/dist/chunk-P4GHYEST.js.map +0 -1
- package/dist/chunk-QVMLEJ63.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/datasets.ts"],"names":["coreFeatures","HTTPException","createRoute","paginationQuerySchema","listDatasetsResponseSchema","error","MastraError","handleError","createDatasetBodySchema","datasetResponseSchema","datasetIdPathParams","updateDatasetBodySchema","successResponseSchema","listItemsQuerySchema","listItemsResponseSchema","addItemBodySchema","datasetItemResponseSchema","datasetAndItemIdPathParams","updateItemBodySchema","listExperimentsResponseSchema","triggerExperimentBodySchema","experimentSummaryResponseSchema","requestContext","RequestContext","datasetAndExperimentIdPathParams","experimentResponseSchema","listExperimentResultsResponseSchema","experimentResultIdPathParams","updateExperimentResultBodySchema","experimentResultResponseSchema","compareExperimentsBodySchema","comparisonResponseSchema","listDatasetVersionsResponseSchema","listItemVersionsResponseSchema","datasetItemVersionPathParams","batchInsertItemsBodySchema","batchInsertItemsResponseSchema","batchDeleteItemsBodySchema","batchDeleteItemsResponseSchema","generateItemsBodySchema","generateItemsResponseSchema","resolveModelConfig","Agent","z","clusterFailuresBodySchema","clusterFailuresResponseSchema"],"mappings":"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","file":"chunk-N6ZHI7A3.cjs","sourcesContent":["import { Agent } from '@mastra/core/agent';\nimport { MastraError } from '@mastra/core/error';\nimport { coreFeatures } from '@mastra/core/features';\nimport { resolveModelConfig } from '@mastra/core/llm';\nimport { RequestContext } from '@mastra/core/request-context';\nimport type { TargetType } from '@mastra/core/storage';\nimport { z } from 'zod';\nimport { HTTPException } from '../http-exception';\nimport type { StatusCode } from '../http-exception';\nimport { successResponseSchema } from '../schemas/common';\nimport {\n datasetIdPathParams,\n datasetAndExperimentIdPathParams,\n experimentResultIdPathParams,\n datasetAndItemIdPathParams,\n datasetItemVersionPathParams,\n paginationQuerySchema,\n listItemsQuerySchema,\n createDatasetBodySchema,\n updateDatasetBodySchema,\n addItemBodySchema,\n updateItemBodySchema,\n triggerExperimentBodySchema,\n compareExperimentsBodySchema,\n batchInsertItemsBodySchema,\n batchDeleteItemsBodySchema,\n generateItemsBodySchema,\n generateItemsResponseSchema,\n clusterFailuresBodySchema,\n clusterFailuresResponseSchema,\n datasetResponseSchema,\n datasetItemResponseSchema,\n experimentResponseSchema,\n experimentResultResponseSchema,\n experimentSummaryResponseSchema,\n comparisonResponseSchema,\n listDatasetsResponseSchema,\n listItemsResponseSchema,\n listExperimentsResponseSchema,\n listExperimentResultsResponseSchema,\n listDatasetVersionsResponseSchema,\n listItemVersionsResponseSchema,\n batchInsertItemsResponseSchema,\n batchDeleteItemsResponseSchema,\n updateExperimentResultBodySchema,\n} from '../schemas/datasets';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\n// ============================================================================\n// Feature gate + local type guards\n// ============================================================================\n\nfunction assertDatasetsAvailable(): void {\n if (!coreFeatures.has('datasets')) {\n throw new HTTPException(501, { message: 'Datasets require @mastra/core >= 1.4.0' });\n }\n}\n\ninterface SchemaValidationLike extends Error {\n field: 'input' | 'groundTruth';\n errors: Array<{ path: string; code: string; message: string }>;\n}\n\ninterface SchemaUpdateValidationLike extends Error {\n failingItems: Array<{\n index: number;\n data: unknown;\n field: 'input' | 'groundTruth';\n errors: Array<{ path: string; code: string; message: string }>;\n }>;\n}\n\nfunction isSchemaValidationError(error: unknown): error is SchemaValidationLike {\n return error instanceof Error && error.name === 'SchemaValidationError';\n}\n\nfunction isSchemaUpdateValidationError(error: unknown): error is SchemaUpdateValidationLike {\n return error instanceof Error && error.name === 'SchemaUpdateValidationError';\n}\n\n// ============================================================================\n// Helper: Map MastraError IDs to HTTP status codes\n// ============================================================================\n\nfunction getHttpStatusForMastraError(errorId: string): number {\n switch (errorId) {\n case 'DATASET_NOT_FOUND':\n case 'EXPERIMENT_NOT_FOUND':\n return 404;\n case 'EXPERIMENT_NO_ITEMS':\n return 400;\n default:\n return 500;\n }\n}\n\n// ============================================================================\n// Dataset CRUD Routes\n// ============================================================================\n\nexport const LIST_DATASETS_ROUTE = createRoute({\n method: 'GET',\n path: '/datasets',\n responseType: 'json',\n queryParamSchema: paginationQuerySchema,\n responseSchema: listDatasetsResponseSchema,\n summary: 'List all datasets',\n description: 'Returns a paginated list of all datasets',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n assertDatasetsAvailable();\n try {\n const { page, perPage } = params;\n const result = await mastra.datasets.list({ page: page ?? 0, perPage: perPage ?? 10 });\n return {\n datasets: result.datasets as any,\n pagination: result.pagination,\n };\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error listing datasets');\n }\n },\n});\n\nexport const CREATE_DATASET_ROUTE = createRoute({\n method: 'POST',\n path: '/datasets',\n responseType: 'json',\n bodySchema: createDatasetBodySchema,\n responseSchema: datasetResponseSchema,\n summary: 'Create a new dataset',\n description: 'Creates a new dataset with the specified name and optional metadata',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n assertDatasetsAvailable();\n try {\n const {\n name,\n description,\n metadata,\n inputSchema,\n groundTruthSchema,\n requestContextSchema,\n targetType,\n targetIds,\n } = params as {\n name: string;\n description?: string;\n metadata?: Record<string, unknown>;\n inputSchema?: Record<string, unknown> | null;\n groundTruthSchema?: Record<string, unknown> | null;\n requestContextSchema?: Record<string, unknown> | null;\n targetType?: TargetType;\n targetIds?: string[];\n };\n const ds = await mastra.datasets.create({\n name,\n description,\n metadata,\n inputSchema,\n groundTruthSchema,\n requestContextSchema,\n targetType,\n targetIds,\n });\n const details = await ds.getDetails();\n return details as any;\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error creating dataset');\n }\n },\n});\n\nexport const GET_DATASET_ROUTE = createRoute({\n method: 'GET',\n path: '/datasets/:datasetId',\n responseType: 'json',\n pathParamSchema: datasetIdPathParams,\n responseSchema: datasetResponseSchema.nullable(),\n summary: 'Get dataset by ID',\n description: 'Returns details for a specific dataset',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId }) => {\n assertDatasetsAvailable();\n try {\n const ds = await mastra.datasets.get({ id: datasetId });\n return (await ds.getDetails()) as any;\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error getting dataset');\n }\n },\n});\n\nexport const UPDATE_DATASET_ROUTE = createRoute({\n method: 'PATCH',\n path: '/datasets/:datasetId',\n responseType: 'json',\n pathParamSchema: datasetIdPathParams,\n bodySchema: updateDatasetBodySchema,\n responseSchema: datasetResponseSchema,\n summary: 'Update dataset',\n description: 'Updates a dataset with the specified fields',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, ...params }) => {\n assertDatasetsAvailable();\n try {\n const {\n name,\n description,\n metadata,\n inputSchema,\n groundTruthSchema,\n requestContextSchema,\n tags,\n targetType,\n targetIds,\n } = params as {\n name?: string;\n description?: string;\n metadata?: Record<string, unknown>;\n inputSchema?: Record<string, unknown> | null;\n groundTruthSchema?: Record<string, unknown> | null;\n requestContextSchema?: Record<string, unknown> | null;\n tags?: string[];\n targetType?: TargetType;\n targetIds?: string[];\n };\n const ds = await mastra.datasets.get({ id: datasetId });\n const result = await ds.update({\n name,\n description,\n metadata,\n inputSchema,\n groundTruthSchema,\n requestContextSchema,\n tags,\n targetType,\n targetIds,\n });\n return result as any;\n } catch (error) {\n if (isSchemaUpdateValidationError(error)) {\n throw new HTTPException(400, {\n message: error.message,\n cause: { failingItems: error.failingItems },\n });\n }\n if (isSchemaValidationError(error)) {\n throw new HTTPException(400, {\n message: error.message,\n cause: { field: error.field, errors: error.errors },\n });\n }\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error updating dataset');\n }\n },\n});\n\nexport const DELETE_DATASET_ROUTE = createRoute({\n method: 'DELETE',\n path: '/datasets/:datasetId',\n responseType: 'json',\n pathParamSchema: datasetIdPathParams,\n responseSchema: successResponseSchema,\n summary: 'Delete dataset',\n description: 'Deletes a dataset and all its items',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId }) => {\n assertDatasetsAvailable();\n try {\n await mastra.datasets.get({ id: datasetId }); // validates existence\n await mastra.datasets.delete({ id: datasetId });\n return { success: true };\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error deleting dataset');\n }\n },\n});\n\n// ============================================================================\n// Item CRUD Routes\n// ============================================================================\n\nexport const LIST_ITEMS_ROUTE = createRoute({\n method: 'GET',\n path: '/datasets/:datasetId/items',\n responseType: 'json',\n pathParamSchema: datasetIdPathParams,\n queryParamSchema: listItemsQuerySchema,\n responseSchema: listItemsResponseSchema,\n summary: 'List dataset items',\n description: 'Returns a paginated list of items in the dataset',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, ...params }) => {\n assertDatasetsAvailable();\n try {\n const { page, perPage, version, search } = params;\n const ds = await mastra.datasets.get({ id: datasetId });\n const result = await ds.listItems({\n page: page ?? 0,\n perPage: perPage ?? 10,\n version,\n search,\n });\n // When version is specified, result is DatasetItem[] (flat). Otherwise paginated.\n if (Array.isArray(result)) {\n return { items: result, pagination: { total: result.length, page: 0, perPage: result.length, hasMore: false } };\n }\n return { items: result.items, pagination: result.pagination };\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error listing dataset items');\n }\n },\n});\n\nexport const ADD_ITEM_ROUTE = createRoute({\n method: 'POST',\n path: '/datasets/:datasetId/items',\n responseType: 'json',\n pathParamSchema: datasetIdPathParams,\n bodySchema: addItemBodySchema,\n responseSchema: datasetItemResponseSchema,\n summary: 'Add item to dataset',\n description: 'Adds a new item to the dataset (auto-increments dataset version)',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, ...params }) => {\n assertDatasetsAvailable();\n try {\n const { input, groundTruth, requestContext, metadata } = params as {\n input: unknown;\n groundTruth?: unknown;\n requestContext?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n };\n const ds = await mastra.datasets.get({ id: datasetId });\n return await ds.addItem({ input, groundTruth, requestContext, metadata });\n } catch (error) {\n if (isSchemaValidationError(error)) {\n throw new HTTPException(400, {\n message: error.message,\n cause: { field: error.field, errors: error.errors },\n });\n }\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error adding item to dataset');\n }\n },\n});\n\nexport const GET_ITEM_ROUTE = createRoute({\n method: 'GET',\n path: '/datasets/:datasetId/items/:itemId',\n responseType: 'json',\n pathParamSchema: datasetAndItemIdPathParams,\n responseSchema: datasetItemResponseSchema.nullable(),\n summary: 'Get dataset item by ID',\n description: 'Returns details for a specific dataset item',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, itemId }) => {\n assertDatasetsAvailable();\n try {\n const ds = await mastra.datasets.get({ id: datasetId });\n const item = await ds.getItem({ itemId });\n if (!item || (item as any).datasetId !== datasetId) {\n throw new HTTPException(404, { message: `Item not found: ${itemId}` });\n }\n return item as any;\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error getting dataset item');\n }\n },\n});\n\nexport const UPDATE_ITEM_ROUTE = createRoute({\n method: 'PATCH',\n path: '/datasets/:datasetId/items/:itemId',\n responseType: 'json',\n pathParamSchema: datasetAndItemIdPathParams,\n bodySchema: updateItemBodySchema,\n responseSchema: datasetItemResponseSchema,\n summary: 'Update dataset item',\n description: 'Updates a dataset item (auto-increments dataset version)',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, itemId, ...params }) => {\n assertDatasetsAvailable();\n try {\n const { input, groundTruth, requestContext, metadata } = params as {\n input?: unknown;\n groundTruth?: unknown;\n requestContext?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n };\n const ds = await mastra.datasets.get({ id: datasetId });\n // Check if item exists and belongs to dataset\n const existing = await ds.getItem({ itemId });\n if (!existing || (existing as any).datasetId !== datasetId) {\n throw new HTTPException(404, { message: `Item not found: ${itemId}` });\n }\n return await ds.updateItem({ itemId, input, groundTruth, requestContext, metadata });\n } catch (error) {\n if (isSchemaValidationError(error)) {\n throw new HTTPException(400, {\n message: error.message,\n cause: { field: error.field, errors: error.errors },\n });\n }\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error updating dataset item');\n }\n },\n});\n\nexport const DELETE_ITEM_ROUTE = createRoute({\n method: 'DELETE',\n path: '/datasets/:datasetId/items/:itemId',\n responseType: 'json',\n pathParamSchema: datasetAndItemIdPathParams,\n responseSchema: successResponseSchema,\n summary: 'Delete dataset item',\n description: 'Deletes a dataset item',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, itemId }) => {\n assertDatasetsAvailable();\n try {\n const ds = await mastra.datasets.get({ id: datasetId });\n const existing = await ds.getItem({ itemId });\n if (!existing || (existing as any).datasetId !== datasetId) {\n throw new HTTPException(404, { message: `Item not found: ${itemId}` });\n }\n await ds.deleteItem({ itemId });\n return { success: true };\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error deleting dataset item');\n }\n },\n});\n\n// ============================================================================\n// Experiment Operations Routes (nested under datasets)\n// ============================================================================\n\nexport const LIST_EXPERIMENTS_ROUTE = createRoute({\n method: 'GET',\n path: '/datasets/:datasetId/experiments',\n responseType: 'json',\n pathParamSchema: datasetIdPathParams,\n queryParamSchema: paginationQuerySchema,\n responseSchema: listExperimentsResponseSchema,\n summary: 'List experiments for dataset',\n description: 'Returns a paginated list of experiments for the dataset',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, ...params }) => {\n assertDatasetsAvailable();\n try {\n const { page, perPage } = params;\n const ds = await mastra.datasets.get({ id: datasetId });\n const result = await ds.listExperiments({ page: page ?? 0, perPage: perPage ?? 10 });\n return { experiments: result.experiments, pagination: result.pagination };\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error listing experiments');\n }\n },\n});\n\nexport const TRIGGER_EXPERIMENT_ROUTE = createRoute({\n method: 'POST',\n path: '/datasets/:datasetId/experiments',\n responseType: 'json',\n pathParamSchema: datasetIdPathParams,\n bodySchema: triggerExperimentBodySchema,\n responseSchema: experimentSummaryResponseSchema,\n summary: 'Trigger a new experiment',\n description:\n 'Triggers a new experiment on the dataset against the specified target. Returns immediately with pending status; execution happens in background.',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, ...params }) => {\n assertDatasetsAvailable();\n try {\n const {\n targetType,\n targetId,\n scorerIds,\n version,\n agentVersion,\n maxConcurrency,\n requestContext: rawRequestContext,\n } = params as {\n targetType: 'agent' | 'workflow' | 'scorer';\n targetId: string;\n scorerIds?: string[];\n version?: number;\n agentVersion?: string;\n maxConcurrency?: number;\n requestContext?: Record<string, unknown> | RequestContext;\n };\n // The adapter middleware merges body + query requestContext into a RequestContext instance.\n // startExperimentAsync expects a plain Record, so convert it.\n const requestContext = rawRequestContext instanceof RequestContext ? rawRequestContext.all : rawRequestContext;\n const ds = await mastra.datasets.get({ id: datasetId });\n const result = await ds.startExperimentAsync({\n targetType,\n targetId,\n scorers: scorerIds,\n version,\n agentVersion,\n maxConcurrency,\n requestContext,\n });\n // Return shape matching experimentSummaryResponseSchema\n return {\n experimentId: result.experimentId,\n status: result.status,\n totalItems: result.totalItems ?? 0,\n succeededCount: 0,\n failedCount: 0,\n startedAt: new Date(),\n completedAt: null,\n results: [],\n };\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error triggering experiment');\n }\n },\n});\n\nexport const GET_EXPERIMENT_ROUTE = createRoute({\n method: 'GET',\n path: '/datasets/:datasetId/experiments/:experimentId',\n responseType: 'json',\n pathParamSchema: datasetAndExperimentIdPathParams,\n responseSchema: experimentResponseSchema.nullable(),\n summary: 'Get experiment by ID',\n description: 'Returns details for a specific experiment',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, experimentId }) => {\n assertDatasetsAvailable();\n try {\n const ds = await mastra.datasets.get({ id: datasetId });\n const run = await ds.getExperiment({ experimentId });\n if (!run || run.datasetId !== datasetId) {\n throw new HTTPException(404, { message: `Experiment not found: ${experimentId}` });\n }\n return run;\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error getting experiment');\n }\n },\n});\n\nexport const LIST_EXPERIMENT_RESULTS_ROUTE = createRoute({\n method: 'GET',\n path: '/datasets/:datasetId/experiments/:experimentId/results',\n responseType: 'json',\n pathParamSchema: datasetAndExperimentIdPathParams,\n queryParamSchema: paginationQuerySchema,\n responseSchema: listExperimentResultsResponseSchema,\n summary: 'List experiment results',\n description: 'Returns a paginated list of results for the experiment',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, experimentId, ...params }) => {\n assertDatasetsAvailable();\n try {\n const { page, perPage } = params;\n const ds = await mastra.datasets.get({ id: datasetId });\n // Validate experiment belongs to dataset\n const run = await ds.getExperiment({ experimentId });\n if (!run || run.datasetId !== datasetId) {\n throw new HTTPException(404, { message: `Experiment not found: ${experimentId}` });\n }\n const result = await ds.listExperimentResults({ experimentId, page: page ?? 0, perPage: perPage ?? 10 });\n return {\n results: result.results.map(({ experimentId: _eid, ...rest }) => ({ experimentId, ...rest })),\n pagination: result.pagination,\n };\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error listing experiment results');\n }\n },\n});\n\nexport const UPDATE_EXPERIMENT_RESULT_ROUTE = createRoute({\n method: 'PATCH',\n path: '/datasets/:datasetId/experiments/:experimentId/results/:resultId',\n responseType: 'json',\n pathParamSchema: experimentResultIdPathParams,\n bodySchema: updateExperimentResultBodySchema,\n responseSchema: experimentResultResponseSchema,\n summary: 'Update an experiment result',\n description: 'Updates the status and/or tags on an experiment result',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, resultId, experimentId, ...params }) => {\n assertDatasetsAvailable();\n try {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage not configured' });\n }\n const experimentsStore = await storage.getStore('experiments');\n if (!experimentsStore) {\n throw new HTTPException(500, { message: 'Experiments storage not available' });\n }\n\n const result = await experimentsStore.updateExperimentResult({\n id: resultId,\n experimentId,\n status: params.status,\n tags: params.tags,\n });\n\n return result;\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error updating experiment result');\n }\n },\n});\n\n// ============================================================================\n// Analytics Routes (nested under datasets)\n// ============================================================================\n\nexport const COMPARE_EXPERIMENTS_ROUTE = createRoute({\n method: 'POST',\n path: '/datasets/:datasetId/compare',\n responseType: 'json',\n pathParamSchema: datasetIdPathParams,\n bodySchema: compareExperimentsBodySchema,\n responseSchema: comparisonResponseSchema,\n summary: 'Compare two experiments',\n description: 'Compares two experiments to detect score regressions',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, ...params }) => {\n assertDatasetsAvailable();\n try {\n const { experimentIdA, experimentIdB } = params as {\n experimentIdA: string;\n experimentIdB: string;\n };\n // Validate dataset exists\n await mastra.datasets.get({ id: datasetId });\n const result = await mastra.datasets.compareExperiments({\n experimentIds: [experimentIdA, experimentIdB],\n baselineId: experimentIdA,\n });\n return result;\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error comparing experiments');\n }\n },\n});\n\n// ============================================================================\n// Version Routes\n// ============================================================================\n\nexport const LIST_DATASET_VERSIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/datasets/:datasetId/versions',\n responseType: 'json',\n pathParamSchema: datasetIdPathParams,\n queryParamSchema: paginationQuerySchema,\n responseSchema: listDatasetVersionsResponseSchema,\n summary: 'List dataset versions',\n description: 'Returns a paginated list of all versions for the dataset',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, ...params }) => {\n assertDatasetsAvailable();\n try {\n const { page, perPage } = params;\n const ds = await mastra.datasets.get({ id: datasetId });\n const result = await ds.listVersions({ page: page ?? 0, perPage: perPage ?? 10 });\n return { versions: result.versions, pagination: result.pagination };\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error listing dataset versions');\n }\n },\n});\n\nexport const LIST_ITEM_VERSIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/datasets/:datasetId/items/:itemId/history',\n responseType: 'json',\n pathParamSchema: datasetAndItemIdPathParams,\n responseSchema: listItemVersionsResponseSchema,\n summary: 'Get item history',\n description: 'Returns the full SCD-2 history of the item across all dataset versions',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, itemId }) => {\n assertDatasetsAvailable();\n try {\n const ds = await mastra.datasets.get({ id: datasetId });\n const rows = await ds.getItemHistory({ itemId });\n // Check rows belong to this dataset\n if (rows.length > 0 && rows[0]?.datasetId !== datasetId) {\n throw new HTTPException(404, { message: `Item not found in dataset: ${itemId}` });\n }\n return { history: rows };\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error listing item history');\n }\n },\n});\n\nexport const GET_ITEM_VERSION_ROUTE = createRoute({\n method: 'GET',\n path: '/datasets/:datasetId/items/:itemId/versions/:datasetVersion',\n responseType: 'json',\n pathParamSchema: datasetItemVersionPathParams,\n responseSchema: datasetItemResponseSchema.nullable(),\n summary: 'Get item at specific dataset version',\n description: 'Returns the item as it existed at a specific dataset version',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, itemId, datasetVersion }) => {\n assertDatasetsAvailable();\n try {\n const ds = await mastra.datasets.get({ id: datasetId });\n const item = await ds.getItem({ itemId, version: datasetVersion });\n if (!item) {\n throw new HTTPException(404, { message: `Item ${itemId} not found at version ${datasetVersion}` });\n }\n if ((item as any).datasetId !== datasetId) {\n throw new HTTPException(404, { message: `Item not found in dataset: ${itemId}` });\n }\n return item as any;\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error getting item version');\n }\n },\n});\n\n// ============================================================================\n// Batch Operations Routes\n// ============================================================================\n\nexport const BATCH_INSERT_ITEMS_ROUTE = createRoute({\n method: 'POST',\n path: '/datasets/:datasetId/items/batch',\n responseType: 'json',\n pathParamSchema: datasetIdPathParams,\n bodySchema: batchInsertItemsBodySchema,\n responseSchema: batchInsertItemsResponseSchema,\n summary: 'Batch insert items to dataset',\n description: 'Adds multiple items to the dataset in a single operation (single version entry)',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, ...params }) => {\n assertDatasetsAvailable();\n try {\n const { items } = params as {\n items: Array<{ input: unknown; groundTruth?: unknown; metadata?: Record<string, unknown> }>;\n };\n const ds = await mastra.datasets.get({ id: datasetId });\n const addedItems = await ds.addItems({ items });\n return { items: addedItems, count: addedItems.length };\n } catch (error) {\n if (isSchemaValidationError(error)) {\n throw new HTTPException(400, {\n message: error.message,\n cause: { field: error.field, errors: error.errors },\n });\n }\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error batch inserting items');\n }\n },\n});\n\nexport const BATCH_DELETE_ITEMS_ROUTE = createRoute({\n method: 'DELETE',\n path: '/datasets/:datasetId/items/batch',\n responseType: 'json',\n pathParamSchema: datasetIdPathParams,\n bodySchema: batchDeleteItemsBodySchema,\n responseSchema: batchDeleteItemsResponseSchema,\n summary: 'Batch delete items from dataset',\n description: 'Deletes multiple items from the dataset in a single operation (single version entry)',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, ...params }) => {\n assertDatasetsAvailable();\n try {\n const { itemIds } = params as { itemIds: string[] };\n const ds = await mastra.datasets.get({ id: datasetId });\n await ds.deleteItems({ itemIds });\n return { success: true, deletedCount: itemIds.length };\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error bulk deleting items');\n }\n },\n});\n\n// ============================================================================\n// AI Generation\n// ============================================================================\n\nconst GENERATE_ITEMS_SYSTEM_PROMPT = `You are a test data generation expert. Your job is to generate realistic, diverse test data items for an AI agent evaluation dataset.\n\nYou will be given context about the agent being tested — its purpose, system prompt, and available tools. Use this to generate inputs that thoroughly exercise the agent's capabilities.\n\nGenerate test items that:\n1. Are realistic and diverse — cover edge cases, different complexities, and various scenarios\n2. Match the provided schemas exactly\n3. Include ground truth values when a ground truth schema is provided\n4. Vary in difficulty (easy, medium, hard cases)\n5. Include potential edge cases and tricky inputs\n6. Test different aspects of the agent's capabilities based on its tools and instructions\n\nReturn the items as a JSON array.`;\n\nexport const GENERATE_ITEMS_ROUTE = createRoute({\n method: 'POST',\n path: '/datasets/:datasetId/generate-items',\n responseType: 'json',\n pathParamSchema: datasetIdPathParams,\n bodySchema: generateItemsBodySchema,\n responseSchema: generateItemsResponseSchema,\n summary: 'Generate dataset items using AI',\n description:\n 'Uses an LLM to generate synthetic dataset items based on the dataset schema and a user prompt. Returns generated items for review — they are NOT automatically added to the dataset.',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, datasetId, modelId, prompt, count, agentContext }) => {\n assertDatasetsAvailable();\n try {\n const ds = await mastra.datasets.get({ id: datasetId });\n const dataset = await ds.getDetails();\n\n // Resolve the model from the \"provider/model\" string\n const model = await resolveModelConfig(modelId, undefined, mastra);\n\n // Build context about the dataset schema for the generator\n const schemaContext = [\n dataset.inputSchema ? `Input schema:\\n${JSON.stringify(dataset.inputSchema, null, 2)}` : null,\n dataset.groundTruthSchema\n ? `Ground truth schema:\\n${JSON.stringify(dataset.groundTruthSchema, null, 2)}`\n : null,\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const generatorAgent = new Agent({\n id: 'dataset-item-generator',\n name: 'dataset-item-generator',\n instructions: GENERATE_ITEMS_SYSTEM_PROMPT,\n model,\n });\n\n // Build the structured output schema dynamically based on count\n // Use z.string() for input/groundTruth since OpenAI structured output requires concrete types.\n // The generator will produce JSON strings that we parse back into objects if needed.\n const itemSchema = z.object({\n input: z\n .string()\n .describe('The input data as a JSON string matching the input schema, or a plain text string if no schema'),\n groundTruth: z\n .string()\n .optional()\n .describe('The expected output as a JSON string matching the ground truth schema'),\n });\n const outputSchema = z.object({\n items: z.array(itemSchema).min(1).max(count),\n });\n\n // Build agent context section\n const agentContextParts = [];\n if (agentContext?.description) {\n agentContextParts.push(`Agent description: ${agentContext.description}`);\n }\n if (agentContext?.instructions) {\n agentContextParts.push(`Agent system prompt:\\n${agentContext.instructions}`);\n }\n if (agentContext?.tools?.length) {\n agentContextParts.push(`Agent tools: ${agentContext.tools.join(', ')}`);\n }\n const agentContextSection = agentContextParts.length > 0 ? agentContextParts.join('\\n\\n') : null;\n\n const userMessage = [\n `Generate exactly ${count} test items for a dataset named \"${dataset.name}\".`,\n dataset.description ? `Dataset description: ${dataset.description}` : null,\n agentContextSection ? `--- AGENT CONTEXT ---\\n${agentContextSection}` : null,\n schemaContext || null,\n `User's request: ${prompt}`,\n `Return exactly ${count} items.`,\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const result = await generatorAgent.generate(userMessage, {\n structuredOutput: { schema: outputSchema },\n });\n\n const generated = await result.object;\n\n // Parse JSON strings back to objects where possible\n const items = generated.items.map(item => {\n let input: unknown = item.input;\n try {\n input = JSON.parse(item.input);\n } catch {\n // Keep as string if not valid JSON\n }\n let groundTruth: unknown = item.groundTruth;\n if (item.groundTruth) {\n try {\n groundTruth = JSON.parse(item.groundTruth);\n } catch {\n // Keep as string if not valid JSON\n }\n }\n return { input, groundTruth };\n });\n\n return { items };\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error generating dataset items');\n }\n },\n});\n\n// ============================================================================\n// Failure Clustering\n// ============================================================================\n\nconst CLUSTER_FAILURES_SYSTEM_PROMPT = `You are an AI evaluation expert specializing in failure analysis. Given a set of failure items from an AI agent experiment, identify common failure patterns and assign descriptive tags to each item.\n\nFor each cluster you identify, provide:\n- A short, descriptive tag label (2-5 words, lowercase, hyphenated, e.g., \"no-tool-usage\", \"hallucination\")\n- A description explaining the common failure pattern\n- The IDs of items that belong to this cluster\n\nAlso return a \"proposedTags\" array mapping each item ID to the tags you recommend, along with a brief \"reason\" explaining WHY those tags apply to that specific item. The reason should reference concrete evidence from the item's input/output/error.\n\nGuidelines:\n- Create between 1 and 8 clusters depending on the diversity of failures\n- Every item must be assigned to at least one cluster unless there is no clear pattern of failure\n- Focus on the root cause of failures, not surface-level symptoms\n- If items have scores, use low scores as signals for the failure type\n- Be specific about what went wrong\n- IMPORTANT: If existing tags are provided, PREFER reusing them over creating new ones. Only create new tags when no existing tag fits.\n- Items may already have tags — consider those when assigning new ones and avoid duplicating existing tags on an item.\n- The \"reason\" field should be 1-2 sentences explaining the specific evidence for each tag assignment.`;\n\nexport const CLUSTER_FAILURES_ROUTE = createRoute({\n method: 'POST',\n path: '/datasets/cluster-failures',\n responseType: 'json',\n bodySchema: clusterFailuresBodySchema,\n responseSchema: clusterFailuresResponseSchema,\n summary: 'Cluster experiment failures using AI',\n description:\n 'Uses an LLM to analyze failure items from an experiment and group them into meaningful failure pattern clusters.',\n tags: ['Datasets'],\n requiresAuth: true,\n handler: async ({ mastra, modelId, items, availableTags, prompt }) => {\n assertDatasetsAvailable();\n try {\n const model = await resolveModelConfig(modelId, undefined, mastra);\n\n const clusterAgent = new Agent({\n id: 'failure-cluster-analyzer',\n name: 'failure-cluster-analyzer',\n instructions: CLUSTER_FAILURES_SYSTEM_PROMPT,\n model,\n });\n\n const outputSchema = z.object({\n clusters: z.array(\n z.object({\n id: z.string(),\n label: z.string(),\n description: z.string(),\n itemIds: z.array(z.string()),\n }),\n ),\n proposedTags: z.array(\n z.object({\n itemId: z.string(),\n tags: z.array(z.string()),\n reason: z.string().describe('Brief explanation of why these tags were assigned'),\n }),\n ),\n });\n\n const itemSummaries = items.map((item, i) => {\n const parts = [`Item ${i + 1} (id: ${item.id}):`];\n if (item.input !== undefined && item.input !== null) parts.push(` Input: ${JSON.stringify(item.input)}`);\n if (item.output !== undefined && item.output !== null) parts.push(` Output: ${JSON.stringify(item.output)}`);\n if (item.error !== undefined && item.error !== null) {\n parts.push(` Error: ${typeof item.error === 'string' ? item.error : JSON.stringify(item.error)}`);\n }\n if (item.scores !== undefined && item.scores !== null) {\n parts.push(` Scores: ${JSON.stringify(item.scores)}`);\n }\n if (item.existingTags && item.existingTags.length > 0) {\n parts.push(` Existing tags: ${item.existingTags.join(', ')}`);\n }\n return parts.join('\\n');\n });\n\n let userMessage = `Analyze these ${items.length} failure items and group them into clusters of common failure patterns:\\n\\n${itemSummaries.join('\\n\\n')}`;\n\n if (availableTags && availableTags.length > 0) {\n userMessage += `\\n\\nExisting tag vocabulary (prefer reusing these): ${availableTags.join(', ')}`;\n }\n\n if (prompt) {\n userMessage += `\\n\\nAdditional instructions from the reviewer: ${prompt}`;\n }\n\n userMessage += `\\n\\nReturn both \"clusters\" (grouping items by pattern) and \"proposedTags\" (a list mapping each item ID to the tag labels you recommend, with a \"reason\" explaining why). For proposedTags, only include NEW tags to add — do not repeat tags the item already has.`;\n\n const result = await clusterAgent.generate(userMessage, {\n structuredOutput: { schema: outputSchema },\n });\n\n const generated = await result.object;\n return { clusters: generated.clusters, proposedTags: generated.proposedTags ?? [] };\n } catch (error) {\n if (error instanceof MastraError) {\n throw new HTTPException(getHttpStatusForMastraError(error.id) as StatusCode, { message: error.message });\n }\n return handleError(error, 'Error clustering failures');\n }\n },\n});\n"]}
|
|
@@ -176,6 +176,21 @@ var matchesOrIncludes = (values, value) => {
|
|
|
176
176
|
return false;
|
|
177
177
|
};
|
|
178
178
|
var pass = { action: "next" };
|
|
179
|
+
var getAuthenticatedUser = async ({
|
|
180
|
+
mastra,
|
|
181
|
+
token,
|
|
182
|
+
request
|
|
183
|
+
}) => {
|
|
184
|
+
const normalizedToken = token.replace(/^Bearer\s+/i, "").trim();
|
|
185
|
+
if (!normalizedToken) {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
const authConfig = mastra.getServer()?.auth;
|
|
189
|
+
if (!authConfig || typeof authConfig.authenticateToken !== "function") {
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
return await authConfig.authenticateToken(normalizedToken, request);
|
|
193
|
+
};
|
|
179
194
|
var coreAuthMiddleware = async (ctx) => {
|
|
180
195
|
const { path, method, getHeader, mastra, authConfig, customRouteAuthConfig, requestContext, rawRequest, token } = ctx;
|
|
181
196
|
const hasAuthProvider = typeof authConfig.authenticateToken === "function";
|
|
@@ -296,6 +311,7 @@ exports.canAccessPublicly = canAccessPublicly;
|
|
|
296
311
|
exports.checkRules = checkRules;
|
|
297
312
|
exports.coreAuthMiddleware = coreAuthMiddleware;
|
|
298
313
|
exports.defaultAuthConfig = defaultAuthConfig;
|
|
314
|
+
exports.getAuthenticatedUser = getAuthenticatedUser;
|
|
299
315
|
exports.isCustomRoutePublic = isCustomRoutePublic;
|
|
300
316
|
exports.isDevPlaygroundRequest = isDevPlaygroundRequest;
|
|
301
317
|
exports.isProtectedCustomRoute = isProtectedCustomRoute;
|
|
@@ -303,5 +319,5 @@ exports.isProtectedPath = isProtectedPath;
|
|
|
303
319
|
exports.matchesOrIncludes = matchesOrIncludes;
|
|
304
320
|
exports.pathMatchesPattern = pathMatchesPattern;
|
|
305
321
|
exports.pathMatchesRule = pathMatchesRule;
|
|
306
|
-
//# sourceMappingURL=chunk-
|
|
307
|
-
//# sourceMappingURL=chunk-
|
|
322
|
+
//# sourceMappingURL=chunk-OMNWTK4B.cjs.map
|
|
323
|
+
//# sourceMappingURL=chunk-OMNWTK4B.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/auth/defaults.ts","../src/server/auth/path-pattern.ts","../src/server/auth/helpers.ts"],"names":[],"mappings":"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","file":"chunk-OMNWTK4B.cjs","sourcesContent":["import type { MastraAuthConfig } from '@mastra/core/server';\n\n// Default configuration that can be extended by clients\nexport const defaultAuthConfig: MastraAuthConfig = {\n protected: ['/api/*'],\n public: ['/api', '/api/auth/*'],\n // Simple rule system\n rules: [\n // Admin users can do anything\n {\n condition: user => {\n if (typeof user === 'object' && user !== null) {\n if ('isAdmin' in user) {\n return !!user.isAdmin;\n }\n\n if ('role' in user) {\n return user.role === 'admin';\n }\n }\n return false;\n },\n allow: true,\n },\n ],\n};\n","/**\n * Path pattern matching utility\n * Inlined from regexparam v3.0.0 (MIT License)\n * https://github.com/lukeed/regexparam\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nexport interface ParsedPattern {\n keys: string[] | false;\n pattern: RegExp;\n}\n\n/**\n * Parse a route pattern into a RegExp\n * Supports:\n * - Named parameters: /users/:id\n * - Optional parameters: /users/:id?\n * - Wildcards: /files/*\n * - Mixed patterns: /api/:version/users/:id\n */\nexport function parse(input: string | RegExp, loose?: boolean): ParsedPattern {\n if (input instanceof RegExp) return { keys: false, pattern: input };\n\n let c: string;\n let o: number;\n let tmp: string | undefined;\n let ext: number;\n const keys: string[] = [];\n let pattern = '';\n const arr = input.split('/');\n\n arr[0] || arr.shift();\n\n while ((tmp = arr.shift())) {\n c = tmp[0]!;\n if (c === '*') {\n keys.push(c);\n pattern += tmp[1] === '?' ? '(?:/(.*))?' : '/(.*)';\n } else if (c === ':') {\n o = tmp.indexOf('?', 1);\n ext = tmp.indexOf('.', 1);\n keys.push(tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length));\n pattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';\n if (!!~ext) pattern += (!!~o ? '?' : '') + '\\\\' + tmp.substring(ext);\n } else {\n pattern += '/' + tmp;\n }\n }\n\n return {\n keys: keys,\n pattern: new RegExp('^' + pattern + (loose ? '(?=$|/)' : '/?$'), 'i'),\n };\n}\n\n/**\n * Test if a path matches a pattern\n */\nexport function matchPath(path: string, pattern: string | RegExp): boolean {\n const { pattern: regex } = parse(pattern);\n return regex.test(path);\n}\n","import type { IRBACProvider, EEUser } from '@mastra/core/auth/ee';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { MastraAuthConfig } from '@mastra/core/server';\nimport type { HonoRequest } from 'hono';\n\nimport { defaultAuthConfig } from './defaults';\nimport { parse } from './path-pattern';\n\n/**\n * Check if a route is a registered custom route that requires authentication.\n * Returns true only if the route is explicitly registered with requiresAuth: true.\n * Returns false if the route is not in the config or has requiresAuth: false.\n */\nexport const isProtectedCustomRoute = (\n path: string,\n method: string,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n if (!customRouteAuthConfig) {\n return false;\n }\n\n // Check exact match first (fast path for static routes)\n const exactRouteKey = `${method}:${path}`;\n if (customRouteAuthConfig.has(exactRouteKey)) {\n return customRouteAuthConfig.get(exactRouteKey) === true;\n }\n\n // Check exact match for ALL method\n const allRouteKey = `ALL:${path}`;\n if (customRouteAuthConfig.has(allRouteKey)) {\n return customRouteAuthConfig.get(allRouteKey) === true;\n }\n\n // Check pattern matches for dynamic routes (e.g., '/users/:id')\n for (const [routeKey, requiresAuth] of customRouteAuthConfig.entries()) {\n const colonIndex = routeKey.indexOf(':');\n if (colonIndex === -1) {\n continue; // Skip malformed keys\n }\n\n const routeMethod = routeKey.substring(0, colonIndex);\n const routePattern = routeKey.substring(colonIndex + 1);\n\n // Check if method matches (exact match or ALL)\n if (routeMethod !== method && routeMethod !== 'ALL') {\n continue;\n }\n\n // Check if path matches the pattern\n if (pathMatchesPattern(path, routePattern)) {\n return requiresAuth === true;\n }\n }\n\n return false; // Not in config = not a protected custom route\n};\n\n/**\n * Check if request is from dev playground\n * @param getHeader - Function to get header value from request\n * @param customRouteAuthConfig - Map of custom route auth configurations\n */\nexport const isDevPlaygroundRequest = (\n path: string,\n method: string,\n getHeader: (name: string) => string | undefined,\n authConfig: MastraAuthConfig,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n const protectedAccess = [...(defaultAuthConfig.protected || []), ...(authConfig.protected || [])];\n return (\n process.env.MASTRA_DEV === 'true' &&\n // Allow if path doesn't match protected patterns AND is not a protected custom route\n ((!isAnyMatch(path, method, protectedAccess) && !isProtectedCustomRoute(path, method, customRouteAuthConfig)) ||\n // Or if has playground header\n getHeader('x-mastra-dev-playground') === 'true')\n );\n};\n\nexport const isCustomRoutePublic = (\n path: string,\n method: string,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n if (!customRouteAuthConfig) {\n return false;\n }\n\n // Check exact match first (fast path for static routes)\n const exactRouteKey = `${method}:${path}`;\n if (customRouteAuthConfig.has(exactRouteKey)) {\n return !customRouteAuthConfig.get(exactRouteKey); // True when route opts out of auth\n }\n\n // Check exact match for ALL method\n const allRouteKey = `ALL:${path}`;\n if (customRouteAuthConfig.has(allRouteKey)) {\n return !customRouteAuthConfig.get(allRouteKey);\n }\n\n // Check pattern matches for dynamic routes (e.g., '/users/:id')\n for (const [routeKey, requiresAuth] of customRouteAuthConfig.entries()) {\n const colonIndex = routeKey.indexOf(':');\n if (colonIndex === -1) {\n continue; // Skip malformed keys\n }\n\n const routeMethod = routeKey.substring(0, colonIndex);\n const routePattern = routeKey.substring(colonIndex + 1);\n\n // Check if method matches (exact match or ALL)\n if (routeMethod !== method && routeMethod !== 'ALL') {\n continue;\n }\n\n // Check if path matches the pattern\n if (pathMatchesPattern(path, routePattern)) {\n return !requiresAuth; // True when route opts out of auth\n }\n }\n\n return false;\n};\n\n// NOTE: This uses isProtectedCustomRoute (default-allow for unknown paths) rather than\n// !isCustomRoutePublic (default-deny). This is intentional — all registered server and\n// custom routes are auth-checked via registerRoute/checkRouteAuth regardless of this\n// function. The '/api/*' protected pattern exists as a user-facing override mechanism.\n// The old default-deny logic incorrectly blocked non-API paths (e.g. '/', '/agents')\n// which prevented the studio login page from loading in production.\nexport const isProtectedPath = (\n path: string,\n method: string,\n authConfig: MastraAuthConfig,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n const protectedAccess = [...(defaultAuthConfig.protected || []), ...(authConfig.protected || [])];\n return isAnyMatch(path, method, protectedAccess) || isProtectedCustomRoute(path, method, customRouteAuthConfig);\n};\n\nexport const canAccessPublicly = (path: string, method: string, authConfig: MastraAuthConfig): boolean => {\n // Check if this path+method combination is publicly accessible\n const publicAccess = [...(defaultAuthConfig.public || []), ...(authConfig.public || [])];\n\n return isAnyMatch(path, method, publicAccess);\n};\n\nconst isAnyMatch = (\n path: string,\n method: string,\n patterns: MastraAuthConfig['protected'] | MastraAuthConfig['public'],\n): boolean => {\n if (!patterns) {\n return false;\n }\n\n for (const patternPathOrMethod of patterns) {\n if (patternPathOrMethod instanceof RegExp) {\n if (patternPathOrMethod.test(path)) {\n return true;\n }\n }\n\n if (typeof patternPathOrMethod === 'string' && pathMatchesPattern(path, patternPathOrMethod)) {\n return true;\n }\n\n if (Array.isArray(patternPathOrMethod) && patternPathOrMethod.length === 2) {\n const [pattern, methodOrMethods] = patternPathOrMethod;\n if (pathMatchesPattern(path, pattern) && matchesOrIncludes(methodOrMethods, method)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nexport const pathMatchesPattern = (path: string, pattern: string): boolean => {\n // Use regexparam for battle-tested path matching\n // Supports:\n // - Exact paths: '/api/users'\n // - Wildcards: '/api/agents/*' matches '/api/agents/123'\n // - Path parameters: '/users/:id' matches '/users/123'\n // - Optional parameters: '/users/:id?' matches '/users' and '/users/123'\n // - Mixed patterns: '/api/:version/users/:id/profile'\n const { pattern: regex } = parse(pattern);\n return regex.test(path);\n};\n\nexport const pathMatchesRule = (path: string, rulePath: string | RegExp | string[] | undefined): boolean => {\n if (!rulePath) return true; // No path specified means all paths\n\n if (typeof rulePath === 'string') {\n return pathMatchesPattern(path, rulePath);\n }\n\n if (rulePath instanceof RegExp) {\n return rulePath.test(path);\n }\n\n if (Array.isArray(rulePath)) {\n return rulePath.some(p => pathMatchesPattern(path, p));\n }\n\n return false;\n};\n\nexport const matchesOrIncludes = (values: string | string[], value: string): boolean => {\n if (typeof values === 'string') {\n return values === value;\n }\n\n if (Array.isArray(values)) {\n return values.includes(value);\n }\n\n return false;\n};\n\n// ── Core auth middleware ──\n// Framework-agnostic auth logic extracted from adapter middlewares.\n// Each adapter builds an AuthMiddlewareContext and delegates to coreAuthMiddleware.\n\nexport interface AuthMiddlewareContext {\n path: string;\n method: string;\n getHeader: (name: string) => string | undefined;\n mastra: Mastra;\n authConfig: MastraAuthConfig;\n customRouteAuthConfig?: Map<string, boolean>;\n requestContext: { get: (key: string) => unknown; set: (key: string, value: unknown) => void };\n rawRequest: unknown;\n token: string | null;\n buildAuthorizeContext: () => unknown;\n}\n\nexport type AuthResult = { action: 'next' } | { action: 'error'; status: number; body: Record<string, unknown> };\n\nconst pass: AuthResult = { action: 'next' };\n\nexport interface GetAuthenticatedUserOptions {\n mastra: Mastra;\n token: string;\n request: Request | HonoRequest;\n}\n\nexport const getAuthenticatedUser = async <TUser = unknown>({\n mastra,\n token,\n request,\n}: GetAuthenticatedUserOptions): Promise<TUser | null> => {\n const normalizedToken = token.replace(/^Bearer\\s+/i, '').trim();\n if (!normalizedToken) {\n return null;\n }\n\n const authConfig = mastra.getServer()?.auth;\n if (!authConfig || typeof authConfig.authenticateToken !== 'function') {\n return null;\n }\n\n return (await authConfig.authenticateToken(normalizedToken, request as any)) as TUser | null;\n};\n\n/**\n * Single auth middleware: authenticate → authorize.\n * Skip checks (dev playground, unprotected path, public path) are evaluated once.\n */\nexport const coreAuthMiddleware = async (ctx: AuthMiddlewareContext): Promise<AuthResult> => {\n const { path, method, getHeader, mastra, authConfig, customRouteAuthConfig, requestContext, rawRequest, token } = ctx;\n\n // ── Skip checks (evaluated once) ──\n\n // Only bypass auth for dev playground when no real auth provider is configured.\n // When auth IS configured (has authenticateToken), we need the full auth flow\n // so user/roles/permissions are set in requestContext.\n const hasAuthProvider = typeof authConfig.authenticateToken === 'function';\n if (!hasAuthProvider && isDevPlaygroundRequest(path, method, getHeader, authConfig, customRouteAuthConfig)) {\n return pass;\n }\n\n if (!isProtectedPath(path, method, authConfig, customRouteAuthConfig)) {\n return pass;\n }\n\n if (canAccessPublicly(path, method, authConfig)) {\n return pass;\n }\n\n // ── Authentication ──\n\n let user: unknown;\n\n try {\n if (typeof authConfig.authenticateToken === 'function') {\n user = await authConfig.authenticateToken(token ?? '', rawRequest as any);\n } else {\n throw new Error('No token verification method configured');\n }\n\n if (!user) {\n return { action: 'error', status: 401, body: { error: 'Invalid or expired token' } };\n }\n\n requestContext.set('user', user);\n\n try {\n const serverConfig = mastra.getServer();\n const rbacProvider = serverConfig?.rbac as IRBACProvider<EEUser> | undefined;\n\n if (rbacProvider) {\n if (!user || typeof user !== 'object' || !('id' in user)) {\n mastra.getLogger()?.warn('RBAC: authenticated user missing required \"id\" field, skipping permission loading');\n } else {\n const permissions = await rbacProvider.getPermissions(user as EEUser);\n requestContext.set('userPermissions', permissions);\n\n const roles = await rbacProvider.getRoles(user as EEUser);\n requestContext.set('userRoles', roles);\n }\n }\n } catch (rbacError) {\n mastra.getLogger()?.error('RBAC: failed to load user permissions/roles', {\n error: rbacError instanceof Error ? { message: rbacError.message, stack: rbacError.stack } : rbacError,\n });\n }\n } catch (err) {\n mastra.getLogger()?.error('Authentication error', {\n error: err instanceof Error ? { message: err.message, stack: err.stack } : err,\n });\n return { action: 'error', status: 401, body: { error: 'Invalid or expired token' } };\n }\n\n // ── Authorization ──\n\n if ('authorizeUser' in authConfig && typeof authConfig.authorizeUser === 'function') {\n try {\n const isAuthorized = await authConfig.authorizeUser(user, rawRequest as any);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' } };\n }\n } catch (err) {\n mastra.getLogger()?.error('Authorization error in authorizeUser', {\n error: err instanceof Error ? { message: err.message, stack: err.stack } : err,\n });\n return { action: 'error', status: 500, body: { error: 'Authorization error' } };\n }\n } else if ('authorize' in authConfig && typeof authConfig.authorize === 'function') {\n try {\n const authorizeCtx = ctx.buildAuthorizeContext();\n const isAuthorized = await authConfig.authorize(path, method, user, authorizeCtx as any);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' } };\n }\n } catch (err) {\n mastra.getLogger()?.error('Authorization error in authorize', {\n error: err instanceof Error ? { message: err.message, stack: err.stack } : err,\n path,\n method,\n });\n return { action: 'error', status: 500, body: { error: 'Authorization error' } };\n }\n } else if ('rules' in authConfig && authConfig.rules && authConfig.rules.length > 0) {\n const isAuthorized = await checkRules(authConfig.rules, path, method, user);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' } };\n }\n } else {\n // No explicit authorization configured (authorizeUser, authorize, or rules)\n // Check if RBAC is configured - if not, allow authenticated users through\n // (auth-only mode = authenticated users get full access)\n const rbacProvider = mastra.getServer()?.rbac;\n if (rbacProvider) {\n if (defaultAuthConfig.rules && defaultAuthConfig.rules.length > 0) {\n const isAuthorized = await checkRules(defaultAuthConfig.rules, path, method, user);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' } };\n }\n } else {\n return { action: 'error', status: 403, body: { error: 'Access denied' } };\n }\n }\n }\n\n return pass;\n};\n\n// Check authorization rules\nexport const checkRules = async (\n rules: MastraAuthConfig['rules'],\n path: string,\n method: string,\n user: unknown,\n): Promise<boolean> => {\n // Go through rules in order (first match wins)\n for (const i in rules || []) {\n const rule = rules?.[i]!;\n // Check if rule applies to this path\n if (!pathMatchesRule(path, rule.path)) {\n continue;\n }\n\n // Check if rule applies to this method\n if (rule.methods && !matchesOrIncludes(rule.methods, method)) {\n continue;\n }\n\n // Rule matches, check conditions\n const condition = rule.condition;\n if (typeof condition === 'function') {\n const allowed = await Promise.resolve()\n .then(() => condition(user))\n .catch(() => false);\n\n if (allowed) {\n return true;\n }\n } else if (rule.allow) {\n return true;\n }\n }\n\n // No matching rules, deny by default\n return false;\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { listScorersResponseSchema, scorerIdPathParams, scorerEntrySchema, scoresWithPaginationResponseSchema, listScoresByRunIdQuerySchema, listScoresByScorerIdQuerySchema, listScoresByEntityIdQuerySchema, entityPathParams, saveScoreResponseSchema, saveScoreBodySchema } from './chunk-
|
|
1
|
+
import { listScorersResponseSchema, scorerIdPathParams, scorerEntrySchema, scoresWithPaginationResponseSchema, listScoresByRunIdQuerySchema, listScoresByScorerIdQuerySchema, listScoresByEntityIdQuerySchema, entityPathParams, saveScoreResponseSchema, saveScoreBodySchema } from './chunk-APJA4LIB.js';
|
|
2
2
|
import { getAgentFromSystem } from './chunk-EL2DRC3C.js';
|
|
3
3
|
import { runIdSchema } from './chunk-USZD5AX2.js';
|
|
4
4
|
import { handleError } from './chunk-NA7LKQPZ.js';
|
|
@@ -39,7 +39,8 @@ async function listScorersFromSystem({
|
|
|
39
39
|
...scorer,
|
|
40
40
|
agentNames: [agent.name],
|
|
41
41
|
agentIds: [agent.id],
|
|
42
|
-
isRegistered: false
|
|
42
|
+
isRegistered: false,
|
|
43
|
+
source: scorer.scorer.source ?? "code"
|
|
43
44
|
});
|
|
44
45
|
}
|
|
45
46
|
}
|
|
@@ -92,7 +93,8 @@ async function listScorersFromSystem({
|
|
|
92
93
|
agentNames: [],
|
|
93
94
|
...scorer,
|
|
94
95
|
workflowIds: [workflowId],
|
|
95
|
-
isRegistered: false
|
|
96
|
+
isRegistered: false,
|
|
97
|
+
source: scorer.scorer.source ?? "code"
|
|
96
98
|
});
|
|
97
99
|
}
|
|
98
100
|
}
|
|
@@ -109,7 +111,8 @@ async function listScorersFromSystem({
|
|
|
109
111
|
agentIds: [],
|
|
110
112
|
agentNames: [],
|
|
111
113
|
workflowIds: [],
|
|
112
|
-
isRegistered: true
|
|
114
|
+
isRegistered: true,
|
|
115
|
+
source: scorer.source ?? "code"
|
|
113
116
|
});
|
|
114
117
|
}
|
|
115
118
|
}
|
|
@@ -293,5 +296,5 @@ var SAVE_SCORE_ROUTE = createRoute({
|
|
|
293
296
|
});
|
|
294
297
|
|
|
295
298
|
export { GET_SCORER_ROUTE, LIST_SCORERS_ROUTE, LIST_SCORES_BY_ENTITY_ID_ROUTE, LIST_SCORES_BY_RUN_ID_ROUTE, LIST_SCORES_BY_SCORER_ID_ROUTE, SAVE_SCORE_ROUTE, scores_exports };
|
|
296
|
-
//# sourceMappingURL=chunk-
|
|
297
|
-
//# sourceMappingURL=chunk-
|
|
299
|
+
//# sourceMappingURL=chunk-R344LGXP.js.map
|
|
300
|
+
//# sourceMappingURL=chunk-R344LGXP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/scores.ts"],"names":[],"mappings":"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","file":"chunk-R344LGXP.js","sourcesContent":["import type { MastraScorerEntry, ScoreRowData } from '@mastra/core/evals';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { StoragePagination } from '@mastra/core/storage';\nimport { HTTPException } from '../http-exception';\nimport { runIdSchema } from '../schemas/common';\nimport {\n listScorersResponseSchema,\n scorerEntrySchema,\n scorerIdPathParams,\n entityPathParams,\n listScoresByRunIdQuerySchema,\n listScoresByScorerIdQuerySchema,\n listScoresByEntityIdQuerySchema,\n saveScoreBodySchema,\n scoresWithPaginationResponseSchema,\n saveScoreResponseSchema,\n} from '../schemas/scores';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\n\nasync function listScorersFromSystem({\n mastra,\n requestContext,\n}: Context & {\n requestContext: RequestContext;\n}) {\n const agents = mastra.listAgents();\n const workflows = mastra.listWorkflows();\n\n const scorersMap = new Map<\n string,\n MastraScorerEntry & {\n agentIds: string[];\n agentNames: string[];\n workflowIds: string[];\n isRegistered: boolean;\n source: 'code' | 'stored';\n }\n >();\n\n // Helper function to process an agent's scorers\n const processAgentScorers = async (agent: {\n id: string;\n name: string;\n listScorers: (typeof agents)[string]['listScorers'];\n }) => {\n const scorers =\n (await agent.listScorers({\n requestContext,\n })) || {};\n\n if (Object.keys(scorers).length > 0) {\n for (const [_scorerId, scorer] of Object.entries(scorers)) {\n const scorerId = scorer.scorer.id;\n if (scorersMap.has(scorerId)) {\n scorersMap.get(scorerId)?.agentIds.push(agent.id);\n scorersMap.get(scorerId)?.agentNames.push(agent.name);\n } else {\n scorersMap.set(scorerId, {\n workflowIds: [],\n ...scorer,\n agentNames: [agent.name],\n agentIds: [agent.id],\n isRegistered: false,\n source: scorer.scorer.source ?? 'code',\n });\n }\n }\n }\n };\n\n // Process code-defined agents\n for (const [_, agent] of Object.entries(agents)) {\n await processAgentScorers(agent);\n }\n\n // Process stored agents (database-backed agents)\n try {\n const editor = mastra.getEditor();\n const storedAgentsResult = await editor?.agent.list();\n if (storedAgentsResult?.agents) {\n for (const storedAgentConfig of storedAgentsResult.agents) {\n try {\n const agent = await editor?.agent.getById(storedAgentConfig.id);\n if (agent) {\n await processAgentScorers(agent);\n }\n } catch {\n // Skip individual agents that fail to hydrate\n }\n }\n }\n } catch {\n // Silently ignore if storage is not configured - not all setups have storage\n }\n\n // Process stored scorers (standalone CMS-created scorers)\n try {\n const editor = mastra.getEditor();\n const storedScorersResult = await editor?.scorer.list();\n if (storedScorersResult?.scorerDefinitions) {\n for (const storedScorerConfig of storedScorersResult.scorerDefinitions) {\n try {\n await editor?.scorer.getById(storedScorerConfig.id);\n } catch {\n // Skip individual scorers that fail to hydrate\n }\n }\n }\n } catch {\n // Silently ignore if storage is not configured\n }\n\n for (const [workflowId, workflow] of Object.entries(workflows)) {\n const scorers =\n (await workflow.listScorers({\n requestContext,\n })) || {};\n\n if (Object.keys(scorers).length > 0) {\n for (const [_scorerId, scorer] of Object.entries(scorers)) {\n const scorerName = scorer.scorer.name;\n if (scorersMap.has(scorerName)) {\n scorersMap.get(scorerName)?.workflowIds.push(workflowId);\n } else {\n scorersMap.set(scorerName, {\n agentIds: [],\n agentNames: [],\n ...scorer,\n workflowIds: [workflowId],\n isRegistered: false,\n source: scorer.scorer.source ?? 'code',\n });\n }\n }\n }\n }\n\n const registeredScorers = await mastra.listScorers();\n for (const [_scorerId, scorer] of Object.entries(registeredScorers || {})) {\n const scorerId = scorer.id;\n if (scorersMap.has(scorerId)) {\n scorersMap.get(scorerId)!.isRegistered = true;\n } else {\n scorersMap.set(scorerId, {\n scorer: scorer,\n agentIds: [],\n agentNames: [],\n workflowIds: [],\n isRegistered: true,\n source: scorer.source ?? 'code',\n });\n }\n }\n\n return Object.fromEntries(scorersMap.entries());\n}\n\n// Legacy function to get trace and span details\nfunction getTraceDetails(traceIdWithSpanId?: string) {\n if (!traceIdWithSpanId) {\n return {};\n }\n\n const [traceId, spanId] = traceIdWithSpanId.split('-');\n\n return {\n ...(traceId ? { traceId } : {}),\n ...(spanId ? { spanId } : {}),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_SCORERS_ROUTE = createRoute({\n method: 'GET',\n path: '/scores/scorers',\n responseType: 'json',\n responseSchema: listScorersResponseSchema,\n summary: 'List all scorers',\n description: 'Returns a list of all registered scorers with their configuration and associated agents and workflows',\n tags: ['Scoring'],\n requiresAuth: true,\n handler: (async ({ mastra, requestContext }: any) => {\n const scorers = await listScorersFromSystem({\n mastra,\n requestContext,\n });\n return scorers;\n }) as any,\n});\n\nexport const GET_SCORER_ROUTE = createRoute({\n method: 'GET',\n path: '/scores/scorers/:scorerId',\n responseType: 'json',\n pathParamSchema: scorerIdPathParams,\n responseSchema: scorerEntrySchema.nullable(),\n summary: 'Get scorer by ID',\n description: 'Returns details for a specific scorer including its configuration and associations',\n tags: ['Scoring'],\n requiresAuth: true,\n handler: (async ({ mastra, scorerId, requestContext }: any) => {\n const scorers = await listScorersFromSystem({\n mastra,\n requestContext,\n });\n\n const scorer = scorers[scorerId];\n\n if (!scorer) {\n return null;\n }\n\n return scorer;\n }) as any,\n});\n\nexport const LIST_SCORES_BY_RUN_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/scores/run/:runId',\n responseType: 'json',\n pathParamSchema: runIdSchema,\n queryParamSchema: listScoresByRunIdQuerySchema,\n responseSchema: scoresWithPaginationResponseSchema,\n summary: 'List scores by run ID',\n description: 'Returns all scores for a specific execution run',\n tags: ['Scoring'],\n requiresAuth: true,\n handler: async ({ mastra, runId, ...params }) => {\n try {\n const { page, perPage } = params;\n const pagination: StoragePagination = {\n page: page ?? 0,\n perPage: perPage ?? 10,\n };\n const scores = await mastra.getStorage()?.getStore('scores');\n const scoreResults = (await scores?.listScoresByRunId?.({\n runId,\n pagination,\n })) || { pagination: { total: 0, page: 0, perPage: 0, hasMore: false }, scores: [] };\n return {\n pagination: scoreResults.pagination,\n scores: scoreResults.scores.map((score: ScoreRowData) => ({ ...score, ...getTraceDetails(score.traceId) })),\n };\n } catch (error) {\n return handleError(error, 'Error getting scores by run id');\n }\n },\n});\n\nexport const LIST_SCORES_BY_SCORER_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/scores/scorer/:scorerId',\n responseType: 'json',\n pathParamSchema: scorerIdPathParams,\n queryParamSchema: listScoresByScorerIdQuerySchema,\n responseSchema: scoresWithPaginationResponseSchema,\n summary: 'List scores by scorer ID',\n description: 'Returns all scores generated by a specific scorer',\n tags: ['Scoring'],\n requiresAuth: true,\n handler: async ({ mastra, scorerId, ...params }) => {\n try {\n const { page, perPage, entityId, entityType } = params;\n const filters = Object.fromEntries(Object.entries({ entityId, entityType }).filter(([_, v]) => v !== undefined));\n const scores = await mastra.getStorage()?.getStore('scores');\n const scoreResults = (await scores?.listScoresByScorerId?.({\n scorerId,\n pagination: { page: page ?? 0, perPage: perPage ?? 10 },\n ...filters,\n })) || { pagination: { total: 0, page: 0, perPage: 0, hasMore: false }, scores: [] };\n return {\n pagination: scoreResults.pagination,\n scores: scoreResults.scores.map((score: ScoreRowData) => ({ ...score, ...getTraceDetails(score.traceId) })),\n };\n } catch (error) {\n return handleError(error, 'Error getting scores by scorer id');\n }\n },\n});\n\nexport const LIST_SCORES_BY_ENTITY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/scores/entity/:entityType/:entityId',\n responseType: 'json',\n pathParamSchema: entityPathParams,\n queryParamSchema: listScoresByEntityIdQuerySchema,\n responseSchema: scoresWithPaginationResponseSchema,\n summary: 'List scores by entity ID',\n description: 'Returns all scores for a specific entity (agent or workflow)',\n tags: ['Scoring'],\n requiresAuth: true,\n handler: async ({ mastra, entityId, entityType, ...params }) => {\n try {\n const { page, perPage } = params;\n let entityIdToUse = entityId;\n\n if (entityType === 'AGENT') {\n const agent = await getAgentFromSystem({ mastra, agentId: entityId });\n entityIdToUse = agent.id;\n } else if (entityType === 'WORKFLOW') {\n const workflow = mastra.getWorkflowById(entityId);\n entityIdToUse = workflow.id;\n }\n\n const pagination: StoragePagination = {\n page: page ?? 0,\n perPage: perPage ?? 10,\n };\n\n const scoresStore = await mastra.getStorage()?.getStore('scores');\n const scoreResults = (await scoresStore?.listScoresByEntityId?.({\n entityId: entityIdToUse,\n entityType,\n pagination,\n })) || { pagination: { total: 0, page: 0, perPage: 0, hasMore: false }, scores: [] };\n\n return {\n pagination: scoreResults.pagination,\n scores: scoreResults.scores.map((score: ScoreRowData) => ({ ...score, ...getTraceDetails(score.traceId) })),\n };\n } catch (error) {\n return handleError(error, 'Error getting scores by entity id');\n }\n },\n});\n\nexport const SAVE_SCORE_ROUTE = createRoute({\n method: 'POST',\n path: '/scores',\n responseType: 'json',\n bodySchema: saveScoreBodySchema,\n responseSchema: saveScoreResponseSchema,\n summary: 'Save score',\n description: 'Saves a new score record to storage',\n tags: ['Scoring'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n try {\n const { score } = params as { score: ScoreRowData };\n const scoresStore = await mastra.getStorage()?.getStore('scores');\n const result = await scoresStore?.saveScore?.(score);\n if (!result) {\n throw new HTTPException(500, { message: 'Storage not configured' });\n }\n return result;\n } catch (error) {\n return handleError(error, 'Error saving score');\n }\n },\n});\n"]}
|
|
@@ -3,6 +3,10 @@ import z from 'zod';
|
|
|
3
3
|
|
|
4
4
|
var jsonSchemaObject = z.lazy(() => z.record(z.string(), z.unknown()));
|
|
5
5
|
var jsonSchemaField = z.union([jsonSchemaObject, z.null()]).optional();
|
|
6
|
+
var datasetItemSourceSchema = z.object({
|
|
7
|
+
type: z.enum(["csv", "json", "trace", "llm", "experiment-result"]).describe("How this item was created"),
|
|
8
|
+
referenceId: z.string().optional().describe("Reference identifier (e.g., trace id, csv filename)")
|
|
9
|
+
}).optional().describe("Source/provenance of this dataset item");
|
|
6
10
|
var datasetIdPathParams = z.object({
|
|
7
11
|
datasetId: z.string().describe("Unique identifier for the dataset")
|
|
8
12
|
});
|
|
@@ -16,6 +20,11 @@ var datasetAndExperimentIdPathParams = z.object({
|
|
|
16
20
|
datasetId: z.string().describe("Unique identifier for the dataset"),
|
|
17
21
|
experimentId: z.string().describe("Unique identifier for the experiment")
|
|
18
22
|
});
|
|
23
|
+
var experimentResultIdPathParams = z.object({
|
|
24
|
+
datasetId: z.string().describe("Unique identifier for the dataset"),
|
|
25
|
+
experimentId: z.string().describe("Unique identifier for the experiment"),
|
|
26
|
+
resultId: z.string().describe("Unique identifier for the experiment result")
|
|
27
|
+
});
|
|
19
28
|
var datasetAndItemIdPathParams = z.object({
|
|
20
29
|
datasetId: z.string().describe("Unique identifier for the dataset"),
|
|
21
30
|
itemId: z.string().describe("Unique identifier for the dataset item")
|
|
@@ -37,7 +46,9 @@ var createDatasetBodySchema = z.object({
|
|
|
37
46
|
metadata: z.record(z.string(), z.unknown()).optional().describe("Additional metadata"),
|
|
38
47
|
inputSchema: jsonSchemaField.describe("JSON Schema for validating item input"),
|
|
39
48
|
groundTruthSchema: jsonSchemaField.describe("JSON Schema for validating item groundTruth"),
|
|
40
|
-
requestContextSchema: jsonSchemaField.describe("JSON Schema describing expected request context shape")
|
|
49
|
+
requestContextSchema: jsonSchemaField.describe("JSON Schema describing expected request context shape"),
|
|
50
|
+
targetType: z.string().optional().describe("Target entity type (e.g. agent, workflow, scorer)"),
|
|
51
|
+
targetIds: z.array(z.string()).optional().describe("IDs of target entities this dataset is attached to")
|
|
41
52
|
});
|
|
42
53
|
var updateDatasetBodySchema = z.object({
|
|
43
54
|
name: z.string().optional().describe("Name of the dataset"),
|
|
@@ -45,25 +56,31 @@ var updateDatasetBodySchema = z.object({
|
|
|
45
56
|
metadata: z.record(z.string(), z.unknown()).optional().describe("Additional metadata"),
|
|
46
57
|
inputSchema: jsonSchemaField.describe("JSON Schema for validating item input"),
|
|
47
58
|
groundTruthSchema: jsonSchemaField.describe("JSON Schema for validating item groundTruth"),
|
|
48
|
-
requestContextSchema: jsonSchemaField.describe("JSON Schema describing expected request context shape")
|
|
59
|
+
requestContextSchema: jsonSchemaField.describe("JSON Schema describing expected request context shape"),
|
|
60
|
+
tags: z.array(z.string()).optional().describe("Tag definitions for categorizing experiment results"),
|
|
61
|
+
targetType: z.string().optional().describe("Target entity type (e.g. agent, workflow, scorer)"),
|
|
62
|
+
targetIds: z.array(z.string()).optional().describe("IDs of target entities this dataset is attached to")
|
|
49
63
|
});
|
|
50
64
|
var addItemBodySchema = z.object({
|
|
51
65
|
input: z.unknown().describe("Input data for the dataset item"),
|
|
52
66
|
groundTruth: z.unknown().optional().describe("Expected output for comparison"),
|
|
53
67
|
requestContext: z.record(z.string(), z.unknown()).optional().describe("Request context preset for this item"),
|
|
54
|
-
metadata: z.record(z.string(), z.unknown()).optional().describe("Additional metadata")
|
|
68
|
+
metadata: z.record(z.string(), z.unknown()).optional().describe("Additional metadata"),
|
|
69
|
+
source: datasetItemSourceSchema
|
|
55
70
|
});
|
|
56
71
|
var updateItemBodySchema = z.object({
|
|
57
72
|
input: z.unknown().optional().describe("Input data for the dataset item"),
|
|
58
73
|
groundTruth: z.unknown().optional().describe("Expected output for comparison"),
|
|
59
74
|
requestContext: z.record(z.string(), z.unknown()).optional().describe("Request context preset for this item"),
|
|
60
|
-
metadata: z.record(z.string(), z.unknown()).optional().describe("Additional metadata")
|
|
75
|
+
metadata: z.record(z.string(), z.unknown()).optional().describe("Additional metadata"),
|
|
76
|
+
source: datasetItemSourceSchema
|
|
61
77
|
});
|
|
62
78
|
var triggerExperimentBodySchema = z.object({
|
|
63
79
|
targetType: z.enum(["agent", "workflow", "scorer"]).describe("Type of target to run against"),
|
|
64
80
|
targetId: z.string().describe("ID of the target"),
|
|
65
81
|
scorerIds: z.array(z.string()).optional().describe("IDs of scorers to apply"),
|
|
66
82
|
version: z.coerce.number().int().optional().describe("Pin to specific dataset version"),
|
|
83
|
+
agentVersion: z.string().optional().describe("Agent version ID to use for experiment"),
|
|
67
84
|
maxConcurrency: z.number().optional().describe("Maximum concurrent executions"),
|
|
68
85
|
requestContext: z.record(z.string(), z.unknown()).optional().describe("Global request context passed to the target")
|
|
69
86
|
});
|
|
@@ -79,6 +96,9 @@ var datasetResponseSchema = z.object({
|
|
|
79
96
|
inputSchema: z.record(z.string(), z.unknown()).optional(),
|
|
80
97
|
groundTruthSchema: z.record(z.string(), z.unknown()).optional(),
|
|
81
98
|
requestContextSchema: z.record(z.string(), z.unknown()).optional(),
|
|
99
|
+
tags: z.array(z.string()).optional().nullable(),
|
|
100
|
+
targetType: z.string().optional().nullable(),
|
|
101
|
+
targetIds: z.array(z.string()).optional().nullable(),
|
|
82
102
|
version: z.number().int(),
|
|
83
103
|
createdAt: z.coerce.date(),
|
|
84
104
|
updatedAt: z.coerce.date()
|
|
@@ -91,6 +111,7 @@ var datasetItemResponseSchema = z.object({
|
|
|
91
111
|
groundTruth: z.unknown().optional(),
|
|
92
112
|
requestContext: z.record(z.string(), z.unknown()).optional(),
|
|
93
113
|
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
114
|
+
source: datasetItemSourceSchema,
|
|
94
115
|
createdAt: z.coerce.date(),
|
|
95
116
|
updatedAt: z.coerce.date()
|
|
96
117
|
});
|
|
@@ -98,6 +119,7 @@ var experimentResponseSchema = z.object({
|
|
|
98
119
|
id: z.string(),
|
|
99
120
|
datasetId: z.string().nullable(),
|
|
100
121
|
datasetVersion: z.number().int().nullable(),
|
|
122
|
+
agentVersion: z.string().nullable().optional(),
|
|
101
123
|
targetType: z.enum(["agent", "workflow", "scorer", "processor"]),
|
|
102
124
|
targetId: z.string(),
|
|
103
125
|
name: z.string().optional(),
|
|
@@ -137,8 +159,14 @@ var experimentResultResponseSchema = z.object({
|
|
|
137
159
|
completedAt: z.coerce.date(),
|
|
138
160
|
retryCount: z.number(),
|
|
139
161
|
traceId: z.string().nullable(),
|
|
162
|
+
status: z.enum(["needs-review", "reviewed", "complete"]).nullable().optional(),
|
|
163
|
+
tags: z.array(z.string()).nullable().optional(),
|
|
140
164
|
createdAt: z.coerce.date()
|
|
141
165
|
});
|
|
166
|
+
var updateExperimentResultBodySchema = z.object({
|
|
167
|
+
status: z.enum(["needs-review", "reviewed", "complete"]).nullable().optional(),
|
|
168
|
+
tags: z.array(z.string()).optional()
|
|
169
|
+
});
|
|
142
170
|
var comparisonItemSchema = z.object({
|
|
143
171
|
itemId: z.string(),
|
|
144
172
|
input: z.unknown().nullable(),
|
|
@@ -238,7 +266,8 @@ var batchInsertItemsBodySchema = z.object({
|
|
|
238
266
|
input: z.unknown(),
|
|
239
267
|
groundTruth: z.unknown().optional(),
|
|
240
268
|
requestContext: z.record(z.string(), z.unknown()).optional(),
|
|
241
|
-
metadata: z.record(z.string(), z.unknown()).optional()
|
|
269
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
270
|
+
source: datasetItemSourceSchema
|
|
242
271
|
})
|
|
243
272
|
)
|
|
244
273
|
});
|
|
@@ -253,7 +282,56 @@ var batchDeleteItemsResponseSchema = z.object({
|
|
|
253
282
|
success: z.boolean(),
|
|
254
283
|
deletedCount: z.number()
|
|
255
284
|
});
|
|
285
|
+
var generateItemsBodySchema = z.object({
|
|
286
|
+
modelId: z.string().describe('Model identifier in "provider/model" format (e.g., "openai/gpt-4o")'),
|
|
287
|
+
prompt: z.string().describe("Description of the kind of test data to generate"),
|
|
288
|
+
count: z.number().int().min(1).max(50).default(5).describe("Number of items to generate"),
|
|
289
|
+
agentContext: z.object({
|
|
290
|
+
description: z.string().optional(),
|
|
291
|
+
instructions: z.string().optional(),
|
|
292
|
+
tools: z.array(z.string()).optional()
|
|
293
|
+
}).optional().describe("Context about the agent to generate relevant test data")
|
|
294
|
+
});
|
|
295
|
+
var generatedItemSchema = z.object({
|
|
296
|
+
input: z.unknown(),
|
|
297
|
+
groundTruth: z.unknown().optional()
|
|
298
|
+
});
|
|
299
|
+
var generateItemsResponseSchema = z.object({
|
|
300
|
+
items: z.array(generatedItemSchema)
|
|
301
|
+
});
|
|
302
|
+
var clusterFailuresBodySchema = z.object({
|
|
303
|
+
modelId: z.string().describe('Model identifier in "provider/model" format (e.g., "openai/gpt-4o")'),
|
|
304
|
+
items: z.array(
|
|
305
|
+
z.object({
|
|
306
|
+
id: z.string(),
|
|
307
|
+
input: z.unknown(),
|
|
308
|
+
output: z.unknown().optional(),
|
|
309
|
+
error: z.string().optional(),
|
|
310
|
+
scores: z.record(z.string(), z.number()).optional(),
|
|
311
|
+
existingTags: z.array(z.string()).optional().describe("Tags already applied to this item")
|
|
312
|
+
})
|
|
313
|
+
).min(1).max(200).describe("Failure items to cluster"),
|
|
314
|
+
availableTags: z.array(z.string()).optional().describe("Existing tag vocabulary from the dataset. The LLM should prefer reusing these tags when applicable."),
|
|
315
|
+
prompt: z.string().optional().describe('Optional user instructions to guide the analysis (e.g., "focus on tool usage failures")')
|
|
316
|
+
});
|
|
317
|
+
var failureClusterSchema = z.object({
|
|
318
|
+
id: z.string().describe("A unique cluster identifier"),
|
|
319
|
+
label: z.string().describe("Short label for this failure pattern"),
|
|
320
|
+
description: z.string().describe("Description of the common pattern"),
|
|
321
|
+
itemIds: z.array(z.string()).describe("IDs of items belonging to this cluster")
|
|
322
|
+
});
|
|
323
|
+
var clusterFailuresResponseSchema = z.object({
|
|
324
|
+
clusters: z.array(failureClusterSchema),
|
|
325
|
+
/** Per-item proposed tag assignments. Each entry maps an item ID to the tags the LLM suggests adding. */
|
|
326
|
+
proposedTags: z.array(
|
|
327
|
+
z.object({
|
|
328
|
+
itemId: z.string(),
|
|
329
|
+
tags: z.array(z.string()),
|
|
330
|
+
reason: z.string().describe("Brief explanation of why these tags were assigned to this item")
|
|
331
|
+
})
|
|
332
|
+
).optional()
|
|
333
|
+
});
|
|
256
334
|
|
|
257
|
-
export { addItemBodySchema, batchDeleteItemsBodySchema, batchDeleteItemsResponseSchema, batchInsertItemsBodySchema, batchInsertItemsResponseSchema, compareExperimentsBodySchema, comparisonResponseSchema, createDatasetBodySchema, datasetAndExperimentIdPathParams, datasetAndItemIdPathParams, datasetIdPathParams, datasetItemResponseSchema, datasetItemVersionPathParams, datasetResponseSchema, datasetVersionResponseSchema, experimentIdPathParams, experimentResponseSchema, experimentResultResponseSchema, experimentSummaryResponseSchema, itemIdPathParams, itemVersionResponseSchema, listDatasetVersionsResponseSchema, listDatasetsResponseSchema, listExperimentResultsResponseSchema, listExperimentsResponseSchema, listItemVersionsResponseSchema, listItemsQuerySchema, listItemsResponseSchema, paginationQuerySchema, scorerResultSchema, triggerExperimentBodySchema, updateDatasetBodySchema, updateItemBodySchema };
|
|
258
|
-
//# sourceMappingURL=chunk-
|
|
259
|
-
//# sourceMappingURL=chunk-
|
|
335
|
+
export { addItemBodySchema, batchDeleteItemsBodySchema, batchDeleteItemsResponseSchema, batchInsertItemsBodySchema, batchInsertItemsResponseSchema, clusterFailuresBodySchema, clusterFailuresResponseSchema, compareExperimentsBodySchema, comparisonResponseSchema, createDatasetBodySchema, datasetAndExperimentIdPathParams, datasetAndItemIdPathParams, datasetIdPathParams, datasetItemResponseSchema, datasetItemVersionPathParams, datasetResponseSchema, datasetVersionResponseSchema, experimentIdPathParams, experimentResponseSchema, experimentResultIdPathParams, experimentResultResponseSchema, experimentSummaryResponseSchema, generateItemsBodySchema, generateItemsResponseSchema, itemIdPathParams, itemVersionResponseSchema, listDatasetVersionsResponseSchema, listDatasetsResponseSchema, listExperimentResultsResponseSchema, listExperimentsResponseSchema, listItemVersionsResponseSchema, listItemsQuerySchema, listItemsResponseSchema, paginationQuerySchema, scorerResultSchema, triggerExperimentBodySchema, updateDatasetBodySchema, updateExperimentResultBodySchema, updateItemBodySchema };
|
|
336
|
+
//# sourceMappingURL=chunk-RFO7PBA6.js.map
|
|
337
|
+
//# sourceMappingURL=chunk-RFO7PBA6.js.map
|