@mastra/server 1.16.0-alpha.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 +37 -0
- package/dist/{chunk-P4GHYEST.js → chunk-K5SP7SOS.js} +18 -3
- package/dist/chunk-K5SP7SOS.js.map +1 -0
- package/dist/{chunk-AOAIJJY6.cjs → chunk-N6ZHI7A3.cjs} +62 -60
- 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-7LQDR5AI.js → chunk-RFO7PBA6.js} +4 -2
- package/dist/chunk-RFO7PBA6.js.map +1 -0
- package/dist/{chunk-I3QRIKI5.js → chunk-VD26CDFT.js} +5 -3
- package/dist/chunk-VD26CDFT.js.map +1 -0
- package/dist/{chunk-N5RFB7A4.cjs → chunk-ZHVL7YBO.cjs} +4 -2
- 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 +24 -24
- package/dist/server/handlers/datasets.d.ts +6 -0
- package/dist/server/handlers/datasets.d.ts.map +1 -1
- package/dist/server/handlers/datasets.js +1 -1
- package/dist/server/schemas/datasets.d.ts +3 -0
- package/dist/server/schemas/datasets.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +40 -40
- package/dist/server/schemas/index.js +1 -1
- package/dist/server/server-adapter/index.cjs +26 -26
- package/dist/server/server-adapter/index.js +2 -2
- package/dist/server/server-adapter/routes/datasets.d.ts +6 -0
- package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/chunk-7LQDR5AI.js.map +0 -1
- package/dist/chunk-AOAIJJY6.cjs.map +0 -1
- package/dist/chunk-I3QRIKI5.js.map +0 -1
- package/dist/chunk-N5RFB7A4.cjs.map +0 -1
- package/dist/chunk-P4GHYEST.js.map +0 -1
- package/dist/chunk-QVMLEJ63.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# @mastra/server
|
|
2
2
|
|
|
3
|
+
## 1.16.0-alpha.1
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Added `getAuthenticatedUser()` to `@mastra/server/auth` so server middleware can resolve the configured auth user without changing route auth behavior. ([#14458](https://github.com/mastra-ai/mastra/pull/14458))
|
|
8
|
+
|
|
9
|
+
**Example**
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { getAuthenticatedUser } from '@mastra/server/auth';
|
|
13
|
+
|
|
14
|
+
const user = await getAuthenticatedUser({
|
|
15
|
+
mastra,
|
|
16
|
+
token,
|
|
17
|
+
request: c.req.raw,
|
|
18
|
+
});
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Added agent version support for experiments. When triggering an experiment, you can now pass an `agentVersion` parameter to pin which agent version to use. The agent version is stored with the experiment and returned in experiment responses. ([#14562](https://github.com/mastra-ai/mastra/pull/14562))
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
const client = new MastraClient();
|
|
27
|
+
|
|
28
|
+
await client.triggerDatasetExperiment({
|
|
29
|
+
datasetId: 'my-dataset',
|
|
30
|
+
targetType: 'agent',
|
|
31
|
+
targetId: 'my-agent',
|
|
32
|
+
version: 3, // pin to dataset version 3
|
|
33
|
+
agentVersion: 'ver_abc123', // pin to a specific agent version
|
|
34
|
+
});
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
- Updated dependencies [[`7dbd611`](https://github.com/mastra-ai/mastra/commit/7dbd611a85cb1e0c0a1581c57564268cb183d86e), [`41aee84`](https://github.com/mastra-ai/mastra/commit/41aee84561ceebe28bad1ecba8702d92838f67f0)]:
|
|
38
|
+
- @mastra/core@1.16.0-alpha.1
|
|
39
|
+
|
|
3
40
|
## 1.16.0-alpha.0
|
|
4
41
|
|
|
5
42
|
### Minor Changes
|
|
@@ -174,6 +174,21 @@ var matchesOrIncludes = (values, value) => {
|
|
|
174
174
|
return false;
|
|
175
175
|
};
|
|
176
176
|
var pass = { action: "next" };
|
|
177
|
+
var getAuthenticatedUser = async ({
|
|
178
|
+
mastra,
|
|
179
|
+
token,
|
|
180
|
+
request
|
|
181
|
+
}) => {
|
|
182
|
+
const normalizedToken = token.replace(/^Bearer\s+/i, "").trim();
|
|
183
|
+
if (!normalizedToken) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
const authConfig = mastra.getServer()?.auth;
|
|
187
|
+
if (!authConfig || typeof authConfig.authenticateToken !== "function") {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
return await authConfig.authenticateToken(normalizedToken, request);
|
|
191
|
+
};
|
|
177
192
|
var coreAuthMiddleware = async (ctx) => {
|
|
178
193
|
const { path, method, getHeader, mastra, authConfig, customRouteAuthConfig, requestContext, rawRequest, token } = ctx;
|
|
179
194
|
const hasAuthProvider = typeof authConfig.authenticateToken === "function";
|
|
@@ -290,6 +305,6 @@ var checkRules = async (rules, path, method, user) => {
|
|
|
290
305
|
return false;
|
|
291
306
|
};
|
|
292
307
|
|
|
293
|
-
export { canAccessPublicly, checkRules, coreAuthMiddleware, defaultAuthConfig, isCustomRoutePublic, isDevPlaygroundRequest, isProtectedCustomRoute, isProtectedPath, matchesOrIncludes, pathMatchesPattern, pathMatchesRule };
|
|
294
|
-
//# sourceMappingURL=chunk-
|
|
295
|
-
//# sourceMappingURL=chunk-
|
|
308
|
+
export { canAccessPublicly, checkRules, coreAuthMiddleware, defaultAuthConfig, getAuthenticatedUser, isCustomRoutePublic, isDevPlaygroundRequest, isProtectedCustomRoute, isProtectedPath, matchesOrIncludes, pathMatchesPattern, pathMatchesRule };
|
|
309
|
+
//# sourceMappingURL=chunk-K5SP7SOS.js.map
|
|
310
|
+
//# sourceMappingURL=chunk-K5SP7SOS.js.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-K5SP7SOS.js","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,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkZHVL7YBO_cjs = require('./chunk-ZHVL7YBO.cjs');
|
|
4
4
|
var chunkZYXDUS6Q_cjs = require('./chunk-ZYXDUS6Q.cjs');
|
|
5
5
|
var chunkY2BKW5ND_cjs = require('./chunk-Y2BKW5ND.cjs');
|
|
6
6
|
var chunkYJLDMFSE_cjs = require('./chunk-YJLDMFSE.cjs');
|
|
@@ -38,8 +38,8 @@ var LIST_DATASETS_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
38
38
|
method: "GET",
|
|
39
39
|
path: "/datasets",
|
|
40
40
|
responseType: "json",
|
|
41
|
-
queryParamSchema:
|
|
42
|
-
responseSchema:
|
|
41
|
+
queryParamSchema: chunkZHVL7YBO_cjs.paginationQuerySchema,
|
|
42
|
+
responseSchema: chunkZHVL7YBO_cjs.listDatasetsResponseSchema,
|
|
43
43
|
summary: "List all datasets",
|
|
44
44
|
description: "Returns a paginated list of all datasets",
|
|
45
45
|
tags: ["Datasets"],
|
|
@@ -65,8 +65,8 @@ var CREATE_DATASET_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
65
65
|
method: "POST",
|
|
66
66
|
path: "/datasets",
|
|
67
67
|
responseType: "json",
|
|
68
|
-
bodySchema:
|
|
69
|
-
responseSchema:
|
|
68
|
+
bodySchema: chunkZHVL7YBO_cjs.createDatasetBodySchema,
|
|
69
|
+
responseSchema: chunkZHVL7YBO_cjs.datasetResponseSchema,
|
|
70
70
|
summary: "Create a new dataset",
|
|
71
71
|
description: "Creates a new dataset with the specified name and optional metadata",
|
|
72
72
|
tags: ["Datasets"],
|
|
@@ -108,8 +108,8 @@ var GET_DATASET_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
108
108
|
method: "GET",
|
|
109
109
|
path: "/datasets/:datasetId",
|
|
110
110
|
responseType: "json",
|
|
111
|
-
pathParamSchema:
|
|
112
|
-
responseSchema:
|
|
111
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetIdPathParams,
|
|
112
|
+
responseSchema: chunkZHVL7YBO_cjs.datasetResponseSchema.nullable(),
|
|
113
113
|
summary: "Get dataset by ID",
|
|
114
114
|
description: "Returns details for a specific dataset",
|
|
115
115
|
tags: ["Datasets"],
|
|
@@ -131,9 +131,9 @@ var UPDATE_DATASET_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
131
131
|
method: "PATCH",
|
|
132
132
|
path: "/datasets/:datasetId",
|
|
133
133
|
responseType: "json",
|
|
134
|
-
pathParamSchema:
|
|
135
|
-
bodySchema:
|
|
136
|
-
responseSchema:
|
|
134
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetIdPathParams,
|
|
135
|
+
bodySchema: chunkZHVL7YBO_cjs.updateDatasetBodySchema,
|
|
136
|
+
responseSchema: chunkZHVL7YBO_cjs.datasetResponseSchema,
|
|
137
137
|
summary: "Update dataset",
|
|
138
138
|
description: "Updates a dataset with the specified fields",
|
|
139
139
|
tags: ["Datasets"],
|
|
@@ -189,7 +189,7 @@ var DELETE_DATASET_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
189
189
|
method: "DELETE",
|
|
190
190
|
path: "/datasets/:datasetId",
|
|
191
191
|
responseType: "json",
|
|
192
|
-
pathParamSchema:
|
|
192
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetIdPathParams,
|
|
193
193
|
responseSchema: chunkZYXDUS6Q_cjs.successResponseSchema,
|
|
194
194
|
summary: "Delete dataset",
|
|
195
195
|
description: "Deletes a dataset and all its items",
|
|
@@ -213,9 +213,9 @@ var LIST_ITEMS_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
213
213
|
method: "GET",
|
|
214
214
|
path: "/datasets/:datasetId/items",
|
|
215
215
|
responseType: "json",
|
|
216
|
-
pathParamSchema:
|
|
217
|
-
queryParamSchema:
|
|
218
|
-
responseSchema:
|
|
216
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetIdPathParams,
|
|
217
|
+
queryParamSchema: chunkZHVL7YBO_cjs.listItemsQuerySchema,
|
|
218
|
+
responseSchema: chunkZHVL7YBO_cjs.listItemsResponseSchema,
|
|
219
219
|
summary: "List dataset items",
|
|
220
220
|
description: "Returns a paginated list of items in the dataset",
|
|
221
221
|
tags: ["Datasets"],
|
|
@@ -247,9 +247,9 @@ var ADD_ITEM_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
247
247
|
method: "POST",
|
|
248
248
|
path: "/datasets/:datasetId/items",
|
|
249
249
|
responseType: "json",
|
|
250
|
-
pathParamSchema:
|
|
251
|
-
bodySchema:
|
|
252
|
-
responseSchema:
|
|
250
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetIdPathParams,
|
|
251
|
+
bodySchema: chunkZHVL7YBO_cjs.addItemBodySchema,
|
|
252
|
+
responseSchema: chunkZHVL7YBO_cjs.datasetItemResponseSchema,
|
|
253
253
|
summary: "Add item to dataset",
|
|
254
254
|
description: "Adds a new item to the dataset (auto-increments dataset version)",
|
|
255
255
|
tags: ["Datasets"],
|
|
@@ -278,8 +278,8 @@ var GET_ITEM_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
278
278
|
method: "GET",
|
|
279
279
|
path: "/datasets/:datasetId/items/:itemId",
|
|
280
280
|
responseType: "json",
|
|
281
|
-
pathParamSchema:
|
|
282
|
-
responseSchema:
|
|
281
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetAndItemIdPathParams,
|
|
282
|
+
responseSchema: chunkZHVL7YBO_cjs.datasetItemResponseSchema.nullable(),
|
|
283
283
|
summary: "Get dataset item by ID",
|
|
284
284
|
description: "Returns details for a specific dataset item",
|
|
285
285
|
tags: ["Datasets"],
|
|
@@ -305,9 +305,9 @@ var UPDATE_ITEM_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
305
305
|
method: "PATCH",
|
|
306
306
|
path: "/datasets/:datasetId/items/:itemId",
|
|
307
307
|
responseType: "json",
|
|
308
|
-
pathParamSchema:
|
|
309
|
-
bodySchema:
|
|
310
|
-
responseSchema:
|
|
308
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetAndItemIdPathParams,
|
|
309
|
+
bodySchema: chunkZHVL7YBO_cjs.updateItemBodySchema,
|
|
310
|
+
responseSchema: chunkZHVL7YBO_cjs.datasetItemResponseSchema,
|
|
311
311
|
summary: "Update dataset item",
|
|
312
312
|
description: "Updates a dataset item (auto-increments dataset version)",
|
|
313
313
|
tags: ["Datasets"],
|
|
@@ -340,7 +340,7 @@ var DELETE_ITEM_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
340
340
|
method: "DELETE",
|
|
341
341
|
path: "/datasets/:datasetId/items/:itemId",
|
|
342
342
|
responseType: "json",
|
|
343
|
-
pathParamSchema:
|
|
343
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetAndItemIdPathParams,
|
|
344
344
|
responseSchema: chunkZYXDUS6Q_cjs.successResponseSchema,
|
|
345
345
|
summary: "Delete dataset item",
|
|
346
346
|
description: "Deletes a dataset item",
|
|
@@ -368,9 +368,9 @@ var LIST_EXPERIMENTS_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
368
368
|
method: "GET",
|
|
369
369
|
path: "/datasets/:datasetId/experiments",
|
|
370
370
|
responseType: "json",
|
|
371
|
-
pathParamSchema:
|
|
372
|
-
queryParamSchema:
|
|
373
|
-
responseSchema:
|
|
371
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetIdPathParams,
|
|
372
|
+
queryParamSchema: chunkZHVL7YBO_cjs.paginationQuerySchema,
|
|
373
|
+
responseSchema: chunkZHVL7YBO_cjs.listExperimentsResponseSchema,
|
|
374
374
|
summary: "List experiments for dataset",
|
|
375
375
|
description: "Returns a paginated list of experiments for the dataset",
|
|
376
376
|
tags: ["Datasets"],
|
|
@@ -394,9 +394,9 @@ var TRIGGER_EXPERIMENT_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
394
394
|
method: "POST",
|
|
395
395
|
path: "/datasets/:datasetId/experiments",
|
|
396
396
|
responseType: "json",
|
|
397
|
-
pathParamSchema:
|
|
398
|
-
bodySchema:
|
|
399
|
-
responseSchema:
|
|
397
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetIdPathParams,
|
|
398
|
+
bodySchema: chunkZHVL7YBO_cjs.triggerExperimentBodySchema,
|
|
399
|
+
responseSchema: chunkZHVL7YBO_cjs.experimentSummaryResponseSchema,
|
|
400
400
|
summary: "Trigger a new experiment",
|
|
401
401
|
description: "Triggers a new experiment on the dataset against the specified target. Returns immediately with pending status; execution happens in background.",
|
|
402
402
|
tags: ["Datasets"],
|
|
@@ -409,6 +409,7 @@ var TRIGGER_EXPERIMENT_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
409
409
|
targetId,
|
|
410
410
|
scorerIds,
|
|
411
411
|
version,
|
|
412
|
+
agentVersion,
|
|
412
413
|
maxConcurrency,
|
|
413
414
|
requestContext: rawRequestContext
|
|
414
415
|
} = params;
|
|
@@ -419,6 +420,7 @@ var TRIGGER_EXPERIMENT_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
419
420
|
targetId,
|
|
420
421
|
scorers: scorerIds,
|
|
421
422
|
version,
|
|
423
|
+
agentVersion,
|
|
422
424
|
maxConcurrency,
|
|
423
425
|
requestContext: requestContext$1
|
|
424
426
|
});
|
|
@@ -444,8 +446,8 @@ var GET_EXPERIMENT_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
444
446
|
method: "GET",
|
|
445
447
|
path: "/datasets/:datasetId/experiments/:experimentId",
|
|
446
448
|
responseType: "json",
|
|
447
|
-
pathParamSchema:
|
|
448
|
-
responseSchema:
|
|
449
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetAndExperimentIdPathParams,
|
|
450
|
+
responseSchema: chunkZHVL7YBO_cjs.experimentResponseSchema.nullable(),
|
|
449
451
|
summary: "Get experiment by ID",
|
|
450
452
|
description: "Returns details for a specific experiment",
|
|
451
453
|
tags: ["Datasets"],
|
|
@@ -471,9 +473,9 @@ var LIST_EXPERIMENT_RESULTS_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
471
473
|
method: "GET",
|
|
472
474
|
path: "/datasets/:datasetId/experiments/:experimentId/results",
|
|
473
475
|
responseType: "json",
|
|
474
|
-
pathParamSchema:
|
|
475
|
-
queryParamSchema:
|
|
476
|
-
responseSchema:
|
|
476
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetAndExperimentIdPathParams,
|
|
477
|
+
queryParamSchema: chunkZHVL7YBO_cjs.paginationQuerySchema,
|
|
478
|
+
responseSchema: chunkZHVL7YBO_cjs.listExperimentResultsResponseSchema,
|
|
477
479
|
summary: "List experiment results",
|
|
478
480
|
description: "Returns a paginated list of results for the experiment",
|
|
479
481
|
tags: ["Datasets"],
|
|
@@ -504,9 +506,9 @@ var UPDATE_EXPERIMENT_RESULT_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
504
506
|
method: "PATCH",
|
|
505
507
|
path: "/datasets/:datasetId/experiments/:experimentId/results/:resultId",
|
|
506
508
|
responseType: "json",
|
|
507
|
-
pathParamSchema:
|
|
508
|
-
bodySchema:
|
|
509
|
-
responseSchema:
|
|
509
|
+
pathParamSchema: chunkZHVL7YBO_cjs.experimentResultIdPathParams,
|
|
510
|
+
bodySchema: chunkZHVL7YBO_cjs.updateExperimentResultBodySchema,
|
|
511
|
+
responseSchema: chunkZHVL7YBO_cjs.experimentResultResponseSchema,
|
|
510
512
|
summary: "Update an experiment result",
|
|
511
513
|
description: "Updates the status and/or tags on an experiment result",
|
|
512
514
|
tags: ["Datasets"],
|
|
@@ -541,9 +543,9 @@ var COMPARE_EXPERIMENTS_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
541
543
|
method: "POST",
|
|
542
544
|
path: "/datasets/:datasetId/compare",
|
|
543
545
|
responseType: "json",
|
|
544
|
-
pathParamSchema:
|
|
545
|
-
bodySchema:
|
|
546
|
-
responseSchema:
|
|
546
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetIdPathParams,
|
|
547
|
+
bodySchema: chunkZHVL7YBO_cjs.compareExperimentsBodySchema,
|
|
548
|
+
responseSchema: chunkZHVL7YBO_cjs.comparisonResponseSchema,
|
|
547
549
|
summary: "Compare two experiments",
|
|
548
550
|
description: "Compares two experiments to detect score regressions",
|
|
549
551
|
tags: ["Datasets"],
|
|
@@ -570,9 +572,9 @@ var LIST_DATASET_VERSIONS_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
570
572
|
method: "GET",
|
|
571
573
|
path: "/datasets/:datasetId/versions",
|
|
572
574
|
responseType: "json",
|
|
573
|
-
pathParamSchema:
|
|
574
|
-
queryParamSchema:
|
|
575
|
-
responseSchema:
|
|
575
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetIdPathParams,
|
|
576
|
+
queryParamSchema: chunkZHVL7YBO_cjs.paginationQuerySchema,
|
|
577
|
+
responseSchema: chunkZHVL7YBO_cjs.listDatasetVersionsResponseSchema,
|
|
576
578
|
summary: "List dataset versions",
|
|
577
579
|
description: "Returns a paginated list of all versions for the dataset",
|
|
578
580
|
tags: ["Datasets"],
|
|
@@ -596,8 +598,8 @@ var LIST_ITEM_VERSIONS_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
596
598
|
method: "GET",
|
|
597
599
|
path: "/datasets/:datasetId/items/:itemId/history",
|
|
598
600
|
responseType: "json",
|
|
599
|
-
pathParamSchema:
|
|
600
|
-
responseSchema:
|
|
601
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetAndItemIdPathParams,
|
|
602
|
+
responseSchema: chunkZHVL7YBO_cjs.listItemVersionsResponseSchema,
|
|
601
603
|
summary: "Get item history",
|
|
602
604
|
description: "Returns the full SCD-2 history of the item across all dataset versions",
|
|
603
605
|
tags: ["Datasets"],
|
|
@@ -623,8 +625,8 @@ var GET_ITEM_VERSION_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
623
625
|
method: "GET",
|
|
624
626
|
path: "/datasets/:datasetId/items/:itemId/versions/:datasetVersion",
|
|
625
627
|
responseType: "json",
|
|
626
|
-
pathParamSchema:
|
|
627
|
-
responseSchema:
|
|
628
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetItemVersionPathParams,
|
|
629
|
+
responseSchema: chunkZHVL7YBO_cjs.datasetItemResponseSchema.nullable(),
|
|
628
630
|
summary: "Get item at specific dataset version",
|
|
629
631
|
description: "Returns the item as it existed at a specific dataset version",
|
|
630
632
|
tags: ["Datasets"],
|
|
@@ -653,9 +655,9 @@ var BATCH_INSERT_ITEMS_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
653
655
|
method: "POST",
|
|
654
656
|
path: "/datasets/:datasetId/items/batch",
|
|
655
657
|
responseType: "json",
|
|
656
|
-
pathParamSchema:
|
|
657
|
-
bodySchema:
|
|
658
|
-
responseSchema:
|
|
658
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetIdPathParams,
|
|
659
|
+
bodySchema: chunkZHVL7YBO_cjs.batchInsertItemsBodySchema,
|
|
660
|
+
responseSchema: chunkZHVL7YBO_cjs.batchInsertItemsResponseSchema,
|
|
659
661
|
summary: "Batch insert items to dataset",
|
|
660
662
|
description: "Adds multiple items to the dataset in a single operation (single version entry)",
|
|
661
663
|
tags: ["Datasets"],
|
|
@@ -685,9 +687,9 @@ var BATCH_DELETE_ITEMS_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
685
687
|
method: "DELETE",
|
|
686
688
|
path: "/datasets/:datasetId/items/batch",
|
|
687
689
|
responseType: "json",
|
|
688
|
-
pathParamSchema:
|
|
689
|
-
bodySchema:
|
|
690
|
-
responseSchema:
|
|
690
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetIdPathParams,
|
|
691
|
+
bodySchema: chunkZHVL7YBO_cjs.batchDeleteItemsBodySchema,
|
|
692
|
+
responseSchema: chunkZHVL7YBO_cjs.batchDeleteItemsResponseSchema,
|
|
691
693
|
summary: "Batch delete items from dataset",
|
|
692
694
|
description: "Deletes multiple items from the dataset in a single operation (single version entry)",
|
|
693
695
|
tags: ["Datasets"],
|
|
@@ -724,9 +726,9 @@ var GENERATE_ITEMS_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
724
726
|
method: "POST",
|
|
725
727
|
path: "/datasets/:datasetId/generate-items",
|
|
726
728
|
responseType: "json",
|
|
727
|
-
pathParamSchema:
|
|
728
|
-
bodySchema:
|
|
729
|
-
responseSchema:
|
|
729
|
+
pathParamSchema: chunkZHVL7YBO_cjs.datasetIdPathParams,
|
|
730
|
+
bodySchema: chunkZHVL7YBO_cjs.generateItemsBodySchema,
|
|
731
|
+
responseSchema: chunkZHVL7YBO_cjs.generateItemsResponseSchema,
|
|
730
732
|
summary: "Generate dataset items using AI",
|
|
731
733
|
description: "Uses an LLM to generate synthetic dataset items based on the dataset schema and a user prompt. Returns generated items for review \u2014 they are NOT automatically added to the dataset.",
|
|
732
734
|
tags: ["Datasets"],
|
|
@@ -827,8 +829,8 @@ var CLUSTER_FAILURES_ROUTE = chunkYJLDMFSE_cjs.createRoute({
|
|
|
827
829
|
method: "POST",
|
|
828
830
|
path: "/datasets/cluster-failures",
|
|
829
831
|
responseType: "json",
|
|
830
|
-
bodySchema:
|
|
831
|
-
responseSchema:
|
|
832
|
+
bodySchema: chunkZHVL7YBO_cjs.clusterFailuresBodySchema,
|
|
833
|
+
responseSchema: chunkZHVL7YBO_cjs.clusterFailuresResponseSchema,
|
|
832
834
|
summary: "Cluster experiment failures using AI",
|
|
833
835
|
description: "Uses an LLM to analyze failure items from an experiment and group them into meaningful failure pattern clusters.",
|
|
834
836
|
tags: ["Datasets"],
|
|
@@ -928,5 +930,5 @@ exports.TRIGGER_EXPERIMENT_ROUTE = TRIGGER_EXPERIMENT_ROUTE;
|
|
|
928
930
|
exports.UPDATE_DATASET_ROUTE = UPDATE_DATASET_ROUTE;
|
|
929
931
|
exports.UPDATE_EXPERIMENT_RESULT_ROUTE = UPDATE_EXPERIMENT_RESULT_ROUTE;
|
|
930
932
|
exports.UPDATE_ITEM_ROUTE = UPDATE_ITEM_ROUTE;
|
|
931
|
-
//# sourceMappingURL=chunk-
|
|
932
|
-
//# sourceMappingURL=chunk-
|
|
933
|
+
//# sourceMappingURL=chunk-N6ZHI7A3.cjs.map
|
|
934
|
+
//# sourceMappingURL=chunk-N6ZHI7A3.cjs.map
|