@mastra/server 1.65.0-alpha.1 → 1.65.0-alpha.11
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/dist/_types/@internal_voice/dist/_types/@internal_core/dist/request-context/index.d.ts +14 -1
- package/dist/{a2a-C7OgMND3.cjs → a2a-CW4FVjHx.cjs} +72 -21
- package/dist/a2a-CW4FVjHx.cjs.map +1 -0
- package/dist/{a2a-DdCHhKh5.js → a2a-Di7S6YaM.js} +72 -21
- package/dist/a2a-Di7S6YaM.js.map +1 -0
- package/dist/{agents-BetrUB_N.js → agents-AMeMJBI1.js} +2 -7
- package/dist/agents-AMeMJBI1.js.map +1 -0
- package/dist/{agents-CLv_RFQx.cjs → agents-C3k-sZBO.cjs} +2 -7
- package/dist/agents-C3k-sZBO.cjs.map +1 -0
- package/dist/{api-schema-manifest-BxLfDBP-.cjs → api-schema-manifest-Dkxez6Mn.cjs} +2 -2
- package/dist/{api-schema-manifest-BxLfDBP-.cjs.map → api-schema-manifest-Dkxez6Mn.cjs.map} +1 -1
- package/dist/{api-schema-manifest-CenKfsu1.js → api-schema-manifest-DxEVjj1H.js} +2 -2
- package/dist/{api-schema-manifest-CenKfsu1.js.map → api-schema-manifest-DxEVjj1H.js.map} +1 -1
- package/dist/{datasets-B3DTc52y.cjs → datasets-BVbtevHd.cjs} +12 -11
- package/dist/datasets-BVbtevHd.cjs.map +1 -0
- package/dist/{datasets-dzuIwMeB.js → datasets-D0C0V2kk.js} +12 -11
- package/dist/datasets-D0C0V2kk.js.map +1 -0
- package/dist/{dist-C8lAYOI6.cjs → dist-BLP1i9vT.cjs} +28 -7
- package/dist/dist-BLP1i9vT.cjs.map +1 -0
- package/dist/{dist-BW8S4tCf.js → dist-BLvSboHt.js} +28 -7
- package/dist/dist-BLvSboHt.js.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 +17 -7
- package/dist/docs/references/reference-observability-tracing-trace-query.md +179 -0
- package/dist/docs/references/reference-server-routes.md +44 -19
- package/dist/{editor-builder-BDEm-gZe.js → editor-builder-BmEpZsqX.js} +2 -2
- package/dist/{editor-builder-BDEm-gZe.js.map → editor-builder-BmEpZsqX.js.map} +1 -1
- package/dist/{editor-builder-B-KatZ10.cjs → editor-builder-DeFo8Kl5.cjs} +2 -2
- package/dist/{editor-builder-B-KatZ10.cjs.map → editor-builder-DeFo8Kl5.cjs.map} +1 -1
- package/dist/{editor-builder-c7QiLUV9.js → editor-builder-DzpPA6dp.js} +2 -2
- package/dist/{editor-builder-c7QiLUV9.js.map → editor-builder-DzpPA6dp.js.map} +1 -1
- package/dist/{editor-builder-DNRVszU-.cjs → editor-builder-WLxTW05v.cjs} +2 -2
- package/dist/{editor-builder-DNRVszU-.cjs.map → editor-builder-WLxTW05v.cjs.map} +1 -1
- package/dist/{helpers-DBAYsA50.js → helpers-610L0lwQ.js} +6 -2
- package/dist/helpers-610L0lwQ.js.map +1 -0
- package/dist/{helpers-BWxRRShz.cjs → helpers-8jl_xtug.cjs} +6 -2
- package/dist/helpers-8jl_xtug.cjs.map +1 -0
- package/dist/{observability-new-endpoints-BxXDVoQ0.cjs → observability-new-endpoints-DF85EOQS.cjs} +178 -15
- package/dist/observability-new-endpoints-DF85EOQS.cjs.map +1 -0
- package/dist/{observability-new-endpoints-C_om-Dj7.js → observability-new-endpoints-Zm5VNGIa.js} +174 -19
- package/dist/observability-new-endpoints-Zm5VNGIa.js.map +1 -0
- package/dist/route-builder-BveLN9LU.js.map +1 -1
- package/dist/route-builder-C8n4ugUf.cjs.map +1 -1
- package/dist/{routes-bRlxNTKn.js → routes-DD3joMdw.js} +11 -6
- package/dist/routes-DD3joMdw.js.map +1 -0
- package/dist/{routes-wp2lb2LI.cjs → routes-KL4Vw4qy.cjs} +9 -4
- package/dist/routes-KL4Vw4qy.cjs.map +1 -0
- package/dist/server/a2a/tasks.d.ts +13 -1
- package/dist/server/a2a/tasks.d.ts.map +1 -1
- package/dist/server/auth/helpers.d.ts.map +1 -1
- package/dist/server/auth/index.cjs +1 -1
- package/dist/server/auth/index.js +1 -1
- package/dist/server/handlers/a2a.cjs +1 -1
- package/dist/server/handlers/a2a.d.ts.map +1 -1
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +2 -2
- package/dist/server/handlers/agent-builder.js +2 -2
- package/dist/server/handlers/agents.cjs +102 -41
- package/dist/server/handlers/agents.cjs.map +1 -1
- package/dist/server/handlers/agents.d.ts +55 -55
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +102 -41
- package/dist/server/handlers/agents.js.map +1 -1
- package/dist/server/handlers/auth.cjs +1 -1
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/author-enrichment.cjs +5 -3
- package/dist/server/handlers/author-enrichment.cjs.map +1 -1
- package/dist/server/handlers/author-enrichment.d.ts +1 -1
- package/dist/server/handlers/author-enrichment.d.ts.map +1 -1
- package/dist/server/handlers/author-enrichment.js +5 -3
- package/dist/server/handlers/author-enrichment.js.map +1 -1
- package/dist/server/handlers/datasets.cjs +104 -2
- package/dist/server/handlers/datasets.cjs.map +1 -1
- package/dist/server/handlers/datasets.d.ts +211 -100
- package/dist/server/handlers/datasets.d.ts.map +1 -1
- package/dist/server/handlers/datasets.js +102 -3
- package/dist/server/handlers/datasets.js.map +1 -1
- package/dist/server/handlers/editor-builder.cjs +1 -1
- package/dist/server/handlers/editor-builder.js +1 -1
- package/dist/server/handlers/favorites-enrichment.cjs +1 -1
- package/dist/server/handlers/favorites-enrichment.js +1 -1
- package/dist/server/handlers/mcp-client-versions.cjs +1 -1
- package/dist/server/handlers/mcp-client-versions.js +1 -1
- package/dist/server/handlers/memory.cjs +2 -2
- package/dist/server/handlers/memory.cjs.map +1 -1
- package/dist/server/handlers/memory.js +2 -2
- package/dist/server/handlers/memory.js.map +1 -1
- package/dist/server/handlers/observability-new-endpoints.cjs +2 -1
- package/dist/server/handlers/observability-new-endpoints.d.ts +302 -56
- package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
- package/dist/server/handlers/observability-new-endpoints.js +2 -2
- package/dist/server/handlers/observability-shared.cjs +13 -0
- package/dist/server/handlers/observability-shared.cjs.map +1 -1
- package/dist/server/handlers/observability-shared.d.ts +8 -0
- package/dist/server/handlers/observability-shared.d.ts.map +1 -1
- package/dist/server/handlers/observability-shared.js +13 -1
- package/dist/server/handlers/observability-shared.js.map +1 -1
- package/dist/server/handlers/observability-storage-schemas.cjs +5 -0
- package/dist/server/handlers/observability-storage-schemas.cjs.map +1 -1
- package/dist/server/handlers/observability-storage-schemas.d.ts +2 -0
- package/dist/server/handlers/observability-storage-schemas.d.ts.map +1 -1
- package/dist/server/handlers/observability-storage-schemas.js +4 -1
- package/dist/server/handlers/observability-storage-schemas.js.map +1 -1
- package/dist/server/handlers/observability.cjs +26 -1
- package/dist/server/handlers/observability.cjs.map +1 -1
- package/dist/server/handlers/observability.d.ts +2 -0
- package/dist/server/handlers/observability.d.ts.map +1 -1
- package/dist/server/handlers/observability.js +26 -3
- package/dist/server/handlers/observability.js.map +1 -1
- package/dist/server/handlers/plans.cjs +1 -1
- package/dist/server/handlers/plans.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +1 -1
- package/dist/server/handlers/prompt-block-versions.js +1 -1
- package/dist/server/handlers/responses.d.ts +11 -11
- package/dist/server/handlers/scorer-versions.cjs +1 -1
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/stored-agent-favorites.cjs +1 -1
- package/dist/server/handlers/stored-agent-favorites.js +1 -1
- package/dist/server/handlers/stored-agents.cjs +2 -2
- package/dist/server/handlers/stored-agents.js +2 -2
- package/dist/server/handlers/stored-mcp-clients.cjs +1 -1
- package/dist/server/handlers/stored-mcp-clients.js +1 -1
- package/dist/server/handlers/stored-prompt-blocks.cjs +1 -1
- package/dist/server/handlers/stored-prompt-blocks.js +1 -1
- package/dist/server/handlers/stored-scorers.cjs +1 -1
- package/dist/server/handlers/stored-scorers.js +1 -1
- package/dist/server/handlers/stored-skill-favorites.cjs +2 -2
- package/dist/server/handlers/stored-skill-favorites.js +2 -2
- package/dist/server/handlers/stored-skills.cjs +2 -2
- package/dist/server/handlers/stored-skills.js +2 -2
- package/dist/server/handlers/system.cjs +7 -4
- package/dist/server/handlers/system.cjs.map +1 -1
- package/dist/server/handlers/system.d.ts +2 -0
- package/dist/server/handlers/system.d.ts.map +1 -1
- package/dist/server/handlers/system.js +7 -4
- package/dist/server/handlers/system.js.map +1 -1
- package/dist/server/handlers/tools.cjs +1 -1
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/workflows.cjs +2 -2
- package/dist/server/handlers/workflows.cjs.map +1 -1
- package/dist/server/handlers/workflows.js +2 -2
- package/dist/server/handlers/workflows.js.map +1 -1
- package/dist/server/handlers.cjs +1 -1
- package/dist/server/handlers.js +1 -1
- package/dist/server/schemas/agents.d.ts +8 -16
- package/dist/server/schemas/agents.d.ts.map +1 -1
- package/dist/server/schemas/datasets.d.ts +41 -39
- package/dist/server/schemas/datasets.d.ts.map +1 -1
- package/dist/server/schemas/feedback.d.ts +64 -0
- package/dist/server/schemas/feedback.d.ts.map +1 -0
- package/dist/server/schemas/index.cjs +5 -5
- package/dist/server/schemas/index.js +5 -5
- package/dist/server/schemas/system.d.ts +1 -0
- package/dist/server/schemas/system.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +11 -4
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.d.ts +3 -0
- package/dist/server/server-adapter/index.d.ts.map +1 -1
- package/dist/server/server-adapter/index.js +10 -5
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/routes/conversations.d.ts +3 -3
- package/dist/server/server-adapter/routes/datasets.d.ts +208 -100
- package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/legacy.d.ts +6 -6
- package/dist/server/server-adapter/routes/observability.d.ts +122 -1
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/system.d.ts +2 -0
- package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/workspace.d.ts +23 -23
- package/dist/{system-wl_uZdyz.cjs → system-Cfo5a63a.cjs} +3 -1
- package/dist/system-Cfo5a63a.cjs.map +1 -0
- package/dist/{system-0TbTYKJY.js → system-DT2JfUun.js} +3 -1
- package/dist/system-DT2JfUun.js.map +1 -0
- package/package.json +6 -6
- package/dist/a2a-C7OgMND3.cjs.map +0 -1
- package/dist/a2a-DdCHhKh5.js.map +0 -1
- package/dist/agents-BetrUB_N.js.map +0 -1
- package/dist/agents-CLv_RFQx.cjs.map +0 -1
- package/dist/datasets-B3DTc52y.cjs.map +0 -1
- package/dist/datasets-dzuIwMeB.js.map +0 -1
- package/dist/dist-BW8S4tCf.js.map +0 -1
- package/dist/dist-C8lAYOI6.cjs.map +0 -1
- package/dist/helpers-BWxRRShz.cjs.map +0 -1
- package/dist/helpers-DBAYsA50.js.map +0 -1
- package/dist/observability-new-endpoints-BxXDVoQ0.cjs.map +0 -1
- package/dist/observability-new-endpoints-C_om-Dj7.js.map +0 -1
- package/dist/routes-bRlxNTKn.js.map +0 -1
- package/dist/routes-wp2lb2LI.cjs.map +0 -1
- package/dist/system-0TbTYKJY.js.map +0 -1
- package/dist/system-wl_uZdyz.cjs.map +0 -1
|
@@ -4,7 +4,7 @@ const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
|
|
|
4
4
|
const require_route_builder = require("../../route-builder-C8n4ugUf.cjs");
|
|
5
5
|
const require_constants = require("../../constants-4IJp_uzj.cjs");
|
|
6
6
|
const require_server_handlers_error = require("./error.cjs");
|
|
7
|
-
const require_helpers = require("../../helpers-
|
|
7
|
+
const require_helpers = require("../../helpers-8jl_xtug.cjs");
|
|
8
8
|
const require_auth = require("../../auth-B8fQdEg-.cjs");
|
|
9
9
|
let zod_v4 = require("zod/v4");
|
|
10
10
|
//#region src/server/handlers/auth.ts
|
|
@@ -2,7 +2,7 @@ import { t as HTTPException } from "../../http-exception-CyfxZB6W.js";
|
|
|
2
2
|
import { n as createRoute, t as createPublicRoute } from "../../route-builder-BveLN9LU.js";
|
|
3
3
|
import { a as MASTRA_PUBLIC_HOST_HEADER, m as isStudioClientTypeHeader } from "../../constants-0jFCWoex.js";
|
|
4
4
|
import { handleError } from "./error.js";
|
|
5
|
-
import { p as supportsSessionRefresh } from "../../helpers-
|
|
5
|
+
import { p as supportsSessionRefresh } from "../../helpers-610L0lwQ.js";
|
|
6
6
|
import { _ as ssoLoginQuerySchema, c as currentUserResponseSchema, d as permissionPatternsResponseSchema, m as ssoCallbackQuerySchema, o as credentialsSignInBodySchema, p as refreshResponseSchema, r as capabilitiesResponseSchema, s as credentialsSignUpBodySchema } from "../../auth-CZFXpwba.js";
|
|
7
7
|
import { z } from "zod/v4";
|
|
8
8
|
//#region src/server/handlers/auth.ts
|
|
@@ -7,7 +7,9 @@ require("../../rolldown-runtime-Bd6kNlEP.cjs");
|
|
|
7
7
|
* - no server config is registered;
|
|
8
8
|
* - `server.auth` is a `MastraAuthConfig`, not a `MastraAuthProvider`.
|
|
9
9
|
*/
|
|
10
|
-
function getAuthProvider(mastra) {
|
|
10
|
+
function getAuthProvider(mastra, isStudio) {
|
|
11
|
+
const studioAuth = isStudio ? mastra.getStudio?.()?.auth : void 0;
|
|
12
|
+
if (studioAuth && typeof studioAuth.authenticateToken === "function") return studioAuth;
|
|
11
13
|
const serverConfig = mastra.getServer?.();
|
|
12
14
|
if (!serverConfig?.auth) return null;
|
|
13
15
|
if (typeof serverConfig.auth.authenticateToken === "function") return serverConfig.auth;
|
|
@@ -45,8 +47,8 @@ function projectUser(user) {
|
|
|
45
47
|
* The returned map is keyed by the **requested** ID (not the user's `id`
|
|
46
48
|
* field) to be robust against providers that normalize identifiers.
|
|
47
49
|
*/
|
|
48
|
-
async function prepareAuthorEnrichment(mastra, _requestContext, authorIds) {
|
|
49
|
-
const provider = getAuthProvider(mastra);
|
|
50
|
+
async function prepareAuthorEnrichment(mastra, _requestContext, authorIds, isStudio = false) {
|
|
51
|
+
const provider = getAuthProvider(mastra, isStudio);
|
|
50
52
|
if (!provider || !isUserProvider(provider)) return null;
|
|
51
53
|
const uniqueIds = dedupeIds(authorIds);
|
|
52
54
|
if (uniqueIds.length === 0) return /* @__PURE__ */ new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"author-enrichment.cjs","names":[],"sources":["../../../src/server/handlers/author-enrichment.ts"],"sourcesContent":["import type { Mastra } from '@mastra/core';\nimport type { IUserProvider, User } from '@mastra/core/auth';\nimport type { RequestContext } from '@mastra/core/di';\
|
|
1
|
+
{"version":3,"file":"author-enrichment.cjs","names":[],"sources":["../../../src/server/handlers/author-enrichment.ts"],"sourcesContent":["import type { Mastra } from '@mastra/core';\nimport type { IUserProvider, User } from '@mastra/core/auth';\nimport type { RequestContext } from '@mastra/core/di';\n\n/**\n * Public-safe resolved author shape — same fields exposed by `/auth/me`.\n * Provider-specific extras are intentionally stripped to avoid leaking\n * unexpected data through the stored-agent (and future stored-resource) APIs.\n */\nexport type ResolvedAuthor = {\n id: string;\n name?: string;\n email?: string;\n avatarUrl?: string;\n};\n\n/**\n * Locate the auth provider from a Mastra instance using the same\n * private helper pattern as `auth.ts`. Returns null when:\n * - no server config is registered;\n * - `server.auth` is a `MastraAuthConfig`, not a `MastraAuthProvider`.\n */\nfunction getAuthProvider(mastra: Mastra, isStudio: boolean): unknown {\n const studioAuth = isStudio ? mastra.getStudio?.()?.auth : undefined;\n if (studioAuth && typeof studioAuth.authenticateToken === 'function') return studioAuth;\n const serverConfig = (mastra as { getServer?: () => { auth?: unknown } }).getServer?.();\n if (!serverConfig?.auth) return null;\n if (typeof (serverConfig.auth as { authenticateToken?: unknown }).authenticateToken === 'function') {\n return serverConfig.auth;\n }\n return null;\n}\n\nfunction isUserProvider(p: unknown): p is IUserProvider {\n return (\n p !== null &&\n typeof p === 'object' &&\n typeof (p as { getCurrentUser?: unknown }).getCurrentUser === 'function' &&\n typeof (p as { getUser?: unknown }).getUser === 'function'\n );\n}\n\nfunction dedupeIds(authorIds: ReadonlyArray<string | null | undefined>): string[] {\n const set = new Set<string>();\n for (const id of authorIds) {\n if (typeof id === 'string' && id.length > 0) set.add(id);\n }\n return Array.from(set);\n}\n\nfunction projectUser(user: User | null): Omit<ResolvedAuthor, 'id'> | null {\n if (!user) return null;\n const out: Omit<ResolvedAuthor, 'id'> = {};\n if (typeof user.name === 'string') out.name = user.name;\n if (typeof user.email === 'string') out.email = user.email;\n if (typeof user.avatarUrl === 'string') out.avatarUrl = user.avatarUrl;\n return out;\n}\n\n/**\n * Resolve a set of author IDs against the configured auth provider in one\n * shot. Soft-gated: returns `null` when there is no auth provider, the\n * provider does not implement `IUserProvider`, or the input has no valid\n * IDs to look up. Callers should treat `null` as \"do not attach an `author`\n * field\" so behavior matches setups without user awareness.\n *\n * When the provider exposes the optional `getUsers` batch method, the helper\n * calls it once with the deduped ID list. Otherwise it falls back to\n * `Promise.all(getUser(id))`, parallelized per unique ID. Provider errors\n * per ID are caught and treated as \"unresolved\" — they do not reject the\n * enrichment call.\n *\n * The returned map is keyed by the **requested** ID (not the user's `id`\n * field) to be robust against providers that normalize identifiers.\n */\nexport async function prepareAuthorEnrichment(\n mastra: Mastra,\n _requestContext: RequestContext,\n authorIds: ReadonlyArray<string | null | undefined>,\n isStudio = false,\n): Promise<Map<string, ResolvedAuthor> | null> {\n const provider = getAuthProvider(mastra, isStudio);\n if (!provider || !isUserProvider(provider)) return null;\n\n const uniqueIds = dedupeIds(authorIds);\n if (uniqueIds.length === 0) return new Map();\n\n let users: Array<User | null>;\n if (typeof provider.getUsers === 'function') {\n try {\n users = await provider.getUsers(uniqueIds);\n } catch {\n // Batch lookup failed entirely — degrade gracefully to \"no enrichment\"\n return new Map();\n }\n } else {\n users = await Promise.all(uniqueIds.map(id => provider.getUser(id).catch((): User | null => null)));\n }\n\n const map = new Map<string, ResolvedAuthor>();\n uniqueIds.forEach((id, index) => {\n const projected = projectUser(users[index] ?? null);\n if (projected !== null) {\n map.set(id, { id, ...projected });\n }\n });\n return map;\n}\n\n/**\n * Attach a resolved `author` to a record by looking it up in the map by\n * `record.authorId`. When `authors` is `null` (feature off) or the id is\n * missing from the map, the record passes through unchanged.\n */\nexport function attachAuthor<T extends { authorId?: string | null }>(\n record: T,\n authors: Map<string, ResolvedAuthor> | null,\n): T & { author?: ResolvedAuthor } {\n if (!authors) return record;\n const id = record.authorId;\n if (typeof id !== 'string' || id.length === 0) return record;\n const author = authors.get(id);\n if (!author) return record;\n return { ...record, author };\n}\n"],"mappings":";;;;;;;;;AAsBA,SAAS,gBAAgB,QAAgB,UAA4B;CACnE,MAAM,aAAa,WAAW,OAAO,YAAY,CAAC,EAAE,OAAO,KAAA;CAC3D,IAAI,cAAc,OAAO,WAAW,sBAAsB,YAAY,OAAO;CAC7E,MAAM,eAAgB,OAAoD,YAAY;CACtF,IAAI,CAAC,cAAc,MAAM,OAAO;CAChC,IAAI,OAAQ,aAAa,KAAyC,sBAAsB,YACtF,OAAO,aAAa;CAEtB,OAAO;AACT;AAEA,SAAS,eAAe,GAAgC;CACtD,OACE,MAAM,QACN,OAAO,MAAM,YACb,OAAQ,EAAmC,mBAAmB,cAC9D,OAAQ,EAA4B,YAAY;AAEpD;AAEA,SAAS,UAAU,WAA+D;CAChF,MAAM,sBAAM,IAAI,IAAY;CAC5B,KAAK,MAAM,MAAM,WACf,IAAI,OAAO,OAAO,YAAY,GAAG,SAAS,GAAG,IAAI,IAAI,EAAE;CAEzD,OAAO,MAAM,KAAK,GAAG;AACvB;AAEA,SAAS,YAAY,MAAsD;CACzE,IAAI,CAAC,MAAM,OAAO;CAClB,MAAM,MAAkC,CAAC;CACzC,IAAI,OAAO,KAAK,SAAS,UAAU,IAAI,OAAO,KAAK;CACnD,IAAI,OAAO,KAAK,UAAU,UAAU,IAAI,QAAQ,KAAK;CACrD,IAAI,OAAO,KAAK,cAAc,UAAU,IAAI,YAAY,KAAK;CAC7D,OAAO;AACT;;;;;;;;;;;;;;;;;AAkBA,eAAsB,wBACpB,QACA,iBACA,WACA,WAAW,OACkC;CAC7C,MAAM,WAAW,gBAAgB,QAAQ,QAAQ;CACjD,IAAI,CAAC,YAAY,CAAC,eAAe,QAAQ,GAAG,OAAO;CAEnD,MAAM,YAAY,UAAU,SAAS;CACrC,IAAI,UAAU,WAAW,GAAG,uBAAO,IAAI,IAAI;CAE3C,IAAI;CACJ,IAAI,OAAO,SAAS,aAAa,YAC/B,IAAI;EACF,QAAQ,MAAM,SAAS,SAAS,SAAS;CAC3C,QAAQ;EAEN,uBAAO,IAAI,IAAI;CACjB;MAEA,QAAQ,MAAM,QAAQ,IAAI,UAAU,KAAI,OAAM,SAAS,QAAQ,EAAE,CAAC,CAAC,YAAyB,IAAI,CAAC,CAAC;CAGpG,MAAM,sBAAM,IAAI,IAA4B;CAC5C,UAAU,SAAS,IAAI,UAAU;EAC/B,MAAM,YAAY,YAAY,MAAM,UAAU,IAAI;EAClD,IAAI,cAAc,MAChB,IAAI,IAAI,IAAI;GAAE;GAAI,GAAG;EAAU,CAAC;CAEpC,CAAC;CACD,OAAO;AACT;;;;;;AAOA,SAAgB,aACd,QACA,SACiC;CACjC,IAAI,CAAC,SAAS,OAAO;CACrB,MAAM,KAAK,OAAO;CAClB,IAAI,OAAO,OAAO,YAAY,GAAG,WAAW,GAAG,OAAO;CACtD,MAAM,SAAS,QAAQ,IAAI,EAAE;CAC7B,IAAI,CAAC,QAAQ,OAAO;CACpB,OAAO;EAAE,GAAG;EAAQ;CAAO;AAC7B"}
|
|
@@ -27,7 +27,7 @@ export type ResolvedAuthor = {
|
|
|
27
27
|
* The returned map is keyed by the **requested** ID (not the user's `id`
|
|
28
28
|
* field) to be robust against providers that normalize identifiers.
|
|
29
29
|
*/
|
|
30
|
-
export declare function prepareAuthorEnrichment(mastra: Mastra, _requestContext: RequestContext, authorIds: ReadonlyArray<string | null | undefined
|
|
30
|
+
export declare function prepareAuthorEnrichment(mastra: Mastra, _requestContext: RequestContext, authorIds: ReadonlyArray<string | null | undefined>, isStudio?: boolean): Promise<Map<string, ResolvedAuthor> | null>;
|
|
31
31
|
/**
|
|
32
32
|
* Attach a resolved `author` to a record by looking it up in the map by
|
|
33
33
|
* `record.authorId`. When `authors` is `null` (feature off) or the id is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"author-enrichment.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/author-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"author-enrichment.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/author-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA6CF;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,cAAc,EAC/B,SAAS,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACnD,QAAQ,UAAQ,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,CA2B7C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACjE,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,GAC1C,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,cAAc,CAAA;CAAE,CAOjC"}
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* - no server config is registered;
|
|
6
6
|
* - `server.auth` is a `MastraAuthConfig`, not a `MastraAuthProvider`.
|
|
7
7
|
*/
|
|
8
|
-
function getAuthProvider(mastra) {
|
|
8
|
+
function getAuthProvider(mastra, isStudio) {
|
|
9
|
+
const studioAuth = isStudio ? mastra.getStudio?.()?.auth : void 0;
|
|
10
|
+
if (studioAuth && typeof studioAuth.authenticateToken === "function") return studioAuth;
|
|
9
11
|
const serverConfig = mastra.getServer?.();
|
|
10
12
|
if (!serverConfig?.auth) return null;
|
|
11
13
|
if (typeof serverConfig.auth.authenticateToken === "function") return serverConfig.auth;
|
|
@@ -43,8 +45,8 @@ function projectUser(user) {
|
|
|
43
45
|
* The returned map is keyed by the **requested** ID (not the user's `id`
|
|
44
46
|
* field) to be robust against providers that normalize identifiers.
|
|
45
47
|
*/
|
|
46
|
-
async function prepareAuthorEnrichment(mastra, _requestContext, authorIds) {
|
|
47
|
-
const provider = getAuthProvider(mastra);
|
|
48
|
+
async function prepareAuthorEnrichment(mastra, _requestContext, authorIds, isStudio = false) {
|
|
49
|
+
const provider = getAuthProvider(mastra, isStudio);
|
|
48
50
|
if (!provider || !isUserProvider(provider)) return null;
|
|
49
51
|
const uniqueIds = dedupeIds(authorIds);
|
|
50
52
|
if (uniqueIds.length === 0) return /* @__PURE__ */ new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"author-enrichment.js","names":[],"sources":["../../../src/server/handlers/author-enrichment.ts"],"sourcesContent":["import type { Mastra } from '@mastra/core';\nimport type { IUserProvider, User } from '@mastra/core/auth';\nimport type { RequestContext } from '@mastra/core/di';\
|
|
1
|
+
{"version":3,"file":"author-enrichment.js","names":[],"sources":["../../../src/server/handlers/author-enrichment.ts"],"sourcesContent":["import type { Mastra } from '@mastra/core';\nimport type { IUserProvider, User } from '@mastra/core/auth';\nimport type { RequestContext } from '@mastra/core/di';\n\n/**\n * Public-safe resolved author shape — same fields exposed by `/auth/me`.\n * Provider-specific extras are intentionally stripped to avoid leaking\n * unexpected data through the stored-agent (and future stored-resource) APIs.\n */\nexport type ResolvedAuthor = {\n id: string;\n name?: string;\n email?: string;\n avatarUrl?: string;\n};\n\n/**\n * Locate the auth provider from a Mastra instance using the same\n * private helper pattern as `auth.ts`. Returns null when:\n * - no server config is registered;\n * - `server.auth` is a `MastraAuthConfig`, not a `MastraAuthProvider`.\n */\nfunction getAuthProvider(mastra: Mastra, isStudio: boolean): unknown {\n const studioAuth = isStudio ? mastra.getStudio?.()?.auth : undefined;\n if (studioAuth && typeof studioAuth.authenticateToken === 'function') return studioAuth;\n const serverConfig = (mastra as { getServer?: () => { auth?: unknown } }).getServer?.();\n if (!serverConfig?.auth) return null;\n if (typeof (serverConfig.auth as { authenticateToken?: unknown }).authenticateToken === 'function') {\n return serverConfig.auth;\n }\n return null;\n}\n\nfunction isUserProvider(p: unknown): p is IUserProvider {\n return (\n p !== null &&\n typeof p === 'object' &&\n typeof (p as { getCurrentUser?: unknown }).getCurrentUser === 'function' &&\n typeof (p as { getUser?: unknown }).getUser === 'function'\n );\n}\n\nfunction dedupeIds(authorIds: ReadonlyArray<string | null | undefined>): string[] {\n const set = new Set<string>();\n for (const id of authorIds) {\n if (typeof id === 'string' && id.length > 0) set.add(id);\n }\n return Array.from(set);\n}\n\nfunction projectUser(user: User | null): Omit<ResolvedAuthor, 'id'> | null {\n if (!user) return null;\n const out: Omit<ResolvedAuthor, 'id'> = {};\n if (typeof user.name === 'string') out.name = user.name;\n if (typeof user.email === 'string') out.email = user.email;\n if (typeof user.avatarUrl === 'string') out.avatarUrl = user.avatarUrl;\n return out;\n}\n\n/**\n * Resolve a set of author IDs against the configured auth provider in one\n * shot. Soft-gated: returns `null` when there is no auth provider, the\n * provider does not implement `IUserProvider`, or the input has no valid\n * IDs to look up. Callers should treat `null` as \"do not attach an `author`\n * field\" so behavior matches setups without user awareness.\n *\n * When the provider exposes the optional `getUsers` batch method, the helper\n * calls it once with the deduped ID list. Otherwise it falls back to\n * `Promise.all(getUser(id))`, parallelized per unique ID. Provider errors\n * per ID are caught and treated as \"unresolved\" — they do not reject the\n * enrichment call.\n *\n * The returned map is keyed by the **requested** ID (not the user's `id`\n * field) to be robust against providers that normalize identifiers.\n */\nexport async function prepareAuthorEnrichment(\n mastra: Mastra,\n _requestContext: RequestContext,\n authorIds: ReadonlyArray<string | null | undefined>,\n isStudio = false,\n): Promise<Map<string, ResolvedAuthor> | null> {\n const provider = getAuthProvider(mastra, isStudio);\n if (!provider || !isUserProvider(provider)) return null;\n\n const uniqueIds = dedupeIds(authorIds);\n if (uniqueIds.length === 0) return new Map();\n\n let users: Array<User | null>;\n if (typeof provider.getUsers === 'function') {\n try {\n users = await provider.getUsers(uniqueIds);\n } catch {\n // Batch lookup failed entirely — degrade gracefully to \"no enrichment\"\n return new Map();\n }\n } else {\n users = await Promise.all(uniqueIds.map(id => provider.getUser(id).catch((): User | null => null)));\n }\n\n const map = new Map<string, ResolvedAuthor>();\n uniqueIds.forEach((id, index) => {\n const projected = projectUser(users[index] ?? null);\n if (projected !== null) {\n map.set(id, { id, ...projected });\n }\n });\n return map;\n}\n\n/**\n * Attach a resolved `author` to a record by looking it up in the map by\n * `record.authorId`. When `authors` is `null` (feature off) or the id is\n * missing from the map, the record passes through unchanged.\n */\nexport function attachAuthor<T extends { authorId?: string | null }>(\n record: T,\n authors: Map<string, ResolvedAuthor> | null,\n): T & { author?: ResolvedAuthor } {\n if (!authors) return record;\n const id = record.authorId;\n if (typeof id !== 'string' || id.length === 0) return record;\n const author = authors.get(id);\n if (!author) return record;\n return { ...record, author };\n}\n"],"mappings":";;;;;;;AAsBA,SAAS,gBAAgB,QAAgB,UAA4B;CACnE,MAAM,aAAa,WAAW,OAAO,YAAY,CAAC,EAAE,OAAO,KAAA;CAC3D,IAAI,cAAc,OAAO,WAAW,sBAAsB,YAAY,OAAO;CAC7E,MAAM,eAAgB,OAAoD,YAAY;CACtF,IAAI,CAAC,cAAc,MAAM,OAAO;CAChC,IAAI,OAAQ,aAAa,KAAyC,sBAAsB,YACtF,OAAO,aAAa;CAEtB,OAAO;AACT;AAEA,SAAS,eAAe,GAAgC;CACtD,OACE,MAAM,QACN,OAAO,MAAM,YACb,OAAQ,EAAmC,mBAAmB,cAC9D,OAAQ,EAA4B,YAAY;AAEpD;AAEA,SAAS,UAAU,WAA+D;CAChF,MAAM,sBAAM,IAAI,IAAY;CAC5B,KAAK,MAAM,MAAM,WACf,IAAI,OAAO,OAAO,YAAY,GAAG,SAAS,GAAG,IAAI,IAAI,EAAE;CAEzD,OAAO,MAAM,KAAK,GAAG;AACvB;AAEA,SAAS,YAAY,MAAsD;CACzE,IAAI,CAAC,MAAM,OAAO;CAClB,MAAM,MAAkC,CAAC;CACzC,IAAI,OAAO,KAAK,SAAS,UAAU,IAAI,OAAO,KAAK;CACnD,IAAI,OAAO,KAAK,UAAU,UAAU,IAAI,QAAQ,KAAK;CACrD,IAAI,OAAO,KAAK,cAAc,UAAU,IAAI,YAAY,KAAK;CAC7D,OAAO;AACT;;;;;;;;;;;;;;;;;AAkBA,eAAsB,wBACpB,QACA,iBACA,WACA,WAAW,OACkC;CAC7C,MAAM,WAAW,gBAAgB,QAAQ,QAAQ;CACjD,IAAI,CAAC,YAAY,CAAC,eAAe,QAAQ,GAAG,OAAO;CAEnD,MAAM,YAAY,UAAU,SAAS;CACrC,IAAI,UAAU,WAAW,GAAG,uBAAO,IAAI,IAAI;CAE3C,IAAI;CACJ,IAAI,OAAO,SAAS,aAAa,YAC/B,IAAI;EACF,QAAQ,MAAM,SAAS,SAAS,SAAS;CAC3C,QAAQ;EAEN,uBAAO,IAAI,IAAI;CACjB;MAEA,QAAQ,MAAM,QAAQ,IAAI,UAAU,KAAI,OAAM,SAAS,QAAQ,EAAE,CAAC,CAAC,YAAyB,IAAI,CAAC,CAAC;CAGpG,MAAM,sBAAM,IAAI,IAA4B;CAC5C,UAAU,SAAS,IAAI,UAAU;EAC/B,MAAM,YAAY,YAAY,MAAM,UAAU,IAAI;EAClD,IAAI,cAAc,MAChB,IAAI,IAAI,IAAI;GAAE;GAAI,GAAG;EAAU,CAAC;CAEpC,CAAC;CACD,OAAO;AACT;;;;;;AAOA,SAAgB,aACd,QACA,SACiC;CACjC,IAAI,CAAC,SAAS,OAAO;CACrB,MAAM,KAAK,OAAO;CAClB,IAAI,OAAO,OAAO,YAAY,GAAG,WAAW,GAAG,OAAO;CACtD,MAAM,SAAS,QAAQ,IAAI,EAAE;CAC7B,IAAI,CAAC,QAAQ,OAAO;CACpB,OAAO;EAAE,GAAG;EAAQ;CAAO;AAC7B"}
|
|
@@ -5,18 +5,28 @@ const require_common = require("../../common-DQn8jX5T.cjs");
|
|
|
5
5
|
const require_route_builder = require("../../route-builder-C8n4ugUf.cjs");
|
|
6
6
|
const require_constants = require("../../constants-4IJp_uzj.cjs");
|
|
7
7
|
const require_server_handlers_error = require("./error.cjs");
|
|
8
|
-
const require_datasets = require("../../datasets-
|
|
8
|
+
const require_datasets = require("../../datasets-BVbtevHd.cjs");
|
|
9
9
|
let zod = require("zod");
|
|
10
10
|
let _mastra_core_agent = require("@mastra/core/agent");
|
|
11
11
|
let _mastra_core_error = require("@mastra/core/error");
|
|
12
12
|
let _mastra_core_llm = require("@mastra/core/llm");
|
|
13
|
-
let _mastra_core_features = require("@mastra/core/features");
|
|
14
13
|
let _mastra_core_request_context = require("@mastra/core/request-context");
|
|
14
|
+
let _mastra_core_features = require("@mastra/core/features");
|
|
15
15
|
//#region src/server/handlers/datasets.ts
|
|
16
16
|
function assertDatasetsAvailable() {
|
|
17
17
|
if (!_mastra_core_features.coreFeatures.has("datasets")) throw new require_http_exception.HTTPException(501, { message: "Datasets require @mastra/core >= 1.4.0" });
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
|
+
* Experiment deletion reaches core through `mastra.datasets.deleteExperiment`,
|
|
21
|
+
* which is newer than the `datasets` feature itself. A core that predates it
|
|
22
|
+
* satisfies `assertDatasetsAvailable` and would then fail at call time with
|
|
23
|
+
* "deleteExperiment is not a function", so gate the newer capability separately
|
|
24
|
+
* and report the version skew as a 501 rather than a 500.
|
|
25
|
+
*/
|
|
26
|
+
function assertExperimentDeletionAvailable() {
|
|
27
|
+
if (!_mastra_core_features.coreFeatures.has("experiment-deletion")) throw new require_http_exception.HTTPException(501, { message: "Experiment deletion requires a newer @mastra/core with experiment deletion support." });
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
20
30
|
* Recovers the caller-provided request context for a dataset item.
|
|
21
31
|
*
|
|
22
32
|
* Server adapters overwrite the body's `requestContext` field with the live
|
|
@@ -371,6 +381,36 @@ const UPDATE_ITEM_ROUTE = require_route_builder.createRoute({
|
|
|
371
381
|
}
|
|
372
382
|
}
|
|
373
383
|
});
|
|
384
|
+
const PURGE_ITEM_ROUTE = require_route_builder.createRoute({
|
|
385
|
+
method: "DELETE",
|
|
386
|
+
path: "/datasets/:datasetId/items/:itemId/purge",
|
|
387
|
+
responseType: "json",
|
|
388
|
+
pathParamSchema: require_datasets.datasetAndItemIdPathParams,
|
|
389
|
+
queryParamSchema: require_datasets.tenancyQuerySchema,
|
|
390
|
+
responseSchema: require_common.successResponseSchema,
|
|
391
|
+
summary: "Purge dataset item data",
|
|
392
|
+
description: "Permanently scrubs item data from all dataset versions and linked experiment results",
|
|
393
|
+
tags: ["Datasets"],
|
|
394
|
+
requiresAuth: true,
|
|
395
|
+
handler: async ({ mastra, datasetId, itemId, ...params }) => {
|
|
396
|
+
assertDatasetsAvailable();
|
|
397
|
+
if (!_mastra_core_features.coreFeatures.has("dataset-item-purge")) throw new require_http_exception.HTTPException(501, { message: "Dataset item purge requires a newer @mastra/core with dataset purge support." });
|
|
398
|
+
try {
|
|
399
|
+
const { organizationId, projectId } = params;
|
|
400
|
+
const ds = await mastra.datasets.get({
|
|
401
|
+
id: datasetId,
|
|
402
|
+
organizationId,
|
|
403
|
+
projectId
|
|
404
|
+
});
|
|
405
|
+
if ((await ds.getItemHistory({ itemId })).length === 0) throw new require_http_exception.HTTPException(404, { message: `Item not found: ${itemId}` });
|
|
406
|
+
await ds.purgeItem({ itemId });
|
|
407
|
+
return { success: true };
|
|
408
|
+
} catch (error) {
|
|
409
|
+
if (error instanceof _mastra_core_error.MastraError) throw new require_http_exception.HTTPException(getHttpStatusForMastraError(error.id), { message: error.message });
|
|
410
|
+
return require_server_handlers_error.handleError(error, "Error purging dataset item data");
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
});
|
|
374
414
|
const DELETE_ITEM_ROUTE = require_route_builder.createRoute({
|
|
375
415
|
method: "DELETE",
|
|
376
416
|
path: "/datasets/:datasetId/items/:itemId",
|
|
@@ -456,6 +496,37 @@ const EXPERIMENT_REVIEW_SUMMARY_ROUTE = require_route_builder.createRoute({
|
|
|
456
496
|
}
|
|
457
497
|
}
|
|
458
498
|
});
|
|
499
|
+
const DELETE_ANY_EXPERIMENT_ROUTE = require_route_builder.createRoute({
|
|
500
|
+
method: "DELETE",
|
|
501
|
+
path: "/experiments/:experimentId",
|
|
502
|
+
responseType: "json",
|
|
503
|
+
pathParamSchema: require_datasets.experimentIdPathParams,
|
|
504
|
+
queryParamSchema: require_datasets.tenancyQuerySchema,
|
|
505
|
+
responseSchema: require_common.successResponseSchema,
|
|
506
|
+
summary: "Delete experiment",
|
|
507
|
+
description: "Deletes an experiment and its results regardless of dataset association (including experiments orphaned by dataset deletion). Also deletes the traces the experiment produced, cascading to their spans and trace-linked scores, feedback, metrics and logs.",
|
|
508
|
+
tags: ["Experiments"],
|
|
509
|
+
requiresAuth: true,
|
|
510
|
+
handler: async ({ mastra, experimentId, ...params }) => {
|
|
511
|
+
assertDatasetsAvailable();
|
|
512
|
+
assertExperimentDeletionAvailable();
|
|
513
|
+
try {
|
|
514
|
+
const { organizationId, projectId } = params;
|
|
515
|
+
if (!(organizationId !== void 0 || projectId !== void 0)) {
|
|
516
|
+
if (!await mastra.datasets.getExperiment({ experimentId })) throw new require_http_exception.HTTPException(404, { message: `Experiment not found: ${experimentId}` });
|
|
517
|
+
}
|
|
518
|
+
await mastra.datasets.deleteExperiment({
|
|
519
|
+
experimentId,
|
|
520
|
+
...organizationId !== void 0 ? { organizationId } : {},
|
|
521
|
+
...projectId !== void 0 ? { projectId } : {}
|
|
522
|
+
});
|
|
523
|
+
return { success: true };
|
|
524
|
+
} catch (error) {
|
|
525
|
+
if (error instanceof _mastra_core_error.MastraError) throw new require_http_exception.HTTPException(getHttpStatusForMastraError(error.id), { message: error.message });
|
|
526
|
+
return require_server_handlers_error.handleError(error, "Error deleting experiment");
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
});
|
|
459
530
|
const LIST_EXPERIMENTS_ROUTE = require_route_builder.createRoute({
|
|
460
531
|
method: "GET",
|
|
461
532
|
path: "/datasets/:datasetId/experiments",
|
|
@@ -667,6 +738,34 @@ const GET_EXPERIMENT_ROUTE = require_route_builder.createRoute({
|
|
|
667
738
|
}
|
|
668
739
|
}
|
|
669
740
|
});
|
|
741
|
+
const DELETE_EXPERIMENT_ROUTE = require_route_builder.createRoute({
|
|
742
|
+
method: "DELETE",
|
|
743
|
+
path: "/datasets/:datasetId/experiments/:experimentId",
|
|
744
|
+
responseType: "json",
|
|
745
|
+
pathParamSchema: require_datasets.datasetAndExperimentIdPathParams,
|
|
746
|
+
queryParamSchema: require_datasets.tenancyQuerySchema,
|
|
747
|
+
responseSchema: require_common.successResponseSchema,
|
|
748
|
+
summary: "Delete experiment",
|
|
749
|
+
description: "Deletes an experiment and its results. Also deletes the traces the experiment produced, cascading to their spans and trace-linked scores, feedback, metrics and logs.",
|
|
750
|
+
tags: ["Datasets"],
|
|
751
|
+
requiresAuth: true,
|
|
752
|
+
handler: async ({ mastra, datasetId, experimentId, ...params }) => {
|
|
753
|
+
assertDatasetsAvailable();
|
|
754
|
+
assertExperimentDeletionAvailable();
|
|
755
|
+
try {
|
|
756
|
+
const { organizationId, projectId } = params;
|
|
757
|
+
await (await mastra.datasets.get({
|
|
758
|
+
id: datasetId,
|
|
759
|
+
organizationId,
|
|
760
|
+
projectId
|
|
761
|
+
})).deleteExperiment({ experimentId });
|
|
762
|
+
return { success: true };
|
|
763
|
+
} catch (error) {
|
|
764
|
+
if (error instanceof _mastra_core_error.MastraError) throw new require_http_exception.HTTPException(getHttpStatusForMastraError(error.id), { message: error.message });
|
|
765
|
+
return require_server_handlers_error.handleError(error, "Error deleting experiment");
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
});
|
|
670
769
|
const UPDATE_EXPERIMENT_ROUTE = require_route_builder.createRoute({
|
|
671
770
|
method: "PATCH",
|
|
672
771
|
path: "/datasets/:datasetId/experiments/:experimentId",
|
|
@@ -1091,7 +1190,9 @@ exports.BATCH_INSERT_ITEMS_ROUTE = BATCH_INSERT_ITEMS_ROUTE;
|
|
|
1091
1190
|
exports.CLUSTER_FAILURES_ROUTE = CLUSTER_FAILURES_ROUTE;
|
|
1092
1191
|
exports.COMPARE_EXPERIMENTS_ROUTE = COMPARE_EXPERIMENTS_ROUTE;
|
|
1093
1192
|
exports.CREATE_DATASET_ROUTE = CREATE_DATASET_ROUTE;
|
|
1193
|
+
exports.DELETE_ANY_EXPERIMENT_ROUTE = DELETE_ANY_EXPERIMENT_ROUTE;
|
|
1094
1194
|
exports.DELETE_DATASET_ROUTE = DELETE_DATASET_ROUTE;
|
|
1195
|
+
exports.DELETE_EXPERIMENT_ROUTE = DELETE_EXPERIMENT_ROUTE;
|
|
1095
1196
|
exports.DELETE_ITEM_ROUTE = DELETE_ITEM_ROUTE;
|
|
1096
1197
|
exports.EXPERIMENT_REVIEW_SUMMARY_ROUTE = EXPERIMENT_REVIEW_SUMMARY_ROUTE;
|
|
1097
1198
|
exports.FINALIZE_EXPERIMENT_ROUTE = FINALIZE_EXPERIMENT_ROUTE;
|
|
@@ -1107,6 +1208,7 @@ exports.LIST_EXPERIMENTS_ROUTE = LIST_EXPERIMENTS_ROUTE;
|
|
|
1107
1208
|
exports.LIST_EXPERIMENT_RESULTS_ROUTE = LIST_EXPERIMENT_RESULTS_ROUTE;
|
|
1108
1209
|
exports.LIST_ITEMS_ROUTE = LIST_ITEMS_ROUTE;
|
|
1109
1210
|
exports.LIST_ITEM_VERSIONS_ROUTE = LIST_ITEM_VERSIONS_ROUTE;
|
|
1211
|
+
exports.PURGE_ITEM_ROUTE = PURGE_ITEM_ROUTE;
|
|
1110
1212
|
exports.RUN_EXPERIMENT_ITEM_ROUTE = RUN_EXPERIMENT_ITEM_ROUTE;
|
|
1111
1213
|
exports.SUBMIT_EXPERIMENT_RESULT_ROUTE = SUBMIT_EXPERIMENT_RESULT_ROUTE;
|
|
1112
1214
|
exports.TRIGGER_EXPERIMENT_ROUTE = TRIGGER_EXPERIMENT_ROUTE;
|