@mastra/server 1.46.1-alpha.0 → 1.46.1-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 +7 -0
- package/dist/{api-schema-manifest-PVHR2FGG.cjs → api-schema-manifest-UURVUNXQ.cjs} +4 -4
- package/dist/{api-schema-manifest-PVHR2FGG.cjs.map → api-schema-manifest-UURVUNXQ.cjs.map} +1 -1
- package/dist/{api-schema-manifest-F6SF6FJT.js → api-schema-manifest-YB7LBQHE.js} +3 -3
- package/dist/{api-schema-manifest-F6SF6FJT.js.map → api-schema-manifest-YB7LBQHE.js.map} +1 -1
- package/dist/{chunk-E2EYPHRE.cjs → chunk-55YQXUOE.cjs} +3 -3
- package/dist/{chunk-E2EYPHRE.cjs.map → chunk-55YQXUOE.cjs.map} +1 -1
- package/dist/{chunk-FYBFIW5N.js → chunk-6UL3DHZP.js} +4 -4
- package/dist/{chunk-FYBFIW5N.js.map → chunk-6UL3DHZP.js.map} +1 -1
- package/dist/{chunk-7HMXQIPK.js → chunk-BIYCTKL5.js} +3 -3
- package/dist/{chunk-7HMXQIPK.js.map → chunk-BIYCTKL5.js.map} +1 -1
- package/dist/{chunk-2CLXY7EU.cjs → chunk-MIIC4RAA.cjs} +39 -39
- package/dist/{chunk-2CLXY7EU.cjs.map → chunk-MIIC4RAA.cjs.map} +1 -1
- package/dist/{chunk-MYNSU6B4.js → chunk-PWU43QJA.js} +3 -3
- package/dist/chunk-PWU43QJA.js.map +1 -0
- package/dist/{chunk-I6AIWII6.cjs → chunk-USOMBGLF.cjs} +3 -3
- package/dist/chunk-USOMBGLF.cjs.map +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/server/handlers/harness.cjs +35 -35
- package/dist/server/handlers/harness.js +1 -1
- package/dist/server/handlers/system.cjs +3 -3
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/server-adapter/index.cjs +13 -13
- package/dist/server/server-adapter/index.js +2 -2
- package/package.json +6 -6
- package/dist/chunk-I6AIWII6.cjs.map +0 -1
- package/dist/chunk-MYNSU6B4.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/harness.ts"],"names":[],"mappings":"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","file":"chunk-PWU43QJA.js","sourcesContent":["import type { Agent } from '@mastra/core/agent';\nimport type { Harness, Session } from '@mastra/core/harness';\nimport { z } from 'zod/v4';\n\nimport { HTTPException } from '../http-exception';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\n/**\n * Harness session routes.\n *\n * A Harness registered on a Mastra instance (via `new Mastra({ harnesses })`)\n * exposes its sessions over HTTP so non-terminal clients — e.g. a browser-based\n * MastraCode — can create sessions, send messages, stream events, and drive\n * run-control. Each route resolves its target Harness by id, then operates on a\n * session bound to a `resourceId` (get-or-create, so reconnects resume rather\n * than fork the conversation).\n */\n\nfunction getHarnessOrThrow(\n mastra: { getHarness: (id: string) => Harness<any> | undefined },\n harnessId: string,\n): Harness<any> {\n const harness = mastra.getHarness(harnessId);\n if (!harness) {\n throw new HTTPException(404, { message: `harness \"${harnessId}\" not found` });\n }\n return harness;\n}\n\nasync function getSession(harness: Harness<any>, resourceId: string): Promise<Session<any>> {\n await harness.init();\n return harness.createSession({ resourceId, id: resourceId, ownerId: harness.id });\n}\n\n// ---------------------------------------------------------------------------\n// Schemas\n// ---------------------------------------------------------------------------\n\nconst harnessIdPathParams = z.object({ harnessId: z.string() });\nconst sessionPathParams = z.object({ harnessId: z.string(), resourceId: z.string() });\n\nconst createSessionBodySchema = z.object({ resourceId: z.string() });\nconst sendMessageBodySchema = z.object({ message: z.string() });\nconst steerBodySchema = z.object({ message: z.string() });\nconst toolApprovalBodySchema = z.object({\n toolCallId: z.string(),\n approved: z.boolean(),\n});\nconst toolSuspensionBodySchema = z.object({\n toolCallId: z.string(),\n // Free-form resume payload. For ask_user this is a string (or string[] for\n // multi-select); for submit_plan it's `{ action, feedback? }`; for\n // request_access it's \"Yes\"/\"No\".\n resumeData: z.any(),\n});\nconst switchModeBodySchema = z.object({ modeId: z.string() });\nconst switchModelBodySchema = z.object({\n modelId: z.string(),\n scope: z.enum(['global', 'thread']).optional(),\n modeId: z.string().optional(),\n});\nconst switchThreadBodySchema = z.object({ threadId: z.string() });\nconst createThreadBodySchema = z.object({ title: z.string().optional() });\nconst renameThreadBodySchema = z.object({ title: z.string() });\nconst threadPathParams = z.object({ harnessId: z.string(), resourceId: z.string(), threadId: z.string() });\nconst cloneThreadBodySchema = z.object({\n sourceThreadId: z.string().optional(),\n title: z.string().optional(),\n});\nconst listMessagesQuerySchema = z.object({ limit: z.coerce.number().optional() });\nconst listThreadsQuerySchema = z.object({ limit: z.coerce.number().optional() });\nconst followUpBodySchema = z.object({ message: z.string() });\n\nconst sendNotificationBodySchema = z.object({\n source: z.string(),\n kind: z.string(),\n summary: z.string(),\n priority: z.enum(['low', 'medium', 'high', 'urgent']).optional(),\n payload: z.any().optional(),\n sourceId: z.string().optional(),\n dedupeKey: z.string().optional(),\n coalesceKey: z.string().optional(),\n attributes: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst listHarnessesResponseSchema = z.object({\n harnesses: z.array(z.object({ id: z.string() })),\n});\nconst createSessionResponseSchema = z.object({\n harnessId: z.string(),\n resourceId: z.string(),\n threadId: z.string().optional(),\n});\nconst ackResponseSchema = z.object({ ok: z.boolean() });\nconst sessionStateResponseSchema = z.object({\n harnessId: z.string(),\n resourceId: z.string(),\n threadId: z.string().optional(),\n modeId: z.string(),\n modelId: z.string(),\n});\nconst listModesResponseSchema = z.object({\n modes: z.array(z.object({ id: z.string(), name: z.string().optional() })),\n});\nconst listThreadsResponseSchema = z.object({\n threads: z.array(\n z.object({\n id: z.string(),\n title: z.string().optional(),\n updatedAt: z.string().optional(),\n }),\n ),\n});\nconst threadResponseSchema = z.object({\n id: z.string(),\n title: z.string().optional(),\n resourceId: z.string().optional(),\n createdAt: z.string().optional(),\n updatedAt: z.string().optional(),\n});\nconst messageContentSchema = z\n .object({\n type: z.string(),\n })\n .passthrough();\nconst listMessagesResponseSchema = z.object({\n messages: z.array(\n z.object({\n id: z.string(),\n role: z.enum(['user', 'assistant', 'system']),\n content: z.array(messageContentSchema),\n createdAt: z.string().optional(),\n }),\n ),\n});\nconst listModelsResponseSchema = z.object({\n models: z.array(\n z.object({\n id: z.string(),\n provider: z.string(),\n modelName: z.string(),\n hasApiKey: z.boolean(),\n useCount: z.number(),\n }),\n ),\n});\nconst workspaceStatusResponseSchema = z.object({\n hasWorkspace: z.boolean(),\n isReady: z.boolean(),\n});\nconst omRecordResponseSchema = z.object({\n record: z.any().optional(),\n});\nconst permissionPolicyEnum = z.enum(['allow', 'ask', 'deny']);\nconst toolCategoryEnum = z.enum(['read', 'edit', 'execute', 'mcp', 'other']);\nconst permissionRulesResponseSchema = z.object({\n categories: z.record(z.string(), permissionPolicyEnum).optional(),\n tools: z.record(z.string(), permissionPolicyEnum).optional(),\n});\nconst setCategoryPermissionBodySchema = z.object({\n category: toolCategoryEnum,\n policy: permissionPolicyEnum,\n});\nconst setToolPermissionBodySchema = z.object({\n toolName: z.string(),\n policy: permissionPolicyEnum,\n});\n\n// ---------------------------------------------------------------------------\n// Routes\n// ---------------------------------------------------------------------------\n\nexport const LIST_HARNESSES_ROUTE = createRoute({\n method: 'GET',\n path: '/harness',\n responseType: 'json' as const,\n responseSchema: listHarnessesResponseSchema,\n summary: 'List harnesses',\n description: 'Lists the harnesses hosted on this Mastra instance.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra }) => {\n try {\n const harnesses = mastra.listHarnesses();\n return { harnesses: Object.keys(harnesses).map(id => ({ id })) };\n } catch (error) {\n return handleError(error, 'error listing harnesses');\n }\n },\n});\n\nexport const CREATE_HARNESS_SESSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions',\n responseType: 'json' as const,\n pathParamSchema: harnessIdPathParams,\n bodySchema: createSessionBodySchema,\n responseSchema: createSessionResponseSchema,\n summary: 'Create or resume a harness session',\n description:\n 'Creates a session for the given resourceId, or returns the existing one (get-or-create), so reconnects resume the conversation.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n return {\n harnessId,\n resourceId,\n threadId: session.thread.getId() ?? undefined,\n };\n } catch (error) {\n return handleError(error, 'error creating harness session');\n }\n },\n});\n\nexport const STREAM_HARNESS_SESSION_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n sseFlushOnConnect: true,\n pathParamSchema: sessionPathParams,\n summary: 'Stream harness session events',\n description: 'Subscribes to a session\\u2019s event bus and streams events to the client over SSE.',\n tags: ['Harness', 'Streaming'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId, abortSignal }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n\n let cleanedUp = false;\n let heartbeat: ReturnType<typeof setTimeout> | undefined;\n let unsubscribe: (() => void) | undefined;\n const clearHeartbeat = () => {\n if (heartbeat) {\n clearTimeout(heartbeat);\n heartbeat = undefined;\n }\n };\n const cleanup = (controller?: ReadableStreamDefaultController) => {\n if (cleanedUp) return;\n cleanedUp = true;\n clearHeartbeat();\n unsubscribe?.();\n if (controller) {\n try {\n controller.close();\n } catch {}\n }\n };\n\n return new ReadableStream<string>({\n start(controller) {\n const scheduleHeartbeat = () => {\n if (cleanedUp) return;\n clearHeartbeat();\n heartbeat = setTimeout(() => {\n heartbeat = undefined;\n if (cleanedUp) return;\n try {\n controller.enqueue(': heartbeat\\n\\n');\n } catch {\n cleanup();\n return;\n }\n scheduleHeartbeat();\n }, 25_000);\n };\n\n unsubscribe = session.subscribe(event => {\n if (cleanedUp) return;\n try {\n controller.enqueue(`data: ${JSON.stringify(event)}\\n\\n`);\n scheduleHeartbeat();\n } catch {\n cleanup();\n }\n });\n\n const abortCleanup = () => cleanup(controller);\n abortSignal?.addEventListener('abort', abortCleanup, { once: true });\n scheduleHeartbeat();\n },\n cancel() {\n cleanup();\n },\n });\n } catch (error) {\n return handleError(error, 'error streaming harness session');\n }\n },\n});\n\nexport const SEND_HARNESS_MESSAGE_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/messages',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: sendMessageBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Send a message to a harness session',\n description: 'Sends a user message to the session. The reply streams as events on the session\\u2019s SSE stream.',\n tags: ['Harness', 'Streaming'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, message }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n void session.sendMessage({ content: message });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error sending harness message');\n }\n },\n});\n\nexport const ABORT_HARNESS_SESSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/abort',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: ackResponseSchema,\n summary: 'Abort a harness session run',\n description: 'Aborts the in-flight run for the session, if any.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n session.abort();\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error aborting harness session');\n }\n },\n});\n\nexport const HARNESS_TOOL_APPROVAL_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/tool-approval',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: toolApprovalBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Respond to a harness tool approval',\n description: 'Approves or declines a pending tool call surfaced by the session.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, toolCallId, approved }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n // Resolve the parked approval gate so the session's own run loop drives the\n // continuation and emits its events to subscribers (the open SSE stream).\n // Calling approveToolCall/declineToolCall directly would bypass the gate,\n // leaving the run loop hung and duplicating the resumed stream.\n // Pass toolCallId so a stale request cannot resolve a different pending gate.\n session.respondToToolApproval({ toolCallId, decision: approved ? 'approve' : 'decline' });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error responding to harness tool approval');\n }\n },\n});\n\nexport const HARNESS_TOOL_SUSPENSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/tool-suspension',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: toolSuspensionBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Respond to a suspended harness tool',\n description:\n 'Resumes a suspended interactive tool (ask_user, request_access, submit_plan) with the provided resume data.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, toolCallId, resumeData }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.respondToToolSuspension({ toolCallId, resumeData });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error responding to harness tool suspension');\n }\n },\n});\n\nexport const STEER_HARNESS_SESSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/steer',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: steerBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Steer the in-flight run',\n description: 'Injects a message into the running turn (interjection) without starting a new run.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, message }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n void session.steer({ content: message });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error steering harness session');\n }\n },\n});\n\nexport const SWITCH_HARNESS_MODE_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/mode',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: switchModeBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Switch the session mode',\n description: 'Switches the active mode (e.g. build, plan) for the session.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, modeId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.mode.switch({ modeId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error switching harness mode');\n }\n },\n});\n\nexport const SWITCH_HARNESS_MODEL_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/model',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: switchModelBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Switch the session model',\n description: 'Switches the model for the session, scoped to the thread by default.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, modelId, scope, modeId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.model.switch({ modelId, scope, modeId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error switching harness model');\n }\n },\n});\n\nexport const SWITCH_HARNESS_THREAD_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/thread',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: switchThreadBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Switch the session thread',\n description: 'Switches the session to an existing thread (rebinding its stream and state).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, threadId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.thread.switch({ threadId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error switching harness thread');\n }\n },\n});\n\nexport const GET_HARNESS_SESSION_STATE_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: sessionStateResponseSchema,\n summary: 'Get session state',\n description: 'Returns the current mode, model, and thread for the session (for initial UI hydration).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n return {\n harnessId,\n resourceId,\n threadId: session.thread.getId() ?? undefined,\n modeId: session.mode.get(),\n modelId: session.model.get(),\n };\n } catch (error) {\n return handleError(error, 'error reading harness session state');\n }\n },\n});\n\nexport const LIST_HARNESS_MODES_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/modes',\n responseType: 'json' as const,\n pathParamSchema: harnessIdPathParams,\n responseSchema: listModesResponseSchema,\n summary: 'List harness modes',\n description: 'Lists the modes configured on the harness (e.g. build, plan).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n return {\n modes: harness.listModes().map(mode => ({ id: mode.id, name: mode.name })),\n };\n } catch (error) {\n return handleError(error, 'error listing harness modes');\n }\n },\n});\n\nexport const LIST_HARNESS_THREADS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/threads',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n queryParamSchema: listThreadsQuerySchema,\n responseSchema: listThreadsResponseSchema,\n summary: 'List session threads',\n description:\n 'Lists the threads for the session\\u2019s resource, most-recently-updated first. Pass `limit` to return only the newest N (e.g. for a sidebar).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId, limit }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threads = await session.thread.list();\n const toTime = (t: { updatedAt?: Date; createdAt?: Date }) => (t.updatedAt ?? t.createdAt)?.getTime() ?? 0;\n const sorted = [...threads].sort((a, b) => toTime(b) - toTime(a));\n const max = Number(limit);\n const limited = Number.isFinite(max) && max > 0 ? sorted.slice(0, max) : sorted;\n return {\n threads: limited.map(t => ({\n id: t.id,\n title: t.title,\n updatedAt: t.updatedAt instanceof Date ? t.updatedAt.toISOString() : undefined,\n })),\n };\n } catch (error) {\n return handleError(error, 'error listing harness threads');\n }\n },\n});\n\nexport const SEND_HARNESS_NOTIFICATION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/notifications',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: sendNotificationBodySchema,\n responseSchema: z.object({\n accepted: z.boolean(),\n notificationId: z.string().optional(),\n decision: z.string().optional(),\n runId: z.string().optional(),\n }),\n summary: 'Send a notification signal to a session',\n description:\n 'Delivers a notification to the session\\u2019s current agent/thread. The agent\\u2019s delivery policy determines whether the notification wakes an idle thread, is summarised, or is persisted for later.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({\n mastra,\n harnessId,\n resourceId,\n source,\n kind,\n summary,\n priority,\n payload,\n sourceId,\n dedupeKey,\n coalesceKey,\n attributes,\n metadata,\n }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const result = await session.sendNotificationSignal({\n source,\n kind,\n summary,\n priority,\n payload,\n sourceId,\n dedupeKey,\n coalesceKey,\n attributes: attributes as Record<string, string | number | boolean | null | undefined> | undefined,\n metadata,\n });\n return {\n accepted: result.accepted !== undefined,\n notificationId: result.record?.id,\n decision: result.decision?.action,\n runId: result.runId,\n };\n } catch (error) {\n return handleError(error, 'error sending harness notification');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Thread lifecycle\n// ---------------------------------------------------------------------------\n\nexport const CREATE_HARNESS_THREAD_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/threads',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: createThreadBodySchema,\n responseSchema: threadResponseSchema,\n summary: 'Create a new thread',\n description: 'Creates a new thread in the session (unbinds the previous thread, binds the new one).',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, title }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const thread = await session.thread.create({ title });\n return {\n id: thread.id,\n title: thread.title,\n resourceId: thread.resourceId,\n createdAt: thread.createdAt instanceof Date ? thread.createdAt.toISOString() : undefined,\n updatedAt: thread.updatedAt instanceof Date ? thread.updatedAt.toISOString() : undefined,\n };\n } catch (error) {\n return handleError(error, 'error creating harness thread');\n }\n },\n});\n\nexport const DELETE_HARNESS_THREAD_ROUTE = createRoute({\n method: 'DELETE',\n path: '/harness/:harnessId/sessions/:resourceId/threads/:threadId',\n responseType: 'json' as const,\n pathParamSchema: threadPathParams,\n responseSchema: ackResponseSchema,\n summary: 'Delete a thread',\n description: 'Deletes a thread. If the deleted thread is the active one, the session is unbound.',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, threadId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.thread.delete({ threadId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error deleting harness thread');\n }\n },\n});\n\nexport const RENAME_HARNESS_THREAD_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/threads/:threadId',\n responseType: 'json' as const,\n pathParamSchema: threadPathParams,\n bodySchema: renameThreadBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Rename a thread',\n description: 'Renames the specified thread.',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, threadId, title }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n // Ensure the thread is the active one (switch if not)\n if (session.thread.getId() !== threadId) {\n await session.thread.switch({ threadId });\n }\n await session.thread.rename({ title });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error renaming harness thread');\n }\n },\n});\n\nexport const CLONE_HARNESS_THREAD_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/threads/clone',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: cloneThreadBodySchema,\n responseSchema: threadResponseSchema,\n summary: 'Clone a thread',\n description: 'Clones a thread (and its messages). The session binds to the new clone.',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, sourceThreadId, title }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const thread = await session.thread.clone({ sourceThreadId, title });\n return {\n id: thread.id,\n title: thread.title,\n resourceId: thread.resourceId,\n createdAt: thread.createdAt instanceof Date ? thread.createdAt.toISOString() : undefined,\n updatedAt: thread.updatedAt instanceof Date ? thread.updatedAt.toISOString() : undefined,\n };\n } catch (error) {\n return handleError(error, 'error cloning harness thread');\n }\n },\n});\n\nexport const LIST_HARNESS_THREAD_MESSAGES_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/threads/:threadId/messages',\n responseType: 'json' as const,\n pathParamSchema: threadPathParams,\n queryParamSchema: listMessagesQuerySchema,\n responseSchema: listMessagesResponseSchema,\n summary: 'List thread messages',\n description: 'Lists messages for a specific thread. Returns most recent messages first.',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId, threadId, limit }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const messages = await session.thread.listMessages({ threadId, limit });\n return {\n messages: messages.map(m => ({\n id: m.id,\n role: m.role,\n content: m.content as Array<{ type: string; [key: string]: unknown }>,\n createdAt: m.createdAt instanceof Date ? m.createdAt.toISOString() : undefined,\n })),\n };\n } catch (error) {\n return handleError(error, 'error listing harness thread messages');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Follow-up\n// ---------------------------------------------------------------------------\n\nexport const FOLLOW_UP_HARNESS_SESSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/follow-up',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: followUpBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Queue a follow-up message',\n description:\n 'Queues a follow-up message. If the session is idle it sends immediately; if a run is active it queues for after completion.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, message }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n void session.followUp({ content: message });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error queuing harness follow-up');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Models\n// ---------------------------------------------------------------------------\n\nexport const LIST_HARNESS_MODELS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/models',\n responseType: 'json' as const,\n pathParamSchema: harnessIdPathParams,\n responseSchema: listModelsResponseSchema,\n summary: 'List available models',\n description: 'Lists all models available on this harness (with auth status and use counts).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n await harness.init();\n const models = await harness.listAvailableModels();\n return {\n models: models.map(m => ({\n id: m.id,\n provider: m.provider,\n modelName: m.modelName,\n hasApiKey: m.hasApiKey,\n useCount: m.useCount,\n })),\n };\n } catch (error) {\n return handleError(error, 'error listing harness models');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Workspace status\n// ---------------------------------------------------------------------------\n\nexport const GET_HARNESS_WORKSPACE_STATUS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/workspace',\n responseType: 'json' as const,\n pathParamSchema: harnessIdPathParams,\n responseSchema: workspaceStatusResponseSchema,\n summary: 'Get workspace status',\n description: 'Returns whether the harness has a workspace configured and whether it is ready.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n await harness.init();\n return {\n hasWorkspace: harness.hasWorkspace(),\n isReady: harness.isWorkspaceReady(),\n };\n } catch (error) {\n return handleError(error, 'error reading harness workspace status');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Observational Memory\n// ---------------------------------------------------------------------------\n\nexport const GET_HARNESS_OM_RECORD_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/om',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: omRecordResponseSchema,\n summary: 'Get observational memory record',\n description: 'Returns the current observational memory record for the session\\u2019s thread/resource.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const record = await harness.getObservationalMemoryRecord(session);\n return { record: record ?? undefined };\n } catch (error) {\n return handleError(error, 'error reading harness OM record');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Resource identity\n// ---------------------------------------------------------------------------\n\nexport const SET_HARNESS_RESOURCE_ID_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/resource',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: z.object({ newResourceId: z.string() }),\n responseSchema: ackResponseSchema,\n summary: 'Change the session resource ID',\n description: 'Updates the session\\u2019s resource identity (e.g. when a user logs in).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, newResourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await harness.setResourceId(session, { resourceId: newResourceId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error setting harness resource ID');\n }\n },\n});\n\nexport const GET_HARNESS_RESOURCE_IDS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/resources',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: z.object({ resourceIds: z.array(z.string()) }),\n summary: 'Get known resource IDs',\n description: 'Lists the resource IDs known to this session (from threads).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const resourceIds = await harness.getKnownResourceIds(session);\n return { resourceIds };\n } catch (error) {\n return handleError(error, 'error listing harness resource IDs');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Goals\n// ---------------------------------------------------------------------------\n\nconst setGoalBodySchema = z.object({\n objective: z.string(),\n judgeModelId: z.string().optional(),\n maxRuns: z.number().optional(),\n});\nconst updateGoalBodySchema = z.object({\n judgeModelId: z.string().optional(),\n maxRuns: z.number().optional(),\n status: z.enum(['active', 'paused', 'done']).optional(),\n});\nconst goalRecordSchema = z.object({\n id: z.string().optional(),\n objective: z.string(),\n status: z.enum(['active', 'paused', 'done']),\n runsUsed: z.number(),\n maxRuns: z.number().optional(),\n judgeModelId: z.string().optional(),\n startedAt: z.number(),\n updatedAt: z.number(),\n pausedReason: z.string().optional(),\n});\nconst goalResponseSchema = z.object({ goal: goalRecordSchema.optional() });\n\nfunction getAgentForSession(harness: Harness<any>, session: Session<any>): Agent {\n return harness.getCurrentAgent(session);\n}\n\nexport const GET_HARNESS_GOAL_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/goal',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: goalResponseSchema,\n summary: 'Get the current goal',\n description: 'Returns the active/paused/done goal objective for the session\\u2019s thread, if any.',\n tags: ['Harness', 'Goals'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threadId = session.thread.getId();\n if (!threadId) return { goal: undefined };\n const agent = getAgentForSession(harness, session);\n const record = await agent.getObjective({ threadId });\n return { goal: record ?? undefined };\n } catch (error) {\n return handleError(error, 'error reading harness goal');\n }\n },\n});\n\nexport const SET_HARNESS_GOAL_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/goal',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: setGoalBodySchema,\n responseSchema: goalResponseSchema,\n summary: 'Set a goal',\n description:\n 'Sets a new objective for the session\\u2019s thread. The agent\\u2019s in-loop goal judge evaluates progress after each turn.',\n tags: ['Harness', 'Goals'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, objective, judgeModelId, maxRuns }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threadId = session.thread.getId();\n if (!threadId) throw new HTTPException(400, { message: 'session has no active thread' });\n const agent = getAgentForSession(harness, session);\n const record = await agent.setObjective(objective, {\n threadId,\n resourceId: session.identity.getResourceId(),\n ...(judgeModelId ? { judgeModelId } : {}),\n ...(maxRuns != null ? { maxRuns } : {}),\n });\n return { goal: record ?? undefined };\n } catch (error) {\n return handleError(error, 'error setting harness goal');\n }\n },\n});\n\nexport const UPDATE_HARNESS_GOAL_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/goal',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: updateGoalBodySchema,\n responseSchema: goalResponseSchema,\n summary: 'Update goal options',\n description: 'Updates the judge model, max runs, or status of the active goal. No-op when no goal is set.',\n tags: ['Harness', 'Goals'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, judgeModelId, maxRuns, status }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threadId = session.thread.getId();\n if (!threadId) throw new HTTPException(400, { message: 'session has no active thread' });\n const agent = getAgentForSession(harness, session);\n const record = await agent.updateObjectiveOptions({\n threadId,\n ...(judgeModelId !== undefined ? { judgeModelId } : {}),\n ...(maxRuns !== undefined ? { maxRuns } : {}),\n ...(status !== undefined ? { status } : {}),\n });\n return { goal: record ?? undefined };\n } catch (error) {\n return handleError(error, 'error updating harness goal');\n }\n },\n});\n\nexport const CLEAR_HARNESS_GOAL_ROUTE = createRoute({\n method: 'DELETE',\n path: '/harness/:harnessId/sessions/:resourceId/goal',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: ackResponseSchema,\n summary: 'Clear the goal',\n description: 'Removes the active goal from the session\\u2019s thread.',\n tags: ['Harness', 'Goals'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threadId = session.thread.getId();\n if (!threadId) throw new HTTPException(400, { message: 'session has no active thread' });\n const agent = getAgentForSession(harness, session);\n await agent.clearObjective({ threadId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error clearing harness goal');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Permissions\n// ---------------------------------------------------------------------------\n\nexport const GET_HARNESS_PERMISSIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/permissions',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: permissionRulesResponseSchema,\n summary: 'Get permission rules',\n description: 'Returns the current permission rules (per-category and per-tool policies) for the session.',\n tags: ['Harness', 'Permissions'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const rules = session.permissions.getRules();\n return {\n categories: rules.categories as Record<string, 'allow' | 'ask' | 'deny'> | undefined,\n tools: rules.tools as Record<string, 'allow' | 'ask' | 'deny'> | undefined,\n };\n } catch (error) {\n return handleError(error, 'error getting harness permissions');\n }\n },\n});\n\nexport const SET_HARNESS_CATEGORY_PERMISSION_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/permissions/category',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: setCategoryPermissionBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Set permission for a tool category',\n description: 'Sets the approval policy (allow/ask/deny) for all tools in a category.',\n tags: ['Harness', 'Permissions'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, category, policy }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.permissions.setForCategory({ category, policy });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error setting harness category permission');\n }\n },\n});\n\nexport const SET_HARNESS_TOOL_PERMISSION_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/permissions/tool',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: setToolPermissionBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Set permission for a specific tool',\n description:\n 'Sets the approval policy (allow/ask/deny) for a specific tool by name. Per-tool overrides take precedence over category policies.',\n tags: ['Harness', 'Permissions'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, toolName, policy }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.permissions.setForTool({ toolName, policy });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error setting harness tool permission');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Session State\n// ---------------------------------------------------------------------------\n\nconst setSessionStateBodySchema = z.object({ state: z.record(z.string(), z.unknown()) });\n\nexport const SET_HARNESS_SESSION_STATE_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/state',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: setSessionStateBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Set session state',\n description:\n 'Merges the provided key-value pairs into the session state. Existing keys not in the payload are preserved.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, state }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.state.set(state as Record<string, unknown>);\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error setting harness session state');\n }\n },\n});\n"]}
|
|
@@ -14,7 +14,7 @@ function getHarnessOrThrow(mastra, harnessId) {
|
|
|
14
14
|
}
|
|
15
15
|
async function getSession(harness, resourceId) {
|
|
16
16
|
await harness.init();
|
|
17
|
-
return harness.createSession({ resourceId });
|
|
17
|
+
return harness.createSession({ resourceId, id: resourceId, ownerId: harness.id });
|
|
18
18
|
}
|
|
19
19
|
var harnessIdPathParams = v4.z.object({ harnessId: v4.z.string() });
|
|
20
20
|
var sessionPathParams = v4.z.object({ harnessId: v4.z.string(), resourceId: v4.z.string() });
|
|
@@ -1134,5 +1134,5 @@ exports.SWITCH_HARNESS_MODEL_ROUTE = SWITCH_HARNESS_MODEL_ROUTE;
|
|
|
1134
1134
|
exports.SWITCH_HARNESS_MODE_ROUTE = SWITCH_HARNESS_MODE_ROUTE;
|
|
1135
1135
|
exports.SWITCH_HARNESS_THREAD_ROUTE = SWITCH_HARNESS_THREAD_ROUTE;
|
|
1136
1136
|
exports.UPDATE_HARNESS_GOAL_ROUTE = UPDATE_HARNESS_GOAL_ROUTE;
|
|
1137
|
-
//# sourceMappingURL=chunk-
|
|
1138
|
-
//# sourceMappingURL=chunk-
|
|
1137
|
+
//# sourceMappingURL=chunk-USOMBGLF.cjs.map
|
|
1138
|
+
//# sourceMappingURL=chunk-USOMBGLF.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/harness.ts"],"names":["HTTPException","z","createRoute","handleError"],"mappings":"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","file":"chunk-USOMBGLF.cjs","sourcesContent":["import type { Agent } from '@mastra/core/agent';\nimport type { Harness, Session } from '@mastra/core/harness';\nimport { z } from 'zod/v4';\n\nimport { HTTPException } from '../http-exception';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\n/**\n * Harness session routes.\n *\n * A Harness registered on a Mastra instance (via `new Mastra({ harnesses })`)\n * exposes its sessions over HTTP so non-terminal clients — e.g. a browser-based\n * MastraCode — can create sessions, send messages, stream events, and drive\n * run-control. Each route resolves its target Harness by id, then operates on a\n * session bound to a `resourceId` (get-or-create, so reconnects resume rather\n * than fork the conversation).\n */\n\nfunction getHarnessOrThrow(\n mastra: { getHarness: (id: string) => Harness<any> | undefined },\n harnessId: string,\n): Harness<any> {\n const harness = mastra.getHarness(harnessId);\n if (!harness) {\n throw new HTTPException(404, { message: `harness \"${harnessId}\" not found` });\n }\n return harness;\n}\n\nasync function getSession(harness: Harness<any>, resourceId: string): Promise<Session<any>> {\n await harness.init();\n return harness.createSession({ resourceId, id: resourceId, ownerId: harness.id });\n}\n\n// ---------------------------------------------------------------------------\n// Schemas\n// ---------------------------------------------------------------------------\n\nconst harnessIdPathParams = z.object({ harnessId: z.string() });\nconst sessionPathParams = z.object({ harnessId: z.string(), resourceId: z.string() });\n\nconst createSessionBodySchema = z.object({ resourceId: z.string() });\nconst sendMessageBodySchema = z.object({ message: z.string() });\nconst steerBodySchema = z.object({ message: z.string() });\nconst toolApprovalBodySchema = z.object({\n toolCallId: z.string(),\n approved: z.boolean(),\n});\nconst toolSuspensionBodySchema = z.object({\n toolCallId: z.string(),\n // Free-form resume payload. For ask_user this is a string (or string[] for\n // multi-select); for submit_plan it's `{ action, feedback? }`; for\n // request_access it's \"Yes\"/\"No\".\n resumeData: z.any(),\n});\nconst switchModeBodySchema = z.object({ modeId: z.string() });\nconst switchModelBodySchema = z.object({\n modelId: z.string(),\n scope: z.enum(['global', 'thread']).optional(),\n modeId: z.string().optional(),\n});\nconst switchThreadBodySchema = z.object({ threadId: z.string() });\nconst createThreadBodySchema = z.object({ title: z.string().optional() });\nconst renameThreadBodySchema = z.object({ title: z.string() });\nconst threadPathParams = z.object({ harnessId: z.string(), resourceId: z.string(), threadId: z.string() });\nconst cloneThreadBodySchema = z.object({\n sourceThreadId: z.string().optional(),\n title: z.string().optional(),\n});\nconst listMessagesQuerySchema = z.object({ limit: z.coerce.number().optional() });\nconst listThreadsQuerySchema = z.object({ limit: z.coerce.number().optional() });\nconst followUpBodySchema = z.object({ message: z.string() });\n\nconst sendNotificationBodySchema = z.object({\n source: z.string(),\n kind: z.string(),\n summary: z.string(),\n priority: z.enum(['low', 'medium', 'high', 'urgent']).optional(),\n payload: z.any().optional(),\n sourceId: z.string().optional(),\n dedupeKey: z.string().optional(),\n coalesceKey: z.string().optional(),\n attributes: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst listHarnessesResponseSchema = z.object({\n harnesses: z.array(z.object({ id: z.string() })),\n});\nconst createSessionResponseSchema = z.object({\n harnessId: z.string(),\n resourceId: z.string(),\n threadId: z.string().optional(),\n});\nconst ackResponseSchema = z.object({ ok: z.boolean() });\nconst sessionStateResponseSchema = z.object({\n harnessId: z.string(),\n resourceId: z.string(),\n threadId: z.string().optional(),\n modeId: z.string(),\n modelId: z.string(),\n});\nconst listModesResponseSchema = z.object({\n modes: z.array(z.object({ id: z.string(), name: z.string().optional() })),\n});\nconst listThreadsResponseSchema = z.object({\n threads: z.array(\n z.object({\n id: z.string(),\n title: z.string().optional(),\n updatedAt: z.string().optional(),\n }),\n ),\n});\nconst threadResponseSchema = z.object({\n id: z.string(),\n title: z.string().optional(),\n resourceId: z.string().optional(),\n createdAt: z.string().optional(),\n updatedAt: z.string().optional(),\n});\nconst messageContentSchema = z\n .object({\n type: z.string(),\n })\n .passthrough();\nconst listMessagesResponseSchema = z.object({\n messages: z.array(\n z.object({\n id: z.string(),\n role: z.enum(['user', 'assistant', 'system']),\n content: z.array(messageContentSchema),\n createdAt: z.string().optional(),\n }),\n ),\n});\nconst listModelsResponseSchema = z.object({\n models: z.array(\n z.object({\n id: z.string(),\n provider: z.string(),\n modelName: z.string(),\n hasApiKey: z.boolean(),\n useCount: z.number(),\n }),\n ),\n});\nconst workspaceStatusResponseSchema = z.object({\n hasWorkspace: z.boolean(),\n isReady: z.boolean(),\n});\nconst omRecordResponseSchema = z.object({\n record: z.any().optional(),\n});\nconst permissionPolicyEnum = z.enum(['allow', 'ask', 'deny']);\nconst toolCategoryEnum = z.enum(['read', 'edit', 'execute', 'mcp', 'other']);\nconst permissionRulesResponseSchema = z.object({\n categories: z.record(z.string(), permissionPolicyEnum).optional(),\n tools: z.record(z.string(), permissionPolicyEnum).optional(),\n});\nconst setCategoryPermissionBodySchema = z.object({\n category: toolCategoryEnum,\n policy: permissionPolicyEnum,\n});\nconst setToolPermissionBodySchema = z.object({\n toolName: z.string(),\n policy: permissionPolicyEnum,\n});\n\n// ---------------------------------------------------------------------------\n// Routes\n// ---------------------------------------------------------------------------\n\nexport const LIST_HARNESSES_ROUTE = createRoute({\n method: 'GET',\n path: '/harness',\n responseType: 'json' as const,\n responseSchema: listHarnessesResponseSchema,\n summary: 'List harnesses',\n description: 'Lists the harnesses hosted on this Mastra instance.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra }) => {\n try {\n const harnesses = mastra.listHarnesses();\n return { harnesses: Object.keys(harnesses).map(id => ({ id })) };\n } catch (error) {\n return handleError(error, 'error listing harnesses');\n }\n },\n});\n\nexport const CREATE_HARNESS_SESSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions',\n responseType: 'json' as const,\n pathParamSchema: harnessIdPathParams,\n bodySchema: createSessionBodySchema,\n responseSchema: createSessionResponseSchema,\n summary: 'Create or resume a harness session',\n description:\n 'Creates a session for the given resourceId, or returns the existing one (get-or-create), so reconnects resume the conversation.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n return {\n harnessId,\n resourceId,\n threadId: session.thread.getId() ?? undefined,\n };\n } catch (error) {\n return handleError(error, 'error creating harness session');\n }\n },\n});\n\nexport const STREAM_HARNESS_SESSION_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n sseFlushOnConnect: true,\n pathParamSchema: sessionPathParams,\n summary: 'Stream harness session events',\n description: 'Subscribes to a session\\u2019s event bus and streams events to the client over SSE.',\n tags: ['Harness', 'Streaming'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId, abortSignal }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n\n let cleanedUp = false;\n let heartbeat: ReturnType<typeof setTimeout> | undefined;\n let unsubscribe: (() => void) | undefined;\n const clearHeartbeat = () => {\n if (heartbeat) {\n clearTimeout(heartbeat);\n heartbeat = undefined;\n }\n };\n const cleanup = (controller?: ReadableStreamDefaultController) => {\n if (cleanedUp) return;\n cleanedUp = true;\n clearHeartbeat();\n unsubscribe?.();\n if (controller) {\n try {\n controller.close();\n } catch {}\n }\n };\n\n return new ReadableStream<string>({\n start(controller) {\n const scheduleHeartbeat = () => {\n if (cleanedUp) return;\n clearHeartbeat();\n heartbeat = setTimeout(() => {\n heartbeat = undefined;\n if (cleanedUp) return;\n try {\n controller.enqueue(': heartbeat\\n\\n');\n } catch {\n cleanup();\n return;\n }\n scheduleHeartbeat();\n }, 25_000);\n };\n\n unsubscribe = session.subscribe(event => {\n if (cleanedUp) return;\n try {\n controller.enqueue(`data: ${JSON.stringify(event)}\\n\\n`);\n scheduleHeartbeat();\n } catch {\n cleanup();\n }\n });\n\n const abortCleanup = () => cleanup(controller);\n abortSignal?.addEventListener('abort', abortCleanup, { once: true });\n scheduleHeartbeat();\n },\n cancel() {\n cleanup();\n },\n });\n } catch (error) {\n return handleError(error, 'error streaming harness session');\n }\n },\n});\n\nexport const SEND_HARNESS_MESSAGE_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/messages',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: sendMessageBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Send a message to a harness session',\n description: 'Sends a user message to the session. The reply streams as events on the session\\u2019s SSE stream.',\n tags: ['Harness', 'Streaming'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, message }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n void session.sendMessage({ content: message });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error sending harness message');\n }\n },\n});\n\nexport const ABORT_HARNESS_SESSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/abort',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: ackResponseSchema,\n summary: 'Abort a harness session run',\n description: 'Aborts the in-flight run for the session, if any.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n session.abort();\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error aborting harness session');\n }\n },\n});\n\nexport const HARNESS_TOOL_APPROVAL_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/tool-approval',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: toolApprovalBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Respond to a harness tool approval',\n description: 'Approves or declines a pending tool call surfaced by the session.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, toolCallId, approved }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n // Resolve the parked approval gate so the session's own run loop drives the\n // continuation and emits its events to subscribers (the open SSE stream).\n // Calling approveToolCall/declineToolCall directly would bypass the gate,\n // leaving the run loop hung and duplicating the resumed stream.\n // Pass toolCallId so a stale request cannot resolve a different pending gate.\n session.respondToToolApproval({ toolCallId, decision: approved ? 'approve' : 'decline' });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error responding to harness tool approval');\n }\n },\n});\n\nexport const HARNESS_TOOL_SUSPENSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/tool-suspension',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: toolSuspensionBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Respond to a suspended harness tool',\n description:\n 'Resumes a suspended interactive tool (ask_user, request_access, submit_plan) with the provided resume data.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, toolCallId, resumeData }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.respondToToolSuspension({ toolCallId, resumeData });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error responding to harness tool suspension');\n }\n },\n});\n\nexport const STEER_HARNESS_SESSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/steer',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: steerBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Steer the in-flight run',\n description: 'Injects a message into the running turn (interjection) without starting a new run.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, message }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n void session.steer({ content: message });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error steering harness session');\n }\n },\n});\n\nexport const SWITCH_HARNESS_MODE_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/mode',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: switchModeBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Switch the session mode',\n description: 'Switches the active mode (e.g. build, plan) for the session.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, modeId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.mode.switch({ modeId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error switching harness mode');\n }\n },\n});\n\nexport const SWITCH_HARNESS_MODEL_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/model',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: switchModelBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Switch the session model',\n description: 'Switches the model for the session, scoped to the thread by default.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, modelId, scope, modeId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.model.switch({ modelId, scope, modeId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error switching harness model');\n }\n },\n});\n\nexport const SWITCH_HARNESS_THREAD_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/thread',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: switchThreadBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Switch the session thread',\n description: 'Switches the session to an existing thread (rebinding its stream and state).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, threadId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.thread.switch({ threadId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error switching harness thread');\n }\n },\n});\n\nexport const GET_HARNESS_SESSION_STATE_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: sessionStateResponseSchema,\n summary: 'Get session state',\n description: 'Returns the current mode, model, and thread for the session (for initial UI hydration).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n return {\n harnessId,\n resourceId,\n threadId: session.thread.getId() ?? undefined,\n modeId: session.mode.get(),\n modelId: session.model.get(),\n };\n } catch (error) {\n return handleError(error, 'error reading harness session state');\n }\n },\n});\n\nexport const LIST_HARNESS_MODES_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/modes',\n responseType: 'json' as const,\n pathParamSchema: harnessIdPathParams,\n responseSchema: listModesResponseSchema,\n summary: 'List harness modes',\n description: 'Lists the modes configured on the harness (e.g. build, plan).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n return {\n modes: harness.listModes().map(mode => ({ id: mode.id, name: mode.name })),\n };\n } catch (error) {\n return handleError(error, 'error listing harness modes');\n }\n },\n});\n\nexport const LIST_HARNESS_THREADS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/threads',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n queryParamSchema: listThreadsQuerySchema,\n responseSchema: listThreadsResponseSchema,\n summary: 'List session threads',\n description:\n 'Lists the threads for the session\\u2019s resource, most-recently-updated first. Pass `limit` to return only the newest N (e.g. for a sidebar).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId, limit }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threads = await session.thread.list();\n const toTime = (t: { updatedAt?: Date; createdAt?: Date }) => (t.updatedAt ?? t.createdAt)?.getTime() ?? 0;\n const sorted = [...threads].sort((a, b) => toTime(b) - toTime(a));\n const max = Number(limit);\n const limited = Number.isFinite(max) && max > 0 ? sorted.slice(0, max) : sorted;\n return {\n threads: limited.map(t => ({\n id: t.id,\n title: t.title,\n updatedAt: t.updatedAt instanceof Date ? t.updatedAt.toISOString() : undefined,\n })),\n };\n } catch (error) {\n return handleError(error, 'error listing harness threads');\n }\n },\n});\n\nexport const SEND_HARNESS_NOTIFICATION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/notifications',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: sendNotificationBodySchema,\n responseSchema: z.object({\n accepted: z.boolean(),\n notificationId: z.string().optional(),\n decision: z.string().optional(),\n runId: z.string().optional(),\n }),\n summary: 'Send a notification signal to a session',\n description:\n 'Delivers a notification to the session\\u2019s current agent/thread. The agent\\u2019s delivery policy determines whether the notification wakes an idle thread, is summarised, or is persisted for later.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({\n mastra,\n harnessId,\n resourceId,\n source,\n kind,\n summary,\n priority,\n payload,\n sourceId,\n dedupeKey,\n coalesceKey,\n attributes,\n metadata,\n }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const result = await session.sendNotificationSignal({\n source,\n kind,\n summary,\n priority,\n payload,\n sourceId,\n dedupeKey,\n coalesceKey,\n attributes: attributes as Record<string, string | number | boolean | null | undefined> | undefined,\n metadata,\n });\n return {\n accepted: result.accepted !== undefined,\n notificationId: result.record?.id,\n decision: result.decision?.action,\n runId: result.runId,\n };\n } catch (error) {\n return handleError(error, 'error sending harness notification');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Thread lifecycle\n// ---------------------------------------------------------------------------\n\nexport const CREATE_HARNESS_THREAD_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/threads',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: createThreadBodySchema,\n responseSchema: threadResponseSchema,\n summary: 'Create a new thread',\n description: 'Creates a new thread in the session (unbinds the previous thread, binds the new one).',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, title }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const thread = await session.thread.create({ title });\n return {\n id: thread.id,\n title: thread.title,\n resourceId: thread.resourceId,\n createdAt: thread.createdAt instanceof Date ? thread.createdAt.toISOString() : undefined,\n updatedAt: thread.updatedAt instanceof Date ? thread.updatedAt.toISOString() : undefined,\n };\n } catch (error) {\n return handleError(error, 'error creating harness thread');\n }\n },\n});\n\nexport const DELETE_HARNESS_THREAD_ROUTE = createRoute({\n method: 'DELETE',\n path: '/harness/:harnessId/sessions/:resourceId/threads/:threadId',\n responseType: 'json' as const,\n pathParamSchema: threadPathParams,\n responseSchema: ackResponseSchema,\n summary: 'Delete a thread',\n description: 'Deletes a thread. If the deleted thread is the active one, the session is unbound.',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, threadId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.thread.delete({ threadId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error deleting harness thread');\n }\n },\n});\n\nexport const RENAME_HARNESS_THREAD_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/threads/:threadId',\n responseType: 'json' as const,\n pathParamSchema: threadPathParams,\n bodySchema: renameThreadBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Rename a thread',\n description: 'Renames the specified thread.',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, threadId, title }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n // Ensure the thread is the active one (switch if not)\n if (session.thread.getId() !== threadId) {\n await session.thread.switch({ threadId });\n }\n await session.thread.rename({ title });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error renaming harness thread');\n }\n },\n});\n\nexport const CLONE_HARNESS_THREAD_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/threads/clone',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: cloneThreadBodySchema,\n responseSchema: threadResponseSchema,\n summary: 'Clone a thread',\n description: 'Clones a thread (and its messages). The session binds to the new clone.',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, sourceThreadId, title }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const thread = await session.thread.clone({ sourceThreadId, title });\n return {\n id: thread.id,\n title: thread.title,\n resourceId: thread.resourceId,\n createdAt: thread.createdAt instanceof Date ? thread.createdAt.toISOString() : undefined,\n updatedAt: thread.updatedAt instanceof Date ? thread.updatedAt.toISOString() : undefined,\n };\n } catch (error) {\n return handleError(error, 'error cloning harness thread');\n }\n },\n});\n\nexport const LIST_HARNESS_THREAD_MESSAGES_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/threads/:threadId/messages',\n responseType: 'json' as const,\n pathParamSchema: threadPathParams,\n queryParamSchema: listMessagesQuerySchema,\n responseSchema: listMessagesResponseSchema,\n summary: 'List thread messages',\n description: 'Lists messages for a specific thread. Returns most recent messages first.',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId, threadId, limit }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const messages = await session.thread.listMessages({ threadId, limit });\n return {\n messages: messages.map(m => ({\n id: m.id,\n role: m.role,\n content: m.content as Array<{ type: string; [key: string]: unknown }>,\n createdAt: m.createdAt instanceof Date ? m.createdAt.toISOString() : undefined,\n })),\n };\n } catch (error) {\n return handleError(error, 'error listing harness thread messages');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Follow-up\n// ---------------------------------------------------------------------------\n\nexport const FOLLOW_UP_HARNESS_SESSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/follow-up',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: followUpBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Queue a follow-up message',\n description:\n 'Queues a follow-up message. If the session is idle it sends immediately; if a run is active it queues for after completion.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, message }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n void session.followUp({ content: message });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error queuing harness follow-up');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Models\n// ---------------------------------------------------------------------------\n\nexport const LIST_HARNESS_MODELS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/models',\n responseType: 'json' as const,\n pathParamSchema: harnessIdPathParams,\n responseSchema: listModelsResponseSchema,\n summary: 'List available models',\n description: 'Lists all models available on this harness (with auth status and use counts).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n await harness.init();\n const models = await harness.listAvailableModels();\n return {\n models: models.map(m => ({\n id: m.id,\n provider: m.provider,\n modelName: m.modelName,\n hasApiKey: m.hasApiKey,\n useCount: m.useCount,\n })),\n };\n } catch (error) {\n return handleError(error, 'error listing harness models');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Workspace status\n// ---------------------------------------------------------------------------\n\nexport const GET_HARNESS_WORKSPACE_STATUS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/workspace',\n responseType: 'json' as const,\n pathParamSchema: harnessIdPathParams,\n responseSchema: workspaceStatusResponseSchema,\n summary: 'Get workspace status',\n description: 'Returns whether the harness has a workspace configured and whether it is ready.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n await harness.init();\n return {\n hasWorkspace: harness.hasWorkspace(),\n isReady: harness.isWorkspaceReady(),\n };\n } catch (error) {\n return handleError(error, 'error reading harness workspace status');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Observational Memory\n// ---------------------------------------------------------------------------\n\nexport const GET_HARNESS_OM_RECORD_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/om',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: omRecordResponseSchema,\n summary: 'Get observational memory record',\n description: 'Returns the current observational memory record for the session\\u2019s thread/resource.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const record = await harness.getObservationalMemoryRecord(session);\n return { record: record ?? undefined };\n } catch (error) {\n return handleError(error, 'error reading harness OM record');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Resource identity\n// ---------------------------------------------------------------------------\n\nexport const SET_HARNESS_RESOURCE_ID_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/resource',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: z.object({ newResourceId: z.string() }),\n responseSchema: ackResponseSchema,\n summary: 'Change the session resource ID',\n description: 'Updates the session\\u2019s resource identity (e.g. when a user logs in).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, newResourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await harness.setResourceId(session, { resourceId: newResourceId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error setting harness resource ID');\n }\n },\n});\n\nexport const GET_HARNESS_RESOURCE_IDS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/resources',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: z.object({ resourceIds: z.array(z.string()) }),\n summary: 'Get known resource IDs',\n description: 'Lists the resource IDs known to this session (from threads).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const resourceIds = await harness.getKnownResourceIds(session);\n return { resourceIds };\n } catch (error) {\n return handleError(error, 'error listing harness resource IDs');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Goals\n// ---------------------------------------------------------------------------\n\nconst setGoalBodySchema = z.object({\n objective: z.string(),\n judgeModelId: z.string().optional(),\n maxRuns: z.number().optional(),\n});\nconst updateGoalBodySchema = z.object({\n judgeModelId: z.string().optional(),\n maxRuns: z.number().optional(),\n status: z.enum(['active', 'paused', 'done']).optional(),\n});\nconst goalRecordSchema = z.object({\n id: z.string().optional(),\n objective: z.string(),\n status: z.enum(['active', 'paused', 'done']),\n runsUsed: z.number(),\n maxRuns: z.number().optional(),\n judgeModelId: z.string().optional(),\n startedAt: z.number(),\n updatedAt: z.number(),\n pausedReason: z.string().optional(),\n});\nconst goalResponseSchema = z.object({ goal: goalRecordSchema.optional() });\n\nfunction getAgentForSession(harness: Harness<any>, session: Session<any>): Agent {\n return harness.getCurrentAgent(session);\n}\n\nexport const GET_HARNESS_GOAL_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/goal',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: goalResponseSchema,\n summary: 'Get the current goal',\n description: 'Returns the active/paused/done goal objective for the session\\u2019s thread, if any.',\n tags: ['Harness', 'Goals'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threadId = session.thread.getId();\n if (!threadId) return { goal: undefined };\n const agent = getAgentForSession(harness, session);\n const record = await agent.getObjective({ threadId });\n return { goal: record ?? undefined };\n } catch (error) {\n return handleError(error, 'error reading harness goal');\n }\n },\n});\n\nexport const SET_HARNESS_GOAL_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/goal',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: setGoalBodySchema,\n responseSchema: goalResponseSchema,\n summary: 'Set a goal',\n description:\n 'Sets a new objective for the session\\u2019s thread. The agent\\u2019s in-loop goal judge evaluates progress after each turn.',\n tags: ['Harness', 'Goals'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, objective, judgeModelId, maxRuns }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threadId = session.thread.getId();\n if (!threadId) throw new HTTPException(400, { message: 'session has no active thread' });\n const agent = getAgentForSession(harness, session);\n const record = await agent.setObjective(objective, {\n threadId,\n resourceId: session.identity.getResourceId(),\n ...(judgeModelId ? { judgeModelId } : {}),\n ...(maxRuns != null ? { maxRuns } : {}),\n });\n return { goal: record ?? undefined };\n } catch (error) {\n return handleError(error, 'error setting harness goal');\n }\n },\n});\n\nexport const UPDATE_HARNESS_GOAL_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/goal',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: updateGoalBodySchema,\n responseSchema: goalResponseSchema,\n summary: 'Update goal options',\n description: 'Updates the judge model, max runs, or status of the active goal. No-op when no goal is set.',\n tags: ['Harness', 'Goals'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, judgeModelId, maxRuns, status }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threadId = session.thread.getId();\n if (!threadId) throw new HTTPException(400, { message: 'session has no active thread' });\n const agent = getAgentForSession(harness, session);\n const record = await agent.updateObjectiveOptions({\n threadId,\n ...(judgeModelId !== undefined ? { judgeModelId } : {}),\n ...(maxRuns !== undefined ? { maxRuns } : {}),\n ...(status !== undefined ? { status } : {}),\n });\n return { goal: record ?? undefined };\n } catch (error) {\n return handleError(error, 'error updating harness goal');\n }\n },\n});\n\nexport const CLEAR_HARNESS_GOAL_ROUTE = createRoute({\n method: 'DELETE',\n path: '/harness/:harnessId/sessions/:resourceId/goal',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: ackResponseSchema,\n summary: 'Clear the goal',\n description: 'Removes the active goal from the session\\u2019s thread.',\n tags: ['Harness', 'Goals'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threadId = session.thread.getId();\n if (!threadId) throw new HTTPException(400, { message: 'session has no active thread' });\n const agent = getAgentForSession(harness, session);\n await agent.clearObjective({ threadId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error clearing harness goal');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Permissions\n// ---------------------------------------------------------------------------\n\nexport const GET_HARNESS_PERMISSIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/permissions',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: permissionRulesResponseSchema,\n summary: 'Get permission rules',\n description: 'Returns the current permission rules (per-category and per-tool policies) for the session.',\n tags: ['Harness', 'Permissions'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const rules = session.permissions.getRules();\n return {\n categories: rules.categories as Record<string, 'allow' | 'ask' | 'deny'> | undefined,\n tools: rules.tools as Record<string, 'allow' | 'ask' | 'deny'> | undefined,\n };\n } catch (error) {\n return handleError(error, 'error getting harness permissions');\n }\n },\n});\n\nexport const SET_HARNESS_CATEGORY_PERMISSION_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/permissions/category',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: setCategoryPermissionBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Set permission for a tool category',\n description: 'Sets the approval policy (allow/ask/deny) for all tools in a category.',\n tags: ['Harness', 'Permissions'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, category, policy }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.permissions.setForCategory({ category, policy });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error setting harness category permission');\n }\n },\n});\n\nexport const SET_HARNESS_TOOL_PERMISSION_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/permissions/tool',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: setToolPermissionBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Set permission for a specific tool',\n description:\n 'Sets the approval policy (allow/ask/deny) for a specific tool by name. Per-tool overrides take precedence over category policies.',\n tags: ['Harness', 'Permissions'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, toolName, policy }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.permissions.setForTool({ toolName, policy });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error setting harness tool permission');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Session State\n// ---------------------------------------------------------------------------\n\nconst setSessionStateBodySchema = z.object({ state: z.record(z.string(), z.unknown()) });\n\nexport const SET_HARNESS_SESSION_STATE_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/state',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: setSessionStateBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Set session state',\n description:\n 'Merges the provided key-value pairs into the session state. Existing keys not in the payload are preserved.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, state }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.state.set(state as Record<string, unknown>);\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error setting harness session state');\n }\n },\n});\n"]}
|
package/dist/docs/SKILL.md
CHANGED