{"version":3,"sources":["../../src/a2a/a2a-agent.ts"],"names":["convertMessages","content","MessageList","MastraA2AError","randomUUID","RequestContext"],"mappings":"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","file":"index.cjs","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport type { AgentCard, Message, Task, TaskArtifactUpdateEvent, TaskStatusUpdateEvent } from '@a2a-js/sdk';\nimport type { AgentExecutionOptionsBase } from '../agent/agent.types';\nimport { MessageList } from '../agent/message-list';\nimport type { MastraDBMessage, MessageListInput } from '../agent/message-list';\nimport { convertMessages } from '../agent/message-list/utils/convert-messages';\nimport type { SubAgent } from '../agent/subagent';\nimport type { Mastra } from '../mastra';\nimport type { MastraMemory } from '../memory/memory';\nimport { RequestContext } from '../request-context';\nimport type { DynamicArgument } from '../types';\nimport { MastraA2AError } from './error';\nimport type {\n  A2AAgentCardVerificationContext,\n  A2AAgentGenerateResult,\n  A2AAgentOptions,\n  A2AAgentResumePayload,\n  A2AAgentRunState,\n  A2AAgentStreamResult,\n  JSONRPCResponse,\n  RequestCredentialsMode,\n} from './types';\n\ntype FetchLike = typeof fetch;\n\ntype JSONRPCRequestBody = {\n  jsonrpc: '2.0';\n  id: string;\n  method: string;\n  params?: Record<string, unknown>;\n};\n\ntype RequestOptions = {\n  method?: string;\n  headers?: Record<string, string>;\n  body?: unknown;\n  stream?: boolean;\n  credentials?: RequestCredentialsMode;\n  signal?: AbortSignal;\n};\n\ntype AgentBootstrap = {\n  card: AgentCard;\n  cardUrl: string;\n  executionUrl: string;\n  streamingSupported: boolean;\n};\n\ntype TerminalEvaluation =\n  | {\n      kind: 'completed';\n      text: string;\n      task?: Task;\n      message?: Message;\n    }\n  | {\n      kind: 'suspended';\n      text: string;\n      task: Task;\n      resumePayload: A2AAgentResumePayload;\n      resumeSchema?: string;\n    };\n\ntype StreamConsumptionResult = {\n  text: string;\n  task?: Task;\n  suspended?: {\n    payload: A2AAgentResumePayload;\n    resumeSchema?: string;\n  };\n};\n\ntype A2AStreamEventData = Message | Task | TaskStatusUpdateEvent | TaskArtifactUpdateEvent;\ntype A2AAgentFullStreamChunkBase =\n  | { type: 'text-start'; payload: { id: string } }\n  | { type: 'text-delta'; payload: { id: string; text: string } }\n  | { type: 'text-end'; payload: { id: string } }\n  | {\n      type: 'tool-call-suspended';\n      payload: {\n        toolCallId: string;\n        toolName: string;\n        args: Record<string, never>;\n        suspendPayload: A2AAgentResumePayload;\n        resumeSchema: string;\n      };\n    }\n  | {\n      type: 'finish';\n      payload: {\n        finishReason: 'stop';\n        usage: typeof EMPTY_USAGE;\n      };\n    };\ntype A2AAgentFullStreamChunk = A2AAgentFullStreamChunkBase & {\n  runId: string;\n  from: 'AGENT';\n};\n\ntype Deferred<T> = {\n  promise: Promise<T>;\n  resolve: (value: T | PromiseLike<T>) => void;\n  reject: (reason?: unknown) => void;\n};\n\nconst EMPTY_USAGE = {\n  inputTokens: undefined,\n  outputTokens: undefined,\n  totalTokens: undefined,\n};\n\nfunction toAgentStreamChunk(runId: string, chunk: A2AAgentFullStreamChunkBase): A2AAgentFullStreamChunk {\n  return {\n    ...chunk,\n    runId,\n    from: 'AGENT',\n  };\n}\n\nfunction isTask(result: Message | Task | TaskStatusUpdateEvent | TaskArtifactUpdateEvent): result is Task {\n  return typeof result === 'object' && result !== null && 'status' in result && 'id' in result && 'kind' in result;\n}\n\nfunction isMessage(result: Message | Task | TaskStatusUpdateEvent | TaskArtifactUpdateEvent): result is Message {\n  return typeof result === 'object' && result !== null && 'messageId' in result && 'parts' in result;\n}\n\nfunction isTerminalTaskState(state: Task['status']['state'] | undefined) {\n  return state === 'completed' || state === 'failed' || state === 'canceled' || state === 'rejected';\n}\n\nfunction splitNextEvent(buffer: string): { eventBlock?: string; rest: string } {\n  const normalizedBuffer = buffer.replace(/\\x1E/g, '\\n\\n');\n  const match = normalizedBuffer.match(/\\r?\\n\\r?\\n/);\n\n  if (!match || match.index === undefined) {\n    return { rest: normalizedBuffer };\n  }\n\n  return {\n    eventBlock: normalizedBuffer.slice(0, match.index),\n    rest: normalizedBuffer.slice(match.index + match[0].length),\n  };\n}\n\nfunction parseEventBlock(eventBlock: string): { done: true } | { event?: A2AStreamEventData } {\n  const trimmedBlock = eventBlock.trim();\n\n  if (!trimmedBlock) {\n    return {};\n  }\n\n  const lines = trimmedBlock.split(/\\r?\\n/);\n  const dataLines = lines.filter(line => line.startsWith('data:')).map(line => line.slice(5).trimStart());\n  const payload = dataLines.length > 0 ? dataLines.join('\\n') : trimmedBlock;\n\n  if (payload === '[DONE]') {\n    return { done: true };\n  }\n\n  let parsed: JSONRPCResponse<A2AStreamEventData> | A2AStreamEventData;\n\n  try {\n    parsed = JSON.parse(payload) as JSONRPCResponse<A2AStreamEventData> | A2AStreamEventData;\n  } catch {\n    return {};\n  }\n\n  if ('result' in parsed && parsed.result) {\n    return { event: parsed.result };\n  }\n\n  return { event: parsed as A2AStreamEventData };\n}\n\nfunction extractTextParts(parts: { kind: string; text?: string }[] | undefined): string {\n  return (parts ?? [])\n    .filter((part): part is { kind: string; text: string } => part.kind === 'text' && typeof part.text === 'string')\n    .map(part => part.text)\n    .join('\\n');\n}\n\nfunction extractTaskText(task: Task): string {\n  const artifactText = (task.artifacts ?? [])\n    .flatMap(\n      artifact =>\n        artifact.parts?.flatMap(part => {\n          if (part.kind === 'text' && 'text' in part && typeof part.text === 'string') {\n            return [part.text];\n          }\n\n          return [];\n        }) ?? [],\n    )\n    .join('\\n');\n  const statusText = task.status.message ? extractMessageText(task.status.message) : '';\n  return [artifactText, statusText].filter(Boolean).join('\\n').trim();\n}\n\nfunction extractTaskArtifactText(task: Task): string {\n  return (task.artifacts ?? [])\n    .flatMap(\n      artifact =>\n        artifact.parts?.flatMap(part => {\n          if (part.kind === 'text' && 'text' in part && typeof part.text === 'string') {\n            return [part.text];\n          }\n\n          return [];\n        }) ?? [],\n    )\n    .join('');\n}\n\nfunction extractMessageText(message: Message): string {\n  return extractTextParts(message.parts as { kind: string; text?: string }[] | undefined).trim();\n}\n\nfunction messagesToPrompt<OUTPUT>(messages: MessageListInput, options?: AgentExecutionOptionsBase<OUTPUT>): string {\n  if (typeof messages === 'string') {\n    return messages;\n  }\n\n  const converted = convertMessages(messages).to('AIV5.Model');\n  const lines: string[] = [];\n\n  if (options?.instructions) {\n    lines.push(`Instructions:\\n${options.instructions}`);\n  }\n\n  const contextMessages = options?.context as Array<{ role?: string; content?: unknown }> | undefined;\n  if (contextMessages?.length) {\n    lines.push(\n      'Context:\\n' +\n        contextMessages\n          .map(message => {\n            const role = message.role ?? 'unknown';\n            const content = typeof message.content === 'string' ? message.content : JSON.stringify(message.content);\n            return `${role}: ${content}`;\n          })\n          .join('\\n'),\n    );\n  }\n\n  for (const message of converted) {\n    if (message.role === 'system') {\n      const content = Array.isArray(message.content)\n        ? message.content\n            .map((part: { type: string; text?: string }) => {\n              if ('type' in part && part.type === 'text') {\n                return part.text;\n              }\n\n              return '';\n            })\n            .filter(Boolean)\n            .join('\\n')\n        : typeof message.content === 'string'\n          ? message.content\n          : '';\n\n      if (content) {\n        lines.push(`system: ${content}`);\n      }\n      continue;\n    }\n\n    const content = Array.isArray(message.content)\n      ? message.content\n          .map((part: { type: string; text?: string; filename?: string }) => {\n            if ('type' in part && part.type === 'text') {\n              return part.text;\n            }\n\n            if ('type' in part && part.type === 'file') {\n              return `[file:${part.filename ?? 'attachment'}]`;\n            }\n\n            return '';\n          })\n          .filter(Boolean)\n          .join('\\n')\n      : typeof message.content === 'string'\n        ? message.content\n        : '';\n\n    lines.push(`${message.role}: ${content}`);\n  }\n\n  return lines.join('\\n\\n').trim();\n}\n\nfunction resumeDataToPrompt(resumeData: unknown): string {\n  if (typeof resumeData === 'string') {\n    return resumeData;\n  }\n\n  if (resumeData == null) {\n    return '';\n  }\n\n  return JSON.stringify(resumeData, null, 2);\n}\n\nfunction createResumeSchema(): string {\n  return JSON.stringify({\n    type: 'object',\n    additionalProperties: true,\n    description: 'Data to continue the remote A2A task.',\n  });\n}\n\nfunction resolveStreamTextId(candidateIds: Array<string | undefined>): string {\n  for (const candidate of candidateIds) {\n    if (candidate) {\n      return candidate;\n    }\n  }\n\n  return 'text-1';\n}\n\nfunction resolveMemoryInfo<OUTPUT>(options?: AgentExecutionOptionsBase<OUTPUT>) {\n  const threadId = typeof options?.memory?.thread === 'string' ? options.memory.thread : options?.memory?.thread?.id;\n\n  return {\n    threadId,\n    resourceId: options?.memory?.resource,\n  };\n}\n\nfunction createResponseMessages(\n  text: string,\n  memoryInfo: { threadId?: string; resourceId?: string } = {},\n): MastraDBMessage[] {\n  if (!text) {\n    return [];\n  }\n\n  return new MessageList(memoryInfo)\n    .add(\n      {\n        role: 'assistant',\n        content: text,\n      },\n      'response',\n    )\n    .get.response.db();\n}\n\nfunction createGenerateResult({\n  runId,\n  text,\n  task,\n  message,\n  resumePayload,\n  resumeSchema,\n  threadId,\n  resourceId,\n}: {\n  runId: string;\n  text: string;\n  task?: Task;\n  message?: Message;\n  resumePayload?: A2AAgentResumePayload;\n  resumeSchema?: string;\n  threadId?: string;\n  resourceId?: string;\n}): A2AAgentGenerateResult {\n  const responseMessages = createResponseMessages(text, { threadId, resourceId });\n\n  return {\n    text,\n    usage: EMPTY_USAGE,\n    steps: [],\n    finishReason: resumePayload ? 'suspended' : 'stop',\n    warnings: [],\n    providerMetadata: undefined,\n    request: {},\n    reasoning: [],\n    reasoningText: undefined,\n    toolCalls: [],\n    toolResults: [],\n    sources: [],\n    files: [],\n    response: {\n      id: message?.messageId ?? task?.id ?? runId,\n      timestamp: new Date(),\n      modelId: 'a2a/remote-agent',\n      messages: [],\n      uiMessages: [],\n      dbMessages: responseMessages,\n    },\n    totalUsage: EMPTY_USAGE,\n    object: undefined,\n    error: undefined,\n    tripwire: undefined,\n    traceId: undefined,\n    spanId: undefined,\n    runId,\n    suspendPayload: resumePayload,\n    resumeSchema,\n    messages: responseMessages,\n    rememberedMessages: [],\n    task,\n    message,\n    resumePayload,\n  };\n}\n\nfunction unwrapA2AResult(result: unknown): Message | Task {\n  if (!result || typeof result !== 'object') {\n    throw MastraA2AError.invalidAgentResponse('Remote A2A agent returned an invalid response.');\n  }\n\n  if ('result' in result && result.result && typeof result.result === 'object') {\n    return result.result as Message | Task;\n  }\n\n  return result as Message | Task;\n}\n\nfunction createDeferred<T>(): Deferred<T> {\n  let resolve!: Deferred<T>['resolve'];\n  let reject!: Deferred<T>['reject'];\n\n  const promise = new Promise<T>((res, rej) => {\n    resolve = res;\n    reject = rej;\n  });\n\n  return { promise, resolve, reject };\n}\n\nasync function requireResponseBody(response: Response, operation: string) {\n  if (!response.body) {\n    throw MastraA2AError.invalidAgentResponse(`Remote A2A agent returned an empty stream for ${operation}.`);\n  }\n\n  return response.body;\n}\n\nexport class A2AAgent implements SubAgent {\n  readonly id: string;\n  readonly name: string;\n\n  readonly #url: string;\n  readonly #description: string;\n  readonly #headers: Record<string, string>;\n  readonly #fetch: FetchLike;\n  readonly #retries: number;\n  readonly #backoffMs: number;\n  readonly #maxBackoffMs: number;\n  readonly #credentials?: RequestCredentialsMode;\n  readonly #abortSignal?: AbortSignal;\n  readonly #timeoutMs?: number;\n  readonly #verifyAgentCard?: A2AAgentOptions['verifyAgentCard'];\n\n  #cachedBootstrap?: AgentBootstrap;\n  readonly #runState = new Map<string, A2AAgentRunState>();\n  #memory?: DynamicArgument<MastraMemory>;\n  #mastra?: Mastra;\n\n  constructor(options: A2AAgentOptions) {\n    this.#url = options.url.replace(/\\/$/, '');\n    this.#description = options.description ?? `Remote A2A agent at ${this.#url}`;\n    this.#headers = options.headers ?? {};\n    this.#fetch = options.fetch ?? fetch;\n    this.#retries = options.retries ?? 0;\n    this.#backoffMs = options.backoffMs ?? 250;\n    this.#maxBackoffMs = options.maxBackoffMs ?? 1_000;\n    this.#credentials = options.credentials;\n    this.#abortSignal = options.abortSignal;\n    this.#timeoutMs = options.timeoutMs;\n    this.#verifyAgentCard = options.verifyAgentCard;\n    this.id = options.id ?? `a2a-${randomUUID()}`;\n    this.name = options.name ?? options.description ?? 'A2A Agent';\n  }\n\n  async getAgentCard({ forceRefresh = false }: { forceRefresh?: boolean } = {}): Promise<AgentCard> {\n    return (await this.#getBootstrap({ forceRefresh })).card;\n  }\n\n  getDescription(): string {\n    return this.#description;\n  }\n\n  getModel: SubAgent['getModel'] = async () =>\n    ({ specificationVersion: 'v2' }) as Awaited<ReturnType<SubAgent['getModel']>>;\n\n  hasOwnMemory(): boolean {\n    return Boolean(this.#memory);\n  }\n\n  __setMemory(memory: DynamicArgument<MastraMemory>): void {\n    this.#memory = memory;\n  }\n\n  async getMemory({ requestContext = new RequestContext() }: { requestContext?: RequestContext } = {}) {\n    if (!this.#memory) {\n      return undefined;\n    }\n\n    if (typeof this.#memory !== 'function') {\n      return this.#memory;\n    }\n\n    return await this.#memory({\n      requestContext,\n      mastra: this.#mastra,\n    });\n  }\n\n  getInstructions: SubAgent['getInstructions'] = async () => '';\n\n  __registerMastra(mastra: Mastra): void {\n    this.#mastra = mastra;\n  }\n\n  async generate(\n    messages: MessageListInput,\n    options?: AgentExecutionOptionsBase<unknown>,\n  ): Promise<A2AAgentGenerateResult> {\n    const bootstrap = await this.#getBootstrap();\n    const runId = options?.runId ?? randomUUID();\n    const prompt = messagesToPrompt(messages, options);\n    const memoryInfo = resolveMemoryInfo(options);\n\n    return this.#sendAndResolve({\n      bootstrap,\n      runId,\n      prompt,\n      signal: options?.abortSignal,\n      ...memoryInfo,\n    });\n  }\n\n  async resumeGenerate(\n    resumeData: unknown,\n    options?: AgentExecutionOptionsBase<unknown>,\n  ): Promise<A2AAgentGenerateResult> {\n    const runId = options?.runId;\n    if (!runId) {\n      throw MastraA2AError.invalidParams('A2AAgent.resumeGenerate requires a runId.');\n    }\n\n    const state = this.#runState.get(runId);\n    if (!state) {\n      throw MastraA2AError.invalidParams(`No resumable A2A run state found for runId \"${runId}\".`);\n    }\n\n    const bootstrap = await this.#getBootstrap();\n    const memoryInfo = resolveMemoryInfo(options);\n\n    if (state.waitingForInput) {\n      const prompt = resumeDataToPrompt(resumeData);\n      return this.#sendAndResolve({\n        bootstrap,\n        runId,\n        prompt,\n        signal: options?.abortSignal,\n        contextId: state.contextId,\n        referenceTaskIds: state.taskId ? [state.taskId] : undefined,\n        ...memoryInfo,\n      });\n    }\n\n    if (!state.taskId) {\n      throw MastraA2AError.invalidParams(`A2AAgent resume state for \"${runId}\" is missing a taskId.`);\n    }\n\n    const task = await this.#getTask({\n      bootstrap,\n      taskId: state.taskId,\n      signal: options?.abortSignal,\n    });\n\n    return this.#resolveTaskToGenerateResult({\n      bootstrap,\n      runId,\n      task,\n      signal: options?.abortSignal,\n      ...memoryInfo,\n    });\n  }\n\n  async stream(\n    messages: MessageListInput,\n    options?: AgentExecutionOptionsBase<unknown>,\n  ): Promise<A2AAgentStreamResult> {\n    const bootstrap = await this.#getBootstrap();\n    const runId = options?.runId ?? randomUUID();\n    const prompt = messagesToPrompt(messages, options);\n    const memoryInfo = resolveMemoryInfo(options);\n\n    if (!bootstrap.streamingSupported) {\n      const result = await this.generate(messages, options);\n      return this.#createBufferedStreamResult({ runId, result, ...memoryInfo });\n    }\n\n    return this.#runRemoteStream({\n      bootstrap,\n      runId,\n      prompt,\n      signal: options?.abortSignal,\n      ...memoryInfo,\n    });\n  }\n\n  async resumeStream(resumeData: unknown, options?: AgentExecutionOptionsBase<unknown>): Promise<A2AAgentStreamResult> {\n    const runId = options?.runId;\n    if (!runId) {\n      throw MastraA2AError.invalidParams('A2AAgent.resumeStream requires a runId.');\n    }\n\n    const state = this.#runState.get(runId);\n    if (!state) {\n      throw MastraA2AError.invalidParams(`No resumable A2A run state found for runId \"${runId}\".`);\n    }\n\n    const bootstrap = await this.#getBootstrap();\n    const memoryInfo = resolveMemoryInfo(options);\n\n    if (state.waitingForInput) {\n      const prompt = resumeDataToPrompt(resumeData);\n\n      if (!bootstrap.streamingSupported) {\n        const result = await this.resumeGenerate(resumeData, options);\n        return this.#createBufferedStreamResult({ runId, result, ...memoryInfo });\n      }\n\n      return this.#runRemoteStream({\n        bootstrap,\n        runId,\n        prompt,\n        signal: options?.abortSignal,\n        contextId: state.contextId,\n        referenceTaskIds: state.taskId ? [state.taskId] : undefined,\n        ...memoryInfo,\n      });\n    }\n\n    if (!state.taskId) {\n      throw MastraA2AError.invalidParams(`A2AAgent resume state for \"${runId}\" is missing a taskId.`);\n    }\n\n    if (!bootstrap.streamingSupported) {\n      const result = await this.resumeGenerate(resumeData, options);\n      return this.#createBufferedStreamResult({ runId, result, ...memoryInfo });\n    }\n\n    return this.#resubscribeToRemoteStream({\n      bootstrap,\n      runId,\n      taskId: state.taskId,\n      initialTask: state.lastTask,\n      signal: options?.abortSignal,\n      ...memoryInfo,\n    });\n  }\n\n  async #getBootstrap({ forceRefresh = false }: { forceRefresh?: boolean } = {}): Promise<AgentBootstrap> {\n    if (!forceRefresh && this.#cachedBootstrap) {\n      return this.#cachedBootstrap;\n    }\n\n    const cardUrl = this.#resolveCardUrl();\n    const response = await this.#request(cardUrl, {\n      method: 'GET',\n      signal: this.#abortSignal,\n    });\n\n    const card = (await response.json()) as AgentCard;\n    const fetchedAt = new Date();\n\n    if (this.#verifyAgentCard) {\n      const context: A2AAgentCardVerificationContext = { cardUrl, fetchedAt };\n      await this.#verifyAgentCard.verify(card, context);\n    }\n\n    const bootstrap: AgentBootstrap = {\n      card,\n      cardUrl,\n      executionUrl: card.url,\n      streamingSupported: card.capabilities?.streaming ?? false,\n    };\n\n    this.#cachedBootstrap = bootstrap;\n    return bootstrap;\n  }\n\n  #resolveCardUrl() {\n    return this.#url.endsWith('/agent-card.json') ? this.#url : `${this.#url}/.well-known/agent-card.json`;\n  }\n\n  async #sendMessage({\n    bootstrap,\n    prompt,\n    signal,\n    contextId,\n    referenceTaskIds,\n  }: {\n    bootstrap: AgentBootstrap;\n    prompt: string;\n    signal?: AbortSignal;\n    contextId?: string;\n    referenceTaskIds?: string[];\n  }): Promise<Message | Task> {\n    const response = await this.#request(bootstrap.executionUrl, {\n      method: 'POST',\n      signal,\n      body: {\n        jsonrpc: '2.0',\n        id: randomUUID(),\n        method: 'message/send',\n        params: {\n          message: {\n            role: 'user',\n            kind: 'message',\n            messageId: randomUUID(),\n            parts: [{ kind: 'text', text: prompt }],\n            ...(contextId ? { contextId } : {}),\n            ...(referenceTaskIds?.length ? { referenceTaskIds } : {}),\n          },\n        },\n      } satisfies JSONRPCRequestBody,\n    });\n\n    const json = await response.json();\n    return unwrapA2AResult(json);\n  }\n\n  async #sendAndResolve({\n    bootstrap,\n    runId,\n    prompt,\n    signal,\n    contextId,\n    referenceTaskIds,\n    threadId,\n    resourceId,\n  }: {\n    bootstrap: AgentBootstrap;\n    runId: string;\n    prompt: string;\n    signal?: AbortSignal;\n    contextId?: string;\n    referenceTaskIds?: string[];\n    threadId?: string;\n    resourceId?: string;\n  }): Promise<A2AAgentGenerateResult> {\n    const response = await this.#sendMessage({\n      bootstrap,\n      prompt,\n      signal,\n      contextId,\n      referenceTaskIds,\n    });\n\n    if (isMessage(response)) {\n      this.#runState.delete(runId);\n      return createGenerateResult({\n        runId,\n        text: extractMessageText(response),\n        message: response,\n        threadId,\n        resourceId,\n      });\n    }\n\n    return this.#resolveTaskToGenerateResult({\n      bootstrap,\n      runId,\n      task: response,\n      signal,\n      threadId,\n      resourceId,\n    });\n  }\n\n  async #getTask({\n    bootstrap,\n    taskId,\n    signal,\n  }: {\n    bootstrap: AgentBootstrap;\n    taskId: string;\n    signal?: AbortSignal;\n  }): Promise<Task> {\n    const response = await this.#request(bootstrap.executionUrl, {\n      method: 'POST',\n      signal,\n      body: {\n        jsonrpc: '2.0',\n        id: randomUUID(),\n        method: 'tasks/get',\n        params: { id: taskId },\n      } satisfies JSONRPCRequestBody,\n    });\n\n    const json = await response.json();\n    const result = unwrapA2AResult(json);\n\n    if (!isTask(result)) {\n      throw MastraA2AError.invalidAgentResponse('Remote A2A agent returned a non-task response for tasks/get.');\n    }\n\n    return result;\n  }\n\n  async #resolveTaskToGenerateResult({\n    bootstrap,\n    runId,\n    task,\n    signal,\n    threadId,\n    resourceId,\n  }: {\n    bootstrap: AgentBootstrap;\n    runId: string;\n    task: Task;\n    signal?: AbortSignal;\n    threadId?: string;\n    resourceId?: string;\n  }): Promise<A2AAgentGenerateResult> {\n    let currentTask = task;\n\n    while (true) {\n      const evaluation = this.#evaluateTask({\n        bootstrap,\n        task: currentTask,\n      });\n\n      if (evaluation.kind === 'completed') {\n        this.#runState.delete(runId);\n\n        return createGenerateResult({\n          runId,\n          text: evaluation.text,\n          task: evaluation.task,\n          message: evaluation.message,\n          threadId,\n          resourceId,\n        });\n      }\n\n      this.#runState.set(runId, {\n        runId,\n        contextId: evaluation.task.contextId,\n        taskId: evaluation.task.id,\n        executionUrl: bootstrap.executionUrl,\n        cardUrl: bootstrap.cardUrl,\n        streamingSupported: bootstrap.streamingSupported,\n        waitingForInput: evaluation.resumePayload.waitingForInput,\n        lastTask: evaluation.task,\n      });\n\n      if (evaluation.task.status.state === 'input-required') {\n        return createGenerateResult({\n          runId,\n          text: evaluation.text,\n          task: evaluation.task,\n          resumePayload: evaluation.resumePayload,\n          resumeSchema: evaluation.resumeSchema,\n          threadId,\n          resourceId,\n        });\n      }\n\n      await this.#delay();\n\n      currentTask = await this.#getTask({\n        bootstrap,\n        taskId: evaluation.task.id,\n        signal,\n      });\n    }\n  }\n\n  #evaluateTask({ bootstrap, task }: { bootstrap: AgentBootstrap; task: Task }): TerminalEvaluation {\n    const text = extractTaskText(task);\n\n    if (task.status.state === 'input-required') {\n      return {\n        kind: 'suspended',\n        text,\n        task,\n        resumePayload: {\n          taskId: task.id,\n          contextId: task.contextId,\n          executionUrl: bootstrap.executionUrl,\n          cardUrl: bootstrap.cardUrl,\n          waitingForInput: true,\n          task: structuredClone(task),\n        },\n        resumeSchema: createResumeSchema(),\n      };\n    }\n\n    if (isTerminalTaskState(task.status.state)) {\n      return {\n        kind: 'completed',\n        text,\n        task,\n      };\n    }\n\n    return {\n      kind: 'suspended',\n      text,\n      task,\n      resumePayload: {\n        taskId: task.id,\n        contextId: task.contextId,\n        executionUrl: bootstrap.executionUrl,\n        cardUrl: bootstrap.cardUrl,\n        waitingForInput: false,\n        task: structuredClone(task),\n      },\n    };\n  }\n\n  async #runRemoteStream({\n    bootstrap,\n    runId,\n    prompt,\n    signal,\n    contextId,\n    referenceTaskIds,\n    threadId,\n    resourceId,\n  }: {\n    bootstrap: AgentBootstrap;\n    runId: string;\n    prompt: string;\n    signal?: AbortSignal;\n    contextId?: string;\n    referenceTaskIds?: string[];\n    threadId?: string;\n    resourceId?: string;\n  }): Promise<A2AAgentStreamResult> {\n    const response = await this.#request(bootstrap.executionUrl, {\n      method: 'POST',\n      signal,\n      stream: true,\n      body: {\n        jsonrpc: '2.0',\n        id: randomUUID(),\n        method: 'message/stream',\n        params: {\n          message: {\n            role: 'user',\n            kind: 'message',\n            messageId: randomUUID(),\n            parts: [{ kind: 'text', text: prompt }],\n            ...(contextId ? { contextId } : {}),\n            ...(referenceTaskIds?.length ? { referenceTaskIds } : {}),\n          },\n        },\n      } satisfies JSONRPCRequestBody,\n    });\n\n    return this.#consumeA2AStream({\n      bootstrap,\n      runId,\n      stream: await requireResponseBody(response, 'message/stream'),\n      threadId,\n      resourceId,\n    });\n  }\n\n  async #resubscribeToRemoteStream({\n    bootstrap,\n    runId,\n    taskId,\n    initialTask,\n    signal,\n    threadId,\n    resourceId,\n  }: {\n    bootstrap: AgentBootstrap;\n    runId: string;\n    taskId: string;\n    initialTask?: Task;\n    signal?: AbortSignal;\n    threadId?: string;\n    resourceId?: string;\n  }): Promise<A2AAgentStreamResult> {\n    const response = await this.#request(bootstrap.executionUrl, {\n      method: 'POST',\n      signal,\n      stream: true,\n      body: {\n        jsonrpc: '2.0',\n        id: randomUUID(),\n        method: 'tasks/resubscribe',\n        params: { id: taskId },\n      } satisfies JSONRPCRequestBody,\n    });\n\n    return this.#consumeA2AStream({\n      bootstrap,\n      runId,\n      initialTask,\n      stream: await requireResponseBody(response, 'tasks/resubscribe'),\n      threadId,\n      resourceId,\n    });\n  }\n\n  async #consumeA2AStream({\n    bootstrap,\n    runId,\n    initialTask,\n    stream,\n    threadId,\n    resourceId,\n  }: {\n    bootstrap: AgentBootstrap;\n    runId: string;\n    initialTask?: Task;\n    stream: ReadableStream<Uint8Array>;\n    threadId?: string;\n    resourceId?: string;\n  }): Promise<A2AAgentStreamResult> {\n    const [consumerStream, accumulatorStream] = stream.tee();\n    const resultDeferred = createDeferred<A2AAgentGenerateResult>();\n    const textDeferred = createDeferred<string>();\n    const taskDeferred = createDeferred<Task | undefined>();\n    const suspendPayloadDeferred = createDeferred<A2AAgentResumePayload | undefined>();\n    const resumeSchemaDeferred = createDeferred<string | undefined>();\n    const messageList = new MessageList({ threadId, resourceId });\n\n    void this.#collectStreamEvents({\n      bootstrap,\n      initialTask,\n      stream: accumulatorStream,\n    })\n      .then(consumed => {\n        if (consumed.task && consumed.suspended) {\n          this.#runState.set(runId, {\n            runId,\n            contextId: consumed.task.contextId,\n            taskId: consumed.task.id,\n            executionUrl: bootstrap.executionUrl,\n            cardUrl: bootstrap.cardUrl,\n            streamingSupported: bootstrap.streamingSupported,\n            waitingForInput: consumed.suspended.payload.waitingForInput,\n            lastTask: consumed.task,\n          });\n        } else {\n          this.#runState.delete(runId);\n        }\n\n        textDeferred.resolve(consumed.text);\n        taskDeferred.resolve(consumed.task);\n        suspendPayloadDeferred.resolve(consumed.suspended?.payload);\n        resumeSchemaDeferred.resolve(consumed.suspended?.resumeSchema);\n        if (consumed.text) {\n          messageList.add(\n            {\n              role: 'assistant',\n              content: consumed.text,\n            },\n            'response',\n          );\n        }\n        resultDeferred.resolve(\n          createGenerateResult({\n            runId,\n            text: consumed.text,\n            task: consumed.task,\n            threadId,\n            resourceId,\n            ...(consumed.suspended\n              ? {\n                  resumePayload: consumed.suspended.payload,\n                  resumeSchema: consumed.suspended.resumeSchema,\n                }\n              : {}),\n          }),\n        );\n      })\n      .catch(error => {\n        textDeferred.reject(error);\n        taskDeferred.reject(error);\n        suspendPayloadDeferred.reject(error);\n        resumeSchemaDeferred.reject(error);\n        resultDeferred.reject(error);\n      });\n\n    const streamResult = {\n      runId,\n      fullStream: this.#streamEvents({ bootstrap, runId, stream: consumerStream }),\n      text: textDeferred.promise,\n      toolResults: Promise.resolve([]),\n      messageList,\n      task: taskDeferred.promise,\n      suspendPayload: suspendPayloadDeferred.promise,\n      resumeSchema: resumeSchemaDeferred.promise,\n      getResult: async () => resultDeferred.promise,\n    };\n\n    return streamResult as unknown as A2AAgentStreamResult;\n  }\n\n  async *#streamEvents({\n    bootstrap,\n    runId,\n    stream,\n  }: {\n    bootstrap: AgentBootstrap;\n    runId: string;\n    stream: ReadableStream<Uint8Array>;\n  }): AsyncIterable<A2AAgentFullStreamChunk> {\n    const reader = stream.getReader();\n    const decoder = new TextDecoder();\n    let buffer = '';\n    let textId: string | undefined;\n    let textStarted = false;\n    let task: Task | undefined;\n    let suspended: A2AAgentResumePayload | undefined;\n    let receivedDone = false;\n\n    while (true) {\n      const { done, value } = await reader.read();\n\n      if (done) {\n        buffer += decoder.decode();\n      } else if (value) {\n        buffer += decoder.decode(value, { stream: true });\n      }\n\n      let next = splitNextEvent(buffer);\n      while (next.eventBlock !== undefined) {\n        const parsed = parseEventBlock(next.eventBlock);\n        if ('done' in parsed && parsed.done) {\n          receivedDone = true;\n          buffer = next.rest;\n          break;\n        }\n\n        if ('event' in parsed && parsed.event) {\n          const event = parsed.event;\n\n          if (isTask(event)) {\n            task = event;\n            if (event.status.state === 'input-required') {\n              suspended = {\n                taskId: event.id,\n                contextId: event.contextId,\n                executionUrl: bootstrap.executionUrl,\n                cardUrl: bootstrap.cardUrl,\n                waitingForInput: true,\n                task: structuredClone(event),\n              };\n            }\n          } else if (isMessage(event)) {\n            const text = extractMessageText(event);\n            if (text) {\n              textId ??= resolveStreamTextId([event.messageId, task?.id]);\n              if (textId) {\n                if (!textStarted) {\n                  yield toAgentStreamChunk(runId, { type: 'text-start', payload: { id: textId } });\n                  textStarted = true;\n                }\n                yield toAgentStreamChunk(runId, { type: 'text-delta', payload: { id: textId, text } });\n              }\n            }\n          } else if (event.kind === 'artifact-update') {\n            const text = event.artifact.parts\n              ?.flatMap(part =>\n                part.kind === 'text' && 'text' in part && typeof part.text === 'string' ? [part.text] : [],\n              )\n              .join('');\n            if (text) {\n              textId ??= resolveStreamTextId([event.artifact.artifactId, task?.id]);\n              if (textId) {\n                if (!textStarted) {\n                  yield toAgentStreamChunk(runId, { type: 'text-start', payload: { id: textId } });\n                  textStarted = true;\n                }\n                yield toAgentStreamChunk(runId, { type: 'text-delta', payload: { id: textId, text } });\n              }\n            }\n          } else if (event.kind === 'status-update') {\n            task = task\n              ? {\n                  ...task,\n                  status: event.status,\n                }\n              : task;\n            if (event.status.state === 'input-required' && task) {\n              suspended = {\n                taskId: task.id,\n                contextId: task.contextId,\n                executionUrl: bootstrap.executionUrl,\n                cardUrl: bootstrap.cardUrl,\n                waitingForInput: true,\n                task: structuredClone(task),\n              };\n            }\n          }\n        }\n\n        buffer = next.rest;\n        next = splitNextEvent(buffer);\n      }\n\n      if (done || receivedDone) {\n        if (textId && textStarted) {\n          yield toAgentStreamChunk(runId, { type: 'text-end', payload: { id: textId } });\n        }\n\n        if (!suspended && task && !isTerminalTaskState(task.status.state)) {\n          suspended = {\n            taskId: task.id,\n            contextId: task.contextId,\n            executionUrl: bootstrap.executionUrl,\n            cardUrl: bootstrap.cardUrl,\n            waitingForInput: false,\n            task: structuredClone(task),\n          };\n        }\n\n        if (suspended) {\n          yield toAgentStreamChunk(runId, {\n            type: 'tool-call-suspended',\n            payload: {\n              toolCallId: runId,\n              toolName: this.id,\n              args: {},\n              suspendPayload: suspended,\n              resumeSchema: createResumeSchema(),\n            },\n          });\n        } else {\n          yield toAgentStreamChunk(runId, {\n            type: 'finish',\n            payload: {\n              finishReason: 'stop',\n              usage: EMPTY_USAGE,\n            },\n          });\n        }\n        return;\n      }\n    }\n  }\n\n  async #collectStreamEvents({\n    bootstrap,\n    initialTask,\n    stream,\n  }: {\n    bootstrap: AgentBootstrap;\n    initialTask?: Task;\n    stream: ReadableStream<Uint8Array>;\n  }): Promise<StreamConsumptionResult> {\n    const reader = stream.getReader();\n    const decoder = new TextDecoder();\n    let buffer = '';\n    let textBuffer = '';\n    let task: Task | undefined = initialTask ? structuredClone(initialTask) : undefined;\n    let suspended: StreamConsumptionResult['suspended'];\n\n    while (true) {\n      const { done, value } = await reader.read();\n\n      if (done) {\n        buffer += decoder.decode();\n      } else if (value) {\n        buffer += decoder.decode(value, { stream: true });\n      }\n\n      let next = splitNextEvent(buffer);\n      while (next.eventBlock !== undefined) {\n        const parsed = parseEventBlock(next.eventBlock);\n        if ('done' in parsed && parsed.done) {\n          break;\n        }\n\n        if ('event' in parsed && parsed.event) {\n          const event = parsed.event;\n\n          if (isTask(event)) {\n            task = event;\n            textBuffer = extractTaskArtifactText(event) || textBuffer;\n\n            if (event.status.state === 'input-required') {\n              suspended = {\n                payload: {\n                  taskId: event.id,\n                  contextId: event.contextId,\n                  executionUrl: bootstrap.executionUrl,\n                  cardUrl: bootstrap.cardUrl,\n                  waitingForInput: true,\n                  task: structuredClone(event),\n                },\n                resumeSchema: createResumeSchema(),\n              };\n            }\n          } else if (isMessage(event)) {\n            const messageText = extractMessageText(event);\n            if (messageText) {\n              textBuffer = messageText;\n            }\n          } else if (event.kind === 'artifact-update') {\n            task = task\n              ? {\n                  ...task,\n                  artifacts: [\n                    ...(task.artifacts ?? []).filter(artifact => artifact.artifactId !== event.artifact.artifactId),\n                    event.artifact,\n                  ],\n                }\n              : task;\n\n            const artifactText = event.artifact.parts\n              ?.flatMap(part =>\n                part.kind === 'text' && 'text' in part && typeof part.text === 'string' ? [part.text] : [],\n              )\n              .join('');\n            if (artifactText) {\n              textBuffer += artifactText;\n            }\n          } else if (event.kind === 'status-update') {\n            task = task\n              ? {\n                  ...task,\n                  status: event.status,\n                }\n              : task;\n\n            if (event.status.state === 'input-required' && task) {\n              suspended = {\n                payload: {\n                  taskId: task.id,\n                  contextId: task.contextId,\n                  executionUrl: bootstrap.executionUrl,\n                  cardUrl: bootstrap.cardUrl,\n                  waitingForInput: true,\n                  task: structuredClone(task),\n                },\n                resumeSchema: createResumeSchema(),\n              };\n            }\n          }\n        }\n\n        buffer = next.rest;\n        next = splitNextEvent(buffer);\n      }\n\n      if (done) {\n        break;\n      }\n    }\n\n    if (!suspended && task && !isTerminalTaskState(task.status.state)) {\n      suspended = {\n        payload: {\n          taskId: task.id,\n          contextId: task.contextId,\n          executionUrl: bootstrap.executionUrl,\n          cardUrl: bootstrap.cardUrl,\n          waitingForInput: false,\n          task: structuredClone(task),\n        },\n      };\n    }\n\n    return {\n      text: textBuffer,\n      task,\n      suspended,\n    };\n  }\n\n  #createBufferedStreamResult({\n    runId,\n    result,\n    threadId,\n    resourceId,\n  }: {\n    runId: string;\n    result: A2AAgentGenerateResult;\n    threadId?: string;\n    resourceId?: string;\n  }): A2AAgentStreamResult {\n    const messageList = new MessageList({ threadId, resourceId });\n    const toolName = this.id;\n    const textId = resolveStreamTextId([result.message?.messageId, result.task?.id]);\n    if (result.text) {\n      messageList.add(\n        {\n          role: 'assistant',\n          content: result.text,\n        },\n        'response',\n      );\n    }\n\n    const fullStream = (async function* (): AsyncIterable<A2AAgentFullStreamChunk> {\n      if (result.text) {\n        yield toAgentStreamChunk(runId, { type: 'text-start', payload: { id: textId } });\n        yield toAgentStreamChunk(runId, { type: 'text-delta', payload: { id: textId, text: result.text } });\n        yield toAgentStreamChunk(runId, { type: 'text-end', payload: { id: textId } });\n      }\n\n      if (result.resumePayload) {\n        yield toAgentStreamChunk(runId, {\n          type: 'tool-call-suspended',\n          payload: {\n            toolCallId: runId,\n            toolName,\n            args: {},\n            suspendPayload: result.resumePayload,\n            resumeSchema: result.resumeSchema ?? createResumeSchema(),\n          },\n        });\n        return;\n      }\n\n      yield toAgentStreamChunk(runId, {\n        type: 'finish',\n        payload: {\n          finishReason: 'stop',\n          usage: EMPTY_USAGE,\n        },\n      });\n    })();\n\n    const streamResult = {\n      runId,\n      fullStream,\n      text: Promise.resolve(result.text),\n      toolResults: Promise.resolve([]),\n      messageList,\n      task: Promise.resolve(result.task),\n      suspendPayload: Promise.resolve(result.resumePayload),\n      resumeSchema: Promise.resolve(result.resumeSchema),\n      getResult: async () => result,\n    };\n\n    return streamResult as unknown as A2AAgentStreamResult;\n  }\n\n  async #request(\n    url: string,\n    { method = 'POST', headers = {}, body, stream = false, credentials, signal }: RequestOptions = {},\n  ): Promise<Response> {\n    let attempts = 0;\n    let lastError: unknown;\n\n    const finalHeaders = {\n      accept: stream ? 'text/event-stream' : 'application/json',\n      ...this.#headers,\n      ...headers,\n    };\n\n    while (attempts <= this.#retries) {\n      try {\n        const requestSignal = this.#resolveRequestSignal(signal);\n        const response = await this.#fetch(url, {\n          method,\n          headers: {\n            ...finalHeaders,\n            ...(body ? { 'content-type': 'application/json' } : {}),\n          },\n          body: body ? JSON.stringify(body) : undefined,\n          credentials: credentials ?? this.#credentials,\n          signal: requestSignal,\n        });\n\n        if (!response.ok) {\n          throw MastraA2AError.invalidAgentResponse(`Remote A2A request failed with status ${response.status}.`, {\n            status: response.status,\n            url,\n          });\n        }\n\n        return response;\n      } catch (error) {\n        lastError = error;\n\n        if (!shouldRetryRequest(error)) {\n          throw lastError;\n        }\n\n        if (attempts === this.#retries) {\n          break;\n        }\n\n        attempts += 1;\n        await this.#delay(attempts);\n      }\n    }\n\n    throw lastError;\n  }\n\n  async #delay(attempt: number = 0) {\n    const delayMs = Math.min(this.#backoffMs * Math.max(1, attempt), this.#maxBackoffMs);\n    if (delayMs <= 0) {\n      return;\n    }\n\n    await new Promise(resolve => setTimeout(resolve, delayMs));\n  }\n\n  #resolveRequestSignal(signal?: AbortSignal) {\n    if (this.#timeoutMs == null) {\n      return signal ?? this.#abortSignal;\n    }\n\n    const timeoutSignal = AbortSignal.timeout(this.#timeoutMs);\n    const signals = [signal, this.#abortSignal, timeoutSignal].filter(Boolean) as AbortSignal[];\n\n    if (signals.length === 0) {\n      return undefined;\n    }\n\n    return signals.length === 1 ? signals[0] : AbortSignal.any(signals);\n  }\n}\n\nfunction shouldRetryRequest(error: unknown): boolean {\n  if (error instanceof TypeError) {\n    return true;\n  }\n\n  if (error instanceof DOMException && error.name === 'AbortError') {\n    return true;\n  }\n\n  if (error instanceof Error && error.name === 'AbortError') {\n    return true;\n  }\n\n  const status =\n    typeof error === 'object' && error !== null && 'status' in error && typeof error.status === 'number'\n      ? error.status\n      : typeof error === 'object' &&\n          error !== null &&\n          'data' in error &&\n          typeof error.data === 'object' &&\n          error.data !== null &&\n          'status' in error.data &&\n          typeof error.data.status === 'number'\n        ? error.data.status\n        : undefined;\n\n  if (status === undefined) {\n    return true;\n  }\n\n  return status === 408 || status === 429 || status >= 500;\n}\n"]}