@mastra/server 1.57.0 → 1.58.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +63 -0
- package/dist/{a2a-uPi5sPwb.js → a2a-CHi9AJ0n.js} +598 -178
- package/dist/a2a-CHi9AJ0n.js.map +1 -0
- package/dist/{a2a-DKnwIgiw.cjs → a2a-D3ZYeXIx.cjs} +598 -178
- package/dist/a2a-D3ZYeXIx.cjs.map +1 -0
- package/dist/{api-schema-manifest-7-NC9Dyc.cjs → api-schema-manifest-J5hfk5ZZ.cjs} +2 -2
- package/dist/{api-schema-manifest-7-NC9Dyc.cjs.map → api-schema-manifest-J5hfk5ZZ.cjs.map} +1 -1
- package/dist/{api-schema-manifest-C5hpdIE_.js → api-schema-manifest-R8CsF6RX.js} +2 -2
- package/dist/{api-schema-manifest-C5hpdIE_.js.map → api-schema-manifest-R8CsF6RX.js.map} +1 -1
- package/dist/{datasets-Cvix7Rms.cjs → datasets-BMeFvFwT.cjs} +43 -1
- package/dist/datasets-BMeFvFwT.cjs.map +1 -0
- package/dist/{datasets-dhXnHLAL.js → datasets-BeBH9Seg.js} +38 -2
- package/dist/datasets-BeBH9Seg.js.map +1 -0
- package/dist/{dist-COHIL6fR.cjs → dist-DgY0llRv.cjs} +116 -28
- package/dist/dist-DgY0llRv.cjs.map +1 -0
- package/dist/{dist-DGqlUp0b.js → dist-IUXZtNBY.js} +116 -28
- package/dist/dist-IUXZtNBY.js.map +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-agents-a2a.md +36 -2
- package/dist/route-builder-CIk5k35M.js.map +1 -1
- package/dist/route-builder-CgLVYL1c.cjs.map +1 -1
- package/dist/{routes-hSY4wTeS.cjs → routes-BzR8iVj4.cjs} +2 -2
- package/dist/{routes-hSY4wTeS.cjs.map → routes-BzR8iVj4.cjs.map} +1 -1
- package/dist/{routes-CRoTKPvQ.js → routes-C7iRCN_l.js} +2 -2
- package/dist/{routes-CRoTKPvQ.js.map → routes-C7iRCN_l.js.map} +1 -1
- package/dist/server/a2a/store.cjs +26 -2
- package/dist/server/a2a/store.cjs.map +1 -1
- package/dist/server/a2a/store.d.ts +18 -2
- package/dist/server/a2a/store.d.ts.map +1 -1
- package/dist/server/a2a/store.js +26 -3
- package/dist/server/a2a/store.js.map +1 -1
- package/dist/server/a2a/task-state.d.ts +4 -0
- package/dist/server/a2a/task-state.d.ts.map +1 -0
- package/dist/server/a2a/tasks.d.ts +1 -1
- package/dist/server/a2a/tasks.d.ts.map +1 -1
- package/dist/server/handlers/a2a.cjs +1 -1
- package/dist/server/handlers/a2a.d.ts +3 -2
- 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 +1 -1
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-versions.cjs +6 -0
- package/dist/server/handlers/agent-versions.cjs.map +1 -1
- package/dist/server/handlers/agent-versions.d.ts.map +1 -1
- package/dist/server/handlers/agent-versions.js +6 -0
- package/dist/server/handlers/agent-versions.js.map +1 -1
- package/dist/server/handlers/datasets.cjs +26 -11
- package/dist/server/handlers/datasets.cjs.map +1 -1
- package/dist/server/handlers/datasets.d.ts +136 -0
- package/dist/server/handlers/datasets.d.ts.map +1 -1
- package/dist/server/handlers/datasets.js +26 -11
- package/dist/server/handlers/datasets.js.map +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/observability.cjs +20 -9
- package/dist/server/handlers/observability.cjs.map +1 -1
- package/dist/server/handlers/observability.d.ts.map +1 -1
- package/dist/server/handlers/observability.js +20 -9
- package/dist/server/handlers/observability.js.map +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/scorer-versions.cjs +1 -1
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/stored-agents.cjs +16 -1
- package/dist/server/handlers/stored-agents.cjs.map +1 -1
- package/dist/server/handlers/stored-agents.d.ts.map +1 -1
- package/dist/server/handlers/stored-agents.js +16 -1
- package/dist/server/handlers/stored-agents.js.map +1 -1
- 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 +1 -1
- package/dist/server/handlers/stored-skill-favorites.js +1 -1
- package/dist/server/handlers/stored-skills.cjs +1 -1
- package/dist/server/handlers/stored-skills.js +1 -1
- package/dist/server/handlers/system.cjs +1 -1
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/handlers/validate-agent-instructions.cjs +52 -0
- package/dist/server/handlers/validate-agent-instructions.cjs.map +1 -0
- package/dist/server/handlers/validate-agent-instructions.d.ts +13 -0
- package/dist/server/handlers/validate-agent-instructions.d.ts.map +1 -0
- package/dist/server/handlers/validate-agent-instructions.js +51 -0
- package/dist/server/handlers/validate-agent-instructions.js.map +1 -0
- package/dist/server/handlers/workflows.cjs +12 -0
- package/dist/server/handlers/workflows.cjs.map +1 -1
- package/dist/server/handlers/workflows.d.ts.map +1 -1
- package/dist/server/handlers/workflows.js +12 -0
- 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/datasets.d.ts +53 -0
- package/dist/server/schemas/datasets.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +3 -2
- package/dist/server/schemas/index.js +3 -3
- package/dist/server/server-adapter/index.cjs +1 -1
- package/dist/server/server-adapter/index.js +1 -1
- package/dist/server/server-adapter/routes/datasets.d.ts +136 -0
- package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/a2a-DKnwIgiw.cjs.map +0 -1
- package/dist/a2a-uPi5sPwb.js.map +0 -1
- package/dist/datasets-Cvix7Rms.cjs.map +0 -1
- package/dist/datasets-dhXnHLAL.js.map +0 -1
- package/dist/dist-COHIL6fR.cjs.map +0 -1
- package/dist/dist-DGqlUp0b.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-DKnwIgiw.cjs","names":["crypto","MastraA2AError","defaultLookup","httpsRequest","httpRequest","z","getAgentFromSystem","convertInstructionsToString","getPublicOrigin","MastraA2AError","createRoute","a2aAgentIdPathParams","agentCardResponseSchema","agentExecutionBodySchema","agentExecutionResponseSchema"],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/canonicalize/1.0.8/8d710dcf19a48d178b2fc853e16c59951fde29eb27b6037da6c3f4dbb968b03d/node_modules/canonicalize/lib/canonicalize.js","../src/server/a2a/agent-card-signing.ts","../src/server/a2a/protocol.ts","../src/server/a2a/push-notification-sender.ts","../src/server/a2a/push-notification-store.ts","../src/server/a2a/tasks.ts","../src/server/handlers/a2a.ts"],"sourcesContent":["/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (object === null || typeof object !== 'object' || object.toJSON != null) {\n return JSON.stringify(object);\n }\n\n if (Array.isArray(object)) {\n return '[' + object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return t + comma + serialize(value);\n }, '') + ']';\n }\n\n return '{' + Object.keys(object).sort().reduce((t, cv, ci) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return t + comma + serialize(cv) + ':' + serialize(object[cv]);\n }, '') + '}';\n};\n","import * as crypto from 'node:crypto';\nimport type { AgentCard, AgentCardSignature } from '@mastra/core/a2a';\nimport type { A2AAgentCardSigningConfig } from '@mastra/core/server';\nimport canonicalize from 'canonicalize';\n\nconst SUPPORTED_JWS_ALGORITHMS = new Set<string>([\n 'ES256',\n 'ES384',\n 'ES512',\n 'RS256',\n 'RS384',\n 'RS512',\n 'PS256',\n 'PS384',\n 'PS512',\n]);\n\nfunction stripAgentCardSignatures(agentCard: AgentCard): AgentCard {\n const unsignedCard = structuredClone(agentCard) as AgentCard & { signatures?: AgentCardSignature[] };\n delete unsignedCard.signatures;\n return unsignedCard;\n}\n\nfunction importSigningKey(signing: A2AAgentCardSigningConfig) {\n const { privateKey } = signing;\n\n if (typeof privateKey === 'string') {\n return crypto.createPrivateKey(privateKey);\n }\n\n return crypto.createPrivateKey({\n key: privateKey,\n format: 'jwk',\n });\n}\n\nfunction getProtectedHeader(signing: A2AAgentCardSigningConfig): Record<string, unknown> {\n const { alg, ...rest } = signing.protectedHeader;\n\n if (!SUPPORTED_JWS_ALGORITHMS.has(alg)) {\n throw new Error(`Unsupported JWS algorithm for A2A Agent Card signing: ${alg}`);\n }\n\n return {\n ...rest,\n alg,\n };\n}\n\ntype SignatureOptions = Pick<crypto.SignKeyObjectInput, 'dsaEncoding' | 'padding' | 'saltLength'>;\n\nfunction getSignatureOptions(algorithm: string): SignatureOptions {\n if (algorithm.startsWith('ES')) {\n return { dsaEncoding: 'ieee-p1363' as const };\n }\n\n if (algorithm.startsWith('PS')) {\n return {\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST,\n };\n }\n\n return {};\n}\n\nfunction getDigestAlgorithm(algorithm: string): string {\n if (algorithm.endsWith('256')) return 'sha256';\n if (algorithm.endsWith('384')) return 'sha384';\n if (algorithm.endsWith('512')) return 'sha512';\n throw new Error(`Unsupported JWS algorithm for A2A Agent Card signing: ${algorithm}`);\n}\n\nexport async function signAgentCard({\n agentCard,\n signing,\n}: {\n agentCard: AgentCard;\n signing: A2AAgentCardSigningConfig;\n}): Promise<AgentCard> {\n const canonicalPayload = canonicalize(stripAgentCardSignatures(agentCard));\n\n if (!canonicalPayload) {\n throw new Error('Failed to canonicalize A2A Agent Card for signing');\n }\n\n const key = importSigningKey(signing);\n const protectedHeader = getProtectedHeader(signing);\n const encodedHeader = Buffer.from(JSON.stringify(protectedHeader), 'utf8').toString('base64url');\n const encodedPayload = Buffer.from(canonicalPayload, 'utf8').toString('base64url');\n const signingInput = `${encodedHeader}.${encodedPayload}`;\n const signatureBuffer = crypto.sign(\n getDigestAlgorithm(String(protectedHeader.alg)),\n Buffer.from(signingInput, 'utf8'),\n {\n key,\n ...getSignatureOptions(String(protectedHeader.alg)),\n },\n );\n const signatureValue = signatureBuffer.toString('base64url');\n\n if (!encodedHeader || !signatureValue) {\n throw new Error('Failed to create compact JWS for A2A Agent Card');\n }\n\n const signature: AgentCardSignature = {\n protected: encodedHeader,\n signature: signatureValue,\n header: signing.header,\n };\n\n return {\n ...agentCard,\n signatures: [...(agentCard.signatures ?? []), signature],\n };\n}\n","import { MastraA2AError } from '@mastra/core/a2a';\n\nimport type { JSONRPCError, JSONRPCResponse, Message, Part } from '@mastra/core/a2a';\nimport type { CoreMessage } from '@mastra/core/llm';\nimport type { IMastraLogger } from '@mastra/core/logger';\n\nexport function normalizeError(\n error: any,\n reqId: number | string | null,\n taskId?: string,\n logger?: IMastraLogger,\n): JSONRPCResponse<null, unknown> {\n let a2aError: MastraA2AError;\n if (error instanceof MastraA2AError) {\n a2aError = error;\n } else if (error instanceof Error) {\n // Generic JS error\n a2aError = MastraA2AError.internalError(error.message, { stack: error.stack });\n } else {\n // Unknown error type\n a2aError = MastraA2AError.internalError('An unknown error occurred.', error);\n }\n\n // Ensure Task ID context is present if possible\n if (taskId && !a2aError.taskId) {\n a2aError.taskId = taskId;\n }\n\n logger?.error(`Error processing request (Task: ${a2aError.taskId ?? 'N/A'}, ReqID: ${reqId ?? 'N/A'}):`, a2aError);\n\n return createErrorResponse(reqId, a2aError.toJSONRPCError());\n}\n\nexport function createErrorResponse(\n id: number | string | null,\n error: JSONRPCError<unknown>,\n): JSONRPCResponse<null, unknown> {\n // For errors, ID should be the same as request ID, or null if that couldn't be determined\n return {\n jsonrpc: '2.0',\n id: id, // Can be null if request ID was invalid/missing\n error: error,\n };\n}\n\nexport function createSuccessResponse<T>(id: number | string | null, result: T): JSONRPCResponse<T> {\n if (!id) {\n // This shouldn't happen for methods that expect a response, but safeguard\n throw MastraA2AError.internalError('Cannot create success response for null ID.');\n }\n\n return {\n jsonrpc: '2.0',\n id: id,\n result: result,\n };\n}\n\nexport function convertToCoreMessage(message: Message): CoreMessage {\n return {\n role: message.role === 'user' ? 'user' : 'assistant',\n content: message.parts.map(msg => convertToCoreMessagePart(msg)),\n };\n}\n\nfunction convertToCoreMessagePart(part: Part) {\n switch (part.kind) {\n case 'text':\n return {\n type: 'text',\n text: part.text,\n } as const;\n case 'file':\n return {\n type: 'file',\n data: 'uri' in part.file ? new URL(part.file.uri) : part.file.bytes,\n mimeType: part.file.mimeType!,\n } as const;\n case 'data':\n throw new Error('Data parts are not supported in core messages');\n }\n}\n","import { lookup as defaultLookup } from 'node:dns/promises';\nimport { request as httpRequest } from 'node:http';\nimport { request as httpsRequest } from 'node:https';\nimport { isIP } from 'node:net';\nimport type { Task } from '@mastra/core/a2a';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport type { InMemoryPushNotificationStore } from './push-notification-store';\n\nexport const DEFAULT_PUSH_NOTIFICATION_TOKEN_HEADER = 'X-A2A-Notification-Token';\n\nfunction isDisallowedHostname(hostname: string) {\n const normalized = hostname.toLowerCase();\n\n return (\n normalized === 'localhost' ||\n normalized.endsWith('.localhost') ||\n normalized.endsWith('.local') ||\n normalized.endsWith('.internal') ||\n !normalized.includes('.')\n );\n}\n\nfunction isDisallowedIpv4(address: string) {\n const [first = -1, second = -1] = address.split('.').map(Number);\n\n return (\n first === 10 ||\n first === 127 ||\n (first === 169 && second === 254) ||\n (first === 172 && second >= 16 && second <= 31) ||\n (first === 192 && second === 168)\n );\n}\n\nfunction isDisallowedIpv6(address: string) {\n const normalized = address.toLowerCase();\n\n return (\n normalized === '::1' ||\n normalized.startsWith('fe8') ||\n normalized.startsWith('fe9') ||\n normalized.startsWith('fea') ||\n normalized.startsWith('feb') ||\n normalized.startsWith('fc') ||\n normalized.startsWith('fd')\n );\n}\n\nfunction isDisallowedIpAddress(address: string) {\n const version = isIP(address);\n if (version === 4) {\n return isDisallowedIpv4(address);\n }\n\n if (version === 6) {\n return isDisallowedIpv6(address);\n }\n\n return false;\n}\n\nexport class DefaultPushNotificationSender {\n constructor(\n private readonly pushNotificationStore: InMemoryPushNotificationStore,\n private readonly options: {\n timeout?: number;\n tokenHeaderName?: string;\n fetch?: typeof fetch;\n lookup?: typeof defaultLookup;\n allowedHosts?: string[];\n } = {},\n ) {}\n\n getStore() {\n return this.pushNotificationStore;\n }\n\n private async resolveValidatedDestination(rawUrl: string) {\n const url = new URL(rawUrl);\n\n if (url.protocol !== 'https:' && url.protocol !== 'http:') {\n throw new Error(`Push notification URL must use http or https: ${url.protocol}`);\n }\n\n const hostname = url.hostname.toLowerCase();\n if (this.options.allowedHosts && !this.options.allowedHosts.includes(hostname)) {\n throw new Error(`Push notification host is not allowed: ${hostname}`);\n }\n\n if (isDisallowedHostname(hostname)) {\n throw new Error(`Push notification URL must not target local or internal hosts: ${hostname}`);\n }\n\n if (isDisallowedIpAddress(hostname)) {\n throw new Error(`Push notification URL must not target local or private IPs: ${hostname}`);\n }\n\n const resolvedAddresses =\n isIP(hostname) === 0\n ? await (this.options.lookup ?? defaultLookup)(hostname, { all: true, verbatim: true })\n : [{ address: hostname, family: isIP(hostname) }];\n\n if (resolvedAddresses.some(result => isDisallowedIpAddress(result.address))) {\n throw new Error(`Push notification URL resolved to a local or private IP: ${hostname}`);\n }\n\n const requestUrl = new URL(url.toString());\n requestUrl.hostname = resolvedAddresses[0]!.address;\n\n return {\n originalUrl: url,\n requestUrl,\n hostHeader: url.host,\n servername: isIP(hostname) === 0 ? hostname : undefined,\n };\n }\n\n private async postTaskSnapshot({\n requestUrl,\n hostHeader,\n servername,\n headers,\n body,\n timeout,\n }: {\n requestUrl: URL;\n hostHeader: string;\n servername?: string;\n headers: Headers;\n body: string;\n timeout: number;\n }) {\n headers.set('host', hostHeader);\n const signal = typeof AbortSignal.timeout === 'function' ? AbortSignal.timeout(timeout) : undefined;\n\n if (this.options.fetch) {\n return this.options.fetch(requestUrl.toString(), {\n method: 'POST',\n headers,\n body,\n signal,\n });\n }\n\n const transport = requestUrl.protocol === 'https:' ? httpsRequest : httpRequest;\n\n return await new Promise<{ ok: boolean; status: number; statusText: string }>((resolve, reject) => {\n const request = transport(\n {\n protocol: requestUrl.protocol,\n hostname: requestUrl.hostname,\n port: requestUrl.port || undefined,\n path: `${requestUrl.pathname}${requestUrl.search}`,\n method: 'POST',\n headers: Object.fromEntries(headers.entries()),\n servername,\n },\n response => {\n response.resume();\n response.on('end', () => {\n resolve({\n ok: !!response.statusCode && response.statusCode >= 200 && response.statusCode < 300,\n status: response.statusCode ?? 0,\n statusText: response.statusMessage ?? '',\n });\n });\n },\n );\n\n request.on('error', reject);\n\n if (signal) {\n signal.addEventListener(\n 'abort',\n () => {\n request.destroy(signal.reason instanceof Error ? signal.reason : new Error('Push notification timed out'));\n },\n { once: true },\n );\n }\n\n request.end(body);\n });\n }\n\n async sendNotifications({\n agentId,\n task,\n logger,\n }: {\n agentId: string;\n task: Task;\n logger?: IMastraLogger;\n }): Promise<void> {\n const configs = this.pushNotificationStore.list({\n agentId,\n params: { id: task.id },\n });\n\n if (configs.length === 0) {\n return;\n }\n\n await Promise.allSettled(\n configs.map(async config => {\n const headers = new Headers({\n 'content-type': 'application/json',\n });\n\n if (config.pushNotificationConfig.token) {\n headers.set(\n this.options.tokenHeaderName ?? DEFAULT_PUSH_NOTIFICATION_TOKEN_HEADER,\n config.pushNotificationConfig.token,\n );\n }\n\n const auth = config.pushNotificationConfig.authentication;\n if (auth?.credentials) {\n if (auth.schemes.includes('Bearer')) {\n headers.set('authorization', `Bearer ${auth.credentials}`);\n } else if (auth.schemes.includes('Basic')) {\n headers.set('authorization', `Basic ${auth.credentials}`);\n }\n }\n\n const { requestUrl, hostHeader, servername } = await this.resolveValidatedDestination(\n config.pushNotificationConfig.url,\n );\n const response = await this.postTaskSnapshot({\n requestUrl,\n hostHeader,\n servername,\n headers,\n body: JSON.stringify(task),\n timeout: this.options.timeout ?? 5_000,\n });\n\n if (!response.ok) {\n throw new Error(\n `Push notification failed with status ${response.status} ${response.statusText ?? ''}`.trim(),\n );\n }\n }),\n ).then(results => {\n for (const result of results) {\n if (result.status === 'rejected') {\n logger?.error('Failed to deliver A2A push notification', result.reason);\n }\n }\n });\n }\n}\n","import type {\n DeleteTaskPushNotificationConfigParams,\n GetTaskPushNotificationConfigParams,\n ListTaskPushNotificationConfigParams,\n TaskPushNotificationConfig,\n} from '@mastra/core/a2a';\n\nfunction normalizeConfigId(taskId: string, configId?: string) {\n return configId || taskId;\n}\n\nexport class InMemoryPushNotificationStore {\n private store = new Map<string, Map<string, TaskPushNotificationConfig>>();\n\n private getKey(agentId: string, taskId: string) {\n return JSON.stringify([agentId, taskId]);\n }\n\n set({ agentId, config }: { agentId: string; config: TaskPushNotificationConfig }): TaskPushNotificationConfig {\n const key = this.getKey(agentId, config.taskId);\n const configs = this.store.get(key) ?? new Map<string, TaskPushNotificationConfig>();\n const normalizedConfig: TaskPushNotificationConfig = {\n taskId: config.taskId,\n pushNotificationConfig: {\n ...config.pushNotificationConfig,\n id: normalizeConfigId(config.taskId, config.pushNotificationConfig.id),\n },\n };\n\n configs.set(normalizedConfig.pushNotificationConfig.id!, structuredClone(normalizedConfig));\n this.store.set(key, configs);\n\n return structuredClone(normalizedConfig);\n }\n\n get({\n agentId,\n params,\n }: {\n agentId: string;\n params: GetTaskPushNotificationConfigParams;\n }): TaskPushNotificationConfig | null {\n const key = this.getKey(agentId, params.id);\n const configId = normalizeConfigId(params.id, params.pushNotificationConfigId);\n const config = this.store.get(key)?.get(configId);\n return config ? structuredClone(config) : null;\n }\n\n list({\n agentId,\n params,\n }: {\n agentId: string;\n params: ListTaskPushNotificationConfigParams;\n }): TaskPushNotificationConfig[] {\n const key = this.getKey(agentId, params.id);\n return Array.from(this.store.get(key)?.values() ?? []).map(config => structuredClone(config));\n }\n\n delete({ agentId, params }: { agentId: string; params: DeleteTaskPushNotificationConfigParams }): boolean {\n const key = this.getKey(agentId, params.id);\n const configs = this.store.get(key);\n\n if (!configs) {\n return false;\n }\n\n const deleted = configs.delete(params.pushNotificationConfigId);\n if (configs.size === 0) {\n this.store.delete(key);\n }\n\n return deleted;\n }\n}\n","import type {\n Message,\n Task,\n TaskState,\n TaskStatus,\n TaskContext,\n TaskArtifactUpdateEvent,\n Artifact,\n} from '@mastra/core/a2a';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport type { InMemoryTaskStore } from './store';\n\nfunction isTaskStatusUpdate(update: TaskStatus | TaskArtifactUpdateEvent): update is Omit<TaskStatus, 'timestamp'> {\n return 'state' in update && !('parts' in update);\n}\n\nfunction isArtifactUpdate(update: TaskStatus | TaskArtifactUpdateEvent): update is TaskArtifactUpdateEvent {\n return 'kind' in update && update.kind === 'artifact-update';\n}\n\nexport function applyUpdateToTask(\n current: Task,\n update: Omit<TaskStatus, 'timestamp'> | TaskArtifactUpdateEvent,\n): Task {\n let newTask = structuredClone(current);\n\n if (isTaskStatusUpdate(update)) {\n // Merge status update\n newTask.status = {\n ...newTask.status, // Keep existing properties if not overwritten\n ...update, // Apply updates\n timestamp: new Date().toISOString(),\n };\n } else if (isArtifactUpdate(update)) {\n // Handle artifact update\n if (!newTask.artifacts) {\n newTask.artifacts = [];\n } else {\n // Ensure we're working with a copy of the artifacts array\n newTask.artifacts = [...newTask.artifacts];\n }\n\n const artifact = update.artifact;\n const existingIndex = newTask.artifacts.findIndex(a => a.name === artifact.name);\n const existingArtifact = newTask.artifacts[existingIndex];\n\n if (existingArtifact) {\n if (update.append) {\n // Create a deep copy for modification to avoid mutating original\n const appendedArtifact = JSON.parse(JSON.stringify(existingArtifact)) as Artifact;\n appendedArtifact.parts.push(...artifact.parts);\n if (artifact.metadata) {\n appendedArtifact.metadata = {\n ...(appendedArtifact.metadata || {}),\n ...artifact.metadata,\n };\n }\n if (artifact.description) appendedArtifact.description = artifact.description;\n newTask.artifacts[existingIndex] = appendedArtifact; // Replace with appended version\n } else {\n // Overwrite artifact at index (with a copy of the update)\n newTask.artifacts[existingIndex] = { ...artifact };\n }\n } else {\n newTask.artifacts.push({ ...artifact });\n }\n }\n\n return newTask;\n}\n\nexport async function loadOrCreateTask({\n agentId,\n taskId,\n taskStore,\n message,\n contextId,\n metadata,\n logger,\n}: {\n agentId: string;\n taskId: string;\n taskStore: InMemoryTaskStore;\n message: Message;\n contextId?: string;\n metadata?: Record<string, unknown>;\n logger?: IMastraLogger;\n}): Promise<Task> {\n const data = await taskStore.load({ agentId, taskId });\n\n // Create new task if none exists\n if (!data) {\n const initialTask: Task = {\n id: taskId,\n contextId: contextId || crypto.randomUUID(),\n status: {\n state: 'submitted',\n timestamp: new Date().toISOString(),\n message: undefined,\n },\n artifacts: [],\n history: [message],\n metadata: metadata,\n kind: 'task',\n };\n\n logger?.info(`[Task ${taskId}] Created new task.`);\n await taskStore.save({ agentId, data: initialTask });\n\n return initialTask;\n }\n\n // Handle existing task\n logger?.info(`[Task ${taskId}] Loaded existing task.`);\n\n // Add message to history and prepare updated data\n let updatedData = data;\n updatedData.history = [...(data.history || []), message];\n\n // Handle state transitions\n const { status } = data;\n const finalStates: TaskState[] = ['completed', 'failed', 'canceled'];\n\n if (finalStates.includes(status.state)) {\n logger?.warn(`[Task ${taskId}] Received message for task in final state ${status.state}. Restarting.`);\n updatedData = applyUpdateToTask(updatedData, {\n state: 'submitted',\n message: undefined,\n });\n } else if (status.state === 'input-required') {\n logger?.info(`[Task ${taskId}] Changing state from 'input-required' to 'working'.`);\n updatedData = applyUpdateToTask(updatedData, { state: 'working' });\n } else if (status.state === 'working') {\n logger?.warn(`[Task ${taskId}] Received message while already 'working'. Proceeding.`);\n }\n\n await taskStore.save({ agentId, data: updatedData });\n\n return updatedData;\n}\n\nexport function createTaskContext({\n task,\n userMessage,\n history,\n activeCancellations,\n}: {\n task: Task;\n userMessage: Message;\n history: Message[];\n activeCancellations: Set<string>;\n}): TaskContext {\n return {\n task: structuredClone(task),\n userMessage,\n history: structuredClone(history),\n isCancelled: () => activeCancellations.has(task.id),\n };\n}\n","import { isDeepStrictEqual } from 'node:util';\nimport { MastraA2AError } from '@mastra/core/a2a';\nimport type {\n MessageSendParams,\n TaskQueryParams,\n TaskIdParams,\n AgentCard,\n TaskStatus,\n TaskState,\n Task,\n TaskPushNotificationConfig,\n GetTaskPushNotificationConfigParams,\n ListTaskPushNotificationConfigParams,\n DeleteTaskPushNotificationConfigParams,\n Artifact,\n} from '@mastra/core/a2a';\nimport type { Agent } from '@mastra/core/agent';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { z } from 'zod/v4';\nimport { signAgentCard } from '../a2a/agent-card-signing';\nimport { convertToCoreMessage, normalizeError, createSuccessResponse } from '../a2a/protocol';\nimport { DefaultPushNotificationSender } from '../a2a/push-notification-sender';\nimport { InMemoryPushNotificationStore } from '../a2a/push-notification-store';\nimport type { InMemoryTaskStore } from '../a2a/store';\nimport { applyUpdateToTask, loadOrCreateTask } from '../a2a/tasks';\nimport {\n a2aAgentIdPathParams,\n agentExecutionBodySchema,\n agentCardResponseSchema,\n agentExecutionResponseSchema,\n} from '../schemas/a2a';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\nimport { convertInstructionsToString } from '../utils';\nimport { getAgentFromSystem } from './agents';\nimport { getPublicOrigin } from './auth';\n\n// Mirrors @a2a-js/sdk's Part discriminated union (text | file | data) and the\n// part shape already declared in ../schemas/a2a.ts. Before this widening, the\n// schema hard-coded `kind: z.enum(['text'])` which rejected every non-text\n// part before the converter could see it — even though convertToCoreMessagePart\n// at ../a2a/protocol.ts already handles file and data parts. With this change,\n// FilePart (FileWithBytes | FileWithUri) and DataPart parse successfully and\n// reach the converter (data parts then throw a clear \"not supported in core\n// messages\" message; files convert natively to AI-SDK CoreMessage file parts).\nconst messagePartSchema = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('text'),\n text: z.string(),\n metadata: z.record(z.string(), z.any()).optional(),\n }),\n z.object({\n kind: z.literal('file'),\n file: z.union([\n z.object({\n bytes: z.string(),\n mimeType: z.string().optional(),\n name: z.string().optional(),\n }),\n z.object({\n uri: z.string(),\n mimeType: z.string().optional(),\n name: z.string().optional(),\n }),\n ]),\n metadata: z.record(z.string(), z.any()).optional(),\n }),\n z.object({\n kind: z.literal('data'),\n data: z.record(z.string(), z.any()),\n metadata: z.record(z.string(), z.any()).optional(),\n }),\n]);\n\nconst messageSendParamsSchema = z.object({\n message: z.object({\n role: z.enum(['user', 'agent']),\n parts: z.array(messagePartSchema),\n kind: z.literal('message'),\n messageId: z.string(),\n contextId: z.string().optional(),\n taskId: z.string().optional(),\n referenceTaskIds: z.array(z.string()).optional(),\n extensions: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.any()).optional(),\n }),\n configuration: z\n .object({\n acceptedOutputModes: z.array(z.string()).optional(),\n blocking: z.boolean().optional(),\n historyLength: z.number().optional(),\n pushNotificationConfig: z\n .object({\n url: z.string(),\n id: z.string().optional(),\n token: z.string().optional(),\n authentication: z\n .object({\n schemes: z.array(z.string()),\n credentials: z.string().optional(),\n })\n .optional(),\n })\n .optional(),\n })\n .optional(),\n});\n\nconst defaultPushNotificationStore = new InMemoryPushNotificationStore();\nconst defaultPushNotificationSender = new DefaultPushNotificationSender(defaultPushNotificationStore);\n\nfunction createAgentCardDefaults({\n pushNotifications = false,\n}: {\n pushNotifications?: boolean;\n} = {}): Pick<\n AgentCard,\n | 'protocolVersion'\n | 'additionalInterfaces'\n | 'supportsAuthenticatedExtendedCard'\n | 'security'\n | 'securitySchemes'\n | 'capabilities'\n | 'defaultInputModes'\n | 'defaultOutputModes'\n> {\n return {\n protocolVersion: '0.3.0',\n additionalInterfaces: [],\n supportsAuthenticatedExtendedCard: false,\n security: [],\n securitySchemes: {},\n capabilities: {\n streaming: true,\n pushNotifications,\n stateTransitionHistory: false,\n extensions: [],\n },\n defaultInputModes: ['text/plain'],\n defaultOutputModes: ['text/plain'],\n };\n}\n\nexport async function getAgentCardByIdHandler({\n mastra,\n agentId,\n executionUrl = `/a2a/${agentId}`,\n provider = {\n organization: 'Mastra',\n url: 'https://mastra.ai',\n },\n version = '1.0',\n pushNotifications = false,\n requestContext,\n}: Context & {\n requestContext: RequestContext;\n agentId: keyof ReturnType<typeof mastra.listAgents>;\n executionUrl?: string;\n version?: string;\n provider?: {\n organization: string;\n url: string;\n };\n pushNotifications?: boolean;\n}): Promise<AgentCard> {\n const agent = await getAgentFromSystem({ mastra, agentId: agentId as string });\n\n const [instructions, tools]: [\n Awaited<ReturnType<typeof agent.getInstructions>>,\n Awaited<ReturnType<typeof agent.listTools>>,\n ] = await Promise.all([agent.getInstructions({ requestContext }), agent.listTools({ requestContext })]);\n\n // Extract agent information to create the AgentCard\n const agentCard: AgentCard = {\n name: agent.id || (agentId as string),\n description: convertInstructionsToString(instructions),\n url: executionUrl,\n provider,\n version,\n ...createAgentCardDefaults({ pushNotifications }),\n // Convert agent tools to skills format for A2A protocol\n skills: Object.entries(tools).map(([toolId, tool]) => ({\n id: toolId,\n name: toolId,\n description: ('description' in tool && tool.description) || `Tool: ${toolId}`,\n // Optional fields\n tags: ['tool'],\n })),\n };\n\n const signing = mastra.getServer?.()?.a2a?.agentCardSigning;\n if (!signing) {\n return agentCard;\n }\n\n return signAgentCard({\n agentCard,\n signing,\n });\n}\n\nfunction getA2AExecutionUrl({\n agentId,\n request,\n routePrefix,\n}: {\n agentId: string;\n request?: Request;\n routePrefix?: string;\n}) {\n const executionPath = `${routePrefix ?? ''}/a2a/${agentId}`;\n\n if (!request) {\n return executionPath;\n }\n\n return `${getPublicOrigin(request)}${executionPath}`;\n}\n\nfunction validateMessageSendParams(params: MessageSendParams) {\n try {\n messageSendParamsSchema.parse(params);\n } catch (error) {\n if (error instanceof z.ZodError) {\n throw MastraA2AError.invalidParams((error as z.ZodError).issues[0]!.message);\n }\n\n throw error;\n }\n}\n\nfunction createArtifactUpdate({\n taskId,\n contextId,\n text,\n data,\n}: {\n taskId: string;\n contextId: string;\n text?: string;\n data?: Record<string, unknown>;\n}) {\n const parts = [\n ...(text ? [{ kind: 'text' as const, text }] : []),\n ...(data ? [{ kind: 'data' as const, data }] : []),\n ];\n\n if (parts.length === 0) {\n return undefined;\n }\n\n return {\n kind: 'artifact-update' as const,\n taskId,\n contextId,\n lastChunk: true,\n artifact: {\n artifactId: `${taskId}:response`,\n name: data ? 'response.json' : 'response.txt',\n parts,\n },\n };\n}\n\nfunction createTextChunkArtifactUpdate({\n taskId,\n contextId,\n text,\n append,\n lastChunk,\n}: {\n taskId: string;\n contextId: string;\n text: string;\n append?: boolean;\n lastChunk?: boolean;\n}) {\n return {\n kind: 'artifact-update' as const,\n taskId,\n contextId,\n ...(append ? { append: true } : {}),\n ...(lastChunk !== undefined ? { lastChunk } : {}),\n artifact: {\n artifactId: `${taskId}:response:text`,\n name: 'response.txt',\n parts: [{ kind: 'text' as const, text }],\n },\n };\n}\n\nfunction createDataArtifactUpdate({\n taskId,\n contextId,\n data,\n lastChunk,\n}: {\n taskId: string;\n contextId: string;\n data: Record<string, unknown>;\n lastChunk?: boolean;\n}) {\n return {\n kind: 'artifact-update' as const,\n taskId,\n contextId,\n ...(lastChunk !== undefined ? { lastChunk } : {}),\n artifact: {\n artifactId: `${taskId}:response:data`,\n name: 'response.json',\n parts: [{ kind: 'data' as const, data }],\n },\n };\n}\n\nfunction resolvePushNotificationPair({\n pushNotificationStore,\n pushNotificationSender,\n}: {\n pushNotificationStore?: InMemoryPushNotificationStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n}) {\n if (pushNotificationSender) {\n return {\n pushNotificationStore: pushNotificationSender.getStore(),\n pushNotificationSender,\n };\n }\n\n if (pushNotificationStore) {\n return {\n pushNotificationStore,\n pushNotificationSender: new DefaultPushNotificationSender(pushNotificationStore),\n };\n }\n\n return {\n pushNotificationStore: defaultPushNotificationStore,\n pushNotificationSender: defaultPushNotificationSender,\n };\n}\n\nfunction createTaskPushNotificationConfig(\n taskId: string,\n pushNotificationConfig: TaskPushNotificationConfig['pushNotificationConfig'],\n): TaskPushNotificationConfig {\n return {\n taskId,\n pushNotificationConfig: {\n ...pushNotificationConfig,\n id: pushNotificationConfig.id ?? taskId,\n },\n };\n}\n\nfunction shouldSendPushNotification(previousTask: Task | undefined, nextTask: Task) {\n const pushTriggerStates: TaskState[] = ['completed', 'failed', 'canceled', 'input-required'];\n\n if (!pushTriggerStates.includes(nextTask.status.state)) {\n return false;\n }\n\n return previousTask?.status.state !== nextTask.status.state;\n}\n\nasync function saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender,\n previousTask,\n nextTask,\n agentId,\n logger,\n}: {\n taskStore: InMemoryTaskStore;\n pushNotificationSender: DefaultPushNotificationSender;\n previousTask?: Task;\n nextTask: Task;\n agentId: string;\n logger?: IMastraLogger;\n}) {\n await taskStore.save({ agentId, data: nextTask });\n\n if (!shouldSendPushNotification(previousTask, nextTask)) {\n return;\n }\n\n void pushNotificationSender\n .sendNotifications({\n agentId,\n task: nextTask,\n logger,\n })\n .catch(error => {\n logger?.error('Failed to schedule A2A push notification', error);\n });\n}\n\nfunction extractFullStreamTextDelta(value: unknown): string | null {\n if (typeof value !== 'object' || value === null || !('type' in value)) {\n return null;\n }\n\n const chunk = value as {\n type: string;\n payload?: { text?: string; delta?: string };\n textDelta?: string;\n text?: string;\n delta?: string;\n };\n\n switch (chunk.type) {\n case 'text-delta':\n if (typeof chunk.payload?.text === 'string') {\n return chunk.payload.text;\n }\n\n if (typeof chunk.payload?.delta === 'string') {\n return chunk.payload.delta;\n }\n\n if (typeof chunk.textDelta === 'string') {\n return chunk.textDelta;\n }\n\n if (typeof chunk.delta === 'string') {\n return chunk.delta;\n }\n\n if (typeof chunk.text === 'string') {\n return chunk.text;\n }\n\n return null;\n default:\n return null;\n }\n}\n\nfunction extractFinalStructuredObject(value: unknown): Record<string, unknown> | undefined {\n if (typeof value !== 'object' || value === null || !('type' in value)) {\n return undefined;\n }\n\n const chunk = value as {\n type: string;\n object?: unknown;\n payload?: { object?: unknown };\n };\n\n if (chunk.type !== 'object-result') {\n return undefined;\n }\n\n const objectValue = chunk.payload?.object ?? chunk.object;\n return objectValue && typeof objectValue === 'object' ? (objectValue as Record<string, unknown>) : undefined;\n}\n\nfunction isTerminalTaskState(state: TaskState) {\n return ['completed', 'failed', 'canceled'].includes(state);\n}\n\nfunction artifactIdentity(artifact: Artifact) {\n return artifact.artifactId || artifact.name;\n}\n\nfunction areArtifactPartsEqual(left: Artifact['parts'], right: Artifact['parts']) {\n if (left === right) {\n return true;\n }\n\n if (left.length !== right.length) {\n return false;\n }\n\n return left.every((part, index) => {\n const other = right[index];\n if (!other || part.kind !== other.kind) {\n return false;\n }\n\n if (part.kind === 'text' && other.kind === 'text') {\n return part.text === other.text;\n }\n\n return part === other;\n });\n}\n\nfunction areArtifactsEqual(left: Artifact | undefined, right: Artifact | undefined) {\n if (left === right) {\n return true;\n }\n\n if (!left || !right) {\n return left === right;\n }\n\n return (\n left.artifactId === right.artifactId &&\n left.name === right.name &&\n left.description === right.description &&\n left.metadata === right.metadata &&\n areArtifactPartsEqual(left.parts, right.parts)\n );\n}\n\nfunction areStatusMessagePartsEqual(\n left: NonNullable<Task['status']['message']>['parts'],\n right: NonNullable<Task['status']['message']>['parts'],\n) {\n return left === right || isDeepStrictEqual(left, right);\n}\n\nfunction areStatusMessagesEqual(left: Task['status']['message'], right: Task['status']['message']) {\n if (left === right) {\n return true;\n }\n\n if (!left || !right) {\n return left === right;\n }\n\n return (\n left.messageId === right.messageId &&\n left.kind === right.kind &&\n left.role === right.role &&\n left.contextId === right.contextId &&\n left.taskId === right.taskId &&\n isDeepStrictEqual(left.referenceTaskIds, right.referenceTaskIds) &&\n isDeepStrictEqual(left.extensions, right.extensions) &&\n isDeepStrictEqual(left.metadata, right.metadata) &&\n areStatusMessagePartsEqual(left.parts, right.parts)\n );\n}\n\nfunction didTaskStatusChange(previous: Task, next: Task) {\n return (\n previous.status.state !== next.status.state ||\n previous.status.timestamp !== next.status.timestamp ||\n !areStatusMessagesEqual(previous.status.message, next.status.message)\n );\n}\n\nfunction getTaskArtifactUpdates({ previous, next }: { previous: Task; next: Task }) {\n const previousArtifacts = new Map((previous.artifacts ?? []).map(artifact => [artifactIdentity(artifact), artifact]));\n const changedArtifacts = (next.artifacts ?? []).filter(artifact => {\n const priorArtifact = previousArtifacts.get(artifactIdentity(artifact));\n return !priorArtifact || !areArtifactsEqual(priorArtifact, artifact);\n });\n\n return changedArtifacts.map((artifact, index) => ({\n kind: 'artifact-update' as const,\n taskId: next.id,\n contextId: next.contextId,\n lastChunk: isTerminalTaskState(next.status.state) && index === changedArtifacts.length - 1,\n artifact: structuredClone(artifact),\n }));\n}\n\nasync function executeMessageSend({\n requestId,\n message,\n metadata,\n currentData,\n taskStore,\n pushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n}: {\n requestId: number | string;\n message: MessageSendParams['message'];\n metadata: MessageSendParams['metadata'];\n currentData: Task;\n taskStore: InMemoryTaskStore;\n pushNotificationSender: DefaultPushNotificationSender;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n requestContext: RequestContext;\n}) {\n const { contextId } = message;\n\n try {\n // Pass contextId as threadId for memory persistence across A2A conversations\n // Allow user to pass resourceId via metadata, fall back to agentId\n const resourceId = (metadata?.resourceId as string) ?? (message.metadata?.resourceId as string) ?? agentId;\n const result = await agent.generate([convertToCoreMessage(message)], {\n runId: currentData.id,\n requestContext,\n ...(contextId ? { threadId: contextId, resourceId } : {}),\n });\n\n const latestTask = await taskStore.load({ agentId, taskId: currentData.id });\n if (latestTask?.status.state === 'canceled') {\n return createSuccessResponse(requestId, latestTask);\n }\n currentData = latestTask ?? currentData;\n\n const artifactUpdate = createArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n text: result.text,\n data: result.object as Record<string, unknown> | undefined,\n });\n\n if (artifactUpdate) {\n currentData = applyUpdateToTask(currentData, artifactUpdate);\n }\n\n const previousTask = currentData;\n currentData = applyUpdateToTask(currentData, {\n state: 'completed',\n message: undefined,\n });\n\n // Store execution details in task metadata\n currentData.metadata = {\n ...currentData.metadata,\n execution: {\n toolCalls: result.toolCalls,\n toolResults: result.toolResults,\n usage: result.usage,\n finishReason: result.finishReason,\n },\n };\n\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n } catch (handlerError) {\n const latestTask = await taskStore.load({ agentId, taskId: currentData.id });\n if (latestTask?.status.state === 'canceled') {\n return createSuccessResponse(requestId, latestTask);\n }\n currentData = latestTask ?? currentData;\n\n // If handler throws, apply 'failed' status, save, and rethrow\n const failureStatusUpdate: Omit<TaskStatus, 'timestamp'> = {\n state: 'failed',\n message: {\n messageId: crypto.randomUUID(),\n role: 'agent',\n parts: [\n {\n kind: 'text',\n text: `Handler failed: ${handlerError instanceof Error ? handlerError.message : String(handlerError)}`,\n },\n ],\n kind: 'message',\n },\n };\n const previousTask = currentData;\n currentData = applyUpdateToTask(currentData, failureStatusUpdate);\n\n try {\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n } catch (saveError) {\n // @ts-expect-error saveError is an unknown error\n logger?.error(`Failed to save task ${currentData.id} after handler error:`, saveError?.message);\n }\n\n return normalizeError(handlerError, requestId, currentData.id, logger); // Rethrow original error\n }\n\n // The loop finished, send the final task state\n return createSuccessResponse(requestId, currentData);\n}\n\nexport async function handleMessageSend({\n requestId,\n params,\n taskStore,\n pushNotificationStore,\n pushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n}: {\n requestId: number | string;\n params: MessageSendParams;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n requestContext: RequestContext;\n}) {\n validateMessageSendParams(params);\n\n const { message, metadata } = params;\n const { contextId } = message;\n const taskId = message.taskId || crypto.randomUUID();\n const existingTask = await taskStore.load({ agentId, taskId });\n if (params.configuration?.blocking === false && existingTask?.status.state === 'working') {\n return createSuccessResponse(requestId, existingTask);\n }\n const {\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n } = resolvePushNotificationPair({\n pushNotificationStore,\n pushNotificationSender,\n });\n\n let currentData = await loadOrCreateTask({\n taskId,\n taskStore,\n agentId,\n message,\n contextId,\n metadata,\n });\n\n if (params.configuration?.pushNotificationConfig) {\n resolvedPushNotificationStore.set({\n agentId,\n config: createTaskPushNotificationConfig(taskId, params.configuration.pushNotificationConfig),\n });\n }\n\n currentData = applyUpdateToTask(currentData, {\n state: 'working',\n message: {\n messageId: crypto.randomUUID(),\n kind: 'message',\n role: 'agent',\n parts: [{ kind: 'text', text: 'Generating response...' }],\n },\n });\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n\n const execution = executeMessageSend({\n requestId,\n message,\n metadata,\n currentData,\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n });\n\n if (params.configuration?.blocking === false) {\n void execution.catch(error => {\n logger?.error(`Unexpected background failure for A2A task ${currentData.id}`, error);\n });\n return createSuccessResponse(requestId, currentData);\n }\n\n return execution;\n}\n\nexport async function handleTaskGet({\n requestId,\n taskStore,\n agentId,\n taskId,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n}) {\n const task = await taskStore.load({ agentId, taskId });\n\n if (!task) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n return createSuccessResponse(requestId, task);\n}\n\nasync function loadTaskOrThrow({\n taskStore,\n agentId,\n taskId,\n}: {\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n}) {\n const task = await taskStore.load({ agentId, taskId });\n\n if (!task) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n return task;\n}\n\nexport async function handleSetTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore,\n agentId,\n params,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n agentId: string;\n params: TaskPushNotificationConfig;\n}) {\n await loadTaskOrThrow({\n taskStore,\n agentId,\n taskId: params.taskId,\n });\n\n const { pushNotificationStore: resolvedPushNotificationStore } = resolvePushNotificationPair({\n pushNotificationStore,\n });\n const config = resolvedPushNotificationStore.set({\n agentId,\n config: createTaskPushNotificationConfig(params.taskId, params.pushNotificationConfig),\n });\n\n return createSuccessResponse(requestId, config);\n}\n\nexport async function handleGetTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore,\n agentId,\n params,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n agentId: string;\n params: GetTaskPushNotificationConfigParams;\n}) {\n await loadTaskOrThrow({\n taskStore,\n agentId,\n taskId: params.id,\n });\n\n const { pushNotificationStore: resolvedPushNotificationStore } = resolvePushNotificationPair({\n pushNotificationStore,\n });\n const config = resolvedPushNotificationStore.get({\n agentId,\n params,\n });\n\n if (!config) {\n throw MastraA2AError.invalidParams(\n `Push notification config not found: ${params.pushNotificationConfigId ?? params.id}`,\n );\n }\n\n return createSuccessResponse(requestId, config);\n}\n\nexport async function handleListTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore,\n agentId,\n params,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n agentId: string;\n params: ListTaskPushNotificationConfigParams;\n}) {\n await loadTaskOrThrow({\n taskStore,\n agentId,\n taskId: params.id,\n });\n\n const { pushNotificationStore: resolvedPushNotificationStore } = resolvePushNotificationPair({\n pushNotificationStore,\n });\n const configs = resolvedPushNotificationStore.list({\n agentId,\n params,\n });\n\n return createSuccessResponse(requestId, configs);\n}\n\nexport async function handleDeleteTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore,\n agentId,\n params,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n agentId: string;\n params: DeleteTaskPushNotificationConfigParams;\n}) {\n await loadTaskOrThrow({\n taskStore,\n agentId,\n taskId: params.id,\n });\n\n const { pushNotificationStore: resolvedPushNotificationStore } = resolvePushNotificationPair({\n pushNotificationStore,\n });\n const deleted = resolvedPushNotificationStore.delete({\n agentId,\n params,\n });\n\n if (!deleted) {\n throw MastraA2AError.invalidParams(`Push notification config not found: ${params.pushNotificationConfigId}`);\n }\n\n return createSuccessResponse(requestId, null);\n}\n\nexport async function* handleMessageStream({\n requestId,\n params,\n taskStore,\n pushNotificationStore,\n pushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n}: {\n requestId: number | string;\n params: MessageSendParams;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n requestContext: RequestContext;\n}) {\n validateMessageSendParams(params);\n\n const { message, metadata } = params;\n const { contextId } = message;\n const taskId = message.taskId || crypto.randomUUID();\n const {\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n } = resolvePushNotificationPair({\n pushNotificationStore,\n pushNotificationSender,\n });\n\n let currentData = await loadOrCreateTask({\n taskId,\n taskStore,\n agentId,\n message,\n contextId,\n metadata,\n });\n\n if (params.configuration?.pushNotificationConfig) {\n resolvedPushNotificationStore.set({\n agentId,\n config: createTaskPushNotificationConfig(taskId, params.configuration.pushNotificationConfig),\n });\n }\n\n currentData = applyUpdateToTask(currentData, {\n state: 'working',\n message: {\n messageId: crypto.randomUUID(),\n kind: 'message',\n role: 'agent',\n parts: [{ kind: 'text', text: 'Generating response...' }],\n },\n });\n\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n\n yield createSuccessResponse(requestId, currentData);\n\n try {\n const resourceId = (metadata?.resourceId as string) ?? (message.metadata?.resourceId as string) ?? agentId;\n const result = await agent.stream([convertToCoreMessage(message)], {\n runId: taskId,\n requestContext,\n ...(contextId ? { threadId: contextId, resourceId } : {}),\n });\n let sawTextArtifact = false;\n let pendingTextChunk: string | undefined;\n let structuredData: Record<string, unknown> | undefined;\n\n for await (const chunk of result.fullStream) {\n const textDelta = extractFullStreamTextDelta(chunk);\n if (textDelta !== null) {\n if (!pendingTextChunk) {\n pendingTextChunk = textDelta;\n continue;\n }\n\n const textUpdate = createTextChunkArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n text: pendingTextChunk,\n append: sawTextArtifact,\n lastChunk: false,\n });\n\n currentData = applyUpdateToTask(currentData, textUpdate);\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n yield createSuccessResponse(requestId, textUpdate);\n\n sawTextArtifact = true;\n pendingTextChunk = textDelta;\n continue;\n }\n\n const finalStructuredObject = extractFinalStructuredObject(chunk);\n if (finalStructuredObject) {\n structuredData = finalStructuredObject;\n }\n }\n\n structuredData ??= (await result.object) as Record<string, unknown> | undefined;\n\n if (!pendingTextChunk && !sawTextArtifact) {\n const finalText = await result.text;\n if (finalText) {\n pendingTextChunk = finalText;\n }\n }\n\n if (pendingTextChunk) {\n const textUpdate = createTextChunkArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n text: pendingTextChunk,\n append: sawTextArtifact,\n lastChunk: !structuredData,\n });\n\n currentData = applyUpdateToTask(currentData, textUpdate);\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n yield createSuccessResponse(requestId, textUpdate);\n\n sawTextArtifact = true;\n pendingTextChunk = undefined;\n }\n\n if (structuredData) {\n const dataUpdate = createDataArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n data: structuredData,\n lastChunk: true,\n });\n\n currentData = applyUpdateToTask(currentData, dataUpdate);\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n yield createSuccessResponse(requestId, dataUpdate);\n }\n\n const previousTask = currentData;\n const completedTask = applyUpdateToTask(currentData, {\n state: 'completed',\n message: undefined,\n });\n\n completedTask.metadata = {\n ...completedTask.metadata,\n execution: {\n toolCalls: await result.toolCalls,\n toolResults: await result.toolResults,\n usage: await result.usage,\n finishReason: await result.finishReason,\n },\n };\n\n currentData = completedTask;\n\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n } catch (handlerError) {\n const previousTask = currentData;\n currentData = applyUpdateToTask(currentData, {\n state: 'failed',\n message: {\n messageId: crypto.randomUUID(),\n role: 'agent',\n parts: [\n {\n kind: 'text',\n text: `Handler failed: ${handlerError instanceof Error ? handlerError.message : String(handlerError)}`,\n },\n ],\n kind: 'message',\n },\n });\n\n try {\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n } catch (saveError) {\n // @ts-expect-error saveError is an unknown error\n logger?.error(`Failed to save task ${currentData.id} after handler error:`, saveError?.message);\n }\n }\n\n yield createSuccessResponse(requestId, {\n kind: 'status-update',\n taskId: currentData.id,\n contextId: currentData.contextId,\n status: currentData.status,\n final: true,\n });\n}\n\nexport async function* handleTaskResubscribe({\n requestId,\n taskStore,\n agentId,\n taskId,\n abortSignal,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n abortSignal?: AbortSignal;\n}) {\n let snapshot = taskStore.loadWithVersion({ agentId, taskId });\n\n if (!snapshot) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n yield createSuccessResponse(requestId, snapshot.task);\n\n if (isTerminalTaskState(snapshot.task.status.state)) {\n return;\n }\n\n while (true) {\n const { task, version } = snapshot;\n const nextUpdate = await taskStore.waitForNextUpdate({\n agentId,\n taskId,\n afterVersion: version,\n signal: abortSignal,\n });\n\n for (const artifactUpdate of getTaskArtifactUpdates({ previous: task, next: nextUpdate.task })) {\n yield createSuccessResponse(requestId, artifactUpdate);\n }\n\n if (didTaskStatusChange(task, nextUpdate.task)) {\n yield createSuccessResponse(requestId, {\n kind: 'status-update',\n taskId: nextUpdate.task.id,\n contextId: nextUpdate.task.contextId,\n status: nextUpdate.task.status,\n final: isTerminalTaskState(nextUpdate.task.status.state),\n });\n }\n\n if (isTerminalTaskState(nextUpdate.task.status.state)) {\n return;\n }\n\n snapshot = nextUpdate;\n }\n}\n\nfunction getTaskIdFromParams(\n params: MessageSendParams | TaskQueryParams | TaskIdParams | Record<string, unknown> | undefined,\n) {\n if (!params || typeof params !== 'object') {\n return undefined;\n }\n\n if ('id' in params && typeof params.id === 'string') {\n return params.id;\n }\n\n if ('taskId' in params && typeof params.taskId === 'string') {\n return params.taskId;\n }\n\n if ('message' in params && params.message && typeof params.message === 'object' && 'taskId' in params.message) {\n return typeof params.message.taskId === 'string' ? params.message.taskId : undefined;\n }\n\n return undefined;\n}\n\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return !!value && typeof value === 'object' && Symbol.asyncIterator in value;\n}\n\nfunction createA2AJsonResponse(payload: unknown): Response {\n return Response.json(payload);\n}\n\nfunction createA2ASSEResponse(payload: AsyncIterable<unknown> | unknown): Response {\n const encoder = new TextEncoder();\n const iterable = isAsyncIterable(payload)\n ? payload\n : (async function* () {\n yield payload;\n })();\n\n const stream = new ReadableStream<Uint8Array>({\n async start(controller) {\n try {\n for await (const chunk of iterable) {\n controller.enqueue(encoder.encode(`data: ${JSON.stringify(chunk)}\\n\\n`));\n }\n } catch (error) {\n controller.error(error);\n return;\n }\n\n controller.close();\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream; charset=utf-8',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n 'X-Accel-Buffering': 'no',\n },\n });\n}\n\nexport async function handleTaskCancel({\n requestId,\n taskStore,\n pushNotificationSender,\n agentId,\n taskId,\n logger,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n agentId: string;\n taskId: string;\n logger?: IMastraLogger;\n}) {\n // Load task and history\n let data = await taskStore.load({\n agentId,\n taskId,\n });\n\n if (!data) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n // Check if cancelable (not already in a final state)\n const finalStates: TaskState[] = ['completed', 'failed', 'canceled'];\n\n if (finalStates.includes(data.status.state)) {\n logger?.info(`Task ${taskId} already in final state ${data.status.state}, cannot cancel.`);\n return createSuccessResponse(requestId, data);\n }\n\n // Signal cancellation\n taskStore.activeCancellations.add(taskId);\n\n // Apply 'canceled' state update\n const cancelUpdate: Omit<TaskStatus, 'timestamp'> = {\n state: 'canceled',\n message: {\n role: 'agent',\n parts: [{ kind: 'text', text: 'Task cancelled by request.' }],\n kind: 'message',\n messageId: crypto.randomUUID(),\n },\n };\n\n const previousTask = data;\n data = applyUpdateToTask(data, cancelUpdate);\n\n // Save the updated state\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvePushNotificationPair({ pushNotificationSender }).pushNotificationSender,\n previousTask,\n nextTask: data,\n agentId,\n logger,\n });\n\n // Remove from active cancellations *after* saving\n taskStore.activeCancellations.delete(taskId);\n\n // Return the updated task object\n return createSuccessResponse(requestId, data);\n}\n\nexport async function getAgentExecutionHandler({\n requestId,\n mastra,\n agentId,\n requestContext,\n method,\n params,\n taskStore,\n pushNotificationStore,\n pushNotificationSender,\n logger,\n abortSignal,\n}: Context & {\n requestId: number | string;\n requestContext: RequestContext;\n agentId: string;\n method:\n | 'message/send'\n | 'message/stream'\n | 'tasks/get'\n | 'tasks/cancel'\n | 'tasks/resubscribe'\n | 'tasks/pushNotificationConfig/set'\n | 'tasks/pushNotificationConfig/get'\n | 'tasks/pushNotificationConfig/list'\n | 'tasks/pushNotificationConfig/delete'\n | 'agent/getAuthenticatedExtendedCard';\n params?: MessageSendParams | TaskQueryParams | TaskIdParams | Record<string, unknown>;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n logger?: IMastraLogger;\n abortSignal?: AbortSignal;\n}): Promise<any> {\n const agent = await getAgentFromSystem({ mastra, agentId });\n const {\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n } = resolvePushNotificationPair({\n pushNotificationStore,\n pushNotificationSender,\n });\n\n let taskId: string | undefined; // For error context\n\n try {\n taskId = getTaskIdFromParams(params);\n\n // 2. Route based on method\n switch (method) {\n case 'message/send': {\n const result = await handleMessageSend({\n requestId,\n params: params as MessageSendParams,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n });\n return result;\n }\n case 'message/stream': {\n const result = await handleMessageStream({\n requestId,\n taskStore,\n params: params as MessageSendParams,\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n });\n return result;\n }\n\n case 'tasks/get': {\n const result = await handleTaskGet({\n requestId,\n taskStore,\n agentId,\n taskId: taskId || 'No task ID provided',\n });\n\n return result;\n }\n case 'tasks/cancel': {\n const result = await handleTaskCancel({\n requestId,\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n agentId,\n taskId: taskId || 'No task ID provided',\n logger,\n });\n\n return result;\n }\n case 'tasks/resubscribe':\n return await handleTaskResubscribe({\n requestId,\n taskStore,\n agentId,\n taskId: taskId || 'No task ID provided',\n abortSignal,\n });\n case 'tasks/pushNotificationConfig/set':\n return await handleSetTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n agentId,\n params: params as unknown as TaskPushNotificationConfig,\n });\n case 'tasks/pushNotificationConfig/get':\n return await handleGetTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n agentId,\n params: params as GetTaskPushNotificationConfigParams,\n });\n case 'tasks/pushNotificationConfig/list':\n return await handleListTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n agentId,\n params: params as ListTaskPushNotificationConfigParams,\n });\n case 'tasks/pushNotificationConfig/delete':\n return await handleDeleteTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n agentId,\n params: params as DeleteTaskPushNotificationConfigParams,\n });\n case 'agent/getAuthenticatedExtendedCard':\n throw MastraA2AError.extendedAgentCardNotConfigured();\n default:\n throw MastraA2AError.methodNotFound(method);\n }\n } catch (error) {\n if (error instanceof MastraA2AError && taskId && !error.taskId) {\n error.taskId = taskId; // Add task ID context if missing\n }\n\n return normalizeError(error, requestId, taskId, logger);\n }\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const GET_AGENT_CARD_ROUTE = createRoute({\n method: 'GET',\n path: '/.well-known/:agentId/agent-card.json',\n responseType: 'json',\n pathParamSchema: a2aAgentIdPathParams,\n responseSchema: agentCardResponseSchema,\n summary: 'Get agent card',\n description: 'Returns the agent card information for A2A protocol discovery',\n tags: ['Agent-to-Agent'],\n requiresAuth: true,\n handler: async ctx => {\n const executionUrl = getA2AExecutionUrl({\n agentId: ctx.agentId as string,\n request: (ctx as typeof ctx & { request?: Request }).request,\n routePrefix: ctx.routePrefix,\n });\n\n return getAgentCardByIdHandler({\n mastra: ctx.mastra,\n requestContext: ctx.requestContext,\n agentId: ctx.agentId,\n executionUrl,\n pushNotifications: true,\n });\n },\n});\n\nexport const AGENT_EXECUTION_ROUTE = createRoute({\n method: 'POST',\n path: '/a2a/:agentId',\n responseType: 'datastream-response',\n pathParamSchema: a2aAgentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: agentExecutionResponseSchema,\n summary: 'Execute agent',\n description: 'Executes an agent action via JSON-RPC 2.0 over A2A protocol',\n tags: ['Agent-to-Agent'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, requestContext, taskStore, abortSignal, ...bodyParams }) => {\n const { id: requestId, method } = bodyParams;\n const params = 'params' in bodyParams ? bodyParams.params : undefined;\n const result = await getAgentExecutionHandler({\n requestId,\n mastra,\n agentId: agentId as string,\n requestContext,\n method,\n params,\n taskStore: taskStore!,\n abortSignal,\n });\n\n if (method === 'message/stream' || method === 'tasks/resubscribe') {\n return createA2ASSEResponse(result);\n }\n\n return createA2AJsonResponse(result);\n },\n});\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;;CAIA,OAAO,UAAU,SAAS,UAAW,QAAQ;EAC3C,IAAI,WAAW,QAAQ,OAAO,WAAW,YAAY,OAAO,UAAU,MACpE,OAAO,KAAK,UAAU,MAAM;EAG9B,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO,MAAM,OAAO,QAAQ,GAAG,IAAI,OAAO;GACxC,MAAM,QAAQ,OAAO,IAAI,KAAK;GAC9B,MAAM,QAAQ,OAAO,KAAA,KAAa,OAAO,OAAO,WAAW,OAAO;GAClE,OAAO,IAAI,QAAQ,UAAU,KAAK;EACpC,GAAG,EAAE,IAAI;EAGX,OAAO,MAAM,OAAO,KAAK,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,IAAI,OAAO;GAC5D,IAAI,OAAO,QAAQ,KAAA,KACf,OAAO,OAAO,QAAQ,UACxB,OAAO;GAGT,OAAO,KADO,EAAE,WAAW,IAAI,KAAK,OACjB,UAAU,EAAE,IAAI,MAAM,UAAU,OAAO,GAAG;EAC/D,GAAG,EAAE,IAAI;CACX;;;;;ACpBA,MAAM,2CAA2B,IAAI,IAAY;CAC/C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,SAAS,yBAAyB,WAAiC;CACjE,MAAM,eAAe,gBAAgB,SAAS;CAC9C,OAAO,aAAa;CACpB,OAAO;AACT;AAEA,SAAS,iBAAiB,SAAoC;CAC5D,MAAM,EAAE,eAAe;CAEvB,IAAI,OAAO,eAAe,UACxB,OAAOA,SAAO,iBAAiB,UAAU;CAG3C,OAAOA,SAAO,iBAAiB;EAC7B,KAAK;EACL,QAAQ;CACV,CAAC;AACH;AAEA,SAAS,mBAAmB,SAA6D;CACvF,MAAM,EAAE,KAAK,GAAG,SAAS,QAAQ;CAEjC,IAAI,CAAC,yBAAyB,IAAI,GAAG,GACnC,MAAM,IAAI,MAAM,yDAAyD,KAAK;CAGhF,OAAO;EACL,GAAG;EACH;CACF;AACF;AAIA,SAAS,oBAAoB,WAAqC;CAChE,IAAI,UAAU,WAAW,IAAI,GAC3B,OAAO,EAAE,aAAa,aAAsB;CAG9C,IAAI,UAAU,WAAW,IAAI,GAC3B,OAAO;EACL,SAASA,SAAO,UAAU;EAC1B,YAAYA,SAAO,UAAU;CAC/B;CAGF,OAAO,CAAC;AACV;AAEA,SAAS,mBAAmB,WAA2B;CACrD,IAAI,UAAU,SAAS,KAAK,GAAG,OAAO;CACtC,IAAI,UAAU,SAAS,KAAK,GAAG,OAAO;CACtC,IAAI,UAAU,SAAS,KAAK,GAAG,OAAO;CACtC,MAAM,IAAI,MAAM,yDAAyD,WAAW;AACtF;AAEA,eAAsB,cAAc,EAClC,WACA,WAIqB;CACrB,MAAM,oBAAA,GAAA,oBAAA,QAAA,CAAgC,yBAAyB,SAAS,CAAC;CAEzE,IAAI,CAAC,kBACH,MAAM,IAAI,MAAM,mDAAmD;CAGrE,MAAM,MAAM,iBAAiB,OAAO;CACpC,MAAM,kBAAkB,mBAAmB,OAAO;CAClD,MAAM,gBAAgB,OAAO,KAAK,KAAK,UAAU,eAAe,GAAG,MAAM,CAAC,CAAC,SAAS,WAAW;CAE/F,MAAM,eAAe,GAAG,cAAc,GADf,OAAO,KAAK,kBAAkB,MAAM,CAAC,CAAC,SAAS,WAChB;CAStD,MAAM,iBARkBA,SAAO,KAC7B,mBAAmB,OAAO,gBAAgB,GAAG,CAAC,GAC9C,OAAO,KAAK,cAAc,MAAM,GAChC;EACE;EACA,GAAG,oBAAoB,OAAO,gBAAgB,GAAG,CAAC;CACpD,CAEmC,CAAC,CAAC,SAAS,WAAW;CAE3D,IAAI,CAAC,iBAAiB,CAAC,gBACrB,MAAM,IAAI,MAAM,iDAAiD;CAGnE,MAAM,YAAgC;EACpC,WAAW;EACX,WAAW;EACX,QAAQ,QAAQ;CAClB;CAEA,OAAO;EACL,GAAG;EACH,YAAY,CAAC,GAAI,UAAU,cAAc,CAAC,GAAI,SAAS;CACzD;AACF;;;AC7GA,SAAgB,eACd,OACA,OACA,QACA,QACgC;CAChC,IAAI;CACJ,IAAI,iBAAiBC,iBAAAA,gBACnB,WAAW;MACN,IAAI,iBAAiB,OAE1B,WAAWA,iBAAAA,eAAe,cAAc,MAAM,SAAS,EAAE,OAAO,MAAM,MAAM,CAAC;MAG7E,WAAWA,iBAAAA,eAAe,cAAc,8BAA8B,KAAK;CAI7E,IAAI,UAAU,CAAC,SAAS,QACtB,SAAS,SAAS;CAGpB,QAAQ,MAAM,mCAAmC,SAAS,UAAU,MAAM,WAAW,SAAS,MAAM,KAAK,QAAQ;CAEjH,OAAO,oBAAoB,OAAO,SAAS,eAAe,CAAC;AAC7D;AAEA,SAAgB,oBACd,IACA,OACgC;CAEhC,OAAO;EACL,SAAS;EACL;EACG;CACT;AACF;AAEA,SAAgB,sBAAyB,IAA4B,QAA+B;CAClG,IAAI,CAAC,IAEH,MAAMA,iBAAAA,eAAe,cAAc,6CAA6C;CAGlF,OAAO;EACL,SAAS;EACL;EACI;CACV;AACF;AAEA,SAAgB,qBAAqB,SAA+B;CAClE,OAAO;EACL,MAAM,QAAQ,SAAS,SAAS,SAAS;EACzC,SAAS,QAAQ,MAAM,KAAI,QAAO,yBAAyB,GAAG,CAAC;CACjE;AACF;AAEA,SAAS,yBAAyB,MAAY;CAC5C,QAAQ,KAAK,MAAb;EACE,KAAK,QACH,OAAO;GACL,MAAM;GACN,MAAM,KAAK;EACb;EACF,KAAK,QACH,OAAO;GACL,MAAM;GACN,MAAM,SAAS,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK;GAC9D,UAAU,KAAK,KAAK;EACtB;EACF,KAAK,QACH,MAAM,IAAI,MAAM,+CAA+C;CACnE;AACF;ACvEA,SAAS,qBAAqB,UAAkB;CAC9C,MAAM,aAAa,SAAS,YAAY;CAExC,OACE,eAAe,eACf,WAAW,SAAS,YAAY,KAChC,WAAW,SAAS,QAAQ,KAC5B,WAAW,SAAS,WAAW,KAC/B,CAAC,WAAW,SAAS,GAAG;AAE5B;AAEA,SAAS,iBAAiB,SAAiB;CACzC,MAAM,CAAC,QAAQ,IAAI,SAAS,MAAM,QAAQ,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM;CAE/D,OACE,UAAU,MACV,UAAU,OACT,UAAU,OAAO,WAAW,OAC5B,UAAU,OAAO,UAAU,MAAM,UAAU,MAC3C,UAAU,OAAO,WAAW;AAEjC;AAEA,SAAS,iBAAiB,SAAiB;CACzC,MAAM,aAAa,QAAQ,YAAY;CAEvC,OACE,eAAe,SACf,WAAW,WAAW,KAAK,KAC3B,WAAW,WAAW,KAAK,KAC3B,WAAW,WAAW,KAAK,KAC3B,WAAW,WAAW,KAAK,KAC3B,WAAW,WAAW,IAAI,KAC1B,WAAW,WAAW,IAAI;AAE9B;AAEA,SAAS,sBAAsB,SAAiB;CAC9C,MAAM,WAAA,GAAA,IAAA,KAAA,CAAe,OAAO;CAC5B,IAAI,YAAY,GACd,OAAO,iBAAiB,OAAO;CAGjC,IAAI,YAAY,GACd,OAAO,iBAAiB,OAAO;CAGjC,OAAO;AACT;AAEA,IAAa,gCAAb,MAA2C;CAEtB;CACA;CAFnB,YACE,uBACA,UAMI,CAAC,GACL;EARiB,KAAA,wBAAA;EACA,KAAA,UAAA;CAOhB;CAEH,WAAW;EACT,OAAO,KAAK;CACd;CAEA,MAAc,4BAA4B,QAAgB;EACxD,MAAM,MAAM,IAAI,IAAI,MAAM;EAE1B,IAAI,IAAI,aAAa,YAAY,IAAI,aAAa,SAChD,MAAM,IAAI,MAAM,iDAAiD,IAAI,UAAU;EAGjF,MAAM,WAAW,IAAI,SAAS,YAAY;EAC1C,IAAI,KAAK,QAAQ,gBAAgB,CAAC,KAAK,QAAQ,aAAa,SAAS,QAAQ,GAC3E,MAAM,IAAI,MAAM,0CAA0C,UAAU;EAGtE,IAAI,qBAAqB,QAAQ,GAC/B,MAAM,IAAI,MAAM,kEAAkE,UAAU;EAG9F,IAAI,sBAAsB,QAAQ,GAChC,MAAM,IAAI,MAAM,+DAA+D,UAAU;EAG3F,MAAM,qBAAA,GAAA,IAAA,KAAA,CACC,QAAQ,MAAM,IACf,OAAO,KAAK,QAAQ,UAAUC,aAAAA,OAAAA,CAAe,UAAU;GAAE,KAAK;GAAM,UAAU;EAAK,CAAC,IACpF,CAAC;GAAE,SAAS;GAAU,SAAA,GAAA,IAAA,KAAA,CAAa,QAAQ;EAAE,CAAC;EAEpD,IAAI,kBAAkB,MAAK,WAAU,sBAAsB,OAAO,OAAO,CAAC,GACxE,MAAM,IAAI,MAAM,4DAA4D,UAAU;EAGxF,MAAM,aAAa,IAAI,IAAI,IAAI,SAAS,CAAC;EACzC,WAAW,WAAW,kBAAkB,EAAE,CAAE;EAE5C,OAAO;GACL,aAAa;GACb;GACA,YAAY,IAAI;GAChB,aAAA,GAAA,IAAA,KAAA,CAAiB,QAAQ,MAAM,IAAI,WAAW,KAAA;EAChD;CACF;CAEA,MAAc,iBAAiB,EAC7B,YACA,YACA,YACA,SACA,MACA,WAQC;EACD,QAAQ,IAAI,QAAQ,UAAU;EAC9B,MAAM,SAAS,OAAO,YAAY,YAAY,aAAa,YAAY,QAAQ,OAAO,IAAI,KAAA;EAE1F,IAAI,KAAK,QAAQ,OACf,OAAO,KAAK,QAAQ,MAAM,WAAW,SAAS,GAAG;GAC/C,QAAQ;GACR;GACA;GACA;EACF,CAAC;EAGH,MAAM,YAAY,WAAW,aAAa,WAAWC,MAAAA,UAAeC,KAAAA;EAEpE,OAAO,MAAM,IAAI,SAA8D,SAAS,WAAW;GACjG,MAAM,UAAU,UACd;IACE,UAAU,WAAW;IACrB,UAAU,WAAW;IACrB,MAAM,WAAW,QAAQ,KAAA;IACzB,MAAM,GAAG,WAAW,WAAW,WAAW;IAC1C,QAAQ;IACR,SAAS,OAAO,YAAY,QAAQ,QAAQ,CAAC;IAC7C;GACF,IACA,aAAY;IACV,SAAS,OAAO;IAChB,SAAS,GAAG,aAAa;KACvB,QAAQ;MACN,IAAI,CAAC,CAAC,SAAS,cAAc,SAAS,cAAc,OAAO,SAAS,aAAa;MACjF,QAAQ,SAAS,cAAc;MAC/B,YAAY,SAAS,iBAAiB;KACxC,CAAC;IACH,CAAC;GACH,CACF;GAEA,QAAQ,GAAG,SAAS,MAAM;GAE1B,IAAI,QACF,OAAO,iBACL,eACM;IACJ,QAAQ,QAAQ,OAAO,kBAAkB,QAAQ,OAAO,yBAAS,IAAI,MAAM,6BAA6B,CAAC;GAC3G,GACA,EAAE,MAAM,KAAK,CACf;GAGF,QAAQ,IAAI,IAAI;EAClB,CAAC;CACH;CAEA,MAAM,kBAAkB,EACtB,SACA,MACA,UAKgB;EAChB,MAAM,UAAU,KAAK,sBAAsB,KAAK;GAC9C;GACA,QAAQ,EAAE,IAAI,KAAK,GAAG;EACxB,CAAC;EAED,IAAI,QAAQ,WAAW,GACrB;EAGF,MAAM,QAAQ,WACZ,QAAQ,IAAI,OAAM,WAAU;GAC1B,MAAM,UAAU,IAAI,QAAQ,EAC1B,gBAAgB,mBAClB,CAAC;GAED,IAAI,OAAO,uBAAuB,OAChC,QAAQ,IACN,KAAK,QAAQ,mBAAA,4BACb,OAAO,uBAAuB,KAChC;GAGF,MAAM,OAAO,OAAO,uBAAuB;GAC3C,IAAI,MAAM,aACJ;QAAA,KAAK,QAAQ,SAAS,QAAQ,GAChC,QAAQ,IAAI,iBAAiB,UAAU,KAAK,aAAa;SACpD,IAAI,KAAK,QAAQ,SAAS,OAAO,GACtC,QAAQ,IAAI,iBAAiB,SAAS,KAAK,aAAa;GAAA;GAI5D,MAAM,EAAE,YAAY,YAAY,eAAe,MAAM,KAAK,4BACxD,OAAO,uBAAuB,GAChC;GACA,MAAM,WAAW,MAAM,KAAK,iBAAiB;IAC3C;IACA;IACA;IACA;IACA,MAAM,KAAK,UAAU,IAAI;IACzB,SAAS,KAAK,QAAQ,WAAW;GACnC,CAAC;GAED,IAAI,CAAC,SAAS,IACZ,MAAM,IAAI,MACR,wCAAwC,SAAS,OAAO,GAAG,SAAS,cAAc,KAAK,KAAK,CAC9F;EAEJ,CAAC,CACH,CAAC,CAAC,MAAK,YAAW;GAChB,KAAK,MAAM,UAAU,SACnB,IAAI,OAAO,WAAW,YACpB,QAAQ,MAAM,2CAA2C,OAAO,MAAM;EAG5E,CAAC;CACH;AACF;;;ACpPA,SAAS,kBAAkB,QAAgB,UAAmB;CAC5D,OAAO,YAAY;AACrB;AAEA,IAAa,gCAAb,MAA2C;CACzC,wBAAgB,IAAI,IAAqD;CAEzE,OAAe,SAAiB,QAAgB;EAC9C,OAAO,KAAK,UAAU,CAAC,SAAS,MAAM,CAAC;CACzC;CAEA,IAAI,EAAE,SAAS,UAA+F;EAC5G,MAAM,MAAM,KAAK,OAAO,SAAS,OAAO,MAAM;EAC9C,MAAM,UAAU,KAAK,MAAM,IAAI,GAAG,qBAAK,IAAI,IAAwC;EACnF,MAAM,mBAA+C;GACnD,QAAQ,OAAO;GACf,wBAAwB;IACtB,GAAG,OAAO;IACV,IAAI,kBAAkB,OAAO,QAAQ,OAAO,uBAAuB,EAAE;GACvE;EACF;EAEA,QAAQ,IAAI,iBAAiB,uBAAuB,IAAK,gBAAgB,gBAAgB,CAAC;EAC1F,KAAK,MAAM,IAAI,KAAK,OAAO;EAE3B,OAAO,gBAAgB,gBAAgB;CACzC;CAEA,IAAI,EACF,SACA,UAIoC;EACpC,MAAM,MAAM,KAAK,OAAO,SAAS,OAAO,EAAE;EAC1C,MAAM,WAAW,kBAAkB,OAAO,IAAI,OAAO,wBAAwB;EAC7E,MAAM,SAAS,KAAK,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,QAAQ;EAChD,OAAO,SAAS,gBAAgB,MAAM,IAAI;CAC5C;CAEA,KAAK,EACH,SACA,UAI+B;EAC/B,MAAM,MAAM,KAAK,OAAO,SAAS,OAAO,EAAE;EAC1C,OAAO,MAAM,KAAK,KAAK,MAAM,IAAI,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAI,WAAU,gBAAgB,MAAM,CAAC;CAC9F;CAEA,OAAO,EAAE,SAAS,UAAwF;EACxG,MAAM,MAAM,KAAK,OAAO,SAAS,OAAO,EAAE;EAC1C,MAAM,UAAU,KAAK,MAAM,IAAI,GAAG;EAElC,IAAI,CAAC,SACH,OAAO;EAGT,MAAM,UAAU,QAAQ,OAAO,OAAO,wBAAwB;EAC9D,IAAI,QAAQ,SAAS,GACnB,KAAK,MAAM,OAAO,GAAG;EAGvB,OAAO;CACT;AACF;;;AC9DA,SAAS,mBAAmB,QAAuF;CACjH,OAAO,WAAW,UAAU,EAAE,WAAW;AAC3C;AAEA,SAAS,iBAAiB,QAAiF;CACzG,OAAO,UAAU,UAAU,OAAO,SAAS;AAC7C;AAEA,SAAgB,kBACd,SACA,QACM;CACN,IAAI,UAAU,gBAAgB,OAAO;CAErC,IAAI,mBAAmB,MAAM,GAE3B,QAAQ,SAAS;EACf,GAAG,QAAQ;EACX,GAAG;EACH,4BAAW,IAAI,KAAK,EAAA,CAAE,YAAY;CACpC;MACK,IAAI,iBAAiB,MAAM,GAAG;EAEnC,IAAI,CAAC,QAAQ,WACX,QAAQ,YAAY,CAAC;OAGrB,QAAQ,YAAY,CAAC,GAAG,QAAQ,SAAS;EAG3C,MAAM,WAAW,OAAO;EACxB,MAAM,gBAAgB,QAAQ,UAAU,WAAU,MAAK,EAAE,SAAS,SAAS,IAAI;EAC/E,MAAM,mBAAmB,QAAQ,UAAU;EAE3C,IAAI,kBACF,IAAI,OAAO,QAAQ;GAEjB,MAAM,mBAAmB,KAAK,MAAM,KAAK,UAAU,gBAAgB,CAAC;GACpE,iBAAiB,MAAM,KAAK,GAAG,SAAS,KAAK;GAC7C,IAAI,SAAS,UACX,iBAAiB,WAAW;IAC1B,GAAI,iBAAiB,YAAY,CAAC;IAClC,GAAG,SAAS;GACd;GAEF,IAAI,SAAS,aAAa,iBAAiB,cAAc,SAAS;GAClE,QAAQ,UAAU,iBAAiB;EACrC,OAEE,QAAQ,UAAU,iBAAiB,EAAE,GAAG,SAAS;OAGnD,QAAQ,UAAU,KAAK,EAAE,GAAG,SAAS,CAAC;CAE1C;CAEA,OAAO;AACT;AAEA,eAAsB,iBAAiB,EACrC,SACA,QACA,WACA,SACA,WACA,UACA,UASgB;CAChB,MAAM,OAAO,MAAM,UAAU,KAAK;EAAE;EAAS;CAAO,CAAC;CAGrD,IAAI,CAAC,MAAM;EACT,MAAM,cAAoB;GACxB,IAAI;GACJ,WAAW,aAAa,OAAO,WAAW;GAC1C,QAAQ;IACN,OAAO;IACP,4BAAW,IAAI,KAAK,EAAA,CAAE,YAAY;IAClC,SAAS,KAAA;GACX;GACA,WAAW,CAAC;GACZ,SAAS,CAAC,OAAO;GACP;GACV,MAAM;EACR;EAEA,QAAQ,KAAK,SAAS,OAAO,oBAAoB;EACjD,MAAM,UAAU,KAAK;GAAE;GAAS,MAAM;EAAY,CAAC;EAEnD,OAAO;CACT;CAGA,QAAQ,KAAK,SAAS,OAAO,wBAAwB;CAGrD,IAAI,cAAc;CAClB,YAAY,UAAU,CAAC,GAAI,KAAK,WAAW,CAAC,GAAI,OAAO;CAGvD,MAAM,EAAE,WAAW;CAGnB,IAAI;EAF8B;EAAa;EAAU;CAE3C,CAAC,CAAC,SAAS,OAAO,KAAK,GAAG;EACtC,QAAQ,KAAK,SAAS,OAAO,6CAA6C,OAAO,MAAM,cAAc;EACrG,cAAc,kBAAkB,aAAa;GAC3C,OAAO;GACP,SAAS,KAAA;EACX,CAAC;CACH,OAAO,IAAI,OAAO,UAAU,kBAAkB;EAC5C,QAAQ,KAAK,SAAS,OAAO,qDAAqD;EAClF,cAAc,kBAAkB,aAAa,EAAE,OAAO,UAAU,CAAC;CACnE,OAAO,IAAI,OAAO,UAAU,WAC1B,QAAQ,KAAK,SAAS,OAAO,wDAAwD;CAGvF,MAAM,UAAU,KAAK;EAAE;EAAS,MAAM;CAAY,CAAC;CAEnD,OAAO;AACT;;;;;;;;;;;;;;;;;;AC7FA,MAAM,oBAAoBC,OAAAA,EAAE,mBAAmB,QAAQ;CACrDA,OAAAA,EAAE,OAAO;EACP,MAAMA,OAAAA,EAAE,QAAQ,MAAM;EACtB,MAAMA,OAAAA,EAAE,OAAO;EACf,UAAUA,OAAAA,EAAE,OAAOA,OAAAA,EAAE,OAAO,GAAGA,OAAAA,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS;CACnD,CAAC;CACDA,OAAAA,EAAE,OAAO;EACP,MAAMA,OAAAA,EAAE,QAAQ,MAAM;EACtB,MAAMA,OAAAA,EAAE,MAAM,CACZA,OAAAA,EAAE,OAAO;GACP,OAAOA,OAAAA,EAAE,OAAO;GAChB,UAAUA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;GAC9B,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;EAC5B,CAAC,GACDA,OAAAA,EAAE,OAAO;GACP,KAAKA,OAAAA,EAAE,OAAO;GACd,UAAUA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;GAC9B,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;EAC5B,CAAC,CACH,CAAC;EACD,UAAUA,OAAAA,EAAE,OAAOA,OAAAA,EAAE,OAAO,GAAGA,OAAAA,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS;CACnD,CAAC;CACDA,OAAAA,EAAE,OAAO;EACP,MAAMA,OAAAA,EAAE,QAAQ,MAAM;EACtB,MAAMA,OAAAA,EAAE,OAAOA,OAAAA,EAAE,OAAO,GAAGA,OAAAA,EAAE,IAAI,CAAC;EAClC,UAAUA,OAAAA,EAAE,OAAOA,OAAAA,EAAE,OAAO,GAAGA,OAAAA,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS;CACnD,CAAC;AACH,CAAC;AAED,MAAM,0BAA0BA,OAAAA,EAAE,OAAO;CACvC,SAASA,OAAAA,EAAE,OAAO;EAChB,MAAMA,OAAAA,EAAE,KAAK,CAAC,QAAQ,OAAO,CAAC;EAC9B,OAAOA,OAAAA,EAAE,MAAM,iBAAiB;EAChC,MAAMA,OAAAA,EAAE,QAAQ,SAAS;EACzB,WAAWA,OAAAA,EAAE,OAAO;EACpB,WAAWA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;EAC/B,QAAQA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;EAC5B,kBAAkBA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;EAC/C,YAAYA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;EACzC,UAAUA,OAAAA,EAAE,OAAOA,OAAAA,EAAE,OAAO,GAAGA,OAAAA,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS;CACnD,CAAC;CACD,eAAeA,OAAAA,EACZ,OAAO;EACN,qBAAqBA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;EAClD,UAAUA,OAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS;EAC/B,eAAeA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;EACnC,wBAAwBA,OAAAA,EACrB,OAAO;GACN,KAAKA,OAAAA,EAAE,OAAO;GACd,IAAIA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;GACxB,OAAOA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;GAC3B,gBAAgBA,OAAAA,EACb,OAAO;IACN,SAASA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,OAAO,CAAC;IAC3B,aAAaA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;GACnC,CAAC,CAAC,CACD,SAAS;EACd,CAAC,CAAC,CACD,SAAS;CACd,CAAC,CAAC,CACD,SAAS;AACd,CAAC;AAED,MAAM,+BAA+B,IAAI,8BAA8B;AACvE,MAAM,gCAAgC,IAAI,8BAA8B,4BAA4B;AAEpG,SAAS,wBAAwB,EAC/B,oBAAoB,UAGlB,CAAC,GAUH;CACA,OAAO;EACL,iBAAiB;EACjB,sBAAsB,CAAC;EACvB,mCAAmC;EACnC,UAAU,CAAC;EACX,iBAAiB,CAAC;EAClB,cAAc;GACZ,WAAW;GACX;GACA,wBAAwB;GACxB,YAAY,CAAC;EACf;EACA,mBAAmB,CAAC,YAAY;EAChC,oBAAoB,CAAC,YAAY;CACnC;AACF;AAEA,eAAsB,wBAAwB,EAC5C,QACA,SACA,eAAe,QAAQ,WACvB,WAAW;CACT,cAAc;CACd,KAAK;AACP,GACA,UAAU,OACV,oBAAoB,OACpB,kBAWqB;CACrB,MAAM,QAAQ,MAAMC,+BAAAA,mBAAmB;EAAE;EAAiB;CAAkB,CAAC;CAE7E,MAAM,CAAC,cAAc,SAGjB,MAAM,QAAQ,IAAI,CAAC,MAAM,gBAAgB,EAAE,eAAe,CAAC,GAAG,MAAM,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;CAGtG,MAAM,YAAuB;EAC3B,MAAM,MAAM,MAAO;EACnB,aAAaC,cAAAA,4BAA4B,YAAY;EACrD,KAAK;EACL;EACA;EACA,GAAG,wBAAwB,EAAE,kBAAkB,CAAC;EAEhD,QAAQ,OAAO,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,WAAW;GACrD,IAAI;GACJ,MAAM;GACN,aAAc,iBAAiB,QAAQ,KAAK,eAAgB,SAAS;GAErE,MAAM,CAAC,MAAM;EACf,EAAE;CACJ;CAEA,MAAM,UAAU,OAAO,YAAY,CAAC,EAAE,KAAK;CAC3C,IAAI,CAAC,SACH,OAAO;CAGT,OAAO,cAAc;EACnB;EACA;CACF,CAAC;AACH;AAEA,SAAS,mBAAmB,EAC1B,SACA,SACA,eAKC;CACD,MAAM,gBAAgB,GAAG,eAAe,GAAG,OAAO;CAElD,IAAI,CAAC,SACH,OAAO;CAGT,OAAO,GAAGC,6BAAAA,gBAAgB,OAAO,IAAI;AACvC;AAEA,SAAS,0BAA0B,QAA2B;CAC5D,IAAI;EACF,wBAAwB,MAAM,MAAM;CACtC,SAAS,OAAO;EACd,IAAI,iBAAiBH,OAAAA,EAAE,UACrB,MAAMI,iBAAAA,eAAe,cAAe,MAAqB,OAAO,EAAE,CAAE,OAAO;EAG7E,MAAM;CACR;AACF;AAEA,SAAS,qBAAqB,EAC5B,QACA,WACA,MACA,QAMC;CACD,MAAM,QAAQ,CACZ,GAAI,OAAO,CAAC;EAAE,MAAM;EAAiB;CAAK,CAAC,IAAI,CAAC,GAChD,GAAI,OAAO,CAAC;EAAE,MAAM;EAAiB;CAAK,CAAC,IAAI,CAAC,CAClD;CAEA,IAAI,MAAM,WAAW,GACnB;CAGF,OAAO;EACL,MAAM;EACN;EACA;EACA,WAAW;EACX,UAAU;GACR,YAAY,GAAG,OAAO;GACtB,MAAM,OAAO,kBAAkB;GAC/B;EACF;CACF;AACF;AAEA,SAAS,8BAA8B,EACrC,QACA,WACA,MACA,QACA,aAOC;CACD,OAAO;EACL,MAAM;EACN;EACA;EACA,GAAI,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC;EACjC,GAAI,cAAc,KAAA,IAAY,EAAE,UAAU,IAAI,CAAC;EAC/C,UAAU;GACR,YAAY,GAAG,OAAO;GACtB,MAAM;GACN,OAAO,CAAC;IAAE,MAAM;IAAiB;GAAK,CAAC;EACzC;CACF;AACF;AAEA,SAAS,yBAAyB,EAChC,QACA,WACA,MACA,aAMC;CACD,OAAO;EACL,MAAM;EACN;EACA;EACA,GAAI,cAAc,KAAA,IAAY,EAAE,UAAU,IAAI,CAAC;EAC/C,UAAU;GACR,YAAY,GAAG,OAAO;GACtB,MAAM;GACN,OAAO,CAAC;IAAE,MAAM;IAAiB;GAAK,CAAC;EACzC;CACF;AACF;AAEA,SAAS,4BAA4B,EACnC,uBACA,0BAIC;CACD,IAAI,wBACF,OAAO;EACL,uBAAuB,uBAAuB,SAAS;EACvD;CACF;CAGF,IAAI,uBACF,OAAO;EACL;EACA,wBAAwB,IAAI,8BAA8B,qBAAqB;CACjF;CAGF,OAAO;EACL,uBAAuB;EACvB,wBAAwB;CAC1B;AACF;AAEA,SAAS,iCACP,QACA,wBAC4B;CAC5B,OAAO;EACL;EACA,wBAAwB;GACtB,GAAG;GACH,IAAI,uBAAuB,MAAM;EACnC;CACF;AACF;AAEA,SAAS,2BAA2B,cAAgC,UAAgB;CAGlF,IAAI,CAAC;EAFmC;EAAa;EAAU;EAAY;CAEtD,CAAC,CAAC,SAAS,SAAS,OAAO,KAAK,GACnD,OAAO;CAGT,OAAO,cAAc,OAAO,UAAU,SAAS,OAAO;AACxD;AAEA,eAAe,qCAAqC,EAClD,WACA,wBACA,cACA,UACA,SACA,UAQC;CACD,MAAM,UAAU,KAAK;EAAE;EAAS,MAAM;CAAS,CAAC;CAEhD,IAAI,CAAC,2BAA2B,cAAc,QAAQ,GACpD;CAGF,uBACG,kBAAkB;EACjB;EACA,MAAM;EACN;CACF,CAAC,CAAC,CACD,OAAM,UAAS;EACd,QAAQ,MAAM,4CAA4C,KAAK;CACjE,CAAC;AACL;AAEA,SAAS,2BAA2B,OAA+B;CACjE,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,EAAE,UAAU,QAC7D,OAAO;CAGT,MAAM,QAAQ;CAQd,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,IAAI,OAAO,MAAM,SAAS,SAAS,UACjC,OAAO,MAAM,QAAQ;GAGvB,IAAI,OAAO,MAAM,SAAS,UAAU,UAClC,OAAO,MAAM,QAAQ;GAGvB,IAAI,OAAO,MAAM,cAAc,UAC7B,OAAO,MAAM;GAGf,IAAI,OAAO,MAAM,UAAU,UACzB,OAAO,MAAM;GAGf,IAAI,OAAO,MAAM,SAAS,UACxB,OAAO,MAAM;GAGf,OAAO;EACT,SACE,OAAO;CACX;AACF;AAEA,SAAS,6BAA6B,OAAqD;CACzF,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,EAAE,UAAU,QAC7D;CAGF,MAAM,QAAQ;CAMd,IAAI,MAAM,SAAS,iBACjB;CAGF,MAAM,cAAc,MAAM,SAAS,UAAU,MAAM;CACnD,OAAO,eAAe,OAAO,gBAAgB,WAAY,cAA0C,KAAA;AACrG;AAEA,SAAS,oBAAoB,OAAkB;CAC7C,OAAO;EAAC;EAAa;EAAU;CAAU,CAAC,CAAC,SAAS,KAAK;AAC3D;AAEA,SAAS,iBAAiB,UAAoB;CAC5C,OAAO,SAAS,cAAc,SAAS;AACzC;AAEA,SAAS,sBAAsB,MAAyB,OAA0B;CAChF,IAAI,SAAS,OACX,OAAO;CAGT,IAAI,KAAK,WAAW,MAAM,QACxB,OAAO;CAGT,OAAO,KAAK,OAAO,MAAM,UAAU;EACjC,MAAM,QAAQ,MAAM;EACpB,IAAI,CAAC,SAAS,KAAK,SAAS,MAAM,MAChC,OAAO;EAGT,IAAI,KAAK,SAAS,UAAU,MAAM,SAAS,QACzC,OAAO,KAAK,SAAS,MAAM;EAG7B,OAAO,SAAS;CAClB,CAAC;AACH;AAEA,SAAS,kBAAkB,MAA4B,OAA6B;CAClF,IAAI,SAAS,OACX,OAAO;CAGT,IAAI,CAAC,QAAQ,CAAC,OACZ,OAAO,SAAS;CAGlB,OACE,KAAK,eAAe,MAAM,cAC1B,KAAK,SAAS,MAAM,QACpB,KAAK,gBAAgB,MAAM,eAC3B,KAAK,aAAa,MAAM,YACxB,sBAAsB,KAAK,OAAO,MAAM,KAAK;AAEjD;AAEA,SAAS,2BACP,MACA,OACA;CACA,OAAO,SAAS,UAAA,GAAA,KAAA,kBAAA,CAA2B,MAAM,KAAK;AACxD;AAEA,SAAS,uBAAuB,MAAiC,OAAkC;CACjG,IAAI,SAAS,OACX,OAAO;CAGT,IAAI,CAAC,QAAQ,CAAC,OACZ,OAAO,SAAS;CAGlB,OACE,KAAK,cAAc,MAAM,aACzB,KAAK,SAAS,MAAM,QACpB,KAAK,SAAS,MAAM,QACpB,KAAK,cAAc,MAAM,aACzB,KAAK,WAAW,MAAM,WAAA,GAAA,KAAA,kBAAA,CACJ,KAAK,kBAAkB,MAAM,gBAAgB,MAAA,GAAA,KAAA,kBAAA,CAC7C,KAAK,YAAY,MAAM,UAAU,MAAA,GAAA,KAAA,kBAAA,CACjC,KAAK,UAAU,MAAM,QAAQ,KAC/C,2BAA2B,KAAK,OAAO,MAAM,KAAK;AAEtD;AAEA,SAAS,oBAAoB,UAAgB,MAAY;CACvD,OACE,SAAS,OAAO,UAAU,KAAK,OAAO,SACtC,SAAS,OAAO,cAAc,KAAK,OAAO,aAC1C,CAAC,uBAAuB,SAAS,OAAO,SAAS,KAAK,OAAO,OAAO;AAExE;AAEA,SAAS,uBAAuB,EAAE,UAAU,QAAwC;CAClF,MAAM,oBAAoB,IAAI,KAAK,SAAS,aAAa,CAAC,EAAA,CAAG,KAAI,aAAY,CAAC,iBAAiB,QAAQ,GAAG,QAAQ,CAAC,CAAC;CACpH,MAAM,oBAAoB,KAAK,aAAa,CAAC,EAAA,CAAG,QAAO,aAAY;EACjE,MAAM,gBAAgB,kBAAkB,IAAI,iBAAiB,QAAQ,CAAC;EACtE,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,eAAe,QAAQ;CACrE,CAAC;CAED,OAAO,iBAAiB,KAAK,UAAU,WAAW;EAChD,MAAM;EACN,QAAQ,KAAK;EACb,WAAW,KAAK;EAChB,WAAW,oBAAoB,KAAK,OAAO,KAAK,KAAK,UAAU,iBAAiB,SAAS;EACzF,UAAU,gBAAgB,QAAQ;CACpC,EAAE;AACJ;AAEA,eAAe,mBAAmB,EAChC,WACA,SACA,UACA,aACA,WACA,wBACA,OACA,SACA,QACA,kBAYC;CACD,MAAM,EAAE,cAAc;CAEtB,IAAI;EAGF,MAAM,aAAc,UAAU,cAA0B,QAAQ,UAAU,cAAyB;EACnG,MAAM,SAAS,MAAM,MAAM,SAAS,CAAC,qBAAqB,OAAO,CAAC,GAAG;GACnE,OAAO,YAAY;GACnB;GACA,GAAI,YAAY;IAAE,UAAU;IAAW;GAAW,IAAI,CAAC;EACzD,CAAC;EAED,MAAM,aAAa,MAAM,UAAU,KAAK;GAAE;GAAS,QAAQ,YAAY;EAAG,CAAC;EAC3E,IAAI,YAAY,OAAO,UAAU,YAC/B,OAAO,sBAAsB,WAAW,UAAU;EAEpD,cAAc,cAAc;EAE5B,MAAM,iBAAiB,qBAAqB;GAC1C,QAAQ,YAAY;GACpB,WAAW,YAAY;GACvB,MAAM,OAAO;GACb,MAAM,OAAO;EACf,CAAC;EAED,IAAI,gBACF,cAAc,kBAAkB,aAAa,cAAc;EAG7D,MAAM,eAAe;EACrB,cAAc,kBAAkB,aAAa;GAC3C,OAAO;GACP,SAAS,KAAA;EACX,CAAC;EAGD,YAAY,WAAW;GACrB,GAAG,YAAY;GACf,WAAW;IACT,WAAW,OAAO;IAClB,aAAa,OAAO;IACpB,OAAO,OAAO;IACd,cAAc,OAAO;GACvB;EACF;EAEA,MAAM,qCAAqC;GACzC;GACA;GACA;GACA,UAAU;GACV;GACA;EACF,CAAC;CACH,SAAS,cAAc;EACrB,MAAM,aAAa,MAAM,UAAU,KAAK;GAAE;GAAS,QAAQ,YAAY;EAAG,CAAC;EAC3E,IAAI,YAAY,OAAO,UAAU,YAC/B,OAAO,sBAAsB,WAAW,UAAU;EAEpD,cAAc,cAAc;EAG5B,MAAM,sBAAqD;GACzD,OAAO;GACP,SAAS;IACP,WAAW,OAAO,WAAW;IAC7B,MAAM;IACN,OAAO,CACL;KACE,MAAM;KACN,MAAM,mBAAmB,wBAAwB,QAAQ,aAAa,UAAU,OAAO,YAAY;IACrG,CACF;IACA,MAAM;GACR;EACF;EACA,MAAM,eAAe;EACrB,cAAc,kBAAkB,aAAa,mBAAmB;EAEhE,IAAI;GACF,MAAM,qCAAqC;IACzC;IACA;IACA;IACA,UAAU;IACV;IACA;GACF,CAAC;EACH,SAAS,WAAW;GAElB,QAAQ,MAAM,uBAAuB,YAAY,GAAG,wBAAwB,WAAW,OAAO;EAChG;EAEA,OAAO,eAAe,cAAc,WAAW,YAAY,IAAI,MAAM;CACvE;CAGA,OAAO,sBAAsB,WAAW,WAAW;AACrD;AAEA,eAAsB,kBAAkB,EACtC,WACA,QACA,WACA,uBACA,wBACA,OACA,SACA,QACA,kBAWC;CACD,0BAA0B,MAAM;CAEhC,MAAM,EAAE,SAAS,aAAa;CAC9B,MAAM,EAAE,cAAc;CACtB,MAAM,SAAS,QAAQ,UAAU,OAAO,WAAW;CACnD,MAAM,eAAe,MAAM,UAAU,KAAK;EAAE;EAAS;CAAO,CAAC;CAC7D,IAAI,OAAO,eAAe,aAAa,SAAS,cAAc,OAAO,UAAU,WAC7E,OAAO,sBAAsB,WAAW,YAAY;CAEtD,MAAM,EACJ,uBAAuB,+BACvB,wBAAwB,mCACtB,4BAA4B;EAC9B;EACA;CACF,CAAC;CAED,IAAI,cAAc,MAAM,iBAAiB;EACvC;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,IAAI,OAAO,eAAe,wBACxB,8BAA8B,IAAI;EAChC;EACA,QAAQ,iCAAiC,QAAQ,OAAO,cAAc,sBAAsB;CAC9F,CAAC;CAGH,cAAc,kBAAkB,aAAa;EAC3C,OAAO;EACP,SAAS;GACP,WAAW,OAAO,WAAW;GAC7B,MAAM;GACN,MAAM;GACN,OAAO,CAAC;IAAE,MAAM;IAAQ,MAAM;GAAyB,CAAC;EAC1D;CACF,CAAC;CACD,MAAM,qCAAqC;EACzC;EACA,wBAAwB;EACxB,UAAU;EACV;EACA;CACF,CAAC;CAED,MAAM,YAAY,mBAAmB;EACnC;EACA;EACA;EACA;EACA;EACA,wBAAwB;EACxB;EACA;EACA;EACA;CACF,CAAC;CAED,IAAI,OAAO,eAAe,aAAa,OAAO;EAC5C,UAAe,OAAM,UAAS;GAC5B,QAAQ,MAAM,8CAA8C,YAAY,MAAM,KAAK;EACrF,CAAC;EACD,OAAO,sBAAsB,WAAW,WAAW;CACrD;CAEA,OAAO;AACT;AAEA,eAAsB,cAAc,EAClC,WACA,WACA,SACA,UAMC;CACD,MAAM,OAAO,MAAM,UAAU,KAAK;EAAE;EAAS;CAAO,CAAC;CAErD,IAAI,CAAC,MACH,MAAMA,iBAAAA,eAAe,aAAa,MAAM;CAG1C,OAAO,sBAAsB,WAAW,IAAI;AAC9C;AAEA,eAAe,gBAAgB,EAC7B,WACA,SACA,UAKC;CACD,MAAM,OAAO,MAAM,UAAU,KAAK;EAAE;EAAS;CAAO,CAAC;CAErD,IAAI,CAAC,MACH,MAAMA,iBAAAA,eAAe,aAAa,MAAM;CAG1C,OAAO;AACT;AAEA,eAAsB,oCAAoC,EACxD,WACA,WACA,uBACA,SACA,UAOC;CACD,MAAM,gBAAgB;EACpB;EACA;EACA,QAAQ,OAAO;CACjB,CAAC;CAED,MAAM,EAAE,uBAAuB,kCAAkC,4BAA4B,EAC3F,sBACF,CAAC;CAMD,OAAO,sBAAsB,WALd,8BAA8B,IAAI;EAC/C;EACA,QAAQ,iCAAiC,OAAO,QAAQ,OAAO,sBAAsB;CACvF,CAE6C,CAAC;AAChD;AAEA,eAAsB,oCAAoC,EACxD,WACA,WACA,uBACA,SACA,UAOC;CACD,MAAM,gBAAgB;EACpB;EACA;EACA,QAAQ,OAAO;CACjB,CAAC;CAED,MAAM,EAAE,uBAAuB,kCAAkC,4BAA4B,EAC3F,sBACF,CAAC;CACD,MAAM,SAAS,8BAA8B,IAAI;EAC/C;EACA;CACF,CAAC;CAED,IAAI,CAAC,QACH,MAAMA,iBAAAA,eAAe,cACnB,uCAAuC,OAAO,4BAA4B,OAAO,IACnF;CAGF,OAAO,sBAAsB,WAAW,MAAM;AAChD;AAEA,eAAsB,qCAAqC,EACzD,WACA,WACA,uBACA,SACA,UAOC;CACD,MAAM,gBAAgB;EACpB;EACA;EACA,QAAQ,OAAO;CACjB,CAAC;CAED,MAAM,EAAE,uBAAuB,kCAAkC,4BAA4B,EAC3F,sBACF,CAAC;CAMD,OAAO,sBAAsB,WALb,8BAA8B,KAAK;EACjD;EACA;CACF,CAE8C,CAAC;AACjD;AAEA,eAAsB,uCAAuC,EAC3D,WACA,WACA,uBACA,SACA,UAOC;CACD,MAAM,gBAAgB;EACpB;EACA;EACA,QAAQ,OAAO;CACjB,CAAC;CAED,MAAM,EAAE,uBAAuB,kCAAkC,4BAA4B,EAC3F,sBACF,CAAC;CAMD,IAAI,CALY,8BAA8B,OAAO;EACnD;EACA;CACF,CAEW,GACT,MAAMA,iBAAAA,eAAe,cAAc,uCAAuC,OAAO,0BAA0B;CAG7G,OAAO,sBAAsB,WAAW,IAAI;AAC9C;AAEA,gBAAuB,oBAAoB,EACzC,WACA,QACA,WACA,uBACA,wBACA,OACA,SACA,QACA,kBAWC;CACD,0BAA0B,MAAM;CAEhC,MAAM,EAAE,SAAS,aAAa;CAC9B,MAAM,EAAE,cAAc;CACtB,MAAM,SAAS,QAAQ,UAAU,OAAO,WAAW;CACnD,MAAM,EACJ,uBAAuB,+BACvB,wBAAwB,mCACtB,4BAA4B;EAC9B;EACA;CACF,CAAC;CAED,IAAI,cAAc,MAAM,iBAAiB;EACvC;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,IAAI,OAAO,eAAe,wBACxB,8BAA8B,IAAI;EAChC;EACA,QAAQ,iCAAiC,QAAQ,OAAO,cAAc,sBAAsB;CAC9F,CAAC;CAGH,cAAc,kBAAkB,aAAa;EAC3C,OAAO;EACP,SAAS;GACP,WAAW,OAAO,WAAW;GAC7B,MAAM;GACN,MAAM;GACN,OAAO,CAAC;IAAE,MAAM;IAAQ,MAAM;GAAyB,CAAC;EAC1D;CACF,CAAC;CAED,MAAM,qCAAqC;EACzC;EACA,wBAAwB;EACxB,UAAU;EACV;EACA;CACF,CAAC;CAED,MAAM,sBAAsB,WAAW,WAAW;CAElD,IAAI;EACF,MAAM,aAAc,UAAU,cAA0B,QAAQ,UAAU,cAAyB;EACnG,MAAM,SAAS,MAAM,MAAM,OAAO,CAAC,qBAAqB,OAAO,CAAC,GAAG;GACjE,OAAO;GACP;GACA,GAAI,YAAY;IAAE,UAAU;IAAW;GAAW,IAAI,CAAC;EACzD,CAAC;EACD,IAAI,kBAAkB;EACtB,IAAI;EACJ,IAAI;EAEJ,WAAW,MAAM,SAAS,OAAO,YAAY;GAC3C,MAAM,YAAY,2BAA2B,KAAK;GAClD,IAAI,cAAc,MAAM;IACtB,IAAI,CAAC,kBAAkB;KACrB,mBAAmB;KACnB;IACF;IAEA,MAAM,aAAa,8BAA8B;KAC/C,QAAQ,YAAY;KACpB,WAAW,YAAY;KACvB,MAAM;KACN,QAAQ;KACR,WAAW;IACb,CAAC;IAED,cAAc,kBAAkB,aAAa,UAAU;IACvD,MAAM,qCAAqC;KACzC;KACA,wBAAwB;KACxB,UAAU;KACV;KACA;IACF,CAAC;IACD,MAAM,sBAAsB,WAAW,UAAU;IAEjD,kBAAkB;IAClB,mBAAmB;IACnB;GACF;GAEA,MAAM,wBAAwB,6BAA6B,KAAK;GAChE,IAAI,uBACF,iBAAiB;EAErB;EAEA,mBAAoB,MAAM,OAAO;EAEjC,IAAI,CAAC,oBAAoB,CAAC,iBAAiB;GACzC,MAAM,YAAY,MAAM,OAAO;GAC/B,IAAI,WACF,mBAAmB;EAEvB;EAEA,IAAI,kBAAkB;GACpB,MAAM,aAAa,8BAA8B;IAC/C,QAAQ,YAAY;IACpB,WAAW,YAAY;IACvB,MAAM;IACN,QAAQ;IACR,WAAW,CAAC;GACd,CAAC;GAED,cAAc,kBAAkB,aAAa,UAAU;GACvD,MAAM,qCAAqC;IACzC;IACA,wBAAwB;IACxB,UAAU;IACV;IACA;GACF,CAAC;GACD,MAAM,sBAAsB,WAAW,UAAU;GAEjD,kBAAkB;GAClB,mBAAmB,KAAA;EACrB;EAEA,IAAI,gBAAgB;GAClB,MAAM,aAAa,yBAAyB;IAC1C,QAAQ,YAAY;IACpB,WAAW,YAAY;IACvB,MAAM;IACN,WAAW;GACb,CAAC;GAED,cAAc,kBAAkB,aAAa,UAAU;GACvD,MAAM,qCAAqC;IACzC;IACA,wBAAwB;IACxB,UAAU;IACV;IACA;GACF,CAAC;GACD,MAAM,sBAAsB,WAAW,UAAU;EACnD;EAEA,MAAM,eAAe;EACrB,MAAM,gBAAgB,kBAAkB,aAAa;GACnD,OAAO;GACP,SAAS,KAAA;EACX,CAAC;EAED,cAAc,WAAW;GACvB,GAAG,cAAc;GACjB,WAAW;IACT,WAAW,MAAM,OAAO;IACxB,aAAa,MAAM,OAAO;IAC1B,OAAO,MAAM,OAAO;IACpB,cAAc,MAAM,OAAO;GAC7B;EACF;EAEA,cAAc;EAEd,MAAM,qCAAqC;GACzC;GACA,wBAAwB;GACxB;GACA,UAAU;GACV;GACA;EACF,CAAC;CACH,SAAS,cAAc;EACrB,MAAM,eAAe;EACrB,cAAc,kBAAkB,aAAa;GAC3C,OAAO;GACP,SAAS;IACP,WAAW,OAAO,WAAW;IAC7B,MAAM;IACN,OAAO,CACL;KACE,MAAM;KACN,MAAM,mBAAmB,wBAAwB,QAAQ,aAAa,UAAU,OAAO,YAAY;IACrG,CACF;IACA,MAAM;GACR;EACF,CAAC;EAED,IAAI;GACF,MAAM,qCAAqC;IACzC;IACA,wBAAwB;IACxB;IACA,UAAU;IACV;IACA;GACF,CAAC;EACH,SAAS,WAAW;GAElB,QAAQ,MAAM,uBAAuB,YAAY,GAAG,wBAAwB,WAAW,OAAO;EAChG;CACF;CAEA,MAAM,sBAAsB,WAAW;EACrC,MAAM;EACN,QAAQ,YAAY;EACpB,WAAW,YAAY;EACvB,QAAQ,YAAY;EACpB,OAAO;CACT,CAAC;AACH;AAEA,gBAAuB,sBAAsB,EAC3C,WACA,WACA,SACA,QACA,eAOC;CACD,IAAI,WAAW,UAAU,gBAAgB;EAAE;EAAS;CAAO,CAAC;CAE5D,IAAI,CAAC,UACH,MAAMA,iBAAAA,eAAe,aAAa,MAAM;CAG1C,MAAM,sBAAsB,WAAW,SAAS,IAAI;CAEpD,IAAI,oBAAoB,SAAS,KAAK,OAAO,KAAK,GAChD;CAGF,OAAO,MAAM;EACX,MAAM,EAAE,MAAM,YAAY;EAC1B,MAAM,aAAa,MAAM,UAAU,kBAAkB;GACnD;GACA;GACA,cAAc;GACd,QAAQ;EACV,CAAC;EAED,KAAK,MAAM,kBAAkB,uBAAuB;GAAE,UAAU;GAAM,MAAM,WAAW;EAAK,CAAC,GAC3F,MAAM,sBAAsB,WAAW,cAAc;EAGvD,IAAI,oBAAoB,MAAM,WAAW,IAAI,GAC3C,MAAM,sBAAsB,WAAW;GACrC,MAAM;GACN,QAAQ,WAAW,KAAK;GACxB,WAAW,WAAW,KAAK;GAC3B,QAAQ,WAAW,KAAK;GACxB,OAAO,oBAAoB,WAAW,KAAK,OAAO,KAAK;EACzD,CAAC;EAGH,IAAI,oBAAoB,WAAW,KAAK,OAAO,KAAK,GAClD;EAGF,WAAW;CACb;AACF;AAEA,SAAS,oBACP,QACA;CACA,IAAI,CAAC,UAAU,OAAO,WAAW,UAC/B;CAGF,IAAI,QAAQ,UAAU,OAAO,OAAO,OAAO,UACzC,OAAO,OAAO;CAGhB,IAAI,YAAY,UAAU,OAAO,OAAO,WAAW,UACjD,OAAO,OAAO;CAGhB,IAAI,aAAa,UAAU,OAAO,WAAW,OAAO,OAAO,YAAY,YAAY,YAAY,OAAO,SACpG,OAAO,OAAO,OAAO,QAAQ,WAAW,WAAW,OAAO,QAAQ,SAAS,KAAA;AAI/E;AAEA,SAAS,gBAAgB,OAAiD;CACxE,OAAO,CAAC,CAAC,SAAS,OAAO,UAAU,YAAY,OAAO,iBAAiB;AACzE;AAEA,SAAS,sBAAsB,SAA4B;CACzD,OAAO,SAAS,KAAK,OAAO;AAC9B;AAEA,SAAS,qBAAqB,SAAqD;CACjF,MAAM,UAAU,IAAI,YAAY;CAChC,MAAM,WAAW,gBAAgB,OAAO,IACpC,WACC,mBAAmB;EAClB,MAAM;CACR,EAAA,CAAG;CAEP,MAAM,SAAS,IAAI,eAA2B,EAC5C,MAAM,MAAM,YAAY;EACtB,IAAI;GACF,WAAW,MAAM,SAAS,UACxB,WAAW,QAAQ,QAAQ,OAAO,SAAS,KAAK,UAAU,KAAK,EAAE,KAAK,CAAC;EAE3E,SAAS,OAAO;GACd,WAAW,MAAM,KAAK;GACtB;EACF;EAEA,WAAW,MAAM;CACnB,EACF,CAAC;CAED,OAAO,IAAI,SAAS,QAAQ,EAC1B,SAAS;EACP,gBAAgB;EAChB,iBAAiB;EACjB,YAAY;EACZ,qBAAqB;CACvB,EACF,CAAC;AACH;AAEA,eAAsB,iBAAiB,EACrC,WACA,WACA,wBACA,SACA,QACA,UAQC;CAED,IAAI,OAAO,MAAM,UAAU,KAAK;EAC9B;EACA;CACF,CAAC;CAED,IAAI,CAAC,MACH,MAAMA,iBAAAA,eAAe,aAAa,MAAM;CAM1C,IAAI;EAF8B;EAAa;EAAU;CAE3C,CAAC,CAAC,SAAS,KAAK,OAAO,KAAK,GAAG;EAC3C,QAAQ,KAAK,QAAQ,OAAO,0BAA0B,KAAK,OAAO,MAAM,iBAAiB;EACzF,OAAO,sBAAsB,WAAW,IAAI;CAC9C;CAGA,UAAU,oBAAoB,IAAI,MAAM;CAGxC,MAAM,eAA8C;EAClD,OAAO;EACP,SAAS;GACP,MAAM;GACN,OAAO,CAAC;IAAE,MAAM;IAAQ,MAAM;GAA6B,CAAC;GAC5D,MAAM;GACN,WAAW,OAAO,WAAW;EAC/B;CACF;CAEA,MAAM,eAAe;CACrB,OAAO,kBAAkB,MAAM,YAAY;CAG3C,MAAM,qCAAqC;EACzC;EACA,wBAAwB,4BAA4B,EAAE,uBAAuB,CAAC,CAAC,CAAC;EAChF;EACA,UAAU;EACV;EACA;CACF,CAAC;CAGD,UAAU,oBAAoB,OAAO,MAAM;CAG3C,OAAO,sBAAsB,WAAW,IAAI;AAC9C;AAEA,eAAsB,yBAAyB,EAC7C,WACA,QACA,SACA,gBACA,QACA,QACA,WACA,uBACA,wBACA,QACA,eAsBe;CACf,MAAM,QAAQ,MAAMH,+BAAAA,mBAAmB;EAAE;EAAQ;CAAQ,CAAC;CAC1D,MAAM,EACJ,uBAAuB,+BACvB,wBAAwB,mCACtB,4BAA4B;EAC9B;EACA;CACF,CAAC;CAED,IAAI;CAEJ,IAAI;EACF,SAAS,oBAAoB,MAAM;EAGnC,QAAQ,QAAR;GACE,KAAK,gBAYH,OAAO,MAXc,kBAAkB;IACrC;IACQ;IACR;IACA,uBAAuB;IACvB,wBAAwB;IACxB;IACA;IACA;IACA;GACF,CAAC;GAGH,KAAK,kBAYH,OAAO,MAXc,oBAAoB;IACvC;IACA;IACQ;IACR,uBAAuB;IACvB,wBAAwB;IACxB;IACA;IACA;IACA;GACF,CAAC;GAIH,KAAK,aAQH,OAAO,MAPc,cAAc;IACjC;IACA;IACA;IACA,QAAQ,UAAU;GACpB,CAAC;GAIH,KAAK,gBAUH,OAAO,MATc,iBAAiB;IACpC;IACA;IACA,wBAAwB;IACxB;IACA,QAAQ,UAAU;IAClB;GACF,CAAC;GAIH,KAAK,qBACH,OAAO,MAAM,sBAAsB;IACjC;IACA;IACA;IACA,QAAQ,UAAU;IAClB;GACF,CAAC;GACH,KAAK,oCACH,OAAO,MAAM,oCAAoC;IAC/C;IACA;IACA,uBAAuB;IACvB;IACQ;GACV,CAAC;GACH,KAAK,oCACH,OAAO,MAAM,oCAAoC;IAC/C;IACA;IACA,uBAAuB;IACvB;IACQ;GACV,CAAC;GACH,KAAK,qCACH,OAAO,MAAM,qCAAqC;IAChD;IACA;IACA,uBAAuB;IACvB;IACQ;GACV,CAAC;GACH,KAAK,uCACH,OAAO,MAAM,uCAAuC;IAClD;IACA;IACA,uBAAuB;IACvB;IACQ;GACV,CAAC;GACH,KAAK,sCACH,MAAMG,iBAAAA,eAAe,+BAA+B;GACtD,SACE,MAAMA,iBAAAA,eAAe,eAAe,MAAM;EAC9C;CACF,SAAS,OAAO;EACd,IAAI,iBAAiBA,iBAAAA,kBAAkB,UAAU,CAAC,MAAM,QACtD,MAAM,SAAS;EAGjB,OAAO,eAAe,OAAO,WAAW,QAAQ,MAAM;CACxD;AACF;AAMA,MAAa,uBAAuBC,sBAAAA,YAAY;CAC9C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBC,YAAAA;CACjB,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,gBAAgB;CACvB,cAAc;CACd,SAAS,OAAM,QAAO;EACpB,MAAM,eAAe,mBAAmB;GACtC,SAAS,IAAI;GACb,SAAU,IAA2C;GACrD,aAAa,IAAI;EACnB,CAAC;EAED,OAAO,wBAAwB;GAC7B,QAAQ,IAAI;GACZ,gBAAgB,IAAI;GACpB,SAAS,IAAI;GACb;GACA,mBAAmB;EACrB,CAAC;CACH;AACF,CAAC;AAED,MAAa,wBAAwBF,sBAAAA,YAAY;CAC/C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBC,YAAAA;CACjB,YAAYE,YAAAA;CACZ,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,gBAAgB;CACvB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,SAAS,gBAAgB,WAAW,aAAa,GAAG,iBAAiB;EAC7F,MAAM,EAAE,IAAI,WAAW,WAAW;EAElC,MAAM,SAAS,MAAM,yBAAyB;GAC5C;GACA;GACS;GACT;GACA;GACA,QAPa,YAAY,aAAa,WAAW,SAAS,KAAA;GAQ/C;GACX;EACF,CAAC;EAED,IAAI,WAAW,oBAAoB,WAAW,qBAC5C,OAAO,qBAAqB,MAAM;EAGpC,OAAO,sBAAsB,MAAM;CACrC;AACF,CAAC"}
|
package/dist/a2a-uPi5sPwb.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-uPi5sPwb.js","names":["crypto","defaultLookup","httpsRequest","httpRequest"],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/canonicalize/1.0.8/8d710dcf19a48d178b2fc853e16c59951fde29eb27b6037da6c3f4dbb968b03d/node_modules/canonicalize/lib/canonicalize.js","../src/server/a2a/agent-card-signing.ts","../src/server/a2a/protocol.ts","../src/server/a2a/push-notification-sender.ts","../src/server/a2a/push-notification-store.ts","../src/server/a2a/tasks.ts","../src/server/handlers/a2a.ts"],"sourcesContent":["/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (object === null || typeof object !== 'object' || object.toJSON != null) {\n return JSON.stringify(object);\n }\n\n if (Array.isArray(object)) {\n return '[' + object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return t + comma + serialize(value);\n }, '') + ']';\n }\n\n return '{' + Object.keys(object).sort().reduce((t, cv, ci) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return t + comma + serialize(cv) + ':' + serialize(object[cv]);\n }, '') + '}';\n};\n","import * as crypto from 'node:crypto';\nimport type { AgentCard, AgentCardSignature } from '@mastra/core/a2a';\nimport type { A2AAgentCardSigningConfig } from '@mastra/core/server';\nimport canonicalize from 'canonicalize';\n\nconst SUPPORTED_JWS_ALGORITHMS = new Set<string>([\n 'ES256',\n 'ES384',\n 'ES512',\n 'RS256',\n 'RS384',\n 'RS512',\n 'PS256',\n 'PS384',\n 'PS512',\n]);\n\nfunction stripAgentCardSignatures(agentCard: AgentCard): AgentCard {\n const unsignedCard = structuredClone(agentCard) as AgentCard & { signatures?: AgentCardSignature[] };\n delete unsignedCard.signatures;\n return unsignedCard;\n}\n\nfunction importSigningKey(signing: A2AAgentCardSigningConfig) {\n const { privateKey } = signing;\n\n if (typeof privateKey === 'string') {\n return crypto.createPrivateKey(privateKey);\n }\n\n return crypto.createPrivateKey({\n key: privateKey,\n format: 'jwk',\n });\n}\n\nfunction getProtectedHeader(signing: A2AAgentCardSigningConfig): Record<string, unknown> {\n const { alg, ...rest } = signing.protectedHeader;\n\n if (!SUPPORTED_JWS_ALGORITHMS.has(alg)) {\n throw new Error(`Unsupported JWS algorithm for A2A Agent Card signing: ${alg}`);\n }\n\n return {\n ...rest,\n alg,\n };\n}\n\ntype SignatureOptions = Pick<crypto.SignKeyObjectInput, 'dsaEncoding' | 'padding' | 'saltLength'>;\n\nfunction getSignatureOptions(algorithm: string): SignatureOptions {\n if (algorithm.startsWith('ES')) {\n return { dsaEncoding: 'ieee-p1363' as const };\n }\n\n if (algorithm.startsWith('PS')) {\n return {\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST,\n };\n }\n\n return {};\n}\n\nfunction getDigestAlgorithm(algorithm: string): string {\n if (algorithm.endsWith('256')) return 'sha256';\n if (algorithm.endsWith('384')) return 'sha384';\n if (algorithm.endsWith('512')) return 'sha512';\n throw new Error(`Unsupported JWS algorithm for A2A Agent Card signing: ${algorithm}`);\n}\n\nexport async function signAgentCard({\n agentCard,\n signing,\n}: {\n agentCard: AgentCard;\n signing: A2AAgentCardSigningConfig;\n}): Promise<AgentCard> {\n const canonicalPayload = canonicalize(stripAgentCardSignatures(agentCard));\n\n if (!canonicalPayload) {\n throw new Error('Failed to canonicalize A2A Agent Card for signing');\n }\n\n const key = importSigningKey(signing);\n const protectedHeader = getProtectedHeader(signing);\n const encodedHeader = Buffer.from(JSON.stringify(protectedHeader), 'utf8').toString('base64url');\n const encodedPayload = Buffer.from(canonicalPayload, 'utf8').toString('base64url');\n const signingInput = `${encodedHeader}.${encodedPayload}`;\n const signatureBuffer = crypto.sign(\n getDigestAlgorithm(String(protectedHeader.alg)),\n Buffer.from(signingInput, 'utf8'),\n {\n key,\n ...getSignatureOptions(String(protectedHeader.alg)),\n },\n );\n const signatureValue = signatureBuffer.toString('base64url');\n\n if (!encodedHeader || !signatureValue) {\n throw new Error('Failed to create compact JWS for A2A Agent Card');\n }\n\n const signature: AgentCardSignature = {\n protected: encodedHeader,\n signature: signatureValue,\n header: signing.header,\n };\n\n return {\n ...agentCard,\n signatures: [...(agentCard.signatures ?? []), signature],\n };\n}\n","import { MastraA2AError } from '@mastra/core/a2a';\n\nimport type { JSONRPCError, JSONRPCResponse, Message, Part } from '@mastra/core/a2a';\nimport type { CoreMessage } from '@mastra/core/llm';\nimport type { IMastraLogger } from '@mastra/core/logger';\n\nexport function normalizeError(\n error: any,\n reqId: number | string | null,\n taskId?: string,\n logger?: IMastraLogger,\n): JSONRPCResponse<null, unknown> {\n let a2aError: MastraA2AError;\n if (error instanceof MastraA2AError) {\n a2aError = error;\n } else if (error instanceof Error) {\n // Generic JS error\n a2aError = MastraA2AError.internalError(error.message, { stack: error.stack });\n } else {\n // Unknown error type\n a2aError = MastraA2AError.internalError('An unknown error occurred.', error);\n }\n\n // Ensure Task ID context is present if possible\n if (taskId && !a2aError.taskId) {\n a2aError.taskId = taskId;\n }\n\n logger?.error(`Error processing request (Task: ${a2aError.taskId ?? 'N/A'}, ReqID: ${reqId ?? 'N/A'}):`, a2aError);\n\n return createErrorResponse(reqId, a2aError.toJSONRPCError());\n}\n\nexport function createErrorResponse(\n id: number | string | null,\n error: JSONRPCError<unknown>,\n): JSONRPCResponse<null, unknown> {\n // For errors, ID should be the same as request ID, or null if that couldn't be determined\n return {\n jsonrpc: '2.0',\n id: id, // Can be null if request ID was invalid/missing\n error: error,\n };\n}\n\nexport function createSuccessResponse<T>(id: number | string | null, result: T): JSONRPCResponse<T> {\n if (!id) {\n // This shouldn't happen for methods that expect a response, but safeguard\n throw MastraA2AError.internalError('Cannot create success response for null ID.');\n }\n\n return {\n jsonrpc: '2.0',\n id: id,\n result: result,\n };\n}\n\nexport function convertToCoreMessage(message: Message): CoreMessage {\n return {\n role: message.role === 'user' ? 'user' : 'assistant',\n content: message.parts.map(msg => convertToCoreMessagePart(msg)),\n };\n}\n\nfunction convertToCoreMessagePart(part: Part) {\n switch (part.kind) {\n case 'text':\n return {\n type: 'text',\n text: part.text,\n } as const;\n case 'file':\n return {\n type: 'file',\n data: 'uri' in part.file ? new URL(part.file.uri) : part.file.bytes,\n mimeType: part.file.mimeType!,\n } as const;\n case 'data':\n throw new Error('Data parts are not supported in core messages');\n }\n}\n","import { lookup as defaultLookup } from 'node:dns/promises';\nimport { request as httpRequest } from 'node:http';\nimport { request as httpsRequest } from 'node:https';\nimport { isIP } from 'node:net';\nimport type { Task } from '@mastra/core/a2a';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport type { InMemoryPushNotificationStore } from './push-notification-store';\n\nexport const DEFAULT_PUSH_NOTIFICATION_TOKEN_HEADER = 'X-A2A-Notification-Token';\n\nfunction isDisallowedHostname(hostname: string) {\n const normalized = hostname.toLowerCase();\n\n return (\n normalized === 'localhost' ||\n normalized.endsWith('.localhost') ||\n normalized.endsWith('.local') ||\n normalized.endsWith('.internal') ||\n !normalized.includes('.')\n );\n}\n\nfunction isDisallowedIpv4(address: string) {\n const [first = -1, second = -1] = address.split('.').map(Number);\n\n return (\n first === 10 ||\n first === 127 ||\n (first === 169 && second === 254) ||\n (first === 172 && second >= 16 && second <= 31) ||\n (first === 192 && second === 168)\n );\n}\n\nfunction isDisallowedIpv6(address: string) {\n const normalized = address.toLowerCase();\n\n return (\n normalized === '::1' ||\n normalized.startsWith('fe8') ||\n normalized.startsWith('fe9') ||\n normalized.startsWith('fea') ||\n normalized.startsWith('feb') ||\n normalized.startsWith('fc') ||\n normalized.startsWith('fd')\n );\n}\n\nfunction isDisallowedIpAddress(address: string) {\n const version = isIP(address);\n if (version === 4) {\n return isDisallowedIpv4(address);\n }\n\n if (version === 6) {\n return isDisallowedIpv6(address);\n }\n\n return false;\n}\n\nexport class DefaultPushNotificationSender {\n constructor(\n private readonly pushNotificationStore: InMemoryPushNotificationStore,\n private readonly options: {\n timeout?: number;\n tokenHeaderName?: string;\n fetch?: typeof fetch;\n lookup?: typeof defaultLookup;\n allowedHosts?: string[];\n } = {},\n ) {}\n\n getStore() {\n return this.pushNotificationStore;\n }\n\n private async resolveValidatedDestination(rawUrl: string) {\n const url = new URL(rawUrl);\n\n if (url.protocol !== 'https:' && url.protocol !== 'http:') {\n throw new Error(`Push notification URL must use http or https: ${url.protocol}`);\n }\n\n const hostname = url.hostname.toLowerCase();\n if (this.options.allowedHosts && !this.options.allowedHosts.includes(hostname)) {\n throw new Error(`Push notification host is not allowed: ${hostname}`);\n }\n\n if (isDisallowedHostname(hostname)) {\n throw new Error(`Push notification URL must not target local or internal hosts: ${hostname}`);\n }\n\n if (isDisallowedIpAddress(hostname)) {\n throw new Error(`Push notification URL must not target local or private IPs: ${hostname}`);\n }\n\n const resolvedAddresses =\n isIP(hostname) === 0\n ? await (this.options.lookup ?? defaultLookup)(hostname, { all: true, verbatim: true })\n : [{ address: hostname, family: isIP(hostname) }];\n\n if (resolvedAddresses.some(result => isDisallowedIpAddress(result.address))) {\n throw new Error(`Push notification URL resolved to a local or private IP: ${hostname}`);\n }\n\n const requestUrl = new URL(url.toString());\n requestUrl.hostname = resolvedAddresses[0]!.address;\n\n return {\n originalUrl: url,\n requestUrl,\n hostHeader: url.host,\n servername: isIP(hostname) === 0 ? hostname : undefined,\n };\n }\n\n private async postTaskSnapshot({\n requestUrl,\n hostHeader,\n servername,\n headers,\n body,\n timeout,\n }: {\n requestUrl: URL;\n hostHeader: string;\n servername?: string;\n headers: Headers;\n body: string;\n timeout: number;\n }) {\n headers.set('host', hostHeader);\n const signal = typeof AbortSignal.timeout === 'function' ? AbortSignal.timeout(timeout) : undefined;\n\n if (this.options.fetch) {\n return this.options.fetch(requestUrl.toString(), {\n method: 'POST',\n headers,\n body,\n signal,\n });\n }\n\n const transport = requestUrl.protocol === 'https:' ? httpsRequest : httpRequest;\n\n return await new Promise<{ ok: boolean; status: number; statusText: string }>((resolve, reject) => {\n const request = transport(\n {\n protocol: requestUrl.protocol,\n hostname: requestUrl.hostname,\n port: requestUrl.port || undefined,\n path: `${requestUrl.pathname}${requestUrl.search}`,\n method: 'POST',\n headers: Object.fromEntries(headers.entries()),\n servername,\n },\n response => {\n response.resume();\n response.on('end', () => {\n resolve({\n ok: !!response.statusCode && response.statusCode >= 200 && response.statusCode < 300,\n status: response.statusCode ?? 0,\n statusText: response.statusMessage ?? '',\n });\n });\n },\n );\n\n request.on('error', reject);\n\n if (signal) {\n signal.addEventListener(\n 'abort',\n () => {\n request.destroy(signal.reason instanceof Error ? signal.reason : new Error('Push notification timed out'));\n },\n { once: true },\n );\n }\n\n request.end(body);\n });\n }\n\n async sendNotifications({\n agentId,\n task,\n logger,\n }: {\n agentId: string;\n task: Task;\n logger?: IMastraLogger;\n }): Promise<void> {\n const configs = this.pushNotificationStore.list({\n agentId,\n params: { id: task.id },\n });\n\n if (configs.length === 0) {\n return;\n }\n\n await Promise.allSettled(\n configs.map(async config => {\n const headers = new Headers({\n 'content-type': 'application/json',\n });\n\n if (config.pushNotificationConfig.token) {\n headers.set(\n this.options.tokenHeaderName ?? DEFAULT_PUSH_NOTIFICATION_TOKEN_HEADER,\n config.pushNotificationConfig.token,\n );\n }\n\n const auth = config.pushNotificationConfig.authentication;\n if (auth?.credentials) {\n if (auth.schemes.includes('Bearer')) {\n headers.set('authorization', `Bearer ${auth.credentials}`);\n } else if (auth.schemes.includes('Basic')) {\n headers.set('authorization', `Basic ${auth.credentials}`);\n }\n }\n\n const { requestUrl, hostHeader, servername } = await this.resolveValidatedDestination(\n config.pushNotificationConfig.url,\n );\n const response = await this.postTaskSnapshot({\n requestUrl,\n hostHeader,\n servername,\n headers,\n body: JSON.stringify(task),\n timeout: this.options.timeout ?? 5_000,\n });\n\n if (!response.ok) {\n throw new Error(\n `Push notification failed with status ${response.status} ${response.statusText ?? ''}`.trim(),\n );\n }\n }),\n ).then(results => {\n for (const result of results) {\n if (result.status === 'rejected') {\n logger?.error('Failed to deliver A2A push notification', result.reason);\n }\n }\n });\n }\n}\n","import type {\n DeleteTaskPushNotificationConfigParams,\n GetTaskPushNotificationConfigParams,\n ListTaskPushNotificationConfigParams,\n TaskPushNotificationConfig,\n} from '@mastra/core/a2a';\n\nfunction normalizeConfigId(taskId: string, configId?: string) {\n return configId || taskId;\n}\n\nexport class InMemoryPushNotificationStore {\n private store = new Map<string, Map<string, TaskPushNotificationConfig>>();\n\n private getKey(agentId: string, taskId: string) {\n return JSON.stringify([agentId, taskId]);\n }\n\n set({ agentId, config }: { agentId: string; config: TaskPushNotificationConfig }): TaskPushNotificationConfig {\n const key = this.getKey(agentId, config.taskId);\n const configs = this.store.get(key) ?? new Map<string, TaskPushNotificationConfig>();\n const normalizedConfig: TaskPushNotificationConfig = {\n taskId: config.taskId,\n pushNotificationConfig: {\n ...config.pushNotificationConfig,\n id: normalizeConfigId(config.taskId, config.pushNotificationConfig.id),\n },\n };\n\n configs.set(normalizedConfig.pushNotificationConfig.id!, structuredClone(normalizedConfig));\n this.store.set(key, configs);\n\n return structuredClone(normalizedConfig);\n }\n\n get({\n agentId,\n params,\n }: {\n agentId: string;\n params: GetTaskPushNotificationConfigParams;\n }): TaskPushNotificationConfig | null {\n const key = this.getKey(agentId, params.id);\n const configId = normalizeConfigId(params.id, params.pushNotificationConfigId);\n const config = this.store.get(key)?.get(configId);\n return config ? structuredClone(config) : null;\n }\n\n list({\n agentId,\n params,\n }: {\n agentId: string;\n params: ListTaskPushNotificationConfigParams;\n }): TaskPushNotificationConfig[] {\n const key = this.getKey(agentId, params.id);\n return Array.from(this.store.get(key)?.values() ?? []).map(config => structuredClone(config));\n }\n\n delete({ agentId, params }: { agentId: string; params: DeleteTaskPushNotificationConfigParams }): boolean {\n const key = this.getKey(agentId, params.id);\n const configs = this.store.get(key);\n\n if (!configs) {\n return false;\n }\n\n const deleted = configs.delete(params.pushNotificationConfigId);\n if (configs.size === 0) {\n this.store.delete(key);\n }\n\n return deleted;\n }\n}\n","import type {\n Message,\n Task,\n TaskState,\n TaskStatus,\n TaskContext,\n TaskArtifactUpdateEvent,\n Artifact,\n} from '@mastra/core/a2a';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport type { InMemoryTaskStore } from './store';\n\nfunction isTaskStatusUpdate(update: TaskStatus | TaskArtifactUpdateEvent): update is Omit<TaskStatus, 'timestamp'> {\n return 'state' in update && !('parts' in update);\n}\n\nfunction isArtifactUpdate(update: TaskStatus | TaskArtifactUpdateEvent): update is TaskArtifactUpdateEvent {\n return 'kind' in update && update.kind === 'artifact-update';\n}\n\nexport function applyUpdateToTask(\n current: Task,\n update: Omit<TaskStatus, 'timestamp'> | TaskArtifactUpdateEvent,\n): Task {\n let newTask = structuredClone(current);\n\n if (isTaskStatusUpdate(update)) {\n // Merge status update\n newTask.status = {\n ...newTask.status, // Keep existing properties if not overwritten\n ...update, // Apply updates\n timestamp: new Date().toISOString(),\n };\n } else if (isArtifactUpdate(update)) {\n // Handle artifact update\n if (!newTask.artifacts) {\n newTask.artifacts = [];\n } else {\n // Ensure we're working with a copy of the artifacts array\n newTask.artifacts = [...newTask.artifacts];\n }\n\n const artifact = update.artifact;\n const existingIndex = newTask.artifacts.findIndex(a => a.name === artifact.name);\n const existingArtifact = newTask.artifacts[existingIndex];\n\n if (existingArtifact) {\n if (update.append) {\n // Create a deep copy for modification to avoid mutating original\n const appendedArtifact = JSON.parse(JSON.stringify(existingArtifact)) as Artifact;\n appendedArtifact.parts.push(...artifact.parts);\n if (artifact.metadata) {\n appendedArtifact.metadata = {\n ...(appendedArtifact.metadata || {}),\n ...artifact.metadata,\n };\n }\n if (artifact.description) appendedArtifact.description = artifact.description;\n newTask.artifacts[existingIndex] = appendedArtifact; // Replace with appended version\n } else {\n // Overwrite artifact at index (with a copy of the update)\n newTask.artifacts[existingIndex] = { ...artifact };\n }\n } else {\n newTask.artifacts.push({ ...artifact });\n }\n }\n\n return newTask;\n}\n\nexport async function loadOrCreateTask({\n agentId,\n taskId,\n taskStore,\n message,\n contextId,\n metadata,\n logger,\n}: {\n agentId: string;\n taskId: string;\n taskStore: InMemoryTaskStore;\n message: Message;\n contextId?: string;\n metadata?: Record<string, unknown>;\n logger?: IMastraLogger;\n}): Promise<Task> {\n const data = await taskStore.load({ agentId, taskId });\n\n // Create new task if none exists\n if (!data) {\n const initialTask: Task = {\n id: taskId,\n contextId: contextId || crypto.randomUUID(),\n status: {\n state: 'submitted',\n timestamp: new Date().toISOString(),\n message: undefined,\n },\n artifacts: [],\n history: [message],\n metadata: metadata,\n kind: 'task',\n };\n\n logger?.info(`[Task ${taskId}] Created new task.`);\n await taskStore.save({ agentId, data: initialTask });\n\n return initialTask;\n }\n\n // Handle existing task\n logger?.info(`[Task ${taskId}] Loaded existing task.`);\n\n // Add message to history and prepare updated data\n let updatedData = data;\n updatedData.history = [...(data.history || []), message];\n\n // Handle state transitions\n const { status } = data;\n const finalStates: TaskState[] = ['completed', 'failed', 'canceled'];\n\n if (finalStates.includes(status.state)) {\n logger?.warn(`[Task ${taskId}] Received message for task in final state ${status.state}. Restarting.`);\n updatedData = applyUpdateToTask(updatedData, {\n state: 'submitted',\n message: undefined,\n });\n } else if (status.state === 'input-required') {\n logger?.info(`[Task ${taskId}] Changing state from 'input-required' to 'working'.`);\n updatedData = applyUpdateToTask(updatedData, { state: 'working' });\n } else if (status.state === 'working') {\n logger?.warn(`[Task ${taskId}] Received message while already 'working'. Proceeding.`);\n }\n\n await taskStore.save({ agentId, data: updatedData });\n\n return updatedData;\n}\n\nexport function createTaskContext({\n task,\n userMessage,\n history,\n activeCancellations,\n}: {\n task: Task;\n userMessage: Message;\n history: Message[];\n activeCancellations: Set<string>;\n}): TaskContext {\n return {\n task: structuredClone(task),\n userMessage,\n history: structuredClone(history),\n isCancelled: () => activeCancellations.has(task.id),\n };\n}\n","import { isDeepStrictEqual } from 'node:util';\nimport { MastraA2AError } from '@mastra/core/a2a';\nimport type {\n MessageSendParams,\n TaskQueryParams,\n TaskIdParams,\n AgentCard,\n TaskStatus,\n TaskState,\n Task,\n TaskPushNotificationConfig,\n GetTaskPushNotificationConfigParams,\n ListTaskPushNotificationConfigParams,\n DeleteTaskPushNotificationConfigParams,\n Artifact,\n} from '@mastra/core/a2a';\nimport type { Agent } from '@mastra/core/agent';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { z } from 'zod/v4';\nimport { signAgentCard } from '../a2a/agent-card-signing';\nimport { convertToCoreMessage, normalizeError, createSuccessResponse } from '../a2a/protocol';\nimport { DefaultPushNotificationSender } from '../a2a/push-notification-sender';\nimport { InMemoryPushNotificationStore } from '../a2a/push-notification-store';\nimport type { InMemoryTaskStore } from '../a2a/store';\nimport { applyUpdateToTask, loadOrCreateTask } from '../a2a/tasks';\nimport {\n a2aAgentIdPathParams,\n agentExecutionBodySchema,\n agentCardResponseSchema,\n agentExecutionResponseSchema,\n} from '../schemas/a2a';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\nimport { convertInstructionsToString } from '../utils';\nimport { getAgentFromSystem } from './agents';\nimport { getPublicOrigin } from './auth';\n\n// Mirrors @a2a-js/sdk's Part discriminated union (text | file | data) and the\n// part shape already declared in ../schemas/a2a.ts. Before this widening, the\n// schema hard-coded `kind: z.enum(['text'])` which rejected every non-text\n// part before the converter could see it — even though convertToCoreMessagePart\n// at ../a2a/protocol.ts already handles file and data parts. With this change,\n// FilePart (FileWithBytes | FileWithUri) and DataPart parse successfully and\n// reach the converter (data parts then throw a clear \"not supported in core\n// messages\" message; files convert natively to AI-SDK CoreMessage file parts).\nconst messagePartSchema = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('text'),\n text: z.string(),\n metadata: z.record(z.string(), z.any()).optional(),\n }),\n z.object({\n kind: z.literal('file'),\n file: z.union([\n z.object({\n bytes: z.string(),\n mimeType: z.string().optional(),\n name: z.string().optional(),\n }),\n z.object({\n uri: z.string(),\n mimeType: z.string().optional(),\n name: z.string().optional(),\n }),\n ]),\n metadata: z.record(z.string(), z.any()).optional(),\n }),\n z.object({\n kind: z.literal('data'),\n data: z.record(z.string(), z.any()),\n metadata: z.record(z.string(), z.any()).optional(),\n }),\n]);\n\nconst messageSendParamsSchema = z.object({\n message: z.object({\n role: z.enum(['user', 'agent']),\n parts: z.array(messagePartSchema),\n kind: z.literal('message'),\n messageId: z.string(),\n contextId: z.string().optional(),\n taskId: z.string().optional(),\n referenceTaskIds: z.array(z.string()).optional(),\n extensions: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.any()).optional(),\n }),\n configuration: z\n .object({\n acceptedOutputModes: z.array(z.string()).optional(),\n blocking: z.boolean().optional(),\n historyLength: z.number().optional(),\n pushNotificationConfig: z\n .object({\n url: z.string(),\n id: z.string().optional(),\n token: z.string().optional(),\n authentication: z\n .object({\n schemes: z.array(z.string()),\n credentials: z.string().optional(),\n })\n .optional(),\n })\n .optional(),\n })\n .optional(),\n});\n\nconst defaultPushNotificationStore = new InMemoryPushNotificationStore();\nconst defaultPushNotificationSender = new DefaultPushNotificationSender(defaultPushNotificationStore);\n\nfunction createAgentCardDefaults({\n pushNotifications = false,\n}: {\n pushNotifications?: boolean;\n} = {}): Pick<\n AgentCard,\n | 'protocolVersion'\n | 'additionalInterfaces'\n | 'supportsAuthenticatedExtendedCard'\n | 'security'\n | 'securitySchemes'\n | 'capabilities'\n | 'defaultInputModes'\n | 'defaultOutputModes'\n> {\n return {\n protocolVersion: '0.3.0',\n additionalInterfaces: [],\n supportsAuthenticatedExtendedCard: false,\n security: [],\n securitySchemes: {},\n capabilities: {\n streaming: true,\n pushNotifications,\n stateTransitionHistory: false,\n extensions: [],\n },\n defaultInputModes: ['text/plain'],\n defaultOutputModes: ['text/plain'],\n };\n}\n\nexport async function getAgentCardByIdHandler({\n mastra,\n agentId,\n executionUrl = `/a2a/${agentId}`,\n provider = {\n organization: 'Mastra',\n url: 'https://mastra.ai',\n },\n version = '1.0',\n pushNotifications = false,\n requestContext,\n}: Context & {\n requestContext: RequestContext;\n agentId: keyof ReturnType<typeof mastra.listAgents>;\n executionUrl?: string;\n version?: string;\n provider?: {\n organization: string;\n url: string;\n };\n pushNotifications?: boolean;\n}): Promise<AgentCard> {\n const agent = await getAgentFromSystem({ mastra, agentId: agentId as string });\n\n const [instructions, tools]: [\n Awaited<ReturnType<typeof agent.getInstructions>>,\n Awaited<ReturnType<typeof agent.listTools>>,\n ] = await Promise.all([agent.getInstructions({ requestContext }), agent.listTools({ requestContext })]);\n\n // Extract agent information to create the AgentCard\n const agentCard: AgentCard = {\n name: agent.id || (agentId as string),\n description: convertInstructionsToString(instructions),\n url: executionUrl,\n provider,\n version,\n ...createAgentCardDefaults({ pushNotifications }),\n // Convert agent tools to skills format for A2A protocol\n skills: Object.entries(tools).map(([toolId, tool]) => ({\n id: toolId,\n name: toolId,\n description: ('description' in tool && tool.description) || `Tool: ${toolId}`,\n // Optional fields\n tags: ['tool'],\n })),\n };\n\n const signing = mastra.getServer?.()?.a2a?.agentCardSigning;\n if (!signing) {\n return agentCard;\n }\n\n return signAgentCard({\n agentCard,\n signing,\n });\n}\n\nfunction getA2AExecutionUrl({\n agentId,\n request,\n routePrefix,\n}: {\n agentId: string;\n request?: Request;\n routePrefix?: string;\n}) {\n const executionPath = `${routePrefix ?? ''}/a2a/${agentId}`;\n\n if (!request) {\n return executionPath;\n }\n\n return `${getPublicOrigin(request)}${executionPath}`;\n}\n\nfunction validateMessageSendParams(params: MessageSendParams) {\n try {\n messageSendParamsSchema.parse(params);\n } catch (error) {\n if (error instanceof z.ZodError) {\n throw MastraA2AError.invalidParams((error as z.ZodError).issues[0]!.message);\n }\n\n throw error;\n }\n}\n\nfunction createArtifactUpdate({\n taskId,\n contextId,\n text,\n data,\n}: {\n taskId: string;\n contextId: string;\n text?: string;\n data?: Record<string, unknown>;\n}) {\n const parts = [\n ...(text ? [{ kind: 'text' as const, text }] : []),\n ...(data ? [{ kind: 'data' as const, data }] : []),\n ];\n\n if (parts.length === 0) {\n return undefined;\n }\n\n return {\n kind: 'artifact-update' as const,\n taskId,\n contextId,\n lastChunk: true,\n artifact: {\n artifactId: `${taskId}:response`,\n name: data ? 'response.json' : 'response.txt',\n parts,\n },\n };\n}\n\nfunction createTextChunkArtifactUpdate({\n taskId,\n contextId,\n text,\n append,\n lastChunk,\n}: {\n taskId: string;\n contextId: string;\n text: string;\n append?: boolean;\n lastChunk?: boolean;\n}) {\n return {\n kind: 'artifact-update' as const,\n taskId,\n contextId,\n ...(append ? { append: true } : {}),\n ...(lastChunk !== undefined ? { lastChunk } : {}),\n artifact: {\n artifactId: `${taskId}:response:text`,\n name: 'response.txt',\n parts: [{ kind: 'text' as const, text }],\n },\n };\n}\n\nfunction createDataArtifactUpdate({\n taskId,\n contextId,\n data,\n lastChunk,\n}: {\n taskId: string;\n contextId: string;\n data: Record<string, unknown>;\n lastChunk?: boolean;\n}) {\n return {\n kind: 'artifact-update' as const,\n taskId,\n contextId,\n ...(lastChunk !== undefined ? { lastChunk } : {}),\n artifact: {\n artifactId: `${taskId}:response:data`,\n name: 'response.json',\n parts: [{ kind: 'data' as const, data }],\n },\n };\n}\n\nfunction resolvePushNotificationPair({\n pushNotificationStore,\n pushNotificationSender,\n}: {\n pushNotificationStore?: InMemoryPushNotificationStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n}) {\n if (pushNotificationSender) {\n return {\n pushNotificationStore: pushNotificationSender.getStore(),\n pushNotificationSender,\n };\n }\n\n if (pushNotificationStore) {\n return {\n pushNotificationStore,\n pushNotificationSender: new DefaultPushNotificationSender(pushNotificationStore),\n };\n }\n\n return {\n pushNotificationStore: defaultPushNotificationStore,\n pushNotificationSender: defaultPushNotificationSender,\n };\n}\n\nfunction createTaskPushNotificationConfig(\n taskId: string,\n pushNotificationConfig: TaskPushNotificationConfig['pushNotificationConfig'],\n): TaskPushNotificationConfig {\n return {\n taskId,\n pushNotificationConfig: {\n ...pushNotificationConfig,\n id: pushNotificationConfig.id ?? taskId,\n },\n };\n}\n\nfunction shouldSendPushNotification(previousTask: Task | undefined, nextTask: Task) {\n const pushTriggerStates: TaskState[] = ['completed', 'failed', 'canceled', 'input-required'];\n\n if (!pushTriggerStates.includes(nextTask.status.state)) {\n return false;\n }\n\n return previousTask?.status.state !== nextTask.status.state;\n}\n\nasync function saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender,\n previousTask,\n nextTask,\n agentId,\n logger,\n}: {\n taskStore: InMemoryTaskStore;\n pushNotificationSender: DefaultPushNotificationSender;\n previousTask?: Task;\n nextTask: Task;\n agentId: string;\n logger?: IMastraLogger;\n}) {\n await taskStore.save({ agentId, data: nextTask });\n\n if (!shouldSendPushNotification(previousTask, nextTask)) {\n return;\n }\n\n void pushNotificationSender\n .sendNotifications({\n agentId,\n task: nextTask,\n logger,\n })\n .catch(error => {\n logger?.error('Failed to schedule A2A push notification', error);\n });\n}\n\nfunction extractFullStreamTextDelta(value: unknown): string | null {\n if (typeof value !== 'object' || value === null || !('type' in value)) {\n return null;\n }\n\n const chunk = value as {\n type: string;\n payload?: { text?: string; delta?: string };\n textDelta?: string;\n text?: string;\n delta?: string;\n };\n\n switch (chunk.type) {\n case 'text-delta':\n if (typeof chunk.payload?.text === 'string') {\n return chunk.payload.text;\n }\n\n if (typeof chunk.payload?.delta === 'string') {\n return chunk.payload.delta;\n }\n\n if (typeof chunk.textDelta === 'string') {\n return chunk.textDelta;\n }\n\n if (typeof chunk.delta === 'string') {\n return chunk.delta;\n }\n\n if (typeof chunk.text === 'string') {\n return chunk.text;\n }\n\n return null;\n default:\n return null;\n }\n}\n\nfunction extractFinalStructuredObject(value: unknown): Record<string, unknown> | undefined {\n if (typeof value !== 'object' || value === null || !('type' in value)) {\n return undefined;\n }\n\n const chunk = value as {\n type: string;\n object?: unknown;\n payload?: { object?: unknown };\n };\n\n if (chunk.type !== 'object-result') {\n return undefined;\n }\n\n const objectValue = chunk.payload?.object ?? chunk.object;\n return objectValue && typeof objectValue === 'object' ? (objectValue as Record<string, unknown>) : undefined;\n}\n\nfunction isTerminalTaskState(state: TaskState) {\n return ['completed', 'failed', 'canceled'].includes(state);\n}\n\nfunction artifactIdentity(artifact: Artifact) {\n return artifact.artifactId || artifact.name;\n}\n\nfunction areArtifactPartsEqual(left: Artifact['parts'], right: Artifact['parts']) {\n if (left === right) {\n return true;\n }\n\n if (left.length !== right.length) {\n return false;\n }\n\n return left.every((part, index) => {\n const other = right[index];\n if (!other || part.kind !== other.kind) {\n return false;\n }\n\n if (part.kind === 'text' && other.kind === 'text') {\n return part.text === other.text;\n }\n\n return part === other;\n });\n}\n\nfunction areArtifactsEqual(left: Artifact | undefined, right: Artifact | undefined) {\n if (left === right) {\n return true;\n }\n\n if (!left || !right) {\n return left === right;\n }\n\n return (\n left.artifactId === right.artifactId &&\n left.name === right.name &&\n left.description === right.description &&\n left.metadata === right.metadata &&\n areArtifactPartsEqual(left.parts, right.parts)\n );\n}\n\nfunction areStatusMessagePartsEqual(\n left: NonNullable<Task['status']['message']>['parts'],\n right: NonNullable<Task['status']['message']>['parts'],\n) {\n return left === right || isDeepStrictEqual(left, right);\n}\n\nfunction areStatusMessagesEqual(left: Task['status']['message'], right: Task['status']['message']) {\n if (left === right) {\n return true;\n }\n\n if (!left || !right) {\n return left === right;\n }\n\n return (\n left.messageId === right.messageId &&\n left.kind === right.kind &&\n left.role === right.role &&\n left.contextId === right.contextId &&\n left.taskId === right.taskId &&\n isDeepStrictEqual(left.referenceTaskIds, right.referenceTaskIds) &&\n isDeepStrictEqual(left.extensions, right.extensions) &&\n isDeepStrictEqual(left.metadata, right.metadata) &&\n areStatusMessagePartsEqual(left.parts, right.parts)\n );\n}\n\nfunction didTaskStatusChange(previous: Task, next: Task) {\n return (\n previous.status.state !== next.status.state ||\n previous.status.timestamp !== next.status.timestamp ||\n !areStatusMessagesEqual(previous.status.message, next.status.message)\n );\n}\n\nfunction getTaskArtifactUpdates({ previous, next }: { previous: Task; next: Task }) {\n const previousArtifacts = new Map((previous.artifacts ?? []).map(artifact => [artifactIdentity(artifact), artifact]));\n const changedArtifacts = (next.artifacts ?? []).filter(artifact => {\n const priorArtifact = previousArtifacts.get(artifactIdentity(artifact));\n return !priorArtifact || !areArtifactsEqual(priorArtifact, artifact);\n });\n\n return changedArtifacts.map((artifact, index) => ({\n kind: 'artifact-update' as const,\n taskId: next.id,\n contextId: next.contextId,\n lastChunk: isTerminalTaskState(next.status.state) && index === changedArtifacts.length - 1,\n artifact: structuredClone(artifact),\n }));\n}\n\nasync function executeMessageSend({\n requestId,\n message,\n metadata,\n currentData,\n taskStore,\n pushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n}: {\n requestId: number | string;\n message: MessageSendParams['message'];\n metadata: MessageSendParams['metadata'];\n currentData: Task;\n taskStore: InMemoryTaskStore;\n pushNotificationSender: DefaultPushNotificationSender;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n requestContext: RequestContext;\n}) {\n const { contextId } = message;\n\n try {\n // Pass contextId as threadId for memory persistence across A2A conversations\n // Allow user to pass resourceId via metadata, fall back to agentId\n const resourceId = (metadata?.resourceId as string) ?? (message.metadata?.resourceId as string) ?? agentId;\n const result = await agent.generate([convertToCoreMessage(message)], {\n runId: currentData.id,\n requestContext,\n ...(contextId ? { threadId: contextId, resourceId } : {}),\n });\n\n const latestTask = await taskStore.load({ agentId, taskId: currentData.id });\n if (latestTask?.status.state === 'canceled') {\n return createSuccessResponse(requestId, latestTask);\n }\n currentData = latestTask ?? currentData;\n\n const artifactUpdate = createArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n text: result.text,\n data: result.object as Record<string, unknown> | undefined,\n });\n\n if (artifactUpdate) {\n currentData = applyUpdateToTask(currentData, artifactUpdate);\n }\n\n const previousTask = currentData;\n currentData = applyUpdateToTask(currentData, {\n state: 'completed',\n message: undefined,\n });\n\n // Store execution details in task metadata\n currentData.metadata = {\n ...currentData.metadata,\n execution: {\n toolCalls: result.toolCalls,\n toolResults: result.toolResults,\n usage: result.usage,\n finishReason: result.finishReason,\n },\n };\n\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n } catch (handlerError) {\n const latestTask = await taskStore.load({ agentId, taskId: currentData.id });\n if (latestTask?.status.state === 'canceled') {\n return createSuccessResponse(requestId, latestTask);\n }\n currentData = latestTask ?? currentData;\n\n // If handler throws, apply 'failed' status, save, and rethrow\n const failureStatusUpdate: Omit<TaskStatus, 'timestamp'> = {\n state: 'failed',\n message: {\n messageId: crypto.randomUUID(),\n role: 'agent',\n parts: [\n {\n kind: 'text',\n text: `Handler failed: ${handlerError instanceof Error ? handlerError.message : String(handlerError)}`,\n },\n ],\n kind: 'message',\n },\n };\n const previousTask = currentData;\n currentData = applyUpdateToTask(currentData, failureStatusUpdate);\n\n try {\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n } catch (saveError) {\n // @ts-expect-error saveError is an unknown error\n logger?.error(`Failed to save task ${currentData.id} after handler error:`, saveError?.message);\n }\n\n return normalizeError(handlerError, requestId, currentData.id, logger); // Rethrow original error\n }\n\n // The loop finished, send the final task state\n return createSuccessResponse(requestId, currentData);\n}\n\nexport async function handleMessageSend({\n requestId,\n params,\n taskStore,\n pushNotificationStore,\n pushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n}: {\n requestId: number | string;\n params: MessageSendParams;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n requestContext: RequestContext;\n}) {\n validateMessageSendParams(params);\n\n const { message, metadata } = params;\n const { contextId } = message;\n const taskId = message.taskId || crypto.randomUUID();\n const existingTask = await taskStore.load({ agentId, taskId });\n if (params.configuration?.blocking === false && existingTask?.status.state === 'working') {\n return createSuccessResponse(requestId, existingTask);\n }\n const {\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n } = resolvePushNotificationPair({\n pushNotificationStore,\n pushNotificationSender,\n });\n\n let currentData = await loadOrCreateTask({\n taskId,\n taskStore,\n agentId,\n message,\n contextId,\n metadata,\n });\n\n if (params.configuration?.pushNotificationConfig) {\n resolvedPushNotificationStore.set({\n agentId,\n config: createTaskPushNotificationConfig(taskId, params.configuration.pushNotificationConfig),\n });\n }\n\n currentData = applyUpdateToTask(currentData, {\n state: 'working',\n message: {\n messageId: crypto.randomUUID(),\n kind: 'message',\n role: 'agent',\n parts: [{ kind: 'text', text: 'Generating response...' }],\n },\n });\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n\n const execution = executeMessageSend({\n requestId,\n message,\n metadata,\n currentData,\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n });\n\n if (params.configuration?.blocking === false) {\n void execution.catch(error => {\n logger?.error(`Unexpected background failure for A2A task ${currentData.id}`, error);\n });\n return createSuccessResponse(requestId, currentData);\n }\n\n return execution;\n}\n\nexport async function handleTaskGet({\n requestId,\n taskStore,\n agentId,\n taskId,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n}) {\n const task = await taskStore.load({ agentId, taskId });\n\n if (!task) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n return createSuccessResponse(requestId, task);\n}\n\nasync function loadTaskOrThrow({\n taskStore,\n agentId,\n taskId,\n}: {\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n}) {\n const task = await taskStore.load({ agentId, taskId });\n\n if (!task) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n return task;\n}\n\nexport async function handleSetTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore,\n agentId,\n params,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n agentId: string;\n params: TaskPushNotificationConfig;\n}) {\n await loadTaskOrThrow({\n taskStore,\n agentId,\n taskId: params.taskId,\n });\n\n const { pushNotificationStore: resolvedPushNotificationStore } = resolvePushNotificationPair({\n pushNotificationStore,\n });\n const config = resolvedPushNotificationStore.set({\n agentId,\n config: createTaskPushNotificationConfig(params.taskId, params.pushNotificationConfig),\n });\n\n return createSuccessResponse(requestId, config);\n}\n\nexport async function handleGetTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore,\n agentId,\n params,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n agentId: string;\n params: GetTaskPushNotificationConfigParams;\n}) {\n await loadTaskOrThrow({\n taskStore,\n agentId,\n taskId: params.id,\n });\n\n const { pushNotificationStore: resolvedPushNotificationStore } = resolvePushNotificationPair({\n pushNotificationStore,\n });\n const config = resolvedPushNotificationStore.get({\n agentId,\n params,\n });\n\n if (!config) {\n throw MastraA2AError.invalidParams(\n `Push notification config not found: ${params.pushNotificationConfigId ?? params.id}`,\n );\n }\n\n return createSuccessResponse(requestId, config);\n}\n\nexport async function handleListTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore,\n agentId,\n params,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n agentId: string;\n params: ListTaskPushNotificationConfigParams;\n}) {\n await loadTaskOrThrow({\n taskStore,\n agentId,\n taskId: params.id,\n });\n\n const { pushNotificationStore: resolvedPushNotificationStore } = resolvePushNotificationPair({\n pushNotificationStore,\n });\n const configs = resolvedPushNotificationStore.list({\n agentId,\n params,\n });\n\n return createSuccessResponse(requestId, configs);\n}\n\nexport async function handleDeleteTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore,\n agentId,\n params,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n agentId: string;\n params: DeleteTaskPushNotificationConfigParams;\n}) {\n await loadTaskOrThrow({\n taskStore,\n agentId,\n taskId: params.id,\n });\n\n const { pushNotificationStore: resolvedPushNotificationStore } = resolvePushNotificationPair({\n pushNotificationStore,\n });\n const deleted = resolvedPushNotificationStore.delete({\n agentId,\n params,\n });\n\n if (!deleted) {\n throw MastraA2AError.invalidParams(`Push notification config not found: ${params.pushNotificationConfigId}`);\n }\n\n return createSuccessResponse(requestId, null);\n}\n\nexport async function* handleMessageStream({\n requestId,\n params,\n taskStore,\n pushNotificationStore,\n pushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n}: {\n requestId: number | string;\n params: MessageSendParams;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n requestContext: RequestContext;\n}) {\n validateMessageSendParams(params);\n\n const { message, metadata } = params;\n const { contextId } = message;\n const taskId = message.taskId || crypto.randomUUID();\n const {\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n } = resolvePushNotificationPair({\n pushNotificationStore,\n pushNotificationSender,\n });\n\n let currentData = await loadOrCreateTask({\n taskId,\n taskStore,\n agentId,\n message,\n contextId,\n metadata,\n });\n\n if (params.configuration?.pushNotificationConfig) {\n resolvedPushNotificationStore.set({\n agentId,\n config: createTaskPushNotificationConfig(taskId, params.configuration.pushNotificationConfig),\n });\n }\n\n currentData = applyUpdateToTask(currentData, {\n state: 'working',\n message: {\n messageId: crypto.randomUUID(),\n kind: 'message',\n role: 'agent',\n parts: [{ kind: 'text', text: 'Generating response...' }],\n },\n });\n\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n\n yield createSuccessResponse(requestId, currentData);\n\n try {\n const resourceId = (metadata?.resourceId as string) ?? (message.metadata?.resourceId as string) ?? agentId;\n const result = await agent.stream([convertToCoreMessage(message)], {\n runId: taskId,\n requestContext,\n ...(contextId ? { threadId: contextId, resourceId } : {}),\n });\n let sawTextArtifact = false;\n let pendingTextChunk: string | undefined;\n let structuredData: Record<string, unknown> | undefined;\n\n for await (const chunk of result.fullStream) {\n const textDelta = extractFullStreamTextDelta(chunk);\n if (textDelta !== null) {\n if (!pendingTextChunk) {\n pendingTextChunk = textDelta;\n continue;\n }\n\n const textUpdate = createTextChunkArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n text: pendingTextChunk,\n append: sawTextArtifact,\n lastChunk: false,\n });\n\n currentData = applyUpdateToTask(currentData, textUpdate);\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n yield createSuccessResponse(requestId, textUpdate);\n\n sawTextArtifact = true;\n pendingTextChunk = textDelta;\n continue;\n }\n\n const finalStructuredObject = extractFinalStructuredObject(chunk);\n if (finalStructuredObject) {\n structuredData = finalStructuredObject;\n }\n }\n\n structuredData ??= (await result.object) as Record<string, unknown> | undefined;\n\n if (!pendingTextChunk && !sawTextArtifact) {\n const finalText = await result.text;\n if (finalText) {\n pendingTextChunk = finalText;\n }\n }\n\n if (pendingTextChunk) {\n const textUpdate = createTextChunkArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n text: pendingTextChunk,\n append: sawTextArtifact,\n lastChunk: !structuredData,\n });\n\n currentData = applyUpdateToTask(currentData, textUpdate);\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n yield createSuccessResponse(requestId, textUpdate);\n\n sawTextArtifact = true;\n pendingTextChunk = undefined;\n }\n\n if (structuredData) {\n const dataUpdate = createDataArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n data: structuredData,\n lastChunk: true,\n });\n\n currentData = applyUpdateToTask(currentData, dataUpdate);\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n yield createSuccessResponse(requestId, dataUpdate);\n }\n\n const previousTask = currentData;\n const completedTask = applyUpdateToTask(currentData, {\n state: 'completed',\n message: undefined,\n });\n\n completedTask.metadata = {\n ...completedTask.metadata,\n execution: {\n toolCalls: await result.toolCalls,\n toolResults: await result.toolResults,\n usage: await result.usage,\n finishReason: await result.finishReason,\n },\n };\n\n currentData = completedTask;\n\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n } catch (handlerError) {\n const previousTask = currentData;\n currentData = applyUpdateToTask(currentData, {\n state: 'failed',\n message: {\n messageId: crypto.randomUUID(),\n role: 'agent',\n parts: [\n {\n kind: 'text',\n text: `Handler failed: ${handlerError instanceof Error ? handlerError.message : String(handlerError)}`,\n },\n ],\n kind: 'message',\n },\n });\n\n try {\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n } catch (saveError) {\n // @ts-expect-error saveError is an unknown error\n logger?.error(`Failed to save task ${currentData.id} after handler error:`, saveError?.message);\n }\n }\n\n yield createSuccessResponse(requestId, {\n kind: 'status-update',\n taskId: currentData.id,\n contextId: currentData.contextId,\n status: currentData.status,\n final: true,\n });\n}\n\nexport async function* handleTaskResubscribe({\n requestId,\n taskStore,\n agentId,\n taskId,\n abortSignal,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n abortSignal?: AbortSignal;\n}) {\n let snapshot = taskStore.loadWithVersion({ agentId, taskId });\n\n if (!snapshot) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n yield createSuccessResponse(requestId, snapshot.task);\n\n if (isTerminalTaskState(snapshot.task.status.state)) {\n return;\n }\n\n while (true) {\n const { task, version } = snapshot;\n const nextUpdate = await taskStore.waitForNextUpdate({\n agentId,\n taskId,\n afterVersion: version,\n signal: abortSignal,\n });\n\n for (const artifactUpdate of getTaskArtifactUpdates({ previous: task, next: nextUpdate.task })) {\n yield createSuccessResponse(requestId, artifactUpdate);\n }\n\n if (didTaskStatusChange(task, nextUpdate.task)) {\n yield createSuccessResponse(requestId, {\n kind: 'status-update',\n taskId: nextUpdate.task.id,\n contextId: nextUpdate.task.contextId,\n status: nextUpdate.task.status,\n final: isTerminalTaskState(nextUpdate.task.status.state),\n });\n }\n\n if (isTerminalTaskState(nextUpdate.task.status.state)) {\n return;\n }\n\n snapshot = nextUpdate;\n }\n}\n\nfunction getTaskIdFromParams(\n params: MessageSendParams | TaskQueryParams | TaskIdParams | Record<string, unknown> | undefined,\n) {\n if (!params || typeof params !== 'object') {\n return undefined;\n }\n\n if ('id' in params && typeof params.id === 'string') {\n return params.id;\n }\n\n if ('taskId' in params && typeof params.taskId === 'string') {\n return params.taskId;\n }\n\n if ('message' in params && params.message && typeof params.message === 'object' && 'taskId' in params.message) {\n return typeof params.message.taskId === 'string' ? params.message.taskId : undefined;\n }\n\n return undefined;\n}\n\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return !!value && typeof value === 'object' && Symbol.asyncIterator in value;\n}\n\nfunction createA2AJsonResponse(payload: unknown): Response {\n return Response.json(payload);\n}\n\nfunction createA2ASSEResponse(payload: AsyncIterable<unknown> | unknown): Response {\n const encoder = new TextEncoder();\n const iterable = isAsyncIterable(payload)\n ? payload\n : (async function* () {\n yield payload;\n })();\n\n const stream = new ReadableStream<Uint8Array>({\n async start(controller) {\n try {\n for await (const chunk of iterable) {\n controller.enqueue(encoder.encode(`data: ${JSON.stringify(chunk)}\\n\\n`));\n }\n } catch (error) {\n controller.error(error);\n return;\n }\n\n controller.close();\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream; charset=utf-8',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n 'X-Accel-Buffering': 'no',\n },\n });\n}\n\nexport async function handleTaskCancel({\n requestId,\n taskStore,\n pushNotificationSender,\n agentId,\n taskId,\n logger,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n agentId: string;\n taskId: string;\n logger?: IMastraLogger;\n}) {\n // Load task and history\n let data = await taskStore.load({\n agentId,\n taskId,\n });\n\n if (!data) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n // Check if cancelable (not already in a final state)\n const finalStates: TaskState[] = ['completed', 'failed', 'canceled'];\n\n if (finalStates.includes(data.status.state)) {\n logger?.info(`Task ${taskId} already in final state ${data.status.state}, cannot cancel.`);\n return createSuccessResponse(requestId, data);\n }\n\n // Signal cancellation\n taskStore.activeCancellations.add(taskId);\n\n // Apply 'canceled' state update\n const cancelUpdate: Omit<TaskStatus, 'timestamp'> = {\n state: 'canceled',\n message: {\n role: 'agent',\n parts: [{ kind: 'text', text: 'Task cancelled by request.' }],\n kind: 'message',\n messageId: crypto.randomUUID(),\n },\n };\n\n const previousTask = data;\n data = applyUpdateToTask(data, cancelUpdate);\n\n // Save the updated state\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvePushNotificationPair({ pushNotificationSender }).pushNotificationSender,\n previousTask,\n nextTask: data,\n agentId,\n logger,\n });\n\n // Remove from active cancellations *after* saving\n taskStore.activeCancellations.delete(taskId);\n\n // Return the updated task object\n return createSuccessResponse(requestId, data);\n}\n\nexport async function getAgentExecutionHandler({\n requestId,\n mastra,\n agentId,\n requestContext,\n method,\n params,\n taskStore,\n pushNotificationStore,\n pushNotificationSender,\n logger,\n abortSignal,\n}: Context & {\n requestId: number | string;\n requestContext: RequestContext;\n agentId: string;\n method:\n | 'message/send'\n | 'message/stream'\n | 'tasks/get'\n | 'tasks/cancel'\n | 'tasks/resubscribe'\n | 'tasks/pushNotificationConfig/set'\n | 'tasks/pushNotificationConfig/get'\n | 'tasks/pushNotificationConfig/list'\n | 'tasks/pushNotificationConfig/delete'\n | 'agent/getAuthenticatedExtendedCard';\n params?: MessageSendParams | TaskQueryParams | TaskIdParams | Record<string, unknown>;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n logger?: IMastraLogger;\n abortSignal?: AbortSignal;\n}): Promise<any> {\n const agent = await getAgentFromSystem({ mastra, agentId });\n const {\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n } = resolvePushNotificationPair({\n pushNotificationStore,\n pushNotificationSender,\n });\n\n let taskId: string | undefined; // For error context\n\n try {\n taskId = getTaskIdFromParams(params);\n\n // 2. Route based on method\n switch (method) {\n case 'message/send': {\n const result = await handleMessageSend({\n requestId,\n params: params as MessageSendParams,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n });\n return result;\n }\n case 'message/stream': {\n const result = await handleMessageStream({\n requestId,\n taskStore,\n params: params as MessageSendParams,\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n });\n return result;\n }\n\n case 'tasks/get': {\n const result = await handleTaskGet({\n requestId,\n taskStore,\n agentId,\n taskId: taskId || 'No task ID provided',\n });\n\n return result;\n }\n case 'tasks/cancel': {\n const result = await handleTaskCancel({\n requestId,\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n agentId,\n taskId: taskId || 'No task ID provided',\n logger,\n });\n\n return result;\n }\n case 'tasks/resubscribe':\n return await handleTaskResubscribe({\n requestId,\n taskStore,\n agentId,\n taskId: taskId || 'No task ID provided',\n abortSignal,\n });\n case 'tasks/pushNotificationConfig/set':\n return await handleSetTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n agentId,\n params: params as unknown as TaskPushNotificationConfig,\n });\n case 'tasks/pushNotificationConfig/get':\n return await handleGetTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n agentId,\n params: params as GetTaskPushNotificationConfigParams,\n });\n case 'tasks/pushNotificationConfig/list':\n return await handleListTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n agentId,\n params: params as ListTaskPushNotificationConfigParams,\n });\n case 'tasks/pushNotificationConfig/delete':\n return await handleDeleteTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n agentId,\n params: params as DeleteTaskPushNotificationConfigParams,\n });\n case 'agent/getAuthenticatedExtendedCard':\n throw MastraA2AError.extendedAgentCardNotConfigured();\n default:\n throw MastraA2AError.methodNotFound(method);\n }\n } catch (error) {\n if (error instanceof MastraA2AError && taskId && !error.taskId) {\n error.taskId = taskId; // Add task ID context if missing\n }\n\n return normalizeError(error, requestId, taskId, logger);\n }\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const GET_AGENT_CARD_ROUTE = createRoute({\n method: 'GET',\n path: '/.well-known/:agentId/agent-card.json',\n responseType: 'json',\n pathParamSchema: a2aAgentIdPathParams,\n responseSchema: agentCardResponseSchema,\n summary: 'Get agent card',\n description: 'Returns the agent card information for A2A protocol discovery',\n tags: ['Agent-to-Agent'],\n requiresAuth: true,\n handler: async ctx => {\n const executionUrl = getA2AExecutionUrl({\n agentId: ctx.agentId as string,\n request: (ctx as typeof ctx & { request?: Request }).request,\n routePrefix: ctx.routePrefix,\n });\n\n return getAgentCardByIdHandler({\n mastra: ctx.mastra,\n requestContext: ctx.requestContext,\n agentId: ctx.agentId,\n executionUrl,\n pushNotifications: true,\n });\n },\n});\n\nexport const AGENT_EXECUTION_ROUTE = createRoute({\n method: 'POST',\n path: '/a2a/:agentId',\n responseType: 'datastream-response',\n pathParamSchema: a2aAgentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: agentExecutionResponseSchema,\n summary: 'Execute agent',\n description: 'Executes an agent action via JSON-RPC 2.0 over A2A protocol',\n tags: ['Agent-to-Agent'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, requestContext, taskStore, abortSignal, ...bodyParams }) => {\n const { id: requestId, method } = bodyParams;\n const params = 'params' in bodyParams ? bodyParams.params : undefined;\n const result = await getAgentExecutionHandler({\n requestId,\n mastra,\n agentId: agentId as string,\n requestContext,\n method,\n params,\n taskStore: taskStore!,\n abortSignal,\n });\n\n if (method === 'message/stream' || method === 'tasks/resubscribe') {\n return createA2ASSEResponse(result);\n }\n\n return createA2AJsonResponse(result);\n },\n});\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"datasets-Cvix7Rms.cjs","names":["z","paginationInfoSchema"],"sources":["../src/server/schemas/datasets.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { paginationInfoSchema } from './common';\n\n// ============================================================================\n// JSON Schema Types (for inputSchema/groundTruthSchema fields)\n// ============================================================================\n\n// JSON Schema type (simplified for storage - full spec too complex)\nconst jsonSchemaObject: z.ZodType<Record<string, unknown>> = z.lazy(() => z.record(z.string(), z.unknown()));\n\n// JSON Schema field (object or null to disable)\nconst jsonSchemaField = z.union([jsonSchemaObject, z.null()]).optional();\n\n// ============================================================================\n// Trajectory Expectation Schema (2 levels deep, children at level 2 use z.unknown())\n// ============================================================================\n\n// Shared base fields for expected steps (level 2 — children typed as z.unknown())\nconst expectedStepBase = {\n name: z.string().describe('Step name to match'),\n durationMs: z.number().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n children: z.unknown().optional().describe('Nested trajectory expectation (untyped at this depth)'),\n};\n\n// Typed step variants keyed by stepType\nconst expectedToolCallStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('tool_call'),\n toolArgs: z.record(z.string(), z.unknown()).optional(),\n toolResult: z.record(z.string(), z.unknown()).optional(),\n success: z.boolean().optional(),\n});\n\nconst expectedMcpToolCallStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('mcp_tool_call'),\n toolArgs: z.record(z.string(), z.unknown()).optional(),\n toolResult: z.record(z.string(), z.unknown()).optional(),\n mcpServer: z.string().optional(),\n success: z.boolean().optional(),\n});\n\nconst expectedModelGenerationStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('model_generation'),\n modelId: z.string().optional(),\n promptTokens: z.number().optional(),\n completionTokens: z.number().optional(),\n finishReason: z.string().optional(),\n});\n\nconst expectedAgentRunStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('agent_run'),\n agentId: z.string().optional(),\n});\n\nconst expectedWorkflowStepStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_step'),\n stepId: z.string().optional(),\n status: z.string().optional(),\n output: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst expectedWorkflowRunStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_run'),\n workflowId: z.string().optional(),\n status: z.string().optional(),\n});\n\nconst expectedWorkflowConditionalStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_conditional'),\n conditionCount: z.number().optional(),\n selectedSteps: z.array(z.string()).optional(),\n});\n\nconst expectedWorkflowParallelStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_parallel'),\n branchCount: z.number().optional(),\n parallelSteps: z.array(z.string()).optional(),\n});\n\nconst expectedWorkflowLoopStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_loop'),\n loopType: z.string().optional(),\n totalIterations: z.number().optional(),\n});\n\nconst expectedWorkflowSleepStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_sleep'),\n sleepDurationMs: z.number().optional(),\n sleepType: z.string().optional(),\n});\n\nconst expectedWorkflowWaitEventStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_wait_event'),\n eventName: z.string().optional(),\n eventReceived: z.boolean().optional(),\n});\n\nconst expectedProcessorRunStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('processor_run'),\n processorId: z.string().optional(),\n});\n\n// Generic step (no stepType — matches by name only)\nconst expectedGenericStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.undefined().optional(),\n});\n\n// Union of all expected step types\nconst expectedStepSchema = z.union([\n z.discriminatedUnion('stepType', [\n expectedToolCallStepSchema,\n expectedMcpToolCallStepSchema,\n expectedModelGenerationStepSchema,\n expectedAgentRunStepSchema,\n expectedWorkflowStepStepSchema,\n expectedWorkflowRunStepSchema,\n expectedWorkflowConditionalStepSchema,\n expectedWorkflowParallelStepSchema,\n expectedWorkflowLoopStepSchema,\n expectedWorkflowSleepStepSchema,\n expectedWorkflowWaitEventStepSchema,\n expectedProcessorRunStepSchema,\n ]),\n expectedGenericStepSchema,\n]);\n\n// Full TrajectoryExpectation schema\nconst trajectoryExpectationSchema = z\n .object({\n // Accuracy\n steps: z.array(expectedStepSchema).optional().describe('Expected steps for accuracy checking'),\n ordering: z\n .enum(['strict', 'relaxed', 'unordered'])\n .optional()\n .describe('How to compare step ordering (default: relaxed)'),\n allowRepeatedSteps: z.boolean().optional().describe('Whether to allow repeated steps (default: true)'),\n\n // Efficiency\n maxSteps: z.number().int().optional().describe('Maximum number of steps allowed'),\n maxTotalTokens: z.number().int().optional().describe('Maximum total tokens across all model_generation steps'),\n maxTotalDurationMs: z.number().optional().describe('Maximum total duration in milliseconds'),\n noRedundantCalls: z\n .boolean()\n .optional()\n .describe('Whether to penalize redundant calls (same tool + same args consecutively, default: true)'),\n\n // Blacklist\n blacklistedTools: z.array(z.string()).optional().describe('Tool names that should never appear'),\n blacklistedSequences: z\n .array(z.array(z.string()))\n .optional()\n .describe('Tool name sequences that should never appear'),\n\n // Tool failure tolerance\n maxRetriesPerTool: z.number().int().optional().describe('Maximum retries per tool before penalizing (default: 2)'),\n })\n .optional()\n .nullable()\n .describe('Expected trajectory configuration for trajectory scoring');\n\n// Dataset item source tracking\nconst datasetItemSourceSchema = z\n .object({\n type: z\n .enum(['csv', 'json', 'trace', 'llm', 'experiment-result', 'candidate-screener'])\n .describe('How this item was created'),\n referenceId: z.string().optional().describe('Reference identifier (e.g., trace id, csv filename)'),\n })\n .optional()\n .describe('Source/provenance of this dataset item');\n\n// Item-level static tool mocks (agent targets only).\nconst itemToolMockSchema = z.object({\n toolName: z.string().describe('Name of the tool this mock applies to'),\n args: z.record(z.string(), z.unknown()).describe('Arguments to match against the tool call'),\n output: z.unknown().describe('Output served to the agent when matched'),\n matchArgs: z\n .enum(['strict', 'ignore'])\n .optional()\n .describe(\"Argument matching mode. 'strict' (default) deep-equals args; 'ignore' matches on toolName only\"),\n});\n\nconst toolMocksSchema = z\n .array(itemToolMockSchema)\n .optional()\n .describe('Ordered item-level static tool mocks served in place of executing the real tool');\n\nconst unmockedToolPolicySchema = z\n .enum(['allow', 'deny'])\n .optional()\n .describe(\"Policy for undeclared tool calls. 'allow' runs them live; 'deny' fails the experiment item\");\n\n// Diagnostic receipt for item-level tool mocks, persisted on experiment results.\nconst toolMockReportSchema = z\n .object({\n served: z.array(z.object({ mockIndex: z.number().int(), toolName: z.string(), args: z.unknown() })),\n unconsumed: z.array(z.object({ mockIndex: z.number().int(), toolName: z.string(), args: z.unknown() })),\n liveCalls: z.array(z.object({ toolName: z.string(), args: z.unknown() })),\n failure: z\n .object({\n code: z.enum(['TOOL_MOCK_MISMATCH', 'TOOL_MOCK_EXHAUSTED', 'TOOL_MOCK_NOT_DECLARED']),\n toolName: z.string(),\n args: z.unknown(),\n })\n .optional(),\n })\n .optional()\n .describe('Diagnostic receipt for item-level tool mocks');\n\n// ============================================================================\n// Path Parameter Schemas\n// ============================================================================\n\nexport const datasetIdPathParams = z.object({\n datasetId: z.string().describe('Unique identifier for the dataset'),\n});\n\nexport const experimentIdPathParams = z.object({\n experimentId: z.string().describe('Unique identifier for the experiment'),\n});\n\nexport const itemIdPathParams = z.object({\n itemId: z.string().describe('Unique identifier for the dataset item'),\n});\n\nexport const datasetAndExperimentIdPathParams = z.object({\n datasetId: z.string().describe('Unique identifier for the dataset'),\n experimentId: z.string().describe('Unique identifier for the experiment'),\n});\n\nexport const experimentResultIdPathParams = z.object({\n datasetId: z.string().describe('Unique identifier for the dataset'),\n experimentId: z.string().describe('Unique identifier for the experiment'),\n resultId: z.string().describe('Unique identifier for the experiment result'),\n});\n\nexport const datasetAndItemIdPathParams = z.object({\n datasetId: z.string().describe('Unique identifier for the dataset'),\n itemId: z.string().describe('Unique identifier for the dataset item'),\n});\n\n// ============================================================================\n// Query Parameter Schemas\n// ============================================================================\n\nexport const paginationQuerySchema = z.object({\n page: z.coerce.number().optional().default(0),\n perPage: z.coerce.number().optional().default(10),\n});\n\nexport const tenancyQuerySchema = z.object({\n organizationId: z.string().optional().describe('Restrict lookup to the given organization'),\n projectId: z.string().optional().describe('Restrict lookup to the given project'),\n});\n\nexport const listItemsQuerySchema = z.object({\n page: z.coerce.number().optional().default(0),\n perPage: z.coerce.number().optional().default(10),\n version: z.coerce.number().int().optional(), // Optional version filter for snapshot semantics\n search: z.string().optional(),\n});\n\n// ============================================================================\n// Request Body Schemas\n// ============================================================================\n\nexport const createDatasetBodySchema = z.object({\n name: z.string().describe('Name of the dataset'),\n description: z.string().optional().describe('Description of the dataset'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata'),\n inputSchema: jsonSchemaField.describe('JSON Schema for validating item input'),\n groundTruthSchema: jsonSchemaField.describe('JSON Schema for validating item groundTruth'),\n requestContextSchema: jsonSchemaField.describe('JSON Schema describing expected request context shape'),\n targetType: z.string().optional().describe('Target entity type (e.g. agent, workflow, scorer)'),\n targetIds: z.array(z.string()).optional().describe('IDs of target entities this dataset is attached to'),\n scorerIds: z.array(z.string()).optional().describe('IDs of scorers attached to this dataset'),\n});\n\nexport const updateDatasetBodySchema = z.object({\n name: z.string().optional().describe('Name of the dataset'),\n description: z.string().optional().describe('Description of the dataset'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata'),\n inputSchema: jsonSchemaField.describe('JSON Schema for validating item input'),\n groundTruthSchema: jsonSchemaField.describe('JSON Schema for validating item groundTruth'),\n requestContextSchema: jsonSchemaField.describe('JSON Schema describing expected request context shape'),\n tags: z.array(z.string()).optional().describe('Tag definitions for categorizing experiment results'),\n targetType: z.string().optional().describe('Target entity type (e.g. agent, workflow, scorer)'),\n targetIds: z.array(z.string()).optional().describe('IDs of target entities this dataset is attached to'),\n scorerIds: z.array(z.string()).optional().nullable().describe('IDs of scorers attached to this dataset'),\n});\n\nexport const addItemBodySchema = z.object({\n externalId: z.string().optional().nullable().describe('Caller-defined, dataset-local item identity'),\n input: z.unknown().describe('Input data for the dataset item'),\n groundTruth: z.unknown().optional().describe('Expected output for comparison'),\n expectedTrajectory: trajectoryExpectationSchema,\n toolMocks: toolMocksSchema,\n unmockedToolPolicy: unmockedToolPolicySchema,\n scorerIds: z.array(z.string()).optional().describe('IDs of scorers selected for this item'),\n requestContext: z.record(z.string(), z.unknown()).optional().describe('Request context preset for this item'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata'),\n source: datasetItemSourceSchema,\n});\n\nexport const updateItemBodySchema = z.object({\n input: z.unknown().optional().describe('Input data for the dataset item'),\n groundTruth: z.unknown().optional().describe('Expected output for comparison'),\n expectedTrajectory: trajectoryExpectationSchema,\n toolMocks: toolMocksSchema,\n unmockedToolPolicy: unmockedToolPolicySchema,\n scorerIds: z.array(z.string()).optional().nullable().describe('IDs of scorers selected for this item'),\n requestContext: z.record(z.string(), z.unknown()).optional().describe('Request context preset for this item'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata'),\n source: datasetItemSourceSchema,\n});\n\nexport const triggerExperimentBodySchema = z.object({\n targetType: z.enum(['agent', 'workflow', 'scorer']).describe('Type of target to run against'),\n targetId: z.string().describe('ID of the target'),\n scorerIds: z.array(z.string()).optional().describe('IDs of scorers to apply'),\n version: z.coerce.number().int().optional().describe('Pin to specific dataset version'),\n agentVersion: z.string().optional().describe('Agent version ID to use for experiment'),\n maxConcurrency: z.number().optional().describe('Maximum concurrent executions'),\n requestContext: z.record(z.string(), z.unknown()).optional().describe('Global request context passed to the target'),\n versions: z\n .object({\n agents: z\n .record(\n z.string(),\n z.union([z.object({ versionId: z.string() }), z.object({ status: z.enum(['draft', 'published']) })]),\n )\n .optional(),\n defaultStatus: z.enum(['draft', 'published']).optional(),\n })\n .optional()\n .describe('Version overrides for sub-agent delegation during experiment execution'),\n});\n\nexport const compareExperimentsBodySchema = z.object({\n experimentIdA: z.string().describe('ID of baseline experiment'),\n experimentIdB: z.string().describe('ID of candidate experiment'),\n});\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\n// Dataset entity schema\nexport const datasetResponseSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional().nullable(),\n metadata: z.record(z.string(), z.unknown()).optional().nullable(),\n inputSchema: z.record(z.string(), z.unknown()).optional(),\n groundTruthSchema: z.record(z.string(), z.unknown()).optional(),\n requestContextSchema: z.record(z.string(), z.unknown()).optional(),\n tags: z.array(z.string()).optional().nullable(),\n targetType: z.string().optional().nullable(),\n targetIds: z.array(z.string()).optional().nullable(),\n scorerIds: z.array(z.string()).optional().nullable(),\n version: z.number().int(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\n\n// Dataset item entity schema\nexport const datasetItemResponseSchema = z.object({\n id: z.string(),\n datasetId: z.string(),\n datasetVersion: z.number().int(),\n externalId: z.string().optional().nullable(),\n input: z.unknown(),\n groundTruth: z.unknown().optional(),\n expectedTrajectory: z.unknown().optional(),\n toolMocks: toolMocksSchema,\n unmockedToolPolicy: unmockedToolPolicySchema,\n scorerIds: z.array(z.string()).optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n source: datasetItemSourceSchema,\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\n\n// Experiment entity schema\nexport const experimentResponseSchema = z.object({\n id: z.string(),\n datasetId: z.string().nullable(),\n datasetVersion: z.number().int().nullable(),\n agentVersion: z.string().nullable().optional(),\n targetType: z.enum(['agent', 'workflow', 'scorer', 'processor']),\n targetId: z.string(),\n name: z.string().optional(),\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n status: z.enum(['pending', 'running', 'completed', 'failed']),\n totalItems: z.number(),\n succeededCount: z.number(),\n failedCount: z.number(),\n skippedCount: z.number(),\n startedAt: z.coerce.date().nullable(),\n completedAt: z.coerce.date().nullable(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\n\n// Scorer result schema\nexport const scorerResultSchema = z.object({\n scorerId: z.string(),\n scorerName: z.string(),\n score: z.number().nullable(),\n reason: z.string().nullable(),\n error: z.string().nullable(),\n});\n\n// Experiment result entity schema\nexport const experimentResultResponseSchema = z.object({\n id: z.string(),\n experimentId: z.string(),\n itemId: z.string(),\n itemDatasetVersion: z.number().int().nullable(),\n input: z.unknown(),\n output: z.unknown().nullable(),\n groundTruth: z.unknown().nullable(),\n expectedTrajectory: z.unknown().optional(),\n error: z\n .object({\n message: z.string(),\n stack: z.string().optional(),\n code: z.string().optional(),\n })\n .nullable(),\n startedAt: z.coerce.date(),\n completedAt: z.coerce.date(),\n retryCount: z.number(),\n traceId: z.string().nullable(),\n status: z.enum(['needs-review', 'reviewed', 'complete']).nullable().optional(),\n tags: z.array(z.string()).nullable().optional(),\n comment: z.string().nullable().optional(),\n toolMockReport: toolMockReportSchema.nullable(),\n createdAt: z.coerce.date(),\n});\n\nexport const updateExperimentResultBodySchema = z.object({\n status: z.enum(['needs-review', 'reviewed', 'complete']).nullable().optional(),\n tags: z.array(z.string()).optional(),\n comment: z.string().nullable().optional(),\n});\n\n// Comparison item schema (MVP shape)\nconst comparisonItemSchema = z.object({\n itemId: z.string(),\n input: z.unknown().nullable(),\n groundTruth: z.unknown().nullable(),\n results: z.record(\n z.string(),\n z\n .object({\n output: z.unknown().nullable(),\n scores: z.record(z.string(), z.number().nullable()),\n })\n .nullable(),\n ),\n});\n\n// Comparison result schema\nexport const comparisonResponseSchema = z.object({\n baselineId: z.string(),\n items: z.array(comparisonItemSchema),\n});\n\n// Experiment summary schema (returned by trigger experiment)\n// Note: completedAt is nullable for pending/running experiments (async trigger)\nexport const experimentSummaryResponseSchema = z.object({\n experimentId: z.string(),\n status: z.enum(['pending', 'running', 'completed', 'failed']),\n totalItems: z.number(),\n succeededCount: z.number(),\n failedCount: z.number(),\n startedAt: z.coerce.date(),\n completedAt: z.coerce.date().nullable(),\n results: z.array(\n z.object({\n itemId: z.string(),\n itemDatasetVersion: z.number().int().nullable(),\n input: z.unknown(),\n output: z.unknown().nullable(),\n groundTruth: z.unknown().nullable(),\n error: z.string().nullable(),\n startedAt: z.coerce.date(),\n completedAt: z.coerce.date(),\n retryCount: z.number(),\n toolMockReport: toolMockReportSchema.nullable(),\n scores: z.array(\n z.object({\n scorerId: z.string(),\n scorerName: z.string(),\n score: z.number().nullable(),\n reason: z.string().nullable(),\n error: z.string().nullable(),\n }),\n ),\n }),\n ),\n});\n\n// ============================================================================\n// List Response Schemas\n// ============================================================================\n\nexport const listDatasetsResponseSchema = z.object({\n datasets: z.array(datasetResponseSchema),\n pagination: paginationInfoSchema,\n});\n\nexport const listItemsResponseSchema = z.object({\n items: z.array(datasetItemResponseSchema),\n pagination: paginationInfoSchema,\n});\n\nexport const listExperimentsResponseSchema = z.object({\n experiments: z.array(experimentResponseSchema),\n pagination: paginationInfoSchema,\n});\n\nexport const listExperimentResultsResponseSchema = z.object({\n results: z.array(experimentResultResponseSchema),\n pagination: paginationInfoSchema,\n});\n\nexport const experimentReviewCountsSchema = z.object({\n experimentId: z.string(),\n total: z.number().int(),\n needsReview: z.number().int(),\n reviewed: z.number().int(),\n complete: z.number().int(),\n});\n\nexport const reviewSummaryResponseSchema = z.object({\n counts: z.array(experimentReviewCountsSchema),\n});\n\n// ============================================================================\n// Version Schemas\n// ============================================================================\n\n// Path params for item version routes\nexport const datasetItemVersionPathParams = z.object({\n datasetId: z.string().describe('Unique identifier for the dataset'),\n itemId: z.string().describe('Unique identifier for the dataset item'),\n datasetVersion: z.coerce.number().int().describe('Dataset version number'),\n});\n\n// Item history row response schema (SCD-2 DatasetItemRow shape)\nexport const itemVersionResponseSchema = z.object({\n id: z.string(),\n datasetId: z.string(),\n datasetVersion: z.number().int(),\n input: z.unknown(),\n groundTruth: z.unknown().optional(),\n expectedTrajectory: z.unknown().optional(),\n toolMocks: toolMocksSchema,\n unmockedToolPolicy: unmockedToolPolicySchema,\n scorerIds: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n validTo: z.number().int().nullable(),\n isDeleted: z.boolean(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\n\nexport const listItemVersionsResponseSchema = z.object({\n history: z.array(itemVersionResponseSchema),\n});\n\n// Dataset version response schema\nexport const datasetVersionResponseSchema = z.object({\n id: z.string(),\n datasetId: z.string(),\n version: z.number().int(),\n createdAt: z.coerce.date(),\n});\n\nexport const listDatasetVersionsResponseSchema = z.object({\n versions: z.array(datasetVersionResponseSchema),\n pagination: paginationInfoSchema,\n});\n\n// ============================================================================\n// Batch Operation Schemas\n// ============================================================================\n\nexport const batchInsertItemsBodySchema = z.object({\n items: z.array(\n z.object({\n externalId: z.string().optional().nullable(),\n input: z.unknown(),\n groundTruth: z.unknown().optional(),\n expectedTrajectory: trajectoryExpectationSchema,\n toolMocks: toolMocksSchema,\n unmockedToolPolicy: unmockedToolPolicySchema,\n scorerIds: z.array(z.string()).optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n source: datasetItemSourceSchema,\n }),\n ),\n});\n\nexport const batchInsertItemsResponseSchema = z.object({\n items: z.array(datasetItemResponseSchema),\n count: z.number(),\n});\n\nexport const batchDeleteItemsBodySchema = z.object({\n itemIds: z.array(z.string()),\n});\n\nexport const batchDeleteItemsResponseSchema = z.object({\n success: z.boolean(),\n deletedCount: z.number(),\n});\n\n// ============================================================================\n// AI Generation Schemas\n// ============================================================================\n\nexport const generateItemsBodySchema = z.object({\n modelId: z.string().describe('Model identifier in \"provider/model\" format (e.g., \"openai/gpt-4o\")'),\n prompt: z.string().describe('Description of the kind of test data to generate'),\n count: z.number().int().min(1).max(50).default(5).describe('Number of items to generate'),\n agentContext: z\n .object({\n description: z.string().optional(),\n instructions: z.string().optional(),\n tools: z.array(z.string()).optional(),\n })\n .optional()\n .describe('Context about the agent to generate relevant test data'),\n});\n\nconst generatedItemSchema = z.object({\n input: z.unknown(),\n groundTruth: z.unknown().optional(),\n});\n\nexport const generateItemsResponseSchema = z.object({\n items: z.array(generatedItemSchema),\n});\n\n// ============================================================================\n// Cluster Failures\n// ============================================================================\n\nexport const clusterFailuresBodySchema = z.object({\n modelId: z.string().describe('Model identifier in \"provider/model\" format (e.g., \"openai/gpt-4o\")'),\n items: z\n .array(\n z.object({\n id: z.string(),\n input: z.unknown(),\n output: z.unknown().optional(),\n error: z.string().optional(),\n scores: z.record(z.string(), z.number()).optional(),\n existingTags: z.array(z.string()).optional().describe('Tags already applied to this item'),\n }),\n )\n .min(1)\n .max(200)\n .describe('Failure items to cluster'),\n availableTags: z\n .array(z.string())\n .optional()\n .describe('Existing tag vocabulary from the dataset. The LLM should prefer reusing these tags when applicable.'),\n prompt: z\n .string()\n .optional()\n .describe('Optional user instructions to guide the analysis (e.g., \"focus on tool usage failures\")'),\n});\n\nconst failureClusterSchema = z.object({\n id: z.string().describe('A unique cluster identifier'),\n label: z.string().describe('Short label for this failure pattern'),\n description: z.string().describe('Description of the common pattern'),\n itemIds: z.array(z.string()).describe('IDs of items belonging to this cluster'),\n});\n\nexport const clusterFailuresResponseSchema = z.object({\n clusters: z.array(failureClusterSchema),\n /** Per-item proposed tag assignments. Each entry maps an item ID to the tags the LLM suggests adding. */\n proposedTags: z\n .array(\n z.object({\n itemId: z.string(),\n tags: z.array(z.string()),\n reason: z.string().describe('Brief explanation of why these tags were assigned to this item'),\n }),\n )\n .optional(),\n});\n"],"mappings":"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"}
|