{"version":3,"sources":["../../../src/network/vNext/index.ts"],"names":["z","MastraBase","RegisteredLogger","randomUUID","RuntimeContext","zodToJsonSchema","Agent","createStep","createWorkflow","EMITTER_SYMBOL"],"mappings":"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","file":"index.cjs","sourcesContent":["import { randomUUID } from 'crypto';\nimport { z } from 'zod';\nimport { zodToJsonSchema } from 'zod-to-json-schema';\nimport type { Mastra, MastraMessageV2, Tool } from '../..';\nimport { Agent } from '../../agent';\nimport type { MastraLanguageModel } from '../../agent';\nimport { MastraBase } from '../../base';\nimport { RegisteredLogger } from '../../logger';\nimport type { MastraMemory } from '../../memory';\nimport { RuntimeContext } from '../../runtime-context';\nimport type { DynamicArgument } from '../../types';\nimport type { Workflow } from '../../workflows';\nimport { EMITTER_SYMBOL } from '../../workflows/constants';\nimport { createWorkflow, createStep } from '../../workflows/workflow';\n\ninterface NewAgentNetworkConfig {\n  id: string;\n  name: string;\n  instructions: DynamicArgument<string>;\n  model: DynamicArgument<MastraLanguageModel>;\n  agents: DynamicArgument<Record<string, Agent>>;\n  workflows?: DynamicArgument<Record<string, Workflow>>;\n  tools?: DynamicArgument<Record<string, Tool<any, any, any>>>;\n  memory?: DynamicArgument<MastraMemory>;\n  defaultAgent?: DynamicArgument<Agent>;\n}\n\nconst RESOURCE_TYPES = z.enum(['agent', 'workflow', 'none', 'tool', 'none']);\n\nexport class NewAgentNetwork extends MastraBase {\n  id: string;\n  name: string;\n  #instructions: DynamicArgument<string>;\n  #model: DynamicArgument<MastraLanguageModel>;\n  #agents: DynamicArgument<Record<string, Agent>>;\n  #defaultAgent: DynamicArgument<Agent> | undefined;\n  #workflows: DynamicArgument<Record<string, Workflow>> | undefined;\n  #tools: DynamicArgument<Record<string, Tool>> | undefined;\n  #memory?: DynamicArgument<MastraMemory>;\n  #mastra?: Mastra;\n\n  constructor({\n    id,\n    name,\n    instructions,\n    model,\n    agents,\n    workflows,\n    memory,\n    tools,\n    defaultAgent,\n  }: NewAgentNetworkConfig) {\n    super({\n      component: RegisteredLogger.NETWORK,\n      name: name || 'NewAgentNetwork',\n    });\n\n    this.id = id;\n    this.name = name;\n    this.#instructions = instructions;\n    this.#model = model;\n    this.#agents = agents;\n    this.#workflows = workflows;\n    this.#memory = memory;\n    this.#tools = tools;\n    this.#defaultAgent = defaultAgent;\n  }\n\n  __registerMastra(mastra: Mastra) {\n    this.#mastra = mastra;\n  }\n\n  private async beforeRun({\n    runtimeContext,\n    threadId,\n    resourceId,\n    message,\n  }: {\n    runtimeContext: RuntimeContext;\n    threadId: string;\n    resourceId: string;\n    message: string;\n  }) {\n    const memory = await this.getMemory({ runtimeContext });\n    let thread = await memory?.getThreadById({ threadId });\n    if (!thread) {\n      thread = await memory?.createThread({\n        threadId,\n        title: '',\n        resourceId,\n      });\n    }\n    await memory?.saveMessages({\n      messages: [\n        {\n          id: this.#mastra?.generateId() || randomUUID(),\n          type: 'text',\n          role: 'user',\n          content: { parts: [{ type: 'text', text: message }], format: 2 },\n          createdAt: new Date(),\n          threadId: thread?.id,\n          resourceId: thread?.resourceId,\n        },\n      ] as MastraMessageV2[],\n      format: 'v2',\n    });\n\n    return thread;\n  }\n\n  async getAgents({ runtimeContext }: { runtimeContext?: RuntimeContext }) {\n    let agentsToUse: Record<string, Agent>;\n\n    if (typeof this.#agents === 'function') {\n      agentsToUse = await this.#agents({ runtimeContext: runtimeContext || new RuntimeContext() });\n    } else {\n      agentsToUse = this.#agents;\n    }\n\n    return agentsToUse;\n  }\n\n  async getWorkflows({ runtimeContext }: { runtimeContext?: RuntimeContext }) {\n    let workflowsToUse: Record<string, Workflow>;\n\n    if (typeof this.#workflows === 'function') {\n      workflowsToUse = await this.#workflows({ runtimeContext: runtimeContext || new RuntimeContext() });\n    } else {\n      workflowsToUse = this.#workflows || {};\n    }\n\n    return workflowsToUse;\n  }\n\n  async getTools({ runtimeContext }: { runtimeContext?: RuntimeContext }) {\n    let toolsToUse: Record<string, Tool>;\n\n    if (typeof this.#tools === 'function') {\n      toolsToUse = await this.#tools({ runtimeContext: runtimeContext || new RuntimeContext() });\n    } else {\n      toolsToUse = this.#tools || {};\n    }\n\n    return toolsToUse;\n  }\n\n  async getMemory({ runtimeContext }: { runtimeContext?: RuntimeContext }) {\n    let memoryToUse: MastraMemory;\n\n    if (!this.#memory) {\n      return;\n    }\n\n    if (typeof this.#memory === 'function') {\n      memoryToUse = await this.#memory({ runtimeContext: runtimeContext || new RuntimeContext() });\n    } else {\n      memoryToUse = this.#memory;\n    }\n\n    return memoryToUse;\n  }\n\n  async getInstructions({ runtimeContext }: { runtimeContext?: RuntimeContext }) {\n    let instructionsToUse = this.#instructions;\n\n    if (typeof instructionsToUse === 'function') {\n      instructionsToUse = await instructionsToUse({ runtimeContext: runtimeContext || new RuntimeContext() });\n    }\n\n    return instructionsToUse;\n  }\n\n  async getRoutingAgent({ runtimeContext }: { runtimeContext?: RuntimeContext }) {\n    const instructionsToUse = await this.getInstructions({ runtimeContext: runtimeContext || new RuntimeContext() });\n    const memoryToUse = await this.getMemory({ runtimeContext: runtimeContext || new RuntimeContext() });\n    const agentsToUse = await this.getAgents({ runtimeContext: runtimeContext || new RuntimeContext() });\n    const workflowsToUse = await this.getWorkflows({ runtimeContext: runtimeContext || new RuntimeContext() });\n    const toolsToUse = await this.getTools({ runtimeContext: runtimeContext || new RuntimeContext() });\n\n    const agentList = Object.entries(agentsToUse)\n      .map(([name, agent]) => {\n        // Use agent name instead of description since description might not exist\n        return ` - **${name}**: ${agent.getDescription()}`;\n      })\n      .join('\\n');\n\n    const workflowList = Object.entries(workflowsToUse)\n      .map(([name, workflow]) => {\n        return ` - **${name}**: ${workflow.description}, input schema: ${JSON.stringify(\n          zodToJsonSchema(workflow.inputSchema),\n        )}`;\n      })\n      .join('\\n');\n\n    const toolList = Object.entries(toolsToUse)\n      .map(([name, tool]) => {\n        return ` - **${name}**: ${tool.description}, input schema: ${JSON.stringify(\n          zodToJsonSchema(tool.inputSchema || z.object({})),\n        )}`;\n      })\n      .join('\\n');\n\n    const instructions = `\n          You are a router in a network of specialized AI agents. \n          Your job is to decide which agent should handle each step of a task.\n\n          If asking for completion of a task, make sure to follow system instructions closely.\n            \n          ## System Instructions\n          ${instructionsToUse}\n\n          You can only pick agents and workflows that are available in the lists below. Never call any agents or workflows that are not available in the lists below.\n\n          ## Available Agents in Network\n          ${agentList}\n\n          ## Available Workflows in Network (make sure to use inputs corresponding to the input schema when calling a workflow)\n          ${workflowList}\n\n          ## Available Tools in Network (make sure to use inputs corresponding to the input schema when calling a tool)\n          ${toolList}\n\n          ${\n            this.#defaultAgent\n              ? `If none of the agents or workflows are appropriate, call the default agent: ${this.#defaultAgent.name}.` +\n                `This should not be done lightly. You should only do this if you have exhausted all other options.`\n              : ''\n          }\n\n          If you have multiple entries that need to be called with a workflow or agent, call them separately with each input.\n          When calling a workflow, the prompt should be a JSON value that corresponds to the input schema of the workflow. The JSON value is stringified.\n          When calling a tool, the prompt should be a JSON value that corresponds to the input schema of the tool. The JSON value is stringified.\n          When calling an agent, the prompt should be a text value, like you would call an LLM in a chat interface.\n\n          Keep in mind that the user only sees the final result of the task. When reviewing completion, you should know that the user will not see the intermediate results.\n        `;\n\n    return new Agent({\n      name: 'routing-agent',\n      instructions,\n      model: this.#model,\n      memory: memoryToUse,\n      // @ts-ignore\n      _agentNetworkAppend: true,\n    });\n  }\n\n  async loop(\n    message: string,\n    {\n      runtimeContext,\n      maxIterations,\n    }: {\n      runtimeContext?: RuntimeContext;\n      maxIterations?: number;\n    },\n  ) {\n    const networkWorkflow = this.createWorkflow({ runtimeContext });\n\n    const finalStep = createStep({\n      id: 'final-step',\n      inputSchema: networkWorkflow.outputSchema,\n      outputSchema: networkWorkflow.outputSchema,\n      execute: async ({ inputData }) => {\n        if (maxIterations && inputData.iteration >= maxIterations) {\n          return {\n            ...inputData,\n            completionReason: `Max iterations reached: ${maxIterations}`,\n          };\n        }\n\n        return inputData;\n      },\n    });\n\n    const mainWorkflow = createWorkflow({\n      id: 'Agent-Network-Main-Workflow',\n      inputSchema: z.object({\n        iteration: z.number(),\n        task: z.string(),\n        resourceType: RESOURCE_TYPES,\n      }),\n      outputSchema: networkWorkflow.outputSchema,\n    })\n      .dountil(networkWorkflow, async ({ inputData }) => {\n        return inputData.isComplete || (maxIterations && inputData.iteration >= maxIterations);\n      })\n      .then(finalStep)\n      .commit();\n\n    const run = mainWorkflow.createRun();\n\n    const result = await run.start({\n      inputData: {\n        task: message,\n        resourceType: 'none',\n        iteration: 0,\n      },\n    });\n\n    if (result.status === 'failed') {\n      throw result.error;\n    }\n\n    if (result.status === 'suspended') {\n      throw new Error('Workflow suspended');\n    }\n\n    return result;\n  }\n\n  async loopStream(\n    message: string,\n    {\n      runtimeContext,\n      maxIterations,\n      threadId,\n      resourceId,\n    }: {\n      runtimeContext?: RuntimeContext;\n      maxIterations?: number;\n      threadId?: string;\n      resourceId?: string;\n    },\n  ) {\n    const networkWorkflow = this.createWorkflow({ runtimeContext });\n\n    const finalStep = createStep({\n      id: 'final-step',\n      inputSchema: networkWorkflow.outputSchema,\n      outputSchema: networkWorkflow.outputSchema,\n      execute: async ({ inputData }) => {\n        if (maxIterations && inputData.iteration >= maxIterations) {\n          return {\n            ...inputData,\n            completionReason: `Max iterations reached: ${maxIterations}`,\n          };\n        }\n\n        return inputData;\n      },\n    });\n\n    const mainWorkflow = createWorkflow({\n      id: 'Agent-Network-Main-Workflow',\n      inputSchema: z.object({\n        iteration: z.number(),\n        task: z.string(),\n        resourceId: z.string(),\n        resourceType: RESOURCE_TYPES,\n        result: z.string().optional(),\n        threadId: z.string().optional(),\n        threadResourceId: z.string().optional(),\n        isOneOff: z.boolean(),\n        verboseIntrospection: z.boolean(),\n      }),\n      outputSchema: z.object({\n        task: z.string(),\n        resourceId: z.string(),\n        resourceType: RESOURCE_TYPES,\n        prompt: z.string(),\n        result: z.string(),\n        isComplete: z.boolean().optional(),\n        completionReason: z.string().optional(),\n        iteration: z.number(),\n      }),\n    })\n      .dountil(networkWorkflow, async ({ inputData }) => {\n        return inputData.isComplete || (maxIterations && inputData.iteration >= maxIterations);\n      })\n      .then(finalStep)\n      .commit();\n\n    const run = mainWorkflow.createRun();\n\n    const thread = await this.beforeRun({\n      runtimeContext: runtimeContext || new RuntimeContext(),\n      threadId: threadId || run.runId,\n      resourceId: resourceId || this.name,\n      message,\n    });\n\n    return run.stream({\n      inputData: {\n        task: message,\n        resourceId: '',\n        resourceType: 'none',\n        iteration: 0,\n        threadResourceId: thread?.resourceId,\n        threadId: thread?.id,\n        isOneOff: false,\n        verboseIntrospection: true,\n      },\n    });\n  }\n\n  createWorkflow({ runtimeContext }: { runtimeContext?: RuntimeContext }) {\n    const runId = this.#mastra?.generateId() || randomUUID();\n\n    const runtimeContextToUse = runtimeContext || new RuntimeContext();\n\n    const routingStep = createStep({\n      id: 'routing-step',\n      inputSchema: z.object({\n        task: z.string(),\n        resourceId: z.string(),\n        resourceType: RESOURCE_TYPES,\n        result: z.string().optional(),\n        iteration: z.number(),\n        threadId: z.string().optional(),\n        threadResourceId: z.string().optional(),\n        isOneOff: z.boolean(),\n        verboseIntrospection: z.boolean(),\n      }),\n      outputSchema: z.object({\n        task: z.string(),\n        resourceId: z.string(),\n        resourceType: RESOURCE_TYPES,\n        prompt: z.string(),\n        result: z.string(),\n        isComplete: z.boolean().optional(),\n        selectionReason: z.string(),\n        iteration: z.number(),\n      }),\n      execute: async ({ inputData, getInitData }) => {\n        const initData = await getInitData();\n\n        const routingAgent = await this.getRoutingAgent({ runtimeContext: runtimeContextToUse });\n\n        const completionSchema = z.object({\n          isComplete: z.boolean(),\n          finalResult: z.string(),\n          completionReason: z.string(),\n        });\n        let completionResult;\n        if (inputData.resourceType !== 'none' && inputData?.result) {\n          // Check if the task is complete\n          const completionPrompt = `\n                        The ${inputData.resourceType} ${inputData.resourceId} has contributed to the task.\n                        This is the result from the agent: ${inputData.result}\n\n                        You need to evaluate that our task is complete. Pay very close attention to the SYSTEM INSTRUCTIONS for when the task is considered complete. Only return true if the task is complete according to the system instructions. Pay close attention to the finalResult and completionReason.\n                        Original task: ${inputData.task}\n\n                        {\n                            \"isComplete\": boolean,\n                            \"completionReason\": string,\n                            \"finalResult\": string\n                        }\n                    `;\n\n          completionResult = await routingAgent.generate([{ role: 'assistant', content: completionPrompt }], {\n            output: completionSchema,\n            threadId: initData?.threadId ?? runId,\n            resourceId: initData?.threadResourceId ?? this.name,\n            runtimeContext: runtimeContextToUse,\n          });\n\n          if (completionResult.object.isComplete) {\n            return {\n              task: inputData.task,\n              resourceId: '',\n              resourceType: 'none' as z.infer<typeof RESOURCE_TYPES>,\n              prompt: '',\n              result: completionResult.object.finalResult,\n              isComplete: true,\n              selectionReason: completionResult.object.completionReason,\n              iteration: inputData.iteration + 1,\n            };\n          }\n        }\n\n        const result = await routingAgent.generate(\n          [\n            {\n              role: 'assistant',\n              content: `\n                    ${inputData.isOneOff ? 'You are executing just one primitive based on the user task. Make sure to pick the primitive that is the best suited to accomplish the whole task. Primitives that execute only part of the task should be avoided.' : 'You will be calling just *one* primitive at a time to accomplish the user task, every call to you is one decision in the process of accomplishing the user task. Make sure to pick primitives that are the best suited to accomplish the whole task. Completeness is the highest priority.'}\n\n                    The user has given you the following task: \n                    ${inputData.task}\n                    ${completionResult ? `\\n\\n${completionResult.object.finalResult}` : ''}\n\n                    Please select the most appropriate primitive to handle this task and the prompt to be sent to the primitive.\n                    If you are calling the same agent again, make sure to adjust the prompt to be more specific.\n\n                    {\n                        \"resourceId\": string,\n                        \"resourceType\": \"agent\" | \"workflow\" | \"tool\",\n                        \"prompt\": string,\n                        \"selectionReason\": string\n                    }\n\n                    The 'selectionReason' property should explain why you picked the primitive${inputData.verboseIntrospection ? ', as well as why the other primitives were not picked.' : '.'}\n                    `,\n            },\n          ],\n          {\n            output: z.object({\n              resourceId: z.string(),\n              resourceType: RESOURCE_TYPES,\n              prompt: z.string(),\n              selectionReason: z.string(),\n            }),\n            threadId: initData?.threadId ?? runId,\n            resourceId: initData?.threadResourceId ?? this.name,\n            runtimeContext: runtimeContextToUse,\n          },\n        );\n\n        return {\n          task: inputData.task,\n          result: '',\n          resourceId: result.object.resourceId,\n          resourceType: result.object.resourceType,\n          prompt: result.object.prompt,\n          isComplete: result.object.resourceId === 'none' && result.object.resourceType === 'none' ? true : false,\n          selectionReason: result.object.selectionReason,\n          iteration: inputData.iteration + 1,\n        };\n      },\n    });\n\n    const agentStep = createStep({\n      id: 'agent-step',\n      inputSchema: z.object({\n        task: z.string(),\n        resourceId: z.string(),\n        resourceType: RESOURCE_TYPES,\n        prompt: z.string(),\n        result: z.string(),\n        isComplete: z.boolean().optional(),\n        selectionReason: z.string(),\n        iteration: z.number(),\n      }),\n      outputSchema: z.object({\n        task: z.string(),\n        resourceId: z.string(),\n        resourceType: RESOURCE_TYPES,\n        result: z.string(),\n        isComplete: z.boolean().optional(),\n        iteration: z.number(),\n      }),\n      execute: async ({ inputData, [EMITTER_SYMBOL]: emitter, getInitData }) => {\n        const agentsMap = await this.getAgents({ runtimeContext: runtimeContextToUse });\n        const agentId = inputData.resourceId;\n\n        const agent = agentsMap[inputData.resourceId];\n\n        if (!agent) {\n          throw new Error(`Agent ${agentId} not found`);\n        }\n\n        let streamPromise = {} as {\n          promise: Promise<string>;\n          resolve: (value: string) => void;\n          reject: (reason?: any) => void;\n        };\n\n        streamPromise.promise = new Promise((resolve, reject) => {\n          streamPromise.resolve = resolve;\n          streamPromise.reject = reject;\n        });\n        const toolData = {\n          name: agent.name,\n          args: inputData,\n        };\n        await emitter.emit('watch-v2', {\n          type: 'tool-call-streaming-start',\n          ...toolData,\n        });\n        const { fullStream } = await agent.stream(inputData.prompt, {\n          // resourceId: inputData.resourceId,\n          // threadId: inputData.threadId,\n          runtimeContext: runtimeContextToUse,\n          onFinish: result => {\n            streamPromise.resolve(result.text);\n          },\n        });\n\n        for await (const chunk of fullStream) {\n          switch (chunk.type) {\n            case 'text-delta':\n              await emitter.emit('watch-v2', {\n                type: 'tool-call-delta',\n                ...toolData,\n                argsTextDelta: chunk.textDelta,\n              });\n              break;\n\n            case 'step-start':\n            case 'step-finish':\n            case 'finish':\n            case 'tool-call':\n            case 'tool-result':\n            case 'tool-call-streaming-start':\n            case 'tool-call-delta':\n              break;\n            case 'source':\n            case 'file':\n            default:\n              await emitter.emit('watch-v2', chunk);\n              break;\n          }\n        }\n\n        const finalResult = await streamPromise.promise;\n\n        const memory = await this.getMemory({ runtimeContext: runtimeContext || new RuntimeContext() });\n        const initData = await getInitData();\n        await memory?.saveMessages({\n          messages: [\n            {\n              id: this.#mastra?.generateId() || randomUUID(),\n              type: 'text',\n              role: 'assistant',\n              content: { parts: [{ type: 'text', text: finalResult }], format: 2 },\n              createdAt: new Date(),\n              threadId: initData.threadId || runId,\n              resourceId: initData.threadResourceId || this.name,\n            },\n          ] as MastraMessageV2[],\n          format: 'v2',\n        });\n\n        return {\n          task: inputData.task,\n          resourceId: inputData.resourceId,\n          resourceType: inputData.resourceType,\n          result: finalResult,\n          isComplete: false,\n          iteration: inputData.iteration,\n        };\n      },\n    });\n\n    const workflowStep = createStep({\n      id: 'workflow-step',\n      inputSchema: z.object({\n        task: z.string(),\n        resourceId: z.string(),\n        resourceType: RESOURCE_TYPES,\n        prompt: z.string(),\n        result: z.string(),\n        isComplete: z.boolean().optional(),\n        selectionReason: z.string(),\n        iteration: z.number(),\n      }),\n      outputSchema: z.object({\n        task: z.string(),\n        resourceId: z.string(),\n        resourceType: RESOURCE_TYPES,\n        result: z.string(),\n        isComplete: z.boolean().optional(),\n        iteration: z.number(),\n      }),\n      execute: async ({ inputData, [EMITTER_SYMBOL]: emitter, getInitData }) => {\n        const workflowsMap = await this.getWorkflows({ runtimeContext: runtimeContextToUse });\n        const wf = workflowsMap[inputData.resourceId];\n\n        if (!wf) {\n          throw new Error(`Workflow ${inputData.resourceId} not found`);\n        }\n\n        let input;\n        try {\n          input = JSON.parse(inputData.prompt);\n        } catch (e: unknown) {\n          console.error(e);\n          throw new Error(`Invalid task input: ${inputData.task}`);\n        }\n\n        let streamPromise = {} as {\n          promise: Promise<any>;\n          resolve: (value: any) => void;\n          reject: (reason?: any) => void;\n        };\n\n        streamPromise.promise = new Promise((resolve, reject) => {\n          streamPromise.resolve = resolve;\n          streamPromise.reject = reject;\n        });\n        const toolData = {\n          name: wf.name,\n          args: inputData,\n        };\n        await emitter.emit('watch-v2', {\n          type: 'tool-call-streaming-start',\n          ...toolData,\n        });\n        const run = wf.createRun();\n        const { stream, getWorkflowState } = run.stream({\n          inputData: input,\n          runtimeContext: runtimeContextToUse,\n        });\n\n        let result: any;\n        let stepResults: Record<string, any> = {};\n        for await (const chunk of stream) {\n          const c: any = chunk;\n          // const c = chunk;\n          switch (c.type) {\n            case 'text-delta':\n              await emitter.emit('watch-v2', {\n                type: 'tool-call-delta',\n                ...toolData,\n                argsTextDelta: c.textDelta,\n              });\n              break;\n\n            case 'step-result':\n              if (c?.payload?.output) {\n                result = c?.payload?.output;\n                stepResults[c?.payload?.id] = c?.payload?.output;\n              }\n              await emitter.emit('watch-v2', c);\n              break;\n            case 'finish':\n              streamPromise.resolve(result);\n              break;\n\n            case 'start':\n            case 'step-start':\n            case 'step-finish':\n            case 'tool-call':\n            case 'tool-result':\n            case 'tool-call-streaming-start':\n            case 'tool-call-delta':\n            case 'source':\n            case 'file':\n            default:\n              await emitter.emit('watch-v2', c);\n              break;\n          }\n        }\n\n        let runSuccess = true;\n        const runResult = await streamPromise.promise;\n\n        const workflowState = await getWorkflowState();\n        if (workflowState.status === 'failed') {\n          runSuccess = false;\n        }\n\n        const finalResult = JSON.stringify({\n          runId: run.runId,\n          runResult,\n          runSuccess,\n        });\n\n        const memory = await this.getMemory({ runtimeContext: runtimeContext || new RuntimeContext() });\n        const initData = await getInitData();\n        await memory?.saveMessages({\n          messages: [\n            {\n              id: this.#mastra?.generateId() || randomUUID(),\n              type: 'text',\n              role: 'assistant',\n              content: { parts: [{ type: 'text', text: finalResult }], format: 2 },\n              createdAt: new Date(),\n              threadId: initData.threadId || runId,\n              resourceId: initData.threadResourceId || this.name,\n            },\n          ] as MastraMessageV2[],\n          format: 'v2',\n        });\n\n        return {\n          result: finalResult || '',\n          task: inputData.task,\n          resourceId: inputData.resourceId,\n          resourceType: inputData.resourceType,\n          isComplete: false,\n          iteration: inputData.iteration,\n        };\n      },\n    });\n\n    const toolStep = createStep({\n      id: 'toolStep',\n      inputSchema: z.object({\n        task: z.string(),\n        resourceId: z.string(),\n        resourceType: RESOURCE_TYPES,\n        prompt: z.string(),\n        result: z.string(),\n        isComplete: z.boolean().optional(),\n        selectionReason: z.string(),\n        iteration: z.number(),\n      }),\n      outputSchema: z.object({\n        task: z.string(),\n        resourceId: z.string(),\n        resourceType: RESOURCE_TYPES,\n        result: z.string(),\n        isComplete: z.boolean().optional(),\n        iteration: z.number(),\n      }),\n      execute: async ({ inputData, getInitData }) => {\n        const toolsMap = await this.getTools({ runtimeContext: runtimeContextToUse });\n        const tool = toolsMap[inputData.resourceId];\n\n        if (!tool) {\n          throw new Error(`Tool ${inputData.resourceId} not found`);\n        }\n\n        if (!tool.execute) {\n          throw new Error(`Tool ${inputData.resourceId} does not have an execute function`);\n        }\n\n        let inputDataToUse: any;\n        try {\n          inputDataToUse = JSON.parse(inputData.prompt);\n        } catch (e: unknown) {\n          console.error(e);\n          throw new Error(`Invalid task input: ${inputData.task}`);\n        }\n\n        const finalResult: any = await tool.execute({\n          runtimeContext: runtimeContextToUse,\n          mastra: this.#mastra,\n          resourceId: inputData.resourceId,\n          threadId: runId,\n          runId,\n          context: inputDataToUse,\n        });\n\n        const memory = await this.getMemory({ runtimeContext: runtimeContext || new RuntimeContext() });\n        const initData = await getInitData();\n        await memory?.saveMessages({\n          messages: [\n            {\n              id: this.#mastra?.generateId() || randomUUID(),\n              type: 'text',\n              role: 'assistant',\n              content: { parts: [{ type: 'text', text: JSON.stringify(finalResult) }], format: 2 },\n              createdAt: new Date(),\n              threadId: initData.threadId || runId,\n              resourceId: initData.threadResourceId || this.name,\n            },\n          ] as MastraMessageV2[],\n          format: 'v2',\n        });\n\n        return {\n          task: inputData.task,\n          resourceId: inputData.resourceId,\n          resourceType: inputData.resourceType,\n          result: finalResult,\n          isComplete: false,\n          iteration: inputData.iteration,\n        };\n      },\n    });\n\n    const finishStep = createStep({\n      id: 'finish-step',\n      inputSchema: z.object({\n        task: z.string(),\n        resourceId: z.string(),\n        resourceType: RESOURCE_TYPES,\n        prompt: z.string(),\n        result: z.string(),\n        isComplete: z.boolean().optional(),\n        selectionReason: z.string(),\n        iteration: z.number(),\n      }),\n      outputSchema: z.object({\n        task: z.string(),\n        result: z.string(),\n        isComplete: z.boolean(),\n        iteration: z.number(),\n      }),\n      execute: async ({ inputData }) => {\n        return {\n          task: inputData.task,\n          result: inputData.result,\n          isComplete: !!inputData.isComplete,\n          iteration: inputData.iteration,\n        };\n      },\n    });\n\n    const networkWorkflow = createWorkflow({\n      id: 'Agent-Network-Outer-Workflow',\n      inputSchema: z.object({\n        task: z.string(),\n        resourceId: z.string(),\n        resourceType: RESOURCE_TYPES,\n        result: z.string().optional(),\n        iteration: z.number(),\n        threadId: z.string().optional(),\n        threadResourceId: z.string().optional(),\n        isOneOff: z.boolean(),\n        verboseIntrospection: z.boolean(),\n      }),\n      outputSchema: z.object({\n        task: z.string(),\n        resourceId: z.string(),\n        resourceType: RESOURCE_TYPES,\n        prompt: z.string(),\n        result: z.string(),\n        isComplete: z.boolean().optional(),\n        completionReason: z.string().optional(),\n        iteration: z.number(),\n        threadId: z.string().optional(),\n        threadResourceId: z.string().optional(),\n        isOneOff: z.boolean(),\n      }),\n    });\n\n    networkWorkflow\n      .then(routingStep)\n      .branch([\n        [async ({ inputData }) => !inputData.isComplete && inputData.resourceType === 'agent', agentStep],\n        [async ({ inputData }) => !inputData.isComplete && inputData.resourceType === 'workflow', workflowStep],\n        [async ({ inputData }) => !inputData.isComplete && inputData.resourceType === 'tool', toolStep],\n        [async ({ inputData }) => inputData.isComplete, finishStep],\n      ])\n      .map({\n        task: {\n          step: [routingStep, agentStep, workflowStep, toolStep],\n          path: 'task',\n        },\n        isComplete: {\n          step: [agentStep, workflowStep, toolStep, finishStep],\n          path: 'isComplete',\n        },\n        completionReason: {\n          step: [routingStep, agentStep, workflowStep, toolStep, finishStep],\n          path: 'completionReason',\n        },\n        result: {\n          step: [agentStep, workflowStep, toolStep, finishStep],\n          path: 'result',\n        },\n        resourceId: {\n          step: [routingStep, agentStep, workflowStep, toolStep],\n          path: 'resourceId',\n        },\n        resourceType: {\n          step: [routingStep, agentStep, workflowStep, toolStep],\n          path: 'resourceType',\n        },\n        iteration: {\n          step: [routingStep, agentStep, workflowStep, toolStep],\n          path: 'iteration',\n        },\n        isOneOff: {\n          initData: networkWorkflow,\n          path: 'isOneOff',\n        },\n        threadId: {\n          initData: networkWorkflow,\n          path: 'threadId',\n        },\n        threadResourceId: {\n          initData: networkWorkflow,\n          path: 'threadResourceId',\n        },\n      })\n      .commit();\n\n    return networkWorkflow;\n  }\n\n  async generate(\n    message: string,\n    {\n      runtimeContext,\n      threadId,\n      resourceId,\n    }: { runtimeContext?: RuntimeContext; threadId?: string; resourceId?: string },\n  ) {\n    const networkWorkflow = this.createWorkflow({ runtimeContext });\n    const run = networkWorkflow.createRun();\n\n    const thread = await this.beforeRun({\n      runtimeContext: runtimeContext || new RuntimeContext(),\n      threadId: threadId || run.runId,\n      resourceId: resourceId || this.name,\n      message,\n    });\n\n    const result = await run.start({\n      inputData: {\n        task: message,\n        resourceId: '',\n        resourceType: 'none',\n        iteration: 0,\n        threadId: thread?.id,\n        threadResourceId: thread?.resourceId,\n        isOneOff: true,\n        verboseIntrospection: true,\n      },\n    });\n\n    if (result.status === 'failed') {\n      throw result.error;\n    }\n\n    if (result.status === 'suspended') {\n      throw new Error('Workflow suspended');\n    }\n\n    return {\n      task: result.result.task,\n      result: result.result.result,\n      resourceId: result.result.resourceId,\n      resourceType: result.result.resourceType,\n    };\n  }\n\n  async stream(\n    message: string,\n    {\n      runtimeContext,\n      threadId,\n      resourceId,\n    }: { runtimeContext?: RuntimeContext; resourceId?: string; threadId?: string },\n  ) {\n    const networkWorkflow = this.createWorkflow({ runtimeContext });\n    const run = networkWorkflow.createRun();\n\n    const thread = await this.beforeRun({\n      runtimeContext: runtimeContext || new RuntimeContext(),\n      threadId: threadId || run.runId,\n      resourceId: resourceId || this.name,\n      message,\n    });\n\n    return run.stream({\n      inputData: {\n        task: `You are executing just one primitive based on the following: ${message}`,\n        resourceId: '',\n        resourceType: 'none',\n        iteration: 0,\n        threadResourceId: thread?.resourceId,\n        threadId: thread?.id,\n        isOneOff: true,\n        verboseIntrospection: true,\n      },\n    });\n  }\n}\n"]}